diff --git a/SOURCES/0001-Add-gesture-inhibitor-extension.patch b/SOURCES/0001-Add-gesture-inhibitor-extension.patch index 81a0325..cb0b56c 100644 --- a/SOURCES/0001-Add-gesture-inhibitor-extension.patch +++ b/SOURCES/0001-Add-gesture-inhibitor-extension.patch @@ -1,4 +1,4 @@ -From 38c4fc02dea622f198b078eb4003c777d982119c Mon Sep 17 00:00:00 2001 +From cca3ca69a5b5a5551a9130ab4b9ea6909666108a Mon Sep 17 00:00:00 2001 From: rpm-build Date: Thu, 28 Jan 2021 00:06:12 +0100 Subject: [PATCH 1/5] Add gesture-inhibitor extension @@ -170,22 +170,22 @@ index 00000000..37b93f21 @@ -0,0 +1 @@ +/* Add your custom extension styling here */ diff --git a/meson.build b/meson.build -index 3600e824..b3812b8d 100644 +index ec600041..615dc5b0 100644 --- a/meson.build +++ b/meson.build -@@ -49,6 +49,7 @@ all_extensions += [ - 'classification-banner', +@@ -50,6 +50,7 @@ all_extensions += [ 'custom-menu', 'dash-to-dock', + 'dash-to-panel', + 'gesture-inhibitor', 'native-window-placement', 'panel-favorites', 'systemMonitor', -- -2.38.1 +2.41.0 -From aff83154aa639e33e5ba925b5ddcc824a9beaf6e Mon Sep 17 00:00:00 2001 +From 45e88e7b5bb9537c44384a23af7d00f023d55793 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Wed, 20 Oct 2021 19:48:46 +0200 Subject: [PATCH 2/5] gesture-inhibitor: Fix up indentation @@ -273,10 +273,10 @@ index e74ede2f..734d61cc 100644 } -- -2.38.1 +2.41.0 -From 5c8b087e99f79cc6bd83b5e7ad0775f8510e1a5d Mon Sep 17 00:00:00 2001 +From fe0dd05f0c8c5cfeb5edbc6b9bb73417d42f6ee8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Wed, 20 Oct 2021 19:47:05 +0200 Subject: [PATCH 3/5] gesture-inhibitor: Adjust for GNOME 40 changes @@ -344,10 +344,10 @@ index 1d67dcc0..4bdf9260 100644 true Show OSK gesture -- -2.38.1 +2.41.0 -From 7f8031a97046a18ebb39972150376b9f1cf9a70b Mon Sep 17 00:00:00 2001 +From 952fa19311faecf50b02ab0f8807c2bc890848be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 18 Nov 2021 15:54:23 +0100 Subject: [PATCH 4/5] gesture-inhibitor: Unbind setting on disable @@ -374,10 +374,10 @@ index 13586108..02b34ec4 100644 } -- -2.38.1 +2.41.0 -From 15b4dde292cd1dd33c881289e6182d7261bee544 Mon Sep 17 00:00:00 2001 +From ef7a6cb1eac7b3d6d4d047174502d88f4e78959e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 18 Nov 2021 16:06:09 +0100 Subject: [PATCH 5/5] gesture-inhibitor: Override :enabled property @@ -434,5 +434,5 @@ index 02b34ec4..fb8a6dc0 100644 }); } -- -2.38.1 +2.41.0 diff --git a/SOURCES/0001-classification-banner-Hide-from-picks.patch b/SOURCES/0001-classification-banner-Hide-from-picks.patch new file mode 100644 index 0000000..60d87d8 --- /dev/null +++ b/SOURCES/0001-classification-banner-Hide-from-picks.patch @@ -0,0 +1,39 @@ +From b9ba6b8708c18fb14033150fdb02a508457e0a17 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Fri, 2 Feb 2024 15:39:32 +0100 +Subject: [PATCH] classification-banner: Hide from picks + +Banners are laid out via a fullscreen actor. While the actor is +not reactive, it can still interfere with picks (for example +during drag-and-drop operations). + +Avoid that by explicitly hiding the actor from picks. +--- + extensions/classification-banner/extension.js | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/extensions/classification-banner/extension.js b/extensions/classification-banner/extension.js +index ea788022..2bde741e 100644 +--- a/extensions/classification-banner/extension.js ++++ b/extensions/classification-banner/extension.js +@@ -18,7 +18,7 @@ + + /* exported init */ + +-const { Clutter, Gio, GLib, GObject, St } = imports.gi; ++const { Clutter, Gio, GLib, GObject, Shell, St } = imports.gi; + + const ExtensionUtils = imports.misc.extensionUtils; + const Layout = imports.ui.layout; +@@ -34,6 +34,8 @@ class ClassificationBanner extends Clutter.Actor { + }); + this._monitorConstraint = constraint; + ++ Shell.util_set_hidden_from_pick(this, true); ++ + this._settings = ExtensionUtils.getSettings(); + this.connect('destroy', () => { + if (this._fullscreenChangedId) +-- +2.43.0 + diff --git a/SOURCES/0001-desktop-icons-Don-t-try-spawn-with-non-existent-work.patch b/SOURCES/0001-desktop-icons-Don-t-try-spawn-with-non-existent-work.patch new file mode 100644 index 0000000..1cac73c --- /dev/null +++ b/SOURCES/0001-desktop-icons-Don-t-try-spawn-with-non-existent-work.patch @@ -0,0 +1,33 @@ +From b48dae39341a3ba24eb3d142f99eb37d6b14ab41 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Thu, 2 Nov 2023 20:51:45 +0100 +Subject: [PATCH] desktop-icons: Don't try spawn with non-existent workdir + +g_spawn_async() will fail if the specified workdir doesn't exist. +That means that opening a terminal from the context menu will fail +when the desktop directory doesn't exist. + +The extension doesn't really make sense in that case, but when we +show an "Open in Terminal" menu item even then, users expect it +to work. +--- + extensions/desktop-icons/desktopIconsUtil.js | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/extensions/desktop-icons/desktopIconsUtil.js b/extensions/desktop-icons/desktopIconsUtil.js +index 57bedc13..c3fe5977 100644 +--- a/extensions/desktop-icons/desktopIconsUtil.js ++++ b/extensions/desktop-icons/desktopIconsUtil.js +@@ -50,6 +50,9 @@ function launchTerminal(workdir) { + * https://gitlab.gnome.org/GNOME/gnome-shell/blob/gnome-3-30/js/misc/util.js + */ + ++ if (!GLib.file_test(workdir, GLib.FileTest.EXISTS)) ++ workdir = null; ++ + var success, pid; + try { + [success, pid] = GLib.spawn_async(workdir, argv, null, +-- +2.41.0 + diff --git a/SOURCES/0001-docking-Only-remove-spacer-if-necessary.patch b/SOURCES/0001-docking-Only-remove-spacer-if-necessary.patch new file mode 100644 index 0000000..35c23f2 --- /dev/null +++ b/SOURCES/0001-docking-Only-remove-spacer-if-necessary.patch @@ -0,0 +1,29 @@ +From 3edf3c0be7638bf9161c0d192dd3c2de1e3b9845 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Thu, 14 Dec 2023 14:41:04 +0100 +Subject: [PATCH] docking: Only remove spacer if necessary + +There may not be a main dock at the time when restoring the dash. + +Handle that case by not removing a non-existent spacer, instead of +triggering an error. +--- + extensions/dash-to-dock/docking.js | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/extensions/dash-to-dock/docking.js b/extensions/dash-to-dock/docking.js +index daa9de59..14e2ced6 100644 +--- a/extensions/dash-to-dock/docking.js ++++ b/extensions/dash-to-dock/docking.js +@@ -1796,7 +1796,7 @@ var DockManager = class DashToDock_DockManager { + + let overviewControls = Main.overview._overview._controls; + Main.overview._overview._controls.layout_manager._dash = this._oldDash; +- if (this.mainDock._dashSpacer) { ++ if (this.mainDock?._dashSpacer) { + Main.overview._overview._controls.remove_child(this.mainDock._dashSpacer); + } + +-- +2.43.0 + diff --git a/SOURCES/add-extra-extensions.patch b/SOURCES/add-extra-extensions.patch index 570e4c4..16207cf 100644 --- a/SOURCES/add-extra-extensions.patch +++ b/SOURCES/add-extra-extensions.patch @@ -1,7 +1,7 @@ From 6623a374036e0f2458d4b36e268f6e4dcc19a2d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Wed, 20 May 2015 17:44:50 +0200 -Subject: [PATCH 1/7] Add top-icons extension +Subject: [PATCH 1/8] Add top-icons extension --- extensions/top-icons/extension.js | 96 +++++++++++++++++++++++++++ @@ -164,13 +164,13 @@ index 41a7e99d..f754767c 100644 ] -- -2.38.1 +2.41.0 From a38891b5a6b0ba51998298963988bf146b2e1f86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Wed, 20 May 2015 18:05:41 +0200 -Subject: [PATCH 2/7] Add dash-to-dock extension +Subject: [PATCH 2/8] Add dash-to-dock extension --- extensions/dash-to-dock/Settings.ui | 2660 +++++++++++++++++ @@ -44398,13 +44398,13 @@ index 6a40e212..14e60ccb 100644 +#~ msgid "0.000" +#~ msgstr "0.000" -- -2.38.1 +2.41.0 From 6cad2aac52022030bcbbf03066fc08937f6d177f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Wed, 20 May 2015 18:55:47 +0200 -Subject: [PATCH 3/7] Add panel-favorites extension +Subject: [PATCH 3/8] Add panel-favorites extension --- extensions/panel-favorites/extension.js | 257 ++++++++++++++++++++ @@ -44741,13 +44741,13 @@ index e3d94918..12706001 100644 'user-theme' ] -- -2.38.1 +2.41.0 From dbd3ebbb2d3cf380f2c0a13f13618fedfd8bbad4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Fri, 4 Mar 2016 17:07:21 +0100 -Subject: [PATCH 4/7] Add updates-dialog extension +Subject: [PATCH 4/8] Add updates-dialog extension --- extensions/updates-dialog/extension.js | 504 ++++++++++++++++++ @@ -45372,13 +45372,13 @@ index 0ed12762..10b1d517 100644 extensions/window-list/extension.js extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml -- -2.38.1 +2.41.0 From 5de33c69acd297659ac3182e85f0fe32771dd75e Mon Sep 17 00:00:00 2001 From: Carlos Soriano Date: Mon, 13 Aug 2018 17:28:41 +0200 -Subject: [PATCH 5/7] Add desktop icons extension +Subject: [PATCH 5/8] Add desktop icons extension --- .../desktop-icons/createFolderDialog.js | 165 +++ @@ -66729,13 +66729,48896 @@ index 14e60ccb..4bdf7154 100644 +#~ msgid "Huge" +#~ msgstr "巨大圖示" -- -2.38.1 +2.41.0 -From 794dd76a7b7caf3324736de6c26bb992fe403daf Mon Sep 17 00:00:00 2001 +From 8e23a9d2a5e2f6050bc3cfcebac71565ab5aa1e0 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Fri, 8 Oct 2021 19:36:18 +0200 +Subject: [PATCH 6/8] Add dash-to-panel + +--- + extensions/dash-to-panel/COPYING | 341 + + extensions/dash-to-panel/README.md | 189 + + extensions/dash-to-panel/Settings.ui | 7508 +++++++++++++++++ + extensions/dash-to-panel/appIcons.js | 1964 +++++ + extensions/dash-to-panel/convenience.js | 89 + + extensions/dash-to-panel/extension.js | 149 + + .../img/highlight_stacked_bg.svg | 7 + + .../img/highlight_stacked_bg_2.svg | 7 + + .../img/highlight_stacked_bg_3.svg | 7 + + extensions/dash-to-panel/intellihide.js | 401 + + extensions/dash-to-panel/meson.build | 34 + + extensions/dash-to-panel/metadata.json.in | 12 + + ...shell.extensions.dash-to-panel.gschema.xml | 1278 +++ + extensions/dash-to-panel/overview.js | 708 ++ + extensions/dash-to-panel/panel.js | 1512 ++++ + extensions/dash-to-panel/panelManager.js | 789 ++ + extensions/dash-to-panel/panelPositions.js | 61 + + extensions/dash-to-panel/panelSettings.js | 112 + + extensions/dash-to-panel/panelStyle.js | 326 + + extensions/dash-to-panel/prefs.js | 2468 ++++++ + extensions/dash-to-panel/progress.js | 598 ++ + extensions/dash-to-panel/proximity.js | 262 + + extensions/dash-to-panel/stylesheet.css | 151 + + extensions/dash-to-panel/taskbar.js | 1557 ++++ + extensions/dash-to-panel/transparency.js | 269 + + extensions/dash-to-panel/utils.js | 1040 +++ + extensions/dash-to-panel/windowPreview.js | 1145 +++ + meson.build | 1 + + po/cs.po | 1398 ++- + po/de.po | 1384 ++- + po/es.po | 1373 ++- + po/fr.po | 1527 +++- + po/gl.po | 1408 +++- + po/hu.po | 1237 ++- + po/it.po | 1477 +++- + po/ja.po | 1550 +++- + po/kk.po | 594 ++ + po/pl.po | 1425 +++- + po/pt_BR.po | 502 +- + po/ru.po | 1722 +++- + po/sv.po | 1391 ++- + po/tr.po | 1333 ++- + po/uk.po | 470 +- + po/zh_CN.po | 1839 +++- + po/zh_TW.po | 1195 ++- + 45 files changed, 43536 insertions(+), 1274 deletions(-) + create mode 100644 extensions/dash-to-panel/COPYING + create mode 100644 extensions/dash-to-panel/README.md + create mode 100644 extensions/dash-to-panel/Settings.ui + create mode 100644 extensions/dash-to-panel/appIcons.js + create mode 100644 extensions/dash-to-panel/convenience.js + create mode 100644 extensions/dash-to-panel/extension.js + create mode 100644 extensions/dash-to-panel/img/highlight_stacked_bg.svg + create mode 100644 extensions/dash-to-panel/img/highlight_stacked_bg_2.svg + create mode 100644 extensions/dash-to-panel/img/highlight_stacked_bg_3.svg + create mode 100644 extensions/dash-to-panel/intellihide.js + create mode 100644 extensions/dash-to-panel/meson.build + create mode 100644 extensions/dash-to-panel/metadata.json.in + create mode 100644 extensions/dash-to-panel/org.gnome.shell.extensions.dash-to-panel.gschema.xml + create mode 100644 extensions/dash-to-panel/overview.js + create mode 100644 extensions/dash-to-panel/panel.js + create mode 100755 extensions/dash-to-panel/panelManager.js + create mode 100644 extensions/dash-to-panel/panelPositions.js + create mode 100644 extensions/dash-to-panel/panelSettings.js + create mode 100644 extensions/dash-to-panel/panelStyle.js + create mode 100644 extensions/dash-to-panel/prefs.js + create mode 100644 extensions/dash-to-panel/progress.js + create mode 100644 extensions/dash-to-panel/proximity.js + create mode 100644 extensions/dash-to-panel/stylesheet.css + create mode 100644 extensions/dash-to-panel/taskbar.js + create mode 100644 extensions/dash-to-panel/transparency.js + create mode 100644 extensions/dash-to-panel/utils.js + create mode 100644 extensions/dash-to-panel/windowPreview.js + +diff --git a/extensions/dash-to-panel/COPYING b/extensions/dash-to-panel/COPYING +new file mode 100644 +index 00000000..8d61b15e +--- /dev/null ++++ b/extensions/dash-to-panel/COPYING +@@ -0,0 +1,341 @@ ++ GNU GENERAL PUBLIC LICENSE ++ Version 2, June 1991 ++ ++ Copyright (C) 1989, 1991 Free Software Foundation, Inc. ++ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++ Everyone is permitted to copy and distribute verbatim copies ++ of this license document, but changing it is not allowed. ++ ++ Preamble ++ ++ The licenses for most software are designed to take away your ++freedom to share and change it. By contrast, the GNU General Public ++License is intended to guarantee your freedom to share and change free ++software--to make sure the software is free for all its users. This ++General Public License applies to most of the Free Software ++Foundation's software and to any other program whose authors commit to ++using it. (Some other Free Software Foundation software is covered by ++the GNU Library General Public License instead.) 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 ++this service 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 make restrictions that forbid ++anyone to deny you these rights or to ask you to surrender the rights. ++These restrictions translate to certain responsibilities for you if you ++distribute copies of the software, or if you modify it. ++ ++ For example, if you distribute copies of such a program, whether ++gratis or for a fee, you must give the recipients all the rights that ++you have. 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. ++ ++ We protect your rights with two steps: (1) copyright the software, and ++(2) offer you this license which gives you legal permission to copy, ++distribute and/or modify the software. ++ ++ Also, for each author's protection and ours, we want to make certain ++that everyone understands that there is no warranty for this free ++software. If the software is modified by someone else and passed on, we ++want its recipients to know that what they have is not the original, so ++that any problems introduced by others will not reflect on the original ++authors' reputations. ++ ++ Finally, any free program is threatened constantly by software ++patents. We wish to avoid the danger that redistributors of a free ++program will individually obtain patent licenses, in effect making the ++program proprietary. To prevent this, we have made it clear that any ++patent must be licensed for everyone's free use or not licensed at all. ++ ++ The precise terms and conditions for copying, distribution and ++modification follow. ++ ++ GNU GENERAL PUBLIC LICENSE ++ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION ++ ++ 0. This License applies to any program or other work which contains ++a notice placed by the copyright holder saying it may be distributed ++under the terms of this General Public License. The "Program", below, ++refers to any such program or work, and a "work based on the Program" ++means either the Program or any derivative work under copyright law: ++that is to say, a work containing the Program or a portion of it, ++either verbatim or with modifications and/or translated into another ++language. (Hereinafter, translation is included without limitation in ++the term "modification".) Each licensee is addressed as "you". ++ ++Activities other than copying, distribution and modification are not ++covered by this License; they are outside its scope. The act of ++running the Program is not restricted, and the output from the Program ++is covered only if its contents constitute a work based on the ++Program (independent of having been made by running the Program). ++Whether that is true depends on what the Program does. ++ ++ 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the ++notices that refer to this License and to the absence of any warranty; ++and give any other recipients of the Program a copy of this License ++along with the Program. ++ ++You may charge a fee for the physical act of transferring a copy, and ++you may at your option offer warranty protection in exchange for a fee. ++ ++ 2. You may modify your copy or copies of the Program or any portion ++of it, thus forming a work based on the Program, and copy and ++distribute such modifications or work under the terms of Section 1 ++above, provided that you also meet all of these conditions: ++ ++ a) You must cause the modified files to carry prominent notices ++ stating that you changed the files and the date of any change. ++ ++ b) You must cause any work that you distribute or publish, that in ++ whole or in part contains or is derived from the Program or any ++ part thereof, to be licensed as a whole at no charge to all third ++ parties under the terms of this License. ++ ++ c) If the modified program normally reads commands interactively ++ when run, you must cause it, when started running for such ++ interactive use in the most ordinary way, to print or display an ++ announcement including an appropriate copyright notice and a ++ notice that there is no warranty (or else, saying that you provide ++ a warranty) and that users may redistribute the program under ++ these conditions, and telling the user how to view a copy of this ++ License. (Exception: if the Program itself is interactive but ++ does not normally print such an announcement, your work based on ++ the Program is not required to print an announcement.) ++ ++These requirements apply to the modified work as a whole. If ++identifiable sections of that work are not derived from the Program, ++and can be reasonably considered independent and separate works in ++themselves, then this License, and its terms, do not apply to those ++sections when you distribute them as separate works. But when you ++distribute the same sections as part of a whole which is a work based ++on the Program, the distribution of the whole must be on the terms of ++this License, whose permissions for other licensees extend to the ++entire whole, and thus to each and every part regardless of who wrote it. ++ ++Thus, it is not the intent of this section to claim rights or contest ++your rights to work written entirely by you; rather, the intent is to ++exercise the right to control the distribution of derivative or ++collective works based on the Program. ++ ++In addition, mere aggregation of another work not based on the Program ++with the Program (or with a work based on the Program) on a volume of ++a storage or distribution medium does not bring the other work under ++the scope of this License. ++ ++ 3. You may copy and distribute the Program (or a work based on it, ++under Section 2) in object code or executable form under the terms of ++Sections 1 and 2 above provided that you also do one of the following: ++ ++ a) Accompany it with the complete corresponding machine-readable ++ source code, which must be distributed under the terms of Sections ++ 1 and 2 above on a medium customarily used for software interchange; or, ++ ++ b) Accompany it with a written offer, valid for at least three ++ years, to give any third party, for a charge no more than your ++ cost of physically performing source distribution, a complete ++ machine-readable copy of the corresponding source code, to be ++ distributed under the terms of Sections 1 and 2 above on a medium ++ customarily used for software interchange; or, ++ ++ c) Accompany it with the information you received as to the offer ++ to distribute corresponding source code. (This alternative is ++ allowed only for noncommercial distribution and only if you ++ received the program in object code or executable form with such ++ an offer, in accord with Subsection b above.) ++ ++The source code for a work means the preferred form of the work for ++making modifications to it. For an executable work, complete source ++code means all the source code for all modules it contains, plus any ++associated interface definition files, plus the scripts used to ++control compilation and installation of the executable. However, as a ++special exception, the source code distributed need not include ++anything that is normally distributed (in either source or binary ++form) with the major components (compiler, kernel, and so on) of the ++operating system on which the executable runs, unless that component ++itself accompanies the executable. ++ ++If distribution of executable or object code is made by offering ++access to copy from a designated place, then offering equivalent ++access to copy the source code from the same place counts as ++distribution of the source code, even though third parties are not ++compelled to copy the source along with the object code. ++ ++ 4. You may not copy, modify, sublicense, or distribute the Program ++except as expressly provided under this License. Any attempt ++otherwise to copy, modify, sublicense or distribute the Program is ++void, and will automatically terminate your rights under this License. ++However, parties who have received copies, or rights, from you under ++this License will not have their licenses terminated so long as such ++parties remain in full compliance. ++ ++ 5. You are not required to accept this License, since you have not ++signed it. However, nothing else grants you permission to modify or ++distribute the Program or its derivative works. These actions are ++prohibited by law if you do not accept this License. Therefore, by ++modifying or distributing the Program (or any work based on the ++Program), you indicate your acceptance of this License to do so, and ++all its terms and conditions for copying, distributing or modifying ++the Program or works based on it. ++ ++ 6. Each time you redistribute the Program (or any work based on the ++Program), the recipient automatically receives a license from the ++original licensor to copy, distribute or modify the Program subject to ++these terms and conditions. You may not impose any further ++restrictions on the recipients' exercise of the rights granted herein. ++You are not responsible for enforcing compliance by third parties to ++this License. ++ ++ 7. If, as a consequence of a court judgment or allegation of patent ++infringement or for any other reason (not limited to patent issues), ++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 ++distribute so as to satisfy simultaneously your obligations under this ++License and any other pertinent obligations, then as a consequence you ++may not distribute the Program at all. For example, if a patent ++license would not permit royalty-free redistribution of the Program by ++all those who receive copies directly or indirectly through you, then ++the only way you could satisfy both it and this License would be to ++refrain entirely from distribution of the Program. ++ ++If any portion of this section is held invalid or unenforceable under ++any particular circumstance, the balance of the section is intended to ++apply and the section as a whole is intended to apply in other ++circumstances. ++ ++It is not the purpose of this section to induce you to infringe any ++patents or other property right claims or to contest validity of any ++such claims; this section has the sole purpose of protecting the ++integrity of the free software distribution system, which is ++implemented by public license practices. Many people have made ++generous contributions to the wide range of software distributed ++through that system in reliance on consistent application of that ++system; it is up to the author/donor to decide if he or she is willing ++to distribute software through any other system and a licensee cannot ++impose that choice. ++ ++This section is intended to make thoroughly clear what is believed to ++be a consequence of the rest of this License. ++ ++ 8. If the distribution and/or use of the Program is restricted in ++certain countries either by patents or by copyrighted interfaces, the ++original copyright holder who places the Program under this License ++may add an explicit geographical distribution limitation excluding ++those countries, so that distribution is permitted only in or among ++countries not thus excluded. In such case, this License incorporates ++the limitation as if written in the body of this License. ++ ++ 9. The Free Software Foundation may publish revised and/or new versions ++of the 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 a version number of this License which applies to it and "any ++later version", you have the option of following the terms and conditions ++either of that version or of any later version published by the Free ++Software Foundation. If the Program does not specify a version number of ++this License, you may choose any version ever published by the Free Software ++Foundation. ++ ++ 10. If you wish to incorporate parts of the Program into other free ++programs whose distribution conditions are different, write to the author ++to ask for permission. For software which is copyrighted by the Free ++Software Foundation, write to the Free Software Foundation; we sometimes ++make exceptions for this. Our decision will be guided by the two goals ++of preserving the free status of all derivatives of our free software and ++of promoting the sharing and reuse of software generally. ++ ++ NO WARRANTY ++ ++ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. ++ ++ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING ++WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR ++REDISTRIBUTE 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. ++ ++ 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 ++convey 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 2 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, write to the Free Software ++ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++ ++ ++Also add information on how to contact you by electronic and paper mail. ++ ++If the program is interactive, make it output a short notice like this ++when it starts in an interactive mode: ++ ++ Gnomovision version 69, Copyright (C) year name of author ++ Gnomovision 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, the commands you use may ++be called something other than `show w' and `show c'; they could even be ++mouse-clicks or menu items--whatever suits your program. ++ ++You should also get your employer (if you work as a programmer) or your ++school, if any, to sign a "copyright disclaimer" for the program, if ++necessary. Here is a sample; alter the names: ++ ++ Yoyodyne, Inc., hereby disclaims all copyright interest in the program ++ `Gnomovision' (which makes passes at compilers) written by James Hacker. ++ ++ , 1 April 1989 ++ Ty Coon, President of Vice ++ ++This 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 Library General ++Public License instead of this License. ++ +diff --git a/extensions/dash-to-panel/README.md b/extensions/dash-to-panel/README.md +new file mode 100644 +index 00000000..5000de11 +--- /dev/null ++++ b/extensions/dash-to-panel/README.md +@@ -0,0 +1,189 @@ ++

++ ++

++

++ ++ ++ ++ ++

++ ++![](media/design/png/dtp-main-p2.png) ++ ++### Introduction ++ ++Dash to Panel is an icon taskbar for Gnome Shell. This extension moves the dash into the gnome main panel so that the application launchers and system tray are combined into a single panel, similar to that found in KDE Plasma and Windows 7+. A separate dock is no longer needed for easy access to running and favorited applications. ++ ++Beyond that, just about every aspect of the panel is fully customizable. From positioning and scaling panel elements to running indicators to multi-monitor display, to window previews and even intellihide, Dash to Panel has everything you need to make your workspace feel like home. ++ ++### Features ++ ++|Customizable appearance| ++|:-----:| ++|![screenshot](media/design/gif/customizable.gif)| ++|Hide & show panel elements and set their positions, sizes & colors| ++ ++## ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++
Customizable running indicators
MetroCiliora/Dashes
CilioraSquares/Segmented
DashesDots/Solid
Set position, style, weight & color of running indicators to easily and quickly identify focused and unfocused applications
++ ++## ++ ++|Live Previews on Hover| ++|:-----:| ++|![screenshot](media/design/gif/previews.gif)| ++|Hover over the launcher icon for an open application to get a live window preview| ++ ++## ++|Launch by Number| ++|:-----:| ++|![](media/design/png/indicators-num.png.png)| ++|Optionally launch your favorite applications via keyboard| ++ ++## ++ ++|Panel Intellihide| ++|:-----:| ++|![Intellihide](media/design/gif/Intellihide.gif)| ++|Hide and reveal the panel according to your set preferences| ++ ++## ++|Additional Features|Feature Implemented| ++|:-----|:-----:| ++|Add "Show Desktop" button to panel|![](media/design/png/done.png)| ++|Isolate running apps by workspaces and/or monitors|![](media/design/png/done.png)| ++|Custom click behaviors (launch new window, cycle open windows, minimize, etc)|![](media/design/png/done.png)| ++|Integrate native Gnome appMenu into right-click secondary menu|![](media/design/png/done.png)| ++|Multi-monitor support|![](media/design/png/done.png)| ++|Dynamic transparency|![](media/design/png/done.png)| ++|Ungroup application windows|![](media/design/png/done.png)| ++|Export and import settings|![](media/design/png/done.png)| ++## ++ ++### Installation ++ ++**To install the most recent official release: ++[Visit Dash-to-Panel at GNOME Extensions](https://extensions.gnome.org/extension/1160/dash-to-panel/)** ++ ++To install a development version from source, please see the [Installation wiki page](https://github.com/jderose9/dash-to-panel/wiki/Installation). ++ ++## ++### FAQ ++ ++How do I customize the panel? [See the Wiki](https://github.com/home-sweet-gnome/dash-to-panel/wiki/Enable-and-Customize#customize-it) ++ ++How do I embed my bottom left notification drawer into the panel like a system tray? [Top Icons Plus](https://extensions.gnome.org/extension/2311/topicons-plus) or [(K)StatusNotifierItem/AppIndicator Support](https://extensions.gnome.org/extension/615/appindicator-support) ++ ++How do I add a traditional start menu? [Arc Menu](https://extensions.gnome.org/extension/3628/arcmenu/) ++ ++How do I disable the hot corner? [No Topleft Hot Corner](https://extensions.gnome.org/extension/118/no-topleft-hot-corner) ++ ++How do I move the notifications to somewhere other than the top center? [Panel OSD](https://extensions.gnome.org/extension/708/panel-osd) ++ ++How do I display Minimize & Maximize buttons? In the Tweak Tool application, turn on `Windows > Titlebar Buttons > Minimize & Maximize`. ++ ++How do I reset the extension to its default settings? `dconf reset -f /org/gnome/shell/extensions/dash-to-panel/`. ++ ++## ++### Themes ++While this extension works well with most popular Gnome Shell themes, the following themes are known to have explicitly added custom styles for this extension: ++- [Ciliora Tertia](https://github.com/zagortenay333/ciliora-tertia-shell) / [Ciliora Secunda](https://github.com/zagortenay333/ciliora-secunda-shell) ++- [Plano](https://github.com/lassekongo83/plano-theme) ++ ++ ++## ++### Compatibility ++ ++This extension has been tested with Gnome 3.18+. ++ ++This extension manipulates the Gnome Main Panel, aka Top Bar. So, most other extensions which operate on the top bar should be compatible. ++ ++## ++### Volunteers needed! ++ ++This extension could be even better with your help! Any items in the issue tracker labelled `help wanted` or `good first issue` are up for grabs. For more info, see the [Contributing wiki page](https://github.com/jderose9/dash-to-panel/wiki/Contributing). ++ ++## ++### Credits ++ ++This extension is developed and maintained by [@jderose9](https://github.com/jderose9) and [@charlesg99](https://github.com/charlesg99). ++ ++Significant portions of code in this extension were derived from [Dash-to-Dock](https://micheleg.github.io/dash-to-dock/index.html). ++ ++Additional credits: This extension leverages the work for [ZorinOS Taskbar](https://github.com/ZorinOS/zorin-taskbar) (used in [ZorinOS](https://zorinos.com/)) to show window previews and allow the dash from [Dash-to-Dock](https://micheleg.github.io/dash-to-dock/index.html) to be embedded in the Gnome main panel. ++Code to set anchor position taken from [Thoma5/gnome-shell-extension-bottompanel](https://github.com/Thoma5/gnome-shell-extension-bottompanel). ++Pattern for moving panel contents based on [Frippery Move Clock](http://frippery.org/extensions/) by R M Yorston. ++Ideas for recursing child actors and assigning inline styles are based on code from the extension [StatusAreaHorizontalSpacing](https://bitbucket.org/mathematicalcoffee/status-area-horizontal-spacing-gnome-shell-extension). ++## ++ ++#### Thanks to the following people for contributing via pull requests: ++ ++- @franglais125 for launching apps by number (w/ overlay), bug fixes, and issue support ++- @LinxGem33 and @sbarrett322 for artwork, logos, screenshots and design effort ++- @dziku1337 for peek mode in window previews ++- @robrobinbin for configuring appMenu on/off in the panel ++- @MartinPL for toggling favorites on/off in panel ++- @jackwickham for thumbnail middle and right click actions ++- @abakkk for centering the taskbar icons in the panel, and animated taskbar hovering ++- @quasoft for changing of font weight of ungrouped application titles ++- @jordanribera for using icon's dominant color as running indicator color ++- @tper0700 for dynamically building context menu based on system capabilities ++- @levacic for configurable minimized application title font color ++- @l3nn4rt for toggling workspace switch popup ++- @hlechner for adjustable show desktop line color and window preview icon size ++- @ArtyomZorin for animated urgent icons ++- @jvpessoa10 for additional click window cycle options ++- @marksvc for assigning percent of display for panel length ++- @philippun1 for GNOME 40 support :rocket: ++ ++#### Bug Fixes: ++@imrvelj, @Teslator, @bil-elmoussaoui, @brandon-schumann, @sw9, @rockon999 , @lexruee, @3v1n0, @freeroot, @moqmar, @ArtyomZorin, @lkc0987, @saibotk, @vanillajonathan, @Zkdc, @leebickmtu, @l3nn4rt, @Melix19, @Aikatsui, @melix99, @kyrillzorin, @oneshadab, , @CorvetteCole ++ ++#### Documentation Improvements: ++@BoQsc, @zakkak, @dandv ++ ++#### Translations: ++@frnogueira / @victorwpbastos (pt_BR), @zeten30 (cs), @franglais125 / @calotam / @oeramirez (es), @LaurentTreguier / @SolarLiner (fr), @elsieholmes (uk), @hosiet (zh\_CN), @jonnius / @linuxr01 (de), @urbalazs / @pappfer (hu), @crayxt (kk), @pkomur / @MartinPL / @alex4401 (pl), @AlexGluck / @GoodNike / @rjapolov / @vantu5z (ru), @sicklylife-jp / @ryonakano (ja), @oltulu / @TeknoMobil / @daenney (tr), @sbadux / @kowalski7cc / @l3nn4rt (it), @OriginCode / @pan93412 (zh\_TW), @ojn (sv), @frandieguez (gl) ++ ++ ++## ++### License & Terms ![](media/design/png/copyleft-16.png) ++ ++Dash to Panel is available under the terms of the GPL-v2 or later license See [`COPYING`](https://github.com/jderose9/dash-to-panel/blob/master/COPYING) for details. ++ ++![](https://img.shields.io/badge/Language-JavaScript-yellow.svg) ![](https://img.shields.io/badge/Licence-GPL--2.0-blue.svg) +diff --git a/extensions/dash-to-panel/Settings.ui b/extensions/dash-to-panel/Settings.ui +new file mode 100644 +index 00000000..ed7ef905 +--- /dev/null ++++ b/extensions/dash-to-panel/Settings.ui +@@ -0,0 +1,7508 @@ ++ ++ ++ ++ ++ ++ True ++ False ++ vertical ++ 1 ++ 1 ++ ++ ++ True ++ True ++ False ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Animation type ++ 0 ++ ++ ++ ++ ++ True ++ False ++ center ++ ++ Simple ++ Ripple ++ Plank ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ True ++ False ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 24 ++ 32 ++ ++ ++ True ++ False ++ 12 ++ Duration ++ True ++ 0 ++ end ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ True ++ animate_appicon_hover_options_duration_adjustment ++ 0 ++ 0 ++ right ++ True ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ Rotation ++ 0 ++ end ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ True ++ animate_appicon_hover_options_rotation_adjustment ++ 0 ++ 0 ++ right ++ True ++ ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ Travel ++ 0 ++ end ++ ++ 2 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ True ++ animate_appicon_hover_options_travel_adjustment ++ 0 ++ 0 ++ right ++ True ++ ++ 2 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ Zoom ++ 0 ++ end ++ ++ 3 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ True ++ animate_appicon_hover_options_zoom_adjustment ++ 0 ++ 0 ++ right ++ True ++ ++ 3 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ Convexity ++ 0 ++ end ++ ++ 4 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ True ++ animate_appicon_hover_options_convexity_adjustment ++ 1 ++ 1 ++ right ++ True ++ ++ 4 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ Extent ++ 0 ++ end ++ ++ 5 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ True ++ animate_appicon_hover_options_extent_adjustment ++ 0 ++ 0 ++ right ++ True ++ ++ 5 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ 100 ++ 1 ++ 10 ++ ++ ++ 0 ++ 300 ++ 1 ++ 5 ++ ++ ++ -30 ++ 30 ++ 1 ++ 5 ++ ++ ++ 0 ++ 100 ++ 1 ++ 5 ++ ++ ++ 100 ++ 250 ++ 1 ++ 5 ++ ++ ++ 0 ++ 3 ++ 0.1 ++ 1 ++ ++ ++ 1 ++ 10 ++ 0.1 ++ 1 ++ ++ ++ 0.33 ++ 1 ++ 0.01 ++ 0.1 ++ ++ ++ 0.33 ++ 1 ++ 0.01 ++ 0.1 ++ ++ ++ True ++ False ++ vertical ++ 1 ++ 1 ++ ++ ++ True ++ False ++ 0 ++ ++ ++ True ++ False ++ none ++ ++ ++ 100 ++ 80 ++ True ++ True ++ ++ ++ True ++ False ++ True ++ Nothing yet! ++ True ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ vertical ++ 1 ++ 1 ++ ++ ++ True ++ False ++ 0 ++ ++ ++ True ++ False ++ none ++ ++ ++ 100 ++ 80 ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ When set to minimize, double clicking minimizes all the windows of the application. ++ True ++ 40 ++ 0 ++ ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Shift+Click action ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ center ++ ++ Raise windows ++ Minimize window ++ Launch new instance ++ Cycle through windows ++ Cycle windows + minimize ++ Toggle single / Preview multiple ++ Toggle single / Cycle multiple ++ Quit ++ ++ ++ 0 ++ 1 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ 100 ++ 80 ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Behavior for Middle-Click. ++ True ++ 40 ++ 0 ++ ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Middle-Click action ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ center ++ ++ Raise windows ++ Minimize window ++ Launch new instance ++ Cycle through windows ++ Cycle windows + minimize ++ Toggle single / Preview multiple ++ Quit ++ ++ ++ 0 ++ 1 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ 100 ++ 80 ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Behavior for Shift+Middle-Click. ++ True ++ 40 ++ 0 ++ ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Shift+Middle-Click action ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ center ++ ++ Raise windows ++ Minimize window ++ Launch new instance ++ Cycle through windows ++ Cycle windows + minimize ++ Toggle single / Preview multiple ++ Quit ++ ++ ++ 0 ++ 1 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ False ++ vertical ++ 1 ++ 1 ++ ++ ++ True ++ False ++ 0 ++ ++ ++ True ++ False ++ none ++ ++ ++ 100 ++ 80 ++ True ++ True ++ ++ ++ True ++ False ++ center ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Integrate <i>AppMenu</i> items ++ True ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ 100 ++ 80 ++ True ++ True ++ ++ ++ True ++ False ++ center ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ <i>Show Details</i> menu item ++ True ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ 10 ++ 1 ++ 5 ++ ++ ++ 5 ++ 1 ++ 5 ++ ++ ++ 50 ++ 9999 ++ 25 ++ 100 ++ ++ ++ 5 ++ 100 ++ 5 ++ 5 ++ ++ ++ True ++ False ++ 12 ++ 12 ++ vertical ++ 1 ++ 1 ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 0 ++ ++ ++ True ++ False ++ none ++ ++ ++ 100 ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Highlight focused application ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ 12 ++ 8 ++ ++ ++ True ++ False ++ True ++ Icon dominant color ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ ++ ++ ++ ++ True ++ False ++ True ++ Custom color ++ 0 ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ True ++ end ++ ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Highlight opacity ++ 0 ++ ++ 2 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ 5 ++ focus_highlight_opacity_adjustment ++ 5 ++ ++ 2 ++ 1 ++ ++ ++ ++ ++ 1 ++ 0 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ 100 ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Indicator size (px) ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ 0 ++ dot_size_adjustment ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ 100 ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Indicator color - Icon Dominant ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ 100 ++ 80 ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ vertical ++ ++ ++ True ++ False ++ ++ ++ True ++ False ++ True ++ Indicator color - Override Theme ++ 0 ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ ++ ++ ++ ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 4 ++ 32 ++ ++ ++ True ++ False ++ True ++ 1 window open (or ungrouped) ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ end ++ ++ ++ Apply to all ++ True ++ True ++ True ++ ++ ++ ++ ++ True ++ True ++ True ++ end ++ ++ ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ 2 windows open ++ 0 ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ 3 windows open ++ 0 ++ ++ 2 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ 4+ windows open ++ 0 ++ ++ 3 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ True ++ end ++ ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ True ++ True ++ True ++ end ++ ++ 2 ++ 1 ++ ++ ++ ++ ++ ++ True ++ True ++ True ++ end ++ ++ 3 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ True ++ False ++ vertical ++ ++ ++ True ++ False ++ 12 ++ ++ ++ True ++ False ++ True ++ Use different for unfocused ++ 0 ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ ++ ++ ++ ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 4 ++ 32 ++ ++ ++ True ++ False ++ True ++ 1 window open (or ungrouped) ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ end ++ ++ ++ Apply to all ++ True ++ True ++ True ++ ++ ++ ++ ++ True ++ True ++ True ++ end ++ ++ ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ 2 windows open ++ 0 ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ True ++ end ++ ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ 3 windows open ++ 0 ++ ++ 2 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ True ++ end ++ ++ 2 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ 4+ windows open ++ 0 ++ ++ 3 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ True ++ end ++ ++ 3 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ 6 ++ 24 ++ 1 ++ 100 ++ ++ ++ 1000 ++ 10 ++ 100 ++ ++ ++ True ++ False ++ vertical ++ 1 ++ 1 ++ ++ ++ True ++ False ++ 0 ++ ++ ++ True ++ False ++ none ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ True ++ end ++ 4 ++ 0 ++ group_apps_label_font_size_adjustment ++ True ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Font size (px) of the application titles (default is 14) ++ True ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Font weight of application titles ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ center ++ ++ inherit from theme ++ normal ++ lighter ++ bold ++ bolder ++ ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Font color of the application titles ++ True ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ True ++ end ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Font color of the minimized application titles ++ True ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ True ++ end ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Maximum width (px) of the application titles (default is 160) ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ 4 ++ 0 ++ group_apps_label_max_width_adjustment ++ True ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Use a fixed width for the application titles ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ The application titles all have the same width, even if their texts are shorter than the maximum width. The maximum width value is used as the fixed width. ++ True ++ 40 ++ 0 ++ ++ ++ 1 ++ 0 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Display running indicators on unfocused applications ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Use the favorite icons as application launchers ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ 10 ++ 2000 ++ 10 ++ 100 ++ ++ ++ 10 ++ 4000 ++ 10 ++ 100 ++ ++ ++ 10000 ++ 10 ++ 100 ++ ++ ++ 1 ++ 9990 ++ 10 ++ 100 ++ ++ ++ 1 ++ 5000 ++ 10 ++ 100 ++ ++ ++ True ++ False ++ vertical ++ 1 ++ 1 ++ ++ ++ True ++ False ++ 0 ++ ++ ++ True ++ False ++ none ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ True ++ ++ ++ True ++ False ++ True ++ Only hide the panel when it is obstructed by windows ++ True ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ 12 ++ 4 ++ ++ ++ True ++ False ++ True ++ The panel hides from ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ center ++ ++ All windows ++ Focused windows ++ Maximized windows ++ ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ 1 ++ 0 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Require pressure at the edge of the screen to reveal the panel ++ True ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ 12 ++ 4 ++ ++ ++ True ++ False ++ True ++ Required pressure threshold (px) ++ True ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ 4 ++ 0 ++ intellihide_pressure_threshold_adjustment ++ True ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Required pressure timeout (ms) ++ True ++ 0 ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ 4 ++ 0 ++ intellihide_pressure_time_adjustment ++ True ++ ++ 1 ++ 1 ++ ++ ++ ++ ++ 1 ++ 0 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ 100 ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Allow the panel to be revealed while in fullscreen mode ++ True ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Only hide secondary panels (requires multi-monitors option) ++ True ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ center ++ 12 ++ e.g. <Super>i ++ ++ 0 ++ 1 ++ 2 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Keyboard shortcut to reveal and hold the panel ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ Syntax: <Shift>, <Ctrl>, <Alt>, <Super> ++ True ++ 40 ++ 0 ++ ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Hide and reveal animation duration (ms) ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ 4 ++ 0 ++ intellihide_animation_time_adjustment ++ True ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ 100 ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Delay before hiding the panel (ms) ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ 4 ++ 10 ++ intellihide_close_delay_adjustment ++ True ++ 10 ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Delay before enabling intellihide on start (ms) ++ True ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ 4 ++ 10 ++ intellihide_enable_hide_delay_adjustment ++ True ++ 10 ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ 9999 ++ 25 ++ 100 ++ ++ ++ 0.33 ++ 1 ++ 0.01 ++ 0.1 ++ ++ ++ 0.33 ++ 1 ++ 0.01 ++ 0.1 ++ ++ ++ 0.33 ++ 1 ++ 0.01 ++ 0.1 ++ ++ ++ 255 ++ 10 ++ 25 ++ ++ ++ 1000 ++ 10 ++ 50 ++ ++ ++ 50 ++ 500 ++ 10 ++ 50 ++ ++ ++ 100 ++ 5 ++ 10 ++ ++ ++ 50 ++ 1 ++ 5 ++ ++ ++ 100 ++ 800 ++ 10 ++ 50 ++ ++ ++ 9999 ++ 25 ++ 100 ++ ++ ++ 6 ++ 24 ++ 1 ++ 100 ++ ++ ++ 8 ++ 48 ++ 1 ++ 100 ++ ++ ++ True ++ True ++ 460 ++ 480 ++ ++ ++ True ++ False ++ True ++ True ++ natural ++ natural ++ ++ ++ True ++ False ++ none ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ True ++ end ++ 4 ++ 0 ++ preview_timeout_adjustment ++ True ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Time (ms) before showing (400 is default) ++ True ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Animation time (ms) ++ 0 ++ ++ 2 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ 4 ++ 0 ++ preview_animation_time_adjustment ++ True ++ ++ 2 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ vertical ++ ++ ++ True ++ False ++ True ++ Time (ms) before hiding (100 is default) ++ 0 ++ ++ ++ ++ ++ True ++ True ++ False ++ 12 ++ 4 ++ ++ ++ 4 ++ True ++ False ++ start ++ 4 ++ Immediate on application icon click ++ True ++ ++ ++ ++ ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ 4 ++ 25 ++ leave_timeout_adjustment ++ True ++ 25 ++ ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Middle click on the preview to close the window ++ True ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Window previews preferred size (px) ++ True ++ 0 ++ ++ 0 ++ 0 ++ 2 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ 4 ++ 100 ++ preview_size_adjustment ++ True ++ 100 ++ ++ ++ ++ ++ True ++ False ++ True ++ Window previews aspect ratio Y (height) ++ True ++ 0 ++ ++ 2 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Window previews padding (px) ++ True ++ 0 ++ ++ 3 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ 4 ++ 50 ++ preview_padding_adjustment ++ True ++ 50 ++ ++ 3 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ end ++ 2 ++ True ++ ++ ++ True ++ False ++ end ++ center ++ ++ 1 ++ 2 ++ 3 ++ 4 ++ 5 ++ 6 ++ 7 ++ 8 ++ 9 ++ 10 ++ 11 ++ 12 ++ 13 ++ 14 ++ 15 ++ 16 ++ 17 ++ 18 ++ 19 ++ 20 ++ 21 ++ ++ ++ ++ ++ ++ Fixed ++ True ++ True ++ True ++ end ++ ++ ++ ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Window previews aspect ratio X (width) ++ True ++ 0 ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ end ++ 2 ++ True ++ ++ ++ True ++ False ++ end ++ center ++ ++ 1 ++ 2 ++ 3 ++ 4 ++ 5 ++ 6 ++ 7 ++ 8 ++ 9 ++ 10 ++ 11 ++ 12 ++ 13 ++ 14 ++ 15 ++ 16 ++ 17 ++ 18 ++ 19 ++ 20 ++ 21 ++ ++ ++ ++ ++ ++ Fixed ++ True ++ True ++ True ++ end ++ ++ ++ ++ 2 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Use custom opacity for the previews background ++ True ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ If disabled, the previews background have the same opacity as the panel ++ True ++ 40 ++ 0 ++ ++ ++ 1 ++ 0 ++ 2 ++ ++ ++ ++ ++ ++ True ++ False ++ 8 ++ ++ ++ True ++ True ++ end ++ center ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ 5 ++ preview_opacity_adjustment ++ 5 ++ ++ ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Close button and header position ++ 0 ++ ++ ++ ++ ++ True ++ False ++ end ++ 32 ++ ++ ++ Bottom ++ True ++ True ++ False ++ center ++ center ++ True ++ ++ ++ ++ ++ ++ Top ++ True ++ True ++ False ++ center ++ center ++ preview_title_position_bottom_button ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Display window preview headers ++ True ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ 12 ++ 32 ++ ++ ++ True ++ False ++ 8 ++ ++ ++ True ++ True ++ end ++ center ++ ++ ++ ++ ++ True ++ True ++ end ++ 4 ++ 6 ++ preview_custom_icon_size_adjustment ++ True ++ 6 ++ ++ ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Icon size (px) of the window preview ++ True ++ 0 ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ If disabled, the previews icon size will be based on headerbar size ++ True ++ 40 ++ 0 ++ ++ ++ 1 ++ 0 ++ 2 ++ ++ ++ ++ ++ 1 ++ 0 ++ 2 ++ ++ ++ ++ ++ ++ True ++ False ++ 12 ++ 32 ++ ++ ++ True ++ True ++ end ++ 4 ++ 6 ++ preview_title_font_size_adjustment ++ True ++ 6 ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Font size (px) of the preview titles ++ True ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ ++ ++ ++ ++ ++ True ++ False ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Font weight of the preview titles ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ end ++ center ++ ++ inherit from theme ++ normal ++ lighter ++ bold ++ bolder ++ ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ 3 ++ 0 ++ 2 ++ ++ ++ ++ ++ ++ True ++ False ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Font color of the preview titles ++ True ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ True ++ end ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ 4 ++ 0 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ True ++ 6 ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Enable window peeking ++ True ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ When hovering over a window preview for some time, the window gets distinguished. ++ True ++ 40 ++ 0 ++ ++ ++ 1 ++ 0 ++ 2 ++ ++ ++ ++ ++ ++ True ++ False ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Enter window peeking mode timeout (ms) ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ 4 ++ 50 ++ enter_peek_mode_timeout_adjustment ++ True ++ 50 ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Time of inactivity while hovering over a window preview needed to enter the window peeking mode. ++ True ++ 40 ++ 0 ++ ++ ++ 1 ++ 0 ++ 2 ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ ++ ++ ++ ++ ++ True ++ False ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Window peeking mode opacity ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ 4 ++ 0 ++ peek_mode_opacity_adjustment ++ True ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ All windows except for the peeked one have their opacity set to the same value. ++ True ++ 40 ++ 0 ++ ++ ++ 1 ++ 0 ++ 2 ++ ++ ++ ++ ++ 3 ++ 0 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ 2000 ++ 10 ++ 50 ++ ++ ++ True ++ False ++ vertical ++ 1 ++ 1 ++ ++ ++ True ++ False ++ none ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ True ++ end ++ center ++ 4 ++ 50 ++ scroll_icon_options_delay_adjustment ++ True ++ 50 ++ ++ 0 ++ 1 ++ 2 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Delay between mouse scroll events (ms) ++ True ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Use this value to limit the number of captured mouse scroll events. ++ True ++ 0 ++ ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ 2000 ++ 10 ++ 50 ++ ++ ++ True ++ False ++ vertical ++ 1 ++ 1 ++ ++ ++ True ++ False ++ none ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ True ++ end ++ center ++ 4 ++ 50 ++ scroll_panel_options_delay_adjustment ++ True ++ 50 ++ ++ 0 ++ 1 ++ 2 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Delay between mouse scroll events (ms) ++ True ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Use this value to limit the number of captured mouse scroll events. ++ True ++ 0 ++ ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Show popup when changing workspace ++ True ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ This affects workspace popup when scrolling on the panel only. ++ True ++ 0 ++ ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ ++ 0 ++ 1 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ 10000 ++ 250 ++ 1000 ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ vertical ++ 1 ++ 1 ++ ++ ++ True ++ False ++ 0 ++ ++ ++ True ++ False ++ none ++ ++ ++ 100 ++ 80 ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ center ++ ++ Super ++ Super + Alt ++ ++ ++ 0 ++ 1 ++ 2 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Hotkeys prefix ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ Hotkeys will either be Super+Number or Super+Alt+Num ++ True ++ 40 ++ 0 ++ ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ 100 ++ 80 ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ center ++ ++ Never ++ Show temporarily ++ Always visible ++ ++ ++ 0 ++ 1 ++ 2 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Number overlay ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ Temporarily show the application numbers over the icons when using the hotkeys. ++ True ++ 40 ++ 0 ++ ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ True ++ 6 ++ 32 ++ ++ ++ True ++ True ++ end ++ shortcut_time_adjustment ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Hide timeout (ms) ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ center ++ 12 ++ e.g. <Super>q ++ ++ 0 ++ 1 ++ 2 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Shortcut to show the overlay for 2 seconds ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ Syntax: <Shift>, <Ctrl>, <Alt>, <Super> ++ True ++ 40 ++ 0 ++ ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Show window previews on hotkey ++ True ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ ++ 0 ++ 1 ++ 2 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Show previews when the application have multiple instances ++ True ++ 40 ++ 0 ++ ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ end ++ center ++ ++ Number row ++ Numeric keypad ++ Both ++ ++ ++ 0 ++ 1 ++ 2 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Hotkeys are activated with ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ Select which keyboard number keys are used to activate the hotkeys ++ True ++ 40 ++ 0 ++ ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ 100 ++ 1 ++ 10 ++ ++ ++ True ++ False ++ vertical ++ 1 ++ 1 ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Current Show Applications icon ++ True ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ 32 ++ 32 ++ True ++ False ++ end ++ gtk-missing-image ++ 32 ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ 140 ++ True ++ ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Custom Show Applications image icon ++ True ++ 0 ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ True ++ 6 ++ 32 ++ ++ ++ True ++ True ++ end ++ 0 ++ show_applications_side_padding_adjustment ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Show Applications icon side padding (px) ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ True ++ end ++ center ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Override escape key and return to desktop ++ True ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ 5000 ++ 10 ++ 100 ++ ++ ++ 5000 ++ 10 ++ 100 ++ ++ ++ 1 ++ 40 ++ 1 ++ 10 ++ ++ ++ True ++ False ++ vertical ++ ++ ++ True ++ False ++ none ++ 1 ++ 1 ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 4 ++ 32 ++ ++ ++ True ++ False ++ True ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ 4 ++ 1 ++ show_showdesktop_width_adjustment ++ True ++ 1 ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Override Show Desktop line color ++ 0 ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ 12 ++ end ++ ++ ++ True ++ True ++ True ++ end ++ True ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ ++ ++ ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Reveal the desktop when hovering the Show Desktop button ++ True ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ 4 ++ ++ ++ True ++ False ++ True ++ Delay before revealing the desktop (ms) ++ True ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ 4 ++ 1 ++ show_showdesktop_delay_adjustment ++ True ++ 1 ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Fade duration (ms) ++ True ++ 0 ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ 4 ++ 1 ++ show_showdesktop_time_adjustment ++ True ++ 1 ++ ++ 1 ++ 1 ++ ++ ++ ++ ++ 1 ++ 0 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ 0.33 ++ 1 ++ 0.01 ++ 0.1 ++ ++ ++ 2000 ++ 1 ++ 10 ++ ++ ++ 200 ++ 1 ++ 10 ++ ++ ++ 100 ++ 5 ++ 10 ++ ++ ++ 100 ++ 5 ++ 10 ++ ++ ++ 100 ++ 5 ++ 10 ++ ++ ++ 100 ++ 5 ++ 10 ++ ++ ++ True ++ False ++ vertical ++ 1 ++ 1 ++ ++ ++ True ++ False ++ none ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 4 ++ ++ ++ True ++ False ++ True ++ The panel background opacity is affected by ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ center ++ ++ All windows ++ Focused windows ++ Maximized windows ++ ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ True ++ end ++ 4 ++ 50 ++ trans_distance_adjustment ++ True ++ 50 ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Change opacity when a window gets closer than (px) ++ True ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ ++ ++ True ++ False ++ 12 ++ Change opacity to (%) ++ True ++ 0 ++ ++ ++ ++ ++ True ++ True ++ end ++ 0 ++ trans_opacity_min_adjustment ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ True ++ end ++ 4 ++ 50 ++ trans_anim_time_adjustment ++ True ++ 50 ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Opacity change animation duration (ms) ++ True ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ 0.33 ++ 1 ++ 0.01 ++ 0.1 ++ ++ ++ 0.33 ++ 1 ++ 0.01 ++ 0.1 ++ ++ ++ True ++ True ++ ++ ++ ++ ++ True ++ False ++ 24 ++ 24 ++ 24 ++ 24 ++ vertical ++ 24 ++ ++ ++ True ++ False ++ 0 ++ ++ ++ True ++ False ++ none ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ 32 ++ ++ ++ True ++ False ++ True ++ Display the main panel on ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ center ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 6 ++ 32 ++ ++ ++ True ++ False ++ True ++ Display panels on all monitors ++ True ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ False ++ 0 ++ ++ ++ True ++ False ++ none ++ ++ ++ 100 ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Panel Intellihide ++ True ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ 6 ++ ++ ++ True ++ True ++ True ++ center ++ center ++ ++ ++ True ++ False ++ emblem-system-symbolic ++ ++ ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ ++ ++ ++ 0 ++ 1 ++ 2 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Hide and reveal the panel according to preferences ++ True ++ 40 ++ 0 ++ ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ False ++ 0 ++ ++ ++ True ++ False ++ vertical ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ ++ ++ True ++ False ++ True ++ Order and positions on monitor ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ center ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ Apply changes to all monitors ++ True ++ True ++ False ++ 12 ++ 4 ++ 4 ++ ++ 1 ++ 0 ++ 2 ++ ++ ++ ++ ++ ++ True ++ False ++ 6 ++ 0 ++ ++ ++ True ++ False ++ none ++ ++ ++ 100 ++ True ++ True ++ ++ ++ True ++ False ++ 6 ++ 6 ++ 12 ++ 32 ++ ++ ++ True ++ True ++ baseline ++ True ++ panel_size_adjustment ++ 0 ++ 0 ++ right ++ True ++ ++ ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ Panel thickness (default is 48) ++ 0 ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ Panel length (%) (default is 100) ++ 0 ++ ++ 2 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ baseline ++ True ++ panel_length_adjustment ++ 0 ++ 0 ++ right ++ True ++ ++ 2 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ center ++ ++ Start ++ Middle ++ End ++ ++ ++ 3 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ Anchor ++ 0 ++ ++ 3 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Panel screen position ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ 32 ++ ++ ++ Bottom ++ True ++ True ++ False ++ center ++ center ++ ++ True ++ ++ ++ ++ ++ ++ Top ++ True ++ True ++ False ++ center ++ center ++ ++ position_bottom_button ++ ++ ++ ++ ++ ++ Left ++ True ++ True ++ False ++ center ++ center ++ ++ position_bottom_button ++ ++ ++ ++ ++ ++ Right ++ True ++ True ++ False ++ center ++ center ++ ++ position_bottom_button ++ ++ ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ 2 ++ 0 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ True ++ False ++ 6 ++ none ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ False ++ Position ++ ++ ++ ++ ++ ++ ++ True ++ False ++ 24 ++ 24 ++ 24 ++ 24 ++ vertical ++ 24 ++ ++ ++ True ++ False ++ 0 ++ ++ ++ True ++ False ++ none ++ ++ ++ 100 ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 6 ++ 6 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ App Icon Margin (default is 8) ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ baseline ++ True ++ appicon_margin_adjustment ++ 0 ++ 0 ++ right ++ True ++ ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ 100 ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 6 ++ 6 ++ 32 ++ ++ ++ True ++ False ++ App Icon Padding (default is 4) ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ baseline ++ True ++ appicon_padding_adjustment ++ 0 ++ 0 ++ right ++ True ++ ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ False ++ 0 ++ ++ ++ True ++ False ++ none ++ ++ ++ 100 ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Running indicator position ++ 0 ++ ++ ++ ++ ++ True ++ False ++ 32 ++ ++ ++ Bottom ++ True ++ True ++ False ++ center ++ True ++ ++ ++ ++ ++ ++ Top ++ True ++ True ++ False ++ center ++ dots_bottom_button ++ ++ ++ ++ ++ ++ Left ++ True ++ True ++ False ++ center ++ dots_bottom_button ++ ++ ++ ++ ++ ++ Right ++ True ++ True ++ False ++ center ++ dots_bottom_button ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ 100 ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Running indicator style (Focused app) ++ 0 ++ ++ ++ ++ ++ True ++ False ++ 6 ++ ++ ++ True ++ True ++ True ++ center ++ ++ ++ True ++ False ++ emblem-system-symbolic ++ ++ ++ ++ ++ ++ ++ ++ True ++ False ++ end ++ center ++ ++ Dots ++ Squares ++ Dashes ++ Segmented ++ Solid ++ Ciliora ++ Metro ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ 100 ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Running indicator style (Unfocused apps) ++ 0 ++ ++ ++ ++ ++ True ++ False ++ end ++ center ++ ++ Dots ++ Squares ++ Dashes ++ Segmented ++ Solid ++ Ciliora ++ Metro ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ False ++ 0 ++ ++ ++ True ++ False ++ none ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Override panel theme background color ++ True ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ 6 ++ ++ ++ True ++ True ++ True ++ end ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ ++ ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ vertical ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Override panel theme background opacity ++ True ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 6 ++ ++ ++ True ++ False ++ True ++ Panel background opacity (%) ++ True ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ 0 ++ trans_opacity_adjustment ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ vertical ++ ++ ++ True ++ False ++ True ++ Dynamic background opacity ++ True ++ 0 ++ ++ ++ ++ ++ True ++ False ++ True ++ Change opacity when a window gets close to the panel ++ True ++ 40 ++ 0 ++ ++ ++ ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ end ++ center ++ 6 ++ ++ ++ True ++ True ++ True ++ center ++ center ++ ++ ++ True ++ False ++ emblem-system-symbolic ++ ++ ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ ++ ++ ++ 1 ++ 1 ++ ++ ++ ++ ++ 1 ++ 0 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Override panel theme gradient ++ True ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 6 ++ ++ ++ True ++ False ++ True ++ Gradient top color and opacity (%) ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Gradient bottom color and opacity (%) ++ 0 ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ 6 ++ ++ ++ True ++ True ++ True ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ 0 ++ trans_gradient_opacity1_adjustment ++ ++ ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ 6 ++ ++ ++ True ++ True ++ True ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ 0 ++ trans_gradient_opacity2_adjustment ++ ++ ++ ++ 1 ++ 1 ++ ++ ++ ++ ++ 1 ++ 0 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ False ++ 0 ++ ++ ++ True ++ False ++ none ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Animate hovering app icons ++ 0 ++ ++ 2 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ 6 ++ ++ ++ True ++ True ++ True ++ center ++ ++ ++ True ++ False ++ emblem-system-symbolic ++ ++ ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ ++ ++ ++ 2 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ False ++ Style ++ ++ ++ ++ ++ ++ ++ True ++ False ++ 24 ++ 24 ++ 24 ++ 24 ++ vertical ++ 24 ++ ++ ++ True ++ False ++ 0 ++ ++ ++ True ++ False ++ none ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 6 ++ 32 ++ ++ ++ True ++ True ++ end ++ center ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Show favorite applications ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Show running applications ++ 0 ++ ++ 2 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ ++ 2 ++ 1 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Show favorite applications on secondary panels ++ True ++ 0 ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ 100 ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ True ++ end ++ center ++ ++ 0 ++ 1 ++ 2 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Show <i>AppMenu</i> button ++ True ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Top Bar > Show App Menu must be enabled in Tweak Tool ++ True ++ True ++ 0 ++ ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ 100 ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 4 ++ 32 ++ ++ ++ True ++ False ++ 6 ++ ++ ++ True ++ True ++ True ++ center ++ center ++ ++ ++ True ++ False ++ emblem-system-symbolic ++ ++ ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ ++ ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Show window previews on hover ++ True ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Show tooltip on hover ++ True ++ 0 ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ 100 ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 6 ++ 32 ++ ++ ++ True ++ True ++ end ++ center ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Isolate Workspaces ++ True ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Isolate monitors ++ True ++ 0 ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ 100 ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 6 ++ 32 ++ ++ ++ True ++ True ++ end ++ center ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Click empty space to close overview ++ True ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ 100 ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 6 ++ 32 ++ ++ ++ True ++ True ++ end ++ center ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Disable show overview on startup ++ True ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ 100 ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Ungroup applications ++ True ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ 6 ++ ++ ++ True ++ True ++ True ++ center ++ center ++ ++ ++ True ++ False ++ emblem-system-symbolic ++ ++ ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ ++ ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ False ++ Behavior ++ ++ ++ ++ ++ ++ ++ True ++ False ++ 24 ++ 24 ++ 24 ++ 24 ++ vertical ++ 24 ++ ++ ++ False ++ 0 ++ ++ ++ True ++ False ++ none ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Behaviour when clicking on the icon of a running application. ++ True ++ 0 ++ ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Click action ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ 6 ++ ++ ++ True ++ True ++ True ++ center ++ ++ ++ True ++ False ++ emblem-system-symbolic ++ ++ ++ ++ ++ ++ ++ ++ True ++ False ++ center ++ ++ Cycle windows + minimize ++ Cycle through windows ++ Toggle single / Preview multiple ++ Toggle windows ++ Raise windows ++ Launch new instance ++ ++ ++ ++ ++ 0 ++ 1 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ False ++ 0 ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 16 ++ 6 ++ ++ ++ True ++ False ++ vertical ++ ++ ++ True ++ False ++ True ++ Scroll panel action ++ 0 ++ ++ ++ ++ ++ True ++ False ++ True ++ Behavior when mouse scrolling over the panel. ++ True ++ 0 ++ ++ ++ ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ vertical ++ ++ ++ True ++ False ++ True ++ Scroll icon action ++ 0 ++ ++ ++ ++ ++ True ++ False ++ True ++ Behavior when mouse scrolling over an application icon. ++ True ++ 0 ++ ++ ++ ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ True ++ end ++ center ++ ++ ++ True ++ False ++ emblem-system-symbolic ++ ++ ++ ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ center ++ True ++ ++ Do nothing ++ Switch workspace ++ Cycle windows ++ Change volume ++ ++ ++ 0 ++ 2 ++ ++ ++ ++ ++ ++ True ++ False ++ center ++ True ++ ++ Do nothing ++ Cycle windows ++ Same as panel ++ ++ ++ 1 ++ 2 ++ ++ ++ ++ ++ ++ True ++ True ++ True ++ end ++ center ++ ++ ++ True ++ False ++ emblem-system-symbolic ++ ++ ++ ++ ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ False ++ 0 ++ ++ ++ True ++ False ++ none ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ True ++ Enable Super+(0-9) as shortcuts to activate apps. It can also be used together with Shift and Ctrl. ++ True ++ True ++ 0 ++ ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Use hotkeys to activate apps ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ False ++ 6 ++ ++ ++ True ++ True ++ True ++ center ++ center ++ ++ ++ True ++ False ++ emblem-system-symbolic ++ ++ ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ ++ ++ ++ 0 ++ 1 ++ 2 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ False ++ Action ++ ++ ++ ++ ++ ++ ++ True ++ False ++ 24 ++ 24 ++ 24 ++ 24 ++ vertical ++ 24 ++ ++ ++ True ++ False ++ 0 ++ ++ ++ True ++ True ++ none ++ ++ ++ 100 ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 6 ++ 6 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ Tray Font Size (0 = theme default) ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ baseline ++ True ++ tray_size_adjustment ++ 0 ++ 0 ++ right ++ True ++ ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ LeftBox Font Size (0 = theme default) ++ 0 ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ baseline ++ True ++ leftbox_size_adjustment ++ 0 ++ 0 ++ right ++ True ++ ++ ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ False ++ 0 ++ ++ ++ True ++ False ++ none ++ ++ ++ 100 ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 12 ++ 32 ++ ++ ++ True ++ False ++ Tray Item Padding (-1 = theme default) ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ baseline ++ True ++ tray_padding_adjustment ++ 0 ++ 0 ++ right ++ True ++ ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ Status Icon Padding (-1 = theme default) ++ 0 ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ baseline ++ True ++ statusicon_padding_adjustment ++ 0 ++ 0 ++ right ++ True ++ ++ ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ LeftBox Padding (-1 = theme default) ++ 0 ++ ++ 2 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ baseline ++ True ++ leftbox_padding_adjustment ++ 0 ++ 0 ++ right ++ True ++ ++ ++ 2 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ False ++ 0 ++ ++ ++ True ++ False ++ none ++ ++ ++ 100 ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 6 ++ 32 ++ ++ ++ True ++ False ++ True ++ Animate switching applications ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Animate launching new windows ++ 0 ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ False ++ 0 ++ ++ ++ True ++ False ++ none ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 6 ++ 32 ++ ++ ++ True ++ False ++ True ++ Keep original gnome-shell dash (overview) ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Force Activities hot corner on primary monitor ++ 0 ++ ++ 3 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ ++ 3 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Activate panel menu buttons (e.g. date menu) on click only ++ 0 ++ ++ 2 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ ++ 2 ++ 1 ++ ++ ++ ++ ++ ++ True ++ False ++ True ++ Keep original gnome-shell top panel ++ 0 ++ ++ 1 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ center ++ ++ 1 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ False ++ 0 ++ ++ ++ True ++ False ++ none ++ ++ ++ 100 ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 20 ++ 32 ++ ++ ++ True ++ False ++ True ++ App icon secondary (right-click) menu ++ 0 ++ ++ 0 ++ 0 ++ ++ ++ ++ ++ ++ True ++ True ++ True ++ center ++ ++ ++ True ++ False ++ emblem-system-symbolic ++ ++ ++ ++ ++ 0 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Advanced Options ++ False ++ True ++ True ++ start ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ False ++ center ++ Fine-Tune ++ ++ ++ ++ ++ ++ ++ False ++ 24 ++ 24 ++ 24 ++ 24 ++ True ++ True ++ vertical ++ 5 ++ ++ ++ True ++ False ++ vertical ++ ++ ++ True ++ False ++ <b>Dash-to-Panel</b> ++ True ++ ++ ++ ++ ++ True ++ False ++ center ++ ++ ++ True ++ False ++ end ++ version: ++ ++ ++ ++ ++ True ++ False ++ start ++ ... ++ ++ ++ ++ ++ ++ ++ GitHub ++ True ++ True ++ True ++ center ++ https://github.com/jderose9/dash-to-panel ++ ++ ++ ++ ++ ++ ++ False ++ 20 ++ 0 ++ ++ ++ True ++ False ++ none ++ ++ ++ True ++ True ++ ++ ++ True ++ False ++ 12 ++ 12 ++ 12 ++ 12 ++ 6 ++ 32 ++ ++ ++ True ++ False ++ 12 ++ True ++ Use the buttons below to create a settings file from your current preferences that can be imported on a different machine. ++ True ++ 0 ++ ++ ++ 1 ++ 0 ++ 2 ++ ++ ++ ++ ++ ++ True ++ False ++ start ++ Export and import settings ++ ++ 0 ++ 0 ++ 2 ++ ++ ++ ++ ++ ++ Export to file ++ True ++ True ++ True ++ ++ 2 ++ 0 ++ ++ ++ ++ ++ ++ Import from file ++ True ++ True ++ True ++ ++ 2 ++ 1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ True ++ end ++ <span size="small">This program comes with ABSOLUTELY NO WARRANTY. See the <a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.html">GNU General Public License, version 2 or later</a> for details.</span> ++ True ++ center ++ True ++ ++ ++ ++ ++ ++ ++ ++ ++ True ++ False ++ About ++ ++ ++ ++ +diff --git a/extensions/dash-to-panel/appIcons.js b/extensions/dash-to-panel/appIcons.js +new file mode 100644 +index 00000000..e79eae89 +--- /dev/null ++++ b/extensions/dash-to-panel/appIcons.js +@@ -0,0 +1,1964 @@ ++/* ++ * This file is part of the Dash-To-Panel extension for Gnome 3 ++ * ++ * 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 2 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 . ++ * ++ * ++ * Credits: ++ * This file is based on code from the Dash to Dock extension by micheleg ++ * and code from the Taskbar extension by Zorin OS ++ * Some code was also adapted from the upstream Gnome Shell source code. ++ */ ++ ++ ++const Clutter = imports.gi.Clutter; ++const Gio = imports.gi.Gio; ++const GLib = imports.gi.GLib; ++const Gtk = imports.gi.Gtk; ++const Signals = imports.signals; ++const Lang = imports.lang; ++const Meta = imports.gi.Meta; ++const Shell = imports.gi.Shell; ++const St = imports.gi.St; ++const Mainloop = imports.mainloop; ++ ++const Config = imports.misc.config; ++const AppDisplay = imports.ui.appDisplay; ++const AppFavorites = imports.ui.appFavorites; ++const Dash = imports.ui.dash; ++const DND = imports.ui.dnd; ++const IconGrid = imports.ui.iconGrid; ++const Main = imports.ui.main; ++const PopupMenu = imports.ui.popupMenu; ++const Util = imports.misc.util; ++const Workspace = imports.ui.workspace; ++ ++const Me = imports.misc.extensionUtils.getCurrentExtension(); ++const Utils = Me.imports.utils; ++const Panel = Me.imports.panel; ++const PanelSettings = Me.imports.panelSettings; ++const Taskbar = Me.imports.taskbar; ++const Progress = Me.imports.progress; ++const _ = imports.gettext.domain(Utils.TRANSLATION_DOMAIN).gettext; ++ ++//timeout names ++const T1 = 'setStyleTimeout'; ++const T2 = 'mouseScrollTimeout'; ++const T3 = 'showDotsTimeout'; ++const T4 = 'overviewWindowDragEndTimeout'; ++const T5 = 'switchWorkspaceTimeout'; ++const T6 = 'displayProperIndicatorTimeout'; ++ ++//right padding defined for .overview-label in stylesheet.css ++const TITLE_RIGHT_PADDING = 8; ++ ++let LABEL_GAP = 5; ++let MAX_INDICATORS = 4; ++var DEFAULT_PADDING_SIZE = 4; ++ ++let DOT_STYLE = { ++ DOTS: "DOTS", ++ SQUARES: "SQUARES", ++ DASHES: "DASHES", ++ SEGMENTED: "SEGMENTED", ++ CILIORA: "CILIORA", ++ METRO: "METRO", ++ SOLID: "SOLID" ++} ++ ++let DOT_POSITION = { ++ TOP: "TOP", ++ BOTTOM: "BOTTOM", ++ LEFT: 'LEFT', ++ RIGHT: 'RIGHT' ++} ++ ++let recentlyClickedAppLoopId = 0; ++let recentlyClickedApp = null; ++let recentlyClickedAppWindows = null; ++let recentlyClickedAppIndex = 0; ++let recentlyClickedAppMonitorIndex; ++ ++let tracker = Shell.WindowTracker.get_default(); ++let menuRedisplayFunc = !!(AppDisplay.AppMenu || AppDisplay.AppIconMenu).prototype._rebuildMenu ? '_rebuildMenu' : '_redisplay'; ++ ++/** ++ * Extend AppIcon ++ * ++ * - Apply a css class based on the number of windows of each application (#N); ++ * - Draw a dot for each window of the application based on the default "dot" style which is hidden (#N); ++ * a class of the form "running#N" is applied to the AppWellIcon actor. ++ * like the original .running one. ++ * - add a .focused style to the focused app ++ * - Customize click actions. ++ * - Update minimization animation target ++ * ++ */ ++ ++var taskbarAppIcon = Utils.defineClass({ ++ Name: 'DashToPanel.TaskbarAppIcon', ++ Extends: AppDisplay.AppIcon, ++ ParentConstrParams: [[0, 'app'], [2]], ++ ++ _init: function(appInfo, panel, iconParams, previewMenu, iconAnimator) { ++ this.dtpPanel = panel; ++ this._nWindows = 0; ++ this.window = appInfo.window; ++ this.isLauncher = appInfo.isLauncher; ++ this._previewMenu = previewMenu; ++ this.iconAnimator = iconAnimator; ++ ++ this._timeoutsHandler = new Utils.TimeoutsHandler(); ++ ++ // Fix touchscreen issues before the listener is added by the parent constructor. ++ this._onTouchEvent = function(actor, event) { ++ if (event.type() == Clutter.EventType.TOUCH_BEGIN) { ++ // Open the popup menu on long press. ++ this._setPopupTimeout(); ++ } else if (this._menuTimeoutId != 0 && (event.type() == Clutter.EventType.TOUCH_END || event.type() == Clutter.EventType.TOUCH_CANCEL)) { ++ // Activate/launch the application. ++ this.activate(1); ++ this._removeMenuTimeout(); ++ } ++ // Disable dragging via touch screen as it's buggy as hell. Not perfect for tablet users, but the alternative is way worse. ++ // Also, EVENT_PROPAGATE launches applications twice with this solution, so this.activate(1) above must only be called if there's already a window. ++ return Clutter.EVENT_STOP; ++ }; ++ // Hack for missing TOUCH_END event. ++ this._onLeaveEvent = function(actor, event) { ++ this.actor.fake_release(); ++ if (this._menuTimeoutId != 0) this.activate(1); // Activate/launch the application if TOUCH_END didn't fire. ++ this._removeMenuTimeout(); ++ }; ++ ++ this.callParent('_init', appInfo.app, iconParams); ++ ++ Utils.wrapActor(this.icon); ++ Utils.wrapActor(this); ++ ++ this._dot.set_width(0); ++ this._isGroupApps = Me.settings.get_boolean('group-apps'); ++ ++ this._container = new St.Widget({ style_class: 'dtp-container', layout_manager: new Clutter.BinLayout() }); ++ this._dotsContainer = new St.Widget({ layout_manager: new Clutter.BinLayout() }); ++ this._dtpIconContainer = new St.Widget({ layout_manager: new Clutter.BinLayout(), style: getIconContainerStyle(panel.checkIfVertical()) }); ++ ++ this.actor.remove_actor(this._iconContainer); ++ ++ this._dtpIconContainer.add_child(this._iconContainer); ++ ++ if (appInfo.window) { ++ let box = new St.BoxLayout(); ++ ++ this._windowTitle = new St.Label({ ++ y_align: Clutter.ActorAlign.CENTER, ++ x_align: Clutter.ActorAlign.START, ++ style_class: 'overview-label' ++ }); ++ ++ this._updateWindowTitle(); ++ this._updateWindowTitleStyle(); ++ ++ this._scaleFactorChangedId = Utils.getStageTheme().connect('changed', () => this._updateWindowTitleStyle()); ++ ++ box.add_child(this._dtpIconContainer); ++ box.add_child(this._windowTitle); ++ ++ this._dotsContainer.add_child(box); ++ } else { ++ this._dotsContainer.add_child(this._dtpIconContainer); ++ } ++ ++ this._container.add_child(this._dotsContainer); ++ this.actor.set_child(this._container); ++ ++ if (panel.checkIfVertical()) { ++ this.actor.set_width(panel.geom.w); ++ } ++ ++ // Monitor windows-changes instead of app state. ++ // Keep using the same Id and function callback (that is extended) ++ if(this._stateChangedId > 0) { ++ this.app.disconnect(this._stateChangedId); ++ this._stateChangedId = 0; ++ } ++ ++ this._onAnimateAppiconHoverChanged(); ++ this._setAppIconPadding(); ++ this._showDots(); ++ ++ this._focusWindowChangedId = global.display.connect('notify::focus-window', ++ Lang.bind(this, this._onFocusAppChanged)); ++ ++ this._windowEnteredMonitorId = this._windowLeftMonitorId = 0; ++ this._stateChangedId = this.app.connect('windows-changed', Lang.bind(this, this.onWindowsChanged)); ++ ++ if (!this.window) { ++ if (Me.settings.get_boolean('isolate-monitors')) { ++ this._windowEnteredMonitorId = Utils.DisplayWrapper.getScreen().connect('window-entered-monitor', this.onWindowEnteredOrLeft.bind(this)); ++ this._windowLeftMonitorId = Utils.DisplayWrapper.getScreen().connect('window-left-monitor', this.onWindowEnteredOrLeft.bind(this)); ++ } ++ ++ this._titleWindowChangeId = 0; ++ this._minimizedWindowChangeId = 0; ++ } else { ++ this._titleWindowChangeId = this.window.connect('notify::title', ++ Lang.bind(this, this._updateWindowTitle)); ++ ++ this._minimizedWindowChangeId = this.window.connect('notify::minimized', ++ Lang.bind(this, this._updateWindowTitleStyle)); ++ } ++ ++ this._scrollEventId = this.actor.connect('scroll-event', this._onMouseScroll.bind(this)); ++ ++ this._overviewWindowDragEndId = Main.overview.connect('window-drag-end', ++ Lang.bind(this, this._onOverviewWindowDragEnd)); ++ ++ this._switchWorkspaceId = global.window_manager.connect('switch-workspace', ++ Lang.bind(this, this._onSwitchWorkspace)); ++ ++ this._hoverChangeId = this.actor.connect('notify::hover', () => this._onAppIconHoverChanged()); ++ ++ this._dtpSettingsSignalIds = [ ++ Me.settings.connect('changed::animate-appicon-hover', Lang.bind(this, this._onAnimateAppiconHoverChanged)), ++ Me.settings.connect('changed::dot-position', Lang.bind(this, this._settingsChangeRefresh)), ++ Me.settings.connect('changed::dot-size', Lang.bind(this, this._settingsChangeRefresh)), ++ Me.settings.connect('changed::dot-style-focused', Lang.bind(this, this._settingsChangeRefresh)), ++ Me.settings.connect('changed::dot-style-unfocused', Lang.bind(this, this._settingsChangeRefresh)), ++ Me.settings.connect('changed::dot-color-dominant', Lang.bind(this, this._settingsChangeRefresh)), ++ Me.settings.connect('changed::dot-color-override', Lang.bind(this, this._settingsChangeRefresh)), ++ Me.settings.connect('changed::dot-color-1', Lang.bind(this, this._settingsChangeRefresh)), ++ Me.settings.connect('changed::dot-color-2', Lang.bind(this, this._settingsChangeRefresh)), ++ Me.settings.connect('changed::dot-color-3', Lang.bind(this, this._settingsChangeRefresh)), ++ Me.settings.connect('changed::dot-color-4', Lang.bind(this, this._settingsChangeRefresh)), ++ Me.settings.connect('changed::dot-color-unfocused-different', Lang.bind(this, this._settingsChangeRefresh)), ++ Me.settings.connect('changed::dot-color-unfocused-1', Lang.bind(this, this._settingsChangeRefresh)), ++ Me.settings.connect('changed::dot-color-unfocused-2', Lang.bind(this, this._settingsChangeRefresh)), ++ Me.settings.connect('changed::dot-color-unfocused-3', Lang.bind(this, this._settingsChangeRefresh)), ++ Me.settings.connect('changed::dot-color-unfocused-4', Lang.bind(this, this._settingsChangeRefresh)), ++ Me.settings.connect('changed::focus-highlight', Lang.bind(this, this._settingsChangeRefresh)), ++ Me.settings.connect('changed::focus-highlight-dominant', Lang.bind(this, this._settingsChangeRefresh)), ++ Me.settings.connect('changed::focus-highlight-color', Lang.bind(this, this._settingsChangeRefresh)), ++ Me.settings.connect('changed::focus-highlight-opacity', Lang.bind(this, this._settingsChangeRefresh)), ++ Me.settings.connect('changed::group-apps-label-font-size', Lang.bind(this, this._updateWindowTitleStyle)), ++ Me.settings.connect('changed::group-apps-label-font-weight', Lang.bind(this, this._updateWindowTitleStyle)), ++ Me.settings.connect('changed::group-apps-label-font-color', Lang.bind(this, this._updateWindowTitleStyle)), ++ Me.settings.connect('changed::group-apps-label-font-color-minimized', Lang.bind(this, this._updateWindowTitleStyle)), ++ Me.settings.connect('changed::group-apps-label-max-width', Lang.bind(this, this._updateWindowTitleStyle)), ++ Me.settings.connect('changed::group-apps-use-fixed-width', Lang.bind(this, this._updateWindowTitleStyle)), ++ Me.settings.connect('changed::group-apps-underline-unfocused', Lang.bind(this, this._settingsChangeRefresh)) ++ ] ++ ++ this.forcedOverview = false; ++ ++ this._progressIndicator = new Progress.ProgressIndicator(this, panel.progressManager); ++ ++ this._numberOverlay(); ++ }, ++ ++ getDragActor: function() { ++ return this.app.create_icon_texture(this.dtpPanel.taskbar.iconSize); ++ }, ++ ++ // Used by TaskbarItemContainer to animate appIcons on hover ++ getCloneButton: function() { ++ // The source of the clone is this._container, ++ // using this.actor directly would break DnD style. ++ let clone = new Clutter.Clone({ ++ source: this.actor.child, ++ x: this.actor.child.x, y: this.actor.child.y, ++ width: this.actor.child.width, height: this.actor.child.height, ++ pivot_point: new Utils.getPoint({ x: 0.5, y: 0.5 }), ++ opacity: 255, ++ reactive: false, ++ x_align: Clutter.ActorAlign.CENTER, y_align: Clutter.ActorAlign.CENTER, ++ }); ++ ++ // "clone" of this.actor ++ return new St.Button({ ++ child: clone, ++ x: this.actor.x, y: this.actor.y, ++ width: this.actor.width, height: this.actor.height, ++ reactive: false, ++ }); ++ }, ++ ++ shouldShowTooltip: function() { ++ if (!Me.settings.get_boolean('show-tooltip') || ++ (!this.isLauncher && Me.settings.get_boolean("show-window-previews") && ++ this.getAppIconInterestingWindows().length > 0)) { ++ return false; ++ } else { ++ return this.actor.hover && !this.window && ++ (!this._menu || !this._menu.isOpen) && ++ (this._previewMenu.getCurrentAppIcon() !== this); ++ } ++ }, ++ ++ _onAppIconHoverChanged: function() { ++ if (!Me.settings.get_boolean('show-window-previews') || ++ (!this.window && !this._nWindows)) { ++ return; ++ } ++ ++ if (this.actor.hover) { ++ this._previewMenu.requestOpen(this); ++ } else { ++ this._previewMenu.requestClose(); ++ } ++ }, ++ ++ _onDestroy: function() { ++ this.callParent('_onDestroy'); ++ this._destroyed = true; ++ ++ this._timeoutsHandler.destroy(); ++ ++ this._previewMenu.close(true); ++ ++ // Disconect global signals ++ // stateChangedId is already handled by parent) ++ ++ if(this._overviewWindowDragEndId) ++ Main.overview.disconnect(this._overviewWindowDragEndId); ++ ++ if(this._focusWindowChangedId) ++ global.display.disconnect(this._focusWindowChangedId); ++ ++ if(this._titleWindowChangeId) ++ this.window.disconnect(this._titleWindowChangeId); ++ ++ if(this._minimizedWindowChangeId) ++ this.window.disconnect(this._minimizedWindowChangeId); ++ ++ if (this._windowEnteredMonitorId) { ++ Utils.DisplayWrapper.getScreen().disconnect(this._windowEnteredMonitorId); ++ Utils.DisplayWrapper.getScreen().disconnect(this._windowLeftMonitorId); ++ } ++ ++ if(this._switchWorkspaceId) ++ global.window_manager.disconnect(this._switchWorkspaceId); ++ ++ if(this._scaleFactorChangedId) ++ Utils.getStageTheme().disconnect(this._scaleFactorChangedId); ++ ++ if (this._hoverChangeId) { ++ this.actor.disconnect(this._hoverChangeId); ++ } ++ ++ if (this._scrollEventId) { ++ this.actor.disconnect(this._scrollEventId); ++ } ++ ++ for (let i = 0; i < this._dtpSettingsSignalIds.length; ++i) { ++ Me.settings.disconnect(this._dtpSettingsSignalIds[i]); ++ } ++ }, ++ ++ onWindowsChanged: function() { ++ this._updateWindows(); ++ this.updateIcon(); ++ }, ++ ++ onWindowEnteredOrLeft: function() { ++ if (this._checkIfFocusedApp()) { ++ this._updateWindows(); ++ this._displayProperIndicator(); ++ } ++ }, ++ ++ updateTitleStyle: function() { ++ this._updateWindowTitleStyle(); ++ }, ++ ++ // Update indicator and target for minimization animation ++ updateIcon: function() { ++ ++ // If (for unknown reason) the actor is not on the stage the reported size ++ // and position are random values, which might exceeds the integer range ++ // resulting in an error when assigned to the a rect. This is a more like ++ // a workaround to prevent flooding the system with errors. ++ if (this.actor.get_stage() == null) ++ return; ++ ++ let rect = new Meta.Rectangle(); ++ ++ [rect.x, rect.y] = this.actor.get_transformed_position(); ++ [rect.width, rect.height] = this.actor.get_transformed_size(); ++ ++ let windows = this.window ? [this.window] : this.getAppIconInterestingWindows(true); ++ windows.forEach(function(w) { ++ w.set_icon_geometry(rect); ++ }); ++ }, ++ ++ _onAnimateAppiconHoverChanged: function() { ++ if (Me.settings.get_boolean('animate-appicon-hover')) { ++ this._container.add_style_class_name('animate-appicon-hover'); ++ ++ // Workaround to prevent scaled icon from being ugly when it is animated on hover. ++ // It increases the "resolution" of the icon without changing the icon size. ++ this.icon.createIcon = (iconSize) => this.app.create_icon_texture(2 * iconSize); ++ this._iconIconBinActorAddedId = this.icon._iconBin.connect('actor-added', () => { ++ if (this.icon._iconBin.child.mapped) { ++ this.icon._iconBin.child.set_size(this.icon.iconSize, this.icon.iconSize); ++ } else { ++ let iconMappedId = this.icon._iconBin.child.connect('notify::mapped', () => { ++ this.icon._iconBin.child.set_size(this.icon.iconSize, this.icon.iconSize); ++ this.icon._iconBin.child.disconnect(iconMappedId); ++ }); ++ } ++ }); ++ if (this.icon._iconBin.child) ++ this.icon._createIconTexture(this.icon.iconSize); ++ } else { ++ this._container.remove_style_class_name('animate-appicon-hover'); ++ ++ if (this._iconIconBinActorAddedId) { ++ this.icon._iconBin.disconnect(this._iconIconBinActorAddedId); ++ this._iconIconBinActorAddedId = 0; ++ this.icon.createIcon = Lang.bind(this, this._createIcon); ++ } ++ } ++ }, ++ ++ _onMouseScroll: function(actor, event) { ++ let scrollAction = Me.settings.get_string('scroll-icon-action'); ++ ++ if (scrollAction === 'PASS_THROUGH') { ++ return this.dtpPanel._onPanelMouseScroll(actor, event); ++ } else if (scrollAction === 'NOTHING' || (!this.window && !this._nWindows)) { ++ return; ++ } ++ ++ let direction = Utils.getMouseScrollDirection(event); ++ ++ if (direction && !this._timeoutsHandler.getId(T2)) { ++ this._timeoutsHandler.add([T2, Me.settings.get_int('scroll-icon-delay'), () => {}]); ++ ++ let windows = this.getAppIconInterestingWindows(); ++ ++ windows.sort(Taskbar.sortWindowsCompareFunction); ++ Utils.activateSiblingWindow(windows, direction, this.window); ++ } ++ }, ++ ++ _showDots: function() { ++ // Just update style if dots already exist ++ if (this._focusedDots && this._unfocusedDots) { ++ this._updateWindows(); ++ return; ++ } ++ ++ if (!this._isGroupApps) { ++ this._focusedDots = new St.Widget({ ++ layout_manager: new Clutter.BinLayout(), ++ x_expand: true, y_expand: true, ++ visible: false ++ }); ++ ++ let mappedId = this.actor.connect('notify::mapped', () => { ++ this._displayProperIndicator(); ++ this.actor.disconnect(mappedId); ++ }); ++ } else { ++ this._focusedDots = new St.DrawingArea(), ++ this._unfocusedDots = new St.DrawingArea(); ++ this._focusedDots._tweeningToSize = null, ++ this._unfocusedDots._tweeningToSize = null; ++ ++ this._focusedDots.connect('repaint', Lang.bind(this, function() { ++ if(this._dashItemContainer.animatingOut) { ++ // don't draw and trigger more animations if the icon is in the middle of ++ // being added to the panel ++ return; ++ } ++ this._drawRunningIndicator(this._focusedDots, Me.settings.get_string('dot-style-focused'), true); ++ this._displayProperIndicator(); ++ })); ++ ++ this._unfocusedDots.connect('repaint', Lang.bind(this, function() { ++ if(this._dashItemContainer.animatingOut) { ++ // don't draw and trigger more animations if the icon is in the middle of ++ // being added to the panel ++ return; ++ } ++ this._drawRunningIndicator(this._unfocusedDots, Me.settings.get_string('dot-style-unfocused'), false); ++ this._displayProperIndicator(); ++ })); ++ ++ this._dotsContainer.add_child(this._unfocusedDots); ++ ++ this._updateWindows(); ++ ++ this._timeoutsHandler.add([T3, 0, () => { ++ this._resetDots(); ++ this._displayProperIndicator(); ++ }]); ++ } ++ ++ this._dotsContainer.add_child(this._focusedDots); ++ }, ++ ++ _resetDots: function() { ++ let position = Me.settings.get_string('dot-position'); ++ let isHorizontalDots = position == DOT_POSITION.TOP || position == DOT_POSITION.BOTTOM; ++ ++ [this._focusedDots, this._unfocusedDots].forEach(d => { ++ d._tweeningToSize = null; ++ d.set_size(-1, -1); ++ d.x_expand = d.y_expand = false; ++ ++ d[isHorizontalDots ? 'width' : 'height'] = 1; ++ d[(isHorizontalDots ? 'y' : 'x') + '_expand'] = true; ++ }); ++ }, ++ ++ _settingsChangeRefresh: function() { ++ if (this._isGroupApps) { ++ this._updateWindows(); ++ this._resetDots(); ++ this._focusedDots.queue_repaint(); ++ this._unfocusedDots.queue_repaint(); ++ } ++ ++ this._displayProperIndicator(true); ++ }, ++ ++ _updateWindowTitleStyle: function() { ++ if (this._windowTitle) { ++ let useFixedWidth = Me.settings.get_boolean('group-apps-use-fixed-width'); ++ let variableWidth = !useFixedWidth || this.dtpPanel.checkIfVertical() || this.dtpPanel.taskbar.fullScrollView; ++ let fontWeight = Me.settings.get_string('group-apps-label-font-weight'); ++ let fontScale = Me.desktopSettings.get_double('text-scaling-factor'); ++ let fontColor = this.window.minimized ? ++ Me.settings.get_string('group-apps-label-font-color-minimized') : ++ Me.settings.get_string('group-apps-label-font-color'); ++ let scaleFactor = Utils.getScaleFactor(); ++ let maxLabelWidth = Me.settings.get_int('group-apps-label-max-width') * scaleFactor; ++ ++ this._windowTitle[(maxLabelWidth > 0 ? 'show' : 'hide')](); ++ ++ this._windowTitle.clutter_text.natural_width = useFixedWidth ? maxLabelWidth : 0; ++ this._windowTitle.clutter_text.natural_width_set = useFixedWidth; ++ this._windowTitle.set_width(variableWidth ? -1 : maxLabelWidth + TITLE_RIGHT_PADDING * scaleFactor); ++ ++ this._windowTitle.set_style('font-size: ' + Me.settings.get_int('group-apps-label-font-size') * fontScale + 'px;' + ++ 'font-weight: ' + fontWeight + ';' + ++ (useFixedWidth ? '' : 'max-width: ' + maxLabelWidth + 'px;') + ++ 'color: ' + fontColor); ++ } ++ }, ++ ++ _updateWindowTitle: function() { ++ if (this._windowTitle.text != this.window.title) { ++ this._windowTitle.text = (this.window.title ? this.window.title : this.app.get_name()).replace(/\r?\n|\r/g, '').trim(); ++ ++ if (this._focusedDots) { ++ this._displayProperIndicator(); ++ } ++ } ++ }, ++ ++ _setIconStyle: function(isFocused) { ++ let inlineStyle = 'margin: 0;'; ++ ++ if(Me.settings.get_boolean('focus-highlight') && ++ this._checkIfFocusedApp() && !this.isLauncher && ++ (!this.window || isFocused) && !this._isThemeProvidingIndicator() && this._checkIfMonitorHasFocus()) { ++ let focusedDotStyle = Me.settings.get_string('dot-style-focused'); ++ let isWide = this._isWideDotStyle(focusedDotStyle); ++ let pos = Me.settings.get_string('dot-position'); ++ let highlightMargin = isWide ? Me.settings.get_int('dot-size') : 0; ++ ++ if(!this.window) { ++ let containerWidth = this._dtpIconContainer.get_width() / Utils.getScaleFactor();; ++ let backgroundSize = containerWidth + "px " + ++ (containerWidth - (pos == DOT_POSITION.BOTTOM ? highlightMargin : 0)) + "px;"; ++ ++ if (focusedDotStyle == DOT_STYLE.CILIORA || focusedDotStyle == DOT_STYLE.SEGMENTED) ++ highlightMargin += 1; ++ ++ if (this._nWindows > 1 && focusedDotStyle == DOT_STYLE.METRO) { ++ let bgSvg = '/img/highlight_stacked_bg'; ++ ++ if (pos == DOT_POSITION.LEFT || pos == DOT_POSITION.RIGHT) { ++ bgSvg += (this.dtpPanel.checkIfVertical() ? '_2' : '_3'); ++ } ++ ++ inlineStyle += "background-image: url('" + Me.path + bgSvg + ".svg');" + ++ "background-position: 0 " + (pos == DOT_POSITION.TOP ? highlightMargin : 0) + "px;" + ++ "background-size: " + backgroundSize; ++ } ++ } ++ ++ let highlightColor = this._getFocusHighlightColor(); ++ inlineStyle += "background-color: " + cssHexTocssRgba(highlightColor, Me.settings.get_int('focus-highlight-opacity') * 0.01); ++ } ++ ++ if(this._dotsContainer.get_style() != inlineStyle && this._dotsContainer.mapped) { ++ if (!this._isGroupApps) { ++ //when the apps are ungrouped, set the style synchronously so the icons don't jump around on taskbar redraw ++ this._dotsContainer.set_style(inlineStyle); ++ } else if (!this._timeoutsHandler.getId(T1)) { ++ //graphical glitches if i dont set this on a timeout ++ this._timeoutsHandler.add([T1, 0, () => this._dotsContainer.set_style(inlineStyle)]); ++ } ++ } ++ }, ++ ++ _checkIfFocusedApp: function() { ++ return tracker.focus_app == this.app; ++ }, ++ ++ _checkIfMonitorHasFocus: function() { ++ return global.display.focus_window && ++ (!Me.settings.get_boolean('multi-monitors') || // only check same monitor index if multi window is enabled. ++ !Me.settings.get_boolean('isolate-monitors') || ++ global.display.focus_window.get_monitor() === this.dtpPanel.monitor.index); ++ }, ++ ++ _setAppIconPadding: function() { ++ let padding = getIconPadding(this.dtpPanel.monitor.index); ++ let margin = Me.settings.get_int('appicon-margin'); ++ ++ this.actor.set_style('padding:' + (this.dtpPanel.checkIfVertical() ? margin + 'px 0' : '0 ' + margin + 'px;')); ++ this._iconContainer.set_style('padding: ' + padding + 'px;'); ++ }, ++ ++ popupMenu: function() { ++ this._removeMenuTimeout(); ++ this.actor.fake_release(); ++ ++ if (this._draggable) { ++ this._draggable.fakeRelease(); ++ } ++ ++ if (this.isDragged) { ++ return; ++ } ++ ++ if (!this._menu) { ++ this._menu = new taskbarSecondaryMenu(this, this.dtpPanel); ++ this._menu.connect('activate-window', Lang.bind(this, function (menu, window) { ++ this.activateWindow(window, Me.settings); ++ })); ++ this._menu.connect('open-state-changed', Lang.bind(this, function (menu, isPoppedUp) { ++ if (!isPoppedUp) ++ this._onMenuPoppedDown(); ++ })); ++ let id = Main.overview.connect('hiding', Lang.bind(this, function () { this._menu.close(); })); ++ this._menu.actor.connect('destroy', function() { ++ Main.overview.disconnect(id); ++ }); ++ ++ this._menuManager.addMenu(this._menu); ++ } ++ ++ this.emit('menu-state-changed', true); ++ ++ this._previewMenu.close(true); ++ ++ this.actor.set_hover(true); ++ this._menu.actor.add_style_class_name('dashtopanelSecondaryMenu'); ++ this._menu.popup(); ++ this._menuManager.ignoreRelease(); ++ this.emit('sync-tooltip'); ++ ++ return false; ++ }, ++ ++ _onFocusAppChanged: function(windowTracker) { ++ this._displayProperIndicator(true); ++ }, ++ ++ _onOverviewWindowDragEnd: function(windowTracker) { ++ this._timeoutsHandler.add([T4, 0, () => this._displayProperIndicator()]); ++ }, ++ ++ _onSwitchWorkspace: function(windowTracker) { ++ if (this._isGroupApps) { ++ this._timeoutsHandler.add([T5, 0, () => this._displayProperIndicator(true)]); ++ } else { ++ this._displayProperIndicator(); ++ } ++ }, ++ ++ _displayProperIndicator: function (force) { ++ let isFocused = this._isFocusedWindow(); ++ let position = Me.settings.get_string('dot-position'); ++ let isHorizontalDots = position == DOT_POSITION.TOP || position == DOT_POSITION.BOTTOM; ++ ++ this._setIconStyle(isFocused); ++ ++ if(!this._isGroupApps) { ++ if (this.window && (Me.settings.get_boolean('group-apps-underline-unfocused') || isFocused)) { ++ let align = Clutter.ActorAlign[position == DOT_POSITION.TOP || position == DOT_POSITION.LEFT ? 'START' : 'END']; ++ ++ this._focusedDots.set_size(0, 0); ++ this._focusedDots[isHorizontalDots ? 'height' : 'width'] = this._getRunningIndicatorSize(); ++ ++ this._focusedDots.y_align = this._focusedDots.x_align = Clutter.ActorAlign.FILL; ++ this._focusedDots[(isHorizontalDots ? 'y' : 'x') + '_align'] = align; ++ this._focusedDots.background_color = this._getRunningIndicatorColor(isFocused); ++ this._focusedDots.show(); ++ } else if (this._focusedDots.visible) { ++ this._focusedDots.hide(); ++ } ++ } else { ++ let sizeProp = isHorizontalDots ? 'width' : 'height'; ++ let containerSize = this._container[sizeProp]; ++ let focusedDotStyle = Me.settings.get_string('dot-style-focused'); ++ let unfocusedDotStyle = Me.settings.get_string('dot-style-unfocused'); ++ let focusedIsWide = this._isWideDotStyle(focusedDotStyle); ++ let unfocusedIsWide = this._isWideDotStyle(unfocusedDotStyle); ++ ++ let newFocusedDotsSize = 0; ++ let newFocusedDotsOpacity = 0; ++ let newUnfocusedDotsSize = 0; ++ let newUnfocusedDotsOpacity = 0; ++ ++ isFocused = this._checkIfFocusedApp() && this._checkIfMonitorHasFocus(); ++ ++ this._timeoutsHandler.add([T6, 0, () => { ++ if (!this._destroyed) { ++ if(isFocused) ++ this.actor.add_style_class_name('focused'); ++ else ++ this.actor.remove_style_class_name('focused'); ++ } ++ }]); ++ ++ if(focusedIsWide) { ++ newFocusedDotsSize = (isFocused && this._nWindows > 0) ? containerSize : 0; ++ newFocusedDotsOpacity = 255; ++ } else { ++ newFocusedDotsSize = containerSize; ++ newFocusedDotsOpacity = (isFocused && this._nWindows > 0) ? 255 : 0; ++ } ++ ++ if(unfocusedIsWide) { ++ newUnfocusedDotsSize = (!isFocused && this._nWindows > 0) ? containerSize : 0; ++ newUnfocusedDotsOpacity = 255; ++ } else { ++ newUnfocusedDotsSize = containerSize; ++ newUnfocusedDotsOpacity = (!isFocused && this._nWindows > 0) ? 255 : 0; ++ } ++ ++ // Only animate if... ++ // animation is enabled in settings ++ // AND (going from a wide style to a narrow style indicator or vice-versa ++ // OR going from an open app to a closed app or vice versa) ++ if(Me.settings.get_boolean('animate-app-switch') && ++ ((focusedIsWide != unfocusedIsWide) || ++ (this._focusedDots[sizeProp] != newUnfocusedDotsSize || this._unfocusedDots[sizeProp] != newFocusedDotsSize))) { ++ this._animateDotDisplay(this._focusedDots, newFocusedDotsSize, this._unfocusedDots, newUnfocusedDotsOpacity, force, sizeProp); ++ this._animateDotDisplay(this._unfocusedDots, newUnfocusedDotsSize, this._focusedDots, newFocusedDotsOpacity, force, sizeProp); ++ } else { ++ this._focusedDots.opacity = newFocusedDotsOpacity; ++ this._unfocusedDots.opacity = newUnfocusedDotsOpacity; ++ this._focusedDots[sizeProp] = newFocusedDotsSize; ++ this._unfocusedDots[sizeProp] = newUnfocusedDotsSize; ++ } ++ } ++ }, ++ ++ _animateDotDisplay: function (dots, newSize, otherDots, newOtherOpacity, force, sizeProp) { ++ if((dots[sizeProp] != newSize && dots._tweeningToSize !== newSize) || force) { ++ let tweenOpts = { ++ time: Taskbar.DASH_ANIMATION_TIME, ++ transition: 'easeInOutCubic', ++ onComplete: Lang.bind(this, function() { ++ if(newOtherOpacity > 0) ++ otherDots.opacity = newOtherOpacity; ++ dots._tweeningToSize = null; ++ }) ++ }; ++ ++ if(newOtherOpacity == 0) ++ otherDots.opacity = newOtherOpacity; ++ ++ tweenOpts[sizeProp] = newSize; ++ dots._tweeningToSize = newSize; ++ ++ Utils.animate(dots, tweenOpts); ++ } ++ }, ++ ++ _isFocusedWindow: function() { ++ let focusedWindow = global.display.focus_window; ++ ++ while (focusedWindow) { ++ if (focusedWindow == this.window) { ++ return true; ++ } ++ ++ focusedWindow = focusedWindow.get_transient_for(); ++ } ++ ++ return false; ++ }, ++ ++ _isWideDotStyle: function(dotStyle) { ++ return dotStyle == DOT_STYLE.SEGMENTED || ++ dotStyle == DOT_STYLE.CILIORA || ++ dotStyle == DOT_STYLE.METRO || ++ dotStyle == DOT_STYLE.SOLID; ++ }, ++ ++ _isThemeProvidingIndicator: function () { ++ // This is an attempt to determine if the theme is providing their own ++ // running indicator by way of a border image on the icon, for example in ++ // the theme Ciliora ++ return (this.icon.actor.get_stage() && ++ this.icon.actor.get_theme_node().get_border_image()); ++ }, ++ ++ activate: function(button, handleAsGrouped) { ++ let event = Clutter.get_current_event(); ++ let modifiers = event ? event.get_state() : 0; ++ ++ // Only consider SHIFT and CONTROL as modifiers (exclude SUPER, CAPS-LOCK, etc.) ++ modifiers = modifiers & (Clutter.ModifierType.SHIFT_MASK | Clutter.ModifierType.CONTROL_MASK); ++ ++ // We don't change the CTRL-click behaviour: in such case we just chain ++ // up the parent method and return. ++ if (modifiers & Clutter.ModifierType.CONTROL_MASK) { ++ // Keep default behaviour: launch new window ++ // By calling the parent method I make it compatible ++ // with other extensions tweaking ctrl + click ++ this.callParent('activate', button); ++ return; ++ } ++ ++ // We check what type of click we have and if the modifier SHIFT is ++ // being used. We then define what buttonAction should be for this ++ // event. ++ let buttonAction = 0; ++ if (button && button == 2 ) { ++ if (modifiers & Clutter.ModifierType.SHIFT_MASK) ++ buttonAction = Me.settings.get_string('shift-middle-click-action'); ++ else ++ buttonAction = Me.settings.get_string('middle-click-action'); ++ } ++ else if (button && button == 1) { ++ if (modifiers & Clutter.ModifierType.SHIFT_MASK) ++ buttonAction = Me.settings.get_string('shift-click-action'); ++ else ++ buttonAction = Me.settings.get_string('click-action'); ++ } ++ ++ let appCount = this.getAppIconInterestingWindows().length; ++ let previewedAppIcon = this._previewMenu.getCurrentAppIcon(); ++ this._previewMenu.close(Me.settings.get_boolean('window-preview-hide-immediate-click')); ++ ++ // We check if the app is running, and that the # of windows is > 0 in ++ // case we use workspace isolation, ++ let appIsRunning = this.app.state == Shell.AppState.RUNNING && appCount > 0; ++ ++ // We customize the action only when the application is already running ++ if (appIsRunning && !this.isLauncher) { ++ if (this.window && !handleAsGrouped) { ++ //ungrouped applications behaviors ++ switch (buttonAction) { ++ case 'RAISE': case 'CYCLE': case 'CYCLE-MIN': case 'MINIMIZE': case 'TOGGLE-SHOWPREVIEW': case 'TOGGLE-CYCLE': ++ if (!Main.overview._shown && ++ (buttonAction == 'MINIMIZE' || buttonAction == 'TOGGLE-SHOWPREVIEW' || buttonAction == 'TOGGLE-CYCLE' || buttonAction == 'CYCLE-MIN') && ++ (this._isFocusedWindow() || (buttonAction == 'MINIMIZE' && (button == 2 || modifiers & Clutter.ModifierType.SHIFT_MASK)))) { ++ this.window.minimize(); ++ } else { ++ Main.activateWindow(this.window); ++ } ++ ++ break; ++ ++ case "LAUNCH": ++ this._launchNewInstance(); ++ break; ++ ++ case "QUIT": ++ this.window.delete(global.get_current_time()); ++ break; ++ } ++ } else { ++ //grouped application behaviors ++ let monitor = this.dtpPanel.monitor; ++ let appHasFocus = this._checkIfFocusedApp() && this._checkIfMonitorHasFocus(); ++ ++ switch (buttonAction) { ++ case "RAISE": ++ activateAllWindows(this.app, monitor); ++ break; ++ ++ case "LAUNCH": ++ this._launchNewInstance(); ++ break; ++ ++ case "MINIMIZE": ++ // In overview just activate the app, unless the acion is explicitely ++ // requested with a keyboard modifier ++ if (!Main.overview._shown || modifiers){ ++ // If we have button=2 or a modifier, allow minimization even if ++ // the app is not focused ++ if (appHasFocus || button == 2 || modifiers & Clutter.ModifierType.SHIFT_MASK) { ++ // minimize all windows on double click and always in the case of primary click without ++ // additional modifiers ++ let all_windows = (button == 1 && ! modifiers) || event.get_click_count() > 1; ++ minimizeWindow(this.app, all_windows, monitor); ++ } ++ else ++ activateAllWindows(this.app, monitor); ++ } ++ else ++ this.app.activate(); ++ break; ++ ++ case "CYCLE": ++ if (!Main.overview._shown){ ++ if (appHasFocus) ++ cycleThroughWindows(this.app, false, false, monitor); ++ else { ++ activateFirstWindow(this.app, monitor); ++ } ++ } ++ else ++ this.app.activate(); ++ break; ++ case "CYCLE-MIN": ++ if (!Main.overview._shown){ ++ if (appHasFocus || (recentlyClickedApp == this.app && recentlyClickedAppWindows[recentlyClickedAppIndex % recentlyClickedAppWindows.length] == "MINIMIZE")) ++ cycleThroughWindows(this.app, false, true, monitor); ++ else { ++ activateFirstWindow(this.app, monitor); ++ } ++ } ++ else ++ this.app.activate(); ++ break; ++ case "TOGGLE-SHOWPREVIEW": ++ if (!Main.overview._shown) { ++ if (appCount == 1) { ++ if (appHasFocus) ++ minimizeWindow(this.app, false, monitor); ++ else ++ activateFirstWindow(this.app, monitor); ++ } else { ++ if (event.get_click_count() > 1) { ++ // minimize all windows if double clicked ++ minimizeWindow(this.app, true, monitor); ++ } else if (previewedAppIcon != this) { ++ this._previewMenu.open(this); ++ } ++ ++ this.emit('sync-tooltip'); ++ } ++ } ++ else ++ this.app.activate(); ++ break; ++ case "TOGGLE-CYCLE": ++ if (!Main.overview._shown) { ++ if (appCount == 1) { ++ if (appHasFocus) ++ minimizeWindow(this.app, false, monitor); ++ else ++ activateFirstWindow(this.app, monitor); ++ } else { ++ cycleThroughWindows(this.app, false, false, monitor); ++ } ++ } ++ else ++ this.app.activate(); ++ break; ++ case "QUIT": ++ closeAllWindows(this.app, monitor); ++ break; ++ } ++ } ++ } ++ else { ++ this._launchNewInstance(); ++ } ++ ++ Main.overview.hide(); ++ }, ++ ++ _launchNewInstance: function() { ++ if (this.app.can_open_new_window()) { ++ let appActions = this.app.get_app_info().list_actions(); ++ let newWindowIndex = appActions.indexOf('new-window'); ++ ++ if(Me.settings.get_boolean('animate-window-launch')) { ++ this.animateLaunch(); ++ } ++ ++ if (newWindowIndex < 0) { ++ this.app.open_new_window(-1); ++ } else { ++ this.app.launch_action(appActions[newWindowIndex], global.get_current_time(), -1); ++ } ++ } else { ++ let windows = this.window ? [this.window] : this.app.get_windows(); ++ ++ if (windows.length) { ++ Main.activateWindow(windows[0]); ++ } else { ++ this.app.activate(); ++ } ++ } ++ }, ++ ++ _updateWindows: function() { ++ let windows = [this.window]; ++ ++ if (!this.window) { ++ windows = this.getAppIconInterestingWindows(); ++ ++ this._nWindows = windows.length; ++ ++ for (let i = 1; i <= MAX_INDICATORS; i++){ ++ let className = 'running'+i; ++ if(i != this._nWindows) ++ this.actor.remove_style_class_name(className); ++ else ++ this.actor.add_style_class_name(className); ++ } ++ } ++ ++ this._previewMenu.update(this, windows); ++ }, ++ ++ _getRunningIndicatorCount: function() { ++ return Math.min(this._nWindows, MAX_INDICATORS); ++ }, ++ ++ _getRunningIndicatorSize: function() { ++ return Me.settings.get_int('dot-size') * Utils.getScaleFactor(); ++ }, ++ ++ _getRunningIndicatorColor: function(isFocused) { ++ let color; ++ const fallbackColor = new Clutter.Color({ red: 82, green: 148, blue: 226, alpha: 255 }); ++ ++ if (Me.settings.get_boolean('dot-color-dominant')) { ++ let dce = new Utils.DominantColorExtractor(this.app); ++ let palette = dce._getColorPalette(); ++ if (palette) { ++ color = Clutter.color_from_string(palette.original)[1]; ++ } else { // unable to determine color, fall back to theme ++ let themeNode = this._dot.get_theme_node(); ++ color = themeNode.get_background_color(); ++ ++ // theme didn't provide one, use a default ++ if(color.alpha == 0) color = fallbackColor; ++ } ++ } else if(Me.settings.get_boolean('dot-color-override')) { ++ let dotColorSettingPrefix = 'dot-color-'; ++ ++ if(!isFocused && Me.settings.get_boolean('dot-color-unfocused-different')) ++ dotColorSettingPrefix = 'dot-color-unfocused-'; ++ ++ color = Clutter.color_from_string(Me.settings.get_string(dotColorSettingPrefix + (this._getRunningIndicatorCount() || 1) ))[1]; ++ } else { ++ // Re-use the style - background color, and border width and color - ++ // of the default dot ++ let themeNode = this._dot.get_theme_node(); ++ color = themeNode.get_background_color(); ++ ++ // theme didn't provide one, use a default ++ if(color.alpha == 0) color = fallbackColor; ++ } ++ ++ return color; ++ }, ++ ++ _getFocusHighlightColor: function() { ++ if (Me.settings.get_boolean('focus-highlight-dominant')) { ++ let dce = new Utils.DominantColorExtractor(this.app); ++ let palette = dce._getColorPalette(); ++ if (palette) return palette.original; ++ } ++ return Me.settings.get_string('focus-highlight-color'); ++ }, ++ ++ _drawRunningIndicator: function(area, type, isFocused) { ++ let n = this._getRunningIndicatorCount(); ++ ++ if (!n) { ++ return; ++ } ++ ++ let position = Me.settings.get_string('dot-position'); ++ let isHorizontalDots = position == DOT_POSITION.TOP || position == DOT_POSITION.BOTTOM; ++ let bodyColor = this._getRunningIndicatorColor(isFocused); ++ let [areaWidth, areaHeight] = area.get_surface_size(); ++ let cr = area.get_context(); ++ let size = this._getRunningIndicatorSize(); ++ ++ let areaSize = areaWidth; ++ let startX = 0; ++ let startY = 0; ++ ++ if (isHorizontalDots) { ++ if (position == DOT_POSITION.BOTTOM) { ++ startY = areaHeight - size; ++ } ++ } else { ++ areaSize = areaHeight; ++ ++ if (position == DOT_POSITION.RIGHT) { ++ startX = areaWidth - size; ++ } ++ } ++ ++ if (type == DOT_STYLE.SOLID || type == DOT_STYLE.METRO) { ++ if (type == DOT_STYLE.SOLID || n <= 1) { ++ cr.translate(startX, startY); ++ Clutter.cairo_set_source_color(cr, bodyColor); ++ cr.newSubPath(); ++ cr.rectangle.apply(cr, [0, 0].concat(isHorizontalDots ? [areaSize, size] : [size, areaSize])); ++ cr.fill(); ++ } else { ++ let blackenedLength = (1 / 48) * areaSize; // need to scale with the SVG for the stacked highlight ++ let darkenedLength = isFocused ? (2 / 48) * areaSize : (10 / 48) * areaSize; ++ let blackenedColor = bodyColor.shade(.3); ++ let darkenedColor = bodyColor.shade(.7); ++ let solidDarkLength = areaSize - darkenedLength; ++ let solidLength = solidDarkLength - blackenedLength; ++ ++ cr.translate(startX, startY); ++ ++ Clutter.cairo_set_source_color(cr, bodyColor); ++ cr.newSubPath(); ++ cr.rectangle.apply(cr, [0, 0].concat(isHorizontalDots ? [solidLength, size] : [size, solidLength])); ++ cr.fill(); ++ Clutter.cairo_set_source_color(cr, blackenedColor); ++ cr.newSubPath(); ++ cr.rectangle.apply(cr, isHorizontalDots ? [solidLength, 0, 1, size] : [0, solidLength, size, 1]); ++ cr.fill(); ++ Clutter.cairo_set_source_color(cr, darkenedColor); ++ cr.newSubPath(); ++ cr.rectangle.apply(cr, isHorizontalDots ? [solidDarkLength, 0, darkenedLength, size] : [0, solidDarkLength, size, darkenedLength]); ++ cr.fill(); ++ } ++ } else { ++ let spacing = Math.ceil(areaSize / 18); // separation between the indicators ++ let length; ++ let dist; ++ let indicatorSize; ++ let translate; ++ let preDraw = () => {}; ++ let draw; ++ let drawDash = (i, dashLength) => { ++ dist = i * dashLength + i * spacing; ++ cr.rectangle.apply(cr, (isHorizontalDots ? [dist, 0, dashLength, size] : [0, dist, size, dashLength])); ++ }; ++ ++ switch (type) { ++ case DOT_STYLE.CILIORA: ++ spacing = size; ++ length = areaSize - (size * (n - 1)) - (spacing * (n - 1)); ++ translate = () => cr.translate(startX, startY); ++ preDraw = () => { ++ cr.newSubPath(); ++ cr.rectangle.apply(cr, [0, 0].concat(isHorizontalDots ? [length, size] : [size, length])); ++ }; ++ draw = i => { ++ dist = length + (i * spacing) + ((i - 1) * size); ++ cr.rectangle.apply(cr, (isHorizontalDots ? [dist, 0] : [0, dist]).concat([size, size])); ++ }; ++ break; ++ case DOT_STYLE.DOTS: ++ let radius = size / 2; ++ ++ translate = () => { ++ indicatorSize = Math.floor((areaSize - n * size - (n - 1) * spacing) / 2); ++ cr.translate.apply(cr, isHorizontalDots ? [indicatorSize, startY] : [startX, indicatorSize]); ++ } ++ draw = i => { ++ dist = (2 * i + 1) * radius + i * spacing; ++ cr.arc.apply(cr, (isHorizontalDots ? [dist, radius] : [radius, dist]).concat([radius, 0, 2 * Math.PI])); ++ }; ++ break; ++ case DOT_STYLE.SQUARES: ++ translate = () => { ++ indicatorSize = Math.floor((areaSize - n * size - (n - 1) * spacing) / 2); ++ cr.translate.apply(cr, isHorizontalDots ? [indicatorSize, startY] : [startX, indicatorSize]); ++ } ++ draw = i => { ++ dist = i * size + i * spacing; ++ cr.rectangle.apply(cr, (isHorizontalDots ? [dist, 0] : [0, dist]).concat([size, size])); ++ }; ++ break; ++ case DOT_STYLE.DASHES: ++ length = Math.floor(areaSize / 4) - spacing; ++ translate = () => { ++ indicatorSize = Math.floor((areaSize - n * length - (n - 1) * spacing) / 2); ++ cr.translate.apply(cr, isHorizontalDots ? [indicatorSize, startY] : [startX, indicatorSize]); ++ } ++ draw = i => drawDash(i, length); ++ break; ++ case DOT_STYLE.SEGMENTED: ++ length = Math.ceil((areaSize - ((n - 1) * spacing)) / n); ++ translate = () => cr.translate(startX, startY); ++ draw = i => drawDash(i, length); ++ break; ++ } ++ ++ translate(); ++ ++ Clutter.cairo_set_source_color(cr, bodyColor); ++ preDraw(); ++ for (let i = 0; i < n; i++) { ++ cr.newSubPath(); ++ draw(i); ++ } ++ cr.fill(); ++ } ++ ++ cr.$dispose(); ++ }, ++ ++ _numberOverlay: function() { ++ // Add label for a Hot-Key visual aid ++ this._numberOverlayLabel = new St.Label({ style_class: 'badge' }); ++ this._numberOverlayBin = new St.Bin({ ++ child: this._numberOverlayLabel, y: 2 ++ }); ++ this._numberOverlayLabel.add_style_class_name('number-overlay'); ++ this._numberOverlayOrder = -1; ++ this._numberOverlayBin.hide(); ++ ++ this._dtpIconContainer.add_child(this._numberOverlayBin); ++ }, ++ ++ updateHotkeyNumberOverlay: function() { ++ this.updateNumberOverlay(this._numberOverlayBin, true); ++ }, ++ ++ updateNumberOverlay: function(bin, fixedSize) { ++ // We apply an overall scale factor that might come from a HiDPI monitor. ++ // Clutter dimensions are in physical pixels, but CSS measures are in logical ++ // pixels, so make sure to consider the scale. ++ // Set the font size to something smaller than the whole icon so it is ++ // still visible. The border radius is large to make the shape circular ++ let [minWidth, natWidth] = this._dtpIconContainer.get_preferred_width(-1); ++ let font_size = Math.round(Math.max(12, 0.3 * natWidth) / Utils.getScaleFactor()); ++ let size = Math.round(font_size * 1.3); ++ let label = bin.child; ++ let style = 'font-size: ' + font_size + 'px;' + ++ 'border-radius: ' + this.icon.iconSize + 'px;' + ++ 'height: ' + size +'px;'; ++ ++ if (fixedSize || label.get_text().length == 1) { ++ style += 'width: ' + size + 'px;'; ++ } else { ++ style += 'padding: 0 2px;'; ++ } ++ ++ bin.x = fixedSize ? natWidth - size - 2 : 2; ++ label.set_style(style); ++ }, ++ ++ setNumberOverlay: function(number) { ++ this._numberOverlayOrder = number; ++ this._numberOverlayLabel.set_text(number.toString()); ++ }, ++ ++ toggleNumberOverlay: function(activate) { ++ if (activate && this._numberOverlayOrder > -1) ++ this._numberOverlayBin.show(); ++ else ++ this._numberOverlayBin.hide(); ++ }, ++ ++ handleDragOver: function(source, actor, x, y, time) { ++ if (source == Main.xdndHandler) { ++ this._previewMenu.close(true); ++ } ++ ++ return DND.DragMotionResult.CONTINUE; ++ }, ++ ++ // Disable all DnD methods on gnome-shell 3.34 ++ _onDragBegin: function() {}, ++ _onDragEnd: function() {}, ++ acceptDrop: function() { return false; }, ++ ++ getAppIconInterestingWindows: function(isolateMonitors) { ++ return getInterestingWindows(this.app, this.dtpPanel.monitor, isolateMonitors); ++ } ++}); ++taskbarAppIcon.prototype.scaleAndFade = taskbarAppIcon.prototype.undoScaleAndFade = () => {}; ++ ++function minimizeWindow(app, param, monitor){ ++ // Param true make all app windows minimize ++ let windows = getInterestingWindows(app, monitor); ++ let current_workspace = Utils.DisplayWrapper.getWorkspaceManager().get_active_workspace(); ++ for (let i = 0; i < windows.length; i++) { ++ let w = windows[i]; ++ if (w.get_workspace() == current_workspace && w.showing_on_its_workspace()){ ++ w.minimize(); ++ // Just minimize one window. By specification it should be the ++ // focused window on the current workspace. ++ if(!param) ++ break; ++ } ++ } ++} ++ ++/* ++ * By default only non minimized windows are activated. ++ * This activates all windows in the current workspace. ++ */ ++function activateAllWindows(app, monitor){ ++ ++ // First activate first window so workspace is switched if needed, ++ // then activate all other app windows in the current workspace. ++ let windows = getInterestingWindows(app, monitor); ++ let w = windows[0]; ++ Main.activateWindow(w); ++ let activeWorkspace = Utils.DisplayWrapper.getWorkspaceManager().get_active_workspace_index(); ++ ++ if (windows.length <= 0) ++ return; ++ ++ for (let i = windows.length - 1; i >= 0; i--){ ++ if (windows[i].get_workspace().index() == activeWorkspace){ ++ Main.activateWindow(windows[i]); ++ } ++ } ++} ++ ++function activateFirstWindow(app, monitor){ ++ ++ let windows = getInterestingWindows(app, monitor); ++ Main.activateWindow(windows[0]); ++} ++ ++function cycleThroughWindows(app, reversed, shouldMinimize, monitor) { ++ // Store for a little amount of time last clicked app and its windows ++ // since the order changes upon window interaction ++ let MEMORY_TIME=3000; ++ ++ let app_windows = getInterestingWindows(app, monitor); ++ ++ if(shouldMinimize) ++ app_windows.push("MINIMIZE"); ++ ++ if (recentlyClickedAppLoopId > 0) ++ Mainloop.source_remove(recentlyClickedAppLoopId); ++ ++ recentlyClickedAppLoopId = Mainloop.timeout_add(MEMORY_TIME, resetRecentlyClickedApp); ++ ++ // If there isn't already a list of windows for the current app, ++ // or the stored list is outdated, use the current windows list. ++ if (!recentlyClickedApp || ++ recentlyClickedApp.get_id() != app.get_id() || ++ recentlyClickedAppWindows.length != app_windows.length || ++ recentlyClickedAppMonitorIndex != monitor.index) { ++ recentlyClickedApp = app; ++ recentlyClickedAppWindows = app_windows; ++ recentlyClickedAppIndex = 0; ++ recentlyClickedAppMonitorIndex = monitor.index; ++ } ++ ++ if (reversed) { ++ recentlyClickedAppIndex--; ++ if (recentlyClickedAppIndex < 0) recentlyClickedAppIndex = recentlyClickedAppWindows.length - 1; ++ } else { ++ recentlyClickedAppIndex++; ++ } ++ let index = recentlyClickedAppIndex % recentlyClickedAppWindows.length; ++ ++ if(recentlyClickedAppWindows[index] === "MINIMIZE") ++ minimizeWindow(app, true, monitor); ++ else ++ Main.activateWindow(recentlyClickedAppWindows[index]); ++} ++ ++function resetRecentlyClickedApp() { ++ if (recentlyClickedAppLoopId > 0) ++ Mainloop.source_remove(recentlyClickedAppLoopId); ++ ++ recentlyClickedAppLoopId=0; ++ recentlyClickedApp =null; ++ recentlyClickedAppWindows = null; ++ recentlyClickedAppIndex = 0; ++ recentlyClickedAppMonitorIndex = null; ++ ++ return false; ++} ++ ++function closeAllWindows(app, monitor) { ++ let windows = getInterestingWindows(app, monitor); ++ for (let i = 0; i < windows.length; i++) ++ windows[i].delete(global.get_current_time()); ++} ++ ++// Filter out unnecessary windows, for instance ++// nautilus desktop window. ++function getInterestingWindows(app, monitor, isolateMonitors) { ++ let windows = app.get_windows().filter(function(w) { ++ return !w.skip_taskbar; ++ }); ++ ++ // When using workspace or monitor isolation, we filter out windows ++ // that are not in the current workspace or on the same monitor as the appicon ++ if (Me.settings.get_boolean('isolate-workspaces')) ++ windows = windows.filter(function(w) { ++ return w.get_workspace().index() == Utils.DisplayWrapper.getWorkspaceManager().get_active_workspace_index(); ++ }); ++ ++ if (monitor && Me.settings.get_boolean('multi-monitors') && (isolateMonitors || Me.settings.get_boolean('isolate-monitors'))) { ++ windows = windows.filter(function(w) { ++ return w.get_monitor() == monitor.index; ++ }); ++ } ++ ++ return windows; ++} ++ ++function cssHexTocssRgba(cssHex, opacity) { ++ var bigint = parseInt(cssHex.slice(1), 16); ++ var r = (bigint >> 16) & 255; ++ var g = (bigint >> 8) & 255; ++ var b = bigint & 255; ++ ++ return 'rgba(' + [r, g, b].join(',') + ',' + opacity + ')'; ++} ++ ++function getIconPadding(monitorIndex) { ++ let panelSize = PanelSettings.getPanelSize(Me.settings, monitorIndex); ++ let padding = Me.settings.get_int('appicon-padding'); ++ let availSize = panelSize - Taskbar.MIN_ICON_SIZE - panelSize % 2; ++ ++ if (padding * 2 > availSize) { ++ padding = availSize * .5; ++ } ++ ++ return padding; ++} ++ ++/** ++ * Extend AppMenu (AppIconMenu for pre gnome 41) ++ * ++ * - set popup arrow side based on taskbar orientation ++ * - Add close windows option based on quitfromdash extension ++ * (https://github.com/deuill/shell-extension-quitfromdash) ++ */ ++ ++var taskbarSecondaryMenu = Utils.defineClass({ ++ Name: 'DashToPanel.SecondaryMenu', ++ Extends: (AppDisplay.AppMenu || AppDisplay.AppIconMenu), ++ ParentConstrParams: [[0]], ++ ++ _init: function(source, panel) { ++ // Damm it, there has to be a proper way of doing this... ++ // As I can't call the parent parent constructor (?) passing the side ++ // parameter, I overwite what I need later ++ this.callParent('_init', source); ++ ++ let side = panel.getPosition(); ++ // Change the initialized side where required. ++ this._arrowSide = side; ++ this._boxPointer._arrowSide = side; ++ this._boxPointer._userArrowSide = side; ++ }, ++ ++ // helper function for the quit windows abilities ++ _closeWindowInstance: function(metaWindow) { ++ metaWindow.delete(global.get_current_time()); ++ }, ++ ++ _dtpRedisplay: function(parentFunc) { ++ this.callParent(parentFunc); ++ ++ // Remove "Show Details" menu item ++ if(!Me.settings.get_boolean('secondarymenu-contains-showdetails')) { ++ let existingMenuItems = this._getMenuItems(); ++ for(let idx in existingMenuItems) { ++ if(existingMenuItems[idx].actor.label_actor.text == _("Show Details")) { ++ this.box.remove_child(existingMenuItems[idx].actor); ++ if(existingMenuItems[idx-1] instanceof PopupMenu.PopupSeparatorMenuItem) ++ this.box.remove_child(existingMenuItems[idx-1].actor); ++ break; ++ } ++ } ++ } ++ ++ // prepend items from the appMenu (for native gnome apps) ++ if(Me.settings.get_boolean('secondarymenu-contains-appmenu')) { ++ let appMenu = this._source.app.menu; ++ if(appMenu) { ++ let remoteMenu = new imports.ui.remoteMenu.RemoteMenu(this._source.actor, this._source.app.menu, this._source.app.action_group); ++ let appMenuItems = remoteMenu._getMenuItems(); ++ for(var i = 0, l = appMenuItems.length || 0; i < l; ++i) { ++ let menuItem = appMenuItems[i]; ++ let labelText = menuItem.actor.label_actor.text; ++ if(labelText == _("New Window") || labelText == _("Quit")) ++ continue; ++ ++ if(menuItem instanceof PopupMenu.PopupSeparatorMenuItem) ++ continue; ++ ++ // this ends up getting called multiple times, and bombing due to the signal id's being invalid ++ // on a 2nd pass. disconnect the base handler and attach our own that wraps the id's in if statements ++ menuItem.disconnect(menuItem._popupMenuDestroyId) ++ menuItem._popupMenuDestroyId = menuItem.connect('destroy', Lang.bind(this, function(menuItem) { ++ if(menuItem._popupMenuDestroyId) { ++ menuItem.disconnect(menuItem._popupMenuDestroyId); ++ menuItem._popupMenuDestroyId = 0; ++ } ++ if(menuItem._activateId) { ++ menuItem.disconnect(menuItem._activateId); ++ menuItem._activateId = 0; ++ } ++ if(menuItem._activeChangeId) { ++ menuItem.disconnect(menuItem._activeChangeId); ++ menuItem._activeChangeId = 0; ++ } ++ if(menuItem._sensitiveChangeId) { ++ menuItem.disconnect(menuItem._sensitiveChangeId); ++ menuItem._sensitiveChangeId = 0; ++ } ++ this.disconnect(menuItem._parentSensitiveChangeId); ++ if (menuItem == this._activeMenuItem) ++ this._activeMenuItem = null; ++ })); ++ ++ menuItem.actor.get_parent().remove_child(menuItem.actor); ++ if(menuItem instanceof PopupMenu.PopupSubMenuMenuItem) { ++ let newSubMenuMenuItem = new PopupMenu.PopupSubMenuMenuItem(labelText); ++ let appSubMenuItems = menuItem.menu._getMenuItems(); ++ for(let appSubMenuIdx in appSubMenuItems){ ++ let subMenuItem = appSubMenuItems[appSubMenuIdx]; ++ subMenuItem.actor.get_parent().remove_child(subMenuItem.actor); ++ newSubMenuMenuItem.menu.addMenuItem(subMenuItem); ++ } ++ this.addMenuItem(newSubMenuMenuItem, i); ++ } else ++ this.addMenuItem(menuItem, i); ++ } ++ ++ if(i > 0) { ++ let separator = new PopupMenu.PopupSeparatorMenuItem(); ++ this.addMenuItem(separator, i); ++ } ++ } ++ } ++ ++ // quit menu ++ let app = this._source.app; ++ let window = this._source.window; ++ let count = window ? 1 : getInterestingWindows(app).length; ++ if ( count > 0) { ++ this._appendSeparator(); ++ let quitFromTaskbarMenuText = ""; ++ if (count == 1) ++ quitFromTaskbarMenuText = _("Quit"); ++ else ++ quitFromTaskbarMenuText = _("Quit") + ' ' + count + ' ' + _("Windows"); ++ ++ this._quitfromTaskbarMenuItem = this._appendMenuItem(quitFromTaskbarMenuText); ++ this._quitfromTaskbarMenuItem.connect('activate', Lang.bind(this, function() { ++ let app = this._source.app; ++ let windows = window ? [window] : app.get_windows(); ++ for (i = 0; i < windows.length; i++) { ++ this._closeWindowInstance(windows[i]) ++ } ++ })); ++ } ++ } ++}); ++Signals.addSignalMethods(taskbarSecondaryMenu.prototype); ++adjustMenuRedisplay(taskbarSecondaryMenu.prototype); ++ ++/** ++ * This function is used for extendDashItemContainer ++ */ ++function ItemShowLabel() { ++ if (!this._labelText) ++ return; ++ ++ this.label.set_text(this._labelText); ++ this.label.opacity = 0; ++ this.label.show(); ++ ++ let [stageX, stageY] = this.get_transformed_position(); ++ let node = this.label.get_theme_node(); ++ ++ let itemWidth = this.allocation.x2 - this.allocation.x1; ++ let itemHeight = this.allocation.y2 - this.allocation.y1; ++ ++ let labelWidth = this.label.get_width(); ++ let labelHeight = this.label.get_height(); ++ ++ let position = this._dtpPanel.getPosition(); ++ let labelOffset = node.get_length('-x-offset'); ++ ++ // From TaskbarItemContainer ++ if (this._getIconAnimationOffset) ++ labelOffset += this._getIconAnimationOffset(); ++ ++ let xOffset = Math.floor((itemWidth - labelWidth) / 2); ++ let x = stageX + xOffset ++ let y = stageY + (itemHeight - labelHeight) * .5; ++ ++ switch(position) { ++ case St.Side.TOP: ++ y = stageY + labelOffset + itemHeight; ++ break; ++ case St.Side.BOTTOM: ++ y = stageY - labelHeight - labelOffset; ++ break; ++ case St.Side.LEFT: ++ x = stageX + labelOffset + itemWidth; ++ break; ++ case St.Side.RIGHT: ++ x = stageX - labelWidth - labelOffset; ++ break; ++ } ++ ++ // keep the label inside the screen border ++ // Only needed for the x coordinate. ++ ++ // Leave a few pixel gap ++ let gap = LABEL_GAP; ++ let monitor = Main.layoutManager.findMonitorForActor(this); ++ if ( x - monitor.x < gap) ++ x += monitor.x - x + labelOffset; ++ else if ( x + labelWidth > monitor.x + monitor.width - gap) ++ x -= x + labelWidth -( monitor.x + monitor.width) + gap; ++ ++ this.label.set_position(Math.round(x), Math.round(y)); ++ ++ let duration = Dash.DASH_ITEM_LABEL_SHOW_TIME; ++ ++ if (duration > 1) { ++ duration /= 1000; ++ } ++ ++ Utils.animate(this.label, { ++ opacity: 255, ++ time: duration, ++ transition: 'easeOutQuad', ++ }); ++}; ++ ++/** ++ * A wrapper class around the ShowAppsIcon class. ++ * ++ * - Pass settings to the constructor ++ * - set label position based on dash orientation (Note, I am reusing most machinery of the appIcon class) ++ * - implement a popupMenu based on the AppIcon code (Note, I am reusing most machinery of the appIcon class) ++ * ++ * I can't subclass the original object because of this: https://bugzilla.gnome.org/show_bug.cgi?id=688973. ++ * thus use this pattern where the real showAppsIcon object is encaptulated, and a reference to it will be properly wired upon ++ * use of this class in place of the original showAppsButton. ++ * ++ */ ++var ShowAppsIconWrapper = Utils.defineClass({ ++ Name: 'DashToPanel.ShowAppsIconWrapper', ++ ++ _init: function(dtpPanel) { ++ this.realShowAppsIcon = new Dash.ShowAppsIcon(); ++ ++ Utils.wrapActor(this.realShowAppsIcon); ++ Utils.wrapActor(this.realShowAppsIcon.toggleButton); ++ ++ /* the variable equivalent to toggleButton has a different name in the appIcon class ++ (actor): duplicate reference to easily reuse appIcon methods */ ++ this.actor = this.realShowAppsIcon.toggleButton; ++ this.realShowAppsIcon.show(false); ++ ++ // Re-use appIcon methods ++ this._removeMenuTimeout = AppDisplay.AppIcon.prototype._removeMenuTimeout; ++ this._setPopupTimeout = AppDisplay.AppIcon.prototype._setPopupTimeout; ++ this._onKeyboardPopupMenu = AppDisplay.AppIcon.prototype._onKeyboardPopupMenu; ++ ++ // No action on clicked (showing of the appsview is controlled elsewhere) ++ this._onClicked = Lang.bind(this, function(actor, button) { ++ this._removeMenuTimeout(); ++ }); ++ ++ this.actor.connect('leave-event', Lang.bind(this, this._onLeaveEvent)); ++ this.actor.connect('button-press-event', Lang.bind(this, this._onButtonPress)); ++ this.actor.connect('touch-event', Lang.bind(this, this._onTouchEvent)); ++ this.actor.connect('clicked', Lang.bind(this, this._onClicked)); ++ this.actor.connect('popup-menu', Lang.bind(this, this._onKeyboardPopupMenu)); ++ ++ this._menu = null; ++ this._menuManager = new PopupMenu.PopupMenuManager(this.actor); ++ this._menuTimeoutId = 0; ++ ++ this.realShowAppsIcon._dtpPanel = dtpPanel; ++ Taskbar.extendDashItemContainer(this.realShowAppsIcon); ++ ++ let customIconPath = Me.settings.get_string('show-apps-icon-file'); ++ ++ this.realShowAppsIcon.icon.createIcon = function(size) { ++ this._iconActor = new St.Icon({ icon_name: 'view' + (Config.PACKAGE_VERSION < '3.20' ? '' : '-app') + '-grid-symbolic', ++ icon_size: size, ++ style_class: 'show-apps-icon', ++ track_hover: true }); ++ ++ if (customIconPath) { ++ this._iconActor.gicon = new Gio.FileIcon({ file: Gio.File.new_for_path(customIconPath) }); ++ } ++ ++ return this._iconActor; ++ }; ++ ++ this._changedShowAppsIconId = Me.settings.connect('changed::show-apps-icon-file', () => { ++ customIconPath = Me.settings.get_string('show-apps-icon-file'); ++ this.realShowAppsIcon.icon._createIconTexture(this.realShowAppsIcon.icon.iconSize); ++ }); ++ ++ this._changedAppIconPaddingId = Me.settings.connect('changed::appicon-padding', () => this.setShowAppsPadding()); ++ this._changedAppIconSidePaddingId = Me.settings.connect('changed::show-apps-icon-side-padding', () => this.setShowAppsPadding()); ++ ++ this.setShowAppsPadding(); ++ }, ++ ++ _onButtonPress: function(_actor, event) { ++ let button = event.get_button(); ++ if (button == 1) { ++ this._setPopupTimeout(); ++ } else if (button == 3) { ++ this.popupMenu(); ++ return Clutter.EVENT_STOP; ++ } ++ return Clutter.EVENT_PROPAGATE; ++ }, ++ ++ _onLeaveEvent: function(_actor, _event) { ++ this.actor.fake_release(); ++ this._removeMenuTimeout(); ++ }, ++ ++ _onTouchEvent: function(actor, event) { ++ if (event.type() == Clutter.EventType.TOUCH_BEGIN) ++ this._setPopupTimeout(); ++ ++ return Clutter.EVENT_PROPAGATE; ++ }, ++ ++ _onMenuPoppedDown: function() { ++ this._menu.sourceActor = this.actor; ++ this.actor.sync_hover(); ++ this.emit('menu-state-changed', false); ++ }, ++ ++ setShowAppsPadding: function() { ++ let padding = getIconPadding(this.realShowAppsIcon._dtpPanel.monitor.index); ++ let sidePadding = Me.settings.get_int('show-apps-icon-side-padding'); ++ let isVertical = this.realShowAppsIcon._dtpPanel.checkIfVertical(); ++ ++ this.actor.set_style('padding:' + (padding + (isVertical ? sidePadding : 0)) + 'px ' + (padding + (isVertical ? 0 : sidePadding)) + 'px;'); ++ }, ++ ++ createMenu: function() { ++ if (!this._menu) { ++ this._menu = new MyShowAppsIconMenu(this.actor, this.realShowAppsIcon._dtpPanel); ++ this._menu.connect('open-state-changed', Lang.bind(this, function(menu, isPoppedUp) { ++ if (!isPoppedUp) ++ this._onMenuPoppedDown(); ++ })); ++ let id = Main.overview.connect('hiding', Lang.bind(this, function() { ++ this._menu.close(); ++ })); ++ this._menu.actor.connect('destroy', function() { ++ Main.overview.disconnect(id); ++ }); ++ this._menuManager.addMenu(this._menu); ++ } ++ }, ++ ++ popupMenu: function() { ++ this._removeMenuTimeout(); ++ this.actor.fake_release(); ++ this.createMenu(this.actor); ++ ++ //this.emit('menu-state-changed', true); ++ ++ this.actor.set_hover(true); ++ this._menu.popup(); ++ this._menuManager.ignoreRelease(); ++ this.emit('sync-tooltip'); ++ ++ return false; ++ }, ++ ++ shouldShowTooltip: function() { ++ return Me.settings.get_boolean('show-tooltip') && ++ (this.actor.hover && (!this._menu || !this._menu.isOpen)); ++ }, ++ ++ destroy: function() { ++ Me.settings.disconnect(this._changedShowAppsIconId); ++ Me.settings.disconnect(this._changedAppIconSidePaddingId); ++ Me.settings.disconnect(this._changedAppIconPaddingId); ++ ++ this.realShowAppsIcon.destroy(); ++ } ++}); ++Signals.addSignalMethods(ShowAppsIconWrapper.prototype); ++ ++/** ++ * A menu for the showAppsIcon ++ */ ++var MyShowAppsIconMenu = Utils.defineClass({ ++ Name: 'DashToPanel.ShowAppsIconMenu', ++ Extends: taskbarSecondaryMenu, ++ ParentConstrParams: [[0], [1]], ++ ++ _dtpRedisplay: function() { ++ this.removeAll(); ++ ++ // Only add menu entries for commands that exist in path ++ function _appendItem(obj, info) { ++ if (Utils.checkIfCommandExists(info.cmd[0])) { ++ let item = obj._appendMenuItem(_(info.title)); ++ ++ item.connect('activate', function() { ++ Util.spawn(info.cmd); ++ }); ++ return item; ++ } ++ ++ return null; ++ } ++ ++ function _appendList(obj, commandList, titleList) { ++ if (commandList.length != titleList.length) { ++ return; ++ } ++ ++ for (var entry = 0; entry < commandList.length; entry++) { ++ _appendItem(obj, { ++ title: titleList[entry], ++ cmd: commandList[entry].split(' ') ++ }); ++ } ++ } ++ ++ if (this.sourceActor != Main.layoutManager.dummyCursor) { ++ _appendItem(this, { ++ title: 'Power options', ++ cmd: ['gnome-control-center', 'power'] ++ }); ++ ++ _appendItem(this, { ++ title: 'Event logs', ++ cmd: ['gnome-logs'] ++ }); ++ ++ _appendItem(this, { ++ title: 'System', ++ cmd: ['gnome-control-center', 'info-overview'] ++ }); ++ ++ _appendItem(this, { ++ title: 'Device Management', ++ cmd: ['gnome-control-center', 'display'] ++ }); ++ ++ _appendItem(this, { ++ title: 'Disk Management', ++ cmd: ['gnome-disks'] ++ }); ++ ++ _appendList( ++ this, ++ Me.settings.get_strv('show-apps-button-context-menu-commands'), ++ Me.settings.get_strv('show-apps-button-context-menu-titles') ++ ) ++ ++ this._appendSeparator(); ++ } ++ ++ _appendItem(this, { ++ title: 'Terminal', ++ cmd: ['gnome-terminal'] ++ }); ++ ++ _appendItem(this, { ++ title: 'System monitor', ++ cmd: ['gnome-system-monitor'] ++ }); ++ ++ _appendItem(this, { ++ title: 'Files', ++ cmd: ['nautilus'] ++ }); ++ ++ _appendItem(this, { ++ title: 'Extensions', ++ cmd: ['gnome-shell-extension-prefs'] ++ }); ++ ++ _appendItem(this, { ++ title: 'Settings', ++ cmd: ['gnome-control-center', 'wifi'] ++ }); ++ ++ _appendList( ++ this, ++ Me.settings.get_strv('panel-context-menu-commands'), ++ Me.settings.get_strv('panel-context-menu-titles') ++ ) ++ ++ this._appendSeparator(); ++ ++ let lockTaskbarMenuItem = this._appendMenuItem(Me.settings.get_boolean('taskbar-locked') ? _('Unlock taskbar') : _('Lock taskbar')); ++ lockTaskbarMenuItem.connect('activate', () => { ++ Me.settings.set_boolean('taskbar-locked', !Me.settings.get_boolean('taskbar-locked')); ++ }); ++ ++ let settingsMenuItem = this._appendMenuItem(_('Dash to Panel Settings')); ++ settingsMenuItem.connect('activate', function () { ++ let command = ["gnome-shell-extension-prefs"]; ++ ++ if (Config.PACKAGE_VERSION > '3.36') { ++ command = ["gnome-extensions", "prefs"]; ++ } ++ ++ Util.spawn(command.concat([Me.metadata.uuid])); ++ }); ++ ++ if(this._source._dtpPanel) { ++ this._appendSeparator(); ++ let item = this._appendMenuItem(this._source._dtpPanel._restoreWindowList ? _('Restore Windows') : _('Show Desktop')); ++ item.connect('activate', Lang.bind(this._source._dtpPanel, this._source._dtpPanel._onShowDesktopButtonPress)); ++ } ++ } ++}); ++adjustMenuRedisplay(MyShowAppsIconMenu.prototype); ++ ++function adjustMenuRedisplay(menuProto) { ++ menuProto[menuRedisplayFunc] = function() { this._dtpRedisplay(menuRedisplayFunc) }; ++} ++ ++var getIconContainerStyle = function(isVertical) { ++ let style = 'padding: '; ++ ++ if (Me.settings.get_boolean('group-apps')) { ++ style += (isVertical ? '0;' : '0 ' + DEFAULT_PADDING_SIZE + 'px;'); ++ } else { ++ style += (isVertical ? '' : '0 ') + DEFAULT_PADDING_SIZE + 'px;'; ++ } ++ ++ return style; ++} +diff --git a/extensions/dash-to-panel/convenience.js b/extensions/dash-to-panel/convenience.js +new file mode 100644 +index 00000000..57d2f136 +--- /dev/null ++++ b/extensions/dash-to-panel/convenience.js +@@ -0,0 +1,89 @@ ++/* ++ * This file is part of the Dash-To-Panel extension for Gnome 3 ++ * ++ * 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 2 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 . ++ * ++ * ++ * Credits: ++ * This file is based on code from the Dash to Dock extension by micheleg ++ * and code from the Taskbar extension by Zorin OS ++ * Some code was also adapted from the upstream Gnome Shell source code. ++ */ ++ ++const Config = imports.misc.config; ++const ExtensionUtils = imports.misc.extensionUtils; ++const Gettext = imports.gettext; ++const Gio = imports.gi.Gio; ++ ++/** ++ * initTranslations: ++ * @domain: (optional): the gettext domain to use ++ * ++ * Initialize Gettext to load translations from extensionsdir/locale. ++ * If @domain is not provided, it will be taken from metadata['gettext-domain'] ++ */ ++function initTranslations(domain) { ++ let extension = ExtensionUtils.getCurrentExtension(); ++ ++ domain = domain || extension.metadata['gettext-domain']; ++ ++ // Check if this extension was built with "make zip-file", and thus ++ // has the locale files in a subfolder ++ // otherwise assume that extension has been installed in the ++ // same prefix as gnome-shell ++ let localeDir = extension.dir.get_child('locale'); ++ if (localeDir.query_exists(null)) ++ Gettext.bindtextdomain(domain, localeDir.get_path()); ++ else ++ Gettext.bindtextdomain(domain, Config.LOCALEDIR); ++} ++ ++/** ++ * getSettings: ++ * @schema: (optional): the GSettings schema id ++ * ++ * Builds and return a GSettings schema for @schema, using schema files ++ * in extensionsdir/schemas. If @schema is not provided, it is taken from ++ * metadata['settings-schema']. ++ */ ++function getSettings(schema) { ++ let extension = ExtensionUtils.getCurrentExtension(); ++ ++ schema = schema || extension.metadata['settings-schema']; ++ ++ const GioSSS = Gio.SettingsSchemaSource; ++ ++ // 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 schemaDir = extension.dir.get_child('schemas'); ++ let schemaSource; ++ if (schemaDir.query_exists(null)) ++ schemaSource = GioSSS.new_from_directory(schemaDir.get_path(), ++ 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 ' ++ + extension.metadata.uuid + '. Please check your installation.'); ++ ++ return new Gio.Settings({ ++ settings_schema: schemaObj ++ }); ++} +\ No newline at end of file +diff --git a/extensions/dash-to-panel/extension.js b/extensions/dash-to-panel/extension.js +new file mode 100644 +index 00000000..7ab80f21 +--- /dev/null ++++ b/extensions/dash-to-panel/extension.js +@@ -0,0 +1,149 @@ ++/* ++ * Dash-To-Panel extension for Gnome 3 ++ * Copyright 2016 Jason DeRose (jderose9) and Charles Gagnon (charlesg99) ++ * ++ * 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 2 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 Main = imports.ui.main; ++const Meta = imports.gi.Meta; ++const Gio = imports.gi.Gio; ++const GLib = imports.gi.GLib; ++const Lang = imports.lang; ++const Shell = imports.gi.Shell; ++const St = imports.gi.St; ++const WindowManager = imports.ui.windowManager; ++const ExtensionUtils = imports.misc.extensionUtils; ++const Mainloop = imports.mainloop; ++const Signals = imports.signals; ++ ++const Me = ExtensionUtils.getCurrentExtension(); ++const Convenience = Me.imports.convenience; ++const PanelManager = Me.imports.panelManager; ++const Utils = Me.imports.utils; ++ ++const UBUNTU_DOCK_UUID = 'ubuntu-dock@ubuntu.com'; ++ ++let panelManager; ++let extensionChangedHandler; ++let disabledUbuntuDock; ++let extensionSystem = (Main.extensionManager || imports.ui.extensionSystem); ++ ++function init() { ++ this._realHasOverview = Main.sessionMode.hasOverview; ++ ++ Convenience.initTranslations(Utils.TRANSLATION_DOMAIN); ++ ++ //create an object that persists until gnome-shell is restarted, even if the extension is disabled ++ Me.persistentStorage = {}; ++} ++ ++function enable() { ++ // The Ubuntu Dock extension might get enabled after this extension ++ extensionChangedHandler = extensionSystem.connect('extension-state-changed', (data, extension) => { ++ if (extension.uuid === UBUNTU_DOCK_UUID && extension.state === 1) { ++ _enable(); ++ } ++ }); ++ ++ //create a global object that can emit signals and conveniently expose functionalities to other extensions ++ global.dashToPanel = {}; ++ Signals.addSignalMethods(global.dashToPanel); ++ ++ _enable(); ++} ++ ++function _enable() { ++ let ubuntuDock = Main.extensionManager ? ++ Main.extensionManager.lookup(UBUNTU_DOCK_UUID) : //gnome-shell >= 3.33.4 ++ ExtensionUtils.extensions[UBUNTU_DOCK_UUID]; ++ ++ if (ubuntuDock && ubuntuDock.stateObj && ubuntuDock.stateObj.dockManager) { ++ // Disable Ubuntu Dock ++ let extensionOrder = (extensionSystem.extensionOrder || extensionSystem._extensionOrder); ++ ++ Utils.getStageTheme().get_theme().unload_stylesheet(ubuntuDock.stylesheet); ++ ubuntuDock.stateObj.disable(); ++ disabledUbuntuDock = true; ++ ubuntuDock.state = 2; //ExtensionState.DISABLED ++ extensionOrder.splice(extensionOrder.indexOf(UBUNTU_DOCK_UUID), 1); ++ ++ //reset to prevent conflicts with the ubuntu-dock ++ if (panelManager) { ++ disable(true); ++ } ++ } ++ ++ if (panelManager) return; //already initialized ++ ++ Me.settings = Convenience.getSettings('org.gnome.shell.extensions.dash-to-panel'); ++ Me.desktopSettings = Convenience.getSettings('org.gnome.desktop.interface'); ++ ++ Main.layoutManager.startInOverview = !Me.settings.get_boolean('hide-overview-on-startup'); ++ ++ if (Me.settings.get_boolean('hide-overview-on-startup') && Main.layoutManager._startingUp) { ++ Main.sessionMode.hasOverview = false; ++ Main.layoutManager.connect('startup-complete', () => { ++ Main.sessionMode.hasOverview = this._realHasOverview ++ }); ++ } ++ ++ panelManager = new PanelManager.dtpPanelManager(); ++ ++ panelManager.enable(); ++ ++ Utils.removeKeybinding('open-application-menu'); ++ Utils.addKeybinding( ++ 'open-application-menu', ++ new Gio.Settings({ schema_id: WindowManager.SHELL_KEYBINDINGS_SCHEMA }), ++ Lang.bind(this, function() { ++ if(Me.settings.get_boolean('show-appmenu')) ++ Main.wm._toggleAppMenu(); ++ else ++ panelManager.primaryPanel.taskbar.popupFocusedAppSecondaryMenu(); ++ }), ++ Shell.ActionMode.NORMAL | Shell.ActionMode.POPUP ++ ); ++} ++ ++function disable(reset) { ++ panelManager.disable(); ++ Me.settings.run_dispose(); ++ Me.desktopSettings.run_dispose(); ++ ++ delete Me.settings; ++ panelManager = null; ++ ++ Utils.removeKeybinding('open-application-menu'); ++ Utils.addKeybinding( ++ 'open-application-menu', ++ new Gio.Settings({ schema_id: WindowManager.SHELL_KEYBINDINGS_SCHEMA }), ++ Lang.bind(Main.wm, Main.wm._toggleAppMenu), ++ Shell.ActionMode.NORMAL | Shell.ActionMode.POPUP ++ ); ++ ++ if (!reset) { ++ extensionSystem.disconnect(extensionChangedHandler); ++ delete global.dashToPanel; ++ ++ // Re-enable Ubuntu Dock if it was disabled by dash to panel ++ if (disabledUbuntuDock && Main.sessionMode.allowExtensions) { ++ (extensionSystem._callExtensionEnable || extensionSystem.enableExtension).call(extensionSystem, UBUNTU_DOCK_UUID); ++ } ++ } ++ ++ Main.sessionMode.hasOverview = this._realHasOverview; ++} +diff --git a/extensions/dash-to-panel/img/highlight_stacked_bg.svg b/extensions/dash-to-panel/img/highlight_stacked_bg.svg +new file mode 100644 +index 00000000..977146b1 +--- /dev/null ++++ b/extensions/dash-to-panel/img/highlight_stacked_bg.svg +@@ -0,0 +1,7 @@ ++ ++ ++ ++ ++ ++ ++ +diff --git a/extensions/dash-to-panel/img/highlight_stacked_bg_2.svg b/extensions/dash-to-panel/img/highlight_stacked_bg_2.svg +new file mode 100644 +index 00000000..47aa8025 +--- /dev/null ++++ b/extensions/dash-to-panel/img/highlight_stacked_bg_2.svg +@@ -0,0 +1,7 @@ ++ ++ ++ ++ ++ ++ ++ +diff --git a/extensions/dash-to-panel/img/highlight_stacked_bg_3.svg b/extensions/dash-to-panel/img/highlight_stacked_bg_3.svg +new file mode 100644 +index 00000000..80420fdb +--- /dev/null ++++ b/extensions/dash-to-panel/img/highlight_stacked_bg_3.svg +@@ -0,0 +1,7 @@ ++ ++ ++ ++ ++ ++ ++ +diff --git a/extensions/dash-to-panel/intellihide.js b/extensions/dash-to-panel/intellihide.js +new file mode 100644 +index 00000000..8fb1e976 +--- /dev/null ++++ b/extensions/dash-to-panel/intellihide.js +@@ -0,0 +1,401 @@ ++/* ++ * This file is part of the Dash-To-Panel extension for Gnome 3 ++ * ++ * 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 2 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 Lang = imports.lang; ++const Clutter = imports.gi.Clutter; ++const Meta = imports.gi.Meta; ++const Shell = imports.gi.Shell; ++const St = imports.gi.St; ++ ++var GrabHelper = imports.ui.grabHelper; ++const Layout = imports.ui.layout; ++const Main = imports.ui.main; ++const OverviewControls = imports.ui.overviewControls; ++const PointerWatcher = imports.ui.pointerWatcher; ++ ++const Me = imports.misc.extensionUtils.getCurrentExtension(); ++const Panel = Me.imports.panel; ++const Proximity = Me.imports.proximity; ++const Utils = Me.imports.utils; ++ ++//timeout intervals ++const CHECK_POINTER_MS = 200; ++const CHECK_GRAB_MS = 400; ++const POST_ANIMATE_MS = 50; ++const MIN_UPDATE_MS = 250; ++ ++//timeout names ++const T1 = 'checkGrabTimeout'; ++const T2 = 'limitUpdateTimeout'; ++const T3 = 'postAnimateTimeout'; ++const T4 = 'panelBoxClipTimeout'; ++ ++var SIDE_CONTROLS_ANIMATION_TIME = OverviewControls.SIDE_CONTROLS_ANIMATION_TIME / (OverviewControls.SIDE_CONTROLS_ANIMATION_TIME > 1 ? 1000 : 1); ++ ++var Hold = { ++ NONE: 0, ++ TEMPORARY: 1, ++ PERMANENT: 2 ++}; ++ ++var Intellihide = Utils.defineClass({ ++ Name: 'DashToPanel.Intellihide', ++ ++ _init: function(dtpPanel) { ++ this._dtpPanel = dtpPanel; ++ this._panelBox = dtpPanel.panelBox; ++ this._panelManager = dtpPanel.panelManager; ++ this._proximityManager = this._panelManager.proximityManager; ++ this._holdStatus = Hold.NONE; ++ ++ this._signalsHandler = new Utils.GlobalSignalsHandler(); ++ this._timeoutsHandler = new Utils.TimeoutsHandler(); ++ ++ this._intellihideChangedId = Me.settings.connect('changed::intellihide', () => this._changeEnabledStatus()); ++ this._intellihideOnlySecondaryChangedId = Me.settings.connect('changed::intellihide-only-secondary', () => this._changeEnabledStatus()); ++ ++ this.enabled = false; ++ this._changeEnabledStatus(); ++ }, ++ ++ enable: function() { ++ this.enabled = true; ++ this._monitor = this._dtpPanel.monitor; ++ this._animationDestination = -1; ++ this._pendingUpdate = false; ++ this._hoveredOut = false; ++ this._windowOverlap = false; ++ this._translationProp = 'translation_' + (this._dtpPanel.checkIfVertical() ? 'x' : 'y'); ++ ++ this._panelBox.translation_y = 0; ++ this._panelBox.translation_x = 0; ++ ++ this._setTrackPanel(true); ++ this._bindGeneralSignals(); ++ ++ if (Me.settings.get_boolean('intellihide-hide-from-windows')) { ++ this._proximityWatchId = this._proximityManager.createWatch( ++ this._panelBox.get_parent(), ++ Proximity.Mode[Me.settings.get_string('intellihide-behaviour')], ++ 0, 0, ++ overlap => { ++ this._windowOverlap = overlap; ++ this._queueUpdatePanelPosition(); ++ } ++ ); ++ } ++ ++ this._setRevealMechanism(); ++ this._queueUpdatePanelPosition(); ++ }, ++ ++ disable: function(reset) { ++ if (this._proximityWatchId) { ++ this._proximityManager.removeWatch(this._proximityWatchId); ++ } ++ ++ this._setTrackPanel(false); ++ ++ this._signalsHandler.destroy(); ++ this._timeoutsHandler.destroy(); ++ ++ this._removeRevealMechanism(); ++ ++ this._revealPanel(!reset); ++ ++ this.enabled = false; ++ }, ++ ++ destroy: function() { ++ Me.settings.disconnect(this._intellihideChangedId); ++ Me.settings.disconnect(this._intellihideOnlySecondaryChangedId); ++ ++ if (this.enabled) { ++ this.disable(); ++ } ++ }, ++ ++ toggle: function() { ++ this[this._holdStatus & Hold.PERMANENT ? 'release' : 'revealAndHold'](Hold.PERMANENT); ++ }, ++ ++ revealAndHold: function(holdStatus) { ++ if (this.enabled && !this._holdStatus) { ++ this._revealPanel(); ++ } ++ ++ this._holdStatus |= holdStatus; ++ }, ++ ++ release: function(holdStatus) { ++ this._holdStatus -= holdStatus; ++ ++ if (this.enabled && !this._holdStatus) { ++ this._queueUpdatePanelPosition(); ++ } ++ }, ++ ++ reset: function() { ++ this.disable(true); ++ this.enable(); ++ }, ++ ++ _changeEnabledStatus: function() { ++ let intellihide = Me.settings.get_boolean('intellihide'); ++ let onlySecondary = Me.settings.get_boolean('intellihide-only-secondary'); ++ let enabled = intellihide && !(this._dtpPanel.isPrimary && onlySecondary); ++ ++ if (this.enabled !== enabled) { ++ this[enabled ? 'enable' : 'disable'](); ++ } ++ }, ++ ++ _bindGeneralSignals: function() { ++ this._signalsHandler.add( ++ [ ++ this._dtpPanel.taskbar, ++ 'menu-closed', ++ () => this._panelBox.sync_hover() ++ ], ++ [ ++ Me.settings, ++ [ ++ 'changed::intellihide-use-pressure', ++ 'changed::intellihide-hide-from-windows', ++ 'changed::intellihide-behaviour', ++ 'changed::intellihide-pressure-threshold', ++ 'changed::intellihide-pressure-time' ++ ], ++ () => this.reset() ++ ], ++ [ ++ this._panelBox, ++ 'notify::hover', ++ () => this._onHoverChanged() ++ ], ++ [ ++ this._dtpPanel.taskbar.previewMenu, ++ 'open-state-changed', ++ () => this._queueUpdatePanelPosition() ++ ], ++ [ ++ Main.overview, ++ [ ++ 'showing', ++ 'hiding' ++ ], ++ () => this._queueUpdatePanelPosition() ++ ] ++ ); ++ }, ++ ++ _onHoverChanged: function() { ++ this._hoveredOut = !this._panelBox.hover; ++ this._queueUpdatePanelPosition(); ++ }, ++ ++ _setTrackPanel: function(enable) { ++ let trackedIndex = Main.layoutManager._findActor(this._panelBox); ++ let actorData = Main.layoutManager._trackedActors[trackedIndex] ++ ++ actorData.affectsStruts = !enable; ++ actorData.trackFullscreen = !enable; ++ ++ this._panelBox.track_hover = enable; ++ this._panelBox.reactive = enable; ++ this._panelBox.visible = enable ? enable : this._panelBox.visible; ++ ++ Main.layoutManager._queueUpdateRegions(); ++ }, ++ ++ _setRevealMechanism: function() { ++ if (global.display.supports_extended_barriers() && Me.settings.get_boolean('intellihide-use-pressure')) { ++ this._edgeBarrier = this._createBarrier(); ++ this._pressureBarrier = new Layout.PressureBarrier( ++ Me.settings.get_int('intellihide-pressure-threshold'), ++ Me.settings.get_int('intellihide-pressure-time'), ++ Shell.ActionMode.NORMAL ++ ); ++ this._pressureBarrier.addBarrier(this._edgeBarrier); ++ this._signalsHandler.add([this._pressureBarrier, 'trigger', () => this._queueUpdatePanelPosition(true)]); ++ } else { ++ this._pointerWatch = PointerWatcher.getPointerWatcher() ++ .addWatch(CHECK_POINTER_MS, (x, y) => this._checkMousePointer(x, y)); ++ } ++ }, ++ ++ _removeRevealMechanism: function() { ++ if (this._pointerWatch) { ++ PointerWatcher.getPointerWatcher()._removeWatch(this._pointerWatch); ++ } ++ ++ if (this._pressureBarrier) { ++ this._pressureBarrier.destroy(); ++ this._edgeBarrier.destroy(); ++ } ++ }, ++ ++ _createBarrier: function() { ++ let position = this._dtpPanel.geom.position; ++ let opts = { display: global.display }; ++ ++ if (this._dtpPanel.checkIfVertical()) { ++ opts.y1 = this._monitor.y; ++ opts.y2 = this._monitor.y + this._monitor.height; ++ opts.x1 = opts.x2 = this._monitor.x; ++ } else { ++ opts.x1 = this._monitor.x; ++ opts.x2 = this._monitor.x + this._monitor.width; ++ opts.y1 = opts.y2 = this._monitor.y; ++ } ++ ++ if (position == St.Side.TOP) { ++ opts.directions = Meta.BarrierDirection.POSITIVE_Y; ++ } else if (position == St.Side.BOTTOM) { ++ opts.y1 = opts.y2 = opts.y1 + this._monitor.height; ++ opts.directions = Meta.BarrierDirection.NEGATIVE_Y; ++ } else if (position == St.Side.LEFT) { ++ opts.directions = Meta.BarrierDirection.POSITIVE_X; ++ } else { ++ opts.x1 = opts.x2 = opts.x1 + this._monitor.width; ++ opts.directions = Meta.BarrierDirection.NEGATIVE_X; ++ } ++ ++ return new Meta.Barrier(opts); ++ }, ++ ++ _checkMousePointer: function(x, y) { ++ let position = this._dtpPanel.geom.position; ++ ++ if (!this._panelBox.hover && !Main.overview.visible && ++ ((position == St.Side.TOP && y <= this._monitor.y + 1) || ++ (position == St.Side.BOTTOM && y >= this._monitor.y + this._monitor.height - 1) || ++ (position == St.Side.LEFT && x <= this._monitor.x + 1) || ++ (position == St.Side.RIGHT && x >= this._monitor.x + this._monitor.width - 1)) && ++ ((x >= this._monitor.x && x < this._monitor.x + this._monitor.width) && ++ (y >= this._monitor.y && y < this._monitor.y + this._monitor.height))) { ++ this._queueUpdatePanelPosition(true); ++ } ++ }, ++ ++ _queueUpdatePanelPosition: function(fromRevealMechanism) { ++ if (!fromRevealMechanism && this._timeoutsHandler.getId(T2) && !Main.overview.visible) { ++ //unless this is a mouse interaction or entering/leaving the overview, limit the number ++ //of updates, but remember to update again when the limit timeout is reached ++ this._pendingUpdate = true; ++ } else if (!this._holdStatus) { ++ this._checkIfShouldBeVisible(fromRevealMechanism) ? this._revealPanel() : this._hidePanel(); ++ this._timeoutsHandler.add([T2, MIN_UPDATE_MS, () => this._endLimitUpdate()]); ++ } ++ }, ++ ++ _endLimitUpdate: function() { ++ if (this._pendingUpdate) { ++ this._pendingUpdate = false; ++ this._queueUpdatePanelPosition(); ++ } ++ }, ++ ++ _checkIfShouldBeVisible: function(fromRevealMechanism) { ++ if (Main.overview.visibleTarget || this._dtpPanel.taskbar.previewMenu.opened || ++ this._panelBox.get_hover() || this._checkIfGrab()) { ++ return true; ++ } ++ ++ if (fromRevealMechanism) { ++ let mouseBtnIsPressed = global.get_pointer()[2] & Clutter.ModifierType.BUTTON1_MASK; ++ ++ //the user is trying to reveal the panel ++ if (this._monitor.inFullscreen && !mouseBtnIsPressed) { ++ return Me.settings.get_boolean('intellihide-show-in-fullscreen'); ++ } ++ ++ return !mouseBtnIsPressed; ++ } ++ ++ if (!Me.settings.get_boolean('intellihide-hide-from-windows')) { ++ return this._panelBox.hover; ++ } ++ ++ return !this._windowOverlap; ++ }, ++ ++ _checkIfGrab: function() { ++ if (GrabHelper._grabHelperStack.some(gh => gh._owner == this._dtpPanel.panel.actor)) { ++ //there currently is a grab on a child of the panel, check again soon to catch its release ++ this._timeoutsHandler.add([T1, CHECK_GRAB_MS, () => this._queueUpdatePanelPosition()]); ++ ++ return true; ++ } ++ }, ++ ++ _revealPanel: function(immediate) { ++ if (!this._panelBox.visible) { ++ this._panelBox.visible = true; ++ this._dtpPanel.taskbar._shownInitially = false; ++ } ++ ++ this._animatePanel(0, immediate); ++ }, ++ ++ _hidePanel: function(immediate) { ++ let position = this._dtpPanel.geom.position; ++ let size = this._panelBox[position == St.Side.LEFT || position == St.Side.RIGHT ? 'width' : 'height']; ++ let coefficient = position == St.Side.TOP || position == St.Side.LEFT ? -1 : 1; ++ ++ this._animatePanel(size * coefficient, immediate); ++ }, ++ ++ _animatePanel: function(destination, immediate) { ++ let animating = Utils.isAnimating(this._panelBox, this._translationProp); ++ ++ if (!((animating && destination === this._animationDestination) || ++ (!animating && destination === this._panelBox[this._translationProp]))) { ++ //the panel isn't already at, or animating to the asked destination ++ if (animating) { ++ Utils.stopAnimations(this._panelBox); ++ } ++ ++ this._animationDestination = destination; ++ ++ if (immediate) { ++ this._panelBox[this._translationProp] = destination; ++ this._panelBox.visible = !destination; ++ } else { ++ let tweenOpts = { ++ //when entering/leaving the overview, use its animation time instead of the one from the settings ++ time: Main.overview.visible ? ++ SIDE_CONTROLS_ANIMATION_TIME : ++ Me.settings.get_int('intellihide-animation-time') * 0.001, ++ //only delay the animation when hiding the panel after the user hovered out ++ delay: destination != 0 && this._hoveredOut ? Me.settings.get_int('intellihide-close-delay') * 0.001 : 0, ++ transition: 'easeOutQuad', ++ onComplete: () => { ++ this._panelBox.visible = !destination; ++ Main.layoutManager._queueUpdateRegions(); ++ this._timeoutsHandler.add([T3, POST_ANIMATE_MS, () => this._queueUpdatePanelPosition()]); ++ } ++ }; ++ ++ tweenOpts[this._translationProp] = destination; ++ Utils.animate(this._panelBox, tweenOpts); ++ } ++ } ++ ++ this._hoveredOut = false; ++ }, ++}); +\ No newline at end of file +diff --git a/extensions/dash-to-panel/meson.build b/extensions/dash-to-panel/meson.build +new file mode 100644 +index 00000000..70680479 +--- /dev/null ++++ b/extensions/dash-to-panel/meson.build +@@ -0,0 +1,34 @@ ++extension_data += configure_file( ++ input: metadata_name + '.in', ++ output: metadata_name, ++ configuration: metadata_conf ++) ++ ++extension_sources += files( ++ 'appIcons.js', ++ 'convenience.js', ++ 'extension.js', ++ 'intellihide.js', ++ 'overview.js', ++ 'panel.js', ++ 'panelManager.js', ++ 'panelPositions.js', ++ 'panelSettings.js', ++ 'panelStyle.js', ++ 'prefs.js', ++ 'progress.js', ++ 'proximity.js', ++ 'Settings.ui', ++ 'taskbar.js', ++ 'transparency.js', ++ 'utils.js', ++ 'windowPreview.js' ++) ++extension_schemas += files(metadata_conf.get('gschemaname') + '.gschema.xml') ++ ++img_data = files( ++ 'img/highlight_stacked_bg_2.svg', ++ 'img/highlight_stacked_bg_3.svg', ++ 'img/highlight_stacked_bg.svg' ++) ++install_data(img_data, install_dir: join_paths(extensiondir, uuid, 'img')) +diff --git a/extensions/dash-to-panel/metadata.json.in b/extensions/dash-to-panel/metadata.json.in +new file mode 100644 +index 00000000..5c7eab09 +--- /dev/null ++++ b/extensions/dash-to-panel/metadata.json.in +@@ -0,0 +1,12 @@ ++{ ++"extension-id": "@extension_id@", ++"uuid": "@uuid@", ++"settings-schema": "@gschemaname@", ++"gettext-domain": "@gettext_domain@", ++"original-author": "charlesg99", ++"name": "Dash to Panel", ++"description": "An icon taskbar for the Gnome Shell. This extension moves the dash into the gnome main panel so that the application launchers and system tray are combined into a single panel, similar to that found in KDE Plasma and Windows 7+. A separate dock is no longer needed for easy access to running and favorited applications.\n\nFor a more traditional experience, you may also want to use Tweak Tool to enable Windows > Titlebar Buttons > Minimize & Maximize.\n\nFor the best support, please report any issues on Github. Dash-to-panel is developed and maintained by @jderose9 and @charlesg99.", ++"shell-version": [ "@shell_current@" ], ++"url": "https://github.com/jderose9/dash-to-panel", ++"version": 42 ++} +diff --git a/extensions/dash-to-panel/org.gnome.shell.extensions.dash-to-panel.gschema.xml b/extensions/dash-to-panel/org.gnome.shell.extensions.dash-to-panel.gschema.xml +new file mode 100644 +index 00000000..7e8ea3a9 +--- /dev/null ++++ b/extensions/dash-to-panel/org.gnome.shell.extensions.dash-to-panel.gschema.xml +@@ -0,0 +1,1278 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ 'BOTTOM' ++ Panel position (Deprecated) ++ Panel is shown on the Bottom or Top of the screen. ++ ++ ++ true ++ Sync element positions ++ Sync panel element positions on all monitors. ++ ++ ++ '{}' ++ Panel positions ++ Panel positions (JSON). ++ ++ ++ '{}' ++ Panel element positions ++ Panel element positions (JSON). ++ ++ ++ '{}' ++ Percentages of screen edge for panel to span ++ Length of the panels, in percent (JSON). ++ ++ ++ '{}' ++ Positions along screen edge ++ Where to show the panels if it is not the full length of the screen edge (JSON). ++ ++ ++ '{}' ++ Panel sizes ++ Sizes of panels, in pixels. ++ ++ ++ 48 ++ Panel size (Deprecated) ++ Set the size of the panel. ++ ++ ++ false ++ Override Show Desktop line color ++ Replace current Show Desktop button line color ++ ++ ++ "rgba(200,200,200,0.2)" ++ Custom Show Desktop line color ++ Custom Show Desktop button line color ++ ++ ++ 'BOTTOM' ++ Dot position ++ Running indicators are shown on the Bottom or Top of the screen. ++ ++ ++ 'METRO' ++ Style of the running indicator (focused) ++ Style of the running indicator for the icon for the currently focused application ++ ++ ++ 'METRO' ++ Style of the running indicator (unfocused) ++ Style of the running indicator for the icon for applications which are not currently focused ++ ++ ++ false ++ Running indicator dominant color ++ Whether to use the app icon's dominant color for .app-well-running-dot ++ ++ ++ false ++ Running indicator color override ++ Whether to override the theme background color for .app-well-running-dot ++ ++ ++ "#5294e2" ++ Color of running indicator (1 window) ++ Customize the color of the running indicator when one window is running for that application ++ ++ ++ "#5294e2" ++ Color of running indicator (2 windows) ++ Customize the color of the running indicator when two windows are running for that application ++ ++ ++ "#5294e2" ++ Color of running indicator (3 windows) ++ Customize the color of the running indicator when three windows are running for that application ++ ++ ++ "#5294e2" ++ Color of running indicator (4+ windows) ++ Customize the color of the running indicator when four or more windows are running for that application ++ ++ ++ false ++ Unfocused color is different than focused ++ Whether to apply a 2nd color scheme to the indicator when the app is not focused ++ ++ ++ "#5294e2" ++ Color of unfocused running indicator (1 window) ++ Customize the color of the unfocused running indicator when one window is running for that application ++ ++ ++ "#5294e2" ++ Color of unfocused running indicator (2 windows) ++ Customize the color of the unfocused running indicator when two windows are running for that application ++ ++ ++ "#5294e2" ++ Color of unfocused running indicator (3 windows) ++ Customize the color of the unfocused running indicator when three windows are running for that application ++ ++ ++ "#5294e2" ++ Color of unfocused running indicator (4+ windows) ++ Customize the color of the unfocused running indicator when four or more windows are running for that application ++ ++ ++ 3 ++ Running indicator height ++ Height of the running indicator line/diameter of window indicator dots ++ ++ ++ true ++ Highlight icon of focused application ++ Whether to highlight the background of the currently focused application's icon ++ ++ ++ false ++ Highlight icon dominant color ++ Base the active window highlight color on that application's icon ++ ++ ++ "#EEEEEE" ++ Color of highlight of focused application ++ Customize the color of the highlight of the focused application ++ ++ ++ 25 ++ Opacity of highlight of focused application ++ Customize the opacity of the highlight of the focused application ++ ++ ++ false ++ Keep dash ++ Whether to keep the stock gnome-shell dash while in overview ++ ++ ++ false ++ Keep top panel ++ Whether to keep the stock gnome-shell top panel ++ ++ ++ false ++ Panel menu buttons require click ++ Whether to activate the panel menu buttons on hover or on click ++ ++ ++ false ++ Force hot corner ++ Wheter to force having an Activities hot corner on the primary monitor ++ ++ ++ false ++ Lock the taskbar ++ Specifies if the user can modify the taskbar ++ ++ ++ false ++ Override theme background color ++ Replace current theme background color for the panel ++ ++ ++ "#000" ++ Custom background color ++ Custom background color for the panel ++ ++ ++ false ++ Custom background color ++ Replace current theme background color for the panel ++ ++ ++ false ++ Dynamic opacity ++ Enable dynamic opacity ++ ++ ++ 0.4 ++ Panel opacity ++ Custom opacity for the panel ++ ++ ++ 'ALL_WINDOWS' ++ Dynamic opacity behavior ++ Dictates which window type affects the panel opacity ++ ++ ++ 20 ++ Distance to change opacity ++ The distance a window needs to be from the panel to change opacity ++ ++ ++ 0.8 ++ Modified panel opacity ++ Modified opacity for the panel when a window is near ++ ++ ++ 300 ++ Opacity change duration ++ The duration of the animation when the opacity changes ++ ++ ++ false ++ Custom gradient ++ Replace current theme gradient for the panel ++ ++ ++ "#000" ++ Custom gradient top color ++ Custom gradient top color for the panel ++ ++ ++ 0 ++ Custom gradient top opacity ++ Custom gradient top opacity for the panel ++ ++ ++ "#000" ++ Custom gradient bottom color ++ Custom gradient bottom color for the panel ++ ++ ++ 0.2 ++ Custom gradient bottom opacity ++ Custom gradient bottom opacity for the panel ++ ++ ++ false ++ Intellihide ++ Whether to intelligently hide the panel ++ ++ ++ false ++ Only hide from windows ++ Dictates if the dash should only hide when in conflict with windows ++ ++ ++ 'FOCUSED_WINDOWS' ++ Intellihide behaviour ++ Dictates how to intelligently hide the panel ++ ++ ++ false ++ Intellihide pressure ++ To reveal the panel, pressure needs to be applied to the edege of the screen ++ ++ ++ 100 ++ Intellihide pressure threshold ++ The pressure needed to reveal the panel ++ ++ ++ 1000 ++ Intellihide pressure time ++ The numer of milliseconds that the pressure needs to be applied to reveal the panel ++ ++ ++ false ++ Intellihide pressure ++ Allow the panel to be revealed while an application is in fullscreen mode ++ ++ ++ false ++ Intellihide only secondary ++ Whether to only hide secondary panels ++ ++ ++ 200 ++ Intellihide animation time ++ The animation time (ms) to hide and reveal the panel ++ ++ ++ 400 ++ Intellihide close delay ++ The delay (ms) before hiding the panel ++ ++ ++ "<Super>i" ++ Keybinding toggle intellihide ++ Keybinding to reveal the panel while in intellihide mode ++ ++ ++ i']]]> ++ Keybinding toggle intellihide ++ Keybinding to reveal the panel while in intellihide mode ++ ++ ++ 2000 ++ Intellihide enable start delay ++ The delay before enabling intellihide on start ++ ++ ++ "" ++ Custom Show Applications icon ++ Customize the Show Applications icon ++ ++ ++ 8 ++ Show Applications icon side padding ++ Customize the Show Applications icon side padding ++ ++ ++ true ++ Override escape key ++ Override the escape key to return to the desktop when entering the overview using the Show Applications button ++ ++ ++ [] ++ Show Apps button context menu commands ++ Commands to add to the Show Apps button right click menu ++ ++ ++ [] ++ Show Apps button context menu titles ++ Titles for commands added to Show Apps button right click menu ++ ++ ++ [] ++ Panel context menu commands ++ Commands to add to the panel right click menu ++ ++ ++ [] ++ Panel context menu titles ++ Titles for commands added to panel right click menu ++ ++ ++ false ++ Show activities button ++ Show activities button on the left hand side of the taskbar ++ ++ ++ 8 ++ Width of show Desktop button ++ Customize the width of the show Desktop button ++ ++ ++ false ++ Show desktop on hover ++ Show the desktop on mouse hover ++ ++ ++ 1000 ++ Delay show desktop ++ Delay before showing the desktop ++ ++ ++ 300 ++ Show desktop animation time ++ Window fade animation time when showing the destop ++ ++ ++ false ++ Show appMenu button ++ Show appMenu on the right hand side of the panel ++ ++ ++ true ++ Show window preview ++ Show preview of running window on hover of app icon ++ ++ ++ true ++ Show tooltip ++ Show tooltip on hover of app icon ++ ++ ++ true ++ Show running apps ++ Show or hide running application icons in the dash ++ ++ ++ true ++ Show favorites apps ++ Show or hide favorite application icons in the dash ++ ++ ++ 400 ++ Icon enter display time ++ Amount of time after entering icon to wait before displaying window preview if icon is not clicked or mouse has not left. ++ ++ ++ true ++ Enable peek mode ++ Peek a window upon hover for some time ++ ++ ++ true ++ Display title in preview ++ Display window title in preview ++ ++ ++ false ++ Window previews manual styling ++ This defines if the default window previews styling should be applied ++ ++ ++ 'TOP' ++ Title position ++ Position of the window title, close button and icon in preview. ++ ++ ++ "#dddddd" ++ Window previews title font color ++ This defines the window preview titles font color. ++ ++ ++ 14 ++ Window previews title font size ++ This defines the window preview titles font size. ++ ++ ++ false ++ Window previews use custom icon size ++ Window previews use custom application icon size. ++ ++ ++ 16 ++ Window previews custom icon size ++ Window previews custom application icon size. ++ ++ ++ 260 ++ Window previews animation time ++ This defines the window previews animation time. ++ ++ ++ 'inherit' ++ Font weight of window preview titles ++ This defines the font weight of window preview titles. Supported values: inherit (from theme), normal, lighter, bold and bolder. ++ ++ ++ 240 ++ Window previews size ++ Preferred window previews size ++ ++ ++ false ++ Fixed aspect ratio X ++ This defines if the window previews use a fixed aspect ratio X. ++ ++ ++ true ++ Fixed aspect ratio Y ++ This defines if the window previews use a fixed aspect ratio Y. ++ ++ ++ 8 ++ Window previews padding ++ The padding of the window previews ++ ++ ++ 16 ++ Aspect ratio X ++ The window previews respected aspect ratio X. ++ ++ ++ 9 ++ Aspect ratio Y ++ The window previews respected aspect ratio Y. ++ ++ ++ false ++ Immediate hide on icon click ++ The window previews immediately hide when an application icon is clicked. ++ ++ ++ false ++ Provide workspace isolation ++ Dash shows only windows from the current workspace ++ ++ ++ false ++ Close overview by clicking in empty space ++ Close overview or app grid by clicking in empty space ++ ++ ++ false ++ Hide overview on startup ++ Hide overview on startup, which would be shown by default at gnome startup. ++ ++ ++ true ++ Group applications ++ Dash groups the application instances under the same icon ++ ++ ++ 14 ++ Application title font size ++ When the applications are ungrouped, this defines the application titles font size. ++ ++ ++ 'inherit' ++ Font weight of application titles ++ When the applications are ungrouped, this defines font weight of application titles. Supported values: inherit (from theme), normal, lighter, bold and bolder. ++ ++ ++ "#dddddd" ++ Application title font color ++ When the applications are ungrouped, this defines the application titles font color. ++ ++ ++ "#dddddd" ++ Minimized application title font color ++ When the applications are ungrouped, this defines the titles font color for minimized applications. ++ ++ ++ 160 ++ Application title max width ++ When the applications are ungrouped, this defines the application titles maximum width. ++ ++ ++ true ++ Use a fixed width for the application titles ++ The application titles all have the same width, even if their texts are shorter than the maximum width. The maximum width value is used as the fixed width. ++ ++ ++ true ++ Display running indicators on unfocused applications ++ When the applications are ungrouped, this defines if running applications should display an indicator. ++ ++ ++ false ++ Use favorite icons as application launchers ++ When the applications are ungrouped, this defines if running applications stay separate from the favorite icons. ++ ++ ++ 0 ++ Primary monitor index ++ Specifies the index of the primary monitor. ++ ++ ++ true ++ Display panels on all monitors ++ Specifies if a panel is shown on every monitors ++ ++ ++ [] ++ Available monitors ++ Available gnome-shell (Mutter) monitors, internal use ++ ++ ++ false ++ Provide monitor isolation ++ Dash shows only windows from the current monitor ++ ++ ++ true ++ Display the favorites on all monitors ++ Specifies if every panel should display the favorite applications. If false, the favorite appplications are only displayed on the primary monitor. ++ ++ ++ true ++ Customize click behaviour ++ Customize action on various mouse events ++ ++ ++ true ++ Minimize on shift+click ++ ++ ++ true ++ Activate only one window ++ ++ ++ 'CYCLE-MIN' ++ Action when clicking on a running app ++ Set the action that is executed when clicking on the icon of a running application ++ ++ ++ 'MINIMIZE' ++ Action when shift+clicking on a running app ++ Set the action that is executed when shift+clicking on the icon of a running application ++ ++ ++ 'LAUNCH' ++ Action when clicking on a running app ++ Set the action that is executed when middle-clicking on the icon of a running application ++ ++ ++ 'LAUNCH' ++ Action when clicking on a running app ++ Set the action that is executed when shift+middle-clicking on the icon of a running application ++ ++ ++ 'SWITCH_WORKSPACE' ++ Action when scrolling over the panel ++ Set the action that is executed when scrolling over the panel ++ ++ ++ 0 ++ Delay between panel mouse scroll events ++ Set the minimum delay between panel mouse scroll events ++ ++ ++ true ++ Show the workspace switch head-up when workspace is changed by scrolling on the panel ++ ++ ++ 'CYCLE_WINDOWS' ++ Action when scrolling over a running app ++ Set the action that is executed when scrolling over a running application ++ ++ ++ 0 ++ Delay between icon mouse scroll events ++ Set the minimum delay between icon mouse scroll events ++ ++ ++ 100 ++ Icon leave preview timeout ++ Amount of time to leave preview windows open when the mouse has left the application's icon. ++ ++ ++ 500 ++ Enter window peeking mode timeout ++ Amount of time of inactivity to enter the window peeking mode when the mouse has entered a window preview. ++ ++ ++ 40 ++ Window peeking mode opacity ++ All windows except for the peeked one have their opacity set to the same value. ++ ++ ++ true ++ Middle click preview to close window ++ Middle click on the window preview to close that window ++ ++ ++ true ++ Window previews use custom opacity ++ Window previews background use a different opacity from the panel ++ ++ ++ 80 ++ Window previews background opacity ++ Window previews use this custom background opacity. ++ ++ ++ 0 ++ Tray font size ++ Set the size of the tray font. (0 for default) ++ ++ ++ 0 ++ Leftbox font size ++ Set the size of the leftBox font. (0 for default) ++ ++ ++ 8 ++ App icon margin ++ Set the margin for application icons in the embedded dash. ++ ++ ++ 4 ++ App icon padding ++ Set the padding for application icons in the embedded dash. ++ ++ ++ -1 ++ Tray item padding ++ Set the size of the tray padding. (-1 for default) ++ ++ ++ -1 ++ Leftbox item padding ++ Set the size of the leftBox padding. (-1 for default) ++ ++ ++ -1 ++ Status icon padding ++ Set the size of the aggregate (status) menu icon padding. (-1 for default) ++ ++ ++ true ++ Animate running indicator when open/closing/switching applications ++ ++ ++ true ++ Animate when new window launched ++ ++ ++ false ++ Animate app icon on hover ++ ++ ++ 'SIMPLE' ++ App icon hover animation type ++ ++ ++ {'RIPPLE':2,'PLANK':1} ++ App icon hover animation curve convexity (1 is linear, more is convex, less is concave) ++ ++ ++ {'SIMPLE':160,'RIPPLE':130,'PLANK':100} ++ App icon hover animation duration in milliseconds ++ ++ ++ {'RIPPLE':4,'PLANK':4} ++ App icon hover animation extent (maximum number of animated icons) ++ ++ ++ {'SIMPLE':0,'RIPPLE':10,'PLANK':0} ++ App icon hover animation rotation in degrees ++ ++ ++ {'SIMPLE':0.30,'RIPPLE':0.40,'PLANK':0} ++ App icon hover animation travel translation in relation to the app icon size ++ ++ ++ {'SIMPLE':1,'RIPPLE':1.25,'PLANK':2} ++ App icon hover animation zoom scale in relation to the app icon size ++ ++ ++ true ++ Integrate items from the gnome appmenu into the right click menu ++ ++ ++ false ++ Display Show Details to open Gnome Software from right click menu ++ ++ ++ "<Super>q" ++ Keybinding to show the dock and the number overlay. ++ Behavior depends on hotkeys-show-dock and hotkeys-overlay. ++ ++ ++ q']]]> ++ Keybinding to show the dock and the number overlay. ++ Behavior depends on hotkeys-show-dock and hotkeys-overlay. ++ ++ ++ 2000 ++ Timeout to hide the dock, in seconds ++ Sets the time duration before the dock is hidden again. ++ ++ ++ 750 ++ Timeout to hide the dock, in seconds ++ Sets the time duration before the dock is hidden again. ++ ++ ++ 'TEMPORARILY' ++ Transitivity of the number overlay ++ You can choose between NEVER, TEMPORARILY and ALWAYS. ++ ++ ++ false ++ Super Hot-Keys ++ Launch and switch between dash items using Super+(0-9) ++ ++ ++ 'Super' ++ Prefix to use for hotkeys ++ You can choose between Super or SuperAlt as the prefix for hotkeys. ++ ++ ++ false ++ Show window previews ++ When multiple instances of the application are available, show their window previews ++ ++ ++ 'BOTH' ++ Hotkeys number keys ++ Which number keys are used for the hotkeys ++ ++ ++ 1']]]> ++ Keybinding to launch 1st dash app ++ ++ Keybinding to launch 1st app. ++ ++ ++ ++ 2']]]> ++ Keybinding to launch 2nd dash app ++ ++ Keybinding to launch 2nd app. ++ ++ ++ ++ 3']]]> ++ Keybinding to launch 3rd dash app ++ ++ Keybinding to launch 3rd app. ++ ++ ++ ++ 4']]]> ++ Keybinding to launch 4th dash app ++ ++ Keybinding to launch 4th app. ++ ++ ++ ++ 5']]]> ++ Keybinding to launch 5th dash app ++ ++ Keybinding to launch 5th app. ++ ++ ++ ++ 6']]]> ++ Keybinding to launch 6th dash app ++ ++ Keybinding to launch 6th app. ++ ++ ++ ++ 7']]]> ++ Keybinding to launch 7th dash app ++ ++ Keybinding to launch 7th app. ++ ++ ++ ++ 8']]]> ++ Keybinding to launch 8th dash app ++ ++ Keybinding to launch 8th app. ++ ++ ++ ++ 9']]]> ++ Keybinding to launch 9th dash app ++ ++ Keybinding to launch 9th app. ++ ++ ++ ++ 0']]]> ++ Keybinding to launch 10th dash app ++ ++ Keybinding to launch 10th app. ++ ++ ++ ++ 1']]]> ++ Keybinding to trigger 1st dash app with shift behavior ++ ++ Keybinding to trigger 1st app with shift behavior. ++ ++ ++ ++ 2']]]> ++ Keybinding to trigger 2nd dash app with shift behavior ++ ++ Keybinding to trigger 2nd app with shift behavior. ++ ++ ++ ++ 3']]]> ++ Keybinding to trigger 3rd dash app with shift behavior ++ ++ Keybinding to trigger 3rd app with shift behavior. ++ ++ ++ ++ 4']]]> ++ Keybinding to trigger 4th dash app with shift behavior ++ ++ Keybinding to trigger 4th app with shift behavior. ++ ++ ++ ++ 5']]]> ++ Keybinding to trigger 5th dash app with shift behavior ++ ++ Keybinding to trigger 5th app with shift behavior. ++ ++ ++ ++ 6']]]> ++ Keybinding to trigger 6th dash app with shift behavior ++ ++ Keybinding to trigger 6th app with shift behavior. ++ ++ ++ ++ 7']]]> ++ Keybinding to trigger 7th dash app with shift behavior ++ ++ Keybinding to trigger 7th app with shift behavior. ++ ++ ++ ++ 8']]]> ++ Keybinding to trigger 8th dash app with shift behavior ++ ++ Keybinding to trigger 8th app with shift behavior. ++ ++ ++ ++ 9']]]> ++ Keybinding to trigger 9th dash app with shift behavior ++ ++ Keybinding to trigger 9th app with shift behavior. ++ ++ ++ ++ 0']]]> ++ Keybinding to trigger 10th dash app with shift behavior ++ ++ Keybinding to trigger 10th app with shift behavior. ++ ++ ++ ++ 1']]]> ++ Keybinding to trigger 1st dash app ++ ++ Keybinding to either show or launch the 1st application in the dash. ++ ++ ++ ++ 2']]]> ++ Keybinding to trigger 2nd dash app ++ ++ Keybinding to either show or launch the 2nd application in the dash. ++ ++ ++ ++ 3']]]> ++ Keybinding to trigger 3rd dash app ++ ++ Keybinding to either show or launch the 3rd application in the dash. ++ ++ ++ ++ 4']]]> ++ Keybinding to trigger 4th dash app ++ ++ Keybinding to either show or launch the 4th application in the dash. ++ ++ ++ ++ 5']]]> ++ Keybinding to trigger 5th dash app ++ ++ Keybinding to either show or launch the 5th application in the dash. ++ ++ ++ ++ 6']]]> ++ Keybinding to trigger 6th dash app ++ ++ Keybinding to either show or launch the 6th application in the dash. ++ ++ ++ ++ 7']]]> ++ Keybinding to trigger 7th dash app ++ ++ Keybinding to either show or launch the 7th application in the dash. ++ ++ ++ ++ 8']]]> ++ Keybinding to trigger 8th dash app ++ ++ Keybinding to either show or launch the 8th application in the dash. ++ ++ ++ ++ 9']]]> ++ Keybinding to trigger 9th dash app ++ ++ Keybinding to either show or launch the 9th application in the dash. ++ ++ ++ ++ 0']]]> ++ Keybinding to trigger 10th dash app ++ ++ Keybinding to either show or launch the 10th application in the dash. ++ ++ ++ ++ KP_1']]]> ++ Keybinding to launch 1st dash app ++ ++ Keybinding to launch 1st app. ++ ++ ++ ++ KP_2']]]> ++ Keybinding to launch 2nd dash app ++ ++ Keybinding to launch 2nd app. ++ ++ ++ ++ KP_3']]]> ++ Keybinding to launch 3rd dash app ++ ++ Keybinding to launch 3rd app. ++ ++ ++ ++ KP_4']]]> ++ Keybinding to launch 4th dash app ++ ++ Keybinding to launch 4th app. ++ ++ ++ ++ KP_5']]]> ++ Keybinding to launch 5th dash app ++ ++ Keybinding to launch 5th app. ++ ++ ++ ++ KP_6']]]> ++ Keybinding to launch 6th dash app ++ ++ Keybinding to launch 6th app. ++ ++ ++ ++ KP_7']]]> ++ Keybinding to launch 7th dash app ++ ++ Keybinding to launch 7th app. ++ ++ ++ ++ KP_8']]]> ++ Keybinding to launch 8th dash app ++ ++ Keybinding to launch 8th app. ++ ++ ++ ++ KP_9']]]> ++ Keybinding to launch 9th dash app ++ ++ Keybinding to launch 9th app. ++ ++ ++ ++ KP_0']]]> ++ Keybinding to launch 10th dash app ++ ++ Keybinding to launch 10th app. ++ ++ ++ ++ KP_1']]]> ++ Keybinding to trigger 1st dash app with shift behavior ++ ++ Keybinding to trigger 1st app with shift behavior. ++ ++ ++ ++ KP_2']]]> ++ Keybinding to trigger 2nd dash app with shift behavior ++ ++ Keybinding to trigger 2nd app with shift behavior. ++ ++ ++ ++ KP_3']]]> ++ Keybinding to trigger 3rd dash app with shift behavior ++ ++ Keybinding to trigger 3rd app with shift behavior. ++ ++ ++ ++ KP_4']]]> ++ Keybinding to trigger 4th dash app with shift behavior ++ ++ Keybinding to trigger 4th app with shift behavior. ++ ++ ++ ++ KP_5']]]> ++ Keybinding to trigger 5th dash app with shift behavior ++ ++ Keybinding to trigger 5th app with shift behavior. ++ ++ ++ ++ KP_6']]]> ++ Keybinding to trigger 6th dash app with shift behavior ++ ++ Keybinding to trigger 6th app with shift behavior. ++ ++ ++ ++ KP_7']]]> ++ Keybinding to trigger 7th dash app with shift behavior ++ ++ Keybinding to trigger 7th app with shift behavior. ++ ++ ++ ++ KP_8']]]> ++ Keybinding to trigger 8th dash app with shift behavior ++ ++ Keybinding to trigger 8th app with shift behavior. ++ ++ ++ ++ KP_9']]]> ++ Keybinding to trigger 9th dash app with shift behavior ++ ++ Keybinding to trigger 9th app with shift behavior. ++ ++ ++ ++ KP_0']]]> ++ Keybinding to trigger 10th dash app with shift behavior ++ ++ Keybinding to trigger 10th app with shift behavior. ++ ++ ++ ++ KP_1']]]> ++ Keybinding to trigger 1st dash app ++ ++ Keybinding to either show or launch the 1st application in the dash. ++ ++ ++ ++ KP_2']]]> ++ Keybinding to trigger 2nd dash app ++ ++ Keybinding to either show or launch the 2nd application in the dash. ++ ++ ++ ++ KP_3']]]> ++ Keybinding to trigger 3rd dash app ++ ++ Keybinding to either show or launch the 3rd application in the dash. ++ ++ ++ ++ KP_4']]]> ++ Keybinding to trigger 4th dash app ++ ++ Keybinding to either show or launch the 4th application in the dash. ++ ++ ++ ++ KP_5']]]> ++ Keybinding to trigger 5th dash app ++ ++ Keybinding to either show or launch the 5th application in the dash. ++ ++ ++ ++ KP_6']]]> ++ Keybinding to trigger 6th dash app ++ ++ Keybinding to either show or launch the 6th application in the dash. ++ ++ ++ ++ KP_7']]]> ++ Keybinding to trigger 7th dash app ++ ++ Keybinding to either show or launch the 7th application in the dash. ++ ++ ++ ++ KP_8']]]> ++ Keybinding to trigger 8th dash app ++ ++ Keybinding to either show or launch the 8th application in the dash. ++ ++ ++ ++ KP_9']]]> ++ Keybinding to trigger 9th dash app ++ ++ Keybinding to either show or launch the 9th application in the dash. ++ ++ ++ ++ KP_0']]]> ++ Keybinding to trigger 10th dash app ++ ++ Keybinding to either show or launch the 10th application in the dash. ++ ++ ++ ++ true ++ Show progress bar on app icon ++ Whether to show progress bar overlay on app icon, for supported applications. ++ ++ ++ true ++ Show badge count on app icon ++ Whether to show badge count overlay on app icon, for supported applications. ++ ++ ++ +diff --git a/extensions/dash-to-panel/overview.js b/extensions/dash-to-panel/overview.js +new file mode 100644 +index 00000000..57600a5c +--- /dev/null ++++ b/extensions/dash-to-panel/overview.js +@@ -0,0 +1,708 @@ ++/* ++ * This file is part of the Dash-To-Panel extension for Gnome 3 ++ * ++ * 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 2 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 . ++ * ++ * Credits: ++ * This file is based on code from the Dash to Dock extension by micheleg ++ * ++ * Some code was also adapted from the upstream Gnome Shell source code. ++ */ ++ ++const Me = imports.misc.extensionUtils.getCurrentExtension(); ++const Intellihide = Me.imports.intellihide; ++const Utils = Me.imports.utils; ++ ++const Clutter = imports.gi.Clutter; ++const Config = imports.misc.config; ++const Lang = imports.lang; ++const Main = imports.ui.main; ++const Shell = imports.gi.Shell; ++const Gtk = imports.gi.Gtk; ++const Gdk = imports.gi.Gdk; ++const Gio = imports.gi.Gio; ++const Mainloop = imports.mainloop; ++const IconGrid = imports.ui.iconGrid; ++const OverviewControls = imports.ui.overviewControls; ++const Workspace = imports.ui.workspace; ++const St = imports.gi.St; ++const WorkspaceThumbnail = imports.ui.workspaceThumbnail; ++ ++const Meta = imports.gi.Meta; ++ ++const GS_HOTKEYS_KEY = 'switch-to-application-'; ++const BACKGROUND_MARGIN = 12; ++const SMALL_WORKSPACE_RATIO = 0.15; ++const DASH_MAX_HEIGHT_RATIO = 0.15; ++ ++ ++//timeout names ++const T1 = 'swipeEndTimeout'; ++ ++var dtpOverview = Utils.defineClass({ ++ Name: 'DashToPanel.Overview', ++ ++ _init: function() { ++ this._numHotkeys = 10; ++ this._timeoutsHandler = new Utils.TimeoutsHandler(); ++ }, ++ ++ enable : function(panel) { ++ this._panel = panel; ++ this.taskbar = panel.taskbar; ++ ++ this._injectionsHandler = new Utils.InjectionsHandler(); ++ this._signalsHandler = new Utils.GlobalSignalsHandler(); ++ ++ this._optionalWorkspaceIsolation(); ++ this._optionalHotKeys(); ++ this._optionalNumberOverlay(); ++ this._optionalClickToExit(); ++ this._toggleDash(); ++ this._hookupAllocation(); ++ ++ this._signalsHandler.add([ ++ Me.settings, ++ 'changed::stockgs-keep-dash', ++ () => this._toggleDash() ++ ]); ++ ++ }, ++ ++ disable: function () { ++ Utils.hookVfunc(Workspace.WorkspaceBackground.prototype, 'allocate', Workspace.WorkspaceBackground.prototype.vfunc_allocate); ++ Utils.hookVfunc(OverviewControls.ControlsManagerLayout.prototype, 'allocate', OverviewControls.ControlsManagerLayout.prototype.vfunc_allocate); ++ OverviewControls.ControlsManagerLayout.prototype._computeWorkspacesBoxForState = this._oldComputeWorkspacesBoxForState; ++ ++ this._signalsHandler.destroy(); ++ this._injectionsHandler.destroy(); ++ ++ this._toggleDash(true); ++ ++ // Remove key bindings ++ this._disableHotKeys(); ++ this._disableExtraShortcut(); ++ this._disableClickToExit(); ++ }, ++ ++ _toggleDash: function(visible) { ++ // To hide the dash, set its width to 1, so it's almost not taken into account by code ++ // calculaing the reserved space in the overview. The reason to keep it at 1 is ++ // to allow its visibility change to trigger an allocaion of the appGrid which ++ // in turn is triggergin the appsIcon spring animation, required when no other ++ // actors has this effect, i.e in horizontal mode and without the workspaceThumnails ++ // 1 static workspace only) ++ ++ if (visible === undefined) { ++ visible = Me.settings.get_boolean('stockgs-keep-dash'); ++ } ++ ++ let visibilityFunc = visible ? 'show' : 'hide'; ++ let width = visible ? -1 : 1; ++ let overviewControls = Main.overview._overview._controls || Main.overview._controls; ++ ++ overviewControls.dash.actor[visibilityFunc](); ++ overviewControls.dash.actor.set_width(width); ++ ++ // This force the recalculation of the icon size ++ overviewControls.dash._maxHeight = -1; ++ }, ++ ++ /** ++ * Isolate overview to open new windows for inactive apps ++ */ ++ _optionalWorkspaceIsolation: function() { ++ let label = 'optionalWorkspaceIsolation'; ++ ++ this._signalsHandler.add([ ++ Me.settings, ++ 'changed::isolate-workspaces', ++ Lang.bind(this, function() { ++ this._panel.panelManager.allPanels.forEach(p => p.taskbar.resetAppIcons()); ++ ++ if (Me.settings.get_boolean('isolate-workspaces')) ++ Lang.bind(this, enable)(); ++ else ++ Lang.bind(this, disable)(); ++ }) ++ ]); ++ ++ if (Me.settings.get_boolean('isolate-workspaces')) ++ Lang.bind(this, enable)(); ++ ++ function enable() { ++ this._injectionsHandler.removeWithLabel(label); ++ ++ this._injectionsHandler.addWithLabel(label, [ ++ Shell.App.prototype, ++ 'activate', ++ IsolatedOverview ++ ]); ++ ++ this._signalsHandler.removeWithLabel(label); ++ ++ this._signalsHandler.addWithLabel(label, [ ++ global.window_manager, ++ 'switch-workspace', ++ () => this._panel.panelManager.allPanels.forEach(p => p.taskbar.handleIsolatedWorkspaceSwitch()) ++ ]); ++ } ++ ++ function disable() { ++ this._signalsHandler.removeWithLabel(label); ++ this._injectionsHandler.removeWithLabel(label); ++ } ++ ++ function IsolatedOverview() { ++ // These lines take care of Nautilus for icons on Desktop ++ let activeWorkspace = Utils.DisplayWrapper.getWorkspaceManager().get_active_workspace(); ++ let windows = this.get_windows().filter(w => w.get_workspace().index() == activeWorkspace.index()); ++ ++ if (windows.length > 0 && ++ (!(windows.length == 1 && windows[0].skip_taskbar) || ++ this.is_on_workspace(activeWorkspace))) ++ return Main.activateWindow(windows[0]); ++ ++ return this.open_new_window(-1); ++ } ++ }, ++ ++ // Hotkeys ++ _activateApp: function(appIndex) { ++ let seenApps = {}; ++ let apps = []; ++ ++ this.taskbar._getAppIcons().forEach(function(appIcon) { ++ if (!seenApps[appIcon.app]) { ++ apps.push(appIcon); ++ } ++ ++ seenApps[appIcon.app] = (seenApps[appIcon.app] || 0) + 1; ++ }); ++ ++ this._showOverlay(); ++ ++ if (appIndex < apps.length) { ++ let appIcon = apps[appIndex]; ++ let seenAppCount = seenApps[appIcon.app]; ++ let windowCount = appIcon.window || appIcon._hotkeysCycle ? seenAppCount : appIcon._nWindows; ++ ++ if (Me.settings.get_boolean('shortcut-previews') && windowCount > 1 && ++ !(Clutter.get_current_event().get_state() & ~(Clutter.ModifierType.MOD1_MASK | Clutter.ModifierType.MOD4_MASK))) { //ignore the alt (MOD1_MASK) and super key (MOD4_MASK) ++ if (this._hotkeyPreviewCycleInfo && this._hotkeyPreviewCycleInfo.appIcon != appIcon) { ++ this._endHotkeyPreviewCycle(); ++ } ++ ++ if (!this._hotkeyPreviewCycleInfo) { ++ this._hotkeyPreviewCycleInfo = { ++ appIcon: appIcon, ++ currentWindow: appIcon.window, ++ keyFocusOutId: appIcon.actor.connect('key-focus-out', () => appIcon.actor.grab_key_focus()), ++ capturedEventId: global.stage.connect('captured-event', (actor, e) => { ++ if (e.type() == Clutter.EventType.KEY_RELEASE && e.get_key_symbol() == (Clutter.KEY_Super_L || Clutter.Super_L)) { ++ this._endHotkeyPreviewCycle(true); ++ } ++ ++ return Clutter.EVENT_PROPAGATE; ++ }) ++ }; ++ ++ appIcon._hotkeysCycle = appIcon.window; ++ appIcon.window = null; ++ appIcon._previewMenu.open(appIcon); ++ appIcon.actor.grab_key_focus(); ++ } ++ ++ appIcon._previewMenu.focusNext(); ++ } else { ++ // Activate with button = 1, i.e. same as left click ++ let button = 1; ++ this._endHotkeyPreviewCycle(); ++ appIcon.activate(button, true); ++ } ++ } ++ }, ++ ++ _endHotkeyPreviewCycle: function(focusWindow) { ++ if (this._hotkeyPreviewCycleInfo) { ++ global.stage.disconnect(this._hotkeyPreviewCycleInfo.capturedEventId); ++ this._hotkeyPreviewCycleInfo.appIcon.actor.disconnect(this._hotkeyPreviewCycleInfo.keyFocusOutId); ++ ++ if (focusWindow) { ++ this._hotkeyPreviewCycleInfo.appIcon._previewMenu.activateFocused(); ++ } ++ ++ this._hotkeyPreviewCycleInfo.appIcon.window = this._hotkeyPreviewCycleInfo.currentWindow; ++ delete this._hotkeyPreviewCycleInfo.appIcon._hotkeysCycle; ++ this._hotkeyPreviewCycleInfo = 0; ++ } ++ }, ++ ++ _optionalHotKeys: function() { ++ this._hotKeysEnabled = false; ++ if (Me.settings.get_boolean('hot-keys')) ++ this._enableHotKeys(); ++ ++ this._signalsHandler.add([ ++ Me.settings, ++ 'changed::hot-keys', ++ Lang.bind(this, function() { ++ if (Me.settings.get_boolean('hot-keys')) ++ Lang.bind(this, this._enableHotKeys)(); ++ else ++ Lang.bind(this, this._disableHotKeys)(); ++ }) ++ ]); ++ }, ++ ++ _resetHotkeys: function() { ++ this._disableHotKeys(); ++ this._enableHotKeys(); ++ }, ++ ++ _enableHotKeys: function() { ++ if (this._hotKeysEnabled) ++ return; ++ ++ //3.32 introduced app hotkeys, disable them to prevent conflicts ++ if (Main.wm._switchToApplication) { ++ for (let i = 1; i < 10; ++i) { ++ Utils.removeKeybinding(GS_HOTKEYS_KEY + i); ++ } ++ } ++ ++ // Setup keyboard bindings for taskbar elements ++ let shortcutNumKeys = Me.settings.get_string('shortcut-num-keys'); ++ let bothNumKeys = shortcutNumKeys == 'BOTH'; ++ let keys = []; ++ ++ if (bothNumKeys || shortcutNumKeys == 'NUM_ROW') { ++ keys.push('app-hotkey-', 'app-shift-hotkey-', 'app-ctrl-hotkey-'); // Regular numbers ++ } ++ ++ if (bothNumKeys || shortcutNumKeys == 'NUM_KEYPAD') { ++ keys.push('app-hotkey-kp-', 'app-shift-hotkey-kp-', 'app-ctrl-hotkey-kp-'); // Key-pad numbers ++ } ++ ++ keys.forEach( function(key) { ++ for (let i = 0; i < this._numHotkeys; i++) { ++ let appNum = i; ++ ++ Utils.addKeybinding(key + (i + 1), Me.settings, () => this._activateApp(appNum)); ++ } ++ }, this); ++ ++ this._hotKeysEnabled = true; ++ ++ if (Me.settings.get_string('hotkeys-overlay-combo') === 'ALWAYS') ++ this.taskbar.toggleNumberOverlay(true); ++ }, ++ ++ _disableHotKeys: function() { ++ if (!this._hotKeysEnabled) ++ return; ++ ++ let keys = ['app-hotkey-', 'app-shift-hotkey-', 'app-ctrl-hotkey-', // Regular numbers ++ 'app-hotkey-kp-', 'app-shift-hotkey-kp-', 'app-ctrl-hotkey-kp-']; // Key-pad numbers ++ keys.forEach( function(key) { ++ for (let i = 0; i < this._numHotkeys; i++) { ++ Utils.removeKeybinding(key + (i + 1)); ++ } ++ }, this); ++ ++ if (Main.wm._switchToApplication) { ++ let gsSettings = new Gio.Settings({ schema_id: imports.ui.windowManager.SHELL_KEYBINDINGS_SCHEMA }); ++ ++ for (let i = 1; i < 10; ++i) { ++ Utils.addKeybinding(GS_HOTKEYS_KEY + i, gsSettings, Main.wm._switchToApplication.bind(Main.wm)); ++ } ++ } ++ ++ this._hotKeysEnabled = false; ++ ++ this.taskbar.toggleNumberOverlay(false); ++ }, ++ ++ _optionalNumberOverlay: function() { ++ // Enable extra shortcut ++ if (Me.settings.get_boolean('hot-keys')) ++ this._enableExtraShortcut(); ++ ++ this._signalsHandler.add([ ++ Me.settings, ++ 'changed::hot-keys', ++ Lang.bind(this, this._checkHotkeysOptions) ++ ], [ ++ Me.settings, ++ 'changed::hotkeys-overlay-combo', ++ Lang.bind(this, function() { ++ if (Me.settings.get_boolean('hot-keys') && Me.settings.get_string('hotkeys-overlay-combo') === 'ALWAYS') ++ this.taskbar.toggleNumberOverlay(true); ++ else ++ this.taskbar.toggleNumberOverlay(false); ++ }) ++ ], [ ++ Me.settings, ++ 'changed::shortcut-num-keys', ++ () => this._resetHotkeys() ++ ]); ++ }, ++ ++ _checkHotkeysOptions: function() { ++ if (Me.settings.get_boolean('hot-keys')) ++ this._enableExtraShortcut(); ++ else ++ this._disableExtraShortcut(); ++ }, ++ ++ _enableExtraShortcut: function() { ++ Utils.addKeybinding('shortcut', Me.settings, () => this._showOverlay(true)); ++ }, ++ ++ _disableExtraShortcut: function() { ++ Utils.removeKeybinding('shortcut'); ++ }, ++ ++ _showOverlay: function(overlayFromShortcut) { ++ //wait for intellihide timeout initialization ++ if (!this._panel.intellihide) { ++ return; ++ } ++ ++ // Restart the counting if the shortcut is pressed again ++ if (this._numberOverlayTimeoutId) { ++ Mainloop.source_remove(this._numberOverlayTimeoutId); ++ this._numberOverlayTimeoutId = 0; ++ } ++ ++ let hotkey_option = Me.settings.get_string('hotkeys-overlay-combo'); ++ ++ if (hotkey_option === 'NEVER') ++ return; ++ ++ if (hotkey_option === 'TEMPORARILY' || overlayFromShortcut) ++ this.taskbar.toggleNumberOverlay(true); ++ ++ this._panel.intellihide.revealAndHold(Intellihide.Hold.TEMPORARY); ++ ++ let timeout = Me.settings.get_int('overlay-timeout'); ++ ++ if (overlayFromShortcut) { ++ timeout = Me.settings.get_int('shortcut-timeout'); ++ } ++ ++ // Hide the overlay/dock after the timeout ++ this._numberOverlayTimeoutId = Mainloop.timeout_add(timeout, Lang.bind(this, function() { ++ this._numberOverlayTimeoutId = 0; ++ ++ if (hotkey_option != 'ALWAYS') { ++ this.taskbar.toggleNumberOverlay(false); ++ } ++ ++ this._panel.intellihide.release(Intellihide.Hold.TEMPORARY); ++ })); ++ }, ++ ++ _optionalClickToExit: function() { ++ this._clickToExitEnabled = false; ++ if (Me.settings.get_boolean('overview-click-to-exit')) ++ this._enableClickToExit(); ++ ++ this._signalsHandler.add([ ++ Me.settings, ++ 'changed::overview-click-to-exit', ++ Lang.bind(this, function() { ++ if (Me.settings.get_boolean('overview-click-to-exit')) ++ Lang.bind(this, this._enableClickToExit)(); ++ else ++ Lang.bind(this, this._disableClickToExit)(); ++ }) ++ ]); ++ }, ++ ++ _enableClickToExit: function() { ++ if (this._clickToExitEnabled) ++ return; ++ ++ let view = imports.ui.appDisplay; ++ this._oldOverviewReactive = Main.overview._overview.reactive ++ ++ Main.overview._overview.reactive = true; ++ ++ this._clickAction = new Clutter.ClickAction(); ++ this._clickAction.connect('clicked', () => { ++ ++ if (this._swiping) ++ return Clutter.EVENT_PROPAGATE; ++ ++ let [x, y] = global.get_pointer(); ++ let pickedActor = global.stage.get_actor_at_pos(Clutter.PickMode.ALL, x, y); ++ ++ Main.overview.toggle(); ++ }); ++ Main.overview._overview.add_action(this._clickAction); ++ ++ this._clickToExitEnabled = true; ++ }, ++ ++ _disableClickToExit: function () { ++ if (!this._clickToExitEnabled) ++ return; ++ ++ Main.overview._overview.remove_action(this._clickAction); ++ Main.overview._overview.reactive = this._oldOverviewReactive; ++ ++ this._signalsHandler.removeWithLabel('clickToExit'); ++ ++ this._clickToExitEnabled = false; ++ }, ++ ++ _onSwipeBegin: function() { ++ this._swiping = true; ++ return true; ++ }, ++ ++ _onSwipeEnd: function() { ++ this._timeoutsHandler.add([ ++ T1, ++ 0, ++ () => this._swiping = false ++ ]); ++ return true; ++ }, ++ ++ _hookupAllocation: function() { ++ Utils.hookVfunc(OverviewControls.ControlsManagerLayout.prototype, 'allocate', function vfunc_allocate(container, box) { ++ const childBox = new Clutter.ActorBox(); ++ ++ const { spacing } = this; ++ ++ let startY = 0; ++ let startX = 0; ++ ++ if (Me.settings.get_boolean('stockgs-keep-top-panel') && Main.layoutManager.panelBox.y === Main.layoutManager.primaryMonitor.y) { ++ startY = Main.layoutManager.panelBox.height; ++ box.y1 += startY; ++ } ++ ++ const panel = global.dashToPanel.panels[0]; ++ if(panel) { ++ switch (panel.getPosition()) { ++ case St.Side.TOP: ++ startY = panel.panelBox.height; ++ box.y1 += startY; ++ break; ++ case St.Side.LEFT: ++ startX = panel.panelBox.width; ++ box.x1 += startX; ++ break; ++ case St.Side.RIGHT: ++ box.x2 -= panel.panelBox.width; ++ break; ++ ++ } ++ } ++ ++ ++ const [width, height] = box.get_size(); ++ let availableHeight = height; ++ ++ // Search entry ++ let [searchHeight] = this._searchEntry.get_preferred_height(width); ++ childBox.set_origin(startX, startY); ++ childBox.set_size(width, searchHeight); ++ this._searchEntry.allocate(childBox); ++ ++ availableHeight -= searchHeight + spacing; ++ ++ // Dash ++ const maxDashHeight = Math.round(box.get_height() * DASH_MAX_HEIGHT_RATIO); ++ this._dash.setMaxSize(width, maxDashHeight); ++ ++ let [, dashHeight] = this._dash.get_preferred_height(width); ++ if (Me.settings.get_boolean('stockgs-keep-dash')) ++ dashHeight = Math.min(dashHeight, maxDashHeight); ++ else ++ dashHeight = spacing*5; // todo: determine proper spacing for window labels on maximized windows on workspace display ++ childBox.set_origin(startX, startY + height - dashHeight); ++ childBox.set_size(width, dashHeight); ++ this._dash.allocate(childBox); ++ ++ availableHeight -= dashHeight + spacing; ++ ++ // Workspace Thumbnails ++ let thumbnailsHeight = 0; ++ if (this._workspacesThumbnails.visible) { ++ const { expandFraction } = this._workspacesThumbnails; ++ [thumbnailsHeight] = ++ this._workspacesThumbnails.get_preferred_height(width); ++ thumbnailsHeight = Math.min( ++ thumbnailsHeight * expandFraction, ++ height * WorkspaceThumbnail.MAX_THUMBNAIL_SCALE); ++ childBox.set_origin(startX, startY + searchHeight + spacing); ++ childBox.set_size(width, thumbnailsHeight); ++ this._workspacesThumbnails.allocate(childBox); ++ } ++ ++ // Workspaces ++ let params = [box, startX, startY, searchHeight, dashHeight, thumbnailsHeight]; ++ const transitionParams = this._stateAdjustment.getStateTransitionParams(); ++ ++ // Update cached boxes ++ for (const state of Object.values(OverviewControls.ControlsState)) { ++ this._cachedWorkspaceBoxes.set( ++ state, this._computeWorkspacesBoxForState(state, ...params)); ++ } ++ ++ let workspacesBox; ++ if (!transitionParams.transitioning) { ++ workspacesBox = this._cachedWorkspaceBoxes.get(transitionParams.currentState); ++ } else { ++ const initialBox = this._cachedWorkspaceBoxes.get(transitionParams.initialState); ++ const finalBox = this._cachedWorkspaceBoxes.get(transitionParams.finalState); ++ workspacesBox = initialBox.interpolate(finalBox, transitionParams.progress); ++ } ++ ++ this._workspacesDisplay.allocate(workspacesBox); ++ ++ // AppDisplay ++ if (this._appDisplay.visible) { ++ const workspaceAppGridBox = ++ this._cachedWorkspaceBoxes.get(OverviewControls.ControlsState.APP_GRID); ++ ++ if (Config.PACKAGE_VERSION > '40.3') { ++ const monitor = Main.layoutManager.findMonitorForActor(this._container); ++ const workArea = Main.layoutManager.getWorkAreaForMonitor(monitor.index); ++ const workAreaBox = new Clutter.ActorBox(); ++ ++ workAreaBox.set_origin(startX, startY); ++ workAreaBox.set_size(workArea.width, workArea.height); ++ ++ params = [workAreaBox, searchHeight, dashHeight, workspaceAppGridBox] ++ } else { ++ params = [box, startX, searchHeight, dashHeight, workspaceAppGridBox]; ++ } ++ ++ let appDisplayBox; ++ if (!transitionParams.transitioning) { ++ appDisplayBox = ++ this._getAppDisplayBoxForState(transitionParams.currentState, ...params); ++ } else { ++ const initialBox = ++ this._getAppDisplayBoxForState(transitionParams.initialState, ...params); ++ const finalBox = ++ this._getAppDisplayBoxForState(transitionParams.finalState, ...params); ++ ++ appDisplayBox = initialBox.interpolate(finalBox, transitionParams.progress); ++ } ++ ++ this._appDisplay.allocate(appDisplayBox); ++ } ++ ++ // Search ++ childBox.set_origin(0, startY + searchHeight + spacing); ++ childBox.set_size(width, availableHeight); ++ ++ this._searchController.allocate(childBox); ++ ++ this._runPostAllocation(); ++ }); ++ ++ this._oldComputeWorkspacesBoxForState = OverviewControls.ControlsManagerLayout.prototype._computeWorkspacesBoxForState; ++ OverviewControls.ControlsManagerLayout.prototype._computeWorkspacesBoxForState = function _computeWorkspacesBoxForState(state, box, startX, startY, searchHeight, dashHeight, thumbnailsHeight) { ++ const workspaceBox = box.copy(); ++ const [width, height] = workspaceBox.get_size(); ++ const { spacing } = this; ++ const { expandFraction } = this._workspacesThumbnails; ++ ++ switch (state) { ++ case OverviewControls.ControlsState.HIDDEN: ++ break; ++ case OverviewControls.ControlsState.WINDOW_PICKER: ++ workspaceBox.set_origin(startX, ++ startY + searchHeight + spacing + ++ thumbnailsHeight + spacing * expandFraction); ++ workspaceBox.set_size(width, ++ height - ++ dashHeight - spacing - ++ searchHeight - spacing - ++ thumbnailsHeight - spacing * expandFraction); ++ break; ++ case OverviewControls.ControlsState.APP_GRID: ++ workspaceBox.set_origin(startX, startY + searchHeight + spacing); ++ workspaceBox.set_size( ++ width, ++ Math.round(height * SMALL_WORKSPACE_RATIO)); ++ break; ++ } ++ ++ return workspaceBox; ++ } ++ ++ Utils.hookVfunc(Workspace.WorkspaceBackground.prototype, 'allocate', function vfunc_allocate(box) { ++ const [width, height] = box.get_size(); ++ const { scaleFactor } = St.ThemeContext.get_for_stage(global.stage); ++ const scaledHeight = height - (BACKGROUND_MARGIN * 2 * scaleFactor); ++ const scaledWidth = (scaledHeight / height) * width; ++ ++ const scaledBox = box.copy(); ++ scaledBox.set_origin( ++ box.x1 + (width - scaledWidth) / 2, ++ box.y1 + (height - scaledHeight) / 2); ++ scaledBox.set_size(scaledWidth, scaledHeight); ++ ++ const progress = this._stateAdjustment.value; ++ ++ if (progress === 1) ++ box = scaledBox; ++ else if (progress !== 0) ++ box = box.interpolate(scaledBox, progress); ++ ++ this.set_allocation(box); ++ ++ const themeNode = this.get_theme_node(); ++ const contentBox = themeNode.get_content_box(box); ++ ++ this._bin.allocate(contentBox); ++ ++ ++ const [contentWidth, contentHeight] = contentBox.get_size(); ++ const monitor = Main.layoutManager.monitors[this._monitorIndex]; ++ let xOff = (contentWidth / this._workarea.width) * ++ (this._workarea.x - monitor.x); ++ let yOff = (contentHeight / this._workarea.height) * ++ (this._workarea.y - monitor.y); ++ ++ let startX = -xOff; ++ let startY = -yOff; ++ const panel = Utils.find(global.dashToPanel.panels, p => p.monitor.index == this._monitorIndex); ++ switch (panel.getPosition()) { ++ case St.Side.TOP: ++ yOff += panel.panelBox.height; ++ startY -= panel.panelBox.height; ++ break; ++ case St.Side.BOTTOM: ++ yOff += panel.panelBox.height; ++ break; ++ case St.Side.RIGHT: ++ xOff += panel.panelBox.width; ++ break; ++ } ++ contentBox.set_origin(startX, startY); ++ contentBox.set_size(xOff + contentWidth, yOff + contentHeight); ++ this._backgroundGroup.allocate(contentBox); ++ }); ++ ++ } ++}); +diff --git a/extensions/dash-to-panel/panel.js b/extensions/dash-to-panel/panel.js +new file mode 100644 +index 00000000..5e0b5f9a +--- /dev/null ++++ b/extensions/dash-to-panel/panel.js +@@ -0,0 +1,1512 @@ ++/* ++ * This file is part of the Dash-To-Panel extension for Gnome 3 ++ * ++ * 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 2 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 . ++ * ++ * Credits: ++ * This file is based on code from the Dash to Dock extension by micheleg ++ * and code from the Taskbar extension by Zorin OS ++ * ++ * Code to re-anchor the panel was taken from Thoma5 BottomPanel: ++ * https://github.com/Thoma5/gnome-shell-extension-bottompanel ++ * ++ * Pattern for moving clock based on Frippery Move Clock by R M Yorston ++ * http://frippery.org/extensions/ ++ * ++ * Some code was also adapted from the upstream Gnome Shell source code. ++ */ ++ ++const Me = imports.misc.extensionUtils.getCurrentExtension(); ++const Clutter = imports.gi.Clutter; ++const Config = imports.misc.config; ++const Gtk = imports.gi.Gtk; ++const Gi = imports._gi; ++const AppIcons = Me.imports.appIcons; ++const Utils = Me.imports.utils; ++const Taskbar = Me.imports.taskbar; ++const Pos = Me.imports.panelPositions; ++const PanelSettings = Me.imports.panelSettings; ++const PanelStyle = Me.imports.panelStyle; ++const Lang = imports.lang; ++const Main = imports.ui.main; ++const Mainloop = imports.mainloop; ++const Dash = imports.ui.dash; ++const CtrlAltTab = imports.ui.ctrlAltTab; ++const Panel = imports.ui.panel; ++const PanelMenu = imports.ui.panelMenu; ++const St = imports.gi.St; ++const GLib = imports.gi.GLib; ++const Meta = imports.gi.Meta; ++const Pango = imports.gi.Pango; ++const DND = imports.ui.dnd; ++const Shell = imports.gi.Shell; ++const PopupMenu = imports.ui.popupMenu; ++const IconGrid = imports.ui.iconGrid; ++const DateMenu = imports.ui.dateMenu; ++const Volume = imports.ui.status.volume; ++const Progress = Me.imports.progress; ++ ++const Intellihide = Me.imports.intellihide; ++const Transparency = Me.imports.transparency; ++const _ = imports.gettext.domain(Me.imports.utils.TRANSLATION_DOMAIN).gettext; ++ ++let tracker = Shell.WindowTracker.get_default(); ++var panelBoxes = ['_leftBox', '_centerBox', '_rightBox']; ++ ++//timeout names ++const T1 = 'startDynamicTransparencyTimeout'; ++const T2 = 'startIntellihideTimeout'; ++const T3 = 'allocationThrottleTimeout'; ++const T4 = 'showDesktopTimeout'; ++const T5 = 'trackerFocusAppTimeout'; ++const T6 = 'scrollPanelDelayTimeout'; ++const T7 = 'waitPanelBoxAllocation'; ++ ++var dtpPanel = Utils.defineClass({ ++ Name: 'DashToPanel-Panel', ++ Extends: St.Widget, ++ ++ _init: function(panelManager, monitor, panelBox, isStandalone) { ++ this.callParent('_init', { layout_manager: new Clutter.BinLayout() }); ++ ++ this._timeoutsHandler = new Utils.TimeoutsHandler(); ++ this._signalsHandler = new Utils.GlobalSignalsHandler(); ++ ++ this.panelManager = panelManager; ++ this.panelStyle = new PanelStyle.dtpPanelStyle(); ++ ++ this.monitor = monitor; ++ this.panelBox = panelBox; ++ ++ // when the original gnome-shell top panel is kept, all panels are "standalone", ++ // so in this case use isPrimary to get the panel on the primary dtp monitor, which ++ // might be different from the system's primary monitor. ++ this.isStandalone = isStandalone; ++ this.isPrimary = !isStandalone || (Me.settings.get_boolean('stockgs-keep-top-panel') && ++ monitor == panelManager.dtpPrimaryMonitor); ++ ++ this._sessionStyle = null; ++ this._unmappedButtons = []; ++ this._elementGroups = []; ++ this.cornerSize = 0; ++ ++ let position = this.getPosition(); ++ ++ if (isStandalone) { ++ this.panel = new dtpSecondaryPanel({ name: 'panel', reactive: true }); ++ this.statusArea = this.panel.statusArea = {}; ++ ++ Utils.wrapActor(this.panel); ++ ++ //next 3 functions are needed by other extensions to add elements to the secondary panel ++ this.panel.addToStatusArea = function(role, indicator, position, box) { ++ return Main.panel.addToStatusArea.call(this, role, indicator, position, box); ++ }; ++ ++ this.panel._addToPanelBox = function(role, indicator, position, box) { ++ Main.panel._addToPanelBox.call(this, role, indicator, position, box); ++ }; ++ ++ this.panel._onMenuSet = function(indicator) { ++ Main.panel._onMenuSet.call(this, indicator); ++ }; ++ ++ this._leftBox = this.panel._leftBox = new St.BoxLayout({ name: 'panelLeft' }); ++ this._centerBox = this.panel._centerBox = new St.BoxLayout({ name: 'panelCenter' }); ++ this._rightBox = this.panel._rightBox = new St.BoxLayout({ name: 'panelRight' }); ++ ++ this.menuManager = this.panel.menuManager = new PopupMenu.PopupMenuManager(this.panel); ++ ++ this._setPanelMenu('aggregateMenu', dtpSecondaryAggregateMenu, this.panel.actor); ++ this._setPanelMenu('dateMenu', DateMenu.DateMenuButton, this.panel.actor); ++ this._setPanelMenu('activities', Panel.ActivitiesButton, this.panel.actor); ++ ++ this.panel.add_child(this._leftBox); ++ this.panel.add_child(this._centerBox); ++ this.panel.add_child(this._rightBox); ++ } else { ++ this.panel = Main.panel; ++ this.statusArea = Main.panel.statusArea; ++ this.menuManager = Main.panel.menuManager; ++ ++ panelBoxes.forEach(p => this[p] = Main.panel[p]); ++ ++ ['activities', 'aggregateMenu', 'dateMenu'].forEach(b => { ++ let container = this.statusArea[b].container; ++ let parent = container.get_parent(); ++ ++ container._dtpOriginalParent = parent; ++ parent ? parent.remove_child(container) : null; ++ this.panel.actor.add_child(container); ++ }); ++ } ++ ++ // Create a wrapper around the real showAppsIcon in order to add a popupMenu. Most of ++ // its behavior is handled by the taskbar, but its positioning is done at the panel level ++ this.showAppsIconWrapper = new AppIcons.ShowAppsIconWrapper(this); ++ this.panel.actor.add_child(this.showAppsIconWrapper.realShowAppsIcon); ++ ++ this.panel.actor._delegate = this; ++ ++ Utils.wrapActor(this.statusArea.activities); ++ ++ this.add_child(this.panel.actor); ++ ++ if (Main.panel._onButtonPress || Main.panel._tryDragWindow) { ++ this._signalsHandler.add([ ++ this.panel.actor, ++ [ ++ 'button-press-event', ++ 'touch-event' ++ ], ++ this._onButtonPress.bind(this) ++ ]); ++ } ++ ++ if (Main.panel._onKeyPress) { ++ this._signalsHandler.add([this.panel.actor, 'key-press-event', Main.panel._onKeyPress.bind(this)]); ++ } ++ ++ Main.ctrlAltTabManager.addGroup(this, _("Top Bar")+" "+ monitor.index, 'focus-top-bar-symbolic', ++ { sortGroup: CtrlAltTab.SortGroup.TOP }); ++ }, ++ ++ enable : function() { ++ let position = this.getPosition(); ++ ++ if (this.statusArea.aggregateMenu) { ++ Utils.getIndicators(this.statusArea.aggregateMenu._volume)._dtpIgnoreScroll = 1; ++ } ++ ++ this.geom = this.getGeometry(); ++ ++ // The overview uses the panel height as a margin by way of a "ghost" transparent Clone ++ // This pushes everything down, which isn't desired when the panel is moved to the bottom ++ // I'm adding a 2nd ghost panel and will resize the top or bottom ghost depending on the panel position ++ this._myPanelGhost = new Clutter.Actor({ ++ x: this.geom.x, ++ y: this.geom.y , ++ reactive: false, ++ opacity: 0 ++ }); ++ ++ let isTop = this.geom.position == St.Side.TOP; ++ ++ if (isTop) { ++ this.panel._leftCorner = this.panel._leftCorner || new Panel.PanelCorner(St.Side.LEFT); ++ this.panel._rightCorner = this.panel._rightCorner || new Panel.PanelCorner(St.Side.RIGHT); ++ ++ Main.overview._overview.insert_child_at_index(this._myPanelGhost, 0); ++ } else { ++ let overviewControls = Main.overview._overview._controls || Main.overview._controls; ++ Main.overview._overview.add_actor(this._myPanelGhost); ++ } ++ ++ if (this.panel._leftCorner) { ++ Utils.wrapActor(this.panel._leftCorner); ++ Utils.wrapActor(this.panel._rightCorner); ++ ++ if (isTop) { ++ if (this.isStandalone) { ++ this.panel.actor.add_child(this.panel._leftCorner.actor); ++ this.panel.actor.add_child(this.panel._rightCorner.actor); ++ } ++ } else if (Config.PACKAGE_VERSION >= '3.32') { ++ this.panel.actor.remove_child(this.panel._leftCorner.actor); ++ this.panel.actor.remove_child(this.panel._rightCorner.actor); ++ } ++ } ++ ++ this._setPanelPosition(); ++ ++ if (!this.isStandalone) { ++ if (this.panel.vfunc_allocate) { ++ this._panelConnectId = 0; ++ Utils.hookVfunc(this.panel.__proto__, 'allocate', (box, flags) => this._mainPanelAllocate(0, box, flags)); ++ } else { ++ this._panelConnectId = this.panel.actor.connect('allocate', (actor, box, flags) => this._mainPanelAllocate(actor, box, flags)); ++ } ++ ++ // remove the extra space before the clock when the message-indicator is displayed ++ if (DateMenu.IndicatorPad) { ++ Utils.hookVfunc(DateMenu.IndicatorPad.prototype, 'get_preferred_width', () => [0,0]); ++ Utils.hookVfunc(DateMenu.IndicatorPad.prototype, 'get_preferred_height', () => [0,0]); ++ } ++ } ++ ++ if (!DateMenu.IndicatorPad && this.statusArea.dateMenu) { ++ //3.36 switched to a size constraint applied on an anonymous child ++ let indicatorPad = this.statusArea.dateMenu.get_first_child().get_first_child(); ++ ++ this._dateMenuIndicatorPadContraints = indicatorPad.get_constraints(); ++ indicatorPad.clear_constraints(); ++ } ++ ++ // The main panel's connection to the "allocate" signal is competing with this extension ++ // trying to move the centerBox over to the right, creating a never-ending cycle. ++ // Since we don't have the ID to disconnect that handler, wrap the allocate() function ++ // it calls instead. If the call didn't originate from this file, ignore it. ++ panelBoxes.forEach(b => { ++ this[b].allocate = (box, flags, isFromDashToPanel) => { ++ if (isFromDashToPanel) { ++ Utils.allocate(this[b], box, flags, true); ++ } ++ } ++ }); ++ ++ this.menuManager._oldChangeMenu = this.menuManager._changeMenu; ++ this.menuManager._changeMenu = (menu) => { ++ if (!Me.settings.get_boolean('stockgs-panelbtn-click-only')) { ++ this.menuManager._oldChangeMenu(menu); ++ } ++ }; ++ ++ this.dynamicTransparency = new Transparency.DynamicTransparency(this); ++ ++ this.taskbar = new Taskbar.taskbar(this); ++ ++ this.panel.actor.add_child(this.taskbar.actor); ++ ++ this._setAppmenuVisible(Me.settings.get_boolean('show-appmenu')); ++ this._setShowDesktopButton(true); ++ ++ this._setAllocationMap(); ++ ++ this.panel.actor.add_style_class_name('dashtopanelMainPanel ' + this.getOrientation()); ++ ++ this._setPanelGhostSize(); ++ ++ this._timeoutsHandler.add([T2, Me.settings.get_int('intellihide-enable-start-delay'), () => this.intellihide = new Intellihide.Intellihide(this)]); ++ ++ this._signalsHandler.add( ++ // this is to catch changes to the theme or window scale factor ++ [ ++ Utils.getStageTheme(), ++ 'changed', ++ () => (this._resetGeometry(), this._setShowDesktopButtonStyle()), ++ ], ++ [ ++ // sync hover after a popupmenu is closed ++ this.taskbar, ++ 'menu-closed', ++ Lang.bind(this, function(){this.panel.actor.sync_hover();}) ++ ], ++ [ ++ Main.overview, ++ [ ++ 'showing', ++ 'hiding' ++ ], ++ () => this._adjustForOverview() ++ ], ++ [ ++ Main.overview, ++ 'hidden', ++ () => { ++ if (this.isPrimary) { ++ //reset the primary monitor when exiting the overview ++ this.panelManager.setFocusedMonitor(this.monitor, true); ++ } ++ } ++ ], ++ [ ++ this.statusArea.activities.actor, ++ 'captured-event', ++ (actor, e) => { ++ // todo this is not being called right now, so the overview is not shown on the correct monitor ++ if (e.type() == Clutter.EventType.BUTTON_PRESS || e.type() == Clutter.EventType.TOUCH_BEGIN) { ++ //temporarily use as primary the monitor on which the activities btn was clicked ++ this.panelManager.setFocusedMonitor(this.monitor, true); ++ } ++ } ++ ], ++ [ ++ this._centerBox, ++ 'actor-added', ++ () => this._onBoxActorAdded(this._centerBox) ++ ], ++ [ ++ this._rightBox, ++ 'actor-added', ++ () => this._onBoxActorAdded(this._rightBox) ++ ], ++ [ ++ this.panel.actor, ++ 'scroll-event', ++ this._onPanelMouseScroll.bind(this) ++ ], ++ [ ++ Main.layoutManager, ++ 'startup-complete', ++ () => this._resetGeometry() ++ ] ++ ); ++ ++ this._bindSettingsChanges(); ++ ++ this.panelStyle.enable(this); ++ ++ if (this.checkIfVertical()) { ++ this._signalsHandler.add([ ++ this.panelBox, ++ 'notify::visible', ++ () => { ++ if (this.panelBox.visible) { ++ this._refreshVerticalAlloc(); ++ } ++ } ++ ]); ++ ++ this._setSearchEntryOffset(this.geom.w); ++ ++ if (this.statusArea.dateMenu) { ++ this._formatVerticalClock(); ++ ++ this._signalsHandler.add([ ++ this.statusArea.dateMenu._clock, ++ 'notify::clock', ++ () => this._formatVerticalClock() ++ ]); ++ } ++ } ++ ++ // Since we are usually visible but not usually changing, make sure ++ // most repaint requests don't actually require us to repaint anything. ++ // This saves significant CPU when repainting the screen. ++ this.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS); ++ ++ this._initProgressManager(); ++ }, ++ ++ disable: function () { ++ this.panelStyle.disable(); ++ ++ this._timeoutsHandler.destroy(); ++ this._signalsHandler.destroy(); ++ this._disablePanelCornerSignals(); ++ ++ this.panel.actor.remove_child(this.taskbar.actor); ++ this._setAppmenuVisible(false); ++ ++ if (this.intellihide) { ++ this.intellihide.destroy(); ++ } ++ ++ this.dynamicTransparency.destroy(); ++ ++ this.progressManager.destroy(); ++ ++ this.taskbar.destroy(); ++ this.showAppsIconWrapper.destroy(); ++ ++ this.menuManager._changeMenu = this.menuManager._oldChangeMenu; ++ ++ this._myPanelGhost.get_parent().remove_actor(this._myPanelGhost); ++ this._setSearchEntryOffset(0); ++ ++ panelBoxes.forEach(b => delete this[b].allocate); ++ this._unmappedButtons.forEach(a => this._disconnectVisibleId(a)); ++ ++ if (this._dateMenuIndicatorPadContraints && this.statusArea.dateMenu) { ++ let indicatorPad = this.statusArea.dateMenu.get_first_child().get_first_child(); ++ ++ this._dateMenuIndicatorPadContraints.forEach(c => indicatorPad.add_constraint(c)); ++ } ++ ++ this._setVertical(this.panel.actor, false); ++ ++ if (!this.isStandalone) { ++ this.statusArea.dateMenu._clockDisplay.text = this.statusArea.dateMenu._clock.clock; ++ ++ ['vertical', 'horizontal', 'dashtopanelMainPanel'].forEach(c => this.panel.actor.remove_style_class_name(c)); ++ ++ if (!Main.sessionMode.isLocked) { ++ [['activities', 0], ['aggregateMenu', -1], ['dateMenu', 0]].forEach(b => { ++ let container = this.statusArea[b[0]].container; ++ let originalParent = container._dtpOriginalParent; ++ ++ this.panel.actor.remove_child(container); ++ originalParent ? originalParent.insert_child_at_index(container, b[1]) : null; ++ delete container._dtpOriginalParent; ++ }); ++ } ++ ++ if (!this.panel._leftCorner.actor.mapped) { ++ this.panel.actor.add_child(this.panel._leftCorner.actor); ++ this.panel.actor.add_child(this.panel._rightCorner.actor); ++ } ++ ++ this._setShowDesktopButton(false); ++ ++ delete Utils.getIndicators(this.statusArea.aggregateMenu._volume)._dtpIgnoreScroll; ++ ++ if (DateMenu.IndicatorPad) { ++ Utils.hookVfunc(DateMenu.IndicatorPad.prototype, 'get_preferred_width', DateMenu.IndicatorPad.prototype.vfunc_get_preferred_width); ++ Utils.hookVfunc(DateMenu.IndicatorPad.prototype, 'get_preferred_height', DateMenu.IndicatorPad.prototype.vfunc_get_preferred_height); ++ } ++ ++ if (this._panelConnectId) { ++ this.panel.actor.disconnect(this._panelConnectId); ++ } else { ++ Utils.hookVfunc(this.panel.__proto__, 'allocate', this.panel.__proto__.vfunc_allocate); ++ } ++ ++ this.panel.actor._delegate = this.panel; ++ } else { ++ this._removePanelMenu('dateMenu'); ++ this._removePanelMenu('aggregateMenu'); ++ this._removePanelMenu('activities'); ++ } ++ ++ Main.ctrlAltTabManager.removeGroup(this); ++ }, ++ ++ handleDragOver: function(source, actor, x, y, time) { ++ if (source == Main.xdndHandler) { ++ ++ // open overview so they can choose a window for focusing ++ // and ultimately dropping dragged item onto ++ if(Main.overview.shouldToggleByCornerOrButton()) ++ Main.overview.show(); ++ } ++ ++ return DND.DragMotionResult.CONTINUE; ++ }, ++ ++ getPosition: function() { ++ let position = PanelSettings.getPanelPosition(Me.settings, this.monitor.index); ++ ++ if (position == Pos.TOP) { ++ return St.Side.TOP; ++ } else if (position == Pos.RIGHT) { ++ return St.Side.RIGHT; ++ } else if (position == Pos.BOTTOM) { ++ return St.Side.BOTTOM; ++ } ++ ++ return St.Side.LEFT; ++ }, ++ ++ checkIfVertical: function() { ++ let position = this.getPosition(); ++ ++ return (position == St.Side.LEFT || position == St.Side.RIGHT); ++ }, ++ ++ getOrientation: function() { ++ return (this.checkIfVertical() ? 'vertical' : 'horizontal'); ++ }, ++ ++ updateElementPositions: function() { ++ let panelPositions = this.panelManager.panelsElementPositions[this.monitor.index] || Pos.defaults; ++ ++ this._updateGroupedElements(panelPositions); ++ ++ this._disablePanelCornerSignals(); ++ ++ if (this.getPosition() == St.Side.TOP) { ++ let visibleElements = panelPositions.filter(pp => pp.visible); ++ let connectCorner = (corner, button) => { ++ corner._button = button; ++ corner._buttonStyleChangedSignalId = button.connect('style-changed', () => { ++ corner.set_style_pseudo_class(button.get_style_pseudo_class()); ++ }); ++ } ++ ++ if (visibleElements[0].element == Pos.ACTIVITIES_BTN) { ++ connectCorner(this.panel._leftCorner, this.statusArea.activities); ++ } ++ ++ if (visibleElements[visibleElements.length - 1].element == Pos.SYSTEM_MENU) { ++ connectCorner(this.panel._rightCorner, this.statusArea.aggregateMenu); ++ } ++ } ++ ++ this.panel.actor.hide(); ++ this.panel.actor.show(); ++ }, ++ ++ _updateGroupedElements: function(panelPositions) { ++ let previousPosition = 0; ++ let previousCenteredPosition = 0; ++ let currentGroup = -1; ++ ++ this._elementGroups = []; ++ ++ panelPositions.forEach(pos => { ++ let allocationMap = this.allocationMap[pos.element]; ++ ++ if (allocationMap.actor) { ++ allocationMap.actor.visible = pos.visible; ++ ++ if (!pos.visible) { ++ return; ++ } ++ ++ let currentPosition = pos.position; ++ let isCentered = Pos.checkIfCentered(currentPosition); ++ ++ if (currentPosition == Pos.STACKED_TL && previousPosition == Pos.STACKED_BR) { ++ currentPosition = Pos.STACKED_BR; ++ } ++ ++ if (!previousPosition || ++ (previousPosition == Pos.STACKED_TL && currentPosition != Pos.STACKED_TL) || ++ (previousPosition != Pos.STACKED_BR && currentPosition == Pos.STACKED_BR) || ++ (isCentered && previousPosition != currentPosition && previousPosition != Pos.STACKED_BR)) { ++ this._elementGroups[++currentGroup] = { elements: [], index: this._elementGroups.length, expandableIndex: -1 }; ++ previousCenteredPosition = 0; ++ } ++ ++ if (pos.element == Pos.TASKBAR) { ++ this._elementGroups[currentGroup].expandableIndex = this._elementGroups[currentGroup].elements.length; ++ } ++ ++ if (isCentered && !this._elementGroups[currentGroup].isCentered) { ++ this._elementGroups[currentGroup].isCentered = 1; ++ previousCenteredPosition = currentPosition; ++ } ++ ++ this._elementGroups[currentGroup].position = previousCenteredPosition || currentPosition; ++ this._elementGroups[currentGroup].elements.push(allocationMap); ++ ++ allocationMap.position = currentPosition; ++ previousPosition = currentPosition; ++ } ++ }); ++ }, ++ ++ _disablePanelCornerSignals: function() { ++ if (this.panel._rightCorner && this.panel._rightCorner._buttonStyleChangedSignalId) { ++ this.panel._rightCorner._button.disconnect(this.panel._rightCorner._buttonStyleChangedSignalId); ++ delete this.panel._rightCorner._buttonStyleChangedSignalId; ++ } ++ ++ if (this.panel._leftCorner && this.panel._leftCorner._buttonStyleChangedSignalId) { ++ this.panel._leftCorner._button.disconnect(this.panel._leftCorner._buttonStyleChangedSignalId); ++ delete this.panel._leftCorner._buttonStyleChangedSignalId; ++ } ++ }, ++ ++ _bindSettingsChanges: function() { ++ let isVertical = this.checkIfVertical(); ++ ++ this._signalsHandler.add( ++ [ ++ Me.settings, ++ [ ++ 'changed::panel-sizes', ++ 'changed::group-apps' ++ ], ++ () => this._resetGeometry() ++ ], ++ [ ++ Me.settings, ++ [ ++ 'changed::appicon-margin', ++ 'changed::appicon-padding' ++ ], ++ () => this.taskbar.resetAppIcons() ++ ], ++ [ ++ Me.settings, ++ 'changed::show-appmenu', ++ () => this._setAppmenuVisible(Me.settings.get_boolean('show-appmenu')) ++ ], ++ [ ++ Me.settings, ++ [ ++ 'changed::showdesktop-button-width', ++ 'changed::trans-use-custom-bg', ++ 'changed::desktop-line-use-custom-color', ++ 'changed::desktop-line-custom-color', ++ 'changed::trans-bg-color' ++ ], ++ () => this._setShowDesktopButtonStyle() ++ ], ++ [ ++ Me.desktopSettings, ++ 'changed::clock-format', ++ () => { ++ this._clockFormat = null; ++ ++ if (isVertical) { ++ this._formatVerticalClock(); ++ } ++ } ++ ], ++ [ ++ Me.settings, ++ 'changed::progress-show-bar', ++ () => this._initProgressManager() ++ ], ++ [ ++ Me.settings, ++ 'changed::progress-show-count', ++ () => this._initProgressManager() ++ ] ++ ); ++ ++ if (isVertical) { ++ this._signalsHandler.add([Me.settings, 'changed::group-apps-label-max-width', () => this._resetGeometry()]); ++ } ++ }, ++ ++ _setPanelMenu: function(propName, constr, container) { ++ if (!this.statusArea[propName]) { ++ this.statusArea[propName] = this._getPanelMenu(propName, constr); ++ this.menuManager.addMenu(this.statusArea[propName].menu); ++ container.insert_child_at_index(this.statusArea[propName].container, 0); ++ } ++ }, ++ ++ _removePanelMenu: function(propName) { ++ if (this.statusArea[propName]) { ++ let parent = this.statusArea[propName].container.get_parent(); ++ ++ if (parent) { ++ parent.remove_actor(this.statusArea[propName].container); ++ } ++ ++ //calling this.statusArea[propName].destroy(); is buggy for now, gnome-shell never ++ //destroys those panel menus... ++ //since we can't destroy the menu (hence properly disconnect its signals), let's ++ //store it so the next time a panel needs one of its kind, we can reuse it instead ++ //of creating a new one ++ let panelMenu = this.statusArea[propName]; ++ ++ this.menuManager.removeMenu(panelMenu.menu); ++ Me.persistentStorage[propName].push(panelMenu); ++ this.statusArea[propName] = null; ++ } ++ }, ++ ++ _getPanelMenu: function(propName, constr) { ++ Me.persistentStorage[propName] = Me.persistentStorage[propName] || []; ++ ++ if (!Me.persistentStorage[propName].length) { ++ Me.persistentStorage[propName].push(new constr()); ++ } ++ ++ return Me.persistentStorage[propName].pop(); ++ }, ++ ++ _setPanelGhostSize: function() { ++ this._myPanelGhost.set_size(this.width, this.checkIfVertical() ? 1 : this.height); ++ }, ++ ++ _setSearchEntryOffset: function(offset) { ++ if (this.isPrimary) { ++ //In the overview, when the panel is vertical the search-entry is the only element ++ //that doesn't natively take into account the size of a side dock, as it is always ++ //centered relatively to the monitor. This looks misaligned, adjust it here so it ++ //is centered like the rest of the overview elements. ++ let paddingSide = this.getPosition() == St.Side.LEFT ? 'left' : 'right'; ++ let scaleFactor = Utils.getScaleFactor(); ++ let style = offset ? 'padding-' + paddingSide + ':' + (offset / scaleFactor) + 'px;' : null; ++ let searchEntry = Main.overview._overview._controls._searchEntry; ++ searchEntry.get_parent().set_style(style); ++ } ++ }, ++ ++ _adjustForOverview: function() { ++ let isFocusedMonitor = this.panelManager.checkIfFocusedMonitor(this.monitor); ++ let isOverview = !!Main.overview.visibleTarget; ++ let isOverviewFocusedMonitor = isOverview && isFocusedMonitor; ++ let isShown = !isOverview || isOverviewFocusedMonitor; ++ ++ this.panelBox[isShown ? 'show' : 'hide'](); ++ ++ if (isOverview) { ++ this._myPanelGhost[isOverviewFocusedMonitor ? 'show' : 'hide'](); ++ ++ if (isOverviewFocusedMonitor) { ++ Utils.getPanelGhost().set_size(1, this.geom.position == St.Side.TOP ? 0 : 32); ++ } ++ } ++ }, ++ ++ _resetGeometry: function() { ++ this.geom = this.getGeometry(); ++ this._setPanelGhostSize(); ++ this._setPanelPosition(); ++ this.taskbar.resetAppIcons(true); ++ this.dynamicTransparency.updateExternalStyle(); ++ ++ if (this.intellihide && this.intellihide.enabled) { ++ this.intellihide.reset(); ++ } ++ ++ if (this.checkIfVertical()) { ++ this.showAppsIconWrapper.realShowAppsIcon.toggleButton.set_width(this.geom.w); ++ this._refreshVerticalAlloc(); ++ this._setSearchEntryOffset(this.geom.w); ++ } ++ }, ++ ++ getGeometry: function() { ++ let scaleFactor = Utils.getScaleFactor(); ++ let panelBoxTheme = this.panelBox.get_theme_node(); ++ let lrPadding = panelBoxTheme.get_padding(St.Side.RIGHT) + panelBoxTheme.get_padding(St.Side.LEFT); ++ let topPadding = panelBoxTheme.get_padding(St.Side.TOP); ++ let tbPadding = topPadding + panelBoxTheme.get_padding(St.Side.BOTTOM); ++ let position = this.getPosition(); ++ let length = PanelSettings.getPanelLength(Me.settings, this.monitor.index) / 100; ++ let anchor = PanelSettings.getPanelAnchor(Me.settings, this.monitor.index); ++ let anchorPlaceOnMonitor = 0; ++ let gsTopPanelOffset = 0; ++ let x = 0, y = 0; ++ let w = 0, h = 0; ++ ++ const panelSize = PanelSettings.getPanelSize(Me.settings, this.monitor.index); ++ this.dtpSize = panelSize * scaleFactor; ++ ++ if (Me.settings.get_boolean('stockgs-keep-top-panel') && Main.layoutManager.primaryMonitor == this.monitor) { ++ gsTopPanelOffset = Main.layoutManager.panelBox.height - topPadding; ++ } ++ ++ if (this.checkIfVertical()) { ++ if (!Me.settings.get_boolean('group-apps')) { ++ // add window title width and side padding of _dtpIconContainer when vertical ++ this.dtpSize += Me.settings.get_int('group-apps-label-max-width') + AppIcons.DEFAULT_PADDING_SIZE * 2 / scaleFactor; ++ } ++ ++ this.sizeFunc = 'get_preferred_height', ++ this.fixedCoord = { c1: 'x1', c2: 'x2' }, ++ this.varCoord = { c1: 'y1', c2: 'y2' }; ++ ++ w = this.dtpSize; ++ h = this.monitor.height * length - tbPadding - gsTopPanelOffset; ++ } else { ++ this.sizeFunc = 'get_preferred_width'; ++ this.fixedCoord = { c1: 'y1', c2: 'y2' }; ++ this.varCoord = { c1: 'x1', c2: 'x2' }; ++ ++ w = this.monitor.width * length - lrPadding; ++ h = this.dtpSize; ++ } ++ ++ if (position == St.Side.TOP || position == St.Side.LEFT) { ++ x = this.monitor.x; ++ y = this.monitor.y + gsTopPanelOffset; ++ } else if (position == St.Side.RIGHT) { ++ x = this.monitor.x + this.monitor.width - this.dtpSize - lrPadding; ++ y = this.monitor.y + gsTopPanelOffset; ++ } else { //BOTTOM ++ x = this.monitor.x; ++ y = this.monitor.y + this.monitor.height - this.dtpSize - tbPadding; ++ } ++ ++ if (this.checkIfVertical()) { ++ let viewHeight = this.monitor.height - gsTopPanelOffset; ++ ++ if (anchor === Pos.MIDDLE) { ++ anchorPlaceOnMonitor = (viewHeight - h) / 2; ++ } else if (anchor === Pos.END) { ++ anchorPlaceOnMonitor = viewHeight - h; ++ } else { // Pos.START ++ anchorPlaceOnMonitor = 0; ++ } ++ y = y + anchorPlaceOnMonitor; ++ } else { ++ if (anchor === Pos.MIDDLE) { ++ anchorPlaceOnMonitor = (this.monitor.width - w) / 2; ++ } else if (anchor === Pos.END) { ++ anchorPlaceOnMonitor = this.monitor.width - w; ++ } else { // Pos.START ++ anchorPlaceOnMonitor = 0; ++ } ++ x = x + anchorPlaceOnMonitor; ++ } ++ ++ return { ++ x: x, y: y, ++ w: w, h: h, ++ lrPadding: lrPadding, ++ tbPadding: tbPadding, ++ position: position ++ }; ++ }, ++ ++ _setAllocationMap: function() { ++ this.allocationMap = {}; ++ let setMap = (name, actor, isBox) => this.allocationMap[name] = { ++ actor: actor, ++ isBox: isBox || 0, ++ box: new Clutter.ActorBox() ++ }; ++ ++ setMap(Pos.SHOW_APPS_BTN, this.showAppsIconWrapper.realShowAppsIcon); ++ setMap(Pos.ACTIVITIES_BTN, this.statusArea.activities ? this.statusArea.activities.container : 0); ++ setMap(Pos.LEFT_BOX, this._leftBox, 1); ++ setMap(Pos.TASKBAR, this.taskbar.actor); ++ setMap(Pos.CENTER_BOX, this._centerBox, 1); ++ setMap(Pos.DATE_MENU, this.statusArea.dateMenu.container); ++ setMap(Pos.SYSTEM_MENU, this.statusArea.aggregateMenu.container); ++ setMap(Pos.RIGHT_BOX, this._rightBox, 1); ++ setMap(Pos.DESKTOP_BTN, this._showDesktopButton); ++ }, ++ ++ _mainPanelAllocate: function(actor, box, flags) { ++ Utils.setAllocation(this.panel.actor, box, flags); ++ }, ++ ++ vfunc_allocate: function(box, flags) { ++ Utils.setAllocation(this, box, flags); ++ ++ let fixed = 0; ++ let centeredMonitorGroup; ++ let panelAlloc = new Clutter.ActorBox({ x1: 0, y1: 0, x2: this.geom.w, y2: this.geom.h }); ++ let assignGroupSize = (group, update) => { ++ group.size = 0; ++ group.tlOffset = 0; ++ group.brOffset = 0; ++ ++ group.elements.forEach(element => { ++ if (!update) { ++ element.box[this.fixedCoord.c1] = panelAlloc[this.fixedCoord.c1]; ++ element.box[this.fixedCoord.c2] = panelAlloc[this.fixedCoord.c2]; ++ element.natSize = element.actor[this.sizeFunc](-1)[1]; ++ } ++ ++ if (!group.isCentered || Pos.checkIfCentered(element.position)) { ++ group.size += element.natSize; ++ } else if (element.position == Pos.STACKED_TL) {  ++ group.tlOffset += element.natSize; ++ } else { // Pos.STACKED_BR ++ group.brOffset += element.natSize; ++ } ++ }); ++ ++ if (group.isCentered) { ++ group.size += Math.max(group.tlOffset, group.brOffset) * 2; ++ group.tlOffset = Math.max(group.tlOffset - group.brOffset, 0); ++ } ++ }; ++ let allocateGroup = (group, tlLimit, brLimit) => { ++ let startPosition = tlLimit; ++ let currentPosition = 0; ++ ++ if (group.expandableIndex >= 0) { ++ let availableSize = brLimit - tlLimit; ++ let expandable = group.elements[group.expandableIndex]; ++ let i = 0; ++ let l = this._elementGroups.length; ++ let tlSize = 0; ++ let brSize = 0; ++ ++ if (centeredMonitorGroup && (centeredMonitorGroup != group || expandable.position != Pos.CENTERED_MONITOR)) { ++ if (centeredMonitorGroup.index < group.index || (centeredMonitorGroup == group && expandable.position == Pos.STACKED_TL)) { ++ i = centeredMonitorGroup.index; ++ } else { ++ l = centeredMonitorGroup.index; ++ } ++ } ++ ++ for (; i < l; ++i) { ++ let refGroup = this._elementGroups[i]; ++ ++ if (i < group.index && (!refGroup.fixed || refGroup[this.varCoord.c2] > tlLimit)) { ++ tlSize += refGroup.size; ++ } else if (i > group.index && (!refGroup.fixed || refGroup[this.varCoord.c1] < brLimit)) { ++ brSize += refGroup.size; ++ } ++ } ++ ++ if (group.isCentered) { ++ availableSize -= Math.max(tlSize, brSize) * 2; ++ } else { ++ availableSize -= tlSize + brSize; ++ } ++ ++ if (availableSize < group.size) { ++ expandable.natSize -= (group.size - availableSize) * (group.isCentered && !Pos.checkIfCentered(expandable.position) ? .5 : 1); ++ assignGroupSize(group, true); ++ } ++ } ++ ++ if (group.isCentered) { ++ startPosition = tlLimit + (brLimit - tlLimit - group.size) * .5; ++ } else if (group.position == Pos.STACKED_BR) { ++ startPosition = brLimit - group.size; ++ } ++ ++ currentPosition = group.tlOffset + startPosition; ++ ++ group.elements.forEach(element => { ++ element.box[this.varCoord.c1] = Math.round(currentPosition); ++ element.box[this.varCoord.c2] = Math.round((currentPosition += element.natSize)); ++ ++ if (element.isBox) { ++ return element.actor.allocate(element.box, flags, true); ++ } ++ ++ Utils.allocate(element.actor, element.box, flags, false); ++ }); ++ ++ group[this.varCoord.c1] = startPosition; ++ group[this.varCoord.c2] = currentPosition; ++ group.fixed = 1; ++ ++fixed; ++ }; ++ ++ Utils.allocate(this.panel.actor, panelAlloc, flags); ++ ++ this._elementGroups.forEach(group => { ++ group.fixed = 0; ++ ++ assignGroupSize(group); ++ ++ if (group.position == Pos.CENTERED_MONITOR) { ++ centeredMonitorGroup = group; ++ } ++ }); ++ ++ if (centeredMonitorGroup) { ++ allocateGroup(centeredMonitorGroup, panelAlloc[this.varCoord.c1], panelAlloc[this.varCoord.c2]); ++ } ++ ++ let iterations = 0; //failsafe ++ while (fixed < this._elementGroups.length && ++iterations < 10) { ++ for (let i = 0, l = this._elementGroups.length; i < l; ++i) { ++ let group = this._elementGroups[i]; ++ ++ if (group.fixed) { ++ continue; ++ } ++ ++ let prevGroup = this._elementGroups[i - 1]; ++ let nextGroup = this._elementGroups[i + 1]; ++ let prevLimit = prevGroup && prevGroup.fixed ? prevGroup[this.varCoord.c2] : ++ centeredMonitorGroup && group.index > centeredMonitorGroup.index ? centeredMonitorGroup[this.varCoord.c2] : panelAlloc[this.varCoord.c1]; ++ let nextLimit = nextGroup && nextGroup.fixed ? nextGroup[this.varCoord.c1] : ++ centeredMonitorGroup && group.index < centeredMonitorGroup.index ? centeredMonitorGroup[this.varCoord.c1] : panelAlloc[this.varCoord.c2]; ++ ++ if (group.position == Pos.STACKED_TL) { ++ allocateGroup(group, panelAlloc[this.varCoord.c1], nextLimit); ++ } else if (group.position == Pos.STACKED_BR) { ++ allocateGroup(group, prevLimit, panelAlloc[this.varCoord.c2]); ++ } else if ((!prevGroup || prevGroup.fixed) && (!nextGroup || nextGroup.fixed)) { // CENTERED ++ allocateGroup(group, prevLimit, nextLimit); ++ } ++ } ++ } ++ ++ if (this.geom.position == St.Side.TOP) { ++ let childBoxLeftCorner = new Clutter.ActorBox(); ++ let childBoxRightCorner = new Clutter.ActorBox(); ++ let currentCornerSize = this.cornerSize; ++ let panelAllocFixedSize = box[this.fixedCoord.c2] - box[this.fixedCoord.c1]; ++ ++ [ , this.cornerSize] = this.panel._leftCorner.actor[this.sizeFunc](-1); ++ childBoxLeftCorner[this.varCoord.c1] = 0; ++ childBoxLeftCorner[this.varCoord.c2] = this.cornerSize; ++ childBoxLeftCorner[this.fixedCoord.c1] = panelAllocFixedSize; ++ childBoxLeftCorner[this.fixedCoord.c2] = panelAllocFixedSize + this.cornerSize; ++ ++ childBoxRightCorner[this.varCoord.c1] = box[this.varCoord.c2] - this.cornerSize; ++ childBoxRightCorner[this.varCoord.c2] = box[this.varCoord.c2]; ++ childBoxRightCorner[this.fixedCoord.c1] = panelAllocFixedSize; ++ childBoxRightCorner[this.fixedCoord.c2] = panelAllocFixedSize + this.cornerSize; ++ ++ Utils.allocate(this.panel._leftCorner.actor, childBoxLeftCorner, flags); ++ Utils.allocate(this.panel._rightCorner.actor, childBoxRightCorner, flags); ++ ++ if (this.cornerSize != currentCornerSize) { ++ this._setPanelClip(); ++ } ++ } ++ }, ++ ++ _setPanelPosition: function() { ++ let clipContainer = this.panelBox.get_parent(); ++ ++ this.set_size(this.geom.w, this.geom.h); ++ clipContainer.set_position(this.geom.x, this.geom.y); ++ ++ this._setVertical(this.panel.actor, this.checkIfVertical()); ++ ++ // styles for theming ++ Object.keys(St.Side).forEach(p => { ++ let cssName = 'dashtopanel' + p.charAt(0) + p.slice(1).toLowerCase(); ++ ++ this.panel.actor[(St.Side[p] == this.geom.position ? 'add' : 'remove') + '_style_class_name'](cssName); ++ }); ++ ++ this._setPanelClip(clipContainer); ++ ++ Main.layoutManager._updateHotCorners(); ++ Main.layoutManager._updatePanelBarrier(this); ++ }, ++ ++ _setPanelClip: function(clipContainer) { ++ clipContainer = clipContainer || this.panelBox.get_parent(); ++ this._timeoutsHandler.add([T7, 0, () => Utils.setClip(clipContainer, clipContainer.x, clipContainer.y, this.panelBox.width, this.panelBox.height + this.cornerSize)]); ++ }, ++ ++ _onButtonPress: function(actor, event) { ++ let type = event.type(); ++ let isPress = type == Clutter.EventType.BUTTON_PRESS; ++ let button = isPress ? event.get_button() : -1; ++ let [stageX, stageY] = event.get_coords(); ++ ++ if (button == 3 && global.stage.get_actor_at_pos(Clutter.PickMode.REACTIVE, stageX, stageY) == this.panel.actor) { ++ //right click on an empty part of the panel, temporarily borrow and display the showapps context menu ++ Main.layoutManager.setDummyCursorGeometry(stageX, stageY, 0, 0); ++ ++ this.showAppsIconWrapper.createMenu(); ++ this.showAppsIconWrapper._menu.sourceActor = Main.layoutManager.dummyCursor; ++ this.showAppsIconWrapper.popupMenu(); ++ ++ return Clutter.EVENT_STOP; ++ } else if (Main.modalCount > 0 || event.get_source() != actor || ++ (!isPress && type != Clutter.EventType.TOUCH_BEGIN) || ++ (isPress && button != 1)) { ++ return Clutter.EVENT_PROPAGATE; ++ } ++ ++ let params = this.checkIfVertical() ? [stageY, 'y', 'height'] : [stageX, 'x', 'width']; ++ let dragWindow = this._getDraggableWindowForPosition.apply(this, params.concat(['maximized_' + this.getOrientation() + 'ly'])); ++ ++ if (!dragWindow) ++ return Clutter.EVENT_PROPAGATE; ++ ++ global.display.begin_grab_op(dragWindow, ++ Meta.GrabOp.MOVING, ++ false, /* pointer grab */ ++ true, /* frame action */ ++ button, ++ event.get_state(), ++ event.get_time(), ++ stageX, stageY); ++ ++ return Clutter.EVENT_STOP; ++ }, ++ ++ _getDraggableWindowForPosition: function(stageCoord, coord, dimension, maximizedProp) { ++ let workspace = Utils.getCurrentWorkspace(); ++ let allWindowsByStacking = global.display.sort_windows_by_stacking( ++ workspace.list_windows() ++ ).reverse(); ++ ++ return Utils.find(allWindowsByStacking, metaWindow => { ++ let rect = metaWindow.get_frame_rect(); ++ ++ return metaWindow.get_monitor() == this.monitor.index && ++ metaWindow.showing_on_its_workspace() && ++ metaWindow.get_window_type() != Meta.WindowType.DESKTOP && ++ metaWindow[maximizedProp] && ++ stageCoord > rect[coord] && stageCoord < rect[coord] + rect[dimension]; ++ }); ++ }, ++ ++ _onBoxActorAdded: function(box) { ++ if (this.checkIfVertical()) { ++ this._setVertical(box, true); ++ } ++ }, ++ ++ _refreshVerticalAlloc: function() { ++ this._setVertical(this._centerBox, true); ++ this._setVertical(this._rightBox, true); ++ this._formatVerticalClock(); ++ }, ++ ++ _setVertical: function(actor, isVertical) { ++ let _set = (actor, isVertical) => { ++ if (!actor || actor instanceof Dash.DashItemContainer || actor instanceof Taskbar.TaskbarItemContainer) { ++ return; ++ } ++ ++ if (actor instanceof St.BoxLayout) { ++ actor.vertical = isVertical; ++ } else if ((actor._delegate || actor) instanceof PanelMenu.ButtonBox && actor != this.statusArea.appMenu) { ++ let child = actor.get_first_child(); ++ ++ if (isVertical && !actor.visible && !actor._dtpVisibleId) { ++ this._unmappedButtons.push(actor); ++ actor._dtpVisibleId = actor.connect('notify::visible', () => { ++ this._disconnectVisibleId(actor); ++ this._refreshVerticalAlloc(); ++ }); ++ actor._dtpDestroyId = actor.connect('destroy', () => this._disconnectVisibleId(actor)); ++ } ++ ++ if (child) { ++ let [, natWidth] = actor.get_preferred_width(-1); ++ ++ child.x_align = Clutter.ActorAlign[isVertical ? 'CENTER' : 'START']; ++ actor.set_width(isVertical ? this.dtpSize : -1); ++ isVertical = isVertical && (natWidth > this.dtpSize); ++ actor[(isVertical ? 'add' : 'remove') + '_style_class_name']('vertical'); ++ } ++ } ++ ++ actor.get_children().forEach(c => _set(c, isVertical)); ++ }; ++ ++ _set(actor, false); ++ _set(actor, isVertical); ++ }, ++ ++ _disconnectVisibleId: function(actor) { ++ actor.disconnect(actor._dtpVisibleId); ++ actor.disconnect(actor._dtpDestroyId); ++ ++ delete actor._dtpVisibleId; ++ delete actor._dtpDestroyId; ++ ++ this._unmappedButtons.splice(this._unmappedButtons.indexOf(actor), 1); ++ }, ++ ++ _setAppmenuVisible: function(isVisible) { ++ let parent; ++ let appMenu = this.statusArea.appMenu; ++ ++ if(appMenu) ++ parent = appMenu.container.get_parent(); ++ ++ if (parent) { ++ parent.remove_child(appMenu.container); ++ } ++ ++ if (isVisible && appMenu) { ++ this._leftBox.insert_child_above(appMenu.container, null); ++ } ++ }, ++ ++ _formatVerticalClock: function() { ++ // https://github.com/GNOME/gnome-desktop/blob/master/libgnome-desktop/gnome-wall-clock.c#L310 ++ if (this.statusArea.dateMenu) { ++ let datetime = this.statusArea.dateMenu._clock.clock; ++ let datetimeParts = datetime.split(' '); ++ let time = datetimeParts[1]; ++ let clockText = this.statusArea.dateMenu._clockDisplay.clutter_text; ++ let setClockText = text => { ++ let stacks = text instanceof Array; ++ let separator = '\n‧‧\n'; ++ ++ clockText.set_text((stacks ? text.join(separator) : text).trim()); ++ clockText.set_use_markup(stacks); ++ clockText.get_allocation_box(); ++ ++ return !clockText.get_layout().is_ellipsized(); ++ }; ++ ++ if (clockText.ellipsize == Pango.EllipsizeMode.NONE) { ++ //on gnome-shell 3.36.4, the clockdisplay isn't ellipsize anymore, so set it back ++ clockText.ellipsize = Pango.EllipsizeMode.END; ++ } ++ ++ if (!time) { ++ datetimeParts = datetime.split(' '); ++ time = datetimeParts.pop(); ++ datetimeParts = [datetimeParts.join(' '), time]; ++ } ++ ++ if (!setClockText(datetime) && ++ !setClockText(datetimeParts) && ++ !setClockText(time)) { ++ let timeParts = time.split('∶'); ++ ++ if (!this._clockFormat) { ++ this._clockFormat = Me.desktopSettings.get_string('clock-format'); ++ } ++ ++ if (this._clockFormat == '12h') { ++ timeParts.push.apply(timeParts, timeParts.pop().split(' ')); ++ } ++ ++ setClockText(timeParts); ++ } ++ } ++ }, ++ ++ _setShowDesktopButton: function (add) { ++ if (add) { ++ if(this._showDesktopButton) ++ return; ++ ++ this._showDesktopButton = new St.Bin({ style_class: 'showdesktop-button', ++ reactive: true, ++ can_focus: true, ++ // x_fill: true, ++ // y_fill: true, ++ track_hover: true }); ++ ++ this._setShowDesktopButtonStyle(); ++ ++ this._showDesktopButton.connect('button-press-event', () => this._onShowDesktopButtonPress()); ++ this._showDesktopButton.connect('enter-event', () => { ++ this._showDesktopButton.add_style_class_name(this._getBackgroundBrightness() ? ++ 'showdesktop-button-light-hovered' : 'showdesktop-button-dark-hovered'); ++ ++ if (Me.settings.get_boolean('show-showdesktop-hover')) { ++ this._timeoutsHandler.add([T4, Me.settings.get_int('show-showdesktop-delay'), () => { ++ this._hiddenDesktopWorkspace = Utils.DisplayWrapper.getWorkspaceManager().get_active_workspace(); ++ this._toggleWorkspaceWindows(true, this._hiddenDesktopWorkspace); ++ }]); ++ } ++ }); ++ ++ this._showDesktopButton.connect('leave-event', () => { ++ this._showDesktopButton.remove_style_class_name(this._getBackgroundBrightness() ? ++ 'showdesktop-button-light-hovered' : 'showdesktop-button-dark-hovered'); ++ ++ if (Me.settings.get_boolean('show-showdesktop-hover')) { ++ if (this._timeoutsHandler.getId(T4)) { ++ this._timeoutsHandler.remove(T4); ++ } else if (this._hiddenDesktopWorkspace) { ++ this._toggleWorkspaceWindows(false, this._hiddenDesktopWorkspace); ++ } ++  } ++ }); ++ ++ this.panel.actor.add_child(this._showDesktopButton); ++ } else { ++ if(!this._showDesktopButton) ++ return; ++ ++ this.panel.actor.remove_child(this._showDesktopButton); ++ this._showDesktopButton.destroy(); ++ this._showDesktopButton = null; ++ } ++ }, ++ ++ _setShowDesktopButtonStyle: function() { ++ let rgb = this._getBackgroundBrightness() ? "rgba(55, 55, 55, .2)" : "rgba(200, 200, 200, .2)"; ++ ++ let isLineCustom = Me.settings.get_boolean('desktop-line-use-custom-color'); ++ rgb = isLineCustom ? Me.settings.get_string('desktop-line-custom-color') : rgb; ++ ++ if (this._showDesktopButton) { ++ let buttonSize = Me.settings.get_int('showdesktop-button-width') + 'px;'; ++ let isVertical = this.checkIfVertical(); ++ ++ let sytle = "border: 0 solid " + rgb + ";"; ++ sytle += isVertical ? 'border-top-width:1px;height:' + buttonSize : 'border-left-width:1px;width:' + buttonSize; ++ ++ this._showDesktopButton.set_style(sytle); ++ this._showDesktopButton[(isVertical ? 'x' : 'y') + '_expand'] = true; ++ } ++ }, ++ ++ // _getBackgroundBrightness: return true if panel has a bright background color ++ _getBackgroundBrightness: function() { ++ return Utils.checkIfColorIsBright(this.dynamicTransparency.backgroundColorRgb); ++ }, ++ ++ _toggleWorkspaceWindows: function(hide, workspace) { ++ let time = Me.settings.get_int('show-showdesktop-time') * .001; ++ ++ workspace.list_windows().forEach(w => { ++ if (!w.minimized) { ++ let tweenOpts = { ++ opacity: hide ? 0 : 255, ++ time: time, ++ transition: 'easeOutQuad' ++ }; ++ ++ Utils.animateWindowOpacity(w.get_compositor_private(), tweenOpts); ++ } ++ }); ++ }, ++ ++ _onShowDesktopButtonPress: function() { ++ let label = 'trackerFocusApp'; ++ ++ this._signalsHandler.removeWithLabel(label); ++ this._timeoutsHandler.remove(T5); ++ ++ if(this._restoreWindowList && this._restoreWindowList.length) { ++ this._timeoutsHandler.remove(T4); ++ ++ let current_workspace = Utils.DisplayWrapper.getWorkspaceManager().get_active_workspace(); ++ let windows = current_workspace.list_windows(); ++ this._restoreWindowList.forEach(function(w) { ++ if(windows.indexOf(w) > -1) ++ Main.activateWindow(w); ++ }); ++ this._restoreWindowList = null; ++ } else { ++ let current_workspace = Utils.DisplayWrapper.getWorkspaceManager().get_active_workspace(); ++ let windows = current_workspace.list_windows().filter(function (w) { ++ return w.showing_on_its_workspace() && !w.skip_taskbar; ++ }); ++ windows = global.display.sort_windows_by_stacking(windows); ++ ++ windows.forEach(function(w) { ++ w.minimize(); ++ }); ++ ++ this._restoreWindowList = windows; ++ ++ this._timeoutsHandler.add([T5, 20, () => this._signalsHandler.addWithLabel( ++ label, ++ [ ++ tracker, ++ 'notify::focus-app', ++ () => this._restoreWindowList = null ++ ] ++ )]); ++ } ++ ++ Main.overview.hide(); ++ }, ++ ++ _onPanelMouseScroll: function(actor, event) { ++ let scrollAction = Me.settings.get_string('scroll-panel-action'); ++ let direction = Utils.getMouseScrollDirection(event); ++ ++ if (!this._checkIfIgnoredScrollSource(event.get_source()) && !this._timeoutsHandler.getId(T6)) { ++ if (direction && scrollAction === 'SWITCH_WORKSPACE') { ++ let args = [global.display]; ++ ++ //adjust for horizontal workspaces ++ if (Utils.DisplayWrapper.getWorkspaceManager().layout_rows === 1) { ++ direction = direction == 'up' ? 'left' : 'right'; ++ } ++ ++ //gnome-shell < 3.30 needs an additional "screen" param ++ global.screen ? args.push(global.screen) : 0; ++ ++ let showWsPopup = Me.settings.get_boolean('scroll-panel-show-ws-popup'); ++ showWsPopup ? 0 : Main.wm._workspaceSwitcherPopup = { display: () => {} }; ++ Main.wm._showWorkspaceSwitcher.apply(Main.wm, args.concat([0, { get_name: () => 'switch---' + direction }])); ++ showWsPopup ? 0 : Main.wm._workspaceSwitcherPopup = null; ++ } else if (direction && scrollAction === 'CYCLE_WINDOWS') { ++ let windows = this.taskbar.getAppInfos().reduce((ws, appInfo) => ws.concat(appInfo.windows), []); ++ ++ Utils.activateSiblingWindow(windows, direction); ++ } else if (scrollAction === 'CHANGE_VOLUME' && !event.is_pointer_emulated()) { ++ var proto = Volume.Indicator.prototype; ++ var func = proto._handleScrollEvent || proto.vfunc_scroll_event || proto._onScrollEvent; ++ ++ func.call(Main.panel.statusArea.aggregateMenu._volume, 0, event); ++ } else { ++ return; ++ } ++ ++ var scrollDelay = Me.settings.get_int('scroll-panel-delay'); ++ ++ if (scrollDelay) { ++ this._timeoutsHandler.add([T6, scrollDelay, () => {}]); ++ } ++ } ++ }, ++ ++ _checkIfIgnoredScrollSource: function(source) { ++ let ignoredConstr = ['WorkspaceIndicator']; ++ ++ return source.get_parent()._dtpIgnoreScroll || ignoredConstr.indexOf(source.constructor.name) >= 0; ++ }, ++ ++ _initProgressManager: function() { ++ if(!this.progressManager && (Me.settings.get_boolean('progress-show-bar') || Me.settings.get_boolean('progress-show-count'))) ++ this.progressManager = new Progress.ProgressManager(); ++ }, ++}); ++ ++var dtpSecondaryPanel = Utils.defineClass({ ++ Name: 'DashToPanel-SecondaryPanel', ++ Extends: St.Widget, ++ ++ _init: function(params) { ++ this.callParent('_init', params); ++ }, ++ ++ vfunc_allocate: function(box, flags) { ++ Utils.setAllocation(this, box, flags); ++ } ++}); ++ ++var dtpSecondaryAggregateMenu = Utils.defineClass({ ++ Name: 'DashToPanel-SecondaryAggregateMenu', ++ Extends: PanelMenu.Button, ++ ++ _init: function() { ++ this.callParent('_init', 0.0, C_("System menu in the top bar", "System"), false); ++ ++ Utils.wrapActor(this); ++ ++ this.menu.actor.add_style_class_name('aggregate-menu'); ++ ++ let menuLayout = new Panel.AggregateLayout(); ++ this.menu.box.set_layout_manager(menuLayout); ++ ++ this._indicators = new St.BoxLayout({ style_class: 'panel-status-indicators-box' }); ++ this.actor.add_child(this._indicators); ++ ++ this._power = new imports.ui.status.power.Indicator(); ++ this._volume = new imports.ui.status.volume.Indicator(); ++ this._brightness = new imports.ui.status.brightness.Indicator(); ++ this._system = new imports.ui.status.system.Indicator(); ++ ++ if (Config.PACKAGE_VERSION >= '3.28') { ++ this._thunderbolt = new imports.ui.status.thunderbolt.Indicator(); ++ this._indicators.add_child(Utils.getIndicators(this._thunderbolt)); ++ } ++ ++ if (Config.PACKAGE_VERSION < '3.37') { ++ this._screencast = new imports.ui.status.screencast.Indicator(); ++ this._indicators.add_child(Utils.getIndicators(this._screencast)); ++ } ++ ++ if (Config.PACKAGE_VERSION >= '3.24') { ++ this._nightLight = new imports.ui.status.nightLight.Indicator(); ++ this._indicators.add_child(Utils.getIndicators(this._nightLight)); ++ } ++ ++ if (Config.HAVE_NETWORKMANAGER && Config.PACKAGE_VERSION >= '3.24') { ++ this._network = new imports.ui.status.network.NMApplet(); ++ this._indicators.add_child(Utils.getIndicators(this._network)); ++ } ++ ++ if (Config.HAVE_BLUETOOTH) { ++ this._bluetooth = new imports.ui.status.bluetooth.Indicator(); ++ this._indicators.add_child(Utils.getIndicators(this._bluetooth)); ++ } ++ ++ this._indicators.add_child(Utils.getIndicators(this._volume)); ++ this._indicators.add_child(Utils.getIndicators(this._power)); ++ ++ this.menu.addMenuItem(this._volume.menu); ++ this._volume._volumeMenu._readOutput(); ++ this._volume._volumeMenu._readInput(); ++ ++ this.menu.addMenuItem(this._brightness.menu); ++ this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); ++ ++ if (this._network) { ++ this.menu.addMenuItem(this._network.menu); ++ } ++ ++ if (this._bluetooth) { ++ this.menu.addMenuItem(this._bluetooth.menu); ++ } ++ ++ this.menu.addMenuItem(this._power.menu); ++ this._power._sync(); ++ ++ if (this._nightLight) { ++ this.menu.addMenuItem(this._nightLight.menu); ++ } ++ ++ this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); ++ this.menu.addMenuItem(this._system.menu); ++ ++ menuLayout.addSizeChild(this._power.menu.actor); ++ menuLayout.addSizeChild(this._system.menu.actor); ++ }, ++}); +diff --git a/extensions/dash-to-panel/panelManager.js b/extensions/dash-to-panel/panelManager.js +new file mode 100755 +index 00000000..d572d8b7 +--- /dev/null ++++ b/extensions/dash-to-panel/panelManager.js +@@ -0,0 +1,789 @@ ++/* ++ * This file is part of the Dash-To-Panel extension for Gnome 3 ++ * ++ * 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 2 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 . ++ * ++ * Credits: ++ * This file is based on code from the Dash to Dock extension by micheleg ++ * and code from the Taskbar extension by Zorin OS ++ * ++ * Code to re-anchor the panel was taken from Thoma5 BottomPanel: ++ * https://github.com/Thoma5/gnome-shell-extension-bottompanel ++ * ++ * Pattern for moving clock based on Frippery Move Clock by R M Yorston ++ * http://frippery.org/extensions/ ++ * ++ * Some code was also adapted from the upstream Gnome Shell source code. ++ */ ++ ++const Me = imports.misc.extensionUtils.getCurrentExtension(); ++const Overview = Me.imports.overview; ++const Panel = Me.imports.panel; ++const PanelSettings = Me.imports.panelSettings; ++const Proximity = Me.imports.proximity; ++const Taskbar = Me.imports.taskbar; ++const Utils = Me.imports.utils; ++ ++const Config = imports.misc.config; ++const Lang = imports.lang; ++const Gi = imports._gi; ++const GLib = imports.gi.GLib; ++const Clutter = imports.gi.Clutter; ++const Meta = imports.gi.Meta; ++const Shell = imports.gi.Shell; ++const St = imports.gi.St; ++ ++const AppDisplay = imports.ui.appDisplay; ++const BoxPointer = imports.ui.boxpointer; ++const Dash = imports.ui.dash; ++const IconGrid = imports.ui.iconGrid; ++const LookingGlass = imports.ui.lookingGlass; ++const Main = imports.ui.main; ++const PanelMenu = imports.ui.panelMenu; ++const Layout = imports.ui.layout; ++const WM = imports.ui.windowManager; ++const WorkspacesView = imports.ui.workspacesView; ++ ++var dtpPanelManager = Utils.defineClass({ ++ Name: 'DashToPanel.PanelManager', ++ ++ _init: function() { ++ this.overview = new Overview.dtpOverview(); ++ this.panelsElementPositions = {}; ++ ++ this._saveMonitors(); ++ ++ Utils.getAppDisplayViews().forEach(v => { ++ Utils.wrapActor(v.view); ++ Utils.wrapActor(v.view._grid); ++ }); ++ }, ++ ++ enable: function(reset) { ++ let dtpPrimaryIndex = Me.settings.get_int('primary-monitor'); ++ ++ this.dtpPrimaryMonitor = Main.layoutManager.monitors[dtpPrimaryIndex] || Main.layoutManager.primaryMonitor; ++ this.proximityManager = new Proximity.ProximityManager(); ++ ++ this._oldGetShowAppsButton = imports.ui.main.overview.dash.showAppsButton; ++ ++ Utils.wrapActor(Main.panel); ++ Utils.wrapActor(Main.overview.dash || 0); ++ ++ this.primaryPanel = this._createPanel(this.dtpPrimaryMonitor, Me.settings.get_boolean('stockgs-keep-top-panel')); ++ this.allPanels = [ this.primaryPanel ]; ++ ++ this.overview.enable(this.primaryPanel); ++ ++ if (Me.settings.get_boolean('multi-monitors')) { ++ Main.layoutManager.monitors.filter(m => m != this.dtpPrimaryMonitor).forEach(m => { ++ this.allPanels.push(this._createPanel(m, true)); ++ }); ++ } ++ ++ global.dashToPanel.panels = this.allPanels; ++ global.dashToPanel.emit('panels-created'); ++ ++ this.allPanels.forEach(p => { ++ let panelPosition = p.getPosition(); ++ let leftOrRight = (panelPosition == St.Side.LEFT || panelPosition == St.Side.RIGHT); ++ ++ p.panelBox.set_size( ++ leftOrRight ? -1 : p.geom.w + p.geom.lrPadding, ++ leftOrRight ? p.geom.h + p.geom.tbPadding : -1 ++ ); ++ ++ this._findPanelMenuButtons(p.panelBox).forEach(pmb => this._adjustPanelMenuButton(pmb, p.monitor, panelPosition)); ++ ++ p.taskbar.iconAnimator.start(); ++ }); ++ ++ //in 3.32, BoxPointer now inherits St.Widget ++ if (BoxPointer.BoxPointer.prototype.vfunc_get_preferred_height) { ++ let panelManager = this; ++ ++ Utils.hookVfunc(BoxPointer.BoxPointer.prototype, 'get_preferred_height', function(forWidth) { ++ let alloc = { min_size: 0, natural_size: 0 }; ++ ++ [alloc.min_size, alloc.natural_size] = this.vfunc_get_preferred_height(forWidth); ++ ++ return panelManager._getBoxPointerPreferredHeight(this, alloc); ++ }); ++ } ++ ++ this._updatePanelElementPositions(); ++ this.setFocusedMonitor(this.dtpPrimaryMonitor); ++ ++ if (this.primaryPanel.checkIfVertical()) { ++ Main.wm._getPositionForDirection = newGetPositionForDirection; ++ } ++ ++ if (reset) return; ++ ++ if (Config.PACKAGE_VERSION > '3.35.1') { ++ this._oldDoSpringAnimation = AppDisplay.BaseAppView.prototype._doSpringAnimation; ++ AppDisplay.BaseAppView.prototype._doSpringAnimation = newDoSpringAnimation; ++ } ++ ++ this._oldUpdatePanelBarrier = Main.layoutManager._updatePanelBarrier; ++ Main.layoutManager._updatePanelBarrier = (panel) => { ++ let panelUpdates = panel ? [panel] : this.allPanels; ++ ++ panelUpdates.forEach(p => newUpdatePanelBarrier.call(Main.layoutManager, p)); ++ }; ++ Main.layoutManager._updatePanelBarrier(); ++ ++ this._oldUpdateHotCorners = Main.layoutManager._updateHotCorners; ++ Main.layoutManager._updateHotCorners = Lang.bind(Main.layoutManager, newUpdateHotCorners); ++ Main.layoutManager._updateHotCorners(); ++ ++ this._forceHotCornerId = Me.settings.connect('changed::stockgs-force-hotcorner', () => Main.layoutManager._updateHotCorners()); ++ ++ if (Main.layoutManager._interfaceSettings) { ++ this._enableHotCornersId = Main.layoutManager._interfaceSettings.connect('changed::enable-hot-corners', () => Main.layoutManager._updateHotCorners()); ++ } ++ ++ Main.overview.getShowAppsButton = this._newGetShowAppsButton.bind(this); ++ ++ this._needsDashItemContainerAllocate = !Dash.DashItemContainer.prototype.hasOwnProperty('vfunc_allocate'); ++ ++ if (this._needsDashItemContainerAllocate) { ++ Utils.hookVfunc(Dash.DashItemContainer.prototype, 'allocate', this._newDashItemContainerAllocate); ++ } ++ ++ LookingGlass.LookingGlass.prototype._oldResize = LookingGlass.LookingGlass.prototype._resize; ++ LookingGlass.LookingGlass.prototype._resize = _newLookingGlassResize; ++ ++ LookingGlass.LookingGlass.prototype._oldOpen = LookingGlass.LookingGlass.prototype.open; ++ LookingGlass.LookingGlass.prototype.open = _newLookingGlassOpen; ++ ++ this._signalsHandler = new Utils.GlobalSignalsHandler(); ++ ++ if (Config.PACKAGE_VERSION > '3.35.9') { ++ let currentAppsView; ++ ++ this._oldAnimateIconPosition = IconGrid.animateIconPosition; ++ IconGrid.animateIconPosition = newAnimateIconPosition.bind(this); ++ ++ this._signalsHandler.add( ++ [ ++ Utils.DisplayWrapper.getScreen(), ++ 'window-entered-monitor', ++ () => this._needsIconAllocate = 1 ++ ] ++ ); ++ ++ Utils.getAppDisplayViews().forEach(v => { ++ if (!v.control || v.control.has_style_pseudo_class('checked')) { ++ currentAppsView = v; ++ } ++ ++ if (v.control) { ++ this._signalsHandler.add( ++ [ ++ v.control, ++ 'clicked', ++ () => { ++ this._needsIconAllocate = currentAppsView != v; ++ currentAppsView = v; ++ } ++ ] ++ ); ++ } ++ ++ this._signalsHandler.add( ++ [ ++ v.view, ++ 'notify::visible', ++ () => this._needsIconAllocate = !(currentAppsView != v && !v.view.visible) ++ ], ++ [ ++ v.view._grid, ++ 'animation-done', ++ () => this._needsIconAllocate = 0 ++ ] ++ ); ++ }); ++ } ++ ++ //listen settings ++ this._signalsHandler.add( ++ [ ++ Me.settings, ++ [ ++ 'changed::primary-monitor', ++ 'changed::multi-monitors', ++ 'changed::isolate-monitors', ++ 'changed::panel-positions', ++ 'changed::panel-lengths', ++ 'changed::panel-anchors', ++ 'changed::stockgs-keep-top-panel' ++ ], ++ () => this._reset() ++ ], ++ [ ++ Me.settings, ++ 'changed::panel-element-positions', ++ () => this._updatePanelElementPositions() ++ ], ++ [ ++ Me.settings, ++ 'changed::intellihide-key-toggle-text', ++ () => this._setKeyBindings(true) ++ ], ++ [ ++ Utils.DisplayWrapper.getMonitorManager(), ++ 'monitors-changed', ++ () => { ++ if (Main.layoutManager.primaryMonitor) { ++ this._saveMonitors(); ++ this._reset(); ++ } ++ } ++ ] ++ ); ++ ++ Panel.panelBoxes.forEach(c => this._signalsHandler.add( ++ [Main.panel[c], 'actor-added', (parent, child) => this._adjustPanelMenuButton(this._getPanelMenuButton(child), this.primaryPanel.monitor, this.primaryPanel.getPosition())] ++ )); ++ ++ this._setKeyBindings(true); ++ ++ // keep GS overview.js from blowing away custom panel styles ++ if(!Me.settings.get_boolean('stockgs-keep-top-panel')) ++ Object.defineProperty(Main.panel, "style", {configurable: true, set: function(v) {}}); ++ }, ++ ++ disable: function(reset) { ++ this.overview.disable(); ++ this.proximityManager.destroy(); ++ ++ this.allPanels.forEach(p => { ++ p.taskbar.iconAnimator.pause(); ++ ++ this._findPanelMenuButtons(p.panelBox).forEach(pmb => { ++ if (pmb.menu._boxPointer._dtpGetPreferredHeightId) { ++ pmb.menu._boxPointer._container.disconnect(pmb.menu._boxPointer._dtpGetPreferredHeightId); ++ } ++ ++ pmb.menu._boxPointer.sourceActor = pmb.menu._boxPointer._dtpSourceActor; ++ delete pmb.menu._boxPointer._dtpSourceActor; ++ pmb.menu._boxPointer._userArrowSide = St.Side.TOP; ++ }) ++ ++ this._removePanelBarriers(p); ++ ++ p.disable(); ++ ++ let clipContainer = p.panelBox.get_parent(); ++ ++ Main.layoutManager._untrackActor(p.panelBox); ++ Main.layoutManager.removeChrome(clipContainer); ++ ++ if (p.isStandalone) { ++ p.panelBox.destroy(); ++ } else { ++ p.panelBox.remove_child(p); ++ p.remove_child(p.panel.actor); ++ p.panelBox.add(p.panel.actor); ++ ++ p.panelBox.set_position(clipContainer.x, clipContainer.y); ++ ++ clipContainer.remove_child(p.panelBox); ++ Main.layoutManager.addChrome(p.panelBox, { affectsStruts: true, trackFullscreen: true }); ++ } ++ }); ++ ++ if (BoxPointer.BoxPointer.prototype.vfunc_get_preferred_height) { ++ Utils.hookVfunc(BoxPointer.BoxPointer.prototype, 'get_preferred_height', BoxPointer.BoxPointer.prototype.vfunc_get_preferred_height); ++ } ++ ++ delete Main.wm._getPositionForDirection; ++ ++ if (Main.layoutManager.primaryMonitor) { ++ Main.layoutManager.panelBox.set_position(Main.layoutManager.primaryMonitor.x, Main.layoutManager.primaryMonitor.y); ++ Main.layoutManager.panelBox.set_size(Main.layoutManager.primaryMonitor.width, -1); ++ } ++ ++ if (reset) return; ++ ++ this._setKeyBindings(false); ++ ++ this._signalsHandler.destroy(); ++ ++ Main.layoutManager._updateHotCorners = this._oldUpdateHotCorners; ++ Main.layoutManager._updateHotCorners(); ++ ++ Me.settings.disconnect(this._forceHotCornerId); ++ ++ if (this._enableHotCornersId) { ++ Main.layoutManager._interfaceSettings.disconnect(this._enableHotCornersId); ++ } ++ ++ Main.layoutManager._updatePanelBarrier = this._oldUpdatePanelBarrier; ++ Main.layoutManager._updatePanelBarrier(); ++ ++ Utils.getPanelGhost().set_size(-1, -1); ++ ++ if (this._oldDoSpringAnimation) { ++ AppDisplay.BaseAppView.prototype._doSpringAnimation = this._oldDoSpringAnimation; ++ } ++ ++ if (this._oldAnimateIconPosition) { ++ IconGrid.animateIconPosition = this._oldAnimateIconPosition; ++ } ++ ++ LookingGlass.LookingGlass.prototype._resize = LookingGlass.LookingGlass.prototype._oldResize; ++ delete LookingGlass.LookingGlass.prototype._oldResize; ++ ++ LookingGlass.LookingGlass.prototype.open = LookingGlass.LookingGlass.prototype._oldOpen; ++ delete LookingGlass.LookingGlass.prototype._oldOpen ++ ++ delete Main.panel.style; ++ }, ++ ++ setFocusedMonitor: function(monitor, ignoreRelayout) { ++ // todo show overview on non primary monitor is not working right now on gnome40 ++ ++ // this._needsIconAllocate = 1; ++ ++ // if (!this.checkIfFocusedMonitor(monitor)) { ++ // Main.overview._overview._controls._workspacesDisplay._primaryIndex = monitor.index; ++ ++ // Main.overview._overview.clear_constraints(); ++ // Main.overview._overview.add_constraint(new Layout.MonitorConstraint({ index: monitor.index })); ++ // } ++ }, ++ ++ _saveMonitors: function() { ++ //Mutter meta_monitor_manager_get_primary_monitor (global.display.get_primary_monitor()) doesn't return the same ++ //monitor as GDK gdk_screen_get_primary_monitor (imports.gi.Gdk.Screen.get_default().get_primary_monitor()). ++ //Since the Mutter function is what's used in gnome-shell and we can't access it from the settings dialog, store ++ //the monitors information in a setting so we can use the same monitor indexes as the ones in gnome-shell ++ let primaryIndex = Main.layoutManager.primaryIndex; ++ let monitors = [primaryIndex]; ++ ++ Main.layoutManager.monitors.filter(m => m.index != primaryIndex).forEach(m => monitors.push(m.index)); ++ Me.settings.set_value('available-monitors', new GLib.Variant('ai', monitors)); ++ }, ++ ++ checkIfFocusedMonitor: function(monitor) { ++ return Main.overview._overview._controls._workspacesDisplay._primaryIndex == monitor.index; ++ }, ++ ++ _createPanel: function(monitor, isStandalone) { ++ let panelBox; ++ let panel; ++ let clipContainer = new Clutter.Actor(); ++ ++ if (isStandalone) { ++ panelBox = new St.BoxLayout({ name: 'panelBox' }); ++ } else { ++ panelBox = Main.layoutManager.panelBox; ++ Main.layoutManager._untrackActor(panelBox); ++ panelBox.remove_child(Main.panel.actor); ++ Main.layoutManager.removeChrome(panelBox); ++ } ++ ++ Main.layoutManager.addChrome(clipContainer, { affectsInputRegion: false }); ++ clipContainer.add_child(panelBox); ++ Main.layoutManager.trackChrome(panelBox, { trackFullscreen: true, affectsStruts: true, affectsInputRegion: true }); ++ ++ panel = new Panel.dtpPanel(this, monitor, panelBox, isStandalone); ++ panelBox.add(panel); ++ panel.enable(); ++ ++ panelBox.visible = true; ++ if (monitor.inFullscreen) { ++ panelBox.hide(); ++ } ++ panelBox.set_position(0, 0); ++ ++ return panel; ++ }, ++ ++ _reset: function() { ++ this.disable(true); ++ this.allPanels = []; ++ this.enable(true); ++ }, ++ ++ _updatePanelElementPositions: function() { ++ this.panelsElementPositions = PanelSettings.getSettingsJson(Me.settings, 'panel-element-positions'); ++ this.allPanels.forEach(p => p.updateElementPositions()); ++ }, ++ ++ _adjustPanelMenuButton: function(button, monitor, arrowSide) { ++ if (button) { ++ Utils.wrapActor(button); ++ button.menu._boxPointer._dtpSourceActor = button.menu._boxPointer.sourceActor; ++ button.menu._boxPointer.sourceActor = button.actor; ++ button.menu._boxPointer._userArrowSide = arrowSide; ++ button.menu._boxPointer._dtpInPanel = 1; ++ ++ if (!button.menu._boxPointer.vfunc_get_preferred_height) { ++ button.menu._boxPointer._dtpGetPreferredHeightId = button.menu._boxPointer._container.connect('get-preferred-height', (actor, forWidth, alloc) => { ++ this._getBoxPointerPreferredHeight(button.menu._boxPointer, alloc, monitor); ++ }); ++ } ++ } ++ }, ++ ++ _getBoxPointerPreferredHeight: function(boxPointer, alloc, monitor) { ++ if (boxPointer._dtpInPanel && boxPointer.sourceActor && Me.settings.get_boolean('intellihide')) { ++ monitor = monitor || Main.layoutManager.findMonitorForActor(boxPointer.sourceActor); ++ let panel = Utils.find(global.dashToPanel.panels, p => p.monitor == monitor); ++ let excess = alloc.natural_size + panel.dtpSize + 10 - monitor.height; // 10 is arbitrary ++ ++ if (excess > 0) { ++ alloc.natural_size -= excess; ++ } ++ } ++ ++ return [alloc.min_size, alloc.natural_size]; ++ }, ++ ++ _findPanelMenuButtons: function(container) { ++ let panelMenuButtons = []; ++ let panelMenuButton; ++ ++ let find = parent => parent.get_children().forEach(c => { ++ if ((panelMenuButton = this._getPanelMenuButton(c))) { ++ panelMenuButtons.push(panelMenuButton); ++ } ++ ++ find(c); ++ }); ++ ++ find(container); ++ ++ return panelMenuButtons; ++ }, ++ ++ _removePanelBarriers: function(panel) { ++ if (panel.isStandalone && panel._rightPanelBarrier) { ++ panel._rightPanelBarrier.destroy(); ++ } ++ ++ if (panel._leftPanelBarrier) { ++ panel._leftPanelBarrier.destroy(); ++ delete panel._leftPanelBarrier; ++ } ++ }, ++ ++ _getPanelMenuButton: function(obj) { ++ return obj._delegate && obj._delegate instanceof PanelMenu.Button ? obj._delegate : 0; ++ }, ++ ++ _setKeyBindings: function(enable) { ++ let keys = { ++ 'intellihide-key-toggle': () => this.allPanels.forEach(p => p.intellihide.toggle()) ++ }; ++ ++ Object.keys(keys).forEach(k => { ++ Utils.removeKeybinding(k); ++ ++ if (enable) { ++ Utils.addKeybinding(k, Me.settings, keys[k], Shell.ActionMode.NORMAL); ++ } ++ }); ++ }, ++ ++ _newGetShowAppsButton: function() { ++ let focusedMonitorIndex = Utils.findIndex(this.allPanels, p => this.checkIfFocusedMonitor(p.monitor)); ++ ++ return this.allPanels[focusedMonitorIndex].taskbar.showAppsButton; ++ } ++}); ++ ++// This class drives long-running icon animations, to keep them running in sync ++// with each other. ++var IconAnimator = Utils.defineClass({ ++ Name: 'DashToPanel.IconAnimator', ++ ++ _init: function(actor) { ++ this._count = 0; ++ this._started = false; ++ this._animations = { ++ dance: [], ++ }; ++ this._timeline = new Clutter.Timeline({ ++ duration: 3000, ++ repeat_count: -1, ++ }); ++ ++ /* Just use the construction property when no need to support 3.36 */ ++ if (this._timeline.set_actor) ++ this._timeline.set_actor(actor); ++ ++ this._timeline.connect('new-frame', () => { ++ const progress = this._timeline.get_progress(); ++ const danceRotation = progress < 1/6 ? 15*Math.sin(progress*24*Math.PI) : 0; ++ const dancers = this._animations.dance; ++ for (let i = 0, iMax = dancers.length; i < iMax; i++) { ++ dancers[i].target.rotation_angle_z = danceRotation; ++ } ++ }); ++ }, ++ ++ destroy: function() { ++ this._timeline.stop(); ++ this._timeline = null; ++ for (let name in this._animations) { ++ const pairs = this._animations[name]; ++ for (let i = 0, iMax = pairs.length; i < iMax; i++) { ++ const pair = pairs[i]; ++ pair.target.disconnect(pair.targetDestroyId); ++ } ++ } ++ this._animations = null; ++ }, ++ ++ pause: function() { ++ if (this._started && this._count > 0) { ++ this._timeline.stop(); ++ } ++ this._started = false; ++ }, ++ ++ start: function() { ++ if (!this._started && this._count > 0) { ++ this._timeline.start(); ++ } ++ this._started = true; ++ }, ++ ++ addAnimation: function(target, name) { ++ const targetDestroyId = target.connect('destroy', () => this.removeAnimation(target, name)); ++ this._animations[name].push({ target: target, targetDestroyId: targetDestroyId }); ++ if (this._started && this._count === 0) { ++ this._timeline.start(); ++ } ++ this._count++; ++ }, ++ ++ removeAnimation: function(target, name) { ++ const pairs = this._animations[name]; ++ for (let i = 0, iMax = pairs.length; i < iMax; i++) { ++ const pair = pairs[i]; ++ if (pair.target === target) { ++ target.disconnect(pair.targetDestroyId); ++ pairs.splice(i, 1); ++ this._count--; ++ if (this._started && this._count === 0) { ++ this._timeline.stop(); ++ } ++ return; ++ } ++ } ++ } ++}); ++ ++function newGetPositionForDirection(direction, fromWs, toWs) { ++ let [xDest, yDest] = WM.WindowManager.prototype._getPositionForDirection(direction, fromWs, toWs); ++ ++ if (direction == Meta.MotionDirection.UP || ++ direction == Meta.MotionDirection.UP_LEFT || ++ direction == Meta.MotionDirection.UP_RIGHT) { ++ yDest -= Main.panel.height; ++ } else if (direction != Meta.MotionDirection.LEFT && ++ direction != Meta.MotionDirection.RIGHT) { ++ yDest += Main.panel.height; ++ } ++ ++ return [xDest, yDest]; ++} ++ ++function newDoSpringAnimation(animationDirection) { ++ this._grid.opacity = 255; ++ this._grid.animateSpring(animationDirection, Main.overview.getShowAppsButton()); ++} ++ ++function newAnimateIconPosition(icon, box, flags, nChangedIcons) { ++ if (this._needsIconAllocate) { ++ Utils.allocate(icon, box, flags); ++ return; ++ } ++ ++ return this._oldAnimateIconPosition(icon, box, flags, nChangedIcons);; ++} ++ ++function newUpdateHotCorners() { ++ // destroy old hot corners ++ this.hotCorners.forEach(function(corner) { ++ if (corner) ++ corner.destroy(); ++ }); ++ this.hotCorners = []; ++ ++ //global.settings is ubuntu specific setting to disable the hot corner (Tweak tool > Top Bar > Activities Overview Hot Corner) ++ //this._interfaceSettings is for the setting to disable the hot corner introduced in gnome-shell 3.34 ++ if ((global.settings.list_keys().indexOf('enable-hot-corners') >= 0 && !global.settings.get_boolean('enable-hot-corners')) || ++ (this._interfaceSettings && !this._interfaceSettings.get_boolean('enable-hot-corners'))) { ++ this.emit('hot-corners-changed'); ++ return; ++ } ++ ++ // build new hot corners ++ for (let i = 0; i < this.monitors.length; i++) { ++ let panel = Utils.find(global.dashToPanel.panels, p => p.monitor.index == i); ++ let panelPosition = panel ? panel.getPosition() : St.Side.BOTTOM; ++ let panelTopLeft = panelPosition == St.Side.TOP || panelPosition == St.Side.LEFT; ++ let monitor = this.monitors[i]; ++ let cornerX = this._rtl ? monitor.x + monitor.width : monitor.x; ++ let cornerY = monitor.y; ++ ++ let haveTopLeftCorner = true; ++ ++ // If the panel is on the bottom, unless this is explicitly forced, don't add a topleft ++ // hot corner unless it is actually a top left panel. Otherwise, it stops the mouse ++ // as you are dragging across. In the future, maybe we will automatically move the ++ // hotcorner to the bottom when the panel is positioned at the bottom ++ if (i != this.primaryIndex || (!panelTopLeft && !Me.settings.get_boolean('stockgs-force-hotcorner'))) { ++ // Check if we have a top left (right for RTL) corner. ++ // I.e. if there is no monitor directly above or to the left(right) ++ let besideX = this._rtl ? monitor.x + 1 : cornerX - 1; ++ let besideY = cornerY; ++ let aboveX = cornerX; ++ let aboveY = cornerY - 1; ++ ++ for (let j = 0; j < this.monitors.length; j++) { ++ if (i == j) ++ continue; ++ let otherMonitor = this.monitors[j]; ++ if (besideX >= otherMonitor.x && ++ besideX < otherMonitor.x + otherMonitor.width && ++ besideY >= otherMonitor.y && ++ besideY < otherMonitor.y + otherMonitor.height) { ++ haveTopLeftCorner = false; ++ break; ++ } ++ if (aboveX >= otherMonitor.x && ++ aboveX < otherMonitor.x + otherMonitor.width && ++ aboveY >= otherMonitor.y && ++ aboveY < otherMonitor.y + otherMonitor.height) { ++ haveTopLeftCorner = false; ++ break; ++ } ++ } ++ } ++ ++ if (haveTopLeftCorner) { ++ let corner = new Layout.HotCorner(this, monitor, cornerX, cornerY); ++ ++ corner.setBarrierSize = size => corner.__proto__.setBarrierSize.call(corner, Math.min(size, 32)); ++ corner.setBarrierSize(panel ? panel.dtpSize : 32); ++ this.hotCorners.push(corner); ++ } else { ++ this.hotCorners.push(null); ++ } ++ } ++ ++ this.emit('hot-corners-changed'); ++} ++ ++function newUpdatePanelBarrier(panel) { ++ let barriers = { ++ _rightPanelBarrier: [(panel.isStandalone ? panel : this)], ++ _leftPanelBarrier: [panel] ++ }; ++ ++ Object.keys(barriers).forEach(k => { ++ let obj = barriers[k][0]; ++ ++ if (obj[k]) { ++ obj[k].destroy(); ++ obj[k] = null; ++ } ++ }); ++ ++ if (!this.primaryMonitor || !panel.panelBox.height) { ++ return; ++ } ++ ++ let barrierSize = Math.min(10, panel.panelBox.height); ++ let fixed1 = panel.monitor.y; ++ let fixed2 = panel.monitor.y + barrierSize; ++ ++ if (panel.checkIfVertical()) { ++ barriers._rightPanelBarrier.push(panel.monitor.y + panel.monitor.height, Meta.BarrierDirection.POSITIVE_Y); ++ barriers._leftPanelBarrier.push(panel.monitor.y, Meta.BarrierDirection.NEGATIVE_Y); ++ } else { ++ barriers._rightPanelBarrier.push(panel.monitor.x + panel.monitor.width, Meta.BarrierDirection.NEGATIVE_X); ++ barriers._leftPanelBarrier.push(panel.monitor.x, Meta.BarrierDirection.POSITIVE_X); ++ } ++ ++ switch (panel.getPosition()) { ++ //values are initialized as St.Side.TOP ++ case St.Side.BOTTOM: ++ fixed1 = panel.monitor.y + panel.monitor.height - barrierSize; ++ fixed2 = panel.monitor.y + panel.monitor.height; ++ break; ++ case St.Side.LEFT: ++ fixed1 = panel.monitor.x; ++ fixed2 = panel.monitor.x + barrierSize; ++ break; ++ case St.Side.RIGHT: ++ fixed1 = panel.monitor.x + panel.monitor.width; ++ fixed2 = panel.monitor.x + panel.monitor.width - barrierSize; ++ break; ++ } ++ ++ //remove left barrier if it overlaps one of the hotcorners ++ for (let k in this.hotCorners) { ++ let hc = this.hotCorners[k]; ++ ++ if (hc && hc._monitor == panel.monitor && ++ ((fixed1 == hc._x || fixed2 == hc._x) || fixed1 == hc._y || fixed2 == hc._y)) { ++ delete barriers._leftPanelBarrier; ++ break; ++ } ++ } ++ ++ Object.keys(barriers).forEach(k => { ++ let barrierOptions = { ++ display: global.display, ++ directions: barriers[k][2] ++ }; ++ ++ barrierOptions[panel.varCoord.c1] = barrierOptions[panel.varCoord.c2] = barriers[k][1]; ++ barrierOptions[panel.fixedCoord.c1] = fixed1; ++ barrierOptions[panel.fixedCoord.c2] = fixed2; ++ ++ barriers[k][0][k] = new Meta.Barrier(barrierOptions); ++ }); ++} ++ ++function _newLookingGlassResize() { ++ let primaryMonitorPanel = Utils.find(global.dashToPanel.panels, p => p.monitor == Main.layoutManager.primaryMonitor); ++ let topOffset = primaryMonitorPanel.getPosition() == St.Side.TOP ? primaryMonitorPanel.dtpSize + 8 : 32; ++ ++ this._oldResize(); ++ Utils.wrapActor(this); ++ Utils.wrapActor(this._objInspector); ++ ++ this._hiddenY = Main.layoutManager.primaryMonitor.y + topOffset - this.actor.height; ++ this._targetY = this._hiddenY + this.actor.height; ++ this.actor.y = this._hiddenY; ++ ++ this._objInspector.actor.set_position(this.actor.x + Math.floor(this.actor.width * 0.1), this._targetY + Math.floor(this.actor.height * 0.1)); ++} ++ ++function _newLookingGlassOpen() { ++ if (this._open) ++ return; ++ ++ this._resize(); ++ this._oldOpen(); ++} +diff --git a/extensions/dash-to-panel/panelPositions.js b/extensions/dash-to-panel/panelPositions.js +new file mode 100644 +index 00000000..52458bb6 +--- /dev/null ++++ b/extensions/dash-to-panel/panelPositions.js +@@ -0,0 +1,61 @@ ++/* ++ * This file is part of the Dash-To-Panel extension for Gnome 3 ++ * ++ * 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 2 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 . ++ */ ++ ++var SHOW_APPS_BTN = 'showAppsButton'; ++var ACTIVITIES_BTN = 'activitiesButton'; ++var TASKBAR = 'taskbar'; ++var DATE_MENU = 'dateMenu'; ++var SYSTEM_MENU = 'systemMenu'; ++var LEFT_BOX = 'leftBox'; ++var CENTER_BOX = 'centerBox'; ++var RIGHT_BOX = 'rightBox'; ++var DESKTOP_BTN = 'desktopButton'; ++ ++var STACKED_TL = 'stackedTL'; ++var STACKED_BR = 'stackedBR'; ++var CENTERED = 'centered'; ++var CENTERED_MONITOR = 'centerMonitor'; ++ ++var TOP = 'TOP'; ++var BOTTOM = 'BOTTOM'; ++var LEFT = 'LEFT'; ++var RIGHT = 'RIGHT'; ++ ++var START = 'START'; ++var MIDDLE = 'MIDDLE'; ++var END = 'END'; ++ ++var defaults = [ ++ { element: SHOW_APPS_BTN, visible: true, position: STACKED_TL }, ++ { element: ACTIVITIES_BTN, visible: false, position: STACKED_TL }, ++ { element: LEFT_BOX, visible: true, position: STACKED_TL }, ++ { element: TASKBAR, visible: true, position: STACKED_TL }, ++ { element: CENTER_BOX, visible: true, position: STACKED_BR }, ++ { element: RIGHT_BOX, visible: true, position: STACKED_BR }, ++ { element: DATE_MENU, visible: true, position: STACKED_BR }, ++ { element: SYSTEM_MENU, visible: true, position: STACKED_BR }, ++ { element: DESKTOP_BTN, visible: true, position: STACKED_BR }, ++]; ++ ++var optionDialogFunctions = {}; ++ ++optionDialogFunctions[SHOW_APPS_BTN] = '_showShowAppsButtonOptions'; ++optionDialogFunctions[DESKTOP_BTN] = '_showDesktopButtonOptions'; ++ ++function checkIfCentered(position) { ++ return position == CENTERED || position == CENTERED_MONITOR; ++} +\ No newline at end of file +diff --git a/extensions/dash-to-panel/panelSettings.js b/extensions/dash-to-panel/panelSettings.js +new file mode 100644 +index 00000000..4feb3fd7 +--- /dev/null ++++ b/extensions/dash-to-panel/panelSettings.js +@@ -0,0 +1,112 @@ ++/* ++ * This file is part of the Dash-To-Panel extension for Gnome 3 ++ * ++ * 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 2 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 Me = imports.misc.extensionUtils.getCurrentExtension(); ++const Pos = Me.imports.panelPositions; ++ ++/** Return object representing a settings value that is stored as JSON. */ ++function getSettingsJson(settings, setting) { ++ try { ++ return JSON.parse(settings.get_string(setting)); ++ } catch(e) { ++ log('Error parsing positions: ' + e.message); ++ } ++} ++/** Write value object as JSON to setting in settings. */ ++function setSettingsJson(settings, setting, value) { ++ try { ++ const json = JSON.stringify(value); ++ settings.set_string(setting, json); ++ } catch(e) { ++ log('Error serializing setting: ' + e.message); ++ } ++} ++ ++/** Returns size of panel on a specific monitor, in pixels. */ ++function getPanelSize(settings, monitorIndex) { ++ const sizes = getSettingsJson(settings, 'panel-sizes'); ++ // Pull in deprecated setting if panel-sizes does not have setting for monitor. ++ const fallbackSize = settings.get_int('panel-size'); ++ const theDefault = 48; ++ return sizes[monitorIndex] || fallbackSize || theDefault; ++} ++ ++function setPanelSize(settings, monitorIndex, value) { ++ if (!(Number.isInteger(value) && value <= 128 && value >= 16)) { ++ log('Not setting invalid panel size: ' + value); ++ return; ++ } ++ let sizes = getSettingsJson(settings, 'panel-sizes'); ++ sizes[monitorIndex] = value; ++ setSettingsJson(settings, 'panel-sizes', sizes); ++} ++ ++/** ++ * Returns length of panel on a specific monitor, as a whole number percent, ++ * from settings. e.g. 100 ++ */ ++function getPanelLength(settings, monitorIndex) { ++ const lengths = getSettingsJson(settings, 'panel-lengths'); ++ const theDefault = 100; ++ return lengths[monitorIndex] || theDefault; ++} ++ ++function setPanelLength(settings, monitorIndex, value) { ++ if (!(Number.isInteger(value) && value <= 100 && value >= 0)) { ++ log('Not setting invalid panel length: ' + value); ++ return; ++ } ++ let lengths = getSettingsJson(settings, 'panel-lengths'); ++ lengths[monitorIndex] = value; ++ setSettingsJson(settings, 'panel-lengths', lengths); ++} ++ ++/** Returns position of panel on a specific monitor. */ ++function getPanelPosition(settings, monitorIndex) { ++ const positions = getSettingsJson(settings, 'panel-positions'); ++ const fallbackPosition = settings.get_string('panel-position'); ++ const theDefault = Pos.BOTTOM; ++ return positions[monitorIndex] || fallbackPosition || theDefault; ++} ++ ++function setPanelPosition(settings, monitorIndex, value) { ++ if (!(value === Pos.TOP || value === Pos.BOTTOM || value === Pos.LEFT ++ || value === Pos.RIGHT)) { ++ log('Not setting invalid panel position: ' + value); ++ return; ++ } ++ const positions = getSettingsJson(settings, 'panel-positions'); ++ positions[monitorIndex] = value; ++ setSettingsJson(settings, 'panel-positions', positions); ++} ++ ++/** Returns anchor location of panel on a specific monitor. */ ++function getPanelAnchor(settings, monitorIndex) { ++ const anchors = getSettingsJson(settings, 'panel-anchors'); ++ const theDefault = Pos.MIDDLE; ++ return anchors[monitorIndex] || theDefault; ++} ++ ++function setPanelAnchor(settings, monitorIndex, value) { ++ if (!(value === Pos.START || value === Pos.MIDDLE || value === Pos.END)) { ++ log('Not setting invalid panel anchor: ' + value); ++ return; ++ } ++ const anchors = getSettingsJson(settings, 'panel-anchors'); ++ anchors[monitorIndex] = value; ++ setSettingsJson(settings, 'panel-anchors', anchors); ++} +diff --git a/extensions/dash-to-panel/panelStyle.js b/extensions/dash-to-panel/panelStyle.js +new file mode 100644 +index 00000000..2697ace2 +--- /dev/null ++++ b/extensions/dash-to-panel/panelStyle.js +@@ -0,0 +1,326 @@ ++/* ++ * This file is part of the Dash-To-Panel extension for Gnome 3 ++ * ++ * 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 2 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 . ++ * ++ * Credits: ++ * Ideas for recursing child actors and assigning inline styles ++ * are based on code from the StatusAreaHorizontalSpacing extension ++ * https://bitbucket.org/mathematicalcoffee/status-area-horizontal-spacing-gnome-shell-extension ++ * mathematical.coffee@gmail.com ++ */ ++ ++const Me = imports.misc.extensionUtils.getCurrentExtension(); ++const ExtensionUtils = imports.misc.extensionUtils; ++const Lang = imports.lang; ++const Main = imports.ui.main; ++const Mainloop = imports.mainloop; ++const St = imports.gi.St; ++const Shell = imports.gi.Shell; ++ ++const Panel = Me.imports.panel; ++const Taskbar = Me.imports.taskbar; ++const Utils = Me.imports.utils; ++ ++var dtpPanelStyle = Utils.defineClass({ ++ Name: 'DashToPanel.PanelStyle', ++ ++ _init: function() { ++ ++ }, ++ ++ enable : function(panel) { ++ this.panel = panel; ++ ++ this._applyStyles(); ++ ++ this._bindSettingsChanges(); ++ }, ++ ++ disable: function () { ++ for (let i = 0; i < this._dtpSettingsSignalIds.length; ++i) { ++ Me.settings.disconnect(this._dtpSettingsSignalIds[i]); ++ } ++ ++ this._removeStyles(); ++ }, ++ ++ _bindSettingsChanges: function() { ++ let configKeys = [ ++ "tray-size", ++ "leftbox-size", ++ "tray-padding", ++ "leftbox-padding", ++ "status-icon-padding", ++ ]; ++ ++ this._dtpSettingsSignalIds = []; ++ ++ for(let i in configKeys) { ++ this._dtpSettingsSignalIds.push(Me.settings.connect('changed::' + configKeys[i], Lang.bind(this, function () { ++ this._removeStyles(); ++ this._applyStyles(); ++ }))); ++ } ++ }, ++ ++ _applyStyles: function() { ++ this._rightBoxOperations = []; ++ ++ let trayPadding = Me.settings.get_int('tray-padding'); ++ let isVertical = this.panel.checkIfVertical(); ++ let paddingStyle = 'padding: ' + (isVertical ? '%dpx 0' : '0 %dpx'); ++ ++ if(trayPadding >= 0) { ++ let operation = {}; ++ let trayPaddingStyleLine; ++ ++ if (isVertical) { ++ trayPaddingStyleLine = paddingStyle.format(trayPadding); ++ operation.compareFn = function (actor) { ++ let parent = actor.get_parent(); ++ return (parent && parent.has_style_class_name && parent.has_style_class_name('panel-button')); ++ }; ++ } else { ++ trayPaddingStyleLine = '-natural-hpadding: %dpx'.format(trayPadding); ++ if (trayPadding < 6) { ++ trayPaddingStyleLine += '; -minimum-hpadding: %dpx'.format(trayPadding); ++ } ++ ++ operation.compareFn = function (actor) { ++ return (actor.has_style_class_name && actor.has_style_class_name('panel-button')); ++ }; ++ } ++ ++ operation.applyFn = Lang.bind(this, function (actor, operationIdx) { ++ this._overrideStyle(actor, trayPaddingStyleLine, operationIdx); ++ this._refreshPanelButton(actor); ++ }); ++ this._rightBoxOperations.push(operation); ++ } ++ ++ let statusIconPadding = Me.settings.get_int('status-icon-padding'); ++ if(statusIconPadding >= 0) { ++ let statusIconPaddingStyleLine = paddingStyle.format(statusIconPadding) ++ let operation = {}; ++ operation.compareFn = function (actor) { ++ return (actor.has_style_class_name && actor.has_style_class_name('system-status-icon')); ++ }; ++ operation.applyFn = Lang.bind(this, function (actor, operationIdx) { ++ this._overrideStyle(actor, statusIconPaddingStyleLine, operationIdx); ++ }); ++ this._rightBoxOperations.push(operation); ++ } ++ ++ let trayContentSize = Me.settings.get_int('tray-size'); ++ if(trayContentSize > 0) { ++ let trayIconSizeStyleLine = 'icon-size: %dpx'.format(trayContentSize) ++ let operation = {}; ++ operation.compareFn = function (actor) { ++ return (actor.constructor && actor.constructor.name == 'St_Icon'); ++ }; ++ operation.applyFn = Lang.bind(this, function (actor, operationIdx) { ++ this._overrideStyle(actor, trayIconSizeStyleLine, operationIdx); ++ }); ++ this._rightBoxOperations.push(operation); ++ ++ let trayContentSizeStyleLine = 'font-size: %dpx'.format(trayContentSize) ++ operation = {}; ++ operation.compareFn = function (actor) { ++ return (actor.constructor && actor.constructor.name == 'St_Label'); ++ }; ++ operation.applyFn = Lang.bind(this, function (actor, operationIdx) { ++ this._overrideStyle(actor, trayContentSizeStyleLine, operationIdx); ++ }); ++ this._rightBoxOperations.push(operation); ++ ++ this._overrideStyle(this.panel._rightBox, trayContentSizeStyleLine, 0); ++ this._overrideStyle(this.panel._centerBox, trayContentSizeStyleLine, 0); ++ } ++ ++ // center box has been moved next to the right box and will be treated the same ++ this._centerBoxOperations = this._rightBoxOperations; ++ ++ this._leftBoxOperations = []; ++ ++ let leftboxPadding = Me.settings.get_int('leftbox-padding'); ++ if(leftboxPadding >= 0) { ++ let leftboxPaddingStyleLine = paddingStyle.format(leftboxPadding); ++ let operation = {}; ++ operation.compareFn = function (actor) { ++ let parent = actor.get_parent(); ++ return (parent && parent.has_style_class_name && parent.has_style_class_name('panel-button')); ++ }; ++ operation.applyFn = Lang.bind(this, function (actor, operationIdx) { ++ this._overrideStyle(actor, leftboxPaddingStyleLine, operationIdx); ++ }); ++ this._leftBoxOperations.push(operation); ++ } ++ ++ let leftboxContentSize = Me.settings.get_int('leftbox-size'); ++ if(leftboxContentSize > 0) { ++ let leftboxIconSizeStyleLine = 'icon-size: %dpx'.format(leftboxContentSize) ++ let operation = {}; ++ operation.compareFn = function (actor) { ++ return (actor.constructor && actor.constructor.name == 'St_Icon'); ++ }; ++ operation.applyFn = Lang.bind(this, function (actor, operationIdx) { ++ this._overrideStyle(actor, leftboxIconSizeStyleLine, operationIdx); ++ }); ++ this._leftBoxOperations.push(operation); ++ ++ let leftboxContentSizeStyleLine = 'font-size: %dpx'.format(leftboxContentSize) ++ operation = {}; ++ operation.compareFn = function (actor) { ++ return (actor.constructor && actor.constructor.name == 'St_Label'); ++ }; ++ operation.applyFn = Lang.bind(this, function (actor, operationIdx) { ++ this._overrideStyle(actor, leftboxContentSizeStyleLine, operationIdx); ++ }); ++ this._leftBoxOperations.push(operation); ++ ++ this._overrideStyle(this.panel._leftBox, leftboxContentSizeStyleLine, 0); ++ } ++ ++ this._applyStylesRecursively(); ++ ++ /* connect signal */ ++ this._rightBoxActorAddedID = this.panel._rightBox.connect('actor-added', ++ Lang.bind(this, function (container, actor) { ++ if(this._rightBoxOperations.length && !this._ignoreAddedChild) ++ this._recursiveApply(actor, this._rightBoxOperations); ++ ++ this._ignoreAddedChild = 0; ++ }) ++ ); ++ this._centerBoxActorAddedID = this.panel._centerBox.connect('actor-added', ++ Lang.bind(this, function (container, actor) { ++ if(this._centerBoxOperations.length && !this._ignoreAddedChild) ++ this._recursiveApply(actor, this._centerBoxOperations); ++ ++ this._ignoreAddedChild = 0; ++ }) ++ ); ++ this._leftBoxActorAddedID = this.panel._leftBox.connect('actor-added', ++ Lang.bind(this, function (container, actor) { ++ if(this._leftBoxOperations.length) ++ this._recursiveApply(actor, this._leftBoxOperations); ++ }) ++ ); ++ }, ++ ++ _removeStyles: function() { ++ /* disconnect signal */ ++ if (this._rightBoxActorAddedID) ++ this.panel._rightBox.disconnect(this._rightBoxActorAddedID); ++ if (this._centerBoxActorAddedID) ++ this.panel._centerBox.disconnect(this._centerBoxActorAddedID); ++ if (this._leftBoxActorAddedID) ++ this.panel._leftBox.disconnect(this._leftBoxActorAddedID); ++ ++ this._restoreOriginalStyle(this.panel._rightBox); ++ this._restoreOriginalStyle(this.panel._centerBox); ++ this._restoreOriginalStyle(this.panel._leftBox); ++ ++ this._applyStylesRecursively(true); ++ }, ++ ++ _applyStylesRecursively: function(restore) { ++ /*recurse actors */ ++ if(this._rightBoxOperations.length) { ++ // add the system menu as we move it from the rightbox to the panel to position it independently ++ let children = this.panel._rightBox.get_children().concat([this.panel.statusArea.aggregateMenu.container]); ++ for(let i in children) ++ this._recursiveApply(children[i], this._rightBoxOperations, restore); ++ } ++ ++ if(this._centerBoxOperations.length) { ++ // add the date menu as we move it from the centerbox to the panel to position it independently ++ let children = this.panel._centerBox.get_children().concat([this.panel.statusArea.dateMenu.container]); ++ for(let i in children) ++ this._recursiveApply(children[i], this._centerBoxOperations, restore); ++ } ++ ++ if(this._leftBoxOperations.length) { ++ let children = this.panel._leftBox.get_children(); ++ for(let i in children) ++ this._recursiveApply(children[i], this._leftBoxOperations, restore); ++ } ++ }, ++ ++ _recursiveApply: function(actor, operations, restore) { ++ for(let i in operations) { ++ let o = operations[i]; ++ if(o.compareFn(actor)) ++ if(restore) ++ o.restoreFn ? o.restoreFn(actor) : this._restoreOriginalStyle(actor); ++ else ++ o.applyFn(actor, i); ++ } ++ ++ if(actor.get_children) { ++ let children = actor.get_children(); ++ for(let i in children) { ++ this._recursiveApply(children[i], operations, restore); ++ } ++ } ++ }, ++ ++ _overrideStyle: function(actor, styleLine, operationIdx) { ++ if (actor._dtp_original_inline_style === undefined) { ++ actor._dtp_original_inline_style = actor.get_style(); ++ } ++ ++ if(actor._dtp_style_overrides === undefined) { ++ actor._dtp_style_overrides = {}; ++ } ++ ++ actor._dtp_style_overrides[operationIdx] = styleLine; ++ let newStyleLine = ''; ++ for(let i in actor._dtp_style_overrides) ++ newStyleLine += actor._dtp_style_overrides[i] + '; '; ++ actor.set_style(newStyleLine + (actor._dtp_original_inline_style || '')); ++ }, ++ ++ _restoreOriginalStyle: function(actor) { ++ if (actor._dtp_original_inline_style !== undefined) { ++ actor.set_style(actor._dtp_original_inline_style); ++ delete actor._dtp_original_inline_style; ++ delete actor._dtp_style_overrides; ++ } ++ ++ if (actor.has_style_class_name('panel-button')) { ++ this._refreshPanelButton(actor); ++ } ++ }, ++ ++ _refreshPanelButton: function(actor) { ++ if (actor.visible && imports.misc.config.PACKAGE_VERSION >= '3.34.0') { ++ //force gnome 3.34+ to refresh (having problem with the -natural-hpadding) ++ let parent = actor.get_parent(); ++ let children = parent.get_children(); ++ let actorIndex = 0; ++ ++ if (children.length > 1) { ++ actorIndex = children.indexOf(actor); ++ } ++ ++ this._ignoreAddedChild = [this.panel._centerBox, this.panel._rightBox].indexOf(parent) >= 0; ++ ++ parent.remove_child(actor); ++ parent.insert_child_at_index(actor, actorIndex); ++ } ++ } ++ ++}); +diff --git a/extensions/dash-to-panel/prefs.js b/extensions/dash-to-panel/prefs.js +new file mode 100644 +index 00000000..30407876 +--- /dev/null ++++ b/extensions/dash-to-panel/prefs.js +@@ -0,0 +1,2468 @@ ++/* ++ * This file is part of the Dash-To-Panel extension for Gnome 3 ++ * ++ * 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 2 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 . ++ * ++ * ++ * Credits: ++ * This file is based on code from the Dash to Dock extension by micheleg. ++ * Some code was also adapted from the upstream Gnome Shell source code. ++ */ ++ ++const GdkPixbuf = imports.gi.GdkPixbuf; ++const Gio = imports.gi.Gio; ++const GLib = imports.gi.GLib; ++const GObject = imports.gi.GObject; ++const Gtk = imports.gi.Gtk; ++const Gdk = imports.gi.Gdk; ++const Lang = imports.lang; ++const Mainloop = imports.mainloop; ++ ++const Me = imports.misc.extensionUtils.getCurrentExtension(); ++const Convenience = Me.imports.convenience; ++const Gettext = imports.gettext.domain(Me.metadata['gettext-domain']); ++const _ = Gettext.gettext; ++const N_ = function(e) { return e }; ++const PanelSettings = Me.imports.panelSettings; ++const Pos = Me.imports.panelPositions; ++ ++const SCALE_UPDATE_TIMEOUT = 500; ++const DEFAULT_PANEL_SIZES = [ 128, 96, 64, 48, 32, 24, 16 ]; ++const DEFAULT_FONT_SIZES = [ 96, 64, 48, 32, 24, 16, 0 ]; ++const DEFAULT_MARGIN_SIZES = [ 32, 24, 16, 12, 8, 4, 0 ]; ++const DEFAULT_PADDING_SIZES = [ 32, 24, 16, 12, 8, 4, 0, -1 ]; ++// Minimum length could be 0, but a higher value may help prevent confusion about where the panel went. ++const LENGTH_MARKS = [ 100, 90, 80, 70, 60, 50, 40, 30, 20, 10 ]; ++const MAX_WINDOW_INDICATOR = 4; ++ ++const SCHEMA_PATH = '/org/gnome/shell/extensions/dash-to-panel/'; ++const GSET = 'gnome-shell-extension-tool'; ++ ++/** ++ * This function was copied from the activities-config extension ++ * https://github.com/nls1729/acme-code/tree/master/activities-config ++ * by Norman L. Smith. ++ */ ++function cssHexString(css) { ++ let rrggbb = '#'; ++ let start; ++ for (let loop = 0; loop < 3; loop++) { ++ let end = 0; ++ let xx = ''; ++ for (let loop = 0; loop < 2; loop++) { ++ while (true) { ++ let x = css.slice(end, end + 1); ++ if ((x == '(') || (x == ',') || (x == ')')) ++ break; ++ end++; ++ } ++ if (loop == 0) { ++ end++; ++ start = end; ++ } ++ } ++ xx = parseInt(css.slice(start, end)).toString(16); ++ if (xx.length == 1) ++ xx = '0' + xx; ++ rrggbb += xx; ++ css = css.slice(end); ++ } ++ return rrggbb; ++} ++ ++function setShortcut(settings, shortcutName) { ++ let shortcut_text = settings.get_string(shortcutName + '-text'); ++ let [key, mods] = Gtk.accelerator_parse(shortcut_text); ++ ++ if (Gtk.accelerator_valid(key, mods)) { ++ let shortcut = Gtk.accelerator_name(key, mods); ++ settings.set_strv(shortcutName, [shortcut]); ++ } ++ else { ++ settings.set_strv(shortcutName, []); ++ } ++} ++ ++function checkHotkeyPrefix(settings) { ++ settings.delay(); ++ ++ let hotkeyPrefix = settings.get_string('hotkey-prefix-text'); ++ if (hotkeyPrefix == 'Super') ++ hotkeyPrefix = ''; ++ else if (hotkeyPrefix == 'SuperAlt') ++ hotkeyPrefix = ''; ++ let [, mods] = Gtk.accelerator_parse(hotkeyPrefix); ++ let [, shift_mods] = Gtk.accelerator_parse('' + hotkeyPrefix); ++ let [, ctrl_mods] = Gtk.accelerator_parse('' + hotkeyPrefix); ++ ++ let numHotkeys = 10; ++ for (let i = 1; i <= numHotkeys; i++) { ++ let number = i; ++ if (number == 10) ++ number = 0; ++ let key = Gdk.keyval_from_name(number.toString()); ++ let key_kp = Gdk.keyval_from_name('KP_' + number.toString()); ++ if (Gtk.accelerator_valid(key, mods)) { ++ let shortcut = Gtk.accelerator_name(key, mods); ++ let shortcut_kp = Gtk.accelerator_name(key_kp, mods); ++ ++ // Setup shortcut strings ++ settings.set_strv('app-hotkey-' + i, [shortcut]); ++ settings.set_strv('app-hotkey-kp-' + i, [shortcut_kp]); ++ ++ // With ++ shortcut = Gtk.accelerator_name(key, shift_mods); ++ shortcut_kp = Gtk.accelerator_name(key_kp, shift_mods); ++ settings.set_strv('app-shift-hotkey-' + i, [shortcut]); ++ settings.set_strv('app-shift-hotkey-kp-' + i, [shortcut_kp]); ++ ++ // With ++ shortcut = Gtk.accelerator_name(key, ctrl_mods); ++ shortcut_kp = Gtk.accelerator_name(key_kp, ctrl_mods); ++ settings.set_strv('app-ctrl-hotkey-' + i, [shortcut]); ++ settings.set_strv('app-ctrl-hotkey-kp-' + i, [shortcut_kp]); ++ } ++ else { ++ // Reset default settings for the relevant keys if the ++ // accelerators are invalid ++ let keys = ['app-hotkey-' + i, 'app-shift-hotkey-' + i, 'app-ctrl-hotkey-' + i, // Regular numbers ++ 'app-hotkey-kp-' + i, 'app-shift-hotkey-kp-' + i, 'app-ctrl-hotkey-kp-' + i]; // Key-pad numbers ++ keys.forEach(function(val) { ++ settings.set_value(val, settings.get_default_value(val)); ++ }, this); ++ } ++ } ++ ++ settings.apply(); ++} ++ ++function mergeObjects(main, bck) { ++ for (var prop in bck) { ++ if (!main.hasOwnProperty(prop) && bck.hasOwnProperty(prop)) { ++ main[prop] = bck[prop]; ++ } ++ } ++ ++ return main; ++}; ++ ++const Preferences = new Lang.Class({ ++ Name: 'DashToPanel.Preferences', ++ ++ _init: function() { ++ this._settings = Convenience.getSettings('org.gnome.shell.extensions.dash-to-panel'); ++ this._rtl = (Gtk.Widget.get_default_direction() == Gtk.TextDirection.RTL); ++ this._builder = new Gtk.Builder(); ++ this._builder.set_scope(new BuilderScope(this)); ++ this._builder.set_translation_domain(Me.metadata['gettext-domain']); ++ this._builder.add_from_file(Me.path + '/Settings.ui'); ++ this.notebook = this._builder.get_object('settings_notebook'); ++ ++ // Timeout to delay the update of the settings ++ this._panel_size_timeout = 0; ++ this._dot_height_timeout = 0; ++ this._tray_size_timeout = 0; ++ this._leftbox_size_timeout = 0; ++ this._appicon_margin_timeout = 0; ++ this._appicon_padding_timeout = 0; ++ this._opacity_timeout = 0; ++ this._tray_padding_timeout = 0; ++ this._statusicon_padding_timeout = 0; ++ this._leftbox_padding_timeout = 0; ++ this._addFormatValueCallbacks(); ++ this._bindSettings(); ++ }, ++ ++ /** ++ * Connect signals ++ */ ++ _connector: function(builder, object, signal, handler) { ++ object.connect(signal, Lang.bind(this, this._SignalHandler[handler])); ++ }, ++ ++ _updateVerticalRelatedOptions: function() { ++ let position = this._getPanelPosition(this._currentMonitorIndex); ++ let isVertical = position == Pos.LEFT || position == Pos.RIGHT; ++ let showDesktopWidthLabel = this._builder.get_object('show_showdesktop_width_label'); ++ ++ showDesktopWidthLabel.set_text(isVertical ? _('Show Desktop button height (px)') : _('Show Desktop button width (px)')); ++ ++ this._displayPanelPositionsForMonitor(this._currentMonitorIndex); ++ }, ++ ++ _maybeDisableTopPosition: function() { ++ let keepTopPanel = this._settings.get_boolean('stockgs-keep-top-panel'); ++ let monitorSync = this._settings.get_boolean('panel-element-positions-monitors-sync'); ++ let topAvailable = !keepTopPanel || (!monitorSync && this._currentMonitorIndex != this.monitors[0]); ++ let topRadio = this._builder.get_object('position_top_button'); ++ ++ topRadio.set_sensitive(topAvailable); ++ topRadio.set_tooltip_text(!topAvailable ? _('Unavailable when gnome-shell top panel is present') : ''); ++ }, ++ ++ _getPanelPosition: function(monitorIndex) { ++ return PanelSettings.getPanelPosition(this._settings, monitorIndex); ++ }, ++ ++ _setPanelPosition: function(position) { ++ const monitorSync = this._settings.get_boolean('panel-element-positions-monitors-sync'); ++ const monitorsToSetFor = monitorSync ? this.monitors : [this._currentMonitorIndex]; ++ monitorsToSetFor.forEach(monitorIndex => { ++ PanelSettings.setPanelPosition(this._settings, monitorIndex, position); ++ }); ++ this._setAnchorLabels(this._currentMonitorIndex); ++ }, ++ ++ _setPositionRadios: function(position) { ++ this._ignorePositionRadios = true; ++ ++ switch (position) { ++ case Pos.BOTTOM: ++ this._builder.get_object('position_bottom_button').set_active(true); ++ break; ++ case Pos.TOP: ++ this._builder.get_object('position_top_button').set_active(true); ++ break; ++ case Pos.LEFT: ++ this._builder.get_object('position_left_button').set_active(true); ++ break; ++ case Pos.RIGHT: ++ this._builder.get_object('position_right_button').set_active(true); ++ break; ++ } ++ ++ this._ignorePositionRadios = false; ++ }, ++ ++ /** ++ * Set panel anchor combo labels according to whether the monitor's panel is vertical ++ * or horizontal, or if all monitors' panels are being configured and they are a mix ++ * of vertical and horizontal. ++ */ ++ _setAnchorLabels: function(currentMonitorIndex) { ++ const monitorSync = this._settings.get_boolean('panel-element-positions-monitors-sync'); ++ const monitorsToSetFor = monitorSync ? this.monitors : [currentMonitorIndex]; ++ const allVertical = monitorsToSetFor.every(i => { ++ const position = PanelSettings.getPanelPosition(this._settings, i); ++ return position === Pos.LEFT || position === Pos.RIGHT ++ }); ++ const allHorizontal = monitorsToSetFor.every(i => { ++ const position = PanelSettings.getPanelPosition(this._settings, i); ++ return position === Pos.TOP || position === Pos.BOTTOM; ++ }); ++ ++ const anchor_combo = this._builder.get_object('panel_anchor_combo'); ++ anchor_combo.remove_all(); ++ ++ if (allHorizontal) { ++ anchor_combo.append(Pos.START, _('Left')); ++ anchor_combo.append(Pos.MIDDLE, _('Center')); ++ anchor_combo.append(Pos.END, _('Right')); ++ } else if (allVertical) { ++ anchor_combo.append(Pos.START, _('Top')); ++ anchor_combo.append(Pos.MIDDLE, _('Middle')); ++ anchor_combo.append(Pos.END, _('Bottom')); ++ } else { ++ // Setting for a mix of horizontal and vertical panels on different monitors. ++ anchor_combo.append(Pos.START, _('Start')); ++ anchor_combo.append(Pos.MIDDLE, _('Middle')); ++ anchor_combo.append(Pos.END, _('End')); ++ } ++ ++ // Set combo box after re-populating its options. But only if it's for a single-panel ++ // configuration, or a multi-panel configuration where they all have the same anchor ++ // setting. So don't set the combo box if there is a multi-panel configuration with ++ // different anchor settings. ++ const someAnchor = PanelSettings.getPanelAnchor(this._settings, currentMonitorIndex); ++ if (monitorsToSetFor.every(i => ++ PanelSettings.getPanelAnchor(this._settings, i) === someAnchor)) { ++ const panel_anchor = PanelSettings.getPanelAnchor(this._settings, currentMonitorIndex); ++ this._builder.get_object('panel_anchor_combo').set_active_id(panel_anchor); ++ } ++ }, ++ ++ /** ++ * When a monitor is selected, update the widgets for panel position, size, anchoring, ++ * and contents so they accurately show the settings for the panel on that monitor. ++ */ ++ _updateWidgetSettingsForMonitor: function(monitorIndex) { ++ // Update display of panel screen position setting ++ this._maybeDisableTopPosition(); ++ const panelPosition = this._getPanelPosition(monitorIndex); ++ this._setPositionRadios(panelPosition); ++ ++ // Update display of thickness, length, and anchor settings ++ const panel_size_scale = this._builder.get_object('panel_size_scale'); ++ const size = PanelSettings.getPanelSize(this._settings, monitorIndex); ++ panel_size_scale.set_value(size); ++ ++ const panel_length_scale = this._builder.get_object('panel_length_scale'); ++ const length = PanelSettings.getPanelLength(this._settings, monitorIndex); ++ panel_length_scale.set_value(length); ++ this._setAnchorWidgetSensitivity(length); ++ ++ this._setAnchorLabels(monitorIndex); ++ ++ // Update display of panel content settings ++ this._displayPanelPositionsForMonitor(monitorIndex); ++ }, ++ ++ /** ++ * Anchor is only relevant if panel length is less than 100%. Enable or disable ++ * anchor widget sensitivity accordingly. ++ */ ++ _setAnchorWidgetSensitivity: function(panelLength) { ++ const isPartialLength = panelLength < 100; ++ this._builder.get_object('panel_anchor_label').set_sensitive(isPartialLength); ++ this._builder.get_object('panel_anchor_combo').set_sensitive(isPartialLength); ++ }, ++ ++ _displayPanelPositionsForMonitor: function(monitorIndex) { ++ let taskbarListBox = this._builder.get_object('taskbar_display_listbox'); ++ ++ while(taskbarListBox.get_first_child()) ++ { ++ taskbarListBox.remove(taskbarListBox.get_first_child()); ++ } ++ ++ let labels = {}; ++ let panelPosition = this._getPanelPosition(monitorIndex); ++ let isVertical = panelPosition == Pos.LEFT || panelPosition == Pos.RIGHT; ++ let panelElementPositionsSettings = PanelSettings.getSettingsJson(this._settings, 'panel-element-positions'); ++ let panelElementPositions = panelElementPositionsSettings[monitorIndex] || Pos.defaults; ++ let updateElementsSettings = () => { ++ let newPanelElementPositions = []; ++ let monitorSync = this._settings.get_boolean('panel-element-positions-monitors-sync'); ++ let monitors = monitorSync ? this.monitors : [monitorIndex]; ++ ++ let child = taskbarListBox.get_first_child(); ++ while (child != null) ++ { ++ newPanelElementPositions.push({ ++ element: child.id, ++ visible: child.visibleToggleBtn.get_active(), ++ position: child.positionCombo.get_active_id() ++ }); ++ child = child.get_next_sibling(); ++ } ++ ++ monitors.forEach(m => panelElementPositionsSettings[m] = newPanelElementPositions); ++ this._settings.set_string('panel-element-positions', JSON.stringify(panelElementPositionsSettings)); ++ }; ++ ++ ++ labels[Pos.SHOW_APPS_BTN] = _('Show Applications button'); ++ labels[Pos.ACTIVITIES_BTN] = _('Activities button'); ++ labels[Pos.TASKBAR] = _('Taskbar'); ++ labels[Pos.DATE_MENU] = _('Date menu'); ++ labels[Pos.SYSTEM_MENU] = _('System menu'); ++ labels[Pos.LEFT_BOX] = _('Left box'); ++ labels[Pos.CENTER_BOX] = _('Center box'); ++ labels[Pos.RIGHT_BOX] = _('Right box'); ++ labels[Pos.DESKTOP_BTN] = _('Desktop button'); ++ ++ panelElementPositions.forEach(el => { ++ let row = new Gtk.ListBoxRow(); ++ let grid = new Gtk.Grid({ margin_start: 12, margin_end: 12, column_spacing: 8 }); ++ let upDownGrid = new Gtk.Grid({ column_spacing: 2 }); ++ let upBtn = new Gtk.Button({ tooltip_text: _('Move up') }); ++ let upImg = new Gtk.Image({ icon_name: 'go-up-symbolic', pixel_size: 12 }); ++ let downBtn = new Gtk.Button({ tooltip_text: _('Move down') }); ++ let downImg = new Gtk.Image({ icon_name: 'go-down-symbolic', pixel_size: 12 }); ++ let visibleToggleBtn = new Gtk.ToggleButton({ label: _('Visible'), active: el.visible }); ++ let positionCombo = new Gtk.ComboBoxText({ tooltip_text: _('Select element position') }); ++ let upDownClickHandler = limit => { ++ let index = row.get_index(); ++ ++ if (index != limit) { ++ taskbarListBox.remove(row); ++ taskbarListBox.insert(row, index + (!limit ? -1 : 1)); ++ updateElementsSettings(); ++ } ++ }; ++ ++ positionCombo.append(Pos.STACKED_TL, isVertical ? _('Stacked to top') : _('Stacked to left')); ++ positionCombo.append(Pos.STACKED_BR, isVertical ? _('Stacked to bottom') :_('Stacked to right')); ++ positionCombo.append(Pos.CENTERED, _('Centered')); ++ positionCombo.append(Pos.CENTERED_MONITOR, _('Monitor Center')); ++ positionCombo.set_active_id(el.position); ++ ++ upBtn.connect('clicked', () => upDownClickHandler(0)); ++ downBtn.connect('clicked', () => upDownClickHandler(panelElementPositions.length - 1)); ++ visibleToggleBtn.connect('toggled', () => updateElementsSettings()); ++ positionCombo.connect('changed', () => updateElementsSettings()); ++ ++ upBtn.set_child(upImg); ++ downBtn.set_child(downImg); ++ ++ upDownGrid.attach(upBtn, 0, 0, 1, 1); ++ upDownGrid.attach(downBtn, 1, 0, 1, 1); ++ ++ grid.attach(upDownGrid, 0, 0, 1, 1); ++ grid.attach(new Gtk.Label({ label: labels[el.element], xalign: 0, hexpand: true }), 1, 0, 1, 1); ++ ++ if (Pos.optionDialogFunctions[el.element]) { ++ let cogImg = new Gtk.Image({ icon_name: 'emblem-system-symbolic' }); ++ let optionsBtn = new Gtk.Button({ tooltip_text: _('More options') }); ++ ++ optionsBtn.get_style_context().add_class('circular'); ++ optionsBtn.set_child(cogImg); ++ grid.attach(optionsBtn, 2, 0, 1, 1); ++ ++ optionsBtn.connect('clicked', () => this[Pos.optionDialogFunctions[el.element]]()); ++ } ++ ++ grid.attach(visibleToggleBtn, 3, 0, 1, 1); ++ grid.attach(positionCombo, 4, 0, 1, 1); ++ ++ row.id = el.element; ++ row.visibleToggleBtn = visibleToggleBtn; ++ row.positionCombo = positionCombo; ++ ++ row.set_child(grid); ++ taskbarListBox.insert(row, -1); ++ }); ++ }, ++ ++ _showShowAppsButtonOptions: function() { ++ let dialog = new Gtk.Dialog({ title: _('Show Applications options'), ++ transient_for: this.notebook.get_root(), ++ use_header_bar: true, ++ modal: true }); ++ ++ // GTK+ leaves positive values for application-defined response ids. ++ // Use +1 for the reset action ++ dialog.add_button(_('Reset to defaults'), 1); ++ ++ let box = this._builder.get_object('show_applications_options'); ++ dialog.get_content_area().append(box); ++ ++ let fileChooserButton = this._builder.get_object('show_applications_icon_file_filebutton'); ++ let fileChooser = new Gtk.FileChooserNative({ title: _('Open icon'), transient_for: dialog }); ++ let fileImage = this._builder.get_object('show_applications_current_icon_image'); ++ let fileFilter = new Gtk.FileFilter(); ++ fileFilter.add_pixbuf_formats(); ++ fileChooser.filter = fileFilter; ++ ++ let handleIconChange = function(newIconPath) { ++ if (newIconPath && GLib.file_test(newIconPath, GLib.FileTest.EXISTS)) { ++ let file = Gio.File.new_for_path(newIconPath); ++ let pixbuf = GdkPixbuf.Pixbuf.new_from_stream_at_scale(file.read(null), 32, 32, true, null); ++ ++ fileImage.set_from_pixbuf(pixbuf); ++ fileChooser.set_file(file); ++ fileChooserButton.set_label(newIconPath); ++ } else { ++ newIconPath = ''; ++ fileImage.set_from_icon_name('view-app-grid-symbolic'); ++ let picturesFolder = Gio.File.new_for_path(GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_PICTURES)); ++ fileChooser.set_file(picturesFolder); ++ fileChooserButton.set_label("(None)"); ++ } ++ ++ this._settings.set_string('show-apps-icon-file', newIconPath || ''); ++ }; ++ ++ fileChooserButton.connect('clicked', Lang.bind(this, function() { ++ fileChooser.show(); ++ })); ++ ++ fileChooser.connect('response', widget => handleIconChange.call(this, widget.get_file().get_path())); ++ handleIconChange.call(this, this._settings.get_string('show-apps-icon-file')); ++ ++ dialog.connect('response', Lang.bind(this, function(dialog, id) { ++ if (id == 1) { ++ // restore default settings ++ this._settings.set_value('show-apps-icon-side-padding', this._settings.get_default_value('show-apps-icon-side-padding')); ++ this._builder.get_object('show_applications_side_padding_spinbutton').set_value(this._settings.get_int('show-apps-icon-side-padding')); ++ this._settings.set_value('show-apps-override-escape', this._settings.get_default_value('show-apps-override-escape')); ++ handleIconChange.call(this, null); ++ } else { ++ // remove the settings box so it doesn't get destroyed; ++ dialog.get_content_area().remove(box); ++ dialog.destroy(); ++ fileChooser.destroy(); ++ } ++ return; ++ })); ++ ++ dialog.show(); ++ dialog.set_default_size(1, 1); ++ }, ++ ++ _showDesktopButtonOptions: function() { ++ let dialog = new Gtk.Dialog({ title: _('Show Desktop options'), ++ transient_for: this.notebook.get_root(), ++ use_header_bar: true, ++ modal: true }); ++ ++ // GTK+ leaves positive values for application-defined response ids. ++ // Use +1 for the reset action ++ dialog.add_button(_('Reset to defaults'), 1); ++ ++ let box = this._builder.get_object('box_show_showdesktop_options'); ++ dialog.get_content_area().append(box); ++ ++ this._builder.get_object('show_showdesktop_width_spinbutton').set_value(this._settings.get_int('showdesktop-button-width')); ++ this._builder.get_object('show_showdesktop_width_spinbutton').connect('value-changed', Lang.bind (this, function(widget) { ++ this._settings.set_int('showdesktop-button-width', widget.get_value()); ++ })); ++ ++ this._builder.get_object('show_showdesktop_delay_spinbutton').set_value(this._settings.get_int('show-showdesktop-delay')); ++ this._builder.get_object('show_showdesktop_delay_spinbutton').connect('value-changed', Lang.bind (this, function(widget) { ++ this._settings.set_int('show-showdesktop-delay', widget.get_value()); ++ })); ++ ++ this._builder.get_object('show_showdesktop_time_spinbutton').set_value(this._settings.get_int('show-showdesktop-time')); ++ this._builder.get_object('show_showdesktop_time_spinbutton').connect('value-changed', Lang.bind (this, function(widget) { ++ this._settings.set_int('show-showdesktop-time', widget.get_value()); ++ })); ++ ++ dialog.connect('response', Lang.bind(this, function(dialog, id) { ++ if (id == 1) { ++ // restore default settings ++ this._settings.set_value('showdesktop-button-width', this._settings.get_default_value('showdesktop-button-width')); ++ this._builder.get_object('show_showdesktop_width_spinbutton').set_value(this._settings.get_int('showdesktop-button-width')); ++ ++ this._settings.set_value('show-showdesktop-hover', this._settings.get_default_value('show-showdesktop-hover')); ++ ++ this._settings.set_value('show-showdesktop-delay', this._settings.get_default_value('show-showdesktop-delay')); ++ this._builder.get_object('show_showdesktop_delay_spinbutton').set_value(this._settings.get_int('show-showdesktop-delay')); ++ ++ this._settings.set_value('show-showdesktop-time', this._settings.get_default_value('show-showdesktop-time')); ++ this._builder.get_object('show_showdesktop_time_spinbutton').set_value(this._settings.get_int('show-showdesktop-time')); ++ } else { ++ // remove the settings box so it doesn't get destroyed; ++ dialog.get_content_area().remove(box); ++ dialog.destroy(); ++ } ++ return; ++ })); ++ ++ dialog.show(); ++ dialog.set_default_size(1, 1); ++ }, ++ ++ _addFormatValueCallbacks: function() { ++ // position ++ this._builder.get_object('panel_size_scale') ++ .set_format_value_func(Lang.bind(this, function(scale, value) { ++ return value + ' px'; ++ })); ++ ++ // style ++ this._builder.get_object('appicon_margin_scale') ++ .set_format_value_func(Lang.bind(this, function(scale, value) { ++ return value + ' px'; ++ })); ++ ++ this._builder.get_object('appicon_padding_scale') ++ .set_format_value_func(Lang.bind(this, function(scale, value) { ++ return value + ' px'; ++ })); ++ ++ // fine-tune box1 ++ this._builder.get_object('tray_size_scale') ++ .set_format_value_func(Lang.bind(this, function(scale, value) { ++ return value + ' px'; ++ })); ++ ++ this._builder.get_object('leftbox_size_scale') ++ .set_format_value_func(Lang.bind(this, function(scale, value) { ++ return value + ' px'; ++ })); ++ ++ // fine-tune box2 ++ this._builder.get_object('tray_padding_scale') ++ .set_format_value_func(Lang.bind(this, function(scale, value) { ++ return value + ' px'; ++ })); ++ ++ this._builder.get_object('statusicon_padding_scale') ++ .set_format_value_func(Lang.bind(this, function(scale, value) { ++ return value + ' px'; ++ })); ++ ++ this._builder.get_object('leftbox_padding_scale') ++ .set_format_value_func(Lang.bind(this, function(scale, value) { ++ return value + ' px'; ++ })); ++ ++ // animate hovering app icons dialog ++ this._builder.get_object('animate_appicon_hover_options_duration_scale') ++ .set_format_value_func(Lang.bind(this, function(scale, value) { ++ return _("%d ms").format(value); ++ })); ++ ++ this._builder.get_object('animate_appicon_hover_options_rotation_scale') ++ .set_format_value_func(Lang.bind(this, function(scale, value) { ++ return _("%d °").format(value); ++ })); ++ ++ this._builder.get_object('animate_appicon_hover_options_travel_scale') ++ .set_format_value_func(Lang.bind(this, function(scale, value) { ++ return _("%d %%").format(value); ++ })); ++ ++ this._builder.get_object('animate_appicon_hover_options_zoom_scale') ++ .set_format_value_func(Lang.bind(this, function(scale, value) { ++ return _("%d %%").format(value); ++ })); ++ ++ this._builder.get_object('animate_appicon_hover_options_convexity_scale') ++ .set_format_value_func(Lang.bind(this, function(scale, value) { ++ return _("%.1f").format(value); ++ })); ++ ++ this._builder.get_object('animate_appicon_hover_options_extent_scale') ++ .set_format_value_func(Lang.bind(this, function(scale, value) { ++ return Gettext.ngettext("%d icon", "%d icons", value).format(value); ++ })); ++ }, ++ ++ _bindSettings: function() { ++ // size options ++ let panel_size_scale = this._builder.get_object('panel_size_scale'); ++ panel_size_scale.set_range(DEFAULT_PANEL_SIZES[DEFAULT_PANEL_SIZES.length - 1], DEFAULT_PANEL_SIZES[0]); ++ DEFAULT_PANEL_SIZES.slice(1, -1).forEach(function(val) { ++ panel_size_scale.add_mark(val, Gtk.PositionType.TOP, val.toString()); ++ }); ++ ++ // Correct for rtl languages ++ if (this._rtl) { ++ // Flip value position: this is not done automatically ++ panel_size_scale.set_value_pos(Gtk.PositionType.LEFT); ++ // I suppose due to a bug, having a more than one mark and one above a value of 100 ++ // makes the rendering of the marks wrong in rtl. This doesn't happen setting the scale as not flippable ++ // and then manually inverting it ++ panel_size_scale.set_flippable(false); ++ panel_size_scale.set_inverted(true); ++ } ++ ++ // Dots Position option ++ let dotPosition = this._settings.get_string('dot-position'); ++ ++ switch (dotPosition) { ++ case 'BOTTOM': ++ this._builder.get_object('dots_bottom_button').set_active(true); ++ break; ++ case 'TOP': ++ this._builder.get_object('dots_top_button').set_active(true); ++ break; ++ case 'LEFT': ++ this._builder.get_object('dots_left_button').set_active(true); ++ break; ++ case 'RIGHT': ++ this._builder.get_object('dots_right_button').set_active(true); ++ break; ++ } ++ ++ this._builder.get_object('dot_style_focused_combo').set_active_id(this._settings.get_string('dot-style-focused')); ++ this._builder.get_object('dot_style_focused_combo').connect('changed', Lang.bind (this, function(widget) { ++ this._settings.set_string('dot-style-focused', widget.get_active_id()); ++ })); ++ ++ this._builder.get_object('dot_style_unfocused_combo').set_active_id(this._settings.get_string('dot-style-unfocused')); ++ this._builder.get_object('dot_style_unfocused_combo').connect('changed', Lang.bind (this, function(widget) { ++ this._settings.set_string('dot-style-unfocused', widget.get_active_id()); ++ })); ++ ++ for (let i = 1; i <= MAX_WINDOW_INDICATOR; i++) { ++ let idx = i; ++ this._builder.get_object('dot_color_' + idx + '_colorbutton').connect('color-set', Lang.bind(this, function(button) { ++ let rgba = button.get_rgba(); ++ let css = rgba.to_string(); ++ let hexString = cssHexString(css); ++ this._settings.set_string('dot-color-' + idx, hexString); ++ })); ++ ++ this._builder.get_object('dot_color_unfocused_' + idx + '_colorbutton').connect('color-set', Lang.bind(this, function(button) { ++ let rgba = button.get_rgba(); ++ let css = rgba.to_string(); ++ let hexString = cssHexString(css); ++ this._settings.set_string('dot-color-unfocused-' + idx, hexString); ++ })); ++ } ++ ++ this._builder.get_object('dot_color_apply_all_button').connect('clicked', Lang.bind(this, function() { ++ for (let i = 2; i <= MAX_WINDOW_INDICATOR; i++) { ++ this._settings.set_value('dot-color-' + i, this._settings.get_value('dot-color-1')); ++ let rgba = new Gdk.RGBA(); ++ rgba.parse(this._settings.get_string('dot-color-' + i)); ++ this._builder.get_object('dot_color_' + i + '_colorbutton').set_rgba(rgba); ++ } ++ })); ++ ++ this._builder.get_object('dot_color_unfocused_apply_all_button').connect('clicked', Lang.bind(this, function() { ++ for (let i = 2; i <= MAX_WINDOW_INDICATOR; i++) { ++ this._settings.set_value('dot-color-unfocused-' + i, this._settings.get_value('dot-color-unfocused-1')); ++ let rgba = new Gdk.RGBA(); ++ rgba.parse(this._settings.get_string('dot-color-unfocused-' + i)); ++ this._builder.get_object('dot_color_unfocused_' + i + '_colorbutton').set_rgba(rgba); ++ } ++ })); ++ ++ this._builder.get_object('focus_highlight_color_colorbutton').connect('color-set', Lang.bind(this, function(button) { ++ let rgba = button.get_rgba(); ++ let css = rgba.to_string(); ++ let hexString = cssHexString(css); ++ this._settings.set_string('focus-highlight-color', hexString); ++ })); ++ ++ this._builder.get_object('dot_style_options_button').connect('clicked', Lang.bind(this, function() { ++ ++ let dialog = new Gtk.Dialog({ title: _('Running Indicator Options'), ++ transient_for: this.notebook.get_root(), ++ use_header_bar: true, ++ modal: true }); ++ ++ // GTK+ leaves positive values for application-defined response ids. ++ // Use +1 for the reset action ++ dialog.add_button(_('Reset to defaults'), 1); ++ ++ let box = this._builder.get_object('box_dots_options'); ++ dialog.get_content_area().append(box); ++ ++ this._settings.bind('dot-color-dominant', ++ this._builder.get_object('dot_color_dominant_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('dot-color-override', ++ this._builder.get_object('dot_color_override_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ // when either becomes active, turn the other off ++ this._builder.get_object('dot_color_dominant_switch').connect('state-set', Lang.bind (this, function(widget) { ++ if (widget.get_active()) this._settings.set_boolean('dot-color-override', false); ++ })); ++ this._builder.get_object('dot_color_override_switch').connect('state-set', Lang.bind (this, function(widget) { ++ if (widget.get_active()) this._settings.set_boolean('dot-color-dominant', false); ++ })); ++ ++ this._settings.bind('dot-color-unfocused-different', ++ this._builder.get_object('dot_color_unfocused_different_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('dot-color-override', ++ this._builder.get_object('grid_dot_color'), ++ 'sensitive', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('dot-color-override', ++ this._builder.get_object('dot_color_unfocused_box'), ++ 'sensitive', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('dot-color-unfocused-different', ++ this._builder.get_object('grid_dot_color_unfocused'), ++ 'sensitive', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ for (let i = 1; i <= MAX_WINDOW_INDICATOR; i++) { ++ let rgba = new Gdk.RGBA(); ++ rgba.parse(this._settings.get_string('dot-color-' + i)); ++ this._builder.get_object('dot_color_' + i + '_colorbutton').set_rgba(rgba); ++ ++ rgba = new Gdk.RGBA(); ++ rgba.parse(this._settings.get_string('dot-color-unfocused-' + i)); ++ this._builder.get_object('dot_color_unfocused_' + i + '_colorbutton').set_rgba(rgba); ++ } ++ ++ this._settings.bind('focus-highlight', ++ this._builder.get_object('focus_highlight_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('focus-highlight', ++ this._builder.get_object('grid_focus_highlight_options'), ++ 'sensitive', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('focus-highlight-dominant', ++ this._builder.get_object('focus_highlight_dominant_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('focus-highlight-dominant', ++ this._builder.get_object('focus_highlight_color_label'), ++ 'sensitive', ++ Gio.SettingsBindFlags.INVERT_BOOLEAN); ++ ++ this._settings.bind('focus-highlight-dominant', ++ this._builder.get_object('focus_highlight_color_colorbutton'), ++ 'sensitive', ++ Gio.SettingsBindFlags.INVERT_BOOLEAN); ++ ++ ++ (function() { ++ let rgba = new Gdk.RGBA(); ++ rgba.parse(this._settings.get_string('focus-highlight-color')); ++ this._builder.get_object('focus_highlight_color_colorbutton').set_rgba(rgba); ++ }).apply(this); ++ ++ this._builder.get_object('focus_highlight_opacity_spinbutton').set_value(this._settings.get_int('focus-highlight-opacity')); ++ this._builder.get_object('focus_highlight_opacity_spinbutton').connect('value-changed', Lang.bind (this, function(widget) { ++ this._settings.set_int('focus-highlight-opacity', widget.get_value()); ++ })); ++ ++ this._builder.get_object('dot_size_spinbutton').set_value(this._settings.get_int('dot-size')); ++ this._builder.get_object('dot_size_spinbutton').connect('value-changed', Lang.bind (this, function(widget) { ++ this._settings.set_int('dot-size', widget.get_value()); ++ })); ++ ++ dialog.connect('response', Lang.bind(this, function(dialog, id) { ++ if (id == 1) { ++ // restore default settings ++ this._settings.set_value('dot-color-dominant', this._settings.get_default_value('dot-color-dominant')); ++ this._settings.set_value('dot-color-override', this._settings.get_default_value('dot-color-override')); ++ this._settings.set_value('dot-color-unfocused-different', this._settings.get_default_value('dot-color-unfocused-different')); ++ ++ this._settings.set_value('focus-highlight-color', this._settings.get_default_value('focus-highlight-color')); ++ let rgba = new Gdk.RGBA(); ++ rgba.parse(this._settings.get_string('focus-highlight-color')); ++ this._builder.get_object('focus_highlight_color_colorbutton').set_rgba(rgba); ++ ++ this._settings.set_value('focus-highlight-opacity', this._settings.get_default_value('focus-highlight-opacity')); ++ this._builder.get_object('focus_highlight_opacity_spinbutton').set_value(this._settings.get_int('focus-highlight-opacity')); ++ ++ for (let i = 1; i <= MAX_WINDOW_INDICATOR; i++) { ++ this._settings.set_value('dot-color-' + i, this._settings.get_default_value('dot-color-' + i)); ++ rgba = new Gdk.RGBA(); ++ rgba.parse(this._settings.get_string('dot-color-' + i)); ++ this._builder.get_object('dot_color_' + i + '_colorbutton').set_rgba(rgba); ++ ++ this._settings.set_value('dot-color-unfocused-' + i, this._settings.get_default_value('dot-color-unfocused-' + i)); ++ rgba = new Gdk.RGBA(); ++ rgba.parse(this._settings.get_string('dot-color-unfocused-' + i)); ++ this._builder.get_object('dot_color_unfocused_' + i + '_colorbutton').set_rgba(rgba); ++ } ++ ++ this._settings.set_value('dot-size', this._settings.get_default_value('dot-size')); ++ this._builder.get_object('dot_size_spinbutton').set_value(this._settings.get_int('dot-size')); ++ ++ this._settings.set_value('focus-highlight', this._settings.get_default_value('focus-highlight')); ++ this._settings.set_value('focus-highlight-dominant', this._settings.get_default_value('focus-highlight-dominant')); ++ ++ } else { ++ // remove the settings box so it doesn't get destroyed; ++ dialog.get_content_area().remove(box); ++ dialog.destroy(); ++ } ++ return; ++ })); ++ ++ dialog.show(); ++ dialog.set_default_size(1, 1); ++ ++ })); ++ ++ //multi-monitor ++ this.monitors = this._settings.get_value('available-monitors').deep_unpack(); ++ ++ let dtpPrimaryMonitorIndex = this.monitors.indexOf(this._settings.get_int('primary-monitor')); ++ ++ if (dtpPrimaryMonitorIndex < 0) { ++ dtpPrimaryMonitorIndex = 0; ++ } ++ ++ this._currentMonitorIndex = this.monitors[dtpPrimaryMonitorIndex]; ++ ++ this._settings.connect('changed::panel-positions', () => this._updateVerticalRelatedOptions()); ++ this._updateVerticalRelatedOptions(); ++ ++ for (let i = 0; i < this.monitors.length; ++i) { ++ //the primary index is the first one in the "available-monitors" setting ++ let label = !i ? _('Primary monitor') : _('Monitor ') + (i + 1); ++ ++ this._builder.get_object('multimon_primary_combo').append_text(label); ++ this._builder.get_object('taskbar_position_monitor_combo').append_text(label); ++ } ++ ++ this._builder.get_object('multimon_primary_combo').set_active(dtpPrimaryMonitorIndex); ++ this._builder.get_object('taskbar_position_monitor_combo').set_active(dtpPrimaryMonitorIndex); ++ ++ this._settings.bind('panel-element-positions-monitors-sync', ++ this._builder.get_object('taskbar_position_sync_button'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('panel-element-positions-monitors-sync', ++ this._builder.get_object('taskbar_position_monitor_combo'), ++ 'sensitive', ++ Gio.SettingsBindFlags.INVERT_BOOLEAN); ++ ++ this._settings.connect('changed::panel-element-positions-monitors-sync', () => { ++ this._maybeDisableTopPosition(); ++ // The anchor combo box may has different labels for single- or all-monitor configuration. ++ this._setAnchorLabels(this._currentMonitorIndex); ++ }); ++ ++ this._builder.get_object('multimon_primary_combo').connect('changed', Lang.bind (this, function(widget) { ++ this._settings.set_int('primary-monitor', this.monitors[widget.get_active()]); ++ })); ++ ++ this._builder.get_object('taskbar_position_monitor_combo').connect('changed', Lang.bind (this, function(widget) { ++ this._currentMonitorIndex = this.monitors[widget.get_active()]; ++ this._updateWidgetSettingsForMonitor(this._currentMonitorIndex); ++ })); ++ ++ this._settings.bind('multi-monitors', ++ this._builder.get_object('multimon_multi_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ if (this.monitors.length === 1) { ++ this._builder.get_object('multimon_multi_switch').set_sensitive(false); ++ } ++ ++ const panel_length_scale = this._builder.get_object('panel_length_scale'); ++ panel_length_scale.connect('value-changed', Lang.bind (this, function(widget) { ++ const value = widget.get_value(); ++ const monitorSync = this._settings.get_boolean('panel-element-positions-monitors-sync'); ++ const monitorsToSetFor = monitorSync ? this.monitors : [this._currentMonitorIndex]; ++ monitorsToSetFor.forEach(monitorIndex => { ++ PanelSettings.setPanelLength(this._settings, monitorIndex, value); ++ }); ++ ++ this._setAnchorWidgetSensitivity(value); ++ })); ++ ++ this._builder.get_object('panel_anchor_combo').connect('changed', Lang.bind (this, function(widget) { ++ const value = widget.get_active_id(); ++ // Value can be null while anchor labels are being swapped out ++ if (value !== null) { ++ const monitorSync = this._settings.get_boolean('panel-element-positions-monitors-sync'); ++ const monitorsToSetFor = monitorSync ? this.monitors : [this._currentMonitorIndex]; ++ monitorsToSetFor.forEach(monitorIndex => { ++ PanelSettings.setPanelAnchor(this._settings, monitorIndex, value); ++ }); ++ } ++ })); ++ ++ this._updateWidgetSettingsForMonitor(this._currentMonitorIndex); ++ ++ //dynamic opacity ++ this._settings.bind('trans-use-custom-bg', ++ this._builder.get_object('trans_bg_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('trans-use-custom-bg', ++ this._builder.get_object('trans_bg_color_colorbutton'), ++ 'sensitive', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ let rgba = new Gdk.RGBA(); ++ rgba.parse(this._settings.get_string('trans-bg-color')); ++ this._builder.get_object('trans_bg_color_colorbutton').set_rgba(rgba); ++ ++ this._builder.get_object('trans_bg_color_colorbutton').connect('color-set', Lang.bind(this, function (button) { ++ let rgba = button.get_rgba(); ++ let css = rgba.to_string(); ++ let hexString = cssHexString(css); ++ this._settings.set_string('trans-bg-color', hexString); ++ })); ++ ++ this._settings.bind('trans-use-custom-opacity', ++ this._builder.get_object('trans_opacity_override_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('trans-use-custom-opacity', ++ this._builder.get_object('trans_opacity_box'), ++ 'sensitive', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._builder.get_object('trans_opacity_override_switch').connect('notify::active', (widget) => { ++ if (!widget.get_active()) ++ this._builder.get_object('trans_dyn_switch').set_active(false); ++ }); ++ ++ this._builder.get_object('trans_opacity_spinbutton').set_value(this._settings.get_double('trans-panel-opacity') * 100); ++ this._builder.get_object('trans_opacity_spinbutton').connect('value-changed', Lang.bind(this, function (widget) { ++ this._settings.set_double('trans-panel-opacity', widget.get_value() * 0.01); ++ })); ++ ++ this._settings.bind('trans-use-dynamic-opacity', ++ this._builder.get_object('trans_dyn_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('trans-use-dynamic-opacity', ++ this._builder.get_object('trans_dyn_options_button'), ++ 'sensitive', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('trans-dynamic-behavior', ++ this._builder.get_object('trans_options_window_type_combo'), ++ 'active-id', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('trans-use-custom-gradient', ++ this._builder.get_object('trans_gradient_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('trans-use-custom-gradient', ++ this._builder.get_object('trans_gradient_box'), ++ 'sensitive', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ rgba.parse(this._settings.get_string('trans-gradient-top-color')); ++ this._builder.get_object('trans_gradient_color1_colorbutton').set_rgba(rgba); ++ ++ this._builder.get_object('trans_gradient_color1_colorbutton').connect('color-set', Lang.bind(this, function (button) { ++ let rgba = button.get_rgba(); ++ let css = rgba.to_string(); ++ let hexString = cssHexString(css); ++ this._settings.set_string('trans-gradient-top-color', hexString); ++ })); ++ ++ this._builder.get_object('trans_gradient_color1_spinbutton').set_value(this._settings.get_double('trans-gradient-top-opacity') * 100); ++ this._builder.get_object('trans_gradient_color1_spinbutton').connect('value-changed', Lang.bind(this, function (widget) { ++ this._settings.set_double('trans-gradient-top-opacity', widget.get_value() * 0.01); ++ })); ++ ++ rgba.parse(this._settings.get_string('trans-gradient-bottom-color')); ++ this._builder.get_object('trans_gradient_color2_colorbutton').set_rgba(rgba); ++ ++ this._builder.get_object('trans_gradient_color2_colorbutton').connect('color-set', Lang.bind(this, function (button) { ++ let rgba = button.get_rgba(); ++ let css = rgba.to_string(); ++ let hexString = cssHexString(css); ++ this._settings.set_string('trans-gradient-bottom-color', hexString); ++ })); ++ ++ this._builder.get_object('trans_gradient_color2_spinbutton').set_value(this._settings.get_double('trans-gradient-bottom-opacity') * 100); ++ this._builder.get_object('trans_gradient_color2_spinbutton').connect('value-changed', Lang.bind(this, function (widget) { ++ this._settings.set_double('trans-gradient-bottom-opacity', widget.get_value() * 0.01); ++ })); ++ ++ this._builder.get_object('trans_options_distance_spinbutton').set_value(this._settings.get_int('trans-dynamic-distance')); ++ this._builder.get_object('trans_options_distance_spinbutton').connect('value-changed', Lang.bind(this, function (widget) { ++ this._settings.set_int('trans-dynamic-distance', widget.get_value()); ++ })); ++ ++ this._builder.get_object('trans_options_min_opacity_spinbutton').set_value(this._settings.get_double('trans-dynamic-anim-target') * 100); ++ this._builder.get_object('trans_options_min_opacity_spinbutton').connect('value-changed', Lang.bind(this, function (widget) { ++ this._settings.set_double('trans-dynamic-anim-target', widget.get_value() * 0.01); ++ })); ++ ++ this._builder.get_object('trans_options_anim_time_spinbutton').set_value(this._settings.get_int('trans-dynamic-anim-time')); ++ this._builder.get_object('trans_options_anim_time_spinbutton').connect('value-changed', Lang.bind(this, function (widget) { ++ this._settings.set_int('trans-dynamic-anim-time', widget.get_value()); ++ })); ++ ++ this._builder.get_object('trans_dyn_options_button').connect('clicked', Lang.bind(this, function() { ++ let dialog = new Gtk.Dialog({ title: _('Dynamic opacity options'), ++ transient_for: this.notebook.get_root(), ++ use_header_bar: true, ++ modal: true }); ++ ++ // GTK+ leaves positive values for application-defined response ids. ++ // Use +1 for the reset action ++ dialog.add_button(_('Reset to defaults'), 1); ++ ++ let box = this._builder.get_object('box_dynamic_opacity_options'); ++ dialog.get_content_area().append(box); ++ ++ dialog.connect('response', Lang.bind(this, function(dialog, id) { ++ if (id == 1) { ++ // restore default settings ++ this._settings.set_value('trans-dynamic-behavior', this._settings.get_default_value('trans-dynamic-behavior')); ++ ++ this._settings.set_value('trans-dynamic-distance', this._settings.get_default_value('trans-dynamic-distance')); ++ this._builder.get_object('trans_options_distance_spinbutton').set_value(this._settings.get_int('trans-dynamic-distance')); ++ ++ this._settings.set_value('trans-dynamic-anim-target', this._settings.get_default_value('trans-dynamic-anim-target')); ++ this._builder.get_object('trans_options_min_opacity_spinbutton').set_value(this._settings.get_double('trans-dynamic-anim-target') * 100); ++ ++ this._settings.set_value('trans-dynamic-anim-time', this._settings.get_default_value('trans-dynamic-anim-time')); ++ this._builder.get_object('trans_options_anim_time_spinbutton').set_value(this._settings.get_int('trans-dynamic-anim-time')); ++ } else { ++ // remove the settings box so it doesn't get destroyed; ++ dialog.get_content_area().remove(box); ++ dialog.destroy(); ++ } ++ return; ++ })); ++ ++ dialog.show(); ++ dialog.set_default_size(1, 1); ++ ++ })); ++ ++ this._settings.bind('desktop-line-use-custom-color', ++ this._builder.get_object('override_show_desktop_line_color_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('desktop-line-use-custom-color', ++ this._builder.get_object('override_show_desktop_line_color_colorbutton'), ++ 'sensitive', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ rgba.parse(this._settings.get_string('desktop-line-custom-color')); ++ this._builder.get_object('override_show_desktop_line_color_colorbutton').set_rgba(rgba); ++ this._builder.get_object('override_show_desktop_line_color_colorbutton').connect('color-set', Lang.bind(this, function (button) { ++ let rgba = button.get_rgba(); ++ let css = rgba.to_string(); ++ this._settings.set_string('desktop-line-custom-color', css); ++ })); ++ ++ ++ this._settings.bind('intellihide', ++ this._builder.get_object('intellihide_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('intellihide', ++ this._builder.get_object('intellihide_options_button'), ++ 'sensitive', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('intellihide-hide-from-windows', ++ this._builder.get_object('intellihide_window_hide_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('intellihide-hide-from-windows', ++ this._builder.get_object('intellihide_behaviour_options'), ++ 'sensitive', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('intellihide-behaviour', ++ this._builder.get_object('intellihide_behaviour_combo'), ++ 'active-id', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('intellihide-use-pressure', ++ this._builder.get_object('intellihide_use_pressure_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('intellihide-use-pressure', ++ this._builder.get_object('intellihide_use_pressure_options'), ++ 'sensitive', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('intellihide-show-in-fullscreen', ++ this._builder.get_object('intellihide_show_in_fullscreen_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('intellihide-only-secondary', ++ this._builder.get_object('intellihide_only_secondary_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('multi-monitors', ++ this._builder.get_object('grid_intellihide_only_secondary'), ++ 'sensitive', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._builder.get_object('multimon_multi_switch').connect('notify::active', (widget) => { ++ if (!widget.get_active()) ++ this._builder.get_object('intellihide_only_secondary_switch').set_active(false); ++ }); ++ ++ this._builder.get_object('intellihide_pressure_threshold_spinbutton').set_value(this._settings.get_int('intellihide-pressure-threshold')); ++ this._builder.get_object('intellihide_pressure_threshold_spinbutton').connect('value-changed', Lang.bind(this, function (widget) { ++ this._settings.set_int('intellihide-pressure-threshold', widget.get_value()); ++ })); ++ ++ this._builder.get_object('intellihide_pressure_time_spinbutton').set_value(this._settings.get_int('intellihide-pressure-time')); ++ this._builder.get_object('intellihide_pressure_time_spinbutton').connect('value-changed', Lang.bind(this, function (widget) { ++ this._settings.set_int('intellihide-pressure-time', widget.get_value()); ++ })); ++ ++ this._settings.bind('intellihide-key-toggle-text', ++ this._builder.get_object('intellihide_toggle_entry'), ++ 'text', ++ Gio.SettingsBindFlags.DEFAULT); ++ this._settings.connect('changed::intellihide-key-toggle-text', () => setShortcut(this._settings, 'intellihide-key-toggle')); ++ ++ this._builder.get_object('intellihide_animation_time_spinbutton').set_value(this._settings.get_int('intellihide-animation-time')); ++ this._builder.get_object('intellihide_animation_time_spinbutton').connect('value-changed', Lang.bind (this, function(widget) { ++ this._settings.set_int('intellihide-animation-time', widget.get_value()); ++ })); ++ ++ this._builder.get_object('intellihide_close_delay_spinbutton').set_value(this._settings.get_int('intellihide-close-delay')); ++ this._builder.get_object('intellihide_close_delay_spinbutton').connect('value-changed', Lang.bind (this, function(widget) { ++ this._settings.set_int('intellihide-close-delay', widget.get_value()); ++ })); ++ ++ this._builder.get_object('intellihide_enable_start_delay_spinbutton').set_value(this._settings.get_int('intellihide-enable-start-delay')); ++ this._builder.get_object('intellihide_enable_start_delay_spinbutton').connect('value-changed', Lang.bind (this, function(widget) { ++ this._settings.set_int('intellihide-enable-start-delay', widget.get_value()); ++ })); ++ ++ this._builder.get_object('intellihide_options_button').connect('clicked', Lang.bind(this, function() { ++ let dialog = new Gtk.Dialog({ title: _('Intellihide options'), ++ transient_for: this.notebook.get_root(), ++ use_header_bar: true, ++ modal: true }); ++ ++ // GTK+ leaves positive values for application-defined response ids. ++ // Use +1 for the reset action ++ dialog.add_button(_('Reset to defaults'), 1); ++ ++ let box = this._builder.get_object('box_intellihide_options'); ++ dialog.get_content_area().append(box); ++ ++ dialog.connect('response', Lang.bind(this, function(dialog, id) { ++ if (id == 1) { ++ // restore default settings ++ this._settings.set_value('intellihide-hide-from-windows', this._settings.get_default_value('intellihide-hide-from-windows')); ++ this._settings.set_value('intellihide-behaviour', this._settings.get_default_value('intellihide-behaviour')); ++ this._settings.set_value('intellihide-use-pressure', this._settings.get_default_value('intellihide-use-pressure')); ++ this._settings.set_value('intellihide-show-in-fullscreen', this._settings.get_default_value('intellihide-show-in-fullscreen')); ++ this._settings.set_value('intellihide-only-secondary', this._settings.get_default_value('intellihide-only-secondary')); ++ ++ this._settings.set_value('intellihide-pressure-threshold', this._settings.get_default_value('intellihide-pressure-threshold')); ++ this._builder.get_object('intellihide_pressure_threshold_spinbutton').set_value(this._settings.get_int('intellihide-pressure-threshold')); ++ ++ this._settings.set_value('intellihide-pressure-time', this._settings.get_default_value('intellihide-pressure-time')); ++ this._builder.get_object('intellihide_pressure_time_spinbutton').set_value(this._settings.get_int('intellihide-pressure-time')); ++ ++ this._settings.set_value('intellihide-key-toggle-text', this._settings.get_default_value('intellihide-key-toggle-text')); ++ ++ this._settings.set_value('intellihide-animation-time', this._settings.get_default_value('intellihide-animation-time')); ++ this._builder.get_object('intellihide_animation_time_spinbutton').set_value(this._settings.get_int('intellihide-animation-time')); ++ ++ this._settings.set_value('intellihide-close-delay', this._settings.get_default_value('intellihide-close-delay')); ++ this._builder.get_object('intellihide_close_delay_spinbutton').set_value(this._settings.get_int('intellihide-close-delay')); ++ ++ this._settings.set_value('intellihide-enable-start-delay', this._settings.get_default_value('intellihide-enable-start-delay')); ++ this._builder.get_object('intellihide_enable_start_delay_spinbutton').set_value(this._settings.get_int('intellihide-enable-start-delay')); ++ } else { ++ // remove the settings box so it doesn't get destroyed; ++ dialog.get_content_area().remove(box); ++ dialog.destroy(); ++ } ++ return; ++ })); ++ ++ dialog.show(); ++ dialog.set_default_size(1, 1); ++ ++ })); ++ ++ // Behavior panel ++ ++ this._builder.get_object('show_applications_side_padding_spinbutton').set_value(this._settings.get_int('show-apps-icon-side-padding')); ++ this._builder.get_object('show_applications_side_padding_spinbutton').connect('value-changed', Lang.bind (this, function(widget) { ++ this._settings.set_int('show-apps-icon-side-padding', widget.get_value()); ++ })); ++ ++ this._settings.bind('show-apps-override-escape', ++ this._builder.get_object('show_applications_esc_key_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('show-showdesktop-hover', ++ this._builder.get_object('show_showdesktop_hide_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('show-showdesktop-hover', ++ this._builder.get_object('grid_show_showdesktop_hide_options'), ++ 'sensitive', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('show-appmenu', ++ this._builder.get_object('show_appmenu_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('show-window-previews', ++ this._builder.get_object('show_window_previews_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('show-window-previews', ++ this._builder.get_object('show_window_previews_button'), ++ 'sensitive', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('show-tooltip', ++ this._builder.get_object('show_tooltip_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('show-favorites', ++ this._builder.get_object('show_favorite_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('show-favorites-all-monitors', ++ this._builder.get_object('multimon_multi_show_favorites_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('show-favorites', ++ this._builder.get_object('multimon_multi_show_favorites_switch'), ++ 'sensitive', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('show-running-apps', ++ this._builder.get_object('show_runnning_apps_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._setPreviewTitlePosition(); ++ ++ this._builder.get_object('grid_preview_title_font_color_colorbutton').connect('color-set', Lang.bind(this, function (button) { ++ let rgba = button.get_rgba(); ++ let css = rgba.to_string(); ++ let hexString = cssHexString(css); ++ this._settings.set_string('window-preview-title-font-color', hexString); ++ })); ++ ++ this._builder.get_object('show_window_previews_button').connect('clicked', Lang.bind(this, function() { ++ ++ let dialog = new Gtk.Dialog({ title: _('Window preview options'), ++ transient_for: this.notebook.get_root(), ++ use_header_bar: true, ++ modal: true }); ++ ++ // GTK+ leaves positive values for application-defined response ids. ++ // Use +1 for the reset action ++ dialog.add_button(_('Reset to defaults'), 1); ++ ++ let scrolledWindow = this._builder.get_object('box_window_preview_options'); ++ ++ dialog.get_content_area().append(scrolledWindow); ++ ++ this._builder.get_object('preview_timeout_spinbutton').set_value(this._settings.get_int('show-window-previews-timeout')); ++ this._builder.get_object('preview_timeout_spinbutton').connect('value-changed', Lang.bind (this, function(widget) { ++ this._settings.set_int('show-window-previews-timeout', widget.get_value()); ++ })); ++ ++ this._settings.bind('preview-middle-click-close', ++ this._builder.get_object('preview_middle_click_close_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('window-preview-fixed-x', ++ this._builder.get_object('preview_aspect_ratio_x_fixed_togglebutton'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('window-preview-fixed-y', ++ this._builder.get_object('preview_aspect_ratio_y_fixed_togglebutton'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('preview-use-custom-opacity', ++ this._builder.get_object('preview_custom_opacity_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ this._settings.bind('preview-use-custom-opacity', ++ this._builder.get_object('preview_custom_opacity_spinbutton'), ++ 'sensitive', ++ Gio.SettingsBindFlags.DEFAULT); ++ this._settings.bind('window-preview-use-custom-icon-size', ++ this._builder.get_object('preview_custom_icon_size_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ this._settings.bind('window-preview-use-custom-icon-size', ++ this._builder.get_object('preview_custom_icon_size_spinbutton'), ++ 'sensitive', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._builder.get_object('preview_custom_opacity_spinbutton').set_value(this._settings.get_int('preview-custom-opacity')); ++ this._builder.get_object('preview_custom_opacity_spinbutton').connect('value-changed', Lang.bind (this, function(widget) { ++ this._settings.set_int('preview-custom-opacity', widget.get_value()); ++ })); ++ ++ this._settings.bind('peek-mode', ++ this._builder.get_object('peek_mode_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ this._settings.bind('peek-mode', ++ this._builder.get_object('grid_enter_peek_mode_timeout'), ++ 'sensitive', ++ Gio.SettingsBindFlags.DEFAULT); ++ this._settings.bind('peek-mode', ++ this._builder.get_object('grid_peek_mode_opacity'), ++ 'sensitive', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('window-preview-show-title', ++ this._builder.get_object('preview_show_title_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ this._settings.bind('window-preview-show-title', ++ this._builder.get_object('grid_preview_custom_icon_size'), ++ 'sensitive', ++ Gio.SettingsBindFlags.DEFAULT); ++ this._settings.bind('window-preview-show-title', ++ this._builder.get_object('grid_preview_title_size'), ++ 'sensitive', ++ Gio.SettingsBindFlags.DEFAULT); ++ this._settings.bind('window-preview-show-title', ++ this._builder.get_object('grid_preview_title_weight'), ++ 'sensitive', ++ Gio.SettingsBindFlags.DEFAULT); ++ this._settings.bind('window-preview-show-title', ++ this._builder.get_object('grid_preview_title_font_color'), ++ 'sensitive', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._builder.get_object('enter_peek_mode_timeout_spinbutton').set_value(this._settings.get_int('enter-peek-mode-timeout')); ++ this._builder.get_object('enter_peek_mode_timeout_spinbutton').connect('value-changed', Lang.bind (this, function(widget) { ++ this._settings.set_int('enter-peek-mode-timeout', widget.get_value()); ++ })); ++ ++ this._builder.get_object('leave_timeout_spinbutton').set_value(this._settings.get_int('leave-timeout')); ++ this._builder.get_object('leave_timeout_spinbutton').connect('value-changed', Lang.bind (this, function(widget) { ++ this._settings.set_int('leave-timeout', widget.get_value()); ++ })); ++ ++ this._settings.bind('window-preview-hide-immediate-click', ++ this._builder.get_object('preview_immediate_click_button'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._builder.get_object('animation_time_spinbutton').set_value(this._settings.get_int('window-preview-animation-time')); ++ this._builder.get_object('animation_time_spinbutton').connect('value-changed', Lang.bind (this, function(widget) { ++ this._settings.set_int('window-preview-animation-time', widget.get_value()); ++ })); ++ ++ this._builder.get_object('peek_mode_opacity_spinbutton').set_value(this._settings.get_int('peek-mode-opacity')); ++ this._builder.get_object('peek_mode_opacity_spinbutton').connect('value-changed', Lang.bind (this, function(widget) { ++ this._settings.set_int('peek-mode-opacity', widget.get_value()); ++ })); ++ ++ this._builder.get_object('preview_size_spinbutton').set_value(this._settings.get_int('window-preview-size')); ++ this._builder.get_object('preview_size_spinbutton').connect('value-changed', Lang.bind (this, function(widget) { ++ this._settings.set_int('window-preview-size', widget.get_value()); ++ })); ++ ++ this._builder.get_object('preview_aspect_ratio_x_combo').set_active_id(this._settings.get_int('window-preview-aspect-ratio-x').toString()); ++ this._builder.get_object('preview_aspect_ratio_x_combo').connect('changed', Lang.bind (this, function(widget) { ++ this._settings.set_int('window-preview-aspect-ratio-x', parseInt(widget.get_active_id(), 10)); ++ })); ++ ++ this._builder.get_object('preview_aspect_ratio_y_combo').set_active_id(this._settings.get_int('window-preview-aspect-ratio-y').toString()); ++ this._builder.get_object('preview_aspect_ratio_y_combo').connect('changed', Lang.bind (this, function(widget) { ++ this._settings.set_int('window-preview-aspect-ratio-y', parseInt(widget.get_active_id(), 10)); ++ })); ++ ++ this._builder.get_object('preview_padding_spinbutton').set_value(this._settings.get_int('window-preview-padding')); ++ this._builder.get_object('preview_padding_spinbutton').connect('value-changed', Lang.bind (this, function(widget) { ++ this._settings.set_int('window-preview-padding', widget.get_value()); ++ })); ++ ++ this._builder.get_object('preview_title_size_spinbutton').set_value(this._settings.get_int('window-preview-title-font-size')); ++ this._builder.get_object('preview_title_size_spinbutton').connect('value-changed', Lang.bind (this, function(widget) { ++ this._settings.set_int('window-preview-title-font-size', widget.get_value()); ++ })); ++ ++ this._builder.get_object('preview_custom_icon_size_spinbutton').set_value(this._settings.get_int('window-preview-custom-icon-size')); ++ this._builder.get_object('preview_custom_icon_size_spinbutton').connect('value-changed', Lang.bind (this, function(widget) { ++ this._settings.set_int('window-preview-custom-icon-size', widget.get_value()); ++ })); ++ ++ this._builder.get_object('grid_preview_title_weight_combo').set_active_id(this._settings.get_string('window-preview-title-font-weight')); ++ this._builder.get_object('grid_preview_title_weight_combo').connect('changed', Lang.bind (this, function(widget) { ++ this._settings.set_string('window-preview-title-font-weight', widget.get_active_id()); ++ })); ++ ++ (function() { ++ let rgba = new Gdk.RGBA(); ++ rgba.parse(this._settings.get_string('window-preview-title-font-color')); ++ this._builder.get_object('grid_preview_title_font_color_colorbutton').set_rgba(rgba); ++ }).apply(this); ++ ++ dialog.connect('response', Lang.bind(this, function(dialog, id) { ++ if (id == 1) { ++ // restore default settings ++ this._settings.set_value('show-window-previews-timeout', this._settings.get_default_value('show-window-previews-timeout')); ++ this._builder.get_object('preview_timeout_spinbutton').set_value(this._settings.get_int('show-window-previews-timeout')); ++ ++ this._settings.set_value('leave-timeout', this._settings.get_default_value('leave-timeout')); ++ this._builder.get_object('leave_timeout_spinbutton').set_value(this._settings.get_int('leave-timeout')); ++ ++ this._settings.set_value('window-preview-hide-immediate-click', this._settings.get_default_value('window-preview-hide-immediate-click')); ++ ++ this._settings.set_value('window-preview-animation-time', this._settings.get_default_value('window-preview-animation-time')); ++ this._builder.get_object('animation_time_spinbutton').set_value(this._settings.get_int('window-preview-animation-time')); ++ ++ this._settings.set_value('preview-use-custom-opacity', this._settings.get_default_value('preview-use-custom-opacity')); ++ ++ this._settings.set_value('window-preview-use-custom-icon-size', this._settings.get_default_value('window-preview-use-custom-icon-size')); ++ ++ this._settings.set_value('preview-custom-opacity', this._settings.get_default_value('preview-custom-opacity')); ++ this._builder.get_object('preview_custom_opacity_spinbutton').set_value(this._settings.get_int('preview-custom-opacity')); ++ ++ this._settings.set_value('window-preview-title-position', this._settings.get_default_value('window-preview-title-position')); ++ this._setPreviewTitlePosition(); ++ ++ this._settings.set_value('peek-mode', this._settings.get_default_value('peek-mode')); ++ this._settings.set_value('window-preview-show-title', this._settings.get_default_value('window-preview-show-title')); ++ this._settings.set_value('enter-peek-mode-timeout', this._settings.get_default_value('enter-peek-mode-timeout')); ++ this._builder.get_object('enter_peek_mode_timeout_spinbutton').set_value(this._settings.get_int('enter-peek-mode-timeout')); ++ this._settings.set_value('peek-mode-opacity', this._settings.get_default_value('peek-mode-opacity')); ++ this._builder.get_object('peek_mode_opacity_spinbutton').set_value(this._settings.get_int('peek-mode-opacity')); ++ ++ this._settings.set_value('window-preview-size', this._settings.get_default_value('window-preview-size')); ++ this._builder.get_object('preview_size_spinbutton').set_value(this._settings.get_int('window-preview-size')); ++ ++ this._settings.set_value('window-preview-fixed-x', this._settings.get_default_value('window-preview-fixed-x')); ++ this._settings.set_value('window-preview-fixed-y', this._settings.get_default_value('window-preview-fixed-y')); ++ ++ this._settings.set_value('window-preview-aspect-ratio-x', this._settings.get_default_value('window-preview-aspect-ratio-x')); ++ this._builder.get_object('preview_aspect_ratio_x_combo').set_active_id(this._settings.get_int('window-preview-aspect-ratio-x').toString()); ++ ++ this._settings.set_value('window-preview-aspect-ratio-y', this._settings.get_default_value('window-preview-aspect-ratio-y')); ++ this._builder.get_object('preview_aspect_ratio_y_combo').set_active_id(this._settings.get_int('window-preview-aspect-ratio-y').toString()); ++ ++ this._settings.set_value('window-preview-padding', this._settings.get_default_value('window-preview-padding')); ++ this._builder.get_object('preview_padding_spinbutton').set_value(this._settings.get_int('window-preview-padding')); ++ ++ this._settings.set_value('preview-middle-click-close', this._settings.get_default_value('preview-middle-click-close')); ++ ++ this._settings.set_value('window-preview-title-font-size', this._settings.get_default_value('window-preview-title-font-size')); ++ this._builder.get_object('preview_title_size_spinbutton').set_value(this._settings.get_int('window-preview-title-font-size')); ++ ++ this._settings.set_value('window-preview-custom-icon-size', this._settings.get_default_value('window-preview-custom-icon-size')); ++ this._builder.get_object('preview_custom_icon_size_spinbutton').set_value(this._settings.get_int('window-preview-custom-icon-size')); ++ ++ this._settings.set_value('window-preview-title-font-weight', this._settings.get_default_value('window-preview-title-font-weight')); ++ this._builder.get_object('grid_preview_title_weight_combo').set_active_id(this._settings.get_string('window-preview-title-font-weight')); ++ ++ this._settings.set_value('window-preview-title-font-color', this._settings.get_default_value('window-preview-title-font-color')); ++ let rgba = new Gdk.RGBA(); ++ rgba.parse(this._settings.get_string('window-preview-title-font-color')); ++ this._builder.get_object('grid_preview_title_font_color_colorbutton').set_rgba(rgba); ++ ++ } else { ++ // remove the settings box so it doesn't get destroyed; ++ dialog.get_content_area().remove(scrolledWindow); ++ dialog.destroy(); ++ } ++ return; ++ })); ++ ++ dialog.show(); ++ ++ })); ++ ++ this._settings.bind('isolate-workspaces', ++ this._builder.get_object('isolate_workspaces_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('isolate-monitors', ++ this._builder.get_object('multimon_multi_isolate_monitor_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('overview-click-to-exit', ++ this._builder.get_object('clicktoexit_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('hide-overview-on-startup', ++ this._builder.get_object('hide_overview_on_startup_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('group-apps', ++ this._builder.get_object('group_apps_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT | Gio.SettingsBindFlags.INVERT_BOOLEAN); ++ ++ this._settings.bind('group-apps', ++ this._builder.get_object('show_group_apps_options_button'), ++ 'sensitive', ++ Gio.SettingsBindFlags.DEFAULT | Gio.SettingsBindFlags.INVERT_BOOLEAN); ++ ++ this._builder.get_object('group_apps_label_font_color_colorbutton').connect('color-set', Lang.bind(this, function (button) { ++ let rgba = button.get_rgba(); ++ let css = rgba.to_string(); ++ let hexString = cssHexString(css); ++ this._settings.set_string('group-apps-label-font-color', hexString); ++ })); ++ ++ this._builder.get_object('group_apps_label_font_color_minimized_colorbutton').connect('color-set', Lang.bind(this, function (button) { ++ let rgba = button.get_rgba(); ++ let css = rgba.to_string(); ++ let hexString = cssHexString(css); ++ this._settings.set_string('group-apps-label-font-color-minimized', hexString); ++ })); ++ ++ this._settings.bind('group-apps-use-fixed-width', ++ this._builder.get_object('group_apps_use_fixed_width_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('group-apps-underline-unfocused', ++ this._builder.get_object('group_apps_underline_unfocused_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('group-apps-use-launchers', ++ this._builder.get_object('group_apps_use_launchers_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._builder.get_object('show_group_apps_options_button').connect('clicked', Lang.bind(this, function() { ++ let dialog = new Gtk.Dialog({ title: _('Ungrouped application options'), ++ transient_for: this.notebook.get_root(), ++ use_header_bar: true, ++ modal: true }); ++ ++ // GTK+ leaves positive values for application-defined response ids. ++ // Use +1 for the reset action ++ dialog.add_button(_('Reset to defaults'), 1); ++ ++ let box = this._builder.get_object('box_group_apps_options'); ++ dialog.get_content_area().append(box); ++ ++ this._builder.get_object('group_apps_label_font_size_spinbutton').set_value(this._settings.get_int('group-apps-label-font-size')); ++ this._builder.get_object('group_apps_label_font_size_spinbutton').connect('value-changed', Lang.bind (this, function(widget) { ++ this._settings.set_int('group-apps-label-font-size', widget.get_value()); ++ })); ++ ++ this._builder.get_object('group_apps_label_font_weight_combo').set_active_id(this._settings.get_string('group-apps-label-font-weight')); ++ this._builder.get_object('group_apps_label_font_weight_combo').connect('changed', Lang.bind (this, function(widget) { ++ this._settings.set_string('group-apps-label-font-weight', widget.get_active_id()); ++ })); ++ ++ (function() { ++ let rgba = new Gdk.RGBA(); ++ rgba.parse(this._settings.get_string('group-apps-label-font-color')); ++ this._builder.get_object('group_apps_label_font_color_colorbutton').set_rgba(rgba); ++ }).apply(this); ++ ++ (function() { ++ let rgba = new Gdk.RGBA(); ++ rgba.parse(this._settings.get_string('group-apps-label-font-color-minimized')); ++ this._builder.get_object('group_apps_label_font_color_minimized_colorbutton').set_rgba(rgba); ++ }).apply(this); ++ ++ this._builder.get_object('group_apps_label_max_width_spinbutton').set_value(this._settings.get_int('group-apps-label-max-width')); ++ this._builder.get_object('group_apps_label_max_width_spinbutton').connect('value-changed', Lang.bind (this, function(widget) { ++ this._settings.set_int('group-apps-label-max-width', widget.get_value()); ++ })); ++ ++ dialog.connect('response', Lang.bind(this, function(dialog, id) { ++ if (id == 1) { ++ // restore default settings ++ this._settings.set_value('group-apps-label-font-size', this._settings.get_default_value('group-apps-label-font-size')); ++ this._builder.get_object('group_apps_label_font_size_spinbutton').set_value(this._settings.get_int('group-apps-label-font-size')); ++ ++ this._settings.set_value('group-apps-label-font-weight', this._settings.get_default_value('group-apps-label-font-weight')); ++ this._builder.get_object('group_apps_label_font_weight_combo').set_active_id(this._settings.get_string('group-apps-label-font-weight')); ++ ++ this._settings.set_value('group-apps-label-font-color', this._settings.get_default_value('group-apps-label-font-color')); ++ let rgba = new Gdk.RGBA(); ++ rgba.parse(this._settings.get_string('group-apps-label-font-color')); ++ this._builder.get_object('group_apps_label_font_color_colorbutton').set_rgba(rgba); ++ ++ this._settings.set_value('group-apps-label-font-color-minimized', this._settings.get_default_value('group-apps-label-font-color-minimized')); ++ let minimizedFontColor = new Gdk.RGBA(); ++ minimizedFontColor.parse(this._settings.get_string('group-apps-label-font-color-minimized')); ++ this._builder.get_object('group_apps_label_font_color_minimized_colorbutton').set_rgba(minimizedFontColor); ++ ++ this._settings.set_value('group-apps-label-max-width', this._settings.get_default_value('group-apps-label-max-width')); ++ this._builder.get_object('group_apps_label_max_width_spinbutton').set_value(this._settings.get_int('group-apps-label-max-width')); ++ ++ this._settings.set_value('group-apps-use-fixed-width', this._settings.get_default_value('group-apps-use-fixed-width')); ++ this._settings.set_value('group-apps-underline-unfocused', this._settings.get_default_value('group-apps-underline-unfocused')); ++ this._settings.set_value('group-apps-use-launchers', this._settings.get_default_value('group-apps-use-launchers')); ++ } else { ++ // remove the settings box so it doesn't get destroyed; ++ dialog.get_content_area().remove(box); ++ dialog.destroy(); ++ } ++ return; ++ })); ++ ++ dialog.show(); ++ dialog.set_default_size(600, 1); ++ ++ })); ++ ++ this._builder.get_object('click_action_combo').set_active_id(this._settings.get_string('click-action')); ++ this._builder.get_object('click_action_combo').connect('changed', Lang.bind (this, function(widget) { ++ this._settings.set_string('click-action', widget.get_active_id()); ++ })); ++ ++ this._builder.get_object('shift_click_action_combo').connect('changed', Lang.bind (this, function(widget) { ++ this._settings.set_string('shift-click-action', widget.get_active_id()); ++ })); ++ ++ this._builder.get_object('middle_click_action_combo').connect('changed', Lang.bind (this, function(widget) { ++ this._settings.set_string('middle-click-action', widget.get_active_id()); ++ })); ++ this._builder.get_object('shift_middle_click_action_combo').connect('changed', Lang.bind (this, function(widget) { ++ this._settings.set_string('shift-middle-click-action', widget.get_active_id()); ++ })); ++ ++ // Create dialog for middle-click options ++ this._builder.get_object('middle_click_options_button').connect('clicked', Lang.bind(this, function() { ++ ++ let dialog = new Gtk.Dialog({ title: _('Customize middle-click behavior'), ++ transient_for: this.notebook.get_root(), ++ use_header_bar: true, ++ modal: true }); ++ ++ // GTK+ leaves positive values for application-defined response ids. ++ // Use +1 for the reset action ++ dialog.add_button(_('Reset to defaults'), 1); ++ ++ let box = this._builder.get_object('box_middle_click_options'); ++ dialog.get_content_area().append(box); ++ ++ this._builder.get_object('shift_click_action_combo').set_active_id(this._settings.get_string('shift-click-action')); ++ ++ this._builder.get_object('middle_click_action_combo').set_active_id(this._settings.get_string('middle-click-action')); ++ ++ this._builder.get_object('shift_middle_click_action_combo').set_active_id(this._settings.get_string('shift-middle-click-action')); ++ ++ this._settings.bind('shift-click-action', ++ this._builder.get_object('shift_click_action_combo'), ++ 'active-id', ++ Gio.SettingsBindFlags.DEFAULT); ++ this._settings.bind('middle-click-action', ++ this._builder.get_object('middle_click_action_combo'), ++ 'active-id', ++ Gio.SettingsBindFlags.DEFAULT); ++ this._settings.bind('shift-middle-click-action', ++ this._builder.get_object('shift_middle_click_action_combo'), ++ 'active-id', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ dialog.connect('response', Lang.bind(this, function(dialog, id) { ++ if (id == 1) { ++ // restore default settings for the relevant keys ++ let keys = ['shift-click-action', 'middle-click-action', 'shift-middle-click-action']; ++ keys.forEach(function(val) { ++ this._settings.set_value(val, this._settings.get_default_value(val)); ++ }, this); ++ this._builder.get_object('shift_click_action_combo').set_active_id(this._settings.get_string('shift-click-action')); ++ this._builder.get_object('middle_click_action_combo').set_active_id(this._settings.get_string('middle-click-action')); ++ this._builder.get_object('shift_middle_click_action_combo').set_active_id(this._settings.get_string('shift-middle-click-action')); ++ } else { ++ // remove the settings box so it doesn't get destroyed; ++ dialog.get_content_area().remove(box); ++ dialog.destroy(); ++ } ++ return; ++ })); ++ ++ dialog.show(); ++ dialog.set_default_size(700, 1); ++ ++ })); ++ ++ this._builder.get_object('scroll_panel_combo').set_active_id(this._settings.get_string('scroll-panel-action')); ++ this._builder.get_object('scroll_panel_combo').connect('changed', Lang.bind (this, function(widget) { ++ this._settings.set_string('scroll-panel-action', widget.get_active_id()); ++ })); ++ ++ this._builder.get_object('scroll_icon_combo').set_active_id(this._settings.get_string('scroll-icon-action')); ++ this._builder.get_object('scroll_icon_combo').connect('changed', Lang.bind (this, function(widget) { ++ this._settings.set_string('scroll-icon-action', widget.get_active_id()); ++ })); ++ ++ // Create dialog for panel scroll options ++ this._builder.get_object('scroll_panel_options_button').connect('clicked', Lang.bind(this, function() { ++ let dialog = new Gtk.Dialog({ title: _('Customize panel scroll behavior'), ++ transient_for: this.notebook.get_root(), ++ use_header_bar: true, ++ modal: true }); ++ ++ // GTK+ leaves positive values for application-defined response ids. ++ // Use +1 for the reset action ++ dialog.add_button(_('Reset to defaults'), 1); ++ ++ let box = this._builder.get_object('scroll_panel_options_box'); ++ dialog.get_content_area().append(box); ++ ++ this._builder.get_object('scroll_panel_options_delay_spinbutton').set_value(this._settings.get_int('scroll-panel-delay')); ++ this._builder.get_object('scroll_panel_options_delay_spinbutton').connect('value-changed', Lang.bind (this, function(widget) { ++ this._settings.set_int('scroll-panel-delay', widget.get_value()); ++ })); ++ ++ this._settings.bind('scroll-panel-show-ws-popup', ++ this._builder.get_object('scroll_panel_options_show_ws_popup_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ dialog.connect('response', Lang.bind(this, function(dialog, id) { ++ if (id == 1) { ++ // restore default settings ++ this._settings.set_value('scroll-panel-delay', this._settings.get_default_value('scroll-panel-delay')); ++ this._builder.get_object('scroll_panel_options_delay_spinbutton').set_value(this._settings.get_int('scroll-panel-delay')); ++ ++ this._settings.set_value('scroll-panel-show-ws-popup', this._settings.get_default_value('scroll-panel-show-ws-popup')); ++ } else { ++ // remove the settings box so it doesn't get destroyed; ++ dialog.get_content_area().remove(box); ++ dialog.destroy(); ++ } ++ return; ++ })); ++ ++ dialog.show(); ++ dialog.set_default_size(640, 1); ++ ++ })); ++ ++ // Create dialog for icon scroll options ++ this._builder.get_object('scroll_icon_options_button').connect('clicked', Lang.bind(this, function() { ++ let dialog = new Gtk.Dialog({ title: _('Customize icon scroll behavior'), ++ transient_for: this.notebook.get_root(), ++ use_header_bar: true, ++ modal: true }); ++ ++ // GTK+ leaves positive values for application-defined response ids. ++ // Use +1 for the reset action ++ dialog.add_button(_('Reset to defaults'), 1); ++ ++ let box = this._builder.get_object('scroll_icon_options_box'); ++ dialog.get_content_area().append(box); ++ ++ this._builder.get_object('scroll_icon_options_delay_spinbutton').set_value(this._settings.get_int('scroll-icon-delay')); ++ this._builder.get_object('scroll_icon_options_delay_spinbutton').connect('value-changed', Lang.bind (this, function(widget) { ++ this._settings.set_int('scroll-icon-delay', widget.get_value()); ++ })); ++ ++ dialog.connect('response', Lang.bind(this, function(dialog, id) { ++ if (id == 1) { ++ // restore default settings ++ this._settings.set_value('scroll-icon-delay', this._settings.get_default_value('scroll-icon-delay')); ++ this._builder.get_object('scroll_icon_options_delay_spinbutton').set_value(this._settings.get_int('scroll-icon-delay')); ++ } else { ++ // remove the settings box so it doesn't get destroyed; ++ dialog.get_content_area().remove(box); ++ dialog.destroy(); ++ } ++ return; ++ })); ++ ++ dialog.show(); ++ dialog.set_default_size(640, 1); ++ ++ })); ++ ++ this._settings.bind('hot-keys', ++ this._builder.get_object('hot_keys_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ this._settings.bind('hot-keys', ++ this._builder.get_object('overlay_button'), ++ 'sensitive', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._builder.get_object('overlay_combo').connect('changed', Lang.bind (this, function(widget) { ++ this._settings.set_string('hotkeys-overlay-combo', widget.get_active_id()); ++ })); ++ ++ this._settings.bind('shortcut-previews', ++ this._builder.get_object('shortcut_preview_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._builder.get_object('shortcut_num_keys_combo').set_active_id(this._settings.get_string('shortcut-num-keys')); ++ this._builder.get_object('shortcut_num_keys_combo').connect('changed', Lang.bind (this, function(widget) { ++ this._settings.set_string('shortcut-num-keys', widget.get_active_id()); ++ })); ++ ++ this._settings.connect('changed::hotkey-prefix-text', Lang.bind(this, function() {checkHotkeyPrefix(this._settings);})); ++ ++ this._builder.get_object('hotkey_prefix_combo').set_active_id(this._settings.get_string('hotkey-prefix-text')); ++ ++ this._settings.bind('hotkey-prefix-text', ++ this._builder.get_object('hotkey_prefix_combo'), ++ 'active-id', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._builder.get_object('overlay_combo').set_active_id(this._settings.get_string('hotkeys-overlay-combo')); ++ ++ this._settings.bind('hotkeys-overlay-combo', ++ this._builder.get_object('overlay_combo'), ++ 'active-id', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('overlay-timeout', ++ this._builder.get_object('timeout_spinbutton'), ++ 'value', ++ Gio.SettingsBindFlags.DEFAULT); ++ if (this._settings.get_string('hotkeys-overlay-combo') !== 'TEMPORARILY') { ++ this._builder.get_object('timeout_spinbutton').set_sensitive(false); ++ } ++ ++ this._settings.connect('changed::hotkeys-overlay-combo', Lang.bind(this, function() { ++ if (this._settings.get_string('hotkeys-overlay-combo') !== 'TEMPORARILY') ++ this._builder.get_object('timeout_spinbutton').set_sensitive(false); ++ else ++ this._builder.get_object('timeout_spinbutton').set_sensitive(true); ++ })); ++ ++ this._settings.bind('shortcut-text', ++ this._builder.get_object('shortcut_entry'), ++ 'text', ++ Gio.SettingsBindFlags.DEFAULT); ++ this._settings.connect('changed::shortcut-text', Lang.bind(this, function() {setShortcut(this._settings, 'shortcut');})); ++ ++ // Create dialog for number overlay options ++ this._builder.get_object('overlay_button').connect('clicked', Lang.bind(this, function() { ++ ++ let dialog = new Gtk.Dialog({ title: _('Advanced hotkeys options'), ++ transient_for: this.notebook.get_root(), ++ use_header_bar: true, ++ modal: true }); ++ ++ // GTK+ leaves positive values for application-defined response ids. ++ // Use +1 for the reset action ++ dialog.add_button(_('Reset to defaults'), 1); ++ ++ let box = this._builder.get_object('box_overlay_shortcut'); ++ dialog.get_content_area().append(box); ++ ++ dialog.connect('response', Lang.bind(this, function(dialog, id) { ++ if (id == 1) { ++ // restore default settings for the relevant keys ++ let keys = ['hotkey-prefix-text', 'shortcut-text', 'hotkeys-overlay-combo', 'overlay-timeout', 'shortcut-previews']; ++ keys.forEach(function(val) { ++ this._settings.set_value(val, this._settings.get_default_value(val)); ++ }, this); ++ } else { ++ // remove the settings box so it doesn't get destroyed; ++ dialog.get_content_area().remove(box); ++ dialog.destroy(); ++ } ++ return; ++ })); ++ ++ dialog.show(); ++ dialog.set_default_size(600, 1); ++ ++ })); ++ ++ // setup dialog for secondary menu options ++ this._builder.get_object('secondarymenu_options_button').connect('clicked', Lang.bind(this, function() { ++ ++ let dialog = new Gtk.Dialog({ title: _('Secondary Menu Options'), ++ transient_for: this.notebook.get_root(), ++ use_header_bar: true, ++ modal: true }); ++ ++ // GTK+ leaves positive values for application-defined response ids. ++ // Use +1 for the reset action ++ dialog.add_button(_('Reset to defaults'), 1); ++ ++ let box = this._builder.get_object('box_secondarymenu_options'); ++ dialog.get_content_area().append(box); ++ ++ this._settings.bind('secondarymenu-contains-appmenu', ++ this._builder.get_object('secondarymenu_appmenu_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('secondarymenu-contains-showdetails', ++ this._builder.get_object('secondarymenu_showdetails_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ dialog.connect('response', Lang.bind(this, function(dialog, id) { ++ if (id == 1) { ++ // restore default settings ++ this._settings.set_value('secondarymenu-contains-appmenu', this._settings.get_default_value('secondarymenu-contains-appmenu')); ++ this._settings.set_value('secondarymenu-contains-showdetails', this._settings.get_default_value('secondarymenu-contains-showdetails')); ++ } else { ++ // remove the settings box so it doesn't get destroyed; ++ dialog.get_content_area().remove(box); ++ dialog.destroy(); ++ } ++ return; ++ })); ++ ++ dialog.show(); ++ dialog.set_default_size(480, 1); ++ ++ })); ++ ++ // setup dialog for advanced options ++ this._builder.get_object('button_advanced_options').connect('clicked', Lang.bind(this, function() { ++ ++ let dialog = new Gtk.Dialog({ title: _('Advanced Options'), ++ transient_for: this.notebook.get_root(), ++ use_header_bar: true, ++ modal: true }); ++ ++ // GTK+ leaves positive values for application-defined response ids. ++ // Use +1 for the reset action ++ dialog.add_button(_('Reset to defaults'), 1); ++ ++ let box = this._builder.get_object('box_advanced_options'); ++ dialog.get_content_area().append(box); ++ ++ dialog.connect('response', Lang.bind(this, function(dialog, id) { ++ if (id == 1) { ++ // restore default settings ++ ++ } else { ++ // remove the settings box so it doesn't get destroyed; ++ dialog.get_content_area().remove(box); ++ dialog.destroy(); ++ } ++ return; ++ })); ++ ++ dialog.show(); ++ dialog.set_default_size(480, 1); ++ ++ })); ++ ++ // Fine-tune panel ++ ++ let sizeScales = [ ++ {objectName: 'tray_size_scale', valueName: 'tray-size', range: DEFAULT_FONT_SIZES }, ++ {objectName: 'leftbox_size_scale', valueName: 'leftbox-size', range: DEFAULT_FONT_SIZES }, ++ {objectName: 'appicon_margin_scale', valueName: 'appicon-margin', range: DEFAULT_MARGIN_SIZES }, ++ {objectName: 'appicon_padding_scale', valueName: 'appicon-padding', range: DEFAULT_MARGIN_SIZES }, ++ {objectName: 'tray_padding_scale', valueName: 'tray-padding', range: DEFAULT_PADDING_SIZES }, ++ {objectName: 'leftbox_padding_scale', valueName: 'leftbox-padding', range: DEFAULT_PADDING_SIZES }, ++ {objectName: 'statusicon_padding_scale', valueName: 'status-icon-padding', range: DEFAULT_PADDING_SIZES }, ++ {objectName: 'panel_length_scale', valueName: '', range: LENGTH_MARKS } ++ ]; ++ ++ for(var idx in sizeScales) { ++ let size_scale = this._builder.get_object(sizeScales[idx].objectName); ++ let range = sizeScales[idx].range; ++ size_scale.set_range(range[range.length - 1], range[0]); ++ let value; ++ if (sizeScales[idx].objectName === 'panel_length_scale') { ++ value = PanelSettings.getPanelLength(this._settings, this._currentMonitorIndex); ++ } else { ++ value = this._settings.get_int(sizeScales[idx].valueName); ++ } ++ size_scale.set_value(value); ++ // Add marks from range arrays, omitting the first and last values. ++ range.slice(1, -1).forEach(function(val) { ++ size_scale.add_mark(val, Gtk.PositionType.TOP, val.toString()); ++ }); ++ ++ // Corrent for rtl languages ++ if (this._rtl) { ++ // Flip value position: this is not done automatically ++ size_scale.set_value_pos(Gtk.PositionType.LEFT); ++ // I suppose due to a bug, having a more than one mark and one above a value of 100 ++ // makes the rendering of the marks wrong in rtl. This doesn't happen setting the scale as not flippable ++ // and then manually inverting it ++ size_scale.set_flippable(false); ++ size_scale.set_inverted(true); ++ } ++ } ++ ++ this._settings.bind('animate-app-switch', ++ this._builder.get_object('animate_app_switch_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('animate-window-launch', ++ this._builder.get_object('animate_window_launch_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('animate-appicon-hover', ++ this._builder.get_object('animate_appicon_hover_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('animate-appicon-hover', ++ this._builder.get_object('animate_appicon_hover_button'), ++ 'sensitive', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ { ++ this._settings.bind('animate-appicon-hover-animation-type', ++ this._builder.get_object('animate_appicon_hover_options_type_combo'), ++ 'active-id', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ let scales = [ ++ ['animate_appicon_hover_options_duration_scale', 'animate-appicon-hover-animation-duration', 1], ++ ['animate_appicon_hover_options_rotation_scale', 'animate-appicon-hover-animation-rotation', 1], ++ ['animate_appicon_hover_options_travel_scale', 'animate-appicon-hover-animation-travel', 100], ++ ['animate_appicon_hover_options_zoom_scale', 'animate-appicon-hover-animation-zoom', 100], ++ ['animate_appicon_hover_options_convexity_scale', 'animate-appicon-hover-animation-convexity', 1], ++ ['animate_appicon_hover_options_extent_scale', 'animate-appicon-hover-animation-extent', 1], ++ ]; ++ ++ let updateScale = scale => { ++ let [id, key, factor] = scale; ++ let type = this._settings.get_string('animate-appicon-hover-animation-type'); ++ let value = this._settings.get_value(key).deep_unpack()[type]; ++ let defaultValue = this._settings.get_default_value(key).deep_unpack()[type]; ++ this._builder.get_object(id).sensitive = defaultValue !== undefined; ++ this._builder.get_object(id).set_value(value * factor || 0); ++ this._builder.get_object(id).clear_marks(); ++ this._builder.get_object(id).add_mark(defaultValue * factor, Gtk.PositionType.TOP, ++ defaultValue !== undefined ? (defaultValue * factor).toString() : ' '); ++ }; ++ ++ scales.forEach(scale => { ++ let [id, key, factor] = scale; ++ this._settings.connect('changed::' + key, () => updateScale(scale)); ++ this._builder.get_object(id).connect('value-changed', widget => { ++ let type = this._settings.get_string('animate-appicon-hover-animation-type'); ++ let variant = this._settings.get_value(key); ++ let unpacked = variant.deep_unpack(); ++ if (unpacked[type] != widget.get_value() / factor) { ++ unpacked[type] = widget.get_value() / factor; ++ this._settings.set_value(key, new GLib.Variant(variant.get_type_string(), unpacked)); ++ } ++ }); ++ }); ++ ++ this._settings.connect('changed::animate-appicon-hover-animation-type', () => scales.forEach(updateScale)); ++ scales.forEach(updateScale); ++ } ++ ++ this._builder.get_object('animate_appicon_hover_button').connect('clicked', Lang.bind(this, function() { ++ let dialog = new Gtk.Dialog({ title: _('App icon animation options'), ++ transient_for: this.notebook.get_root(), ++ use_header_bar: true, ++ modal: true }); ++ ++ // GTK+ leaves positive values for application-defined response ids. ++ // Use +1 for the reset action ++ dialog.add_button(_('Reset to defaults'), 1); ++ ++ let box = this._builder.get_object('animate_appicon_hover_options'); ++ dialog.get_content_area().append(box); ++ ++ dialog.connect('response', Lang.bind(this, function(dialog, id) { ++ if (id == 1) { ++ // restore default settings ++ this._settings.set_value('animate-appicon-hover-animation-type', this._settings.get_default_value('animate-appicon-hover-animation-type')); ++ this._settings.set_value('animate-appicon-hover-animation-duration', this._settings.get_default_value('animate-appicon-hover-animation-duration')); ++ this._settings.set_value('animate-appicon-hover-animation-rotation', this._settings.get_default_value('animate-appicon-hover-animation-rotation')); ++ this._settings.set_value('animate-appicon-hover-animation-travel', this._settings.get_default_value('animate-appicon-hover-animation-travel')); ++ this._settings.set_value('animate-appicon-hover-animation-zoom', this._settings.get_default_value('animate-appicon-hover-animation-zoom')); ++ this._settings.set_value('animate-appicon-hover-animation-convexity', this._settings.get_default_value('animate-appicon-hover-animation-convexity')); ++ this._settings.set_value('animate-appicon-hover-animation-extent', this._settings.get_default_value('animate-appicon-hover-animation-extent')); ++ } else { ++ // remove the settings box so it doesn't get destroyed; ++ dialog.get_content_area().remove(box); ++ dialog.destroy(); ++ } ++ return; ++ })); ++ ++ dialog.show(); ++ ++ })); ++ ++ this._settings.bind('stockgs-keep-dash', ++ this._builder.get_object('stockgs_dash_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('stockgs-keep-top-panel', ++ this._builder.get_object('stockgs_top_panel_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ ++ ++ this._settings.connect('changed::stockgs-keep-top-panel', () => this._maybeDisableTopPosition()); ++ ++ this._maybeDisableTopPosition(); ++ ++ this._settings.bind('stockgs-panelbtn-click-only', ++ this._builder.get_object('stockgs_panelbtn_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ this._settings.bind('stockgs-force-hotcorner', ++ this._builder.get_object('stockgs_hotcorner_switch'), ++ 'active', ++ Gio.SettingsBindFlags.DEFAULT); ++ ++ // About Panel ++ ++ this._builder.get_object('extension_version').set_label(Me.metadata.version.toString() + (Me.metadata.commit ? ' (' + Me.metadata.commit + ')' : '')); ++ ++ this._builder.get_object('importexport_export_button').connect('clicked', widget => { ++ this._showFileChooser( ++ _('Export settings'), ++ { action: Gtk.FileChooserAction.SAVE }, ++ "Save", ++ filename => { ++ let file = Gio.file_new_for_path(filename); ++ let raw = file.replace(null, false, Gio.FileCreateFlags.NONE, null); ++ let out = Gio.BufferedOutputStream.new_sized(raw, 4096); ++ ++ out.write_all(GLib.spawn_command_line_sync('dconf dump ' + SCHEMA_PATH)[1], null); ++ out.close(null); ++ } ++ ); ++ }); ++ ++ this._builder.get_object('importexport_import_button').connect('clicked', widget => { ++ this._showFileChooser( ++ _('Import settings'), ++ { action: Gtk.FileChooserAction.OPEN }, ++ "Open", ++ filename => { ++ if (filename && GLib.file_test(filename, GLib.FileTest.EXISTS)) { ++ let settingsFile = Gio.File.new_for_path(filename); ++ let [ , pid, stdin, stdout, stderr] = ++ GLib.spawn_async_with_pipes( ++ null, ++ ['dconf', 'load', SCHEMA_PATH], ++ null, ++ GLib.SpawnFlags.SEARCH_PATH | GLib.SpawnFlags.DO_NOT_REAP_CHILD, ++ null ++ ); ++ ++ stdin = new Gio.UnixOutputStream({ fd: stdin, close_fd: true }); ++ GLib.close(stdout); ++ GLib.close(stderr); ++ ++ let [ , , , retCode] = GLib.spawn_command_line_sync(GSET + ' -d ' + Me.uuid); ++ if (retCode == 0) { ++ GLib.child_watch_add(GLib.PRIORITY_DEFAULT, pid, () => GLib.spawn_command_line_sync(GSET + ' -e ' + Me.uuid)); ++ } ++ ++ stdin.splice(settingsFile.read(null), Gio.OutputStreamSpliceFlags.CLOSE_SOURCE | Gio.OutputStreamSpliceFlags.CLOSE_TARGET, null); ++ } ++ } ++ ); ++ }); ++ ++ }, ++ ++ _setPreviewTitlePosition: function() { ++ switch (this._settings.get_string('window-preview-title-position')) { ++ case 'BOTTOM': ++ this._builder.get_object('preview_title_position_bottom_button').set_active(true); ++ break; ++ case 'TOP': ++ this._builder.get_object('preview_title_position_top_button').set_active(true); ++ break; ++ } ++ }, ++ ++ _showFileChooser: function(title, params, acceptBtn, acceptHandler) { ++ let dialog = new Gtk.FileChooserDialog(mergeObjects({ title: title, transient_for: this.notebook.get_root() }, params)); ++ ++ dialog.add_button("Cancel", Gtk.ResponseType.CANCEL); ++ dialog.add_button(acceptBtn, Gtk.ResponseType.ACCEPT); ++ ++ dialog.show(); ++ ++ dialog.connect('response', Lang.bind(this, function(dialog, id) { ++ acceptHandler.call(this, dialog.get_file().get_path()); ++ dialog.destroy(); ++ })); ++ } ++}); ++ ++ ++const BuilderScope = GObject.registerClass({ ++ Implements: [Gtk.BuilderScope], ++}, class BuilderScope extends GObject.Object { ++ ++ _init(preferences) { ++ this._preferences = preferences; ++ super._init(); ++ } ++ ++ vfunc_create_closure(builder, handlerName, flags, connectObject) { ++ if (flags & Gtk.BuilderClosureFlags.SWAPPED) ++ throw new Error('Unsupported template signal flag "swapped"'); ++ ++ if (typeof this[handlerName] === 'undefined') ++ throw new Error(`${handlerName} is undefined`); ++ ++ return this[handlerName].bind(connectObject || this); ++ } ++ ++ on_btn_click(connectObject) { ++ connectObject.set_label("Clicked"); ++ } ++ ++ position_bottom_button_clicked_cb(button) { ++ if (!this._preferences._ignorePositionRadios && button.get_active()) this._preferences._setPanelPosition(Pos.BOTTOM); ++ } ++ ++ position_top_button_clicked_cb(button) { ++ if (!this._preferences._ignorePositionRadios && button.get_active()) this._preferences._setPanelPosition(Pos.TOP); ++ } ++ ++ position_left_button_clicked_cb(button) { ++ if (!this._preferences._ignorePositionRadios && button.get_active()) this._preferences._setPanelPosition(Pos.LEFT); ++ } ++ ++ position_right_button_clicked_cb(button) { ++ if (!this._preferences._ignorePositionRadios && button.get_active()) this._preferences._setPanelPosition(Pos.RIGHT); ++ } ++ ++ dots_bottom_button_toggled_cb(button) { ++ if (button.get_active()) ++ this._preferences._settings.set_string('dot-position', "BOTTOM"); ++ } ++ ++ dots_top_button_toggled_cb(button) { ++ if (button.get_active()) ++ this._preferences._settings.set_string('dot-position', "TOP"); ++ } ++ ++ dots_left_button_toggled_cb(button) { ++ if (button.get_active()) ++ this._preferences._settings.set_string('dot-position', "LEFT"); ++ } ++ ++ dots_right_button_toggled_cb(button) { ++ if (button.get_active()) ++ this._preferences._settings.set_string('dot-position', "RIGHT"); ++ } ++ ++ preview_title_position_bottom_button_toggled_cb(button) { ++ if (button.get_active()) ++ this._preferences._settings.set_string('window-preview-title-position', 'BOTTOM'); ++ } ++ ++ preview_title_position_top_button_toggled_cb(button) { ++ if (button.get_active()) ++ this._preferences._settings.set_string('window-preview-title-position', 'TOP'); ++ } ++ ++ panel_size_scale_value_changed_cb(scale) { ++ // Avoid settings the size continuously ++ if (this._preferences._panel_size_timeout > 0) ++ Mainloop.source_remove(this._preferences._panel_size_timeout); ++ ++ this._preferences._panel_size_timeout = Mainloop.timeout_add(SCALE_UPDATE_TIMEOUT, Lang.bind(this._preferences, function() { ++ const value = scale.get_value(); ++ const monitorSync = this._settings.get_boolean('panel-element-positions-monitors-sync'); ++ const monitorsToSetFor = monitorSync ? this.monitors : [this._currentMonitorIndex]; ++ monitorsToSetFor.forEach(monitorIndex => { ++ PanelSettings.setPanelSize(this._settings, monitorIndex, value); ++ }); ++ ++ this._panel_size_timeout = 0; ++ return GLib.SOURCE_REMOVE; ++ })); ++ } ++ ++ tray_size_scale_value_changed_cb(scale) { ++ // Avoid settings the size consinuosly ++ if (this._preferences._tray_size_timeout > 0) ++ Mainloop.source_remove(this._preferences._tray_size_timeout); ++ ++ this._preferences._tray_size_timeout = Mainloop.timeout_add(SCALE_UPDATE_TIMEOUT, Lang.bind(this, function() { ++ this._preferences._settings.set_int('tray-size', scale.get_value()); ++ this._preferences._tray_size_timeout = 0; ++ return GLib.SOURCE_REMOVE; ++ })); ++ } ++ ++ leftbox_size_scale_value_changed_cb(scale) { ++ // Avoid settings the size consinuosly ++ if (this._preferences._leftbox_size_timeout > 0) ++ Mainloop.source_remove(this._preferences._leftbox_size_timeout); ++ ++ this._preferences._leftbox_size_timeout = Mainloop.timeout_add(SCALE_UPDATE_TIMEOUT, Lang.bind(this, function() { ++ this._preferences._settings.set_int('leftbox-size', scale.get_value()); ++ this._preferences._leftbox_size_timeout = 0; ++ return GLib.SOURCE_REMOVE; ++ })); ++ } ++ ++ appicon_margin_scale_value_changed_cb(scale) { ++ // Avoid settings the size consinuosly ++ if (this._preferences._appicon_margin_timeout > 0) ++ Mainloop.source_remove(this._preferences._appicon_margin_timeout); ++ ++ this._preferences._appicon_margin_timeout = Mainloop.timeout_add(SCALE_UPDATE_TIMEOUT, Lang.bind(this, function() { ++ this._preferences._settings.set_int('appicon-margin', scale.get_value()); ++ this._preferences._appicon_margin_timeout = 0; ++ return GLib.SOURCE_REMOVE; ++ })); ++ } ++ ++ appicon_padding_scale_value_changed_cb(scale) { ++ // Avoid settings the size consinuosly ++ if (this._preferences._appicon_padding_timeout > 0) ++ Mainloop.source_remove(this._preferences._appicon_padding_timeout); ++ ++ this._preferences._appicon_padding_timeout = Mainloop.timeout_add(SCALE_UPDATE_TIMEOUT, Lang.bind(this, function() { ++ this._preferences._settings.set_int('appicon-padding', scale.get_value()); ++ this._preferences._appicon_padding_timeout = 0; ++ return GLib.SOURCE_REMOVE; ++ })); ++ } ++ ++ tray_padding_scale_value_changed_cb(scale) { ++ // Avoid settings the size consinuosly ++ if (this._preferences._tray_padding_timeout > 0) ++ Mainloop.source_remove(this._preferences._tray_padding_timeout); ++ ++ this._preferences._tray_padding_timeout = Mainloop.timeout_add(SCALE_UPDATE_TIMEOUT, Lang.bind(this, function() { ++ this._preferences._settings.set_int('tray-padding', scale.get_value()); ++ this._preferences._tray_padding_timeout = 0; ++ return GLib.SOURCE_REMOVE; ++ })); ++ } ++ ++ statusicon_padding_scale_value_changed_cb(scale) { ++ // Avoid settings the size consinuosly ++ if (this._preferences._statusicon_padding_timeout > 0) ++ Mainloop.source_remove(this._preferences._statusicon_padding_timeout); ++ ++ this._preferences._statusicon_padding_timeout = Mainloop.timeout_add(SCALE_UPDATE_TIMEOUT, Lang.bind(this, function() { ++ this._preferences._settings.set_int('status-icon-padding', scale.get_value()); ++ this._preferences._statusicon_padding_timeout = 0; ++ return GLib.SOURCE_REMOVE; ++ })); ++ } ++ ++ leftbox_padding_scale_value_changed_cb(scale) { ++ // Avoid settings the size consinuosly ++ if (this._preferences._leftbox_padding_timeout > 0) ++ Mainloop.source_remove(this._preferences._leftbox_padding_timeout); ++ ++ this._preferences._leftbox_padding_timeout = Mainloop.timeout_add(SCALE_UPDATE_TIMEOUT, Lang.bind(this, function() { ++ this._preferences._settings.set_int('leftbox-padding', scale.get_value()); ++ this._preferences._leftbox_padding_timeout = 0; ++ return GLib.SOURCE_REMOVE; ++ })); ++ } ++}); ++ ++function init() { ++ Convenience.initTranslations(); ++} ++ ++function buildPrefsWidget() { ++ Gtk.Window.list_toplevels()[0].set_default_size(680, 740); ++ ++ let preferences = new Preferences(); ++ ++ return preferences.notebook; ++} +diff --git a/extensions/dash-to-panel/progress.js b/extensions/dash-to-panel/progress.js +new file mode 100644 +index 00000000..1e84e82d +--- /dev/null ++++ b/extensions/dash-to-panel/progress.js +@@ -0,0 +1,598 @@ ++/* ++ * This file is part of the Dash-To-Panel extension for Gnome 3 ++ * ++ * 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 2 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 . ++ * ++ * ++ * Credits: ++ * This file is based on code from the Dash to Dock extension by micheleg ++ */ ++ ++const Me = imports.misc.extensionUtils.getCurrentExtension(); ++const Gio = imports.gi.Gio; ++const Cairo = imports.cairo; ++const Clutter = imports.gi.Clutter; ++const Pango = imports.gi.Pango; ++const St = imports.gi.St; ++const Signals = imports.signals; ++const Utils = Me.imports.utils; ++ ++ ++var ProgressManager = Utils.defineClass({ ++ Name: 'DashToPanel.ProgressManager', ++ ++ _init: function() { ++ ++ this._entriesByDBusName = {}; ++ ++ this._launcher_entry_dbus_signal_id = ++ Gio.DBus.session.signal_subscribe(null, // sender ++ 'com.canonical.Unity.LauncherEntry', // iface ++ null, // member ++ null, // path ++ null, // arg0 ++ Gio.DBusSignalFlags.NONE, ++ this._onEntrySignalReceived.bind(this)); ++ ++ this._dbus_name_owner_changed_signal_id = ++ Gio.DBus.session.signal_subscribe('org.freedesktop.DBus', // sender ++ 'org.freedesktop.DBus', // interface ++ 'NameOwnerChanged', // member ++ '/org/freedesktop/DBus', // path ++ null, // arg0 ++ Gio.DBusSignalFlags.NONE, ++ this._onDBusNameOwnerChanged.bind(this)); ++ ++ this._acquireUnityDBus(); ++ }, ++ ++ destroy: function() { ++ if (this._launcher_entry_dbus_signal_id) { ++ Gio.DBus.session.signal_unsubscribe(this._launcher_entry_dbus_signal_id); ++ } ++ ++ if (this._dbus_name_owner_changed_signal_id) { ++ Gio.DBus.session.signal_unsubscribe(this._dbus_name_owner_changed_signal_id); ++ } ++ ++ this._releaseUnityDBus(); ++ }, ++ ++ size: function() { ++ return Object.keys(this._entriesByDBusName).length; ++ }, ++ ++ lookupByDBusName: function(dbusName) { ++ return this._entriesByDBusName.hasOwnProperty(dbusName) ? this._entriesByDBusName[dbusName] : null; ++ }, ++ ++ lookupById: function(appId) { ++ let ret = []; ++ for (let dbusName in this._entriesByDBusName) { ++ let entry = this._entriesByDBusName[dbusName]; ++ if (entry && entry.appId() == appId) { ++ ret.push(entry); ++ } ++ } ++ ++ return ret; ++ }, ++ ++ addEntry: function(entry) { ++ let existingEntry = this.lookupByDBusName(entry.dbusName()); ++ if (existingEntry) { ++ existingEntry.update(entry); ++ } else { ++ this._entriesByDBusName[entry.dbusName()] = entry; ++ this.emit('progress-entry-added', entry); ++ } ++ }, ++ ++ removeEntry: function(entry) { ++ delete this._entriesByDBusName[entry.dbusName()] ++ this.emit('progress-entry-removed', entry); ++ }, ++ ++ _acquireUnityDBus: function() { ++ if (!this._unity_bus_id) { ++ Gio.DBus.session.own_name('com.canonical.Unity', ++ Gio.BusNameOwnerFlags.ALLOW_REPLACEMENT, null, null); ++ } ++ }, ++ ++ _releaseUnityDBus: function() { ++ if (this._unity_bus_id) { ++ Gio.DBus.session.unown_name(this._unity_bus_id); ++ this._unity_bus_id = 0; ++ } ++ }, ++ ++ _onEntrySignalReceived: function(connection, sender_name, object_path, ++ interface_name, signal_name, parameters, user_data) { ++ if (!parameters || !signal_name) ++ return; ++ ++ if (signal_name == 'Update') { ++ if (!sender_name) { ++ return; ++ } ++ ++ this._handleUpdateRequest(sender_name, parameters); ++ } ++ }, ++ ++ _onDBusNameOwnerChanged: function(connection, sender_name, object_path, ++ interface_name, signal_name, parameters, user_data) { ++ if (!parameters || !this.size()) ++ return; ++ ++ let [name, before, after] = parameters.deep_unpack(); ++ ++ if (!after) { ++ if (this._entriesByDBusName.hasOwnProperty(before)) { ++ this.removeEntry(this._entriesByDBusName[before]); ++ } ++ } ++ }, ++ ++ _handleUpdateRequest: function(senderName, parameters) { ++ if (!senderName || !parameters) { ++ return; ++ } ++ ++ let [appUri, properties] = parameters.deep_unpack(); ++ let appId = appUri.replace(/(^\w+:|^)\/\//, ''); ++ let entry = this.lookupByDBusName(senderName); ++ ++ if (entry) { ++ entry.setDBusName(senderName); ++ entry.update(properties); ++ } else { ++ let entry = new AppProgress(senderName, appId, properties); ++ this.addEntry(entry); ++ } ++ } ++}); ++Signals.addSignalMethods(ProgressManager.prototype); ++ ++var AppProgress = Utils.defineClass({ ++ Name: 'DashToPanel.AppProgress', ++ ++ _init: function(dbusName, appId, properties) { ++ this._dbusName = dbusName; ++ this._appId = appId; ++ this._count = 0; ++ this._countVisible = false; ++ this._progress = 0.0; ++ this._progressVisible = false; ++ this._urgent = false; ++ this.update(properties); ++ }, ++ ++ appId: function() { ++ return this._appId; ++ }, ++ ++ dbusName: function() { ++ return this._dbusName; ++ }, ++ ++ count: function() { ++ return this._count; ++ }, ++ ++ setCount: function(count) { ++ if (this._count != count) { ++ this._count = count; ++ this.emit('count-changed', this._count); ++ } ++ }, ++ ++ countVisible: function() { ++ return this._countVisible; ++ }, ++ ++ setCountVisible: function(countVisible) { ++ if (this._countVisible != countVisible) { ++ this._countVisible = countVisible; ++ this.emit('count-visible-changed', this._countVisible); ++ } ++ }, ++ ++ progress: function() { ++ return this._progress; ++ }, ++ ++ setProgress: function(progress) { ++ if (this._progress != progress) { ++ this._progress = progress; ++ this.emit('progress-changed', this._progress); ++ } ++ }, ++ ++ progressVisible: function() { ++ return this._progressVisible; ++ }, ++ ++ setProgressVisible: function(progressVisible) { ++ if (this._progressVisible != progressVisible) { ++ this._progressVisible = progressVisible; ++ this.emit('progress-visible-changed', this._progressVisible); ++ } ++ }, ++ ++ urgent: function() { ++ return this._urgent; ++ }, ++ ++ setUrgent: function(urgent) { ++ if (this._urgent != urgent) { ++ this._urgent = urgent; ++ this.emit('urgent-changed', this._urgent); ++ } ++ }, ++ ++ setDBusName: function(dbusName) { ++ if (this._dbusName != dbusName) { ++ let oldName = this._dbusName; ++ this._dbusName = dbusName; ++ this.emit('dbus-name-changed', oldName); ++ } ++ }, ++ ++ update: function(other) { ++ if (other instanceof AppProgress) { ++ this.setDBusName(other.dbusName()) ++ this.setCount(other.count()); ++ this.setCountVisible(other.countVisible()); ++ this.setProgress(other.progress()); ++ this.setProgressVisible(other.progressVisible()) ++ this.setUrgent(other.urgent()); ++ } else { ++ for (let property in other) { ++ if (other.hasOwnProperty(property)) { ++ if (property == 'count') { ++ this.setCount(other[property].get_int64()); ++ } else if (property == 'count-visible') { ++ this.setCountVisible(Me.settings.get_boolean('progress-show-count') && other[property].get_boolean()); ++ } else if (property == 'progress') { ++ this.setProgress(other[property].get_double()); ++ } else if (property == 'progress-visible') { ++ this.setProgressVisible(Me.settings.get_boolean('progress-show-bar') && other[property].get_boolean()); ++ } else if (property == 'urgent') { ++ this.setUrgent(other[property].get_boolean()); ++ } else { ++ // Not implemented yet ++ } ++ } ++ } ++ } ++ } ++}); ++Signals.addSignalMethods(AppProgress.prototype); ++ ++ ++var ProgressIndicator = Utils.defineClass({ ++ Name: 'DashToPanel.ProgressIndicator', ++ ++ _init: function(source, progressManager) { ++ this._source = source; ++ this._progressManager = progressManager; ++ this._signalsHandler = new Utils.GlobalSignalsHandler(); ++ ++ this._sourceDestroyId = this._source.actor.connect('destroy', () => { ++ this._signalsHandler.destroy(); ++ }); ++ ++ this._notificationBadgeLabel = new St.Label({ style_class: 'badge' }); ++ this._notificationBadgeBin = new St.Bin({ ++ child: this._notificationBadgeLabel, y: 2, x: 2 ++ }); ++ this._notificationBadgeLabel.add_style_class_name('notification-badge'); ++ this._notificationBadgeCount = 0; ++ this._notificationBadgeBin.hide(); ++ ++ this._source._dtpIconContainer.add_child(this._notificationBadgeBin); ++ this._source._dtpIconContainer.connect('notify::allocation', this.updateNotificationBadge.bind(this)); ++ ++ this._progressManagerEntries = []; ++ this._progressManager.lookupById(this._source.app.id).forEach( ++ (entry) => { ++ this.insertEntry(entry); ++ } ++ ); ++ ++ this._signalsHandler.add([ ++ this._progressManager, ++ 'progress-entry-added', ++ this._onEntryAdded.bind(this) ++ ], [ ++ this._progressManager, ++ 'progress-entry-removed', ++ this._onEntryRemoved.bind(this) ++ ]); ++ }, ++ ++ destroy: function() { ++ this._source.actor.disconnect(this._sourceDestroyId); ++ this._signalsHandler.destroy(); ++ }, ++ ++ _onEntryAdded: function(appProgress, entry) { ++ if (!entry || !entry.appId()) ++ return; ++ if (this._source && this._source.app && this._source.app.id == entry.appId()) { ++ this.insertEntry(entry); ++ } ++ }, ++ ++ _onEntryRemoved: function(appProgress, entry) { ++ if (!entry || !entry.appId()) ++ return; ++ ++ if (this._source && this._source.app && this._source.app.id == entry.appId()) { ++ this.removeEntry(entry); ++ } ++ }, ++ ++ updateNotificationBadge: function() { ++ this._source.updateNumberOverlay(this._notificationBadgeBin); ++ this._notificationBadgeLabel.clutter_text.ellipsize = Pango.EllipsizeMode.MIDDLE; ++ }, ++ ++ _notificationBadgeCountToText: function(count) { ++ if (count <= 9999) { ++ return count.toString(); ++ } else if (count < 1e5) { ++ let thousands = count / 1e3; ++ return thousands.toFixed(1).toString() + "k"; ++ } else if (count < 1e6) { ++ let thousands = count / 1e3; ++ return thousands.toFixed(0).toString() + "k"; ++ } else if (count < 1e8) { ++ let millions = count / 1e6; ++ return millions.toFixed(1).toString() + "M"; ++ } else if (count < 1e9) { ++ let millions = count / 1e6; ++ return millions.toFixed(0).toString() + "M"; ++ } else { ++ let billions = count / 1e9; ++ return billions.toFixed(1).toString() + "B"; ++ } ++ }, ++ ++ setNotificationBadge: function(count) { ++ this._notificationBadgeCount = count; ++ let text = this._notificationBadgeCountToText(count); ++ this._notificationBadgeLabel.set_text(text); ++ }, ++ ++ toggleNotificationBadge: function(activate) { ++ if (activate && this._notificationBadgeCount > 0) { ++ this.updateNotificationBadge(); ++ this._notificationBadgeBin.show(); ++ } ++ else ++ this._notificationBadgeBin.hide(); ++ }, ++ ++ _showProgressOverlay: function() { ++ if (this._progressOverlayArea) { ++ this._updateProgressOverlay(); ++ return; ++ } ++ ++ this._progressOverlayArea = new St.DrawingArea({x_expand: true, y_expand: true}); ++ this._progressOverlayArea.add_style_class_name('progress-bar'); ++ this._progressOverlayArea.connect('repaint', () => { ++ this._drawProgressOverlay(this._progressOverlayArea); ++ }); ++ ++ this._source._iconContainer.add_child(this._progressOverlayArea); ++ let node = this._progressOverlayArea.get_theme_node(); ++ ++ let [hasColor, color] = node.lookup_color('-progress-bar-background', false); ++ if (hasColor) ++ this._progressbar_background = color ++ else ++ this._progressbar_background = new Clutter.Color({red: 204, green: 204, blue: 204, alpha: 255}); ++ ++ [hasColor, color] = node.lookup_color('-progress-bar-border', false); ++ if (hasColor) ++ this._progressbar_border = color; ++ else ++ this._progressbar_border = new Clutter.Color({red: 230, green: 230, blue: 230, alpha: 255}); ++ ++ this._updateProgressOverlay(); ++ }, ++ ++ _hideProgressOverlay: function() { ++ if (this._progressOverlayArea) ++ this._progressOverlayArea.destroy(); ++ ++ this._progressOverlayArea = null; ++ this._progressbar_background = null; ++ this._progressbar_border = null; ++ }, ++ ++ _updateProgressOverlay: function() { ++ ++ if (this._progressOverlayArea) { ++ this._progressOverlayArea.queue_repaint(); ++ } ++ }, ++ ++ _drawProgressOverlay: function(area) { ++ let scaleFactor = Utils.getScaleFactor(); ++ let [surfaceWidth, surfaceHeight] = area.get_surface_size(); ++ let cr = area.get_context(); ++ ++ let iconSize = this._source.icon.iconSize * scaleFactor; ++ ++ let x = Math.floor((surfaceWidth - iconSize) / 2); ++ let y = Math.floor((surfaceHeight - iconSize) / 2); ++ ++ let lineWidth = Math.floor(1.0 * scaleFactor); ++ let padding = Math.floor(iconSize * 0.05); ++ let width = iconSize - 2.0*padding; ++ let height = Math.floor(Math.min(18.0*scaleFactor, 0.20*iconSize)); ++ x += padding; ++ y += iconSize - height - padding; ++ ++ cr.setLineWidth(lineWidth); ++ ++ // Draw the outer stroke ++ let stroke = new Cairo.LinearGradient(0, y, 0, y + height); ++ let fill = null; ++ stroke.addColorStopRGBA(0.5, 0.5, 0.5, 0.5, 0.1); ++ stroke.addColorStopRGBA(0.9, 0.8, 0.8, 0.8, 0.4); ++ Utils.drawRoundedLine(cr, x + lineWidth/2.0, y + lineWidth/2.0, width, height, true, true, stroke, fill); ++ ++ // Draw the background ++ x += lineWidth; ++ y += lineWidth; ++ width -= 2.0*lineWidth; ++ height -= 2.0*lineWidth; ++ ++ stroke = Cairo.SolidPattern.createRGBA(0.20, 0.20, 0.20, 0.9); ++ fill = new Cairo.LinearGradient(0, y, 0, y + height); ++ fill.addColorStopRGBA(0.4, 0.25, 0.25, 0.25, 1.0); ++ fill.addColorStopRGBA(0.9, 0.35, 0.35, 0.35, 1.0); ++ Utils.drawRoundedLine(cr, x + lineWidth/2.0, y + lineWidth/2.0, width, height, true, true, stroke, fill); ++ ++ // Draw the finished bar ++ x += lineWidth; ++ y += lineWidth; ++ width -= 2.0*lineWidth; ++ height -= 2.0*lineWidth; ++ ++ let finishedWidth = Math.ceil(this._progress * width); ++ ++ let bg = this._progressbar_background; ++ let bd = this._progressbar_border; ++ ++ stroke = Cairo.SolidPattern.createRGBA(bd.red/255, bd.green/255, bd.blue/255, bd.alpha/255); ++ fill = Cairo.SolidPattern.createRGBA(bg.red/255, bg.green/255, bg.blue/255, bg.alpha/255); ++ ++ if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL) ++ Utils.drawRoundedLine(cr, x + lineWidth/2.0 + width - finishedWidth, y + lineWidth/2.0, finishedWidth, height, true, true, stroke, fill); ++ else ++ Utils.drawRoundedLine(cr, x + lineWidth/2.0, y + lineWidth/2.0, finishedWidth, height, true, true, stroke, fill); ++ ++ cr.$dispose(); ++ }, ++ ++ setProgress: function(progress) { ++ this._progress = Math.min(Math.max(progress, 0.0), 1.0); ++ this._updateProgressOverlay(); ++ }, ++ ++ toggleProgressOverlay: function(activate) { ++ if (activate) { ++ this._showProgressOverlay(); ++ } ++ else { ++ this._hideProgressOverlay(); ++ } ++ }, ++ ++ insertEntry: function(appProgress) { ++ if (!appProgress || this._progressManagerEntries.indexOf(appProgress) !== -1) ++ return; ++ ++ this._progressManagerEntries.push(appProgress); ++ this._selectEntry(appProgress); ++ }, ++ ++ removeEntry: function(appProgress) { ++ if (!appProgress || this._progressManagerEntries.indexOf(appProgress) == -1) ++ return; ++ ++ this._progressManagerEntries.splice(this._progressManagerEntries.indexOf(appProgress), 1); ++ ++ if (this._progressManagerEntries.length > 0) { ++ this._selectEntry(this._progressManagerEntries[this._progressManagerEntries.length-1]); ++ } else { ++ this.setNotificationBadge(0); ++ this.toggleNotificationBadge(false); ++ this.setProgress(0); ++ this.toggleProgressOverlay(false); ++ this.setUrgent(false); ++ } ++ }, ++ ++ _selectEntry: function(appProgress) { ++ if (!appProgress) ++ return; ++ ++ this._signalsHandler.removeWithLabel('progress-entry'); ++ ++ this._signalsHandler.addWithLabel('progress-entry', ++ [ ++ appProgress, ++ 'count-changed', ++ (appProgress, value) => { ++ this.setNotificationBadge(value); ++ } ++ ], [ ++ appProgress, ++ 'count-visible-changed', ++ (appProgress, value) => { ++ this.toggleNotificationBadge(value); ++ } ++ ], [ ++ appProgress, ++ 'progress-changed', ++ (appProgress, value) => { ++ this.setProgress(value); ++ } ++ ], [ ++ appProgress, ++ 'progress-visible-changed', ++ (appProgress, value) => { ++ this.toggleProgressOverlay(value); ++ } ++ ], [ ++ appProgress, ++ 'urgent-changed', ++ (appProgress, value) => { ++ this.setUrgent(value) ++ } ++ ]); ++ ++ this.setNotificationBadge(appProgress.count()); ++ this.toggleNotificationBadge(appProgress.countVisible()); ++ this.setProgress(appProgress.progress()); ++ this.toggleProgressOverlay(appProgress.progressVisible()); ++ ++ this._isUrgent = false; ++ }, ++ ++ setUrgent: function(urgent) { ++ const icon = this._source.icon._iconBin; ++ if (urgent) { ++ if (!this._isUrgent) { ++ icon.set_pivot_point(0.5, 0.5); ++ this._source.iconAnimator.addAnimation(icon, 'dance'); ++ this._isUrgent = true; ++ } ++ } else { ++ if (this._isUrgent) { ++ this._source.iconAnimator.removeAnimation(icon, 'dance'); ++ this._isUrgent = false; ++ } ++ icon.rotation_angle_z = 0; ++ } ++ } ++}); +diff --git a/extensions/dash-to-panel/proximity.js b/extensions/dash-to-panel/proximity.js +new file mode 100644 +index 00000000..c298f84c +--- /dev/null ++++ b/extensions/dash-to-panel/proximity.js +@@ -0,0 +1,262 @@ ++/* ++ * This file is part of the Dash-To-Panel extension for Gnome 3 ++ * ++ * 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 2 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 Lang = imports.lang; ++const Meta = imports.gi.Meta; ++ ++const Layout = imports.ui.layout; ++const Main = imports.ui.main; ++ ++const Me = imports.misc.extensionUtils.getCurrentExtension(); ++const Utils = Me.imports.utils; ++ ++//timeout intervals ++const MIN_UPDATE_MS = 200; ++ ++//timeout names ++const T1 = 'limitUpdateTimeout'; ++ ++var Mode = { ++ ALL_WINDOWS: 0, ++ FOCUSED_WINDOWS: 1, ++ MAXIMIZED_WINDOWS: 2 ++}; ++ ++var ProximityWatch = Utils.defineClass({ ++ Name: 'DashToPanel.ProximityWatch', ++ ++ _init: function(actor, mode, xThreshold, yThreshold, handler) { ++ this.actor = actor; ++ this.overlap = 0; ++ this.mode = mode; ++ this.threshold = [xThreshold, yThreshold]; ++ this.handler = handler; ++ ++ this._allocationChangedId = actor.connect('notify::allocation', () => this._update()); ++ ++ this._update(); ++ }, ++ ++ destroy: function() { ++ this.actor.disconnect(this._allocationChangedId); ++ }, ++ ++ _update: function() { ++ this.monitorIndex = Main.layoutManager.findIndexForActor(this.actor); ++ ++ this._updateWatchRect(); ++ }, ++ ++ _updateWatchRect: function() { ++ let [actorX, actorY] = this.actor.get_position(); ++ ++ this.rect = new Meta.Rectangle({ ++ x: actorX - this.threshold[0], ++ y: actorY - this.threshold[1], ++ width: this.actor.width + this.threshold[0] * 2, ++ height: this.actor.height + this.threshold[1] * 2 ++ }); ++ }, ++}); ++ ++var ProximityManager = Utils.defineClass({ ++ Name: 'DashToPanel.ProximityManager', ++ ++ _init: function() { ++ this._counter = 1; ++ this._watches = {}; ++ this._focusedWindowInfo = null; ++ ++ this._signalsHandler = new Utils.GlobalSignalsHandler(); ++ this._timeoutsHandler = new Utils.TimeoutsHandler(); ++ ++ this._bindSignals(); ++ this._setFocusedWindow(); ++ }, ++ ++ createWatch: function(actor, mode, xThreshold, yThreshold, handler) { ++ let watch = new ProximityWatch(actor, mode, xThreshold, yThreshold, handler); ++ ++ this._watches[this._counter] = watch; ++ this.update(); ++ ++ return this._counter++; ++ }, ++ ++ removeWatch: function(id) { ++ if (this._watches[id]) { ++ this._watches[id].destroy(); ++ delete this._watches[id]; ++ } ++ }, ++ ++ update: function() { ++ this._queueUpdate(true); ++ }, ++ ++ destroy: function() { ++ this._signalsHandler.destroy(); ++ this._timeoutsHandler.destroy(); ++ this._disconnectFocusedWindow(); ++ Object.keys(this._watches).forEach(id => this.removeWatch(id)); ++ }, ++ ++ _bindSignals: function() { ++ this._signalsHandler.add( ++ [ ++ global.window_manager, ++ 'switch-workspace', ++ () => Object.keys(this._watches).forEach(id => this._watches[id].overlap = 0) ++ ], ++ [ ++ Main.overview, ++ 'hidden', ++ () => this._queueUpdate() ++ ], ++ [ ++ global.display, ++ 'notify::focus-window', ++ () => { ++ this._setFocusedWindow(); ++ this._queueUpdate(); ++ } ++ ], ++ [ ++ global.window_group, ++ [ ++ 'actor-added', ++ 'actor-removed' ++ ], ++ () => this._queueUpdate() ++ ] ++ ); ++ }, ++ ++ _setFocusedWindow: function() { ++ this._disconnectFocusedWindow(); ++ ++ let focusedWindow = global.display.focus_window; ++ ++ if (focusedWindow) { ++ let focusedWindowInfo = this._getFocusedWindowInfo(focusedWindow); ++ ++ if (focusedWindowInfo && this._checkIfHandledWindowType(focusedWindowInfo.metaWindow)) { ++ focusedWindowInfo.allocationId = focusedWindowInfo.window.connect('notify::allocation', () => this._queueUpdate()); ++ focusedWindowInfo.destroyId = focusedWindowInfo.window.connect('destroy', () => this._disconnectFocusedWindow(true)); ++ ++ this._focusedWindowInfo = focusedWindowInfo; ++ } ++ } ++ }, ++ ++ _getFocusedWindowInfo: function(focusedWindow) { ++ let window = focusedWindow.get_compositor_private(); ++ let focusedWindowInfo; ++ ++ if (window) { ++ focusedWindowInfo = { window: window }; ++ focusedWindowInfo.metaWindow = focusedWindowInfo.window.get_meta_window(); ++ ++ if (focusedWindow.is_attached_dialog()) { ++ let mainMetaWindow = focusedWindow.get_transient_for(); ++ ++ if (focusedWindowInfo.metaWindow.get_frame_rect().height < mainMetaWindow.get_frame_rect().height) { ++ focusedWindowInfo.window = mainMetaWindow.get_compositor_private(); ++ focusedWindowInfo.metaWindow = mainMetaWindow; ++ } ++ } ++ } ++ ++ return focusedWindowInfo; ++ }, ++ ++ _disconnectFocusedWindow: function(destroy) { ++ if (this._focusedWindowInfo && !destroy) { ++ this._focusedWindowInfo.window.disconnect(this._focusedWindowInfo.allocationId); ++ this._focusedWindowInfo.window.disconnect(this._focusedWindowInfo.destroyId); ++ } ++ ++ this._focusedWindowInfo = null; ++ }, ++ ++ _getHandledWindows: function() { ++ return global.get_window_actors() ++ .filter(w => w.visible) ++ .map(w => w.get_meta_window()) ++ .filter(mw => this._checkIfHandledWindow(mw)); ++ }, ++ ++ _checkIfHandledWindow: function(metaWindow) { ++ return metaWindow && !metaWindow.minimized && ++ this._checkIfHandledWindowType(metaWindow); ++ }, ++ ++ _checkIfHandledWindowType: function(metaWindow) { ++ let metaWindowType = metaWindow.get_window_type(); ++ ++ //https://www.roojs.org/seed/gir-1.2-gtk-3.0/seed/Meta.WindowType.html ++ return metaWindowType <= Meta.WindowType.SPLASHSCREEN && ++ metaWindowType != Meta.WindowType.DESKTOP; ++ }, ++ ++ _queueUpdate: function(noDelay) { ++ if (!noDelay && this._timeoutsHandler.getId(T1)) { ++ //limit the number of updates ++ this._pendingUpdate = true; ++ return; ++ } ++ ++ this._timeoutsHandler.add([T1, MIN_UPDATE_MS, () => this._endLimitUpdate()]); ++ ++ let metaWindows = this._getHandledWindows(); ++ ++ Object.keys(this._watches).forEach(id => { ++ let watch = this._watches[id]; ++ let overlap = this._update(watch, metaWindows); ++ ++ if (overlap !== watch.overlap) { ++ watch.handler(overlap); ++ watch.overlap = overlap; ++ } ++ }); ++ }, ++ ++ _endLimitUpdate: function() { ++ if (this._pendingUpdate) { ++ this._pendingUpdate = false; ++ this._queueUpdate(); ++ } ++ }, ++ ++ _update: function(watch, metaWindows) { ++ if (watch.mode === Mode.FOCUSED_WINDOWS) { ++ return (this._focusedWindowInfo && ++ this._checkIfHandledWindow(this._focusedWindowInfo.metaWindow) && ++ this._checkProximity(this._focusedWindowInfo.metaWindow, watch)); ++ } else if (watch.mode === Mode.MAXIMIZED_WINDOWS) { ++ return metaWindows.some(mw => mw.maximized_vertically && mw.maximized_horizontally && ++ mw.get_monitor() == watch.monitorIndex); ++ } ++ ++ //Mode.ALL_WINDOWS ++ return metaWindows.some(mw => this._checkProximity(mw, watch)); ++ }, ++ ++ _checkProximity: function(metaWindow, watch) { ++ return metaWindow.get_frame_rect().overlap(watch.rect); ++ }, ++}); +\ No newline at end of file +diff --git a/extensions/dash-to-panel/stylesheet.css b/extensions/dash-to-panel/stylesheet.css +new file mode 100644 +index 00000000..6917e24d +--- /dev/null ++++ b/extensions/dash-to-panel/stylesheet.css +@@ -0,0 +1,151 @@ ++/* ++ * This file is part of the Dash-To-Panel extension for Gnome 3 ++ * ++ * 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 2 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 . ++ * ++ * ++ * Credits: ++ * This file is based on code from the Dash to Dock extension by micheleg ++ * and code from the Taskbar extension by Zorin OS ++ * Some code was also adapted from the upstream Gnome Shell source code. ++ */ ++ ++#dashtopanelTaskbar .dash-item-container > StWidget { ++ margin: 0; ++ padding: 0; ++} ++ ++#dashtopanelScrollview .app-well-app .overview-icon, ++.dashtopanelMainPanel .show-apps .overview-icon { ++ background: none; ++ border: none; ++ margin: 0; ++ padding: 0; ++} ++ ++#dashtopanelScrollview .app-well-app .overview-label { ++ /* must match TITLE_RIGHT_PADDING in apppicons.js */ ++ padding-right: 8px; ++} ++ ++#dashtopanelScrollview .app-well-app:hover .overview-icon, ++#dashtopanelScrollview .app-well-app:focus .overview-icon { ++ background: none; ++} ++ ++.dashtopanelMainPanel .show-apps:hover .overview-icon, ++#dashtopanelScrollview .app-well-app:hover .dtp-container, ++#dashtopanelScrollview .app-well-app:focus .dtp-container { ++ background-color: rgba(238, 238, 236, 0.1); ++} ++ ++#dashtopanelScrollview .app-well-app:hover .dtp-container.animate-appicon-hover { ++ background: none; ++} ++ ++#dashtopanelScrollview .app-well-app:active .dtp-container { ++ background-color: rgba(238, 238, 236, 0.18); ++} ++ ++#dashtopanelScrollview .app-well-app .favorite { ++ background-color: rgba(80, 150, 255, 0.4); ++} ++ ++#dashtopanelScrollview .app-well-app-running-dot { ++ margin-bottom: 0; ++} ++ ++#dashtopanelTaskbar .scrollview-fade { ++ background-gradient-end: rgba(0, 0, 0, 0); ++} ++ ++.dashtopanelSecondaryMenu { ++ max-width: 400px; ++} ++ ++.dashtopanelMainPanel.vertical .panel-button { ++ text-align: center; ++} ++ ++.dashtopanelMainPanel.vertical .panel-button.vertical *, ++.dashtopanelMainPanel.vertical .panel-button.clock-display * { ++ padding: 0; ++ margin: 0; ++} ++ ++.dashtopanelMainPanel.vertical .panel-button > *, ++.dashtopanelMainPanel.vertical .panel-button.vertical > *, ++.dashtopanelMainPanel.vertical .panel-button.clock-display > * { ++ padding: 8px 0; ++} ++ ++#dashtopanelThumbnailList { ++ spacing: 0em; ++ padding: 0 1em; ++} ++ ++#dashtopanelThumbnailList .popup-menu-item { ++ padding: 0; ++ border-radius: 5px; ++ spacing: 0; ++} ++ ++#dashtopanelThumbnailList .window-box { ++ padding: 0; ++ spacing: 0; ++} ++ ++#dashtopanelThumbnailList .preview-window-title { ++ padding-top: 1em; ++} ++ ++.popup-menu.panel-menu { ++ margin-bottom: 0; ++} ++ ++#panel #panelLeft, #panel #panelCenter { ++ spacing: 0px; ++} ++ ++.showdesktop-button-dark-hovered { ++ background-color: rgba(200, 200, 200, .4); ++} ++ ++.showdesktop-button-light-hovered { ++ background-color: rgba(55, 55, 55, .4); ++} ++ ++.panel-corner.hidden:active, .panel-corner.hidden:overview, .panel-corner.hidden:focus { ++ -panel-corner-border-color: rgba(0, 0, 0, .001); ++} ++#dashtopanelScrollview .badge { ++ color: rgba(255, 255, 255, 1); ++ font-weight: bold; ++ text-align: center; ++} ++ ++#dashtopanelScrollview .number-overlay { ++ background-color: rgba(0,0,0,0.8); ++} ++ ++#dashtopanelScrollview .notification-badge { ++ background-color: rgba(255,0,0,0.8); ++} ++ ++#dashtopanelScrollview .progress-bar { ++ /* Customization of the progress bar style, e.g.: ++ -progress-bar-background: rgba(0.8, 0.8, 0.8, 1); ++ -progress-bar-border: rgba(0.9, 0.9, 0.9, 1); ++ */ ++} +diff --git a/extensions/dash-to-panel/taskbar.js b/extensions/dash-to-panel/taskbar.js +new file mode 100644 +index 00000000..4f74d1ef +--- /dev/null ++++ b/extensions/dash-to-panel/taskbar.js +@@ -0,0 +1,1557 @@ ++/* ++ * This file is part of the Dash-To-Panel extension for Gnome 3 ++ * ++ * 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 2 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 . ++ * ++ * ++ * Credits: ++ * This file is based on code from the Dash to Dock extension by micheleg ++ * and code from the Taskbar extension by Zorin OS ++ * Some code was also adapted from the upstream Gnome Shell source code. ++ */ ++ ++ ++const Clutter = imports.gi.Clutter; ++const Config = imports.misc.config; ++const Gio = imports.gi.Gio; ++const GLib = imports.gi.GLib; ++const GObject = imports.gi.GObject; ++const Gtk = imports.gi.Gtk; ++const Signals = imports.signals; ++const Lang = imports.lang; ++const Meta = imports.gi.Meta; ++const Shell = imports.gi.Shell; ++const St = imports.gi.St; ++const Mainloop = imports.mainloop; ++ ++const SearchController = imports.ui.main.overview._overview._controls._searchController; ++const AppDisplay = imports.ui.main.overview._overview._controls.appDisplay; ++const AppFavorites = imports.ui.appFavorites; ++const Dash = imports.ui.dash; ++const DND = imports.ui.dnd; ++const IconGrid = imports.ui.iconGrid; ++const Main = imports.ui.main; ++const PopupMenu = imports.ui.popupMenu; ++const Workspace = imports.ui.workspace; ++ ++const Me = imports.misc.extensionUtils.getCurrentExtension(); ++const AppIcons = Me.imports.appIcons; ++const Panel = Me.imports.panel; ++const PanelManager = Me.imports.panelManager; ++const PanelSettings = Me.imports.panelSettings; ++const Pos = Me.imports.panelPositions; ++const Utils = Me.imports.utils; ++const WindowPreview = Me.imports.windowPreview; ++ ++var DASH_ANIMATION_TIME = Dash.DASH_ANIMATION_TIME / (Dash.DASH_ANIMATION_TIME > 1 ? 1000 : 1); ++var DASH_ITEM_HOVER_TIMEOUT = Dash.DASH_ITEM_HOVER_TIMEOUT; ++var MIN_ICON_SIZE = 4; ++ ++/** ++ * Extend DashItemContainer ++ * ++ * - set label position based on taskbar orientation ++ * ++ * I can't subclass the original object because of this: https://bugzilla.gnome.org/show_bug.cgi?id=688973. ++ * thus use this ugly pattern. ++ */ ++ ++function extendDashItemContainer(dashItemContainer) { ++ dashItemContainer.showLabel = AppIcons.ItemShowLabel; ++}; ++ ++const iconAnimationSettings = { ++ _getDictValue: function(key) { ++ let type = Me.settings.get_string('animate-appicon-hover-animation-type'); ++ return Me.settings.get_value(key).deep_unpack()[type] || 0; ++ }, ++ ++ get type() { ++ if (!Me.settings.get_boolean('animate-appicon-hover')) ++ return ""; ++ ++ return Me.settings.get_string('animate-appicon-hover-animation-type'); ++ }, ++ ++ get convexity() { ++ return Math.max(0, this._getDictValue('animate-appicon-hover-animation-convexity')); ++ }, ++ ++ get duration() { ++ return this._getDictValue('animate-appicon-hover-animation-duration'); ++ }, ++ ++ get extent() { ++ return Math.max(1, this._getDictValue('animate-appicon-hover-animation-extent')); ++ }, ++ ++ get rotation() { ++ return this._getDictValue('animate-appicon-hover-animation-rotation'); ++ }, ++ ++ get travel() { ++ return Math.max(0, this._getDictValue('animate-appicon-hover-animation-travel')); ++ }, ++ ++ get zoom() { ++ return Math.max(1, this._getDictValue('animate-appicon-hover-animation-zoom')); ++ }, ++}; ++ ++/* This class is a fork of the upstream DashActor class (ui.dash.js) ++ * ++ * Summary of changes: ++ * - modified chldBox calculations for when 'show-apps-at-top' option is checked ++ * - handle horizontal dash ++ */ ++var taskbarActor = Utils.defineClass({ ++ Name: 'DashToPanel-TaskbarActor', ++ Extends: St.Widget, ++ ++ _init: function(delegate) { ++ this._delegate = delegate; ++ this._currentBackgroundColor = 0; ++ this.callParent('_init', { name: 'dashtopanelTaskbar', ++ layout_manager: new Clutter.BoxLayout({ orientation: Clutter.Orientation[delegate.dtpPanel.getOrientation().toUpperCase()] }), ++ clip_to_allocation: true }); ++ }, ++ ++ vfunc_allocate: function(box, flags)  { ++ Utils.setAllocation(this, box, flags); ++ ++ let panel = this._delegate.dtpPanel; ++ let availFixedSize = box[panel.fixedCoord.c2] - box[panel.fixedCoord.c1]; ++ let availVarSize = box[panel.varCoord.c2] - box[panel.varCoord.c1]; ++ let [dummy, scrollview, leftFade, rightFade] = this.get_children(); ++ let [, natSize] = this[panel.sizeFunc](availFixedSize); ++ let childBox = new Clutter.ActorBox(); ++ let orientation = panel.getOrientation(); ++ ++ Utils.allocate(dummy, childBox, flags); ++ ++ childBox[panel.varCoord.c1] = box[panel.varCoord.c1]; ++ childBox[panel.varCoord.c2] = Math.min(availVarSize, natSize); ++ childBox[panel.fixedCoord.c1] = box[panel.fixedCoord.c1]; ++ childBox[panel.fixedCoord.c2] = box[panel.fixedCoord.c2]; ++ ++ Utils.allocate(scrollview, childBox, flags); ++ ++ let [value, , upper, , , pageSize] = scrollview[orientation[0] + 'scroll'].adjustment.get_values(); ++ upper = Math.floor(upper); ++ scrollview._dtpFadeSize = upper > pageSize ? this._delegate.iconSize : 0; ++ ++ if (this._currentBackgroundColor !== panel.dynamicTransparency.currentBackgroundColor) { ++ this._currentBackgroundColor = panel.dynamicTransparency.currentBackgroundColor; ++ let gradientStyle = 'background-gradient-start: ' + this._currentBackgroundColor + ++ 'background-gradient-direction: ' + orientation; ++ ++ leftFade.set_style(gradientStyle); ++ rightFade.set_style(gradientStyle); ++ } ++ ++ childBox[panel.varCoord.c2] = childBox[panel.varCoord.c1] + (value > 0 ? scrollview._dtpFadeSize : 0); ++ Utils.allocate(leftFade, childBox, flags); ++ ++ childBox[panel.varCoord.c1] = box[panel.varCoord.c2] - (value + pageSize < upper ? scrollview._dtpFadeSize : 0); ++ childBox[panel.varCoord.c2] = box[panel.varCoord.c2]; ++ Utils.allocate(rightFade, childBox, flags); ++ }, ++ ++ // We want to request the natural size of all our children ++ // as our natural width, so we chain up to StWidget (which ++ // then calls BoxLayout) ++ vfunc_get_preferred_width: function(forHeight) { ++ let [, natWidth] = St.Widget.prototype.vfunc_get_preferred_width.call(this, forHeight); ++ ++ return [0, natWidth]; ++ }, ++ ++ vfunc_get_preferred_height: function(forWidth) { ++ let [, natHeight] = St.Widget.prototype.vfunc_get_preferred_height.call(this, forWidth); ++ ++ return [0, natHeight]; ++ }, ++}); ++ ++/* This class is a fork of the upstream dash class (ui.dash.js) ++ * ++ * Summary of changes: ++ * - disconnect global signals adding a destroy method; ++ * - play animations even when not in overview mode ++ * - set a maximum icon size ++ * - show running and/or favorite applications ++ * - emit a custom signal when an app icon is added ++ * - Add scrollview ++ * Ensure actor is visible on keyfocus inside the scrollview ++ * - add 128px icon size, might be useful for hidpi display ++ * - Sync minimization application target position. ++ */ ++ ++var taskbar = Utils.defineClass({ ++ Name: 'DashToPanel.Taskbar', ++ ++ _init : function(panel) { ++ this.dtpPanel = panel; ++ ++ // start at smallest size due to running indicator drawing area expanding but not shrinking ++ this.iconSize = 16; ++ ++ this._shownInitially = false; ++ ++ this._signalsHandler = new Utils.GlobalSignalsHandler(); ++ ++ this._showLabelTimeoutId = 0; ++ this._resetHoverTimeoutId = 0; ++ this._ensureAppIconVisibilityTimeoutId = 0; ++ this._labelShowing = false; ++ this.fullScrollView = 0; ++ ++ let isVertical = panel.checkIfVertical(); ++ ++ this._box = new St.BoxLayout({ vertical: isVertical, ++ clip_to_allocation: false, ++ x_align: Clutter.ActorAlign.START, ++ y_align: Clutter.ActorAlign.START }); ++ ++ this._container = new taskbarActor(this); ++ this._scrollView = new St.ScrollView({ name: 'dashtopanelScrollview', ++ hscrollbar_policy: Gtk.PolicyType.NEVER, ++ vscrollbar_policy: Gtk.PolicyType.NEVER, ++ enable_mouse_scrolling: true }); ++ ++ this._scrollView.connect('leave-event', Lang.bind(this, this._onLeaveEvent)); ++ this._scrollView.connect('motion-event', Lang.bind(this, this._onMotionEvent)); ++ this._scrollView.connect('scroll-event', Lang.bind(this, this._onScrollEvent)); ++ this._scrollView.add_actor(this._box); ++ ++ this._showAppsIconWrapper = panel.showAppsIconWrapper; ++ this._showAppsIconWrapper.connect('menu-state-changed', Lang.bind(this, function(showAppsIconWrapper, opened) { ++ this._itemMenuStateChanged(showAppsIconWrapper, opened); ++ })); ++ // an instance of the showAppsIcon class is encapsulated in the wrapper ++ this._showAppsIcon = this._showAppsIconWrapper.realShowAppsIcon; ++ this.showAppsButton = this._showAppsIcon.toggleButton; ++ ++ if (isVertical) { ++ this.showAppsButton.set_width(panel.geom.w); ++ } ++ ++ this.showAppsButton.connect('notify::checked', Lang.bind(this, this._onShowAppsButtonToggled)); ++ ++ this.showAppsButton.checked = (SearchController._showAppsButton) ? SearchController._showAppsButton.checked : false; ++ ++ this._showAppsIcon.childScale = 1; ++ this._showAppsIcon.childOpacity = 255; ++ this._showAppsIcon.icon.setIconSize(this.iconSize); ++ this._hookUpLabel(this._showAppsIcon, this._showAppsIconWrapper); ++ ++ this._container.add_child(new St.Widget({ width: 0, reactive: false })); ++ this._container.add_actor(this._scrollView); ++ ++ let orientation = panel.getOrientation(); ++ let fadeStyle = 'background-gradient-direction:' + orientation; ++ let fade1 = new St.Widget({ style_class: 'scrollview-fade', reactive: false }); ++ let fade2 = new St.Widget({ style_class: 'scrollview-fade', ++ reactive: false, ++ pivot_point: Utils.getPoint({ x: .5, y: .5 }), ++ rotation_angle_z: 180 }); ++ ++ fade1.set_style(fadeStyle); ++ fade2.set_style(fadeStyle); ++ ++ this._container.add_actor(fade1); ++ this._container.add_actor(fade2); ++ ++ this.previewMenu = new WindowPreview.PreviewMenu(panel); ++ this.previewMenu.enable(); ++ ++ let rtl = Clutter.get_default_text_direction() == Clutter.TextDirection.RTL; ++ this.actor = new St.Bin({ child: this._container, ++ y_align: St.Align.START, x_align:rtl?St.Align.END:St.Align.START ++ }); ++ ++ let adjustment = this._scrollView[orientation[0] + 'scroll'].adjustment; ++ ++ this._workId = Main.initializeDeferredWork(this._box, Lang.bind(this, this._redisplay)); ++ ++ this._settings = new Gio.Settings({ schema_id: 'org.gnome.shell' }); ++ ++ this._appSystem = Shell.AppSystem.get_default(); ++ ++ this.iconAnimator = new PanelManager.IconAnimator(this.dtpPanel.panel.actor); ++ ++ this._signalsHandler.add( ++ [ ++ this.dtpPanel.panel.actor, ++ 'notify::height', ++ () => this._queueRedisplay() ++ ], ++ [ ++ this.dtpPanel.panel.actor, ++ 'notify::width', ++ () => this._queueRedisplay() ++ ], ++ [ ++ this._appSystem, ++ 'installed-changed', ++ Lang.bind(this, function() { ++ AppFavorites.getAppFavorites().reload(); ++ this._queueRedisplay(); ++ }) ++ ], ++ [ ++ this._appSystem, ++ 'app-state-changed', ++ Lang.bind(this, this._queueRedisplay) ++ ], ++ [ ++ AppFavorites.getAppFavorites(), ++ 'changed', ++ Lang.bind(this, this._queueRedisplay) ++ ], ++ [ ++ global.window_manager, ++ 'switch-workspace', ++ () => this._connectWorkspaceSignals() ++ ], ++ [ ++ Utils.DisplayWrapper.getScreen(), ++ [ ++ 'window-entered-monitor', ++ 'window-left-monitor' ++ ], ++ () => { ++ if (Me.settings.get_boolean('isolate-monitors')) { ++ this._queueRedisplay(); ++ } ++ } ++ ], ++ [ ++ Main.overview, ++ 'item-drag-begin', ++ Lang.bind(this, this._onDragBegin) ++ ], ++ [ ++ Main.overview, ++ 'item-drag-end', ++ Lang.bind(this, this._onDragEnd) ++ ], ++ [ ++ Main.overview, ++ 'item-drag-cancelled', ++ Lang.bind(this, this._onDragCancelled) ++ ], ++ [ ++ // Ensure the ShowAppsButton status is kept in sync ++ SearchController._showAppsButton, ++ 'notify::checked', ++ Lang.bind(this, this._syncShowAppsButtonToggled) ++ ], ++ [ ++ Me.settings, ++ [ ++ 'changed::dot-size', ++ 'changed::show-favorites', ++ 'changed::show-running-apps', ++ 'changed::show-favorites-all-monitors' ++ ], ++ Lang.bind(this, this._redisplay) ++ ], ++ [ ++ Me.settings, ++ 'changed::group-apps', ++ Lang.bind(this, function() { ++ this.isGroupApps = Me.settings.get_boolean('group-apps'); ++ this._connectWorkspaceSignals(); ++ }) ++ ], ++ [ ++ Me.settings, ++ [ ++ 'changed::group-apps-use-launchers', ++ 'changed::taskbar-locked' ++ ], ++ () => this.resetAppIcons() ++ ], ++ [ ++ adjustment, ++ [ ++ 'notify::upper', ++ 'notify::pageSize' ++ ], ++ () => this._onScrollSizeChange(adjustment) ++ ] ++ ); ++ ++ this.isGroupApps = Me.settings.get_boolean('group-apps'); ++ ++ this._onScrollSizeChange(adjustment); ++ this._connectWorkspaceSignals(); ++ }, ++ ++ destroy: function() { ++ this.iconAnimator.destroy(); ++ ++ this._signalsHandler.destroy(); ++ this._signalsHandler = 0; ++ ++ this._container.destroy(); ++ ++ this.previewMenu.disable(); ++ this.previewMenu.destroy(); ++ ++ this._disconnectWorkspaceSignals(); ++ }, ++ ++ _dropIconAnimations: function() { ++ this._getTaskbarIcons().forEach(item => { ++ item.raise(0); ++ item.stretch(0); ++ }); ++ }, ++ ++ _updateIconAnimations: function(pointerX, pointerY) { ++ this._iconAnimationTimestamp = Date.now(); ++ let type = iconAnimationSettings.type; ++ ++ if (!pointerX || !pointerY) ++ [pointerX, pointerY] = global.get_pointer(); ++ ++ this._getTaskbarIcons().forEach(item => { ++ let [x, y] = item.get_transformed_position(); ++ let [width, height] = item.get_transformed_size(); ++ let [centerX, centerY] = [x + width / 2, y + height / 2]; ++ let size = this._box.vertical ? height : width; ++ let difference = this._box.vertical ? pointerY - centerY : pointerX - centerX; ++ let distance = Math.abs(difference); ++ let maxDistance = (iconAnimationSettings.extent / 2) * size; ++ ++ if (type == 'PLANK') { ++ // Make the position stable for items that are far from the pointer. ++ let translation = distance <= maxDistance ? ++ distance / (2 + 8 * distance / maxDistance) : ++ // the previous expression with distance = maxDistance ++ maxDistance / 10; ++ ++ if (difference > 0) ++ translation *= -1; ++ ++ item.stretch(translation); ++ } ++ ++ if (distance <= maxDistance) { ++ let level = (maxDistance - distance) / maxDistance; ++ level = Math.pow(level, iconAnimationSettings.convexity); ++ item.raise(level); ++ } else { ++ item.raise(0); ++ } ++ }); ++ }, ++ ++ _onLeaveEvent: function(actor) { ++ let [stageX, stageY] = global.get_pointer(); ++ let [success, x, y] = actor.transform_stage_point(stageX, stageY); ++ if (success && !actor.allocation.contains(x, y) && (iconAnimationSettings.type == 'RIPPLE' || iconAnimationSettings.type == 'PLANK')) ++ this._dropIconAnimations(); ++ ++ return Clutter.EVENT_PROPAGATE; ++ }, ++ ++ _onMotionEvent: function(actor_, event) { ++ if (iconAnimationSettings.type == 'RIPPLE' || iconAnimationSettings.type == 'PLANK') { ++ let timestamp = Date.now(); ++ if (!this._iconAnimationTimestamp || ++ (timestamp - this._iconAnimationTimestamp >= iconAnimationSettings.duration / 2)) { ++ let [pointerX, pointerY] = event.get_coords(); ++ this._updateIconAnimations(pointerX, pointerY); ++ } ++ } ++ ++ return Clutter.EVENT_PROPAGATE; ++ }, ++ ++ _onScrollEvent: function(actor, event) { ++ ++ let orientation = this.dtpPanel.getOrientation(); ++ ++ // reset timeout to avid conflicts with the mousehover event ++ if (this._ensureAppIconVisibilityTimeoutId>0) { ++ Mainloop.source_remove(this._ensureAppIconVisibilityTimeoutId); ++ this._ensureAppIconVisibilityTimeoutId = 0; ++ } ++ ++ // Skip to avoid double events mouse ++ if (event.is_pointer_emulated()) ++ return Clutter.EVENT_STOP; ++ ++ let adjustment, delta; ++ ++ adjustment = this._scrollView[orientation[0] + 'scroll'].get_adjustment(); ++ ++ let increment = adjustment.step_increment; ++ ++ switch ( event.get_scroll_direction() ) { ++ case Clutter.ScrollDirection.UP: ++ case Clutter.ScrollDirection.LEFT: ++ delta = -increment; ++ break; ++ case Clutter.ScrollDirection.DOWN: ++ case Clutter.ScrollDirection.RIGHT: ++ delta = +increment; ++ break; ++ case Clutter.ScrollDirection.SMOOTH: ++ let [dx, dy] = event.get_scroll_delta(); ++ delta = dy*increment; ++ delta += dx*increment; ++ break; ++ ++ } ++ ++ adjustment.set_value(adjustment.get_value() + delta); ++ ++ return Clutter.EVENT_STOP; ++ ++ }, ++ ++ _onScrollSizeChange: function(adjustment) { ++ // Update minimization animation target position on scrollview change. ++ this._updateAppIcons(); ++ ++ // When applications are ungrouped and there is some empty space on the horizontal taskbar, ++ // force a fixed label width to prevent the icons from "wiggling" when an animation runs ++ // (adding or removing an icon). When the taskbar is full, revert to a dynamic label width ++ // to allow them to resize and make room for new icons. ++ if (!this.dtpPanel.checkIfVertical() && !this.isGroupApps) { ++ let initial = this.fullScrollView; ++ ++ if (!this.fullScrollView && Math.floor(adjustment.upper) > adjustment.page_size) { ++ this.fullScrollView = adjustment.page_size; ++ } else if (adjustment.page_size < this.fullScrollView) { ++ this.fullScrollView = 0; ++ } ++ ++ if (initial != this.fullScrollView) { ++ this._getAppIcons().forEach(a => a.updateTitleStyle()); ++ } ++ } ++ }, ++ ++ _onDragBegin: function() { ++ this._dragCancelled = false; ++ this._dragMonitor = { ++ dragMotion: Lang.bind(this, this._onDragMotion) ++ }; ++ DND.addDragMonitor(this._dragMonitor); ++ ++ if (this._box.get_n_children() == 0) { ++ this._emptyDropTarget = new Dash.EmptyDropTargetItem(); ++ this._box.insert_child_at_index(this._emptyDropTarget, 0); ++ this._emptyDropTarget.show(true); ++ } ++ ++ this._toggleFavortieHighlight(true); ++ }, ++ ++ _onDragCancelled: function() { ++ this._dragCancelled = true; ++ ++ if (this._dragInfo) { ++ this._box.set_child_at_index(this._dragInfo[1]._dashItemContainer, this._dragInfo[0]); ++ } ++ ++ this._endDrag(); ++ }, ++ ++ _onDragEnd: function() { ++ if (this._dragCancelled) ++ return; ++ ++ this._endDrag(); ++ }, ++ ++ _endDrag: function() { ++ if (this._dragInfo && this._dragInfo[1]._dashItemContainer instanceof DragPlaceholderItem) { ++ this._box.remove_child(this._dragInfo[1]._dashItemContainer); ++ this._dragInfo[1]._dashItemContainer.destroy(); ++ delete this._dragInfo[1]._dashItemContainer; ++ } ++ ++ this._dragInfo = null; ++ this._clearEmptyDropTarget(); ++ this._showAppsIcon.setDragApp(null); ++ DND.removeDragMonitor(this._dragMonitor); ++ ++ this._toggleFavortieHighlight(); ++ }, ++ ++ _onDragMotion: function(dragEvent) { ++ let app = Dash.getAppFromSource(dragEvent.source); ++ if (app == null) ++ return DND.DragMotionResult.CONTINUE; ++ ++ let showAppsHovered = this._showAppsIcon.contains(dragEvent.targetActor); ++ ++ if (showAppsHovered) ++ this._showAppsIcon.setDragApp(app); ++ else ++ this._showAppsIcon.setDragApp(null); ++ ++ return DND.DragMotionResult.CONTINUE; ++ }, ++ ++ _toggleFavortieHighlight: function(show) { ++ let appFavorites = AppFavorites.getAppFavorites(); ++ let cssFuncName = (show ? 'add' : 'remove') + '_style_class_name'; ++ ++ this._getAppIcons().filter(appIcon => appFavorites.isFavorite(appIcon.app.get_id())) ++ .forEach(fav => fav._container[cssFuncName]('favorite')); ++ }, ++ ++ handleIsolatedWorkspaceSwitch: function() { ++ this._shownInitially = this.isGroupApps; ++ this._queueRedisplay(); ++ }, ++ ++ _connectWorkspaceSignals: function() { ++ this._disconnectWorkspaceSignals(); ++ ++ this._lastWorkspace = Utils.DisplayWrapper.getWorkspaceManager().get_active_workspace(); ++ ++ this._workspaceWindowAddedId = this._lastWorkspace.connect('window-added', () => this._queueRedisplay()); ++ this._workspaceWindowRemovedId = this._lastWorkspace.connect('window-removed', () => this._queueRedisplay()); ++ }, ++ ++ _disconnectWorkspaceSignals: function() { ++ if (this._lastWorkspace) { ++ this._lastWorkspace.disconnect(this._workspaceWindowAddedId); ++ this._lastWorkspace.disconnect(this._workspaceWindowRemovedId); ++ ++ this._lastWorkspace = null; ++ } ++ }, ++ ++ _queueRedisplay: function () { ++ Main.queueDeferredWork(this._workId); ++ }, ++ ++ _hookUpLabel: function(item, syncHandler) { ++ item.child.connect('notify::hover', Lang.bind(this, function() { ++ this._syncLabel(item, syncHandler); ++ })); ++ ++ syncHandler.connect('sync-tooltip', Lang.bind(this, function() { ++ this._syncLabel(item, syncHandler); ++ })); ++ }, ++ ++ _createAppItem: function(app, window, isLauncher) { ++ let appIcon = new AppIcons.taskbarAppIcon( ++ { ++ app: app, ++ window: window, ++ isLauncher: isLauncher ++ }, ++ this.dtpPanel, ++ { ++ setSizeManually: true, ++ showLabel: false, ++ isDraggable: !Me.settings.get_boolean('taskbar-locked'), ++ }, ++ this.previewMenu, ++ this.iconAnimator ++ ); ++ ++ if (appIcon._draggable) { ++ appIcon._draggable.connect('drag-begin', ++ Lang.bind(this, function() { ++ appIcon.actor.opacity = 0; ++ appIcon.isDragged = 1; ++ this._dropIconAnimations(); ++ })); ++ appIcon._draggable.connect('drag-end', ++ Lang.bind(this, function() { ++ appIcon.actor.opacity = 255; ++ delete appIcon.isDragged; ++ this._updateAppIcons(); ++ })); ++ } ++ ++ appIcon.connect('menu-state-changed', ++ Lang.bind(this, function(appIcon, opened) { ++ this._itemMenuStateChanged(item, opened); ++ })); ++ ++ let item = new TaskbarItemContainer(); ++ ++ item._dtpPanel = this.dtpPanel ++ extendDashItemContainer(item); ++ ++ item.setChild(appIcon.actor); ++ appIcon._dashItemContainer = item; ++ ++ appIcon.actor.connect('notify::hover', Lang.bind(this, function() { ++ if (appIcon.actor.hover){ ++ this._ensureAppIconVisibilityTimeoutId = Mainloop.timeout_add(100, Lang.bind(this, function(){ ++ Utils.ensureActorVisibleInScrollView(this._scrollView, appIcon.actor, this._scrollView._dtpFadeSize); ++ this._ensureAppIconVisibilityTimeoutId = 0; ++ return GLib.SOURCE_REMOVE; ++ })); ++ ++ if (!appIcon.isDragged && iconAnimationSettings.type == 'SIMPLE') ++ appIcon.actor.get_parent().raise(1); ++ else if (!appIcon.isDragged && (iconAnimationSettings.type == 'RIPPLE' || iconAnimationSettings.type == 'PLANK')) ++ this._updateIconAnimations(); ++ } else { ++ if (this._ensureAppIconVisibilityTimeoutId>0) { ++ Mainloop.source_remove(this._ensureAppIconVisibilityTimeoutId); ++ this._ensureAppIconVisibilityTimeoutId = 0; ++ } ++ ++ if (!appIcon.isDragged && iconAnimationSettings.type == 'SIMPLE') ++ appIcon.actor.get_parent().raise(0); ++ } ++ })); ++ ++ appIcon.actor.connect('clicked', ++ Lang.bind(this, function(actor) { ++ Utils.ensureActorVisibleInScrollView(this._scrollView, actor, this._scrollView._dtpFadeSize); ++ })); ++ ++ appIcon.actor.connect('key-focus-in', Lang.bind(this, function(actor) { ++ let [x_shift, y_shift] = Utils.ensureActorVisibleInScrollView(this._scrollView, actor, this._scrollView._dtpFadeSize); ++ ++ // This signal is triggered also by mouse click. The popup menu is opened at the original ++ // coordinates. Thus correct for the shift which is going to be applied to the scrollview. ++ if (appIcon._menu) { ++ appIcon._menu._boxPointer.xOffset = -x_shift; ++ appIcon._menu._boxPointer.yOffset = -y_shift; ++ } ++ })); ++ ++ // Override default AppIcon label_actor, now the ++ // accessible_name is set at DashItemContainer.setLabelText ++ appIcon.actor.label_actor = null; ++ item.setLabelText(app.get_name()); ++ ++ appIcon.icon.setIconSize(this.iconSize); ++ this._hookUpLabel(item, appIcon); ++ ++ return item; ++ }, ++ ++ // Return an array with the "proper" appIcons currently in the taskbar ++ _getAppIcons: function() { ++ // Only consider children which are "proper" icons and which are not ++ // animating out (which means they will be destroyed at the end of ++ // the animation) ++ return this._getTaskbarIcons().map(function(actor){ ++ return actor.child._delegate; ++ }); ++ }, ++ ++ _getTaskbarIcons: function(includeAnimated) { ++ return this._box.get_children().filter(function(actor) { ++ return actor.child && ++ actor.child._delegate && ++ actor.child._delegate.icon && ++ (includeAnimated || !actor.animatingOut); ++ }); ++ }, ++ ++ _updateAppIcons: function() { ++ let appIcons = this._getAppIcons(); ++ ++ appIcons.filter(icon => icon.constructor === AppIcons.taskbarAppIcon).forEach(icon => { ++ icon.updateIcon(); ++ }); ++ }, ++ ++ _itemMenuStateChanged: function(item, opened) { ++ // When the menu closes, it calls sync_hover, which means ++ // that the notify::hover handler does everything we need to. ++ if (opened) { ++ if (this._showLabelTimeoutId > 0) { ++ Mainloop.source_remove(this._showLabelTimeoutId); ++ this._showLabelTimeoutId = 0; ++ } ++ ++ item.hideLabel(); ++ } else { ++ // I want to listen from outside when a menu is closed. I used to ++ // add a custom signal to the appIcon, since gnome 3.8 the signal ++ // calling this callback was added upstream. ++ this.emit('menu-closed'); ++ ++ // The icon menu grabs the events and, once it is closed, the pointer is maybe ++ // no longer over the taskbar and the animations are not dropped. ++ if (iconAnimationSettings.type == 'RIPPLE' || iconAnimationSettings.type == 'PLANK') { ++ this._scrollView.sync_hover(); ++ if (!this._scrollView.hover) ++ this._dropIconAnimations(); ++ } ++ } ++ }, ++ ++ _syncLabel: function (item, syncHandler) { ++ let shouldShow = syncHandler ? syncHandler.shouldShowTooltip() : item.child.get_hover(); ++ ++ if (shouldShow) { ++ if (this._showLabelTimeoutId == 0) { ++ let timeout = this._labelShowing ? 0 : DASH_ITEM_HOVER_TIMEOUT; ++ this._showLabelTimeoutId = Mainloop.timeout_add(timeout, ++ Lang.bind(this, function() { ++ this._labelShowing = true; ++ item.showLabel(); ++ this._showLabelTimeoutId = 0; ++ return GLib.SOURCE_REMOVE; ++ })); ++ GLib.Source.set_name_by_id(this._showLabelTimeoutId, '[gnome-shell] item.showLabel'); ++ if (this._resetHoverTimeoutId > 0) { ++ Mainloop.source_remove(this._resetHoverTimeoutId); ++ this._resetHoverTimeoutId = 0; ++ } ++ } ++ } else { ++ if (this._showLabelTimeoutId > 0) ++ Mainloop.source_remove(this._showLabelTimeoutId); ++ this._showLabelTimeoutId = 0; ++ item.hideLabel(); ++ if (this._labelShowing) { ++ this._resetHoverTimeoutId = Mainloop.timeout_add(DASH_ITEM_HOVER_TIMEOUT, ++ Lang.bind(this, function() { ++ this._labelShowing = false; ++ this._resetHoverTimeoutId = 0; ++ return GLib.SOURCE_REMOVE; ++ })); ++ GLib.Source.set_name_by_id(this._resetHoverTimeoutId, '[gnome-shell] this._labelShowing'); ++ } ++ } ++ }, ++ ++ _adjustIconSize: function() { ++ const thisMonitorIndex = this.dtpPanel.monitor.index; ++ let panelSize = PanelSettings.getPanelSize(Me.settings, thisMonitorIndex); ++ let availSize = panelSize - Me.settings.get_int('appicon-padding') * 2; ++ let minIconSize = MIN_ICON_SIZE + panelSize % 2; ++ ++ if (availSize == this.iconSize) ++ return; ++ ++ if (availSize < minIconSize) { ++ availSize = minIconSize; ++ } ++ ++ // For the icon size, we only consider children which are "proper" ++ // icons and which are not animating out (which means they will be ++ // destroyed at the end of the animation) ++ let iconChildren = this._getTaskbarIcons().concat([this._showAppsIcon]); ++ let scale = this.iconSize / availSize; ++ ++ this.iconSize = availSize; ++ ++ for (let i = 0; i < iconChildren.length; i++) { ++ let icon = iconChildren[i].child._delegate.icon; ++ ++ // Set the new size immediately, to keep the icons' sizes ++ // in sync with this.iconSize ++ icon.setIconSize(this.iconSize); ++ ++ // Don't animate the icon size change when the overview ++ // is transitioning, or when initially filling ++ // the taskbar ++ if (Main.overview.animationInProgress || ++ !this._shownInitially) ++ continue; ++ ++ let [targetWidth, targetHeight] = icon.icon.get_size(); ++ ++ // Scale the icon's texture to the previous size and ++ // tween to the new size ++ icon.icon.set_size(icon.icon.width * scale, icon.icon.height * scale); ++ ++ Utils.animate(icon.icon, ++ { width: targetWidth, ++ height: targetHeight, ++ time: DASH_ANIMATION_TIME, ++ transition: 'easeOutQuad', ++ }); ++ } ++ }, ++ ++ sortAppsCompareFunction: function(appA, appB) { ++ return getAppStableSequence(appA, this.dtpPanel.monitor) - ++ getAppStableSequence(appB, this.dtpPanel.monitor); ++ }, ++ ++ getAppInfos: function() { ++ //get the user's favorite apps ++ let favoriteApps = this._checkIfShowingFavorites() ? AppFavorites.getAppFavorites().getFavorites() : []; ++ ++ //find the apps that should be in the taskbar: the favorites first, then add the running apps ++ // When using isolation, we filter out apps that have no windows in ++ // the current workspace (this check is done in AppIcons.getInterestingWindows) ++ let runningApps = this._checkIfShowingRunningApps() ? this._getRunningApps().sort(this.sortAppsCompareFunction.bind(this)) : []; ++ ++ if (!this.isGroupApps && Me.settings.get_boolean('group-apps-use-launchers')) { ++ return this._createAppInfos(favoriteApps, [], true) ++ .concat(this._createAppInfos(runningApps) ++ .filter(appInfo => appInfo.windows.length)); ++ } else { ++ return this._createAppInfos(favoriteApps.concat(runningApps.filter(app => favoriteApps.indexOf(app) < 0))) ++ .filter(appInfo => appInfo.windows.length || favoriteApps.indexOf(appInfo.app) >= 0); ++ } ++ }, ++ ++ _redisplay: function () { ++ if (!this._signalsHandler) { ++ return; ++ } ++ ++ //get the currently displayed appIcons ++ let currentAppIcons = this._getTaskbarIcons(); ++ let expectedAppInfos = this.getAppInfos(); ++ ++ //remove the appIcons which are not in the expected apps list ++ for (let i = currentAppIcons.length - 1; i > -1; --i) { ++ let appIcon = currentAppIcons[i].child._delegate; ++ let appIndex = Utils.findIndex(expectedAppInfos, appInfo => appInfo.app == appIcon.app && ++ appInfo.isLauncher == appIcon.isLauncher); ++ ++ if (appIndex < 0 || ++ (appIcon.window && (this.isGroupApps || expectedAppInfos[appIndex].windows.indexOf(appIcon.window) < 0)) || ++ (!appIcon.window && !appIcon.isLauncher && ++ !this.isGroupApps && expectedAppInfos[appIndex].windows.length)) { ++ currentAppIcons[i][this._shownInitially ? 'animateOutAndDestroy' : 'destroy'](); ++ currentAppIcons.splice(i, 1); ++ } ++ } ++ ++ //if needed, reorder the existing appIcons and create the missing ones ++ let currentPosition = 0; ++ for (let i = 0, l = expectedAppInfos.length; i < l; ++i) { ++ let neededAppIcons = this.isGroupApps || !expectedAppInfos[i].windows.length ? ++ [{ app: expectedAppInfos[i].app, window: null, isLauncher: expectedAppInfos[i].isLauncher }] : ++ expectedAppInfos[i].windows.map(window => ({ app: expectedAppInfos[i].app, window: window, isLauncher: false })); ++ ++ for (let j = 0, ll = neededAppIcons.length; j < ll; ++j) { ++ //check if the icon already exists ++ let matchingAppIconIndex = Utils.findIndex(currentAppIcons, appIcon => appIcon.child._delegate.app == neededAppIcons[j].app && ++ appIcon.child._delegate.window == neededAppIcons[j].window); ++ ++ if (matchingAppIconIndex > 0 && matchingAppIconIndex != currentPosition) { ++ //moved icon, reposition it ++ this._box.remove_child(currentAppIcons[matchingAppIconIndex]); ++ this._box.insert_child_at_index(currentAppIcons[matchingAppIconIndex], currentPosition); ++ } else if (matchingAppIconIndex < 0) { ++ //the icon doesn't exist yet, create a new one ++ let newAppIcon = this._createAppItem(neededAppIcons[j].app, neededAppIcons[j].window, neededAppIcons[j].isLauncher); ++ ++ this._box.insert_child_at_index(newAppIcon, currentPosition); ++ currentAppIcons.splice(currentPosition, 0, newAppIcon); ++ ++ // Skip animations on first run when adding the initial set ++ // of items, to avoid all items zooming in at once ++ newAppIcon.show(this._shownInitially); ++ } ++ ++ ++currentPosition; ++ } ++ } ++ ++ this._adjustIconSize(); ++ ++ // Workaround for https://bugzilla.gnome.org/show_bug.cgi?id=692744 ++ // Without it, StBoxLayout may use a stale size cache ++ this._box.queue_relayout(); ++ ++ // This is required for icon reordering when the scrollview is used. ++ this._updateAppIcons(); ++ ++ // This will update the size, and the corresponding number for each icon on the primary panel ++ if (this.dtpPanel.isPrimary) { ++ this._updateNumberOverlay(); ++ } ++ ++ this._shownInitially = true; ++ }, ++ ++ _checkIfShowingRunningApps: function() { ++ return Me.settings.get_boolean('show-running-apps'); ++ }, ++ ++ _checkIfShowingFavorites: function() { ++ return Me.settings.get_boolean('show-favorites') && ++ (this.dtpPanel.isPrimary || Me.settings.get_boolean('show-favorites-all-monitors')); ++ }, ++ ++ _getRunningApps: function() { ++ let tracker = Shell.WindowTracker.get_default(); ++ let windows = global.get_window_actors(); ++ let apps = []; ++ ++ for (let i = 0, l = windows.length; i < l; ++i) { ++ let app = tracker.get_window_app(windows[i].metaWindow); ++ ++ if (app && apps.indexOf(app) < 0) { ++ apps.push(app); ++ } ++ } ++ ++ return apps; ++ }, ++ ++ _createAppInfos: function(apps, defaultWindows, defaultIsLauncher) { ++ return apps.map(app => ({ ++ app: app, ++ isLauncher: defaultIsLauncher || false, ++ windows: defaultWindows || AppIcons.getInterestingWindows(app, this.dtpPanel.monitor) ++ .sort(sortWindowsCompareFunction) ++ })); ++ }, ++ ++ // Reset the displayed apps icon to mantain the correct order ++ resetAppIcons : function(geometryChange) { ++ let children = this._getTaskbarIcons(true); ++ ++ for (let i = 0; i < children.length; i++) { ++ let item = children[i]; ++ item.destroy(); ++ } ++ ++ // to avoid ugly animations, just suppress them like when taskbar is first loaded. ++ this._shownInitially = false; ++ this._redisplay(); ++ ++ if (geometryChange && this.dtpPanel.checkIfVertical()) { ++ this.previewMenu._updateClip(); ++ } ++ }, ++ ++ _updateNumberOverlay: function() { ++ let seenApps = {}; ++ let counter = 0; ++ ++ this._getAppIcons().forEach(function(icon) { ++ if (!seenApps[icon.app]) { ++ seenApps[icon.app] = 1; ++ counter++; ++ } ++ ++ if (counter <= 10) { ++ icon.setNumberOverlay(counter == 10 ? 0 : counter); ++ } else { ++ // No overlay after 10 ++ icon.setNumberOverlay(-1); ++ } ++ ++ icon.updateHotkeyNumberOverlay(); ++ }); ++ ++ if (Me.settings.get_boolean('hot-keys') && ++ Me.settings.get_string('hotkeys-overlay-combo') === 'ALWAYS') ++ this.toggleNumberOverlay(true); ++ }, ++ ++ toggleNumberOverlay: function(activate) { ++ let appIcons = this._getAppIcons(); ++ appIcons.forEach(function(icon) { ++ icon.toggleNumberOverlay(activate); ++ }); ++ }, ++ ++ _clearEmptyDropTarget: function() { ++ if (this._emptyDropTarget) { ++ this._emptyDropTarget.animateOutAndDestroy(); ++ this._emptyDropTarget = null; ++ } ++ }, ++ ++ handleDragOver: function(source, actor, x, y, time) { ++ if (source == Main.xdndHandler) ++ return DND.DragMotionResult.CONTINUE; ++ ++ // Don't allow favoriting of transient apps ++ if (source.app == null || source.app.is_window_backed()) ++ return DND.DragMotionResult.NO_DROP; ++ ++ if (!this._settings.is_writable('favorite-apps')) ++ return DND.DragMotionResult.NO_DROP; ++ ++ let sourceActor = source instanceof St.Widget ? source : source.actor; ++ let isVertical = this.dtpPanel.checkIfVertical(); ++ ++ if (!this._box.contains(sourceActor) && !source._dashItemContainer) { ++ //not an appIcon of the taskbar, probably from the applications view ++ source._dashItemContainer = new DragPlaceholderItem(source, this.iconSize, isVertical); ++ this._box.insert_child_above(source._dashItemContainer, null); ++ } ++ ++ let sizeProp = isVertical ? 'height' : 'width'; ++ let posProp = isVertical ? 'y' : 'x'; ++ let pos = isVertical ? y : x; ++ ++ let currentAppIcons = this._getAppIcons(); ++ let sourceIndex = currentAppIcons.indexOf(source); ++ let hoveredIndex = Utils.findIndex(currentAppIcons, ++ appIcon => pos >= appIcon._dashItemContainer[posProp] && ++ pos <= (appIcon._dashItemContainer[posProp] + appIcon._dashItemContainer[sizeProp])); ++ ++ if (!this._dragInfo) { ++ this._dragInfo = [sourceIndex, source]; ++ } ++ ++ if (hoveredIndex >= 0) { ++ let isLeft = pos < currentAppIcons[hoveredIndex]._dashItemContainer[posProp] + currentAppIcons[hoveredIndex]._dashItemContainer[sizeProp] * .5; ++ ++ // Don't allow positioning before or after self and between icons of same app ++ if (!(hoveredIndex === sourceIndex || ++ (isLeft && hoveredIndex - 1 == sourceIndex) || ++ (isLeft && hoveredIndex - 1 >= 0 && source.app != currentAppIcons[hoveredIndex - 1].app && ++ currentAppIcons[hoveredIndex - 1].app == currentAppIcons[hoveredIndex].app) || ++ (!isLeft && hoveredIndex + 1 == sourceIndex) || ++ (!isLeft && hoveredIndex + 1 < currentAppIcons.length && source.app != currentAppIcons[hoveredIndex + 1].app && ++ currentAppIcons[hoveredIndex + 1].app == currentAppIcons[hoveredIndex].app))) { ++ this._box.set_child_at_index(source._dashItemContainer, hoveredIndex); ++ ++ // Ensure the next and previous icon are visible when moving the icon ++ // (I assume there's room for both of them) ++ if (hoveredIndex > 1) ++ Utils.ensureActorVisibleInScrollView(this._scrollView, this._box.get_children()[hoveredIndex-1], this._scrollView._dtpFadeSize); ++ if (hoveredIndex < this._box.get_children().length-1) ++ Utils.ensureActorVisibleInScrollView(this._scrollView, this._box.get_children()[hoveredIndex+1], this._scrollView._dtpFadeSize); ++ } ++ } ++ ++ return this._dragInfo[0] !== sourceIndex ? DND.DragMotionResult.MOVE_DROP : DND.DragMotionResult.CONTINUE; ++ }, ++ ++ // Draggable target interface ++ acceptDrop : function(source, actor, x, y, time) { ++ // Don't allow favoriting of transient apps ++ if (!source.app || source.app.is_window_backed() || !this._settings.is_writable('favorite-apps')) { ++ return false; ++ } ++ ++ let appIcons = this._getAppIcons(); ++ let sourceIndex = appIcons.indexOf(source); ++ let usingLaunchers = !this.isGroupApps && Me.settings.get_boolean('group-apps-use-launchers'); ++ ++ // dragging the icon to its original position ++ if (this._dragInfo[0] === sourceIndex) { ++ return true; ++ } ++ ++ let appFavorites = AppFavorites.getAppFavorites(); ++ let sourceAppId = source.app.get_id(); ++ let appIsFavorite = appFavorites.isFavorite(sourceAppId); ++ let replacingIndex = sourceIndex + (sourceIndex > this._dragInfo[0] ? -1 : 1); ++ let favoriteIndex = replacingIndex >= 0 ? appFavorites.getFavorites().indexOf(appIcons[replacingIndex].app) : 0; ++ let sameApps = appIcons.filter(a => a != source && a.app == source.app); ++ let showingFavorites = this._checkIfShowingFavorites(); ++ let favoritesCount = 0; ++ let position = 0; ++ let interestingWindows = {}; ++ let getAppWindows = app => { ++ if (!interestingWindows[app]) { ++ interestingWindows[app] = AppIcons.getInterestingWindows(app, this.dtpPanel.monitor); ++ } ++ ++ let appWindows = interestingWindows[app]; //prevents "reference to undefined property Symbol.toPrimitive" warning ++ return appWindows; ++ }; ++ ++ if (sameApps.length && ++ ((!appIcons[sourceIndex - 1] || appIcons[sourceIndex - 1].app !== source.app) && ++ (!appIcons[sourceIndex + 1] || appIcons[sourceIndex + 1].app !== source.app))) { ++ appIcons.splice(appIcons.indexOf(sameApps[0]), sameApps.length); ++ Array.prototype.splice.apply(appIcons, [sourceIndex + 1, 0].concat(sameApps)); ++ } ++ ++ for (let i = 0, l = appIcons.length; i < l; ++i) { ++ let windows = []; ++ ++ if (!usingLaunchers || (!source.isLauncher && !appIcons[i].isLauncher)) { ++ windows = appIcons[i].window ? [appIcons[i].window] : getAppWindows(appIcons[i].app); ++ } ++ ++ windows.forEach(w => w._dtpPosition = position++); ++ ++ if (showingFavorites && ++ ((usingLaunchers && appIcons[i].isLauncher) || ++ (!usingLaunchers && appFavorites.isFavorite(appIcons[i].app.get_id())))) { ++ ++favoritesCount; ++ } ++ } ++ ++ if (sourceIndex < favoritesCount) { ++ if (appIsFavorite) { ++ appFavorites.moveFavoriteToPos(sourceAppId, favoriteIndex); ++ } else { ++ appFavorites.addFavoriteAtPos(sourceAppId, favoriteIndex); ++ } ++ } else if (appIsFavorite && showingFavorites && (!usingLaunchers || source.isLauncher)) { ++ appFavorites.removeFavorite(sourceAppId); ++ } ++ ++ appFavorites.emit('changed'); ++ ++ return true; ++ }, ++ ++ _onShowAppsButtonToggled: function() { ++ // Sync the status of the default appButtons. Only if the two statuses are ++ // different, that means the user interacted with the extension provided ++ // application button, cutomize the behaviour. Otherwise the shell has changed the ++ // status (due to the _syncShowAppsButtonToggled function below) and it ++ // has already performed the desired action. ++ let selector = SearchController; ++ ++ if (selector._showAppsButton && ++ selector._showAppsButton.checked !== this.showAppsButton.checked) { ++ // find visible view ++ ++ if (this.showAppsButton.checked) { ++ if (Me.settings.get_boolean('show-apps-override-escape')) { ++ //override escape key to return to the desktop when entering the overview using the showapps button ++ SearchController._onStageKeyPress = function(actor, event) { ++ if (Main.modalCount == 1 && event.get_key_symbol() === Clutter.KEY_Escape) { ++ this._searchActive ? this.reset() : Main.overview.hide(); ++ ++ return Clutter.EVENT_STOP; ++ } ++ ++ return this.__proto__._onStageKeyPress.call(this, actor, event); ++ }; ++ } ++ ++ // force spring animation triggering.By default the animation only ++ // runs if we are already inside the overview. ++ if (!Main.overview._shown) { ++ this.forcedOverview = true; ++ let grid = AppDisplay._grid; ++ let onShownCb; ++ let overviewSignal = Config.PACKAGE_VERSION > '3.38.1' ? 'showing' : 'shown'; ++ let overviewShowingId = Main.overview.connect(overviewSignal, () => { ++ Main.overview.disconnect(overviewShowingId); ++ onShownCb(); ++ }); ++ ++ onShownCb = () => grid.emit('animation-done'); ++ } ++ ++ //temporarily use as primary the monitor on which the showapps btn was clicked, this is ++ //restored by the panel when exiting the overview ++ this.dtpPanel.panelManager.setFocusedMonitor(this.dtpPanel.monitor); ++ ++ let overviewHiddenId = Main.overview.connect('hidden', () => { ++ Main.overview.disconnect(overviewHiddenId); ++ delete SearchController._onStageKeyPress; ++ }); ++ ++ // Finally show the overview ++ selector._showAppsButton.checked = true; ++ Main.overview.show(2 /*APP_GRID*/); ++ } ++ else { ++ if (this.forcedOverview) { ++ // force exiting overview if needed ++ ++ Main.overview.hide(); ++ this.forcedOverview = false; ++ } ++ else { ++ selector._showAppsButton.checked = false; ++ this.forcedOverview = false; ++ } ++ } ++ } ++ }, ++ ++ _syncShowAppsButtonToggled: function() { ++ let status = SearchController._showAppsButton.checked; ++ if (this.showAppsButton.checked !== status) ++ this.showAppsButton.checked = status; ++ }, ++ ++ showShowAppsButton: function() { ++ this.showAppsButton.visible = true; ++ this.showAppsButton.set_width(-1); ++ this.showAppsButton.set_height(-1); ++ }, ++ ++ popupFocusedAppSecondaryMenu: function() { ++ let appIcons = this._getAppIcons(); ++ let tracker = Shell.WindowTracker.get_default(); ++ ++ for(let i in appIcons) { ++ if(appIcons[i].app == tracker.focus_app) { ++ let appIcon = appIcons[i]; ++ if(appIcon._menu && appIcon._menu.isOpen) ++ appIcon._menu.close(); ++ else ++ appIcon.popupMenu(); ++ ++ appIcon.sync_hover(); ++ break; ++ } ++ } ++ }, ++}); ++ ++Signals.addSignalMethods(taskbar.prototype); ++ ++const CloneContainerConstraint = Utils.defineClass({ ++ Name: 'DashToPanel-CloneContainerConstraint', ++ Extends: Clutter.BindConstraint, ++ ++ vfunc_update_allocation: function(actor, actorBox) { ++ if (!this.source) ++ return; ++ ++ let [stageX, stageY] = this.source.get_transformed_position(); ++ let [width, height] = this.source.get_transformed_size(); ++ ++ actorBox.set_origin(stageX, stageY); ++ actorBox.set_size(width, height); ++ }, ++}); ++ ++var TaskbarItemContainer = Utils.defineClass({ ++ Name: 'DashToPanel-TaskbarItemContainer', ++ Extends: Dash.DashItemContainer, ++ ++ vfunc_allocate: function(box, flags) { ++ if (this.child == null) ++ return; ++ ++ Utils.setAllocation(this, box, flags); ++ ++ let availWidth = box.x2 - box.x1; ++ let availHeight = box.y2 - box.y1; ++ let [minChildWidth, minChildHeight, natChildWidth, natChildHeight] = this.child.get_preferred_size(); ++ let [childScaleX, childScaleY] = this.child.get_scale(); ++ ++ let childWidth = Math.min(natChildWidth * childScaleX, availWidth); ++ let childHeight = Math.min(natChildHeight * childScaleY, availHeight); ++ let childBox = new Clutter.ActorBox(); ++ ++ childBox.x1 = (availWidth - childWidth) / 2; ++ childBox.y1 = (availHeight - childHeight) / 2; ++ childBox.x2 = childBox.x1 + childWidth; ++ childBox.y2 = childBox.y1 + childHeight; ++ ++ Utils.allocate(this.child, childBox, flags); ++ }, ++ ++ // In case appIcon is removed from the taskbar while it is hovered, ++ // restore opacity before dashItemContainer.animateOutAndDestroy does the destroy animation. ++ animateOutAndDestroy: function() { ++ if (this._raisedClone) { ++ this._raisedClone.source.opacity = 255; ++ this._raisedClone.destroy(); ++ } ++ ++ this.callParent('animateOutAndDestroy'); ++ }, ++ ++ // For ItemShowLabel ++ _getIconAnimationOffset: function() { ++ if (!Me.settings.get_boolean('animate-appicon-hover')) ++ return 0; ++ ++ let travel = iconAnimationSettings.travel; ++ let zoom = iconAnimationSettings.zoom; ++ return this._dtpPanel.dtpSize * (travel + (zoom - 1) / 2); ++ }, ++ ++ _updateCloneContainerPosition: function(cloneContainer) { ++ let [stageX, stageY] = this.get_transformed_position(); ++ ++ if (Config.PACKAGE_VERSION >= '3.36') ++ cloneContainer.set_position(stageX - this.translation_x, stageY - this.translation_y); ++ else ++ cloneContainer.set_position(stageX, stageY); ++ }, ++ ++ _createRaisedClone: function() { ++ let [width, height] = this.get_transformed_size(); ++ ++ // "clone" of this child (appIcon actor) ++ let cloneButton = this.child._delegate.getCloneButton(); ++ ++ // "clone" of this (taskbarItemContainer) ++ let cloneContainer = new St.Bin({ ++ child: cloneButton, ++ width: width, height: height, ++ reactive: false, ++ }); ++ ++ this._updateCloneContainerPosition(cloneContainer); ++ ++ // For the stretch animation ++ if (Config.PACKAGE_VERSION >= '3.36') { ++ let boundProperty = this._dtpPanel.checkIfVertical() ? 'translation_y' : 'translation_x'; ++ this.bind_property(boundProperty, cloneContainer, boundProperty, GObject.BindingFlags.SYNC_CREATE); ++ } else { ++ let constraint = new CloneContainerConstraint({ source: this }); ++ cloneContainer.add_constraint(constraint); ++ } ++ ++ // The clone follows its source when the taskbar is scrolled. ++ let taskbarScrollView = this.get_parent().get_parent(); ++ let adjustment = this._dtpPanel.checkIfVertical() ? taskbarScrollView.vscroll.get_adjustment() : taskbarScrollView.hscroll.get_adjustment(); ++ let adjustmentChangedId = adjustment.connect('notify::value', () => this._updateCloneContainerPosition(cloneContainer)); ++ ++ // Update clone position when an item is added to / removed from the taskbar. ++ let taskbarBox = this.get_parent(); ++ let taskbarBoxAllocationChangedId = taskbarBox.connect('notify::allocation', () => this._updateCloneContainerPosition(cloneContainer)); ++ ++ // The clone itself ++ this._raisedClone = cloneButton.child; ++ this._raisedClone.connect('destroy', () => { ++ adjustment.disconnect(adjustmentChangedId); ++ taskbarBox.disconnect(taskbarBoxAllocationChangedId); ++ Mainloop.idle_add(() => cloneContainer.destroy()); ++ delete this._raisedClone; ++ }); ++ ++ this._raisedClone.source.opacity = 0; ++ Main.uiGroup.add_actor(cloneContainer); ++ }, ++ ++ // Animate the clone. ++ // AppIcon actors cannot go outside the taskbar so the animation is done with a clone. ++ // If level is zero, the clone is dropped and destroyed. ++ raise: function(level) { ++ if (this._raisedClone) ++ Utils.stopAnimations(this._raisedClone); ++ else if (level) ++ this._createRaisedClone(); ++ else ++ return; ++ ++ let panelPosition = this._dtpPanel.getPosition(); ++ let panelElementPositions = this._dtpPanel.panelManager.panelsElementPositions[this._dtpPanel.monitor.index] || Pos.defaults; ++ let taskbarPosition = panelElementPositions.filter(pos => pos.element == 'taskbar')[0].position; ++ ++ let vertical = panelPosition == St.Side.LEFT || panelPosition == St.Side.RIGHT; ++ let translationDirection = panelPosition == St.Side.TOP || panelPosition == St.Side.LEFT ? 1 : -1; ++ let rotationDirection; ++ if (panelPosition == St.Side.LEFT || taskbarPosition == Pos.STACKED_TL) ++ rotationDirection = -1; ++ else if (panelPosition == St.Side.RIGHT || taskbarPosition == Pos.STACKED_BR) ++ rotationDirection = 1; ++ else { ++ let items = this.get_parent().get_children(); ++ let index = items.indexOf(this); ++ rotationDirection = (index - (items.length - 1) / 2) / ((items.length - 1) / 2); ++ } ++ ++ let duration = iconAnimationSettings.duration / 1000; ++ let rotation = iconAnimationSettings.rotation; ++ let travel = iconAnimationSettings.travel; ++ let zoom = iconAnimationSettings.zoom; ++ ++ // level is about 1 for the icon that is hovered, less for others. ++ // time depends on the translation to do. ++ let [width, height] = this._raisedClone.source.get_transformed_size(); ++ let translationMax = (vertical ? width : height) * (travel + (zoom - 1) / 2); ++ let translationEnd = translationMax * level; ++ let translationDone = vertical ? this._raisedClone.translation_x : this._raisedClone.translation_y; ++ let translationTodo = Math.abs(translationEnd - translationDone); ++ let scale = 1 + (zoom - 1) * level; ++ let rotationAngleZ = rotationDirection * rotation * level; ++ let time = duration * translationTodo / translationMax; ++ ++ let options = { ++ scale_x: scale, scale_y: scale, ++ rotation_angle_z: rotationAngleZ, ++ time: time, ++ transition: 'easeOutQuad', ++ onComplete: () => { ++ if (!level) { ++ this._raisedClone.source.opacity = 255; ++ this._raisedClone.destroy(); ++ delete this._raisedClone; ++ } ++ }, ++ }; ++ options[vertical ? 'translation_x' : 'translation_y'] = translationDirection * translationEnd; ++ ++ Utils.animate(this._raisedClone, options); ++ }, ++ ++ // Animate this and cloneContainer, since cloneContainer translation is bound to this. ++ stretch: function(translation) { ++ let duration = iconAnimationSettings.duration / 1000; ++ let zoom = iconAnimationSettings.zoom; ++ let animatedProperty = this._dtpPanel.checkIfVertical() ? 'translation_y' : 'translation_x'; ++ let isShowing = this.opacity != 255 || this.child.opacity != 255; ++ ++ if (isShowing) { ++ // Do no stop the animation initiated in DashItemContainer.show. ++ this[animatedProperty] = zoom * translation; ++ } else { ++ let options = { ++ time: duration, ++ transition: 'easeOutQuad', ++ }; ++ options[animatedProperty] = zoom * translation; ++ ++ Utils.stopAnimations(this); ++ Utils.animate(this, options); ++ } ++ }, ++}); ++ ++var DragPlaceholderItem = Utils.defineClass({ ++ Name: 'DashToPanel-DragPlaceholderItem', ++ Extends: St.Widget, ++ ++ _init: function(appIcon, iconSize, isVertical) { ++ this.callParent('_init', { style: AppIcons.getIconContainerStyle(isVertical), layout_manager: new Clutter.BinLayout() }); ++ ++ this.child = { _delegate: appIcon }; ++ ++ this._clone = new Clutter.Clone({ ++ source: appIcon.icon._iconBin, ++ width: iconSize, ++ height: iconSize ++ }); ++ ++ this.add_actor(this._clone); ++ }, ++ ++ destroy: function() { ++ this._clone.destroy(); ++ this.callParent('destroy'); ++ }, ++}); ++ ++function getAppStableSequence(app, monitor) { ++ let windows = AppIcons.getInterestingWindows(app, monitor); ++ ++ return windows.reduce((prevWindow, window) => { ++ return Math.min(prevWindow, getWindowStableSequence(window)); ++ }, Infinity); ++} ++ ++function sortWindowsCompareFunction(windowA, windowB) { ++ return getWindowStableSequence(windowA) - getWindowStableSequence(windowB); ++} ++ ++function getWindowStableSequence(window) { ++ return ('_dtpPosition' in window ? window._dtpPosition : window.get_stable_sequence()); ++} +diff --git a/extensions/dash-to-panel/transparency.js b/extensions/dash-to-panel/transparency.js +new file mode 100644 +index 00000000..aa86d7ac +--- /dev/null ++++ b/extensions/dash-to-panel/transparency.js +@@ -0,0 +1,269 @@ ++/* ++ * This file is part of the Dash-To-Panel extension for Gnome 3 ++ * ++ * 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 2 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 Clutter = imports.gi.Clutter; ++const GdkPixbuf = imports.gi.GdkPixbuf; ++const Lang = imports.lang; ++const Main = imports.ui.main; ++const Meta = imports.gi.Meta; ++const St = imports.gi.St; ++ ++const Me = imports.misc.extensionUtils.getCurrentExtension(); ++const Panel = Me.imports.panel; ++const Proximity = Me.imports.proximity; ++const Utils = Me.imports.utils; ++ ++var DynamicTransparency = Utils.defineClass({ ++ Name: 'DashToPanel.DynamicTransparency', ++ ++ _init: function(dtpPanel) { ++ this._dtpPanel = dtpPanel; ++ this._proximityManager = dtpPanel.panelManager.proximityManager; ++ this._proximityWatchId = 0; ++ this._windowOverlap = false; ++ this.currentBackgroundColor = 0; ++ ++ this._initialPanelStyle = dtpPanel.panel.actor.get_style(); ++ ++ if (this._dtpPanel.geom.position == St.Side.TOP) { ++ this._initialPanelCornerStyle = dtpPanel.panel._leftCorner.actor.get_style(); ++ } ++ ++ this._signalsHandler = new Utils.GlobalSignalsHandler(); ++ this._bindSignals(); ++ ++ this._updateAnimationDuration(); ++ this._updateAllAndSet(); ++ this._updateProximityWatch(); ++ }, ++ ++ destroy: function() { ++ this._signalsHandler.destroy(); ++ this._proximityManager.removeWatch(this._proximityWatchId); ++ ++ this._dtpPanel.panel.actor.set_style(this._initialPanelStyle); ++ ++ if (this._dtpPanel.geom.position == St.Side.TOP) { ++ this._dtpPanel.panel._leftCorner.actor.set_style(this._initialPanelCornerStyle); ++ this._dtpPanel.panel._rightCorner.actor.set_style(this._initialPanelCornerStyle); ++ } ++ }, ++ ++ updateExternalStyle: function() { ++ this._updateComplementaryStyles(); ++ this._setBackground(); ++ }, ++ ++ _bindSignals: function() { ++ this._signalsHandler.add( ++ [ ++ Utils.getStageTheme(), ++ 'changed', ++ () => this._updateAllAndSet() ++ ], ++ [ ++ Main.overview, ++ [ ++ 'showing', ++ 'hiding' ++ ], ++ () => this._updateAlphaAndSet() ++ ], ++ [ ++ Me.settings, ++ [ ++ 'changed::trans-use-custom-bg', ++ 'changed::trans-bg-color' ++ ], ++ () => this._updateColorAndSet() ++ ], ++ [ ++ Me.settings, ++ [ ++ 'changed::trans-use-custom-opacity', ++ 'changed::trans-panel-opacity', ++ 'changed::trans-bg-color', ++ 'changed::trans-dynamic-anim-target', ++ 'changed::trans-use-dynamic-opacity' ++ ], ++ () => this._updateAlphaAndSet() ++ ], ++ [ ++ Me.settings, ++ [ ++ 'changed::trans-use-custom-gradient', ++ 'changed::trans-gradient-top-color', ++ 'changed::trans-gradient-bottom-color', ++ 'changed::trans-gradient-top-opacity', ++ 'changed::trans-gradient-bottom-opacity' ++ ], ++ () => this._updateGradientAndSet() ++ ], ++ [ ++ Me.settings, ++ [ ++ 'changed::trans-dynamic-behavior', ++ 'changed::trans-use-dynamic-opacity', ++ 'changed::trans-dynamic-distance' ++ ], ++ () => this._updateProximityWatch() ++ ], ++ [ ++ Me.settings, ++ 'changed::trans-dynamic-anim-time', ++ () => this._updateAnimationDuration() ++ ] ++ ); ++ }, ++ ++ _updateProximityWatch: function() { ++ this._proximityManager.removeWatch(this._proximityWatchId); ++ ++ if (Me.settings.get_boolean('trans-use-dynamic-opacity')) { ++ let isVertical = this._dtpPanel.checkIfVertical(); ++ let threshold = Me.settings.get_int('trans-dynamic-distance'); ++ ++ this._proximityWatchId = this._proximityManager.createWatch( ++ this._dtpPanel.panelBox.get_parent(), ++ Proximity.Mode[Me.settings.get_string('trans-dynamic-behavior')], ++ isVertical ? threshold : 0, ++ isVertical ? 0 : threshold, ++ overlap => { ++ this._windowOverlap = overlap; ++ this._updateAlphaAndSet(); ++ } ++ ); ++ } ++ }, ++ ++ _updateAnimationDuration: function() { ++ this.animationDuration = (Me.settings.get_int('trans-dynamic-anim-time') * 0.001) + 's;'; ++ }, ++ ++ _updateAllAndSet: function() { ++ let themeBackground = this._getThemeBackground(true); ++ ++ this._updateColor(themeBackground); ++ this._updateAlpha(themeBackground); ++ this._updateComplementaryStyles(); ++ this._updateGradient(); ++ this._setBackground(); ++ this._setGradient(); ++ }, ++ ++ _updateColorAndSet: function() { ++ this._updateColor(); ++ this._setBackground(); ++ }, ++ ++ _updateAlphaAndSet: function() { ++ this._updateAlpha(); ++ this._setBackground(); ++ }, ++ ++ _updateGradientAndSet: function() { ++ this._updateGradient(); ++ this._setGradient(); ++ }, ++ ++ _updateComplementaryStyles: function() { ++ let panelThemeNode = this._dtpPanel.panel.actor.get_theme_node(); ++ ++ this._complementaryStyles = 'border-radius: ' + panelThemeNode.get_border_radius(0) + 'px;'; ++ }, ++ ++ _updateColor: function(themeBackground) { ++ this.backgroundColorRgb = Me.settings.get_boolean('trans-use-custom-bg') ? ++ Me.settings.get_string('trans-bg-color') : ++ (themeBackground || this._getThemeBackground()); ++ }, ++ ++ _updateAlpha: function(themeBackground) { ++ if (this._windowOverlap && !Main.overview.visibleTarget && Me.settings.get_boolean('trans-use-dynamic-opacity')) { ++ this.alpha = Me.settings.get_double('trans-dynamic-anim-target'); ++ } else { ++ this.alpha = Me.settings.get_boolean('trans-use-custom-opacity') ? ++ Me.settings.get_double('trans-panel-opacity') : ++ (themeBackground || this._getThemeBackground()).alpha * 0.003921569; // 1 / 255 = 0.003921569 ++ } ++ }, ++ ++ _updateGradient: function() { ++ this._gradientStyle = ''; ++ ++ if (Me.settings.get_boolean('trans-use-custom-gradient')) { ++ this._gradientStyle += 'background-gradient-direction: ' + (this._dtpPanel.checkIfVertical() ? 'horizontal;' : 'vertical;') + ++ 'background-gradient-start: ' + Utils.getrgbaColor(Me.settings.get_string('trans-gradient-top-color'), ++ Me.settings.get_double('trans-gradient-top-opacity')) + ++ 'background-gradient-end: ' + Utils.getrgbaColor(Me.settings.get_string('trans-gradient-bottom-color'), ++ Me.settings.get_double('trans-gradient-bottom-opacity')); ++ } ++ }, ++ ++ _setBackground: function() { ++ this.currentBackgroundColor = Utils.getrgbaColor(this.backgroundColorRgb, this.alpha); ++ ++ let transition = 'transition-duration:' + this.animationDuration; ++ let cornerStyle = '-panel-corner-background-color: ' + this.currentBackgroundColor + transition; ++ ++ this._dtpPanel.set_style('background-color: ' + this.currentBackgroundColor + transition + this._complementaryStyles); ++ ++ if (this._dtpPanel.geom.position == St.Side.TOP) { ++ this._dtpPanel.panel._leftCorner.actor.set_style(cornerStyle); ++ this._dtpPanel.panel._rightCorner.actor.set_style(cornerStyle); ++ } ++ }, ++ ++ _setGradient: function() { ++ this._dtpPanel.panel.actor.set_style( ++ 'background: none; ' + ++ 'border-image: none; ' + ++ 'background-image: none; ' + ++ this._gradientStyle + ++ 'transition-duration:' + this.animationDuration ++ ); ++ }, ++ ++ _getThemeBackground: function(reload) { ++ if (reload || !this._themeBackground) { ++ let fakePanel = new St.Bin({ name: 'panel' }); ++ Main.uiGroup.add_child(fakePanel); ++ let fakeTheme = fakePanel.get_theme_node() ++ this._themeBackground = this._getBackgroundImageColor(fakeTheme) || fakeTheme.get_background_color(); ++ Main.uiGroup.remove_child(fakePanel); ++ } ++ ++ return this._themeBackground; ++ }, ++ ++ _getBackgroundImageColor: function(theme) { ++ let bg = null; ++ ++ try { ++ let imageFile = theme.get_background_image() || theme.get_border_image().get_file(); ++ ++ if (imageFile) { ++ let imageBuf = GdkPixbuf.Pixbuf.new_from_file(imageFile.get_path()); ++ let pixels = imageBuf.get_pixels(); ++ ++ bg = { red: pixels[0], green: pixels[1], blue: pixels[2], alpha: pixels[3] }; ++ } ++ } catch (error) {} ++ ++ return bg; ++ } ++}); +\ No newline at end of file +diff --git a/extensions/dash-to-panel/utils.js b/extensions/dash-to-panel/utils.js +new file mode 100644 +index 00000000..d90d2cc9 +--- /dev/null ++++ b/extensions/dash-to-panel/utils.js +@@ -0,0 +1,1040 @@ ++/* ++ * This file is part of the Dash-To-Panel extension for Gnome 3 ++ * ++ * 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 2 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 . ++ * ++ * ++ * Credits: ++ * This file is based on code from the Dash to Dock extension by micheleg ++ * and code from the Taskbar extension by Zorin OS ++ * Some code was also adapted from the upstream Gnome Shell source code. ++ */ ++ ++const Clutter = imports.gi.Clutter; ++const Config = imports.misc.config; ++const GdkPixbuf = imports.gi.GdkPixbuf; ++const Gi = imports._gi; ++const Gio = imports.gi.Gio; ++const GLib = imports.gi.GLib; ++const GObject = imports.gi.GObject; ++const Gtk = imports.gi.Gtk; ++const Meta = imports.gi.Meta; ++const Shell = imports.gi.Shell; ++const St = imports.gi.St; ++const Mainloop = imports.mainloop; ++const Main = imports.ui.main; ++const MessageTray = imports.ui.messageTray; ++const Util = imports.misc.util; ++ ++var TRANSLATION_DOMAIN = imports.misc.extensionUtils.getCurrentExtension().metadata['gettext-domain']; ++var SCROLL_TIME = Util.SCROLL_TIME / (Util.SCROLL_TIME > 1 ? 1000 : 1); ++ ++//Clutter implicit animations are available since 3.34 ++//prefer those over Tweener if available ++if (Config.PACKAGE_VERSION < '3.34') { ++ var Tweener = imports.ui.tweener; ++} ++ ++var defineClass = function (classDef) { ++ let parentProto = classDef.Extends ? classDef.Extends.prototype : null; ++ ++ if (Config.PACKAGE_VERSION < '3.31.9') { ++ if (parentProto && (classDef.Extends.name || classDef.Extends.toString()).indexOf('DashToPanel.') < 0) { ++ classDef.callParent = function() { ++ let args = Array.prototype.slice.call(arguments); ++ let func = args.shift(); ++ ++ classDef.Extends.prototype[func].apply(this, args); ++ }; ++ } ++ ++ return new imports.lang.Class(classDef); ++ } ++ ++ let isGObject = parentProto instanceof GObject.Object; ++ let needsSuper = parentProto && !isGObject; ++ let getParentArgs = function(args) { ++ let parentArgs = []; ++ ++ (classDef.ParentConstrParams || parentArgs).forEach(p => { ++ if (p.constructor === Array) { ++ let param = args[p[0]]; ++ ++ parentArgs.push(p[1] ? param[p[1]] : param); ++ } else { ++ parentArgs.push(p); ++ } ++ }); ++ ++ return parentArgs; ++ }; ++ ++ let C = eval( ++ '(class C ' + (needsSuper ? 'extends Object' : '') + ' { ' + ++ ' constructor(...args) { ' + ++ (needsSuper ? 'super(...getParentArgs(args));' : '') + ++ (needsSuper || !parentProto ? 'this._init(...args);' : '') + ++ ' }' + ++ ' callParent(...args) { ' + ++ ' let func = args.shift(); ' + ++ ' if (!(func === \'_init\' && needsSuper))' + ++ ' super[func](...args); ' + ++ ' }' + ++ '})' ++ ); ++ ++ if (parentProto) { ++ Object.setPrototypeOf(C.prototype, parentProto); ++ Object.setPrototypeOf(C, classDef.Extends); ++ } ++ ++ Object.defineProperty(C, 'name', { value: classDef.Name }); ++ Object.keys(classDef) ++ .filter(k => classDef.hasOwnProperty(k) && classDef[k] instanceof Function) ++ .forEach(k => C.prototype[k] = classDef[k]); ++ ++ if (isGObject) { ++ C = GObject.registerClass({ Signals: classDef.Signals || {} }, C); ++ } ++ ++ return C; ++}; ++ ++// simplify global signals and function injections handling ++// abstract class ++var BasicHandler = defineClass({ ++ Name: 'DashToPanel.BasicHandler', ++ ++ _init: function(){ ++ this._storage = new Object(); ++ }, ++ ++ add: function(/*unlimited 3-long array arguments*/){ ++ ++ // convert arguments object to array, concatenate with generic ++ let args = [].concat('generic', [].slice.call(arguments)); ++ // call addWithLabel with ags as if they were passed arguments ++ this.addWithLabel.apply(this, args); ++ }, ++ ++ destroy: function() { ++ for( let label in this._storage ) ++ this.removeWithLabel(label); ++ }, ++ ++ addWithLabel: function( label /* plus unlimited 3-long array arguments*/) { ++ ++ if(this._storage[label] == undefined) ++ this._storage[label] = new Array(); ++ ++ // skip first element of the arguments ++ for( let i = 1; i < arguments.length; i++ ) { ++ let item = this._storage[label]; ++ let handlers = this._create(arguments[i]); ++ ++ for (let j = 0, l = handlers.length; j < l; ++j) { ++ item.push(handlers[j]); ++ } ++ } ++ ++ }, ++ ++ removeWithLabel: function(label){ ++ ++ if(this._storage[label]) { ++ for( let i = 0; i < this._storage[label].length; i++ ) { ++ this._remove(this._storage[label][i]); ++ } ++ ++ delete this._storage[label]; ++ } ++ }, ++ ++ /* Virtual methods to be implemented by subclass */ ++ // create single element to be stored in the storage structure ++ _create: function(item){ ++ throw new Error('no implementation of _create in ' + this); ++ }, ++ ++ // correctly delete single element ++ _remove: function(item){ ++ throw new Error('no implementation of _remove in ' + this); ++ } ++}); ++ ++// Manage global signals ++var GlobalSignalsHandler = defineClass({ ++ Name: 'DashToPanel.GlobalSignalsHandler', ++ Extends: BasicHandler, ++ ++ _create: function(item) { ++ let handlers = []; ++ ++ item[1] = [].concat(item[1]); ++ ++ for (let i = 0, l = item[1].length; i < l; ++i) { ++ let object = item[0]; ++ let event = item[1][i]; ++ let callback = item[2] ++ try { ++ let id = object.connect(event, callback); ++ ++ handlers.push([object, id]); ++ } catch (e) ++ { ++ ++ } ++ } ++ ++ return handlers; ++ }, ++ ++ _remove: function(item){ ++ item[0].disconnect(item[1]); ++ } ++}); ++ ++/** ++ * Manage function injection: both instances and prototype can be overridden ++ * and restored ++ */ ++var InjectionsHandler = defineClass({ ++ Name: 'DashToPanel.InjectionsHandler', ++ Extends: BasicHandler, ++ ++ _create: function(item) { ++ let object = item[0]; ++ let name = item[1]; ++ let injectedFunction = item[2]; ++ let original = object[name]; ++ ++ object[name] = injectedFunction; ++ return [[object, name, injectedFunction, original]]; ++ }, ++ ++ _remove: function(item) { ++ let object = item[0]; ++ let name = item[1]; ++ let original = item[3]; ++ object[name] = original; ++ } ++}); ++ ++/** ++ * Manage timeouts: the added timeouts have their id reset on completion ++ */ ++var TimeoutsHandler = defineClass({ ++ Name: 'DashToPanel.TimeoutsHandler', ++ Extends: BasicHandler, ++ ++ _create: function(item) { ++ let name = item[0]; ++ let delay = item[1]; ++ let timeoutHandler = item[2]; ++ ++ this._remove(item); ++ ++ this[name] = Mainloop.timeout_add(delay, () => { ++ this[name] = 0; ++ timeoutHandler(); ++ }); ++ ++ return [[name]]; ++ }, ++ ++ remove: function(name) { ++ this._remove([name]) ++ }, ++ ++ _remove: function(item) { ++ let name = item[0]; ++ ++ if (this[name]) { ++ Mainloop.source_remove(this[name]); ++ this[name] = 0; ++ } ++ }, ++ ++ getId: function(name) { ++ return this[name] ? this[name] : 0; ++ } ++}); ++ ++// This is wrapper to maintain compatibility with GNOME-Shell 3.30+ as well as ++// previous versions. ++var DisplayWrapper = { ++ getScreen: function() { ++ return global.screen || global.display; ++ }, ++ ++ getWorkspaceManager: function() { ++ return global.screen || global.workspace_manager; ++ }, ++ ++ getMonitorManager: function() { ++ return global.screen || Meta.MonitorManager.get(); ++ } ++}; ++ ++var getCurrentWorkspace = function() { ++ return DisplayWrapper.getWorkspaceManager().get_active_workspace(); ++}; ++ ++var getWorkspaceByIndex = function(index) { ++ return DisplayWrapper.getWorkspaceManager().get_workspace_by_index(index); ++}; ++ ++var getWorkspaceCount = function() { ++ return DisplayWrapper.getWorkspaceManager().n_workspaces; ++}; ++ ++var getStageTheme = function() { ++ return St.ThemeContext.get_for_stage(global.stage); ++}; ++ ++var getScaleFactor = function() { ++ return getStageTheme().scale_factor || 1; ++}; ++ ++var getAppDisplayViews = function() { ++ //gnome-shell 3.38 only has one view and it is now the appDisplay ++ return imports.ui.appDisplay._views || [{ view: imports.ui.appDisplay }]; ++}; ++ ++var findIndex = function(array, predicate) { ++ if (Array.prototype.findIndex) { ++ return array.findIndex(predicate); ++ } ++ ++ for (let i = 0, l = array.length; i < l; ++i) { ++ if (predicate(array[i])) { ++ return i; ++ } ++ } ++ ++ return -1; ++}; ++ ++var find = function(array, predicate) { ++ let index = findIndex(array, predicate); ++ ++ if (index > -1) { ++ return array[index]; ++ } ++}; ++ ++var mergeObjects = function(main, bck) { ++ for (var prop in bck) { ++ if (!main.hasOwnProperty(prop) && bck.hasOwnProperty(prop)) { ++ main[prop] = bck[prop]; ++ } ++ } ++ ++ return main; ++}; ++ ++var hookVfunc = function(proto, symbol, func) { ++ if (Gi.hook_up_vfunc_symbol && func) { ++ //gjs > 1.53.3 ++ proto[Gi.hook_up_vfunc_symbol](symbol, func); ++ } else { ++ //On older gjs, this is how to hook vfunc. It is buggy and can't be used reliably to replace ++ //already hooked functions. Since it's our only use for it, disabled for now (and probably forever) ++ //Gi.hook_up_vfunc(proto, symbol, func); ++ } ++}; ++ ++var wrapActor = function(actor) { ++ if (actor) { ++ Object.defineProperty(actor, 'actor', { ++ value: actor instanceof Clutter.Actor ? actor : actor.actor ++ }); ++ } ++}; ++ ++var getTransformedAllocation = function(actor) { ++ if (Config.PACKAGE_VERSION < '3.37') { ++ return Shell.util_get_transformed_allocation(actor); ++ } ++ ++ let extents = actor.get_transformed_extents(); ++ let topLeft = extents.get_top_left(); ++ let bottomRight = extents.get_bottom_right(); ++ ++ return { x1: topLeft.x, x2: bottomRight.x, y1: topLeft.y, y2: bottomRight.y }; ++}; ++ ++var allocate = function(actor, box, flags, useParent) { ++ let allocateObj = useParent ? actor.__proto__ : actor; ++ ++ allocateObj.allocate.apply(actor, getAllocationParams(box, flags)); ++}; ++ ++var setAllocation = function(actor, box, flags) { ++ actor.set_allocation.apply(actor, getAllocationParams(box, flags)); ++}; ++ ++var getAllocationParams = function(box, flags) { ++ let params = [box]; ++ ++ if (Config.PACKAGE_VERSION < '3.37') { ++ params.push(flags); ++ } ++ ++ return params; ++}; ++ ++var setClip = function(actor, x, y, width, height) { ++ actor.set_clip(0, 0, width, height); ++ actor.set_position(x, y); ++ actor.set_size(width, height); ++}; ++ ++var addKeybinding = function(key, settings, handler, modes) { ++ if (!Main.wm._allowedKeybindings[key]) { ++ Main.wm.addKeybinding( ++ key, ++ settings, ++ Meta.KeyBindingFlags.NONE, ++ modes || (Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW), ++ handler ++ ); ++ } ++}; ++ ++var removeKeybinding = function(key) { ++ if (Main.wm._allowedKeybindings[key]) { ++ Main.wm.removeKeybinding(key); ++ } ++}; ++ ++var getrgbColor = function(color) { ++ color = typeof color === 'string' ? Clutter.color_from_string(color)[1] : color; ++ ++ return { red: color.red, green: color.green, blue: color.blue }; ++}; ++ ++var getrgbaColor = function(color, alpha, offset) { ++ if (alpha <= 0) { ++ return 'transparent; '; ++ } ++ ++ let rgb = getrgbColor(color); ++ ++ if (offset) { ++ ['red', 'green', 'blue'].forEach(k => { ++ rgb[k] = Math.min(255, Math.max(0, rgb[k] + offset)); ++ ++ if (rgb[k] == color[k]) { ++ rgb[k] = Math.min(255, Math.max(0, rgb[k] - offset)); ++ } ++ }); ++ } ++ ++ return 'rgba(' + rgb.red + ',' + rgb.green + ',' + rgb.blue + ',' + (Math.floor(alpha * 100) * 0.01) + '); ' ; ++}; ++ ++var checkIfColorIsBright = function(color) { ++ let rgb = getrgbColor(color); ++ let brightness = 0.2126 * rgb.red + 0.7152 * rgb.green + 0.0722 * rgb.blue; ++ ++ return brightness > 128; ++}; ++ ++var getMouseScrollDirection = function(event) { ++ let direction; ++ ++ switch (event.get_scroll_direction()) { ++ case Clutter.ScrollDirection.UP: ++ case Clutter.ScrollDirection.LEFT: ++ direction = 'up'; ++ break; ++ case Clutter.ScrollDirection.DOWN: ++ case Clutter.ScrollDirection.RIGHT: ++ direction = 'down'; ++ break; ++ } ++ ++ return direction; ++}; ++ ++var checkIfWindowHasTransient = function(window) { ++ let hasTransient; ++ ++ window.foreach_transient(t => !(hasTransient = true)); ++ ++ return hasTransient; ++}; ++ ++var activateSiblingWindow = function(windows, direction, startWindow) { ++ let windowIndex = windows.indexOf(global.display.focus_window); ++ let nextWindowIndex = windowIndex < 0 ? ++ startWindow ? windows.indexOf(startWindow) : 0 : ++ windowIndex + (direction == 'up' ? 1 : -1); ++ ++ if (nextWindowIndex == windows.length) { ++ nextWindowIndex = 0; ++ } else if (nextWindowIndex < 0) { ++ nextWindowIndex = windows.length - 1; ++ } ++ ++ if (windowIndex != nextWindowIndex) { ++ Main.activateWindow(windows[nextWindowIndex]); ++ } ++}; ++ ++var animateWindowOpacity = function(window, tweenOpts) { ++ //there currently is a mutter bug with the windowactor opacity, starting with 3.34 ++ //https://gitlab.gnome.org/GNOME/mutter/issues/836 ++ ++ if (Config.PACKAGE_VERSION > '3.35') { ++ //on 3.36, a workaround is to use the windowactor's child for the fade animation ++ //this leaves a "shadow" on the desktop, so the windowactor needs to be hidden ++ //when the animation is complete ++ let visible = tweenOpts.opacity > 0; ++ let windowActor = window; ++ ++ window = windowActor.get_first_child() || windowActor; ++ ++ if (!windowActor.visible && visible) { ++ window.opacity = 0; ++ windowActor.visible = visible; ++ } ++ ++ if (!visible) { ++ let initialOpacity = window.opacity; ++ ++ tweenOpts.onComplete = () => { ++ windowActor.visible = visible; ++ window.opacity = initialOpacity; ++ }; ++ } ++ } else if (Config.PACKAGE_VERSION > '3.33') { ++ //the workaround only works on 3.35+, so on 3.34, let's just hide the ++ //window without animation ++ return window.visible = (tweenOpts.opacity == 255); ++ } ++ ++ animate(window, tweenOpts); ++}; ++ ++var animate = function(actor, options) { ++ if (Tweener) { ++ return Tweener.addTween(actor, options); ++ } ++ ++ //to support both Tweener and Clutter animations, we use Tweener "time" ++ //and "delay" properties defined in seconds, as opposed to Clutter animations ++ //"duration" and "delay" which are defined in milliseconds ++ if (options.delay) { ++ options.delay = options.delay * 1000; ++ } ++ ++ options.duration = options.time * 1000; ++ delete options.time; ++ ++ if (options.transition) { ++ //map Tweener easing equations to Clutter animation modes ++ options.mode = { ++ 'easeInCubic': Clutter.AnimationMode.EASE_IN_CUBIC, ++ 'easeInOutCubic': Clutter.AnimationMode.EASE_IN_OUT_CUBIC, ++ 'easeInOutQuad': Clutter.AnimationMode.EASE_IN_OUT_QUAD, ++ 'easeOutQuad': Clutter.AnimationMode.EASE_OUT_QUAD ++ }[options.transition] || Clutter.AnimationMode.LINEAR; ++ ++ delete options.transition; ++ } ++ ++ let params = [options]; ++ ++ if ('value' in options && actor instanceof St.Adjustment) { ++ params.unshift(options.value); ++ delete options.value; ++ } ++ ++ actor.ease.apply(actor, params); ++} ++ ++var isAnimating = function(actor, prop) { ++ if (Tweener) { ++ return Tweener.isTweening(actor); ++ } ++ ++ return !!actor.get_transition(prop); ++} ++ ++var stopAnimations = function(actor) { ++ if (Tweener) { ++ return Tweener.removeTweens(actor); ++ } ++ ++ actor.remove_all_transitions(); ++} ++ ++var getIndicators = function(delegate) { ++ if (delegate instanceof St.BoxLayout) { ++ return delegate; ++ } ++ ++ return delegate.indicators; ++} ++ ++var getPoint = function(coords) { ++ if (Config.PACKAGE_VERSION > '3.35.1') { ++ return new imports.gi.Graphene.Point(coords); ++ } ++ ++ return new Clutter.Point(coords); ++} ++ ++var getPanelGhost = function() { ++ if (!Main.overview._panelGhost) { ++ return Main.overview._overview.get_first_child(); ++ } ++ ++ return Main.overview._panelGhost; ++} ++ ++var notify = function(text, iconName, action, isTransient) { ++ let source = new MessageTray.SystemNotificationSource(); ++ let notification = new MessageTray.Notification(source, 'Dash to Panel', text); ++ let notifyFunc = source.showNotification || source.notify; ++ ++ if (iconName) { ++ source.createIcon = function() { ++ return new St.Icon({ icon_name: iconName }); ++ }; ++ } ++ ++ if (action) { ++ if (!(action instanceof Array)) { ++ action = [action]; ++ } ++ ++ action.forEach(a => notification.addAction(a.text, a.func)); ++ } ++ ++ Main.messageTray.add(source); ++ ++ notification.setTransient(isTransient); ++ notifyFunc.call(source, notification); ++}; ++ ++/* ++ * This is a copy of the same function in utils.js, but also adjust horizontal scrolling ++ * and perform few further cheks on the current value to avoid changing the values when ++ * it would be clamp to the current one in any case. ++ * Return the amount of shift applied ++*/ ++var ensureActorVisibleInScrollView = function(scrollView, actor, fadeSize, onComplete) { ++ let vadjustment = scrollView.vscroll.adjustment; ++ let hadjustment = scrollView.hscroll.adjustment; ++ let [vvalue, vlower, vupper, vstepIncrement, vpageIncrement, vpageSize] = vadjustment.get_values(); ++ let [hvalue, hlower, hupper, hstepIncrement, hpageIncrement, hpageSize] = hadjustment.get_values(); ++ ++ let [hvalue0, vvalue0] = [hvalue, vvalue]; ++ ++ let voffset = fadeSize; ++ let hoffset = fadeSize; ++ ++ let box = actor.get_allocation_box(); ++ let y1 = box.y1, y2 = box.y2, x1 = box.x1, x2 = box.x2; ++ ++ let parent = actor.get_parent(); ++ while (parent != scrollView) { ++ if (!parent) ++ throw new Error("actor not in scroll view"); ++ ++ let box = parent.get_allocation_box(); ++ y1 += box.y1; ++ y2 += box.y1; ++ x1 += box.x1; ++ x2 += box.x1; ++ parent = parent.get_parent(); ++ } ++ ++ if (y1 < vvalue + voffset) ++ vvalue = Math.max(0, y1 - voffset); ++ else if (vvalue < vupper - vpageSize && y2 > vvalue + vpageSize - voffset) ++ vvalue = Math.min(vupper -vpageSize, y2 + voffset - vpageSize); ++ ++ if (x1 < hvalue + hoffset) ++ hvalue = Math.max(0, x1 - hoffset); ++ else if (hvalue < hupper - hpageSize && x2 > hvalue + hpageSize - hoffset) ++ hvalue = Math.min(hupper - hpageSize, x2 + hoffset - hpageSize); ++ ++ let tweenOpts = { ++ time: SCROLL_TIME, ++ onComplete: onComplete || (() => {}), ++ transition: 'easeOutQuad' ++ }; ++ ++ if (vvalue !== vvalue0) { ++ animate(vadjustment, mergeObjects(tweenOpts, { value: vvalue })); ++ } ++ ++ if (hvalue !== hvalue0) { ++ animate(hadjustment, mergeObjects(tweenOpts, { value: hvalue })); ++ } ++ ++ return [hvalue- hvalue0, vvalue - vvalue0]; ++} ++ ++/** ++ * ColorUtils is adapted from https://github.com/micheleg/dash-to-dock ++ */ ++var ColorUtils = { ++ colorLuminance: function(r, g, b, dlum) { ++ // Darken or brighten color by a fraction dlum ++ // Each rgb value is modified by the same fraction. ++ // Return "#rrggbb" strin ++ ++ let rgbString = '#'; ++ ++ rgbString += ColorUtils._decimalToHex(Math.round(Math.min(Math.max(r*(1+dlum), 0), 255)), 2); ++ rgbString += ColorUtils._decimalToHex(Math.round(Math.min(Math.max(g*(1+dlum), 0), 255)), 2); ++ rgbString += ColorUtils._decimalToHex(Math.round(Math.min(Math.max(b*(1+dlum), 0), 255)), 2); ++ ++ return rgbString; ++ }, ++ ++ _decimalToHex: function(d, padding) { ++ // Convert decimal to an hexadecimal string adding the desired padding ++ ++ let hex = d.toString(16); ++ while (hex.length < padding) ++ hex = '0'+ hex; ++ return hex; ++ }, ++ ++ HSVtoRGB: function(h, s, v) { ++ // Convert hsv ([0-1, 0-1, 0-1]) to rgb ([0-255, 0-255, 0-255]). ++ // Following algorithm in https://en.wikipedia.org/wiki/HSL_and_HSV ++ // here with h = [0,1] instead of [0, 360] ++ // Accept either (h,s,v) independently or {h:h, s:s, v:v} object. ++ // Return {r:r, g:g, b:b} object. ++ ++ if (arguments.length === 1) { ++ s = h.s; ++ v = h.v; ++ h = h.h; ++ } ++ ++ let r,g,b; ++ let c = v*s; ++ let h1 = h*6; ++ let x = c*(1 - Math.abs(h1 % 2 - 1)); ++ let m = v - c; ++ ++ if (h1 <=1) ++ r = c + m, g = x + m, b = m; ++ else if (h1 <=2) ++ r = x + m, g = c + m, b = m; ++ else if (h1 <=3) ++ r = m, g = c + m, b = x + m; ++ else if (h1 <=4) ++ r = m, g = x + m, b = c + m; ++ else if (h1 <=5) ++ r = x + m, g = m, b = c + m; ++ else ++ r = c + m, g = m, b = x + m; ++ ++ return { ++ r: Math.round(r * 255), ++ g: Math.round(g * 255), ++ b: Math.round(b * 255) ++ }; ++ }, ++ ++ RGBtoHSV: function(r, g, b) { ++ // Convert rgb ([0-255, 0-255, 0-255]) to hsv ([0-1, 0-1, 0-1]). ++ // Following algorithm in https://en.wikipedia.org/wiki/HSL_and_HSV ++ // here with h = [0,1] instead of [0, 360] ++ // Accept either (r,g,b) independently or {r:r, g:g, b:b} object. ++ // Return {h:h, s:s, v:v} object. ++ ++ if (arguments.length === 1) { ++ r = r.r; ++ g = r.g; ++ b = r.b; ++ } ++ ++ let h,s,v; ++ ++ let M = Math.max(r, g, b); ++ let m = Math.min(r, g, b); ++ let c = M - m; ++ ++ if (c == 0) ++ h = 0; ++ else if (M == r) ++ h = ((g-b)/c) % 6; ++ else if (M == g) ++ h = (b-r)/c + 2; ++ else ++ h = (r-g)/c + 4; ++ ++ h = h/6; ++ v = M/255; ++ if (M !== 0) ++ s = c/M; ++ else ++ s = 0; ++ ++ return {h: h, s: s, v: v}; ++ } ++}; ++ ++/** ++ * DominantColorExtractor is adapted from https://github.com/micheleg/dash-to-dock ++ */ ++let themeLoader = null; ++let iconCacheMap = new Map(); ++const MAX_CACHED_ITEMS = 1000; ++const BATCH_SIZE_TO_DELETE = 50; ++const DOMINANT_COLOR_ICON_SIZE = 64; ++ ++var DominantColorExtractor = defineClass({ ++ Name: 'DashToPanel.DominantColorExtractor', ++ ++ _init: function(app){ ++ this._app = app; ++ }, ++ ++ /** ++ * Try to get the pixel buffer for the current icon, if not fail gracefully ++ */ ++ _getIconPixBuf: function() { ++ let iconTexture = this._app.create_icon_texture(16); ++ ++ if (themeLoader === null) { ++ let ifaceSettings = new Gio.Settings({ schema: "org.gnome.desktop.interface" }); ++ ++ themeLoader = new Gtk.IconTheme(), ++ themeLoader.set_custom_theme(ifaceSettings.get_string('icon-theme')); // Make sure the correct theme is loaded ++ } ++ ++ // Unable to load the icon texture, use fallback ++ if (iconTexture instanceof St.Icon === false) { ++ return null; ++ } ++ ++ iconTexture = iconTexture.get_gicon(); ++ ++ // Unable to load the icon texture, use fallback ++ if (iconTexture === null) { ++ return null; ++ } ++ ++ if (iconTexture instanceof Gio.FileIcon) { ++ // Use GdkPixBuf to load the pixel buffer from the provided file path ++ return GdkPixbuf.Pixbuf.new_from_file(iconTexture.get_file().get_path()); ++ } ++ ++ // Get the pixel buffer from the icon theme ++ let icon_info = themeLoader.lookup_icon(iconTexture.get_names()[0], DOMINANT_COLOR_ICON_SIZE, 0); ++ if (icon_info !== null) ++ return icon_info.load_icon(); ++ else ++ return null; ++ }, ++ ++ /** ++ * The backlight color choosing algorithm was mostly ported to javascript from the ++ * Unity7 C++ source of Canonicals: ++ * https://bazaar.launchpad.net/~unity-team/unity/trunk/view/head:/launcher/LauncherIcon.cpp ++ * so it more or less works the same way. ++ */ ++ _getColorPalette: function() { ++ if (iconCacheMap.get(this._app.get_id())) { ++ // We already know the answer ++ return iconCacheMap.get(this._app.get_id()); ++ } ++ ++ let pixBuf = this._getIconPixBuf(); ++ if (pixBuf == null) ++ return null; ++ ++ let pixels = pixBuf.get_pixels(), ++ offset = 0; ++ ++ let total = 0, ++ rTotal = 0, ++ gTotal = 0, ++ bTotal = 0; ++ ++ let resample_y = 1, ++ resample_x = 1; ++ ++ // Resampling of large icons ++ // We resample icons larger than twice the desired size, as the resampling ++ // to a size s ++ // DOMINANT_COLOR_ICON_SIZE < s < 2*DOMINANT_COLOR_ICON_SIZE, ++ // most of the case exactly DOMINANT_COLOR_ICON_SIZE as the icon size is tipycally ++ // a multiple of it. ++ let width = pixBuf.get_width(); ++ let height = pixBuf.get_height(); ++ ++ // Resample ++ if (height >= 2* DOMINANT_COLOR_ICON_SIZE) ++ resample_y = Math.floor(height/DOMINANT_COLOR_ICON_SIZE); ++ ++ if (width >= 2* DOMINANT_COLOR_ICON_SIZE) ++ resample_x = Math.floor(width/DOMINANT_COLOR_ICON_SIZE); ++ ++ if (resample_x !==1 || resample_y !== 1) ++ pixels = this._resamplePixels(pixels, resample_x, resample_y); ++ ++ // computing the limit outside the for (where it would be repeated at each iteration) ++ // for performance reasons ++ let limit = pixels.length; ++ for (let offset = 0; offset < limit; offset+=4) { ++ let r = pixels[offset], ++ g = pixels[offset + 1], ++ b = pixels[offset + 2], ++ a = pixels[offset + 3]; ++ ++ let saturation = (Math.max(r,g, b) - Math.min(r,g, b)); ++ let relevance = 0.1 * 255 * 255 + 0.9 * a * saturation; ++ ++ rTotal += r * relevance; ++ gTotal += g * relevance; ++ bTotal += b * relevance; ++ ++ total += relevance; ++ } ++ ++ total = total * 255; ++ ++ let r = rTotal / total, ++ g = gTotal / total, ++ b = bTotal / total; ++ ++ let hsv = ColorUtils.RGBtoHSV(r * 255, g * 255, b * 255); ++ ++ if (hsv.s > 0.15) ++ hsv.s = 0.65; ++ hsv.v = 0.90; ++ ++ let rgb = ColorUtils.HSVtoRGB(hsv.h, hsv.s, hsv.v); ++ ++ // Cache the result. ++ let backgroundColor = { ++ lighter: ColorUtils.colorLuminance(rgb.r, rgb.g, rgb.b, 0.2), ++ original: ColorUtils.colorLuminance(rgb.r, rgb.g, rgb.b, 0), ++ darker: ColorUtils.colorLuminance(rgb.r, rgb.g, rgb.b, -0.5) ++ }; ++ ++ if (iconCacheMap.size >= MAX_CACHED_ITEMS) { ++ //delete oldest cached values (which are in order of insertions) ++ let ctr=0; ++ for (let key of iconCacheMap.keys()) { ++ if (++ctr > BATCH_SIZE_TO_DELETE) ++ break; ++ iconCacheMap.delete(key); ++ } ++ } ++ ++ iconCacheMap.set(this._app.get_id(), backgroundColor); ++ ++ return backgroundColor; ++ }, ++ ++ /** ++ * Downsample large icons before scanning for the backlight color to ++ * improve performance. ++ * ++ * @param pixBuf ++ * @param pixels ++ * @param resampleX ++ * @param resampleY ++ * ++ * @return []; ++ */ ++ _resamplePixels: function (pixels, resampleX, resampleY) { ++ let resampledPixels = []; ++ // computing the limit outside the for (where it would be repeated at each iteration) ++ // for performance reasons ++ let limit = pixels.length / (resampleX * resampleY) / 4; ++ for (let i = 0; i < limit; i++) { ++ let pixel = i * resampleX * resampleY; ++ ++ resampledPixels.push(pixels[pixel * 4]); ++ resampledPixels.push(pixels[pixel * 4 + 1]); ++ resampledPixels.push(pixels[pixel * 4 + 2]); ++ resampledPixels.push(pixels[pixel * 4 + 3]); ++ } ++ ++ return resampledPixels; ++ } ++ ++}); ++ ++var drawRoundedLine = function(cr, x, y, width, height, isRoundLeft, isRoundRight, stroke, fill) { ++ if (height > width) { ++ y += Math.floor((height - width) / 2.0); ++ height = width; ++ } ++ ++ height = 2.0 * Math.floor(height / 2.0); ++ ++ var leftRadius = isRoundLeft ? height / 2.0 : 0.0; ++ var rightRadius = isRoundRight ? height / 2.0 : 0.0; ++ ++ cr.moveTo(x + width - rightRadius, y); ++ cr.lineTo(x + leftRadius, y); ++ if (isRoundLeft) ++ cr.arcNegative(x + leftRadius, y + leftRadius, leftRadius, -Math.PI/2, Math.PI/2); ++ else ++ cr.lineTo(x, y + height); ++ cr.lineTo(x + width - rightRadius, y + height); ++ if (isRoundRight) ++ cr.arcNegative(x + width - rightRadius, y + rightRadius, rightRadius, Math.PI/2, -Math.PI/2); ++ else ++ cr.lineTo(x + width, y); ++ cr.closePath(); ++ ++ if (fill != null) { ++ cr.setSource(fill); ++ cr.fillPreserve(); ++ } ++ if (stroke != null) ++ cr.setSource(stroke); ++ cr.stroke(); ++} ++ ++/** ++ * Check if an app exists in the system. ++ */ ++var checkedCommandsMap = new Map(); ++ ++function checkIfCommandExists(app) { ++ let answer = checkedCommandsMap.get(app); ++ if (answer === undefined) { ++ // Command is a shell built in, use shell to call it. ++ // Quotes around app value are important. They let command operate ++ // on the whole value, instead of having shell interpret it. ++ let cmd = "sh -c 'command -v \"" + app + "\"'"; ++ try { ++ let out = GLib.spawn_command_line_sync(cmd); ++ // out contains 1: stdout, 2: stderr, 3: exit code ++ answer = out[3] == 0; ++ } catch (ex) { ++ answer = false; ++ } ++ ++ checkedCommandsMap.set(app, answer); ++ } ++ return answer; ++} +diff --git a/extensions/dash-to-panel/windowPreview.js b/extensions/dash-to-panel/windowPreview.js +new file mode 100644 +index 00000000..45d08a04 +--- /dev/null ++++ b/extensions/dash-to-panel/windowPreview.js +@@ -0,0 +1,1145 @@ ++/* ++ * This file is part of the Dash-To-Panel extension for Gnome 3 ++ * ++ * 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 2 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 Clutter = imports.gi.Clutter; ++const Config = imports.misc.config; ++const GLib = imports.gi.GLib; ++const Gtk = imports.gi.Gtk; ++const Main = imports.ui.main; ++const Mainloop = imports.mainloop; ++const Meta = imports.gi.Meta; ++const PopupMenu = imports.ui.popupMenu; ++const Signals = imports.signals; ++const St = imports.gi.St; ++const WindowManager = imports.ui.windowManager; ++const Workspace = imports.ui.workspace; ++ ++const Me = imports.misc.extensionUtils.getCurrentExtension(); ++const Panel = Me.imports.panel; ++const Taskbar = Me.imports.taskbar; ++const Utils = Me.imports.utils; ++ ++//timeout intervals ++const ENSURE_VISIBLE_MS = 200; ++ ++//timeout names ++const T1 = 'openMenuTimeout'; ++const T2 = 'closeMenuTimeout'; ++const T3 = 'peekTimeout'; ++const T4 = 'ensureVisibleTimeout'; ++ ++const MAX_TRANSLATION = 40; ++const HEADER_HEIGHT = 38; ++const MAX_CLOSE_BUTTON_SIZE = 30; ++const MIN_DIMENSION = 100; ++const FOCUSED_COLOR_OFFSET = 24; ++const HEADER_COLOR_OFFSET = -12; ++const FADE_SIZE = 36; ++const PEEK_INDEX_PROP = '_dtpPeekInitialIndex'; ++ ++let headerHeight = 0; ++let alphaBg = 0; ++let isLeftButtons = false; ++let isTopHeader = true; ++let isManualStyling = false; ++let scaleFactor = 1; ++let animationTime = 0; ++let aspectRatio = {}; ++ ++var PreviewMenu = Utils.defineClass({ ++ Name: 'DashToPanel-PreviewMenu', ++ Extends: St.Widget, ++ Signals: { 'open-state-changed': {} }, ++ ++ _init: function(panel) { ++ this.callParent('_init', { layout_manager: new Clutter.BinLayout() }); ++ ++ let geom = panel.geom; ++ this.panel = panel; ++ this.currentAppIcon = null; ++ this._focusedPreview = null; ++ this._peekedWindow = null; ++ this.peekInitialWorkspaceIndex = -1; ++ this.opened = false; ++ this.isVertical = geom.position == St.Side.LEFT || geom.position == St.Side.RIGHT; ++ this._translationProp = 'translation_' + (this.isVertical ? 'x' : 'y'); ++ this._translationDirection = (geom.position == St.Side.TOP || geom.position == St.Side.LEFT ? -1 : 1); ++ this._translationOffset = Math.min(panel.dtpSize, MAX_TRANSLATION) * this._translationDirection; ++ ++ this.menu = new St.Widget({ ++ name: 'preview-menu', ++ layout_manager: new Clutter.BinLayout(), ++ reactive: true, ++ track_hover: true, ++ x_expand: true, ++ y_expand: true, ++ x_align: Clutter.ActorAlign[geom.position != St.Side.RIGHT ? 'START' : 'END'], ++ y_align: Clutter.ActorAlign[geom.position != St.Side.BOTTOM ? 'START' : 'END'] ++ }); ++ this._box = new St.BoxLayout({ vertical: this.isVertical }); ++ this._scrollView = new St.ScrollView({ ++ name: 'dashtopanelPreviewScrollview', ++ hscrollbar_policy: Gtk.PolicyType.NEVER, ++ vscrollbar_policy: Gtk.PolicyType.NEVER, ++ enable_mouse_scrolling: true, ++ y_expand: !this.isVertical ++ }); ++ ++ this._scrollView.add_actor(this._box); ++ this.menu.add_child(this._scrollView); ++ this.add_child(this.menu); ++ }, ++ ++ enable: function() { ++ this._timeoutsHandler = new Utils.TimeoutsHandler(); ++ this._signalsHandler = new Utils.GlobalSignalsHandler(); ++ ++ Main.layoutManager.addChrome(this, { affectsInputRegion: false }); ++ Main.layoutManager.trackChrome(this.menu, { affectsInputRegion: true }); ++ ++ this._resetHiddenState(); ++ this._refreshGlobals(); ++ this._updateClip(); ++ this.menu.set_position(1, 1); ++ ++ this._signalsHandler.add( ++ [ ++ this.menu, ++ 'notify::hover', ++ () => this._onHoverChanged() ++ ], ++ [ ++ this._scrollView, ++ 'scroll-event', ++ this._onScrollEvent.bind(this) ++ ], ++ [ ++ this.panel.panelBox, ++ 'style-changed', ++ () => this._updateClip() ++ ], ++ [ ++ Utils.DisplayWrapper.getScreen(), ++ 'in-fullscreen-changed', ++ () => { ++ if (global.display.focus_window && global.display.focus_window.is_fullscreen()) { ++ this.close(true); ++ } ++ } ++ ], ++ [ ++ Me.settings, ++ [ ++ 'changed::panel-sizes', ++ 'changed::window-preview-size', ++ 'changed::window-preview-padding', ++ 'changed::window-preview-show-title' ++ ], ++ () => { ++ this._refreshGlobals(); ++ this._updateClip(); ++ } ++ ] ++ ); ++ }, ++ ++ disable: function() { ++ this._timeoutsHandler.destroy(); ++ this._signalsHandler.destroy(); ++ ++ this.close(true); ++ ++ Main.layoutManager.untrackChrome(this.menu); ++ Main.layoutManager.removeChrome(this); ++ }, ++ ++ requestOpen: function(appIcon) { ++ let timeout = Me.settings.get_int('show-window-previews-timeout'); ++ ++ if (this.opened) { ++ timeout = Math.min(100, timeout); ++ } ++ ++ this._endOpenCloseTimeouts(); ++ this._timeoutsHandler.add([T1, timeout, () => this.open(appIcon)]); ++ }, ++ ++ requestClose: function() { ++ this._endOpenCloseTimeouts(); ++ this._addCloseTimeout(); ++ }, ++ ++ open: function(appIcon) { ++ if (this.currentAppIcon != appIcon) { ++ this.currentAppIcon = appIcon; ++ ++ if (!this.opened) { ++ this._refreshGlobals(); ++ ++ this.set_height(this.clipHeight); ++ this.menu.show(); ++ ++ setStyle(this.menu, 'background: ' + Utils.getrgbaColor(this.panel.dynamicTransparency.backgroundColorRgb, alphaBg)); ++ } ++ ++ this._mergeWindows(appIcon); ++ this._updatePosition(); ++ this._animateOpenOrClose(true); ++ ++ this._setReactive(true); ++ this._setOpenedState(true); ++ } ++ }, ++ ++ close: function(immediate) { ++ this._endOpenCloseTimeouts(); ++ this._removeFocus(); ++ this._endPeek(); ++ ++ if (immediate) { ++ Utils.stopAnimations(this.menu); ++ this._resetHiddenState(); ++ } else { ++ this._animateOpenOrClose(false, () => this._resetHiddenState()); ++ } ++ ++ this._setReactive(false); ++ this.currentAppIcon = null; ++ }, ++ ++ update: function(appIcon, windows) { ++ if (this.currentAppIcon == appIcon) { ++ if (windows && !windows.length) { ++ this.close(); ++ } else { ++ this._addAndRemoveWindows(windows); ++ this._updatePosition(); ++ } ++ } ++ }, ++ ++ updatePosition: function() { ++ this._updatePosition(); ++ }, ++ ++ focusNext: function() { ++ let previews = this._box.get_children(); ++ let currentIndex = this._focusedPreview ? previews.indexOf(this._focusedPreview) : -1; ++ let nextIndex = currentIndex + 1; ++ ++ nextIndex = previews[nextIndex] ? nextIndex : 0; ++ ++ if (previews[nextIndex]) { ++ this._removeFocus(); ++ previews[nextIndex].setFocus(true); ++ this._focusedPreview = previews[nextIndex]; ++ } ++ ++ return nextIndex; ++ }, ++ ++ activateFocused: function() { ++ if (this.opened && this._focusedPreview) { ++ this._focusedPreview.activate(); ++ } ++ }, ++ ++ requestPeek: function(window) { ++ this._timeoutsHandler.remove(T3); ++ ++ if (Me.settings.get_boolean('peek-mode')) { ++ if (this.peekInitialWorkspaceIndex < 0) { ++ this._timeoutsHandler.add([T3, Me.settings.get_int('enter-peek-mode-timeout'), () => this._peek(window)]); ++ } else { ++ this._peek(window); ++ } ++ } ++ }, ++ ++ endPeekHere: function() { ++ this._endPeek(true); ++ }, ++ ++ ensureVisible: function(preview) { ++ let [ , upper, pageSize] = this._getScrollAdjustmentValues(); ++ ++ if (upper > pageSize) { ++ this._timeoutsHandler.add([ ++ T4, ++ ENSURE_VISIBLE_MS, ++ () => Utils.ensureActorVisibleInScrollView(this._scrollView, preview, MIN_DIMENSION, () => this._updateScrollFade()) ++ ]); ++ } ++ }, ++ ++ getCurrentAppIcon: function() { ++ return this.currentAppIcon; ++ }, ++ ++ _setReactive: function(reactive) {  ++ this._box.get_children().forEach(c => c.reactive = reactive); ++ this.menu.reactive = reactive; ++ }, ++ ++ _setOpenedState: function(opened) { ++ this.opened = opened; ++ this.emit('open-state-changed'); ++ }, ++ ++ _resetHiddenState: function() { ++ this.menu.hide(); ++ this.set_height(0); ++ this._setOpenedState(false); ++ this.menu.opacity = 0; ++ this.menu[this._translationProp] = this._translationOffset; ++ this._box.get_children().forEach(c => c.destroy()); ++ }, ++ ++ _removeFocus: function() { ++ if (this._focusedPreview) { ++ this._focusedPreview.setFocus(false); ++ this._focusedPreview = null; ++ } ++ }, ++ ++ _mergeWindows: function(appIcon, windows) { ++ windows = windows || (appIcon.window ? [appIcon.window] : appIcon.getAppIconInterestingWindows()); ++ windows.sort(Taskbar.sortWindowsCompareFunction); ++ ++ let currentPreviews = this._box.get_children(); ++ let l = Math.max(windows.length, currentPreviews.length); ++ ++ for (let i = 0; i < l; ++i) { ++ if (currentPreviews[i] && windows[i]) { ++ currentPreviews[i].assignWindow(windows[i], this.opened); ++ } else if (!currentPreviews[i]) { ++ this._addNewPreview(windows[i]); ++ } else if (!windows[i]) { ++ currentPreviews[i][!this.opened ? 'destroy' : 'animateOut'](); ++ } ++ } ++ }, ++ ++ _addAndRemoveWindows: function(windows) { ++ let currentPreviews = this._box.get_children(); ++ ++ windows.sort(Taskbar.sortWindowsCompareFunction); ++ ++ for (let i = 0, l = windows.length; i < l; ++i) { ++ let currentIndex = Utils.findIndex(currentPreviews, c => c.window == windows[i]); ++ ++ if (currentIndex < 0) { ++ this._addNewPreview(windows[i]); ++ } else { ++ currentPreviews[currentIndex].assignWindow(windows[i]); ++ currentPreviews.splice(currentIndex, 1); ++ ++ if (this._peekedWindow && this._peekedWindow == windows[i]) { ++ this.requestPeek(windows[i]); ++ } ++ } ++ } ++ ++ currentPreviews.forEach(c => c.animateOut()); ++ }, ++ ++ _addNewPreview: function(window) { ++ let preview = new Preview(this); ++ ++ this._box.add_child(preview); ++ preview.adjustOnStage(); ++ preview.assignWindow(window, this.opened); ++ }, ++ ++ _addCloseTimeout: function() { ++ this._timeoutsHandler.add([T2, Me.settings.get_int('leave-timeout'), () => this.close()]); ++ }, ++ ++ _onHoverChanged: function() { ++ this._endOpenCloseTimeouts(); ++ ++ if (this.currentAppIcon && !this.menu.hover) { ++ this._addCloseTimeout(); ++ this._endPeek(); ++ } ++ }, ++ ++ _onScrollEvent: function(actor, event) { ++ if (!event.is_pointer_emulated()) { ++ let vOrh = this.isVertical ? 'v' : 'h'; ++ let adjustment = this._scrollView['get_' + vOrh + 'scroll_bar']().get_adjustment(); ++ let increment = adjustment.step_increment; ++ let delta = increment; ++ ++ switch (event.get_scroll_direction()) { ++ case Clutter.ScrollDirection.UP: ++ delta = -increment; ++ break; ++ case Clutter.ScrollDirection.SMOOTH: ++ let [dx, dy] = event.get_scroll_delta(); ++ delta = dy * increment; ++ delta += dx * increment; ++ break; ++ } ++ ++ adjustment.set_value(adjustment.get_value() + delta); ++ this._updateScrollFade(); ++ } ++ ++ return Clutter.EVENT_STOP; ++ }, ++ ++ _endOpenCloseTimeouts: function() { ++ this._timeoutsHandler.remove(T1); ++ this._timeoutsHandler.remove(T2); ++ this._timeoutsHandler.remove(T4); ++ }, ++ ++ _refreshGlobals: function() { ++ isLeftButtons = Meta.prefs_get_button_layout().left_buttons.indexOf(Meta.ButtonFunction.CLOSE) >= 0; ++ isTopHeader = Me.settings.get_string('window-preview-title-position') == 'TOP'; ++ isManualStyling = Me.settings.get_boolean('window-preview-manual-styling'); ++ scaleFactor = Utils.getScaleFactor(); ++ headerHeight = Me.settings.get_boolean('window-preview-show-title') ? HEADER_HEIGHT * scaleFactor : 0; ++ animationTime = Me.settings.get_int('window-preview-animation-time') * .001; ++ aspectRatio.x = { ++ size: Me.settings.get_int('window-preview-aspect-ratio-x'), ++ fixed: Me.settings.get_boolean('window-preview-fixed-x') ++ }; ++ aspectRatio.y = { ++ size: Me.settings.get_int('window-preview-aspect-ratio-y'), ++ fixed: Me.settings.get_boolean('window-preview-fixed-y') ++ }; ++ ++ alphaBg = Me.settings.get_boolean('preview-use-custom-opacity') ? ++ Me.settings.get_int('preview-custom-opacity') * .01 : ++ this.panel.dynamicTransparency.alpha; ++ }, ++ ++ _updateClip: function() { ++ let x, y, w; ++ let geom = this.panel.getGeometry(); ++ let panelBoxTheme = this.panel.panelBox.get_theme_node(); ++ let previewSize = (Me.settings.get_int('window-preview-size') + ++ Me.settings.get_int('window-preview-padding') * 2) * scaleFactor; ++ ++ if (this.isVertical) { ++ w = previewSize; ++ this.clipHeight = this.panel.monitor.height; ++ y = this.panel.monitor.y; ++ } else { ++ w = this.panel.monitor.width; ++ this.clipHeight = (previewSize + headerHeight); ++ x = this.panel.monitor.x; ++ } ++ ++ if (geom.position == St.Side.LEFT) { ++ x = this.panel.monitor.x + this.panel.dtpSize + panelBoxTheme.get_padding(St.Side.LEFT); ++ } else if (geom.position == St.Side.RIGHT) { ++ x = this.panel.monitor.x + this.panel.monitor.width - (this.panel.dtpSize + previewSize) - panelBoxTheme.get_padding(St.Side.RIGHT); ++ } else if (geom.position == St.Side.TOP) { ++ y = this.panel.monitor.y + this.panel.dtpSize + panelBoxTheme.get_padding(St.Side.TOP); ++ } else { //St.Side.BOTTOM ++ y = this.panel.monitor.y + this.panel.monitor.height - (this.panel.dtpSize + panelBoxTheme.get_padding(St.Side.BOTTOM) + previewSize + headerHeight); ++ } ++ ++ Utils.setClip(this, x, y, w, this.clipHeight); ++ }, ++ ++ _updatePosition: function() { ++ let sourceNode = this.currentAppIcon.actor.get_theme_node(); ++ let sourceContentBox = sourceNode.get_content_box(this.currentAppIcon.actor.get_allocation_box()); ++ let sourceAllocation = Utils.getTransformedAllocation(this.currentAppIcon.actor); ++ let [previewsWidth, previewsHeight] = this._getPreviewsSize(); ++ let appIconMargin = Me.settings.get_int('appicon-margin') / scaleFactor; ++ let x = 0, y = 0; ++ ++ previewsWidth = Math.min(previewsWidth, this.panel.monitor.width); ++ previewsHeight = Math.min(previewsHeight, this.panel.monitor.height); ++ this._updateScrollFade(previewsWidth < this.panel.monitor.width && previewsHeight < this.panel.monitor.height); ++ ++ if (this.isVertical) { ++ y = sourceAllocation.y1 + appIconMargin - this.panel.monitor.y + (sourceContentBox.y2 - sourceContentBox.y1 - previewsHeight) * .5; ++ y = Math.max(y, 0); ++ y = Math.min(y, this.panel.monitor.height - previewsHeight); ++ } else { ++ x = sourceAllocation.x1 + appIconMargin - this.panel.monitor.x + (sourceContentBox.x2 - sourceContentBox.x1 - previewsWidth) * .5; ++ x = Math.max(x, 0); ++ x = Math.min(x, this.panel.monitor.width - previewsWidth); ++ } ++ ++ if (!this.opened) { ++ this.menu.set_position(x, y); ++ this.menu.set_size(previewsWidth, previewsHeight); ++ } else { ++ Utils.animate(this.menu, getTweenOpts({ x: x, y: y, width: previewsWidth, height: previewsHeight })); ++ } ++ }, ++ ++ _updateScrollFade: function(remove) { ++ let [value, upper, pageSize] = this._getScrollAdjustmentValues(); ++ let needsFade = Math.round(upper) > Math.round(pageSize); ++ let fadeWidgets = this.menu.get_children().filter(c => c != this._scrollView); ++ ++ if (!remove && needsFade) { ++ if (!fadeWidgets.length) { ++ fadeWidgets.push(this._getFadeWidget()); ++ fadeWidgets.push(this._getFadeWidget(true)); ++ ++ this.menu.add_child(fadeWidgets[0]); ++ this.menu.add_child(fadeWidgets[1]); ++ } ++ ++ fadeWidgets[0].visible = value > 0; ++ fadeWidgets[1].visible = value + pageSize < upper; ++ } else if (remove || (!needsFade && fadeWidgets.length)) { ++ fadeWidgets.forEach(fw => fw.destroy()); ++ } ++ }, ++ ++ _getScrollAdjustmentValues: function() { ++ let [value , , upper, , , pageSize] = this._scrollView[(this.isVertical ? 'v' : 'h') + 'scroll'].adjustment.get_values(); ++ ++ return [value, upper, pageSize]; ++ }, ++ ++ _getFadeWidget: function(end) { ++ let x = 0, y = 0; ++ let startBg = Utils.getrgbaColor(this.panel.dynamicTransparency.backgroundColorRgb, Math.min(alphaBg + .1, 1)); ++ let endBg = Utils.getrgbaColor(this.panel.dynamicTransparency.backgroundColorRgb, 0) ++ let fadeStyle = 'background-gradient-start:' + startBg + ++ 'background-gradient-end:' + endBg + ++ 'background-gradient-direction:' + this.panel.getOrientation(); ++ ++ if (this.isVertical) { ++ y = end ? this.panel.monitor.height - FADE_SIZE : 0; ++ } else { ++ x = end ? this.panel.monitor.width - FADE_SIZE : 0; ++ } ++ ++ let fadeWidget = new St.Widget({ ++ reactive: false, ++ pivot_point: Utils.getPoint({ x: .5, y: .5 }), ++ rotation_angle_z: end ? 180 : 0, ++ style: fadeStyle, ++ x: x, y: y, ++ width: this.isVertical ? this.width : FADE_SIZE, ++ height: this.isVertical ? FADE_SIZE : this.height ++ }); ++ ++ return fadeWidget; ++ }, ++ ++ _getPreviewsSize: function() { ++ let previewsWidth = 0; ++ let previewsHeight = 0; ++ ++ this._box.get_children().forEach(c => { ++ if (!c.animatingOut) { ++ let [width, height] = c.getSize(); ++ ++ if (this.isVertical) { ++ previewsWidth = Math.max(width, previewsWidth); ++ previewsHeight += height; ++ } else { ++ previewsWidth += width; ++ previewsHeight = Math.max(height, previewsHeight); ++ } ++ } ++ }); ++ ++ return [previewsWidth, previewsHeight]; ++ }, ++ ++ _animateOpenOrClose: function(show, onComplete) { ++ let isTranslationAnimation = this.menu[this._translationProp] != 0; ++ let tweenOpts = { ++ opacity: show ? 255 : 0, ++ transition: show ? 'easeInOutQuad' : 'easeInCubic', ++ onComplete: () => { ++ if (isTranslationAnimation) { ++ Main.layoutManager._queueUpdateRegions(); ++ } ++ ++ (onComplete || (() => {}))(); ++ } ++ }; ++ ++ tweenOpts[this._translationProp] = show ? this._translationDirection : this._translationOffset; ++ ++ Utils.animate(this.menu, getTweenOpts(tweenOpts)); ++ }, ++ ++ _peek: function(window) { ++ let currentWorkspace = Utils.getCurrentWorkspace(); ++ let windowWorkspace = window.get_workspace(); ++ let focusWindow = () => this._focusMetaWindow(Me.settings.get_int('peek-mode-opacity'), window); ++ ++ this._restorePeekedWindowStack(); ++ this._peekedWindow = window; ++ ++ if (currentWorkspace != windowWorkspace) { ++ this._switchToWorkspaceImmediate(windowWorkspace.index()); ++ this._timeoutsHandler.add([T3, 100, focusWindow]); ++ } else { ++ focusWindow(); ++ } ++ ++ if (this.peekInitialWorkspaceIndex < 0) { ++ this.peekInitialWorkspaceIndex = currentWorkspace.index(); ++ } ++ }, ++ ++ _endPeek: function(stayHere) { ++ this._timeoutsHandler.remove(T3); ++ ++ if (this._peekedWindow) { ++ let immediate = !stayHere && this.peekInitialWorkspaceIndex != Utils.getCurrentWorkspace().index(); ++ ++ this._restorePeekedWindowStack(); ++ this._focusMetaWindow(255, this._peekedWindow, immediate, true); ++ this._peekedWindow = null; ++ ++ if (!stayHere) { ++ this._switchToWorkspaceImmediate(this.peekInitialWorkspaceIndex); ++ } ++ ++ this.peekInitialWorkspaceIndex = -1; ++ } ++ }, ++ ++ _switchToWorkspaceImmediate: function(workspaceIndex) { ++ let workspace = Utils.getWorkspaceByIndex(workspaceIndex); ++ let shouldAnimate = Main.wm._shouldAnimate; ++ ++ if (!workspace || (!workspace.list_windows().length && ++ workspaceIndex < Utils.getWorkspaceCount() - 1)) { ++ workspace = Utils.getCurrentWorkspace(); ++ } ++ ++ Main.wm._shouldAnimate = () => false; ++ workspace.activate(global.display.get_current_time_roundtrip()); ++ Main.wm._shouldAnimate = shouldAnimate; ++ }, ++ ++ _focusMetaWindow: function(dimOpacity, window, immediate, ignoreFocus) { ++ window.get_workspace().list_windows().forEach(mw => { ++ let wa = mw.get_compositor_private(); ++ let isFocused = !ignoreFocus && mw == window; ++ ++ if (wa) { ++ if (isFocused) { ++ mw[PEEK_INDEX_PROP] = wa.get_parent().get_children().indexOf(wa); ++ wa.get_parent().set_child_above_sibling(wa, null); ++ } ++ ++ if (isFocused && mw.minimized) { ++ wa.show(); ++ } ++ ++ if (!mw.minimized) { ++ let tweenOpts = getTweenOpts({ opacity: isFocused ? 255 : dimOpacity }); ++ ++ if (immediate && !mw.is_on_all_workspaces()) { ++ tweenOpts.time = 0; ++ } ++ ++ Utils.animateWindowOpacity(wa, tweenOpts); ++ } ++ } ++ }); ++ }, ++ ++ _restorePeekedWindowStack: function() { ++ let windowActor = this._peekedWindow ? this._peekedWindow.get_compositor_private() : null; ++ ++ if (windowActor) { ++ if (this._peekedWindow.hasOwnProperty(PEEK_INDEX_PROP)) { ++ windowActor.get_parent().set_child_at_index(windowActor, this._peekedWindow[PEEK_INDEX_PROP]); ++ delete this._peekedWindow[PEEK_INDEX_PROP]; ++ } ++ ++ if (this._peekedWindow.minimized) { ++ windowActor.hide(); ++ } ++ } ++ }, ++}); ++ ++var Preview = Utils.defineClass({ ++ Name: 'DashToPanel-Preview', ++ Extends: St.Widget, ++ ++ _init: function(previewMenu) { ++ this.callParent('_init', { ++ style_class: 'preview-container', ++ reactive: true, ++ track_hover: true, ++ layout_manager: new Clutter.BinLayout() ++ }); ++ ++ this.window = null; ++ this._waitWindowId = 0; ++ this._needsCloseButton = true; ++ this.cloneWidth = this.cloneHeight = 0; ++ this._previewMenu = previewMenu; ++ this._padding = Me.settings.get_int('window-preview-padding') * scaleFactor; ++ this._previewDimensions = this._getPreviewDimensions(); ++ this.animatingOut = false; ++ ++ let box = new St.Widget({ layout_manager: new Clutter.BoxLayout({ orientation: Clutter.Orientation.VERTICAL }), y_expand: true }); ++ let [previewBinWidth, previewBinHeight] = this._getBinSize(); ++ let closeButton = new St.Button({ style_class: 'window-close', accessible_name: 'Close window' }); ++ ++ if (Config.PACKAGE_VERSION >= '3.31.9') { ++ closeButton.add_actor(new St.Icon({ icon_name: 'window-close-symbolic' })); ++ } ++ ++ this._closeButtonBin = new St.Widget({ ++ style_class: 'preview-close-btn-container', ++ layout_manager: new Clutter.BinLayout(), ++ opacity: 0, ++ x_expand: true, y_expand: true, ++ x_align: Clutter.ActorAlign[isLeftButtons ? 'START' : 'END'], ++ y_align: Clutter.ActorAlign[isTopHeader ? 'START' : 'END'] ++ }); ++ ++ this._closeButtonBin.add_child(closeButton); ++ ++ this._previewBin = new St.Widget({ ++ layout_manager: new Clutter.BinLayout(), ++ x_expand: true, y_expand: true, ++ style: 'padding: ' + this._padding / scaleFactor + 'px;' ++ }); ++ ++ this._previewBin.set_size(previewBinWidth, previewBinHeight); ++ ++ box.add_child(this._previewBin); ++ ++ if (headerHeight) { ++ let headerBox = new St.Widget({ ++ style_class: 'preview-header-box', ++ layout_manager: new Clutter.BoxLayout(), ++ x_expand: true, ++ y_align: Clutter.ActorAlign[isTopHeader ? 'START' : 'END'] ++ }); ++ ++ setStyle(headerBox, this._getBackgroundColor(HEADER_COLOR_OFFSET, 1)); ++ this._workspaceIndicator = new St.Label({ y_align: Clutter.ActorAlign.CENTER }); ++ this._windowTitle = new St.Label({ y_align: Clutter.ActorAlign.CENTER, x_expand: true }); ++ ++ this._iconBin = new St.Widget({ layout_manager: new Clutter.BinLayout() }); ++ this._iconBin.set_size(headerHeight, headerHeight); ++ ++ headerBox.add_child(this._iconBin); ++ headerBox.insert_child_at_index(this._workspaceIndicator, isLeftButtons ? 0 : 1); ++ headerBox.insert_child_at_index(this._windowTitle, isLeftButtons ? 1 : 2); ++ ++ box.insert_child_at_index(headerBox, isTopHeader ? 0 : 1); ++ } ++ ++ this.add_child(box); ++ this.add_child(this._closeButtonBin); ++ ++ closeButton.connect('clicked', () => this._onCloseBtnClick()); ++ this.connect('notify::hover', () => this._onHoverChanged()); ++ this.connect('button-release-event', (actor, e) => this._onButtonReleaseEvent(e)); ++ this.connect('destroy', () => this._onDestroy()); ++ }, ++ ++ adjustOnStage: function() { ++ let closeButton = this._closeButtonBin.get_first_child(); ++ let closeButtonHeight = closeButton.height; ++ let maxCloseButtonSize = MAX_CLOSE_BUTTON_SIZE * scaleFactor; ++ let closeButtonBorderRadius = ''; ++ ++ if (closeButtonHeight > maxCloseButtonSize) { ++ closeButtonHeight = maxCloseButtonSize; ++ closeButton.set_size(closeButtonHeight, closeButtonHeight); ++ } ++ ++ if (!headerHeight) { ++ closeButtonBorderRadius = 'border-radius: '; ++ ++ if (isTopHeader) { ++ closeButtonBorderRadius += (isLeftButtons ? '0 0 4px 0;' : '0 0 0 4px;'); ++ } else { ++ closeButtonBorderRadius += (isLeftButtons ? '0 4px 0 0;' : '4px 0 0 0;'); ++ } ++ } ++ ++ setStyle( ++ this._closeButtonBin, ++ 'padding: ' + (headerHeight ? Math.round((headerHeight - closeButtonHeight) * .5 / scaleFactor) : 4) + 'px;' + ++ this._getBackgroundColor(HEADER_COLOR_OFFSET, headerHeight ? 1 : .6) + ++ closeButtonBorderRadius ++ ); ++ }, ++ ++ assignWindow: function(window, animateSize) { ++ if (this.window != window) { ++ let _assignWindowClone = () => { ++ if (window.get_compositor_private()) { ++ let cloneBin = this._getWindowCloneBin(window); ++ ++ this._resizeClone(cloneBin, window); ++ this._addClone(cloneBin, animateSize); ++ this._previewMenu.updatePosition(); ++ } else if (!this._waitWindowId) { ++ this._waitWindowId = Mainloop.idle_add(() => { ++ this._waitWindowId = 0; ++ ++ if (this._previewMenu.opened) { ++ _assignWindowClone(); ++ } ++ }); ++ } ++ }; ++ ++ _assignWindowClone(); ++ } ++ ++ this._cancelAnimateOut(); ++ this._removeWindowSignals(); ++ this.window = window; ++ this._needsCloseButton = window.can_close() && !Utils.checkIfWindowHasTransient(window); ++ this._updateHeader(); ++ }, ++ ++ animateOut: function() { ++ if (!this.animatingOut) { ++ let tweenOpts = getTweenOpts({ opacity: 0, width: 0, height: 0, onComplete: () => this.destroy() }); ++ ++ this.animatingOut = true; ++ ++ Utils.stopAnimations(this); ++ Utils.animate(this, tweenOpts); ++ } ++ }, ++ ++ getSize: function() { ++ let [binWidth, binHeight] = this._getBinSize(); ++ ++ binWidth = Math.max(binWidth, this.cloneWidth + this._padding * 2); ++ binHeight = Math.max(binHeight, this.cloneHeight + this._padding * 2) + headerHeight; ++ ++ return [binWidth, binHeight]; ++ }, ++ ++ setFocus: function(focused) { ++ this._hideOrShowCloseButton(!focused); ++ setStyle(this, this._getBackgroundColor(FOCUSED_COLOR_OFFSET, focused ? '-' : 0)); ++ ++ if (focused) { ++ this._previewMenu.ensureVisible(this); ++ this._previewMenu.requestPeek(this.window); ++ } ++ }, ++ ++ activate: function() { ++ this._previewMenu.endPeekHere(); ++ this._previewMenu.close(); ++ Main.activateWindow(this.window); ++ }, ++ ++ _onDestroy: function() { ++ if (this._waitWindowId) { ++ GLib.source_remove(this._waitWindowId); ++ this._waitWindowId = 0; ++ } ++ ++ this._removeWindowSignals(); ++ }, ++ ++ _onHoverChanged: function() { ++ this.setFocus(this.hover); ++ }, ++ ++ _onCloseBtnClick: function() { ++ this._hideOrShowCloseButton(true); ++ this.reactive = false; ++ ++ if (!Me.settings.get_boolean('group-apps')) { ++ this._previewMenu.close(); ++ } else { ++ this._previewMenu.endPeekHere(); ++ } ++ ++ this.window.delete(global.get_current_time()); ++ }, ++ ++ _onButtonReleaseEvent: function(e) { ++ switch (e.get_button()) { ++ case 1: // Left click ++ this.activate(); ++ break; ++ case 2: // Middle click ++ if (Me.settings.get_boolean('preview-middle-click-close')) { ++ this._onCloseBtnClick(); ++ } ++ break; ++ case 3: // Right click ++ this._showContextMenu(e); ++ break; ++ } ++ ++ return Clutter.EVENT_STOP; ++ }, ++ ++ _cancelAnimateOut: function() { ++ if (this.animatingOut) { ++ this.animatingOut = false; ++ ++ Utils.stopAnimations(this); ++ Utils.animate(this, getTweenOpts({ opacity: 255, width: this.cloneWidth, height: this.cloneHeight })); ++ } ++ }, ++ ++ _showContextMenu: function(e) { ++ let coords = e.get_coords(); ++ let currentWorkspace = this._previewMenu.peekInitialWorkspaceIndex < 0 ? ++ Utils.getCurrentWorkspace() : ++ Utils.getWorkspaceByIndex(this._previewMenu.peekInitialWorkspaceIndex); ++ ++ Main.wm._showWindowMenu(null, this.window, Meta.WindowMenuType.WM, { ++ x: coords[0], ++ y: coords[1], ++ width: 0, ++ height: 0 ++ }); ++ ++ let ctxMenuData = Main.wm._windowMenuManager._manager._menus[0]; ++ ++ ctxMenuData.menu.connect('open-state-changed', () => this._previewMenu.menu.sync_hover()); ++ ++ if (this.window.get_workspace() != currentWorkspace) { ++ let menuItem = new PopupMenu.PopupMenuItem(_('Move to current Workspace') + ' [' + (currentWorkspace.index() + 1) + ']'); ++ let menuItems = ctxMenuData.menu.box.get_children(); ++ let insertIndex = Utils.findIndex(menuItems, c => c._delegate instanceof PopupMenu.PopupSeparatorMenuItem); ++ ++ insertIndex = insertIndex >= 0 ? insertIndex : menuItems.length - 1; ++ ctxMenuData.menu.addMenuItem(menuItem, insertIndex); ++ menuItem.connect('activate', () => this.window.change_workspace(currentWorkspace)); ++ } ++ }, ++ ++ _removeWindowSignals: function() { ++ if (this._titleWindowChangeId) { ++ this.window.disconnect(this._titleWindowChangeId); ++ this._titleWindowChangeId = 0; ++ } ++ }, ++ ++ _updateHeader: function() { ++ if (headerHeight) { ++ let iconTextureSize = Me.settings.get_boolean('window-preview-use-custom-icon-size') ? ++ Me.settings.get_int('window-preview-custom-icon-size') : ++ headerHeight / scaleFactor * .6; ++ let icon = this._previewMenu.getCurrentAppIcon().app.create_icon_texture(iconTextureSize); ++ let workspaceIndex = ''; ++ let workspaceStyle = null; ++ let fontScale = Me.desktopSettings.get_double('text-scaling-factor'); ++ let commonTitleStyles = 'color: ' + Me.settings.get_string('window-preview-title-font-color') + ';' + ++ 'font-size: ' + Me.settings.get_int('window-preview-title-font-size') * fontScale + 'px;' + ++ 'font-weight: ' + Me.settings.get_string('window-preview-title-font-weight') + ';'; ++ ++ this._iconBin.destroy_all_children(); ++ this._iconBin.add_child(icon); ++ ++ if (!Me.settings.get_boolean('isolate-workspaces')) { ++ workspaceIndex = (this.window.get_workspace().index() + 1).toString(); ++ workspaceStyle = 'margin: 0 4px 0 ' + (isLeftButtons ? Math.round((headerHeight - icon.width) * .5) + 'px' : '0') + '; padding: 0 4px;' + ++ 'border: 2px solid ' + this._getRgbaColor(FOCUSED_COLOR_OFFSET, .8) + 'border-radius: 2px;' + commonTitleStyles; ++ } ++ ++ this._workspaceIndicator.text = workspaceIndex; ++ setStyle(this._workspaceIndicator, workspaceStyle); ++ ++ this._titleWindowChangeId = this.window.connect('notify::title', () => this._updateWindowTitle()); ++ setStyle(this._windowTitle, 'max-width: 0px; padding-right: 4px;' + commonTitleStyles); ++ this._updateWindowTitle(); ++ } ++ }, ++ ++ _updateWindowTitle: function() { ++ this._windowTitle.text = this.window.title; ++ }, ++ ++ _hideOrShowCloseButton: function(hide) { ++ if (this._needsCloseButton) { ++ Utils.animate(this._closeButtonBin, getTweenOpts({ opacity: hide ? 0 : 255 })); ++ } ++ }, ++ ++ _getBackgroundColor: function(offset, alpha) { ++ return 'background-color: ' + this._getRgbaColor(offset, alpha) + ++ 'transition-duration:' + this._previewMenu.panel.dynamicTransparency.animationDuration; ++ }, ++ ++ _getRgbaColor: function(offset, alpha) { ++ alpha = Math.abs(alpha); ++ ++ if (isNaN(alpha)) { ++ alpha = alphaBg; ++ } ++ ++ return Utils.getrgbaColor(this._previewMenu.panel.dynamicTransparency.backgroundColorRgb, alpha, offset); ++ }, ++ ++ _addClone: function(newCloneBin, animateSize) { ++ let currentClones = this._previewBin.get_children(); ++ let newCloneOpts = getTweenOpts({ opacity: 255 }); ++ ++ this._previewBin.add_child(newCloneBin); ++ ++ if (currentClones.length) { ++ let currentCloneBin = currentClones.pop(); ++ let currentCloneOpts = getTweenOpts({ opacity: 0, onComplete: () => currentCloneBin.destroy() }); ++ ++ if (newCloneBin.width > currentCloneBin.width) { ++ newCloneOpts.width = newCloneBin.width; ++ newCloneBin.width = currentCloneBin.width; ++ } else { ++ currentCloneOpts.width = newCloneBin.width; ++ } ++ ++ if (newCloneBin.height > currentCloneBin.height) { ++ newCloneOpts.height = newCloneBin.height; ++ newCloneBin.height = currentCloneBin.height; ++ } else { ++ currentCloneOpts.height = newCloneBin.height; ++ } ++ ++ currentClones.forEach(c => c.destroy()); ++ Utils.animate(currentCloneBin, currentCloneOpts); ++ } else if (animateSize) { ++ newCloneBin.width = 0; ++ newCloneBin.height = 0; ++ newCloneOpts.width = this.cloneWidth; ++ newCloneOpts.height = this.cloneHeight; ++ } ++ ++ Utils.animate(newCloneBin, newCloneOpts); ++ }, ++ ++ _getWindowCloneBin: function(window) { ++ let frameRect = window.get_frame_rect(); ++ let bufferRect = window.get_buffer_rect(); ++ let clone = new Clutter.Clone({ source: window.get_compositor_private() }); ++ let cloneBin = new St.Widget({ ++ opacity: 0, ++ layout_manager: frameRect.width != bufferRect.width || ++ frameRect.height != bufferRect.height ? ++ new WindowCloneLayout(frameRect, bufferRect) : ++ new Clutter.BinLayout() ++ }); ++ ++ cloneBin.add_child(clone); ++ ++ return cloneBin; ++ }, ++ ++ _getBinSize: function() { ++ let [fixedWidth, fixedHeight] = this._previewDimensions; ++ ++ return [ ++ aspectRatio.x.fixed ? fixedWidth + this._padding * 2 : -1, ++ aspectRatio.y.fixed ? fixedHeight + this._padding * 2 : -1 ++ ]; ++ }, ++ ++ _resizeClone: function(cloneBin, window) { ++ let frameRect = cloneBin.layout_manager.frameRect || window.get_frame_rect(); ++ let [fixedWidth, fixedHeight] = this._previewDimensions; ++ let ratio = Math.min(fixedWidth / frameRect.width, fixedHeight / frameRect.height, 1); ++ let cloneWidth = frameRect.width * ratio; ++ let cloneHeight = frameRect.height * ratio; ++ ++ let clonePaddingTB = cloneHeight < MIN_DIMENSION ? MIN_DIMENSION - cloneHeight : 0; ++ let clonePaddingLR = cloneWidth < MIN_DIMENSION ? MIN_DIMENSION - cloneWidth : 0; ++ let clonePaddingTop = clonePaddingTB * .5; ++ let clonePaddingLeft = clonePaddingLR * .5; ++ ++ this.cloneWidth = cloneWidth + clonePaddingLR * scaleFactor; ++ this.cloneHeight = cloneHeight + clonePaddingTB * scaleFactor; ++ ++ cloneBin.set_style('padding: ' + clonePaddingTop + 'px ' + clonePaddingLeft + 'px;'); ++ cloneBin.layout_manager.ratio = ratio; ++ cloneBin.layout_manager.padding = [clonePaddingLeft * scaleFactor, clonePaddingTop * scaleFactor]; ++ ++ cloneBin.get_first_child().set_size(cloneWidth, cloneHeight); ++ }, ++ ++ _getPreviewDimensions: function() { ++ let size = Me.settings.get_int('window-preview-size') * scaleFactor; ++ let w, h; ++ ++ if (this._previewMenu.isVertical) { ++ w = size; ++ h = w * aspectRatio.y.size / aspectRatio.x.size; ++ } else { ++ h = size; ++ w = h * aspectRatio.x.size / aspectRatio.y.size; ++ } ++ ++ return [w, h]; ++ } ++}); ++ ++var WindowCloneLayout = Utils.defineClass({ ++ Name: 'DashToPanel-WindowCloneLayout', ++ Extends: Clutter.BinLayout, ++ ++ _init: function(frameRect, bufferRect) { ++ this.callParent('_init'); ++ ++ //the buffer_rect contains the transparent padding that must be removed ++ this.frameRect = frameRect; ++ this.bufferRect = bufferRect; ++ }, ++ ++ vfunc_allocate: function(actor, box, flags) { ++ let [width, height] = box.get_size(); ++ ++ box.set_origin( ++ (this.bufferRect.x - this.frameRect.x) * this.ratio + this.padding[0], ++ (this.bufferRect.y - this.frameRect.y) * this.ratio + this.padding[1] ++ ); ++ ++ box.set_size( ++ width + (this.bufferRect.width - this.frameRect.width) * this.ratio, ++ height + (this.bufferRect.height - this.frameRect.height) * this.ratio ++ ); ++ ++ Utils.allocate(actor.get_first_child(), box, flags); ++ } ++}); ++ ++function setStyle(actor, style) { ++ if (!isManualStyling) { ++ actor.set_style(style); ++ } ++} ++ ++function getTweenOpts(opts) { ++ let defaults = { ++ time: animationTime, ++ transition: 'easeInOutQuad' ++ }; ++ ++ return Utils.mergeObjects(opts || {}, defaults); ++} +diff --git a/meson.build b/meson.build +index b83f0795..b3212c34 100644 +--- a/meson.build ++++ b/meson.build +@@ -46,6 +46,7 @@ all_extensions = default_extensions + all_extensions += [ + 'auto-move-windows', + 'dash-to-dock', ++ 'dash-to-panel', + 'native-window-placement', + 'panel-favorites', + 'top-icons', +diff --git a/po/cs.po b/po/cs.po +index f0d57b72..ec11b834 100644 +--- a/po/cs.po ++++ b/po/cs.po +@@ -1,5 +1,6 @@ + # #-#-#-#-# cs.po (gnome-shell-extensions) #-#-#-#-# + # #-#-#-#-# cs.po (gnome-shell-extensions) #-#-#-#-# ++# #-#-#-#-# cs.po (gnome-shell-extensions) #-#-#-#-# + # Czech translation for gnome-shell-extensions. + # Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER + # This file is distributed under the same license as the gnome-shell-extensions package. +@@ -19,11 +20,18 @@ + # Marek Černocký , 2018. + # Milan Zink , 2018. + # ++# #-#-#-#-# cs.po #-#-#-#-# ++# Dash to panel. ++# Copyright (C) 2018 ++# This file is distributed under the same license as the dash-to-panel package. ++# Milan Zink , 2018 ++# + #, fuzzy + msgid "" + msgstr "" + "#-#-#-#-# cs.po (gnome-shell-extensions) #-#-#-#-#\n" + "#-#-#-#-# cs.po (gnome-shell-extensions) #-#-#-#-#\n" ++"#-#-#-#-# cs.po (gnome-shell-extensions) #-#-#-#-#\n" + "Project-Id-Version: gnome-shell-extensions\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/" + "issues\n" +@@ -64,6 +72,18 @@ msgstr "" + "Content-Transfer-Encoding: 8bit\n" + "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + "X-Generator: Poedit 2.3.1\n" ++"#-#-#-#-# cs.po #-#-#-#-#\n" ++"Project-Id-Version: \n" ++"Report-Msgid-Bugs-To: \n" ++"POT-Creation-Date: 2019-10-11 09:28+0200\n" ++"PO-Revision-Date: 2019-10-11 09:33+0200\n" ++"Last-Translator: Milan Zink \n" ++"Language-Team: \n" ++"Language: cs\n" ++"MIME-Version: 1.0\n" ++"Content-Type: text/plain; charset=UTF-8\n" ++"Content-Transfer-Encoding: 8bit\n" ++"X-Generator: Poedit 2.2.4\n" + + #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3 + msgid "GNOME Classic" +@@ -315,11 +335,11 @@ msgstr "Hlavní obrazovka" + msgid "Secondary monitor " + msgstr "Sekundární obrazovka " + +-#: prefs.js:309 Settings.ui.h:28 ++#: prefs.js:309 Settings.ui.h:28 Settings.ui.h:146 + msgid "Right" + msgstr "Vpravo" + +-#: prefs.js:310 Settings.ui.h:25 ++#: prefs.js:310 Settings.ui.h:25 Settings.ui.h:145 + msgid "Left" + msgstr "Vlevo" + +@@ -327,17 +347,30 @@ msgstr "Vlevo" + msgid "Intelligent autohide customization" + msgstr "Přizpůsobení chytrého skrývání" + +-#: prefs.js:367 prefs.js:560 prefs.js:616 ++#: prefs.js:367 prefs.js:560 prefs.js:616 prefs.js:371 prefs.js:569 ++#: prefs.js:712 prefs.js:837 prefs.js:904 prefs.js:992 prefs.js:1078 ++#: prefs.js:1325 prefs.js:1409 prefs.js:1474 prefs.js:1510 prefs.js:1607 ++#: prefs.js:1641 prefs.js:1683 ++#, fuzzy + msgid "Reset to defaults" +-msgstr "Obnovit výchozí nastavení" ++msgstr "" ++"#-#-#-#-# cs.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Obnovit výchozí nastavení\n" ++"#-#-#-#-# cs.po #-#-#-#-#\n" ++"Nastavit výchozí hodnoty" + + #: prefs.js:553 + msgid "Show dock and application numbers" + msgstr "Zobrazování doku a čísel aplikací" + +-#: prefs.js:609 ++#: prefs.js:609 prefs.js:1402 ++#, fuzzy + msgid "Customize middle-click behavior" +-msgstr "Nastavit chování prostředního tlačítka" ++msgstr "" ++"#-#-#-#-# cs.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Nastavit chování prostředního tlačítka\n" ++"#-#-#-#-# cs.po #-#-#-#-#\n" ++"Akce prostředního tlačítko myši" + + #: prefs.js:692 + msgid "Customize running indicators" +@@ -383,32 +416,53 @@ msgstr "Vysunout" + msgid "Unmount" + msgstr "Odpojit" + +-#: Settings.ui.h:1 ++#: Settings.ui.h:1 Settings.ui.h:2 ++#, fuzzy + msgid "" + "When set to minimize, double clicking minimizes all the windows of the " + "application." + msgstr "" +-"Pokud je nastavena minimalizace, dvojklik minimalizuje všechna okna aplikace." ++"#-#-#-#-# cs.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Pokud je nastavena minimalizace, dvojklik minimalizuje všechna okna " ++"aplikace.\n" ++"#-#-#-#-# cs.po #-#-#-#-#\n" ++"Pokud je nastavena minimalizace, pak budou minimalizováno všechna okna " ++"aplikace." + +-#: Settings.ui.h:2 ++#: Settings.ui.h:2 Settings.ui.h:3 ++#, fuzzy + msgid "Shift+Click action" +-msgstr "Shift + levé tlačítko" ++msgstr "" ++"#-#-#-#-# cs.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Shift + levé tlačítko\n" ++"#-#-#-#-# cs.po #-#-#-#-#\n" ++"Akce při Shift+Click" + + #: Settings.ui.h:3 + msgid "Raise window" + msgstr "Přenést okno do popředí" + +-#: Settings.ui.h:4 ++#: Settings.ui.h:4 Settings.ui.h:5 + msgid "Minimize window" + msgstr "Minimalizovat okno" + +-#: Settings.ui.h:5 ++#: Settings.ui.h:5 Settings.ui.h:6 ++#, fuzzy + msgid "Launch new instance" +-msgstr "Spustit novou instanci" ++msgstr "" ++"#-#-#-#-# cs.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Spustit novou instanci\n" ++"#-#-#-#-# cs.po #-#-#-#-#\n" ++"Spustit nové okno aplikace" + +-#: Settings.ui.h:6 ++#: Settings.ui.h:6 Settings.ui.h:7 ++#, fuzzy + msgid "Cycle through windows" +-msgstr "Přepínat mezi okny" ++msgstr "" ++"#-#-#-#-# cs.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Přepínat mezi okny\n" ++"#-#-#-#-# cs.po #-#-#-#-#\n" ++"Procházet okna" + + #: Settings.ui.h:7 + msgid "Minimize or overview" +@@ -426,25 +480,46 @@ msgstr "Minimalizovat nebo zobrazit náhledy oken" + msgid "Focus or show previews" + msgstr "Zaměřit nebo zobrazit náhledy oken" + +-#: Settings.ui.h:11 ++#: Settings.ui.h:11 appIcons.js:1398 appIcons.js:1458 appIcons.js:1460 ++#: Settings.ui.h:10 + msgid "Quit" + msgstr "Ukončit" + +-#: Settings.ui.h:12 ++#: Settings.ui.h:12 Settings.ui.h:11 ++#, fuzzy + msgid "Behavior for Middle-Click." +-msgstr "Chování při kliknutím prostředního tlačítka" ++msgstr "" ++"#-#-#-#-# cs.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Chování při kliknutím prostředního tlačítka\n" ++"#-#-#-#-# cs.po #-#-#-#-#\n" ++"Chování při stisku prostředního tlačítka." + +-#: Settings.ui.h:13 ++#: Settings.ui.h:13 Settings.ui.h:12 ++#, fuzzy + msgid "Middle-Click action" +-msgstr "Prostřední tlačítko" ++msgstr "" ++"#-#-#-#-# cs.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Prostřední tlačítko\n" ++"#-#-#-#-# cs.po #-#-#-#-#\n" ++"Prostřední tlačítko myši" + +-#: Settings.ui.h:14 ++#: Settings.ui.h:14 Settings.ui.h:13 ++#, fuzzy + msgid "Behavior for Shift+Middle-Click." +-msgstr "Chování při kliknutím prostředního tlačítka a stiknuté klávese Shift" ++msgstr "" ++"#-#-#-#-# cs.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Chování při kliknutím prostředního tlačítka a stiknuté klávese Shift\n" ++"#-#-#-#-# cs.po #-#-#-#-#\n" ++"Shift + prostřední tlačítko myši." + +-#: Settings.ui.h:15 ++#: Settings.ui.h:15 Settings.ui.h:14 ++#, fuzzy + msgid "Shift+Middle-Click action" +-msgstr "Shift + prostřední tlačítko" ++msgstr "" ++"#-#-#-#-# cs.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Shift + prostřední tlačítko\n" ++"#-#-#-#-# cs.po #-#-#-#-#\n" ++"Akce při Shift + prostřední tlačítko myši" + + #: Settings.ui.h:16 + msgid "Enable Unity7 like glossy backlit items" +@@ -482,11 +557,11 @@ msgstr "Zobrazit na všech obrazovkách" + msgid "Position on screen" + msgstr "Umístění na obrazovce" + +-#: Settings.ui.h:26 ++#: Settings.ui.h:26 Settings.ui.h:97 + msgid "Bottom" + msgstr "Dole" + +-#: Settings.ui.h:27 ++#: Settings.ui.h:27 Settings.ui.h:98 + msgid "Top" + msgstr "Nahoře" + +@@ -523,11 +598,11 @@ msgstr "" + msgid "Position and size" + msgstr "Umístění a velikost" + +-#: Settings.ui.h:36 ++#: Settings.ui.h:36 Settings.ui.h:182 + msgid "Show favorite applications" + msgstr "Zobrazit oblíbené aplikace" + +-#: Settings.ui.h:37 ++#: Settings.ui.h:37 Settings.ui.h:183 + msgid "Show running applications" + msgstr "Zobrazit spuštěné aplikace" + +@@ -551,17 +626,27 @@ msgstr "" + "Pokud je zakázáno, jsou tato nastavení dostupná z GNOME Tweaks nebo z webové " + "stránky GNOME Shell Extensions." + +-#: Settings.ui.h:42 ++#: Settings.ui.h:42 Settings.ui.h:184 ++#, fuzzy + msgid "Show Applications icon" +-msgstr "Tlačítko přístupu ke všem aplikacím" ++msgstr "" ++"#-#-#-#-# cs.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Tlačítko přístupu ke všem aplikacím\n" ++"#-#-#-#-# cs.po #-#-#-#-#\n" ++"Zobrazit ikonu aplikací" + + #: Settings.ui.h:43 + msgid "Move the applications button at the beginning of the dock." + msgstr "Přesunout tlačítko přístupu ke všem aplikacím na začátek doku" + +-#: Settings.ui.h:44 ++#: Settings.ui.h:44 Settings.ui.h:185 ++#, fuzzy + msgid "Animate Show Applications." +-msgstr "Animace při zobrazení všech aplikací" ++msgstr "" ++"#-#-#-#-# cs.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Animace při zobrazení všech aplikací\n" ++"#-#-#-#-# cs.po #-#-#-#-#\n" ++"Animovat zobrazení aplikací." + + #: Settings.ui.h:45 + msgid "Show trash can" +@@ -575,25 +660,40 @@ msgstr "Zobrazit připojené svazky a zařízení" + msgid "Launchers" + msgstr "Spouštěče" + +-#: Settings.ui.h:48 ++#: Settings.ui.h:48 Settings.ui.h:205 ++#, fuzzy + msgid "" + "Enable Super+(0-9) as shortcuts to activate apps. It can also be used " + "together with Shift and Ctrl." + msgstr "" ++"#-#-#-#-# cs.po (gnome-shell-extensions) #-#-#-#-#\n" + "Povolit klávesovou zkratku Super+[0-9] pro spuštění aplikací; tuto " +-"klávesovou zkratku lze též použít s klávesami Shift a Ctrl." ++"klávesovou zkratku lze též použít s klávesami Shift a Ctrl.\n" ++"#-#-#-#-# cs.po #-#-#-#-#\n" ++"Povolit klávesové zkratky Win+(0-9) ke spouštění aplikací. Lze použít v " ++"kombinaci s Shift a Ctrl." + + #: Settings.ui.h:49 + msgid "Use keyboard shortcuts to activate apps" + msgstr "Klávesová zkratka pro aktivaci aplikací" + +-#: Settings.ui.h:50 ++#: Settings.ui.h:50 Settings.ui.h:195 ++#, fuzzy + msgid "Behaviour when clicking on the icon of a running application." +-msgstr "Chování při kliknutí na ikonu běžící aplikace" ++msgstr "" ++"#-#-#-#-# cs.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Chování při kliknutí na ikonu běžící aplikace\n" ++"#-#-#-#-# cs.po #-#-#-#-#\n" ++"Chování při kliknutí na ikonu běžící aplikace." + +-#: Settings.ui.h:51 ++#: Settings.ui.h:51 Settings.ui.h:196 ++#, fuzzy + msgid "Click action" +-msgstr "Kliknutí tlačítkem myši" ++msgstr "" ++"#-#-#-#-# cs.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Kliknutí tlačítkem myši\n" ++"#-#-#-#-# cs.po #-#-#-#-#\n" ++"Akce myši" + + #: Settings.ui.h:53 + msgid "Behaviour when scrolling on the icon of an application." +@@ -603,15 +703,20 @@ msgstr "Chování při rolování na ikoně běžící aplikace" + msgid "Scroll action" + msgstr "Rolování kolečkem myši" + +-#: Settings.ui.h:55 ++#: Settings.ui.h:55 Settings.ui.h:202 + msgid "Do nothing" + msgstr "Nedělat nic" + +-#: Settings.ui.h:56 ++#: Settings.ui.h:56 Settings.ui.h:203 ++#, fuzzy + msgid "Switch workspace" +-msgstr "Přepnout pracovní plochu" ++msgstr "" ++"#-#-#-#-# cs.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Přepnout pracovní plochu\n" ++"#-#-#-#-# cs.po #-#-#-#-#\n" ++"Přepnout plochu" + +-#: Settings.ui.h:57 ++#: Settings.ui.h:57 Settings.ui.h:194 + msgid "Behavior" + msgstr "Chování" + +@@ -643,33 +748,63 @@ msgstr "Indikátory počtu otevřených oken" + msgid "Default" + msgstr "Výchozí" + +-#: Settings.ui.h:64 ++#: Settings.ui.h:64 Settings.ui.h:162 + msgid "Dots" + msgstr "Tečky" + +-#: Settings.ui.h:65 ++#: Settings.ui.h:65 Settings.ui.h:163 ++#, fuzzy + msgid "Squares" +-msgstr "Čtverečky" ++msgstr "" ++"#-#-#-#-# cs.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Čtverečky\n" ++"#-#-#-#-# cs.po #-#-#-#-#\n" ++"Čtverce" + +-#: Settings.ui.h:66 ++#: Settings.ui.h:66 Settings.ui.h:164 ++#, fuzzy + msgid "Dashes" +-msgstr "Čárky" ++msgstr "" ++"#-#-#-#-# cs.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Čárky\n" ++"#-#-#-#-# cs.po #-#-#-#-#\n" ++"Čárkovaný" + +-#: Settings.ui.h:67 ++#: Settings.ui.h:67 Settings.ui.h:165 ++#, fuzzy + msgid "Segmented" +-msgstr "Dělená linka" ++msgstr "" ++"#-#-#-#-# cs.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Dělená linka\n" ++"#-#-#-#-# cs.po #-#-#-#-#\n" ++"Dělený" + +-#: Settings.ui.h:68 ++#: Settings.ui.h:68 Settings.ui.h:166 ++#, fuzzy + msgid "Solid" +-msgstr "Plná linka" ++msgstr "" ++"#-#-#-#-# cs.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Plná linka\n" ++"#-#-#-#-# cs.po #-#-#-#-#\n" ++"Solid" + +-#: Settings.ui.h:69 ++#: Settings.ui.h:69 Settings.ui.h:167 ++#, fuzzy + msgid "Ciliora" +-msgstr "Styl Ciliora" ++msgstr "" ++"#-#-#-#-# cs.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Styl Ciliora\n" ++"#-#-#-#-# cs.po #-#-#-#-#\n" ++"Ciliora" + +-#: Settings.ui.h:70 ++#: Settings.ui.h:70 Settings.ui.h:168 ++#, fuzzy + msgid "Metro" +-msgstr "Styl Metro" ++msgstr "" ++"#-#-#-#-# cs.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Styl Metro\n" ++"#-#-#-#-# cs.po #-#-#-#-#\n" ++"Metro" + + #: Settings.ui.h:71 + msgid "Set the background color for the dash." +@@ -683,9 +818,14 @@ msgstr "Vlastní barva doku" + msgid "Tune the dash background opacity." + msgstr "Nastavit průhlednost doku" + +-#: Settings.ui.h:75 ++#: Settings.ui.h:75 Settings.ui.h:92 ++#, fuzzy + msgid "Fixed" +-msgstr "Neměnná" ++msgstr "" ++"#-#-#-#-# cs.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Neměnná\n" ++"#-#-#-#-# cs.po #-#-#-#-#\n" ++"Pevný" + + #: Settings.ui.h:76 + msgid "Dynamic" +@@ -703,7 +843,7 @@ msgstr "Zakázat zaoblené rohy" + msgid "Appearance" + msgstr "Vzhled" + +-#: Settings.ui.h:80 ++#: Settings.ui.h:80 Settings.ui.h:225 + msgid "version: " + msgstr "verze: " + +@@ -719,19 +859,30 @@ msgstr "Autor" + msgid "Webpage" + msgstr "Webová stránka" + +-#: Settings.ui.h:84 ++#: Settings.ui.h:84 Settings.ui.h:236 ++#, fuzzy + msgid "" + "This program comes with ABSOLUTELY NO WARRANTY.\n" +-"See the GNU General Public License, version 2 or later for details." ++"See the GNU General Public License, version 2 or later for details." + msgstr "" ++"#-#-#-#-# cs.po (gnome-shell-extensions) #-#-#-#-#\n" + "Na tento program NEJSOU POSKYTOVÁNY ZÁRUKY.\n" + "Podrobněji viz GNU General Public License, verze 2 nebo pozdější." ++"html\">GNU General Public License, verze 2 nebo pozdější.\n" ++"#-#-#-#-# cs.po #-#-#-#-#\n" ++"Tento program je nabízen bez jakýchkoli záruk.\n" ++"Přečtěte si GNU General Public License, version 2 nebo novější verze." + +-#: Settings.ui.h:86 ++#: Settings.ui.h:86 Settings.ui.h:238 ++#, fuzzy + msgid "About" +-msgstr "O tomto doplňku" ++msgstr "" ++"#-#-#-#-# cs.po (gnome-shell-extensions) #-#-#-#-#\n" ++"O tomto doplňku\n" ++"#-#-#-#-# cs.po #-#-#-#-#\n" ++"O rozšíření" + + #: Settings.ui.h:87 + msgid "Customize minimum and maximum opacity values" +@@ -745,9 +896,14 @@ msgstr "Minimální průhlednost" + msgid "Maximum opacity" + msgstr "Maximální průhlednost" + +-#: Settings.ui.h:90 ++#: Settings.ui.h:90 Settings.ui.h:120 ++#, fuzzy + msgid "Number overlay" +-msgstr "Čísla aplikací" ++msgstr "" ++"#-#-#-#-# cs.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Čísla aplikací\n" ++"#-#-#-#-# cs.po #-#-#-#-#\n" ++"Zobrazit číslo" + + #: Settings.ui.h:91 + msgid "" +@@ -771,7 +927,7 @@ msgstr "" + msgid "Shortcut for the options above" + msgstr "Klávesová zkratka" + +-#: Settings.ui.h:95 ++#: Settings.ui.h:95 Settings.ui.h:59 + msgid "Syntax: , , , " + msgstr "Syntaxe: , , , " + +@@ -803,7 +959,7 @@ msgstr "Zobrazit dok pokud nepřekáží oknům aplikací" + msgid "Dodge windows" + msgstr "Uhýbání oknům" + +-#: Settings.ui.h:103 ++#: Settings.ui.h:103 Settings.ui.h:49 + msgid "All windows" + msgstr "Všechna okna" + +@@ -923,7 +1079,7 @@ msgstr "Změnit pozadí…" + msgid "Display Settings" + msgstr "Nastavení zobrazení" + +-#: desktopGrid.js:360 ++#: desktopGrid.js:360 appIcons.js:1726 + msgid "Settings" + msgstr "Nastavení" + +@@ -1011,6 +1167,1071 @@ msgstr "Zobrazovat připojené svazky" + msgid "Show mounted drives in the desktop." + msgstr "Zobrazovat připojené svazky na pracovní ploše." + ++#: prefs.js:211 ++msgid "Top, with plugin icons collapsed to bottom" ++msgstr "Nahoře, ikony dole" ++ ++#: prefs.js:211 ++msgid "Left, with plugin icons collapsed to right" ++msgstr "Vlevo, ikony vpravo" ++ ++#: prefs.js:212 ++msgid "Top, with fixed center plugin icons" ++msgstr "Nahoře, ikony ukotveny uprostřed" ++ ++#: prefs.js:212 ++msgid "Left, with fixed center plugin icons" ++msgstr "Vlevo, ikony uprostřed" ++ ++#: prefs.js:213 ++msgid "Top, with floating center plugin icons" ++msgstr "Nahoře, plovoucí ikony" ++ ++#: prefs.js:213 ++msgid "Left, with floating center plugin icons" ++msgstr "Vlevo, plovoucí ikony" ++ ++#: prefs.js:214 ++msgid "Center, fixed in middle of monitor" ++msgstr "Uprostřed, na střed monitoru" ++ ++#: prefs.js:215 ++msgid "Center, floating between top and bottom elements" ++msgstr "Uprostřed, plovoucí" ++ ++#: prefs.js:215 ++msgid "Center, floating between left and right elements" ++msgstr "Uprostřed, plovoucí" ++ ++#: prefs.js:219 ++msgid "Top of plugin icons" ++msgstr "Nad ikonami" ++ ++#: prefs.js:219 ++msgid "Left of plugin icons" ++msgstr "Vlevo od ikon" ++ ++#: prefs.js:220 ++msgid "Bottom of plugin icons" ++msgstr "Dole pod ikonami" ++ ++#: prefs.js:220 ++msgid "Right of plugin icons" ++msgstr "Vpravo od ikon" ++ ++#: prefs.js:221 ++msgid "Top of system indicators" ++msgstr "Nad systémovou oblastí" ++ ++#: prefs.js:221 ++msgid "Left of system indicators" ++msgstr "Vlevo od systémové oblasti" ++ ++#: prefs.js:222 ++msgid "Bottom of system indicators" ++msgstr "Pod systémovou oblastí" ++ ++#: prefs.js:222 ++msgid "Right of system indicators" ++msgstr "Vpravo od systémové oblasti" ++ ++#: prefs.js:223 ++msgid "Top of taskbar" ++msgstr "Nad seznamem úloh" ++ ++#: prefs.js:223 ++msgid "Left of taskbar" ++msgstr "Vlevo od seznamu úloh" ++ ++#: prefs.js:224 ++msgid "Bottom of taskbar" ++msgstr "Pod seznamem úloh" ++ ++#: prefs.js:224 ++msgid "Right of taskbar" ++msgstr "Vpravo od seznamu úloh" ++ ++#: prefs.js:230 ++msgid "Show Desktop button height (px)" ++msgstr "Výška tlačítka plochy (px)" ++ ++#: prefs.js:230 ++msgid "Show Desktop button width (px)" ++msgstr "Šířka tlačítka plochy (px)" ++ ++#: prefs.js:364 ++msgid "Running Indicator Options" ++msgstr "Nastavení indikátoru běžících aplikací" ++ ++#: prefs.js:514 ++msgid "Default (Primary monitor)" ++msgstr "Default (Primární monitor)" ++ ++#: prefs.js:517 ++msgid "Monitor " ++msgstr "Monitor " ++ ++#: prefs.js:562 ++msgid "Multi-monitors options" ++msgstr "Nastavení více monitorů" ++ ++#: prefs.js:705 ++msgid "Dynamic opacity options" ++msgstr "Dynamická průhlednost" ++ ++#: prefs.js:830 ++msgid "Intellihide options" ++msgstr "Nastavení inteligentního skrývaní (Intellihide)" ++ ++#: prefs.js:897 ++msgid "Show Applications options" ++msgstr "Zobrazit ikonu aplikací" ++ ++#: prefs.js:985 ++msgid "Show Desktop options" ++msgstr "Nastavení plochy" ++ ++#: prefs.js:1071 ++msgid "Window preview options" ++msgstr "Nastavení náhledu oken" ++ ++#: prefs.js:1318 ++msgid "Ungrouped application options" ++msgstr "Nastavení neseskupených aplikací" ++ ++#: prefs.js:1467 ++msgid "Customize panel scroll behavior" ++msgstr "Chování prostředního tlačítko myši nad panelem" ++ ++#: prefs.js:1503 ++msgid "Customize icon scroll behavior" ++msgstr "Nastavit chování prostředního tlačítko myši" ++ ++#: prefs.js:1600 ++msgid "Advanced hotkeys options" ++msgstr "Nastavení dalších klávesových zkratek" ++ ++#: prefs.js:1634 ++msgid "Secondary Menu Options" ++msgstr "Nastavení sekundárního menu" ++ ++#: prefs.js:1676 Settings.ui.h:223 ++msgid "Advanced Options" ++msgstr "Pokročilá nastavení" ++ ++#: prefs.js:1763 ++msgid "Export settings" ++msgstr "Exportovat nastavení" ++ ++#: prefs.js:1780 ++msgid "Import settings" ++msgstr "Importovat nastavení" ++ ++#: appIcons.js:1380 ++msgid "Show Details" ++msgstr "Zobrazit detaily" ++ ++#: appIcons.js:1398 ++msgid "New Window" ++msgstr "Nové okno" ++ ++#: appIcons.js:1460 ++msgid "Windows" ++msgstr "Okna" ++ ++#: appIcons.js:1684 ++msgid "Power options" ++msgstr "Možnosti napájení" ++ ++#: appIcons.js:1689 ++msgid "Event logs" ++msgstr "Události" ++ ++#: appIcons.js:1694 ++msgid "System" ++msgstr "Systém" ++ ++#: appIcons.js:1699 ++msgid "Device Management" ++msgstr "Spáva zařízení" ++ ++#: appIcons.js:1704 ++msgid "Disk Management" ++msgstr "Správa disků" ++ ++#: appIcons.js:1711 ++msgid "Terminal" ++msgstr "Terminál" ++ ++#: appIcons.js:1716 ++msgid "System monitor" ++msgstr "Sledování systému" ++ ++#: appIcons.js:1721 ++msgid "Files" ++msgstr "Soubory" ++ ++#: appIcons.js:1733 ++msgid "Unlock taskbar" ++msgstr "Odemknout panel úloh" ++ ++#: appIcons.js:1733 ++msgid "Lock taskbar" ++msgstr "Zamknout panel úloh" ++ ++#: appIcons.js:1738 ++msgid "Dash to Panel Settings" ++msgstr "Nastavení Dash to Panel" ++ ++#: appIcons.js:1745 ++msgid "Restore Windows" ++msgstr "Obnovit okna" ++ ++#: appIcons.js:1745 ++msgid "Show Desktop" ++msgstr "Zobrazit plochu" ++ ++#: update.js:58 ++#, javascript-format ++msgid "Version %s (%s) is available" ++msgstr "Verze %s (%s) je dostupná" ++ ++#: update.js:59 ++msgid "Details" ++msgstr "Zobrazit detaily" ++ ++#: update.js:60 ++msgid "Update" ++msgstr "Aktualizace" ++ ++#: update.js:63 ++msgid "Already up to date" ++msgstr "Používáte aktuální verzi" ++ ++#: update.js:148 ++msgid "Update successful, please log out/in" ++msgstr "Aktualizace proběhla, je nutné se odhlásit a přihlásit" ++ ++#: update.js:149 ++msgid "Log out" ++msgstr "Odhlásit" ++ ++#: update.js:153 ++msgid "Update successful, please restart GNOME Shell" ++msgstr "Aktualizace proběhla, restartujte GNOME Shell" ++ ++#: update.js:154 ++msgid "Restart GNOME Shell" ++msgstr "Restartovat GNOME Shell..." ++ ++#: update.js:154 ++msgid "Restarting GNOME Shell..." ++msgstr "Restartuji GNOME Shell..." ++ ++#: update.js:160 ++msgid "Error: " ++msgstr "Chyba: " ++ ++#: Settings.ui.h:1 ++msgid "Nothing yet!" ++msgstr "Zatím nedostupné!" ++ ++#: Settings.ui.h:4 ++msgid "Raise windows" ++msgstr "Okno do popředí" ++ ++#: Settings.ui.h:8 ++msgid "Cycle windows + minimize" ++msgstr "Procházet okna a minimalizovat" ++ ++#: Settings.ui.h:9 ++msgid "Toggle single / Preview multiple" ++msgstr "Přepnout náhled jedno/více" ++ ++#: Settings.ui.h:15 ++msgid "Isolate monitors" ++msgstr "Oddělit monitory" ++ ++#: Settings.ui.h:16 ++msgid "Display favorite applications on all monitors" ++msgstr "Zobrazit oblíbené aplikace na všech monitorech" ++ ++#: Settings.ui.h:17 ++msgid "Display the clock on all monitors" ++msgstr "Zobrazit hodiny na všech monitorech" ++ ++#: Settings.ui.h:18 ++msgid "Display the status menu on all monitors" ++msgstr "Zobrazit stavovou nabídku na všech monitorech" ++ ++#: Settings.ui.h:19 ++msgid "Integrate AppMenu items" ++msgstr "Zobrazit položky menu aplikace" ++ ++#: Settings.ui.h:20 ++msgid "Show Details menu item" ++msgstr "Zobrazit menu Detail" ++ ++#: Settings.ui.h:21 ++msgid "Highlight focused application" ++msgstr "Zvýraznit aplikaci v popředí" ++ ++#: Settings.ui.h:22 ++msgid "Icon dominant color" ++msgstr "Hlavní barva ikony" ++ ++#: Settings.ui.h:23 ++msgid "Custom color" ++msgstr "Vlastní barva" ++ ++#: Settings.ui.h:24 ++msgid "Highlight opacity" ++msgstr "Průhlednost zvýraznění" ++ ++#: Settings.ui.h:25 ++msgid "Indicator height (px)" ++msgstr "Výška indikátoru aplikace (px)" ++ ++#: Settings.ui.h:26 ++msgid "Indicator color - Icon Dominant" ++msgstr "Hlavní barva ikony - Přepsat nastavení vzhledu" ++ ++#: Settings.ui.h:27 ++msgid "Indicator color - Override Theme" ++msgstr "Barva indikátoru - Přepsat nastavení vzhledu" ++ ++#: Settings.ui.h:28 ++msgid "1 window open (or ungrouped)" ++msgstr "1 otevřené okno (nebo neseskupené)" ++ ++#: Settings.ui.h:29 ++msgid "Apply to all" ++msgstr "Nastavit pro všechny" ++ ++#: Settings.ui.h:30 ++msgid "2 windows open" ++msgstr "2 otevřená okna" ++ ++#: Settings.ui.h:31 ++msgid "3 windows open" ++msgstr "3 otevřená okna" ++ ++#: Settings.ui.h:32 ++msgid "4+ windows open" ++msgstr "4 a více otevřených oken" ++ ++#: Settings.ui.h:33 ++msgid "Use different for unfocused" ++msgstr "Použít jinou pro okna v pozadí" ++ ++#: Settings.ui.h:34 ++msgid "Font size (px) of the application titles (default is 14)" ++msgstr "Velikost fontu (px) titulku aplikace (výchozí 14)" ++ ++#: Settings.ui.h:35 ++msgid "Font weight of application titles" ++msgstr "Velikost fontu titulku aplikace" ++ ++#: Settings.ui.h:36 ++msgid "inherit from theme" ++msgstr "zdědit nastavení tématu" ++ ++#: Settings.ui.h:37 ++msgid "normal" ++msgstr "normální" ++ ++#: Settings.ui.h:38 ++msgid "lighter" ++msgstr "tenčí" ++ ++#: Settings.ui.h:39 ++msgid "bold" ++msgstr "tučný" ++ ++#: Settings.ui.h:40 ++msgid "bolder" ++msgstr "tučnější" ++ ++#: Settings.ui.h:41 ++msgid "Font color of the application titles" ++msgstr "Barva fontu (px) titulku aplikace" ++ ++#: Settings.ui.h:42 ++msgid "Maximum width (px) of the application titles (default is 160)" ++msgstr "Maximální šířka titulku aplikace (výchozí 160)" ++ ++#: Settings.ui.h:43 ++msgid "Use a fixed width for the application titles" ++msgstr "Použít pevnou šířku titulku aplikací" ++ ++#: Settings.ui.h:44 ++msgid "" ++"The application titles all have the same width, even if their texts are " ++"shorter than the maximum width. The maximum width value is used as the fixed " ++"width." ++msgstr "" ++"Titulky aplikací mají stejnou šířku, i když je text kratší. Maximální " ++"hodnota je použita pro všechny." ++ ++#: Settings.ui.h:45 ++msgid "Display running indicators on unfocused applications" ++msgstr "Zobrazit indikátor aplikací na pozadí" ++ ++#: Settings.ui.h:46 ++msgid "Use the favorite icons as application launchers" ++msgstr "Použít ikony oblíbených aplikací jako spouštěče" ++ ++#: Settings.ui.h:47 ++msgid "Only hide the panel when it is obstructed by windows " ++msgstr "Skrýt panel pouze při překrytí okny aplikací " ++ ++#: Settings.ui.h:48 ++msgid "The panel hides from" ++msgstr "Skrývání panelu pro" ++ ++#: Settings.ui.h:50 ++msgid "Focused windows" ++msgstr "Okna v popředí" ++ ++#: Settings.ui.h:51 ++msgid "Maximized windows" ++msgstr "Maximalizovaná okna" ++ ++#: Settings.ui.h:52 ++msgid "Require pressure at the edge of the screen to reveal the panel" ++msgstr "Vyžaduje podržení myši u okraje obrazovky pro zobrazení panelu" ++ ++#: Settings.ui.h:53 ++msgid "Required pressure threshold (px)" ++msgstr "Citlivost okraje obrazovky při držení myši (px)" ++ ++#: Settings.ui.h:54 ++msgid "Required pressure timeout (ms)" ++msgstr "Doba držení myši (ms)" ++ ++#: Settings.ui.h:55 ++msgid "Allow the panel to be revealed while in fullscreen mode" ++msgstr "Povolit zobrazení panelu v režimu celá obrazovka" ++ ++#: Settings.ui.h:56 ++msgid "Only hide secondary panels (requires multi-monitors option)" ++msgstr "Skrýt pouze sekundární panely (pro více monitorů)" ++ ++#: Settings.ui.h:57 ++msgid "e.g. i" ++msgstr "např. i" ++ ++#: Settings.ui.h:58 ++msgid "Keyboard shortcut to reveal and hold the panel" ++msgstr "Klávesová zkratka pro zobrazení panelu" ++ ++#: Settings.ui.h:60 ++msgid "Hide and reveal animation duration (ms)" ++msgstr "Rychlost animace zobrazení/skrytí panelu" ++ ++#: Settings.ui.h:61 ++msgid "Delay before hiding the panel (ms)" ++msgstr "Zpoždění před skrytím panelu" ++ ++#: Settings.ui.h:62 ++msgid "Delay before enabling intellihide on start (ms)" ++msgstr "Zpoždění před skrytím při startu (ms)" ++ ++#: Settings.ui.h:63 ++msgid "Time (ms) before showing (100 is default)" ++msgstr "Pauza před zobrazením náhledu (výchozí 100ms)" ++ ++#: Settings.ui.h:64 ++msgid "Animation time (ms)" ++msgstr "Trvání animace (ms)" ++ ++#: Settings.ui.h:65 ++msgid "Time (ms) before hiding (100 is default)" ++msgstr "Pauza před skrytím náhledu (výchozí 100ms)" ++ ++#: Settings.ui.h:66 ++msgid "Immediate on application icon click" ++msgstr "Okamžitě po kliknutí na ikonu aplikace" ++ ++#: Settings.ui.h:67 ++msgid "Middle click on the preview to close the window" ++msgstr "Prostřední tlačítko myši zavře okno v režimu náhledu" ++ ++#: Settings.ui.h:68 ++msgid "Window previews preferred size (px)" ++msgstr "Velikost náhledu okna (px)" ++ ++#: Settings.ui.h:69 ++msgid "Window previews aspect ratio Y (height)" ++msgstr "Poměr stran náhledu okna (výška)" ++ ++#: Settings.ui.h:70 ++msgid "Window previews padding (px)" ++msgstr "Okraje náhledu oken (px)" ++ ++#: Settings.ui.h:71 ++msgid "1" ++msgstr "1" ++ ++#: Settings.ui.h:72 ++msgid "2" ++msgstr "2" ++ ++#: Settings.ui.h:73 ++msgid "3" ++msgstr "3" ++ ++#: Settings.ui.h:74 ++msgid "4" ++msgstr "4" ++ ++#: Settings.ui.h:75 ++msgid "5" ++msgstr "5" ++ ++#: Settings.ui.h:76 ++msgid "6" ++msgstr "6" ++ ++#: Settings.ui.h:77 ++msgid "7" ++msgstr "7" ++ ++#: Settings.ui.h:78 ++msgid "8" ++msgstr "8" ++ ++#: Settings.ui.h:79 ++msgid "9" ++msgstr "9" ++ ++#: Settings.ui.h:80 ++msgid "10" ++msgstr "10" ++ ++#: Settings.ui.h:81 ++msgid "11" ++msgstr "11" ++ ++#: Settings.ui.h:82 ++msgid "12" ++msgstr "12" ++ ++#: Settings.ui.h:83 ++msgid "13" ++msgstr "13" ++ ++#: Settings.ui.h:84 ++msgid "14" ++msgstr "14" ++ ++#: Settings.ui.h:85 ++msgid "15" ++msgstr "15" ++ ++#: Settings.ui.h:86 ++msgid "16" ++msgstr "16" ++ ++#: Settings.ui.h:87 ++msgid "17" ++msgstr "17" ++ ++#: Settings.ui.h:88 ++msgid "18" ++msgstr "18" ++ ++#: Settings.ui.h:89 ++msgid "19" ++msgstr "19" ++ ++#: Settings.ui.h:90 ++msgid "20" ++msgstr "20" ++ ++#: Settings.ui.h:91 ++msgid "21" ++msgstr "21" ++ ++#: Settings.ui.h:93 ++msgid "Window previews aspect ratio X (width)" ++msgstr "Poměr stran náhledu okna (šířka)" ++ ++#: Settings.ui.h:94 ++msgid "Use custom opacity for the previews background" ++msgstr "Použít vlastní nastavení průhlednosti pro náhledy" ++ ++#: Settings.ui.h:95 ++msgid "If disabled, the previews background have the same opacity as the panel" ++msgstr "Při vypnutí se použije hodnota průhlednosti panelu" ++ ++#: Settings.ui.h:96 ++msgid "Close button and header position" ++msgstr "Pozice titulku a tlačítka zavření okna" ++ ++#: Settings.ui.h:99 ++msgid "Display window preview headers" ++msgstr "Zobrazit titulek okna v náhledech" ++ ++#: Settings.ui.h:100 ++msgid "Font size (px) of the preview titles" ++msgstr "Velikost fontu (px) titulku aplikace" ++ ++#: Settings.ui.h:101 ++msgid "Font weight of the preview titles" ++msgstr "Velikost fontu titulku aplikace" ++ ++#: Settings.ui.h:102 ++msgid "Font color of the preview titles" ++msgstr "Barva fontu (px) titulku aplikace" ++ ++#: Settings.ui.h:103 ++msgid "Enable window peeking" ++msgstr "Povolit režim náhledu okna" ++ ++#: Settings.ui.h:104 ++msgid "" ++"When hovering over a window preview for some time, the window gets " ++"distinguished." ++msgstr "Rozlišit okna po delším zobrazení náhledu." ++ ++#: Settings.ui.h:105 ++msgid "Enter window peeking mode timeout (ms)" ++msgstr "Povolit režim náhledu okna po (ms)" ++ ++#: Settings.ui.h:106 ++msgid "50" ++msgstr "50" ++ ++#: Settings.ui.h:107 ++msgid "" ++"Time of inactivity while hovering over a window preview needed to enter the " ++"window peeking mode." ++msgstr "Čas nečinnosti nad ikonou před přechodem do režimu náhledu okna." ++ ++#: Settings.ui.h:108 ++msgid "Window peeking mode opacity" ++msgstr "Průhlednost režimu náhledu okna" ++ ++#: Settings.ui.h:109 ++msgid "0" ++msgstr "0" ++ ++#: Settings.ui.h:110 ++msgid "" ++"All windows except for the peeked one have their opacity set to the same " ++"value." ++msgstr "Všechna okna, mimo aktivního, mají stejné nastavení průhlednosti." ++ ++#: Settings.ui.h:111 ++msgid "Delay between mouse scroll events (ms)" ++msgstr "Prodleva mezi skrolováním myší" ++ ++#: Settings.ui.h:112 ++msgid "Use this value to limit the number of captured mouse scroll events." ++msgstr "Omezit počet událostí skrolování myší" ++ ++#: Settings.ui.h:113 ++msgid "Super" ++msgstr "Win" ++ ++#: Settings.ui.h:114 ++msgid "Super + Alt" ++msgstr "Win + Alt" ++ ++#: Settings.ui.h:115 ++msgid "Hotkeys prefix" ++msgstr "Zkratka" ++ ++#: Settings.ui.h:116 ++msgid "Hotkeys will either be Super+Number or Super+Alt+Num" ++msgstr "Zkratky budou buď Win+číslo nebo Win+Alt+číslo" ++ ++#: Settings.ui.h:117 ++msgid "Never" ++msgstr "Nikdy" ++ ++#: Settings.ui.h:118 ++msgid "Show temporarily" ++msgstr "Zobrazit dočasně" ++ ++#: Settings.ui.h:119 ++msgid "Always visible" ++msgstr "Vždy viditelné" ++ ++#: Settings.ui.h:121 ++msgid "" ++"Temporarily show the application numbers over the icons when using the " ++"hotkeys." ++msgstr "Dočasně zobrazit čísla aplikací při použití klávesových zkratek." ++ ++#: Settings.ui.h:122 ++msgid "Hide timeout (ms)" ++msgstr "Schovat po (ms)" ++ ++#: Settings.ui.h:123 ++msgid "e.g. q" ++msgstr "např: q" ++ ++#: Settings.ui.h:124 ++msgid "Shortcut to show the overlay for 2 seconds" ++msgstr "Zkratka pro zobrazení přehledu" ++ ++#: Settings.ui.h:125 ++msgid "Show window previews on hotkey" ++msgstr "Zobrazit náhled okna při najetí myši" ++ ++#: Settings.ui.h:126 ++msgid "Show previews when the application have multiple instances" ++msgstr "Zobrazit náhledy pokud má aplikace více otevřených oken" ++ ++#: Settings.ui.h:127 ++msgid "Number row" ++msgstr "Číslo řádku" ++ ++#: Settings.ui.h:128 ++msgid "Numeric keypad" ++msgstr "Numerická klávesnice" ++ ++#: Settings.ui.h:129 ++msgid "Both" ++msgstr "Oba" ++ ++#: Settings.ui.h:130 ++msgid "Hotkeys are activated with" ++msgstr "Aktivovat klávesové zkratky pomocí" ++ ++#: Settings.ui.h:131 ++msgid "Select which keyboard number keys are used to activate the hotkeys" ++msgstr "Vyberte které klávesy jsou použity k aktivaci klávesových zkratek" ++ ++#: Settings.ui.h:132 ++msgid "Current Show Applications icon" ++msgstr "Zobrazit ikonu aplikace" ++ ++#: Settings.ui.h:133 ++msgid "Select a Show Applications image icon" ++msgstr "Vyberte volbu 'Zobrazit ikonu aplikace'" ++ ++#: Settings.ui.h:134 ++msgid "Custom Show Applications image icon" ++msgstr "Vlastní nastavení zobrazení ikony aplikace" ++ ++#: Settings.ui.h:135 ++msgid "Show Applications icon side padding (px)" ++msgstr "Zobrazit ikonu aplikací s mezerou (px)" ++ ++#: Settings.ui.h:136 ++msgid "Reveal the desktop when hovering the Show Desktop button" ++msgstr "Zobrazit pracovní plochu po najetí na tlačítko plochy" ++ ++#: Settings.ui.h:137 ++msgid "Delay before revealing the desktop (ms)" ++msgstr "Zpoždění před zobrazením plochy (ms)" ++ ++#: Settings.ui.h:138 ++msgid "Fade duration (ms)" ++msgstr "Schovat po (ms)" ++ ++#: Settings.ui.h:139 ++msgid "The panel background opacity is affected by" ++msgstr "Nastavení průhlednosti panelu je ovlivněno" ++ ++#: Settings.ui.h:140 ++msgid "Change opacity when a window gets closer than (px)" ++msgstr "Změnit průhlednost při přiblížení okna (px)" ++ ++#: Settings.ui.h:142 ++#, no-c-format ++msgid "Change opacity to (%)" ++msgstr "Změnit průhlednost (%)" ++ ++#: Settings.ui.h:143 ++msgid "Opacity change animation duration (ms)" ++msgstr "Rychlost animace zobrazení/skrytí panelu" ++ ++#: Settings.ui.h:144 ++msgid "Panel screen position" ++msgstr "Pozice panelu na obrazovce" ++ ++#: Settings.ui.h:147 ++msgid "Taskbar position" ++msgstr "Pozice panelu" ++ ++#: Settings.ui.h:148 ++msgid "Clock location" ++msgstr "Umístění hodin" ++ ++#: Settings.ui.h:149 ++msgid "Display the main panel on" ++msgstr "Hlavní panel zobrazit na" ++ ++#: Settings.ui.h:150 ++msgid "Display panels on all monitors" ++msgstr "Zobrazit panel na všech monitorech" ++ ++#: Settings.ui.h:151 ++msgid "Panel Intellihide" ++msgstr "Inteligentní skrývání (Intellihide)" ++ ++#: Settings.ui.h:152 ++msgid "Hide and reveal the panel according to preferences" ++msgstr "Zobrazit/skrýt panel podle nastavení" ++ ++#: Settings.ui.h:153 ++msgid "Position" ++msgstr "Umístění" ++ ++#: Settings.ui.h:154 ++msgid "" ++"Panel Size\n" ++"(default is 48)" ++msgstr "" ++"Výška panelu\n" ++"(výchozí = 48)" ++ ++#: Settings.ui.h:156 ++msgid "" ++"App Icon Margin\n" ++"(default is 8)" ++msgstr "" ++"Rozestup ikon aplikací\n" ++"(výchozí = 8)" ++ ++#: Settings.ui.h:158 ++msgid "" ++"App Icon Padding\n" ++"(default is 4)" ++msgstr "" ++"Okraje ikon aplikací\n" ++"(výchozí = 4)" ++ ++#: Settings.ui.h:160 ++msgid "Running indicator position" ++msgstr "Pozice indikátoru" ++ ++#: Settings.ui.h:161 ++msgid "Running indicator style (Focused app)" ++msgstr "Styl indikátoru běžících aplikací (v popředí)" ++ ++#: Settings.ui.h:169 ++msgid "Running indicator style (Unfocused apps)" ++msgstr "Styl indikátoru běžících aplikací (v pozadí)" ++ ++#: Settings.ui.h:170 ++msgid "Override panel theme background color " ++msgstr "Vlastní barva pozadí panelu " ++ ++#: Settings.ui.h:171 ++msgid "Override panel theme background opacity" ++msgstr "Vlastní průhlednost panelu" ++ ++#: Settings.ui.h:173 ++#, no-c-format ++msgid "Panel background opacity (%)" ++msgstr "Průhlednost panelu (%)" ++ ++#: Settings.ui.h:174 ++msgid "Dynamic background opacity" ++msgstr "Dynamická průhlednost" ++ ++#: Settings.ui.h:175 ++msgid "Change opacity when a window gets close to the panel" ++msgstr "Změnit průhlednost při přiblížení okna" ++ ++#: Settings.ui.h:176 ++msgid "Override panel theme gradient " ++msgstr "Vlastní nastavení barevného přechodu panelu " ++ ++#: Settings.ui.h:178 ++#, no-c-format ++msgid "Gradient top color and opacity (%)" ++msgstr "Horní barva barevného přechodu a průhlednost (%)" ++ ++#: Settings.ui.h:180 ++#, no-c-format ++msgid "Gradient bottom color and opacity (%)" ++msgstr "Dolní barva barevného přechodu a průhlednost (%)" ++ ++#: Settings.ui.h:181 ++msgid "Style" ++msgstr "Vzhled" ++ ++#: Settings.ui.h:186 ++msgid "Show Activities button" ++msgstr "Zobrazit tlačítko aktivit" ++ ++#: Settings.ui.h:187 ++msgid "Show Desktop button" ++msgstr "Zobrazit tlačítko plochy" ++ ++#: Settings.ui.h:188 ++msgid "Show AppMenu button" ++msgstr "Zobrazit tlačítko aplikací" ++ ++#: Settings.ui.h:189 ++msgid "Top Bar > Show App Menu must be enabled in Tweak Tool" ++msgstr "Nabídka aplikace > Musí být povoleno v Gnome Tweak Tool" ++ ++#: Settings.ui.h:190 ++msgid "Show window previews on hover" ++msgstr "Zobrazit náhled okna při najetí myši" ++ ++#: Settings.ui.h:191 ++msgid "Show tooltip on hover" ++msgstr "Zobrazit tip okna při najetí myši" ++ ++#: Settings.ui.h:192 ++msgid "Isolate Workspaces" ++msgstr "Oddělit pracovní plochy" ++ ++#: Settings.ui.h:193 ++msgid "Ungroup applications" ++msgstr "Neseskupené aplikace" ++ ++#: Settings.ui.h:197 ++msgid "Toggle windows" ++msgstr "Přepínat okna" ++ ++#: Settings.ui.h:198 ++msgid "Scroll panel action" ++msgstr "Akce panelu při skrolování" ++ ++#: Settings.ui.h:199 ++msgid "Behavior when mouse scrolling over the panel." ++msgstr "Chování prostředního tlačítko myši nad panelem" ++ ++#: Settings.ui.h:200 ++msgid "Scroll icon action" ++msgstr "Akce kolečka myši" ++ ++#: Settings.ui.h:201 ++msgid "Behavior when mouse scrolling over an application icon." ++msgstr "Chování kolečka myši nad ikonu běžící aplikace." ++ ++#: Settings.ui.h:204 ++msgid "Cycle windows" ++msgstr "Procházet okna" ++ ++#: Settings.ui.h:206 ++msgid "Use hotkeys to activate apps" ++msgstr "Použít klávesové zkratky pro spouštění aplikací" ++ ++#: Settings.ui.h:207 ++msgid "Action" ++msgstr "Akce" ++ ++#: Settings.ui.h:208 ++msgid "" ++"Tray Font Size\n" ++"(0 = theme default)" ++msgstr "Stavové ikony - velikost fontu (0 = výchozí)" ++ ++#: Settings.ui.h:210 ++msgid "" ++"LeftBox Font Size\n" ++"(0 = theme default)" ++msgstr "Levý panel - velikost fontu (0 = výchozí)" ++ ++#: Settings.ui.h:212 ++msgid "" ++"Tray Item Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"Mezery mezi systémovými ikonami\n" ++"(-1 = theme default)" ++ ++#: Settings.ui.h:214 ++msgid "" ++"Status Icon Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"Mezery mezi stavovými ikonami\n" ++"(-1 = výchozí)" ++ ++#: Settings.ui.h:216 ++msgid "" ++"LeftBox Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"Odsazení vlevo\n" ++"(-1 = výchozí)" ++ ++#: Settings.ui.h:218 ++msgid "Animate switching applications" ++msgstr "Animovat přepínání oken" ++ ++#: Settings.ui.h:219 ++msgid "Animate launching new windows" ++msgstr "Animovat spouštěná okna" ++ ++#: Settings.ui.h:220 ++msgid "Keep original gnome-shell dash (overview)" ++msgstr "Ponechat původní 'gnome-shell dash' (přehled úloh)" ++ ++#: Settings.ui.h:221 ++msgid "Activate panel menu buttons (e.g. date menu) on click only" ++msgstr "Aktivovat tlačítka na panelu pouze po stisknutí" ++ ++#: Settings.ui.h:222 ++msgid "App icon secondary (right-click) menu" ++msgstr "Nastavení pravého kliku na ikonu aplikace" ++ ++#: Settings.ui.h:224 ++msgid "Fine-Tune" ++msgstr "Detailní nastavení" ++ ++#: Settings.ui.h:226 ++msgid "GitHub" ++msgstr "GitHub" ++ ++#: Settings.ui.h:227 ++msgid "" ++"Use the buttons below to create a settings file from your current " ++"preferences that can be imported on a different machine." ++msgstr "" ++"Pomocí níže uvedených tlačítek vytvoříte exportujete nastavení do souboru. " ++"Ten lze importovat na jiném počítači." ++ ++#: Settings.ui.h:228 ++msgid "Export and import settings" ++msgstr "Export a Import nastavení" ++ ++#: Settings.ui.h:229 ++msgid "Export to file" ++msgstr "Exportovat do souboru" ++ ++#: Settings.ui.h:230 ++msgid "Import from file" ++msgstr "Importovat ze souboru" ++ ++#: Settings.ui.h:231 ++msgid "" ++"This allows you to update the extension directly from the GitHub repository." ++msgstr "Povolit aktualizace přímo z Github" ++ ++#: Settings.ui.h:232 ++msgid "Updates" ++msgstr "Aktualizace" ++ ++#: Settings.ui.h:233 ++msgid "Periodically check for updates" ++msgstr "Pravidelně kontrolovat aktualizace" ++ ++#: Settings.ui.h:234 ++msgid "Check now" ++msgstr "Zkontrolovat teď" ++ ++#: Settings.ui.h:235 ++msgid "" ++"Be aware, these official Dash to " ++"Panel releases might not be reviewed yet on extensions.gnome.org! Read more" ++msgstr "" ++"Pozor, nové verze nemusím být ještě " ++"schváleny na portálu extensions.gnome.org! Dozvědět se víc" ++ + #~ msgid "Show a dot for each windows of the application." + #~ msgstr "Zobrazit u ikon tečku indikující každé otevřené okno aplikace" + +@@ -1031,3 +2252,42 @@ msgstr "Zobrazovat připojené svazky na pracovní ploše." + + #~ msgid "Ok" + #~ msgstr "Ok" ++ ++#~ msgid "Highlight color" ++#~ msgstr "Barva zvýraznění" ++ ++#~ msgid "Preview timeout on icon leave (ms)" ++#~ msgstr "Skrýt náhled aplikace po odjetí myši (ms)" ++ ++#~ msgid "" ++#~ "If set too low, the window preview of running applications may seem to " ++#~ "close too quickly when trying to enter the popup. If set too high, the " ++#~ "preview may linger too long when moving to an adjacent icon." ++#~ msgstr "" ++#~ "Náhled aplikací může mizet velmi rychle při velmi nízkých hodnotách. Při " ++#~ "velkých hodnotách může naopak zůstávat i po najetí na jinou ikonu " ++#~ "aplikace." ++ ++#~ msgid "Middle click to close window" ++#~ msgstr "Prostřední tlačítko myši zavře okno" ++ ++#~ msgid "Width of the window previews (px)" ++#~ msgstr "Šířka náhledu oken aplikací (px)" ++ ++#~ msgid "Height of the window previews (px)" ++#~ msgstr "Výška náhledu oken aplikací (px)" ++ ++#~ msgid "Padding of the window previews (px)" ++#~ msgstr "Mezery náhledu oken aplikací (px)" ++ ++#~ msgid "Natural" ++#~ msgstr "Přirozené" ++ ++#~ msgid "Left side of panel" ++#~ msgstr "Vlevo na panelu" ++ ++#~ msgid "Centered in content" ++#~ msgstr "Na střed obsahu" ++ ++#~ msgid "Github" ++#~ msgstr "Github" +diff --git a/po/de.po b/po/de.po +index e8246586..3b3de0fd 100644 +--- a/po/de.po ++++ b/po/de.po +@@ -1,5 +1,6 @@ + # #-#-#-#-# de.po (gnome-shell-extensions master) #-#-#-#-# + # #-#-#-#-# de.po (gnome-shell-extensions master) #-#-#-#-# ++# #-#-#-#-# de.po (gnome-shell-extensions master) #-#-#-#-# + # German translation for gnome-shell-extensions. + # Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER + # This file is distributed under the same license as the gnome-shell-extensions package. +@@ -25,11 +26,18 @@ + # Mario Blättermann , 2018. + # rugk , 2019. + # ++# #-#-#-#-# de.po #-#-#-#-# ++# 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. ++# + #, fuzzy + msgid "" + msgstr "" + "#-#-#-#-# de.po (gnome-shell-extensions master) #-#-#-#-#\n" + "#-#-#-#-# de.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"#-#-#-#-# de.po (gnome-shell-extensions master) #-#-#-#-#\n" + "Project-Id-Version: gnome-shell-extensions master\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/" + "issues\n" +@@ -69,6 +77,18 @@ msgstr "" + "Content-Transfer-Encoding: 8bit\n" + "Plural-Forms: nplurals=2; plural=(n != 1);\n" + "X-Generator: Poedit 2.3.1\n" ++"#-#-#-#-# de.po #-#-#-#-#\n" ++"Project-Id-Version: \n" ++"Report-Msgid-Bugs-To: \n" ++"POT-Creation-Date: 2019-10-04 20:47+0200\n" ++"PO-Revision-Date: 2019-10-04 21:49+0200\n" ++"Last-Translator: Jonatan Hatakeyama Zeidler \n" ++"Language-Team: \n" ++"Language: de\n" ++"MIME-Version: 1.0\n" ++"Content-Type: text/plain; charset=UTF-8\n" ++"Content-Transfer-Encoding: 8bit\n" ++"X-Generator: Poedit 2.2.4\n" + + #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3 + msgid "GNOME Classic" +@@ -335,11 +355,11 @@ msgstr "Primärer Anzeige" + msgid "Secondary monitor " + msgstr "Sekundärer Anzeige" + +-#: prefs.js:154 Settings.ui.h:29 ++#: prefs.js:154 Settings.ui.h:29 Settings.ui.h:146 + msgid "Right" + msgstr "Rechts" + +-#: prefs.js:155 Settings.ui.h:26 ++#: prefs.js:155 Settings.ui.h:26 Settings.ui.h:145 + msgid "Left" + msgstr "Links" + +@@ -347,18 +367,32 @@ msgstr "Links" + msgid "Intelligent autohide customization" + msgstr "Automatisches Ausblenden anpassen" + ++# #-#-#-#-# de.po (gnome-shell-extensions master) #-#-#-#-# + # Verwende Übersetzung aus Nautilus +-#: prefs.js:212 prefs.js:393 prefs.js:450 ++#: prefs.js:212 prefs.js:393 prefs.js:450 prefs.js:371 prefs.js:569 ++#: prefs.js:712 prefs.js:837 prefs.js:904 prefs.js:992 prefs.js:1078 ++#: prefs.js:1325 prefs.js:1409 prefs.js:1474 prefs.js:1510 prefs.js:1607 ++#: prefs.js:1641 prefs.js:1683 ++#, fuzzy + msgid "Reset to defaults" +-msgstr "Auf Vorgaben zurücksetzen" ++msgstr "" ++"#-#-#-#-# de.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Auf Vorgaben zurücksetzen\n" ++"#-#-#-#-# de.po #-#-#-#-#\n" ++"Zurücksetzen" + + #: prefs.js:386 + msgid "Show dock and application numbers" + msgstr "Zeige Dock und Anwendungsnummern" + +-#: prefs.js:443 ++#: prefs.js:443 prefs.js:1402 ++#, fuzzy + msgid "Customize middle-click behavior" +-msgstr "Verhalten des mittleren Klick anpassen" ++msgstr "" ++"#-#-#-#-# de.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Verhalten des mittleren Klick anpassen\n" ++"#-#-#-#-# de.po #-#-#-#-#\n" ++"Mittelklick-Verhalten anpassen" + + #: prefs.js:514 + msgid "Customize running indicators" +@@ -384,9 +418,14 @@ msgstr "Randfarbe" + msgid "Border width" + msgstr "Randbreite" + +-#: Settings.ui.h:5 ++#: Settings.ui.h:5 Settings.ui.h:120 ++#, fuzzy + msgid "Number overlay" +-msgstr "Nummer der Überlagung" ++msgstr "" ++"#-#-#-#-# de.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Nummer der Überlagung\n" ++"#-#-#-#-# de.po #-#-#-#-#\n" ++"Nummern-Overlay" + + #: Settings.ui.h:6 + msgid "" +@@ -412,64 +451,109 @@ msgstr "" + msgid "Shortcut for the options above" + msgstr "Tastaturkürzel für die obigen Aktionen" + +-#: Settings.ui.h:10 ++#: Settings.ui.h:10 Settings.ui.h:59 ++#, fuzzy + msgid "Syntax: , , , " +-msgstr "Syntax: , , , " ++msgstr "" ++"#-#-#-#-# de.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Syntax: , , , \n" ++"#-#-#-#-# de.po #-#-#-#-#\n" ++"Syntax: , , , " + + #: Settings.ui.h:11 + msgid "Hide timeout (s)" + msgstr "Ausblende-Verzögerung in s" + +-#: Settings.ui.h:12 ++#: Settings.ui.h:12 Settings.ui.h:2 ++#, fuzzy + msgid "" + "When set to minimize, double clicking minimizes all the windows of the " + "application." + msgstr "" ++"#-#-#-#-# de.po (gnome-shell-extensions master) #-#-#-#-#\n" + "Wenn auf »Minimieren« eingestellt, können durch Doppelklick alle Fenster der " +-"Anwendung gleichzeitig minimiert werden." ++"Anwendung gleichzeitig minimiert werden.\n" ++"#-#-#-#-# de.po #-#-#-#-#\n" ++"Falls Minimieren eingestellt ist, minimiert ein Doppelklick alle Fenster der " ++"Anwendung." + +-#: Settings.ui.h:13 ++#: Settings.ui.h:13 Settings.ui.h:3 ++#, fuzzy + msgid "Shift+Click action" +-msgstr "Wirkung bei Umschalttaste + Mausklick" ++msgstr "" ++"#-#-#-#-# de.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Wirkung bei Umschalttaste + Mausklick\n" ++"#-#-#-#-# de.po #-#-#-#-#\n" ++"Aktion Umschalt+Klick" + + #: Settings.ui.h:14 + msgid "Raise window" + msgstr "Fenster anheben" + +-#: Settings.ui.h:15 ++#: Settings.ui.h:15 Settings.ui.h:5 ++#, fuzzy + msgid "Minimize window" +-msgstr "Minimieren" ++msgstr "" ++"#-#-#-#-# de.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Minimieren\n" ++"#-#-#-#-# de.po #-#-#-#-#\n" ++"Fenster minimieren" + +-#: Settings.ui.h:16 ++#: Settings.ui.h:16 Settings.ui.h:6 ++#, fuzzy + msgid "Launch new instance" +-msgstr "Neues Fenster" ++msgstr "" ++"#-#-#-#-# de.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Neues Fenster\n" ++"#-#-#-#-# de.po #-#-#-#-#\n" ++"Neues Fenster öffnen" + ++# #-#-#-#-# de.po (gnome-shell-extensions master) #-#-#-#-# + # Vielleicht einen Tick besser als „umschalten“? +-#: Settings.ui.h:17 ++#: Settings.ui.h:17 Settings.ui.h:7 ++#, fuzzy + msgid "Cycle through windows" +-msgstr "Zwischen den Fenstern der Anwendung wechseln" ++msgstr "" ++"#-#-#-#-# de.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Zwischen den Fenstern der Anwendung wechseln\n" ++"#-#-#-#-# de.po #-#-#-#-#\n" ++"Fenster durchwechseln" + +-#: Settings.ui.h:18 ++#: Settings.ui.h:18 appIcons.js:1398 appIcons.js:1458 appIcons.js:1460 ++#: Settings.ui.h:10 ++#, fuzzy + msgid "Quit" +-msgstr "Beenden" ++msgstr "" ++"#-#-#-#-# de.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Beenden\n" ++"#-#-#-#-# de.po #-#-#-#-#\n" ++"Schließen" + +-#: Settings.ui.h:19 ++#: Settings.ui.h:19 Settings.ui.h:11 ++#, fuzzy + msgid "Behavior for Middle-Click." +-msgstr "Verhalten bei Mittel-Klick " ++msgstr "" ++"#-#-#-#-# de.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Verhalten bei Mittel-Klick \n" ++"#-#-#-#-# de.po #-#-#-#-#\n" ++"Verhalten bei einem Mittelklick." + +-#: Settings.ui.h:20 +-#, fuzzy ++#: Settings.ui.h:12 + msgid "Middle-Click action" +-msgstr "Wirkung bei Mausklick" ++msgstr "Aktion Mittelklick" + +-#: Settings.ui.h:21 ++#: Settings.ui.h:21 Settings.ui.h:13 ++#, fuzzy + msgid "Behavior for Shift+Middle-Click." +-msgstr "Verhalten bei Umschalttaste+Mittel-Klick." ++msgstr "" ++"#-#-#-#-# de.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Verhalten bei Umschalttaste+Mittel-Klick.\n" ++"#-#-#-#-# de.po #-#-#-#-#\n" ++"Aktion bei Umschalt+Mittelklick." + +-#: Settings.ui.h:22 +-#, fuzzy ++#: Settings.ui.h:14 + msgid "Shift+Middle-Click action" +-msgstr "Wirkung bei Umschalttaste + Mausklick" ++msgstr "Aktion Umschalt+Mittelklick" + + #: Settings.ui.h:23 + msgid "Show the dock on" +@@ -484,11 +568,11 @@ msgstr "Auf allen Bildschirmen anzeigen" + msgid "Position on screen" + msgstr "Position auf Bildschirm" + +-#: Settings.ui.h:27 ++#: Settings.ui.h:27 Settings.ui.h:97 + msgid "Bottom" + msgstr "Unten" + +-#: Settings.ui.h:28 ++#: Settings.ui.h:28 Settings.ui.h:98 + msgid "Top" + msgstr "Oben" + +@@ -524,11 +608,16 @@ msgstr "Feste Icongröße: andere Icons durch Scrollen sichtbar machen" + msgid "Position and size" + msgstr "Position und Größe" + +-#: Settings.ui.h:37 ++#: Settings.ui.h:37 Settings.ui.h:182 ++#, fuzzy + msgid "Show favorite applications" +-msgstr "Favoriten anzeigen" ++msgstr "" ++"#-#-#-#-# de.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Favoriten anzeigen\n" ++"#-#-#-#-# de.po #-#-#-#-#\n" ++"Favoritensymbole anzeigen" + +-#: Settings.ui.h:38 ++#: Settings.ui.h:38 Settings.ui.h:183 + msgid "Show running applications" + msgstr "Laufende Anwendungen anzeigen" + +@@ -548,43 +637,70 @@ msgstr "" + "Falls deaktiviert, sind diese Einstellungen über Gnome-Tweak-Tool oder die " + "Erweiterungsseite erreichbar." + ++# #-#-#-#-# de.po (gnome-shell-extensions master) #-#-#-#-# + # Durchkopplung von Kompositum +-#: Settings.ui.h:42 ++#: Settings.ui.h:42 Settings.ui.h:184 ++#, fuzzy + msgid "Show Applications icon" +-msgstr "Symbol Anwendungen anzeigen anzeigen" ++msgstr "" ++"#-#-#-#-# de.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Symbol Anwendungen anzeigen anzeigen\n" ++"#-#-#-#-# de.po #-#-#-#-#\n" ++"Anwendungen-Symbol anzeigen" + + #: Settings.ui.h:43 + msgid "Move the applications button at the beginning of the dock." + msgstr "Anwendungen-anzeigen-Button an den Anfang verschieben." + ++# #-#-#-#-# de.po (gnome-shell-extensions master) #-#-#-#-# + # Durchkopplung von Kompositum +-#: Settings.ui.h:44 ++#: Settings.ui.h:44 Settings.ui.h:185 ++#, fuzzy + msgid "Animate Show Applications." +-msgstr "Symbol Anwendungen anzeigen animieren" ++msgstr "" ++"#-#-#-#-# de.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Symbol Anwendungen anzeigen animieren\n" ++"#-#-#-#-# de.po #-#-#-#-#\n" ++"Animation bei Anwendungen einblenden." + + #: Settings.ui.h:45 + msgid "Launchers" + msgstr "Starter" + +-#: Settings.ui.h:46 ++#: Settings.ui.h:46 Settings.ui.h:205 ++#, fuzzy + msgid "" + "Enable Super+(0-9) as shortcuts to activate apps. It can also be used " + "together with Shift and Ctrl." + msgstr "" ++"#-#-#-#-# de.po (gnome-shell-extensions master) #-#-#-#-#\n" + "Benutze Super+(0-9) als Tastaturkürzel um Anwendungen zu aktivieren. Kann " +-"auch zusammen mit Umschalttaste und Strg. genutzt werden." ++"auch zusammen mit Umschalttaste und Strg. genutzt werden.\n" ++"#-#-#-#-# de.po #-#-#-#-#\n" ++"Super+(0-9) als Kürzel zum Aktivieren von Anwendungen nutzen. Kann auch mit " ++"Strg und Umschalttaste genutzt werden." + + #: Settings.ui.h:47 + msgid "Use keyboard shortcuts to activate apps" + msgstr "Benutze Tastaturkürzel um Anwendungen zu aktivieren" + +-#: Settings.ui.h:48 ++#: Settings.ui.h:48 Settings.ui.h:195 ++#, fuzzy + msgid "Behaviour when clicking on the icon of a running application." +-msgstr "Verhalten bei Mausklick auf das Icon einer laufenden Anwendung." ++msgstr "" ++"#-#-#-#-# de.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Verhalten bei Mausklick auf das Icon einer laufenden Anwendung.\n" ++"#-#-#-#-# de.po #-#-#-#-#\n" ++"Verhalten beim Anklicken des Symbols einer laufenden Anwendung." + +-#: Settings.ui.h:49 ++#: Settings.ui.h:49 Settings.ui.h:196 ++#, fuzzy + msgid "Click action" +-msgstr "Wirkung bei Mausklick" ++msgstr "" ++"#-#-#-#-# de.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Wirkung bei Mausklick\n" ++"#-#-#-#-# de.po #-#-#-#-#\n" ++"Klickaktion" + + #: Settings.ui.h:51 + msgid "Minimize or overview" +@@ -600,16 +716,22 @@ msgstr "Verhalten bei Mausklick auf das Icon einer laufenden Anwendung." + msgid "Scroll action" + msgstr "Wirkung bei Mausklick" + +-#: Settings.ui.h:54 ++#: Settings.ui.h:54 Settings.ui.h:202 + msgid "Do nothing" + msgstr "Nichts tun" + +-#: Settings.ui.h:55 ++#: Settings.ui.h:55 Settings.ui.h:203 ++#, fuzzy + msgid "Switch workspace" +-msgstr "Arbeitsfläche umschalten" ++msgstr "" ++"#-#-#-#-# de.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Arbeitsfläche umschalten\n" ++"#-#-#-#-# de.po #-#-#-#-#\n" ++"Arbeitsfläche wechseln" + ++# #-#-#-#-# de.po (gnome-shell-extensions master) #-#-#-#-# + # Verwende Übersetzung aus Nautilus +-#: Settings.ui.h:56 ++#: Settings.ui.h:56 Settings.ui.h:194 + msgid "Behavior" + msgstr "Verhalten" + +@@ -670,7 +792,7 @@ msgstr "Erzwinge rechte Ecke\n" + msgid "Appearance" + msgstr "Erscheinungsbild" + +-#: Settings.ui.h:71 ++#: Settings.ui.h:71 Settings.ui.h:225 + msgid "version: " + msgstr "Version: " + +@@ -686,19 +808,26 @@ msgstr "Erstellt von" + msgid "Webpage" + msgstr "Internetseite" + +-#: Settings.ui.h:75 ++#: Settings.ui.h:75 Settings.ui.h:236 ++#, fuzzy + msgid "" + "This program comes with ABSOLUTELY NO WARRANTY.\n" +-"See the GNU General Public License, version 2 or later for details." ++"See the GNU General Public License, version 2 or later for details." + msgstr "" ++"#-#-#-#-# de.po (gnome-shell-extensions master) #-#-#-#-#\n" + "Für dieses Programm besteht KEINERLEI GARANTIE.\n" + " Details finden Sie in der GNU General Public License, Version 2 oder später." ++"a>.\n" ++"#-#-#-#-# de.po #-#-#-#-#\n" ++"Für dieses Programm besteht KEINERLEI GARANTIE.\n" ++"Details unter GNU General Public License, version 2 or later" + ++# #-#-#-#-# de.po (gnome-shell-extensions master) #-#-#-#-# + # Verwende Übersetzung aus Nautilus +-#: Settings.ui.h:77 ++#: Settings.ui.h:77 Settings.ui.h:238 + msgid "About" + msgstr "Info" + +@@ -728,7 +857,7 @@ msgstr "Dock einblenden, falls es keine Anwendungsfenster überlagert." + msgid "Dodge windows" + msgstr "Fenstern ausweichen" + +-#: Settings.ui.h:84 ++#: Settings.ui.h:84 Settings.ui.h:49 + msgid "All windows" + msgstr "Alle Fenster" + +@@ -857,7 +986,7 @@ msgstr "Hintergrund ändern …" + msgid "Display Settings" + msgstr "Anzeigeeinstellungen" + +-#: desktopGrid.js:360 ++#: desktopGrid.js:360 appIcons.js:1726 + msgid "Settings" + msgstr "Einstellungen" + +@@ -953,6 +1082,1079 @@ msgstr "Eingebundene Laufwerke anzeigen" + msgid "Show mounted drives in the desktop." + msgstr "Eingebundene Laufwerke auf der Arbeitsfläche anzeigen." + ++#: Settings.ui.h:71 ++msgid "1" ++msgstr "1" ++ ++#: Settings.ui.h:72 ++msgid "2" ++msgstr "2" ++ ++#: Settings.ui.h:73 ++msgid "3" ++msgstr "3" ++ ++#: Settings.ui.h:74 ++msgid "4" ++msgstr "4" ++ ++#: Settings.ui.h:86 ++msgid "16" ++msgstr "16" ++ ++#: prefs.js:211 ++msgid "Top, with plugin icons collapsed to bottom" ++msgstr "Oben, mit Erweiterungssymbolen nach unten eingeklappt" ++ ++#: prefs.js:211 ++msgid "Left, with plugin icons collapsed to right" ++msgstr "Links, mit Erweiterungssymbolen nach rechts eingeklappt" ++ ++#: prefs.js:212 ++msgid "Top, with fixed center plugin icons" ++msgstr "Oben, mit fix zentrierten Erweiterungssymbolen" ++ ++#: prefs.js:212 ++msgid "Left, with fixed center plugin icons" ++msgstr "Links, mit fix zentrierten Erweiterungssymbolen" ++ ++#: prefs.js:213 ++msgid "Top, with floating center plugin icons" ++msgstr "Oben, mit beweglich zentrierten Erweiterungssymbolen" ++ ++#: prefs.js:213 ++msgid "Left, with floating center plugin icons" ++msgstr "Links, mit beweglich zentrierten Erweiterungssymbolen" ++ ++#: prefs.js:214 ++msgid "Center, fixed in middle of monitor" ++msgstr "Mitte, fest in der Bildschirmmitte" ++ ++#: prefs.js:215 ++msgid "Center, floating between top and bottom elements" ++msgstr "Mitte, beweglich zwischen oberen und unteren Elementen" ++ ++#: prefs.js:215 ++msgid "Center, floating between left and right elements" ++msgstr "Mitte, beweglich zwischen linken und rechten Elementen" ++ ++#: prefs.js:219 ++msgid "Top of plugin icons" ++msgstr "Oberhalb der Erweiterungssymbole" ++ ++#: prefs.js:219 ++msgid "Left of plugin icons" ++msgstr "Links der Erweiterungssymbole" ++ ++#: prefs.js:220 ++msgid "Bottom of plugin icons" ++msgstr "Unterhalb der Erweiterungssymbole" ++ ++#: prefs.js:220 ++msgid "Right of plugin icons" ++msgstr "Rechts der Erweiterungssymbole" ++ ++#: prefs.js:221 ++msgid "Top of system indicators" ++msgstr "Oberhalb der Systemindikatoren" ++ ++#: prefs.js:221 ++msgid "Left of system indicators" ++msgstr "Links der Systemindikatoren" ++ ++#: prefs.js:222 ++msgid "Bottom of system indicators" ++msgstr "Unterhalb der Systemindikatoren" ++ ++#: prefs.js:222 ++msgid "Right of system indicators" ++msgstr "Rechts der Systemindikatoren" ++ ++#: prefs.js:223 ++msgid "Top of taskbar" ++msgstr "Oberhalb der Anwendungsleiste" ++ ++#: prefs.js:223 ++msgid "Left of taskbar" ++msgstr "Links der Anwendungsleiste" ++ ++#: prefs.js:224 ++msgid "Bottom of taskbar" ++msgstr "Unterhalb der Anwendungsleiste" ++ ++#: prefs.js:224 ++msgid "Right of taskbar" ++msgstr "Rechts der Anwendungsleiste" ++ ++#: prefs.js:230 ++msgid "Show Desktop button height (px)" ++msgstr "Schreibtisch-Schaltflächenhöhe (px)" ++ ++#: prefs.js:230 ++msgid "Show Desktop button width (px)" ++msgstr "Schreibtisch-Schaltflächenbreite (px)" ++ ++#: prefs.js:364 ++msgid "Running Indicator Options" ++msgstr "Optionen Aktiv-Markierungen" ++ ++#: prefs.js:514 ++msgid "Default (Primary monitor)" ++msgstr "Vorgabe (Primärer Monitor)" ++ ++#: prefs.js:517 ++msgid "Monitor " ++msgstr "Bildschirm " ++ ++#: prefs.js:562 ++msgid "Multi-monitors options" ++msgstr "Optionen Mehrere Bildschirme" ++ ++#: prefs.js:705 ++msgid "Dynamic opacity options" ++msgstr "Optionen Dynamische Deckkraft" ++ ++#: prefs.js:830 ++msgid "Intellihide options" ++msgstr "Optionen zum automatischen Ausblenden" ++ ++#: prefs.js:897 ++msgid "Show Applications options" ++msgstr "Anwendungsoptionen anzeigen" ++ ++#: prefs.js:985 ++msgid "Show Desktop options" ++msgstr "Schreibtisch-Optionen anzeigen" ++ ++#: prefs.js:1071 ++msgid "Window preview options" ++msgstr "Optionen Fenstervorschau" ++ ++#: prefs.js:1318 ++msgid "Ungrouped application options" ++msgstr "Optionen nicht gruppierter Anwendungen" ++ ++#: prefs.js:1467 ++msgid "Customize panel scroll behavior" ++msgstr "Leisten-Scroll-Verhalten anpassen" ++ ++#: prefs.js:1503 ++msgid "Customize icon scroll behavior" ++msgstr "Symbol-Scroll-Verhalten anpassen" ++ ++#: prefs.js:1600 ++msgid "Advanced hotkeys options" ++msgstr "Erweiterte Schnelltastenoptionen" ++ ++#: prefs.js:1634 ++msgid "Secondary Menu Options" ++msgstr "Rechtsklickmenü-Optionen" ++ ++#: prefs.js:1676 Settings.ui.h:223 ++msgid "Advanced Options" ++msgstr "Erweiterte Optionen" ++ ++#: prefs.js:1763 ++msgid "Export settings" ++msgstr "Einstellungen exportieren" ++ ++#: prefs.js:1780 ++msgid "Import settings" ++msgstr "Einstellungen importieren" ++ ++#: appIcons.js:1380 ++msgid "Show Details" ++msgstr "Details anzeigen" ++ ++#: appIcons.js:1398 ++msgid "New Window" ++msgstr "Neues Fenster" ++ ++#: appIcons.js:1460 ++msgid "Windows" ++msgstr "Fenster" ++ ++#: appIcons.js:1684 ++msgid "Power options" ++msgstr "Energieoptionen" ++ ++#: appIcons.js:1689 ++msgid "Event logs" ++msgstr "Ereignislogs" ++ ++#: appIcons.js:1694 ++msgid "System" ++msgstr "System" ++ ++#: appIcons.js:1699 ++msgid "Device Management" ++msgstr "Geräteverwaltung" ++ ++#: appIcons.js:1704 ++msgid "Disk Management" ++msgstr "Festplattenverwaltung" ++ ++#: appIcons.js:1711 ++msgid "Terminal" ++msgstr "Terminal" ++ ++#: appIcons.js:1716 ++msgid "System monitor" ++msgstr "Systemüberwachung" ++ ++#: appIcons.js:1721 ++msgid "Files" ++msgstr "Dateien" ++ ++#: appIcons.js:1733 ++msgid "Unlock taskbar" ++msgstr "Anwendungsleiste entsperren" ++ ++#: appIcons.js:1733 ++msgid "Lock taskbar" ++msgstr "Anwendungsleiste sperren" ++ ++#: appIcons.js:1738 ++msgid "Dash to Panel Settings" ++msgstr "Erweiterungseinstellungen" ++ ++#: appIcons.js:1745 ++msgid "Restore Windows" ++msgstr "Fenster wiederherstellen" ++ ++#: appIcons.js:1745 ++msgid "Show Desktop" ++msgstr "Schreibtisch anzeigen" ++ ++#: Settings.ui.h:1 ++msgid "Nothing yet!" ++msgstr "Noch nichts!" ++ ++#: Settings.ui.h:4 ++msgid "Raise windows" ++msgstr "Fenster nach vorne holen" ++ ++#: Settings.ui.h:8 ++msgid "Cycle windows + minimize" ++msgstr "Fenster durchwechseln + minimieren" ++ ++#: Settings.ui.h:9 ++msgid "Toggle single / Preview multiple" ++msgstr "Einzelumschaltung / Vorschau mehrere" ++ ++#: Settings.ui.h:15 ++msgid "Isolate monitors" ++msgstr "Bildschirme isolieren" ++ ++#: Settings.ui.h:16 ++msgid "Display favorite applications on all monitors" ++msgstr "Favoriten auf allen Bildschirmen anzeigen" ++ ++#: Settings.ui.h:17 ++msgid "Display the clock on all monitors" ++msgstr "Uhr auf allen Bildschirmen anzeigen" ++ ++#: Settings.ui.h:18 ++msgid "Display the status menu on all monitors" ++msgstr "Statusmenü auf allen Bildschirmen anzeigen" ++ ++#: Settings.ui.h:19 ++msgid "Integrate AppMenu items" ++msgstr "Integriere Einträge aus Anwendungsmenü" ++ ++#: Settings.ui.h:20 ++msgid "Show Details menu item" ++msgstr "Details anzeigen-Menüeintrag" ++ ++#: Settings.ui.h:21 ++msgid "Highlight focused application" ++msgstr "Fokussierte Anwendung hervorheben" ++ ++#: Settings.ui.h:22 ++msgid "Icon dominant color" ++msgstr "Dominante Symbolfarbe" ++ ++#: Settings.ui.h:23 ++msgid "Custom color" ++msgstr "Angepasste Farbe" ++ ++#: Settings.ui.h:24 ++msgid "Highlight opacity" ++msgstr "Deckkraft Hervorhebung" ++ ++#: Settings.ui.h:25 ++msgid "Indicator height (px)" ++msgstr "Symbolhöhe (px)" ++ ++#: Settings.ui.h:26 ++msgid "Indicator color - Icon Dominant" ++msgstr "Symbolfarbe - Symbol Dominant" ++ ++#: Settings.ui.h:27 ++msgid "Indicator color - Override Theme" ++msgstr "Symbolfarbe - Thema überschreiben" ++ ++#: Settings.ui.h:28 ++msgid "1 window open (or ungrouped)" ++msgstr "1 Fenster offen (oder nicht gruppiert)" ++ ++#: Settings.ui.h:29 ++msgid "Apply to all" ++msgstr "Auf alle anwenden" ++ ++#: Settings.ui.h:30 ++msgid "2 windows open" ++msgstr "2 Fenster offen" ++ ++#: Settings.ui.h:31 ++msgid "3 windows open" ++msgstr "3 Fenster offen" ++ ++#: Settings.ui.h:32 ++msgid "4+ windows open" ++msgstr "4+ Fenster offen" ++ ++#: Settings.ui.h:33 ++msgid "Use different for unfocused" ++msgstr "Andere für nicht fokussierte" ++ ++#: Settings.ui.h:34 ++msgid "Font size (px) of the application titles (default is 14)" ++msgstr "Schriftgröße (px) des Anwendungstitels (14 ist Vorgabe)" ++ ++#: Settings.ui.h:35 ++msgid "Font weight of application titles" ++msgstr "Schriftdicke der Anwendungstitel" ++ ++#: Settings.ui.h:36 ++msgid "inherit from theme" ++msgstr "Vom Thema übernehmen" ++ ++#: Settings.ui.h:37 ++msgid "normal" ++msgstr "normal" ++ ++#: Settings.ui.h:38 ++msgid "lighter" ++msgstr "dünner" ++ ++#: Settings.ui.h:39 ++msgid "bold" ++msgstr "dick" ++ ++#: Settings.ui.h:40 ++msgid "bolder" ++msgstr "dicker" ++ ++#: Settings.ui.h:41 ++msgid "Font color of the application titles" ++msgstr "Schriftfarbe des Anwendungstitels" ++ ++#: Settings.ui.h:42 ++msgid "Maximum width (px) of the application titles (default is 160)" ++msgstr "Maximale Breite (px) des Anwendungstitels (160 ist Vorgabe)" ++ ++#: Settings.ui.h:43 ++msgid "Use a fixed width for the application titles" ++msgstr "Feste Breite für Anwendungstitel nutzen" ++ ++#: Settings.ui.h:44 ++msgid "" ++"The application titles all have the same width, even if their texts are " ++"shorter than the maximum width. The maximum width value is used as the fixed " ++"width." ++msgstr "" ++"Die Anwendungstitel haben alle die gleiche Breite, selbst wenn der Text " ++"kürzer ist als die maximale Breite. Die maximale Breite wird als feste " ++"Breite genutzt." ++ ++#: Settings.ui.h:45 ++msgid "Display running indicators on unfocused applications" ++msgstr "Läuft-Indikatoren auf nicht fokussierten Anwendungen anzeigen" ++ ++#: Settings.ui.h:46 ++msgid "Use the favorite icons as application launchers" ++msgstr "Favoritensymbole als Anwendungsstarter nutzen" ++ ++#: Settings.ui.h:47 ++msgid "Only hide the panel when it is obstructed by windows " ++msgstr "Leiste nur bei Überschneidung mit Fenstern ausblenden " ++ ++#: Settings.ui.h:48 ++msgid "The panel hides from" ++msgstr "Die Leiste weicht aus" ++ ++#: Settings.ui.h:50 ++msgid "Focused windows" ++msgstr "Fokussierte Fenster" ++ ++#: Settings.ui.h:51 ++msgid "Maximized windows" ++msgstr "Maximierte Fenster" ++ ++#: Settings.ui.h:52 ++msgid "Require pressure at the edge of the screen to reveal the panel" ++msgstr "Druckschwelle am Rand zum Einblenden der Leiste" ++ ++#: Settings.ui.h:53 ++msgid "Required pressure threshold (px)" ++msgstr "Benötigte Druckschwelle (px)" ++ ++#: Settings.ui.h:54 ++msgid "Required pressure timeout (ms)" ++msgstr "Benötigte Druckverzögerung (ms)" ++ ++#: Settings.ui.h:55 ++msgid "Allow the panel to be revealed while in fullscreen mode" ++msgstr "Einblenden der Leiste im Vollbildmodus erlauben" ++ ++#: Settings.ui.h:56 ++msgid "Only hide secondary panels (requires multi-monitors option)" ++msgstr "Nur sekundäre Leisten ausblenden (benötigt Option Mehrere Bildschirme)" ++ ++#: Settings.ui.h:57 ++msgid "e.g. i" ++msgstr "z.B. i" ++ ++#: Settings.ui.h:58 ++msgid "Keyboard shortcut to reveal and hold the panel" ++msgstr "Tastenkürzel zum Einblenden und Halten der Leiste" ++ ++#: Settings.ui.h:60 ++msgid "Hide and reveal animation duration (ms)" ++msgstr "Ein-/Ausblenddauer (ms)" ++ ++#: Settings.ui.h:61 ++msgid "Delay before hiding the panel (ms)" ++msgstr "Verzögerung vor dem Ausblenden (ms)" ++ ++#: Settings.ui.h:62 ++msgid "Delay before enabling intellihide on start (ms)" ++msgstr "Verzögerung des automatischen Ausblendens beim Start (ms)" ++ ++#: Settings.ui.h:63 ++msgid "Time (ms) before showing (100 is default)" ++msgstr "Verzögerung (ms) beim Einblenden (Standard ist 100)" ++ ++#: Settings.ui.h:64 ++msgid "Animation time (ms)" ++msgstr "Animationszeit (ms)" ++ ++#: Settings.ui.h:65 ++msgid "Time (ms) before hiding (100 is default)" ++msgstr "Verzögerung (ms) beim Ausblenden (Vorgabe ist 100)" ++ ++#: Settings.ui.h:66 ++msgid "Immediate on application icon click" ++msgstr "Sofort beim Klick auf das Anwendungssymbol" ++ ++#: Settings.ui.h:67 ++msgid "Middle click on the preview to close the window" ++msgstr "Mittelklick auf Vorschau zum Schließen des Fensters" ++ ++#: Settings.ui.h:68 ++msgid "Window previews preferred size (px)" ++msgstr "Bevorzugte Fenstervorschaugröße (px)" ++ ++#: Settings.ui.h:69 ++msgid "Window previews aspect ratio Y (height)" ++msgstr "Fenstervorschau Format Y (Höhe)" ++ ++#: Settings.ui.h:70 ++msgid "Window previews padding (px)" ++msgstr "Abstand Fenstervorschau (px)" ++ ++#: Settings.ui.h:75 ++msgid "5" ++msgstr "5" ++ ++#: Settings.ui.h:76 ++msgid "6" ++msgstr "6" ++ ++#: Settings.ui.h:77 ++msgid "7" ++msgstr "7" ++ ++#: Settings.ui.h:78 ++msgid "8" ++msgstr "8" ++ ++#: Settings.ui.h:79 ++msgid "9" ++msgstr "9" ++ ++#: Settings.ui.h:80 ++msgid "10" ++msgstr "10" ++ ++#: Settings.ui.h:81 ++msgid "11" ++msgstr "11" ++ ++#: Settings.ui.h:82 ++msgid "12" ++msgstr "12" ++ ++#: Settings.ui.h:83 ++msgid "13" ++msgstr "13" ++ ++#: Settings.ui.h:84 ++msgid "14" ++msgstr "14" ++ ++#: Settings.ui.h:85 ++msgid "15" ++msgstr "15" ++ ++#: Settings.ui.h:87 ++msgid "17" ++msgstr "17" ++ ++#: Settings.ui.h:88 ++msgid "18" ++msgstr "18" ++ ++#: Settings.ui.h:89 ++msgid "19" ++msgstr "19" ++ ++#: Settings.ui.h:90 ++msgid "20" ++msgstr "20" ++ ++#: Settings.ui.h:91 ++msgid "21" ++msgstr "21" ++ ++#: Settings.ui.h:92 ++msgid "Fixed" ++msgstr "Fest" ++ ++#: Settings.ui.h:93 ++msgid "Window previews aspect ratio X (width)" ++msgstr "Fenstervorschau Format X (Breite)" ++ ++#: Settings.ui.h:94 ++msgid "Use custom opacity for the previews background" ++msgstr "Angepasste Deckkraft für Vorschauhintergrund" ++ ++#: Settings.ui.h:95 ++msgid "If disabled, the previews background have the same opacity as the panel" ++msgstr "" ++"Falls deaktiviert, hat der Vorschauhintergrund die gleiche Deckkraft wie die " ++"Leiste" ++ ++#: Settings.ui.h:96 ++msgid "Close button and header position" ++msgstr "Schließenschaltfläche und Position Fenstertitel" ++ ++#: Settings.ui.h:99 ++msgid "Display window preview headers" ++msgstr "Fenstertitel in Vorschau anzeigen" ++ ++#: Settings.ui.h:100 ++msgid "Font size (px) of the preview titles" ++msgstr "Schriftgröße (px) des Vorschauanwendungstitels" ++ ++#: Settings.ui.h:101 ++msgid "Font weight of the preview titles" ++msgstr "Schriftdicke des Vorschauanwendungstitels" ++ ++#: Settings.ui.h:102 ++msgid "Font color of the preview titles" ++msgstr "Schriftfarbe des Vorschauanwendungstitels" ++ ++#: Settings.ui.h:103 ++msgid "Enable window peeking" ++msgstr "Fensterhervorhebung aktivieren" ++ ++#: Settings.ui.h:104 ++msgid "" ++"When hovering over a window preview for some time, the window gets " ++"distinguished." ++msgstr "" ++"Wenn der Mauszeiger über einer Fenstervorschau verweilt, wird das Fenster " ++"hervorgehoben." ++ ++#: Settings.ui.h:105 ++msgid "Enter window peeking mode timeout (ms)" ++msgstr "Zeitgrenze zur Aktivierung der Fensterhervorhebung (ms)" ++ ++#: Settings.ui.h:106 ++msgid "50" ++msgstr "50" ++ ++#: Settings.ui.h:107 ++msgid "" ++"Time of inactivity while hovering over a window preview needed to enter the " ++"window peeking mode." ++msgstr "" ++"Verzögerung, während der der Mauszeiger über einer Fenstervorschau bleiben " ++"muss, um die Fensterhervorhebung zu aktivieren." ++ ++#: Settings.ui.h:108 ++msgid "Window peeking mode opacity" ++msgstr "Deckkraft Fensterhervorhebung" ++ ++#: Settings.ui.h:109 ++msgid "0" ++msgstr "0" ++ ++#: Settings.ui.h:110 ++msgid "" ++"All windows except for the peeked one have their opacity set to the same " ++"value." ++msgstr "" ++"Die Deckkraft aller Fenster, außer dem hervorgehobenen, hat denselben Wert." ++ ++#: Settings.ui.h:111 ++msgid "Delay between mouse scroll events (ms)" ++msgstr "Verzögerung zwischen Maus-Scroll-Ereignissen (ms)" ++ ++#: Settings.ui.h:112 ++msgid "Use this value to limit the number of captured mouse scroll events." ++msgstr "Dieser Wert limitiert die Anzahl akzeptierter Maus-Scroll-Ereignisse." ++ ++#: Settings.ui.h:113 ++msgid "Super" ++msgstr "Super" ++ ++#: Settings.ui.h:114 ++msgid "Super + Alt" ++msgstr "Super + Alt" ++ ++#: Settings.ui.h:115 ++msgid "Hotkeys prefix" ++msgstr "Schnelltasten-Präfix" ++ ++#: Settings.ui.h:116 ++msgid "Hotkeys will either be Super+Number or Super+Alt+Num" ++msgstr "Schnelltasten sind entweder Super+Nummer oder Super+Alt+Nummer" ++ ++#: Settings.ui.h:117 ++msgid "Never" ++msgstr "Nie" ++ ++#: Settings.ui.h:118 ++msgid "Show temporarily" ++msgstr "Vorübergehend anzeigen" ++ ++#: Settings.ui.h:119 ++msgid "Always visible" ++msgstr "Immer sichtbar" ++ ++#: Settings.ui.h:121 ++msgid "" ++"Temporarily show the application numbers over the icons when using the " ++"hotkeys." ++msgstr "" ++"Zeige Anwendungsnummern über Symbolen, während Schnelltasten gedrückt werden." ++ ++#: Settings.ui.h:122 ++msgid "Hide timeout (ms)" ++msgstr "Ausblendeverzögerung (ms)" ++ ++#: Settings.ui.h:123 ++msgid "e.g. q" ++msgstr "z.B. q" ++ ++#: Settings.ui.h:124 ++msgid "Shortcut to show the overlay for 2 seconds" ++msgstr "Kürzel zum Anzeigen der Nummern für 2 Sekunden" ++ ++#: Settings.ui.h:125 ++msgid "Show window previews on hotkey" ++msgstr "Fenstervorschau per Tastenkürzel einblenden" ++ ++#: Settings.ui.h:126 ++msgid "Show previews when the application have multiple instances" ++msgstr "Vorschau anzeigen, wenn Anwendungen mehrere Fenster hat" ++ ++#: Settings.ui.h:127 ++msgid "Number row" ++msgstr "Nummernreihe" ++ ++#: Settings.ui.h:128 ++msgid "Numeric keypad" ++msgstr "Zahlenfeld" ++ ++#: Settings.ui.h:129 ++msgid "Both" ++msgstr "Beide" ++ ++#: Settings.ui.h:130 ++msgid "Hotkeys are activated with" ++msgstr "Schnelltasten aktivieren mit" ++ ++#: Settings.ui.h:131 ++msgid "Select which keyboard number keys are used to activate the hotkeys" ++msgstr "Auswählen, welche Zahlenfeldtasten die Schnelltasten aktivieren" ++ ++#: Settings.ui.h:132 ++msgid "Current Show Applications icon" ++msgstr "Aktuelles Anwendungen anzeigen-Symbol" ++ ++#: Settings.ui.h:133 ++msgid "Select a Show Applications image icon" ++msgstr "Anwendungen anzeigen-Symbol auswählen" ++ ++#: Settings.ui.h:134 ++msgid "Custom Show Applications image icon" ++msgstr "Angepasstes Anwendungen anzeigen-Symbol" ++ ++#: Settings.ui.h:135 ++msgid "Show Applications icon side padding (px)" ++msgstr "Seitenabstand bei Anwendungssymbolen anzeigen (px)" ++ ++#: Settings.ui.h:136 ++msgid "Reveal the desktop when hovering the Show Desktop button" ++msgstr "Schreibtisch zeigen, wenn Maus die Schreibtischschaltfläche berührt" ++ ++#: Settings.ui.h:137 ++msgid "Delay before revealing the desktop (ms)" ++msgstr "Verzögerung beim Zeigen des Schreibtischs (ms)" ++ ++#: Settings.ui.h:138 ++msgid "Fade duration (ms)" ++msgstr "Ausblendedauer (ms)" ++ ++#: Settings.ui.h:139 ++msgid "The panel background opacity is affected by" ++msgstr "Die Deckkraft des Leistenhintergrunds wird beeinflusst durch" ++ ++#: Settings.ui.h:140 ++msgid "Change opacity when a window gets closer than (px)" ++msgstr "Deckkraft ändern, wenn Fenster näher kommt als (px)" ++ ++#: Settings.ui.h:142 ++#, no-c-format ++msgid "Change opacity to (%)" ++msgstr "Deckkraft ändern zu (%)" ++ ++#: Settings.ui.h:143 ++msgid "Opacity change animation duration (ms)" ++msgstr "Animationsdauer Änderung Deckkraft (ms)" ++ ++#: Settings.ui.h:144 ++msgid "Panel screen position" ++msgstr "Position der Leiste" ++ ++#: Settings.ui.h:147 ++msgid "Taskbar position" ++msgstr "Position Anwendungsleiste" ++ ++#: Settings.ui.h:148 ++msgid "Clock location" ++msgstr "Position der Uhr" ++ ++#: Settings.ui.h:149 ++msgid "Display the main panel on" ++msgstr "Hauptleiste anzeigen auf" ++ ++#: Settings.ui.h:150 ++msgid "Display panels on all monitors" ++msgstr "Leisten auf allen Bildschirmen anzeigen" ++ ++#: Settings.ui.h:151 ++msgid "Panel Intellihide" ++msgstr "Automatischen Ausblenden" ++ ++#: Settings.ui.h:152 ++msgid "Hide and reveal the panel according to preferences" ++msgstr "Leiste entsprechend der Einstellungen ein-/ausblenden" ++ ++#: Settings.ui.h:153 ++msgid "Position" ++msgstr "Position" ++ ++#: Settings.ui.h:154 ++msgid "" ++"Panel Size\n" ++"(default is 48)" ++msgstr "" ++"Leistengröße\n" ++"(48 ist Standard)" ++ ++#: Settings.ui.h:156 ++msgid "" ++"App Icon Margin\n" ++"(default is 8)" ++msgstr "" ++"Symbolabstand\n" ++"(8 ist Standard)" ++ ++#: Settings.ui.h:158 ++msgid "" ++"App Icon Padding\n" ++"(default is 4)" ++msgstr "" ++"Symbolabstand\n" ++"(Vorgabewert ist 4)" ++ ++#: Settings.ui.h:160 ++msgid "Running indicator position" ++msgstr "Position Aktiv-Markierung" ++ ++#: Settings.ui.h:161 ++msgid "Running indicator style (Focused app)" ++msgstr "Stil Aktiv-Markierung (fokussierte Anwendung)" ++ ++#: Settings.ui.h:162 ++msgid "Dots" ++msgstr "Punkte" ++ ++#: Settings.ui.h:163 ++msgid "Squares" ++msgstr "Quadrate" ++ ++#: Settings.ui.h:164 ++msgid "Dashes" ++msgstr "Striche" ++ ++#: Settings.ui.h:165 ++msgid "Segmented" ++msgstr "Unterteilt" ++ ++#: Settings.ui.h:166 ++msgid "Solid" ++msgstr "Fest" ++ ++#: Settings.ui.h:167 ++msgid "Ciliora" ++msgstr "Ciliora" ++ ++#: Settings.ui.h:168 ++msgid "Metro" ++msgstr "Metro" ++ ++#: Settings.ui.h:169 ++msgid "Running indicator style (Unfocused apps)" ++msgstr "Stil Aktiv-Markierung (nicht fokussierte Anwendung)" ++ ++#: Settings.ui.h:170 ++msgid "Override panel theme background color " ++msgstr "Leistenhintergrundfarbe des Themas überschreiben " ++ ++#: Settings.ui.h:171 ++msgid "Override panel theme background opacity" ++msgstr "Leistenhintergrunddeckkraft des Themas überschreiben" ++ ++#: Settings.ui.h:173 ++#, no-c-format ++msgid "Panel background opacity (%)" ++msgstr "Leistenhintergrunddeckkraft (%)" ++ ++#: Settings.ui.h:174 ++msgid "Dynamic background opacity" ++msgstr "Dynamische Hintergrunddeckkraft" ++ ++#: Settings.ui.h:175 ++msgid "Change opacity when a window gets close to the panel" ++msgstr "Deckkraft ändern, wenn Fenster der Leiste nahe kommt" ++ ++#: Settings.ui.h:176 ++msgid "Override panel theme gradient " ++msgstr "Verlauf des Themas überschreiben " ++ ++#: Settings.ui.h:178 ++#, no-c-format ++msgid "Gradient top color and opacity (%)" ++msgstr "Obere Farbe und Deckkraft des Verlaufs (%)" ++ ++#: Settings.ui.h:180 ++#, no-c-format ++msgid "Gradient bottom color and opacity (%)" ++msgstr "Untere Farbe und Deckkraft des Verlaufs (%)" ++ ++#: Settings.ui.h:181 ++msgid "Style" ++msgstr "Stil" ++ ++#: Settings.ui.h:186 ++msgid "Show Activities button" ++msgstr "Aktivitäten-Schaltfläche anzeigen" ++ ++#: Settings.ui.h:187 ++msgid "Show Desktop button" ++msgstr "Schreibtisch-Schaltfläche anzeigen" ++ ++#: Settings.ui.h:188 ++msgid "Show AppMenu button" ++msgstr "Anwendungsmenü-Schaltläche anzeigen" ++ ++#: Settings.ui.h:189 ++msgid "Top Bar > Show App Menu must be enabled in Tweak Tool" ++msgstr "" ++"Obere Leiste > Anwendungsmenü anzeigen muss aktiviert sein im " ++"Optimierungswerkzeug (Tweak Tool)" ++ ++#: Settings.ui.h:190 ++msgid "Show window previews on hover" ++msgstr "Fenstervorschau bei Berührung einblenden" ++ ++#: Settings.ui.h:191 ++msgid "Show tooltip on hover" ++msgstr "Kurzinfo bei Berührung" ++ ++#: Settings.ui.h:192 ++msgid "Isolate Workspaces" ++msgstr "Arbeitsflächen isolieren" ++ ++#: Settings.ui.h:193 ++msgid "Ungroup applications" ++msgstr "Anwendungen nicht gruppieren" ++ ++#: Settings.ui.h:197 ++msgid "Toggle windows" ++msgstr "Fenster umschalten" ++ ++#: Settings.ui.h:198 ++msgid "Scroll panel action" ++msgstr "Leisten-Scrollen" ++ ++#: Settings.ui.h:199 ++msgid "Behavior when mouse scrolling over the panel." ++msgstr "Verhalten beim Scrollen über der Leiste." ++ ++#: Settings.ui.h:200 ++msgid "Scroll icon action" ++msgstr "Symbol-Scrollen" ++ ++#: Settings.ui.h:201 ++msgid "Behavior when mouse scrolling over an application icon." ++msgstr "Verhalten beim Scrollen über ein Anwendungssymbol." ++ ++#: Settings.ui.h:204 ++msgid "Cycle windows" ++msgstr "Fenster durchwechseln" ++ ++#: Settings.ui.h:206 ++msgid "Use hotkeys to activate apps" ++msgstr "Schnelltasten zum Aktivieren von Anwendungen nutzen" ++ ++#: Settings.ui.h:207 ++msgid "Action" ++msgstr "Aktion" ++ ++#: Settings.ui.h:208 ++msgid "" ++"Tray Font Size\n" ++"(0 = theme default)" ++msgstr "" ++"Schriftgröße Benachrichtigungsbereich\n" ++"(0 = Themenstandard)" ++ ++#: Settings.ui.h:210 ++msgid "" ++"LeftBox Font Size\n" ++"(0 = theme default)" ++msgstr "" ++"Schriftgröße linker Teil\n" ++"(0 = Themenstandard)" ++ ++#: Settings.ui.h:212 ++msgid "" ++"Tray Item Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"Symbolabstand Benachrichtigungsbereich\n" ++"(-1 = Themenstandard)" ++ ++#: Settings.ui.h:214 ++msgid "" ++"Status Icon Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"Statussymbolabstand\n" ++"(-1 = Themenstandard)" ++ ++#: Settings.ui.h:216 ++msgid "" ++"LeftBox Padding\n" ++"(-1 = theme default)" ++msgstr "Elementabstand linker Teil" ++ ++#: Settings.ui.h:218 ++msgid "Animate switching applications" ++msgstr "Wechsel zwischen Anwendungen animieren" ++ ++#: Settings.ui.h:219 ++msgid "Animate launching new windows" ++msgstr "Öffnen von Anwendungen animieren" ++ ++#: Settings.ui.h:220 ++msgid "Keep original gnome-shell dash (overview)" ++msgstr "Originale Anwendungsleiste der GNOME Shell behalten (Übersicht)" ++ ++#: Settings.ui.h:221 ++msgid "Activate panel menu buttons (e.g. date menu) on click only" ++msgstr "" ++"Menüschaltflächen der Leiste (z.B. Datumsmenü) nur per Klick aktivieren" ++ ++#: Settings.ui.h:222 ++msgid "App icon secondary (right-click) menu" ++msgstr "Anwendungsrechtsklickmenü" ++ ++#: Settings.ui.h:224 ++msgid "Fine-Tune" ++msgstr "Feineinstellung" ++ ++#: Settings.ui.h:226 ++msgid "GitHub" ++msgstr "GitHub" ++ ++#: Settings.ui.h:227 ++msgid "" ++"Use the buttons below to create a settings file from your current " ++"preferences that can be imported on a different machine." ++msgstr "" ++"Mit den Schaltflächen lässt sich eine Konfigdatei mit den aktuellen " ++"Einstellungen erstellen, die sich auf einem anderen Rechner importieren " ++"lässt." ++ ++#: Settings.ui.h:228 ++msgid "Export and import settings" ++msgstr "Einstellungen ex- und importieren" ++ ++#: Settings.ui.h:229 ++msgid "Export to file" ++msgstr "In Datei exportieren" ++ ++#: Settings.ui.h:230 ++msgid "Import from file" ++msgstr "Aus Datei importieren" ++ ++#: Settings.ui.h:231 ++msgid "" ++"This allows you to update the extension directly from the GitHub repository." ++msgstr "" ++"Erlaubt das Aktualisieren der Erweiterung direkt vom GitHub-Repository." ++ ++#: Settings.ui.h:232 ++msgid "Updates" ++msgstr "Aktualisierungen" ++ ++#: Settings.ui.h:233 ++msgid "Periodically check for updates" ++msgstr "Regelmäßig auf verfügbare Aktualisierungen prüfen" ++ ++#: Settings.ui.h:234 ++msgid "Check now" ++msgstr "Jetzt prüfen" ++ ++#: Settings.ui.h:235 ++msgid "" ++"Be aware, these official Dash to " ++"Panel releases might not be reviewed yet on extensions.gnome.org! Read more" ++msgstr "" ++"Achtung, diese offiziellen " ++"Veröffentlichungen von Dash to Panel sind möglicherweise noch nicht von " ++"extensions.gnome.org geprüft! Weiterlesen" ++ + #~ msgid "Application" + #~ msgstr "Anwendung" + +@@ -1076,18 +2278,6 @@ msgstr "Eingebundene Laufwerke auf der Arbeitsfläche anzeigen." + #~ msgid "Primary (default)" + #~ msgstr "Primäranzeige (Standard)" + +-#~ msgid "1" +-#~ msgstr "1" +- +-#~ msgid "2" +-#~ msgstr "2" +- +-#~ msgid "3" +-#~ msgstr "3" +- +-#~ msgid "4" +-#~ msgstr "4" +- + #~ msgid "Max height" + #~ msgstr "Maximale Höhe" + +@@ -1097,9 +2287,6 @@ msgstr "Eingebundene Laufwerke auf der Arbeitsfläche anzeigen." + #~ msgid "Maximum icon size" + #~ msgstr "Maximale Symbolgröße" + +-#~ msgid "16" +-#~ msgstr "16" +- + #~ msgid "24" + #~ msgstr "24" + +@@ -1172,3 +2359,52 @@ msgstr "Eingebundene Laufwerke auf der Arbeitsfläche anzeigen." + + #~ msgid "Huge" + #~ msgstr "Riesig" ++ ++#~ msgid "Highlight color" ++#~ msgstr "Farbe Hervorhebung" ++ ++#~ msgid "Preview timeout on icon leave (ms)" ++#~ msgstr "Verzögerung beim Ausblenden von Fenstervorschau (ms)" ++ ++#~ msgid "" ++#~ "If set too low, the window preview of running applications may seem to " ++#~ "close too quickly when trying to enter the popup. If set too high, the " ++#~ "preview may linger too long when moving to an adjacent icon." ++#~ msgstr "" ++#~ "Wenn zu niedrig eingestellt, scheint die Fenstervorschau zu schnell zu " ++#~ "schließen, wenn man versucht, mit der Maus die Vorschau anzuklicken. " ++#~ "Falls zu hoch eingestellt, dann scheint die Fenstervorschau zu hängen, " ++#~ "wenn man zum nächsten Fenster wechselt." ++ ++#~ msgid "Middle click to close window" ++#~ msgstr "Mittelklick zum Fensterschließen" ++ ++#~ msgid "Width of the window previews (px)" ++#~ msgstr "Breite der Fenstervorschau (px)" ++ ++#~ msgid "Height of the window previews (px)" ++#~ msgstr "Höhe der Fenstervorschau (px)" ++ ++#~ msgid "Padding of the window previews (px)" ++#~ msgstr "Abstand zwischen Fenstervorschau (px)" ++ ++#~ msgid "Natural" ++#~ msgstr "Natürlich" ++ ++#~ msgid "Left side of panel" ++#~ msgstr "Linke Seite der Leiste" ++ ++#~ msgid "Centered in content" ++#~ msgstr "Am Inhalt zentriert" ++ ++#~ msgid "Github" ++#~ msgstr "Github" ++ ++#~ msgid "Height (px)" ++#~ msgstr "Höhe (px)" ++ ++#~ msgid "Color - Override Theme" ++#~ msgstr "Farbe - Thema überschreiben" ++ ++#~ msgid "1 window open" ++#~ msgstr "1 Fenster offen" +diff --git a/po/es.po b/po/es.po +index 8d638f09..d1168f14 100644 +--- a/po/es.po ++++ b/po/es.po +@@ -1,5 +1,6 @@ + # #-#-#-#-# es.po (gnome-shell-extensions master) #-#-#-#-# + # #-#-#-#-# es.po (gnome-shell-extensions master) #-#-#-#-# ++# #-#-#-#-# es.po (gnome-shell-extensions master) #-#-#-#-# + # Spanish translation for gnome-shell-extensions. + # Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER + # This file is distributed under the same license as the gnome-shell-extensions package. +@@ -21,11 +22,17 @@ + # Sergio Costas , 2018. + # Daniel Mustieles , 2018-2020. + # ++# #-#-#-#-# es.po #-#-#-#-# ++# Dash to Panel Spanish translation. ++# This file is distributed under the same license as the Dash to Panel package. ++# Fran Glais , 2017. ++# + #, fuzzy + msgid "" + msgstr "" + "#-#-#-#-# es.po (gnome-shell-extensions master) #-#-#-#-#\n" + "#-#-#-#-# es.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"#-#-#-#-# es.po (gnome-shell-extensions master) #-#-#-#-#\n" + "Project-Id-Version: gnome-shell-extensions master\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/" + "issues\n" +@@ -66,6 +73,19 @@ msgstr "" + "Content-Transfer-Encoding: 8bit\n" + "Plural-Forms: nplurals=2; plural=(n != 1);\n" + "X-Generator: Gtranslator 3.38.0\n" ++"#-#-#-#-# es.po #-#-#-#-#\n" ++"Project-Id-Version: \n" ++"Report-Msgid-Bugs-To: \n" ++"POT-Creation-Date: 2021-06-29 13:21+0200\n" ++"PO-Revision-Date: 2021-06-29 13:56+0200\n" ++"Last-Translator: Fran Glais \n" ++"Language-Team: \n" ++"Language: es\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=2; plural=(n != 1);\n" + + #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3 + msgid "GNOME Classic" +@@ -313,15 +333,25 @@ msgstr "Área de trabajo %d" + msgid "Add Workspace" + msgstr "Añadir área de trabajo" + +-#: prefs.js:306 Settings.ui.h:25 ++#: prefs.js:306 Settings.ui.h:25 prefs.js:270 Settings.ui:4979 Settings.ui:5244 ++#, fuzzy + msgid "Left" +-msgstr "Izquierda" ++msgstr "" ++"#-#-#-#-# es.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Izquierda\n" ++"#-#-#-#-# es.po #-#-#-#-#\n" ++"A la izquierda" + +-#: prefs.js:305 Settings.ui.h:28 ++#: prefs.js:305 Settings.ui.h:28 prefs.js:272 Settings.ui:4992 Settings.ui:5255 ++#, fuzzy + msgid "Right" +-msgstr "Derecha" ++msgstr "" ++"#-#-#-#-# es.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Derecha\n" ++"#-#-#-#-# es.po #-#-#-#-#\n" ++"A la derecha" + +-#: prefs.js:264 ++#: prefs.js:264 prefs.js:889 + msgid "Primary monitor" + msgstr "Monitor principal" + +@@ -333,15 +363,23 @@ msgstr "Monitor secundario" + msgid "Intelligent autohide customization" + msgstr "Personalización de ocultamiento inteligente" + +-#: prefs.js:363 prefs.js:548 prefs.js:604 ++#: prefs.js:363 prefs.js:548 prefs.js:604 prefs.js:447 prefs.js:512 ++#: prefs.js:732 prefs.js:1078 prefs.js:1222 prefs.js:1345 prefs.js:1634 ++#: prefs.js:1730 prefs.js:1796 prefs.js:1840 prefs.js:1938 prefs.js:1973 ++#: prefs.js:2016 prefs.js:2152 ++#, fuzzy + msgid "Reset to defaults" +-msgstr "Restablecer la configuración predeterminada" ++msgstr "" ++"#-#-#-#-# es.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Restablecer la configuración predeterminada\n" ++"#-#-#-#-# es.po #-#-#-#-#\n" ++"Restablecer los valores predeterminados" + + #: prefs.js:541 + msgid "Show dock and application numbers" + msgstr "Mostrar dock y números de aplicación" + +-#: prefs.js:597 ++#: prefs.js:597 prefs.js:1723 + msgid "Customize middle-click behavior" + msgstr "Personalizar comportamiento del botón central" + +@@ -360,31 +398,48 @@ msgstr "Todas las ventanas" + msgid "Dash to Dock %s" + msgstr "%s • Dash to Dock" + +-#: Settings.ui.h:1 ++#: Settings.ui.h:1 Settings.ui:383 ++#, fuzzy + msgid "" + "When set to minimize, double clicking minimizes all the windows of the " + "application." + msgstr "" ++"#-#-#-#-# es.po (gnome-shell-extensions master) #-#-#-#-#\n" + "Cuando se selecciona minimizar, una pulsación doble minimiza todas las " ++"ventanas de la aplicación.\n" ++"#-#-#-#-# es.po #-#-#-#-#\n" ++"Cuando está seleccionado minimizar, doble pulsación minimiza todas las " + "ventanas de la aplicación." + +-#: Settings.ui.h:2 ++#: Settings.ui.h:2 Settings.ui:401 ++#, fuzzy + msgid "Shift+Click action" +-msgstr "Acción de Mayús + pulsación" ++msgstr "" ++"#-#-#-#-# es.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Acción de Mayús + pulsación\n" ++"#-#-#-#-# es.po #-#-#-#-#\n" ++"Acción de Mayúsculas+Click" + + #: Settings.ui.h:3 + msgid "Raise window" + msgstr "Elevar ventana" + +-#: Settings.ui.h:4 ++#: Settings.ui.h:4 Settings.ui:416 Settings.ui:488 Settings.ui:559 + msgid "Minimize window" + msgstr "Minimizar ventana" + +-#: Settings.ui.h:5 ++#: Settings.ui.h:5 Settings.ui:417 Settings.ui:489 Settings.ui:560 ++#: Settings.ui:6487 ++#, fuzzy + msgid "Launch new instance" +-msgstr "Iniciar una instancia nueva" ++msgstr "" ++"#-#-#-#-# es.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Iniciar una instancia nueva\n" ++"#-#-#-#-# es.po #-#-#-#-#\n" ++"Lanzar una nueva instancia" + +-#: Settings.ui.h:6 ++#: Settings.ui.h:6 Settings.ui:418 Settings.ui:490 Settings.ui:561 ++#: Settings.ui:6483 + msgid "Cycle through windows" + msgstr "Alternar entre ventanas" + +@@ -404,25 +459,41 @@ msgstr "Minimizar o mostrar previsualizaciones" + msgid "Focus or show previews" + msgstr "Focalizar o mostrar previsualizaciones" + +-#: Settings.ui.h:11 ++#: Settings.ui.h:11 appIcons.js:1510 appIcons.js:1570 appIcons.js:1572 ++#: Settings.ui:422 Settings.ui:493 Settings.ui:564 + msgid "Quit" + msgstr "Salir" + +-#: Settings.ui.h:12 ++#: Settings.ui.h:12 Settings.ui:455 ++#, fuzzy + msgid "Behavior for Middle-Click." +-msgstr "Comportamiento del botón central" ++msgstr "" ++"#-#-#-#-# es.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Comportamiento del botón central\n" ++"#-#-#-#-# es.po #-#-#-#-#\n" ++"Comportamiento del botón central." + +-#: Settings.ui.h:13 ++#: Settings.ui.h:13 Settings.ui:473 + msgid "Middle-Click action" + msgstr "Acción del botón central" + +-#: Settings.ui.h:14 ++#: Settings.ui.h:14 Settings.ui:526 ++#, fuzzy + msgid "Behavior for Shift+Middle-Click." +-msgstr "Comportamiento de Mayús + botón central" ++msgstr "" ++"#-#-#-#-# es.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Comportamiento de Mayús + botón central\n" ++"#-#-#-#-# es.po #-#-#-#-#\n" ++"Comportamiento para mayúsculas+botón central." + +-#: Settings.ui.h:15 ++#: Settings.ui.h:15 Settings.ui:544 ++#, fuzzy + msgid "Shift+Middle-Click action" +-msgstr "Acción de Mayús + botón central" ++msgstr "" ++"#-#-#-#-# es.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Acción de Mayús + botón central\n" ++"#-#-#-#-# es.po #-#-#-#-#\n" ++"Acción de mayúsculas+botón central" + + #: Settings.ui.h:16 + msgid "Enable Unity7 like glossy backlit items" +@@ -460,13 +531,25 @@ msgstr "Mostrar en todos los monitores." + msgid "Position on screen" + msgstr "Posición en pantalla" + +-#: Settings.ui.h:26 ++#: Settings.ui.h:26 prefs.js:276 Settings.ui:2811 Settings.ui:4953 ++#: Settings.ui:5222 ++#, fuzzy + msgid "Bottom" +-msgstr "Inferior" ++msgstr "" ++"#-#-#-#-# es.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Inferior\n" ++"#-#-#-#-# es.po #-#-#-#-#\n" ++"Abajo" + +-#: Settings.ui.h:27 ++#: Settings.ui.h:27 prefs.js:274 Settings.ui:2823 Settings.ui:4966 ++#: Settings.ui:5233 ++#, fuzzy + msgid "Top" +-msgstr "Superior" ++msgstr "" ++"#-#-#-#-# es.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Superior\n" ++"#-#-#-#-# es.po #-#-#-#-#\n" ++"Arriba" + + #: Settings.ui.h:29 + msgid "" +@@ -500,11 +583,11 @@ msgstr "Tamaño fijo de los iconos: desplazarse para mostrar otros" + msgid "Position and size" + msgstr "Posición y tamaño" + +-#: Settings.ui.h:36 ++#: Settings.ui.h:36 Settings.ui:5917 + msgid "Show favorite applications" + msgstr "Mostrar aplicaciones favoritas" + +-#: Settings.ui.h:37 ++#: Settings.ui.h:37 Settings.ui:5930 + msgid "Show running applications" + msgstr "Mostrar aplicaciones en ejecución" + +@@ -544,25 +627,40 @@ msgstr "Animar Mostrar aplicaciones" + msgid "Launchers" + msgstr "Lanzadores" + +-#: Settings.ui.h:46 ++#: Settings.ui.h:46 Settings.ui:6705 ++#, fuzzy + msgid "" + "Enable Super+(0-9) as shortcuts to activate apps. It can also be used " + "together with Shift and Ctrl." + msgstr "" ++"#-#-#-#-# es.po (gnome-shell-extensions master) #-#-#-#-#\n" + "Activar Súper + (0-9) como atajos para activar aplicaciones. Pueden " +-"emplearse en conjunto con Mayús y Ctrl." ++"emplearse en conjunto con Mayús y Ctrl.\n" ++"#-#-#-#-# es.po #-#-#-#-#\n" ++"Habilitar Súper+(0-9) como atajos para activar aplicaciones. También puede " ++"ser usado junto con Mayús. y Ctrl." + + #: Settings.ui.h:47 + msgid "Use keyboard shortcuts to activate apps" + msgstr "Usar atajos de teclado para activar aplicaciones" + +-#: Settings.ui.h:48 ++#: Settings.ui.h:48 Settings.ui:6428 ++#, fuzzy + msgid "Behaviour when clicking on the icon of a running application." +-msgstr "Comportamiento al pulsar el icono de una aplicación en ejecución" ++msgstr "" ++"#-#-#-#-# es.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Comportamiento al pulsar el icono de una aplicación en ejecución\n" ++"#-#-#-#-# es.po #-#-#-#-#\n" ++"Comportamiento al pulsar el ícono de una aplicación en ejecución." + +-#: Settings.ui.h:49 ++#: Settings.ui.h:49 Settings.ui:6445 ++#, fuzzy + msgid "Click action" +-msgstr "Acción al pulsar" ++msgstr "" ++"#-#-#-#-# es.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Acción al pulsar\n" ++"#-#-#-#-# es.po #-#-#-#-#\n" ++"Acción de pulsación" + + #: Settings.ui.h:51 + msgid "Behaviour when scrolling on the icon of an application." +@@ -572,15 +670,20 @@ msgstr "Comportamiento al usar la rueda sobre el icono de una aplicación." + msgid "Scroll action" + msgstr "Acción al desplazarse" + +-#: Settings.ui.h:53 ++#: Settings.ui.h:53 Settings.ui:6619 Settings.ui:6637 + msgid "Do nothing" + msgstr "No hacer nada" + +-#: Settings.ui.h:54 ++#: Settings.ui.h:54 Settings.ui:6620 ++#, fuzzy + msgid "Switch workspace" +-msgstr "Cambiar de espacio de trabajo." ++msgstr "" ++"#-#-#-#-# es.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Cambiar de espacio de trabajo.\n" ++"#-#-#-#-# es.po #-#-#-#-#\n" ++"Cambiar espacio de trabajo" + +-#: Settings.ui.h:55 ++#: Settings.ui.h:55 Settings.ui:6386 + msgid "Behavior" + msgstr "Comportamiento" + +@@ -612,31 +715,36 @@ msgstr "Personalizar los contadores de ventanas" + msgid "Default" + msgstr "Predeterminado" + +-#: Settings.ui.h:62 ++#: Settings.ui.h:62 Settings.ui:5323 Settings.ui:5369 + msgid "Dots" + msgstr "Puntos" + +-#: Settings.ui.h:63 ++#: Settings.ui.h:63 Settings.ui:5324 Settings.ui:5370 + msgid "Squares" + msgstr "Cuadrados" + +-#: Settings.ui.h:64 ++#: Settings.ui.h:64 Settings.ui:5325 Settings.ui:5371 ++#, fuzzy + msgid "Dashes" +-msgstr "Rayas" ++msgstr "" ++"#-#-#-#-# es.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Rayas\n" ++"#-#-#-#-# es.po #-#-#-#-#\n" ++"Guiones" + +-#: Settings.ui.h:65 ++#: Settings.ui.h:65 Settings.ui:5326 Settings.ui:5372 + msgid "Segmented" + msgstr "Segmentado" + +-#: Settings.ui.h:66 ++#: Settings.ui.h:66 Settings.ui:5327 Settings.ui:5373 + msgid "Solid" + msgstr "Sólido" + +-#: Settings.ui.h:67 ++#: Settings.ui.h:67 Settings.ui:5328 Settings.ui:5374 + msgid "Ciliora" + msgstr "Ciliora" + +-#: Settings.ui.h:68 ++#: Settings.ui.h:68 Settings.ui:5329 Settings.ui:5375 + msgid "Metro" + msgstr "Metro" + +@@ -656,7 +764,7 @@ msgstr "Ajustar la opacidad del fondo del dock." + msgid "Customize opacity" + msgstr "Personalizar opacidad" + +-#: Settings.ui.h:73 ++#: Settings.ui.h:73 Settings.ui:2617 Settings.ui:2684 + msgid "Fixed" + msgstr "Fijo" + +@@ -676,7 +784,7 @@ msgstr "Forzar esquinas rectas" + msgid "Appearance" + msgstr "Apariencia" + +-#: Settings.ui.h:79 ++#: Settings.ui.h:79 Settings.ui:7369 + msgid "version: " + msgstr "versión: " + +@@ -693,18 +801,18 @@ msgstr "Creado por" + msgid "Webpage" + msgstr "Sitio web" + +-#: Settings.ui.h:83 ++#: Settings.ui.h:83 Settings.ui:7490 + msgid "" + "This program comes with ABSOLUTELY NO WARRANTY.\n" +-"See the GNU General Public License, version 2 or later for details." ++"See the GNU General Public License, version 2 or later for details." + msgstr "" + "Este programa viene SIN NINGUNA GARANTÍA.\n" +-"Consulte la Licencia Pública General de GNU, versión 2 o posterior para obtener " +-"más detalles." ++"Consulte la Licencia Pública General de GNU, versión 2 o posterior para " ++"obtener más detalles." + +-#: Settings.ui.h:85 ++#: Settings.ui.h:85 Settings.ui:7504 + msgid "About" + msgstr "Acerca de" + +@@ -720,9 +828,14 @@ msgstr "Opacidad mínima" + msgid "Maximum opacity" + msgstr "Opacidad máxima" + +-#: Settings.ui.h:89 ++#: Settings.ui.h:89 Settings.ui:3633 ++#, fuzzy + msgid "Number overlay" +-msgstr "Número sobrepuesto" ++msgstr "" ++"#-#-#-#-# es.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Número sobrepuesto\n" ++"#-#-#-#-# es.po #-#-#-#-#\n" ++"Número de aplicación" + + #: Settings.ui.h:90 + msgid "" +@@ -748,9 +861,14 @@ msgstr "" + msgid "Shortcut for the options above" + msgstr "Atajo para las opciones anteriores" + +-#: Settings.ui.h:94 ++#: Settings.ui.h:94 Settings.ui:2065 Settings.ui:3749 ++#, fuzzy + msgid "Syntax: , , , " +-msgstr "Sintaxis: , , , " ++msgstr "" ++"#-#-#-#-# es.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Sintaxis: , , , \n" ++"#-#-#-#-# es.po #-#-#-#-#\n" ++"Sintáxis: , , , " + + #: Settings.ui.h:95 + msgid "Hide timeout (s)" +@@ -780,7 +898,7 @@ msgstr "Mostrar el dock cuando no cubra otras ventanas de aplicaciones." + msgid "Dodge windows" + msgstr "Esquivar las ventanas" + +-#: Settings.ui.h:102 ++#: Settings.ui.h:102 Settings.ui:1797 Settings.ui:4382 + msgid "All windows" + msgstr "Todas las ventanas" + +@@ -1014,6 +1132,1136 @@ msgstr "Mostrar unidades montadas" + msgid "Show mounted drives in the desktop." + msgstr "Mostrar unidades montadas en el escritorio." + ++#: appIcons.js:1510 ++msgid "New Window" ++msgstr "Ventana nueva" ++ ++#: appIcons.js:1492 ++msgid "Show Details" ++msgstr "Mostrar detalles" ++ ++#: appIcons.js:1572 ++msgid "Windows" ++msgstr "Ventanas" ++ ++#: appIcons.js:1925 ++msgid "Unlock taskbar" ++msgstr "Desbloquear barra de tareas" ++ ++#: appIcons.js:1925 ++msgid "Lock taskbar" ++msgstr "Bloquear barra de tareas" ++ ++#: appIcons.js:1930 ++msgid "Dash to Panel Settings" ++msgstr "Opciones de Dash to Panel" ++ ++#: appIcons.js:1943 ++msgid "Restore Windows" ++msgstr "Restaurar ventanas" ++ ++#: appIcons.js:1943 ++msgid "Show Desktop" ++msgstr "Mostrar escritorio" ++ ++#: panel.js:181 ++msgid "Top Bar" ++msgstr "Barra superior" ++ ++#: prefs.js:200 ++msgid "Show Desktop button height (px)" ++msgstr "Alto del botón Mostrar escritorio (px)" ++ ++#: prefs.js:200 ++msgid "Show Desktop button width (px)" ++msgstr "Ancho del botón Mostrar escritorio (px)" ++ ++#: prefs.js:212 ++msgid "Unavailable when gnome-shell top panel is present" ++msgstr "No disponible cuando el panel superior de gnome-shell está presente" ++ ++#: prefs.js:271 ++msgid "Center" ++msgstr "Centro" ++ ++#: prefs.js:275 prefs.js:280 Settings.ui:4912 ++msgid "Middle" ++msgstr "En medio" ++ ++#: prefs.js:279 Settings.ui:4911 ++msgid "Start" ++msgstr "Inicio" ++ ++#: prefs.js:281 Settings.ui:4913 ++msgid "End" ++msgstr "Final" ++ ++#: prefs.js:366 ++msgid "Show Applications button" ++msgstr "Botón de Mostrar aplicaciones" ++ ++#: prefs.js:367 ++msgid "Activities button" ++msgstr "Botón de Actividades" ++ ++#: prefs.js:368 ++msgid "Taskbar" ++msgstr "Barra de tareas" ++ ++#: prefs.js:369 ++msgid "Date menu" ++msgstr "Menú de la fecha" ++ ++#: prefs.js:370 ++msgid "System menu" ++msgstr "Menú del sistema" ++ ++#: prefs.js:371 ++msgid "Left box" ++msgstr "Caja izquierda" ++ ++#: prefs.js:372 ++msgid "Center box" ++msgstr "Caja central" ++ ++#: prefs.js:373 ++msgid "Right box" ++msgstr "Caja derecha" ++ ++#: prefs.js:374 ++msgid "Desktop button" ++msgstr "Botón del escritorio" ++ ++#: prefs.js:380 ++msgid "Move up" ++msgstr "Subir" ++ ++#: prefs.js:382 ++msgid "Move down" ++msgstr "Bajar" ++ ++#: prefs.js:384 ++msgid "Visible" ++msgstr "Visible" ++ ++#: prefs.js:385 ++msgid "Select element position" ++msgstr "Seleccione la posición del elemento" ++ ++#: prefs.js:396 ++msgid "Stacked to top" ++msgstr "Arriba" ++ ++#: prefs.js:396 ++msgid "Stacked to left" ++msgstr "Izquierda" ++ ++#: prefs.js:397 ++msgid "Stacked to bottom" ++msgstr "Abajo" ++ ++#: prefs.js:397 ++msgid "Stacked to right" ++msgstr "Derecha" ++ ++#: prefs.js:398 ++msgid "Centered" ++msgstr "Centrado" ++ ++#: prefs.js:399 ++msgid "Monitor Center" ++msgstr "Centro del monitor" ++ ++#: prefs.js:418 ++msgid "More options" ++msgstr "Más opciones" ++ ++#: prefs.js:440 ++msgid "Show Applications options" ++msgstr "Mostrar las opciones de aplicación" ++ ++#: prefs.js:453 ++msgid "Open icon" ++msgstr "Abrir icono" ++ ++#: prefs.js:505 ++msgid "Show Desktop options" ++msgstr "Opciones de Mostrar escritorio" ++ ++#: prefs.js:605 ++#, javascript-format ++msgid "%d ms" ++msgstr "%d ms" ++ ++#: prefs.js:610 ++#, javascript-format ++msgid "%d °" ++msgstr "%d °" ++ ++#: prefs.js:615 prefs.js:620 ++#, javascript-format ++msgid "%d %%" ++msgstr "%d %%" ++ ++#: prefs.js:625 ++#, javascript-format ++msgid "%.1f" ++msgstr "%.1f" ++ ++#: prefs.js:630 ++#, javascript-format ++msgid "%d icon" ++msgid_plural "%d icons" ++msgstr[0] "%d icono" ++msgstr[1] "%d iconos" ++ ++#: prefs.js:725 ++msgid "Running Indicator Options" ++msgstr "Opciones del indicador de ejecución" ++ ++#: prefs.js:889 ++msgid "Monitor " ++msgstr "Monitor " ++ ++#: prefs.js:1071 ++msgid "Dynamic opacity options" ++msgstr "Opciones de opacidad dinámica" ++ ++#: prefs.js:1215 ++msgid "Intellihide options" ++msgstr "Opciones de ocultación inteligente" ++ ++#: prefs.js:1338 ++msgid "Window preview options" ++msgstr "Opciones de vista rápida de ventanas" ++ ++#: prefs.js:1627 ++msgid "Ungrouped application options" ++msgstr "Opciones de ventanas no combinadas" ++ ++#: prefs.js:1789 ++msgid "Customize panel scroll behavior" ++msgstr "Personalizar comportamiento del desplazamiento del panel" ++ ++#: prefs.js:1833 ++msgid "Customize icon scroll behavior" ++msgstr "Personalizar comportamiento del desplazamiento de los iconos" ++ ++#: prefs.js:1931 ++msgid "Advanced hotkeys options" ++msgstr "Opciones avanzadas de atajos de teclado" ++ ++#: prefs.js:1966 ++msgid "Secondary Menu Options" ++msgstr "Opciones del menú secundario" ++ ++#: prefs.js:2009 Settings.ui:7314 ++msgid "Advanced Options" ++msgstr "Opciones avanzadas" ++ ++#: prefs.js:2145 ++msgid "App icon animation options" ++msgstr "Opciones de animación de los iconos de las aplicaciones" ++ ++#: prefs.js:2211 ++msgid "Export settings" ++msgstr "Exportar configuraciones" ++ ++#: prefs.js:2227 ++msgid "Import settings" ++msgstr "Importar configuraciones" ++ ++#: windowPreview.js:930 ++msgid "Move to current Workspace" ++msgstr "Mover al espacio de trabajo actual" ++ ++#: Settings.ui:30 ++msgid "Animation type" ++msgstr "Tipo de animación" ++ ++#: Settings.ui:40 ++msgid "Simple" ++msgstr "Simple" ++ ++#: Settings.ui:41 ++msgid "Ripple" ++msgstr "Onda" ++ ++#: Settings.ui:42 ++msgid "Plank" ++msgstr "Tabla" ++ ++#: Settings.ui:70 ++msgid "Duration" ++msgstr "Duración" ++ ++#: Settings.ui:101 ++msgid "Rotation" ++msgstr "Rotación" ++ ++#: Settings.ui:131 ++msgid "Travel" ++msgstr "Recorrido" ++ ++#: Settings.ui:161 ++msgid "Zoom" ++msgstr "Zoom" ++ ++#: Settings.ui:191 ++msgid "Convexity" ++msgstr "Convexidad" ++ ++#: Settings.ui:221 ++msgid "Extent" ++msgstr "Extensión" ++ ++#: Settings.ui:332 ++msgid "Nothing yet!" ++msgstr "¡Nada aún!" ++ ++#: Settings.ui:415 Settings.ui:487 Settings.ui:558 Settings.ui:6486 ++msgid "Raise windows" ++msgstr "Elevar ventanas" ++ ++#: Settings.ui:419 Settings.ui:491 Settings.ui:562 Settings.ui:6482 ++msgid "Cycle windows + minimize" ++msgstr "Alternar ventanas y minimizar" ++ ++#: Settings.ui:420 Settings.ui:492 Settings.ui:563 Settings.ui:6484 ++msgid "Toggle single / Preview multiple" ++msgstr "Alternar simple / Vista previa múltiple" ++ ++#: Settings.ui:421 ++msgid "Toggle single / Cycle multiple" ++msgstr "Alternar simple / Cambiar múltiple" ++ ++#: Settings.ui:619 ++msgid "Integrate AppMenu items" ++msgstr "Integrar los elementos del Menú de aplicación" ++ ++#: Settings.ui:665 ++msgid "Show Details menu item" ++msgstr "Mostrar detalles del menú de elementos" ++ ++#: Settings.ui:759 ++msgid "Highlight focused application" ++msgstr "Resaltar la aplicación activa" ++ ++#: Settings.ui:790 ++msgid "Icon dominant color" ++msgstr "Color del icono predominante" ++ ++#: Settings.ui:811 ++msgid "Custom color" ++msgstr "Color personalizado" ++ ++#: Settings.ui:836 ++msgid "Highlight opacity" ++msgstr "Opacidad de resaltado" ++ ++#: Settings.ui:888 ++msgid "Indicator size (px)" ++msgstr "Tamaño del indicador (px)" ++ ++#: Settings.ui:932 ++msgid "Indicator color - Icon Dominant" ++msgstr "Color del indicador - Predominar el icono" ++ ++#: Settings.ui:978 ++msgid "Indicator color - Override Theme" ++msgstr "Color del indicador - Predominar sobre el tema" ++ ++#: Settings.ui:1006 Settings.ui:1161 ++msgid "1 window open (or ungrouped)" ++msgstr "1 ventana abierta (o no combinada)" ++ ++#: Settings.ui:1021 Settings.ui:1176 ++msgid "Apply to all" ++msgstr "Aplicar a todo" ++ ++#: Settings.ui:1046 Settings.ui:1201 ++msgid "2 windows open" ++msgstr "2 ventanas abiertas" ++ ++#: Settings.ui:1059 Settings.ui:1226 ++msgid "3 windows open" ++msgstr "3 ventanas abiertas" ++ ++#: Settings.ui:1072 Settings.ui:1251 ++msgid "4+ windows open" ++msgstr "4 o más ventanas abiertas" ++ ++#: Settings.ui:1133 ++msgid "Use different for unfocused" ++msgstr "Usar diferente para desenfoque" ++ ++#: Settings.ui:1344 ++msgid "Font size (px) of the application titles (default is 14)" ++msgstr "" ++"Tamaño de la fuente (px) para los títulos de aplicación (14 por defecto)" ++ ++#: Settings.ui:1375 ++msgid "Font weight of application titles" ++msgstr "Tamaño de la fuente para los títulos de aplicación" ++ ++#: Settings.ui:1389 Settings.ui:3024 ++msgid "inherit from theme" ++msgstr "heredado del tema" ++ ++#: Settings.ui:1390 Settings.ui:3025 ++msgid "normal" ++msgstr "normal" ++ ++#: Settings.ui:1391 Settings.ui:3026 ++msgid "lighter" ++msgstr "más fino" ++ ++#: Settings.ui:1392 Settings.ui:3027 ++msgid "bold" ++msgstr "en negrita" ++ ++#: Settings.ui:1393 Settings.ui:3028 ++msgid "bolder" ++msgstr "más en negrita" ++ ++#: Settings.ui:1423 ++msgid "Font color of the application titles" ++msgstr "Color de letra de los títulos de aplicación" ++ ++#: Settings.ui:1466 ++msgid "Font color of the minimized application titles" ++msgstr "Color de la fuente de los títulos de la aplicación minimizada" ++ ++#: Settings.ui:1509 ++msgid "Maximum width (px) of the application titles (default is 160)" ++msgstr "Ancho máximo (px) de los títulos de aplicación (160 por defecto)" ++ ++#: Settings.ui:1554 ++msgid "Use a fixed width for the application titles" ++msgstr "Usar ancho fijo para los títulos de aplicación" ++ ++#: Settings.ui:1579 ++msgid "" ++"The application titles all have the same width, even if their texts are " ++"shorter than the maximum width. The maximum width value is used as the fixed " ++"width." ++msgstr "" ++"Todos los títulos de aplicación tienen el mismo ancho, aun si el texto es " ++"más corto que el ancho máximo. El ancho máximo es usado como valor fijo." ++ ++#: Settings.ui:1615 ++msgid "Display running indicators on unfocused applications" ++msgstr "Estilo de los indicadores de ejecución (aplicación no enfocada)" ++ ++#: Settings.ui:1657 ++msgid "Use the favorite icons as application launchers" ++msgstr "Usar los iconos favoritos como lanzadores de aplicación" ++ ++#: Settings.ui:1751 ++msgid "Only hide the panel when it is obstructed by windows " ++msgstr "Esconder el panel sólo cuando es obstruido por ventanas " ++ ++#: Settings.ui:1783 ++msgid "The panel hides from" ++msgstr "El panel se esconde de" ++ ++#: Settings.ui:1798 Settings.ui:4383 ++msgid "Focused windows" ++msgstr "Ventanas activas" ++ ++#: Settings.ui:1799 Settings.ui:4384 ++msgid "Maximized windows" ++msgstr "Ventanas maximizadas" ++ ++#: Settings.ui:1837 ++msgid "Require pressure at the edge of the screen to reveal the panel" ++msgstr "Requerir presión en el borde de la pantalla para mostrar el panel" ++ ++#: Settings.ui:1869 ++msgid "Required pressure threshold (px)" ++msgstr "Presión mínima requerida (px)" ++ ++#: Settings.ui:1898 ++msgid "Required pressure timeout (ms)" ++msgstr "Tiempo de activación (ms)" ++ ++#: Settings.ui:1953 ++msgid "Allow the panel to be revealed while in fullscreen mode" ++msgstr "En modo pantalla completa, permitir que el panel sea mostrado" ++ ++#: Settings.ui:1997 ++msgid "Only hide secondary panels (requires multi-monitors option)" ++msgstr "Ocultar sólo los paneles secundarios (requiere opción multi-monitor)" ++ ++#: Settings.ui:2040 ++msgid "e.g. i" ++msgstr "p.e. i" ++ ++#: Settings.ui:2053 ++msgid "Keyboard shortcut to reveal and hold the panel" ++msgstr "Atajos del teclado para mostrar y mantener el panel" ++ ++#: Settings.ui:2100 ++msgid "Hide and reveal animation duration (ms)" ++msgstr "Duración de ocultar y mostrar animaciones (ms)" ++ ++#: Settings.ui:2146 ++msgid "Delay before hiding the panel (ms)" ++msgstr "Tiempo antes de ocultar el panel (ms)" ++ ++#: Settings.ui:2193 ++msgid "Delay before enabling intellihide on start (ms)" ++msgstr "Tiempo antes de habilitar el panel inteligente (ms)" ++ ++#: Settings.ui:2351 ++msgid "Time (ms) before showing (400 is default)" ++msgstr "Tiempo (ms) antes de mostrar (400 por defecto)" ++ ++#: Settings.ui:2365 ++msgid "Animation time (ms)" ++msgstr "Tiempo de la animación (ms)" ++ ++#: Settings.ui:2398 ++msgid "Time (ms) before hiding (100 is default)" ++msgstr "Tiempo (ms) antes de ocultar (100 por defecto)" ++ ++#: Settings.ui:2416 ++msgid "Immediate on application icon click" ++msgstr "Pulsación inmediata en icono de aplicación" ++ ++#: Settings.ui:2467 ++msgid "Middle click on the preview to close the window" ++msgstr "Usar el botón central en la vista rápida para cerrar la ventana" ++ ++#: Settings.ui:2511 ++msgid "Window previews preferred size (px)" ++msgstr "Tamaño por defecto de las vistas rápidas (px)" ++ ++#: Settings.ui:2538 ++msgid "Window previews aspect ratio Y (height)" ++msgstr "Altura de la vista rápida de ventanas" ++ ++#: Settings.ui:2552 ++msgid "Window previews padding (px)" ++msgstr "Relleno (px) de la vista rápida de ventanas" ++ ++#: Settings.ui:2591 Settings.ui:2658 ++msgid "1" ++msgstr "1" ++ ++#: Settings.ui:2592 Settings.ui:2659 ++msgid "2" ++msgstr "2" ++ ++#: Settings.ui:2593 Settings.ui:2660 ++msgid "3" ++msgstr "3" ++ ++#: Settings.ui:2594 Settings.ui:2661 ++msgid "4" ++msgstr "4" ++ ++#: Settings.ui:2595 Settings.ui:2662 Settings.ui:2766 ++msgid "5" ++msgstr "5" ++ ++#: Settings.ui:2596 Settings.ui:2663 ++msgid "6" ++msgstr "6" ++ ++#: Settings.ui:2597 Settings.ui:2664 ++msgid "7" ++msgstr "7" ++ ++#: Settings.ui:2598 Settings.ui:2665 ++msgid "8" ++msgstr "8" ++ ++#: Settings.ui:2599 Settings.ui:2666 ++msgid "9" ++msgstr "9" ++ ++#: Settings.ui:2600 Settings.ui:2667 ++msgid "10" ++msgstr "10" ++ ++#: Settings.ui:2601 Settings.ui:2668 ++msgid "11" ++msgstr "11" ++ ++#: Settings.ui:2602 Settings.ui:2669 ++msgid "12" ++msgstr "12" ++ ++#: Settings.ui:2603 Settings.ui:2670 ++msgid "13" ++msgstr "13" ++ ++#: Settings.ui:2604 Settings.ui:2671 ++msgid "14" ++msgstr "14" ++ ++#: Settings.ui:2605 Settings.ui:2672 ++msgid "15" ++msgstr "15" ++ ++#: Settings.ui:2606 Settings.ui:2673 ++msgid "16" ++msgstr "16" ++ ++#: Settings.ui:2607 Settings.ui:2674 ++msgid "17" ++msgstr "17" ++ ++#: Settings.ui:2608 Settings.ui:2675 ++msgid "18" ++msgstr "18" ++ ++#: Settings.ui:2609 Settings.ui:2676 ++msgid "19" ++msgstr "19" ++ ++#: Settings.ui:2610 Settings.ui:2677 ++msgid "20" ++msgstr "20" ++ ++#: Settings.ui:2611 Settings.ui:2678 ++msgid "21" ++msgstr "21" ++ ++#: Settings.ui:2635 ++msgid "Window previews aspect ratio X (width)" ++msgstr "Anchura de la vista rápida de ventanas" ++ ++#: Settings.ui:2719 ++msgid "Use custom opacity for the previews background" ++msgstr "Usar opacidad personalizada para el fondo de las vistas rápidas" ++ ++#: Settings.ui:2733 ++msgid "If disabled, the previews background have the same opacity as the panel" ++msgstr "" ++"Si está deshabilitado, el fondo de las vistas rápidas tienen la misma " ++"opacidad que la del panel" ++ ++#: Settings.ui:2799 ++msgid "Close button and header position" ++msgstr "Botón de apagado y posición de los títulos" ++ ++#: Settings.ui:2857 ++msgid "Display window preview headers" ++msgstr "Mostrar los títulos de las ventanas en las vistas rápidas" ++ ++#: Settings.ui:2920 ++msgid "Icon size (px) of the window preview" ++msgstr "Tamaño del icono (px) de la vista previa de la ventana" ++ ++#: Settings.ui:2934 ++msgid "If disabled, the previews icon size will be based on headerbar size" ++msgstr "" ++"Si está deshabilitado, el tamaño de los iconos de las vistas previas se " ++"basará en el tamaño de la barra de cabecera" ++ ++#: Settings.ui:2982 ++msgid "Font size (px) of the preview titles" ++msgstr "Tamaño de letra (px) de los títulos de aplicación (14 por defecto)" ++ ++#: Settings.ui:3009 ++msgid "Font weight of the preview titles" ++msgstr "Color de letra de los títulos de aplicación" ++ ++#: Settings.ui:3054 ++msgid "Font color of the preview titles" ++msgstr "Color de letra de los títulos de aplicación" ++ ++#: Settings.ui:3105 ++msgid "Enable window peeking" ++msgstr "Habilitar ojeada rápida de ventana" ++ ++#: Settings.ui:3131 ++msgid "" ++"When hovering over a window preview for some time, the window gets " ++"distinguished." ++msgstr "" ++"Al desplazar el ratón sobre una vista rápida de ventana, la ventana es " ++"resaltada." ++ ++#: Settings.ui:3156 ++msgid "Enter window peeking mode timeout (ms)" ++msgstr "Tiempo para activar el modo de ojeada rápida (ms)" ++ ++#: Settings.ui:3170 ++msgid "50" ++msgstr "50" ++ ++#: Settings.ui:3185 ++msgid "" ++"Time of inactivity while hovering over a window preview needed to enter the " ++"window peeking mode." ++msgstr "" ++"Tiempo de inactividad al desplazar el ratón sobre una vista rápida de " ++"ventana para activar el modo de ojeada rápida." ++ ++#: Settings.ui:3217 ++msgid "Window peeking mode opacity" ++msgstr "Opacidad del modo de ojeada rápida" ++ ++#: Settings.ui:3231 Settings.ui:4000 Settings.ui:4470 Settings.ui:5529 ++#: Settings.ui:5716 Settings.ui:5744 ++msgid "0" ++msgstr "0" ++ ++#: Settings.ui:3245 ++msgid "" ++"All windows except for the peeked one have their opacity set to the same " ++"value." ++msgstr "Todas las ventanas excepto la resaltada tienen la misma opacidad fija." ++ ++#: Settings.ui:3327 Settings.ui:3412 ++msgid "Delay between mouse scroll events (ms)" ++msgstr "Retraso entre eventos de desplazamiento del ratón (ms)" ++ ++#: Settings.ui:3341 Settings.ui:3426 ++msgid "Use this value to limit the number of captured mouse scroll events." ++msgstr "" ++"Usar este valor para limitar el número de eventos de desplazamiento " ++"capturados del ratón." ++ ++#: Settings.ui:3460 ++msgid "Show popup when changing workspace" ++msgstr "Mostrar ventana emergente al cambiar de espacio de trabajo" ++ ++#: Settings.ui:3474 ++msgid "This affects workspace popup when scrolling on the panel only." ++msgstr "" ++"Esto afecta a la ventana emergente del espacio de trabajo cuando se desplaza " ++"en el panel solamente." ++ ++#: Settings.ui:3552 ++msgid "Super" ++msgstr "Súper" ++ ++#: Settings.ui:3553 ++msgid "Super + Alt" ++msgstr "Súper + Alt" ++ ++#: Settings.ui:3567 ++msgid "Hotkeys prefix" ++msgstr "Prefijo de atajo de teclado" ++ ++#: Settings.ui:3579 ++msgid "Hotkeys will either be Super+Number or Super+Alt+Num" ++msgstr "Los atajos serán Súper+Núm. o Súper+Alt+Núm" ++ ++#: Settings.ui:3617 ++msgid "Never" ++msgstr "Nunca" ++ ++#: Settings.ui:3618 ++msgid "Show temporarily" ++msgstr "Mostrar temporalmente" ++ ++#: Settings.ui:3619 ++msgid "Always visible" ++msgstr "Siempre visible" ++ ++#: Settings.ui:3645 ++msgid "" ++"Temporarily show the application numbers over the icons when using the " ++"hotkeys." ++msgstr "" ++"Al usar atajos, mostrar momentáneamente el número de aplicación sobre los " ++"íconos." ++ ++#: Settings.ui:3694 ++msgid "Hide timeout (ms)" ++msgstr "Tiempo de ocultación (ms)" ++ ++#: Settings.ui:3724 ++msgid "e.g. q" ++msgstr "p.e. q" ++ ++#: Settings.ui:3737 ++msgid "Shortcut to show the overlay for 2 seconds" ++msgstr "Atajo para mostrar el número de aplicación por 2 segundos" ++ ++#: Settings.ui:3784 ++msgid "Show window previews on hotkey" ++msgstr "Mostrar vista rápida de ventanas al pasar con el ratón" ++ ++#: Settings.ui:3811 ++msgid "Show previews when the application have multiple instances" ++msgstr "Mostrar vistas previas cuando la aplicación tiene múltiples instancias" ++ ++#: Settings.ui:3848 ++msgid "Number row" ++msgstr "Fila numérica" ++ ++#: Settings.ui:3849 ++msgid "Numeric keypad" ++msgstr "Teclado numérico" ++ ++#: Settings.ui:3850 ++msgid "Both" ++msgstr "Ambos" ++ ++#: Settings.ui:3864 ++msgid "Hotkeys are activated with" ++msgstr "Usar atajos de teclado para activar aplicaciones" ++ ++#: Settings.ui:3876 ++msgid "Select which keyboard number keys are used to activate the hotkeys" ++msgstr "" ++"Selecciona qué teclas numéricas se usan para activar los atajos de teclado" ++ ++#: Settings.ui:3928 ++msgid "Current Show Applications icon" ++msgstr "Icono actual de Mostrar aplicaciones" ++ ++#: Settings.ui:3967 ++msgid "Custom Show Applications image icon" ++msgstr "Icono Mostrar aplicaciones personalizado" ++ ++#: Settings.ui:4013 ++msgid "Show Applications icon side padding (px)" ++msgstr "Tamaño de relleno (px) de Mostrar aplicaciones" ++ ++#: Settings.ui:4055 ++msgid "Override escape key and return to desktop" ++msgstr "Anular la tecla de escape y volver al escritorio" ++ ++#: Settings.ui:4143 ++msgid "Override Show Desktop line color" ++msgstr "Anular el color de la línea \"Mostrar escritorio\"" ++ ++#: Settings.ui:4203 ++msgid "Reveal the desktop when hovering the Show Desktop button" ++msgstr "Mostrar escritorio al colocar el botón Mostrar Escritorio" ++ ++#: Settings.ui:4234 ++msgid "Delay before revealing the desktop (ms)" ++msgstr "Tiempo antes de ocultar el panel (ms)" ++ ++#: Settings.ui:4264 ++msgid "Fade duration (ms)" ++msgstr "Tiempo de ocultación (ms)" ++ ++#: Settings.ui:4368 ++msgid "The panel background opacity is affected by" ++msgstr "La opacidad del fondo del panel está afectada por" ++ ++#: Settings.ui:4430 ++msgid "Change opacity when a window gets closer than (px)" ++msgstr "Cambiar la opacidad cuando una ventana se aproxima (px)" ++ ++#: Settings.ui:4460 ++msgid "Change opacity to (%)" ++msgstr "Cambiar la opacidad a (%)" ++ ++#: Settings.ui:4512 ++msgid "Opacity change animation duration (ms)" ++msgstr "Duración de las animaciones (ms)" ++ ++#: Settings.ui:4584 ++msgid "Display the main panel on" ++msgstr "Mostrar el panel principal en" ++ ++#: Settings.ui:4626 ++msgid "Display panels on all monitors" ++msgstr "Mostrar los paneles en todos los espacios de trabajo" ++ ++#: Settings.ui:4687 ++msgid "Panel Intellihide" ++msgstr "Ocultación inteligente del panel" ++ ++#: Settings.ui:4740 ++msgid "Hide and reveal the panel according to preferences" ++msgstr "Ocultar y mostrar el panel de acuerdo con las preferencias" ++ ++#: Settings.ui:4787 ++msgid "Order and positions on monitor" ++msgstr "Orden y posiciones en el monitor" ++ ++#: Settings.ui:4808 ++msgid "Apply changes to all monitors" ++msgstr "Aplicar los cambios a todos los monitores" ++ ++#: Settings.ui:4868 ++msgid "" ++"Panel thickness\n" ++"(default is 48)" ++msgstr "" ++"Grosor del panel\n" ++"(48 por defecto)" ++ ++#: Settings.ui:4880 ++msgid "" ++"Panel length (%)\n" ++"(default is 100)" ++msgstr "" ++"Longitud del panel\n" ++"(100 por defecto)" ++ ++#: Settings.ui:4925 ++msgid "Anchor" ++msgstr "Anclaje" ++ ++#: Settings.ui:4938 ++msgid "Panel screen position" ++msgstr "Posición del panel en la pantalla" ++ ++#: Settings.ui:5053 ++msgid "Position" ++msgstr "Posición" ++ ++#: Settings.ui:5097 ++msgid "" ++"App Icon Margin\n" ++"(default is 8)" ++msgstr "" ++"Margen de los íconos\n" ++"(8 por defecto)" ++ ++#: Settings.ui:5145 ++msgid "" ++"App Icon Padding\n" ++"(default is 4)" ++msgstr "" ++"Relleno de los íconos\n" ++"(4 por defecto)" ++ ++#: Settings.ui:5211 ++msgid "Running indicator position" ++msgstr "Posición de los indicadores de ejecución" ++ ++#: Settings.ui:5289 ++msgid "Running indicator style (Focused app)" ++msgstr "Estilo de los indicadores de ejecución (aplicación enfocada)" ++ ++#: Settings.ui:5358 ++msgid "Running indicator style (Unfocused apps)" ++msgstr "Estilo de los indicadores de ejecución (aplicación no enfocada)" ++ ++#: Settings.ui:5418 ++msgid "Override panel theme background color " ++msgstr "Cambiar el color de fondo del tema del panel " ++ ++#: Settings.ui:5481 ++msgid "Override panel theme background opacity" ++msgstr "Cambiar la opacidad de fondo del tema del panel" ++ ++#: Settings.ui:5514 ++msgid "Panel background opacity (%)" ++msgstr "Opacidad del fondo del panel (%)" ++ ++#: Settings.ui:5548 ++msgid "Dynamic background opacity" ++msgstr "Opacidad dinámica del fondo" ++ ++#: Settings.ui:5558 ++msgid "Change opacity when a window gets close to the panel" ++msgstr "Cambiar la opacidad cuando una ventana se aproxima al panel" ++ ++#: Settings.ui:5644 ++msgid "Override panel theme gradient " ++msgstr "Cambiar el gradiente del tema del panel " ++ ++#: Settings.ui:5677 ++msgid "Gradient top color and opacity (%)" ++msgstr "Color y opacidad del gradiente superior (%)" ++ ++#: Settings.ui:5690 ++msgid "Gradient bottom color and opacity (%)" ++msgstr "Color y opacidad del gradiente inferior (%)" ++ ++#: Settings.ui:5800 ++msgid "Animate hovering app icons" ++msgstr "Animar los iconos al cambiar de aplicación" ++ ++#: Settings.ui:5861 ++msgid "Style" ++msgstr "Estilo" ++ ++#: Settings.ui:5967 ++msgid "Show favorite applications on secondary panels" ++msgstr "Mostrar las aplicaciones favoritas en los paneles secundarios" ++ ++#: Settings.ui:6012 ++msgid "Show AppMenu button" ++msgstr "Mostrar el botón Menú de Aplicación" ++ ++#: Settings.ui:6026 ++msgid "Top Bar > Show App Menu must be enabled in Tweak Tool" ++msgstr "" ++"Barra superior > Mostrar menú de aplicación habilitado en Herramienta de " ++"retoques" ++ ++#: Settings.ui:6101 ++msgid "Show window previews on hover" ++msgstr "Mostrar vista rápida de ventanas al pasar con el ratón" ++ ++#: Settings.ui:6127 ++msgid "Show tooltip on hover" ++msgstr "Mostrar barra de herramientas al pasar con el ratón" ++ ++#: Settings.ui:6172 ++msgid "Isolate Workspaces" ++msgstr "Aislar los espacios de trabajo" ++ ++#: Settings.ui:6198 ++msgid "Isolate monitors" ++msgstr "Aislar los monitores" ++ ++#: Settings.ui:6243 ++msgid "Click empty space to close overview" ++msgstr "Haga clic en el espacio vacío para cerrar la vista general" ++ ++#: Settings.ui:6288 ++msgid "Disable show overview on startup" ++msgstr "Desactivar el overview al inicio" ++ ++#: Settings.ui:6320 ++msgid "Ungroup applications" ++msgstr "Desagrupar aplicaciones" ++ ++#: Settings.ui:6485 ++msgid "Toggle windows" ++msgstr "Alternar ventanas" ++ ++#: Settings.ui:6533 ++msgid "Scroll panel action" ++msgstr "Acción del panel de desplazamiento" ++ ++#: Settings.ui:6542 ++msgid "Behavior when mouse scrolling over the panel." ++msgstr "Comportamiento cuando el ratón de desplaza en el panel." ++ ++#: Settings.ui:6566 ++msgid "Scroll icon action" ++msgstr "Acción al desplazar iconos" ++ ++#: Settings.ui:6575 ++msgid "Behavior when mouse scrolling over an application icon." ++msgstr "" ++"Comportamiento cuando el ratón se desplaza sobre el icono de una aplicación." ++ ++#: Settings.ui:6621 Settings.ui:6638 ++msgid "Cycle windows" ++msgstr "Alternar entre ventanas" ++ ++#: Settings.ui:6622 ++msgid "Change volume" ++msgstr "Cambiar el volumen" ++ ++#: Settings.ui:6639 ++msgid "Same as panel" ++msgstr "La misma que el panel" ++ ++#: Settings.ui:6723 ++msgid "Use hotkeys to activate apps" ++msgstr "Usar atajos de teclado para activar aplicaciones" ++ ++#: Settings.ui:6789 ++msgid "Action" ++msgstr "Acción" ++ ++#: Settings.ui:6833 ++msgid "" ++"Tray Font Size\n" ++"(0 = theme default)" ++msgstr "" ++"Tamaño de fuente en la bandeja del sistema\n" ++"(0 = predeterminado)" ++ ++#: Settings.ui:6863 ++msgid "" ++"LeftBox Font Size\n" ++"(0 = theme default)" ++msgstr "" ++"Tamaño de fuente en la zona izquierda\n" ++"(0 = predeterminado)" ++ ++#: Settings.ui:6929 ++msgid "" ++"Tray Item Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"Separación en la bandeja del sistema\n" ++"(-1 = predeterminado)" ++ ++#: Settings.ui:6959 ++msgid "" ++"Status Icon Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"Separación de los íconos de estado\n" ++"(-1 = predeterminado)" ++ ++#: Settings.ui:6989 ++msgid "" ++"LeftBox Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"Separación en la zona izquierda\n" ++"(-1 = predeterminado)" ++ ++#: Settings.ui:7053 ++msgid "Animate switching applications" ++msgstr "Animar al cambiar de aplicación" ++ ++#: Settings.ui:7090 ++msgid "Animate launching new windows" ++msgstr "Animar al abrir nuevas ventanas" ++ ++#: Settings.ui:7135 ++msgid "Keep original gnome-shell dash (overview)" ++msgstr "Conservar el dash original de gnome-shell (vista principal)" ++ ++#: Settings.ui:7160 ++msgid "Force Activities hot corner on primary monitor" ++msgstr "" ++"Forzar las actividades de la esquina 'caliente' en el monitor principal" ++ ++#: Settings.ui:7185 ++msgid "Activate panel menu buttons (e.g. date menu) on click only" ++msgstr "" ++"Activar los botones del menú del panel (p.e. menú de fecha) sólo al pulsar" ++ ++#: Settings.ui:7210 ++msgid "Keep original gnome-shell top panel" ++msgstr "Conservar el panel superior original de gnome-shell" ++ ++#: Settings.ui:7271 ++msgid "App icon secondary (right-click) menu" ++msgstr "Menú secundario (click derecho) de aplicación" ++ ++#: Settings.ui:7330 ++msgid "Fine-Tune" ++msgstr "Retoques" ++ ++#: Settings.ui:7384 ++msgid "GitHub" ++msgstr "GitHub" ++ ++#: Settings.ui:7424 ++msgid "" ++"Use the buttons below to create a settings file from your current " ++"preferences that can be imported on a different machine." ++msgstr "" ++"Usar los botones de abajo para crear el fichero de configuración con tus " ++"preferenciasactuales para poder ser importadas de otra máquina." ++ ++#: Settings.ui:7442 ++msgid "Export and import settings" ++msgstr "Exportar e importar configuración" ++ ++#: Settings.ui:7452 ++msgid "Export to file" ++msgstr "Exportar a un fichero" ++ ++#: Settings.ui:7464 ++msgid "Import from file" ++msgstr "Importar de un fichero" ++ + #~ msgid "Application" + #~ msgstr "Aplicación" + +@@ -1171,9 +2419,6 @@ msgstr "Mostrar unidades montadas en el escritorio." + #~ msgid "Drag here to add favorites" + #~ msgstr "Arrastrar aquí para añadir a favoritos" + +-#~ msgid "New Window" +-#~ msgstr "Ventana nueva" +- + #~ msgid "Quit Application" + #~ msgstr "Salir de la aplicación" + +diff --git a/po/fr.po b/po/fr.po +index d525a5a8..b046d110 100644 +--- a/po/fr.po ++++ b/po/fr.po +@@ -1,5 +1,6 @@ + # #-#-#-#-# fr.po (gnome-shell-extensions master) #-#-#-#-# + # #-#-#-#-# fr.po (gnome-shell-extensions master) #-#-#-#-# ++# #-#-#-#-# fr.po (gnome-shell-extensions master) #-#-#-#-# + # French translation for gnome-shell-extensions. + # Copyright (C) 2011-12 Listed translators + # This file is distributed under the same license as the gnome-shell-extensions package. +@@ -22,11 +23,20 @@ + # Claude Paroz , 2020. + # Sylvestris , 2020. + # ++# #-#-#-#-# fr.po (unnamed project) #-#-#-#-# ++# 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. ++# Laurent Tréguier , 2019. ++# Charles Gagnon , 2019-2020. ++# + #, fuzzy + msgid "" + msgstr "" + "#-#-#-#-# fr.po (gnome-shell-extensions master) #-#-#-#-#\n" + "#-#-#-#-# fr.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"#-#-#-#-# fr.po (gnome-shell-extensions master) #-#-#-#-#\n" + "Project-Id-Version: gnome-shell-extensions master\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/" + "issues\n" +@@ -65,6 +75,19 @@ msgstr "" + "Content-Transfer-Encoding: 8bit\n" + "Plural-Forms: nplurals=2; plural=(n > 1);\n" + "X-Generator: Gtranslator 3.36.0\n" ++"#-#-#-#-# fr.po (unnamed project) #-#-#-#-#\n" ++"Project-Id-Version: unnamed project\n" ++"Report-Msgid-Bugs-To: \n" ++"POT-Creation-Date: 2020-07-12 07:39-0400\n" ++"PO-Revision-Date: 2020-07-12 08:23-0400\n" ++"Last-Translator: Charles Gagnon \n" ++"Language-Team: French - Canada <>\n" ++"Language: fr_CA\n" ++"MIME-Version: 1.0\n" ++"Content-Type: text/plain; charset=UTF-8\n" ++"Content-Transfer-Encoding: 8bit\n" ++"X-Generator: Gtranslator 3.36.0\n" ++"Plural-Forms: nplurals=2; plural=(n > 1);\n" + + #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3 + msgid "GNOME Classic" +@@ -319,19 +342,29 @@ msgstr "Espace de travail %d" + msgid "Add Workspace" + msgstr "Ajouter un espace de travail" + +-#: prefs.js:268 ++#: prefs.js:268 prefs.js:732 ++#, fuzzy + msgid "Primary monitor" +-msgstr "Moniteur principal" ++msgstr "" ++"#-#-#-#-# fr.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Moniteur principal\n" ++"#-#-#-#-# fr.po (unnamed project) #-#-#-#-#\n" ++"Écran principal" + + #: prefs.js:277 prefs.js:284 + msgid "Secondary monitor " + msgstr "Moniteur secondaire " + +-#: prefs.js:309 Settings.ui.h:28 ++#: prefs.js:309 Settings.ui.h:28 Settings.ui.h:153 ++#, fuzzy + msgid "Right" +-msgstr "Droite" ++msgstr "" ++"#-#-#-#-# fr.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Droite\n" ++"#-#-#-#-# fr.po (unnamed project) #-#-#-#-#\n" ++"Droit" + +-#: prefs.js:310 Settings.ui.h:25 ++#: prefs.js:310 Settings.ui.h:25 Settings.ui.h:152 + msgid "Left" + msgstr "Gauche" + +@@ -339,17 +372,30 @@ msgstr "Gauche" + msgid "Intelligent autohide customization" + msgstr "Personnalisation du masquage automatique" + +-#: prefs.js:367 prefs.js:560 prefs.js:616 ++#: prefs.js:367 prefs.js:560 prefs.js:616 prefs.js:376 prefs.js:433 ++#: prefs.js:576 prefs.js:894 prefs.js:1019 prefs.js:1146 prefs.js:1405 ++#: prefs.js:1500 prefs.js:1565 prefs.js:1608 prefs.js:1705 prefs.js:1739 ++#: prefs.js:1781 ++#, fuzzy + msgid "Reset to defaults" +-msgstr "Restaurer la configuration par défaut" ++msgstr "" ++"#-#-#-#-# fr.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Restaurer la configuration par défaut\n" ++"#-#-#-#-# fr.po (unnamed project) #-#-#-#-#\n" ++"Restaurer paramètres" + + #: prefs.js:553 + msgid "Show dock and application numbers" + msgstr "Afficher le dock et le numéro d’application" + +-#: prefs.js:609 ++#: prefs.js:609 prefs.js:1493 ++#, fuzzy + msgid "Customize middle-click behavior" +-msgstr "Personnaliser le comportement du clic milieu" ++msgstr "" ++"#-#-#-#-# fr.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Personnaliser le comportement du clic milieu\n" ++"#-#-#-#-# fr.po (unnamed project) #-#-#-#-#\n" ++"Modifier l'action du clic de la molette" + + #: prefs.js:692 + msgid "Customize running indicators" +@@ -370,15 +416,20 @@ msgstr "Toutes les fenêtres" + msgid "Dash to Dock %s" + msgstr "Dash to Dock %s" + +-#: Settings.ui.h:1 ++#: Settings.ui.h:1 Settings.ui.h:2 ++#, fuzzy + msgid "" + "When set to minimize, double clicking minimizes all the windows of the " + "application." + msgstr "" ++"#-#-#-#-# fr.po (gnome-shell-extensions master) #-#-#-#-#\n" + "Quand réglé sur Minimiser, double-cliquer minimise toutes les fenêtres de " +-"l’application." ++"l’application.\n" ++"#-#-#-#-# fr.po (unnamed project) #-#-#-#-#\n" ++"Quand minimiser est sélectionné, un double-clic réduit toutes les fenêtres " ++"de l'application." + +-#: Settings.ui.h:2 ++#: Settings.ui.h:2 Settings.ui.h:3 + msgid "Shift+Click action" + msgstr "Action Maj+Clic" + +@@ -386,15 +437,25 @@ msgstr "Action Maj+Clic" + msgid "Raise window" + msgstr "Faire apparaître la fenêtre" + +-#: Settings.ui.h:4 ++#: Settings.ui.h:4 Settings.ui.h:5 ++#, fuzzy + msgid "Minimize window" +-msgstr "Minimiser la fenêtre" ++msgstr "" ++"#-#-#-#-# fr.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Minimiser la fenêtre\n" ++"#-#-#-#-# fr.po (unnamed project) #-#-#-#-#\n" ++"Réduire la fenêtre" + +-#: Settings.ui.h:5 ++#: Settings.ui.h:5 Settings.ui.h:6 ++#, fuzzy + msgid "Launch new instance" +-msgstr "Lancer une nouvelle fenêtre" ++msgstr "" ++"#-#-#-#-# fr.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Lancer une nouvelle fenêtre\n" ++"#-#-#-#-# fr.po (unnamed project) #-#-#-#-#\n" ++"Lancer une nouvelle instance" + +-#: Settings.ui.h:6 ++#: Settings.ui.h:6 Settings.ui.h:7 + msgid "Cycle through windows" + msgstr "Cycler sur les fenêtres" + +@@ -414,25 +475,46 @@ msgstr "Minimiser ou afficher l’aperçu des fenêtres" + msgid "Focus or show previews" + msgstr "Activer ou afficher l’aperçu des fenêtres" + +-#: Settings.ui.h:11 ++#: Settings.ui.h:11 appIcons.js:1449 appIcons.js:1509 appIcons.js:1511 ++#: Settings.ui.h:10 + msgid "Quit" + msgstr "Quitter" + +-#: Settings.ui.h:12 ++#: Settings.ui.h:12 Settings.ui.h:11 ++#, fuzzy + msgid "Behavior for Middle-Click." +-msgstr "Comportement pour le clic milieu." ++msgstr "" ++"#-#-#-#-# fr.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Comportement pour le clic milieu.\n" ++"#-#-#-#-# fr.po (unnamed project) #-#-#-#-#\n" ++"Comportement du clic molette." + +-#: Settings.ui.h:13 ++#: Settings.ui.h:13 Settings.ui.h:12 ++#, fuzzy + msgid "Middle-Click action" +-msgstr "Action du clic milieu" ++msgstr "" ++"#-#-#-#-# fr.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Action du clic milieu\n" ++"#-#-#-#-# fr.po (unnamed project) #-#-#-#-#\n" ++"Action clic molette" + +-#: Settings.ui.h:14 ++#: Settings.ui.h:14 Settings.ui.h:13 ++#, fuzzy + msgid "Behavior for Shift+Middle-Click." +-msgstr "Comportement pour Maj+Clic milieu." ++msgstr "" ++"#-#-#-#-# fr.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Comportement pour Maj+Clic milieu.\n" ++"#-#-#-#-# fr.po (unnamed project) #-#-#-#-#\n" ++"Comportement pour Maj+Clic molette." + +-#: Settings.ui.h:15 ++#: Settings.ui.h:15 Settings.ui.h:14 ++#, fuzzy + msgid "Shift+Middle-Click action" +-msgstr "Action de Maj+Clic milieu" ++msgstr "" ++"#-#-#-#-# fr.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Action de Maj+Clic milieu\n" ++"#-#-#-#-# fr.po (unnamed project) #-#-#-#-#\n" ++"Action de Maj+Clic molette" + + #: Settings.ui.h:16 + msgid "Enable Unity7 like glossy backlit items" +@@ -470,11 +552,11 @@ msgstr "Afficher sur tous les écrans." + msgid "Position on screen" + msgstr "Position sur l’écran" + +-#: Settings.ui.h:26 ++#: Settings.ui.h:26 Settings.ui.h:94 + msgid "Bottom" + msgstr "Bas" + +-#: Settings.ui.h:27 ++#: Settings.ui.h:27 Settings.ui.h:95 + msgid "Top" + msgstr "Haut" + +@@ -510,13 +592,18 @@ msgstr "Taille des icônes fixe : faire défiler pour voir les autres icônes" + msgid "Position and size" + msgstr "Position et taille" + +-#: Settings.ui.h:36 ++#: Settings.ui.h:36 Settings.ui.h:183 + msgid "Show favorite applications" + msgstr "Afficher les applications favorites" + +-#: Settings.ui.h:37 ++#: Settings.ui.h:37 Settings.ui.h:184 ++#, fuzzy + msgid "Show running applications" +-msgstr "Afficher les applications en cours" ++msgstr "" ++"#-#-#-#-# fr.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Afficher les applications en cours\n" ++"#-#-#-#-# fr.po (unnamed project) #-#-#-#-#\n" ++"Afficher les applications ouvertes" + + #: Settings.ui.h:38 + msgid "Isolate workspaces." +@@ -539,16 +626,26 @@ msgstr "" + "site d’extension GNOME." + + #: Settings.ui.h:42 ++#, fuzzy + msgid "Show Applications icon" +-msgstr "Afficher le raccourci Afficher les Applications" ++msgstr "" ++"#-#-#-#-# fr.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Afficher le raccourci Afficher les Applications\n" ++"#-#-#-#-# fr.po (unnamed project) #-#-#-#-#\n" ++"Afficher l'icône Applications" + + #: Settings.ui.h:43 + msgid "Move the applications button at the beginning of the dock." + msgstr "Placer le bouton des applications en première position." + +-#: Settings.ui.h:44 ++#: Settings.ui.h:44 Settings.ui.h:136 ++#, fuzzy + msgid "Animate Show Applications." +-msgstr "Animer le raccourci Afficher les Applications." ++msgstr "" ++"#-#-#-#-# fr.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Animer le raccourci Afficher les Applications.\n" ++"#-#-#-#-# fr.po (unnamed project) #-#-#-#-#\n" ++"Animer Afficher les applications." + + #: Settings.ui.h:45 + msgid "Show trash can" +@@ -562,23 +659,33 @@ msgstr "Afficher les appareils et volumes montés" + msgid "Launchers" + msgstr "Lanceurs" + +-#: Settings.ui.h:48 ++#: Settings.ui.h:48 Settings.ui.h:206 ++#, fuzzy + msgid "" + "Enable Super+(0-9) as shortcuts to activate apps. It can also be used " + "together with Shift and Ctrl." + msgstr "" ++"#-#-#-#-# fr.po (gnome-shell-extensions master) #-#-#-#-#\n" + "Activer Super+(0-9) comme raccourcis pour activer les applications. On peut " +-"l’utiliser aussi avec Maj et Ctrl." ++"l’utiliser aussi avec Maj et Ctrl.\n" ++"#-#-#-#-# fr.po (unnamed project) #-#-#-#-#\n" ++"Activer Super+(0-9) comme raccourcis pour lancer les applications. Maj et " ++"Ctrl peuvent aussi être utilisés." + + #: Settings.ui.h:49 + msgid "Use keyboard shortcuts to activate apps" + msgstr "Utiliser des raccourcis clavier pour activer les applications" + +-#: Settings.ui.h:50 ++#: Settings.ui.h:50 Settings.ui.h:194 ++#, fuzzy + msgid "Behaviour when clicking on the icon of a running application." +-msgstr "Comportement du clic sur l’icône d’une application ouverte." ++msgstr "" ++"#-#-#-#-# fr.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Comportement du clic sur l’icône d’une application ouverte.\n" ++"#-#-#-#-# fr.po (unnamed project) #-#-#-#-#\n" ++"Comportement lors du clic sur l'icône d'une application lancée." + +-#: Settings.ui.h:51 ++#: Settings.ui.h:51 Settings.ui.h:195 + msgid "Click action" + msgstr "Action du clic" + +@@ -590,15 +697,20 @@ msgstr "Comportement lors du défilement sur l’icône d’une application." + msgid "Scroll action" + msgstr "Action du défilement" + +-#: Settings.ui.h:55 ++#: Settings.ui.h:55 Settings.ui.h:201 + msgid "Do nothing" + msgstr "Ne rien faire" + +-#: Settings.ui.h:56 ++#: Settings.ui.h:56 Settings.ui.h:202 ++#, fuzzy + msgid "Switch workspace" +-msgstr "Changer d’espace de travail" ++msgstr "" ++"#-#-#-#-# fr.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Changer d’espace de travail\n" ++"#-#-#-#-# fr.po (unnamed project) #-#-#-#-#\n" ++"Défiler les espaces de travail" + +-#: Settings.ui.h:57 ++#: Settings.ui.h:57 Settings.ui.h:193 + msgid "Behavior" + msgstr "Comportement" + +@@ -630,33 +742,53 @@ msgstr "Personnaliser l’indicateur du compteur de fenêtres" + msgid "Default" + msgstr "Défaut" + +-#: Settings.ui.h:64 ++#: Settings.ui.h:64 Settings.ui.h:163 + msgid "Dots" + msgstr "Points" + +-#: Settings.ui.h:65 ++#: Settings.ui.h:65 Settings.ui.h:164 + msgid "Squares" + msgstr "Carrés" + +-#: Settings.ui.h:66 ++#: Settings.ui.h:66 Settings.ui.h:165 ++#, fuzzy + msgid "Dashes" +-msgstr "Tirets" ++msgstr "" ++"#-#-#-#-# fr.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Tirets\n" ++"#-#-#-#-# fr.po (unnamed project) #-#-#-#-#\n" ++"Traits" + +-#: Settings.ui.h:67 ++#: Settings.ui.h:67 Settings.ui.h:166 ++#, fuzzy + msgid "Segmented" +-msgstr "Segments" ++msgstr "" ++"#-#-#-#-# fr.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Segments\n" ++"#-#-#-#-# fr.po (unnamed project) #-#-#-#-#\n" ++"Segmenté" + +-#: Settings.ui.h:68 ++#: Settings.ui.h:68 Settings.ui.h:167 ++#, fuzzy + msgid "Solid" +-msgstr "Solides" ++msgstr "" ++"#-#-#-#-# fr.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Solides\n" ++"#-#-#-#-# fr.po (unnamed project) #-#-#-#-#\n" ++"Solide" + +-#: Settings.ui.h:69 ++#: Settings.ui.h:69 Settings.ui.h:168 + msgid "Ciliora" + msgstr "Ciliora" + +-#: Settings.ui.h:70 ++#: Settings.ui.h:70 Settings.ui.h:169 ++#, fuzzy + msgid "Metro" +-msgstr "Métro" ++msgstr "" ++"#-#-#-#-# fr.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Métro\n" ++"#-#-#-#-# fr.po (unnamed project) #-#-#-#-#\n" ++"Metro" + + #: Settings.ui.h:71 + msgid "Set the background color for the dash." +@@ -670,9 +802,14 @@ msgstr "Changer la couleur du dock" + msgid "Tune the dash background opacity." + msgstr "Régler l’opacité en fond du dock." + +-#: Settings.ui.h:75 ++#: Settings.ui.h:75 Settings.ui.h:89 ++#, fuzzy + msgid "Fixed" +-msgstr "Fixe" ++msgstr "" ++"#-#-#-#-# fr.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Fixe\n" ++"#-#-#-#-# fr.po (unnamed project) #-#-#-#-#\n" ++"Fixé" + + #: Settings.ui.h:76 + msgid "Dynamic" +@@ -690,9 +827,14 @@ msgstr "Forcer des coins droits\n" + msgid "Appearance" + msgstr "Apparence" + +-#: Settings.ui.h:81 ++#: Settings.ui.h:81 Settings.ui.h:228 ++#, fuzzy + msgid "version: " +-msgstr "Version : " ++msgstr "" ++"#-#-#-#-# fr.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Version : \n" ++"#-#-#-#-# fr.po (unnamed project) #-#-#-#-#\n" ++"version: " + + #: Settings.ui.h:82 + msgid "Moves the dash out of the overview transforming it in a dock" +@@ -706,18 +848,25 @@ msgstr "Conçu par" + msgid "Webpage" + msgstr "Site web" + +-#: Settings.ui.h:85 ++#: Settings.ui.h:85 Settings.ui.h:239 ++#, fuzzy + msgid "" + "This program comes with ABSOLUTELY NO WARRANTY.\n" +-"See the GNU General Public License, version 2 or later for details." ++"See the GNU General Public License, version 2 or later for details." + msgstr "" ++"#-#-#-#-# fr.po (gnome-shell-extensions master) #-#-#-#-#\n" + "Ce programme est distribué SANS AUCUNE GARANTIE.\n" +-"Consultez la Licence Générale Publique GNU version 2 ou plus récente pour plus " +-"d’informations." +- +-#: Settings.ui.h:87 ++"Consultez la Licence Générale Publique GNU version 2 ou plus récente pour plus " ++"d’informations.\n" ++"#-#-#-#-# fr.po (unnamed project) #-#-#-#-#\n" ++"Ce programme est fourni SANS AUCUNE GARANTIE.\n" ++"Pour plus de détails, visitez la Licence publique générale GNU, version 2 ou " ++"ultérieure" ++ ++#: Settings.ui.h:87 Settings.ui.h:241 + msgid "About" + msgstr "À propos" + +@@ -733,9 +882,14 @@ msgstr "Opacité minimum" + msgid "Maximum opacity" + msgstr "Opacité maximum" + +-#: Settings.ui.h:91 ++#: Settings.ui.h:91 Settings.ui.h:119 ++#, fuzzy + msgid "Number overlay" +-msgstr "Numéro d’application" ++msgstr "" ++"#-#-#-#-# fr.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Numéro d’application\n" ++"#-#-#-#-# fr.po (unnamed project) #-#-#-#-#\n" ++"Superposition des nombres" + + #: Settings.ui.h:92 + msgid "" +@@ -761,9 +915,14 @@ msgstr "" + msgid "Shortcut for the options above" + msgstr "Raccourci pour les options dessus" + +-#: Settings.ui.h:96 ++#: Settings.ui.h:96 Settings.ui.h:56 ++#, fuzzy + msgid "Syntax: , , , " +-msgstr "Syntaxe : , , , " ++msgstr "" ++"#-#-#-#-# fr.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Syntaxe : , , , \n" ++"#-#-#-#-# fr.po (unnamed project) #-#-#-#-#\n" ++"Syntaxe: , , , " + + #: Settings.ui.h:97 + msgid "Hide timeout (s)" +@@ -793,7 +952,7 @@ msgstr "Afficher le dock quand il ne gêne pas les fenêtres." + msgid "Dodge windows" + msgstr "Masquage automatique intelligent" + +-#: Settings.ui.h:104 ++#: Settings.ui.h:104 Settings.ui.h:46 + msgid "All windows" + msgstr "Toutes les fenêtres" + +@@ -1009,14 +1168,1224 @@ msgstr "Montrer les disques montés" + msgid "Show mounted drives in the desktop." + msgstr "Montrer les disques montés sur le bureau." + +-#~ msgid "Create new matching rule" +-#~ msgstr "Créer une nouvelle règle de concordance" ++#: prefs.js:206 ++msgid "Show Desktop button height (px)" ++msgstr "Hauteur du bouton Afficher le Bureau (px)" + +-#~ msgid "Adaptive" +-#~ msgstr "Adaptatif" ++#: prefs.js:206 ++msgid "Show Desktop button width (px)" ++msgstr "Longueur du bouton Afficher le Bureau (px)" + +-#~ msgid "Show a dot for each windows of the application." +-#~ msgstr "Afficher un point pour chaque fenêtre ouverte de l’application." ++#: prefs.js:218 ++msgid "Unavailable when gnome-shell top panel is present" ++msgstr "Indisponible quand le panneau de gnome-shell est présent" + +-#~ msgid "0.000" +-#~ msgstr "0.000" ++#: prefs.js:293 ++msgid "Show Applications button" ++msgstr "Bouton Afficher les Applications" ++ ++#: prefs.js:294 ++msgid "Activities button" ++msgstr "Bouton Activités" ++ ++#: prefs.js:295 ++msgid "Taskbar" ++msgstr "Barre des tâches" ++ ++#: prefs.js:296 ++msgid "Date menu" ++msgstr "Horloge" ++ ++#: prefs.js:297 ++msgid "System menu" ++msgstr "Menu système" ++ ++#: prefs.js:298 ++msgid "Left box" ++msgstr "Zone gauche" ++ ++#: prefs.js:299 ++msgid "Center box" ++msgstr "Zone centre" ++ ++#: prefs.js:300 ++msgid "Right box" ++msgstr "Zone droite" ++ ++#: prefs.js:301 ++msgid "Desktop button" ++msgstr "Bouton Afficher le Bureau" ++ ++#: prefs.js:307 ++msgid "Move up" ++msgstr "Déplacer vers le haut" ++ ++#: prefs.js:309 ++msgid "Move down" ++msgstr "Déplacer vers le bas" ++ ++#: prefs.js:311 ++msgid "Visible" ++msgstr "Visible" ++ ++#: prefs.js:312 ++msgid "Select element position" ++msgstr "Sélectionner la position de l'élément" ++ ++#: prefs.js:323 ++msgid "Stacked to top" ++msgstr "Empilé en haut" ++ ++#: prefs.js:323 ++msgid "Stacked to left" ++msgstr "Empilé à gauche" ++ ++#: prefs.js:324 ++msgid "Stacked to bottom" ++msgstr "Empilé en bas" ++ ++#: prefs.js:324 ++msgid "Stacked to right" ++msgstr "Empilé à droite" ++ ++#: prefs.js:325 ++msgid "Centered" ++msgstr "Centré" ++ ++#: prefs.js:326 ++msgid "Monitor Center" ++msgstr "Centre de l'écran " ++ ++#: prefs.js:345 ++msgid "More options" ++msgstr "Plus d'options" ++ ++#: prefs.js:369 ++msgid "Show Applications options" ++msgstr "Options du bouton Afficher les Applications" ++ ++#: prefs.js:426 ++msgid "Show Desktop options" ++msgstr "Options du bouton Afficher le Bureau" ++ ++#: prefs.js:569 ++msgid "Running Indicator Options" ++msgstr "Options de l'indicateur d'activité" ++ ++#: prefs.js:732 ++msgid "Monitor " ++msgstr "Écran " ++ ++#: prefs.js:887 ++msgid "Dynamic opacity options" ++msgstr "Options d'opacité dynamique" ++ ++#: prefs.js:1012 ++msgid "Intellihide options" ++msgstr "Options du masquage intelligent" ++ ++#: prefs.js:1139 ++msgid "Window preview options" ++msgstr "Options de la prévisualisation" ++ ++#: prefs.js:1398 ++msgid "Ungrouped application options" ++msgstr "Options des applications dégroupées" ++ ++#: prefs.js:1558 ++msgid "Customize panel scroll behavior" ++msgstr "Modifier l'action du défilement de la souris sur le panneau" ++ ++#: prefs.js:1601 ++msgid "Customize icon scroll behavior" ++msgstr "Modifier l'action du défilement de la souris sur une application" ++ ++#: prefs.js:1698 ++msgid "Advanced hotkeys options" ++msgstr "Raccourcis avancés" ++ ++#: prefs.js:1732 ++msgid "Secondary Menu Options" ++msgstr "Options du menu secondaire" ++ ++#: prefs.js:1774 Settings.ui.h:226 ++msgid "Advanced Options" ++msgstr "Options avancées" ++ ++#: prefs.js:1877 ++msgid "Export settings" ++msgstr "Exporter les paramètres" ++ ++#: prefs.js:1894 ++msgid "Import settings" ++msgstr "Importer des paramètres" ++ ++#: appIcons.js:1431 ++msgid "Show Details" ++msgstr "Afficher les détails" ++ ++#: appIcons.js:1449 ++msgid "New Window" ++msgstr "Nouvelle fenêtre" ++ ++#: appIcons.js:1511 ++msgid "Windows" ++msgstr "Fenêtres" ++ ++#: appIcons.js:1858 ++msgid "Unlock taskbar" ++msgstr "Déverrouiller la barre des tâches" ++ ++#: appIcons.js:1858 ++msgid "Lock taskbar" ++msgstr "Verrouiller la barre des tâches" ++ ++#: appIcons.js:1863 ++msgid "Dash to Panel Settings" ++msgstr "Paramètres Dash to Panel" ++ ++#: appIcons.js:1876 ++msgid "Restore Windows" ++msgstr "Restaurer les fenêtres" ++ ++#: appIcons.js:1876 ++msgid "Show Desktop" ++msgstr "Afficher le bureau" ++ ++#: update.js:48 ++msgid "Unavailable when installed from extensions.gnome.org" ++msgstr "Indisponible lorsqu'installé depuis extensions.gnome.org" ++ ++#: update.js:62 ++#, javascript-format ++msgid "Version %s (%s) is available" ++msgstr "La version %s (%s) est disponible" ++ ++#: update.js:63 ++msgid "Details" ++msgstr "Détails" ++ ++#: update.js:64 ++msgid "Update" ++msgstr "Mettre à jour" ++ ++#: update.js:67 ++msgid "Already up to date" ++msgstr "Déjà à jour" ++ ++#: update.js:75 ++msgid "Error: " ++msgstr "Erreur: " ++ ++#: update.js:168 ++msgid "Update successful, please log out/in" ++msgstr "" ++"Mise à jour complétée avec succès, veuillez fermer/ouvrir votre session" ++ ++#: update.js:169 ++msgid "Log out" ++msgstr "Fermer la session" ++ ++#: update.js:173 ++msgid "Update successful, please restart GNOME Shell" ++msgstr "Mise à jour complétée avec succès, veuillez redémarrer GNOME Shell" ++ ++#: update.js:174 ++msgid "Restart GNOME Shell" ++msgstr "Redémarrer GNOME Shell" ++ ++#: update.js:174 ++msgid "Restarting GNOME Shell..." ++msgstr "Redémarrage de GNOME Shell..." ++ ++#: Settings.ui.h:1 ++msgid "Nothing yet!" ++msgstr "Rien pour l'instant !" ++ ++#: Settings.ui.h:4 ++msgid "Raise windows" ++msgstr "Montrer les fenêtres" ++ ++#: Settings.ui.h:8 ++msgid "Cycle windows + minimize" ++msgstr "Cycler sur les fenêtres + réduire" ++ ++#: Settings.ui.h:9 ++msgid "Toggle single / Preview multiple" ++msgstr "Prévisualisation simple / multiple" ++ ++#: Settings.ui.h:15 ++msgid "Integrate AppMenu items" ++msgstr "Intégrer les actions du Menu d'applications" ++ ++#: Settings.ui.h:16 ++msgid "Show Details menu item" ++msgstr "Menu Afficher les détails" ++ ++#: Settings.ui.h:17 ++msgid "Highlight focused application" ++msgstr "Surligner l'application active" ++ ++#: Settings.ui.h:18 ++msgid "Icon dominant color" ++msgstr "Couleur d'icône dominante" ++ ++#: Settings.ui.h:19 ++msgid "Custom color" ++msgstr "Couleur personnalisée" ++ ++#: Settings.ui.h:20 ++msgid "Highlight opacity" ++msgstr "Opacité du surlignement" ++ ++#: Settings.ui.h:21 ++msgid "Indicator size (px)" ++msgstr "Taille de l'indicateur (px)" ++ ++#: Settings.ui.h:22 ++msgid "Indicator color - Icon Dominant" ++msgstr "Couleur de l'indicateur - Icône dominante" ++ ++#: Settings.ui.h:23 ++msgid "Indicator color - Override Theme" ++msgstr "Couleur de l'indicateur - Remplacer le thème" ++ ++#: Settings.ui.h:24 ++msgid "1 window open (or ungrouped)" ++msgstr "1 fenêtre ouverte (ou dégroupée)" ++ ++#: Settings.ui.h:25 ++msgid "Apply to all" ++msgstr "Appliquer à tout" ++ ++#: Settings.ui.h:26 ++msgid "2 windows open" ++msgstr "2 fenêtres ouvertes" ++ ++#: Settings.ui.h:27 ++msgid "3 windows open" ++msgstr "3 fenêtres ouvertes" ++ ++#: Settings.ui.h:28 ++msgid "4+ windows open" ++msgstr "4+ fenêtres ouvertes" ++ ++#: Settings.ui.h:29 ++msgid "Use different for unfocused" ++msgstr "Style différent pour les applications inactives" ++ ++#: Settings.ui.h:30 ++msgid "Font size (px) of the application titles (default is 14)" ++msgstr "Taille (px) du texte des titres d'application (défaut: 14)" ++ ++#: Settings.ui.h:31 ++msgid "Font weight of application titles" ++msgstr "Épaisseur de la police du texte des titres d'application" ++ ++#: Settings.ui.h:32 ++msgid "inherit from theme" ++msgstr "hériter du thème" ++ ++#: Settings.ui.h:33 ++msgid "normal" ++msgstr "normale" ++ ++#: Settings.ui.h:34 ++msgid "lighter" ++msgstr "plus légere" ++ ++#: Settings.ui.h:35 ++msgid "bold" ++msgstr "grasse" ++ ++#: Settings.ui.h:36 ++msgid "bolder" ++msgstr "plus grasse" ++ ++#: Settings.ui.h:37 ++msgid "Font color of the application titles" ++msgstr "Couleur du texte des titres d'application" ++ ++#: Settings.ui.h:38 ++msgid "Font color of the minimized application titles" ++msgstr "Couleur du texte des titres d'application de fenêtres minimisées" ++ ++#: Settings.ui.h:39 ++msgid "Maximum width (px) of the application titles (default is 160)" ++msgstr "Longueur maximum (px) des titres d'application (défaut: 160)" ++ ++#: Settings.ui.h:40 ++msgid "Use a fixed width for the application titles" ++msgstr "Utiliser une largeur fixe pour les titres d'application" ++ ++#: Settings.ui.h:41 ++msgid "" ++"The application titles all have the same width, even if their texts are " ++"shorter than the maximum width. The maximum width value is used as the fixed " ++"width." ++msgstr "" ++"Les titres d'application ont tous la même longueur, même si leur texte est " ++"plus petit que la taille maximum. La valeur maximale de longueur est " ++"utilisée comme longueur fixe." ++ ++#: Settings.ui.h:42 ++msgid "Display running indicators on unfocused applications" ++msgstr "Afficher des indicateurs sur les applications an arrière-plan" ++ ++#: Settings.ui.h:43 ++msgid "Use the favorite icons as application launchers" ++msgstr "Utiliser les applications favorites comme lanceurs" ++ ++#: Settings.ui.h:44 ++msgid "Only hide the panel when it is obstructed by windows " ++msgstr "Ne cacher le panneau que lorsqu'il est au-dessus d'une fenêtre " ++ ++#: Settings.ui.h:45 ++msgid "The panel hides from" ++msgstr "Le panneau se cache de" ++ ++#: Settings.ui.h:47 ++msgid "Focused windows" ++msgstr "Fenêtres au premier plan" ++ ++#: Settings.ui.h:48 ++msgid "Maximized windows" ++msgstr "Fenêtres maximisées" ++ ++#: Settings.ui.h:49 ++msgid "Require pressure at the edge of the screen to reveal the panel" ++msgstr "Requérir une pression sur le bord de l'écran pour afficher le panneau" ++ ++#: Settings.ui.h:50 ++msgid "Required pressure threshold (px)" ++msgstr "Seuil d'activation (px)" ++ ++#: Settings.ui.h:51 ++msgid "Required pressure timeout (ms)" ++msgstr "Délai d'activation (ms)" ++ ++#: Settings.ui.h:52 ++msgid "Allow the panel to be revealed while in fullscreen mode" ++msgstr "Permettre au panneau d'être affiché en mode plein écran" ++ ++#: Settings.ui.h:53 ++msgid "Only hide secondary panels (requires multi-monitors option)" ++msgstr "Ne cacher que les panneaux secondaires (multi-moniteurs)" ++ ++#: Settings.ui.h:54 ++msgid "e.g. i" ++msgstr "e.g. i" ++ ++#: Settings.ui.h:55 ++msgid "Keyboard shortcut to reveal and hold the panel" ++msgstr "Raccourci clavier pour révéler et maintenir le panneau" ++ ++#: Settings.ui.h:57 ++msgid "Hide and reveal animation duration (ms)" ++msgstr "Durée des animations d'affichage (ms)" ++ ++#: Settings.ui.h:58 ++msgid "Delay before hiding the panel (ms)" ++msgstr "Délai avant le masquage du panneau (ms)" ++ ++#: Settings.ui.h:59 ++msgid "Delay before enabling intellihide on start (ms)" ++msgstr "Délai avant l'activation du masquage intelligent (ms)" ++ ++#: Settings.ui.h:60 ++msgid "Time (ms) before showing (400 is default)" ++msgstr "Temps (ms) avant d'afficher (400 par défaut)" ++ ++#: Settings.ui.h:61 ++msgid "Animation time (ms)" ++msgstr "Durée d'animation (ms)" ++ ++#: Settings.ui.h:62 ++msgid "Time (ms) before hiding (100 is default)" ++msgstr "Temps (ms) avant de cacher (100 par défaut)" ++ ++#: Settings.ui.h:63 ++msgid "Immediate on application icon click" ++msgstr "Immédiat au clic d'application" ++ ++#: Settings.ui.h:64 ++msgid "Middle click on the preview to close the window" ++msgstr "Cliquez avec la molette sur la prévisualisation pour fermer la fenêtre" ++ ++#: Settings.ui.h:65 ++msgid "Window previews preferred size (px)" ++msgstr "Taille des prévisualisations de fenêtres (px)" ++ ++#: Settings.ui.h:66 ++msgid "Window previews aspect ratio Y (height)" ++msgstr "Ratio d'aspect des prévisualisations (hauteur)" ++ ++#: Settings.ui.h:67 ++msgid "Window previews padding (px)" ++msgstr "Marge intérieure des prévisualisations (px)" ++ ++#: Settings.ui.h:68 ++msgid "1" ++msgstr "1" ++ ++#: Settings.ui.h:69 ++msgid "2" ++msgstr "2" ++ ++#: Settings.ui.h:70 ++msgid "3" ++msgstr "3" ++ ++#: Settings.ui.h:71 ++msgid "4" ++msgstr "4" ++ ++#: Settings.ui.h:72 ++msgid "5" ++msgstr "5" ++ ++#: Settings.ui.h:73 ++msgid "6" ++msgstr "6" ++ ++#: Settings.ui.h:74 ++msgid "7" ++msgstr "7" ++ ++#: Settings.ui.h:75 ++msgid "8" ++msgstr "8" ++ ++#: Settings.ui.h:76 ++msgid "9" ++msgstr "9" ++ ++#: Settings.ui.h:77 ++msgid "10" ++msgstr "10" ++ ++#: Settings.ui.h:78 ++msgid "11" ++msgstr "11" ++ ++#: Settings.ui.h:79 ++msgid "12" ++msgstr "12" ++ ++#: Settings.ui.h:80 ++msgid "13" ++msgstr "13" ++ ++#: Settings.ui.h:81 ++msgid "14" ++msgstr "14" ++ ++#: Settings.ui.h:82 ++msgid "15" ++msgstr "15" ++ ++#: Settings.ui.h:83 ++msgid "16" ++msgstr "16" ++ ++#: Settings.ui.h:84 ++msgid "17" ++msgstr "17" ++ ++#: Settings.ui.h:85 ++msgid "18" ++msgstr "18" ++ ++#: Settings.ui.h:86 ++msgid "19" ++msgstr "19" ++ ++#: Settings.ui.h:87 ++msgid "20" ++msgstr "200" ++ ++#: Settings.ui.h:88 ++msgid "21" ++msgstr "21" ++ ++#: Settings.ui.h:90 ++msgid "Window previews aspect ratio X (width)" ++msgstr "Ratio d'aspect des prévisualisations (largeur)" ++ ++#: Settings.ui.h:91 ++msgid "Use custom opacity for the previews background" ++msgstr "Opacité personnalisée pour l'arrière plan des prévisualisations" ++ ++#: Settings.ui.h:92 ++msgid "If disabled, the previews background have the same opacity as the panel" ++msgstr "Si désactivé, les prévisualisations ont la même opacité que le panneau" ++ ++#: Settings.ui.h:93 ++msgid "Close button and header position" ++msgstr "Bouton de fermeture et position de l'en-tête" ++ ++#: Settings.ui.h:96 ++msgid "Display window preview headers" ++msgstr "Afficher le titre de la fenêtre dans la prévis." ++ ++#: Settings.ui.h:97 ++msgid "Font size (px) of the preview titles" ++msgstr "Taille (px) du texte des prévisualisations" ++ ++#: Settings.ui.h:98 ++msgid "Font weight of the preview titles" ++msgstr "Épaisseur du texte des titres de prévisualisation" ++ ++#: Settings.ui.h:99 ++msgid "Font color of the preview titles" ++msgstr "Couleur du texte des titres de prévisualisation" ++ ++#: Settings.ui.h:100 ++msgid "Enable window peeking" ++msgstr "Activer la vue de fenêtre" ++ ++#: Settings.ui.h:101 ++msgid "" ++"When hovering over a window preview for some time, the window gets " ++"distinguished." ++msgstr "" ++"Le survol sur la prévisualisation de la fenêtre, pendant un certain temps, " ++"la met en avant." ++ ++#: Settings.ui.h:102 ++msgid "Enter window peeking mode timeout (ms)" ++msgstr "Temps d'attente avant activation de la vue fenêtre" ++ ++#: Settings.ui.h:103 ++msgid "50" ++msgstr "50" ++ ++#: Settings.ui.h:104 ++msgid "" ++"Time of inactivity while hovering over a window preview needed to enter the " ++"window peeking mode." ++msgstr "" ++"Temps d'inactivité pendant le survol de la prévisualisation d'une fenêtre " ++"nécessaire pour activer la vue de la fenêtre." ++ ++#: Settings.ui.h:105 ++msgid "Window peeking mode opacity" ++msgstr "Opacité de la vue de fenêtre" ++ ++#: Settings.ui.h:106 ++msgid "0" ++msgstr "0" ++ ++#: Settings.ui.h:107 ++msgid "" ++"All windows except for the peeked one have their opacity set to the same " ++"value." ++msgstr "" ++"Toutes les fenêtres, mis à part celle prévisualisée, ont leur opacité mise à " ++"la même valeur." ++ ++#: Settings.ui.h:108 ++msgid "Delay between mouse scroll events (ms)" ++msgstr "Délai entre les évènements de défilement de la souris (ms)" ++ ++#: Settings.ui.h:109 ++msgid "Use this value to limit the number of captured mouse scroll events." ++msgstr "" ++"Utiliser cette valeur pour limiter le nombre d'évènements de défilement de " ++"la souris (ms)" ++ ++#: Settings.ui.h:110 ++msgid "Show popup when changing workspace" ++msgstr "Afficher l'indicateur de changement d'espace de travail" ++ ++#: Settings.ui.h:111 ++msgid "This affects workspace popup when scrolling on the panel only." ++msgstr "" ++"Affecte uniquement l'indicateur de changement d'espace de travail au " ++"défilement de la souris sur le panneau." ++ ++#: Settings.ui.h:112 ++msgid "Super" ++msgstr "Super" ++ ++#: Settings.ui.h:113 ++msgid "Super + Alt" ++msgstr "Super + Alt" ++ ++#: Settings.ui.h:114 ++msgid "Hotkeys prefix" ++msgstr "Préfixe raccourcis" ++ ++#: Settings.ui.h:115 ++msgid "Hotkeys will either be Super+Number or Super+Alt+Num" ++msgstr "Les raccourcis seront soit Super+Numéro soit Super+Alt+Numéro" ++ ++#: Settings.ui.h:116 ++msgid "Never" ++msgstr "Jamais" ++ ++#: Settings.ui.h:117 ++msgid "Show temporarily" ++msgstr "Afficher temporairement" ++ ++#: Settings.ui.h:118 ++msgid "Always visible" ++msgstr "Toujours visible" ++ ++#: Settings.ui.h:120 ++msgid "" ++"Temporarily show the application numbers over the icons when using the " ++"hotkeys." ++msgstr "" ++"Afficher temporairement les numéros des applications par dessus les icônes " ++"lors de l'utilisation des raccourcis." ++ ++#: Settings.ui.h:121 ++msgid "Hide timeout (ms)" ++msgstr "Délai avant de cacher (ms)" ++ ++#: Settings.ui.h:122 ++msgid "e.g. q" ++msgstr "e.g. q" ++ ++#: Settings.ui.h:123 ++msgid "Shortcut to show the overlay for 2 seconds" ++msgstr "Raccourci pour afficher la superposition pendant 2 secondes" ++ ++#: Settings.ui.h:124 ++msgid "Show window previews on hotkey" ++msgstr "Afficher les aperçus des fenêtres lors de l'utilisation d'un raccourci" ++ ++#: Settings.ui.h:125 ++msgid "Show previews when the application have multiple instances" ++msgstr "" ++"Afficher les aperçus lorsque les applications possèdent plusieurs fenêtres" ++ ++#: Settings.ui.h:126 ++msgid "Number row" ++msgstr "Rangée des chiffres" ++ ++#: Settings.ui.h:127 ++msgid "Numeric keypad" ++msgstr "Pavé numérique" ++ ++#: Settings.ui.h:128 ++msgid "Both" ++msgstr "Les deux" ++ ++#: Settings.ui.h:129 ++msgid "Hotkeys are activated with" ++msgstr "Les raccourcis sont activés par" ++ ++#: Settings.ui.h:130 ++msgid "Select which keyboard number keys are used to activate the hotkeys" ++msgstr "" ++"Sélectionner quelles touches numériques sont utilisées pour activer les " ++"raccourcis" ++ ++#: Settings.ui.h:131 ++msgid "Current Show Applications icon" ++msgstr "Icône Afficher les Applications actuelle" ++ ++#: Settings.ui.h:132 ++msgid "Select a Show Applications image icon" ++msgstr "Sélectionner une icône Afficher les Applications" ++ ++#: Settings.ui.h:133 ++msgid "Custom Show Applications image icon" ++msgstr "Icône d'affichage des applications personnalisée" ++ ++#: Settings.ui.h:134 ++msgid "Show Applications icon side padding (px)" ++msgstr "Marge interne du bouton \"Afficher les Applications\"" ++ ++#: Settings.ui.h:135 ++msgid "Override escape key and return to desktop" ++msgstr "" ++"Remplacer l'action de la touche d'échappement et retourner sur le bureau" ++ ++#: Settings.ui.h:137 ++msgid "Reveal the desktop when hovering the Show Desktop button" ++msgstr "Révéler le bureau lors du survol du bouton \"Afficher le Bureau\"" ++ ++#: Settings.ui.h:138 ++msgid "Delay before revealing the desktop (ms)" ++msgstr "Délai avant affichage du bureau (ms)" ++ ++#: Settings.ui.h:139 ++msgid "Fade duration (ms)" ++msgstr "Durée du fondu (ms)" ++ ++#: Settings.ui.h:140 ++msgid "The panel background opacity is affected by" ++msgstr "L'opacité de l'arrière-plan du panneau est affectée par" ++ ++#: Settings.ui.h:141 ++msgid "Change opacity when a window gets closer than (px)" ++msgstr "Changer l'opacité lorsqu'une fenêtre est plus proche que (px)" ++ ++#: Settings.ui.h:143 ++#, no-c-format ++msgid "Change opacity to (%)" ++msgstr "Changer l'opacité à (%)" ++ ++#: Settings.ui.h:144 ++msgid "Opacity change animation duration (ms)" ++msgstr "Durée de l'animation de changement d'opacité (ms)" ++ ++#: Settings.ui.h:145 ++msgid "Display the main panel on" ++msgstr "Afficher le panneau principal sur" ++ ++#: Settings.ui.h:146 ++msgid "Display panels on all monitors" ++msgstr "Afficher le panneau principal sur tous les écrans" ++ ++#: Settings.ui.h:147 ++msgid "Panel Intellihide" ++msgstr "Masquage intelligent du panneau" ++ ++#: Settings.ui.h:148 ++msgid "Hide and reveal the panel according to preferences" ++msgstr "Afficher/Cacher le panneau selon les préférences" ++ ++#: Settings.ui.h:149 ++msgid "Order and positions on monitor" ++msgstr "Ordre et positions de l'écran" ++ ++#: Settings.ui.h:150 ++msgid "Apply changes to all monitors" ++msgstr "Appliquer les changements sur tous les écrans" ++ ++#: Settings.ui.h:151 ++msgid "Panel screen position" ++msgstr "Position du panneau" ++ ++#: Settings.ui.h:154 ++msgid "Position" ++msgstr "Position" ++ ++#: Settings.ui.h:155 ++msgid "" ++"Panel Size\n" ++"(default is 48)" ++msgstr "" ++"Taille du panneau\n" ++"(la valeur par défaut est 48)" ++ ++#: Settings.ui.h:157 ++msgid "" ++"App Icon Margin\n" ++"(default is 8)" ++msgstr "" ++"Marge ext. de l'icône d'application\n" ++"(la valeur par défaut est 8)" ++ ++#: Settings.ui.h:159 ++msgid "" ++"App Icon Padding\n" ++"(default is 4)" ++msgstr "" ++"Marge int. de l'icône d'application\n" ++"(la valeur par défaut est 4)" ++ ++#: Settings.ui.h:161 ++msgid "Running indicator position" ++msgstr "Position de l'indicateur d'activité" ++ ++#: Settings.ui.h:162 ++msgid "Running indicator style (Focused app)" ++msgstr "Style de l'indicateur d'activité (Application active)" ++ ++#: Settings.ui.h:170 ++msgid "Running indicator style (Unfocused apps)" ++msgstr "Style de l'indicateur d'activité (Applications inactives)" ++ ++#: Settings.ui.h:171 ++msgid "Override panel theme background color " ++msgstr "Remplacer la couleur de fond du thème du panneau " ++ ++#: Settings.ui.h:172 ++msgid "Override panel theme background opacity" ++msgstr "Remplacer l'opacité du thème du panneau" ++ ++#: Settings.ui.h:174 ++#, no-c-format ++msgid "Panel background opacity (%)" ++msgstr "Opacité du fond du panneau" ++ ++#: Settings.ui.h:175 ++msgid "Dynamic background opacity" ++msgstr "Opacité de fond dynamique" ++ ++#: Settings.ui.h:176 ++msgid "Change opacity when a window gets close to the panel" ++msgstr "Changer l'opacité lorsqu'une fenêtre s'approche du panneau" ++ ++#: Settings.ui.h:177 ++msgid "Override panel theme gradient " ++msgstr "Remplacer le gradient du thème du panneau " ++ ++#: Settings.ui.h:179 ++#, no-c-format ++msgid "Gradient top color and opacity (%)" ++msgstr "Couleur et opacité (%) du haut du gradient" ++ ++#: Settings.ui.h:181 ++#, no-c-format ++msgid "Gradient bottom color and opacity (%)" ++msgstr "Couleur et opacité (%) du bas du gradient" ++ ++#: Settings.ui.h:182 ++msgid "Style" ++msgstr "Style" ++ ++#: Settings.ui.h:185 ++msgid "Show favorite applications on secondary panels" ++msgstr "Afficher les applications favorites sur les panneaux secondaires" ++ ++#: Settings.ui.h:186 ++msgid "Show AppMenu button" ++msgstr "Afficher le bouton Menu d'Applications" ++ ++#: Settings.ui.h:187 ++msgid "Top Bar > Show App Menu must be enabled in Tweak Tool" ++msgstr "" ++"Barre supérieure > Afficher le menu de l'application doit être activé dans " ++"Ajustements" ++ ++#: Settings.ui.h:188 ++msgid "Show window previews on hover" ++msgstr "Afficher les aperçus des fenêtres lors du survol" ++ ++#: Settings.ui.h:189 ++msgid "Show tooltip on hover" ++msgstr "Afficher les bulles d'info. lors du survol" ++ ++#: Settings.ui.h:190 ++msgid "Isolate Workspaces" ++msgstr "Isoler les espaces de travail" ++ ++#: Settings.ui.h:191 ++msgid "Isolate monitors" ++msgstr "Isoler les écrans" ++ ++#: Settings.ui.h:192 ++msgid "Ungroup applications" ++msgstr "Dégrouper les applications" ++ ++#: Settings.ui.h:196 ++msgid "Toggle windows" ++msgstr "Basculer les fenêtres" ++ ++#: Settings.ui.h:197 ++msgid "Scroll panel action" ++msgstr "Action du défilement de la souris sur le panneau" ++ ++#: Settings.ui.h:198 ++msgid "Behavior when mouse scrolling over the panel." ++msgstr "Comportement lors du défilement de la souris sur le panneau" ++ ++#: Settings.ui.h:199 ++msgid "Scroll icon action" ++msgstr "Action du défilement de la souris sur une application" ++ ++#: Settings.ui.h:200 ++msgid "Behavior when mouse scrolling over an application icon." ++msgstr "Comportement lors du défilement de la souris sur une application" ++ ++#: Settings.ui.h:203 ++msgid "Cycle windows" ++msgstr "Défiler les fenêtres" ++ ++#: Settings.ui.h:204 ++msgid "Change volume" ++msgstr "Changer le volume" ++ ++#: Settings.ui.h:205 ++msgid "Same as panel" ++msgstr "Comme le panneau" ++ ++#: Settings.ui.h:207 ++msgid "Use hotkeys to activate apps" ++msgstr "Utiliser des raccourcis pour lancer les applications" ++ ++#: Settings.ui.h:208 ++msgid "Action" ++msgstr "Action" ++ ++#: Settings.ui.h:209 ++msgid "" ++"Tray Font Size\n" ++"(0 = theme default)" ++msgstr "" ++"Taille de la police\n" ++"(0 = par défaut)" ++ ++#: Settings.ui.h:211 ++msgid "" ++"LeftBox Font Size\n" ++"(0 = theme default)" ++msgstr "" ++"Taille de la police de la zone de gauche\n" ++"(0 = par défaut)" ++ ++#: Settings.ui.h:213 ++msgid "" ++"Tray Item Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"Marge des éléments de la barre d'état\n" ++"(-1 = par défaut)" ++ ++#: Settings.ui.h:215 ++msgid "" ++"Status Icon Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"Marge des icônes de statut\n" ++"(-1 = par défaut)" ++ ++#: Settings.ui.h:217 ++msgid "" ++"LeftBox Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"Marge de la zone de gauche\n" ++"(-1 = par défaut)" ++ ++#: Settings.ui.h:219 ++msgid "Animate switching applications" ++msgstr "Animer le changement d'application" ++ ++#: Settings.ui.h:220 ++msgid "Animate launching new windows" ++msgstr "Animer le lancement de nouvelles fenêtres" ++ ++#: Settings.ui.h:221 ++msgid "Keep original gnome-shell dash (overview)" ++msgstr "Garder le lanceur d'origine de gnome-shell (activités)" ++ ++#: Settings.ui.h:222 ++msgid "Force Activities hot corner on primary monitor" ++msgstr "Forcer le coin actif des Activités sur l'écran principal" ++ ++#: Settings.ui.h:223 ++msgid "Activate panel menu buttons (e.g. date menu) on click only" ++msgstr "Activer les menus du panneau seulement au clic" ++ ++#: Settings.ui.h:224 ++msgid "Keep original gnome-shell top panel" ++msgstr "Garder le panneau d'origine de gnome-shell" ++ ++#: Settings.ui.h:225 ++msgid "App icon secondary (right-click) menu" ++msgstr "Menu secondaire de l'application (clic droit)" ++ ++#: Settings.ui.h:227 ++msgid "Fine-Tune" ++msgstr "Personnalisation" ++ ++#: Settings.ui.h:229 ++msgid "GitHub" ++msgstr "GitHub" ++ ++#: Settings.ui.h:230 ++msgid "" ++"Use the buttons below to create a settings file from your current " ++"preferences that can be imported on a different machine." ++msgstr "" ++"Utiliser les boutons ci-dessous pour créer un fichier de paramètres à partir " ++"de vos préférences actuelles qui pourra être importé sur une autre machine." ++ ++#: Settings.ui.h:231 ++msgid "Export and import settings" ++msgstr "Import et export de paramètres" ++ ++#: Settings.ui.h:232 ++msgid "Export to file" ++msgstr "Exporter vers un fichier" ++ ++#: Settings.ui.h:233 ++msgid "Import from file" ++msgstr "Importer à partir d'un fichier" ++ ++#: Settings.ui.h:234 ++msgid "" ++"This allows you to update the extension directly from the GitHub repository." ++msgstr "" ++"Ceci vous permet de mettre l'extension à jour directement depuis GitHub" ++ ++#: Settings.ui.h:235 ++msgid "Updates" ++msgstr "Mises à jour" ++ ++#: Settings.ui.h:236 ++msgid "Periodically check for updates" ++msgstr "Vérifier périodiquement les mises à jour" ++ ++#: Settings.ui.h:237 ++msgid "Check now" ++msgstr "Vérifier maintenant" ++ ++#: Settings.ui.h:238 ++msgid "" ++"Be aware, these official Dash to " ++"Panel releases might not be reviewed yet on extensions.gnome.org! Read more" ++msgstr "" ++"Soyez avisé, ces versions " ++"officielles de Dash to Panel n'ont peut-être pas encore été approuvées sur " ++"extensions.gnome.org! En savoir plus" ++ ++#~ msgid "Create new matching rule" ++#~ msgstr "Créer une nouvelle règle de concordance" ++ ++#~ msgid "Adaptive" ++#~ msgstr "Adaptatif" ++ ++#~ msgid "Show a dot for each windows of the application." ++#~ msgstr "Afficher un point pour chaque fenêtre ouverte de l’application." ++ ++#~ msgid "0.000" ++#~ msgstr "0.000" ++ ++#~ msgid "Top, with plugin icons collapsed to bottom" ++#~ msgstr "En haut, et placer les icônes de plugins au bas" ++ ++#~ msgid "Left, with plugin icons collapsed to right" ++#~ msgstr "À gauche, et placer les icônes de plugins sur la droite" ++ ++#~ msgid "Top, with fixed center plugin icons" ++#~ msgstr "En haut, et fixer les icônes de plugins au centre" ++ ++#~ msgid "Left, with fixed center plugin icons" ++#~ msgstr "À gauche, et fixer les icônes de plugins au centre" ++ ++#~ msgid "Top, with floating center plugin icons" ++#~ msgstr "En haut, et laisser flotter les icônes de plugins au centre" ++ ++#~ msgid "Left, with floating center plugin icons" ++#~ msgstr "À gauche, et laisser flotter les icônes de plugins au centre" ++ ++#~ msgid "Center, fixed in middle of monitor" ++#~ msgstr "Centrer, et fixer au milieu de l'écran" ++ ++#~ msgid "Center, floating between top and bottom elements" ++#~ msgstr "Centrer, et laisser flotter entre les éléments du haut et du bas" ++ ++#~ msgid "Center, floating between left and right elements" ++#~ msgstr "Centrer, et laisser flotter entre les éléments à gauche et à droite" ++ ++#~ msgid "Top of plugin icons" ++#~ msgstr "En haut des icônes de plugins" ++ ++#~ msgid "Left of plugin icons" ++#~ msgstr "À gauche des icônes de plugins" ++ ++#~ msgid "Bottom of plugin icons" ++#~ msgstr "En bas des icônes de plugins" ++ ++#~ msgid "Right of plugin icons" ++#~ msgstr "À droite des icônes de plugins" ++ ++#~ msgid "Top of system indicators" ++#~ msgstr "En haut du menu système" ++ ++#~ msgid "Left of system indicators" ++#~ msgstr "À gauche du menu système" ++ ++#~ msgid "Bottom of system indicators" ++#~ msgstr "En bas du menu système" ++ ++#~ msgid "Right of system indicators" ++#~ msgstr "À droite du menu système" ++ ++#~ msgid "Left of taskbar" ++#~ msgstr "À gauche de la barre des tâches" ++ ++#~ msgid "Bottom of taskbar" ++#~ msgstr "En bas de la barre des tâches" ++ ++#~ msgid "Right of taskbar" ++#~ msgstr "À droite de la barre des tâches" ++ ++#~ msgid "Multi-monitors options" ++#~ msgstr "Options multi-écran" ++ ++#~ msgid "Event logs" ++#~ msgstr "Journaux d'évènements" ++ ++#~ msgid "System" ++#~ msgstr "Système" ++ ++#~ msgid "Device Management" ++#~ msgstr "Gestionnaire de périphériques" ++ ++#~ msgid "Disk Management" ++#~ msgstr "Gestionnaire de disques" ++ ++#~ msgid "Terminal" ++#~ msgstr "Terminal" ++ ++#~ msgid "Files" ++#~ msgstr "Fichiers" ++ ++#~ msgid "Extensions" ++#~ msgstr "Extensions" ++ ++#~ msgid "Display favorite applications on all monitors" ++#~ msgstr "Afficher les applications favorites sur tous les écrans" ++ ++#~ msgid "Display the clock on all monitors" ++#~ msgstr "Afficher l'horloge sur tous les écrans" ++ ++#~ msgid "Display the status menu on all monitors" ++#~ msgstr "Afficher le menu système sur tous les écrans" ++ ++#~ msgid "Taskbar position" ++#~ msgstr "Position de la barre des tâches" ++ ++#~ msgid "Clock location" ++#~ msgstr "Position de l'horloge" ++ ++#~ msgid "Highlight color" ++#~ msgstr "Couleur de surlignement" ++ ++#~ msgid "Preview timeout on icon leave (ms)" ++#~ msgstr "Délai de l'aperçu lorsqu'on quitte l'icône (ms)" ++ ++#~ msgid "" ++#~ "If set too low, the window preview of running applications may seem to " ++#~ "close too quickly when trying to enter the popup. If set too high, the " ++#~ "preview may linger too long when moving to an adjacent icon." ++#~ msgstr "" ++#~ "Si trop bas, l'aperçu des fenêtres des applications actives peut sembler " ++#~ "se fermer trop vite quand on essaie de cliquer sur l'aperçu. Si trop " ++#~ "haut, l'aperçu peut rester trop longtemps quand on passe à une icône " ++#~ "adjacente." ++ ++#~ msgid "Middle click to close window" ++#~ msgstr "Cliquez avec la molette pour fermer la fenêtre" ++ ++#~ msgid "Width of the window previews (px)" ++#~ msgstr "Largeur des aperçus des fenêtres lors du survol (px)" ++ ++#~ msgid "Height of the window previews (px)" ++#~ msgstr "Hauteur des aperçus des fenêtres lors du survol (px)" ++ ++#~ msgid "Padding of the window previews (px)" ++#~ msgstr "Marge des prévisualisations (px)" ++ ++#~ msgid "Natural" ++#~ msgstr "Naturelle" ++ ++#~ msgid "Left side of panel" ++#~ msgstr "Côté gauche de la barre" ++ ++#~ msgid "Centered in content" ++#~ msgstr "Centré sur le contenu" ++ ++#~ msgid "Github" ++#~ msgstr "GitHub" +diff --git a/po/gl.po b/po/gl.po +index f2d40ad6..564c7959 100644 +--- a/po/gl.po ++++ b/po/gl.po +@@ -1,4 +1,5 @@ + # #-#-#-#-# gl.po (gnome-shell-extensions master) #-#-#-#-# ++# #-#-#-#-# gl.po (gnome-shell-extensions master) #-#-#-#-# + # Galician translation for gnome-shell-extensions. + # Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER + # This file is distributed under the same license as the gnome-shell-extensions package. +@@ -10,10 +11,16 @@ + # This file is distributed under the same license as the Dash to Dock package. + # Xosé M. Lamas , 2018. + # ++# #-#-#-#-# gl.po (dash-to-panel) #-#-#-#-# ++# Dash to Panel Spanish translation. ++# This file is distributed under the same license as the Dash to Panel package. ++# Fran Dieguez , 2020. ++# + #, fuzzy + msgid "" + msgstr "" + "#-#-#-#-# gl.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"#-#-#-#-# gl.po (gnome-shell-extensions master) #-#-#-#-#\n" + "Project-Id-Version: gnome-shell-extensions master\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/" + "issues\n" +@@ -41,6 +48,19 @@ msgstr "" + "Content-Transfer-Encoding: 8bit\n" + "X-Generator: Poedit 2.0.3\n" + "Plural-Forms: nplurals=2; plural=(n != 1);\n" ++"#-#-#-#-# gl.po (dash-to-panel) #-#-#-#-#\n" ++"Project-Id-Version: dash-to-panel\n" ++"Report-Msgid-Bugs-To: \n" ++"POT-Creation-Date: 2020-04-08 09:47-0400\n" ++"PO-Revision-Date: 2020-10-05 23:24+0200\n" ++"Last-Translator: Fran Dieguez \n" ++"Language-Team: Galician >\n" ++"Language: gl\n" ++"MIME-Version: 1.0\n" ++"Content-Type: text/plain; charset=UTF-8\n" ++"Content-Transfer-Encoding: 8bit\n" ++"X-Generator: Gtranslator 3.36.0\n" ++"Plural-Forms: nplurals=2; plural=(n != 1)\n" + + #: data/gnome-classic.desktop.in:3 + msgid "GNOME Classic" +@@ -290,27 +310,45 @@ msgstr "Monitor principal" + msgid "Secondary monitor " + msgstr "Monitor secundario" + +-#: prefs.js:154 Settings.ui.h:29 ++#: prefs.js:154 Settings.ui.h:29 Settings.ui.h:146 ++#, fuzzy + msgid "Right" +-msgstr "Dereita" ++msgstr "" ++"#-#-#-#-# gl.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Dereita\n" ++"#-#-#-#-# gl.po (dash-to-panel) #-#-#-#-#\n" ++"Á dereita" + +-#: prefs.js:155 Settings.ui.h:26 ++#: prefs.js:155 Settings.ui.h:26 Settings.ui.h:145 ++#, fuzzy + msgid "Left" +-msgstr "Esquerda" ++msgstr "" ++"#-#-#-#-# gl.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Esquerda\n" ++"#-#-#-#-# gl.po (dash-to-panel) #-#-#-#-#\n" ++"Á esquerda" + + #: prefs.js:205 + msgid "Intelligent autohide customization" + msgstr "Personalización de agochamento intelixente" + +-#: prefs.js:212 prefs.js:393 prefs.js:450 ++#: prefs.js:212 prefs.js:393 prefs.js:450 prefs.js:371 prefs.js:569 ++#: prefs.js:712 prefs.js:837 prefs.js:904 prefs.js:992 prefs.js:1084 ++#: prefs.js:1331 prefs.js:1415 prefs.js:1480 prefs.js:1516 prefs.js:1613 ++#: prefs.js:1647 prefs.js:1689 ++#, fuzzy + msgid "Reset to defaults" +-msgstr "Restablecer aos valores por omisión" ++msgstr "" ++"#-#-#-#-# gl.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Restablecer aos valores por omisión\n" ++"#-#-#-#-# gl.po (dash-to-panel) #-#-#-#-#\n" ++"Restabelecer os valores predeterminados" + + #: prefs.js:386 + msgid "Show dock and application numbers" + msgstr "Mostrar dock e números do aplicativo" + +-#: prefs.js:443 ++#: prefs.js:443 prefs.js:1408 + msgid "Customize middle-click behavior" + msgstr "Personalizar comportamento do botón central" + +@@ -338,9 +376,14 @@ msgstr "Cor do borde" + msgid "Border width" + msgstr "Ancho do borde" + +-#: Settings.ui.h:5 ++#: Settings.ui.h:5 Settings.ui.h:120 ++#, fuzzy + msgid "Number overlay" +-msgstr "Número na vista extendida" ++msgstr "" ++"#-#-#-#-# gl.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Número na vista extendida\n" ++"#-#-#-#-# gl.po (dash-to-panel) #-#-#-#-#\n" ++"Número de aplicación" + + #: Settings.ui.h:6 + msgid "" +@@ -366,61 +409,102 @@ msgstr "" + msgid "Shortcut for the options above" + msgstr "Atallo para os axustes de arriba" + +-#: Settings.ui.h:10 ++#: Settings.ui.h:10 Settings.ui.h:59 ++#, fuzzy + msgid "Syntax: , , , " +-msgstr "Sintaxe: , , , " ++msgstr "" ++"#-#-#-#-# gl.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Sintaxe: , , , \n" ++"#-#-#-#-# gl.po (dash-to-panel) #-#-#-#-#\n" ++"Sintaxe: , , , " + + #: Settings.ui.h:11 + msgid "Hide timeout (s)" + msgstr "Tempo en agocharse (s)" + +-#: Settings.ui.h:12 ++#: Settings.ui.h:12 Settings.ui.h:2 ++#, fuzzy + msgid "" + "When set to minimize, double clicking minimizes all the windows of the " + "application." + msgstr "" ++"#-#-#-#-# gl.po (gnome-shell-extensions master) #-#-#-#-#\n" + "Cando se establece minimizar, facendo duplo click minimiza todas as ventás " +-"do aplicativo." ++"do aplicativo.\n" ++"#-#-#-#-# gl.po (dash-to-panel) #-#-#-#-#\n" ++"Cuando está a minimizar, doble pulsación minimiza todas as xanelas da " ++"aplicación." + +-#: Settings.ui.h:13 ++#: Settings.ui.h:13 Settings.ui.h:3 ++#, fuzzy + msgid "Shift+Click action" +-msgstr "Acción de Maiús + pulsación" ++msgstr "" ++"#-#-#-#-# gl.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Acción de Maiús + pulsación\n" ++"#-#-#-#-# gl.po (dash-to-panel) #-#-#-#-#\n" ++"Acción de Maiúsculas+Click" + + #: Settings.ui.h:14 + msgid "Raise window" + msgstr "Elevar ventá" + +-#: Settings.ui.h:15 ++#: Settings.ui.h:15 Settings.ui.h:5 ++#, fuzzy + msgid "Minimize window" +-msgstr "Minimizar ventá" ++msgstr "" ++"#-#-#-#-# gl.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Minimizar ventá\n" ++"#-#-#-#-# gl.po (dash-to-panel) #-#-#-#-#\n" ++"Minimizar xanelas" + +-#: Settings.ui.h:16 ++#: Settings.ui.h:16 Settings.ui.h:6 ++#, fuzzy + msgid "Launch new instance" +-msgstr "Iniciar unha nova instancia" ++msgstr "" ++"#-#-#-#-# gl.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Iniciar unha nova instancia\n" ++"#-#-#-#-# gl.po (dash-to-panel) #-#-#-#-#\n" ++"Lanzar unha nova xanela" + +-#: Settings.ui.h:17 ++#: Settings.ui.h:17 Settings.ui.h:7 ++#, fuzzy + msgid "Cycle through windows" +-msgstr "Alternar entre ventás" ++msgstr "" ++"#-#-#-#-# gl.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Alternar entre ventás\n" ++"#-#-#-#-# gl.po (dash-to-panel) #-#-#-#-#\n" ++"Alternar entre xanelas" + +-#: Settings.ui.h:18 ++#: Settings.ui.h:18 appIcons.js:1429 appIcons.js:1489 appIcons.js:1491 ++#: Settings.ui.h:10 + msgid "Quit" + msgstr "Saír" + +-#: Settings.ui.h:19 ++#: Settings.ui.h:19 Settings.ui.h:11 + msgid "Behavior for Middle-Click." + msgstr "Comportamento do botón central" + +-#: Settings.ui.h:20 ++#: Settings.ui.h:20 Settings.ui.h:12 + msgid "Middle-Click action" + msgstr "Acción do botón central" + +-#: Settings.ui.h:21 ++#: Settings.ui.h:21 Settings.ui.h:13 ++#, fuzzy + msgid "Behavior for Shift+Middle-Click." +-msgstr "Comportamento de Maiús + botón central" ++msgstr "" ++"#-#-#-#-# gl.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Comportamento de Maiús + botón central\n" ++"#-#-#-#-# gl.po (dash-to-panel) #-#-#-#-#\n" ++"Comportamento para Maiúsculas+Botón-Central" + +-#: Settings.ui.h:22 ++#: Settings.ui.h:22 Settings.ui.h:14 ++#, fuzzy + msgid "Shift+Middle-Click action" +-msgstr "Acción de Maiús + botón central" ++msgstr "" ++"#-#-#-#-# gl.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Acción de Maiús + botón central\n" ++"#-#-#-#-# gl.po (dash-to-panel) #-#-#-#-#\n" ++"Acción de Maiúsculas+Botón-Central" + + #: Settings.ui.h:23 + msgid "Show the dock on" +@@ -434,13 +518,23 @@ msgstr "Mostrar en todos os monitores." + msgid "Position on screen" + msgstr "Posición na pantalla" + +-#: Settings.ui.h:27 ++#: Settings.ui.h:27 Settings.ui.h:97 ++#, fuzzy + msgid "Bottom" +-msgstr "Inferior" ++msgstr "" ++"#-#-#-#-# gl.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Inferior\n" ++"#-#-#-#-# gl.po (dash-to-panel) #-#-#-#-#\n" ++"Abaixo" + +-#: Settings.ui.h:28 ++#: Settings.ui.h:28 Settings.ui.h:98 ++#, fuzzy + msgid "Top" +-msgstr "Superior" ++msgstr "" ++"#-#-#-#-# gl.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Superior\n" ++"#-#-#-#-# gl.po (dash-to-panel) #-#-#-#-#\n" ++"Enriba" + + #: Settings.ui.h:30 + msgid "" +@@ -474,13 +568,23 @@ msgstr "Tamaño fixo das iconas: desprazarse para mostrar outros" + msgid "Position and size" + msgstr "Posición e tamaño" + +-#: Settings.ui.h:37 ++#: Settings.ui.h:37 Settings.ui.h:182 ++#, fuzzy + msgid "Show favorite applications" +-msgstr "Mostrar aplicativos favoritos" ++msgstr "" ++"#-#-#-#-# gl.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Mostrar aplicativos favoritos\n" ++"#-#-#-#-# gl.po (dash-to-panel) #-#-#-#-#\n" ++"Mostrar aplicacións favoritas" + +-#: Settings.ui.h:38 ++#: Settings.ui.h:38 Settings.ui.h:183 ++#, fuzzy + msgid "Show running applications" +-msgstr "Mostrar aplicativos en execución" ++msgstr "" ++"#-#-#-#-# gl.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Mostrar aplicativos en execución\n" ++"#-#-#-#-# gl.po (dash-to-panel) #-#-#-#-#\n" ++"Mostrar aplicacións en execución" + + #: Settings.ui.h:39 + msgid "Isolate workspaces." +@@ -498,39 +602,59 @@ msgstr "" + "Si está deshabilitado, estas opcions están dispoñibles desde gnome-tweak-" + "tool ou desde o sitio web de extensións." + +-#: Settings.ui.h:42 ++#: Settings.ui.h:42 Settings.ui.h:184 ++#, fuzzy + msgid "Show Applications icon" +-msgstr "Mostrar a icona Aplicativos" ++msgstr "" ++"#-#-#-#-# gl.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Mostrar a icona Aplicativos\n" ++"#-#-#-#-# gl.po (dash-to-panel) #-#-#-#-#\n" ++"Mostrar a icona de Aplicacións" + + #: Settings.ui.h:43 + msgid "Move the applications button at the beginning of the dock." + msgstr "Mover o botón de aplicativos ao principio do dock" + +-#: Settings.ui.h:44 ++#: Settings.ui.h:44 Settings.ui.h:185 ++#, fuzzy + msgid "Animate Show Applications." +-msgstr "Animar Mostrar aplicativos" ++msgstr "" ++"#-#-#-#-# gl.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Animar Mostrar aplicativos\n" ++"#-#-#-#-# gl.po (dash-to-panel) #-#-#-#-#\n" ++"Animar Mostrar Aplicacións" + + #: Settings.ui.h:45 + msgid "Launchers" + msgstr "Lanzadores" + +-#: Settings.ui.h:46 ++#: Settings.ui.h:46 Settings.ui.h:207 ++#, fuzzy + msgid "" + "Enable Super+(0-9) as shortcuts to activate apps. It can also be used " + "together with Shift and Ctrl." + msgstr "" ++"#-#-#-#-# gl.po (gnome-shell-extensions master) #-#-#-#-#\n" + "Habilitar Súper+(0-9) como atallos para activar aplicativos. Tamén puede ser " +-"utilizado xunto con Maiús e Ctrl." ++"utilizado xunto con Maiús e Ctrl.\n" ++"#-#-#-#-# gl.po (dash-to-panel) #-#-#-#-#\n" ++"Activar Super+(0-9) como atallos para activar aplicacións. Tamén pode ser " ++"usado xunto con Maiús. e Ctrl." + + #: Settings.ui.h:47 + msgid "Use keyboard shortcuts to activate apps" + msgstr "Usar atallos de teclado para activar aplicativos" + +-#: Settings.ui.h:48 ++#: Settings.ui.h:48 Settings.ui.h:195 ++#, fuzzy + msgid "Behaviour when clicking on the icon of a running application." +-msgstr "Comportamiento ao pulsar na icona de un aplicativo en execución." ++msgstr "" ++"#-#-#-#-# gl.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Comportamiento ao pulsar na icona de un aplicativo en execución.\n" ++"#-#-#-#-# gl.po (dash-to-panel) #-#-#-#-#\n" ++"Comportamento ao pulsar a icona dunha aplicación en execución" + +-#: Settings.ui.h:49 ++#: Settings.ui.h:49 Settings.ui.h:196 + msgid "Click action" + msgstr "Acción de pulsación" + +@@ -546,15 +670,20 @@ msgstr "Comportamiento ao utilizar a roda sobre a icona de un aplicativo." + msgid "Scroll action" + msgstr "Acción de desprazamento" + +-#: Settings.ui.h:54 ++#: Settings.ui.h:54 Settings.ui.h:202 + msgid "Do nothing" + msgstr "Non facer nada" + +-#: Settings.ui.h:55 ++#: Settings.ui.h:55 Settings.ui.h:203 ++#, fuzzy + msgid "Switch workspace" +-msgstr "Cambiar de espazo de traballo." ++msgstr "" ++"#-#-#-#-# gl.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Cambiar de espazo de traballo.\n" ++"#-#-#-#-# gl.po (dash-to-panel) #-#-#-#-#\n" ++"Cambiar espazo de traballo" + +-#: Settings.ui.h:56 ++#: Settings.ui.h:56 Settings.ui.h:194 + msgid "Behavior" + msgstr "Comportamento" + +@@ -614,7 +743,7 @@ msgstr "Forzar esquinas rectas\n" + msgid "Appearance" + msgstr "Aparencia" + +-#: Settings.ui.h:71 ++#: Settings.ui.h:71 Settings.ui.h:228 + msgid "version: " + msgstr "versión: " + +@@ -630,20 +759,32 @@ msgstr "Creado por" + msgid "Webpage" + msgstr "Sitio web" + +-#: Settings.ui.h:75 ++#: Settings.ui.h:75 Settings.ui.h:239 ++#, fuzzy + msgid "" + "This program comes with ABSOLUTELY NO WARRANTY.\n" +-"See the GNU General Public License, version 2 or later for details." ++"See the GNU General Public License, version 2 or later for details." + msgstr "" ++"#-#-#-#-# gl.po (gnome-shell-extensions master) #-#-#-#-#\n" + "Este programa ven SIN GARANTÍA ALGUNHA.\n" +-"Consulte a Licenza Pública Xeral de GNU, versión 2 ou posterior para obter máis " +-"detalles." +- +-#: Settings.ui.h:77 ++"Consulte a Licenza Pública Xeral de GNU, versión 2 ou posterior para obter " ++"máis detalles.\n" ++"#-#-#-#-# gl.po (dash-to-panel) #-#-#-#-#\n" ++"Este programa ven SEN NINGUNHA GARANTÍA.\n" ++"Consulte a Licencia Pública General de GNU, versión 2 ou posterior para " ++"obtener máis detalles." ++ ++#: Settings.ui.h:77 Settings.ui.h:241 ++#, fuzzy + msgid "About" +-msgstr "Sobre o" ++msgstr "" ++"#-#-#-#-# gl.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Sobre o\n" ++"#-#-#-#-# gl.po (dash-to-panel) #-#-#-#-#\n" ++"Acerca de" + + #: Settings.ui.h:78 + msgid "Show the dock by mouse hover on the screen edge." +@@ -669,9 +810,14 @@ msgstr "Mostrar o dock cando non cubra outras ventás de aplicativos." + msgid "Dodge windows" + msgstr "Evitar as ventás" + +-#: Settings.ui.h:84 ++#: Settings.ui.h:84 Settings.ui.h:49 ++#, fuzzy + msgid "All windows" +-msgstr "Todas as ventás" ++msgstr "" ++"#-#-#-#-# gl.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Todas as ventás\n" ++"#-#-#-#-# gl.po (dash-to-panel) #-#-#-#-#\n" ++"Todas as xanelas" + + #: Settings.ui.h:85 + msgid "Only focused application's windows" +@@ -697,6 +843,1146 @@ msgstr "Tempo de aparición" + msgid "Pressure threshold" + msgstr "Límite de presión" + ++#: prefs.js:211 ++msgid "Top, with plugin icons collapsed to bottom" ++msgstr "Arriba, coas iconas contraídas" ++ ++#: prefs.js:211 ++msgid "Left, with plugin icons collapsed to right" ++msgstr "Á esquerda, coas iconas contraídas á dereita" ++ ++#: prefs.js:212 ++msgid "Top, with fixed center plugin icons" ++msgstr "Arriba, coas iconas fixas centradas" ++ ++#: prefs.js:212 ++msgid "Left, with fixed center plugin icons" ++msgstr "Á esquerda, coas iconas fixas centradas" ++ ++#: prefs.js:213 ++msgid "Top, with floating center plugin icons" ++msgstr "Arriba, coas iconas flotantes centradas" ++ ++#: prefs.js:213 ++msgid "Left, with floating center plugin icons" ++msgstr "Á esquerda, coas iconas flotantes centradas" ++ ++#: prefs.js:214 ++msgid "Center, fixed in middle of monitor" ++msgstr "Centrado, fixo no medio do monitor" ++ ++#: prefs.js:215 ++msgid "Center, floating between top and bottom elements" ++msgstr "Centrado, flotando entre os elementos superiores e inferiores" ++ ++#: prefs.js:215 ++msgid "Center, floating between left and right elements" ++msgstr "Centrado, flotando entre os elementos da esquerda e dereita" ++ ++#: prefs.js:219 ++msgid "Top of plugin icons" ++msgstr "Enriba das iconas" ++ ++#: prefs.js:219 ++msgid "Left of plugin icons" ++msgstr "Á esquerda das iconas" ++ ++#: prefs.js:220 ++msgid "Bottom of plugin icons" ++msgstr "Embaixo das iconas" ++ ++#: prefs.js:220 ++msgid "Right of plugin icons" ++msgstr "Á dereita das iconas" ++ ++#: prefs.js:221 ++msgid "Top of system indicators" ++msgstr "Enriba dos indicadores do sistema" ++ ++#: prefs.js:221 ++msgid "Left of system indicators" ++msgstr "Á esquerda dos indicadores do sistema" ++ ++#: prefs.js:222 ++msgid "Bottom of system indicators" ++msgstr "Embaixo dos indicadores do sistema" ++ ++#: prefs.js:222 ++msgid "Right of system indicators" ++msgstr "Á dereita dos indicadores do sistema" ++ ++#: prefs.js:223 ++msgid "Top of taskbar" ++msgstr "Enriba da barra de tarefas" ++ ++#: prefs.js:223 ++msgid "Left of taskbar" ++msgstr "Á esquerda da barra de tarefas" ++ ++#: prefs.js:224 ++msgid "Bottom of taskbar" ++msgstr "Embaixo da barra de tareas" ++ ++#: prefs.js:224 ++msgid "Right of taskbar" ++msgstr "Á dereita da barra de tareas" ++ ++#: prefs.js:230 ++msgid "Show Desktop button height (px)" ++msgstr "Alto do botón Mostrar Escritorio (px)" ++ ++#: prefs.js:230 ++msgid "Show Desktop button width (px)" ++msgstr "Ancho do botón Mostrar Escritorio (px)" ++ ++#: prefs.js:364 ++msgid "Running Indicator Options" ++msgstr "Opcións do indicador de execución" ++ ++#: prefs.js:514 ++msgid "Default (Primary monitor)" ++msgstr "Por defecto (Monitor principal)" ++ ++#: prefs.js:517 ++msgid "Monitor " ++msgstr "Monitor" ++ ++#: prefs.js:562 ++msgid "Multi-monitors options" ++msgstr "Opcións de multimonitores" ++ ++#: prefs.js:705 ++msgid "Dynamic opacity options" ++msgstr "Opcións de opacidade dinámica" ++ ++#: prefs.js:830 ++msgid "Intellihide options" ++msgstr "Opcións de «Intellihide»" ++ ++#: prefs.js:897 ++msgid "Show Applications options" ++msgstr "Mostrar as opciones de aplicación" ++ ++#: prefs.js:985 ++msgid "Show Desktop options" ++msgstr "Mostrar o Escritorio" ++ ++#: prefs.js:1077 ++msgid "Window preview options" ++msgstr "Opcións de vista rápida de xanelas" ++ ++#: prefs.js:1324 ++msgid "Ungrouped application options" ++msgstr "Opcións de xanelas non combinadas" ++ ++#: prefs.js:1473 ++msgid "Customize panel scroll behavior" ++msgstr "Personalizar comportamento do desplazamento do panel" ++ ++#: prefs.js:1509 ++msgid "Customize icon scroll behavior" ++msgstr "Personalizar comportamento do desplazamento das iconas" ++ ++#: prefs.js:1606 ++msgid "Advanced hotkeys options" ++msgstr "Opcións avanzadas de atallos de teclado" ++ ++#: prefs.js:1640 ++msgid "Secondary Menu Options" ++msgstr "Opcións do menú secundario" ++ ++#: prefs.js:1682 Settings.ui.h:226 ++msgid "Advanced Options" ++msgstr "Opcións avanzadas" ++ ++#: prefs.js:1774 ++msgid "Export settings" ++msgstr "Exportar configuracións" ++ ++#: prefs.js:1791 ++msgid "Import settings" ++msgstr "Importar configuracións" ++ ++#: appIcons.js:1411 ++msgid "Show Details" ++msgstr "Mostrar detalles" ++ ++#: appIcons.js:1429 ++msgid "New Window" ++msgstr "Xanela nova" ++ ++#: appIcons.js:1491 ++msgid "Windows" ++msgstr "Xanelas" ++ ++#: appIcons.js:1745 ++msgid "Power options" ++msgstr "Opcións de enerxía" ++ ++#: appIcons.js:1750 ++msgid "Event logs" ++msgstr "Rexistros do sistema" ++ ++#: appIcons.js:1755 ++msgid "System" ++msgstr "Sistema" ++ ++#: appIcons.js:1760 ++msgid "Device Management" ++msgstr "Xestión de dispositivo" ++ ++#: appIcons.js:1765 ++msgid "Disk Management" ++msgstr "Xestión de discos" ++ ++#: appIcons.js:1773 ++msgid "Terminal" ++msgstr "Terminal" ++ ++#: appIcons.js:1778 ++msgid "System monitor" ++msgstr "Monitor do sistema" ++ ++#: appIcons.js:1783 ++msgid "Files" ++msgstr "Ficheiros" ++ ++#: appIcons.js:1788 ++msgid "Extensions" ++msgstr "Extensións" ++ ++#: appIcons.js:1793 ++msgid "Settings" ++msgstr "Preferencias" ++ ++#: appIcons.js:1800 ++msgid "Unlock taskbar" ++msgstr "Desbloquear barra de tarefas" ++ ++#: appIcons.js:1800 ++msgid "Lock taskbar" ++msgstr "Bloquear barra de tarefas" ++ ++#: appIcons.js:1805 ++msgid "Dash to Panel Settings" ++msgstr "Opcións de Dash to Panel" ++ ++#: appIcons.js:1818 ++msgid "Restore Windows" ++msgstr "Restaurar xanelas" ++ ++#: appIcons.js:1818 ++msgid "Show Desktop" ++msgstr "Mostrar o Escritorio" ++ ++#: update.js:48 ++msgid "Unavailable when installed from extensions.gnome.org" ++msgstr "Non dispoñíbel cando se instala desde extensions.gnome.org" ++ ++#: update.js:62 ++#, javascript-format ++msgid "Version %s (%s) is available" ++msgstr "A versión %s (%s) está dispoñíbel" ++ ++#: update.js:63 ++msgid "Details" ++msgstr "Mostrar detalles" ++ ++#: update.js:64 ++msgid "Update" ++msgstr "Actualizar" ++ ++#: update.js:67 ++msgid "Already up to date" ++msgstr "Xa está actualizado" ++ ++#: update.js:75 ++msgid "Error: " ++msgstr "Erro: " ++ ++#: update.js:168 ++msgid "Update successful, please log out/in" ++msgstr "Actualización correcta, por favor, peche e inicie sesión" ++ ++#: update.js:169 ++msgid "Log out" ++msgstr "Pechar sesión" ++ ++#: update.js:173 ++msgid "Update successful, please restart GNOME Shell" ++msgstr "Actualización correcta, por favor, restaure GNOME Shell" ++ ++#: update.js:174 ++msgid "Restart GNOME Shell" ++msgstr "Reiniciar GNOME Shell" ++ ++#: update.js:174 ++msgid "Restarting GNOME Shell..." ++msgstr "Reiniciando GNOME Shel..." ++ ++#: Settings.ui.h:1 ++msgid "Nothing yet!" ++msgstr "Aínda nada!" ++ ++#: Settings.ui.h:4 ++msgid "Raise windows" ++msgstr "Elevar xanelas" ++ ++#: Settings.ui.h:8 ++msgid "Cycle windows + minimize" ++msgstr "Alternar xanelas e minimizar" ++ ++#: Settings.ui.h:9 ++msgid "Toggle single / Preview multiple" ++msgstr "Trocar entre simple e vista rápida múltiple" ++ ++#: Settings.ui.h:15 ++msgid "Isolate monitors" ++msgstr "Illar os espazos de traballo" ++ ++#: Settings.ui.h:16 ++msgid "Display favorite applications on all monitors" ++msgstr "Mostrar aplicacións favoritas en todos os espazos de traballo" ++ ++#: Settings.ui.h:17 ++msgid "Display the clock on all monitors" ++msgstr "Mostrar reloxo en todos os espazos de traballo" ++ ++#: Settings.ui.h:18 ++msgid "Display the status menu on all monitors" ++msgstr "Mostrar o menú de estado en todos os espazos de traballo" ++ ++#: Settings.ui.h:19 ++msgid "Integrate AppMenu items" ++msgstr "Integrar os elementos do Menú de aplicación" ++ ++#: Settings.ui.h:20 ++msgid "Show Details menu item" ++msgstr "Mostrar detalles do menú de elementos" ++ ++#: Settings.ui.h:21 ++msgid "Highlight focused application" ++msgstr "Realzar a aplicación activa" ++ ++#: Settings.ui.h:22 ++msgid "Icon dominant color" ++msgstr "Color da icona predominante" ++ ++#: Settings.ui.h:23 ++msgid "Custom color" ++msgstr "Cor personalizado" ++ ++#: Settings.ui.h:24 ++msgid "Highlight opacity" ++msgstr "Opacidade de realzado" ++ ++#: Settings.ui.h:25 ++msgid "Indicator size (px)" ++msgstr "Tamaño do indicador (px)" ++ ++#: Settings.ui.h:26 ++msgid "Indicator color - Icon Dominant" ++msgstr "Cor do indicador - Predominar a icona" ++ ++#: Settings.ui.h:27 ++msgid "Indicator color - Override Theme" ++msgstr "Color do indicador - Predominar sobre o tema" ++ ++#: Settings.ui.h:28 ++msgid "1 window open (or ungrouped)" ++msgstr "1 xanela aberta (ou non combinada)" ++ ++#: Settings.ui.h:29 ++msgid "Apply to all" ++msgstr "Aplicar a todo" ++ ++#: Settings.ui.h:30 ++msgid "2 windows open" ++msgstr "2 xanelas abertas" ++ ++#: Settings.ui.h:31 ++msgid "3 windows open" ++msgstr "3 xanelas abertas" ++ ++#: Settings.ui.h:32 ++msgid "4+ windows open" ++msgstr "4+ xanelas abertas" ++ ++#: Settings.ui.h:33 ++msgid "Use different for unfocused" ++msgstr "Usar diferente para desenfoque" ++ ++#: Settings.ui.h:34 ++msgid "Font size (px) of the application titles (default is 14)" ++msgstr "Tamaño da fonte (px) para os títulos de aplicación (14 por defecto)" ++ ++#: Settings.ui.h:35 ++msgid "Font weight of application titles" ++msgstr "Tamaño da fonte para os títulos de aplicación" ++ ++#: Settings.ui.h:36 ++msgid "inherit from theme" ++msgstr "herdado do tema" ++ ++#: Settings.ui.h:37 ++msgid "normal" ++msgstr "normal" ++ ++#: Settings.ui.h:38 ++msgid "lighter" ++msgstr "máis fino" ++ ++#: Settings.ui.h:39 ++msgid "bold" ++msgstr "en negriña" ++ ++#: Settings.ui.h:40 ++msgid "bolder" ++msgstr "máis en negriña" ++ ++#: Settings.ui.h:41 ++msgid "Font color of the application titles" ++msgstr "Cor de letra dos títulos de aplicación" ++ ++#: Settings.ui.h:42 ++msgid "Maximum width (px) of the application titles (default is 160)" ++msgstr "Ancho máximo (px) dos títulos de aplicación (160 por defecto)" ++ ++#: Settings.ui.h:43 ++msgid "Use a fixed width for the application titles" ++msgstr "Usar ancho fixo para os títulos de aplicación" ++ ++#: Settings.ui.h:44 ++msgid "" ++"The application titles all have the same width, even if their texts are " ++"shorter than the maximum width. The maximum width value is used as the fixed " ++"width." ++msgstr "" ++"Todos os títulos de aplicación teñen o mesmo ancho, aínda se o seu texto é " ++"máis curto que o ancho máximo. O ancho máximo é usado como valor fixo." ++ ++#: Settings.ui.h:45 ++msgid "Display running indicators on unfocused applications" ++msgstr "Estilo dos indicadores de execución (aplicación non enfocada)" ++ ++#: Settings.ui.h:46 ++msgid "Use the favorite icons as application launchers" ++msgstr "Usar as iconas favoritas como lanzadores de aplicación" ++ ++#: Settings.ui.h:47 ++msgid "Only hide the panel when it is obstructed by windows " ++msgstr "Esconder o panel sólo cando é obstruido por xanelas" ++ ++#: Settings.ui.h:48 ++msgid "The panel hides from" ++msgstr "O panel escóndese de" ++ ++#: Settings.ui.h:50 ++msgid "Focused windows" ++msgstr "Xanelas enfocadas" ++ ++#: Settings.ui.h:51 ++msgid "Maximized windows" ++msgstr "Xanelas maximizadas" ++ ++#: Settings.ui.h:52 ++msgid "Require pressure at the edge of the screen to reveal the panel" ++msgstr "Requirir presión no bordo da pantalla para mostrar o panel" ++ ++#: Settings.ui.h:53 ++msgid "Required pressure threshold (px)" ++msgstr "Presión mínima requirida (px)" ++ ++#: Settings.ui.h:54 ++msgid "Required pressure timeout (ms)" ++msgstr "Tempo de activación por presión (ms)" ++ ++#: Settings.ui.h:55 ++msgid "Allow the panel to be revealed while in fullscreen mode" ++msgstr "En modo pantalla completa, permitir que o panel sexa mostrado" ++ ++#: Settings.ui.h:56 ++msgid "Only hide secondary panels (requires multi-monitors option)" ++msgstr "Ocultar só os paneis secundarios (require opción multi-monitor)" ++ ++#: Settings.ui.h:57 ++msgid "e.g. i" ++msgstr "p.ex. i" ++ ++#: Settings.ui.h:58 ++msgid "Keyboard shortcut to reveal and hold the panel" ++msgstr "Atallos do teclado para mostrar e manter o panel" ++ ++#: Settings.ui.h:60 ++msgid "Hide and reveal animation duration (ms)" ++msgstr "Duración de ocultar e mostrar animacións (ms)" ++ ++#: Settings.ui.h:61 ++msgid "Delay before hiding the panel (ms)" ++msgstr "Tempo antes de ocultar o panel (ms)" ++ ++#: Settings.ui.h:62 ++msgid "Delay before enabling intellihide on start (ms)" ++msgstr "Tempo antes de activar o panel intelixente (ms)" ++ ++#: Settings.ui.h:63 ++msgid "Time (ms) before showing (100 is default)" ++msgstr "Tempo (ms) antes de mostrar (100 por defecto)" ++ ++#: Settings.ui.h:64 ++msgid "Animation time (ms)" ++msgstr "Tempo da animación (ms)" ++ ++#: Settings.ui.h:65 ++msgid "Time (ms) before hiding (100 is default)" ++msgstr "Tempo (ms) antes de ocultar (100 por defecto)" ++ ++#: Settings.ui.h:66 ++msgid "Immediate on application icon click" ++msgstr "Pulsación inmediata en icona de aplicación" ++ ++#: Settings.ui.h:67 ++msgid "Middle click on the preview to close the window" ++msgstr "Usar o botón central na vista rápida para cerrar a xanela" ++ ++#: Settings.ui.h:68 ++msgid "Window previews preferred size (px)" ++msgstr "Tamaño por defecto das vistas rápidas (px)" ++ ++#: Settings.ui.h:69 ++msgid "Window previews aspect ratio Y (height)" ++msgstr "Altura da vista rápida de xanelas" ++ ++#: Settings.ui.h:70 ++msgid "Window previews padding (px)" ++msgstr "Recheo (px) da vista rápida de xanelas" ++ ++#: Settings.ui.h:71 ++msgid "1" ++msgstr "1" ++ ++#: Settings.ui.h:72 ++msgid "2" ++msgstr "2" ++ ++#: Settings.ui.h:73 ++msgid "3" ++msgstr "3" ++ ++#: Settings.ui.h:74 ++msgid "4" ++msgstr "4" ++ ++#: Settings.ui.h:75 ++msgid "5" ++msgstr "5" ++ ++#: Settings.ui.h:76 ++msgid "6" ++msgstr "6" ++ ++#: Settings.ui.h:77 ++msgid "7" ++msgstr "7" ++ ++#: Settings.ui.h:78 ++msgid "8" ++msgstr "8" ++ ++#: Settings.ui.h:79 ++msgid "9" ++msgstr "9" ++ ++#: Settings.ui.h:80 ++msgid "10" ++msgstr "10" ++ ++#: Settings.ui.h:81 ++msgid "11" ++msgstr "11" ++ ++#: Settings.ui.h:82 ++msgid "12" ++msgstr "12" ++ ++#: Settings.ui.h:83 ++msgid "13" ++msgstr "13" ++ ++#: Settings.ui.h:84 ++msgid "14" ++msgstr "14" ++ ++#: Settings.ui.h:85 ++msgid "15" ++msgstr "15" ++ ++#: Settings.ui.h:86 ++msgid "16" ++msgstr "16" ++ ++#: Settings.ui.h:87 ++msgid "17" ++msgstr "17" ++ ++#: Settings.ui.h:88 ++msgid "18" ++msgstr "18" ++ ++#: Settings.ui.h:89 ++msgid "19" ++msgstr "19" ++ ++#: Settings.ui.h:90 ++msgid "20" ++msgstr "20" ++ ++#: Settings.ui.h:91 ++msgid "21" ++msgstr "21" ++ ++#: Settings.ui.h:92 ++msgid "Fixed" ++msgstr "Fixa" ++ ++#: Settings.ui.h:93 ++msgid "Window previews aspect ratio X (width)" ++msgstr "Anchura da vista rápida de xanelas" ++ ++#: Settings.ui.h:94 ++msgid "Use custom opacity for the previews background" ++msgstr "Usar opacidade personalizada para o fondo das vistas rápidas" ++ ++#: Settings.ui.h:95 ++msgid "If disabled, the previews background have the same opacity as the panel" ++msgstr "" ++"Se está desactivado, o fondo dos vistas rápidas teñen a mesma opacidade que " ++"a do panel" ++ ++#: Settings.ui.h:96 ++msgid "Close button and header position" ++msgstr "Botón de apagado e posición dos títulos" ++ ++#: Settings.ui.h:99 ++msgid "Display window preview headers" ++msgstr "Mostrar os títulos das xanelas nas vistas rápidas" ++ ++#: Settings.ui.h:100 ++msgid "Font size (px) of the preview titles" ++msgstr "Tamaño de letra (px) dos títulos de aplicación (14 por defecto)" ++ ++#: Settings.ui.h:101 ++msgid "Font weight of the preview titles" ++msgstr "Color de letra dos títulos de aplicación" ++ ++#: Settings.ui.h:102 ++msgid "Font color of the preview titles" ++msgstr "Color de letra dos títulos de aplicación" ++ ++#: Settings.ui.h:103 ++msgid "Enable window peeking" ++msgstr "Activar ollada rápida de xanela" ++ ++#: Settings.ui.h:104 ++msgid "" ++"When hovering over a window preview for some time, the window gets " ++"distinguished." ++msgstr "" ++"Al desprazxar o rato sobre unha vista rápida de xanela, a xanela reálzase." ++ ++#: Settings.ui.h:105 ++msgid "Enter window peeking mode timeout (ms)" ++msgstr "Tempo para activar o modo de ollada rápida (ms)" ++ ++#: Settings.ui.h:106 ++msgid "50" ++msgstr "50" ++ ++#: Settings.ui.h:107 ++msgid "" ++"Time of inactivity while hovering over a window preview needed to enter the " ++"window peeking mode." ++msgstr "" ++"Tempo de inactividade ao desprazar o rato sobre unha vista rápida de xanela " ++"para activar o modo de ollada rápida." ++ ++#: Settings.ui.h:108 ++msgid "Window peeking mode opacity" ++msgstr "Opacidad do modo de ollada rápida" ++ ++#: Settings.ui.h:109 ++msgid "0" ++msgstr "0" ++ ++#: Settings.ui.h:110 ++msgid "" ++"All windows except for the peeked one have their opacity set to the same " ++"value." ++msgstr "Todas as xanelas excepto a resaltada ten a mesma opacidade fixa." ++ ++#: Settings.ui.h:111 ++msgid "Delay between mouse scroll events (ms)" ++msgstr "Atraso entre eventos de desprazamento do rato (ms)" ++ ++#: Settings.ui.h:112 ++msgid "Use this value to limit the number of captured mouse scroll events." ++msgstr "" ++"Usar este valor para limitar o número de eventos de desprazamento capturados " ++"do rato" ++ ++#: Settings.ui.h:113 ++msgid "Super" ++msgstr "Super" ++ ++#: Settings.ui.h:114 ++msgid "Super + Alt" ++msgstr "Super + Alt" ++ ++#: Settings.ui.h:115 ++msgid "Hotkeys prefix" ++msgstr "Prefixo de atallo de teclado" ++ ++#: Settings.ui.h:116 ++msgid "Hotkeys will either be Super+Number or Super+Alt+Num" ++msgstr "Os atallos serán Super+Núm. ou Super+Alt+Núm." ++ ++#: Settings.ui.h:117 ++msgid "Never" ++msgstr "Nunca" ++ ++#: Settings.ui.h:118 ++msgid "Show temporarily" ++msgstr "Mostrar temporalmente" ++ ++#: Settings.ui.h:119 ++msgid "Always visible" ++msgstr "Sempre visíbel" ++ ++#: Settings.ui.h:121 ++msgid "" ++"Temporarily show the application numbers over the icons when using the " ++"hotkeys." ++msgstr "" ++"Ao usar atallos, mostrar momentaneamente o número de aplicación sobre as " ++"iconas." ++ ++#: Settings.ui.h:122 ++msgid "Hide timeout (ms)" ++msgstr "Tempo de ocultación (ms)" ++ ++#: Settings.ui.h:123 ++msgid "e.g. q" ++msgstr "p.e. q" ++ ++#: Settings.ui.h:124 ++msgid "Shortcut to show the overlay for 2 seconds" ++msgstr "Atallo para mostrar o número de aplicación por 2 segundos" ++ ++#: Settings.ui.h:125 ++msgid "Show window previews on hotkey" ++msgstr "Mostrar vista rápida de xanelas ao pasar co rato" ++ ++#: Settings.ui.h:126 ++msgid "Show previews when the application have multiple instances" ++msgstr "Mostrar vistas previas cando a aplicación ten múltiples instancias" ++ ++#: Settings.ui.h:127 ++msgid "Number row" ++msgstr "Fila numérica" ++ ++#: Settings.ui.h:128 ++msgid "Numeric keypad" ++msgstr "Teclado numérico" ++ ++#: Settings.ui.h:129 ++msgid "Both" ++msgstr "Ambos" ++ ++#: Settings.ui.h:130 ++msgid "Hotkeys are activated with" ++msgstr "Usar atallos de teclado para activar aplicacións" ++ ++#: Settings.ui.h:131 ++msgid "Select which keyboard number keys are used to activate the hotkeys" ++msgstr "" ++"Selecciona qué teclas numéricas se usan para activar os atallos de teclado" ++ ++#: Settings.ui.h:132 ++msgid "Current Show Applications icon" ++msgstr "Icona actual de Mostrar aplicacións" ++ ++#: Settings.ui.h:133 ++msgid "Select a Show Applications image icon" ++msgstr "Seleccionar icona personalizada para Mostrar aplicacións" ++ ++#: Settings.ui.h:134 ++msgid "Custom Show Applications image icon" ++msgstr "Imaxe da icona personalizada de Mostrar aplicacións" ++ ++#: Settings.ui.h:135 ++msgid "Show Applications icon side padding (px)" ++msgstr "Recheo lateral da icona de Mostrar aplicacións (px)" ++ ++#: Settings.ui.h:136 ++msgid "Reveal the desktop when hovering the Show Desktop button" ++msgstr "" ++"Mostrar escritorio ao colocar pasar por enriba do botón Mostrar Escritorio" ++ ++#: Settings.ui.h:137 ++msgid "Delay before revealing the desktop (ms)" ++msgstr "Tempo antes de mostrar o escritorio (ms)" ++ ++#: Settings.ui.h:138 ++msgid "Fade duration (ms)" ++msgstr "Duración de esvaecemento (ms)" ++ ++#: Settings.ui.h:139 ++msgid "The panel background opacity is affected by" ++msgstr "A opacidade do fondo do panel está afectada por" ++ ++#: Settings.ui.h:140 ++msgid "Change opacity when a window gets closer than (px)" ++msgstr "Cambiar a opacidade cando unha xanela se aproxima (px)" ++ ++#: Settings.ui.h:142 ++#, no-c-format ++msgid "Change opacity to (%)" ++msgstr "Cambiar a opacidade a (%)" ++ ++#: Settings.ui.h:143 ++msgid "Opacity change animation duration (ms)" ++msgstr "Duración das animacións de cambio de opacidade (ms)" ++ ++#: Settings.ui.h:144 ++msgid "Panel screen position" ++msgstr "Posición do panel na pantalla" ++ ++#: Settings.ui.h:147 ++msgid "Taskbar position" ++msgstr "Posición da barra de tarefas" ++ ++#: Settings.ui.h:148 ++msgid "Clock location" ++msgstr "Posición do reloxo" ++ ++#: Settings.ui.h:149 ++msgid "Display the main panel on" ++msgstr "Mostrar o panel principal en" ++ ++#: Settings.ui.h:150 ++msgid "Display panels on all monitors" ++msgstr "Mostrar os paneles en todos os espazos de traballo" ++ ++#: Settings.ui.h:151 ++msgid "Panel Intellihide" ++msgstr "Ocultación intelixente do panel" ++ ++#: Settings.ui.h:152 ++msgid "Hide and reveal the panel according to preferences" ++msgstr "Ocultar e mostrar o panel de acordo coas preferencias" ++ ++#: Settings.ui.h:153 ++msgid "Position" ++msgstr "Posición" ++ ++#: Settings.ui.h:154 ++msgid "" ++"Panel Size\n" ++"(default is 48)" ++msgstr "" ++"Tamaño do panel\n" ++"(48 por defecto)" ++ ++#: Settings.ui.h:156 ++msgid "" ++"App Icon Margin\n" ++"(default is 8)" ++msgstr "" ++"Marxe das iconas\n" ++"(8 por defecto)" ++ ++#: Settings.ui.h:158 ++msgid "" ++"App Icon Padding\n" ++"(default is 4)" ++msgstr "" ++"Recheo das iconas\n" ++"(4 por defecto)" ++ ++#: Settings.ui.h:160 ++msgid "Running indicator position" ++msgstr "Posición dos indicadores de execución" ++ ++#: Settings.ui.h:161 ++msgid "Running indicator style (Focused app)" ++msgstr "Estilo dos indicadores de execución (aplicación enfocada)" ++ ++#: Settings.ui.h:162 ++msgid "Dots" ++msgstr "Puntos" ++ ++#: Settings.ui.h:163 ++msgid "Squares" ++msgstr "Cadrados" ++ ++#: Settings.ui.h:164 ++msgid "Dashes" ++msgstr "Guións" ++ ++#: Settings.ui.h:165 ++msgid "Segmented" ++msgstr "Segmentado" ++ ++#: Settings.ui.h:166 ++msgid "Solid" ++msgstr "Sólido" ++ ++#: Settings.ui.h:167 ++msgid "Ciliora" ++msgstr "Ciliora" ++ ++#: Settings.ui.h:168 ++msgid "Metro" ++msgstr "Metro" ++ ++#: Settings.ui.h:169 ++msgid "Running indicator style (Unfocused apps)" ++msgstr "Estilo dos indicadores de execución (aplicación non enfocada)" ++ ++#: Settings.ui.h:170 ++msgid "Override panel theme background color " ++msgstr "Cambiar a cor de fondo do tema do panel " ++ ++#: Settings.ui.h:171 ++msgid "Override panel theme background opacity" ++msgstr "Cambiar a opacidade de fondo do tema do panel" ++ ++#: Settings.ui.h:173 ++#, no-c-format ++msgid "Panel background opacity (%)" ++msgstr "Opacidade do fondo do panel (%)" ++ ++#: Settings.ui.h:174 ++msgid "Dynamic background opacity" ++msgstr "Opacidade dinámica do fondo" ++ ++#: Settings.ui.h:175 ++msgid "Change opacity when a window gets close to the panel" ++msgstr "Cambiar a opacidade cando unha xanela se aproxima ao panel" ++ ++#: Settings.ui.h:176 ++msgid "Override panel theme gradient " ++msgstr "Cambiar o gradiente do tema do panel" ++ ++#: Settings.ui.h:178 ++#, no-c-format ++msgid "Gradient top color and opacity (%)" ++msgstr "Color e opacidade do gradiente superior (%)" ++ ++#: Settings.ui.h:180 ++#, no-c-format ++msgid "Gradient bottom color and opacity (%)" ++msgstr "Color e opacidadd do gradiente inferior (%)" ++ ++#: Settings.ui.h:181 ++msgid "Style" ++msgstr "Estilo" ++ ++#: Settings.ui.h:186 ++msgid "Show Activities button" ++msgstr "Mostrar o botón Actividades" ++ ++#: Settings.ui.h:187 ++msgid "Show Desktop button" ++msgstr "Mostrar o botón Escritorio" ++ ++#: Settings.ui.h:188 ++msgid "Show AppMenu button" ++msgstr "Mostrar o botón Menú de Aplicación" ++ ++#: Settings.ui.h:189 ++msgid "Top Bar > Show App Menu must be enabled in Tweak Tool" ++msgstr "" ++"Barra superior > Mostrar menú de aplicación habilitado en Ferramenta de " ++"retoques." ++ ++#: Settings.ui.h:190 ++msgid "Show window previews on hover" ++msgstr "Mostrar vista rápida de xanelas ao pasar co rató" ++ ++#: Settings.ui.h:191 ++msgid "Show tooltip on hover" ++msgstr "Mostrar barra de ferramentas al pasar co rato" ++ ++#: Settings.ui.h:192 ++msgid "Isolate Workspaces" ++msgstr "Illar os espazos de traballo" ++ ++#: Settings.ui.h:193 ++msgid "Ungroup applications" ++msgstr "Desagrupar aplicacións" ++ ++#: Settings.ui.h:197 ++msgid "Toggle windows" ++msgstr "Trocar xanelas" ++ ++#: Settings.ui.h:198 ++msgid "Scroll panel action" ++msgstr "Acción do panel de desprazamento" ++ ++#: Settings.ui.h:199 ++msgid "Behavior when mouse scrolling over the panel." ++msgstr "Comportamento cando o rato se desplaza no panel" ++ ++#: Settings.ui.h:200 ++msgid "Scroll icon action" ++msgstr "Acción ao desplazar iconas" ++ ++#: Settings.ui.h:201 ++msgid "Behavior when mouse scrolling over an application icon." ++msgstr "Comportamento cando o rató se desplaza sobre a icona dunha aplicación" ++ ++#: Settings.ui.h:204 ++msgid "Cycle windows" ++msgstr "Trocar entre xanelas" ++ ++#: Settings.ui.h:205 ++msgid "Change volume" ++msgstr "Cambiar o volume" ++ ++#: Settings.ui.h:206 ++msgid "Same as panel" ++msgstr "A mesma que o panel" ++ ++#: Settings.ui.h:208 ++msgid "Use hotkeys to activate apps" ++msgstr "Usar atallos de teclado para activar aplicacións" ++ ++#: Settings.ui.h:209 ++msgid "Action" ++msgstr "Acción" ++ ++#: Settings.ui.h:210 ++msgid "" ++"Tray Font Size\n" ++"(0 = theme default)" ++msgstr "" ++"Tamaño do tipo de letra na bandexa do sistema\n" ++"(0 = predeterminado)" ++ ++#: Settings.ui.h:212 ++msgid "" ++"LeftBox Font Size\n" ++"(0 = theme default)" ++msgstr "" ++"Tamaño do tipo de letra na zona esquerda\n" ++"(0 = predeterminado)" ++ ++#: Settings.ui.h:214 ++msgid "" ++"Tray Item Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"Separación na bandexa do sistema\n" ++"(-1 = predeterminado)" ++ ++#: Settings.ui.h:216 ++msgid "" ++"Status Icon Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"Separación das iconas de estado\n" ++"(-1 = predeterminado)" ++ ++#: Settings.ui.h:218 ++msgid "" ++"LeftBox Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"Separación na zona esquerda\n" ++"(-1 = predeterminado)" ++ ++#: Settings.ui.h:220 ++msgid "Animate switching applications" ++msgstr "Animar ao cambiar de aplicación" ++ ++#: Settings.ui.h:221 ++msgid "Animate launching new windows" ++msgstr "Animar ao abrir novas xanelas" ++ ++#: Settings.ui.h:222 ++msgid "Keep original gnome-shell dash (overview)" ++msgstr "Conservar o dash original de gnome-shell (vista principal)" ++ ++#: Settings.ui.h:223 ++msgid "Activate panel menu buttons (e.g. date menu) on click only" ++msgstr "Activar os botóns do menú do panel (p.ex. menú de frecha) só ao pulsar" ++ ++#: Settings.ui.h:224 ++msgid "Force Activities hot corner on primary monitor" ++msgstr "Forzar as actividades da esquina 'quente' no monitor principal" ++ ++#: Settings.ui.h:225 ++msgid "App icon secondary (right-click) menu" ++msgstr "Menú secundario (clic dereito) de aplicación" ++ ++#: Settings.ui.h:227 ++msgid "Fine-Tune" ++msgstr "Retoques" ++ ++#: Settings.ui.h:229 ++msgid "GitHub" ++msgstr "GitHub" ++ ++#: Settings.ui.h:230 ++msgid "" ++"Use the buttons below to create a settings file from your current " ++"preferences that can be imported on a different machine." ++msgstr "" ++"Usar os botóns de abaixo para crear o fichero de configuración coas súas " ++"preferencias actuais para poder ser importadas de outra máquina." ++ ++#: Settings.ui.h:231 ++msgid "Export and import settings" ++msgstr "Exportar e importar configuración" ++ ++#: Settings.ui.h:232 ++msgid "Export to file" ++msgstr "Exportar a un ficheiro" ++ ++#: Settings.ui.h:233 ++msgid "Import from file" ++msgstr "Importar dun ficheiro" ++ ++#: Settings.ui.h:234 ++msgid "" ++"This allows you to update the extension directly from the GitHub repository." ++msgstr "" ++"Isto permítelle actualizar a extensión directamente do repositorio GitHub" ++ ++#: Settings.ui.h:235 ++msgid "Updates" ++msgstr "Actualizacións" ++ ++#: Settings.ui.h:236 ++msgid "Periodically check for updates" ++msgstr "Comprobar periódicamente actualizacións" ++ ++#: Settings.ui.h:237 ++msgid "Check now" ++msgstr "Comprobar agora" ++ ++#: Settings.ui.h:238 ++msgid "" ++"Be aware, these official Dash to " ++"Panel releases might not be reviewed yet on extensions.gnome.org! Read more" ++msgstr "" ++"¡Sé consciente de que estas versións " ++"oficiais de 'Dash to Panel' poderían non estar todavía revisadas en " ++"extensions.gnome.org! Ler máis" ++ + #~ msgid "Application" + #~ msgstr "Aplicación" + +diff --git a/po/hu.po b/po/hu.po +index 60305081..0328c8bc 100644 +--- a/po/hu.po ++++ b/po/hu.po +@@ -1,5 +1,6 @@ + # #-#-#-#-# hu.po (gnome-shell-extensions master) #-#-#-#-# + # #-#-#-#-# hu.po (gnome-shell-extensions master) #-#-#-#-# ++# #-#-#-#-# hu.po (gnome-shell-extensions master) #-#-#-#-# + # Hungarian translation for gnome-shell-extensions. + # Copyright (C) 2011, 2012, 2013, 2014, 2017, 2019 Free Software Foundation, Inc. + # This file is distributed under the same license as the gnome-shell-extensions package. +@@ -19,11 +20,18 @@ + # This file is distributed under the same license as the desktop-icons package. + # + # Balázs Úr , 2019, 2020. ++# #-#-#-#-# hu.po (GitHub) #-#-#-#-# ++# Hungarian translation for dash-to-panel. ++# Copyright (C) 2017, 2018, 2019 Free Software Foundation, Inc. ++# This file is distributed under the same license as the dash-to-panel package. ++# ++# Balázs Úr , 2017, 2018, 2019. + #, fuzzy + msgid "" + msgstr "" + "#-#-#-#-# hu.po (gnome-shell-extensions master) #-#-#-#-#\n" + "#-#-#-#-# hu.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"#-#-#-#-# hu.po (gnome-shell-extensions master) #-#-#-#-#\n" + "Project-Id-Version: gnome-shell-extensions master\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/" + "issues\n" +@@ -64,6 +72,20 @@ msgstr "" + "Content-Transfer-Encoding: 8bit\n" + "Plural-Forms: nplurals=2; plural=(n != 1);\n" + "X-Generator: Lokalize 19.12.3\n" ++"#-#-#-#-# hu.po (GitHub) #-#-#-#-#\n" ++"Project-Id-Version: GitHub\n" ++"Report-Msgid-Bugs-To: https://github.com/home-sweet-gnome/dash-to-panel/" ++"issues\n" ++"POT-Creation-Date: 2019-10-12 22:22+0200\n" ++"PO-Revision-Date: 2019-10-12 22:30+0200\n" ++"Last-Translator: Balázs Úr \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: Lokalize 18.12.3\n" + + #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3 + msgid "GNOME Classic" +@@ -315,11 +337,11 @@ msgstr "Elsődleges kijelző" + msgid "Secondary monitor " + msgstr "Másodlagos kijelző" + +-#: prefs.js:154 Settings.ui.h:29 ++#: prefs.js:154 Settings.ui.h:29 Settings.ui.h:146 + msgid "Right" + msgstr "Jobb" + +-#: prefs.js:155 Settings.ui.h:26 ++#: prefs.js:155 Settings.ui.h:26 Settings.ui.h:145 + msgid "Left" + msgstr "Bal" + +@@ -327,7 +349,10 @@ msgstr "Bal" + msgid "Intelligent autohide customization" + msgstr "Intelligens automatikus elrejtés személyre szabása" + +-#: prefs.js:212 prefs.js:393 prefs.js:450 ++#: prefs.js:212 prefs.js:393 prefs.js:450 prefs.js:371 prefs.js:569 ++#: prefs.js:712 prefs.js:837 prefs.js:904 prefs.js:992 prefs.js:1078 ++#: prefs.js:1325 prefs.js:1409 prefs.js:1474 prefs.js:1510 prefs.js:1607 ++#: prefs.js:1641 prefs.js:1683 + msgid "Reset to defaults" + msgstr "Visszaállítás az alapértékekre" + +@@ -335,7 +360,7 @@ msgstr "Visszaállítás az alapértékekre" + msgid "Show dock and application numbers" + msgstr "A dokk és az alkalmazás számainak megjelenítése" + +-#: prefs.js:443 ++#: prefs.js:443 prefs.js:1402 + msgid "Customize middle-click behavior" + msgstr "Középső kattintás viselkedésének személyre szabása" + +@@ -363,7 +388,7 @@ msgstr "Szegély színe" + msgid "Border width" + msgstr "Szegély szélessége" + +-#: Settings.ui.h:5 ++#: Settings.ui.h:5 Settings.ui.h:120 + msgid "Number overlay" + msgstr "Szám rátét" + +@@ -391,7 +416,7 @@ msgstr "" + msgid "Shortcut for the options above" + msgstr "Gyorsbillentyűk a fenti beállításokhoz" + +-#: Settings.ui.h:10 ++#: Settings.ui.h:10 Settings.ui.h:59 + msgid "Syntax: , , , " + msgstr "Szintaxis: , , , " + +@@ -399,7 +424,7 @@ msgstr "Szintaxis: , , , " + msgid "Hide timeout (s)" + msgstr "Elrejtési időkorlát (mp)" + +-#: Settings.ui.h:12 ++#: Settings.ui.h:12 Settings.ui.h:2 + msgid "" + "When set to minimize, double clicking minimizes all the windows of the " + "application." +@@ -407,7 +432,7 @@ msgstr "" + "Ha minimalizálásra van állítva, akkor a dupla kattintás az alkalmazás összes " + "ablakát minimalizálja." + +-#: Settings.ui.h:13 ++#: Settings.ui.h:13 Settings.ui.h:3 + msgid "Shift+Click action" + msgstr "Shift + kattintás művelet" + +@@ -415,35 +440,36 @@ msgstr "Shift + kattintás művelet" + msgid "Raise window" + msgstr "Ablak előre hozása" + +-#: Settings.ui.h:15 ++#: Settings.ui.h:15 Settings.ui.h:5 + msgid "Minimize window" + msgstr "Ablak minimalizálása" + +-#: Settings.ui.h:16 ++#: Settings.ui.h:16 Settings.ui.h:6 + msgid "Launch new instance" + msgstr "Új példány indítása" + +-#: Settings.ui.h:17 ++#: Settings.ui.h:17 Settings.ui.h:7 + msgid "Cycle through windows" + msgstr "Ablakok körbeléptetése" + +-#: Settings.ui.h:18 ++#: Settings.ui.h:18 appIcons.js:1398 appIcons.js:1458 appIcons.js:1460 ++#: Settings.ui.h:10 + msgid "Quit" + msgstr "Kilépés" + +-#: Settings.ui.h:19 ++#: Settings.ui.h:19 Settings.ui.h:11 + msgid "Behavior for Middle-Click." + msgstr "A középső kattintás viselkedése." + +-#: Settings.ui.h:20 ++#: Settings.ui.h:20 Settings.ui.h:12 + msgid "Middle-Click action" + msgstr "Középső kattintás művelet" + +-#: Settings.ui.h:21 ++#: Settings.ui.h:21 Settings.ui.h:13 + msgid "Behavior for Shift+Middle-Click." + msgstr "A Shift + középső kattintás viselkedése." + +-#: Settings.ui.h:22 ++#: Settings.ui.h:22 Settings.ui.h:14 + msgid "Shift+Middle-Click action" + msgstr "Shift + középső kattintás művelet" + +@@ -460,11 +486,11 @@ msgstr "Másodlagos kijelző" + msgid "Position on screen" + msgstr "Elhelyezkedés a képernyőn" + +-#: Settings.ui.h:27 ++#: Settings.ui.h:27 Settings.ui.h:97 + msgid "Bottom" + msgstr "Lent" + +-#: Settings.ui.h:28 ++#: Settings.ui.h:28 Settings.ui.h:98 + msgid "Top" + msgstr "Fent" + +@@ -500,11 +526,11 @@ msgstr "Rögzített ikonméret: görgetés egyéb ikonok felfedéséhez" + msgid "Position and size" + msgstr "Elhelyezkedés és méret" + +-#: Settings.ui.h:37 ++#: Settings.ui.h:37 Settings.ui.h:182 + msgid "Show favorite applications" + msgstr "Kedvenc alkalmazások megjelenítése" + +-#: Settings.ui.h:38 ++#: Settings.ui.h:38 Settings.ui.h:183 + msgid "Show running applications" + msgstr "Futó alkalmazások megjelenítése" + +@@ -524,7 +550,7 @@ msgstr "" + "Ha le van tiltva, akkor ezek a beállítások elérhetők a GNOME finomhangoló " + "eszközből vagy a kiegészítők weboldaláról." + +-#: Settings.ui.h:42 ++#: Settings.ui.h:42 Settings.ui.h:184 + msgid "Show Applications icon" + msgstr "Alkalmazások ikon megjelenítése" + +@@ -532,7 +558,7 @@ msgstr "Alkalmazások ikon megjelenítése" + msgid "Move the applications button at the beginning of the dock." + msgstr "Az alkalmazások gombjának áthelyezése a dokk elejére." + +-#: Settings.ui.h:44 ++#: Settings.ui.h:44 Settings.ui.h:185 + msgid "Animate Show Applications." + msgstr "Alkalmazások megjelenítése animálása." + +@@ -540,7 +566,7 @@ msgstr "Alkalmazások megjelenítése animálása." + msgid "Launchers" + msgstr "Indítok" + +-#: Settings.ui.h:46 ++#: Settings.ui.h:46 Settings.ui.h:205 + msgid "" + "Enable Super+(0-9) as shortcuts to activate apps. It can also be used " + "together with Shift and Ctrl." +@@ -552,11 +578,11 @@ msgstr "" + msgid "Use keyboard shortcuts to activate apps" + msgstr "Gyorsbillentyűk használata az alkalmazások aktiválásához" + +-#: Settings.ui.h:48 ++#: Settings.ui.h:48 Settings.ui.h:195 + msgid "Behaviour when clicking on the icon of a running application." + msgstr "Viselkedés egy futó alkalmazás ikonjára való kattintáskor." + +-#: Settings.ui.h:49 ++#: Settings.ui.h:49 Settings.ui.h:196 + msgid "Click action" + msgstr "Kattintás művelet" + +@@ -573,15 +599,20 @@ msgstr "Viselkedés egy alkalmazás ikonján való görgetéskor." + msgid "Scroll action" + msgstr "Görgetési művelet" + +-#: Settings.ui.h:54 ++#: Settings.ui.h:54 Settings.ui.h:202 ++#, fuzzy + msgid "Do nothing" +-msgstr "Ne tegyen semmit" ++msgstr "" ++"#-#-#-#-# hu.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Ne tegyen semmit\n" ++"#-#-#-#-# hu.po (GitHub) #-#-#-#-#\n" ++"Ne csináljon semmit" + +-#: Settings.ui.h:55 ++#: Settings.ui.h:55 Settings.ui.h:203 + msgid "Switch workspace" + msgstr "Munkaterület váltása" + +-#: Settings.ui.h:56 ++#: Settings.ui.h:56 Settings.ui.h:194 + msgid "Behavior" + msgstr "Viselkedés" + +@@ -641,7 +672,7 @@ msgstr "Egyenes sarok kényszerítése\n" + msgid "Appearance" + msgstr "Megjelenés" + +-#: Settings.ui.h:71 ++#: Settings.ui.h:71 Settings.ui.h:225 + msgid "version: " + msgstr "verzió: " + +@@ -657,18 +688,18 @@ msgstr "Létrehozta" + msgid "Webpage" + msgstr "Weboldal" + +-#: Settings.ui.h:75 ++#: Settings.ui.h:75 Settings.ui.h:236 + msgid "" + "This program comes with ABSOLUTELY NO WARRANTY.\n" +-"See the GNU General Public License, version 2 or later for details." ++"See the GNU General Public License, version 2 or later for details." + msgstr "" + "Ehhez a programhoz SEMMILYEN GARANCIA NEM JÁR.\n" + "Nézze meg a GNU General Public License 2. vagy későbbi verzióját a részletekért." + +-#: Settings.ui.h:77 ++#: Settings.ui.h:77 Settings.ui.h:238 + msgid "About" + msgstr "Névjegy" + +@@ -696,9 +727,14 @@ msgstr "A dokk megjelenítése, amikor nem akadályozza az alkalmazás ablakait. + msgid "Dodge windows" + msgstr "Ablakok kikerülése" + +-#: Settings.ui.h:84 ++#: Settings.ui.h:84 Settings.ui.h:49 ++#, fuzzy + msgid "All windows" +-msgstr "Összes ablak" ++msgstr "" ++"#-#-#-#-# hu.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Összes ablak\n" ++"#-#-#-#-# hu.po (GitHub) #-#-#-#-#\n" ++"Az összes ablak" + + #: Settings.ui.h:85 + msgid "Only focused application's windows" +@@ -821,7 +857,7 @@ msgstr "Háttér megváltoztatása…" + msgid "Display Settings" + msgstr "Megjelenítés beállításai" + +-#: desktopGrid.js:360 ++#: desktopGrid.js:360 appIcons.js:1726 + msgid "Settings" + msgstr "Beállítások" + +@@ -919,6 +955,1133 @@ msgstr "Csatolt meghajtók megjelenítése" + msgid "Show mounted drives in the desktop." + msgstr "Csatolt meghajtók megjelenítése az asztalon." + ++#: prefs.js:211 ++msgid "Top, with plugin icons collapsed to bottom" ++msgstr "Fent, a bővítményikonokkal lent összecsukva" ++ ++#: prefs.js:211 ++msgid "Left, with plugin icons collapsed to right" ++msgstr "Balra, a bővítményikonokkal jobbra összecsukva" ++ ++#: prefs.js:212 ++msgid "Top, with fixed center plugin icons" ++msgstr "Fent, középen rögzített bővítményikonokkal" ++ ++#: prefs.js:212 ++msgid "Left, with fixed center plugin icons" ++msgstr "Balra, középen rögzített bővítményikonokkal" ++ ++#: prefs.js:213 ++msgid "Top, with floating center plugin icons" ++msgstr "Fent, középen lebegő bővítményikonokkal" ++ ++#: prefs.js:213 ++msgid "Left, with floating center plugin icons" ++msgstr "Balra, középen lebegő bővítményikonokkal" ++ ++#: prefs.js:214 ++msgid "Center, fixed in middle of monitor" ++msgstr "Középen, a kijelző közepén rögzítve" ++ ++#: prefs.js:215 ++msgid "Center, floating between top and bottom elements" ++msgstr "Középen, a fenti és lenti elemek között lebegve" ++ ++#: prefs.js:215 ++msgid "Center, floating between left and right elements" ++msgstr "Középen, a bal és jobb oldali elemek között lebegve" ++ ++#: prefs.js:219 ++msgid "Top of plugin icons" ++msgstr "A bővítményikonok fölött" ++ ++#: prefs.js:219 ++msgid "Left of plugin icons" ++msgstr "A bővítményikonoktól balra" ++ ++#: prefs.js:220 ++msgid "Bottom of plugin icons" ++msgstr "A bővítményikonok alatt" ++ ++#: prefs.js:220 ++msgid "Right of plugin icons" ++msgstr "A bővítményikonoktól jobbra" ++ ++#: prefs.js:221 ++msgid "Top of system indicators" ++msgstr "A rendszerjelzők fölött" ++ ++#: prefs.js:221 ++msgid "Left of system indicators" ++msgstr "A rendszerjelzőktől balra" ++ ++#: prefs.js:222 ++msgid "Bottom of system indicators" ++msgstr "A rendszerjelzők alatt" ++ ++#: prefs.js:222 ++msgid "Right of system indicators" ++msgstr "A rendszerjelzőktől jobbra" ++ ++#: prefs.js:223 ++msgid "Top of taskbar" ++msgstr "A feladatsáv fölött" ++ ++#: prefs.js:223 ++msgid "Left of taskbar" ++msgstr "A feladatsávtól balra" ++ ++#: prefs.js:224 ++msgid "Bottom of taskbar" ++msgstr "A feladatsáv alatt" ++ ++#: prefs.js:224 ++msgid "Right of taskbar" ++msgstr "A feladatsávtól jobbra" ++ ++#: prefs.js:230 ++msgid "Show Desktop button height (px)" ++msgstr "„Asztal megjelenítése” gomb magassága (képpont)" ++ ++#: prefs.js:230 ++msgid "Show Desktop button width (px)" ++msgstr "„Asztal megjelenítése” gomb szélessége (képpont)" ++ ++#: prefs.js:364 ++msgid "Running Indicator Options" ++msgstr "Futásjelző beállításai" ++ ++#: prefs.js:514 ++msgid "Default (Primary monitor)" ++msgstr "Default (Elsődleges kijelző)" ++ ++#: prefs.js:517 ++msgid "Monitor " ++msgstr "Kijelző" ++ ++#: prefs.js:562 ++msgid "Multi-monitors options" ++msgstr "Többkijelzős beállítások" ++ ++#: prefs.js:705 ++msgid "Dynamic opacity options" ++msgstr "Dinamikus átlátszatlansági beállítások" ++ ++#: prefs.js:830 ++msgid "Intellihide options" ++msgstr "Intelligens elrejtés beállításai" ++ ++#: prefs.js:897 ++msgid "Show Applications options" ++msgstr "„Alkalmazások megjelenítése” ikon beállításai" ++ ++#: prefs.js:985 ++msgid "Show Desktop options" ++msgstr "„Asztal megjelenítése” gomb beállításai" ++ ++#: prefs.js:1071 ++msgid "Window preview options" ++msgstr "Ablakelőnézet beállításai" ++ ++#: prefs.js:1318 ++msgid "Ungrouped application options" ++msgstr "Nem csoportosított alkalmazás beállításai" ++ ++#: prefs.js:1467 ++msgid "Customize panel scroll behavior" ++msgstr "Panel görgetési viselkedésének személyre szabása" ++ ++#: prefs.js:1503 ++msgid "Customize icon scroll behavior" ++msgstr "Ikon görgetési viselkedésének személyre szabása" ++ ++#: prefs.js:1600 ++msgid "Advanced hotkeys options" ++msgstr "Speciális gyorsbillentyű-beállítások" ++ ++#: prefs.js:1634 ++msgid "Secondary Menu Options" ++msgstr "Másodlagos menü beállítások" ++ ++#: prefs.js:1676 Settings.ui.h:223 ++msgid "Advanced Options" ++msgstr "Speciális beállítások" ++ ++#: prefs.js:1763 ++msgid "Export settings" ++msgstr "Beállítások exportálása" ++ ++#: prefs.js:1780 ++msgid "Import settings" ++msgstr "Beállítások importálása" ++ ++#: appIcons.js:1380 ++msgid "Show Details" ++msgstr "Részletek megjelenítése" ++ ++#: appIcons.js:1398 ++msgid "New Window" ++msgstr "Új ablak" ++ ++#: appIcons.js:1460 ++msgid "Windows" ++msgstr "Ablakok" ++ ++#: appIcons.js:1684 ++msgid "Power options" ++msgstr "Energiabeállítások" ++ ++#: appIcons.js:1689 ++msgid "Event logs" ++msgstr "Eseménynaplók" ++ ++#: appIcons.js:1694 ++msgid "System" ++msgstr "Rendszer" ++ ++#: appIcons.js:1699 ++msgid "Device Management" ++msgstr "Eszközkezelés" ++ ++#: appIcons.js:1704 ++msgid "Disk Management" ++msgstr "Lemezkezelés" ++ ++#: appIcons.js:1711 ++msgid "Terminal" ++msgstr "Terminál" ++ ++#: appIcons.js:1716 ++msgid "System monitor" ++msgstr "Rendszerfigyelő" ++ ++#: appIcons.js:1721 ++msgid "Files" ++msgstr "Fájlok" ++ ++#: appIcons.js:1733 ++msgid "Unlock taskbar" ++msgstr "Feladatsáv feloldása" ++ ++#: appIcons.js:1733 ++msgid "Lock taskbar" ++msgstr "Feladatsáv zárolása" ++ ++#: appIcons.js:1738 ++msgid "Dash to Panel Settings" ++msgstr "„Dashből panel” beállításai" ++ ++#: appIcons.js:1745 ++msgid "Restore Windows" ++msgstr "Ablakok visszaállítása" ++ ++#: appIcons.js:1745 ++msgid "Show Desktop" ++msgstr "Asztal megjelenítése" ++ ++#: update.js:58 ++#, javascript-format ++msgid "Version %s (%s) is available" ++msgstr "%s (%s) verzió érhető el" ++ ++#: update.js:59 ++msgid "Details" ++msgstr "Részletek" ++ ++#: update.js:60 ++msgid "Update" ++msgstr "Frissítés" ++ ++#: update.js:63 ++msgid "Already up to date" ++msgstr "Már naprakész" ++ ++#: update.js:148 ++msgid "Update successful, please log out/in" ++msgstr "Sikeres frissítés, jelentkezzen ki és be" ++ ++#: update.js:149 ++msgid "Log out" ++msgstr "Kijelentkezés" ++ ++#: update.js:153 ++msgid "Update successful, please restart GNOME Shell" ++msgstr "Sikeres frissítés, indítsa újra a GNOME Shell környezetet" ++ ++#: update.js:154 ++msgid "Restart GNOME Shell" ++msgstr "GNOME Shell újraindítása" ++ ++#: update.js:154 ++msgid "Restarting GNOME Shell..." ++msgstr "GNOME Shell újraindítása…" ++ ++#: update.js:160 ++msgid "Error: " ++msgstr "Hiba: " ++ ++#: Settings.ui.h:1 ++msgid "Nothing yet!" ++msgstr "Még semmi!" ++ ++#: Settings.ui.h:4 ++msgid "Raise windows" ++msgstr "Ablakok előtérbe hozása" ++ ++#: Settings.ui.h:8 ++msgid "Cycle windows + minimize" ++msgstr "Ablakok körbeléptetése + minimalizálás" ++ ++#: Settings.ui.h:9 ++msgid "Toggle single / Preview multiple" ++msgstr "Önálló átkapcsolása / több előnézete" ++ ++#: Settings.ui.h:15 ++msgid "Isolate monitors" ++msgstr "Kijelzők elszigetelése" ++ ++#: Settings.ui.h:16 ++msgid "Display favorite applications on all monitors" ++msgstr "Kedvenc alkalmazások megjelenítése az összes kijelzőn" ++ ++#: Settings.ui.h:17 ++msgid "Display the clock on all monitors" ++msgstr "Az óra megjelenítése az összes kijelzőn" ++ ++#: Settings.ui.h:18 ++msgid "Display the status menu on all monitors" ++msgstr "Az állapot menü megjelenítése az összes kijelzőn" ++ ++#: Settings.ui.h:19 ++msgid "Integrate AppMenu items" ++msgstr "Alkalmazásmenü elemeinek integrálása" ++ ++#: Settings.ui.h:20 ++msgid "Show Details menu item" ++msgstr "Részletek megjelenítése menüpont" ++ ++#: Settings.ui.h:21 ++msgid "Highlight focused application" ++msgstr "Kijelölt alkalmazás kiemelése" ++ ++#: Settings.ui.h:22 ++msgid "Icon dominant color" ++msgstr "Ikon uralkodó színe" ++ ++#: Settings.ui.h:23 ++msgid "Custom color" ++msgstr "Egyéni szín" ++ ++#: Settings.ui.h:24 ++msgid "Highlight opacity" ++msgstr "Kiemelés átlátszatlansága" ++ ++#: Settings.ui.h:25 ++msgid "Indicator height (px)" ++msgstr "Jelző magassága (képpont)" ++ ++#: Settings.ui.h:26 ++msgid "Indicator color - Icon Dominant" ++msgstr "Jelző színe – ikon uralkodó szín" ++ ++#: Settings.ui.h:27 ++msgid "Indicator color - Override Theme" ++msgstr "Jelző színe – téma felülbírálása" ++ ++#: Settings.ui.h:28 ++msgid "1 window open (or ungrouped)" ++msgstr "1 nyitott ablak (vagy nem csoportosított)" ++ ++#: Settings.ui.h:29 ++msgid "Apply to all" ++msgstr "Alkalmazás az összesre" ++ ++#: Settings.ui.h:30 ++msgid "2 windows open" ++msgstr "2 nyitott ablak" ++ ++#: Settings.ui.h:31 ++msgid "3 windows open" ++msgstr "3 nyitott ablak" ++ ++#: Settings.ui.h:32 ++msgid "4+ windows open" ++msgstr "4+ nyitott ablak" ++ ++#: Settings.ui.h:33 ++msgid "Use different for unfocused" ++msgstr "Eltérő használata a nem kijelölthöz" ++ ++#: Settings.ui.h:34 ++msgid "Font size (px) of the application titles (default is 14)" ++msgstr "Az alkalmazáscímek betűkészletmérete képpontban (alapértelmezetten 14)" ++ ++#: Settings.ui.h:35 ++msgid "Font weight of application titles" ++msgstr "Az alkalmazáscímek betűvastagsága" ++ ++#: Settings.ui.h:36 ++msgid "inherit from theme" ++msgstr "öröklés a témától" ++ ++#: Settings.ui.h:37 ++msgid "normal" ++msgstr "normál" ++ ++#: Settings.ui.h:38 ++msgid "lighter" ++msgstr "vékonyabb" ++ ++#: Settings.ui.h:39 ++msgid "bold" ++msgstr "félkövér" ++ ++#: Settings.ui.h:40 ++msgid "bolder" ++msgstr "vastagabb" ++ ++#: Settings.ui.h:41 ++msgid "Font color of the application titles" ++msgstr "Az alkalmazáscímek betűkészletszíne" ++ ++#: Settings.ui.h:42 ++msgid "Maximum width (px) of the application titles (default is 160)" ++msgstr "" ++"Az alkalmazáscímek legnagyobb szélessége képpontban (alapértelmezetten 160)" ++ ++#: Settings.ui.h:43 ++msgid "Use a fixed width for the application titles" ++msgstr "Rögzített szélesség használata az alkalmazáscímeknél" ++ ++#: Settings.ui.h:44 ++msgid "" ++"The application titles all have the same width, even if their texts are " ++"shorter than the maximum width. The maximum width value is used as the fixed " ++"width." ++msgstr "" ++"Az összes alkalmazáscím ugyanolyan széles lesz még akkor is, ha a szövegük " ++"rövidebb a legnagyobb szélességnél. A legnagyobb szélesség érték lesz " ++"használva rögzített szélességként." ++ ++#: Settings.ui.h:45 ++msgid "Display running indicators on unfocused applications" ++msgstr "Futásjelzők megjelenítése nem kijelölt alkalmazásoknál" ++ ++#: Settings.ui.h:46 ++msgid "Use the favorite icons as application launchers" ++msgstr "A kedvenc ikonok használata alkalmazásindítókként" ++ ++#: Settings.ui.h:47 ++msgid "Only hide the panel when it is obstructed by windows " ++msgstr "Csak akkor rejtse el a panelt, amikor akadályozzák az ablakok " ++ ++#: Settings.ui.h:48 ++msgid "The panel hides from" ++msgstr "A panel el van rejtve ettől" ++ ++#: Settings.ui.h:50 ++msgid "Focused windows" ++msgstr "Kijelölt ablakok" ++ ++#: Settings.ui.h:51 ++msgid "Maximized windows" ++msgstr "Maximalizált ablakok" ++ ++#: Settings.ui.h:52 ++msgid "Require pressure at the edge of the screen to reveal the panel" ++msgstr "Nyomás szükséges a képernyő szélénél a panel előhozásához" ++ ++#: Settings.ui.h:53 ++msgid "Required pressure threshold (px)" ++msgstr "Szükséges nyomási küszöbszint (képpont)" ++ ++#: Settings.ui.h:54 ++msgid "Required pressure timeout (ms)" ++msgstr "Szükséges nyomási időkorlát (ezredmásodperc)" ++ ++#: Settings.ui.h:55 ++msgid "Allow the panel to be revealed while in fullscreen mode" ++msgstr "Lehetővé teszi a panelnek, hogy előjöjjön teljes képernyős módban" ++ ++#: Settings.ui.h:56 ++msgid "Only hide secondary panels (requires multi-monitors option)" ++msgstr "Csak a másodlagos panel elrejtése (többmonitoros beállítást igényel)" ++ ++#: Settings.ui.h:57 ++msgid "e.g. i" ++msgstr "például i" ++ ++#: Settings.ui.h:58 ++msgid "Keyboard shortcut to reveal and hold the panel" ++msgstr "Gyorsbillentyű a panel előhozásához és megtartásához" ++ ++#: Settings.ui.h:60 ++msgid "Hide and reveal animation duration (ms)" ++msgstr "Elrejtési és előhozási animáció időkorlátja (ezredmásodperc)" ++ ++#: Settings.ui.h:61 ++msgid "Delay before hiding the panel (ms)" ++msgstr "Késleltetés a panel elrejtése előtt (ezredmásodperc)" ++ ++#: Settings.ui.h:62 ++msgid "Delay before enabling intellihide on start (ms)" ++msgstr "" ++"Az intelligens elrejtés indításkori engedélyezése előtti késleltetés " ++"(ezredmásodperc)" ++ ++#: Settings.ui.h:63 ++msgid "Time (ms) before showing (100 is default)" ++msgstr "Megjelenítés előtti idő (ezredmásodperc, alapérték: 100)" ++ ++#: Settings.ui.h:64 ++msgid "Animation time (ms)" ++msgstr "Animáció ideje (ezredmásodperc)" ++ ++#: Settings.ui.h:65 ++msgid "Time (ms) before hiding (100 is default)" ++msgstr "Elrejtés előtti idő (ezredmásodperc, alapértelmezetten 100)" ++ ++#: Settings.ui.h:66 ++msgid "Immediate on application icon click" ++msgstr "Azonnal az alkalmazásikonra kattintáskor" ++ ++#: Settings.ui.h:67 ++msgid "Middle click on the preview to close the window" ++msgstr "Középső kattintás az előnézeten az ablak bezárásához" ++ ++#: Settings.ui.h:68 ++msgid "Window previews preferred size (px)" ++msgstr "Ablakelőnézetek előnyben részesített mérete (képpont)" ++ ++#: Settings.ui.h:69 ++msgid "Window previews aspect ratio Y (height)" ++msgstr "Ablakelőnézetek Y képaránya (magasság)" ++ ++#: Settings.ui.h:70 ++msgid "Window previews padding (px)" ++msgstr "Ablakelőnézetek kitöltése (képpont)" ++ ++#: Settings.ui.h:71 ++msgid "1" ++msgstr "1" ++ ++#: Settings.ui.h:72 ++msgid "2" ++msgstr "2" ++ ++#: Settings.ui.h:73 ++msgid "3" ++msgstr "3" ++ ++#: Settings.ui.h:74 ++msgid "4" ++msgstr "4" ++ ++#: Settings.ui.h:75 ++msgid "5" ++msgstr "5" ++ ++#: Settings.ui.h:76 ++msgid "6" ++msgstr "6" ++ ++#: Settings.ui.h:77 ++msgid "7" ++msgstr "7" ++ ++#: Settings.ui.h:78 ++msgid "8" ++msgstr "8" ++ ++#: Settings.ui.h:79 ++msgid "9" ++msgstr "9" ++ ++#: Settings.ui.h:80 ++msgid "10" ++msgstr "10" ++ ++#: Settings.ui.h:81 ++msgid "11" ++msgstr "11" ++ ++#: Settings.ui.h:82 ++msgid "12" ++msgstr "12" ++ ++#: Settings.ui.h:83 ++msgid "13" ++msgstr "13" ++ ++#: Settings.ui.h:84 ++msgid "14" ++msgstr "14" ++ ++#: Settings.ui.h:85 ++msgid "15" ++msgstr "15" ++ ++#: Settings.ui.h:86 ++msgid "16" ++msgstr "16" ++ ++#: Settings.ui.h:87 ++msgid "17" ++msgstr "17" ++ ++#: Settings.ui.h:88 ++msgid "18" ++msgstr "18" ++ ++#: Settings.ui.h:89 ++msgid "19" ++msgstr "19" ++ ++#: Settings.ui.h:90 ++msgid "20" ++msgstr "20" ++ ++#: Settings.ui.h:91 ++msgid "21" ++msgstr "21" ++ ++#: Settings.ui.h:92 ++msgid "Fixed" ++msgstr "Rögzített" ++ ++#: Settings.ui.h:93 ++msgid "Window previews aspect ratio X (width)" ++msgstr "Ablakelőnézetek X képaránya (szélesség)" ++ ++#: Settings.ui.h:94 ++msgid "Use custom opacity for the previews background" ++msgstr "Egyéni átlátszatlanság használata az előnézetek hátteréhez" ++ ++#: Settings.ui.h:95 ++msgid "If disabled, the previews background have the same opacity as the panel" ++msgstr "" ++"Ha le van tiltva, akkor az előnézetek háttere ugyanazzal az " ++"átlátszatlansággal rendelkezik mint a panel" ++ ++#: Settings.ui.h:96 ++msgid "Close button and header position" ++msgstr "Bezáró gomb és fejléc helyzete" ++ ++#: Settings.ui.h:99 ++msgid "Display window preview headers" ++msgstr "Ablakelőnézet fejléceinek megjelenítése" ++ ++#: Settings.ui.h:100 ++msgid "Font size (px) of the preview titles" ++msgstr "Az előnézet címeinek betűmérete (képpont)" ++ ++#: Settings.ui.h:101 ++msgid "Font weight of the preview titles" ++msgstr "Az előnézet címeinek betűvastagsága" ++ ++#: Settings.ui.h:102 ++msgid "Font color of the preview titles" ++msgstr "Az előnézet címeinek betűszíne" ++ ++#: Settings.ui.h:103 ++msgid "Enable window peeking" ++msgstr "Ablakbetekintés engedélyezése" ++ ++#: Settings.ui.h:104 ++msgid "" ++"When hovering over a window preview for some time, the window gets " ++"distinguished." ++msgstr "" ++"Amikor rámutat egy ablakelőnézetre egy ideig, az ablak megkülönböztethetővé " ++"válik." ++ ++#: Settings.ui.h:105 ++msgid "Enter window peeking mode timeout (ms)" ++msgstr "Ablakbetekintési módba lépés időkorlátja (ezredmásodperc)" ++ ++#: Settings.ui.h:106 ++msgid "50" ++msgstr "50" ++ ++#: Settings.ui.h:107 ++msgid "" ++"Time of inactivity while hovering over a window preview needed to enter the " ++"window peeking mode." ++msgstr "" ++"Egy ablakelőnézet rámutatása közbeni tétlenség ideje, amely az " ++"ablakbetekintési módba lépéshez szükséges." ++ ++#: Settings.ui.h:108 ++msgid "Window peeking mode opacity" ++msgstr "Ablakbetekintési módba átlátszatlansága" ++ ++#: Settings.ui.h:109 ++msgid "0" ++msgstr "0" ++ ++#: Settings.ui.h:110 ++msgid "" ++"All windows except for the peeked one have their opacity set to the same " ++"value." ++msgstr "" ++"A betekintett ablak kivételével az összes ablaknál a saját átlátszatlanság " ++"ugyanarra az értékre van állítva." ++ ++#: Settings.ui.h:111 ++msgid "Delay between mouse scroll events (ms)" ++msgstr "Egérgörgetés-események közti késleltetés (ezredmásodperc)" ++ ++#: Settings.ui.h:112 ++msgid "Use this value to limit the number of captured mouse scroll events." ++msgstr "" ++"Használja ezt az értéket a rögzített egérgörgetés-események számának " ++"korlátozásához." ++ ++#: Settings.ui.h:113 ++msgid "Super" ++msgstr "Szuper" ++ ++#: Settings.ui.h:114 ++msgid "Super + Alt" ++msgstr "Szuper + Alt" ++ ++#: Settings.ui.h:115 ++msgid "Hotkeys prefix" ++msgstr "Gyorsbillentyű-előtag" ++ ++#: Settings.ui.h:116 ++msgid "Hotkeys will either be Super+Number or Super+Alt+Num" ++msgstr "" ++"A gyorsbillentyűk vagy Szuper + szám, vagy Szuper + Alt + szám lehetnek" ++ ++#: Settings.ui.h:117 ++msgid "Never" ++msgstr "Soha" ++ ++#: Settings.ui.h:118 ++msgid "Show temporarily" ++msgstr "Megjelenítés átmenetileg" ++ ++#: Settings.ui.h:119 ++msgid "Always visible" ++msgstr "Mindig látható" ++ ++#: Settings.ui.h:121 ++msgid "" ++"Temporarily show the application numbers over the icons when using the " ++"hotkeys." ++msgstr "" ++"Az alkalmazás számainak átmeneti megjelenítése az ikonok fölött a " ++"gyorsbillentyűk használatakor." ++ ++#: Settings.ui.h:122 ++msgid "Hide timeout (ms)" ++msgstr "Elrejtési időkorlát (ezredmásodperc)" ++ ++#: Settings.ui.h:123 ++msgid "e.g. q" ++msgstr "például q" ++ ++#: Settings.ui.h:124 ++msgid "Shortcut to show the overlay for 2 seconds" ++msgstr "Gyorsbillentyű a rátét megjelenítéséhez 2 másodpercre" ++ ++#: Settings.ui.h:125 ++msgid "Show window previews on hotkey" ++msgstr "Ablakelőnézetek megjelenítése gyorsbillentyűvel" ++ ++#: Settings.ui.h:126 ++msgid "Show previews when the application have multiple instances" ++msgstr "Előnézetek megjelenítése, amikor az alkalmazásnak több példánya van" ++ ++#: Settings.ui.h:127 ++msgid "Number row" ++msgstr "Számsor" ++ ++#: Settings.ui.h:128 ++msgid "Numeric keypad" ++msgstr "Számbillentyűzet" ++ ++#: Settings.ui.h:129 ++msgid "Both" ++msgstr "Mindkettő" ++ ++#: Settings.ui.h:130 ++msgid "Hotkeys are activated with" ++msgstr "Gyorsbillentyűk bekapcsolva ezzel" ++ ++#: Settings.ui.h:131 ++msgid "Select which keyboard number keys are used to activate the hotkeys" ++msgstr "" ++"Annak kiválasztása, hogy a billentyűzet mely számbillentyűi legyenek " ++"használva a gyorsbillentyűk bekapcsolásához" ++ ++#: Settings.ui.h:132 ++msgid "Current Show Applications icon" ++msgstr "Jelenlegi „Alkalmazások megjelenítése” ikon" ++ ++#: Settings.ui.h:133 ++msgid "Select a Show Applications image icon" ++msgstr "Egy „Alkalmazások megjelenítése” képikon kiválasztása" ++ ++#: Settings.ui.h:134 ++msgid "Custom Show Applications image icon" ++msgstr "Egyéni „Alkalmazások megjelenítése” képikon" ++ ++#: Settings.ui.h:135 ++msgid "Show Applications icon side padding (px)" ++msgstr "„Alkalmazások megjelenítése” ikon oldalsó kitöltése (képpont)" ++ ++#: Settings.ui.h:136 ++msgid "Reveal the desktop when hovering the Show Desktop button" ++msgstr "Az asztal előhozása, ha az „Asztal megjelenítése” gombra mutat" ++ ++#: Settings.ui.h:137 ++msgid "Delay before revealing the desktop (ms)" ++msgstr "Késleltetés az asztal előhozása előtt (ezredmásodperc)" ++ ++#: Settings.ui.h:138 ++msgid "Fade duration (ms)" ++msgstr "Áttűnés időtartama (ezredmásodperc)" ++ ++#: Settings.ui.h:139 ++msgid "The panel background opacity is affected by" ++msgstr "A panel háttér-átlátszatlanságát a következő befolyásolja" ++ ++#: Settings.ui.h:140 ++msgid "Change opacity when a window gets closer than (px)" ++msgstr "" ++"Átlátszatlanság megváltoztatása, amikor egy ablak közelebb kerül mint " ++"(képpont)" ++ ++#: Settings.ui.h:142 ++#, no-c-format ++msgid "Change opacity to (%)" ++msgstr "Átlátszatlanság megváltoztatása erre (%)" ++ ++#: Settings.ui.h:143 ++msgid "Opacity change animation duration (ms)" ++msgstr "Átlátszatlanságváltozás animációjának időtartama (ezredmásodperc)" ++ ++#: Settings.ui.h:144 ++msgid "Panel screen position" ++msgstr "Panel képernyő-pozíciója" ++ ++#: Settings.ui.h:147 ++msgid "Taskbar position" ++msgstr "Tálca helyzete" ++ ++#: Settings.ui.h:148 ++msgid "Clock location" ++msgstr "Óra helye" ++ ++#: Settings.ui.h:149 ++msgid "Display the main panel on" ++msgstr "A főpanel megjelenítése ezen" ++ ++#: Settings.ui.h:150 ++msgid "Display panels on all monitors" ++msgstr "Panelek megjelenítése az összes kijelzőn" ++ ++#: Settings.ui.h:151 ++msgid "Panel Intellihide" ++msgstr "Panel intelligens elrejtése" ++ ++#: Settings.ui.h:152 ++msgid "Hide and reveal the panel according to preferences" ++msgstr "A panel elrejtése vagy előhozása a beállítások szerint" ++ ++#: Settings.ui.h:153 ++msgid "Position" ++msgstr "Pozíció" ++ ++#: Settings.ui.h:154 ++msgid "" ++"Panel Size\n" ++"(default is 48)" ++msgstr "" ++"Panelméret\n" ++"(alapérték: 48)" ++ ++#: Settings.ui.h:156 ++msgid "" ++"App Icon Margin\n" ++"(default is 8)" ++msgstr "" ++"Alkalmazásikon margó\n" ++"(alapérték: 8)" ++ ++#: Settings.ui.h:158 ++msgid "" ++"App Icon Padding\n" ++"(default is 4)" ++msgstr "" ++"Alkalmazásikon térköz\n" ++"(alapérték: 4)" ++ ++#: Settings.ui.h:160 ++msgid "Running indicator position" ++msgstr "Futásjelző pozíciója" ++ ++#: Settings.ui.h:161 ++msgid "Running indicator style (Focused app)" ++msgstr "Futásjelző stílusa (kijelölt alkalmazás)" ++ ++#: Settings.ui.h:162 ++msgid "Dots" ++msgstr "Pontok" ++ ++#: Settings.ui.h:163 ++msgid "Squares" ++msgstr "Négyzetek" ++ ++#: Settings.ui.h:164 ++msgid "Dashes" ++msgstr "Szaggatott vonalak" ++ ++#: Settings.ui.h:165 ++msgid "Segmented" ++msgstr "Darabolt" ++ ++#: Settings.ui.h:166 ++msgid "Solid" ++msgstr "Tömör" ++ ++#: Settings.ui.h:167 ++msgid "Ciliora" ++msgstr "Ciliora" ++ ++#: Settings.ui.h:168 ++msgid "Metro" ++msgstr "Metro" ++ ++#: Settings.ui.h:169 ++msgid "Running indicator style (Unfocused apps)" ++msgstr "Futásjelző stílusa (nem kijelölt alkalmazások)" ++ ++#: Settings.ui.h:170 ++msgid "Override panel theme background color " ++msgstr "A paneltéma háttérszínének felülbírálása" ++ ++#: Settings.ui.h:171 ++msgid "Override panel theme background opacity" ++msgstr "A paneltéma háttér-átlátszatlanságának felülbírálása" ++ ++#: Settings.ui.h:173 ++#, no-c-format ++msgid "Panel background opacity (%)" ++msgstr "Panel háttér-átlátszatlansága (%)" ++ ++#: Settings.ui.h:174 ++msgid "Dynamic background opacity" ++msgstr "Dinamikus háttér-átlátszatlanság" ++ ++#: Settings.ui.h:175 ++msgid "Change opacity when a window gets close to the panel" ++msgstr "" ++"Átlátszatlanság megváltoztatása, amikor egy ablak közel kerül a panelhez" ++ ++#: Settings.ui.h:176 ++msgid "Override panel theme gradient " ++msgstr "A paneltéma színátmenetének felülbírálása" ++ ++#: Settings.ui.h:178 ++#, no-c-format ++msgid "Gradient top color and opacity (%)" ++msgstr "Színátmenet felső színe és átlátszatlansága (%)" ++ ++#: Settings.ui.h:180 ++#, no-c-format ++msgid "Gradient bottom color and opacity (%)" ++msgstr "Színátmenet alsó színe és átlátszatlansága (%)" ++ ++#: Settings.ui.h:181 ++msgid "Style" ++msgstr "Stílus" ++ ++#: Settings.ui.h:186 ++msgid "Show Activities button" ++msgstr "Tevékenységek gomb megjelenítése" ++ ++#: Settings.ui.h:187 ++msgid "Show Desktop button" ++msgstr "Asztal gomb megjelenítése" ++ ++#: Settings.ui.h:188 ++msgid "Show AppMenu button" ++msgstr "Alkalmazásmenü gomb megjelenítése" ++ ++#: Settings.ui.h:189 ++msgid "Top Bar > Show App Menu must be enabled in Tweak Tool" ++msgstr "" ++"A felső sáv > Alkalmazásmenü megjelenítésének engedélyezve kell mennie a " ++"finomhangoló eszközben" ++ ++#: Settings.ui.h:190 ++msgid "Show window previews on hover" ++msgstr "Ablakelőnézetek megjelenítése rámutatáskor" ++ ++#: Settings.ui.h:191 ++msgid "Show tooltip on hover" ++msgstr "Buboréksúgó megjelenítése rámutatáskor" ++ ++#: Settings.ui.h:192 ++msgid "Isolate Workspaces" ++msgstr "Munkaterületek elkülönítése" ++ ++#: Settings.ui.h:193 ++msgid "Ungroup applications" ++msgstr "Alkalmazások csoportosításának felbontása" ++ ++#: Settings.ui.h:197 ++msgid "Toggle windows" ++msgstr "Ablakok átkapcsolása" ++ ++#: Settings.ui.h:198 ++msgid "Scroll panel action" ++msgstr "Panel görgetése művelet" ++ ++#: Settings.ui.h:199 ++msgid "Behavior when mouse scrolling over the panel." ++msgstr "Viselkedés, ha az egeret görgetik a panel fölött." ++ ++#: Settings.ui.h:200 ++msgid "Scroll icon action" ++msgstr "Ikon görgetése művelet" ++ ++#: Settings.ui.h:201 ++msgid "Behavior when mouse scrolling over an application icon." ++msgstr "Viselkedés, ha az egeret görgetik egy alkalmazásikon fölött." ++ ++#: Settings.ui.h:204 ++msgid "Cycle windows" ++msgstr "Ablakok léptetése" ++ ++#: Settings.ui.h:206 ++msgid "Use hotkeys to activate apps" ++msgstr "Gyorsbillentyűk használata az alkalmazások aktiválásához" ++ ++#: Settings.ui.h:207 ++msgid "Action" ++msgstr "Művelet" ++ ++#: Settings.ui.h:208 ++msgid "" ++"Tray Font Size\n" ++"(0 = theme default)" ++msgstr "" ++"Tálca betűmérete\n" ++"(0 = téma alapértéke)" ++ ++#: Settings.ui.h:210 ++msgid "" ++"LeftBox Font Size\n" ++"(0 = theme default)" ++msgstr "" ++"Bal doboz betűmérete\n" ++"(0 = téma alapértéke)" ++ ++#: Settings.ui.h:212 ++msgid "" ++"Tray Item Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"Tálcaelem kitöltése\n" ++"(-1 = téma alapértéke)" ++ ++#: Settings.ui.h:214 ++msgid "" ++"Status Icon Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"Állapotikon kitöltése\n" ++"(-1 = téma alapértéke)" ++ ++#: Settings.ui.h:216 ++msgid "" ++"LeftBox Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"Bal doboz kitöltése\n" ++"(-1 = téma alapértéke)" ++ ++#: Settings.ui.h:218 ++msgid "Animate switching applications" ++msgstr "Alkalmazásváltások animálása" ++ ++#: Settings.ui.h:219 ++msgid "Animate launching new windows" ++msgstr "Új ablakok indításának animálása" ++ ++#: Settings.ui.h:220 ++msgid "Keep original gnome-shell dash (overview)" ++msgstr "Eredeti gnome-shell dash megtartása (áttekintő)" ++ ++#: Settings.ui.h:221 ++msgid "Activate panel menu buttons (e.g. date menu) on click only" ++msgstr "Panelmenü gombjainak (például dátum menü) aktiválása csak kattintáskor" ++ ++#: Settings.ui.h:222 ++msgid "App icon secondary (right-click) menu" ++msgstr "Alkalmazásikon másodlagos (jobb kattintásos) menüje" ++ ++#: Settings.ui.h:224 ++msgid "Fine-Tune" ++msgstr "Finomhangolás" ++ ++#: Settings.ui.h:226 ++msgid "GitHub" ++msgstr "GitHub" ++ ++#: Settings.ui.h:227 ++msgid "" ++"Use the buttons below to create a settings file from your current " ++"preferences that can be imported on a different machine." ++msgstr "" ++"Használja a lenti gombokat egy beállítási fájl létrehozásához a jelenlegi " ++"beállításokból, amely importálható egy másik gépen." ++ ++#: Settings.ui.h:228 ++msgid "Export and import settings" ++msgstr "Beállítások exportálása és importálása" ++ ++#: Settings.ui.h:229 ++msgid "Export to file" ++msgstr "Exportálás fájlba" ++ ++#: Settings.ui.h:230 ++msgid "Import from file" ++msgstr "Importálás fájlból" ++ ++#: Settings.ui.h:231 ++msgid "" ++"This allows you to update the extension directly from the GitHub repository." ++msgstr "" ++"Ez lehetővé teszi a kiterjesztés frissítést közvetlenül a GitHub tárolóból." ++ ++#: Settings.ui.h:232 ++msgid "Updates" ++msgstr "Frissítések" ++ ++#: Settings.ui.h:233 ++msgid "Periodically check for updates" ++msgstr "Frissítések rendszeres ellenőrzése" ++ ++#: Settings.ui.h:234 ++msgid "Check now" ++msgstr "Ellenőrzés most" ++ ++#: Settings.ui.h:235 ++msgid "" ++"Be aware, these official Dash to " ++"Panel releases might not be reviewed yet on extensions.gnome.org! Read more" ++msgstr "" ++"Ne feledje, hogy ezeket a hivatalos " ++"„Dash to Panel” kiterjesztéseket esetleg még nem vizsgálták felül az " ++"extensions.gnome.org oldalon! Tudjon meg többet" ++ + #~ msgid "Application" + #~ msgstr "Alkalmazás" + +diff --git a/po/it.po b/po/it.po +index 2b24e1b1..2075119a 100644 +--- a/po/it.po ++++ b/po/it.po +@@ -1,5 +1,6 @@ + # #-#-#-#-# it.po (gnome-shell-extensions) #-#-#-#-# + # #-#-#-#-# it.po (gnome-shell-extensions) #-#-#-#-# ++# #-#-#-#-# it.po (gnome-shell-extensions) #-#-#-#-# + # Italian translations for GNOME Shell extensions + # Copyright (C) 2011 Giovanni Campagna et al. + # Copyright (C) 2012, 2013, 2014, 2015, 2017, 2019, 2020 The Free Software Foundation, Inc. +@@ -21,11 +22,18 @@ + # Massimo Branchini , 2019. + # Milo Casagrande , 2019, 2020. + # ++# #-#-#-#-# it.po #-#-#-#-# ++# Dash to Panel Italian translation. ++# This file is distributed under the same license as the Dash to Panel package. ++# Enrico Bella , 2018. ++# Kowalski7cc , 2020. ++# + #, fuzzy + msgid "" + msgstr "" + "#-#-#-#-# it.po (gnome-shell-extensions) #-#-#-#-#\n" + "#-#-#-#-# it.po (gnome-shell-extensions) #-#-#-#-#\n" ++"#-#-#-#-# it.po (gnome-shell-extensions) #-#-#-#-#\n" + "Project-Id-Version: gnome-shell-extensions\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/" + "issues\n" +@@ -64,6 +72,19 @@ msgstr "" + "Content-Transfer-Encoding: 8bit\n" + "Plural-Forms: nplurals=2; plural=(n != 1);\n" + "X-Generator: Poedit 2.2.4\n" ++"#-#-#-#-# it.po #-#-#-#-#\n" ++"Project-Id-Version: \n" ++"Report-Msgid-Bugs-To: kowalski.7cc@gmail.com\n" ++"POT-Creation-Date: 2020-05-15 22:08+0200\n" ++"PO-Revision-Date: 2020-05-15 23:12+0200\n" ++"Last-Translator: l3nn4rt \n" ++"Language-Team: \n" ++"Language: it\n" ++"MIME-Version: 1.0\n" ++"Content-Type: text/plain; charset=UTF-8\n" ++"Content-Transfer-Encoding: 8bit\n" ++"X-Generator: Gtranslator 3.36.0\n" ++"Plural-Forms: nplurals=2; plural=(n != 1)\n" + + #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3 + msgid "GNOME Classic" +@@ -306,19 +327,24 @@ msgstr "Spazio di lavoro %d" + msgid "Add Workspace" + msgstr "Aggiungi spazio di lavoro" + +-#: prefs.js:140 ++#: prefs.js:140 prefs.js:732 ++#, fuzzy + msgid "Primary monitor" +-msgstr "Monitor primario" ++msgstr "" ++"#-#-#-#-# it.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Monitor primario\n" ++"#-#-#-#-# it.po #-#-#-#-#\n" ++"Schermo principale" + + #: prefs.js:149 prefs.js:156 + msgid "Secondary monitor " + msgstr "Monitor secondario " + +-#: prefs.js:181 Settings.ui.h:27 ++#: prefs.js:181 Settings.ui.h:27 Settings.ui.h:153 + msgid "Right" + msgstr "Destra" + +-#: prefs.js:182 Settings.ui.h:24 ++#: prefs.js:182 Settings.ui.h:24 Settings.ui.h:152 + msgid "Left" + msgstr "Sinistra" + +@@ -326,17 +352,30 @@ msgstr "Sinistra" + msgid "Intelligent autohide customization" + msgstr "Personalizzazione nascondimento automatico intelligente" + +-#: prefs.js:239 prefs.js:424 prefs.js:481 ++#: prefs.js:239 prefs.js:424 prefs.js:481 prefs.js:376 prefs.js:433 ++#: prefs.js:576 prefs.js:894 prefs.js:1019 prefs.js:1146 prefs.js:1405 ++#: prefs.js:1500 prefs.js:1565 prefs.js:1608 prefs.js:1705 prefs.js:1739 ++#: prefs.js:1781 ++#, fuzzy + msgid "Reset to defaults" +-msgstr "Ripristina a predefinito" ++msgstr "" ++"#-#-#-#-# it.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Ripristina a predefinito\n" ++"#-#-#-#-# it.po #-#-#-#-#\n" ++"Ripristina predefiniti" + + #: prefs.js:417 + msgid "Show dock and application numbers" + msgstr "Mostra applicazioni in esecuzione" + +-#: prefs.js:474 ++#: prefs.js:474 prefs.js:1493 ++#, fuzzy + msgid "Customize middle-click behavior" +-msgstr "Personalizza comportamento clic centrale" ++msgstr "" ++"#-#-#-#-# it.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Personalizza comportamento clic centrale\n" ++"#-#-#-#-# it.po #-#-#-#-#\n" ++"Personalizza azioni clic centrale" + + #: prefs.js:557 + msgid "Customize running indicators" +@@ -357,33 +396,53 @@ msgstr "Tutte le finestre" + msgid "Dash to Dock %s" + msgstr "%s di «Dash to Dock»" + +-#: Settings.ui.h:1 ++#: Settings.ui.h:1 Settings.ui.h:2 ++#, fuzzy + msgid "" + "When set to minimize, double clicking minimizes all the windows of the " + "application." + msgstr "" ++"#-#-#-#-# it.po (gnome-shell-extensions) #-#-#-#-#\n" + "Quando impostato su minimizza, un doppio clic minimizza tutte le finestre " +-"dell'applicazione" ++"dell'applicazione\n" ++"#-#-#-#-# it.po #-#-#-#-#\n" ++"Quando impostato su minimizza, il doppio clic minimizza tutte le finestre " ++"dell'app." + +-#: Settings.ui.h:2 ++#: Settings.ui.h:2 Settings.ui.h:3 ++#, fuzzy + msgid "Shift+Click action" +-msgstr "Azione Maiusc+Clic" ++msgstr "" ++"#-#-#-#-# it.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Azione Maiusc+Clic\n" ++"#-#-#-#-# it.po #-#-#-#-#\n" ++"Azione Shift+Clic" + + #: Settings.ui.h:3 + msgid "Raise window" + msgstr "Solleva finestra" + +-#: Settings.ui.h:4 ++#: Settings.ui.h:4 Settings.ui.h:5 + msgid "Minimize window" + msgstr "Minimizza finestra" + +-#: Settings.ui.h:5 ++#: Settings.ui.h:5 Settings.ui.h:6 ++#, fuzzy + msgid "Launch new instance" +-msgstr "Lancia nuova istanza" ++msgstr "" ++"#-#-#-#-# it.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Lancia nuova istanza\n" ++"#-#-#-#-# it.po #-#-#-#-#\n" ++"Apri una nuova istanza" + +-#: Settings.ui.h:6 ++#: Settings.ui.h:6 Settings.ui.h:7 ++#, fuzzy + msgid "Cycle through windows" +-msgstr "Passa attraverso le finestre" ++msgstr "" ++"#-#-#-#-# it.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Passa attraverso le finestre\n" ++"#-#-#-#-# it.po #-#-#-#-#\n" ++"Cicla le finestre" + + #: Settings.ui.h:7 + msgid "Minimize or overview" +@@ -397,25 +456,45 @@ msgstr "Mostra anteprime finestra" + msgid "Minimize or show previews" + msgstr "Minimizza o mostra anteprime" + +-#: Settings.ui.h:10 ++#: Settings.ui.h:10 appIcons.js:1449 appIcons.js:1509 appIcons.js:1511 ++#, fuzzy + msgid "Quit" +-msgstr "Chiudi" ++msgstr "" ++"#-#-#-#-# it.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Chiudi\n" ++"#-#-#-#-# it.po #-#-#-#-#\n" ++"Esci" + + #: Settings.ui.h:11 ++#, fuzzy + msgid "Behavior for Middle-Click." +-msgstr "Comportamento del clic-centrale" ++msgstr "" ++"#-#-#-#-# it.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Comportamento del clic-centrale\n" ++"#-#-#-#-# it.po #-#-#-#-#\n" ++"Comportamento per clic-centrale." + + #: Settings.ui.h:12 + msgid "Middle-Click action" + msgstr "Azione clic-centrale" + + #: Settings.ui.h:13 ++#, fuzzy + msgid "Behavior for Shift+Middle-Click." +-msgstr "Comportamento per Maiusc+Clic-centrale" ++msgstr "" ++"#-#-#-#-# it.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Comportamento per Maiusc+Clic-centrale\n" ++"#-#-#-#-# it.po #-#-#-#-#\n" ++"Comportamento per Shift+Clic-centrale." + + #: Settings.ui.h:14 ++#, fuzzy + msgid "Shift+Middle-Click action" +-msgstr "Azione Maiusc+Clic-centrale" ++msgstr "" ++"#-#-#-#-# it.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Azione Maiusc+Clic-centrale\n" ++"#-#-#-#-# it.po #-#-#-#-#\n" ++"Azione Shift+Clic-centrale" + + #: Settings.ui.h:15 + msgid "Enable Unity7 like glossy backlit items" +@@ -453,11 +532,11 @@ msgstr "Mostra su tutti gli schermi" + msgid "Position on screen" + msgstr "Posizione sullo schermo" + +-#: Settings.ui.h:25 ++#: Settings.ui.h:25 Settings.ui.h:94 + msgid "Bottom" + msgstr "Basso" + +-#: Settings.ui.h:26 ++#: Settings.ui.h:26 Settings.ui.h:95 + msgid "Top" + msgstr "Alto" + +@@ -493,13 +572,18 @@ msgstr "Dimensione icona fissa: scorrere per rivelare le altre icone" + msgid "Position and size" + msgstr "Posizione e dimensione" + +-#: Settings.ui.h:35 ++#: Settings.ui.h:35 Settings.ui.h:183 + msgid "Show favorite applications" + msgstr "Mostra applicazioni preferite" + +-#: Settings.ui.h:36 ++#: Settings.ui.h:36 Settings.ui.h:184 ++#, fuzzy + msgid "Show running applications" +-msgstr "Mostra applicazioni in esecuzione" ++msgstr "" ++"#-#-#-#-# it.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Mostra applicazioni in esecuzione\n" ++"#-#-#-#-# it.po #-#-#-#-#\n" ++"Mostra le applicazioni in esecuzione" + + #: Settings.ui.h:37 + msgid "Isolate workspaces." +@@ -529,34 +613,54 @@ msgstr "Mostra icona Applicazioni" + msgid "Move the applications button at the beginning of the dock." + msgstr "Sposta il pulsante delle applicazioni all'inizio della dock" + +-#: Settings.ui.h:43 ++#: Settings.ui.h:43 Settings.ui.h:136 ++#, fuzzy + msgid "Animate Show Applications." +-msgstr "Anima Mostra applicazioni" ++msgstr "" ++"#-#-#-#-# it.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Anima Mostra applicazioni\n" ++"#-#-#-#-# it.po #-#-#-#-#\n" ++"Animazione Mostra Applicazioni." + + #: Settings.ui.h:44 + msgid "Launchers" + msgstr "Icone applicazioni" + +-#: Settings.ui.h:45 ++#: Settings.ui.h:45 Settings.ui.h:206 ++#, fuzzy + msgid "" + "Enable Super+(0-9) as shortcuts to activate apps. It can also be used " + "together with Shift and Ctrl." + msgstr "" ++"#-#-#-#-# it.po (gnome-shell-extensions) #-#-#-#-#\n" + "Attiva Super+(0-9) come scorciatoie per attivare le applicazioni, funziona " +-"anche con Maiusc e Ctrl." ++"anche con Maiusc e Ctrl.\n" ++"#-#-#-#-# it.po #-#-#-#-#\n" ++"Abilita Super+(0-9) come scorciatoia per attivare le app. Può essere usato " ++"assieme a Shift e Ctrl." + + #: Settings.ui.h:46 + msgid "Use keyboard shortcuts to activate apps" + msgstr "Usa scorciatoie da tastiera per attivare le applicazioni" + +-#: Settings.ui.h:47 ++#: Settings.ui.h:47 Settings.ui.h:194 ++#, fuzzy + msgid "Behaviour when clicking on the icon of a running application." + msgstr "" +-"Comportamento quando si fa clic sull'icona di una applicazione in esecuzione." ++"#-#-#-#-# it.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Comportamento quando si fa clic sull'icona di una applicazione in " ++"esecuzione.\n" ++"#-#-#-#-# it.po #-#-#-#-#\n" ++"Comportamento al clic sull'icona di un'app in esecuzione." + +-#: Settings.ui.h:48 ++#: Settings.ui.h:48 Settings.ui.h:195 ++#, fuzzy + msgid "Click action" +-msgstr "Azione clic" ++msgstr "" ++"#-#-#-#-# it.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Azione clic\n" ++"#-#-#-#-# it.po #-#-#-#-#\n" ++"Azione al clic" + + #: Settings.ui.h:50 + msgid "Behaviour when scrolling on the icon of an application." +@@ -567,15 +671,20 @@ msgstr "" + msgid "Scroll action" + msgstr "Azione scorrimento" + +-#: Settings.ui.h:52 ++#: Settings.ui.h:52 Settings.ui.h:201 ++#, fuzzy + msgid "Do nothing" +-msgstr "Non fare nulla" ++msgstr "" ++"#-#-#-#-# it.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Non fare nulla\n" ++"#-#-#-#-# it.po #-#-#-#-#\n" ++"Nessuna azione" + +-#: Settings.ui.h:53 ++#: Settings.ui.h:53 Settings.ui.h:202 + msgid "Switch workspace" + msgstr "Cambia spazio di lavoro" + +-#: Settings.ui.h:54 ++#: Settings.ui.h:54 Settings.ui.h:193 + msgid "Behavior" + msgstr "Comportamento" + +@@ -608,31 +717,36 @@ msgstr "Personalizza indicatori conteggio finestre" + msgid "Default" + msgstr "Predefinito" + +-#: Settings.ui.h:61 ++#: Settings.ui.h:61 Settings.ui.h:163 + msgid "Dots" + msgstr "Puntini" + +-#: Settings.ui.h:62 ++#: Settings.ui.h:62 Settings.ui.h:164 + msgid "Squares" + msgstr "Quadrati" + +-#: Settings.ui.h:63 ++#: Settings.ui.h:63 Settings.ui.h:165 + msgid "Dashes" + msgstr "Trattini" + +-#: Settings.ui.h:64 ++#: Settings.ui.h:64 Settings.ui.h:166 + msgid "Segmented" + msgstr "Segmenti" + +-#: Settings.ui.h:65 ++#: Settings.ui.h:65 Settings.ui.h:167 ++#, fuzzy + msgid "Solid" +-msgstr "Solido" ++msgstr "" ++"#-#-#-#-# it.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Solido\n" ++"#-#-#-#-# it.po #-#-#-#-#\n" ++"Solidi" + +-#: Settings.ui.h:66 ++#: Settings.ui.h:66 Settings.ui.h:168 + msgid "Ciliora" + msgstr "Ciliora" + +-#: Settings.ui.h:67 ++#: Settings.ui.h:67 Settings.ui.h:169 + msgid "Metro" + msgstr "Metro" + +@@ -648,7 +762,7 @@ msgstr "Personalizza il colore della dash" + msgid "Tune the dash background opacity." + msgstr "Personalizza l'opacità dello sfondo della dash" + +-#: Settings.ui.h:72 ++#: Settings.ui.h:72 Settings.ui.h:89 + msgid "Fixed" + msgstr "Fisso" + +@@ -672,7 +786,7 @@ msgstr "Forza angoli squadrati\n" + msgid "Appearance" + msgstr "Aspetto" + +-#: Settings.ui.h:79 ++#: Settings.ui.h:79 Settings.ui.h:228 + msgid "version: " + msgstr "versione: " + +@@ -688,20 +802,32 @@ msgstr "Creata da" + msgid "Webpage" + msgstr "Sito web" + +-#: Settings.ui.h:83 ++#: Settings.ui.h:83 Settings.ui.h:239 ++#, fuzzy + msgid "" + "This program comes with ABSOLUTELY NO WARRANTY.\n" +-"See the GNU General Public License, version 2 or later for details." ++"See the GNU General Public License, version 2 or later for details." + msgstr "" ++"#-#-#-#-# it.po (gnome-shell-extensions) #-#-#-#-#\n" + "Questo programma viene fornito senza ALCUNA GARANZIA.\n" + "Per maggiori informazioni, consultare la GNU General Public License, versione 2 " +-"o successiva." +- +-#: Settings.ui.h:85 ++"o successiva.\n" ++"#-#-#-#-# it.po #-#-#-#-#\n" ++"Questo programma è fornito SENZA NESSUNA GARANZIA.\n" ++"Vedere GNU General Public License, versione 2 o successive per dettagli." ++"" ++ ++#: Settings.ui.h:85 Settings.ui.h:241 ++#, fuzzy + msgid "About" +-msgstr "Informazioni" ++msgstr "" ++"#-#-#-#-# it.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Informazioni\n" ++"#-#-#-#-# it.po #-#-#-#-#\n" ++"Informazioni su" + + #: Settings.ui.h:86 + msgid "Customize minimum and maximum opacity values" +@@ -715,9 +841,14 @@ msgstr "Opacità minima" + msgid "Maximum opacity" + msgstr "Opacità massima" + +-#: Settings.ui.h:89 ++#: Settings.ui.h:89 Settings.ui.h:119 ++#, fuzzy + msgid "Number overlay" +-msgstr "Indicatore numerico in sovraimpressione" ++msgstr "" ++"#-#-#-#-# it.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Indicatore numerico in sovraimpressione\n" ++"#-#-#-#-# it.po #-#-#-#-#\n" ++"Sovrimpressione numero" + + #: Settings.ui.h:90 + msgid "" +@@ -743,9 +874,14 @@ msgstr "" + msgid "Shortcut for the options above" + msgstr "Scorciatoia" + +-#: Settings.ui.h:94 ++#: Settings.ui.h:94 Settings.ui.h:56 ++#, fuzzy + msgid "Syntax: , , , " +-msgstr "Formato: , , , " ++msgstr "" ++"#-#-#-#-# it.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Formato: , , , \n" ++"#-#-#-#-# it.po #-#-#-#-#\n" ++"Sintassi: , , , " + + #: Settings.ui.h:95 + msgid "Hide timeout (s)" +@@ -776,7 +912,7 @@ msgstr "" + msgid "Dodge windows" + msgstr "Schive finestre" + +-#: Settings.ui.h:102 ++#: Settings.ui.h:102 Settings.ui.h:46 + msgid "All windows" + msgstr "Tutte le finestre" + +@@ -967,3 +1103,1222 @@ msgstr "Mostra il cestino" + #: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22 + msgid "Show the trash icon in the desktop." + msgstr "Mostra il cestino sulla scrivania." ++ ++#: prefs.js:206 ++msgid "Show Desktop button height (px)" ++msgstr "Altezza tasto Mostra Desktop (px)" ++ ++#: prefs.js:206 ++msgid "Show Desktop button width (px)" ++msgstr "Larghezza tasto Mostra Desktop (px)" ++ ++#: prefs.js:218 ++msgid "Unavailable when gnome-shell top panel is present" ++msgstr "Non disponibile quando è presente il pannello superiore di gnome-shell" ++ ++#: prefs.js:293 ++msgid "Show Applications button" ++msgstr "Pulsante Mostra Applicazioni" ++ ++#: prefs.js:294 ++msgid "Activities button" ++msgstr "Pulsante Attività" ++ ++#: prefs.js:295 ++msgid "Taskbar" ++msgstr "Taskbar" ++ ++#: prefs.js:296 ++msgid "Date menu" ++msgstr "Data e ora" ++ ++#: prefs.js:297 ++msgid "System menu" ++msgstr "Menu di sistema" ++ ++#: prefs.js:298 ++msgid "Left box" ++msgstr "Contenitore di sinistra" ++ ++#: prefs.js:299 ++msgid "Center box" ++msgstr "Contenitore centrale" ++ ++#: prefs.js:300 ++msgid "Right box" ++msgstr "Contenitore di destra" ++ ++#: prefs.js:301 ++msgid "Desktop button" ++msgstr "Pulsante Desktop" ++ ++#: prefs.js:307 ++msgid "Move up" ++msgstr "Muovi verso l'alto" ++ ++#: prefs.js:309 ++msgid "Move down" ++msgstr "Muovi verso il basso" ++ ++#: prefs.js:311 ++msgid "Visible" ++msgstr "Visibile" ++ ++#: prefs.js:312 ++msgid "Select element position" ++msgstr "Seleziona posizione dell'elemento" ++ ++#: prefs.js:323 ++msgid "Stacked to top" ++msgstr "Allinea in alto" ++ ++#: prefs.js:323 ++msgid "Stacked to left" ++msgstr "Allinea a sinistra" ++ ++#: prefs.js:324 ++msgid "Stacked to bottom" ++msgstr "Allinea in basso" ++ ++#: prefs.js:324 ++msgid "Stacked to right" ++msgstr "Allinea a destra" ++ ++#: prefs.js:325 ++msgid "Centered" ++msgstr "Allinea al centro dello spazio disponibile" ++ ++#: prefs.js:326 ++msgid "Monitor Center" ++msgstr "Allinea al centro dello schermo" ++ ++#: prefs.js:345 ++msgid "More options" ++msgstr "Altre opzioni" ++ ++#: prefs.js:369 ++msgid "Show Applications options" ++msgstr "Opzioni Mostra Applicazioni" ++ ++#: prefs.js:426 ++msgid "Show Desktop options" ++msgstr "Opzioni Mostra Desktop" ++ ++#: prefs.js:569 ++msgid "Running Indicator Options" ++msgstr "Posizione indicatori di esecuzione" ++ ++#: prefs.js:732 ++msgid "Monitor " ++msgstr "Monitor " ++ ++#: prefs.js:887 ++msgid "Dynamic opacity options" ++msgstr "Opzioni opacità dinamica" ++ ++#: prefs.js:1012 ++msgid "Intellihide options" ++msgstr "Opzioni pannello Intellihide" ++ ++#: prefs.js:1139 ++msgid "Window preview options" ++msgstr "Opzioni anteprima finestre" ++ ++#: prefs.js:1398 ++msgid "Ungrouped application options" ++msgstr "Opzioni app non raggruppate" ++ ++#: prefs.js:1558 ++msgid "Customize panel scroll behavior" ++msgstr "Personalizza il comportamento di scorrimento sul pannello" ++ ++#: prefs.js:1601 ++msgid "Customize icon scroll behavior" ++msgstr "Personalizza il comportamento di scorrimento sull'icona" ++ ++#: prefs.js:1698 ++msgid "Advanced hotkeys options" ++msgstr "Opzioni avanzate scorciatoie" ++ ++#: prefs.js:1732 ++msgid "Secondary Menu Options" ++msgstr "Opzioni menu secondario" ++ ++#: prefs.js:1774 Settings.ui.h:226 ++msgid "Advanced Options" ++msgstr "Impostazioni avanzate" ++ ++#: prefs.js:1877 ++msgid "Export settings" ++msgstr "Esporta impostazioni" ++ ++#: prefs.js:1894 ++msgid "Import settings" ++msgstr "Importa impostazioni" ++ ++#: appIcons.js:1431 ++msgid "Show Details" ++msgstr "Mostra dettagli" ++ ++#: appIcons.js:1449 ++msgid "New Window" ++msgstr "Nuova finestra" ++ ++#: appIcons.js:1511 ++msgid "Windows" ++msgstr "Finestre" ++ ++#: appIcons.js:1860 ++msgid "Unlock taskbar" ++msgstr "Sblocca taskbar" ++ ++#: appIcons.js:1860 ++msgid "Lock taskbar" ++msgstr "Blocca taskbar" ++ ++#: appIcons.js:1865 ++msgid "Dash to Panel Settings" ++msgstr "Impostazioni Dash to Panel" ++ ++#: appIcons.js:1878 ++msgid "Restore Windows" ++msgstr "Ripristina finestre" ++ ++#: appIcons.js:1878 ++msgid "Show Desktop" ++msgstr "Mostra Desktop" ++ ++#: update.js:48 ++msgid "Unavailable when installed from extensions.gnome.org" ++msgstr "Non disponibile quando installato da extensions.gnome.org" ++ ++#: update.js:62 ++#, javascript-format ++msgid "Version %s (%s) is available" ++msgstr "Disponibile la versione %s (%s)" ++ ++#: update.js:63 ++msgid "Details" ++msgstr "Dettagli" ++ ++#: update.js:64 ++msgid "Update" ++msgstr "Aggiorna" ++ ++#: update.js:67 ++msgid "Already up to date" ++msgstr "Già aggiornato" ++ ++#: update.js:75 ++msgid "Error: " ++msgstr "Errore: " ++ ++#: update.js:168 ++msgid "Update successful, please log out/in" ++msgstr "Aggiornamento eseguito correttamente, disconnettiti accedi nuovamente" ++ ++#: update.js:169 ++msgid "Log out" ++msgstr "Disconnettiti" ++ ++#: update.js:173 ++msgid "Update successful, please restart GNOME Shell" ++msgstr "Aggiornamento riuscito, riavvia GNOME Shell" ++ ++#: update.js:174 ++msgid "Restart GNOME Shell" ++msgstr "Riavvia GNOME Shell" ++ ++#: update.js:174 ++msgid "Restarting GNOME Shell..." ++msgstr "Riavvio della shell GNOME ..." ++ ++#: Settings.ui.h:1 ++msgid "Nothing yet!" ++msgstr "Ancora niente!" ++ ++#: Settings.ui.h:4 ++msgid "Raise windows" ++msgstr "Solleva e visualizza finestra" ++ ++#: Settings.ui.h:8 ++msgid "Cycle windows + minimize" ++msgstr "Cicla finestre + minimizza" ++ ++#: Settings.ui.h:9 ++msgid "Toggle single / Preview multiple" ++msgstr "Commuta finestra singola e mostra anteprime" ++ ++#: Settings.ui.h:15 ++msgid "Integrate AppMenu items" ++msgstr "Integra elementi AppMenu" ++ ++#: Settings.ui.h:16 ++msgid "Show Details menu item" ++msgstr "Visualizza Mostra Dettagli" ++ ++#: Settings.ui.h:17 ++msgid "Highlight focused application" ++msgstr "Evidenzia applicazione con focus" ++ ++#: Settings.ui.h:18 ++msgid "Icon dominant color" ++msgstr "Colore dominante dell'icona" ++ ++#: Settings.ui.h:19 ++msgid "Custom color" ++msgstr "Colore personalizzato" ++ ++#: Settings.ui.h:20 ++msgid "Highlight opacity" ++msgstr "Opacità evidenziazione" ++ ++#: Settings.ui.h:21 ++msgid "Indicator size (px)" ++msgstr "Dimensione indicatore (px)" ++ ++#: Settings.ui.h:22 ++msgid "Indicator color - Icon Dominant" ++msgstr "Colore indicatore - Colore dominante dell'icona" ++ ++#: Settings.ui.h:23 ++msgid "Indicator color - Override Theme" ++msgstr "Colore indicatore - Ignora il tema" ++ ++#: Settings.ui.h:24 ++msgid "1 window open (or ungrouped)" ++msgstr "1 finestra aperta (o non raggruppata)" ++ ++#: Settings.ui.h:25 ++msgid "Apply to all" ++msgstr "Applica a tutte" ++ ++#: Settings.ui.h:26 ++msgid "2 windows open" ++msgstr "2 finestre aperte" ++ ++#: Settings.ui.h:27 ++msgid "3 windows open" ++msgstr "3 finestre aperte" ++ ++#: Settings.ui.h:28 ++msgid "4+ windows open" ++msgstr "4+ finestre aperte" ++ ++#: Settings.ui.h:29 ++msgid "Use different for unfocused" ++msgstr "Personalizza per app senza focus" ++ ++#: Settings.ui.h:30 ++msgid "Font size (px) of the application titles (default is 14)" ++msgstr "Dimensione font (px) dei titoli delle app (predef. 14)" ++ ++#: Settings.ui.h:31 ++msgid "Font weight of application titles" ++msgstr "Stile font dei titoli delle applicazioni" ++ ++#: Settings.ui.h:32 ++msgid "inherit from theme" ++msgstr "eredita dal tema" ++ ++#: Settings.ui.h:33 ++msgid "normal" ++msgstr "normale" ++ ++#: Settings.ui.h:34 ++msgid "lighter" ++msgstr "leggero" ++ ++#: Settings.ui.h:35 ++msgid "bold" ++msgstr "grassetto" ++ ++#: Settings.ui.h:36 ++msgid "bolder" ++msgstr "grosso" ++ ++#: Settings.ui.h:37 ++msgid "Font color of the application titles" ++msgstr "Colore font dei titoli delle applicazioni" ++ ++#: Settings.ui.h:38 ++msgid "Font color of the minimized application titles" ++msgstr "Colore font titoli delle applicazioni minimizzate" ++ ++#: Settings.ui.h:39 ++msgid "Maximum width (px) of the application titles (default is 160)" ++msgstr "Larghezza massima (px) dei titoli delle app (predef. 160)" ++ ++#: Settings.ui.h:40 ++msgid "Use a fixed width for the application titles" ++msgstr "Usa larghezza fissa per i titoli delle app" ++ ++#: Settings.ui.h:41 ++msgid "" ++"The application titles all have the same width, even if their texts are " ++"shorter than the maximum width. The maximum width value is used as the fixed " ++"width." ++msgstr "" ++"I titoli delle applicazioni hanno la stessa larghezza anche se i testi sono " ++"più corti della larghezza massima. Viene usato il valore di larghezza " ++"massima." ++ ++#: Settings.ui.h:42 ++msgid "Display running indicators on unfocused applications" ++msgstr "Mostra indicatori di esecuzione nelle app senza focus" ++ ++#: Settings.ui.h:43 ++msgid "Use the favorite icons as application launchers" ++msgstr "Usa le icone dei Preferiti come lanciatori delle app" ++ ++#: Settings.ui.h:44 ++msgid "Only hide the panel when it is obstructed by windows " ++msgstr "Nascondi pannello solo quando è ostruito dalle finestre " ++ ++#: Settings.ui.h:45 ++msgid "The panel hides from" ++msgstr "Il pannello si nasconde con" ++ ++#: Settings.ui.h:47 ++msgid "Focused windows" ++msgstr "Finestre con focus" ++ ++#: Settings.ui.h:48 ++msgid "Maximized windows" ++msgstr "Finestre massimizzate" ++ ++#: Settings.ui.h:49 ++msgid "Require pressure at the edge of the screen to reveal the panel" ++msgstr "Richiedi pressione a bordo schermo per mostrare il pannello" ++ ++#: Settings.ui.h:50 ++msgid "Required pressure threshold (px)" ++msgstr "Soglia di pressione richiesta (px)" ++ ++#: Settings.ui.h:51 ++msgid "Required pressure timeout (ms)" ++msgstr "Timeout pressione richiesta (ms)" ++ ++#: Settings.ui.h:52 ++msgid "Allow the panel to be revealed while in fullscreen mode" ++msgstr "Permetti al pannello di apparire quando in modalità fullscreen" ++ ++#: Settings.ui.h:53 ++msgid "Only hide secondary panels (requires multi-monitors option)" ++msgstr "Nascondi solo i pannelli secondari (richiede l'opzione multi-monitor)" ++ ++#: Settings.ui.h:54 ++msgid "e.g. i" ++msgstr "es. i" ++ ++#: Settings.ui.h:55 ++msgid "Keyboard shortcut to reveal and hold the panel" ++msgstr "Scorciatoie per mostrare e nascondere il pannello" ++ ++#: Settings.ui.h:57 ++msgid "Hide and reveal animation duration (ms)" ++msgstr "Durata animazione mostra/nascondi (ms)" ++ ++#: Settings.ui.h:58 ++msgid "Delay before hiding the panel (ms)" ++msgstr "Ritardo prima di nascondere il pannello (ms)" ++ ++#: Settings.ui.h:59 ++msgid "Delay before enabling intellihide on start (ms)" ++msgstr "Ritardo iniziale (ms) prima di abilitare intellihide" ++ ++#: Settings.ui.h:60 ++msgid "Time (ms) before showing (400 is default)" ++msgstr "" ++"Tempo (ms) prima della visualizzazione (400 è l'impostazione predefinita)" ++ ++#: Settings.ui.h:61 ++msgid "Animation time (ms)" ++msgstr "Durata animazione (ms)" ++ ++#: Settings.ui.h:62 ++msgid "Time (ms) before hiding (100 is default)" ++msgstr "Tempo (ms) prima di nascondersi (100 è l'impostazione predefinita)" ++ ++#: Settings.ui.h:63 ++msgid "Immediate on application icon click" ++msgstr "Immediatamente al clic sull'icona dell'applicazione" ++ ++#: Settings.ui.h:64 ++msgid "Middle click on the preview to close the window" ++msgstr "Clic centrale sull'anteprima per chiudere la finestra" ++ ++#: Settings.ui.h:65 ++msgid "Window previews preferred size (px)" ++msgstr "Dimensioni preferite delle anteprime delle finestre (px)" ++ ++#: Settings.ui.h:66 ++msgid "Window previews aspect ratio Y (height)" ++msgstr "Proporzioni anteprime delle finestre Y (altezza)" ++ ++#: Settings.ui.h:67 ++msgid "Window previews padding (px)" ++msgstr "Spaziatura anteprime finestre (px)" ++ ++#: Settings.ui.h:68 ++msgid "1" ++msgstr "1" ++ ++#: Settings.ui.h:69 ++msgid "2" ++msgstr "2" ++ ++#: Settings.ui.h:70 ++msgid "3" ++msgstr "3" ++ ++#: Settings.ui.h:71 ++msgid "4" ++msgstr "4" ++ ++#: Settings.ui.h:72 ++msgid "5" ++msgstr "5" ++ ++#: Settings.ui.h:73 ++msgid "6" ++msgstr "6" ++ ++#: Settings.ui.h:74 ++msgid "7" ++msgstr "7" ++ ++#: Settings.ui.h:75 ++msgid "8" ++msgstr "8" ++ ++#: Settings.ui.h:76 ++msgid "9" ++msgstr "9" ++ ++#: Settings.ui.h:77 ++msgid "10" ++msgstr "10" ++ ++#: Settings.ui.h:78 ++msgid "11" ++msgstr "11" ++ ++#: Settings.ui.h:79 ++msgid "12" ++msgstr "12" ++ ++#: Settings.ui.h:80 ++msgid "13" ++msgstr "13" ++ ++#: Settings.ui.h:81 ++msgid "14" ++msgstr "14" ++ ++#: Settings.ui.h:82 ++msgid "15" ++msgstr "15" ++ ++#: Settings.ui.h:83 ++msgid "16" ++msgstr "16" ++ ++#: Settings.ui.h:84 ++msgid "17" ++msgstr "17" ++ ++#: Settings.ui.h:85 ++msgid "18" ++msgstr "18" ++ ++#: Settings.ui.h:86 ++msgid "19" ++msgstr "19" ++ ++#: Settings.ui.h:87 ++msgid "20" ++msgstr "20" ++ ++#: Settings.ui.h:88 ++msgid "21" ++msgstr "21" ++ ++#: Settings.ui.h:90 ++msgid "Window previews aspect ratio X (width)" ++msgstr "Proporzioni anteprime delle finestre X (larghezza)" ++ ++#: Settings.ui.h:91 ++msgid "Use custom opacity for the previews background" ++msgstr "Usa l'opacità personalizzata per lo sfondo delle anteprime" ++ ++#: Settings.ui.h:92 ++msgid "If disabled, the previews background have the same opacity as the panel" ++msgstr "" ++"Se disabilitato, lo sfondo delle anteprime ha la stessa opacità del pannello" ++ ++#: Settings.ui.h:93 ++msgid "Close button and header position" ++msgstr "Pulsante di chiusura e posizione dell'intestazione" ++ ++#: Settings.ui.h:96 ++msgid "Display window preview headers" ++msgstr "Visualizza le intestazioni di anteprima della finestra" ++ ++#: Settings.ui.h:97 ++msgid "Font size (px) of the preview titles" ++msgstr "Dimensione carattere (px) dei titoli di anteprima" ++ ++#: Settings.ui.h:98 ++msgid "Font weight of the preview titles" ++msgstr "Dimensione del carattere dei titoli dell'anteprima" ++ ++#: Settings.ui.h:99 ++msgid "Font color of the preview titles" ++msgstr "Colore del carattere dei titoli dell'anteprima" ++ ++#: Settings.ui.h:100 ++msgid "Enable window peeking" ++msgstr "Abilita separazione finestre" ++ ++#: Settings.ui.h:101 ++msgid "" ++"When hovering over a window preview for some time, the window gets " ++"distinguished." ++msgstr "Restando sulla finestra per qualche istante, la finestra si separa." ++ ++#: Settings.ui.h:102 ++msgid "Enter window peeking mode timeout (ms)" ++msgstr "Timeout ingresso modalità finestra separata (ms)" ++ ++#: Settings.ui.h:103 ++msgid "50" ++msgstr "50" ++ ++#: Settings.ui.h:104 ++msgid "" ++"Time of inactivity while hovering over a window preview needed to enter the " ++"window peeking mode." ++msgstr "" ++"Tempo di inattività sopra una finestra richiesto per entrare in modalità " ++"separata." ++ ++#: Settings.ui.h:105 ++msgid "Window peeking mode opacity" ++msgstr "Opacità modalità finestra separata" ++ ++#: Settings.ui.h:106 ++msgid "0" ++msgstr "0" ++ ++#: Settings.ui.h:107 ++msgid "" ++"All windows except for the peeked one have their opacity set to the same " ++"value." ++msgstr "" ++"Tutte le finestre, tranne quella visualizzata, hanno la stessa opacità." ++ ++#: Settings.ui.h:108 ++msgid "Delay between mouse scroll events (ms)" ++msgstr "Ritardo tra gli eventi di scorrimento del mouse (ms)" ++ ++#: Settings.ui.h:109 ++msgid "Use this value to limit the number of captured mouse scroll events." ++msgstr "" ++"Utilizzare questo valore per limitare il numero di eventi di scorrimento del " ++"mouse acquisiti." ++ ++#: Settings.ui.h:110 ++msgid "Show popup when changing workspace" ++msgstr "Mostra popup cambiando spazio di lavoro" ++ ++#: Settings.ui.h:111 ++msgid "This affects workspace popup when scrolling on the panel only." ++msgstr "" ++"Questo influisce sul popup spazi di lavoro solo quando si scorre sul pannello" ++ ++#: Settings.ui.h:112 ++msgid "Super" ++msgstr "Super" ++ ++#: Settings.ui.h:113 ++msgid "Super + Alt" ++msgstr "Super + Alt" ++ ++#: Settings.ui.h:114 ++msgid "Hotkeys prefix" ++msgstr "Prefisso scorciatoie" ++ ++#: Settings.ui.h:115 ++msgid "Hotkeys will either be Super+Number or Super+Alt+Num" ++msgstr "Le scorciatoie saranno Super+Numero o Super+Alt+Numero" ++ ++#: Settings.ui.h:116 ++msgid "Never" ++msgstr "Mai" ++ ++#: Settings.ui.h:117 ++msgid "Show temporarily" ++msgstr "Temporanea" ++ ++#: Settings.ui.h:118 ++msgid "Always visible" ++msgstr "Sempre visibile" ++ ++#: Settings.ui.h:120 ++msgid "" ++"Temporarily show the application numbers over the icons when using the " ++"hotkeys." ++msgstr "" ++"Mostra temporaneamente i numeri delle applicazioni sulle icone quando si " ++"usano le scorciatoie." ++ ++#: Settings.ui.h:121 ++msgid "Hide timeout (ms)" ++msgstr "Timeout visualizzazione (ms)" ++ ++#: Settings.ui.h:122 ++msgid "e.g. q" ++msgstr "es. q" ++ ++#: Settings.ui.h:123 ++msgid "Shortcut to show the overlay for 2 seconds" ++msgstr "Scorciatoia per la sovrapposizione di 2 secondi" ++ ++#: Settings.ui.h:124 ++msgid "Show window previews on hotkey" ++msgstr "Mostra anteprime finestre da hotkey" ++ ++#: Settings.ui.h:125 ++msgid "Show previews when the application have multiple instances" ++msgstr "Mostra anteprime quando l'applicazione ha più istanze" ++ ++#: Settings.ui.h:126 ++msgid "Number row" ++msgstr "Numero riga" ++ ++#: Settings.ui.h:127 ++msgid "Numeric keypad" ++msgstr "Tastierino numerico" ++ ++#: Settings.ui.h:128 ++msgid "Both" ++msgstr "Entrambi" ++ ++#: Settings.ui.h:129 ++msgid "Hotkeys are activated with" ++msgstr "I tasti di scelta rapida sono attivati con" ++ ++#: Settings.ui.h:130 ++msgid "Select which keyboard number keys are used to activate the hotkeys" ++msgstr "" ++"Seleziona la tipologia dei tasti numerici utilizzati per attivare i tasti di " ++"scelta rapida" ++ ++#: Settings.ui.h:131 ++msgid "Current Show Applications icon" ++msgstr "Icona Mostra Applicazioni attuale" ++ ++#: Settings.ui.h:132 ++msgid "Select a Show Applications image icon" ++msgstr "Seleziona icona per Mostra Applicazioni" ++ ++#: Settings.ui.h:133 ++msgid "Custom Show Applications image icon" ++msgstr "Icona Mostra Applicazioni personalizzata" ++ ++#: Settings.ui.h:134 ++msgid "Show Applications icon side padding (px)" ++msgstr "Spaziatura a lato dell'icona Mostra Applicazioni (px)" ++ ++#: Settings.ui.h:135 ++msgid "Override escape key and return to desktop" ++msgstr "" ++"Sostituisci il tasto escape e ritorna al desktop anziché alla panoramica" ++ ++#: Settings.ui.h:137 ++msgid "Reveal the desktop when hovering the Show Desktop button" ++msgstr "" ++"Rivela il desktop quando si passa il cursore sul pulsante Mostra desktop" ++ ++#: Settings.ui.h:138 ++msgid "Delay before revealing the desktop (ms)" ++msgstr "Ritardo prima di rivelare il desktop (ms)" ++ ++#: Settings.ui.h:139 ++msgid "Fade duration (ms)" ++msgstr "Durata dissolvenza (ms)" ++ ++#: Settings.ui.h:140 ++msgid "The panel background opacity is affected by" ++msgstr "L'opacità dello pannello è influenzato da" ++ ++#: Settings.ui.h:141 ++msgid "Change opacity when a window gets closer than (px)" ++msgstr "Cambia l'opacità quando una finestra è più vicina di (px)" ++ ++#: Settings.ui.h:143 ++#, no-c-format ++msgid "Change opacity to (%)" ++msgstr "Imposta opacità al (%)" ++ ++#: Settings.ui.h:144 ++msgid "Opacity change animation duration (ms)" ++msgstr "Durata animazione cambio opacità (ms)" ++ ++#: Settings.ui.h:145 ++msgid "Display the main panel on" ++msgstr "Mostra pannello principale su" ++ ++#: Settings.ui.h:146 ++msgid "Display panels on all monitors" ++msgstr "Mostra pannelli su tutti i monitor" ++ ++#: Settings.ui.h:147 ++msgid "Panel Intellihide" ++msgstr "Pannello Intellihide" ++ ++#: Settings.ui.h:148 ++msgid "Hide and reveal the panel according to preferences" ++msgstr "Mostra e nascondi il pannello secondo le preferenze" ++ ++#: Settings.ui.h:149 ++msgid "Order and positions on monitor" ++msgstr "Ordinamento e posizione sullo schermo" ++ ++#: Settings.ui.h:150 ++msgid "Apply changes to all monitors" ++msgstr "Applica a tutti gli schermi" ++ ++#: Settings.ui.h:151 ++msgid "Panel screen position" ++msgstr "Posizione pannello sullo schermo" ++ ++#: Settings.ui.h:154 ++msgid "Position" ++msgstr "Posizione" ++ ++#: Settings.ui.h:155 ++msgid "" ++"Panel Size\n" ++"(default is 48)" ++msgstr "" ++"Dimensione pannello\n" ++"(predefinito 48)" ++ ++#: Settings.ui.h:157 ++msgid "" ++"App Icon Margin\n" ++"(default is 8)" ++msgstr "" ++"Margine icone app\n" ++"(predefinito 8)" ++ ++#: Settings.ui.h:159 ++msgid "" ++"App Icon Padding\n" ++"(default is 4)" ++msgstr "" ++"Spaziatura icone app\n" ++"(predefinito 4)" ++ ++#: Settings.ui.h:161 ++msgid "Running indicator position" ++msgstr "Posizione indicatore di esecuzione" ++ ++#: Settings.ui.h:162 ++msgid "Running indicator style (Focused app)" ++msgstr "Stile indicatore di esecuzione (app con focus)" ++ ++#: Settings.ui.h:170 ++msgid "Running indicator style (Unfocused apps)" ++msgstr "Stile indicatore di esecuzione (app senza focus)" ++ ++#: Settings.ui.h:171 ++msgid "Override panel theme background color " ++msgstr "Ignora il colore di sfondo del pannello " ++ ++#: Settings.ui.h:172 ++msgid "Override panel theme background opacity" ++msgstr "Ignora l'opacità del pannello" ++ ++#: Settings.ui.h:174 ++#, no-c-format ++msgid "Panel background opacity (%)" ++msgstr "Opacità di sfondo del pannello (%)" ++ ++#: Settings.ui.h:175 ++msgid "Dynamic background opacity" ++msgstr "Opacità di sfondo dinamica" ++ ++#: Settings.ui.h:176 ++msgid "Change opacity when a window gets close to the panel" ++msgstr "Cambia l'opacità quando una finestra è vicina al pannello" ++ ++#: Settings.ui.h:177 ++msgid "Override panel theme gradient " ++msgstr "Ignora gradiente del pannello " ++ ++#: Settings.ui.h:179 ++#, no-c-format ++msgid "Gradient top color and opacity (%)" ++msgstr "Colore superiore del gradiente e opacità (%)" ++ ++#: Settings.ui.h:181 ++#, no-c-format ++msgid "Gradient bottom color and opacity (%)" ++msgstr "Colore inferiore del gradiente e opacità (%)" ++ ++#: Settings.ui.h:182 ++msgid "Style" ++msgstr "Stile" ++ ++#: Settings.ui.h:185 ++msgid "Show favorite applications on secondary panels" ++msgstr "Mostra le applicazioni preferite sui pannelli secondari" ++ ++#: Settings.ui.h:186 ++msgid "Show AppMenu button" ++msgstr "Mostra pulsante AppMenu" ++ ++#: Settings.ui.h:187 ++msgid "Top Bar > Show App Menu must be enabled in Tweak Tool" ++msgstr "In Estensioni deve essere abilitato il Menù dell'applicazione" ++ ++#: Settings.ui.h:188 ++msgid "Show window previews on hover" ++msgstr "Mostra anteprime finestre al passaggio" ++ ++#: Settings.ui.h:189 ++msgid "Show tooltip on hover" ++msgstr "Mostra suggerimento al passaggio" ++ ++#: Settings.ui.h:190 ++msgid "Isolate Workspaces" ++msgstr "Isola spazi di lavoro" ++ ++#: Settings.ui.h:191 ++msgid "Isolate monitors" ++msgstr "Isola monitor" ++ ++#: Settings.ui.h:192 ++msgid "Ungroup applications" ++msgstr "Non raggruppare applicazioni" ++ ++#: Settings.ui.h:196 ++msgid "Toggle windows" ++msgstr "Commuta le finestre" ++ ++#: Settings.ui.h:197 ++msgid "Scroll panel action" ++msgstr "Azione scorrimento pannello" ++ ++#: Settings.ui.h:198 ++msgid "Behavior when mouse scrolling over the panel." ++msgstr "Comportamento durante lo scorrimento del mouse sul pannello." ++ ++#: Settings.ui.h:199 ++msgid "Scroll icon action" ++msgstr "Azione scorrimento icona" ++ ++#: Settings.ui.h:200 ++msgid "Behavior when mouse scrolling over an application icon." ++msgstr "" ++"Comportamento quando si scorre il mouse sopra l'icona di un'applicazione." ++ ++#: Settings.ui.h:203 ++msgid "Cycle windows" ++msgstr "Cicla le finestre" ++ ++#: Settings.ui.h:204 ++msgid "Change volume" ++msgstr "Cambia il volume" ++ ++#: Settings.ui.h:205 ++msgid "Same as panel" ++msgstr "Stesso del pannello" ++ ++#: Settings.ui.h:207 ++msgid "Use hotkeys to activate apps" ++msgstr "Usa scorciatoie per attivare app" ++ ++#: Settings.ui.h:208 ++msgid "Action" ++msgstr "Azioni" ++ ++#: Settings.ui.h:209 ++msgid "" ++"Tray Font Size\n" ++"(0 = theme default)" ++msgstr "" ++"Dimens. Font Tray\n" ++"(0 = predefinito)" ++ ++#: Settings.ui.h:211 ++msgid "" ++"LeftBox Font Size\n" ++"(0 = theme default)" ++msgstr "" ++"Dimens. Font LeftBox\n" ++"(0 = predefinito)" ++ ++#: Settings.ui.h:213 ++msgid "" ++"Tray Item Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"Spaziatura Icone Tray\n" ++"(-1 = predefinito)" ++ ++#: Settings.ui.h:215 ++msgid "" ++"Status Icon Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"Spaziatura icone stato\n" ++"(-1 = predefinito)" ++ ++#: Settings.ui.h:217 ++msgid "" ++"LeftBox Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"Spaziatura LeftBox\n" ++"(-1 = predefinito)" ++ ++#: Settings.ui.h:219 ++msgid "Animate switching applications" ++msgstr "Animazione passaggio tra applicazioni" ++ ++#: Settings.ui.h:220 ++msgid "Animate launching new windows" ++msgstr "Animazione apertura nuove finestre" ++ ++#: Settings.ui.h:221 ++msgid "Keep original gnome-shell dash (overview)" ++msgstr "Mantieni dash originale di gnome-shell (schermata panoramica)" ++ ++#: Settings.ui.h:222 ++msgid "Force Activities hot corner on primary monitor" ++msgstr "Forza angolo attivo delle attività sul monitor principale" ++ ++#: Settings.ui.h:223 ++msgid "Activate panel menu buttons (e.g. date menu) on click only" ++msgstr "" ++"Attiva i pulsanti del menu del pannello (ad es. Menu della data) solo al clic" ++ ++#: Settings.ui.h:224 ++msgid "Keep original gnome-shell top panel" ++msgstr "Mantieni il pannello superiore della gnome-shell originale" ++ ++#: Settings.ui.h:225 ++msgid "App icon secondary (right-click) menu" ++msgstr "Menu secondario (clic destro) delle icone" ++ ++#: Settings.ui.h:227 ++msgid "Fine-Tune" ++msgstr "Perfeziona" ++ ++#: Settings.ui.h:229 ++msgid "GitHub" ++msgstr "GitHub" ++ ++#: Settings.ui.h:230 ++msgid "" ++"Use the buttons below to create a settings file from your current " ++"preferences that can be imported on a different machine." ++msgstr "" ++"Usa i tasti qui sotto per salvare in un file le tue preferenze attuali che " ++"potranno essere importate su altri computer." ++ ++#: Settings.ui.h:231 ++msgid "Export and import settings" ++msgstr "Esporta e importa impostazioni" ++ ++#: Settings.ui.h:232 ++msgid "Export to file" ++msgstr "Esporta su file" ++ ++#: Settings.ui.h:233 ++msgid "Import from file" ++msgstr "Importa da file" ++ ++#: Settings.ui.h:234 ++msgid "" ++"This allows you to update the extension directly from the GitHub repository." ++msgstr "" ++"Ciò consente di aggiornare l'estensione direttamente dal repository GitHub." ++ ++#: Settings.ui.h:235 ++msgid "Updates" ++msgstr "Aggiornamenti" ++ ++#: Settings.ui.h:236 ++msgid "Periodically check for updates" ++msgstr "Controlla periodicamente per gli aggiornamenti" ++ ++#: Settings.ui.h:237 ++msgid "Check now" ++msgstr "Controlla ora" ++ ++#: Settings.ui.h:238 ++msgid "" ++"Be aware, these official Dash to " ++"Panel releases might not be reviewed yet on extensions.gnome.org! Read more" ++msgstr "" ++"Attenzione, queste versioni " ++"ufficiali di Dash to Panel potrebbero non essere ancora esaminate su " ++"extensions.gnome.org! Leggi di più" ++ ++msgid "Top, with plugin icons collapsed to bottom" ++msgstr "In alto, con le icone dei plugin raggruppate in bassoa" ++ ++msgid "Left, with plugin icons collapsed to right" ++msgstr "A sinistra, con le icone dei plugin raggruppate a destra" ++ ++msgid "Top, with fixed center plugin icons" ++msgstr "In alto, con le icone dei plugin fisse al centro" ++ ++msgid "Left, with fixed center plugin icons" ++msgstr "A sinistra, con le icone dei plugin fisse al centro" ++ ++msgid "Top, with floating center plugin icons" ++msgstr "In cima, con le icone dei plugin flottanti al centro" ++ ++msgid "Left, with floating center plugin icons" ++msgstr "Sinistra, con le icone dei plugin flottanti al centro" ++ ++msgid "Center, fixed in middle of monitor" ++msgstr "Centrato, fisso al centro del monitor" ++ ++msgid "Center, floating between top and bottom elements" ++msgstr "Centrato, flottante tra elementi in cima e in basso" ++ ++msgid "Center, floating between left and right elements" ++msgstr "Centrato, flottante tra elementi a destra e sinistra" ++ ++msgid "Top of plugin icons" ++msgstr "In cima alle icone dei plugin" ++ ++msgid "Left of plugin icons" ++msgstr "Sinistra delle icone plugin" ++ ++msgid "Bottom of plugin icons" ++msgstr "In fondo alle icone dei plugin" ++ ++msgid "Right of plugin icons" ++msgstr "Destra delle icone plugin" ++ ++msgid "Top of system indicators" ++msgstr "In cima agli indicatori di sistema" ++ ++msgid "Left of system indicators" ++msgstr "Sinistra degli indicatori di sistema" ++ ++msgid "Bottom of system indicators" ++msgstr "In fondo agli indicatori di sistema" ++ ++msgid "Right of system indicators" ++msgstr "Destra degli indicatori di sistema" ++ ++msgid "Left of taskbar" ++msgstr "Sinistra della taskbar" ++ ++msgid "Bottom of taskbar" ++msgstr "In fondo alla taskbar" ++ ++msgid "Right of taskbar" ++msgstr "Destra della taskbar" ++ ++msgid "Display the clock on additional panels" ++msgstr "Mostra l'orologio su pannelli aggiuntivi" ++ ++msgid "Display the clock on secondary panels" ++msgstr "Visualizza l'orologio su pannelli secondari" ++ ++msgid "Display the status menu on additional panels" ++msgstr "Mostra il menu di stato su pannelli aggiuntivi" ++ ++msgid "Display the status menu on secondary panels" ++msgstr "Mostra il menu di stato su pannelli secondari" ++ ++msgid "Taskbar position" ++msgstr "Posizione taskbar" ++ ++msgid "Clock location" ++msgstr "Posizione orologio" ++ ++msgid "" ++"For the following 2 options, \"additional\" refers to panels that are " ++"displayed in addition to the gnome-shell top panel." ++msgstr "" ++"Per le seguenti 2 opzioni, \"aggiuntivo\" si riferisce ai pannelli che " ++"vengono visualizzati in aggiunta al pannello superiore di gnome-shell." ++ ++msgid "Multi-monitors options" ++msgstr "Opzioni multi-monitor" ++ ++msgid "Event logs" ++msgstr "Registro degli eventi" ++ ++msgid "System" ++msgstr "Sistema" ++ ++msgid "Device Management" ++msgstr "Gestione dispositivi" ++ ++msgid "Disk Management" ++msgstr "Gestione disco" ++ ++msgid "Terminal" ++msgstr "Terminale" ++ ++msgid "Extensions" ++msgstr "Estensioni" ++ ++msgid "Files" ++msgstr "Esplora file" ++ ++msgid "Display favorite applications on all monitors" ++msgstr "Mostra applicazioni preferite su tutti i monitor" ++ ++msgid "Highlight color" ++msgstr "Colore evidenziazione" ++ ++msgid "Preview timeout on icon leave (ms)" ++msgstr "Timeout anteprima uscendo dall'icona (ms)" ++ ++msgid "" ++"If set too low, the window preview of running applications may seem to close " ++"too quickly when trying to enter the popup. If set too high, the preview may " ++"linger too long when moving to an adjacent icon." ++msgstr "" ++"Se troppo basso, l'anteprima delle applicazioni in esecuzione potrebbe " ++"chiudersi troppo presto quando si entra nel popup. Se troppo alto, " ++"l'anteprima potrebbe persistere troppo a lungo quando si cambia icona." ++ ++msgid "Middle click to close window" ++msgstr "Clic centrale per chiudere la finestra" ++ ++msgid "Width of the window previews (px)" ++msgstr "Larghezza delle anteprime (px)" ++ ++msgid "Height of the window previews (px)" ++msgstr "Altezza delle anteprime (px)" ++ ++msgid "Padding of the window previews (px)" ++msgstr "Spaziatura delle anteprime (px)" ++ ++msgid "Natural" ++msgstr "Naturale" ++ ++msgid "Left side of panel" ++msgstr "A sinistra del pannello" ++ ++msgid "Centered in content" ++msgstr "Centrato nel contenuto" ++ ++msgid "Github" ++msgstr "GitHub" +diff --git a/po/ja.po b/po/ja.po +index 8eb77253..e8d2e89f 100644 +--- a/po/ja.po ++++ b/po/ja.po +@@ -1,5 +1,6 @@ + # #-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-# + # #-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-# ++# #-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-# + # gnome-shell-extensions ja.po + # Copyright (C) 2011-2015, 2019-2020 gnome-shell-extensions's COPYRIGHT HOLDER + # This file is distributed under the same license as the gnome-shell-extensions package. +@@ -25,11 +26,20 @@ + # This file is distributed under the same license as the desktop-icons package. + # sicklylife , 2019-2020. + # ++# #-#-#-#-# ja.po #-#-#-#-# ++# Japanese translations for Dash to Panel. ++# Copyright (C) 2017-2021 dash-to-panel's COPYRIGHT HOLDER ++# This file is distributed under the same license as the dash-to-panel package. ++# Shinichirou Yamada , 2017-2018. ++# sicklylife , 2018-2021. ++# Ryo Nakano , 2019. ++# + #, fuzzy + msgid "" + msgstr "" + "#-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-#\n" + "#-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"#-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-#\n" + "Project-Id-Version: gnome-shell-extensions master\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/" + "issues\n" +@@ -67,6 +77,18 @@ msgstr "" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" + "Plural-Forms: nplurals=1; plural=0;\n" ++"#-#-#-#-# ja.po #-#-#-#-#\n" ++"Project-Id-Version: \n" ++"Report-Msgid-Bugs-To: \n" ++"POT-Creation-Date: 2021-01-03 21:05+0900\n" ++"PO-Revision-Date: 2021-01-03 21:52+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" + + #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3 + msgid "GNOME Classic" +@@ -319,32 +341,17 @@ msgstr "ワークスペース %d" + msgid "Add Workspace" + msgstr "ワークスペースを追加" + +-#: prefs.js:310 Settings.ui.h:25 +-#, fuzzy ++#: Settings.ui:4898 Settings.ui:5259 + msgid "Left" +-msgstr "" +-"#-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-#\n" +-"左回り\n" +-"#-#-#-#-# ja.po (dash-to-dock master) #-#-#-#-#\n" +-"左" ++msgstr "左" + +-#: prefs.js:309 Settings.ui.h:28 +-#, fuzzy ++#: Settings.ui:4918 Settings.ui:5276 + msgid "Right" +-msgstr "" +-"#-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-#\n" +-"右回り\n" +-"#-#-#-#-# ja.po (dash-to-dock master) #-#-#-#-#\n" +-"右" ++msgstr "右" + +-#: appIcons.js:808 +-#, fuzzy ++#: appIcons.js:1440 + msgid "New Window" +-msgstr "" +-"#-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-#\n" +-"新しいウィンドウで開く\n" +-"#-#-#-#-# ja.po (dash-to-dock master) #-#-#-#-#\n" +-"新しいウィンドウ" ++msgstr "新しいウィンドウ" + + #: appIcons.js:851 + msgid "Remove from Favorites" +@@ -362,12 +369,15 @@ msgstr "専用のグラフィックカードを使用して起動" + msgid "Add to Favorites" + msgstr "お気に入りに追加" + +-#: appIcons.js:868 ++#: appIcons.js:868 appIcons.js:1422 + msgid "Show Details" + msgstr "詳細を表示" + ++# #-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-# + # ここの翻訳は GNOME Shell の訳が優先される様子 +-#: appIcons.js:896 appIcons.js:914 Settings.ui.h:11 ++#: appIcons.js:896 appIcons.js:914 Settings.ui.h:11 Settings.ui:136 ++#: Settings.ui:207 Settings.ui:278 appIcons.js:1440 appIcons.js:1500 ++#: appIcons.js:1502 + msgid "Quit" + msgstr "終了" + +@@ -384,7 +394,7 @@ msgstr "%d 個のウィンドウを終了" + msgid "Dash to Dock %s" + msgstr "Dash to Dock の%s" + +-#: appIcons.js:1134 desktopGrid.js:360 ++#: appIcons.js:1134 desktopGrid.js:360 appIcons.js:1846 + msgid "Settings" + msgstr "設定" + +@@ -412,7 +422,7 @@ msgstr "取り出す" + msgid "Unmount" + msgstr "アンマウント" + +-#: prefs.js:268 ++#: prefs.js:268 prefs.js:732 + msgid "Primary monitor" + msgstr "プライマリーモニター" + +@@ -424,17 +434,30 @@ msgstr "セカンダリーモニター" + msgid "Intelligent autohide customization" + msgstr "インテリジェント表示の設定" + +-#: prefs.js:367 prefs.js:560 prefs.js:616 ++#: prefs.js:367 prefs.js:560 prefs.js:616 prefs.js:376 prefs.js:433 ++#: prefs.js:576 prefs.js:894 prefs.js:1037 prefs.js:1164 prefs.js:1450 ++#: prefs.js:1545 prefs.js:1610 prefs.js:1653 prefs.js:1750 prefs.js:1784 ++#: prefs.js:1826 ++#, fuzzy + msgid "Reset to defaults" +-msgstr "既定値にリセット" ++msgstr "" ++"#-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"既定値にリセット\n" ++"#-#-#-#-# ja.po #-#-#-#-#\n" ++"初期設定に戻す" + + #: prefs.js:553 + msgid "Show dock and application numbers" + msgstr "ドック表示とアプリケーション番号" + +-#: prefs.js:609 ++#: prefs.js:609 prefs.js:1538 ++#, fuzzy + msgid "Customize middle-click behavior" +-msgstr "中ボタンクリック時のアクション" ++msgstr "" ++"#-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"中ボタンクリック時のアクション\n" ++"#-#-#-#-# ja.po #-#-#-#-#\n" ++"中クリックの挙動のカスタマイズ" + + #: prefs.js:692 + msgid "Customize running indicators" +@@ -444,33 +467,60 @@ msgstr "インジケーターの表示設定" + msgid "Customize opacity" + msgstr "不透明度の調整" + +-#: Settings.ui.h:1 ++#: Settings.ui.h:1 Settings.ui:98 ++#, fuzzy + msgid "" + "When set to minimize, double clicking minimizes all the windows of the " + "application." + msgstr "" ++"#-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-#\n" + "[ウィンドウの最小化] に設定したときは、アイコンをダブルクリックするとそのアプ" +-"リケーションのウィンドウをすべて最小化します。" ++"リケーションのウィンドウをすべて最小化します。\n" ++"#-#-#-#-# ja.po #-#-#-#-#\n" ++"最小化に設定する場合、ダブルクリックでそのアプリケーションのすべてのウィンド" ++"ウを最小化します。" + +-#: Settings.ui.h:2 ++#: Settings.ui.h:2 Settings.ui:116 ++#, fuzzy + msgid "Shift+Click action" +-msgstr "Shift + クリック時のアクション" ++msgstr "" ++"#-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Shift + クリック時のアクション\n" ++"#-#-#-#-# ja.po #-#-#-#-#\n" ++"Shift + クリックの動作" + + #: Settings.ui.h:3 + msgid "Raise window" + msgstr "ウィンドウの再表示" + +-#: Settings.ui.h:4 ++#: Settings.ui.h:4 Settings.ui:131 Settings.ui:202 Settings.ui:273 ++#, fuzzy + msgid "Minimize window" +-msgstr "ウィンドウの最小化" ++msgstr "" ++"#-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"ウィンドウの最小化\n" ++"#-#-#-#-# ja.po #-#-#-#-#\n" ++"ウィンドウを最小化" + +-#: Settings.ui.h:5 ++#: Settings.ui.h:5 Settings.ui:132 Settings.ui:203 Settings.ui:274 ++#: Settings.ui:6530 ++#, fuzzy + msgid "Launch new instance" +-msgstr "新しいウィンドウを開く" ++msgstr "" ++"#-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"新しいウィンドウを開く\n" ++"#-#-#-#-# ja.po #-#-#-#-#\n" ++"新規インスタンスを起動" + +-#: Settings.ui.h:6 ++#: Settings.ui.h:6 Settings.ui:133 Settings.ui:204 Settings.ui:275 ++#: Settings.ui:6526 ++#, fuzzy + msgid "Cycle through windows" +-msgstr "ウィンドウの切り替え" ++msgstr "" ++"#-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"ウィンドウの切り替え\n" ++"#-#-#-#-# ja.po #-#-#-#-#\n" ++"ウィンドウを循環表示" + + #: Settings.ui.h:7 + msgid "Minimize or overview" +@@ -488,21 +538,41 @@ msgstr "ウィンドウの最小化またはプレビュー表示" + msgid "Focus or show previews" + msgstr "フォーカスまたはプレビュー表示" + +-#: Settings.ui.h:12 ++#: Settings.ui.h:12 Settings.ui:169 ++#, fuzzy + msgid "Behavior for Middle-Click." +-msgstr "中ボタンをクリックしたときの動作を設定します。" ++msgstr "" ++"#-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"中ボタンをクリックしたときの動作を設定します。\n" ++"#-#-#-#-# ja.po #-#-#-#-#\n" ++"中クリック時の挙動です。" + +-#: Settings.ui.h:13 ++#: Settings.ui.h:13 Settings.ui:187 ++#, fuzzy + msgid "Middle-Click action" +-msgstr "中ボタンクリック時のアクション" ++msgstr "" ++"#-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"中ボタンクリック時のアクション\n" ++"#-#-#-#-# ja.po #-#-#-#-#\n" ++"中クリックの動作" + +-#: Settings.ui.h:14 ++#: Settings.ui.h:14 Settings.ui:240 ++#, fuzzy + msgid "Behavior for Shift+Middle-Click." +-msgstr "Shift を押しながら中ボタンをクリックしたときの動作を設定します。" ++msgstr "" ++"#-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Shift を押しながら中ボタンをクリックしたときの動作を設定します。\n" ++"#-#-#-#-# ja.po #-#-#-#-#\n" ++"Shift + 中クリック時の挙動です。" + +-#: Settings.ui.h:15 ++#: Settings.ui.h:15 Settings.ui:258 ++#, fuzzy + msgid "Shift+Middle-Click action" +-msgstr "Shift + 中ボタンクリック時のアクション" ++msgstr "" ++"#-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Shift + 中ボタンクリック時のアクション\n" ++"#-#-#-#-# ja.po #-#-#-#-#\n" ++"Shift + 中クリックの動作" + + #: Settings.ui.h:16 + msgid "Enable Unity7 like glossy backlit items" +@@ -540,11 +610,11 @@ msgstr "すべてのモニターで表示" + msgid "Position on screen" + msgstr "表示位置" + +-#: Settings.ui.h:26 ++#: Settings.ui.h:26 Settings.ui:2671 Settings.ui:4859 Settings.ui:5224 + msgid "Bottom" + msgstr "下" + +-#: Settings.ui.h:27 ++#: Settings.ui.h:27 Settings.ui:2689 Settings.ui:4878 Settings.ui:5241 + msgid "Top" + msgstr "上" + +@@ -580,13 +650,23 @@ msgstr "アイコンサイズの固定 (隠れたアイコンはスクロール + msgid "Position and size" + msgstr "位置とサイズ" + +-#: Settings.ui.h:36 ++#: Settings.ui.h:36 Settings.ui:5969 ++#, fuzzy + msgid "Show favorite applications" +-msgstr "お気に入りアプリケーションの表示" ++msgstr "" ++"#-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"お気に入りアプリケーションの表示\n" ++"#-#-#-#-# ja.po #-#-#-#-#\n" ++"お気に入りのアプリケーションを表示" + +-#: Settings.ui.h:37 ++#: Settings.ui.h:37 Settings.ui:5982 ++#, fuzzy + msgid "Show running applications" +-msgstr "実行中アプリケーションの表示" ++msgstr "" ++"#-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"実行中アプリケーションの表示\n" ++"#-#-#-#-# ja.po #-#-#-#-#\n" ++"実行中のアプリケーションを表示" + + #: Settings.ui.h:38 + msgid "Isolate workspaces." +@@ -609,16 +689,26 @@ msgstr "" + "定ダイアログにアクセスします。" + + #: Settings.ui.h:42 ++#, fuzzy + msgid "Show Applications icon" +-msgstr "[アプリケーションを表示する] アイコンの表示" ++msgstr "" ++"#-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"[アプリケーションを表示する] アイコンの表示\n" ++"#-#-#-#-# ja.po #-#-#-#-#\n" ++"アプリケーションアイコンを表示" + + #: Settings.ui.h:43 + msgid "Move the applications button at the beginning of the dock." + msgstr "ドックの先頭 (最上段または左端) に表示" + +-#: Settings.ui.h:44 ++#: Settings.ui.h:44 Settings.ui:3999 ++#, fuzzy + msgid "Animate Show Applications." +-msgstr "アニメーションしながらアプリケーション一覧を表示" ++msgstr "" ++"#-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"アニメーションしながらアプリケーション一覧を表示\n" ++"#-#-#-#-# ja.po #-#-#-#-#\n" ++"アプリケーションの表示にアニメーションを使用" + + #: Settings.ui.h:45 + msgid "Show trash can" +@@ -632,26 +722,41 @@ msgstr "マウントしたボリュームとデバイスを表示" + msgid "Launchers" + msgstr "ランチャー" + +-#: Settings.ui.h:48 ++#: Settings.ui.h:48 Settings.ui:6785 ++#, fuzzy + msgid "" + "Enable Super+(0-9) as shortcuts to activate apps. It can also be used " + "together with Shift and Ctrl." + msgstr "" ++"#-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-#\n" + "Super キーと番号 (0-9) を同時に押すことでアプリケーションのアクティブ化を可能" + "にします。\n" +-"Shift キーまたは Ctrl キーを Super キーとともに押しても機能します。" ++"Shift キーまたは Ctrl キーを Super キーとともに押しても機能します。\n" ++"#-#-#-#-# ja.po #-#-#-#-#\n" ++"アプリを起動するショートカット (Super + 0〜9) を有効にします。Shift や Ctrl " ++"と共に使用できます。" + + #: Settings.ui.h:49 + msgid "Use keyboard shortcuts to activate apps" + msgstr "アプリのアクティブ化にキーボードショートカットを使用" + +-#: Settings.ui.h:50 ++#: Settings.ui.h:50 Settings.ui:6466 ++#, fuzzy + msgid "Behaviour when clicking on the icon of a running application." +-msgstr "実行中アプリケーションのアイコンをクリックしたときの動作を設定します。" ++msgstr "" ++"#-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"実行中アプリケーションのアイコンをクリックしたときの動作を設定します。\n" ++"#-#-#-#-# ja.po #-#-#-#-#\n" ++"起動しているアプリケーションのアイコンをクリックしたときの挙動です。" + +-#: Settings.ui.h:51 ++#: Settings.ui.h:51 Settings.ui:6483 ++#, fuzzy + msgid "Click action" +-msgstr "クリック時のアクション" ++msgstr "" ++"#-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"クリック時のアクション\n" ++"#-#-#-#-# ja.po #-#-#-#-#\n" ++"クリック時の動作" + + #: Settings.ui.h:53 + msgid "Behaviour when scrolling on the icon of an application." +@@ -662,17 +767,27 @@ msgstr "" + msgid "Scroll action" + msgstr "スクロール時のアクション" + +-#: Settings.ui.h:55 ++#: Settings.ui.h:55 Settings.ui:6693 Settings.ui:6711 + msgid "Do nothing" + msgstr "何もしない" + +-#: Settings.ui.h:56 ++#: Settings.ui.h:56 Settings.ui:6694 ++#, fuzzy + msgid "Switch workspace" +-msgstr "ワークスペースの切り替え" ++msgstr "" ++"#-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"ワークスペースの切り替え\n" ++"#-#-#-#-# ja.po #-#-#-#-#\n" ++"ワークスペースを切り替え" + +-#: Settings.ui.h:57 ++#: Settings.ui.h:57 Settings.ui:6421 ++#, fuzzy + msgid "Behavior" +-msgstr "動作" ++msgstr "" ++"#-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"動作\n" ++"#-#-#-#-# ja.po #-#-#-#-#\n" ++"挙動" + + #: Settings.ui.h:58 + msgid "" +@@ -702,31 +817,31 @@ msgstr "ウィンドウ数インジケーターの設定" + msgid "Default" + msgstr "デフォルト" + +-#: Settings.ui.h:64 ++#: Settings.ui.h:64 Settings.ui:5365 Settings.ui:5426 + msgid "Dots" + msgstr "" + +-#: Settings.ui.h:65 ++#: Settings.ui.h:65 Settings.ui:5366 Settings.ui:5427 + msgid "Squares" + msgstr "" + +-#: Settings.ui.h:66 ++#: Settings.ui.h:66 Settings.ui:5367 Settings.ui:5428 + msgid "Dashes" + msgstr "" + +-#: Settings.ui.h:67 ++#: Settings.ui.h:67 Settings.ui:5368 Settings.ui:5429 + msgid "Segmented" + msgstr "" + +-#: Settings.ui.h:68 ++#: Settings.ui.h:68 Settings.ui:5369 Settings.ui:5430 + msgid "Solid" + msgstr "" + +-#: Settings.ui.h:69 ++#: Settings.ui.h:69 Settings.ui:5370 Settings.ui:5431 + msgid "Ciliora" + msgstr "" + +-#: Settings.ui.h:70 ++#: Settings.ui.h:70 Settings.ui:5371 Settings.ui:5432 + msgid "Metro" + msgstr "" + +@@ -742,7 +857,7 @@ msgstr "Dash 背景色の設定" + msgid "Tune the dash background opacity." + msgstr "Dash 背景の不透明度を調整します。" + +-#: Settings.ui.h:75 ++#: Settings.ui.h:75 Settings.ui:2446 Settings.ui:2524 + msgid "Fixed" + msgstr "固定" + +@@ -762,7 +877,7 @@ msgstr "角を丸めない" + msgid "Appearance" + msgstr "外観" + +-#: Settings.ui.h:80 ++#: Settings.ui.h:80 Settings.ui:7516 + msgid "version: " + msgstr "バージョン: " + +@@ -779,20 +894,32 @@ msgstr "作者:" + msgid "Webpage" + msgstr "ウェブページ" + +-#: Settings.ui.h:84 ++#: Settings.ui.h:84 Settings.ui:7811 ++#, fuzzy + msgid "" + "This program comes with ABSOLUTELY NO WARRANTY.\n" +-"See the GNU General Public License, version 2 or later for details." ++"See the GNU General Public License, version 2 or later for details." + msgstr "" ++"#-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-#\n" + "このプログラムに保証は一切ありません。\n" +-"詳しくは GNU 一般公衆ライセンス (GPL) バージョン 2 またはそれ以降のバージョンを" +-"ご覧ください。" +- +-#: Settings.ui.h:86 ++"詳しくは GNU 一般公衆ライセンス (GPL) バージョン 2 またはそれ以降のバージョ" ++"ンをご覧ください。\n" ++"#-#-#-#-# ja.po #-#-#-#-#\n" ++"このプログラムは全くの無保証です。\n" ++"詳しくは GNU General Public License, version 2 またはそれ以降 " ++"をご確認ください。" ++ ++#: Settings.ui.h:86 Settings.ui:7832 ++#, fuzzy + msgid "About" +-msgstr "情報" ++msgstr "" ++"#-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"情報\n" ++"#-#-#-#-# ja.po #-#-#-#-#\n" ++"Dash to Panel について" + + #: Settings.ui.h:87 + msgid "Customize minimum and maximum opacity values" +@@ -806,7 +933,7 @@ msgstr "最小不透明度" + msgid "Maximum opacity" + msgstr "最大不透明度" + +-#: Settings.ui.h:90 ++#: Settings.ui.h:90 Settings.ui:3525 + msgid "Number overlay" + msgstr "番号の表示" + +@@ -834,9 +961,14 @@ msgstr "" + msgid "Shortcut for the options above" + msgstr "上記設定のためのショートカットキー" + +-#: Settings.ui.h:95 ++#: Settings.ui.h:95 Settings.ui:1866 Settings.ui:3641 ++#, fuzzy + msgid "Syntax: , , , " +-msgstr "表記法: , , , " ++msgstr "" ++"#-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"表記法: , , , \n" ++"#-#-#-#-# ja.po #-#-#-#-#\n" ++"シンタックス: " + + #: Settings.ui.h:96 + msgid "Hide timeout (s)" +@@ -870,9 +1002,14 @@ msgstr "" + msgid "Dodge windows" + msgstr "ウィンドウ重なり防止" + +-#: Settings.ui.h:103 ++#: Settings.ui.h:103 Settings.ui:1598 Settings.ui:4355 ++#, fuzzy + msgid "All windows" +-msgstr "すべてのウィンドウが対象" ++msgstr "" ++"#-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"すべてのウィンドウが対象\n" ++"#-#-#-#-# ja.po #-#-#-#-#\n" ++"すべてのウィンドウ" + + #: Settings.ui.h:104 + msgid "Only focused application's windows" +@@ -1080,6 +1217,1120 @@ msgstr "マウントしたドライブを表示する" + msgid "Show mounted drives in the desktop." + msgstr "デスクトップにマウントしたドライブを表示します。" + ++#: Settings.ui:43 ++msgid "Nothing yet!" ++msgstr "まだ何もありません!" ++ ++#: Settings.ui:130 Settings.ui:201 Settings.ui:272 Settings.ui:6529 ++msgid "Raise windows" ++msgstr "ウィンドウを最前面に移動" ++ ++#: Settings.ui:134 Settings.ui:205 Settings.ui:276 Settings.ui:6525 ++msgid "Cycle windows + minimize" ++msgstr "ウィンドウを循環 + 最小化" ++ ++#: Settings.ui:135 Settings.ui:206 Settings.ui:277 Settings.ui:6527 ++msgid "Toggle single / Preview multiple" ++msgstr "ウィンドウが 1 つなら切り替え" ++ ++#: Settings.ui:337 ++msgid "Integrate AppMenu items" ++msgstr "アプリケーションメニューの項目を統合" ++ ++#: Settings.ui:383 ++msgid "Show Details menu item" ++msgstr "詳細を表示するメニュー項目を表示" ++ ++#: Settings.ui:481 ++msgid "Highlight focused application" ++msgstr "フォーカスされたアプリをハイライト" ++ ++#: Settings.ui:512 ++msgid "Icon dominant color" ++msgstr "アイコンのドミナントカラー" ++ ++#: Settings.ui:537 ++msgid "Custom color" ++msgstr "カスタムカラー" ++ ++#: Settings.ui:562 ++msgid "Highlight opacity" ++msgstr "ハイライトの不透明度" ++ ++#: Settings.ui:614 ++msgid "Indicator size (px)" ++msgstr "インジケーターのサイズ (px)" ++ ++#: Settings.ui:658 ++msgid "Indicator color - Icon Dominant" ++msgstr "インジケーターの色 - アイコンのドミナント" ++ ++#: Settings.ui:704 ++msgid "Indicator color - Override Theme" ++msgstr "インジケーターの色 - テーマを上書き" ++ ++#: Settings.ui:747 Settings.ui:933 ++msgid "1 window open (or ungrouped)" ++msgstr "ウィンドウを 1 つ開く (または非グループ化)" ++ ++#: Settings.ui:762 Settings.ui:948 ++msgid "Apply to all" ++msgstr "すべてに適用" ++ ++#: Settings.ui:798 Settings.ui:984 ++msgid "2 windows open" ++msgstr "ウィンドウを 2 つ開く" ++ ++#: Settings.ui:811 Settings.ui:1009 ++msgid "3 windows open" ++msgstr "ウィンドウを 3 つ開く" ++ ++#: Settings.ui:824 Settings.ui:1034 ++msgid "4+ windows open" ++msgstr "ウィンドウを 4 つ以上開く" ++ ++#: Settings.ui:890 ++msgid "Use different for unfocused" ++msgstr "非フォーカスの場合は異なる色を使用" ++ ++#: Settings.ui:1141 ++msgid "Font size (px) of the application titles (default is 14)" ++msgstr "アプリケーションタイトルのフォントサイズ (px) (初期値は 14)" ++ ++#: Settings.ui:1172 ++msgid "Font weight of application titles" ++msgstr "アプリケーションタイトルのフォントの幅" ++ ++#: Settings.ui:1186 Settings.ui:2911 ++msgid "inherit from theme" ++msgstr "テーマに依存" ++ ++#: Settings.ui:1187 Settings.ui:2912 ++msgid "normal" ++msgstr "普通" ++ ++#: Settings.ui:1188 Settings.ui:2913 ++msgid "lighter" ++msgstr "細い" ++ ++#: Settings.ui:1189 Settings.ui:2914 ++msgid "bold" ++msgstr "太い" ++ ++#: Settings.ui:1190 Settings.ui:2915 ++msgid "bolder" ++msgstr "より太い" ++ ++#: Settings.ui:1220 ++msgid "Font color of the application titles" ++msgstr "アプリケーションタイトルのフォントの色" ++ ++#: Settings.ui:1263 ++msgid "Font color of the minimized application titles" ++msgstr "アプリケーションタイトルのフォントの色 (最小化時)" ++ ++#: Settings.ui:1306 ++msgid "Maximum width (px) of the application titles (default is 160)" ++msgstr "アプリケーションタイトルの最大幅 (px) (初期値は 160)" ++ ++#: Settings.ui:1351 ++msgid "Use a fixed width for the application titles" ++msgstr "アプリケーションタイトルの幅を固定" ++ ++#: Settings.ui:1376 ++msgid "" ++"The application titles all have the same width, even if their texts are " ++"shorter than the maximum width. The maximum width value is used as the fixed " ++"width." ++msgstr "" ++"アプリケーションタイトルが最大幅より短い場合でも、幅を維持します。最大幅の値" ++"が固定幅の値として使用されます。" ++ ++#: Settings.ui:1412 ++msgid "Display running indicators on unfocused applications" ++msgstr "フォーカスされていないアプリケーションのインジケーターを表示" ++ ++#: Settings.ui:1454 ++msgid "Use the favorite icons as application launchers" ++msgstr "アプリケーションランチャーとしてお気に入りアイコンを使用" ++ ++#: Settings.ui:1552 ++msgid "Only hide the panel when it is obstructed by windows " ++msgstr "ウィンドウが重なっている場合にのみパネルを隠す " ++ ++#: Settings.ui:1584 ++msgid "The panel hides from" ++msgstr "対象のウィンドウ" ++ ++#: Settings.ui:1599 Settings.ui:4356 ++msgid "Focused windows" ++msgstr "フォーカスされたウィンドウ" ++ ++#: Settings.ui:1600 Settings.ui:4357 ++msgid "Maximized windows" ++msgstr "最大化されたウィンドウ" ++ ++#: Settings.ui:1638 ++msgid "Require pressure at the edge of the screen to reveal the panel" ++msgstr "マウスカーソルを画面端へ押し当てることでパネルを表示" ++ ++#: Settings.ui:1670 ++msgid "Required pressure threshold (px)" ++msgstr "表示に必要な値 (px)" ++ ++#: Settings.ui:1699 ++msgid "Required pressure timeout (ms)" ++msgstr "押し当てのタイムアウト (ミリ秒)" ++ ++#: Settings.ui:1754 ++msgid "Allow the panel to be revealed while in fullscreen mode" ++msgstr "フルスクリーンモード時でのパネルの表示を許可" ++ ++#: Settings.ui:1798 ++msgid "Only hide secondary panels (requires multi-monitors option)" ++msgstr "マルチモニター環境でセカンダリーパネルのみ隠す" ++ ++#: Settings.ui:1841 ++msgid "e.g. i" ++msgstr "例: i" ++ ++#: Settings.ui:1854 ++msgid "Keyboard shortcut to reveal and hold the panel" ++msgstr "パネルを表示して固定するキーボードショートカット" ++ ++#: Settings.ui:1901 ++msgid "Hide and reveal animation duration (ms)" ++msgstr "表示/非表示アニメーションの長さ (ミリ秒)" ++ ++#: Settings.ui:1947 ++msgid "Delay before hiding the panel (ms)" ++msgstr "パネルを隠す前の遅延 (ミリ秒)" ++ ++#: Settings.ui:1994 ++msgid "Delay before enabling intellihide on start (ms)" ++msgstr "起動時に Intellihide を有効にする前の遅延 (ミリ秒)" ++ ++#: Settings.ui:2158 ++msgid "Time (ms) before showing (400 is default)" ++msgstr "表示までの時間 (ミリ秒) (初期値は 400)" ++ ++#: Settings.ui:2172 ++msgid "Animation time (ms)" ++msgstr "アニメーション時間 (ミリ秒)" ++ ++#: Settings.ui:2205 ++msgid "Time (ms) before hiding (100 is default)" ++msgstr "隠すまでの時間 (ミリ秒) (初期値は 100)" ++ ++#: Settings.ui:2229 ++msgid "Immediate on application icon click" ++msgstr "アプリケーションアイコンをクリックしたら即隠す" ++ ++#: Settings.ui:2285 ++msgid "Middle click on the preview to close the window" ++msgstr "プレビュー上での中クリックでウィンドウを閉じる" ++ ++#: Settings.ui:2329 ++msgid "Window previews preferred size (px)" ++msgstr "ウィンドウプレビューの優先サイズ (px)" ++ ++#: Settings.ui:2360 ++msgid "Window previews aspect ratio Y (height)" ++msgstr "ウィンドウプレビューの Y アスペクト比 (高さ)" ++ ++#: Settings.ui:2375 ++msgid "Window previews padding (px)" ++msgstr "ウィンドウプレビューのパディング (px)" ++ ++#: Settings.ui:2415 Settings.ui:2493 ++msgid "1" ++msgstr "1" ++ ++#: Settings.ui:2416 Settings.ui:2494 ++msgid "2" ++msgstr "2" ++ ++#: Settings.ui:2417 Settings.ui:2495 ++msgid "3" ++msgstr "3" ++ ++#: Settings.ui:2418 Settings.ui:2496 ++msgid "4" ++msgstr "4" ++ ++#: Settings.ui:2419 Settings.ui:2497 Settings.ui:2616 ++msgid "5" ++msgstr "5" ++ ++#: Settings.ui:2420 Settings.ui:2498 ++msgid "6" ++msgstr "6" ++ ++#: Settings.ui:2421 Settings.ui:2499 ++msgid "7" ++msgstr "7" ++ ++#: Settings.ui:2422 Settings.ui:2500 ++msgid "8" ++msgstr "8" ++ ++#: Settings.ui:2423 Settings.ui:2501 ++msgid "9" ++msgstr "9" ++ ++#: Settings.ui:2424 Settings.ui:2502 ++msgid "10" ++msgstr "10" ++ ++#: Settings.ui:2425 Settings.ui:2503 ++msgid "11" ++msgstr "11" ++ ++#: Settings.ui:2426 Settings.ui:2504 ++msgid "12" ++msgstr "12" ++ ++#: Settings.ui:2427 Settings.ui:2505 ++msgid "13" ++msgstr "13" ++ ++#: Settings.ui:2428 Settings.ui:2506 ++msgid "14" ++msgstr "14" ++ ++#: Settings.ui:2429 Settings.ui:2507 ++msgid "15" ++msgstr "15" ++ ++#: Settings.ui:2430 Settings.ui:2508 ++msgid "16" ++msgstr "16" ++ ++#: Settings.ui:2431 Settings.ui:2509 ++msgid "17" ++msgstr "17" ++ ++#: Settings.ui:2432 Settings.ui:2510 ++msgid "18" ++msgstr "18" ++ ++#: Settings.ui:2433 Settings.ui:2511 ++msgid "19" ++msgstr "19" ++ ++#: Settings.ui:2434 Settings.ui:2512 ++msgid "20" ++msgstr "20" ++ ++#: Settings.ui:2435 Settings.ui:2513 ++msgid "21" ++msgstr "21" ++ ++#: Settings.ui:2469 ++msgid "Window previews aspect ratio X (width)" ++msgstr "ウィンドウプレビューの X アスペクト比 (幅)" ++ ++#: Settings.ui:2564 ++msgid "Use custom opacity for the previews background" ++msgstr "プレビューの背景にカスタム不透明度を使用" ++ ++#: Settings.ui:2578 ++msgid "If disabled, the previews background have the same opacity as the panel" ++msgstr "無効の場合、プレビューの背景はパネルの不透明度と同一になります" ++ ++#: Settings.ui:2654 ++msgid "Close button and header position" ++msgstr "閉じるボタンとヘッダーの位置" ++ ++#: Settings.ui:2735 ++msgid "Display window preview headers" ++msgstr "ウィンドウプレビューのヘッダーを表示" ++ ++#: Settings.ui:2807 ++msgid "Icon size (px) of the window preview" ++msgstr "ウィンドウプレビューのアイコンサイズ (px)" ++ ++#: Settings.ui:2821 ++msgid "If disabled, the previews icon size will be based on headerbar size" ++msgstr "無効の場合、ヘッダーバーのサイズを基準にしてアイコンサイズを設定します" ++ ++#: Settings.ui:2869 ++msgid "Font size (px) of the preview titles" ++msgstr "プレビュータイトルのフォントサイズ (px)" ++ ++#: Settings.ui:2896 ++msgid "Font weight of the preview titles" ++msgstr "プレビュータイトルのフォント幅" ++ ++#: Settings.ui:2941 ++msgid "Font color of the preview titles" ++msgstr "プレビュータイトルのフォントの色" ++ ++#: Settings.ui:2992 ++msgid "Enable window peeking" ++msgstr "ウィンドウの覗き見を有効化" ++ ++#: Settings.ui:3018 ++msgid "" ++"When hovering over a window preview for some time, the window gets " ++"distinguished." ++msgstr "" ++"ウィンドウのプレビューにしばらくの間マウスホバーし続けると、そのウィンドウ以" ++"外が透明化されます。" ++ ++#: Settings.ui:3043 ++msgid "Enter window peeking mode timeout (ms)" ++msgstr "ウィンドウ覗き見モードに入る時間 (ミリ秒)" ++ ++#: Settings.ui:3057 ++msgid "50" ++msgstr "50" ++ ++#: Settings.ui:3072 ++msgid "" ++"Time of inactivity while hovering over a window preview needed to enter the " ++"window peeking mode." ++msgstr "" ++"ウィンドウ覗き見モードに入るには、ウィンドウのプレビューにマウスホバーしたま" ++"ま、しばらく動かさずに待つ必要があります。" ++ ++#: Settings.ui:3104 ++msgid "Window peeking mode opacity" ++msgstr "ウィンドウ覗き見モードの不透明度" ++ ++#: Settings.ui:3118 Settings.ui:3903 Settings.ui:4448 Settings.ui:5607 ++#: Settings.ui:5825 Settings.ui:5863 ++msgid "0" ++msgstr "0" ++ ++#: Settings.ui:3132 ++msgid "" ++"All windows except for the peeked one have their opacity set to the same " ++"value." ++msgstr "" ++"選択したウィンドウ以外のすべてのウィンドウの不透明度が、設定した値になりま" ++"す。" ++ ++#: Settings.ui:3212 Settings.ui:3300 ++msgid "Delay between mouse scroll events (ms)" ++msgstr "マウススクロールイベント間の遅延 (ミリ秒)" ++ ++#: Settings.ui:3226 Settings.ui:3314 ++msgid "Use this value to limit the number of captured mouse scroll events." ++msgstr "マウススクロールを検知した後、指定した時間スクロールに反応しません。" ++ ++#: Settings.ui:3348 ++msgid "Show popup when changing workspace" ++msgstr "ワークスペース切り替え時にポップアップを表示" ++ ++#: Settings.ui:3362 ++msgid "This affects workspace popup when scrolling on the panel only." ++msgstr "" ++"これはパネル上でスクロールしたときのワークスペースのポップアップにのみ影響し" ++"ます。" ++ ++#: Settings.ui:3444 ++msgid "Super" ++msgstr "Super" ++ ++#: Settings.ui:3445 ++msgid "Super + Alt" ++msgstr "Super + Alt" ++ ++#: Settings.ui:3459 ++msgid "Hotkeys prefix" ++msgstr "ホットキーのプレフィックス" ++ ++#: Settings.ui:3471 ++msgid "Hotkeys will either be Super+Number or Super+Alt+Num" ++msgstr "ホットキーは Super + 数字キー、Super + Alt + 数字キーのどちらかです。" ++ ++#: Settings.ui:3509 ++msgid "Never" ++msgstr "表示しない" ++ ++#: Settings.ui:3510 ++msgid "Show temporarily" ++msgstr "一時的に表示" ++ ++#: Settings.ui:3511 ++msgid "Always visible" ++msgstr "常に表示" ++ ++#: Settings.ui:3537 ++msgid "" ++"Temporarily show the application numbers over the icons when using the " ++"hotkeys." ++msgstr "" ++"ホットキー使用時、アプリケーションのアイコン上に番号を一時的に表示します。" ++ ++#: Settings.ui:3586 ++msgid "Hide timeout (ms)" ++msgstr "非表示にするまでの時間 (ミリ秒)" ++ ++#: Settings.ui:3616 ++msgid "e.g. q" ++msgstr "例: q" ++ ++#: Settings.ui:3629 ++msgid "Shortcut to show the overlay for 2 seconds" ++msgstr "番号を 2 秒間表示するショートカットキー" ++ ++#: Settings.ui:3676 ++msgid "Show window previews on hotkey" ++msgstr "ホットキーでウィンドウプレビューを表示" ++ ++#: Settings.ui:3703 ++msgid "Show previews when the application have multiple instances" ++msgstr "アプリケーションのインスタンスが複数ある場合はプレビューを表示します" ++ ++#: Settings.ui:3740 ++msgid "Number row" ++msgstr "数字キー" ++ ++#: Settings.ui:3741 ++msgid "Numeric keypad" ++msgstr "テンキー" ++ ++#: Settings.ui:3742 ++msgid "Both" ++msgstr "両方" ++ ++#: Settings.ui:3756 ++msgid "Hotkeys are activated with" ++msgstr "ホットキーに使用するキー" ++ ++#: Settings.ui:3768 ++msgid "Select which keyboard number keys are used to activate the hotkeys" ++msgstr "キーボードのどちら側の数字キーをホットキーに使用するかを選択します" ++ ++#: Settings.ui:3823 ++msgid "Current Show Applications icon" ++msgstr "現在のアプリケーション表示アイコン" ++ ++#: Settings.ui:3853 ++msgid "Select a Show Applications image icon" ++msgstr "アプリケーション表示の画像アイコンを選択" ++ ++#: Settings.ui:3865 ++msgid "Custom Show Applications image icon" ++msgstr "カスタムアイコン" ++ ++#: Settings.ui:3916 ++msgid "Show Applications icon side padding (px)" ++msgstr "アプリケーション表示アイコンのパディング (px)" ++ ++#: Settings.ui:3963 ++msgid "Override escape key and return to desktop" ++msgstr "Esc キーで直接デスクトップに戻る" ++ ++#: Settings.ui:4102 ++msgid "Override Show Desktop line color" ++msgstr "デスクトップ表示ボタンの境目の色を上書き" ++ ++#: Settings.ui:4173 ++msgid "Reveal the desktop when hovering the Show Desktop button" ++msgstr "デスクトップ表示ボタンにマウスホバーでデスクトップを表示" ++ ++#: Settings.ui:4204 ++msgid "Delay before revealing the desktop (ms)" ++msgstr "表示するまでの遅延時間 (ミリ秒)" ++ ++#: Settings.ui:4234 ++msgid "Fade duration (ms)" ++msgstr "フェード時間 (ミリ秒)" ++ ++#: Settings.ui:4341 ++msgid "The panel background opacity is affected by" ++msgstr "パネル背景の不透明度に影響を与えるウィンドウ" ++ ++#: Settings.ui:4403 ++msgid "Change opacity when a window gets closer than (px)" ++msgstr "不透明度を変更するウィンドウの距離 (px)" ++ ++#: Settings.ui:4433 ++#, no-c-format ++msgid "Change opacity to (%)" ++msgstr "不透明度を次に変更 (%)" ++ ++#: Settings.ui:4496 ++msgid "Opacity change animation duration (ms)" ++msgstr "不透明度変更アニメーションの継続時間 (ミリ秒)" ++ ++#: Settings.ui:4572 ++msgid "Display the main panel on" ++msgstr "メインパネルの表示" ++ ++#: Settings.ui:4614 ++msgid "Display panels on all monitors" ++msgstr "すべてのモニターにパネルを表示" ++ ++#: Settings.ui:4681 ++msgid "Panel Intellihide" ++msgstr "パネルの Intellihide" ++ ++#: Settings.ui:4745 ++msgid "Hide and reveal the panel according to preferences" ++msgstr "パネルを自動的に隠したり表示したりします" ++ ++#: Settings.ui:4798 ++msgid "Order and positions on monitor" ++msgstr "モニター上での順序と位置" ++ ++#: Settings.ui:4819 ++msgid "Apply changes to all monitors" ++msgstr "変更内容をすべてのモニターに適用する" ++ ++#: Settings.ui:4843 ++msgid "Panel screen position" ++msgstr "パネルの表示位置" ++ ++#: Settings.ui:4991 ++msgid "Position" ++msgstr "位置" ++ ++#: Settings.ui:5036 ++msgid "" ++"Panel Size\n" ++"(default is 48)" ++msgstr "" ++"パネルのサイズ\n" ++"(初期値は 48)" ++ ++#: Settings.ui:5086 ++msgid "" ++"App Icon Margin\n" ++"(default is 8)" ++msgstr "" ++"アプリのアイコンのマージン\n" ++"(初期値は 8)" ++ ++#: Settings.ui:5135 ++msgid "" ++"App Icon Padding\n" ++"(default is 4)" ++msgstr "" ++"アプリのアイコンのパディング\n" ++"(初期値は 4)" ++ ++#: Settings.ui:5208 ++msgid "Running indicator position" ++msgstr "実行中インジケーターの位置" ++ ++#: Settings.ui:5321 ++msgid "Running indicator style (Focused app)" ++msgstr "実行中インジケーターのスタイル (フォーカス)" ++ ++#: Settings.ui:5410 ++msgid "Running indicator style (Unfocused apps)" ++msgstr "実行中インジケーターのスタイル (非フォーカス)" ++ ++#: Settings.ui:5486 ++msgid "Override panel theme background color " ++msgstr "パネルテーマの背景色を上書き " ++ ++#: Settings.ui:5559 ++msgid "Override panel theme background opacity" ++msgstr "パネルテーマ背景の不透明度を上書き" ++ ++#: Settings.ui:5592 ++#, no-c-format ++msgid "Panel background opacity (%)" ++msgstr "パネル背景の不透明度 (%)" ++ ++#: Settings.ui:5626 ++msgid "Dynamic background opacity" ++msgstr "動的な背景透過" ++ ++#: Settings.ui:5641 ++msgid "Change opacity when a window gets close to the panel" ++msgstr "パネルにウィンドウが近づいたら不透明度を変更します" ++ ++#: Settings.ui:5748 ++msgid "Override panel theme gradient " ++msgstr "パネルテーマのグラデーションを上書き " ++ ++#: Settings.ui:5781 ++#, no-c-format ++msgid "Gradient top color and opacity (%)" ++msgstr "グラデーションの開始色と不透明度 (%)" ++ ++#: Settings.ui:5794 ++#, no-c-format ++msgid "Gradient bottom color and opacity (%)" ++msgstr "グラデーションの終了色と不透明度 (%)" ++ ++#: Settings.ui:5910 ++msgid "Style" ++msgstr "スタイル" ++ ++#: Settings.ui:6019 ++msgid "Show favorite applications on secondary panels" ++msgstr "お気に入りのアプリケーションをセカンダリーパネルに表示" ++ ++#: Settings.ui:6064 ++msgid "Show AppMenu button" ++msgstr "アプリケーションメニューボタンを表示" ++ ++#: Settings.ui:6078 ++msgid "Top Bar > Show App Menu must be enabled in Tweak Tool" ++msgstr "" ++"Tweak Tool で「トップバー」 > 「アプリケーションメニュー」を有効にする必要が" ++"あります" ++ ++#: Settings.ui:6164 ++msgid "Show window previews on hover" ++msgstr "マウスホバー時にウィンドウのプレビューを表示" ++ ++#: Settings.ui:6190 ++msgid "Show tooltip on hover" ++msgstr "マウスホバー時にツールチップを表示" ++ ++#: Settings.ui:6235 ++msgid "Isolate Workspaces" ++msgstr "アイコンをワークスペースごとに表示" ++ ++#: Settings.ui:6261 ++msgid "Isolate monitors" ++msgstr "モニターを分離" ++ ++#: Settings.ui:6306 ++msgid "Click empty space to close overview" ++msgstr "オーバービュー画面で何もないところをクリックしたらデスクトップに戻る" ++ ++#: Settings.ui:6338 ++msgid "Ungroup applications" ++msgstr "アプリケーションを非グループ化" ++ ++#: Settings.ui:6528 ++msgid "Toggle windows" ++msgstr "ウィンドウを切り替え" ++ ++#: Settings.ui:6587 ++msgid "Scroll panel action" ++msgstr "パネルスクロールの動作" ++ ++#: Settings.ui:6601 ++msgid "Behavior when mouse scrolling over the panel." ++msgstr "パネル上でマウススクロールしたときの挙動です。" ++ ++#: Settings.ui:6630 ++msgid "Scroll icon action" ++msgstr "アイコンスクロールの動作" ++ ++#: Settings.ui:6644 ++msgid "Behavior when mouse scrolling over an application icon." ++msgstr "アプリアイコン上でマウススクロールしたときの挙動です。" ++ ++#: Settings.ui:6695 Settings.ui:6712 ++msgid "Cycle windows" ++msgstr "ウィンドウを循環表示" ++ ++#: Settings.ui:6696 ++msgid "Change volume" ++msgstr "音量を変更" ++ ++#: Settings.ui:6713 ++msgid "Same as panel" ++msgstr "パネルと同様" ++ ++#: Settings.ui:6803 ++msgid "Use hotkeys to activate apps" ++msgstr "ホットキーを使用してアプリを起動" ++ ++#: Settings.ui:6886 ++msgid "Action" ++msgstr "動作" ++ ++#: Settings.ui:6933 ++msgid "" ++"Tray Font Size\n" ++"(0 = theme default)" ++msgstr "" ++"トレイのフォントサイズ\n" ++"(0 = テーマの既定値)" ++ ++#: Settings.ui:6964 ++msgid "" ++"LeftBox Font Size\n" ++"(0 = theme default)" ++msgstr "" ++"LeftBox のフォントサイズ\n" ++"(0 = テーマの既定値)" ++ ++#: Settings.ui:7037 ++msgid "" ++"Tray Item Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"トレイアイテムのパディング\n" ++"(-1 = テーマの既定値)" ++ ++#: Settings.ui:7068 ++msgid "" ++"Status Icon Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"ステータスアイコンのパディング\n" ++"(-1 = テーマの既定値)" ++ ++#: Settings.ui:7099 ++msgid "" ++"LeftBox Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"LeftBox のパディング\n" ++"(-1 = テーマの既定値)" ++ ++#: Settings.ui:7170 ++msgid "Animate switching applications" ++msgstr "アプリケーション切り替え時のアニメーション効果" ++ ++#: Settings.ui:7207 ++msgid "Animate launching new windows" ++msgstr "新しいウィンドウを開くときのアニメーション効果" ++ ++#: Settings.ui:7258 ++msgid "Keep original gnome-shell dash (overview)" ++msgstr "オリジナルの GNOME Shell Dash を維持 (オーバービュー画面)" ++ ++#: Settings.ui:7283 ++msgid "Force Activities hot corner on primary monitor" ++msgstr "プライマリーモニターのアクティビティホットコーナーを強制" ++ ++#: Settings.ui:7308 ++msgid "Activate panel menu buttons (e.g. date menu) on click only" ++msgstr "パネルの日付メニューやシステムメニューをクリック時のみ有効化" ++ ++#: Settings.ui:7333 ++msgid "Keep original gnome-shell top panel" ++msgstr "オリジナルの GNOME Shell トップバーを維持" ++ ++#: Settings.ui:7400 ++msgid "App icon secondary (right-click) menu" ++msgstr "アプリアイコンのセカンダリー (右クリック) メニュー" ++ ++#: Settings.ui:7470 ++msgid "Fine-Tune" ++msgstr "微調整" ++ ++#: Settings.ui:7546 ++msgid "GitHub" ++msgstr "GitHub" ++ ++#: Settings.ui:7599 ++msgid "" ++"Use the buttons below to create a settings file from your current " ++"preferences that can be imported on a different machine." ++msgstr "" ++"以下のボタンを使用して現在の設定から設定ファイルを作成し、別のマシンにイン" ++"ポートできます。" ++ ++#: Settings.ui:7617 ++msgid "Export and import settings" ++msgstr "設定のエクスポートとインポート" ++ ++#: Settings.ui:7627 ++msgid "Export to file" ++msgstr "ファイルにエクスポート" ++ ++#: Settings.ui:7639 ++msgid "Import from file" ++msgstr "ファイルからインポート" ++ ++#: Settings.ui:7695 ++msgid "" ++"This allows you to update the extension directly from the GitHub repository." ++msgstr "GitHub のリポジトリから拡張機能を直接アップデートできます。" ++ ++#: Settings.ui:7714 ++msgid "Updates" ++msgstr "アップデート" ++ ++#: Settings.ui:7727 ++msgid "Periodically check for updates" ++msgstr "アップデートを定期的に確認" ++ ++#: Settings.ui:7755 ++msgid "Check now" ++msgstr "今すぐ確認" ++ ++#: Settings.ui:7779 ++msgid "" ++"Be aware, these official Dash to " ++"Panel releases might not be reviewed yet on extensions.gnome.org! Read more" ++msgstr "" ++"この機能でアップデートされる Dash to " ++"Panel は公式のものではありますが、まだ extensions.gnome.org でレビューされて" ++"いない可能性があることにご注意ください! 詳細はこちら" ++ ++#: appIcons.js:1502 ++msgid "Windows" ++msgstr "個のウィンドウ" ++ ++#: appIcons.js:1792 ++msgid "Power options" ++msgstr "電源オプション" ++ ++#: appIcons.js:1797 ++msgid "Event logs" ++msgstr "イベントログ" ++ ++#: appIcons.js:1802 ++msgid "System" ++msgstr "システム" ++ ++#: appIcons.js:1807 ++msgid "Device Management" ++msgstr "デバイス管理" ++ ++#: appIcons.js:1812 ++msgid "Disk Management" ++msgstr "ディスク管理" ++ ++#: appIcons.js:1826 ++msgid "Terminal" ++msgstr "端末" ++ ++#: appIcons.js:1831 ++msgid "System monitor" ++msgstr "システムモニター" ++ ++#: appIcons.js:1836 ++msgid "Files" ++msgstr "ファイル" ++ ++#: appIcons.js:1841 ++msgid "Extensions" ++msgstr "拡張機能" ++ ++#: appIcons.js:1851 ++msgid "Unlock taskbar" ++msgstr "タスクバーをロック解除" ++ ++#: appIcons.js:1851 ++msgid "Lock taskbar" ++msgstr "タスクバーをロック" ++ ++#: appIcons.js:1856 ++msgid "Dash to Panel Settings" ++msgstr "Dash to Panel の設定" ++ ++#: appIcons.js:1869 ++msgid "Restore Windows" ++msgstr "ウィンドウを復元" ++ ++#: appIcons.js:1869 ++msgid "Show Desktop" ++msgstr "デスクトップを表示" ++ ++#: panel.js:201 ++msgid "Top Bar" ++msgstr "トップバー" ++ ++#: prefs.js:206 ++msgid "Show Desktop button height (px)" ++msgstr "デスクトップ表示ボタンの高さ (px)" ++ ++#: prefs.js:206 ++msgid "Show Desktop button width (px)" ++msgstr "デスクトップ表示ボタンの幅 (px)" ++ ++#: prefs.js:218 ++msgid "Unavailable when gnome-shell top panel is present" ++msgstr "GNOME Shell のトップバーが表示されている場合は利用できません" ++ ++#: prefs.js:293 ++msgid "Show Applications button" ++msgstr "アプリケーション表示ボタン" ++ ++#: prefs.js:294 ++msgid "Activities button" ++msgstr "アクティビティボタン" ++ ++#: prefs.js:295 ++msgid "Taskbar" ++msgstr "タスクバー" ++ ++#: prefs.js:296 ++msgid "Date menu" ++msgstr "日付メニュー" ++ ++#: prefs.js:297 ++msgid "System menu" ++msgstr "システムメニュー" ++ ++#: prefs.js:298 ++msgid "Left box" ++msgstr "左ボックス" ++ ++#: prefs.js:299 ++msgid "Center box" ++msgstr "中央ボックス" ++ ++#: prefs.js:300 ++msgid "Right box" ++msgstr "右ボックス" ++ ++#: prefs.js:301 ++msgid "Desktop button" ++msgstr "デスクトップボタン" ++ ++#: prefs.js:307 ++msgid "Move up" ++msgstr "上へ移動" ++ ++#: prefs.js:309 ++msgid "Move down" ++msgstr "下へ移動" ++ ++#: prefs.js:311 ++msgid "Visible" ++msgstr "表示" ++ ++#: prefs.js:312 ++msgid "Select element position" ++msgstr "要素の位置を選択してください" ++ ++#: prefs.js:323 ++msgid "Stacked to top" ++msgstr "上寄せ" ++ ++#: prefs.js:323 ++msgid "Stacked to left" ++msgstr "左寄せ" ++ ++#: prefs.js:324 ++msgid "Stacked to bottom" ++msgstr "下寄せ" ++ ++#: prefs.js:324 ++msgid "Stacked to right" ++msgstr "右寄せ" ++ ++#: prefs.js:325 ++msgid "Centered" ++msgstr "中央" ++ ++#: prefs.js:326 ++msgid "Monitor Center" ++msgstr "モニターの中央" ++ ++#: prefs.js:345 ++msgid "More options" ++msgstr "その他のオプション" ++ ++#: prefs.js:369 ++msgid "Show Applications options" ++msgstr "アプリケーション表示のオプション" ++ ++#: prefs.js:426 ++msgid "Show Desktop options" ++msgstr "デスクトップ表示のオプション" ++ ++#: prefs.js:569 ++msgid "Running Indicator Options" ++msgstr "実行中インジケーターのオプション" ++ ++#: prefs.js:732 ++msgid "Monitor " ++msgstr "モニター " ++ ++#: prefs.js:887 ++msgid "Dynamic opacity options" ++msgstr "動的不透明度のオプション" ++ ++#: prefs.js:1030 ++msgid "Intellihide options" ++msgstr "Intellihide のオプション" ++ ++#: prefs.js:1157 ++msgid "Window preview options" ++msgstr "ウィンドウプレビューのオプション" ++ ++#: prefs.js:1443 ++msgid "Ungrouped application options" ++msgstr "アプリケーション非グループ化のオプション" ++ ++#: prefs.js:1603 ++msgid "Customize panel scroll behavior" ++msgstr "パネルスクロールの挙動のカスタマイズ" ++ ++#: prefs.js:1646 ++msgid "Customize icon scroll behavior" ++msgstr "アイコンスクロールの挙動のカスタマイズ" ++ ++#: prefs.js:1743 ++msgid "Advanced hotkeys options" ++msgstr "高度なホットキーのオプション" ++ ++#: prefs.js:1777 ++msgid "Secondary Menu Options" ++msgstr "右クリックメニューのオプション" ++ ++#: Settings.ui:7448 prefs.js:1819 ++msgid "Advanced Options" ++msgstr "高度なオプション" ++ ++#: prefs.js:1922 ++msgid "Export settings" ++msgstr "設定のエクスポート" ++ ++#: prefs.js:1939 ++msgid "Import settings" ++msgstr "設定のインポート" ++ ++#: update.js:48 ++msgid "Unavailable when installed from extensions.gnome.org" ++msgstr "extensions.gnome.org からインストールした場合は利用できません" ++ ++#: update.js:62 ++#, javascript-format ++msgid "Version %s (%s) is available" ++msgstr "バージョン %s (%s) が利用可能です" ++ ++#: update.js:63 ++msgid "Details" ++msgstr "詳細" ++ ++#: update.js:64 ++msgid "Update" ++msgstr "アップデート" ++ ++#: update.js:67 ++msgid "Already up to date" ++msgstr "すでに最新です" ++ ++#: update.js:75 ++msgid "Error: " ++msgstr "エラー: " ++ ++#: update.js:168 ++msgid "Update successful, please log out/in" ++msgstr "アップデート成功: ログインしなおしてください" ++ ++#: update.js:169 ++msgid "Log out" ++msgstr "ログアウト" ++ ++#: update.js:173 ++msgid "Update successful, please restart GNOME Shell" ++msgstr "アップデート成功: GNOME Shell を再起動してください" ++ ++#: update.js:174 ++msgid "Restart GNOME Shell" ++msgstr "GNOME Shell を再起動" ++ ++#: update.js:174 ++msgid "Restarting GNOME Shell..." ++msgstr "GNOME Shell を再起動しています..." ++ ++#: windowPreview.js:934 ++msgid "Move to current Workspace" ++msgstr "現在のワークスペースに移動" ++ + #~ msgid "Application" + #~ msgstr "アプリケーション" + +@@ -1267,3 +2518,122 @@ msgstr "デスクトップにマウントしたドライブを表示します。 + + #~ msgid "Configure display settings..." + #~ msgstr "ディスプレイの設定..." ++ ++#~ msgid "Display favorite applications on all monitors" ++#~ msgstr "すべてのモニターにお気に入りのアプリケーションを表示" ++ ++#~ msgid "Display the clock on all monitors" ++#~ msgstr "すべてのモニターに時計を表示" ++ ++#~ msgid "Display the status menu on all monitors" ++#~ msgstr "すべてのモニターにステータスメニューを表示" ++ ++#~ msgid "Taskbar position" ++#~ msgstr "タスクバーの位置" ++ ++#~ msgid "Clock location" ++#~ msgstr "時計の位置" ++ ++#~ msgid "Top, with plugin icons collapsed to bottom" ++#~ msgstr "上 (プラグインアイコンは下寄せ)" ++ ++#~ msgid "Left, with plugin icons collapsed to right" ++#~ msgstr "左 (プラグインアイコンは右寄せ)" ++ ++#~ msgid "Top, with fixed center plugin icons" ++#~ msgstr "上 (プラグインアイコンは中央に固定)" ++ ++#~ msgid "Left, with fixed center plugin icons" ++#~ msgstr "左 (プラグインアイコンは中央に固定)" ++ ++#~ msgid "Top, with floating center plugin icons" ++#~ msgstr "上 (プラグインアイコンは中央かつ非固定)" ++ ++#~ msgid "Left, with floating center plugin icons" ++#~ msgstr "左 (プラグインアイコンは中央かつ非固定)" ++ ++#~ msgid "Center, fixed in middle of monitor" ++#~ msgstr "中央 (モニターの中央に固定)" ++ ++#~ msgid "Center, floating between top and bottom elements" ++#~ msgstr "中央 (上側と下側のエレメント間に表示)" ++ ++#~ msgid "Center, floating between left and right elements" ++#~ msgstr "中央 (右側と左側のエレメント間に表示)" ++ ++#~ msgid "Top of plugin icons" ++#~ msgstr "プラグインアイコンの上" ++ ++#~ msgid "Left of plugin icons" ++#~ msgstr "プラグインアイコンの左" ++ ++#~ msgid "Bottom of plugin icons" ++#~ msgstr "プラグインアイコンの下" ++ ++#~ msgid "Right of plugin icons" ++#~ msgstr "プラグインアイコンの右" ++ ++#~ msgid "Top of system indicators" ++#~ msgstr "システムインジケーターの上" ++ ++#~ msgid "Left of system indicators" ++#~ msgstr "システムインジケーターの左" ++ ++#~ msgid "Bottom of system indicators" ++#~ msgstr "システムインジケーターの下" ++ ++#~ msgid "Right of system indicators" ++#~ msgstr "システムインジケーターの右" ++ ++#~ msgid "Left of taskbar" ++#~ msgstr "タスクバーの左" ++ ++#~ msgid "Bottom of taskbar" ++#~ msgstr "タスクバーの下" ++ ++#~ msgid "Right of taskbar" ++#~ msgstr "タスクバーの右" ++ ++#~ msgid "Multi-monitors options" ++#~ msgstr "マルチモニターのオプション" ++ ++#~ msgid "Panel position" ++#~ msgstr "パネルの位置" ++ ++#~ msgid "Panel is shown on the Bottom or Top of the screen." ++#~ msgstr "パネルは画面の下か上に表示されます。" ++ ++#~ msgid "48" ++#~ msgstr "48" ++ ++#~ msgid "Panel size" ++#~ msgstr "パネルのサイズ" ++ ++#~ msgid "Set the size of the panel." ++#~ msgstr "パネルのサイズをセットします。" ++ ++#~ msgid "Dot position" ++#~ msgstr "ドットの位置" ++ ++#~ msgid "Running indicators are shown on the Bottom or Top of the screen." ++#~ msgstr "実行中インジケーターは画面の下か上に表示されます。" ++ ++#~ msgid "Style of the running indicator (focused)" ++#~ msgstr "実行中インジケーターのスタイル (フォーカス)" ++ ++#~ msgid "" ++#~ "Style of the running indicator for the icon for the currently focused " ++#~ "application" ++#~ msgstr "" ++#~ "現在フォーカスがあるアプリケーションのアイコンの実行中インジケーターのスタ" ++#~ "イル" ++ ++#~ msgid "Style of the running indicator (unfocused)" ++#~ msgstr "実行中インジケーターのスタイル (非フォーカス)" ++ ++#~ msgid "" ++#~ "Style of the running indicator for the icon for applications which are " ++#~ "not currently focused" ++#~ msgstr "" ++#~ "現在フォーカスがないアプリケーションのアイコンの実行中インジケーターのスタ" ++#~ "イル" +diff --git a/po/kk.po b/po/kk.po +index 8592cc99..ce8d9822 100644 +--- a/po/kk.po ++++ b/po/kk.po +@@ -1,10 +1,19 @@ ++# #-#-#-#-# kk.po (gnome-shell-extensions master) #-#-#-#-# + # Kazakh translation for gnome-shell-extensions. + # Copyright (C) 2013 gnome-shell-extensions's COPYRIGHT HOLDER + # This file is distributed under the same license as the gnome-shell-extensions package. + # Baurzhan Muftakhidinov , 2013-2020. + # ++# #-#-#-#-# kk.po (dash-to-panel master) #-#-#-#-# ++# Kazakh translation for dash-to-panel ++# Copyright (c) 2017 dash-to-panel authors. ++# This file is distributed under the same license as the dash-to-panel package. ++# Baurzhan Muftakhidinov , 2017-2018. ++# ++#, fuzzy + msgid "" + msgstr "" ++"#-#-#-#-# kk.po (gnome-shell-extensions master) #-#-#-#-#\n" + "Project-Id-Version: gnome-shell-extensions master\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/" + "issues\n" +@@ -17,6 +26,19 @@ msgstr "" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" + "X-Generator: Poedit 2.3.1\n" ++"#-#-#-#-# kk.po (dash-to-panel master) #-#-#-#-#\n" ++"Project-Id-Version: dash-to-panel master\n" ++"Report-Msgid-Bugs-To: \n" ++"POT-Creation-Date: 2018-02-02 21:29+0500\n" ++"PO-Revision-Date: 2018-02-03 15:22+0500\n" ++"Last-Translator: Baurzhan Muftakhidinov \n" ++"Language-Team: Kazakh \n" ++"Language: kk\n" ++"MIME-Version: 1.0\n" ++"Content-Type: text/plain; charset=utf-8\n" ++"Content-Transfer-Encoding: 8bit\n" ++"Plural-Forms: nplurals=1; plural=0;\n" ++"X-Generator: Poedit 2.0.3\n" + + #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3 + msgid "GNOME Classic" +@@ -259,6 +281,578 @@ msgstr "Жұмыс орны %d" + msgid "Add Workspace" + msgstr "Жұмыс орнын қосу" + ++#: prefs.js:295 ++msgid "Running Indicator Options" ++msgstr "Орындалып тұрған индикатор баптаулары" ++ ++#: prefs.js:302 prefs.js:447 prefs.js:499 prefs.js:608 prefs.js:684 ++#: prefs.js:753 prefs.js:829 prefs.js:871 ++msgid "Reset to defaults" ++msgstr "Бастапқы мәндерге тастау" ++ ++#: prefs.js:440 ++msgid "Show Desktop options" ++msgstr "Жұмыс үстел баптауларын көрсету" ++ ++#: prefs.js:492 ++msgid "Window preview options" ++msgstr "Терезе кіші көрінісі баптаулары" ++ ++#: prefs.js:601 ++msgid "Ungrouped application options" ++msgstr "Топталмаған қолданба баптаулары" ++ ++#: prefs.js:677 ++msgid "Customize middle-click behavior" ++msgstr "Орта шерту әрекетін баптау" ++ ++#: prefs.js:746 ++msgid "Advanced hotkeys options" ++msgstr "Кеңейтілген жарлық баптаулары" ++ ++#: prefs.js:822 ++msgid "Secondary Menu Options" ++msgstr "Қосымша мәзір баптаулары" ++ ++#: prefs.js:864 Settings.ui.h:113 ++msgid "Advanced Options" ++msgstr "Кеңейтілген баптаулар" ++ ++#: appIcons.js:1179 ++msgid "Show Details" ++msgstr "Ақпаратын көрсету" ++ ++#: appIcons.js:1198 ++msgid "New Window" ++msgstr "Жаңа терезе" ++ ++#: appIcons.js:1198 appIcons.js:1260 appIcons.js:1262 Settings.ui.h:8 ++msgid "Quit" ++msgstr "Шығу" ++ ++#: appIcons.js:1262 ++msgid "Windows" ++msgstr "Терезелер" ++ ++#: appIcons.js:1421 ++msgid "Dash to Panel Settings" ++msgstr "Dash to Panel баптаулары" ++ ++#: appIcons.js:1428 ++msgid "Restore Windows" ++msgstr "Терезелерді қалпына келтіру" ++ ++#: appIcons.js:1428 ++msgid "Show Desktop" ++msgstr "Жұмыс үстелді көрсету" ++ ++#: Settings.ui.h:1 ++msgid "" ++"When set to minimize, double clicking minimizes all the windows of the " ++"application." ++msgstr "" ++"Қайыруға орнатылған кезде, қос шерту нәтижесінде қолданбаның барлық " ++"терезелерін қайырады." ++ ++#: Settings.ui.h:2 ++msgid "Shift+Click action" ++msgstr "Shift+Click әрекеті" ++ ++#: Settings.ui.h:3 ++msgid "Raise window" ++msgstr "Терезені көтеру" ++ ++#: Settings.ui.h:4 ++msgid "Minimize window" ++msgstr "Терезені минималды қылу" ++ ++#: Settings.ui.h:5 ++msgid "Launch new instance" ++msgstr "Жаңа экземплярды жөнелту" ++ ++#: Settings.ui.h:6 ++msgid "Cycle through windows" ++msgstr "Терезелер арасында циклмен ауысу" ++ ++#: Settings.ui.h:7 ++msgid "Cycle windows + minimize" ++msgstr "Терезелер арасында циклмен ауысу + қайыру" ++ ++#: Settings.ui.h:9 ++msgid "Behavior for Middle-Click." ++msgstr "Орта батырманың мінез-құлығы." ++ ++#: Settings.ui.h:10 ++msgid "Middle-Click action" ++msgstr "Орта батырма әрекеті" ++ ++#: Settings.ui.h:11 ++msgid "Behavior for Shift+Middle-Click." ++msgstr "Shift+Орта батырманың мінез-құлығы." ++ ++#: Settings.ui.h:12 ++msgid "Shift+Middle-Click action" ++msgstr "Shift+Орта батырма әрекеті" ++ ++#: Settings.ui.h:13 ++msgid "Integrate AppMenu items" ++msgstr "Қолданбалар мәзірі нәрселерін интеграциялау" ++ ++#: Settings.ui.h:14 ++msgid "Show Details menu item" ++msgstr "Ақпаратын көрсету мәзір элементі" ++ ++#: Settings.ui.h:15 ++msgid "Highlight focused application" ++msgstr "Фокустағы қолданбаларды түспен ерекшелеу" ++ ++#: Settings.ui.h:16 ++msgid "Highlight color" ++msgstr "Ерекшелеу түсі" ++ ++#: Settings.ui.h:17 ++msgid "Highlight opacity" ++msgstr "Ерекшелеудің мөлдірсіздігі" ++ ++#: Settings.ui.h:18 ++msgid "5" ++msgstr "5" ++ ++#: Settings.ui.h:19 ++msgid "Indicator height (px)" ++msgstr "Индикатор биіктігі (пикс)" ++ ++#: Settings.ui.h:20 ++msgid "0" ++msgstr "0" ++ ++#: Settings.ui.h:21 ++msgid "Indicator color - Override Theme" ++msgstr "Индикатор түсі - теманы үстінен басу" ++ ++#: Settings.ui.h:22 ++msgid "1 window open (or ungrouped)" ++msgstr "1 терезе ашық (немесе топталмаған)" ++ ++#: Settings.ui.h:23 ++msgid "Apply to all" ++msgstr "Барлығы үшін іске асыру" ++ ++#: Settings.ui.h:24 ++msgid "2 windows open" ++msgstr "2 терезе ашық" ++ ++#: Settings.ui.h:25 ++msgid "3 windows open" ++msgstr "3 терезе ашық" ++ ++#: Settings.ui.h:26 ++msgid "4+ windows open" ++msgstr "4+ терезе ашық" ++ ++#: Settings.ui.h:27 ++msgid "Use different for unfocused" ++msgstr "Фокустағы емес үшін басқаны қолдану" ++ ++#: Settings.ui.h:28 ++msgid "Font size (px) of the application titles (default is 14)" ++msgstr "Қолданба атауының қарібі (пикс, бастапқы мәні 14)" ++ ++#: Settings.ui.h:29 ++msgid "Font color of the application titles" ++msgstr "Қолданба атауының қаріп түсі" ++ ++#: Settings.ui.h:30 ++msgid "Maximum width (px) of the application titles (default is 160)" ++msgstr "Қолданба атауының максималды ені (пикс, бастапқы мәні 160)" ++ ++#: Settings.ui.h:31 ++msgid "Use a fixed width for the application titles" ++msgstr "Қолданба атауы үшін біркелкі енді қолдану" ++ ++#: Settings.ui.h:32 ++msgid "" ++"The application titles all have the same width, even if their texts are " ++"shorter than the maximum width. The maximum width value is used as the fixed " ++"width." ++msgstr "" ++"Қолданба атаулары үшін біркелкі енді қолдану, олардың мәтіні максималды " ++"енінен кіші болса да. Максималды мәні тұрақты ені ретінде қолданылады." ++ ++#: Settings.ui.h:33 ++msgid "Display running indicators on unfocused applications" ++msgstr "Фокустағы емес қолданбалардың орындалу индикаторын көрсету" ++ ++#: Settings.ui.h:34 ++msgid "Use the favorite icons as application launchers" ++msgstr "Таңдамалы таңбашаларды қолданба жөнелткіштері ретінде қолдану" ++ ++#: Settings.ui.h:35 ++msgid "Preview timeout on icon leave (ms)" ++msgstr "Таңбашадан кеткен кезде кіші көріністі көрсету уақыты (мс)" ++ ++#: Settings.ui.h:36 ++msgid "" ++"If set too low, the window preview of running applications may seem to close " ++"too quickly when trying to enter the popup. If set too high, the preview may " ++"linger too long when moving to an adjacent icon." ++msgstr "" ++"Мәні тым аз болса, кіші көрініске өту талабын жасау кезінде орындалып тұрған " ++"қолданбаның кіші көрінісі тым жылдам жабылуы мүмкін. Мәні тым үлкен болса, " ++"көрші таңбашаға ауысу кезінде ағымдағы кіші көрініс ұзақ уақыт бойы " ++"көрсетілуі мүмкін." ++ ++#: Settings.ui.h:37 ++msgid "Time (ms) before showing (100 is default)" ++msgstr "Көрсету алдындағы уақыт (мс) (бастапқы шамасы 100)" ++ ++#: Settings.ui.h:38 ++msgid "Enable window peeking" ++msgstr "Терезелерді анықтауды іске қосу" ++ ++#: Settings.ui.h:39 ++msgid "" ++"When hovering over a window preview for some time, the window gets " ++"distinguished." ++msgstr "" ++"Курсор терезенің кіші көрінісі үстінен біраз уақыт бойы өтсе, ол терезе " ++"анықталатын болады." ++ ++#: Settings.ui.h:40 ++msgid "Enter window peeking mode timeout (ms)" ++msgstr "Терезені анықтауды кідіріс уақытын енгізу (мс)" ++ ++#: Settings.ui.h:41 ++msgid "" ++"Time of inactivity while hovering over a window preview needed to enter the " ++"window peeking mode." ++msgstr "" ++"Терезені анықтау үшін курсор терезенің үстінен қанша уақыт бойы аялдау керек." ++ ++#: Settings.ui.h:42 ++msgid "Window peeking mode opacity" ++msgstr "Терезелерді анықтау режимінің мөлдірсіздігі" ++ ++#: Settings.ui.h:43 ++msgid "" ++"All windows except for the peeked one have their opacity set to the same " ++"value." ++msgstr "" ++"Анықталған терезеден басқаларының мөлдірсіздігі бастапқы шамасына тең болады." ++ ++#: Settings.ui.h:44 ++msgid "Middle click to close window" ++msgstr "Терезені жабу үшін орта шерту" ++ ++#: Settings.ui.h:45 ++msgid "Middle click on the preview to close the window." ++msgstr "Терезені жабу үшін кіші көріністе орта шерту." ++ ++#: Settings.ui.h:46 ++msgid "Super" ++msgstr "Super" ++ ++#: Settings.ui.h:47 ++msgid "Super + Alt" ++msgstr "Super + Alt" ++ ++#: Settings.ui.h:48 ++msgid "Hotkeys prefix" ++msgstr "Ыстық пернелер префиксі" ++ ++#: Settings.ui.h:49 ++msgid "Hotkeys will either be Super+Number or Super+Alt+Num" ++msgstr "Ыстық пернелер Super+Сан or Super+Alt+Сан болады" ++ ++#: Settings.ui.h:50 ++msgid "Never" ++msgstr "Ешқашан" ++ ++#: Settings.ui.h:51 ++msgid "Show temporarily" ++msgstr "Уақытша көрсету" ++ ++#: Settings.ui.h:52 ++msgid "Always visible" ++msgstr "Әрқашан көрінеді" ++ ++#: Settings.ui.h:53 ++msgid "Number overlay" ++msgstr "Цифрлық оверлей" ++ ++#: Settings.ui.h:54 ++msgid "" ++"Temporarily show the application numbers over the icons when using the " ++"hotkeys." ++msgstr "" ++"Ыстық пернелерді көрсету кезінде таңбашалардың үстінен өткізгенде қолданба " ++"нөмірлерін уақытша көрсету." ++ ++#: Settings.ui.h:55 ++msgid "Hide timeout (ms)" ++msgstr "Жасыру кідірісі (мс)" ++ ++#: Settings.ui.h:56 ++msgid "Shortcut to show the overlay for 2 seconds" ++msgstr "Оверлейді 2 секундқа көрсету үшін пернетақта жарлығы" ++ ++#: Settings.ui.h:57 ++msgid "Syntax: , , , " ++msgstr "Синтаксисі: , , , " ++ ++#: Settings.ui.h:58 ++msgid "Show Desktop button width (px)" ++msgstr "Жұмыс үстелі батырмасының (пикс)" ++ ++#: Settings.ui.h:59 ++msgid "Panel screen position" ++msgstr "Панельдің экрандағы орны" ++ ++#: Settings.ui.h:60 ++msgid "Bottom" ++msgstr "Төмен" ++ ++#: Settings.ui.h:61 ++msgid "Top" ++msgstr "Жоғары" ++ ++#: Settings.ui.h:62 ++msgid "" ++"Panel Size\n" ++"(default is 48)" ++msgstr "" ++"Панель өлшемі\n" ++"(бастапқы мәні 48)" ++ ++#: Settings.ui.h:64 ++msgid "" ++"App Icon Margin\n" ++"(default is 8)" ++msgstr "" ++"Қолданба таңбашасының шет өрісі\n" ++"(бастапқы мәні 8)" ++ ++#: Settings.ui.h:66 ++msgid "Running indicator position" ++msgstr "Орындалып тұрған индикатор орны" ++ ++#: Settings.ui.h:67 ++msgid "Running indicator style (Focused app)" ++msgstr "Орындалып тұрған индикатордың стилі (фокустегі қолданба)" ++ ++#: Settings.ui.h:68 ++msgid "Dots" ++msgstr "Нүктелер" ++ ++#: Settings.ui.h:69 ++msgid "Squares" ++msgstr "Шаршылар" ++ ++#: Settings.ui.h:70 ++msgid "Dashes" ++msgstr "Штрихтер" ++ ++#: Settings.ui.h:71 ++msgid "Segmented" ++msgstr "Сегменттелген" ++ ++#: Settings.ui.h:72 ++msgid "Solid" ++msgstr "Бүтін" ++ ++#: Settings.ui.h:73 ++msgid "Ciliora" ++msgstr "Ciliora" ++ ++#: Settings.ui.h:74 ++msgid "Metro" ++msgstr "Metro" ++ ++#: Settings.ui.h:75 ++msgid "Running indicator style (Unfocused apps)" ++msgstr "Орындалып тұрған индикатордың стилі (фокустегі емес қолданба)" ++ ++#: Settings.ui.h:76 ++msgid "Clock location" ++msgstr "Сағаттың орналасуы" ++ ++#: Settings.ui.h:77 ++msgid "Natural" ++msgstr "Табиғи" ++ ++#: Settings.ui.h:78 ++msgid "Left of status menu" ++msgstr "Қалып-күй мәзірінің сол жағы" ++ ++#: Settings.ui.h:79 ++msgid "Right of status menu" ++msgstr "Қалып-күй мәзірінің оң жағы" ++ ++#: Settings.ui.h:80 ++msgid "Taskbar position" ++msgstr "Тапсырмалар панелінің орны" ++ ++#: Settings.ui.h:81 ++msgid "Left side of panel" ++msgstr "Панельдің сол жағы" ++ ++#: Settings.ui.h:82 ++msgid "Centered in monitor" ++msgstr "Монитордың ортасында" ++ ++#: Settings.ui.h:83 ++msgid "Centered in content" ++msgstr "Құраманың ортасында" ++ ++#: Settings.ui.h:84 ++msgid "Position and Style" ++msgstr "Орны және стилі" ++ ++#: Settings.ui.h:85 ++msgid "Show favorite applications" ++msgstr "Таңдамалы қолданбаларды көрсету" ++ ++#: Settings.ui.h:86 ++msgid "Show Applications icon" ++msgstr "Қолданбалар таңбашасын көрсету" ++ ++#: Settings.ui.h:87 ++msgid "Animate Show Applications." ++msgstr "Қолданбаларды көрсету анимациясын іске қосу." ++ ++#: Settings.ui.h:88 ++msgid "Show Activities button" ++msgstr "Көрініс таңбашасын көрсету" ++ ++#: Settings.ui.h:89 ++msgid "Show Desktop button" ++msgstr "Жұмыс үстелі батырмасын көрсету" ++ ++#: Settings.ui.h:90 ++msgid "Show AppMenu button" ++msgstr "Қолданбалар мәзірі таңбашасын көрсету" ++ ++#: Settings.ui.h:91 ++msgid "Top Bar > Show App Menu must be enabled in Tweak Tool" ++msgstr "" ++"Кеңейтілген баптаулар (Tweak) сайманында Үстіндегі панель >Қолданбалар " ++"мәзірін көрсету іске қосылған болуы тиіс" ++ ++#: Settings.ui.h:92 ++msgid "Show window previews on hover" ++msgstr "Курсор үстінен өткен кезде, терезенің кіші көрінісін көрсету" ++ ++#: Settings.ui.h:93 ++msgid "Isolate Workspaces" ++msgstr "Жұмыс орындарын оқшаулау" ++ ++#: Settings.ui.h:94 ++msgid "Ungroup applications" ++msgstr "Қолданбаларды топтаудан босату" ++ ++#: Settings.ui.h:95 ++msgid "Behaviour when clicking on the icon of a running application." ++msgstr "Орындалып тұрған қолданбаның таңбашасына шерту кезіндегі мінез-құлығы." ++ ++#: Settings.ui.h:96 ++msgid "Click action" ++msgstr "Шерту әрекеті" ++ ++#: Settings.ui.h:97 ++msgid "" ++"Enable Super+(0-9) as shortcuts to activate apps. It can also be used " ++"together with Shift and Ctrl." ++msgstr "" ++"Super+(0-9) қолданбаларды белсендіру үшін жарлықтар ретінде іске қосу. " ++"Сонымен қатар, ол Shift пен Ctrl пернелерімен бірге қолданылуы мүмкін." ++ ++#: Settings.ui.h:98 ++msgid "Use hotkeys to activate apps" ++msgstr "Қолданбаларды белсендіру үшін ыстық пернелерді қолдану" ++ ++#: Settings.ui.h:99 ++msgid "Behavior" ++msgstr "Мінез-құлығы" ++ ++#: Settings.ui.h:100 ++msgid "" ++"Tray Font Size\n" ++"(0 = theme default)" ++msgstr "" ++"Трей қарібінің өлшемі\n" ++"(0 = теманың бастапқы өлшемі)" ++ ++#: Settings.ui.h:102 ++msgid "" ++"LeftBox Font Size\n" ++"(0 = theme default)" ++msgstr "" ++"Сол жақ аймағының қаріп өлшемі\n" ++"(0 = теманың бастапқы өлшемі)" ++ ++#: Settings.ui.h:104 ++msgid "" ++"Tray Item Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"Трейдегі нәрсенің шегінісі\n" ++"(-1 = теманың бастапқы өлшемі)" ++ ++#: Settings.ui.h:106 ++msgid "" ++"Status Icon Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"Қалып-күй таңбашасының шегінісі\n" ++"(-1 = теманың бастапқы өлшемі)" ++ ++#: Settings.ui.h:108 ++msgid "" ++"LeftBox Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"Сол жақ аймағының шегінісі\n" ++"(-1 = теманың бастапқы өлшемі)" ++ ++#: Settings.ui.h:110 ++msgid "Animate switching applications" ++msgstr "Қолданбаларды ауыстыру анимациясын іске қосу" ++ ++#: Settings.ui.h:111 ++msgid "Animate launching new windows" ++msgstr "Қолданбаларды жөнелту анимациясын іске қосу" ++ ++#: Settings.ui.h:112 ++msgid "App icon secondary (right-click) menu" ++msgstr "Қолданба таңбашысының қосалқы (оң жақпен шерту) мәзірі" ++ ++#: Settings.ui.h:114 ++msgid "Fine-Tune" ++msgstr "Дәлдеп баптау" ++ ++#: Settings.ui.h:115 ++msgid "version: " ++msgstr "нұсқасы: " ++ ++#: Settings.ui.h:116 ++msgid "Github" ++msgstr "Github" ++ ++#: Settings.ui.h:117 ++msgid "" ++"This program comes with ABSOLUTELY NO WARRANTY.\n" ++"See the GNU General Public License, version 2 or later for details." ++msgstr "" ++"Бұл бағдарлама ЕШҚАНДАЙ КЕПІЛДЕМЕСІЗ таратылады.\n" ++"Көбірек білу үшін GNU General Public License, нұсқасы 2 немесе кейінірек " ++"қараңыз." ++ ++#: Settings.ui.h:119 ++msgid "About" ++msgstr "Осы туралы" ++ + #~ msgid "Application" + #~ msgstr "Қолданба" + +diff --git a/po/pl.po b/po/pl.po +index 7b26d43f..f5005a22 100644 +--- a/po/pl.po ++++ b/po/pl.po +@@ -1,5 +1,6 @@ + # #-#-#-#-# pl.po (gnome-shell-extensions) #-#-#-#-# + # #-#-#-#-# pl.po (gnome-shell-extensions) #-#-#-#-# ++# #-#-#-#-# pl.po (gnome-shell-extensions) #-#-#-#-# + # Polish translation for gnome-shell-extensions. + # Copyright © 2011-2020 the gnome-shell-extensions authors. + # This file is distributed under the same license as the gnome-shell-extensions package. +@@ -21,11 +22,17 @@ + # Piotr Drąg , 2018-2020. + # Aviary.pl , 2018-2020. + # ++# #-#-#-#-# pl.po (Dash to Panel) #-#-#-#-# ++# Dash to Panel polish translation ++# Copyright (c) 2017 Dash to Panel authors. ++# This file is distributed under the same license as the Dash to Panel package. ++# + #, fuzzy + msgid "" + msgstr "" + "#-#-#-#-# pl.po (gnome-shell-extensions) #-#-#-#-#\n" + "#-#-#-#-# pl.po (gnome-shell-extensions) #-#-#-#-#\n" ++"#-#-#-#-# pl.po (gnome-shell-extensions) #-#-#-#-#\n" + "Project-Id-Version: gnome-shell-extensions\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/" + "issues\n" +@@ -67,6 +74,20 @@ msgstr "" + "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" ++"#-#-#-#-# pl.po (Dash to Panel) #-#-#-#-#\n" ++"Project-Id-Version: Dash to Panel\n" ++"Report-Msgid-Bugs-To: \n" ++"POT-Creation-Date: 2019-10-11 12:32+0200\n" ++"PO-Revision-Date: 2019-10-11 12:34+0200\n" ++"Last-Translator: Alex \n" ++"Language-Team: \n" ++"Language: pl\n" ++"MIME-Version: 1.0\n" ++"Content-Type: text/plain; charset=UTF-8\n" ++"Content-Transfer-Encoding: 8bit\n" ++"X-Generator: Poedit 2.2.1\n" ++"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " ++"|| n%100>=20) ? 1 : 2);\n" + + #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3 + msgid "GNOME Classic" +@@ -321,19 +342,32 @@ msgstr "Podstawowy" + msgid "Secondary monitor " + msgstr "Drugorzędny " + +-#: prefs.js:305 Settings.ui.h:28 ++#: prefs.js:305 Settings.ui.h:28 Settings.ui.h:146 ++#, fuzzy + msgid "Right" +-msgstr "Po prawej" ++msgstr "" ++"#-#-#-#-# pl.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Po prawej\n" ++"#-#-#-#-# pl.po (Dash to Panel) #-#-#-#-#\n" ++"Prawo" + +-#: prefs.js:306 Settings.ui.h:25 ++#: prefs.js:306 Settings.ui.h:25 Settings.ui.h:145 ++#, fuzzy + msgid "Left" +-msgstr "Po lewej" ++msgstr "" ++"#-#-#-#-# pl.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Po lewej\n" ++"#-#-#-#-# pl.po (Dash to Panel) #-#-#-#-#\n" ++"Lewo" + + #: prefs.js:356 + msgid "Intelligent autohide customization" + msgstr "Dostosowanie automatycznego ukrywania" + +-#: prefs.js:363 prefs.js:556 prefs.js:612 ++#: prefs.js:363 prefs.js:556 prefs.js:612 prefs.js:371 prefs.js:569 ++#: prefs.js:712 prefs.js:837 prefs.js:904 prefs.js:992 prefs.js:1078 ++#: prefs.js:1325 prefs.js:1409 prefs.js:1474 prefs.js:1510 prefs.js:1607 ++#: prefs.js:1641 prefs.js:1683 + msgid "Reset to defaults" + msgstr "Przywróć domyślne" + +@@ -341,9 +375,14 @@ msgstr "Przywróć domyślne" + msgid "Show dock and application numbers" + msgstr "Wyświetlanie doku i numerów programów" + +-#: prefs.js:605 ++#: prefs.js:605 prefs.js:1402 ++#, fuzzy + msgid "Customize middle-click behavior" +-msgstr "Dostosowanie działania przycisków myszy" ++msgstr "" ++"#-#-#-#-# pl.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Dostosowanie działania przycisków myszy\n" ++"#-#-#-#-# pl.po (Dash to Panel) #-#-#-#-#\n" ++"Dostosuj działanie środkowego przycisku myszy" + + #: prefs.js:688 + msgid "Customize running indicators" +@@ -389,33 +428,53 @@ msgstr "Wysuń" + msgid "Unmount" + msgstr "Odmontuj" + +-#: Settings.ui.h:1 ++#: Settings.ui.h:1 Settings.ui.h:2 ++#, fuzzy + msgid "" + "When set to minimize, double clicking minimizes all the windows of the " + "application." + msgstr "" ++"#-#-#-#-# pl.po (gnome-shell-extensions) #-#-#-#-#\n" + "Wybranie zminimalizowania okna, umożliwia minimalizowanie wszystkich okien " +-"programu dwukrotnym kliknięciem" ++"programu dwukrotnym kliknięciem\n" ++"#-#-#-#-# pl.po (Dash to Panel) #-#-#-#-#\n" ++"Wybranie zminimalizowania okna umożliwia minimalizowanie wszystkich okien " ++"programu dwukrotnym kliknięciem." + +-#: Settings.ui.h:2 ++#: Settings.ui.h:2 Settings.ui.h:3 ++#, fuzzy + msgid "Shift+Click action" +-msgstr "Kliknięcia lewym przyciskiem + Shift" ++msgstr "" ++"#-#-#-#-# pl.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Kliknięcia lewym przyciskiem + Shift\n" ++"#-#-#-#-# pl.po (Dash to Panel) #-#-#-#-#\n" ++"Kliknięcie lewym przyciskiem + Shift" + + #: Settings.ui.h:3 + msgid "Raise window" + msgstr "Przywrócenie okna" + +-#: Settings.ui.h:4 ++#: Settings.ui.h:4 Settings.ui.h:5 + msgid "Minimize window" + msgstr "Zminimalizowanie okna" + +-#: Settings.ui.h:5 ++#: Settings.ui.h:5 Settings.ui.h:6 ++#, fuzzy + msgid "Launch new instance" +-msgstr "Otwarcie nowego okna" ++msgstr "" ++"#-#-#-#-# pl.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Otwarcie nowego okna\n" ++"#-#-#-#-# pl.po (Dash to Panel) #-#-#-#-#\n" ++"Uruchomienie nowego okna" + +-#: Settings.ui.h:6 ++#: Settings.ui.h:6 Settings.ui.h:7 ++#, fuzzy + msgid "Cycle through windows" +-msgstr "Przełączenie pomiędzy oknami" ++msgstr "" ++"#-#-#-#-# pl.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Przełączenie pomiędzy oknami\n" ++"#-#-#-#-# pl.po (Dash to Panel) #-#-#-#-#\n" ++"Przełączanie między oknami" + + #: Settings.ui.h:7 + msgid "Minimize or overview" +@@ -437,25 +496,46 @@ msgstr "Zminimalizowanie lub ekran podglądu" + msgid "Focus or show previews" + msgstr "Wyświetlenie podglądu okien" + +-#: Settings.ui.h:11 ++#: Settings.ui.h:11 appIcons.js:1398 appIcons.js:1458 appIcons.js:1460 ++#: Settings.ui.h:10 ++#, fuzzy + msgid "Quit" +-msgstr "Zakończenie działania" ++msgstr "" ++"#-#-#-#-# pl.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Zakończenie działania\n" ++"#-#-#-#-# pl.po (Dash to Panel) #-#-#-#-#\n" ++"Zamknięcie okna" + +-#: Settings.ui.h:12 ++#: Settings.ui.h:12 Settings.ui.h:11 ++#, fuzzy + msgid "Behavior for Middle-Click." +-msgstr "Konfiguruje działanie kliknięcia środkowym przyciskiem myszy" ++msgstr "" ++"#-#-#-#-# pl.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Konfiguruje działanie kliknięcia środkowym przyciskiem myszy\n" ++"#-#-#-#-# pl.po (Dash to Panel) #-#-#-#-#\n" ++"Konfiguruje działanie kliknięcia środkowym przyciskiem." + +-#: Settings.ui.h:13 ++#: Settings.ui.h:13 Settings.ui.h:12 ++#, fuzzy + msgid "Middle-Click action" +-msgstr "Kliknięcie środkowym przyciskiem" ++msgstr "" ++"#-#-#-#-# pl.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Kliknięcie środkowym przyciskiem\n" ++"#-#-#-#-# pl.po (Dash to Panel) #-#-#-#-#\n" ++"Akcja środkowego przycisku" + +-#: Settings.ui.h:14 ++#: Settings.ui.h:14 Settings.ui.h:13 ++#, fuzzy + msgid "Behavior for Shift+Middle-Click." + msgstr "" ++"#-#-#-#-# pl.po (gnome-shell-extensions) #-#-#-#-#\n" + "Konfiguruje działanie kliknięcia środkowym przyciskiem myszy z przytrzymanym " +-"klawiszem Shift" ++"klawiszem Shift\n" ++"#-#-#-#-# pl.po (Dash to Panel) #-#-#-#-#\n" ++"Konfiguruje działanie kliknięcia środkowym przyciskiem z przytrzymanym " ++"klawiszem Shift." + +-#: Settings.ui.h:15 ++#: Settings.ui.h:15 Settings.ui.h:14 + msgid "Shift+Middle-Click action" + msgstr "Kliknięcie środkowym przyciskiem + Shift" + +@@ -495,13 +575,23 @@ msgstr "Na wszystkich ekranach" + msgid "Position on screen" + msgstr "Położenie na ekranie" + +-#: Settings.ui.h:26 ++#: Settings.ui.h:26 Settings.ui.h:97 ++#, fuzzy + msgid "Bottom" +-msgstr "Na dole" ++msgstr "" ++"#-#-#-#-# pl.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Na dole\n" ++"#-#-#-#-# pl.po (Dash to Panel) #-#-#-#-#\n" ++"Dół" + +-#: Settings.ui.h:27 ++#: Settings.ui.h:27 Settings.ui.h:98 ++#, fuzzy + msgid "Top" +-msgstr "U góry" ++msgstr "" ++"#-#-#-#-# pl.po (gnome-shell-extensions) #-#-#-#-#\n" ++"U góry\n" ++"#-#-#-#-# pl.po (Dash to Panel) #-#-#-#-#\n" ++"Góra" + + #: Settings.ui.h:29 + msgid "" +@@ -535,13 +625,23 @@ msgstr "Ustalony rozmiar ikon: odsłanianie ikon przewijaniem" + msgid "Position and size" + msgstr "Położenie i rozmiar" + +-#: Settings.ui.h:36 ++#: Settings.ui.h:36 Settings.ui.h:182 ++#, fuzzy + msgid "Show favorite applications" +-msgstr "Ulubione programy" ++msgstr "" ++"#-#-#-#-# pl.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Ulubione programy\n" ++"#-#-#-#-# pl.po (Dash to Panel) #-#-#-#-#\n" ++"Pokaż ulubione programy" + +-#: Settings.ui.h:37 ++#: Settings.ui.h:37 Settings.ui.h:183 ++#, fuzzy + msgid "Show running applications" +-msgstr "Uruchomione programy" ++msgstr "" ++"#-#-#-#-# pl.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Uruchomione programy\n" ++"#-#-#-#-# pl.po (Dash to Panel) #-#-#-#-#\n" ++"Pokaż uruchomione programy" + + #: Settings.ui.h:38 + msgid "Isolate workspaces." +@@ -563,17 +663,27 @@ msgstr "" + "Przełącza widoczność przycisku programów. Można też skonfigurować za pomocą " + "narzędzia dostrajania lub witryny internetowej z rozszerzeniami." + +-#: Settings.ui.h:42 ++#: Settings.ui.h:42 Settings.ui.h:184 ++#, fuzzy + msgid "Show Applications icon" +-msgstr "Przycisk Wyświetl programy" ++msgstr "" ++"#-#-#-#-# pl.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Przycisk Wyświetl programy\n" ++"#-#-#-#-# pl.po (Dash to Panel) #-#-#-#-#\n" ++"Pokaż ikonę Programy" + + #: Settings.ui.h:43 + msgid "Move the applications button at the beginning of the dock." + msgstr "Przemieszczenie przycisku programów na początek doku" + +-#: Settings.ui.h:44 ++#: Settings.ui.h:44 Settings.ui.h:185 ++#, fuzzy + msgid "Animate Show Applications." +-msgstr "Animowanie przycisku Wyświetl programy" ++msgstr "" ++"#-#-#-#-# pl.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Animowanie przycisku Wyświetl programy\n" ++"#-#-#-#-# pl.po (Dash to Panel) #-#-#-#-#\n" ++"Animuj pokazanie programów." + + #: Settings.ui.h:45 + msgid "Show trash can" +@@ -587,23 +697,33 @@ msgstr "Pokaż zamontowane woluminy oraz urządzenia" + msgid "Launchers" + msgstr "Aktywatory" + +-#: Settings.ui.h:48 ++#: Settings.ui.h:48 Settings.ui.h:205 ++#, fuzzy + msgid "" + "Enable Super+(0-9) as shortcuts to activate apps. It can also be used " + "together with Shift and Ctrl." + msgstr "" ++"#-#-#-#-# pl.po (gnome-shell-extensions) #-#-#-#-#\n" + "Używa skrótu Super+(0-9) do uruchomienia aktywatorów. Można użyć z " +-"modyfikatorem Shift lub Ctrl." ++"modyfikatorem Shift lub Ctrl.\n" ++"#-#-#-#-# pl.po (Dash to Panel) #-#-#-#-#\n" ++"Konfigurowanie skrótów uruchamiania programów\n" ++"Super+(0-9) - możliwe użycie razem z Shift i Ctrl." + + #: Settings.ui.h:49 + msgid "Use keyboard shortcuts to activate apps" + msgstr "Uruchamianie aktywatorów skrótami klawiszowymi" + +-#: Settings.ui.h:50 ++#: Settings.ui.h:50 Settings.ui.h:195 ++#, fuzzy + msgid "Behaviour when clicking on the icon of a running application." +-msgstr "Określa działanie kliknięcia ikony uruchomionego programu" ++msgstr "" ++"#-#-#-#-# pl.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Określa działanie kliknięcia ikony uruchomionego programu\n" ++"#-#-#-#-# pl.po (Dash to Panel) #-#-#-#-#\n" ++"Reakcja na kliknięcie ikony aktywnego programu." + +-#: Settings.ui.h:51 ++#: Settings.ui.h:51 Settings.ui.h:196 + msgid "Click action" + msgstr "Działanie kliknięcia" + +@@ -615,17 +735,32 @@ msgstr "Określa działanie przewijania kółkiem ikony programu" + msgid "Scroll action" + msgstr "Działanie przewijania" + +-#: Settings.ui.h:55 ++#: Settings.ui.h:55 Settings.ui.h:202 ++#, fuzzy + msgid "Do nothing" +-msgstr "Brak" ++msgstr "" ++"#-#-#-#-# pl.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Brak\n" ++"#-#-#-#-# pl.po (Dash to Panel) #-#-#-#-#\n" ++"Nic nie rób" + +-#: Settings.ui.h:56 ++#: Settings.ui.h:56 Settings.ui.h:203 ++#, fuzzy + msgid "Switch workspace" +-msgstr "Przełączenie obszaru roboczego" ++msgstr "" ++"#-#-#-#-# pl.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Przełączenie obszaru roboczego\n" ++"#-#-#-#-# pl.po (Dash to Panel) #-#-#-#-#\n" ++"Przełącz ekran roboczy" + +-#: Settings.ui.h:57 ++#: Settings.ui.h:57 Settings.ui.h:194 ++#, fuzzy + msgid "Behavior" +-msgstr "Zachowanie" ++msgstr "" ++"#-#-#-#-# pl.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Zachowanie\n" ++"#-#-#-#-# pl.po (Dash to Panel) #-#-#-#-#\n" ++"Reakcja" + + #: Settings.ui.h:58 + msgid "" +@@ -659,33 +794,43 @@ msgstr "Wskaźniki ilości okien" + msgid "Default" + msgstr "Domyślnie" + +-#: Settings.ui.h:64 ++#: Settings.ui.h:64 Settings.ui.h:162 + msgid "Dots" + msgstr "Kropki" + +-#: Settings.ui.h:65 ++#: Settings.ui.h:65 Settings.ui.h:163 + msgid "Squares" + msgstr "Kwadraty" + +-#: Settings.ui.h:66 ++#: Settings.ui.h:66 Settings.ui.h:164 + msgid "Dashes" + msgstr "Kreski" + +-#: Settings.ui.h:67 ++#: Settings.ui.h:67 Settings.ui.h:165 ++#, fuzzy + msgid "Segmented" +-msgstr "Posegmentowane" ++msgstr "" ++"#-#-#-#-# pl.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Posegmentowane\n" ++"#-#-#-#-# pl.po (Dash to Panel) #-#-#-#-#\n" ++"Segmenty" + +-#: Settings.ui.h:68 ++#: Settings.ui.h:68 Settings.ui.h:166 ++#, fuzzy + msgid "Solid" +-msgstr "Nieprzerywane" ++msgstr "" ++"#-#-#-#-# pl.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Nieprzerywane\n" ++"#-#-#-#-# pl.po (Dash to Panel) #-#-#-#-#\n" ++"Ciągły" + +-#: Settings.ui.h:69 ++#: Settings.ui.h:167 + msgid "Ciliora" +-msgstr "" ++msgstr "Ciliora" + +-#: Settings.ui.h:70 ++#: Settings.ui.h:168 + msgid "Metro" +-msgstr "" ++msgstr "Metro" + + #: Settings.ui.h:71 + msgid "Set the background color for the dash." +@@ -699,9 +844,14 @@ msgstr "Kolor kokpitu" + msgid "Tune the dash background opacity." + msgstr "Modyfikuje zaciemnienie tła kokpitu" + +-#: Settings.ui.h:75 ++#: Settings.ui.h:75 Settings.ui.h:92 ++#, fuzzy + msgid "Fixed" +-msgstr "Ustalona" ++msgstr "" ++"#-#-#-#-# pl.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Ustalona\n" ++"#-#-#-#-# pl.po (Dash to Panel) #-#-#-#-#\n" ++"Stałe" + + #: Settings.ui.h:76 + msgid "Dynamic" +@@ -719,7 +869,7 @@ msgstr "Kąty proste narożników\n" + msgid "Appearance" + msgstr "Wygląd" + +-#: Settings.ui.h:81 ++#: Settings.ui.h:81 Settings.ui.h:225 + msgid "version: " + msgstr "wersja: " + +@@ -735,21 +885,33 @@ msgstr "Stworzony przez" + msgid "Webpage" + msgstr "Strona internetowa" + +-#: Settings.ui.h:85 ++#: Settings.ui.h:85 Settings.ui.h:236 ++#, fuzzy + msgid "" + "This program comes with ABSOLUTELY NO WARRANTY.\n" +-"See the GNU General Public License, version 2 or later for details." ++"See the GNU General Public License, version 2 or later for details." + msgstr "" ++"#-#-#-#-# pl.po (gnome-shell-extensions) #-#-#-#-#\n" + "Niniejszy program rozpowszechniany jest bez " + "jakiejkolwiek gwarancji.\n" + "Więcej informacji: Powszechna licencja publiczna GNU, wersja 2 lub późniejsza." +- +-#: Settings.ui.h:87 ++"a>.\n" ++"#-#-#-#-# pl.po (Dash to Panel) #-#-#-#-#\n" ++"Tego programu nie obejmuje ABSOLUTNIE ŻADNA GWARANCJA.\n" ++"Więcej informacji można znaleźć w licencji GNU General Public License, wersja 2 " ++"lub nowsza." ++ ++#: Settings.ui.h:87 Settings.ui.h:238 ++#, fuzzy + msgid "About" +-msgstr "O programie" ++msgstr "" ++"#-#-#-#-# pl.po (gnome-shell-extensions) #-#-#-#-#\n" ++"O programie\n" ++"#-#-#-#-# pl.po (Dash to Panel) #-#-#-#-#\n" ++"Informacje" + + #: Settings.ui.h:88 + msgid "Customize minimum and maximum opacity values" +@@ -763,9 +925,14 @@ msgstr "Minimalna nieprzejrzystość" + msgid "Maximum opacity" + msgstr "Maksymalna nieprzejrzystość" + +-#: Settings.ui.h:91 ++#: Settings.ui.h:91 Settings.ui.h:120 ++#, fuzzy + msgid "Number overlay" +-msgstr "Nakładka z numerem" ++msgstr "" ++"#-#-#-#-# pl.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Nakładka z numerem\n" ++"#-#-#-#-# pl.po (Dash to Panel) #-#-#-#-#\n" ++"Pokazywanie cyfr" + + #: Settings.ui.h:92 + msgid "" +@@ -787,7 +954,7 @@ msgstr "Wyświetla chwilowo dok po wciśnięciu skrótu klawiszowego" + msgid "Shortcut for the options above" + msgstr "Skrót klawiszowy dla powyższych poleceń" + +-#: Settings.ui.h:96 ++#: Settings.ui.h:96 Settings.ui.h:59 + msgid "Syntax: , , , " + msgstr "Składnia: , , , " + +@@ -819,7 +986,7 @@ msgstr "Wyświetla dok jeśli nie zakrywa okien programu" + msgid "Dodge windows" + msgstr "Ukrywanie przed oknami" + +-#: Settings.ui.h:104 ++#: Settings.ui.h:104 Settings.ui.h:49 + msgid "All windows" + msgstr "Wszystkie okna" + +@@ -939,7 +1106,7 @@ msgstr "Zmień tło…" + msgid "Display Settings" + msgstr "Ustawienia ekranu" + +-#: desktopGrid.js:360 ++#: desktopGrid.js:360 appIcons.js:1726 + msgid "Settings" + msgstr "Ustawienia" + +@@ -1027,8 +1194,1118 @@ msgstr "Zamontowane napędy" + msgid "Show mounted drives in the desktop." + msgstr "Wyświetla zamontowane napędy na pulpicie." + ++#: prefs.js:211 ++msgid "Top, with plugin icons collapsed to bottom" ++msgstr "Góra, ikony wtyczek wyrównane do prawej" ++ ++#: prefs.js:211 ++msgid "Left, with plugin icons collapsed to right" ++msgstr "Lewa, ikony wtyczek wyrównane do prawej" ++ ++#: prefs.js:212 ++msgid "Top, with fixed center plugin icons" ++msgstr "Góra, ze stałym wyśrodkowaniem ikon wtyczek" ++ ++#: prefs.js:212 ++msgid "Left, with fixed center plugin icons" ++msgstr "Lewa, ze stałym wyśrodkowaniem ikon wtyczek" ++ ++#: prefs.js:213 ++msgid "Top, with floating center plugin icons" ++msgstr "Góra, ze swobodnym wyśrodkowaniem ikon wtyczek" ++ ++#: prefs.js:213 ++msgid "Left, with floating center plugin icons" ++msgstr "Lewa, ze swobodnym wyśrodkowaniem ikon wtyczek" ++ ++#: prefs.js:214 ++msgid "Center, fixed in middle of monitor" ++msgstr "Środek, ze stałym wyśrodkowaniem na monitorze" ++ ++#: prefs.js:215 ++msgid "Center, floating between top and bottom elements" ++msgstr "Środek, z elementami swobodnymi między górą a dołem" ++ ++#: prefs.js:215 ++msgid "Center, floating between left and right elements" ++msgstr "Środek, z elementami swobodnymi między lewą a prawą stroną" ++ ++#: prefs.js:219 ++msgid "Top of plugin icons" ++msgstr "Górna strona ikon wtyczek" ++ ++#: prefs.js:219 ++msgid "Left of plugin icons" ++msgstr "Lewa strona ikon wtyczek" ++ ++#: prefs.js:220 ++msgid "Bottom of plugin icons" ++msgstr "Dolna strona ikon wtyczek" ++ ++#: prefs.js:220 ++msgid "Right of plugin icons" ++msgstr "Prawa strona ikon wtyczek" ++ ++#: prefs.js:221 ++msgid "Top of system indicators" ++msgstr "Górna strona menu systemowego" ++ ++#: prefs.js:221 ++msgid "Left of system indicators" ++msgstr "Lewa strona menu systemowego" ++ ++#: prefs.js:222 ++msgid "Bottom of system indicators" ++msgstr "Dolna strona menu systemowego" ++ ++#: prefs.js:222 ++msgid "Right of system indicators" ++msgstr "Prawa strona menu systemowego" ++ ++#: prefs.js:223 ++msgid "Top of taskbar" ++msgstr "Górna strona paska zadań" ++ ++#: prefs.js:223 ++msgid "Left of taskbar" ++msgstr "Lewa strona paska zadań" ++ ++#: prefs.js:224 ++msgid "Bottom of taskbar" ++msgstr "Dolna strona paska zadań" ++ ++#: prefs.js:224 ++msgid "Right of taskbar" ++msgstr "Prawa strona paska zadań" ++ ++#: prefs.js:230 ++msgid "Show Desktop button height (px)" ++msgstr "Wysokość przycisku Pokaż pulpit (px)" ++ ++#: prefs.js:230 ++msgid "Show Desktop button width (px)" ++msgstr "Szerokość przycisku Pokaż pulpit (px)" ++ ++#: prefs.js:364 ++msgid "Running Indicator Options" ++msgstr "Opcje wskaźnika aktywnych programów" ++ ++#: prefs.js:514 ++msgid "Default (Primary monitor)" ++msgstr "Domyślny (Główny monitor)" ++ ++#: prefs.js:517 ++msgid "Monitor " ++msgstr "Monitor " ++ ++#: prefs.js:562 ++msgid "Multi-monitors options" ++msgstr "Opcje wielu monitorów" ++ ++#: prefs.js:705 ++msgid "Dynamic opacity options" ++msgstr "Opcje dynamicznej przeźroczystości" ++ ++#: prefs.js:830 ++msgid "Intellihide options" ++msgstr "Opcje inteligentnego ukrywania" ++ ++#: prefs.js:897 ++msgid "Show Applications options" ++msgstr "Opcje wyświetlania programów" ++ ++#: prefs.js:985 ++msgid "Show Desktop options" ++msgstr "Pokaż opcje pulpitu" ++ ++#: prefs.js:1071 ++msgid "Window preview options" ++msgstr "Opcje podglądu okna" ++ ++#: prefs.js:1318 ++msgid "Ungrouped application options" ++msgstr "Opcje trybu listy" ++ ++#: prefs.js:1467 ++msgid "Customize panel scroll behavior" ++msgstr "Dostosuj reakcję na przewijanie panelu" ++ ++#: prefs.js:1503 ++msgid "Customize icon scroll behavior" ++msgstr "Dostosuj reakcję na przewijanie po ikonach" ++ ++#: prefs.js:1600 ++msgid "Advanced hotkeys options" ++msgstr "Zaawansowane opcje skrótów klawiszowych" ++ ++#: prefs.js:1634 ++msgid "Secondary Menu Options" ++msgstr "Opcje menu kontekstowego" ++ ++#: prefs.js:1676 Settings.ui.h:223 ++msgid "Advanced Options" ++msgstr "Opcje zaawansowane" ++ ++#: prefs.js:1763 ++msgid "Export settings" ++msgstr "Eksportuj ustawienia" ++ ++#: prefs.js:1780 ++msgid "Import settings" ++msgstr "Importuj ustawienia" ++ ++#: appIcons.js:1380 ++msgid "Show Details" ++msgstr "Pokaż szczegóły" ++ ++#: appIcons.js:1398 ++msgid "New Window" ++msgstr "Nowe okno" ++ ++#: appIcons.js:1460 ++msgid "Windows" ++msgstr "Okna" ++ ++#: appIcons.js:1684 ++msgid "Power options" ++msgstr "Opcje zasilania" ++ ++#: appIcons.js:1689 ++msgid "Event logs" ++msgstr "Zapis zdarzeń" ++ ++#: appIcons.js:1694 ++msgid "System" ++msgstr "System" ++ ++#: appIcons.js:1699 ++msgid "Device Management" ++msgstr "Zarządzanie urządzeniami" ++ ++#: appIcons.js:1704 ++msgid "Disk Management" ++msgstr "Zarządzanie dyskami" ++ ++#: appIcons.js:1711 ++msgid "Terminal" ++msgstr "Terminal" ++ ++#: appIcons.js:1716 ++msgid "System monitor" ++msgstr "Monitor procesów" ++ ++#: appIcons.js:1721 ++msgid "Files" ++msgstr "Pliki" ++ ++#: appIcons.js:1733 ++msgid "Unlock taskbar" ++msgstr "Odblokuj pasek zadań" ++ ++#: appIcons.js:1733 ++msgid "Lock taskbar" ++msgstr "Zablokuj pasek zadań" ++ ++#: appIcons.js:1738 ++msgid "Dash to Panel Settings" ++msgstr "Ustawienia Dash to Panel" ++ ++#: appIcons.js:1745 ++msgid "Restore Windows" ++msgstr "Przywróć okna" ++ ++#: appIcons.js:1745 ++msgid "Show Desktop" ++msgstr "Pokaż pulpit" ++ ++#: update.js:58 ++#, javascript-format ++msgid "Version %s (%s) is available" ++msgstr "Wersja %s (%s) jest dostępna" ++ ++#: update.js:59 ++msgid "Details" ++msgstr "Szczegóły" ++ ++#: update.js:60 ++msgid "Update" ++msgstr "Aktualizacja" ++ ++#: update.js:63 ++msgid "Already up to date" ++msgstr "Brak nowszej wersji" ++ ++#: update.js:148 ++msgid "Update successful, please log out/in" ++msgstr "Aktualizacja zakończona pomyślnie, zaloguj się ponownie" ++ ++#: update.js:149 ++msgid "Log out" ++msgstr "Wyloguj" ++ ++#: update.js:153 ++msgid "Update successful, please restart GNOME Shell" ++msgstr "Aktualizacja zakończona pomyślnie, prosimy zrestartować powłokę GNOME" ++ ++#: update.js:154 ++msgid "Restart GNOME Shell" ++msgstr "Zrestartuj powłokę GNOME" ++ ++#: update.js:154 ++msgid "Restarting GNOME Shell..." ++msgstr "Restartowanie powłoki GNOME..." ++ ++#: update.js:160 ++msgid "Error: " ++msgstr "Błąd: " ++ ++#: Settings.ui.h:1 ++msgid "Nothing yet!" ++msgstr "Jeszcze nic!" ++ ++#: Settings.ui.h:4 ++msgid "Raise windows" ++msgstr "Przywróć okna" ++ ++#: Settings.ui.h:8 ++msgid "Cycle windows + minimize" ++msgstr "Przełączanie + zminimalizowanie okien" ++ ++#: Settings.ui.h:9 ++msgid "Toggle single / Preview multiple" ++msgstr "Przełącz pojedyncze / Podejrzyj wiele" ++ ++#: Settings.ui.h:15 ++msgid "Isolate monitors" ++msgstr "Niezależne obszary robocze" ++ ++#: Settings.ui.h:16 ++msgid "Display favorite applications on all monitors" ++msgstr "Ulubione programy na wszystkich monitorach" ++ ++#: Settings.ui.h:17 ++msgid "Display the clock on all monitors" ++msgstr "Zegar na wszystkich monitorach" ++ ++#: Settings.ui.h:18 ++msgid "Display the status menu on all monitors" ++msgstr "Menu systemowe na wszystkich monitorach" ++ ++#: Settings.ui.h:19 ++msgid "Integrate AppMenu items" ++msgstr "Zintegruj elementy menu programów" ++ ++#: Settings.ui.h:20 ++msgid "Show Details menu item" ++msgstr "Wyświetl szczegóły" ++ ++#: Settings.ui.h:21 ++msgid "Highlight focused application" ++msgstr "Podświetlaj ikonę aktywnego programu" ++ ++#: Settings.ui.h:22 ++msgid "Icon dominant color" ++msgstr "Dominujący kolor ikon" ++ ++#: Settings.ui.h:23 ++msgid "Custom color" ++msgstr "Własny kolor" ++ ++#: Settings.ui.h:24 ++msgid "Highlight opacity" ++msgstr "Przeźroczystość podświetlenia" ++ ++#: Settings.ui.h:25 ++msgid "Indicator height (px)" ++msgstr "Wysokość wskaźnika (px)" ++ ++#: Settings.ui.h:26 ++msgid "Indicator color - Icon Dominant" ++msgstr "Kolor wskaźnika - dominujący" ++ ++#: Settings.ui.h:27 ++msgid "Indicator color - Override Theme" ++msgstr "Kolor wskaźnika - nadpisanie motywu" ++ ++#: Settings.ui.h:28 ++msgid "1 window open (or ungrouped)" ++msgstr "1 otwarte okno (lub tryb listy)" ++ ++#: Settings.ui.h:29 ++msgid "Apply to all" ++msgstr "Zastosuj do wszystkich" ++ ++#: Settings.ui.h:30 ++msgid "2 windows open" ++msgstr "2 otwarte okna" ++ ++#: Settings.ui.h:31 ++msgid "3 windows open" ++msgstr "3 otwarte okna" ++ ++#: Settings.ui.h:32 ++msgid "4+ windows open" ++msgstr "4 i więcej otwartych okien" ++ ++#: Settings.ui.h:33 ++msgid "Use different for unfocused" ++msgstr "Użyj innego dla pozostałych" ++ ++#: Settings.ui.h:34 ++msgid "Font size (px) of the application titles (default is 14)" ++msgstr "Wielkość czcionki etykiet (px) (domyślnie 14)" ++ ++#: Settings.ui.h:35 ++msgid "Font weight of application titles" ++msgstr "Grubość czcionki tytułów programów" ++ ++#: Settings.ui.h:36 ++msgid "inherit from theme" ++msgstr "dziedzicz po motywie" ++ ++#: Settings.ui.h:37 ++msgid "normal" ++msgstr "zwykła" ++ ++#: Settings.ui.h:38 ++msgid "lighter" ++msgstr "cieńsza" ++ ++#: Settings.ui.h:39 ++msgid "bold" ++msgstr "pogrubiona" ++ ++#: Settings.ui.h:40 ++msgid "bolder" ++msgstr "grubsza" ++ ++#: Settings.ui.h:41 ++msgid "Font color of the application titles" ++msgstr "Kolor czcionki" ++ ++#: Settings.ui.h:42 ++msgid "Maximum width (px) of the application titles (default is 160)" ++msgstr "Maksymalna szerokość (px) etykiet (domyślnie 160)" ++ ++#: Settings.ui.h:43 ++msgid "Use a fixed width for the application titles" ++msgstr "Stała szerokości" ++ ++#: Settings.ui.h:44 ++msgid "" ++"The application titles all have the same width, even if their texts are " ++"shorter than the maximum width. The maximum width value is used as the fixed " ++"width." ++msgstr "" ++"Wszystkie etykiety ikon będą miały tę samą szerokość, nawet jeśli ich teksty " ++"są krótsze niż maksymalna szerokość. Wartość stałej szerokości jest taka, " ++"jaka została podana w polu Maksymalna szerokość." ++ ++#: Settings.ui.h:45 ++msgid "Display running indicators on unfocused applications" ++msgstr "Pokazuj wskaźnik dla otwartych okien drugoplanowych" ++ ++#: Settings.ui.h:46 ++msgid "Use the favorite icons as application launchers" ++msgstr "Oddziel ulubione od uruchomionych programów" ++ ++#: Settings.ui.h:47 ++msgid "Only hide the panel when it is obstructed by windows " ++msgstr "Ukryj panel tylko wtedy, gdy jest zasłonięty przez okna " ++ ++#: Settings.ui.h:48 ++msgid "The panel hides from" ++msgstr "Ukrywanie przed oknami" ++ ++#: Settings.ui.h:50 ++msgid "Focused windows" ++msgstr "Aktywne okna programu" ++ ++#: Settings.ui.h:51 ++msgid "Maximized windows" ++msgstr "Zmaksymalizowane okna" ++ ++#: Settings.ui.h:52 ++msgid "Require pressure at the edge of the screen to reveal the panel" ++msgstr "Wymagaj nacisku na krawędzi ekranu, aby odsłonić panel" ++ ++#: Settings.ui.h:53 ++msgid "Required pressure threshold (px)" ++msgstr "Próg nacisku (px)" ++ ++#: Settings.ui.h:54 ++msgid "Required pressure timeout (ms)" ++msgstr "Czas nacisku (ms)" ++ ++#: Settings.ui.h:55 ++msgid "Allow the panel to be revealed while in fullscreen mode" ++msgstr "Pozwól, aby panel został odsłonięty w trybie pełnoekranowym" ++ ++#: Settings.ui.h:56 ++msgid "Only hide secondary panels (requires multi-monitors option)" ++msgstr "Ukryj wyłącznie drugorzędne panele (dla wielu monitorów)" ++ ++#: Settings.ui.h:57 ++msgid "e.g. i" ++msgstr "np. i" ++ ++#: Settings.ui.h:58 ++msgid "Keyboard shortcut to reveal and hold the panel" ++msgstr "Skrót klawiszowy do ukrywania i odsłaniania panelu" ++ ++#: Settings.ui.h:60 ++msgid "Hide and reveal animation duration (ms)" ++msgstr "Czas trwania animacji ukrywania i odsłaniania (ms)" ++ ++#: Settings.ui.h:61 ++msgid "Delay before hiding the panel (ms)" ++msgstr "Opóźnienie ukrycia panelu (ms)" ++ ++#: Settings.ui.h:62 ++msgid "Delay before enabling intellihide on start (ms)" ++msgstr "Opóźnienie przed aktywacją inteligentnego ukrywania (ms)" ++ ++#: Settings.ui.h:63 ++msgid "Time (ms) before showing (100 is default)" ++msgstr "Opóźnienie (ms) przed pokazaniem (domyślnie 100)" ++ ++#: Settings.ui.h:64 ++msgid "Animation time (ms)" ++msgstr "Długość animacji (ms)" ++ ++#: Settings.ui.h:65 ++msgid "Time (ms) before hiding (100 is default)" ++msgstr "Opóźnienie ukrywania miniatur (domyślnie 100 ms)" ++ ++#: Settings.ui.h:66 ++msgid "Immediate on application icon click" ++msgstr "Natychmiastowo po kliknięciu na ikonę aplikacji" ++ ++#: Settings.ui.h:67 ++msgid "Middle click on the preview to close the window" ++msgstr "" ++"Kliknięcie środkowego przycisku myszy na podglądzie zamyka okno programu" ++ ++#: Settings.ui.h:68 ++msgid "Window previews preferred size (px)" ++msgstr "Preferowany rozmiar podglądu okna (px)" ++ ++#: Settings.ui.h:69 ++msgid "Window previews aspect ratio Y (height)" ++msgstr "Proporcja wysokości podglądu okna" ++ ++#: Settings.ui.h:70 ++msgid "Window previews padding (px)" ++msgstr "Wewnętrzny odstęp w podglądzie okien (px)" ++ ++#: Settings.ui.h:71 ++msgid "1" ++msgstr "1" ++ ++#: Settings.ui.h:72 ++msgid "2" ++msgstr "2" ++ ++#: Settings.ui.h:73 ++msgid "3" ++msgstr "3" ++ ++#: Settings.ui.h:74 ++msgid "4" ++msgstr "4" ++ ++#: Settings.ui.h:75 ++msgid "5" ++msgstr "5" ++ ++#: Settings.ui.h:76 ++msgid "6" ++msgstr "6" ++ ++#: Settings.ui.h:77 ++msgid "7" ++msgstr "7" ++ ++#: Settings.ui.h:78 ++msgid "8" ++msgstr "8" ++ ++#: Settings.ui.h:79 ++msgid "9" ++msgstr "9" ++ ++#: Settings.ui.h:80 ++msgid "10" ++msgstr "10" ++ ++#: Settings.ui.h:81 ++msgid "11" ++msgstr "11" ++ ++#: Settings.ui.h:82 ++msgid "12" ++msgstr "12" ++ ++#: Settings.ui.h:83 ++msgid "13" ++msgstr "13" ++ ++#: Settings.ui.h:84 ++msgid "14" ++msgstr "14" ++ ++#: Settings.ui.h:85 ++msgid "15" ++msgstr "15" ++ ++#: Settings.ui.h:86 ++msgid "16" ++msgstr "16" ++ ++#: Settings.ui.h:87 ++msgid "17" ++msgstr "17" ++ ++#: Settings.ui.h:88 ++msgid "18" ++msgstr "18" ++ ++#: Settings.ui.h:89 ++msgid "19" ++msgstr "19" ++ ++#: Settings.ui.h:90 ++msgid "20" ++msgstr "20" ++ ++#: Settings.ui.h:91 ++msgid "21" ++msgstr "21" ++ ++#: Settings.ui.h:93 ++msgid "Window previews aspect ratio X (width)" ++msgstr "Proporcja szerokości podglądu okna" ++ ++#: Settings.ui.h:94 ++msgid "Use custom opacity for the previews background" ++msgstr "Własna przeźroczystość dla tła podglądu okna" ++ ++#: Settings.ui.h:95 ++msgid "If disabled, the previews background have the same opacity as the panel" ++msgstr "" ++"Jeśli wyłączone, podgląd okna będzie mieć taką samą przeźroczystość jak panel" ++ ++#: Settings.ui.h:96 ++msgid "Close button and header position" ++msgstr "Położenie przycisku zamykania i nagłówka" ++ ++#: Settings.ui.h:99 ++msgid "Display window preview headers" ++msgstr "Wyświetlaj nagłówek w podglądzie okna" ++ ++#: Settings.ui.h:100 ++msgid "Font size (px) of the preview titles" ++msgstr "Wielkość czcionki etykiet (px) etykiet podglądu" ++ ++#: Settings.ui.h:101 ++msgid "Font weight of the preview titles" ++msgstr "Grubość czcionki etykiet podglądu" ++ ++#: Settings.ui.h:102 ++msgid "Font color of the preview titles" ++msgstr "Kolor czcionki etykiet podglądu" ++ ++#: Settings.ui.h:103 ++msgid "Enable window peeking" ++msgstr "Podgląd okien otwartych programów" ++ ++#: Settings.ui.h:104 ++msgid "" ++"When hovering over a window preview for some time, the window gets " ++"distinguished." ++msgstr "" ++"Po najechaniu kursorem na podgląd okna zostanie ono pokazane na tle " ++"wszystkich otwartych okien programów." ++ ++#: Settings.ui.h:105 ++msgid "Enter window peeking mode timeout (ms)" ++msgstr "Opóźnienie wyświetlania (ms)" ++ ++#: Settings.ui.h:106 ++msgid "50" ++msgstr "50" ++ ++#: Settings.ui.h:107 ++msgid "" ++"Time of inactivity while hovering over a window preview needed to enter the " ++"window peeking mode." ++msgstr "" ++"Czas opóźnienia, po którym wyświetlony zostanie podgląd okien otwartych " ++"programów." ++ ++#: Settings.ui.h:108 ++msgid "Window peeking mode opacity" ++msgstr "Przeźroczystość podglądanych okien" ++ ++#: Settings.ui.h:109 ++msgid "0" ++msgstr "0" ++ ++#: Settings.ui.h:110 ++msgid "" ++"All windows except for the peeked one have their opacity set to the same " ++"value." ++msgstr "" ++"Wszystkie okna, za wyjątkiem okna głównego, mają tą samą przeźroczystość." ++ ++#: Settings.ui.h:111 ++msgid "Delay between mouse scroll events (ms)" ++msgstr "Opóźnienie między przewijaniem myszą (ms)" ++ ++#: Settings.ui.h:112 ++msgid "Use this value to limit the number of captured mouse scroll events." ++msgstr "Użyj tą wartość by ograniczyć liczbę przechwyceń przewijania myszą." ++ ++#: Settings.ui.h:113 ++msgid "Super" ++msgstr "Super" ++ ++#: Settings.ui.h:114 ++msgid "Super + Alt" ++msgstr "Super + Alt" ++ ++#: Settings.ui.h:115 ++msgid "Hotkeys prefix" ++msgstr "Prefiks dla skrótów klawiszowych" ++ ++#: Settings.ui.h:116 ++msgid "Hotkeys will either be Super+Number or Super+Alt+Num" ++msgstr "Skrót może być aktywowany jako Super+Cyfra lub Super+Alt+Cyfra" ++ ++#: Settings.ui.h:117 ++msgid "Never" ++msgstr "Nigdy" ++ ++#: Settings.ui.h:118 ++msgid "Show temporarily" ++msgstr "Przez chwilę" ++ ++#: Settings.ui.h:119 ++msgid "Always visible" ++msgstr "Zawsze" ++ ++#: Settings.ui.h:121 ++msgid "" ++"Temporarily show the application numbers over the icons when using the " ++"hotkeys." ++msgstr "Podczas używania skrótów klawiszowych wyświetlaj cyfry nad ikonami ." ++ ++#: Settings.ui.h:122 ++msgid "Hide timeout (ms)" ++msgstr "Opóźnienie ukrywania (ms)" ++ ++#: Settings.ui.h:123 ++msgid "e.g. q" ++msgstr "np. q" ++ ++#: Settings.ui.h:124 ++msgid "Shortcut to show the overlay for 2 seconds" ++msgstr "Skrót wyświetlający cyfry przez 2 sekundy" ++ ++#: Settings.ui.h:125 ++msgid "Show window previews on hotkey" ++msgstr "Pokaż podgląd okna po wciśnięciu klawisza skrótu" ++ ++#: Settings.ui.h:126 ++msgid "Show previews when the application have multiple instances" ++msgstr "Pokaż podgląd, gdy aplikacja ma wiele instancji" ++ ++#: Settings.ui.h:127 ++msgid "Number row" ++msgstr "Rząd cyfr" ++ ++#: Settings.ui.h:128 ++msgid "Numeric keypad" ++msgstr "Klawiatura numeryczna" ++ ++#: Settings.ui.h:129 ++msgid "Both" ++msgstr "Obie" ++ ++#: Settings.ui.h:130 ++msgid "Hotkeys are activated with" ++msgstr "Aktywacja skrótów klawiszowych wymaga" ++ ++#: Settings.ui.h:131 ++msgid "Select which keyboard number keys are used to activate the hotkeys" ++msgstr "" ++"Zaznacz które klawisze cyfr mają być używane do aktywacji skrótów " ++"klawiszowych" ++ ++#: Settings.ui.h:132 ++msgid "Current Show Applications icon" ++msgstr "Aktualna ikona przycisku Pokaż programy" ++ ++#: Settings.ui.h:133 ++msgid "Select a Show Applications image icon" ++msgstr "Wybierz ikonę przycisku Pokaż programy" ++ ++#: Settings.ui.h:134 ++msgid "Custom Show Applications image icon" ++msgstr "Wybierz własną ikonę przycisku Pokaż programy" ++ ++#: Settings.ui.h:135 ++msgid "Show Applications icon side padding (px)" ++msgstr "Wewnętrzny margines przycisku Pokaż programy (px)" ++ ++#: Settings.ui.h:136 ++msgid "Reveal the desktop when hovering the Show Desktop button" ++msgstr "Pokaż pulpit po najechaniu na przycisk Pokaż pulpit" ++ ++#: Settings.ui.h:137 ++msgid "Delay before revealing the desktop (ms)" ++msgstr "Opóźnienie przed ujawnieniem pulpitu (ms)" ++ ++#: Settings.ui.h:138 ++msgid "Fade duration (ms)" ++msgstr "Opóźnienie ukrywania (ms)" ++ ++#: Settings.ui.h:139 ++msgid "The panel background opacity is affected by" ++msgstr "Przezroczystość panelu zależy od" ++ ++#: Settings.ui.h:140 ++msgid "Change opacity when a window gets closer than (px)" ++msgstr "Zmień przezroczystość, gdy okno jest bliżej niż (px)" ++ ++#: Settings.ui.h:142 ++#, no-c-format ++msgid "Change opacity to (%)" ++msgstr "Zmień przeźroczystość na (%)" ++ ++#: Settings.ui.h:143 ++msgid "Opacity change animation duration (ms)" ++msgstr "Czas trwania animacji przeźroczystości (ms)" ++ ++#: Settings.ui.h:144 ++msgid "Panel screen position" ++msgstr "Położenie panelu na ekranie" ++ ++#: Settings.ui.h:147 ++msgid "Taskbar position" ++msgstr "Położenie paska zadań" ++ ++#: Settings.ui.h:148 ++msgid "Clock location" ++msgstr "Położenie zegara" ++ ++#: Settings.ui.h:149 ++msgid "Display the main panel on" ++msgstr "Wyświetl główny panel na" ++ ++#: Settings.ui.h:150 ++msgid "Display panels on all monitors" ++msgstr "Wyświetl panel na wszystkich monitorach" ++ ++#: Settings.ui.h:151 ++msgid "Panel Intellihide" ++msgstr "Inteligentne ukrywanie panelu" ++ ++#: Settings.ui.h:152 ++msgid "Hide and reveal the panel according to preferences" ++msgstr "Ukryj i odsłoń panel według preferencji" ++ ++#: Settings.ui.h:153 ++msgid "Position" ++msgstr "Położenie" ++ ++#: Settings.ui.h:154 ++msgid "" ++"Panel Size\n" ++"(default is 48)" ++msgstr "" ++"Rozmiar panelu\n" ++"(domyślnie 48)" ++ ++#: Settings.ui.h:156 ++msgid "" ++"App Icon Margin\n" ++"(default is 8)" ++msgstr "" ++"Odstęp między\n" ++"ikonami (domyślnie 8)" ++ ++#: Settings.ui.h:158 ++msgid "" ++"App Icon Padding\n" ++"(default is 4)" ++msgstr "" ++"Wypełnienie wnętrza\n" ++"ikony (domyślnie 4)" ++ ++#: Settings.ui.h:160 ++msgid "Running indicator position" ++msgstr "Pozycja wskaźnika aktywnych okien" ++ ++#: Settings.ui.h:161 ++msgid "Running indicator style (Focused app)" ++msgstr "Wygląd wskaźnika (okno na pierwszym planie)" ++ ++#: Settings.ui.h:169 ++msgid "Running indicator style (Unfocused apps)" ++msgstr "Wygląd wskaźnika (okno na drugim planie)" ++ ++#: Settings.ui.h:170 ++msgid "Override panel theme background color " ++msgstr "Zastąp kolor panelu " ++ ++#: Settings.ui.h:171 ++msgid "Override panel theme background opacity" ++msgstr "Zastąp przeźroczystość panelu" ++ ++#: Settings.ui.h:173 ++#, no-c-format ++msgid "Panel background opacity (%)" ++msgstr "Przeźroczystość panelu (%)" ++ ++#: Settings.ui.h:174 ++msgid "Dynamic background opacity" ++msgstr "Dynamiczna przeźroczystość" ++ ++#: Settings.ui.h:175 ++msgid "Change opacity when a window gets close to the panel" ++msgstr "Zmiana przeźroczystości w kontakcie z oknem" ++ ++#: Settings.ui.h:176 ++msgid "Override panel theme gradient " ++msgstr "Zastąp kolor panelu gradientem " ++ ++#: Settings.ui.h:178 ++#, no-c-format ++msgid "Gradient top color and opacity (%)" ++msgstr "Góra, kolor i przeźroczystość (%)" ++ ++#: Settings.ui.h:180 ++#, no-c-format ++msgid "Gradient bottom color and opacity (%)" ++msgstr "Dół, kolor i przeźroczystość (%)" ++ ++#: Settings.ui.h:181 ++msgid "Style" ++msgstr "Wygląd" ++ ++#: Settings.ui.h:186 ++msgid "Show Activities button" ++msgstr "Pokaż przycisk Podgląd" ++ ++#: Settings.ui.h:187 ++msgid "Show Desktop button" ++msgstr "Pokaż przycisk Pulpit" ++ ++#: Settings.ui.h:188 ++msgid "Show AppMenu button" ++msgstr "Pokaż przycisk Menu programu" ++ ++#: Settings.ui.h:189 ++msgid "Top Bar > Show App Menu must be enabled in Tweak Tool" ++msgstr "Górny pasek > Menu programu - musi być włączone w Dostrajanie" ++ ++#: Settings.ui.h:190 ++msgid "Show window previews on hover" ++msgstr "Pokaż podgląd okna po najechaniu myszą" ++ ++#: Settings.ui.h:191 ++msgid "Show tooltip on hover" ++msgstr "Pokaż szczegóły po najechaniu myszą" ++ ++#: Settings.ui.h:192 ++msgid "Isolate Workspaces" ++msgstr "Niezależne obszary robocze" ++ ++#: Settings.ui.h:193 ++msgid "Ungroup applications" ++msgstr "Tryb listy (nie scalaj ikon)" ++ ++#: Settings.ui.h:197 ++msgid "Toggle windows" ++msgstr "Przełącz okna" ++ ++#: Settings.ui.h:198 ++msgid "Scroll panel action" ++msgstr "Działanie przewijania na panelu" ++ ++#: Settings.ui.h:199 ++msgid "Behavior when mouse scrolling over the panel." ++msgstr "Reakcja na przewijanie myszą nad panelem." ++ ++#: Settings.ui.h:200 ++msgid "Scroll icon action" ++msgstr "Działanie przewijania na ikonie" ++ ++#: Settings.ui.h:201 ++msgid "Behavior when mouse scrolling over an application icon." ++msgstr "Reakcja na przewijanie myszą nad ikoną programu." ++ ++#: Settings.ui.h:204 ++msgid "Cycle windows" ++msgstr "Przełącz między oknami" ++ ++#: Settings.ui.h:206 ++msgid "Use hotkeys to activate apps" ++msgstr "Skróty klawiszowe uruchamiania programów" ++ ++#: Settings.ui.h:207 ++msgid "Action" ++msgstr "Działanie" ++ ++#: Settings.ui.h:208 ++msgid "" ++"Tray Font Size\n" ++"(0 = theme default)" ++msgstr "" ++"Rozmiar czcionki zasobnika\n" ++"(0 - domyślne motywu)" ++ ++#: Settings.ui.h:210 ++msgid "" ++"LeftBox Font Size\n" ++"(0 = theme default)" ++msgstr "" ++"Rozmiar czcionki lewej strony panelu\n" ++"(0 - domyślne motywu)" ++ ++#: Settings.ui.h:212 ++msgid "" ++"Tray Item Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"Odstęp elementów zasobnika\n" ++"(-1 - domyślne motywu)" ++ ++#: Settings.ui.h:214 ++msgid "" ++"Status Icon Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"Odstęp elementów menu systemowego\n" ++"(-1 - domyślne motywu)" ++ ++#: Settings.ui.h:216 ++msgid "" ++"LeftBox Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"Odstęp elementów lewej strony panelu\n" ++"(-1 - domyślne motywu)" ++ ++#: Settings.ui.h:218 ++msgid "Animate switching applications" ++msgstr "Animuj przełączenie programów" ++ ++#: Settings.ui.h:219 ++msgid "Animate launching new windows" ++msgstr "Animuj uruchamianie nowych programów" ++ ++#: Settings.ui.h:220 ++msgid "Keep original gnome-shell dash (overview)" ++msgstr "Zachowaj oryginalny panel (podgląd)" ++ ++#: Settings.ui.h:221 ++msgid "Activate panel menu buttons (e.g. date menu) on click only" ++msgstr "" ++"Aktywuj przyciski menu panelu (np. menu kalendarza) tylko po kliknięciu" ++ ++#: Settings.ui.h:222 ++msgid "App icon secondary (right-click) menu" ++msgstr "Menu kontekstowe programu (prawy przycisk myszy)" ++ ++#: Settings.ui.h:224 ++msgid "Fine-Tune" ++msgstr "Dostrajanie" ++ ++#: Settings.ui.h:226 ++msgid "GitHub" ++msgstr "GitHub" ++ ++#: Settings.ui.h:227 ++msgid "" ++"Use the buttons below to create a settings file from your current " ++"preferences that can be imported on a different machine." ++msgstr "" ++"Użyj poniższych przycisków, aby utworzyć plik ustawień bieżącychpreferencji, " ++"które można zaimportować na innym komputerze." ++ ++#: Settings.ui.h:228 ++msgid "Export and import settings" ++msgstr "Ustawienia eksportu i importu" ++ ++#: Settings.ui.h:229 ++msgid "Export to file" ++msgstr "Eksportuj do pliku" ++ ++#: Settings.ui.h:230 ++msgid "Import from file" ++msgstr "Importuj z pliku" ++ ++#: Settings.ui.h:231 ++msgid "" ++"This allows you to update the extension directly from the GitHub repository." ++msgstr "" ++"Ta opcja pozwala ci na zaktualizowanie wtyczki bezpośrednio z repozytorium " ++"GitHub." ++ ++#: Settings.ui.h:232 ++msgid "Updates" ++msgstr "Aktualizacje" ++ ++#: Settings.ui.h:233 ++msgid "Periodically check for updates" ++msgstr "Sprawdzaj regularnie dostępność aktualizacji" ++ ++#: Settings.ui.h:234 ++msgid "Check now" ++msgstr "Sprawdź teraz" ++ ++#: Settings.ui.h:235 ++msgid "" ++"Be aware, these official Dash to " ++"Panel releases might not be reviewed yet on extensions.gnome.org! Read more" ++msgstr "" ++"Bądź świadom, że te oficjalne " ++"wydania Dash to Panel mogły jeszcze nie przejść weryfikacji na extensions." ++"gnome.org! Więcej " ++"informacji" ++ + #~ msgid "Show a dot for each windows of the application." + #~ msgstr "Wyświetla kropkę dla każdego okna programu" + + #~ msgid "Adaptive" + #~ msgstr "Adaptacyjna" ++ ++#~ msgid "Highlight color" ++#~ msgstr "Kolor podświetlenia" ++ ++#~ msgid "Preview timeout on icon leave (ms)" ++#~ msgstr "Opóźnienie wygaszenia podglądu po opuszczeniu ikony (ms)" ++ ++#~ msgid "" ++#~ "If set too low, the window preview of running applications may seem to " ++#~ "close too quickly when trying to enter the popup. If set too high, the " ++#~ "preview may linger too long when moving to an adjacent icon." ++#~ msgstr "" ++#~ "Ustawienie zbyt małej wartości może spowodować, że pogląd okien może " ++#~ "zamykać się zbyt szybko, natomiast za duża wartość spowoduje długi czas " ++#~ "wyświetlania podglądu po przejściu do sąsiedniej ikony." ++ ++#~ msgid "Middle click to close window" ++#~ msgstr "Zamknięcie okna poprzez kliknięcie środkowego przycisku" ++ ++#~ msgid "Width of the window previews (px)" ++#~ msgstr "Szerokość miniatury (px)" ++ ++#~ msgid "Height of the window previews (px)" ++#~ msgstr "Wysokość miniatury (px)" ++ ++#~ msgid "Padding of the window previews (px)" ++#~ msgstr "Odstęp między miniaturami (px)" +diff --git a/po/pt_BR.po b/po/pt_BR.po +index 16117cec..40b66b3c 100644 +--- a/po/pt_BR.po ++++ b/po/pt_BR.po +@@ -1,5 +1,6 @@ + # #-#-#-#-# pt_BR.po (gnome-shell-extensions master) #-#-#-#-# + # #-#-#-#-# pt_BR.po (gnome-shell-extensions master) #-#-#-#-# ++# #-#-#-#-# pt_BR.po (gnome-shell-extensions master) #-#-#-#-# + # Brazilian Portuguese translation for gnome-shell-extensions. + # Copyright (C) 2020 gnome-shell-extensions's COPYRIGHT HOLDER + # This file is distributed under the same license as the gnome-shell-extensions package. +@@ -26,11 +27,18 @@ + # Enrico Nicoletto , 2018. + # Rafael Fontenelle , 2018-2020. + # ++# #-#-#-#-# pt_BR.po #-#-#-#-# ++# Dash to panel. ++# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER ++# This file is distributed under the same license as the PACKAGE package. ++# F�bio Nogueira , 2017 ++# + #, fuzzy + msgid "" + msgstr "" + "#-#-#-#-# pt_BR.po (gnome-shell-extensions master) #-#-#-#-#\n" + "#-#-#-#-# pt_BR.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"#-#-#-#-# pt_BR.po (gnome-shell-extensions master) #-#-#-#-#\n" + "Project-Id-Version: gnome-shell-extensions master\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/" + "issues\n" +@@ -71,6 +79,19 @@ msgstr "" + "Content-Transfer-Encoding: 8bit\n" + "Plural-Forms: nplurals=2; plural=(n > 1)\n" + "X-Generator: Gtranslator 3.36.0\n" ++"#-#-#-#-# pt_BR.po #-#-#-#-#\n" ++"Project-Id-Version: \n" ++"Report-Msgid-Bugs-To: \n" ++"POT-Creation-Date: 2017-04-16 22:54-0300\n" ++"PO-Revision-Date: 2017-09-15 11:03-0300\n" ++"Last-Translator: Fábio Nogueira \n" ++"Language-Team: \n" ++"Language: pt_BR\n" ++"MIME-Version: 1.0\n" ++"Content-Type: text/plain; charset=UTF-8\n" ++"Content-Transfer-Encoding: 8bit\n" ++"X-Generator: Poedit 2.0.3\n" ++"Plural-Forms: nplurals=2; plural=(n > 1);\n" + + #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3 + msgid "GNOME Classic" +@@ -344,7 +365,8 @@ msgstr "Monitor secundário" + msgid "Intelligent autohide customization" + msgstr "Configuração da ocultação inteligente" + +-#: prefs.js:363 prefs.js:548 prefs.js:604 ++#: prefs.js:363 prefs.js:548 prefs.js:604 prefs.js:273 prefs.js:433 ++#: prefs.js:498 prefs.js:566 prefs.js:608 + msgid "Reset to defaults" + msgstr "Restaurar o padrão" + +@@ -352,9 +374,14 @@ msgstr "Restaurar o padrão" + msgid "Show dock and application numbers" + msgstr "Exibir o dock e os números dos aplicativos" + +-#: prefs.js:597 ++#: prefs.js:597 prefs.js:426 ++#, fuzzy + msgid "Customize middle-click behavior" +-msgstr "Customizar o comportamento do clique do botão do meio" ++msgstr "" ++"#-#-#-#-# pt_BR.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Customizar o comportamento do clique do botão do meio\n" ++"#-#-#-#-# pt_BR.po #-#-#-#-#\n" ++"Personalizar o comportamento do clique-do-meio" + + #: prefs.js:680 + msgid "Customize running indicators" +@@ -376,31 +403,61 @@ msgid "Dash to Dock %s" + msgstr "%s do Dash to Dock" + + #: Settings.ui.h:1 ++#, fuzzy + msgid "" + "When set to minimize, double clicking minimizes all the windows of the " + "application." + msgstr "" +-"Quando minimizar, o duplo clique minizará todas as janelas dos aplicativos" ++"#-#-#-#-# pt_BR.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Quando minimizar, o duplo clique minizará todas as janelas dos aplicativos\n" ++"#-#-#-#-# pt_BR.po #-#-#-#-#\n" ++"Quando definido para minimizar, clicando duas vezes minimiza todas as " ++"janelas da aplicação." + + #: Settings.ui.h:2 ++#, fuzzy + msgid "Shift+Click action" +-msgstr "Ação do Shift+Clique" ++msgstr "" ++"#-#-#-#-# pt_BR.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Ação do Shift+Clique\n" ++"#-#-#-#-# pt_BR.po #-#-#-#-#\n" ++"Ação do Shift+clique" + + #: Settings.ui.h:3 ++#, fuzzy + msgid "Raise window" +-msgstr "Aumentar janela" ++msgstr "" ++"#-#-#-#-# pt_BR.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Aumentar janela\n" ++"#-#-#-#-# pt_BR.po #-#-#-#-#\n" ++"Elevar a janela" + + #: Settings.ui.h:4 ++#, fuzzy + msgid "Minimize window" +-msgstr "Minimizar janela" ++msgstr "" ++"#-#-#-#-# pt_BR.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Minimizar janela\n" ++"#-#-#-#-# pt_BR.po #-#-#-#-#\n" ++"Minimizar a janela" + + #: Settings.ui.h:5 ++#, fuzzy + msgid "Launch new instance" +-msgstr "Iniciar nova instância" ++msgstr "" ++"#-#-#-#-# pt_BR.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Iniciar nova instância\n" ++"#-#-#-#-# pt_BR.po #-#-#-#-#\n" ++"Carregar nova instância" + + #: Settings.ui.h:6 ++#, fuzzy + msgid "Cycle through windows" +-msgstr "Percorrer através das janelas" ++msgstr "" ++"#-#-#-#-# pt_BR.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Percorrer através das janelas\n" ++"#-#-#-#-# pt_BR.po #-#-#-#-#\n" ++"Percorrer as janelas" + + #: Settings.ui.h:7 + msgid "Minimize or overview" +@@ -418,25 +475,46 @@ msgstr "Minimizar o mostrar pré-visualizações" + msgid "Focus or show previews" + msgstr "Pôr em foco o pré-visualizar" + +-#: Settings.ui.h:11 ++#: Settings.ui.h:11 appIcons.js:937 appIcons.js:998 appIcons.js:1000 ++#: Settings.ui.h:8 + msgid "Quit" + msgstr "Sair" + +-#: Settings.ui.h:12 ++#: Settings.ui.h:12 Settings.ui.h:9 ++#, fuzzy + msgid "Behavior for Middle-Click." +-msgstr "Comportamento do Clique do botão do meio." ++msgstr "" ++"#-#-#-#-# pt_BR.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Comportamento do Clique do botão do meio.\n" ++"#-#-#-#-# pt_BR.po #-#-#-#-#\n" ++"Comportamento do clique-do-meio." + +-#: Settings.ui.h:13 ++#: Settings.ui.h:13 Settings.ui.h:10 ++#, fuzzy + msgid "Middle-Click action" +-msgstr "Ação do clique do botão do meio" ++msgstr "" ++"#-#-#-#-# pt_BR.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Ação do clique do botão do meio\n" ++"#-#-#-#-# pt_BR.po #-#-#-#-#\n" ++"Ação do clique-do-meio" + +-#: Settings.ui.h:14 ++#: Settings.ui.h:14 Settings.ui.h:11 ++#, fuzzy + msgid "Behavior for Shift+Middle-Click." +-msgstr "Comportamento para Shift + Clique do botão do meio." ++msgstr "" ++"#-#-#-#-# pt_BR.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Comportamento para Shift + Clique do botão do meio.\n" ++"#-#-#-#-# pt_BR.po #-#-#-#-#\n" ++"Comportamento para o Shift+Clique-do-meio." + +-#: Settings.ui.h:15 ++#: Settings.ui.h:15 Settings.ui.h:12 ++#, fuzzy + msgid "Shift+Middle-Click action" +-msgstr "Ação do Shift+Clique do botão do meio" ++msgstr "" ++"#-#-#-#-# pt_BR.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Ação do Shift+Clique do botão do meio\n" ++"#-#-#-#-# pt_BR.po #-#-#-#-#\n" ++"Ação do Shift+Clique-do-meio" + + #: Settings.ui.h:16 + msgid "Enable Unity7 like glossy backlit items" +@@ -474,13 +552,18 @@ msgstr "Mostrar em todos os monitores." + msgid "Position on screen" + msgstr "Posição na tela" + +-#: Settings.ui.h:26 ++#: Settings.ui.h:26 Settings.ui.h:37 + msgid "Bottom" + msgstr "Embaixo" + +-#: Settings.ui.h:27 ++#: Settings.ui.h:27 Settings.ui.h:38 ++#, fuzzy + msgid "Top" +-msgstr "Em cima" ++msgstr "" ++"#-#-#-#-# pt_BR.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Em cima\n" ++"#-#-#-#-# pt_BR.po #-#-#-#-#\n" ++"Topo" + + #: Settings.ui.h:29 + msgid "" +@@ -542,39 +625,54 @@ msgstr "" + "Se desabilitado, essas configurações estão acessíveis através do gnome-tweak-" + "tool ou no site da extensão." + +-#: Settings.ui.h:42 ++#: Settings.ui.h:42 Settings.ui.h:58 ++#, fuzzy + msgid "Show Applications icon" +-msgstr "Exibir ícone dos Aplicativos" ++msgstr "" ++"#-#-#-#-# pt_BR.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Exibir ícone dos Aplicativos\n" ++"#-#-#-#-# pt_BR.po #-#-#-#-#\n" ++"Mostrar ícone Aplicativos" + + #: Settings.ui.h:43 + msgid "Move the applications button at the beginning of the dock." + msgstr "Mover o botão de aplicativos para o início do dock." + +-#: Settings.ui.h:44 ++#: Settings.ui.h:44 Settings.ui.h:59 ++#, fuzzy + msgid "Animate Show Applications." +-msgstr "Mostrar aplicativos com efeitos." ++msgstr "" ++"#-#-#-#-# pt_BR.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Mostrar aplicativos com efeitos.\n" ++"#-#-#-#-# pt_BR.po #-#-#-#-#\n" ++"Mostrar aplicativos animado." + + #: Settings.ui.h:45 + msgid "Launchers" + msgstr "Lançadores" + +-#: Settings.ui.h:46 ++#: Settings.ui.h:46 Settings.ui.h:69 ++#, fuzzy + msgid "" + "Enable Super+(0-9) as shortcuts to activate apps. It can also be used " + "together with Shift and Ctrl." + msgstr "" ++"#-#-#-#-# pt_BR.po (gnome-shell-extensions master) #-#-#-#-#\n" + "Habilita tecla Super+(0-9) como atalhos para ativar aplicativos. Também pode " +-"ser usado junto com Shift e Ctrl." ++"ser usado junto com Shift e Ctrl.\n" ++"#-#-#-#-# pt_BR.po #-#-#-#-#\n" ++"Habilita o Super+(0-9) como atalho para os aplicativos. Isto pode ser usado " ++"junto com Shift e Ctrl." + + #: Settings.ui.h:47 + msgid "Use keyboard shortcuts to activate apps" + msgstr "Usar atalhos de teclado para ativar aplicativos" + +-#: Settings.ui.h:48 ++#: Settings.ui.h:48 Settings.ui.h:67 + msgid "Behaviour when clicking on the icon of a running application." + msgstr "Comportamento ao clicar sobre o ícone de um aplicativo em execução." + +-#: Settings.ui.h:49 ++#: Settings.ui.h:49 Settings.ui.h:68 + msgid "Click action" + msgstr "Ação do clique" + +@@ -594,7 +692,7 @@ msgstr "Não fazer nada" + msgid "Switch workspace" + msgstr "Alternar espaço de trabalho" + +-#: Settings.ui.h:55 ++#: Settings.ui.h:55 Settings.ui.h:71 + msgid "Behavior" + msgstr "Comportamento" + +@@ -626,31 +724,36 @@ msgstr "Customizar indicadores de contagem de janelas" + msgid "Default" + msgstr "Padrão" + +-#: Settings.ui.h:62 ++#: Settings.ui.h:62 Settings.ui.h:45 + msgid "Dots" + msgstr "Pontos" + +-#: Settings.ui.h:63 ++#: Settings.ui.h:63 Settings.ui.h:46 + msgid "Squares" + msgstr "Quadrados" + +-#: Settings.ui.h:64 ++#: Settings.ui.h:64 Settings.ui.h:47 ++#, fuzzy + msgid "Dashes" +-msgstr "Linhas" ++msgstr "" ++"#-#-#-#-# pt_BR.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Linhas\n" ++"#-#-#-#-# pt_BR.po #-#-#-#-#\n" ++"Traços" + +-#: Settings.ui.h:65 ++#: Settings.ui.h:65 Settings.ui.h:48 + msgid "Segmented" + msgstr "Segmentado" + +-#: Settings.ui.h:66 ++#: Settings.ui.h:66 Settings.ui.h:49 + msgid "Solid" + msgstr "Sólido" + +-#: Settings.ui.h:67 ++#: Settings.ui.h:67 Settings.ui.h:50 + msgid "Ciliora" + msgstr "Ciliora" + +-#: Settings.ui.h:68 ++#: Settings.ui.h:68 Settings.ui.h:51 + msgid "Metro" + msgstr "Metro" + +@@ -686,9 +789,14 @@ msgstr "Forçar canto reto\n" + msgid "Appearance" + msgstr "Aparência" + +-#: Settings.ui.h:79 ++#: Settings.ui.h:79 Settings.ui.h:87 ++#, fuzzy + msgid "version: " +-msgstr "versão:" ++msgstr "" ++"#-#-#-#-# pt_BR.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"versão:\n" ++"#-#-#-#-# pt_BR.po #-#-#-#-#\n" ++"versão: " + + #: Settings.ui.h:80 + msgid "Moves the dash out of the overview transforming it in a dock" +@@ -702,18 +810,25 @@ msgstr "Criado por" + msgid "Webpage" + msgstr "Página Web" + +-#: Settings.ui.h:83 ++#: Settings.ui.h:83 Settings.ui.h:89 ++#, fuzzy + msgid "" + "This program comes with ABSOLUTELY NO WARRANTY.\n" +-"See the GNU General Public License, version 2 or later for details." ++"See the GNU General Public License, version 2 or later for details." + msgstr "" ++"#-#-#-#-# pt_BR.po (gnome-shell-extensions master) #-#-#-#-#\n" + "Este programa é distribuido SEM QUALQUER GARANTIA.\n" +-"Veja em GNU General Public License, versão 2 ou posterior para maiores " ++"Veja em GNU General Public License, versão 2 ou posterior para maiores " ++"detalhes.\n" ++"#-#-#-#-# pt_BR.po #-#-#-#-#\n" ++"Este programa vem com ABSOLUTAMENTE NENHUMA GARANTIA.\n" ++"Veja a Licença Pública Geral GNU, versão 2 ou posterior para maiores " + "detalhes." + +-#: Settings.ui.h:85 ++#: Settings.ui.h:85 Settings.ui.h:91 + msgid "About" + msgstr "Sobre" + +@@ -729,7 +844,7 @@ msgstr "Opacidade mínima" + msgid "Maximum opacity" + msgstr "Opacidade máxima" + +-#: Settings.ui.h:89 ++#: Settings.ui.h:89 Settings.ui.h:31 + msgid "Number overlay" + msgstr "Sobreposição de número" + +@@ -757,7 +872,7 @@ msgstr "" + msgid "Shortcut for the options above" + msgstr "Atalho para as opções acima" + +-#: Settings.ui.h:94 ++#: Settings.ui.h:94 Settings.ui.h:35 + msgid "Syntax: , , , " + msgstr "Sintaxe: , , , " + +@@ -1010,6 +1125,291 @@ msgstr "Mostrar unidades montadas" + msgid "Show mounted drives in the desktop." + msgstr "Mostra as unidades montadas na área de trabalho." + ++#: appIcons.js:937 ++msgid "New Window" ++msgstr "Nova janela" ++ ++#: appIcons.js:918 ++msgid "Show Details" ++msgstr "Exibir detalhes" ++ ++#: appIcons.js:1000 ++msgid "Windows" ++msgstr "Janelas" ++ ++#: appIcons.js:1159 ++msgid "Dash to Panel Settings" ++msgstr "Configurações do Dash to Panel" ++ ++#: appIcons.js:1166 ++msgid "Restore Windows" ++msgstr "Restaurar janelas" ++ ++#: appIcons.js:1166 ++msgid "Show Desktop" ++msgstr "Exibir área de trabalho" ++ ++#: prefs.js:266 ++msgid "Running Indicator Options" ++msgstr "Opções do indicador de execução" ++ ++#: prefs.js:491 ++msgid "Advanced hotkeys options" ++msgstr "Opções avançadas das teclas de atalho" ++ ++#: prefs.js:559 ++msgid "Secondary Menu Options" ++msgstr "Opções do menu secundário" ++ ++#: prefs.js:601 Settings.ui.h:85 ++msgid "Advanced Options" ++msgstr "Opções avançadas" ++ ++#: Settings.ui.h:7 ++msgid "Cycle windows + minimize" ++msgstr "Percorrer as janelas + minimizar" ++ ++#: Settings.ui.h:13 ++msgid "Integrate AppMenu items" ++msgstr "Itens integrados ao Menu de aplicativos" ++ ++#: Settings.ui.h:14 ++msgid "Show Details menu item" ++msgstr "Item do menu Exibir detalhes" ++ ++#: Settings.ui.h:15 ++msgid "Highlight focused application" ++msgstr "Destaque para o aplicativo em foco" ++ ++#: Settings.ui.h:16 ++msgid "Height (px)" ++msgstr "Altura (px)" ++ ++#: Settings.ui.h:17 ++msgid "0" ++msgstr "0" ++ ++#: Settings.ui.h:18 ++msgid "Color - Override Theme" ++msgstr "Cor - Tema de sobreposição" ++ ++#: Settings.ui.h:19 ++msgid "1 window open" ++msgstr "1 janela aberta" ++ ++#: Settings.ui.h:20 ++msgid "Apply to all" ++msgstr "Aplicar para tudo" ++ ++#: Settings.ui.h:21 ++msgid "2 windows open" ++msgstr "2 janelas abertas" ++ ++#: Settings.ui.h:22 ++msgid "3 windows open" ++msgstr "3 janelas abertas" ++ ++#: Settings.ui.h:23 ++msgid "4+ windows open" ++msgstr "4 ou + janelas abertas" ++ ++#: Settings.ui.h:24 ++msgid "Use different for unfocused" ++msgstr "Utilizar uma diferente para o que não está focado" ++ ++#: Settings.ui.h:25 ++msgid "Preview timeout on icon leave (ms)" ++msgstr "Tempo limite de pré-visualização sobre o ícone sair (ms)" ++ ++#: Settings.ui.h:26 ++msgid "" ++"If set too low, the window preview of running applications may seem to close " ++"too quickly when trying to enter the popup. If set too high, the preview may " ++"linger too long when moving to an adjacent icon." ++msgstr "" ++"Se definido como muito baixo, a pré-visualização da janela de aplicativos em " ++"execução pode fechar muito rapidamente ao tentar inserir o pop-up. Se " ++"definido como muito alto, a visualização pode demorar muito tempo ao mover-" ++"se para um ícone adjacente." ++ ++#: Settings.ui.h:27 ++msgid "Super" ++msgstr "Super" ++ ++#: Settings.ui.h:28 ++msgid "Super + Alt" ++msgstr "Super + Alt" ++ ++#: Settings.ui.h:29 ++msgid "Hotkeys prefix" ++msgstr "Prefixo das teclas de atalho" ++ ++#: Settings.ui.h:30 ++msgid "Hotkeys will either be Super+Number or Super+Alt+Num" ++msgstr "As teclas de atalho serão Super+Número ou Super+Alt+Número" ++ ++#: Settings.ui.h:32 ++msgid "" ++"Temporarily show the application numbers over the icons when using the " ++"hotkeys." ++msgstr "" ++"Exibe temporariamente os números das aplicações sobre os ícones ao usar as " ++"teclas de atalho." ++ ++#: Settings.ui.h:33 ++msgid "Hide timeout (ms)" ++msgstr "Ocultar tempo limite (ms)" ++ ++#: Settings.ui.h:34 ++msgid "Shortcut to show the overlay for 2 seconds" ++msgstr "Atalho para exibir a sobreposição por 2 segundos" ++ ++#: Settings.ui.h:36 ++msgid "Panel screen position" ++msgstr "Posição da tela do painel" ++ ++#: Settings.ui.h:39 ++msgid "" ++"Panel Size\n" ++"(default is 48)" ++msgstr "" ++"Tamanho do painel\n" ++"(O padrão é 48)" ++ ++#: Settings.ui.h:41 ++msgid "" ++"App Icon Margin\n" ++"(default is 8)" ++msgstr "" ++"Margem do ícone do Aplicativo\n" ++"(O padrão é 8)" ++ ++#: Settings.ui.h:43 ++msgid "Running indicator position" ++msgstr "Posição do indicador de execução" ++ ++#: Settings.ui.h:44 ++msgid "Running indicator style (Focused app)" ++msgstr "Estilo do indicador de execução (Aplicativo em foco)" ++ ++#: Settings.ui.h:52 ++msgid "Running indicator style (Unfocused apps)" ++msgstr "Estilo do indicador de execução (Aplicativos fora de foco)" ++ ++#: Settings.ui.h:53 ++msgid "Clock location" ++msgstr "Local do relógio" ++ ++#: Settings.ui.h:54 ++msgid "Natural" ++msgstr "Natural" ++ ++#: Settings.ui.h:55 ++msgid "Left of status menu" ++msgstr "Esquerda do menu de status" ++ ++#: Settings.ui.h:56 ++msgid "Right of status menu" ++msgstr "Direita do menu de status" ++ ++#: Settings.ui.h:57 ++msgid "Position and Style" ++msgstr "Posição e Estilo" ++ ++#: Settings.ui.h:60 ++msgid "Show Activities button" ++msgstr "Mostrar botão Atividades" ++ ++#: Settings.ui.h:61 ++msgid "Show Desktop button" ++msgstr "Mostrar botão Área de trabalho" ++ ++#: Settings.ui.h:62 ++msgid "Show AppMenu button" ++msgstr "Mostrar botão Menu de aplicativos" ++ ++#: Settings.ui.h:63 ++msgid "Top Bar > Show App Menu must be enabled in Tweak Tool" ++msgstr "" ++"Barra superior > Mostrar o Menu do aplicativos deve ser ativado na " ++"Ferramenta de ajustes do GNOME" ++ ++#: Settings.ui.h:64 ++msgid "Show window previews on hover" ++msgstr "Mostrar pré-visulização da janela ao pairar" ++ ++#: Settings.ui.h:65 ++msgid "Time (ms) before showing (100 is default)" ++msgstr "Tempo (ms) antes de exibir (100 é o padrão)" ++ ++#: Settings.ui.h:66 ++msgid "Isolate Workspaces" ++msgstr "Isolar Espaços de trabalho" ++ ++#: Settings.ui.h:70 ++msgid "Use hotkeys to activate apps" ++msgstr "Utilizar teclas de atalho para ativar os aplicativos" ++ ++#: Settings.ui.h:72 ++msgid "" ++"Tray Font Size\n" ++"(0 = theme default)" ++msgstr "" ++"Tamanho da fonte da bandeja\n" ++"(0 = padrão do tema)" ++ ++#: Settings.ui.h:74 ++msgid "" ++"LeftBox Font Size\n" ++"(0 = theme default)" ++msgstr "" ++"Tamanho da fonte da caixa da esquerda\n" ++"(0 = padrão do tema)" ++ ++#: Settings.ui.h:76 ++msgid "" ++"Tray Item Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"Preenchimento do ítem da bandeja\n" ++"(-1 = padrão do tema)" ++ ++#: Settings.ui.h:78 ++msgid "" ++"Status Icon Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"Preenchimento do ícone de status\n" ++"(-1 = padrão do tema)" ++ ++#: Settings.ui.h:80 ++msgid "" ++"LeftBox Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"Preenchimento da caixa da esquerda\n" ++"(-1 = padrão do tema)" ++ ++#: Settings.ui.h:82 ++msgid "Animate switching applications" ++msgstr "Animar alternações dos aplicativos" ++ ++#: Settings.ui.h:83 ++msgid "Animate launching new windows" ++msgstr "Carregamento animado de novas janelas" ++ ++#: Settings.ui.h:84 ++msgid "App icon secondary (right-click) menu" ++msgstr "Ícone do aplicativo do menu secundário (clique-direito)" ++ ++#: Settings.ui.h:86 ++msgid "Fine-Tune" ++msgstr "Sintonia fina" ++ ++#: Settings.ui.h:88 ++msgid "Github" ++msgstr "Github" ++ + #~ msgid "Application" + #~ msgstr "Aplicativo" + +@@ -1150,9 +1550,6 @@ msgstr "Mostra as unidades montadas na área de trabalho." + #~ msgid "Drag here to add favorites" + #~ msgstr "Arraste aqui para adicionar favoritos" + +-#~ msgid "New Window" +-#~ msgstr "Nova janela" +- + #~ msgid "Quit Application" + #~ msgstr "Fechar aplicativo" + +@@ -1363,3 +1760,6 @@ msgstr "Mostra as unidades montadas na área de trabalho." + + #~ msgid "Ok" + #~ msgstr "Ok" ++ ++#~ msgid "Panel Size" ++#~ msgstr "Tamanho do painel" +diff --git a/po/ru.po b/po/ru.po +index 360d636f..11e0cf4e 100644 +--- a/po/ru.po ++++ b/po/ru.po +@@ -1,5 +1,6 @@ + # #-#-#-#-# ru.po (gnome-shell-extensions gnome-3-0) #-#-#-#-# + # #-#-#-#-# ru.po (gnome-shell-extensions gnome-3-0) #-#-#-#-# ++# #-#-#-#-# ru.po (gnome-shell-extensions gnome-3-0) #-#-#-#-# + # Russian translation for gnome-shell-extensions. + # Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER + # This file is distributed under the same license as the gnome-shell-extensions package. +@@ -16,11 +17,18 @@ + # This file is distributed under the same license as the PACKAGE package. + # Eaglers , 2018. + # ++# #-#-#-#-# ru.po #-#-#-#-# ++# SOME DESCRIPTIVE TITLE. ++# Copyright (C) 2017 ++# This file is distributed under the same license as the PACKAGE package. ++# Alex Gluck , 2017. ++# + #, fuzzy + msgid "" + msgstr "" + "#-#-#-#-# ru.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" + "#-#-#-#-# ru.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"#-#-#-#-# ru.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" + "Project-Id-Version: gnome-shell-extensions gnome-3-0\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/" + "issues\n" +@@ -32,8 +40,8 @@ msgstr "" + "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" ++"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.4.1\n" + "#-#-#-#-# ru.po (dash-to-dock) #-#-#-#-#\n" + "Project-Id-Version: dash-to-dock\n" +@@ -46,8 +54,8 @@ msgstr "" + "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" ++"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: Gtranslator 2.91.7\n" + "#-#-#-#-# ru.po #-#-#-#-#\n" + "Project-Id-Version: \n" +@@ -60,9 +68,23 @@ msgstr "" + "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" ++"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" ++"#-#-#-#-# ru.po #-#-#-#-#\n" ++"Project-Id-Version: \n" ++"Report-Msgid-Bugs-To: \n" ++"POT-Creation-Date: 2020-11-06 08:17-0300\n" ++"PO-Revision-Date: 2020-11-06 13:38-0300\n" ++"Last-Translator: vantu5z \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" ++"X-Generator: Poedit 2.4.1\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" + + #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3 + msgid "GNOME Classic" +@@ -312,7 +334,7 @@ msgstr "Рабочая область %d" + msgid "Add Workspace" + msgstr "Добавить рабочую область" + +-#: prefs.js:268 ++#: prefs.js:268 prefs.js:732 + msgid "Primary monitor" + msgstr "Основной монитор" + +@@ -320,11 +342,11 @@ msgstr "Основной монитор" + msgid "Secondary monitor " + msgstr "Дополнительный монитор" + +-#: prefs.js:309 Settings.ui.h:28 ++#: prefs.js:309 Settings.ui.h:28 Settings.ui.h:156 + msgid "Right" + msgstr "Справа" + +-#: prefs.js:310 Settings.ui.h:25 ++#: prefs.js:310 Settings.ui.h:25 Settings.ui.h:155 + msgid "Left" + msgstr "Слева" + +@@ -332,17 +354,30 @@ msgstr "Слева" + msgid "Intelligent autohide customization" + msgstr "Настройка автоскрытия" + +-#: prefs.js:367 prefs.js:560 prefs.js:616 ++#: prefs.js:367 prefs.js:560 prefs.js:616 prefs.js:376 prefs.js:433 ++#: prefs.js:576 prefs.js:894 prefs.js:1037 prefs.js:1164 prefs.js:1450 ++#: prefs.js:1545 prefs.js:1610 prefs.js:1653 prefs.js:1750 prefs.js:1784 ++#: prefs.js:1826 ++#, fuzzy + msgid "Reset to defaults" +-msgstr "Сбросить настройки" ++msgstr "" ++"#-#-#-#-# ru.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"Сбросить настройки\n" ++"#-#-#-#-# ru.po #-#-#-#-#\n" ++"По умолчанию" + + #: prefs.js:553 + msgid "Show dock and application numbers" + msgstr "Показывать количество запущенных приложений" + +-#: prefs.js:609 ++#: prefs.js:609 prefs.js:1538 ++#, fuzzy + msgid "Customize middle-click behavior" +-msgstr "Настройка действий для средней кнопки мыши" ++msgstr "" ++"#-#-#-#-# ru.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"Настройка действий для средней кнопки мыши\n" ++"#-#-#-#-# ru.po #-#-#-#-#\n" ++"Средняя кнопка мышки" + + #: prefs.js:692 + msgid "Customize running indicators" +@@ -363,33 +398,63 @@ msgstr "Все окна" + msgid "Dash to Dock %s" + msgstr "" + +-#: Settings.ui.h:1 ++#: Settings.ui.h:1 Settings.ui.h:2 ++#, fuzzy + msgid "" + "When set to minimize, double clicking minimizes all the windows of the " + "application." + msgstr "" ++"#-#-#-#-# ru.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" + "Если установлено на «Минимизировать», то двойной клик минимизирует все окна " +-"данного приложения." ++"данного приложения.\n" ++"#-#-#-#-# ru.po #-#-#-#-#\n" ++"Если выбрано \"Свернуть окно\", двойной щелчок сворачивает все окна " ++"приложения." + +-#: Settings.ui.h:2 ++#: Settings.ui.h:2 Settings.ui.h:3 ++#, fuzzy + msgid "Shift+Click action" +-msgstr "Действие по Shift+Click" ++msgstr "" ++"#-#-#-#-# ru.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"Действие по Shift+Click\n" ++"#-#-#-#-# ru.po #-#-#-#-#\n" ++"Действия для Shift+Щелчок" + + #: Settings.ui.h:3 ++#, fuzzy + msgid "Raise window" +-msgstr "Показать окно" ++msgstr "" ++"#-#-#-#-# ru.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"Показать окно\n" ++"#-#-#-#-# ru.po #-#-#-#-#\n" ++"Восстановить окно" + +-#: Settings.ui.h:4 ++#: Settings.ui.h:4 Settings.ui.h:5 ++#, fuzzy + msgid "Minimize window" +-msgstr "Минимизировать окно" ++msgstr "" ++"#-#-#-#-# ru.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"Минимизировать окно\n" ++"#-#-#-#-# ru.po #-#-#-#-#\n" ++"Свернуть окно" + +-#: Settings.ui.h:5 ++#: Settings.ui.h:5 Settings.ui.h:6 ++#, fuzzy + msgid "Launch new instance" +-msgstr "Открыть новое окно" ++msgstr "" ++"#-#-#-#-# ru.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"Открыть новое окно\n" ++"#-#-#-#-# ru.po #-#-#-#-#\n" ++"Запустить ещё одну копию" + +-#: Settings.ui.h:6 ++#: Settings.ui.h:6 Settings.ui.h:7 ++#, fuzzy + msgid "Cycle through windows" +-msgstr "Переключить окно приложения" ++msgstr "" ++"#-#-#-#-# ru.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"Переключить окно приложения\n" ++"#-#-#-#-# ru.po #-#-#-#-#\n" ++"Переключение между окнами" + + #: Settings.ui.h:7 + msgid "Minimize or overview" +@@ -407,25 +472,46 @@ msgstr "Минимизация или показ миниатюр" + msgid "Focus or show previews" + msgstr "Минимизация или показ миниатюр" + +-#: Settings.ui.h:11 ++#: Settings.ui.h:11 appIcons.js:1436 appIcons.js:1496 appIcons.js:1498 ++#: Settings.ui.h:10 + msgid "Quit" + msgstr "Выйти" + +-#: Settings.ui.h:12 ++#: Settings.ui.h:12 Settings.ui.h:11 ++#, fuzzy + msgid "Behavior for Middle-Click." +-msgstr "Действие по нажатию средней кнопки мыши." ++msgstr "" ++"#-#-#-#-# ru.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"Действие по нажатию средней кнопки мыши.\n" ++"#-#-#-#-# ru.po #-#-#-#-#\n" ++"Поведение для средней кнопки мыши." + +-#: Settings.ui.h:13 ++#: Settings.ui.h:13 Settings.ui.h:12 ++#, fuzzy + msgid "Middle-Click action" +-msgstr "Действие по Middle-Click" ++msgstr "" ++"#-#-#-#-# ru.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"Действие по Middle-Click\n" ++"#-#-#-#-# ru.po #-#-#-#-#\n" ++"Действие на нажатие средней кнопки" + +-#: Settings.ui.h:14 ++#: Settings.ui.h:14 Settings.ui.h:13 ++#, fuzzy + msgid "Behavior for Shift+Middle-Click." +-msgstr "Действие по нажатию Shift + средняя кнопка мыши." ++msgstr "" ++"#-#-#-#-# ru.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"Действие по нажатию Shift + средняя кнопка мыши.\n" ++"#-#-#-#-# ru.po #-#-#-#-#\n" ++"Поведение для Shift+средняя_кнопка." + +-#: Settings.ui.h:15 ++#: Settings.ui.h:15 Settings.ui.h:14 ++#, fuzzy + msgid "Shift+Middle-Click action" +-msgstr "Действие по Shift+Middle-Click" ++msgstr "" ++"#-#-#-#-# ru.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"Действие по Shift+Middle-Click\n" ++"#-#-#-#-# ru.po #-#-#-#-#\n" ++"Действие на нажатие Shift+средняя_кнопка" + + #: Settings.ui.h:16 + msgid "Enable Unity7 like glossy backlit items" +@@ -463,13 +549,23 @@ msgstr "Показывать на всех мониторах." + msgid "Position on screen" + msgstr "Расположение на экране" + +-#: Settings.ui.h:26 ++#: Settings.ui.h:26 Settings.ui.h:94 ++#, fuzzy + msgid "Bottom" +-msgstr "Снизу" ++msgstr "" ++"#-#-#-#-# ru.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"Снизу\n" ++"#-#-#-#-# ru.po #-#-#-#-#\n" ++"Внизу" + +-#: Settings.ui.h:27 ++#: Settings.ui.h:27 Settings.ui.h:95 ++#, fuzzy + msgid "Top" +-msgstr "Сверху" ++msgstr "" ++"#-#-#-#-# ru.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"Сверху\n" ++"#-#-#-#-# ru.po #-#-#-#-#\n" ++"Наверху" + + #: Settings.ui.h:29 + msgid "" +@@ -505,11 +601,11 @@ msgstr "" + msgid "Position and size" + msgstr "Положение и размер" + +-#: Settings.ui.h:36 ++#: Settings.ui.h:36 Settings.ui.h:186 + msgid "Show favorite applications" + msgstr "Показывать избранные приложения" + +-#: Settings.ui.h:37 ++#: Settings.ui.h:37 Settings.ui.h:187 + msgid "Show running applications" + msgstr "Показывать запущенные приложения" + +@@ -534,16 +630,26 @@ msgstr "" + "дополнений." + + #: Settings.ui.h:42 ++#, fuzzy + msgid "Show Applications icon" +-msgstr "Показывать иконку «Приложения»" ++msgstr "" ++"#-#-#-#-# ru.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"Показывать иконку «Приложения»\n" ++"#-#-#-#-# ru.po #-#-#-#-#\n" ++"Показывать иконку Программы" + + #: Settings.ui.h:43 + msgid "Move the applications button at the beginning of the dock." + msgstr "Расположить кнопку «Приложения» с другой стороны Дока." + +-#: Settings.ui.h:44 ++#: Settings.ui.h:44 Settings.ui.h:138 ++#, fuzzy + msgid "Animate Show Applications." +-msgstr "Анимация при показе «Приложений»" ++msgstr "" ++"#-#-#-#-# ru.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"Анимация при показе «Приложений»\n" ++"#-#-#-#-# ru.po #-#-#-#-#\n" ++"Анимировать Показ списка приложений." + + #: Settings.ui.h:45 + msgid "Show trash can" +@@ -557,25 +663,40 @@ msgstr "Показывать примонтированные разделы и + msgid "Launchers" + msgstr "Команды" + +-#: Settings.ui.h:48 ++#: Settings.ui.h:48 Settings.ui.h:210 ++#, fuzzy + msgid "" + "Enable Super+(0-9) as shortcuts to activate apps. It can also be used " + "together with Shift and Ctrl." + msgstr "" ++"#-#-#-#-# ru.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" + "Включить сочетания клавиш Super+(0-9) для выбора приложений. Также может " +-"быть использовано совместно с Shift и Ctrl." ++"быть использовано совместно с Shift и Ctrl.\n" ++"#-#-#-#-# ru.po #-#-#-#-#\n" ++"Использовать Super+(0-9) как горячие клавиши запуска приложений. Доступно " ++"использование Shift и Ctrl." + + #: Settings.ui.h:49 + msgid "Use keyboard shortcuts to activate apps" + msgstr "Использовать сочетания клавиш для выбора приложений" + +-#: Settings.ui.h:50 ++#: Settings.ui.h:50 Settings.ui.h:198 ++#, fuzzy + msgid "Behaviour when clicking on the icon of a running application." +-msgstr "Поведение при нажатии на иконку запущенного приложения." ++msgstr "" ++"#-#-#-#-# ru.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"Поведение при нажатии на иконку запущенного приложения.\n" ++"#-#-#-#-# ru.po #-#-#-#-#\n" ++"Поведение при щелчке на значке запущенного приложения." + +-#: Settings.ui.h:51 ++#: Settings.ui.h:51 Settings.ui.h:199 ++#, fuzzy + msgid "Click action" +-msgstr "Действие по нажатию" ++msgstr "" ++"#-#-#-#-# ru.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"Действие по нажатию\n" ++"#-#-#-#-# ru.po #-#-#-#-#\n" ++"Действие при щелчке" + + #: Settings.ui.h:53 + msgid "Behaviour when scrolling on the icon of an application." +@@ -585,15 +706,20 @@ msgstr "Поведение при прокрутке на иконке прил + msgid "Scroll action" + msgstr "Действие при прокрутке" + +-#: Settings.ui.h:55 ++#: Settings.ui.h:55 Settings.ui.h:205 + msgid "Do nothing" + msgstr "Ничего не делать" + +-#: Settings.ui.h:56 ++#: Settings.ui.h:56 Settings.ui.h:206 ++#, fuzzy + msgid "Switch workspace" +-msgstr "Переключить рабочий стол" ++msgstr "" ++"#-#-#-#-# ru.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"Переключить рабочий стол\n" ++"#-#-#-#-# ru.po #-#-#-#-#\n" ++"Переключать рабочий стол" + +-#: Settings.ui.h:57 ++#: Settings.ui.h:57 Settings.ui.h:197 + msgid "Behavior" + msgstr "Поведение" + +@@ -627,31 +753,36 @@ msgstr "Настроить индикаторы количества окон" + msgid "Default" + msgstr "По умолчанию" + +-#: Settings.ui.h:64 ++#: Settings.ui.h:64 Settings.ui.h:166 + msgid "Dots" + msgstr "Точки" + +-#: Settings.ui.h:65 ++#: Settings.ui.h:65 Settings.ui.h:167 + msgid "Squares" + msgstr "Квадраты" + +-#: Settings.ui.h:66 ++#: Settings.ui.h:66 Settings.ui.h:168 + msgid "Dashes" + msgstr "Линии" + +-#: Settings.ui.h:67 ++#: Settings.ui.h:67 Settings.ui.h:169 + msgid "Segmented" + msgstr "Сегменты" + +-#: Settings.ui.h:68 ++#: Settings.ui.h:68 Settings.ui.h:170 ++#, fuzzy + msgid "Solid" +-msgstr "Слитно" ++msgstr "" ++"#-#-#-#-# ru.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"Слитно\n" ++"#-#-#-#-# ru.po #-#-#-#-#\n" ++"Жирные линии" + +-#: Settings.ui.h:69 ++#: Settings.ui.h:171 + msgid "Ciliora" +-msgstr "" ++msgstr "Линии с точками" + +-#: Settings.ui.h:70 ++#: Settings.ui.h:70 Settings.ui.h:172 + msgid "Metro" + msgstr "Метро" + +@@ -667,9 +798,14 @@ msgstr "Настроить цвет Дока" + msgid "Tune the dash background opacity." + msgstr "Настройка прозрачности фона Дока." + +-#: Settings.ui.h:75 ++#: Settings.ui.h:75 Settings.ui.h:89 ++#, fuzzy + msgid "Fixed" +-msgstr "Постоянная" ++msgstr "" ++"#-#-#-#-# ru.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"Постоянная\n" ++"#-#-#-#-# ru.po #-#-#-#-#\n" ++"Закреплено" + + #: Settings.ui.h:76 + msgid "Dynamic" +@@ -687,7 +823,7 @@ msgstr "Не скруглять углы\n" + msgid "Appearance" + msgstr "Внешний вид" + +-#: Settings.ui.h:81 ++#: Settings.ui.h:81 Settings.ui.h:232 + msgid "version: " + msgstr "версия: " + +@@ -703,21 +839,32 @@ msgstr "Автор" + msgid "Webpage" + msgstr "Домашняя страница" + +-#: Settings.ui.h:85 ++#: Settings.ui.h:85 Settings.ui.h:243 ++#, fuzzy + msgid "" + "This program comes with ABSOLUTELY NO WARRANTY.\n" +-"See the GNU General Public License, version 2 or later for details." ++"See the GNU General Public License, version 2 or later for details." + msgstr "" ++"#-#-#-#-# ru.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" + "Эта программа распространяется БЕЗ КАКИХ ЛИБО " + "ГАРАНТИЙ.\n" +-"Смотри GNU General Public License, версия 2 или позднее для информации." ++"Смотри GNU General Public License, версия 2 или позднее для информации.\n" ++"#-#-#-#-# ru.po #-#-#-#-#\n" ++"Эта программа поставляется без каких-либо гарантий.\n" ++"Подробнее на GNU General Public License, version 2 or later" + +-#: Settings.ui.h:87 ++#: Settings.ui.h:87 Settings.ui.h:245 ++#, fuzzy + msgid "About" +-msgstr "О дополнении" ++msgstr "" ++"#-#-#-#-# ru.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"О дополнении\n" ++"#-#-#-#-# ru.po #-#-#-#-#\n" ++"О приложении" + + #: Settings.ui.h:88 + msgid "Customize minimum and maximum opacity values" +@@ -731,9 +878,14 @@ msgstr "Минимальная прозрачность" + msgid "Maximum opacity" + msgstr "Максимальная прозрачность" + +-#: Settings.ui.h:91 ++#: Settings.ui.h:91 Settings.ui.h:121 ++#, fuzzy + msgid "Number overlay" +-msgstr "Отображение номера" ++msgstr "" ++"#-#-#-#-# ru.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"Отображение номера\n" ++"#-#-#-#-# ru.po #-#-#-#-#\n" ++"Наложение цифр" + + #: Settings.ui.h:92 + msgid "" +@@ -759,9 +911,14 @@ msgstr "" + msgid "Shortcut for the options above" + msgstr "Сочетания клавиш для указанных параметров" + +-#: Settings.ui.h:96 ++#: Settings.ui.h:96 Settings.ui.h:56 ++#, fuzzy + msgid "Syntax: , , , " +-msgstr "Синтаксис: , , , " ++msgstr "" ++"#-#-#-#-# ru.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"Синтаксис: , , , \n" ++"#-#-#-#-# ru.po #-#-#-#-#\n" ++"Синтакс: , , , " + + #: Settings.ui.h:97 + msgid "Hide timeout (s)" +@@ -791,7 +948,7 @@ msgstr "Скрывать Док, когда он перекрыт окнами + msgid "Dodge windows" + msgstr "Перекрытие окнами" + +-#: Settings.ui.h:104 ++#: Settings.ui.h:104 Settings.ui.h:46 + msgid "All windows" + msgstr "Все окна" + +@@ -904,8 +1061,13 @@ msgid "Display Settings" + msgstr "Настройки дисплея" + + #: desktopGrid.js:355 ++#, fuzzy + msgid "Settings" +-msgstr "Параметры" ++msgstr "" ++"#-#-#-#-# ru.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"Параметры\n" ++"#-#-#-#-# ru.po #-#-#-#-#\n" ++"Настройки" + + #: desktopGrid.js:653 + msgid "Rename" +@@ -983,146 +1145,1225 @@ msgstr "Показывать значок корзины" + msgid "Show the trash icon in the desktop." + msgstr "Показывать значок корзины на рабочем столе." + +-#~ msgid "Attach modal dialog to the parent window" +-#~ msgstr "Прикреплять модальное диалоговое окно к родительскому окну" ++#: prefs.js:206 ++msgid "Show Desktop button height (px)" ++msgstr "Высота кнопки \"Рабочий стол\" (в пикселях)" + +-#~ msgid "" +-#~ "This key overrides the key in org.gnome.mutter when running GNOME Shell." +-#~ msgstr "" +-#~ "Этот ключ переопределяет ключ в org.gnome.mutter при запуске GNOME Shell." ++#: prefs.js:206 ++msgid "Show Desktop button width (px)" ++msgstr "Ширина кнопки \"Рабочий стол\" (в пикселях)" + +-#~ msgid "Arrangement of buttons on the titlebar" +-#~ msgstr "Расположение кнопок в заголовке" ++#: prefs.js:218 ++msgid "Unavailable when gnome-shell top panel is present" ++msgstr "Недоступно, если включена верхняя панель GNOME" + +-#~ msgid "" +-#~ "This key overrides the key in org.gnome.desktop.wm.preferences when " +-#~ "running GNOME Shell." +-#~ msgstr "" +-#~ "Этот ключ переопределяет ключ в org.gnome.desktop.wm.preferences при " +-#~ "запуске GNOME Shell." ++#: prefs.js:293 ++msgid "Show Applications button" ++msgstr "Кнопка \"Приложения\"" + +-#~ msgid "Enable edge tiling when dropping windows on screen edges" +-#~ msgstr "" +-#~ "Автоматически изменять размеры окна при перемещении окна к краям экрана" ++#: prefs.js:294 ++msgid "Activities button" ++msgstr "Кнопка \"Обзор\"" + +-#~ msgid "Workspaces only on primary monitor" +-#~ msgstr "Рабочие места только на основном мониторе" ++#: prefs.js:295 ++msgid "Taskbar" ++msgstr "Панель задач" + +-#~ msgid "Delay focus changes in mouse mode until the pointer stops moving" +-#~ msgstr "Задержка изменения фокуса в режиме мыши после остановки указателя" ++#: prefs.js:296 ++msgid "Date menu" ++msgstr "Дата и время" + +-#~ msgid "Thumbnail only" +-#~ msgstr "Только миниатюры" ++#: prefs.js:297 ++msgid "System menu" ++msgstr "Системное меню" + +-#~ msgid "Application icon only" +-#~ msgstr "Только значок приложения" ++#: prefs.js:298 ++msgid "Left box" ++msgstr "Левый блок" + +-#~ msgid "Thumbnail and application icon" +-#~ msgstr "Миниатюра и значок приложения" ++#: prefs.js:299 ++msgid "Center box" ++msgstr "Центральный блок" + +-#~ msgid "Present windows as" +-#~ msgstr "Отображать окна как" ++#: prefs.js:300 ++msgid "Right box" ++msgstr "Правый блок" + +-#~ msgid "Activities Overview" +-#~ msgstr "Обзор" ++#: prefs.js:301 ++msgid "Desktop button" ++msgstr "Кнопка \"Рабочий стол\"" + +-#~ msgid "Application" +-#~ msgstr "Приложение" ++#: prefs.js:307 ++msgid "Move up" ++msgstr "Переместить выше" + +-#~ msgid "Create new matching rule" +-#~ msgstr "Создать новое правило соответствия" ++#: prefs.js:309 ++msgid "Move down" ++msgstr "Переместить ниже" + +-#~ msgid "Add" +-#~ msgstr "Добавить" ++#: prefs.js:311 ++msgid "Visible" ++msgstr "Видимый" + +-#~ msgid "Hello, world!" +-#~ msgstr "Привет, мир!" ++#: prefs.js:312 ++msgid "Select element position" ++msgstr "Выбор позиции элемента" + +-#~ msgid "Alternative greeting text." +-#~ msgstr "Альтернативный текст приветствия." ++#: prefs.js:323 ++msgid "Stacked to top" ++msgstr "Сверху" + +-#~ msgid "" +-#~ "If not empty, it contains the text that will be shown when clicking on " +-#~ "the panel." +-#~ msgstr "" +-#~ "Если строка не пуста, то содержащийся в ней текст будет показан при " +-#~ "нажатии на панель." ++#: prefs.js:323 ++msgid "Stacked to left" ++msgstr "Слева" + +-#~ msgid "Message" +-#~ msgstr "Сообщение" ++#: prefs.js:324 ++msgid "Stacked to bottom" ++msgstr "Снизу" + +-#~ msgid "" +-#~ "Example aims to show how to build well behaved extensions for the Shell " +-#~ "and as such it has little functionality on its own.\n" +-#~ "Nevertheless it’s possible to customize the greeting message." +-#~ msgstr "" +-#~ "Цель расширения Example — показать, как создавать расширения для Shell, " +-#~ "само по себе оно имеет малую функциональность.\n" +-#~ "Тем не менее, можно настроить приветственное сообщение." ++#: prefs.js:324 ++msgid "Stacked to right" ++msgstr "Справа" + +-#~ msgid "Name" +-#~ msgstr "Название" ++#: prefs.js:325 ++msgid "Centered" ++msgstr "По центру" + +-#~ msgid "CPU" +-#~ msgstr "ЦП" ++#: prefs.js:326 ++msgid "Monitor Center" ++msgstr "Центр монитора" + +-#~ msgid "Memory" +-#~ msgstr "Память" ++#: prefs.js:345 ++msgid "More options" ++msgstr "Дополнительные параметры" + +-#~ msgid "GNOME Shell Classic" +-#~ msgstr "Классический GNOME Shell" ++#: prefs.js:369 ++msgid "Show Applications options" ++msgstr "Настройка меню \"Приложения\"" + +-#~ msgid "Window management and application launching" +-#~ msgstr "Управление окнами и запуск приложений" ++#: prefs.js:426 ++msgid "Show Desktop options" ++msgstr "Настройки кнопки \"Рабочий стол\"" + +-#~ msgid "Adaptive" +-#~ msgstr "Адаптивная" ++#: prefs.js:569 ++msgid "Running Indicator Options" ++msgstr "Параметры индикации запущенных приложений" + +-#~ msgid "Show a dot for each windows of the application." +-#~ msgstr "Отображает точку для каждого окна приложения." ++#: prefs.js:732 ++msgid "Monitor " ++msgstr "Монитор " + +-#~ msgid "" +-#~ "With fixed icon size, only the edge of the dock and the Show " +-#~ "Applications icon are active." +-#~ msgstr "" +-#~ "При фиксированном размере иконок приложений активна только область иконки " +-#~ "«Приложения» и край дока." ++#: prefs.js:887 ++msgid "Dynamic opacity options" ++msgstr "Настройки динамической прозрачности" + +-#~ msgid "Switch workspace by scrolling on the dock" +-#~ msgstr "Переключать рабочие столы при прокрутке на Доке" ++#: prefs.js:1030 ++msgid "Intellihide options" ++msgstr "Настройки автоскрытия" + +-#~ msgid "Only consider windows of the focused application" +-#~ msgstr "Применить только к активным окнам приложений" ++#: prefs.js:1157 ++msgid "Window preview options" ++msgstr "Настройки предпросмотра" + +-#~ msgid "Main Settings" +-#~ msgstr "Основные настройки" ++#: prefs.js:1443 ++msgid "Ungrouped application options" ++msgstr "Отображение разгруппированных приложений" + +-#~ msgid "Dock Position" +-#~ msgstr "Расположение Дока" ++#: prefs.js:1603 ++msgid "Customize panel scroll behavior" ++msgstr "Прокручивание панелей" + +-#~ msgid "Dock is fixed and always visible" +-#~ msgstr "Док зафиксирован и всегда виден" ++#: prefs.js:1646 ++msgid "Customize icon scroll behavior" ++msgstr "Прокручивание значков" + +-#~ msgid "Show delay [ms]" +-#~ msgstr "Задержка перед появлением [мс]" ++#: prefs.js:1743 ++msgid "Advanced hotkeys options" ++msgstr "Расширенные настройки горячих клавиш" + +-#~ msgid "Hide delay [ms]" +-#~ msgstr "Задержка перед скрытием [мс]" ++#: prefs.js:1777 ++msgid "Secondary Menu Options" ++msgstr "Дополнительные настройки меню" + +-#~ msgid "Application based intellihide" +-#~ msgstr "Интеллектуальное скрытие действует только для активных окон" ++#: prefs.js:1819 Settings.ui.h:230 ++msgid "Advanced Options" ++msgstr "Расширенные настройки" + +-#~ msgid "Show the dock on following monitor (if attached)" +-#~ msgstr "Показывать Док на дополнительном мониторе (если подключен)" ++#: prefs.js:1922 ++msgid "Export settings" ++msgstr "Сохранение" + +-#~ msgid "Primary (default)" +-#~ msgstr "Главный (по умолчанию)" ++#: prefs.js:1939 ++msgid "Import settings" ++msgstr "Загрузка" + +-#~ msgid "Max height" +-#~ msgstr "Максимальная высота" ++#: appIcons.js:1418 ++msgid "Show Details" ++msgstr "Показать подробности" + +-#~ msgid "Expand (experimental and buggy)" +-#~ msgstr "Расширяемый (экспериментально и неустойчиво)" ++#: appIcons.js:1436 ++msgid "New Window" ++msgstr "Новое окно" ++ ++#: appIcons.js:1498 ++msgid "Windows" ++msgstr "Окна" ++ ++#: appIcons.js:1847 ++msgid "Unlock taskbar" ++msgstr "Открепить список задач" ++ ++#: appIcons.js:1847 ++msgid "Lock taskbar" ++msgstr "Закрепить список задач" ++ ++#: appIcons.js:1852 ++msgid "Dash to Panel Settings" ++msgstr "Настройки Dash to Panel" ++ ++#: appIcons.js:1865 ++msgid "Restore Windows" ++msgstr "Восстановить окна" ++ ++#: appIcons.js:1865 ++msgid "Show Desktop" ++msgstr "Свернуть всё" ++ ++#: update.js:48 ++msgid "Unavailable when installed from extensions.gnome.org" ++msgstr "Недоступно, если установлено из extensions.gnome.org" ++ ++#: update.js:62 ++#, javascript-format ++msgid "Version %s (%s) is available" ++msgstr "Доступна версия %s (%s)" ++ ++#: update.js:63 ++msgid "Details" ++msgstr "Подробнее" ++ ++#: update.js:64 ++msgid "Update" ++msgstr "Обновление" ++ ++#: update.js:67 ++msgid "Already up to date" ++msgstr "Обновлений нет" ++ ++#: update.js:75 ++msgid "Error: " ++msgstr "Ошибка: " ++ ++#: update.js:168 ++msgid "Update successful, please log out/in" ++msgstr "Обновление успешно, перезайдите в систему" ++ ++#: update.js:169 ++msgid "Log out" ++msgstr "Выход из системы" ++ ++#: update.js:173 ++msgid "Update successful, please restart GNOME Shell" ++msgstr "Обновление успешно, перезапустите GNOME Shell" ++ ++#: update.js:174 ++msgid "Restart GNOME Shell" ++msgstr "Перезапуск GNOME Shell" ++ ++#: update.js:174 ++msgid "Restarting GNOME Shell..." ++msgstr "Перезапускаем GNOME Shell..." ++ ++#: Settings.ui.h:1 ++msgid "Nothing yet!" ++msgstr "Пока пусто!" ++ ++#: Settings.ui.h:4 ++msgid "Raise windows" ++msgstr "Показать окно приложения" ++ ++#: Settings.ui.h:8 ++msgid "Cycle windows + minimize" ++msgstr "Переключение между окнами + Свернуть" ++ ++#: Settings.ui.h:9 ++msgid "Toggle single / Preview multiple" ++msgstr "Переключить одно / Просмотр нескольких" ++ ++#: Settings.ui.h:15 ++msgid "Integrate AppMenu items" ++msgstr "Интегрировать Меню Приложения" ++ ++#: Settings.ui.h:16 ++msgid "Show Details menu item" ++msgstr "Меню Показать детали" ++ ++#: Settings.ui.h:17 ++msgid "Highlight focused application" ++msgstr "Подсвечивать приложение в фокусе" ++ ++#: Settings.ui.h:18 ++msgid "Icon dominant color" ++msgstr "Основной цвет значка" ++ ++#: Settings.ui.h:19 ++msgid "Custom color" ++msgstr "Задать цвет" ++ ++#: Settings.ui.h:20 ++msgid "Highlight opacity" ++msgstr "Прозрачность подсветки" ++ ++#: Settings.ui.h:21 ++msgid "Indicator size (px)" ++msgstr "Размер индикатора (в пикселях)" ++ ++#: Settings.ui.h:22 ++msgid "Indicator color - Icon Dominant" ++msgstr "Цвет индикатора по основному цвету значка" ++ ++#: Settings.ui.h:23 ++msgid "Indicator color - Override Theme" ++msgstr "Переназначить цвета темы" ++ ++#: Settings.ui.h:24 ++msgid "1 window open (or ungrouped)" ++msgstr "Когда одно окно открыто (или не сгруппировано)" ++ ++#: Settings.ui.h:25 ++msgid "Apply to all" ++msgstr "Применить ко всем" ++ ++#: Settings.ui.h:26 ++msgid "2 windows open" ++msgstr "Когда два окна открыто" ++ ++#: Settings.ui.h:27 ++msgid "3 windows open" ++msgstr "Когда три окна открыто" ++ ++#: Settings.ui.h:28 ++msgid "4+ windows open" ++msgstr "Когда четыре+ окна открыто" ++ ++#: Settings.ui.h:29 ++msgid "Use different for unfocused" ++msgstr "Использовать другой когда не в фокусе" ++ ++#: Settings.ui.h:30 ++msgid "Font size (px) of the application titles (default is 14)" ++msgstr "Размер шрифта (в пикселях) заголовка приложений (по умолчанию 14)" ++ ++#: Settings.ui.h:31 ++msgid "Font weight of application titles" ++msgstr "Жирность шрифта заголовка приложений" ++ ++#: Settings.ui.h:32 ++msgid "inherit from theme" ++msgstr "значение из темы" ++ ++#: Settings.ui.h:33 ++msgid "normal" ++msgstr "средний" ++ ++#: Settings.ui.h:34 ++msgid "lighter" ++msgstr "узкий" ++ ++#: Settings.ui.h:35 ++msgid "bold" ++msgstr "жирный" ++ ++#: Settings.ui.h:36 ++msgid "bolder" ++msgstr "самый жирный" ++ ++#: Settings.ui.h:37 ++msgid "Font color of the application titles" ++msgstr "Цвет шрифта заголовка приложений" ++ ++#: Settings.ui.h:38 ++msgid "Font color of the minimized application titles" ++msgstr "Цвет шрифта заголовка свернутых приложений" ++ ++#: Settings.ui.h:39 ++msgid "Maximum width (px) of the application titles (default is 160)" ++msgstr "" ++"Максимальная ширина (в пикселях) заголовка приложений (по умолчанию 160)" ++ ++#: Settings.ui.h:40 ++msgid "Use a fixed width for the application titles" ++msgstr "Использовать фиксированную ширину заголовков" ++ ++#: Settings.ui.h:41 ++msgid "" ++"The application titles all have the same width, even if their texts are " ++"shorter than the maximum width. The maximum width value is used as the fixed " ++"width." ++msgstr "" ++"Заголовки приложений имеют одинаковую ширину, даже если они короче " ++"максимальной ширины. Максимальное значение ширины используется как " ++"фиксированная ширина." ++ ++#: Settings.ui.h:42 ++msgid "Display running indicators on unfocused applications" ++msgstr "Индикатор запущенного приложения, когда окно не в фокусе" ++ ++#: Settings.ui.h:43 ++msgid "Use the favorite icons as application launchers" ++msgstr "Показывать избранные приложения" ++ ++#: Settings.ui.h:44 ++msgid "Only hide the panel when it is obstructed by windows " ++msgstr "Скрывать только при наложении окон " ++ ++#: Settings.ui.h:45 ++msgid "The panel hides from" ++msgstr "Скрывать панель с" ++ ++#: Settings.ui.h:47 ++msgid "Focused windows" ++msgstr "Окна в фокусе" ++ ++#: Settings.ui.h:48 ++msgid "Maximized windows" ++msgstr "Развернутые окна" ++ ++#: Settings.ui.h:49 ++msgid "Require pressure at the edge of the screen to reveal the panel" ++msgstr "Требуется давление на краю экрана, чтобы открыть панель" ++ ++#: Settings.ui.h:50 ++msgid "Required pressure threshold (px)" ++msgstr "Область у границы для показа панели (в пикселях)" ++ ++#: Settings.ui.h:51 ++msgid "Required pressure timeout (ms)" ++msgstr "Задержка показа при приближении к краю (в мс)" ++ ++#: Settings.ui.h:52 ++msgid "Allow the panel to be revealed while in fullscreen mode" ++msgstr "Разрешить отображение панели в полноэкранном режиме" ++ ++#: Settings.ui.h:53 ++msgid "Only hide secondary panels (requires multi-monitors option)" ++msgstr "" ++"Скрывать дополнительные панели (требуется показ на нескольких мониторах)" ++ ++#: Settings.ui.h:54 ++msgid "e.g. i" ++msgstr "например, i" ++ ++#: Settings.ui.h:55 ++msgid "Keyboard shortcut to reveal and hold the panel" ++msgstr "Комбинация клавиш для показа панели" ++ ++#: Settings.ui.h:57 ++msgid "Hide and reveal animation duration (ms)" ++msgstr "Длительность анимации (в мс)" ++ ++#: Settings.ui.h:58 ++msgid "Delay before hiding the panel (ms)" ++msgstr "Задержка перед скрытием панели (в мс)" ++ ++#: Settings.ui.h:59 ++msgid "Delay before enabling intellihide on start (ms)" ++msgstr "Задержка на скрытие при запуске (в мс)" ++ ++#: Settings.ui.h:60 ++msgid "Time (ms) before showing (400 is default)" ++msgstr "Задержка (в мс) перед показом (400 по умолчанию)" ++ ++#: Settings.ui.h:61 ++msgid "Animation time (ms)" ++msgstr "Время анимации (в мс)" ++ ++#: Settings.ui.h:62 ++msgid "Time (ms) before hiding (100 is default)" ++msgstr "Задержка (в мс) перед скрытием (100 по умолчанию)" ++ ++#: Settings.ui.h:63 ++msgid "Immediate on application icon click" ++msgstr "Сразу по переходу в приложение" ++ ++#: Settings.ui.h:64 ++msgid "Middle click on the preview to close the window" ++msgstr "Нажатие средней кнопкой по предпросмотру закрывает окно" ++ ++#: Settings.ui.h:65 ++msgid "Window previews preferred size (px)" ++msgstr "Предпочитаемый размер окна предпросмотра (пикселей)" ++ ++#: Settings.ui.h:66 ++msgid "Window previews aspect ratio Y (height)" ++msgstr "Коэффициент по оси Y (высота)" ++ ++#: Settings.ui.h:67 ++msgid "Window previews padding (px)" ++msgstr "Отступ окон между собой (пикселей)" ++ ++#: Settings.ui.h:68 ++msgid "1" ++msgstr "1" ++ ++#: Settings.ui.h:69 ++msgid "2" ++msgstr "2" ++ ++#: Settings.ui.h:70 ++msgid "3" ++msgstr "3" ++ ++#: Settings.ui.h:71 ++msgid "4" ++msgstr "4" ++ ++#: Settings.ui.h:72 ++msgid "5" ++msgstr "5" ++ ++#: Settings.ui.h:73 ++msgid "6" ++msgstr "6" ++ ++#: Settings.ui.h:74 ++msgid "7" ++msgstr "7" ++ ++#: Settings.ui.h:75 ++msgid "8" ++msgstr "8" ++ ++#: Settings.ui.h:76 ++msgid "9" ++msgstr "9" ++ ++#: Settings.ui.h:77 ++msgid "10" ++msgstr "10" ++ ++#: Settings.ui.h:78 ++msgid "11" ++msgstr "11" ++ ++#: Settings.ui.h:79 ++msgid "12" ++msgstr "12" ++ ++#: Settings.ui.h:80 ++msgid "13" ++msgstr "13" ++ ++#: Settings.ui.h:81 ++msgid "14" ++msgstr "14" ++ ++#: Settings.ui.h:82 ++msgid "15" ++msgstr "15" ++ ++#: Settings.ui.h:83 ++msgid "16" ++msgstr "16" ++ ++#: Settings.ui.h:84 ++msgid "17" ++msgstr "17" ++ ++#: Settings.ui.h:85 ++msgid "18" ++msgstr "18" ++ ++#: Settings.ui.h:86 ++msgid "19" ++msgstr "19" ++ ++#: Settings.ui.h:87 ++msgid "20" ++msgstr "20" ++ ++#: Settings.ui.h:88 ++msgid "21" ++msgstr "21" ++ ++#: Settings.ui.h:90 ++msgid "Window previews aspect ratio X (width)" ++msgstr "Коэффициент по оси Y (ширина)" ++ ++#: Settings.ui.h:91 ++msgid "Use custom opacity for the previews background" ++msgstr "Использовать прозрачность для окна предпросмотра" ++ ++#: Settings.ui.h:92 ++msgid "If disabled, the previews background have the same opacity as the panel" ++msgstr "Если отключено используется прозрачность из настроек панели" ++ ++#: Settings.ui.h:93 ++msgid "Close button and header position" ++msgstr "Кнопка закрытия и заголовок" ++ ++#: Settings.ui.h:96 ++msgid "Display window preview headers" ++msgstr "Показать заголовок окна" ++ ++#: Settings.ui.h:97 ++msgid "Icon size (px) of the window preview" ++msgstr "Размер значка (в пикселях) в окне предпросмотра" ++ ++#: Settings.ui.h:98 ++msgid "If disabled, the previews icon size will be based on headerbar size" ++msgstr "Если отключено будет использован размер значков по размеру заголовка" ++ ++#: Settings.ui.h:99 ++msgid "Font size (px) of the preview titles" ++msgstr "Размер шрифта (в пикселях) для заголовка" ++ ++#: Settings.ui.h:100 ++msgid "Font weight of the preview titles" ++msgstr "Жирность шрифта заголовка" ++ ++#: Settings.ui.h:101 ++msgid "Font color of the preview titles" ++msgstr "Цвет шрифта заголовка" ++ ++#: Settings.ui.h:102 ++msgid "Enable window peeking" ++msgstr "Переводить окно на передний план" ++ ++#: Settings.ui.h:103 ++msgid "" ++"When hovering over a window preview for some time, the window gets " ++"distinguished." ++msgstr "Выделение окна приложения при наведении на окно предпросмотра," ++ ++#: Settings.ui.h:104 ++msgid "Enter window peeking mode timeout (ms)" ++msgstr "Задержка перед помещением окна на передний план (в мс)" ++ ++#: Settings.ui.h:105 ++msgid "50" ++msgstr "50" ++ ++#: Settings.ui.h:106 ++msgid "" ++"Time of inactivity while hovering over a window preview needed to enter the " ++"window peeking mode." ++msgstr "" ++"Время бездействия при наведении указателя на окно предпросмотра для перевода " ++"окна на передний план." ++ ++#: Settings.ui.h:107 ++msgid "Window peeking mode opacity" ++msgstr "Режим прозрачности выделенного окна" ++ ++#: Settings.ui.h:108 ++msgid "0" ++msgstr "0" ++ ++#: Settings.ui.h:109 ++msgid "" ++"All windows except for the peeked one have their opacity set to the same " ++"value." ++msgstr "Все окна, кроме выделенного, имеют прозрачность." ++ ++#: Settings.ui.h:110 ++msgid "Delay between mouse scroll events (ms)" ++msgstr "Задержка между событиями вращения колесика мышки (мс)" ++ ++#: Settings.ui.h:111 ++msgid "Use this value to limit the number of captured mouse scroll events." ++msgstr "" ++"Это значение ограничивает количество получаемых сообщений вращения колесика " ++"мышки." ++ ++#: Settings.ui.h:112 ++msgid "Show popup when changing workspace" ++msgstr "" ++ ++#: Settings.ui.h:113 ++msgid "This affects workspace popup when scrolling on the panel only." ++msgstr "" ++ ++#: Settings.ui.h:114 ++msgid "Super" ++msgstr "Super" ++ ++#: Settings.ui.h:115 ++msgid "Super + Alt" ++msgstr "Super + Alt" ++ ++#: Settings.ui.h:116 ++msgid "Hotkeys prefix" ++msgstr "Префикс горячих клавиш" ++ ++#: Settings.ui.h:117 ++msgid "Hotkeys will either be Super+Number or Super+Alt+Num" ++msgstr "" ++"Комбинации клавиш для приложений на панели либо Super+Number, либо " ++"Super+Alt+Num" ++ ++#: Settings.ui.h:118 ++msgid "Never" ++msgstr "Никогда" ++ ++#: Settings.ui.h:119 ++msgid "Show temporarily" ++msgstr "Показать временно" ++ ++#: Settings.ui.h:120 ++msgid "Always visible" ++msgstr "Всегда видимый" ++ ++#: Settings.ui.h:122 ++msgid "" ++"Temporarily show the application numbers over the icons when using the " ++"hotkeys." ++msgstr "" ++"Временно показывать цифры на значках приложений при нажатии горячей клавиши." ++ ++#: Settings.ui.h:123 ++msgid "Hide timeout (ms)" ++msgstr "Задержка скрытия (в мс)" ++ ++#: Settings.ui.h:124 ++msgid "e.g. q" ++msgstr "например, q" ++ ++#: Settings.ui.h:125 ++msgid "Shortcut to show the overlay for 2 seconds" ++msgstr "Показать оверлей на значках на 2 секунды" ++ ++#: Settings.ui.h:126 ++msgid "Show window previews on hotkey" ++msgstr "Предпросмотр приложений" ++ ++#: Settings.ui.h:127 ++msgid "Show previews when the application have multiple instances" ++msgstr "Показывать предпросмотр приложений с несколькими экземплярами" ++ ++#: Settings.ui.h:128 ++msgid "Number row" ++msgstr "Основной" ++ ++#: Settings.ui.h:129 ++msgid "Numeric keypad" ++msgstr "Дополнительной" ++ ++#: Settings.ui.h:130 ++msgid "Both" ++msgstr "Оба" ++ ++#: Settings.ui.h:131 ++msgid "Hotkeys are activated with" ++msgstr "Используются горячие клавиши с клавиатуры" ++ ++#: Settings.ui.h:132 ++msgid "Select which keyboard number keys are used to activate the hotkeys" ++msgstr "Выберите какой набор цифровых кнопок используется для горячих клавиш" ++ ++#: Settings.ui.h:133 ++msgid "Current Show Applications icon" ++msgstr "Текущий значок \"Приложения\"" ++ ++#: Settings.ui.h:134 ++msgid "Select a Show Applications image icon" ++msgstr "Выбрать значок \"Приложения\"" ++ ++#: Settings.ui.h:135 ++msgid "Custom Show Applications image icon" ++msgstr "Собственный значок \"Приложения\"" ++ ++#: Settings.ui.h:136 ++msgid "Show Applications icon side padding (px)" ++msgstr "Отступ от значка (в пикселях)" ++ ++#: Settings.ui.h:137 ++msgid "Override escape key and return to desktop" ++msgstr "" ++ ++#: Settings.ui.h:139 ++msgid "Override Show Desktop line color" ++msgstr "Выбрать цвет разделительной линии" ++ ++#: Settings.ui.h:140 ++msgid "Reveal the desktop when hovering the Show Desktop button" ++msgstr "Показать рабочий стол при наведении на кнопку" ++ ++#: Settings.ui.h:141 ++msgid "Delay before revealing the desktop (ms)" ++msgstr "Задержка показа рабочего стола (в мс)" ++ ++#: Settings.ui.h:142 ++msgid "Fade duration (ms)" ++msgstr "Задержка скрытия (в мс)" ++ ++#: Settings.ui.h:143 ++msgid "The panel background opacity is affected by" ++msgstr "Влияние на прозрачность панели оказывают" ++ ++#: Settings.ui.h:144 ++msgid "Change opacity when a window gets closer than (px)" ++msgstr "" ++"Изменять прозрачность при приближении окна к панели ближе чем (в пикселях)" ++ ++#: Settings.ui.h:146 ++#, no-c-format ++msgid "Change opacity to (%)" ++msgstr "Изменять прозрачность на (%)" ++ ++#: Settings.ui.h:147 ++msgid "Opacity change animation duration (ms)" ++msgstr "Скрыть и показать задержка анимации (в мс)" ++ ++#: Settings.ui.h:148 ++msgid "Display the main panel on" ++msgstr "Показать панель на" ++ ++#: Settings.ui.h:149 ++msgid "Display panels on all monitors" ++msgstr "Показать панель на всех мониторах" ++ ++#: Settings.ui.h:150 ++msgid "Panel Intellihide" ++msgstr "Автоскрытие панели" ++ ++#: Settings.ui.h:151 ++msgid "Hide and reveal the panel according to preferences" ++msgstr "Скрывать и показывать панель в зависимости от настроек" ++ ++#: Settings.ui.h:152 ++msgid "Order and positions on monitor" ++msgstr "Порядок и расположение на мониторе" ++ ++#: Settings.ui.h:153 ++msgid "Apply changes to all monitors" ++msgstr "Применить изменения ко всем мониторам" ++ ++#: Settings.ui.h:154 ++msgid "Panel screen position" ++msgstr "Расположение панели на экране" ++ ++#: Settings.ui.h:157 ++msgid "Position" ++msgstr "Расположение" ++ ++#: Settings.ui.h:158 ++msgid "" ++"Panel Size\n" ++"(default is 48)" ++msgstr "" ++"Ширина панели\n" ++"(По умолчанию 48 пикселей)" ++ ++#: Settings.ui.h:160 ++msgid "" ++"App Icon Margin\n" ++"(default is 8)" ++msgstr "" ++"Отступ между значками приложений\n" ++"(по умолчанию 8 пикселей)" ++ ++#: Settings.ui.h:162 ++msgid "" ++"App Icon Padding\n" ++"(default is 4)" ++msgstr "" ++"Отступ вокруг значков приложений\n" ++"(по умолчанию 4 пикселя)" ++ ++#: Settings.ui.h:164 ++msgid "Running indicator position" ++msgstr "Позиция индикаторов запущенных приложений" ++ ++#: Settings.ui.h:165 ++msgid "Running indicator style (Focused app)" ++msgstr "Индикатор запущенного приложения (когда в фокусе)" ++ ++#: Settings.ui.h:173 ++msgid "Running indicator style (Unfocused apps)" ++msgstr "Индикатор запущенного приложения (когда в не фокусе)" ++ ++#: Settings.ui.h:174 ++msgid "Override panel theme background color " ++msgstr "Цвет панели " ++ ++#: Settings.ui.h:175 ++msgid "Override panel theme background opacity" ++msgstr "Прозрачность панели" ++ ++#: Settings.ui.h:177 ++#, no-c-format ++msgid "Panel background opacity (%)" ++msgstr "Прозрачность панели (%)" ++ ++#: Settings.ui.h:178 ++msgid "Dynamic background opacity" ++msgstr "Динамическая прозрачность" ++ ++#: Settings.ui.h:179 ++msgid "Change opacity when a window gets close to the panel" ++msgstr "Изменять прозрачность при приближении окно к панели" ++ ++#: Settings.ui.h:180 ++msgid "Override panel theme gradient " ++msgstr "Градиент панели " ++ ++#: Settings.ui.h:182 ++#, no-c-format ++msgid "Gradient top color and opacity (%)" ++msgstr "Значение цвета и прозрачности (%) сверху" ++ ++#: Settings.ui.h:184 ++#, no-c-format ++msgid "Gradient bottom color and opacity (%)" ++msgstr "Значение цвета и прозрачности (%) снизу" ++ ++#: Settings.ui.h:185 ++msgid "Style" ++msgstr "Вид" ++ ++#: Settings.ui.h:188 ++msgid "Show favorite applications on secondary panels" ++msgstr "Показывать избранные приложения на вторичных панелях" ++ ++#: Settings.ui.h:189 ++msgid "Show AppMenu button" ++msgstr "Показывать кнопку Меню приложения" ++ ++#: Settings.ui.h:190 ++msgid "Top Bar > Show App Menu must be enabled in Tweak Tool" ++msgstr "" ++"Верхняя панель > Показать меню приложения, должно быть включено в Tweak Tool" ++ ++#: Settings.ui.h:191 ++msgid "Show window previews on hover" ++msgstr "Показывать предпросмотр окон при наведении" ++ ++#: Settings.ui.h:192 ++msgid "Show tooltip on hover" ++msgstr "Показывать подсказку при наведении" ++ ++#: Settings.ui.h:193 ++msgid "Isolate Workspaces" ++msgstr "Изолировать рабочие столы" ++ ++#: Settings.ui.h:194 ++msgid "Isolate monitors" ++msgstr "Изолировать мониторы" ++ ++#: Settings.ui.h:195 ++msgid "Click empty space to close overview" ++msgstr "Закрывать обзор при щелчке на свободном месте" ++ ++#: Settings.ui.h:196 ++msgid "Ungroup applications" ++msgstr "Разгруппировать приложения" ++ ++#: Settings.ui.h:200 ++msgid "Toggle windows" ++msgstr "Показать или свернуть" ++ ++#: Settings.ui.h:201 ++msgid "Scroll panel action" ++msgstr "При прокрутке над панелью" ++ ++#: Settings.ui.h:202 ++msgid "Behavior when mouse scrolling over the panel." ++msgstr "Поведение при прокрутке колесиком мыши над панелью." ++ ++#: Settings.ui.h:203 ++msgid "Scroll icon action" ++msgstr "При прокрутке над значком приложения" ++ ++#: Settings.ui.h:204 ++msgid "Behavior when mouse scrolling over an application icon." ++msgstr "Поведение при прокрутке колесиком мыши над значком приложения." ++ ++#: Settings.ui.h:207 ++msgid "Cycle windows" ++msgstr "Переключать окна" ++ ++#: Settings.ui.h:208 ++msgid "Change volume" ++msgstr "Изменить громкость" ++ ++#: Settings.ui.h:209 ++msgid "Same as panel" ++msgstr "Как на панеле" ++ ++#: Settings.ui.h:211 ++msgid "Use hotkeys to activate apps" ++msgstr "Использовать горячие клавиши для запуска приложений" ++ ++#: Settings.ui.h:212 ++msgid "Action" ++msgstr "Действия" ++ ++#: Settings.ui.h:213 ++msgid "" ++"Tray Font Size\n" ++"(0 = theme default)" ++msgstr "" ++"Размер шрифта в трее\n" ++"(0 = значение из темы)" ++ ++#: Settings.ui.h:215 ++msgid "" ++"LeftBox Font Size\n" ++"(0 = theme default)" ++msgstr "" ++"Размер шрифта левой панели\n" ++"(0 = значение из темы)" ++ ++#: Settings.ui.h:217 ++msgid "" ++"Tray Item Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"Отступ между значками в трее\n" ++"(-1 = значение из темы)" ++ ++#: Settings.ui.h:219 ++msgid "" ++"Status Icon Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"Значки статуса\n" ++"(-1 = значение из темы)" ++ ++#: Settings.ui.h:221 ++msgid "" ++"LeftBox Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"Отступ левой панели\n" ++"(0 = значение из темы)" ++ ++#: Settings.ui.h:223 ++msgid "Animate switching applications" ++msgstr "Анимировать переключение приложений" ++ ++#: Settings.ui.h:224 ++msgid "Animate launching new windows" ++msgstr "Анимировать запуск нового окна" ++ ++#: Settings.ui.h:225 ++msgid "Keep original gnome-shell dash (overview)" ++msgstr "Сохранить панель GNOME при показе приложений" ++ ++#: Settings.ui.h:226 ++msgid "Force Activities hot corner on primary monitor" ++msgstr "" ++ ++#: Settings.ui.h:227 ++msgid "Activate panel menu buttons (e.g. date menu) on click only" ++msgstr "" ++"Активировать кнопки на панели меню (например, меню даты) только при нажатии " ++"на кнопку" ++ ++#: Settings.ui.h:228 ++msgid "Keep original gnome-shell top panel" ++msgstr "Сохранить верхнюю панель GNOME" ++ ++#: Settings.ui.h:229 ++msgid "App icon secondary (right-click) menu" ++msgstr "Меню приложения по щелчку правой кнопкой мыши" ++ ++#: Settings.ui.h:231 ++msgid "Fine-Tune" ++msgstr "Тонкая настройка" ++ ++#: Settings.ui.h:233 ++msgid "GitHub" ++msgstr "GitHub" ++ ++#: Settings.ui.h:234 ++msgid "" ++"Use the buttons below to create a settings file from your current " ++"preferences that can be imported on a different machine." ++msgstr "" ++"Кнопками ниже можно сохранить текущие настройки в файл для загрузки на " ++"другой машине." ++ ++#: Settings.ui.h:235 ++msgid "Export and import settings" ++msgstr "Сохранение и загрузка настроек" ++ ++#: Settings.ui.h:236 ++msgid "Export to file" ++msgstr "Сохранение настроек" ++ ++#: Settings.ui.h:237 ++msgid "Import from file" ++msgstr "Загрузка настроек" ++ ++#: Settings.ui.h:238 ++msgid "" ++"This allows you to update the extension directly from the GitHub repository." ++msgstr "Позволяет обновлять приложение прямо с GitHub." ++ ++#: Settings.ui.h:239 ++msgid "Updates" ++msgstr "Обновления" ++ ++#: Settings.ui.h:240 ++msgid "Periodically check for updates" ++msgstr "Периодически проверять обновления" ++ ++#: Settings.ui.h:241 ++msgid "Check now" ++msgstr "Проверить сейчас" ++ ++#: Settings.ui.h:242 ++msgid "" ++"Be aware, these official Dash to " ++"Panel releases might not be reviewed yet on extensions.gnome.org! Read more" ++msgstr "" ++"Внимание! Хоть релизы и выходят " ++"официально, они могут быть еще выложены на extensions.gnome.org! Прочитать" ++ ++#~ msgid "Attach modal dialog to the parent window" ++#~ msgstr "Прикреплять модальное диалоговое окно к родительскому окну" ++ ++#~ msgid "" ++#~ "This key overrides the key in org.gnome.mutter when running GNOME Shell." ++#~ msgstr "" ++#~ "Этот ключ переопределяет ключ в org.gnome.mutter при запуске GNOME Shell." ++ ++#~ msgid "Arrangement of buttons on the titlebar" ++#~ msgstr "Расположение кнопок в заголовке" ++ ++#~ msgid "" ++#~ "This key overrides the key in org.gnome.desktop.wm.preferences when " ++#~ "running GNOME Shell." ++#~ msgstr "" ++#~ "Этот ключ переопределяет ключ в org.gnome.desktop.wm.preferences при " ++#~ "запуске GNOME Shell." ++ ++#~ msgid "Enable edge tiling when dropping windows on screen edges" ++#~ msgstr "" ++#~ "Автоматически изменять размеры окна при перемещении окна к краям экрана" ++ ++#~ msgid "Workspaces only on primary monitor" ++#~ msgstr "Рабочие места только на основном мониторе" ++ ++#~ msgid "Delay focus changes in mouse mode until the pointer stops moving" ++#~ msgstr "Задержка изменения фокуса в режиме мыши после остановки указателя" ++ ++#~ msgid "Thumbnail only" ++#~ msgstr "Только миниатюры" ++ ++#~ msgid "Application icon only" ++#~ msgstr "Только значок приложения" ++ ++#~ msgid "Thumbnail and application icon" ++#~ msgstr "Миниатюра и значок приложения" ++ ++#~ msgid "Present windows as" ++#~ msgstr "Отображать окна как" ++ ++#~ msgid "Activities Overview" ++#~ msgstr "Обзор" ++ ++#~ msgid "Application" ++#~ msgstr "Приложение" ++ ++#~ msgid "Create new matching rule" ++#~ msgstr "Создать новое правило соответствия" ++ ++#~ msgid "Add" ++#~ msgstr "Добавить" ++ ++#~ msgid "Hello, world!" ++#~ msgstr "Привет, мир!" ++ ++#~ msgid "Alternative greeting text." ++#~ msgstr "Альтернативный текст приветствия." ++ ++#~ msgid "" ++#~ "If not empty, it contains the text that will be shown when clicking on " ++#~ "the panel." ++#~ msgstr "" ++#~ "Если строка не пуста, то содержащийся в ней текст будет показан при " ++#~ "нажатии на панель." ++ ++#~ msgid "Message" ++#~ msgstr "Сообщение" ++ ++#~ msgid "" ++#~ "Example aims to show how to build well behaved extensions for the Shell " ++#~ "and as such it has little functionality on its own.\n" ++#~ "Nevertheless it’s possible to customize the greeting message." ++#~ msgstr "" ++#~ "Цель расширения Example — показать, как создавать расширения для Shell, " ++#~ "само по себе оно имеет малую функциональность.\n" ++#~ "Тем не менее, можно настроить приветственное сообщение." ++ ++#~ msgid "Name" ++#~ msgstr "Название" ++ ++#~ msgid "CPU" ++#~ msgstr "ЦП" ++ ++#~ msgid "Memory" ++#~ msgstr "Память" ++ ++#~ msgid "GNOME Shell Classic" ++#~ msgstr "Классический GNOME Shell" ++ ++#~ msgid "Window management and application launching" ++#~ msgstr "Управление окнами и запуск приложений" ++ ++#~ msgid "Adaptive" ++#~ msgstr "Адаптивная" ++ ++#~ msgid "Show a dot for each windows of the application." ++#~ msgstr "Отображает точку для каждого окна приложения." ++ ++#~ msgid "" ++#~ "With fixed icon size, only the edge of the dock and the Show " ++#~ "Applications icon are active." ++#~ msgstr "" ++#~ "При фиксированном размере иконок приложений активна только область иконки " ++#~ "«Приложения» и край дока." ++ ++#~ msgid "Switch workspace by scrolling on the dock" ++#~ msgstr "Переключать рабочие столы при прокрутке на Доке" ++ ++#~ msgid "Only consider windows of the focused application" ++#~ msgstr "Применить только к активным окнам приложений" ++ ++#~ msgid "Main Settings" ++#~ msgstr "Основные настройки" ++ ++#~ msgid "Dock Position" ++#~ msgstr "Расположение Дока" ++ ++#~ msgid "Dock is fixed and always visible" ++#~ msgstr "Док зафиксирован и всегда виден" ++ ++#~ msgid "Show delay [ms]" ++#~ msgstr "Задержка перед появлением [мс]" ++ ++#~ msgid "Hide delay [ms]" ++#~ msgstr "Задержка перед скрытием [мс]" ++ ++#~ msgid "Application based intellihide" ++#~ msgstr "Интеллектуальное скрытие действует только для активных окон" ++ ++#~ msgid "Show the dock on following monitor (if attached)" ++#~ msgstr "Показывать Док на дополнительном мониторе (если подключен)" ++ ++#~ msgid "Primary (default)" ++#~ msgstr "Главный (по умолчанию)" ++ ++#~ msgid "Max height" ++#~ msgstr "Максимальная высота" ++ ++#~ msgid "Expand (experimental and buggy)" ++#~ msgstr "Расширяемый (экспериментально и неустойчиво)" + + #~ msgid "Maximum icon size" + #~ msgstr "Максимальный размер иконки" +@@ -1184,3 +2425,126 @@ msgstr "Показывать значок корзины на рабочем с + + #~ msgid "Ok" + #~ msgstr "ОК" ++ ++#~ msgid "Top, with plugin icons collapsed to bottom" ++#~ msgstr "Сверху, иконки плагинов снизу" ++ ++#~ msgid "Left, with plugin icons collapsed to right" ++#~ msgstr "Слева, иконки плагинов справа" ++ ++#~ msgid "Top, with fixed center plugin icons" ++#~ msgstr "Сверху, иконки плагинов по середине" ++ ++#~ msgid "Left, with fixed center plugin icons" ++#~ msgstr "Слева, иконки плагинов по середине" ++ ++#~ msgid "Top, with floating center plugin icons" ++#~ msgstr "Сверху, иконки плагинов по центру и не закреплены" ++ ++#~ msgid "Left, with floating center plugin icons" ++#~ msgstr "Слева, иконки плагинов по центру и не закреплены" ++ ++#~ msgid "Center, fixed in middle of monitor" ++#~ msgstr "По центру монитора" ++ ++#~ msgid "Center, floating between top and bottom elements" ++#~ msgstr "По центру между элементами сверху и снизу" ++ ++#~ msgid "Center, floating between left and right elements" ++#~ msgstr "По центру между элементами слева и справа" ++ ++#~ msgid "Top of plugin icons" ++#~ msgstr "Сверху от иконок плагинов" ++ ++#~ msgid "Left of plugin icons" ++#~ msgstr "Слева от иконок плагинов" ++ ++#~ msgid "Bottom of plugin icons" ++#~ msgstr "Снизу от иконок плагинов" ++ ++#~ msgid "Right of plugin icons" ++#~ msgstr "Справа от иконок плагинов" ++ ++#~ msgid "Top of system indicators" ++#~ msgstr "Сверху от системных индикаторов" ++ ++#~ msgid "Left of system indicators" ++#~ msgstr "Слева от системных индикаторов" ++ ++#~ msgid "Bottom of system indicators" ++#~ msgstr "Снизу от системных индикаторов" ++ ++#~ msgid "Right of system indicators" ++#~ msgstr "Справа от системных индикаторов" ++ ++#~ msgid "Left of taskbar" ++#~ msgstr "Слева от списка задач" ++ ++#~ msgid "Bottom of taskbar" ++#~ msgstr "Снизу от списка задач" ++ ++#~ msgid "Right of taskbar" ++#~ msgstr "Справа от списка задач" ++ ++#~ msgid "Multi-monitors options" ++#~ msgstr "Настройки для нескольких мониторов" ++ ++#~ msgid "Event logs" ++#~ msgstr "Просмотр логов" ++ ++#~ msgid "System" ++#~ msgstr "Система" ++ ++#~ msgid "Device Management" ++#~ msgstr "Управление устройствами" ++ ++#~ msgid "Disk Management" ++#~ msgstr "Управление дисками" ++ ++#~ msgid "Terminal" ++#~ msgstr "Терминал" ++ ++#~ msgid "Files" ++#~ msgstr "Файлы" ++ ++#~ msgid "Display favorite applications on all monitors" ++#~ msgstr "Показывать закрепленные приложения на всех мониторах" ++ ++#~ msgid "Display the clock on all monitors" ++#~ msgstr "Показывать часы на всех мониторах" ++ ++#~ msgid "Display the status menu on all monitors" ++#~ msgstr "Показывать системные индикаторы на всех мониторах" ++ ++#~ msgid "Taskbar position" ++#~ msgstr "Позиция панели задач на экране" ++ ++#~ msgid "Clock location" ++#~ msgstr "Позиция часов" ++ ++#~ msgid "Highlight color" ++#~ msgstr "Цвет подсветки" ++ ++#~ msgid "Preview timeout on icon leave (ms)" ++#~ msgstr "Задержка превью в (мс)" ++ ++#~ msgid "" ++#~ "If set too low, the window preview of running applications may seem to " ++#~ "close too quickly when trying to enter the popup. If set too high, the " ++#~ "preview may linger too long when moving to an adjacent icon." ++#~ msgstr "" ++#~ "Если установлено слишком маленькое значение, превью может исчезать " ++#~ "слишком быстро. Если установлено слишком большое значение, превью может " ++#~ "долго не скрываться и перекрывать соседние области." ++ ++#~ msgid "Middle click to close window" ++#~ msgstr "Средний клик закрывает окно" ++ ++#~ msgid "Width of the window previews (px)" ++#~ msgstr "Ширина окна в предпросмотре (в пикселях)" ++ ++#~ msgid "Height of the window previews (px)" ++#~ msgstr "Высота окна в предпросмотре (в пикселях)" ++ ++#~ msgid "Padding of the window previews (px)" ++#~ msgstr "Отступ между окнами в предпросмотре (в пикселях)" +diff --git a/po/sv.po b/po/sv.po +index dedabe1b..011a539d 100644 +--- a/po/sv.po ++++ b/po/sv.po +@@ -1,5 +1,6 @@ + # #-#-#-#-# sv.po (gnome-shell-extensions) #-#-#-#-# + # #-#-#-#-# sv.po (gnome-shell-extensions) #-#-#-#-# ++# #-#-#-#-# sv.po (gnome-shell-extensions) #-#-#-#-# + # Swedish translation for gnome-shell-extensions. + # Copyright © 2011-2021 Free Software Foundation, Inc. + # This file is distributed under the same license as the gnome-shell-extensions package. +@@ -21,11 +22,17 @@ + # Anders Jonsson , 2018, 2019, 2020. + # Josef Andersson , 2019. + # ++# #-#-#-#-# sv.po #-#-#-#-# ++# Copyright (C) Dash to Panel swedish translation ++# This file is distributed under the same license as the Dash to Panel package. ++# Translation author: Gleb Vassiljev , 2020 ++# + #, fuzzy + msgid "" + msgstr "" + "#-#-#-#-# sv.po (gnome-shell-extensions) #-#-#-#-#\n" + "#-#-#-#-# sv.po (gnome-shell-extensions) #-#-#-#-#\n" ++"#-#-#-#-# sv.po (gnome-shell-extensions) #-#-#-#-#\n" + "Project-Id-Version: gnome-shell-extensions\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/" + "issues\n" +@@ -64,6 +71,19 @@ msgstr "" + "Content-Transfer-Encoding: 8bit\n" + "Plural-Forms: nplurals=2; plural=(n != 1);\n" + "X-Generator: Poedit 2.3.1\n" ++"#-#-#-#-# sv.po #-#-#-#-#\n" ++"Project-Id-Version: \n" ++"Report-Msgid-Bugs-To: \n" ++"POT-Creation-Date: 2019-11-08 20:40+0200\n" ++"PO-Revision-Date: 2020-03-11 21:21+0100\n" ++"Last-Translator: Gleb Vassiljev \n" ++"Language-Team: Svenska grenen av Translation Project \n" ++"Language: sv\n" ++"MIME-Version: 1.0\n" ++"Content-Type: text/plain; charset=UTF-8\n" ++"Content-Transfer-Encoding: 8bit\n" ++"X-Generator: Poedit 2.2.4\n" + + #: data/gnome-classic.desktop.in:3 + msgid "GNOME Classic" +@@ -317,11 +337,11 @@ msgstr "Primär skärm" + msgid "Secondary monitor " + msgstr "Sekundär skärm " + +-#: prefs.js:309 Settings.ui.h:28 ++#: prefs.js:309 Settings.ui.h:28 Settings.ui.h:146 + msgid "Right" + msgstr "Höger" + +-#: prefs.js:310 Settings.ui.h:25 ++#: prefs.js:310 Settings.ui.h:25 Settings.ui.h:145 + msgid "Left" + msgstr "Vänster" + +@@ -329,17 +349,30 @@ msgstr "Vänster" + msgid "Intelligent autohide customization" + msgstr "Anpassning av intelligent automatiskt döljande" + +-#: prefs.js:367 prefs.js:560 prefs.js:616 ++#: prefs.js:367 prefs.js:560 prefs.js:616 prefs.js:371 prefs.js:569 ++#: prefs.js:712 prefs.js:837 prefs.js:904 prefs.js:992 prefs.js:1078 ++#: prefs.js:1325 prefs.js:1409 prefs.js:1474 prefs.js:1510 prefs.js:1607 ++#: prefs.js:1641 prefs.js:1683 ++#, fuzzy + msgid "Reset to defaults" +-msgstr "Återställ till standardvärden" ++msgstr "" ++"#-#-#-#-# sv.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Återställ till standardvärden\n" ++"#-#-#-#-# sv.po #-#-#-#-#\n" ++"Återställ till grundinställningar" + + #: prefs.js:553 + msgid "Show dock and application numbers" + msgstr "Visa docka och programnummer" + +-#: prefs.js:609 ++#: prefs.js:609 prefs.js:1402 ++#, fuzzy + msgid "Customize middle-click behavior" +-msgstr "Anpassa mellanklicksbeteende" ++msgstr "" ++"#-#-#-#-# sv.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Anpassa mellanklicksbeteende\n" ++"#-#-#-#-# sv.po #-#-#-#-#\n" ++"Anpassa mittenklick beteendet" + + #: prefs.js:692 + msgid "Customize running indicators" +@@ -385,33 +418,53 @@ msgstr "Mata ut" + msgid "Unmount" + msgstr "Avmontera" + +-#: Settings.ui.h:1 ++#: Settings.ui.h:1 Settings.ui.h:2 ++#, fuzzy + msgid "" + "When set to minimize, double clicking minimizes all the windows of the " + "application." + msgstr "" ++"#-#-#-#-# sv.po (gnome-shell-extensions) #-#-#-#-#\n" + "Då inställd till minimera så minimerar dubbelklick alla fönster för " +-"programmet." ++"programmet.\n" ++"#-#-#-#-# sv.po #-#-#-#-#\n" ++"När inställt på att minimera, dubbelklickande minimerar alla fönster av " ++"programm." + +-#: Settings.ui.h:2 ++#: Settings.ui.h:2 Settings.ui.h:3 ++#, fuzzy + msgid "Shift+Click action" +-msgstr "Skift+klick-åtgärd" ++msgstr "" ++"#-#-#-#-# sv.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Skift+klick-åtgärd\n" ++"#-#-#-#-# sv.po #-#-#-#-#\n" ++"Shift+klicka åtgärd" + + #: Settings.ui.h:3 + msgid "Raise window" + msgstr "Höj fönster" + +-#: Settings.ui.h:4 ++#: Settings.ui.h:4 Settings.ui.h:5 + msgid "Minimize window" + msgstr "Minimera fönster" + +-#: Settings.ui.h:5 ++#: Settings.ui.h:5 Settings.ui.h:6 ++#, fuzzy + msgid "Launch new instance" +-msgstr "Starta ny instans" ++msgstr "" ++"#-#-#-#-# sv.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Starta ny instans\n" ++"#-#-#-#-# sv.po #-#-#-#-#\n" ++"Starta en till förekomst av programmet" + +-#: Settings.ui.h:6 ++#: Settings.ui.h:6 Settings.ui.h:7 ++#, fuzzy + msgid "Cycle through windows" +-msgstr "Växla mellan fönster" ++msgstr "" ++"#-#-#-#-# sv.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Växla mellan fönster\n" ++"#-#-#-#-# sv.po #-#-#-#-#\n" ++"Bläddra bland fönster" + + #: Settings.ui.h:7 + msgid "Minimize or overview" +@@ -429,25 +482,46 @@ msgstr "Minimera eller visa förhandsgranskningar" + msgid "Focus or show previews" + msgstr "Fokusera eller visa förhandsgranskningar" + +-#: Settings.ui.h:11 ++#: Settings.ui.h:11 appIcons.js:1398 appIcons.js:1458 appIcons.js:1460 ++#: Settings.ui.h:10 + msgid "Quit" + msgstr "Avsluta" + +-#: Settings.ui.h:12 ++#: Settings.ui.h:12 Settings.ui.h:11 ++#, fuzzy + msgid "Behavior for Middle-Click." +-msgstr "Beteende för mellanklick." ++msgstr "" ++"#-#-#-#-# sv.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Beteende för mellanklick.\n" ++"#-#-#-#-# sv.po #-#-#-#-#\n" ++"Beteende för mittenklick." + +-#: Settings.ui.h:13 ++#: Settings.ui.h:13 Settings.ui.h:12 ++#, fuzzy + msgid "Middle-Click action" +-msgstr "Åtgärd för mellanklick" ++msgstr "" ++"#-#-#-#-# sv.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Åtgärd för mellanklick\n" ++"#-#-#-#-# sv.po #-#-#-#-#\n" ++"Mittenklick åtgärd" + +-#: Settings.ui.h:14 ++#: Settings.ui.h:14 Settings.ui.h:13 ++#, fuzzy + msgid "Behavior for Shift+Middle-Click." +-msgstr "Beteende för skift+mellanklick." ++msgstr "" ++"#-#-#-#-# sv.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Beteende för skift+mellanklick.\n" ++"#-#-#-#-# sv.po #-#-#-#-#\n" ++"Beteende för Shift+mittenklick." + +-#: Settings.ui.h:15 ++#: Settings.ui.h:15 Settings.ui.h:14 ++#, fuzzy + msgid "Shift+Middle-Click action" +-msgstr "Åtgärd för skift+mellanklick" ++msgstr "" ++"#-#-#-#-# sv.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Åtgärd för skift+mellanklick\n" ++"#-#-#-#-# sv.po #-#-#-#-#\n" ++"Shift+mittenklick åtgärd" + + #: Settings.ui.h:16 + msgid "Enable Unity7 like glossy backlit items" +@@ -485,13 +559,23 @@ msgstr "Visa på alla skärmar." + msgid "Position on screen" + msgstr "Position på skärmen" + +-#: Settings.ui.h:26 ++#: Settings.ui.h:26 Settings.ui.h:97 ++#, fuzzy + msgid "Bottom" +-msgstr "Nederkant" ++msgstr "" ++"#-#-#-#-# sv.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Nederkant\n" ++"#-#-#-#-# sv.po #-#-#-#-#\n" ++"Under" + +-#: Settings.ui.h:27 ++#: Settings.ui.h:27 Settings.ui.h:98 ++#, fuzzy + msgid "Top" +-msgstr "Överkant" ++msgstr "" ++"#-#-#-#-# sv.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Överkant\n" ++"#-#-#-#-# sv.po #-#-#-#-#\n" ++"Topp" + + #: Settings.ui.h:29 + msgid "" +@@ -525,13 +609,18 @@ msgstr "Fast ikonstorlek: rulla för att visa dolda ikoner" + msgid "Position and size" + msgstr "Position och storlek" + +-#: Settings.ui.h:36 ++#: Settings.ui.h:36 Settings.ui.h:182 + msgid "Show favorite applications" + msgstr "Visa favoritprogram" + +-#: Settings.ui.h:37 ++#: Settings.ui.h:37 Settings.ui.h:183 ++#, fuzzy + msgid "Show running applications" +-msgstr "Visa körande program" ++msgstr "" ++"#-#-#-#-# sv.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Visa körande program\n" ++"#-#-#-#-# sv.po #-#-#-#-#\n" ++"Visa program som körs" + + #: Settings.ui.h:38 + msgid "Isolate workspaces." +@@ -553,17 +642,27 @@ msgstr "" + "Om inaktiverad är dessa inställningar tillgängliga från justeringsverktyg " + "eller webbplatsen för utökningar." + +-#: Settings.ui.h:42 ++#: Settings.ui.h:42 Settings.ui.h:184 ++#, fuzzy + msgid "Show Applications icon" +-msgstr "Visa Program-ikon" ++msgstr "" ++"#-#-#-#-# sv.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Visa Program-ikon\n" ++"#-#-#-#-# sv.po #-#-#-#-#\n" ++"Visa Program ikonen" + + #: Settings.ui.h:43 + msgid "Move the applications button at the beginning of the dock." + msgstr "Flytta programknappen till början av dockan." + +-#: Settings.ui.h:44 ++#: Settings.ui.h:44 Settings.ui.h:185 ++#, fuzzy + msgid "Animate Show Applications." +-msgstr "Animera Visa program." ++msgstr "" ++"#-#-#-#-# sv.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Animera Visa program.\n" ++"#-#-#-#-# sv.po #-#-#-#-#\n" ++"Animera Visa Program." + + #: Settings.ui.h:45 + msgid "Show trash can" +@@ -577,25 +676,40 @@ msgstr "Visa monterade volymer och enheter" + msgid "Launchers" + msgstr "Programstartare" + +-#: Settings.ui.h:48 ++#: Settings.ui.h:48 Settings.ui.h:205 ++#, fuzzy + msgid "" + "Enable Super+(0-9) as shortcuts to activate apps. It can also be used " + "together with Shift and Ctrl." + msgstr "" ++"#-#-#-#-# sv.po (gnome-shell-extensions) #-#-#-#-#\n" + "Använd Super+(0-9) som tangentbordsgenvägar för att aktivera program. De kan " +-"även användas tillsammans med skift- och ctrl-tangenterna." ++"även användas tillsammans med skift- och ctrl-tangenterna.\n" ++"#-#-#-#-# sv.po #-#-#-#-#\n" ++"Aktivera Super+(0-9) som snabba genvägar för att aktivera program. Det kan " ++"också användas tillsammans med Shift och Ctrl." + + #: Settings.ui.h:49 + msgid "Use keyboard shortcuts to activate apps" + msgstr "Använd tangentbordsgenvägar för att aktivera program" + +-#: Settings.ui.h:50 ++#: Settings.ui.h:50 Settings.ui.h:195 ++#, fuzzy + msgid "Behaviour when clicking on the icon of a running application." +-msgstr "Beteende då ikonen för ett körande program klickas." ++msgstr "" ++"#-#-#-#-# sv.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Beteende då ikonen för ett körande program klickas.\n" ++"#-#-#-#-# sv.po #-#-#-#-#\n" ++"Beteende när ikonen med redan körande program klickas på." + +-#: Settings.ui.h:51 ++#: Settings.ui.h:51 Settings.ui.h:196 ++#, fuzzy + msgid "Click action" +-msgstr "Klickåtgärd" ++msgstr "" ++"#-#-#-#-# sv.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Klickåtgärd\n" ++"#-#-#-#-# sv.po #-#-#-#-#\n" ++"Klickande" + + #: Settings.ui.h:53 + msgid "Behaviour when scrolling on the icon of an application." +@@ -605,15 +719,20 @@ msgstr "Beteende vid rullning över programikon." + msgid "Scroll action" + msgstr "Rullåtgärd" + +-#: Settings.ui.h:55 ++#: Settings.ui.h:55 Settings.ui.h:202 + msgid "Do nothing" + msgstr "Gör ingenting" + +-#: Settings.ui.h:56 ++#: Settings.ui.h:56 Settings.ui.h:203 ++#, fuzzy + msgid "Switch workspace" +-msgstr "Byt arbetsyta" ++msgstr "" ++"#-#-#-#-# sv.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Byt arbetsyta\n" ++"#-#-#-#-# sv.po #-#-#-#-#\n" ++"Ändra arbetsyta" + +-#: Settings.ui.h:57 ++#: Settings.ui.h:57 Settings.ui.h:194 + msgid "Behavior" + msgstr "Beteende" + +@@ -645,31 +764,51 @@ msgstr "Anpassa räknare för öppna fönster" + msgid "Default" + msgstr "Standard" + +-#: Settings.ui.h:64 ++#: Settings.ui.h:64 Settings.ui.h:162 ++#, fuzzy + msgid "Dots" +-msgstr "Prickar" ++msgstr "" ++"#-#-#-#-# sv.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Prickar\n" ++"#-#-#-#-# sv.po #-#-#-#-#\n" ++"Punkter" + +-#: Settings.ui.h:65 ++#: Settings.ui.h:65 Settings.ui.h:163 + msgid "Squares" + msgstr "Kvadrater" + +-#: Settings.ui.h:66 ++#: Settings.ui.h:66 Settings.ui.h:164 ++#, fuzzy + msgid "Dashes" +-msgstr "Streck" ++msgstr "" ++"#-#-#-#-# sv.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Streck\n" ++"#-#-#-#-# sv.po #-#-#-#-#\n" ++"Sträck" + +-#: Settings.ui.h:67 ++#: Settings.ui.h:67 Settings.ui.h:165 ++#, fuzzy + msgid "Segmented" +-msgstr "Segment" ++msgstr "" ++"#-#-#-#-# sv.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Segment\n" ++"#-#-#-#-# sv.po #-#-#-#-#\n" ++"Segmenterade" + +-#: Settings.ui.h:68 ++#: Settings.ui.h:68 Settings.ui.h:166 ++#, fuzzy + msgid "Solid" +-msgstr "Solid" ++msgstr "" ++"#-#-#-#-# sv.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Solid\n" ++"#-#-#-#-# sv.po #-#-#-#-#\n" ++"Fasta" + +-#: Settings.ui.h:69 ++#: Settings.ui.h:69 Settings.ui.h:167 + msgid "Ciliora" + msgstr "Ciliora" + +-#: Settings.ui.h:70 ++#: Settings.ui.h:70 Settings.ui.h:168 + msgid "Metro" + msgstr "Metro" + +@@ -685,7 +824,7 @@ msgstr "Anpassa färgen för snabbstartspanelen" + msgid "Tune the dash background opacity." + msgstr "Justera opacitet för bakgrunden till snabbstartspanelen." + +-#: Settings.ui.h:75 ++#: Settings.ui.h:75 Settings.ui.h:92 + msgid "Fixed" + msgstr "Fast" + +@@ -705,7 +844,7 @@ msgstr "Tvinga räta hörn" + msgid "Appearance" + msgstr "Utseende" + +-#: Settings.ui.h:80 ++#: Settings.ui.h:80 Settings.ui.h:225 + msgid "version: " + msgstr "version: " + +@@ -722,19 +861,30 @@ msgstr "Skapat av" + msgid "Webpage" + msgstr "Webbsida" + +-#: Settings.ui.h:84 ++#: Settings.ui.h:84 Settings.ui.h:236 ++#, fuzzy + msgid "" + "This program comes with ABSOLUTELY NO WARRANTY.\n" +-"See the GNU General Public License, version 2 or later for details." ++"See the GNU General Public License, version 2 or later for details." + msgstr "" ++"#-#-#-#-# sv.po (gnome-shell-extensions) #-#-#-#-#\n" + "Detta program kommer HELT UTAN GARANTI.\n" + "Se GNU " +-"General Public License, version 2 eller senare för detaljer." ++"General Public License, version 2 eller senare för detaljer.\n" ++"#-#-#-#-# sv.po #-#-#-#-#\n" ++"Detta program kommer ABSOLUT UTAN NÅGON GARANTI.\n" ++"Se GNU " ++"General Public Licens, version 2 eller senare för detaljer." + +-#: Settings.ui.h:86 ++#: Settings.ui.h:86 Settings.ui.h:238 ++#, fuzzy + msgid "About" +-msgstr "Om" ++msgstr "" ++"#-#-#-#-# sv.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Om\n" ++"#-#-#-#-# sv.po #-#-#-#-#\n" ++"Information om programmet" + + #: Settings.ui.h:87 + msgid "Customize minimum and maximum opacity values" +@@ -748,9 +898,14 @@ msgstr "Minsta opacitet" + msgid "Maximum opacity" + msgstr "Högsta opacitet" + +-#: Settings.ui.h:90 ++#: Settings.ui.h:90 Settings.ui.h:120 ++#, fuzzy + msgid "Number overlay" +-msgstr "Nummermarkeringar" ++msgstr "" ++"#-#-#-#-# sv.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Nummermarkeringar\n" ++"#-#-#-#-# sv.po #-#-#-#-#\n" ++"Nummer av övertäckande" + + #: Settings.ui.h:91 + msgid "" +@@ -775,9 +930,14 @@ msgstr "" + msgid "Shortcut for the options above" + msgstr "Tangentbordsgenväg för alternativen ovan" + +-#: Settings.ui.h:95 ++#: Settings.ui.h:95 Settings.ui.h:59 ++#, fuzzy + msgid "Syntax: , , , " +-msgstr "Syntax: , , , " ++msgstr "" ++"#-#-#-#-# sv.po (gnome-shell-extensions) #-#-#-#-#\n" ++"Syntax: , , , \n" ++"#-#-#-#-# sv.po #-#-#-#-#\n" ++"Syntax: , , , " + + #: Settings.ui.h:96 + msgid "Hide timeout (s)" +@@ -807,7 +967,7 @@ msgstr "Visa dockan då den inte är i vägen för programfönster." + msgid "Dodge windows" + msgstr "Undvik fönster" + +-#: Settings.ui.h:103 ++#: Settings.ui.h:103 Settings.ui.h:49 + msgid "All windows" + msgstr "Alla fönster" + +@@ -930,7 +1090,7 @@ msgstr "Ändra bakgrund…" + msgid "Display Settings" + msgstr "Visningsinställningar" + +-#: desktopGrid.js:360 ++#: desktopGrid.js:360 appIcons.js:1726 + msgid "Settings" + msgstr "Inställningar" + +@@ -1022,6 +1182,1048 @@ msgstr "Visa monterade enheter" + msgid "Show mounted drives in the desktop." + msgstr "Visa monterade enheter på skrivbordet." + ++#: prefs.js:211 ++msgid "Top, with plugin icons collapsed to bottom" ++msgstr "Topp, med tilläggsikoner kollapsade till botten" ++ ++#: prefs.js:211 ++msgid "Left, with plugin icons collapsed to right" ++msgstr "Vänster, med tilläggsikoner kollapsade till höger" ++ ++#: prefs.js:212 ++msgid "Top, with fixed center plugin icons" ++msgstr "Topp, med centrerade tilläggsikoner" ++ ++#: prefs.js:212 ++msgid "Left, with fixed center plugin icons" ++msgstr "Vänster, med centrerade tilläggsikoner" ++ ++#: prefs.js:213 ++msgid "Top, with floating center plugin icons" ++msgstr "Topp, med flytande centrerade tilläggsikoner" ++ ++#: prefs.js:213 ++msgid "Left, with floating center plugin icons" ++msgstr "Vänster, med flytande centrerade tilläggsikoner" ++ ++#: prefs.js:214 ++msgid "Center, fixed in middle of monitor" ++msgstr "Centrum, fixerade i mitten av skärmen" ++ ++#: prefs.js:215 ++msgid "Center, floating between top and bottom elements" ++msgstr "Centrum, flytande mellan topp och botten elementer" ++ ++#: prefs.js:215 ++msgid "Center, floating between left and right elements" ++msgstr "Centrum, flytande mellan vänster och höger elementer" ++ ++#: prefs.js:219 ++msgid "Top of plugin icons" ++msgstr "Ovanför tilläggsikoner" ++ ++#: prefs.js:219 ++msgid "Left of plugin icons" ++msgstr "Till vänster av tilläggsikoner" ++ ++#: prefs.js:220 ++msgid "Bottom of plugin icons" ++msgstr "Under tilläggsikoner" ++ ++#: prefs.js:220 ++msgid "Right of plugin icons" ++msgstr "Till höger om tilläggsikoner" ++ ++#: prefs.js:221 ++msgid "Top of system indicators" ++msgstr "Ovanför systemindikatorer" ++ ++#: prefs.js:221 ++msgid "Left of system indicators" ++msgstr "Till vänster om systemindikatorer" ++ ++#: prefs.js:222 ++msgid "Bottom of system indicators" ++msgstr "Under systemindikatorer" ++ ++#: prefs.js:222 ++msgid "Right of system indicators" ++msgstr "Till höger om systemindikatorer" ++ ++#: prefs.js:223 ++msgid "Top of taskbar" ++msgstr "Ovanför programfältet" ++ ++#: prefs.js:223 ++msgid "Left of taskbar" ++msgstr "Till vänster om programfältet" ++ ++#: prefs.js:224 ++msgid "Bottom of taskbar" ++msgstr "Under programfältet" ++ ++#: prefs.js:224 ++msgid "Right of taskbar" ++msgstr "Till höger om programfältet" ++ ++#: prefs.js:230 ++msgid "Show Desktop button height (px)" ++msgstr "Visa skrivbordsknapp höjd (px)" ++ ++#: prefs.js:230 ++msgid "Show Desktop button width (px)" ++msgstr "Visa skrivbordsknapp bredd (px)" ++ ++#: prefs.js:364 ++msgid "Running Indicator Options" ++msgstr "Inställningar för programsymboler" ++ ++#: prefs.js:514 ++msgid "Default (Primary monitor)" ++msgstr "Förvalda (primära skärmar)" ++ ++#: prefs.js:517 ++msgid "Monitor " ++msgstr "Bildskärm " ++ ++#: prefs.js:562 ++msgid "Multi-monitors options" ++msgstr "Inställningar för flera bildskärmar" ++ ++#: prefs.js:705 ++msgid "Dynamic opacity options" ++msgstr "Inställningar för dynamisk genomskinlighet" ++ ++#: prefs.js:830 ++msgid "Intellihide options" ++msgstr "Inställningar för automatisk döljande" ++ ++#: prefs.js:897 ++msgid "Show Applications options" ++msgstr "Inställningar för Program-meny" ++ ++#: prefs.js:985 ++msgid "Show Desktop options" ++msgstr "Inställningar för skrivbordsknappen" ++ ++#: prefs.js:1071 ++msgid "Window preview options" ++msgstr "Förhandsgranskning av programfönster inställningar" ++ ++#: prefs.js:1318 ++msgid "Ungrouped application options" ++msgstr "Inställningar för icke grupperade program" ++ ++#: prefs.js:1467 ++msgid "Customize panel scroll behavior" ++msgstr "Anpassa beteendet för panelbläddrande" ++ ++#: prefs.js:1503 ++msgid "Customize icon scroll behavior" ++msgstr "Anpassa beteendet för bläddrande av ikoner" ++ ++#: prefs.js:1600 ++msgid "Advanced hotkeys options" ++msgstr "Avancerade inställningar för snabbtangenter" ++ ++#: prefs.js:1634 ++msgid "Secondary Menu Options" ++msgstr "Sekundära meny inställningar" ++ ++#: prefs.js:1676 Settings.ui.h:223 ++msgid "Advanced Options" ++msgstr "Avancerade inställningar" ++ ++#: prefs.js:1763 ++msgid "Export settings" ++msgstr "Exportera inställningar" ++ ++#: prefs.js:1780 ++msgid "Import settings" ++msgstr "Importera inställningar" ++ ++#: appIcons.js:1380 ++msgid "Show Details" ++msgstr "Visa detaljer" ++ ++#: appIcons.js:1398 ++msgid "New Window" ++msgstr "Ny fönster" ++ ++#: appIcons.js:1460 ++msgid "Windows" ++msgstr "Fönster" ++ ++#: appIcons.js:1684 ++msgid "Power options" ++msgstr "Energi inställningar" ++ ++#: appIcons.js:1689 ++msgid "Event logs" ++msgstr "Händelseloggar" ++ ++#: appIcons.js:1694 ++msgid "System" ++msgstr "System" ++ ++#: appIcons.js:1699 ++msgid "Device Management" ++msgstr "Administrering av enheter" ++ ++#: appIcons.js:1704 ++msgid "Disk Management" ++msgstr "Administrering av diskar" ++ ++#: appIcons.js:1711 ++msgid "Terminal" ++msgstr "Terminal" ++ ++#: appIcons.js:1716 ++msgid "System monitor" ++msgstr "Systemövervakning" ++ ++#: appIcons.js:1721 ++msgid "Files" ++msgstr "Filer" ++ ++#: appIcons.js:1733 ++msgid "Unlock taskbar" ++msgstr "Lås upp aktivitetsfältet" ++ ++#: appIcons.js:1733 ++msgid "Lock taskbar" ++msgstr "Lås aktivitetsfältet" ++ ++#: appIcons.js:1738 ++msgid "Dash to Panel Settings" ++msgstr "Dash to Panel inställningar" ++ ++#: appIcons.js:1745 ++msgid "Restore Windows" ++msgstr "Återställ fönster" ++ ++#: appIcons.js:1745 ++msgid "Show Desktop" ++msgstr "Visa skrivbordet" ++ ++#: Settings.ui.h:1 ++msgid "Nothing yet!" ++msgstr "Ännu ingenting!" ++ ++#: Settings.ui.h:4 ++msgid "Raise windows" ++msgstr "Höja fönster" ++ ++#: Settings.ui.h:8 ++msgid "Cycle windows + minimize" ++msgstr "Bläddra fönster + minimera" ++ ++#: Settings.ui.h:9 ++msgid "Toggle single / Preview multiple" ++msgstr "Växla enskilda / Förhandsvisa flera" ++ ++#: Settings.ui.h:15 ++msgid "Isolate monitors" ++msgstr "Isolera bildskärmar" ++ ++#: Settings.ui.h:16 ++msgid "Display favorite applications on all monitors" ++msgstr "Visa favoritprogram på alla bildskärmar" ++ ++#: Settings.ui.h:17 ++msgid "Display the clock on all monitors" ++msgstr "Visa klockan på alla bildskärmar" ++ ++#: Settings.ui.h:18 ++msgid "Display the status menu on all monitors" ++msgstr "Visa statusmeny på alla bildskärmar" ++ ++#: Settings.ui.h:19 ++msgid "Integrate AppMenu items" ++msgstr "Integrera programmeny objekt" ++ ++#: Settings.ui.h:20 ++msgid "Show Details menu item" ++msgstr "Visa detaljer menyförval" ++ ++#: Settings.ui.h:21 ++msgid "Highlight focused application" ++msgstr "Belys fokuserade program" ++ ++#: Settings.ui.h:22 ++msgid "Icon dominant color" ++msgstr "Dominanta ikonfärgen" ++ ++#: Settings.ui.h:23 ++msgid "Custom color" ++msgstr "Anpassad färg" ++ ++#: Settings.ui.h:24 ++msgid "Highlight opacity" ++msgstr "Belysningens genomskinlighet" ++ ++#: Settings.ui.h:25 ++msgid "Indicator height (px)" ++msgstr "Indikatorhöjd (px)" ++ ++#: Settings.ui.h:26 ++msgid "Indicator color - Icon Dominant" ++msgstr "Indikatorfärg - dominant ikon" ++ ++#: Settings.ui.h:27 ++msgid "Indicator color - Override Theme" ++msgstr "Indikatorfärg - åsidosatt tema" ++ ++#: Settings.ui.h:28 ++msgid "1 window open (or ungrouped)" ++msgstr "1 fönster öppnad (eller inte grupperad)" ++ ++#: Settings.ui.h:29 ++msgid "Apply to all" ++msgstr "Tillämpa för alla" ++ ++#: Settings.ui.h:30 ++msgid "2 windows open" ++msgstr "2 fönster öppna" ++ ++#: Settings.ui.h:31 ++msgid "3 windows open" ++msgstr "3 fönster öppna" ++ ++#: Settings.ui.h:32 ++msgid "4+ windows open" ++msgstr "4+ fönster öppna" ++ ++#: Settings.ui.h:33 ++msgid "Use different for unfocused" ++msgstr "Använd olika för icke fokuserade" ++ ++#: Settings.ui.h:34 ++msgid "Font size (px) of the application titles (default is 14)" ++msgstr "Typsnitt storlek (px) på programtitlar (förinställd på 14)" ++ ++#: Settings.ui.h:35 ++msgid "Font weight of application titles" ++msgstr "Typsnitt tjocklek av programtitlar" ++ ++#: Settings.ui.h:36 ++msgid "inherit from theme" ++msgstr "ärver från tema" ++ ++#: Settings.ui.h:37 ++msgid "normal" ++msgstr "normal" ++ ++#: Settings.ui.h:38 ++msgid "lighter" ++msgstr "tunnare" ++ ++#: Settings.ui.h:39 ++msgid "bold" ++msgstr "tjock" ++ ++#: Settings.ui.h:40 ++msgid "bolder" ++msgstr "tjockare" ++ ++#: Settings.ui.h:41 ++msgid "Font color of the application titles" ++msgstr "Typsnitt färg av programtitlar" ++ ++#: Settings.ui.h:42 ++msgid "Maximum width (px) of the application titles (default is 160)" ++msgstr "Maximal bredd (px) av programtitlar (förinställning är 160)" ++ ++#: Settings.ui.h:43 ++msgid "Use a fixed width for the application titles" ++msgstr "Använd fast bredd för programtitlar" ++ ++#: Settings.ui.h:44 ++msgid "" ++"The application titles all have the same width, even if their texts are " ++"shorter than the maximum width. The maximum width value is used as the fixed " ++"width." ++msgstr "" ++"Programtitlar har samma bredd även om texten är kortare än den maximala " ++"bredden. Den maximala vidden används som mått på fast bredd." ++ ++#: Settings.ui.h:45 ++msgid "Display running indicators on unfocused applications" ++msgstr "Visa körande indikatorer på ofokuserade program" ++ ++#: Settings.ui.h:46 ++msgid "Use the favorite icons as application launchers" ++msgstr "Använd favoritikoner som programstartare" ++ ++#: Settings.ui.h:47 ++msgid "Only hide the panel when it is obstructed by windows " ++msgstr "Endast dölj panelen om den täcks av fönster " ++ ++#: Settings.ui.h:48 ++msgid "The panel hides from" ++msgstr "Panelen döljs från" ++ ++#: Settings.ui.h:50 ++msgid "Focused windows" ++msgstr "Fokuserade fönster" ++ ++#: Settings.ui.h:51 ++msgid "Maximized windows" ++msgstr "Maximerade fönster" ++ ++#: Settings.ui.h:52 ++msgid "Require pressure at the edge of the screen to reveal the panel" ++msgstr "Kräv tryck vid kanten på skärmen för att visa panelen" ++ ++#: Settings.ui.h:53 ++msgid "Required pressure threshold (px)" ++msgstr "Tröskelvärde som krävs för trycket (px)" ++ ++#: Settings.ui.h:54 ++msgid "Required pressure timeout (ms)" ++msgstr "Tidsgräns som krävs för trycket (ms)" ++ ++#: Settings.ui.h:55 ++msgid "Allow the panel to be revealed while in fullscreen mode" ++msgstr "Tillåt panelen att synas i fullskärmsläge" ++ ++#: Settings.ui.h:56 ++msgid "Only hide secondary panels (requires multi-monitors option)" ++msgstr "" ++"Göm endast sekundära paneler (kräver inställningar för flera bildskärmar)" ++ ++#: Settings.ui.h:57 ++msgid "e.g. i" ++msgstr "t ex i" ++ ++#: Settings.ui.h:58 ++msgid "Keyboard shortcut to reveal and hold the panel" ++msgstr "Snabbkommando för att syna och hålla panelen" ++ ++#: Settings.ui.h:60 ++msgid "Hide and reveal animation duration (ms)" ++msgstr "Tidsgräns för göm och syna animeringen (ms)" ++ ++#: Settings.ui.h:61 ++msgid "Delay before hiding the panel (ms)" ++msgstr "Fördröjning innan panelen göms (ms)" ++ ++#: Settings.ui.h:62 ++msgid "Delay before enabling intellihide on start (ms)" ++msgstr "Fördröjning innan automatisk döljande aktiveras vid starten (ms)" ++ ++#: Settings.ui.h:63 ++msgid "Time (ms) before showing (100 is default)" ++msgstr "Tiden (ms) innan visning (förinställd på 100)" ++ ++#: Settings.ui.h:64 ++msgid "Animation time (ms)" ++msgstr "Animationstid (ms)" ++ ++#: Settings.ui.h:65 ++msgid "Time (ms) before hiding (100 is default)" ++msgstr "Tiden (ms) innan gömmande (förinställd på 100)" ++ ++#: Settings.ui.h:66 ++msgid "Immediate on application icon click" ++msgstr "Genast vid klickande på programikonen" ++ ++#: Settings.ui.h:67 ++msgid "Middle click on the preview to close the window" ++msgstr "Mittenklicka för att förhandsvisning för att stänga fönster" ++ ++#: Settings.ui.h:68 ++msgid "Window previews preferred size (px)" ++msgstr "Föredra fönsterstorlek på förhandsvisning (px)" ++ ++#: Settings.ui.h:69 ++msgid "Window previews aspect ratio Y (height)" ++msgstr "Fönster förhandsvisningens bildförhållande Y (höjd)" ++ ++#: Settings.ui.h:70 ++msgid "Window previews padding (px)" ++msgstr "Fönster förhandsvisningens utfyllnad (px)" ++ ++#: Settings.ui.h:71 ++msgid "1" ++msgstr "1" ++ ++#: Settings.ui.h:72 ++msgid "2" ++msgstr "2" ++ ++#: Settings.ui.h:73 ++msgid "3" ++msgstr "3" ++ ++#: Settings.ui.h:74 ++msgid "4" ++msgstr "4" ++ ++#: Settings.ui.h:75 ++msgid "5" ++msgstr "5" ++ ++#: Settings.ui.h:76 ++msgid "6" ++msgstr "6" ++ ++#: Settings.ui.h:77 ++msgid "7" ++msgstr "7" ++ ++#: Settings.ui.h:78 ++msgid "8" ++msgstr "8" ++ ++#: Settings.ui.h:79 ++msgid "9" ++msgstr "9" ++ ++#: Settings.ui.h:80 ++msgid "10" ++msgstr "10" ++ ++#: Settings.ui.h:81 ++msgid "11" ++msgstr "11" ++ ++#: Settings.ui.h:82 ++msgid "12" ++msgstr "12" ++ ++#: Settings.ui.h:83 ++msgid "13" ++msgstr "13" ++ ++#: Settings.ui.h:84 ++msgid "14" ++msgstr "14" ++ ++#: Settings.ui.h:85 ++msgid "15" ++msgstr "15" ++ ++#: Settings.ui.h:86 ++msgid "16" ++msgstr "16" ++ ++#: Settings.ui.h:87 ++msgid "17" ++msgstr "17" ++ ++#: Settings.ui.h:88 ++msgid "18" ++msgstr "18" ++ ++#: Settings.ui.h:89 ++msgid "19" ++msgstr "19" ++ ++#: Settings.ui.h:90 ++msgid "20" ++msgstr "20" ++ ++#: Settings.ui.h:91 ++msgid "21" ++msgstr "21" ++ ++#: Settings.ui.h:93 ++msgid "Window previews aspect ratio X (width)" ++msgstr "Fönster förhandsvisningens bildförhållande X (bredd)" ++ ++#: Settings.ui.h:94 ++msgid "Use custom opacity for the previews background" ++msgstr "Använd anpassad genomskinlighet för förhandsvisningens bakgrund" ++ ++#: Settings.ui.h:95 ++msgid "If disabled, the previews background have the same opacity as the panel" ++msgstr "" ++"Om avaktiverad, förhandsvisningen kommer att ha samma genomskinlighet som " ++"panelen" ++ ++#: Settings.ui.h:96 ++msgid "Close button and header position" ++msgstr "Stäng knappen och titelposition" ++ ++#: Settings.ui.h:99 ++msgid "Display window preview headers" ++msgstr "Visa rubrik i fönster förhandsvisningen" ++ ++#: Settings.ui.h:100 ++msgid "Font size (px) of the preview titles" ++msgstr "Typsnitt storlek (px) på förhandsvisningens titlar" ++ ++#: Settings.ui.h:101 ++msgid "Font weight of the preview titles" ++msgstr "Typsnitt tjocklek på förhandsvisningens titlar" ++ ++#: Settings.ui.h:102 ++msgid "Font color of the preview titles" ++msgstr "Typsnitt färg på förhandsvisningens titlar" ++ ++#: Settings.ui.h:103 ++msgid "Enable window peeking" ++msgstr "Aktivera fönstermarkering" ++ ++#: Settings.ui.h:104 ++msgid "" ++"When hovering over a window preview for some time, the window gets " ++"distinguished." ++msgstr "" ++"När en muspekare svävar över förhandsvisning av fönster under en tid, då " ++"kommer fönstret att framträda." ++ ++#: Settings.ui.h:105 ++msgid "Enter window peeking mode timeout (ms)" ++msgstr "Startar fönstermarkerande läge tidsgräns (ms)" ++ ++#: Settings.ui.h:106 ++msgid "50" ++msgstr "50" ++ ++#: Settings.ui.h:107 ++msgid "" ++"Time of inactivity while hovering over a window preview needed to enter the " ++"window peeking mode." ++msgstr "" ++"Tid av inaktivitet då muspekare svävar på fönster förhandsvisning som behövs " ++"till att aktivera fönstermarkerande läge." ++ ++#: Settings.ui.h:108 ++msgid "Window peeking mode opacity" ++msgstr "Fönstermarkerande läge genomskinlighet" ++ ++#: Settings.ui.h:109 ++msgid "0" ++msgstr "0" ++ ++#: Settings.ui.h:110 ++msgid "" ++"All windows except for the peeked one have their opacity set to the same " ++"value." ++msgstr "Alla fönster förutom de markerade har samma genomskinlighet." ++ ++#: Settings.ui.h:111 ++msgid "Delay between mouse scroll events (ms)" ++msgstr "Fördröjning mellan bläddrande händelser med mushjulet (ms)" ++ ++#: Settings.ui.h:112 ++msgid "Use this value to limit the number of captured mouse scroll events." ++msgstr "" ++"Använd detta värde för att begränsa numret av uppfångade bläddrande med " ++"mushjulet." ++ ++#: Settings.ui.h:113 ++msgid "Super" ++msgstr "Super" ++ ++#: Settings.ui.h:114 ++msgid "Super + Alt" ++msgstr "Super + Alt" ++ ++#: Settings.ui.h:115 ++msgid "Hotkeys prefix" ++msgstr "Snabbkommando prefix" ++ ++#: Settings.ui.h:116 ++msgid "Hotkeys will either be Super+Number or Super+Alt+Num" ++msgstr "" ++"Snabbkommando kommer att antingen vara Super+Nummer eller Super+Alt+Num" ++ ++#: Settings.ui.h:117 ++msgid "Never" ++msgstr "Alldrig" ++ ++#: Settings.ui.h:118 ++msgid "Show temporarily" ++msgstr "Visa tillfälligt" ++ ++#: Settings.ui.h:119 ++msgid "Always visible" ++msgstr "Alltid synlig" ++ ++#: Settings.ui.h:121 ++msgid "" ++"Temporarily show the application numbers over the icons when using the " ++"hotkeys." ++msgstr "Tillfälligt visa programnummer över ikoner när snabbkommando används." ++ ++#: Settings.ui.h:122 ++msgid "Hide timeout (ms)" ++msgstr "Tidsgränsen för döljandet (ms)" ++ ++#: Settings.ui.h:123 ++msgid "e.g. q" ++msgstr "t ex q" ++ ++#: Settings.ui.h:124 ++msgid "Shortcut to show the overlay for 2 seconds" ++msgstr "Snabbkommando för att visa övertäckande i 2 sekunder" ++ ++#: Settings.ui.h:125 ++msgid "Show window previews on hotkey" ++msgstr "Visa fönsterförhandsvisningar baserad på snabbkommando" ++ ++#: Settings.ui.h:126 ++msgid "Show previews when the application have multiple instances" ++msgstr "Presentera förhandsvisningar när programmet har flera förekomster" ++ ++#: Settings.ui.h:127 ++msgid "Number row" ++msgstr "Raden med nummerknappar" ++ ++#: Settings.ui.h:128 ++msgid "Numeric keypad" ++msgstr "Numeriskt knappsats" ++ ++#: Settings.ui.h:129 ++msgid "Both" ++msgstr "Båda" ++ ++#: Settings.ui.h:130 ++msgid "Hotkeys are activated with" ++msgstr "Snabbkommando aktiveras med" ++ ++#: Settings.ui.h:131 ++msgid "Select which keyboard number keys are used to activate the hotkeys" ++msgstr "" ++"Välj vilka tangentbordsknappar ska användas för att aktivera snabbkommando" ++ ++#: Settings.ui.h:132 ++msgid "Current Show Applications icon" ++msgstr "Nuvarande Visa Program ikonen" ++ ++#: Settings.ui.h:133 ++msgid "Select a Show Applications image icon" ++msgstr "Välj en bild för Visa Program ikonen" ++ ++#: Settings.ui.h:134 ++msgid "Custom Show Applications image icon" ++msgstr "Anpassad bild för Visa Program ikonen" ++ ++#: Settings.ui.h:135 ++msgid "Show Applications icon side padding (px)" ++msgstr "Visa Program ikonens utfyllnad (px)" ++ ++#: Settings.ui.h:136 ++msgid "Reveal the desktop when hovering the Show Desktop button" ++msgstr "Visa skrivbord när muspekaren svävar över skrivbordsknappen" ++ ++#: Settings.ui.h:137 ++msgid "Delay before revealing the desktop (ms)" ++msgstr "Fördröjningen innan skrivbord visas (ms)" ++ ++#: Settings.ui.h:138 ++msgid "Fade duration (ms)" ++msgstr "Varaktighet på bleknande (ms)" ++ ++#: Settings.ui.h:139 ++msgid "The panel background opacity is affected by" ++msgstr "Genomskinligheten på panelens bakgrund påverkas av" ++ ++#: Settings.ui.h:140 ++msgid "Change opacity when a window gets closer than (px)" ++msgstr "Ändra genomskinlighet när fönster blir närmare än (px)" ++ ++#: Settings.ui.h:142 ++#, no-c-format ++msgid "Change opacity to (%)" ++msgstr "Ändra genomskinlighet till (%)" ++ ++#: Settings.ui.h:143 ++msgid "Opacity change animation duration (ms)" ++msgstr "Ändringstiden för genomskinlighet animationen (ms)" ++ ++#: Settings.ui.h:144 ++msgid "Panel screen position" ++msgstr "Panelpositionen på skärmen" ++ ++#: Settings.ui.h:147 ++msgid "Taskbar position" ++msgstr "Aktivitetsfältets position" ++ ++#: Settings.ui.h:148 ++msgid "Clock location" ++msgstr "Placering av klockan" ++ ++#: Settings.ui.h:149 ++msgid "Display the main panel on" ++msgstr "Visa huvudpanelen på" ++ ++#: Settings.ui.h:150 ++msgid "Display panels on all monitors" ++msgstr "Visa paneler på alla bildskärmar" ++ ++#: Settings.ui.h:151 ++msgid "Panel Intellihide" ++msgstr "Automatisk gömmande av panelen" ++ ++#: Settings.ui.h:152 ++msgid "Hide and reveal the panel according to preferences" ++msgstr "Göm och visa panelen beroende på inställningar" ++ ++#: Settings.ui.h:153 ++msgid "Position" ++msgstr "Position" ++ ++#: Settings.ui.h:154 ++msgid "" ++"Panel Size\n" ++"(default is 48)" ++msgstr "" ++"Panelstorlek\n" ++"(48 är standard)" ++ ++#: Settings.ui.h:156 ++msgid "" ++"App Icon Margin\n" ++"(default is 8)" ++msgstr "" ++"Programikonernas marginaler\n" ++"(8 är standard)" ++ ++#: Settings.ui.h:158 ++msgid "" ++"App Icon Padding\n" ++"(default is 4)" ++msgstr "" ++"Programikonernas avståndsutfyllnad\n" ++"(grundläge är 4)" ++ ++#: Settings.ui.h:160 ++msgid "Running indicator position" ++msgstr "Aktiv indikeringsposition" ++ ++#: Settings.ui.h:161 ++msgid "Running indicator style (Focused app)" ++msgstr "Stilen för aktiv indikering (fokuserad program)" ++ ++#: Settings.ui.h:169 ++msgid "Running indicator style (Unfocused apps)" ++msgstr "Stilen för aktiv indikering (icke fokuserade program)" ++ ++#: Settings.ui.h:170 ++msgid "Override panel theme background color " ++msgstr "Åsidosätt paneltemans bakgrundsfärg " ++ ++#: Settings.ui.h:171 ++msgid "Override panel theme background opacity" ++msgstr "Åsidosätt paneltemans genomskinlighet av bakgrund" ++ ++#: Settings.ui.h:173 ++#, no-c-format ++msgid "Panel background opacity (%)" ++msgstr "Panelens genomskinlighet av bakgrund (%)" ++ ++#: Settings.ui.h:174 ++msgid "Dynamic background opacity" ++msgstr "Dynamisk genomskinlighet av bakgrund" ++ ++#: Settings.ui.h:175 ++msgid "Change opacity when a window gets close to the panel" ++msgstr "Ändra genomskinlighet av bakgrund när en fönster kommer nära panelen" ++ ++#: Settings.ui.h:176 ++msgid "Override panel theme gradient " ++msgstr "Åsidosätt paneltemans gradient " ++ ++#: Settings.ui.h:178 ++#, no-c-format ++msgid "Gradient top color and opacity (%)" ++msgstr "Toppgradientens färg och genomskinlighet (%)" ++ ++#: Settings.ui.h:180 ++#, no-c-format ++msgid "Gradient bottom color and opacity (%)" ++msgstr "Bottengradientens färg och genomskinlighet (%)" ++ ++#: Settings.ui.h:181 ++msgid "Style" ++msgstr "Stil" ++ ++#: Settings.ui.h:186 ++msgid "Show Activities button" ++msgstr "Visa Aktiviteter knappen" ++ ++#: Settings.ui.h:187 ++msgid "Show Desktop button" ++msgstr "Visa Skrivbord knappen" ++ ++#: Settings.ui.h:188 ++msgid "Show AppMenu button" ++msgstr "Visa Program Meny knappen" ++ ++#: Settings.ui.h:189 ++msgid "Top Bar > Show App Menu must be enabled in Tweak Tool" ++msgstr "" ++"Övre Fältet > Visa Program Meny måste aktiveras i Justeringar (Tweak Tool)" ++ ++#: Settings.ui.h:190 ++msgid "Show window previews on hover" ++msgstr "Visa förhandsgranskning av fönster vid svävande av muspekaren" ++ ++#: Settings.ui.h:191 ++msgid "Show tooltip on hover" ++msgstr "Visa beskrivning vid svävande av muspekaren" ++ ++#: Settings.ui.h:192 ++msgid "Isolate Workspaces" ++msgstr "Isolera Arbetsytor" ++ ++#: Settings.ui.h:193 ++msgid "Ungroup applications" ++msgstr "Avgruppera program" ++ ++#: Settings.ui.h:197 ++msgid "Toggle windows" ++msgstr "Växla fönster" ++ ++#: Settings.ui.h:198 ++msgid "Scroll panel action" ++msgstr "Åtgärd för skrollande av panelen" ++ ++#: Settings.ui.h:199 ++msgid "Behavior when mouse scrolling over the panel." ++msgstr "Beteende då mushjulet bläddras över panelen." ++ ++#: Settings.ui.h:200 ++msgid "Scroll icon action" ++msgstr "Skrollande ikonens åtgärd" ++ ++#: Settings.ui.h:201 ++msgid "Behavior when mouse scrolling over an application icon." ++msgstr "Beteende då mushjulet skrollar över en programikon." ++ ++#: Settings.ui.h:204 ++msgid "Cycle windows" ++msgstr "Växla bland fönster" ++ ++#: Settings.ui.h:206 ++msgid "Use hotkeys to activate apps" ++msgstr "Använd snabbkommando för att aktivera program" ++ ++#: Settings.ui.h:207 ++msgid "Action" ++msgstr "Åtgärd" ++ ++#: Settings.ui.h:208 ++msgid "" ++"Tray Font Size\n" ++"(0 = theme default)" ++msgstr "" ++"Teckenstorlek för meddelandefältet\n" ++"(0 = temans standard)" ++ ++#: Settings.ui.h:210 ++msgid "" ++"LeftBox Font Size\n" ++"(0 = theme default)" ++msgstr "" ++"Typsnitt storlek på vänster sida\n" ++"(0 = temans standard)" ++ ++#: Settings.ui.h:212 ++msgid "" ++"Tray Item Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"Utfyllnadsavstånd för meddelandefältets objekt\n" ++"(-1 = temans standard)" ++ ++#: Settings.ui.h:214 ++msgid "" ++"Status Icon Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"Utfyllnadsavstånd för statusikon\n" ++"(-1 = temans standard)" ++ ++#: Settings.ui.h:216 ++msgid "" ++"LeftBox Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"Utfyllnadsavstånd på vänstersida\n" ++"(-1 = temans standard)" ++ ++#: Settings.ui.h:218 ++msgid "Animate switching applications" ++msgstr "Animera programbyte" ++ ++#: Settings.ui.h:219 ++msgid "Animate launching new windows" ++msgstr "Animera uppstart av nya fönster" ++ ++#: Settings.ui.h:220 ++msgid "Keep original gnome-shell dash (overview)" ++msgstr "Behåll den ursprungliga GNOME-skalets översikt" ++ ++#: Settings.ui.h:221 ++msgid "Activate panel menu buttons (e.g. date menu) on click only" ++msgstr "Aktivera panelens menyknappar (t ex datum meny) endast vid klickandet" ++ ++#: Settings.ui.h:222 ++msgid "App icon secondary (right-click) menu" ++msgstr "Programikonens sekundära (högerklick) meny" ++ ++#: Settings.ui.h:224 ++msgid "Fine-Tune" ++msgstr "Finjustera" ++ ++#: Settings.ui.h:226 ++msgid "GitHub" ++msgstr "GitHub" ++ ++#: Settings.ui.h:227 ++msgid "" ++"Use the buttons below to create a settings file from your current " ++"preferences that can be imported on a different machine." ++msgstr "" ++"Använd knapparna nedan för att skapa en inställningsfil för de gällande " ++"förval som sedan kan importeras vid en annan installation." ++ ++#: Settings.ui.h:228 ++msgid "Export and import settings" ++msgstr "Exportera och importera inställningar" ++ ++#: Settings.ui.h:229 ++msgid "Export to file" ++msgstr "Exportera till en fil" ++ ++#: Settings.ui.h:230 ++msgid "Import from file" ++msgstr "Importera från en fil" ++ ++#: Settings.ui.h:231 ++msgid "" ++"This allows you to update the extension directly from the GitHub repository." ++msgstr "" ++"Detta gör det möjligt för dig att uppdatera tillägget direkt från GitHub " ++"förrådet." ++ ++#: Settings.ui.h:232 ++msgid "Updates" ++msgstr "Uppdateringar" ++ ++#: Settings.ui.h:233 ++msgid "Periodically check for updates" ++msgstr "Regelmässigt kolla efter uppdateringar" ++ ++#: Settings.ui.h:234 ++msgid "Check now" ++msgstr "Kolla nu" ++ ++#: Settings.ui.h:235 ++msgid "" ++"Be aware, these official Dash to " ++"Panel releases might not be reviewed yet on extensions.gnome.org! Read more" ++msgstr "" ++"Var medveten om att dessa officiella " ++"Dash to Panel utgåvor kan ännu vara icke recenserade på extensions.gnome.org!" ++" Läs mer" ++ + #~ msgid "Enter file name…" + #~ msgstr "Ange filnamn…" + +@@ -1030,3 +2232,52 @@ msgstr "Visa monterade enheter på skrivbordet." + + #~ msgid "Huge" + #~ msgstr "Enorm" ++ ++#~ msgid "Highlight color" ++#~ msgstr "Markeringsfärg" ++ ++#~ msgid "Preview timeout on icon leave (ms)" ++#~ msgstr "Fördröjning i förhandsgranskning av döljande ikonen (ms)" ++ ++#~ msgid "" ++#~ "If set too low, the window preview of running applications may seem to " ++#~ "close too quickly when trying to enter the popup. If set too high, the " ++#~ "preview may linger too long when moving to an adjacent icon." ++#~ msgstr "" ++#~ "Om den är satt för lågt, kommer fönsterförhandvisning av körande program " ++#~ "se ut att att stängas för snabbt när det återgår. Om satt för högt så " ++#~ "kommer fönsterförhandvisning att hänga kvar för länge när det flyttas " ++#~ "till närliggande ikonen." ++ ++#~ msgid "Middle click to close window" ++#~ msgstr "Mittenklick för att stänga fönster" ++ ++#~ msgid "Width of the window previews (px)" ++#~ msgstr "Bredden på förhandsvisningar av fönster (px)" ++ ++#~ msgid "Height of the window previews (px)" ++#~ msgstr "Höjden på förhandsvisningar av fönster (px)" ++ ++#~ msgid "Padding of the window previews (px)" ++#~ msgstr "Avstånd mellan förhandsvisningar av fönster (px)" ++ ++#~ msgid "Natural" ++#~ msgstr "Naturell" ++ ++#~ msgid "Left side of panel" ++#~ msgstr "Vänster sida av panelen" ++ ++#~ msgid "Centered in content" ++#~ msgstr "Centrerad i innehållet" ++ ++#~ msgid "Github" ++#~ msgstr "Github" ++ ++#~ msgid "Height (px)" ++#~ msgstr "Höjd (px)" ++ ++#~ msgid "Color - Override Theme" ++#~ msgstr "Färg - Åsidosatt Tema" ++ ++#~ msgid "1 window open" ++#~ msgstr "1 Fönster öppnad" +diff --git a/po/tr.po b/po/tr.po +index 3870d35e..58dc7d8c 100644 +--- a/po/tr.po ++++ b/po/tr.po +@@ -1,5 +1,6 @@ + # #-#-#-#-# tr.po (gnome-shell-extensions master) #-#-#-#-# + # #-#-#-#-# tr.po (gnome-shell-extensions master) #-#-#-#-# ++# #-#-#-#-# tr.po (gnome-shell-extensions master) #-#-#-#-# + # Turkish translation for gnome-shell-extensions. + # Copyright (C) 2012-2019 gnome-shell-extensions's COPYRIGHT HOLDER + # This file is distributed under the same license as the gnome-shell-extensions package. +@@ -33,11 +34,18 @@ + # Serdar Sağlam , 2019 + # Emin Tufan Çetin , 2019, 2020. + # ++# #-#-#-#-# tr.po #-#-#-#-# ++# Dash to Panel Türkçe çeviri ++# Copyright (C) 2017 ++# This file is distributed under the same license as the PACKAGE package. ++# Serdar Sağlam , 2018, 2019. ++# + #, fuzzy + msgid "" + msgstr "" + "#-#-#-#-# tr.po (gnome-shell-extensions master) #-#-#-#-#\n" + "#-#-#-#-# tr.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"#-#-#-#-# tr.po (gnome-shell-extensions master) #-#-#-#-#\n" + "Project-Id-Version: gnome-shell-extensions master\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/" + "issues\n" +@@ -78,6 +86,19 @@ msgstr "" + "Content-Transfer-Encoding: 8bit\n" + "X-Generator: Poedit 2.0.6\n" + "Plural-Forms: nplurals=1; plural=0;\n" ++"#-#-#-#-# tr.po #-#-#-#-#\n" ++"Project-Id-Version: \n" ++"Report-Msgid-Bugs-To: \n" ++"POT-Creation-Date: 2019-10-13 08:27+0300\n" ++"PO-Revision-Date: 2019-10-13 08:49+0300\n" ++"Last-Translator: Serdar Sağlam \n" ++"Language-Team: Serdar Sağlam \n" ++"Language: tr\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" ++"Plural-Forms: nplurals=1; plural=0;\n" + + #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3 + msgid "GNOME Classic" +@@ -340,11 +361,11 @@ msgstr "Ana ekran" + msgid "Secondary monitor " + msgstr "İkincil ekran " + +-#: prefs.js:305 Settings.ui.h:28 ++#: prefs.js:305 Settings.ui.h:28 Settings.ui.h:146 + msgid "Right" + msgstr "Sağ" + +-#: prefs.js:306 Settings.ui.h:25 ++#: prefs.js:306 Settings.ui.h:25 Settings.ui.h:145 + msgid "Left" + msgstr "Sol" + +@@ -352,17 +373,30 @@ msgstr "Sol" + msgid "Intelligent autohide customization" + msgstr "Akıllı otomatik gizleme özelleştirmeleri" + +-#: prefs.js:363 prefs.js:556 prefs.js:612 ++#: prefs.js:363 prefs.js:556 prefs.js:612 prefs.js:371 prefs.js:569 ++#: prefs.js:712 prefs.js:837 prefs.js:904 prefs.js:992 prefs.js:1078 ++#: prefs.js:1325 prefs.js:1409 prefs.js:1474 prefs.js:1510 prefs.js:1607 ++#: prefs.js:1641 prefs.js:1683 ++#, fuzzy + msgid "Reset to defaults" +-msgstr "Varsayılan ayarlara dön" ++msgstr "" ++"#-#-#-#-# tr.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Varsayılan ayarlara dön\n" ++"#-#-#-#-# tr.po #-#-#-#-#\n" ++"Varsayılanlara Dön" + + #: prefs.js:549 + msgid "Show dock and application numbers" + msgstr "Rıhtımı ve uygulama sayılarını göster" + +-#: prefs.js:605 ++#: prefs.js:605 prefs.js:1402 ++#, fuzzy + msgid "Customize middle-click behavior" +-msgstr "Orta tık davranışını özelleştir" ++msgstr "" ++"#-#-#-#-# tr.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Orta tık davranışını özelleştir\n" ++"#-#-#-#-# tr.po #-#-#-#-#\n" ++"Orta Tıklatma Davranışları" + + #: prefs.js:688 + msgid "Customize running indicators" +@@ -384,34 +418,54 @@ msgstr "Tüm Pencereler" + msgid "Dash to Dock %s" + msgstr "Dash to Dock %sı" + +-#: Settings.ui.h:1 ++#: Settings.ui.h:1 Settings.ui.h:2 ++#, fuzzy + msgid "" + "When set to minimize, double clicking minimizes all the windows of the " + "application." + msgstr "" ++"#-#-#-#-# tr.po (gnome-shell-extensions master) #-#-#-#-#\n" + "Küçültmeye ayarlandığında, çift tıklamak uygulamanın tüm pencerelerini " ++"küçültür.\n" ++"#-#-#-#-# tr.po #-#-#-#-#\n" ++"Küçültmek için ayarlandığında, çift tıklayarak tüm uygulama pencerelerini " + "küçültür." + +-#: Settings.ui.h:2 ++#: Settings.ui.h:2 Settings.ui.h:3 ++#, fuzzy + msgid "Shift+Click action" +-msgstr "Shift + Tıklama eylemi" ++msgstr "" ++"#-#-#-#-# tr.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Shift + Tıklama eylemi\n" ++"#-#-#-#-# tr.po #-#-#-#-#\n" ++"Shift+Tıklama eylemi" + + # Tweak ayarlarında raise için öne çıkar kullanılmış + #: Settings.ui.h:3 + msgid "Raise window" + msgstr "Pencereyi büyüt" + +-#: Settings.ui.h:4 ++#: Settings.ui.h:4 Settings.ui.h:5 + msgid "Minimize window" + msgstr "Pencereyi küçült" + +-#: Settings.ui.h:5 ++#: Settings.ui.h:5 Settings.ui.h:6 ++#, fuzzy + msgid "Launch new instance" +-msgstr "Yeni uygulama örneği başlat" ++msgstr "" ++"#-#-#-#-# tr.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Yeni uygulama örneği başlat\n" ++"#-#-#-#-# tr.po #-#-#-#-#\n" ++"Yeni uygulama başlat" + +-#: Settings.ui.h:6 ++#: Settings.ui.h:6 Settings.ui.h:7 ++#, fuzzy + msgid "Cycle through windows" +-msgstr "Pencere döngüsü" ++msgstr "" ++"#-#-#-#-# tr.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Pencere döngüsü\n" ++"#-#-#-#-# tr.po #-#-#-#-#\n" ++"Pencereler döngüsü" + + #: Settings.ui.h:7 + msgid "Minimize or overview" +@@ -429,25 +483,46 @@ msgstr "Küçült yada önizlemeleri göster" + msgid "Focus or show previews" + msgstr "Odaklan veya önizlemeleri göster" + +-#: Settings.ui.h:11 ++#: Settings.ui.h:11 appIcons.js:1398 appIcons.js:1458 appIcons.js:1460 ++#: Settings.ui.h:10 + msgid "Quit" + msgstr "Çık" + +-#: Settings.ui.h:12 ++#: Settings.ui.h:12 Settings.ui.h:11 ++#, fuzzy + msgid "Behavior for Middle-Click." +-msgstr "Orta Tıklama davranışı." ++msgstr "" ++"#-#-#-#-# tr.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Orta Tıklama davranışı.\n" ++"#-#-#-#-# tr.po #-#-#-#-#\n" ++"Orta tıklama davranışı." + +-#: Settings.ui.h:13 ++#: Settings.ui.h:13 Settings.ui.h:12 ++#, fuzzy + msgid "Middle-Click action" +-msgstr "Orta Tıklama eylemi" ++msgstr "" ++"#-#-#-#-# tr.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Orta Tıklama eylemi\n" ++"#-#-#-#-# tr.po #-#-#-#-#\n" ++"Orta tıklama eylemi" + +-#: Settings.ui.h:14 ++#: Settings.ui.h:14 Settings.ui.h:13 ++#, fuzzy + msgid "Behavior for Shift+Middle-Click." +-msgstr "Shift + Orta Tıklama davranışı." ++msgstr "" ++"#-#-#-#-# tr.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Shift + Orta Tıklama davranışı.\n" ++"#-#-#-#-# tr.po #-#-#-#-#\n" ++"Shift + Orta tıklama davranışı." + +-#: Settings.ui.h:15 ++#: Settings.ui.h:15 Settings.ui.h:14 ++#, fuzzy + msgid "Shift+Middle-Click action" +-msgstr "Shift + Orta Tıklama eylemi" ++msgstr "" ++"#-#-#-#-# tr.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Shift + Orta Tıklama eylemi\n" ++"#-#-#-#-# tr.po #-#-#-#-#\n" ++"Shift+Orta Tıklama eylemi" + + # glossy backlit için serbest çeviri yapıldı + #: Settings.ui.h:16 +@@ -486,11 +561,11 @@ msgstr "Tüm ekranlarda göster." + msgid "Position on screen" + msgstr "Ekrandaki konumu" + +-#: Settings.ui.h:26 ++#: Settings.ui.h:26 Settings.ui.h:97 + msgid "Bottom" + msgstr "Alt" + +-#: Settings.ui.h:27 ++#: Settings.ui.h:27 Settings.ui.h:98 + msgid "Top" + msgstr "Üst" + +@@ -528,11 +603,11 @@ msgstr "Sabit simge boyutu: Diğer simgeleri görmek için kaydır" + msgid "Position and size" + msgstr "Konum ve boyut" + +-#: Settings.ui.h:36 ++#: Settings.ui.h:36 Settings.ui.h:182 + msgid "Show favorite applications" + msgstr "Sık kullanılan uygulamaları göster" + +-#: Settings.ui.h:37 ++#: Settings.ui.h:37 Settings.ui.h:183 + msgid "Show running applications" + msgstr "Çalışan uygulamaları göster" + +@@ -558,17 +633,27 @@ msgstr "" + "uygulamasından veya GNOME eklentileri (https://extensions.gnome.org) " + "sitesinden ulaşılabilir." + +-#: Settings.ui.h:42 ++#: Settings.ui.h:42 Settings.ui.h:184 ++#, fuzzy + msgid "Show Applications icon" +-msgstr "Uygulamalar simgesini göster" ++msgstr "" ++"#-#-#-#-# tr.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Uygulamalar simgesini göster\n" ++"#-#-#-#-# tr.po #-#-#-#-#\n" ++"Tüm Uygulamalar simgesi Aktif" + + #: Settings.ui.h:43 + msgid "Move the applications button at the beginning of the dock." + msgstr "Uygulamalar simgesini rıhtım'ın başlangıcına taşı." + +-#: Settings.ui.h:44 ++#: Settings.ui.h:44 Settings.ui.h:185 ++#, fuzzy + msgid "Animate Show Applications." +-msgstr "Uygulamalar açılırken canlandırma göster." ++msgstr "" ++"#-#-#-#-# tr.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Uygulamalar açılırken canlandırma göster.\n" ++"#-#-#-#-# tr.po #-#-#-#-#\n" ++"Canlandırma menü açılışlarında göster." + + #: Settings.ui.h:45 + msgid "Show trash can" +@@ -582,23 +667,33 @@ msgstr "Bağlı birimleri ve aygıtları göster" + msgid "Launchers" + msgstr "Başlatıcılar" + +-#: Settings.ui.h:48 ++#: Settings.ui.h:48 Settings.ui.h:205 ++#, fuzzy + msgid "" + "Enable Super+(0-9) as shortcuts to activate apps. It can also be used " + "together with Shift and Ctrl." + msgstr "" ++"#-#-#-#-# tr.po (gnome-shell-extensions master) #-#-#-#-#\n" + "Uygulamaları etkinleştirmek için Super+(0-9) seçeneğini kısayol olarak " +-"etkinleştir. Ayrıca Shift ve Ctrl ile birlikte de kullanılabilir." ++"etkinleştir. Ayrıca Shift ve Ctrl ile birlikte de kullanılabilir.\n" ++"#-#-#-#-# tr.po #-#-#-#-#\n" ++"Uygulamaları etkinleştirmek için kısayollar ctrl +(0-9) etkinleştirin Shift " ++"ve Ctrl ile birlikte." + + #: Settings.ui.h:49 + msgid "Use keyboard shortcuts to activate apps" + msgstr "Uygulamaları etkinleştirmek için klavye kısayollarını kullan" + +-#: Settings.ui.h:50 ++#: Settings.ui.h:50 Settings.ui.h:195 ++#, fuzzy + msgid "Behaviour when clicking on the icon of a running application." +-msgstr "Çalışan bir uygulamanın simgesine tıklandığındaki davranışı." ++msgstr "" ++"#-#-#-#-# tr.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Çalışan bir uygulamanın simgesine tıklandığındaki davranışı.\n" ++"#-#-#-#-# tr.po #-#-#-#-#\n" ++"Çalışan bir uygulamanın simgesine tıkladığınızda davranış." + +-#: Settings.ui.h:51 ++#: Settings.ui.h:51 Settings.ui.h:196 + msgid "Click action" + msgstr "Tıklama eylemi" + +@@ -610,15 +705,15 @@ msgstr "Bir uygulamanın simgesini kaydırdığınızdaki davranışı." + msgid "Scroll action" + msgstr "Kaydırma eylemi" + +-#: Settings.ui.h:55 ++#: Settings.ui.h:55 Settings.ui.h:202 + msgid "Do nothing" + msgstr "Hiçbir şey yapma" + +-#: Settings.ui.h:56 ++#: Settings.ui.h:56 Settings.ui.h:203 + msgid "Switch workspace" + msgstr "Çalışma alanını değiştir" + +-#: Settings.ui.h:57 ++#: Settings.ui.h:57 Settings.ui.h:194 + msgid "Behavior" + msgstr "Davranış" + +@@ -653,31 +748,31 @@ msgstr "Pencere sayı göstergelerini özelleştir" + msgid "Default" + msgstr "Varsayılan" + +-#: Settings.ui.h:64 ++#: Settings.ui.h:64 Settings.ui.h:162 + msgid "Dots" + msgstr "Noktalar" + +-#: Settings.ui.h:65 ++#: Settings.ui.h:65 Settings.ui.h:163 + msgid "Squares" + msgstr "Kareler" + +-#: Settings.ui.h:66 ++#: Settings.ui.h:66 Settings.ui.h:164 + msgid "Dashes" + msgstr "Tireler" + +-#: Settings.ui.h:67 ++#: Settings.ui.h:67 Settings.ui.h:165 + msgid "Segmented" + msgstr "Segmentler" + +-#: Settings.ui.h:68 ++#: Settings.ui.h:68 Settings.ui.h:166 + msgid "Solid" + msgstr "Kalın çizgi" + +-#: Settings.ui.h:69 ++#: Settings.ui.h:69 Settings.ui.h:167 + msgid "Ciliora" + msgstr "Nokta ve çizgi" + +-#: Settings.ui.h:70 ++#: Settings.ui.h:70 Settings.ui.h:168 + msgid "Metro" + msgstr "Metro" + +@@ -693,7 +788,7 @@ msgstr "Panel rengini özelleştir" + msgid "Tune the dash background opacity." + msgstr "Panel arkaplan matlığını ayarla." + +-#: Settings.ui.h:75 ++#: Settings.ui.h:75 Settings.ui.h:92 + msgid "Fixed" + msgstr "Sabit" + +@@ -714,7 +809,7 @@ msgstr "Köşeleri düzleştir\n" + msgid "Appearance" + msgstr "Görünüm" + +-#: Settings.ui.h:81 ++#: Settings.ui.h:81 Settings.ui.h:225 + msgid "version: " + msgstr "sürüm: " + +@@ -731,18 +826,24 @@ msgstr "Oluşturan:" + msgid "Webpage" + msgstr "Web sitesi" + +-#: Settings.ui.h:85 ++#: Settings.ui.h:85 Settings.ui.h:236 ++#, fuzzy + msgid "" + "This program comes with ABSOLUTELY NO WARRANTY.\n" +-"See the GNU General Public License, version 2 or later for details." ++"See the GNU General Public License, version 2 or later for details." + msgstr "" ++"#-#-#-#-# tr.po (gnome-shell-extensions master) #-#-#-#-#\n" + "Bu program kesinlikle hiçbir garanti vermiyor..\n" + "Ayrıntılar için GNU Genel Kamu Lisansı, sürüm 2 veya üstü bağlantısına bakın" ++"span>\n" ++"#-#-#-#-# tr.po #-#-#-#-#\n" ++"Bu program KESİNLİKLE HİÇBİR GARANTİ vermez.\n" ++"Bakın GNU " ++"Genel Kamu Lisansı, sürüm 2 veya üstü detaylar için." + +-#: Settings.ui.h:87 ++#: Settings.ui.h:87 Settings.ui.h:238 + msgid "About" + msgstr "Hakkında" + +@@ -759,9 +860,14 @@ msgstr "Asgari matlık" + msgid "Maximum opacity" + msgstr "Azami matlık" + +-#: Settings.ui.h:91 ++#: Settings.ui.h:91 Settings.ui.h:120 ++#, fuzzy + msgid "Number overlay" +-msgstr "Sayı yerleşimi" ++msgstr "" ++"#-#-#-#-# tr.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Sayı yerleşimi\n" ++"#-#-#-#-# tr.po #-#-#-#-#\n" ++"Numara yerleşimi" + + #: Settings.ui.h:92 + msgid "" +@@ -787,7 +893,7 @@ msgstr "" + msgid "Shortcut for the options above" + msgstr "Yukarıdaki seçenekler için kısayol" + +-#: Settings.ui.h:96 ++#: Settings.ui.h:96 Settings.ui.h:59 + msgid "Syntax: , , , " + msgstr "Sözdizimi: , , , " + +@@ -820,7 +926,7 @@ msgstr "Uygulama penceresine engel olmadığında rıhtımı göster." + msgid "Dodge windows" + msgstr "Pencelereleri atlat" + +-#: Settings.ui.h:104 ++#: Settings.ui.h:104 Settings.ui.h:49 + msgid "All windows" + msgstr "Tüm pencereler" + +@@ -941,7 +1047,7 @@ msgstr "Arka Planı Değiştir…" + msgid "Display Settings" + msgstr "Görüntü Ayarları" + +-#: desktopGrid.js:360 ++#: desktopGrid.js:360 appIcons.js:1726 + msgid "Settings" + msgstr "Ayarlar" + +@@ -1037,6 +1143,1090 @@ msgstr "Bağlı sürücüleri göster" + msgid "Show mounted drives in the desktop." + msgstr "Bağlı sürücüleri masaüstünde göster." + ++#: prefs.js:211 ++msgid "Top, with plugin icons collapsed to bottom" ++msgstr "Üst, eklenti simgeleri alta kaydırılır" ++ ++#: prefs.js:211 ++msgid "Left, with plugin icons collapsed to right" ++msgstr "Sol, eklenti simgeleri sağa kaydırılır" ++ ++#: prefs.js:212 ++msgid "Top, with fixed center plugin icons" ++msgstr "Üst, eklenti simgeleri ortada sabit kalır" ++ ++#: prefs.js:212 ++msgid "Left, with fixed center plugin icons" ++msgstr "Sol, eklenti simgeleri ortada sabit kalır" ++ ++#: prefs.js:213 ++msgid "Top, with floating center plugin icons" ++msgstr "Üst, eklenti simgeleri ortada değişken" ++ ++#: prefs.js:213 ++msgid "Left, with floating center plugin icons" ++msgstr "Sol, eklenti simgeleri ortada değişken" ++ ++#: prefs.js:214 ++msgid "Center, fixed in middle of monitor" ++msgstr "Merkez, ekranın ortasında sabit kalır" ++ ++#: prefs.js:215 ++msgid "Center, floating between top and bottom elements" ++msgstr "Merkez, üst ve alt elemanlar arasında değişken" ++ ++#: prefs.js:215 ++msgid "Center, floating between left and right elements" ++msgstr "Merkez, sol ve sağ değişken" ++ ++#: prefs.js:219 ++msgid "Top of plugin icons" ++msgstr "Eklenti simgelerinin üstünde" ++ ++#: prefs.js:219 ++msgid "Left of plugin icons" ++msgstr "Eklenti simgelerinin solunda" ++ ++#: prefs.js:220 ++msgid "Bottom of plugin icons" ++msgstr "Eklenti simgelerinin altında" ++ ++#: prefs.js:220 ++msgid "Right of plugin icons" ++msgstr "Eklenti simgelerinin sağında" ++ ++#: prefs.js:221 ++msgid "Top of system indicators" ++msgstr "Sistem tepsisinin üstünde" ++ ++#: prefs.js:221 ++msgid "Left of system indicators" ++msgstr "Sistem tepsisinin solunda" ++ ++#: prefs.js:222 ++msgid "Bottom of system indicators" ++msgstr "Sistem tepsisinin altında" ++ ++#: prefs.js:222 ++msgid "Right of system indicators" ++msgstr "Sistem tepsisinin sağında" ++ ++#: prefs.js:223 ++msgid "Top of taskbar" ++msgstr "Görev çubuğunun üstünde" ++ ++#: prefs.js:223 ++msgid "Left of taskbar" ++msgstr "Görev çubuğunun solunda" ++ ++#: prefs.js:224 ++msgid "Bottom of taskbar" ++msgstr "Görev çubuğunun altında" ++ ++#: prefs.js:224 ++msgid "Right of taskbar" ++msgstr "Görev çubuğunun sağında" ++ ++#: prefs.js:230 ++msgid "Show Desktop button height (px)" ++msgstr "Masaüstü Göster düğmesi yüksekliği (piksel)" ++ ++#: prefs.js:230 ++msgid "Show Desktop button width (px)" ++msgstr "Düğme genişliği (piksel)" ++ ++#: prefs.js:364 ++msgid "Running Indicator Options" ++msgstr "Çalışan Gösterge Seçenekleri" ++ ++#: prefs.js:514 ++msgid "Default (Primary monitor)" ++msgstr "Varsayılan (Birincil ekran)" ++ ++#: prefs.js:517 ++msgid "Monitor " ++msgstr "Ekran " ++ ++#: prefs.js:562 ++msgid "Multi-monitors options" ++msgstr "Çoklu Ekran Seçenekleri" ++ ++#: prefs.js:705 ++msgid "Dynamic opacity options" ++msgstr "Dinamik Saydamlık Seçenekleri" ++ ++#: prefs.js:830 ++msgid "Intellihide options" ++msgstr "Otomatik gizleme seçenekleri" ++ ++#: prefs.js:897 ++msgid "Show Applications options" ++msgstr "Tüm Uygulamalar Seçenekleri" ++ ++#: prefs.js:985 ++msgid "Show Desktop options" ++msgstr "Masaüstü Göster Seçenekleri" ++ ++#: prefs.js:1071 ++msgid "Window preview options" ++msgstr "Pencere Önizleme Seçenekleri" ++ ++#: prefs.js:1318 ++msgid "Ungrouped application options" ++msgstr "Gruplanmamış Uygulama Seçenekleri" ++ ++#: prefs.js:1467 ++msgid "Customize panel scroll behavior" ++msgstr "Panel kaydırma davranışını özelleştir" ++ ++#: prefs.js:1503 ++msgid "Customize icon scroll behavior" ++msgstr "Simge kaydırma davranışını özelleştir" ++ ++#: prefs.js:1600 ++msgid "Advanced hotkeys options" ++msgstr "Gelişmiş kısayol tuş seçenekleri" ++ ++#: prefs.js:1634 ++msgid "Secondary Menu Options" ++msgstr "İkincil Menü Seçenekleri" ++ ++#: prefs.js:1676 Settings.ui.h:223 ++msgid "Advanced Options" ++msgstr "Gelişmiş Seçenekler" ++ ++#: prefs.js:1763 ++msgid "Export settings" ++msgstr "Dışarı aktarma ayarları" ++ ++#: prefs.js:1780 ++msgid "Import settings" ++msgstr "İçeri aktarma ayarları" ++ ++#: appIcons.js:1380 ++msgid "Show Details" ++msgstr "Ayrıntıları Göster" ++ ++#: appIcons.js:1398 ++msgid "New Window" ++msgstr "Yeni Pencere" ++ ++#: appIcons.js:1460 ++msgid "Windows" ++msgstr "Pencere" ++ ++#: appIcons.js:1684 ++msgid "Power options" ++msgstr "Güç seçenekleri" ++ ++#: appIcons.js:1689 ++msgid "Event logs" ++msgstr "Olay günlükleri" ++ ++#: appIcons.js:1694 ++msgid "System" ++msgstr "Sistem" ++ ++#: appIcons.js:1699 ++msgid "Device Management" ++msgstr "Aygıt Yönetimi" ++ ++#: appIcons.js:1704 ++msgid "Disk Management" ++msgstr "Disk Yönetimi" ++ ++#: appIcons.js:1711 ++msgid "Terminal" ++msgstr "Uçbirim" ++ ++#: appIcons.js:1716 ++msgid "System monitor" ++msgstr "Sistem monitörü" ++ ++#: appIcons.js:1721 ++msgid "Files" ++msgstr "Dosyalar" ++ ++#: appIcons.js:1733 ++msgid "Unlock taskbar" ++msgstr "Görev Çubuğu Kilidini Aç" ++ ++#: appIcons.js:1733 ++msgid "Lock taskbar" ++msgstr "Görev Çubuğunu Kilitle" ++ ++#: appIcons.js:1738 ++msgid "Dash to Panel Settings" ++msgstr "Dash to Panel Ayarları" ++ ++#: appIcons.js:1745 ++msgid "Restore Windows" ++msgstr "Pencereleri Onar" ++ ++#: appIcons.js:1745 ++msgid "Show Desktop" ++msgstr "Masaüstünü Göster" ++ ++#: update.js:58 ++#, javascript-format ++msgid "Version %s (%s) is available" ++msgstr "Sürüm %s (%s) kullanılabilir" ++ ++#: update.js:59 ++msgid "Details" ++msgstr "Ayrıntılar" ++ ++#: update.js:60 ++msgid "Update" ++msgstr "Güncelle" ++ ++#: update.js:63 ++msgid "Already up to date" ++msgstr "Zaten güncel" ++ ++#: update.js:148 ++msgid "Update successful, please log out/in" ++msgstr "Güncelleme başarılı, lütfen çıkış yapın/girin" ++ ++#: update.js:149 ++msgid "Log out" ++msgstr "Çıkış yap" ++ ++#: update.js:153 ++msgid "Update successful, please restart GNOME Shell" ++msgstr "Güncelleme başarılı, lütfen Gnome Kabuğunu yeniden başlat" ++ ++#: update.js:154 ++msgid "Restart GNOME Shell" ++msgstr "Gnome Kabuğunu yeniden başlat" ++ ++#: update.js:154 ++msgid "Restarting GNOME Shell..." ++msgstr "Gnome Kabuğunu yeniden başlatılıyor..." ++ ++#: update.js:160 ++msgid "Error: " ++msgstr "Hata: " ++ ++#: Settings.ui.h:1 ++msgid "Nothing yet!" ++msgstr "Henüz bir şey yok!" ++ ++#: Settings.ui.h:4 ++msgid "Raise windows" ++msgstr "Pencereleri yükselt" ++ ++#: Settings.ui.h:8 ++msgid "Cycle windows + minimize" ++msgstr "Uygulama başlat ve küçült" ++ ++#: Settings.ui.h:9 ++msgid "Toggle single / Preview multiple" ++msgstr "Tek geçiş/çoklu önizleme" ++ ++#: Settings.ui.h:15 ++msgid "Isolate monitors" ++msgstr "Ekranları izole et" ++ ++#: Settings.ui.h:16 ++msgid "Display favorite applications on all monitors" ++msgstr "Tüm ekranlarda sık kullanılan uygulamaları göster" ++ ++#: Settings.ui.h:17 ++msgid "Display the clock on all monitors" ++msgstr "Tüm ekranlarda saati göster" ++ ++#: Settings.ui.h:18 ++msgid "Display the status menu on all monitors" ++msgstr "Tüm ekranlarda durum menüsünü göster" ++ ++#: Settings.ui.h:19 ++msgid "Integrate AppMenu items" ++msgstr "Entegre Program menüsü" ++ ++#: Settings.ui.h:20 ++msgid "Show Details menu item" ++msgstr "Ayrıntıları Göster menü seçeneği" ++ ++#: Settings.ui.h:21 ++msgid "Highlight focused application" ++msgstr "Vurgu odaklı uygulamalar" ++ ++#: Settings.ui.h:22 ++msgid "Icon dominant color" ++msgstr "Simge baskın renk" ++ ++#: Settings.ui.h:23 ++msgid "Custom color" ++msgstr "Özel renk" ++ ++#: Settings.ui.h:24 ++msgid "Highlight opacity" ++msgstr "Arka ışık saydamlığı" ++ ++#: Settings.ui.h:25 ++msgid "Indicator height (px)" ++msgstr "Yükseklik (piksel)" ++ ++#: Settings.ui.h:26 ++msgid "Indicator color - Icon Dominant" ++msgstr "Gösterge rengi - baskın simge" ++ ++#: Settings.ui.h:27 ++msgid "Indicator color - Override Theme" ++msgstr "Gösterge rengi - temayı geçersiz kıl" ++ ++#: Settings.ui.h:28 ++msgid "1 window open (or ungrouped)" ++msgstr "Bir pencere açık olduğunda (gruplandırılmadığında)" ++ ++#: Settings.ui.h:29 ++msgid "Apply to all" ++msgstr "Tümüne uygula" ++ ++#: Settings.ui.h:30 ++msgid "2 windows open" ++msgstr "İki pencere açık olduğunda" ++ ++#: Settings.ui.h:31 ++msgid "3 windows open" ++msgstr "Üç pencere açık olduğunda" ++ ++#: Settings.ui.h:32 ++msgid "4+ windows open" ++msgstr "Dört + pencere açık olduğunda" ++ ++#: Settings.ui.h:33 ++msgid "Use different for unfocused" ++msgstr "Odakta değilken diğerini kullan" ++ ++#: Settings.ui.h:34 ++msgid "Font size (px) of the application titles (default is 14)" ++msgstr "Uygulama başlığı yazı tipi boyutu (piksel) (varsayılan 14)" ++ ++#: Settings.ui.h:35 ++msgid "Font weight of application titles" ++msgstr "Uygulama başlığı yazı tipi" ++ ++#: Settings.ui.h:36 ++msgid "inherit from theme" ++msgstr "mevcut tema" ++ ++#: Settings.ui.h:37 ++msgid "normal" ++msgstr "normal" ++ ++#: Settings.ui.h:38 ++msgid "lighter" ++msgstr "hafif" ++ ++#: Settings.ui.h:39 ++msgid "bold" ++msgstr "kalın" ++ ++#: Settings.ui.h:40 ++msgid "bolder" ++msgstr "çok kalın" ++ ++#: Settings.ui.h:41 ++msgid "Font color of the application titles" ++msgstr "Uygulama başlığı yazı tipi rengi" ++ ++#: Settings.ui.h:42 ++msgid "Maximum width (px) of the application titles (default is 160)" ++msgstr "Uygulama başlığı azami genişliği (piksel) (varsayılan 160)" ++ ++#: Settings.ui.h:43 ++msgid "Use a fixed width for the application titles" ++msgstr "Sabit başlık genişliğini kullan" ++ ++#: Settings.ui.h:44 ++msgid "" ++"The application titles all have the same width, even if their texts are " ++"shorter than the maximum width. The maximum width value is used as the fixed " ++"width." ++msgstr "" ++"Uygulama başlıkları, metinleri azami genişlikten daha kısa olsa bile, aynı " ++"genişliğe sahiptir. Azami genişlik değeri sabit genişlik olarak kullanılır." ++ ++#: Settings.ui.h:45 ++msgid "Display running indicators on unfocused applications" ++msgstr "Odaklanmamış uygulamalarda çalışan göstergeleri görüntüle" ++ ++#: Settings.ui.h:46 ++msgid "Use the favorite icons as application launchers" ++msgstr "Sık kullanılanlar simgelerini başlatıcı olarak kullanma" ++ ++#: Settings.ui.h:47 ++msgid "Only hide the panel when it is obstructed by windows " ++msgstr "Sadece pencere tarafından engellendiğinde paneli gizle " ++ ++#: Settings.ui.h:48 ++msgid "The panel hides from" ++msgstr "Panel gizlenir" ++ ++#: Settings.ui.h:50 ++msgid "Focused windows" ++msgstr "Odaklanmış pencereler" ++ ++#: Settings.ui.h:51 ++msgid "Maximized windows" ++msgstr "Büyütülmüş pencereler" ++ ++#: Settings.ui.h:52 ++msgid "Require pressure at the edge of the screen to reveal the panel" ++msgstr "Paneli ortaya çıkarmak için ekranın kenarında beklemek gerektirir" ++ ++#: Settings.ui.h:53 ++msgid "Required pressure threshold (px)" ++msgstr "Başlatma için gereken alan eşiği (piksel)" ++ ++#: Settings.ui.h:54 ++msgid "Required pressure timeout (ms)" ++msgstr "Bekleme için gerekli zaman aşımı (ms)" ++ ++#: Settings.ui.h:55 ++msgid "Allow the panel to be revealed while in fullscreen mode" ++msgstr "Panelin tam ekran kipinde ortaya çıkmasına izin ver" ++ ++#: Settings.ui.h:56 ++msgid "Only hide secondary panels (requires multi-monitors option)" ++msgstr "Yalnızca ikincil panelleri gizle (çoklu monitör seçeneği gerekir)" ++ ++#: Settings.ui.h:57 ++msgid "e.g. i" ++msgstr "örneğin. i" ++ ++#: Settings.ui.h:58 ++msgid "Keyboard shortcut to reveal and hold the panel" ++msgstr "Paneli tutmak ve ortaya çıkarmak için klavye kısayolu" ++ ++#: Settings.ui.h:60 ++msgid "Hide and reveal animation duration (ms)" ++msgstr "Canlandırma süresini gizle ve göster (ms)" ++ ++#: Settings.ui.h:61 ++msgid "Delay before hiding the panel (ms)" ++msgstr "Paneli gizlemeden önce gecikme süresi (ms)" ++ ++#: Settings.ui.h:62 ++msgid "Delay before enabling intellihide on start (ms)" ++msgstr "Başlangıçta intellihide'ı etkinleştirmeden önce gecikme (ms)" ++ ++#: Settings.ui.h:63 ++msgid "Time (ms) before showing (100 is default)" ++msgstr "Göstermeden önce geçen süre (ms) (varsayılan 100)" ++ ++#: Settings.ui.h:64 ++msgid "Animation time (ms)" ++msgstr "Animasyon süresi (ms)" ++ ++#: Settings.ui.h:65 ++msgid "Time (ms) before hiding (100 is default)" ++msgstr "Gizlemeden önce geçen süre (ms) (varsayılan 100)" ++ ++#: Settings.ui.h:66 ++msgid "Immediate on application icon click" ++msgstr "Hemen uygulama simgesine tıkla" ++ ++#: Settings.ui.h:67 ++msgid "Middle click on the preview to close the window" ++msgstr "Pencereyi kapatmak için önizlemeye orta tıkla" ++ ++#: Settings.ui.h:68 ++msgid "Window previews preferred size (px)" ++msgstr "Pencere önizlemeleri tercih edilen boyut (px)" ++ ++#: Settings.ui.h:69 ++msgid "Window previews aspect ratio Y (height)" ++msgstr "Pencere önizlemeleri en boy oranı Y (yükseklik)" ++ ++#: Settings.ui.h:70 ++msgid "Window previews padding (px)" ++msgstr "Pencere önizlemeleri dolgu (px)" ++ ++#: Settings.ui.h:71 ++msgid "1" ++msgstr "1" ++ ++#: Settings.ui.h:72 ++msgid "2" ++msgstr "2" ++ ++#: Settings.ui.h:73 ++msgid "3" ++msgstr "3" ++ ++#: Settings.ui.h:74 ++msgid "4" ++msgstr "4" ++ ++#: Settings.ui.h:75 ++msgid "5" ++msgstr "5" ++ ++#: Settings.ui.h:76 ++msgid "6" ++msgstr "6" ++ ++#: Settings.ui.h:77 ++msgid "7" ++msgstr "7" ++ ++#: Settings.ui.h:78 ++msgid "8" ++msgstr "8" ++ ++#: Settings.ui.h:79 ++msgid "9" ++msgstr "9" ++ ++#: Settings.ui.h:80 ++msgid "10" ++msgstr "10" ++ ++#: Settings.ui.h:81 ++msgid "11" ++msgstr "11" ++ ++#: Settings.ui.h:82 ++msgid "12" ++msgstr "12" ++ ++#: Settings.ui.h:83 ++msgid "13" ++msgstr "13" ++ ++#: Settings.ui.h:84 ++msgid "14" ++msgstr "14" ++ ++#: Settings.ui.h:85 ++msgid "15" ++msgstr "15" ++ ++#: Settings.ui.h:86 ++msgid "16" ++msgstr "16" ++ ++#: Settings.ui.h:87 ++msgid "17" ++msgstr "17" ++ ++#: Settings.ui.h:88 ++msgid "18" ++msgstr "18" ++ ++#: Settings.ui.h:89 ++msgid "19" ++msgstr "19" ++ ++#: Settings.ui.h:90 ++msgid "20" ++msgstr "20" ++ ++#: Settings.ui.h:91 ++msgid "21" ++msgstr "21" ++ ++#: Settings.ui.h:93 ++msgid "Window previews aspect ratio X (width)" ++msgstr "Pencere önizlemeleri en boy oranı X (genişlik)" ++ ++#: Settings.ui.h:94 ++msgid "Use custom opacity for the previews background" ++msgstr "Önizleme arka planı için özel opaklık kullan" ++ ++#: Settings.ui.h:95 ++msgid "If disabled, the previews background have the same opacity as the panel" ++msgstr "" ++"Devre dışı bırakılırsa, önizleme arka planı panelin aynı opaklığına sahip " ++"olur" ++ ++#: Settings.ui.h:96 ++msgid "Close button and header position" ++msgstr "Kapat düğmesi ve üstbilgi konumu" ++ ++#: Settings.ui.h:99 ++msgid "Display window preview headers" ++msgstr "Pencere önizleme başlıklarını görüntüle" ++ ++#: Settings.ui.h:100 ++msgid "Font size (px) of the preview titles" ++msgstr "Önizleme başlıklarının yazı tipi boyutu (px)" ++ ++#: Settings.ui.h:101 ++msgid "Font weight of the preview titles" ++msgstr "Önizleme başlıklarının yazı tipi genişliği" ++ ++#: Settings.ui.h:102 ++msgid "Font color of the preview titles" ++msgstr "Önizleme başlıklarının yazı tipi rengi" ++ ++#: Settings.ui.h:103 ++msgid "Enable window peeking" ++msgstr "Pencereye göz atmayı etkinleştir" ++ ++#: Settings.ui.h:104 ++msgid "" ++"When hovering over a window preview for some time, the window gets " ++"distinguished." ++msgstr "" ++"Bir süre boyunca bir pencere önizlemesinin üzerine gelindiğinde, pencere " ++"ayırt edilir." ++ ++#: Settings.ui.h:105 ++msgid "Enter window peeking mode timeout (ms)" ++msgstr "Pencere gözatma kipi zaman aşımı (ms)" ++ ++#: Settings.ui.h:106 ++msgid "50" ++msgstr "50" ++ ++#: Settings.ui.h:107 ++msgid "" ++"Time of inactivity while hovering over a window preview needed to enter the " ++"window peeking mode." ++msgstr "" ++"Bir pencere önizleme üzerinde vurgulama sırasında etkinlik dışı zaman girmek " ++"için gerekli pencere göz atma kipi." ++ ++#: Settings.ui.h:108 ++msgid "Window peeking mode opacity" ++msgstr "Pencere gözatma kipi saydamlığı" ++ ++#: Settings.ui.h:109 ++msgid "0" ++msgstr "0" ++ ++#: Settings.ui.h:110 ++msgid "" ++"All windows except for the peeked one have their opacity set to the same " ++"value." ++msgstr "" ++"Bakılan pencerenin dışındaki tüm pencerelerin opaklıkları aynı değere " ++"ayarlanmıştır." ++ ++#: Settings.ui.h:111 ++msgid "Delay between mouse scroll events (ms)" ++msgstr "Fare kaydırma olayları arasındaki gecikme (ms)" ++ ++#: Settings.ui.h:112 ++msgid "Use this value to limit the number of captured mouse scroll events." ++msgstr "" ++"Yakalanan fare kaydırma olaylarının sayısını sınırlamak için bu değeri " ++"kullanın." ++ ++#: Settings.ui.h:113 ++msgid "Super" ++msgstr "Super" ++ ++#: Settings.ui.h:114 ++msgid "Super + Alt" ++msgstr "Super + Alt" ++ ++#: Settings.ui.h:115 ++msgid "Hotkeys prefix" ++msgstr "Kısayol tuşları" ++ ++#: Settings.ui.h:116 ++msgid "Hotkeys will either be Super+Number or Super+Alt+Num" ++msgstr "Kısayol Super+Numaralar, yada Super+Alt" ++ ++#: Settings.ui.h:117 ++msgid "Never" ++msgstr "Asla" ++ ++#: Settings.ui.h:118 ++msgid "Show temporarily" ++msgstr "Geçici olarak göster" ++ ++#: Settings.ui.h:119 ++msgid "Always visible" ++msgstr "Sürekli görünür" ++ ++#: Settings.ui.h:121 ++msgid "" ++"Temporarily show the application numbers over the icons when using the " ++"hotkeys." ++msgstr "" ++"Kısayol tuşlarını kullanırken uygulama numaralarını simgeler üzerinde geçici " ++"olarak göster." ++ ++#: Settings.ui.h:122 ++msgid "Hide timeout (ms)" ++msgstr "Gizleme sonlanma (ms)" ++ ++#: Settings.ui.h:123 ++msgid "e.g. q" ++msgstr "örneğin. q" ++ ++#: Settings.ui.h:124 ++msgid "Shortcut to show the overlay for 2 seconds" ++msgstr "2 saniye kaplama göstermek için kısayol" ++ ++#: Settings.ui.h:125 ++msgid "Show window previews on hotkey" ++msgstr "Uygulama önizleme kısayol" ++ ++#: Settings.ui.h:126 ++msgid "Show previews when the application have multiple instances" ++msgstr "Uygulamanın birden çok örneği açık olduğunda önizlemeleri göster" ++ ++#: Settings.ui.h:127 ++msgid "Number row" ++msgstr "Numara satırı" ++ ++#: Settings.ui.h:128 ++msgid "Numeric keypad" ++msgstr "Sayısal tuş takımı" ++ ++#: Settings.ui.h:129 ++msgid "Both" ++msgstr "İkiside" ++ ++#: Settings.ui.h:130 ++msgid "Hotkeys are activated with" ++msgstr "Kısayol tuşları ile etkin" ++ ++#: Settings.ui.h:131 ++msgid "Select which keyboard number keys are used to activate the hotkeys" ++msgstr "" ++"Kısayol tuşlarını etkinleştirmek için hangi klavye sayı tuşlarının " ++"kullanılacağını seçin" ++ ++#: Settings.ui.h:132 ++msgid "Current Show Applications icon" ++msgstr "Mevcut simgeyi göster" ++ ++#: Settings.ui.h:133 ++msgid "Select a Show Applications image icon" ++msgstr "Görünmesini istediğin simgeyi seç" ++ ++#: Settings.ui.h:134 ++msgid "Custom Show Applications image icon" ++msgstr "Görünmesini istediğin simgeyi seç" ++ ++#: Settings.ui.h:135 ++msgid "Show Applications icon side padding (px)" ++msgstr "Simge yan dolgu (piksel)" ++ ++#: Settings.ui.h:136 ++msgid "Reveal the desktop when hovering the Show Desktop button" ++msgstr "Masaüstünü göster düğmesinin üstüne gelince masaüstü görünsün" ++ ++#: Settings.ui.h:137 ++msgid "Delay before revealing the desktop (ms)" ++msgstr "Masaüstünü ortaya çıkarmadan önce gecikme (ms)" ++ ++#: Settings.ui.h:138 ++msgid "Fade duration (ms)" ++msgstr "Solma süresi (ms)" ++ ++#: Settings.ui.h:139 ++msgid "The panel background opacity is affected by" ++msgstr "Panelin saydamlık üzerindeki etkisi" ++ ++#: Settings.ui.h:140 ++msgid "Change opacity when a window gets closer than (px)" ++msgstr "Bir pencere yaklaştığında saydamlığı değiştir (piksel)" ++ ++#: Settings.ui.h:142 ++#, no-c-format ++msgid "Change opacity to (%)" ++msgstr "Saydamlığı değiştir (%)" ++ ++#: Settings.ui.h:143 ++msgid "Opacity change animation duration (ms)" ++msgstr "Saydamlık değişimi canlandırma süresi (ms)" ++ ++#: Settings.ui.h:144 ++msgid "Panel screen position" ++msgstr "Panelin Ekrandaki Konumu" ++ ++#: Settings.ui.h:147 ++msgid "Taskbar position" ++msgstr "Görev çubuğu konumu" ++ ++#: Settings.ui.h:148 ++msgid "Clock location" ++msgstr "Saat konumu" ++ ++#: Settings.ui.h:149 ++msgid "Display the main panel on" ++msgstr "Paneli ana ekranda göster" ++ ++#: Settings.ui.h:150 ++msgid "Display panels on all monitors" ++msgstr "Paneli tüm ekranlarda göster" ++ ++#: Settings.ui.h:151 ++msgid "Panel Intellihide" ++msgstr "Paneli gizle" ++ ++#: Settings.ui.h:152 ++msgid "Hide and reveal the panel according to preferences" ++msgstr "Paneli gizleme ve geri getirme seçenekleri" ++ ++#: Settings.ui.h:153 ++msgid "Position" ++msgstr "Konum" ++ ++#: Settings.ui.h:154 ++msgid "" ++"Panel Size\n" ++"(default is 48)" ++msgstr "" ++"Panel Boyutu\n" ++"(varsayılan 48)" ++ ++#: Settings.ui.h:156 ++msgid "" ++"App Icon Margin\n" ++"(default is 8)" ++msgstr "" ++"Uygulama Simge Marjı\n" ++"(varsayılan 8)" ++ ++#: Settings.ui.h:158 ++msgid "" ++"App Icon Padding\n" ++"(default is 4)" ++msgstr "" ++"Uygulama Simge Dolgusu\n" ++"(varsayılan 4)" ++ ++#: Settings.ui.h:160 ++msgid "Running indicator position" ++msgstr "Çalışan uygulamaların gösterge konumu" ++ ++#: Settings.ui.h:161 ++msgid "Running indicator style (Focused app)" ++msgstr "Çalışan uygulamaların gösterge biçimi (Odakta olan)" ++ ++#: Settings.ui.h:169 ++msgid "Running indicator style (Unfocused apps)" ++msgstr "Çalışan uygulamaların gösterge biçimi (Odakta olmayan)" ++ ++#: Settings.ui.h:170 ++msgid "Override panel theme background color " ++msgstr "Panel tema arka plan rengini geçersiz kıl " ++ ++#: Settings.ui.h:171 ++msgid "Override panel theme background opacity" ++msgstr "Panel tema arka plan saydamlığını geçersiz kıl" ++ ++#: Settings.ui.h:173 ++#, no-c-format ++msgid "Panel background opacity (%)" ++msgstr "Panel arka plan saydamlığı (%)" ++ ++#: Settings.ui.h:174 ++msgid "Dynamic background opacity" ++msgstr "Dinamik arka plan saydamlığı" ++ ++#: Settings.ui.h:175 ++msgid "Change opacity when a window gets close to the panel" ++msgstr "Bir pencere panele yaklaştığında saydamlığı değişir" ++ ++#: Settings.ui.h:176 ++msgid "Override panel theme gradient " ++msgstr "Panel temasında değişken renkler kullan " ++ ++#: Settings.ui.h:178 ++#, no-c-format ++msgid "Gradient top color and opacity (%)" ++msgstr "Değişken renk ve saydamlık değeri (%) üst" ++ ++#: Settings.ui.h:180 ++#, no-c-format ++msgid "Gradient bottom color and opacity (%)" ++msgstr "Değişken renk ve saydamlık değeri (%) alt" ++ ++#: Settings.ui.h:181 ++msgid "Style" ++msgstr "Biçim" ++ ++#: Settings.ui.h:186 ++msgid "Show Activities button" ++msgstr "Etkinlikler düğmesi Aktif" ++ ++#: Settings.ui.h:187 ++msgid "Show Desktop button" ++msgstr "Masaüstünü göster düğmesi Aktif" ++ ++#: Settings.ui.h:188 ++msgid "Show AppMenu button" ++msgstr "Uygulama menüleri düğmesi Aktif" ++ ++#: Settings.ui.h:189 ++msgid "Top Bar > Show App Menu must be enabled in Tweak Tool" ++msgstr "Gnome İnce Ayarlar/Tepe Çubuğu/Uygulama Menüsü etkin olmalıdır" ++ ++#: Settings.ui.h:190 ++msgid "Show window previews on hover" ++msgstr "Pencere önizlemelerini göster" ++ ++#: Settings.ui.h:191 ++msgid "Show tooltip on hover" ++msgstr "Vurgulu araç ipucunu göster" ++ ++#: Settings.ui.h:192 ++msgid "Isolate Workspaces" ++msgstr "Çalışma alanlarını ayır" ++ ++#: Settings.ui.h:193 ++msgid "Ungroup applications" ++msgstr "Gruplandırılmamış uygulamalar" ++ ++#: Settings.ui.h:197 ++msgid "Toggle windows" ++msgstr "Pencereleri aç/kapat" ++ ++#: Settings.ui.h:198 ++msgid "Scroll panel action" ++msgstr "Kaydırma paneli eylemi" ++ ++#: Settings.ui.h:199 ++msgid "Behavior when mouse scrolling over the panel." ++msgstr "Panel üzerinde fare kaydırırken davranış." ++ ++#: Settings.ui.h:200 ++msgid "Scroll icon action" ++msgstr "Kaydırma simgesi eylemi" ++ ++#: Settings.ui.h:201 ++msgid "Behavior when mouse scrolling over an application icon." ++msgstr "Bir uygulama simgesi üzerinde fareyi kaydırırken davranış." ++ ++#: Settings.ui.h:204 ++msgid "Cycle windows" ++msgstr "Pencere döngüsü" ++ ++#: Settings.ui.h:206 ++msgid "Use hotkeys to activate apps" ++msgstr "Uygulamaları etkinleştirmek için kısayol tuşlarını kullan" ++ ++#: Settings.ui.h:207 ++msgid "Action" ++msgstr "Eylem" ++ ++#: Settings.ui.h:208 ++msgid "" ++"Tray Font Size\n" ++"(0 = theme default)" ++msgstr "" ++"Simge Font Boyutu\n" ++"(0 = varsayılan)" ++ ++#: Settings.ui.h:210 ++msgid "" ++"LeftBox Font Size\n" ++"(0 = theme default)" ++msgstr "" ++"SolKutu Yazı Boyutu\n" ++"(0 = varsayılan)" ++ ++#: Settings.ui.h:212 ++msgid "" ++"Tray Item Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"Simge Dolgusu\n" ++"(-1 = varsayılan)" ++ ++#: Settings.ui.h:214 ++msgid "" ++"Status Icon Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"Durum Simge Dolgusu\n" ++"(-1 = varsayılan)" ++ ++#: Settings.ui.h:216 ++msgid "" ++"LeftBox Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"SolKutu Dolgusu\n" ++"(-1 = varsayılan)" ++ ++#: Settings.ui.h:218 ++msgid "Animate switching applications" ++msgstr "Uygulama geçişlerinde canlandırma kullan" ++ ++#: Settings.ui.h:219 ++msgid "Animate launching new windows" ++msgstr "Açılan pencerelerde canlandırma kullan" ++ ++#: Settings.ui.h:220 ++msgid "Keep original gnome-shell dash (overview)" ++msgstr "Orijinal gnome-shell rıhtımını kullan (genel bakış)" ++ ++#: Settings.ui.h:221 ++msgid "Activate panel menu buttons (e.g. date menu) on click only" ++msgstr "" ++"Sadece tıklandığında panel menü düğmelerini (ör. tarih menüsü) etkinleştir" ++ ++#: Settings.ui.h:222 ++msgid "App icon secondary (right-click) menu" ++msgstr "Uygulama simgesi ikincil (sağ tık) menüsü" ++ ++#: Settings.ui.h:224 ++msgid "Fine-Tune" ++msgstr "İnce Ayarlar" ++ ++#: Settings.ui.h:226 ++msgid "GitHub" ++msgstr "GitHub" ++ ++#: Settings.ui.h:227 ++msgid "" ++"Use the buttons below to create a settings file from your current " ++"preferences that can be imported on a different machine." ++msgstr "" ++"Geçerli ayarlarınızı yedeklemek için aşağıdaki düğmeleri kullanın farklı bir " ++"makinede içe aktarılabilen tercihler." ++ ++#: Settings.ui.h:228 ++msgid "Export and import settings" ++msgstr "Ayarları içeri ve dışarı aktar" ++ ++#: Settings.ui.h:229 ++msgid "Export to file" ++msgstr "Dışarı aktar" ++ ++#: Settings.ui.h:230 ++msgid "Import from file" ++msgstr "İçeri aktar" ++ ++#: Settings.ui.h:231 ++msgid "" ++"This allows you to update the extension directly from the GitHub repository." ++msgstr "Bu, eklentiyi GitHub deposundan doğrudan güncellemenizi sağlar." ++ ++#: Settings.ui.h:232 ++msgid "Updates" ++msgstr "Güncellemeler" ++ ++#: Settings.ui.h:233 ++msgid "Periodically check for updates" ++msgstr "Güncellemeleri düzenli olarak kontrol et" ++ ++#: Settings.ui.h:234 ++msgid "Check now" ++msgstr "Şimdi kontrol et" ++ ++#: Settings.ui.h:235 ++msgid "" ++"Be aware, these official Dash to " ++"Panel releases might not be reviewed yet on extensions.gnome.org! Read more" ++msgstr "" ++"Unutmayın, Dash to Panel bültenleri " ++"extensions.gnome.org üstünde henüz hazır olmayabilir! Devamını oku" ++ + #~ msgid "Application" + #~ msgstr "Uygulama" + +@@ -1131,3 +2321,30 @@ msgstr "Bağlı sürücüleri masaüstünde göster." + + #~ msgid "OK" + #~ msgstr "Tamam" ++ ++#~ msgid "Highlight color" ++#~ msgstr "Arka ışık rengi" ++ ++#~ msgid "Preview timeout on icon leave (ms)" ++#~ msgstr "Önizleme zaman aşımı simgesi (ms)" ++ ++#~ msgid "" ++#~ "If set too low, the window preview of running applications may seem to " ++#~ "close too quickly when trying to enter the popup. If set too high, the " ++#~ "preview may linger too long when moving to an adjacent icon." ++#~ msgstr "" ++#~ "Çok düşük ayarlanırsa, çalışan uygulamaların pencere önizlemesi kapanıyor " ++#~ "gibi görünebilir hızlı açılır pencere. Çok yüksek ayarlarsanız, önizleme " ++#~ "olabilir bitişik bir simgeye taşınırken çok uzun süre bekler." ++ ++#~ msgid "Middle click to close window" ++#~ msgstr "Pencereyi kapatmak için orta tık" ++ ++#~ msgid "Width of the window previews (px)" ++#~ msgstr "Pencere önizleme genişliği (piksel)" ++ ++#~ msgid "Height of the window previews (px)" ++#~ msgstr "Pencere önizleme yüksekliği (piksel)" ++ ++#~ msgid "Padding of the window previews (px)" ++#~ msgstr "Pencere önizleme dolgusu (piksel)" +diff --git a/po/uk.po b/po/uk.po +index a73dceec..0a2b4114 100644 +--- a/po/uk.po ++++ b/po/uk.po +@@ -1,4 +1,5 @@ + # #-#-#-#-# uk.po (gnome-shell-extensions master) #-#-#-#-# ++# #-#-#-#-# uk.po (gnome-shell-extensions master) #-#-#-#-# + # Ukrainian translation for gnome-shell-extensions. + # Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER + # This file is distributed under the same license as the gnome-shell-extensions package. +@@ -12,10 +13,17 @@ + # This file is distributed under the same license as the desktop-icons package. + # + # Yuri Chornoivan , 2020. ++# #-#-#-#-# uk.po #-#-#-#-# ++# 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. ++# + #, fuzzy + msgid "" + msgstr "" + "#-#-#-#-# uk.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"#-#-#-#-# uk.po (gnome-shell-extensions master) #-#-#-#-#\n" + "Project-Id-Version: gnome-shell-extensions master\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/" + "issues\n" +@@ -27,8 +35,8 @@ msgstr "" + "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" ++"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: Lokalize 20.07.70\n" + "X-Project-Style: gnome\n" + "#-#-#-#-# uk.po (desktop-icons master) #-#-#-#-#\n" +@@ -43,9 +51,23 @@ msgstr "" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +-"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" +-"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" ++"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : " ++"n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + "X-Generator: Lokalize 20.07.70\n" ++"#-#-#-#-# uk.po #-#-#-#-#\n" ++"Project-Id-Version: \n" ++"Report-Msgid-Bugs-To: \n" ++"POT-Creation-Date: 2017-03-25 11:55+0100\n" ++"PO-Revision-Date: 2017-12-04 18:43+0200\n" ++"Language-Team: \n" ++"MIME-Version: 1.0\n" ++"Content-Type: text/plain; charset=UTF-8\n" ++"Content-Transfer-Encoding: 8bit\n" ++"X-Generator: Poedit 2.0.4\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" ++"Last-Translator: Alice Charlotte Liddell \n" ++"Language: uk\n" + + #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3 + msgid "GNOME Classic" +@@ -488,6 +510,443 @@ msgstr "Показувати змонтовані диски" + msgid "Show mounted drives in the desktop." + msgstr "Показувати змонтовані диски на стільниці." + ++#: appIcons.js:937 ++#, fuzzy ++msgid "New Window" ++msgstr "" ++"#-#-#-#-# uk.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"Створити вікно\n" ++"#-#-#-#-# uk.po #-#-#-#-#\n" ++"Нове вікно" ++ ++#: prefs.js:213 ++msgid "Running Indicator Options" ++msgstr "Налаштування індикатора роботи" ++ ++#: prefs.js:220 prefs.js:380 prefs.js:445 prefs.js:511 prefs.js:553 ++msgid "Reset to defaults" ++msgstr "Скинути налаштвання" ++ ++#: prefs.js:373 ++msgid "Customize middle-click behavior" ++msgstr "Налаштувати поведінку при середньому кліку" ++ ++#: prefs.js:438 ++msgid "Advanced hotkeys options" ++msgstr "Розширені налаштування гарячих клавіш" ++ ++#: prefs.js:504 ++msgid "Secondary Menu Options" ++msgstr "Налаштування другорядних меню" ++ ++#: prefs.js:546 Settings.ui.h:85 ++msgid "Advanced Options" ++msgstr "Розширені налаштування" ++ ++#: appIcons.js:918 ++msgid "Show Details" ++msgstr "Детальніше" ++ ++#: appIcons.js:937 appIcons.js:998 appIcons.js:1000 Settings.ui.h:8 ++msgid "Quit" ++msgstr "Вийти" ++ ++#: appIcons.js:1000 ++msgid "Windows" ++msgstr "Вікна" ++ ++#: appIcons.js:1159 ++msgid "Dash to Panel Settings" ++msgstr "Налаштування Dash to Panel" ++ ++#: appIcons.js:1166 ++msgid "Restore Windows" ++msgstr "Відновити вікна" ++ ++#: appIcons.js:1166 ++msgid "Show Desktop" ++msgstr "Показати стільницю" ++ ++#: Settings.ui.h:1 ++msgid "" ++"When set to minimize, double clicking minimizes all the windows of the " ++"application." ++msgstr "" ++"За активної опції згортання вікон, подвійне клацання згорне всі вікна " ++"застосунку." ++ ++#: Settings.ui.h:2 ++msgid "Shift+Click action" ++msgstr "Дія при натисканні Shift+Клік" ++ ++#: Settings.ui.h:3 ++msgid "Raise window" ++msgstr "Розгорнути вікно" ++ ++#: Settings.ui.h:4 ++msgid "Minimize window" ++msgstr "Згорнути вікно" ++ ++#: Settings.ui.h:5 ++msgid "Launch new instance" ++msgstr "Запустити нову копію програми" ++ ++#: Settings.ui.h:6 ++msgid "Cycle through windows" ++msgstr "Прокрутка вікон" ++ ++#: Settings.ui.h:7 ++msgid "Cycle windows + minimize" ++msgstr "Прокрутка та згортання вікон" ++ ++#: Settings.ui.h:9 ++msgid "Behavior for Middle-Click." ++msgstr "Поведінка при середньому кліку" ++ ++#: Settings.ui.h:10 ++msgid "Middle-Click action" ++msgstr "Дія при середньому кліку" ++ ++#: Settings.ui.h:11 ++msgid "Behavior for Shift+Middle-Click." ++msgstr "Поведінка при Shift+Середній клік" ++ ++#: Settings.ui.h:12 ++msgid "Shift+Middle-Click action" ++msgstr "Дія при Shift+Середній клік" ++ ++#: Settings.ui.h:13 ++msgid "Integrate AppMenu items" ++msgstr "Вбудувати пункти Меню" ++ ++#: Settings.ui.h:14 ++msgid "Show Details menu item" ++msgstr "Пункт меню Детальніше" ++ ++#: Settings.ui.h:15 ++msgid "Highlight focused application" ++msgstr "Підсвічувати застосунок у фокусі" ++ ++#: Settings.ui.h:16 ++msgid "Height (px)" ++msgstr "Висота (пікселів)" ++ ++#: Settings.ui.h:17 ++msgid "0" ++msgstr "0" ++ ++#: Settings.ui.h:18 ++msgid "Color - Override Theme" ++msgstr "Колір - Використовувати власну палітру" ++ ++#: Settings.ui.h:19 ++msgid "1 window open" ++msgstr "1 відкрите вікно" ++ ++#: Settings.ui.h:20 ++msgid "Apply to all" ++msgstr "Застосувати для всіх" ++ ++#: Settings.ui.h:21 ++msgid "2 windows open" ++msgstr "2 відкритих вікна" ++ ++#: Settings.ui.h:22 ++msgid "3 windows open" ++msgstr "3 відкритих вікна" ++ ++#: Settings.ui.h:23 ++msgid "4+ windows open" ++msgstr "4 та більше відкритих вікон" ++ ++#: Settings.ui.h:24 ++msgid "Use different for unfocused" ++msgstr "Використовувати інший набір для вікон не у фокусі" ++ ++#: Settings.ui.h:25 ++msgid "Preview timeout on icon leave (ms)" ++msgstr "Показувати ескіз ще (мс) після прибирання курсору миші" ++ ++#: Settings.ui.h:26 ++msgid "" ++"If set too low, the window preview of running applications may seem to close " ++"too quickly when trying to enter the popup. If set too high, the preview may " ++"linger too long when moving to an adjacent icon." ++msgstr "" ++"За надто малих значень ескізи вікон застосунків можуть зникати надто швидко " ++"навіть для спроби переведення курсору з панелі на виринаючий контейнер з " ++"ескізами, але якщо значення зависоке, ескіз може ще довго висіти при " ++"переході на суміжну піктограму." ++ ++#: Settings.ui.h:27 ++msgid "Super" ++msgstr "Super" ++ ++#: Settings.ui.h:28 ++msgid "Super + Alt" ++msgstr "Super + Alt" ++ ++#: Settings.ui.h:29 ++msgid "Hotkeys prefix" ++msgstr "Префікс гарячих клавіш" ++ ++#: Settings.ui.h:30 ++msgid "Hotkeys will either be Super+Number or Super+Alt+Num" ++msgstr "Гарячі клавіші будуть Super+Число, або Super+Alt+Num" ++ ++#: Settings.ui.h:31 ++msgid "Number overlay" ++msgstr "Комірки з номерами" ++ ++#: Settings.ui.h:32 ++msgid "" ++"Temporarily show the application numbers over the icons when using the " ++"hotkeys." ++msgstr "" ++"Тимчасово показувати порядкові номери застосунків над їх піктограмами за " ++"використання гарячих клавіш." ++ ++#: Settings.ui.h:33 ++msgid "Hide timeout (ms)" ++msgstr "Час зникнення (мс)" ++ ++#: Settings.ui.h:34 ++msgid "Shortcut to show the overlay for 2 seconds" ++msgstr "Комбінація для двосекундного показу комірок" ++ ++#: Settings.ui.h:35 ++msgid "Syntax: , , , " ++msgstr "Синтаксис: , , , " ++ ++#: Settings.ui.h:36 ++msgid "Panel screen position" ++msgstr "Розташування панелі на екрані" ++ ++#: Settings.ui.h:37 ++msgid "Bottom" ++msgstr "Знизу" ++ ++#: Settings.ui.h:38 ++msgid "Top" ++msgstr "Вгорі" ++ ++#: Settings.ui.h:39 ++msgid "" ++"Panel Size\n" ++"(default is 48)" ++msgstr "" ++"Розмір панелі\n" ++"(48 за замовчуванням)" ++ ++#: Settings.ui.h:41 ++msgid "" ++"App Icon Margin\n" ++"(default is 8)" ++msgstr "" ++"Проміжок між піктограмами\n" ++"(8 за замовчуванням)" ++ ++#: Settings.ui.h:43 ++msgid "Running indicator position" ++msgstr "Розташування індикатора роботи" ++ ++#: Settings.ui.h:44 ++msgid "Running indicator style (Focused app)" ++msgstr "Вигляд індикатора роботи" ++ ++#: Settings.ui.h:45 ++msgid "Dots" ++msgstr "Крапки" ++ ++#: Settings.ui.h:46 ++msgid "Squares" ++msgstr "Квадрати" ++ ++#: Settings.ui.h:47 ++msgid "Dashes" ++msgstr "Рисочки" ++ ++#: Settings.ui.h:48 ++msgid "Segmented" ++msgstr "Сегментований" ++ ++#: Settings.ui.h:49 ++msgid "Solid" ++msgstr "Цільний" ++ ++#: Settings.ui.h:50 ++msgid "Ciliora" ++msgstr "Ciliora" ++ ++#: Settings.ui.h:51 ++msgid "Metro" ++msgstr "Metro" ++ ++#: Settings.ui.h:52 ++msgid "Running indicator style (Unfocused apps)" ++msgstr "Вигляд індикатора роботи (Не в фокусі)" ++ ++#: Settings.ui.h:53 ++msgid "Clock location" ++msgstr "Розташування годинника" ++ ++#: Settings.ui.h:54 ++msgid "Natural" ++msgstr "За замовчуванням" ++ ++#: Settings.ui.h:55 ++msgid "Left of status menu" ++msgstr "Ліворуч від рядку стану" ++ ++#: Settings.ui.h:56 ++msgid "Right of status menu" ++msgstr "Праворуч від рядку стану" ++ ++#: Settings.ui.h:57 ++msgid "Position and Style" ++msgstr "Стиль і розташування" ++ ++#: Settings.ui.h:58 ++msgid "Show Applications icon" ++msgstr "Піктограма Всі Застосунки" ++ ++#: Settings.ui.h:59 ++msgid "Animate Show Applications." ++msgstr "Анімувати Всі Застосунки." ++ ++#: Settings.ui.h:60 ++msgid "Show Activities button" ++msgstr "Показувати кнопку Діяльність" ++ ++#: Settings.ui.h:61 ++msgid "Show Desktop button" ++msgstr "Показувати кнопку Стільниця" ++ ++#: Settings.ui.h:62 ++msgid "Show AppMenu button" ++msgstr "Показувати кнопку Застосунки" ++ ++#: Settings.ui.h:63 ++msgid "Top Bar > Show App Menu must be enabled in Tweak Tool" ++msgstr "" ++"Панель Завдань > Опція \"Показувати Меню Застосунків\" має бути увімкнена у " ++"Tweak Tool" ++ ++#: Settings.ui.h:64 ++msgid "Show window previews on hover" ++msgstr "Показувати виринаючі ескізи вікон при наведенні миші" ++ ++#: Settings.ui.h:65 ++msgid "Time (ms) before showing (100 is default)" ++msgstr "Затримка (мс) перед показом (100 за замовчуванням)" ++ ++#: Settings.ui.h:66 ++msgid "Isolate Workspaces" ++msgstr "Ізолювати стільниці" ++ ++#: Settings.ui.h:67 ++msgid "Behaviour when clicking on the icon of a running application." ++msgstr "Дія при кліку по піктограмі запущеного застосунку" ++ ++#: Settings.ui.h:68 ++msgid "Click action" ++msgstr "Дія при кліку" ++ ++#: Settings.ui.h:69 ++msgid "" ++"Enable Super+(0-9) as shortcuts to activate apps. It can also be used " ++"together with Shift and Ctrl." ++msgstr "" ++"Зробити Super+(0-9) клавішами швидкого запуску застосунків. Також може " ++"використовуватись з Shift та Ctrl." ++ ++#: Settings.ui.h:70 ++msgid "Use hotkeys to activate apps" ++msgstr "Використовувати гарячі клавіші для запуску улюблених застосунків" ++ ++#: Settings.ui.h:71 ++msgid "Behavior" ++msgstr "Поведінка" ++ ++#: Settings.ui.h:72 ++msgid "" ++"Tray Font Size\n" ++"(0 = theme default)" ++msgstr "" ++"Розмір шрифту у панелі\n" ++"(0 = визначено темою)" ++ ++#: Settings.ui.h:74 ++msgid "" ++"LeftBox Font Size\n" ++"(0 = theme default)" ++msgstr "" ++"Розмір шрифту LeftBox\n" ++"(0 = визначено темою)" ++ ++#: Settings.ui.h:76 ++msgid "" ++"Tray Item Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"Проміжки між об’єктами лотка\n" ++"(-1 = визначено темою)" ++ ++#: Settings.ui.h:78 ++msgid "" ++"Status Icon Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"Проміжки в рядку стану\n" ++"(-1 = визначено тамою)" ++ ++#: Settings.ui.h:80 ++msgid "" ++"LeftBox Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"Проміжок зліва\n" ++"(-1 = визначено темою)" ++ ++#: Settings.ui.h:82 ++msgid "Animate switching applications" ++msgstr "Анімувати перемикання між застосунками" ++ ++#: Settings.ui.h:83 ++msgid "Animate launching new windows" ++msgstr "Анімувати запуск нових вікон" ++ ++#: Settings.ui.h:84 ++msgid "App icon secondary (right-click) menu" ++msgstr "Контекстне меню піктограм застосунків" ++ ++#: Settings.ui.h:86 ++msgid "Fine-Tune" ++msgstr "Тонке налаштування" ++ ++#: Settings.ui.h:87 ++msgid "version: " ++msgstr "версія:" ++ ++#: Settings.ui.h:88 ++msgid "Github" ++msgstr "GitHub" ++ ++#: Settings.ui.h:89 ++msgid "" ++"This program comes with ABSOLUTELY NO WARRANTY.\n" ++"See the GNU General Public License, version 2 or later for details." ++msgstr "" ++"Автор програми не надає ЖОДНИХ ГАРАНТІЙ.\n" ++"Перегляньте GNU General Public License, version 2 or later, щоб дізнатися " ++"більше." ++ ++#: Settings.ui.h:91 ++msgid "About" ++msgstr "Про програму" ++ + #~ msgid "Application" + #~ msgstr "Програма" + +@@ -680,9 +1139,6 @@ msgstr "Показувати змонтовані диски на стільни + #~ msgid "Drag here to add favorites" + #~ msgstr "Перетягніть, щоб додати в улюблене" + +-#~ msgid "New Window" +-#~ msgstr "Створити вікно" +- + #~ msgid "Remove from Favorites" + #~ msgstr "Вилучити з улюбленого" + +diff --git a/po/zh_CN.po b/po/zh_CN.po +index 69e6fcbf..14557732 100644 +--- a/po/zh_CN.po ++++ b/po/zh_CN.po +@@ -1,5 +1,6 @@ + # #-#-#-#-# zh_CN.po (gnome-shell-extensions master) #-#-#-#-# + # #-#-#-#-# zh_CN.po (gnome-shell-extensions master) #-#-#-#-# ++# #-#-#-#-# zh_CN.po (gnome-shell-extensions master) #-#-#-#-# + # Chinese (China) translation for gnome-shell-extensions. + # Copyright (C) 2011-2019 gnome-shell-extensions's authors and contributors + # This file is distributed under the same license as the gnome-shell-extensions package. +@@ -24,11 +25,17 @@ + # This file is distributed under the same license as the desktop-icons package. + # Dingzhong Chen , 2019. + # ++# #-#-#-#-# zh_CN.po (dash-to-panel 24) #-#-#-#-# ++# Dash to Panel Simplified Chinese Translation. ++# This file is distributed under the same license as the Dash to Panel package. ++# Boyuan Yang <073plan@gmail.com>, 2017, 2018, 2019. ++# + #, fuzzy + msgid "" + msgstr "" + "#-#-#-#-# zh_CN.po (gnome-shell-extensions master) #-#-#-#-#\n" + "#-#-#-#-# zh_CN.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"#-#-#-#-# zh_CN.po (gnome-shell-extensions master) #-#-#-#-#\n" + "Project-Id-Version: gnome-shell-extensions master\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/" + "issues\n" +@@ -69,6 +76,19 @@ msgstr "" + "Content-Transfer-Encoding: 8bit\n" + "X-Generator: Poedit 2.3.1\n" + "Plural-Forms: nplurals=1; plural=0;\n" ++"#-#-#-#-# zh_CN.po (dash-to-panel 24) #-#-#-#-#\n" ++"Project-Id-Version: dash-to-panel 24\n" ++"Report-Msgid-Bugs-To: \n" ++"POT-Creation-Date: 2021-07-10 18:36+0800\n" ++"PO-Revision-Date: 2021-07-11 12:04+0800\n" ++"Last-Translator: mars <18466397+zhmars@users.noreply.github.com>\n" ++"Language-Team: Chinese (Simplified) \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" + + #: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3 + msgid "GNOME Classic" +@@ -303,25 +323,15 @@ msgstr "工作区 %d" + msgid "Add Workspace" + msgstr "添加工作区" + +-#: prefs.js:310 Settings.ui.h:25 +-#, fuzzy ++#: prefs.js:270 Settings.ui.h:171 + msgid "Left" +-msgstr "" +-"#-#-#-#-# zh_CN.po (gnome-shell-extensions master) #-#-#-#-#\n" +-"左\n" +-"#-#-#-#-# zh_CN.po (Dash to Dock) #-#-#-#-#\n" +-"左侧" ++msgstr "左侧" + +-#: prefs.js:309 Settings.ui.h:28 +-#, fuzzy ++#: prefs.js:272 Settings.ui.h:172 + msgid "Right" +-msgstr "" +-"#-#-#-#-# zh_CN.po (gnome-shell-extensions master) #-#-#-#-#\n" +-"右\n" +-"#-#-#-#-# zh_CN.po (Dash to Dock) #-#-#-#-#\n" +-"右侧" ++msgstr "右侧" + +-#: prefs.js:268 ++#: prefs.js:268 prefs.js:889 + msgid "Primary monitor" + msgstr "主显示器" + +@@ -333,15 +343,23 @@ msgstr "副显示器" + msgid "Intelligent autohide customization" + msgstr "智能自动隐藏自定义" + +-#: prefs.js:367 prefs.js:560 prefs.js:616 ++#: prefs.js:367 prefs.js:560 prefs.js:616 prefs.js:447 prefs.js:512 ++#: prefs.js:732 prefs.js:1078 prefs.js:1222 prefs.js:1345 prefs.js:1634 ++#: prefs.js:1730 prefs.js:1796 prefs.js:1840 prefs.js:1938 prefs.js:1973 ++#: prefs.js:2016 prefs.js:2152 ++#, fuzzy + msgid "Reset to defaults" +-msgstr "重置为默认值" ++msgstr "" ++"#-#-#-#-# zh_CN.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"重置为默认值\n" ++"#-#-#-#-# zh_CN.po (dash-to-panel 24) #-#-#-#-#\n" ++"恢复默认值" + + #: prefs.js:553 + msgid "Show dock and application numbers" + msgstr "显示 Dock 和应用程序编号" + +-#: prefs.js:609 ++#: prefs.js:609 prefs.js:1723 + msgid "Customize middle-click behavior" + msgstr "自定义中键点击行为" + +@@ -384,13 +402,18 @@ msgstr "弹出" + msgid "Unmount" + msgstr "卸载" + +-#: Settings.ui.h:1 ++#: Settings.ui.h:1 Settings.ui.h:12 ++#, fuzzy + msgid "" + "When set to minimize, double clicking minimizes all the windows of the " + "application." +-msgstr "当设置为最小化时,双击会最小化应用程序的所有窗口。" ++msgstr "" ++"#-#-#-#-# zh_CN.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"当设置为最小化时,双击会最小化应用程序的所有窗口。\n" ++"#-#-#-#-# zh_CN.po (dash-to-panel 24) #-#-#-#-#\n" ++"设置为最小化时,双击将最小化该应用程序的所有窗口。" + +-#: Settings.ui.h:2 ++#: Settings.ui.h:2 Settings.ui.h:13 + msgid "Shift+Click action" + msgstr "Shift+点击动作" + +@@ -398,17 +421,22 @@ msgstr "Shift+点击动作" + msgid "Raise window" + msgstr "提升窗口" + +-#: Settings.ui.h:4 ++#: Settings.ui.h:4 Settings.ui.h:15 + msgid "Minimize window" + msgstr "最小化窗口" + +-#: Settings.ui.h:5 ++#: Settings.ui.h:5 Settings.ui.h:16 + msgid "Launch new instance" + msgstr "启动新实例" + +-#: Settings.ui.h:6 ++#: Settings.ui.h:6 Settings.ui.h:17 ++#, fuzzy + msgid "Cycle through windows" +-msgstr "在窗口间循环" ++msgstr "" ++"#-#-#-#-# zh_CN.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"在窗口间循环\n" ++"#-#-#-#-# zh_CN.po (dash-to-panel 24) #-#-#-#-#\n" ++"在窗口间循环切换" + + #: Settings.ui.h:7 + msgid "Minimize or overview" +@@ -426,23 +454,29 @@ msgstr "最小化或显示预览" + msgid "Focus or show previews" + msgstr "聚焦或显示预览" + +-#: Settings.ui.h:11 ++#: Settings.ui.h:11 appIcons.js:1510 appIcons.js:1570 appIcons.js:1572 ++#: Settings.ui.h:21 + msgid "Quit" + msgstr "退出" + +-#: Settings.ui.h:12 ++#: Settings.ui.h:12 Settings.ui.h:22 ++#, fuzzy + msgid "Behavior for Middle-Click." +-msgstr "中键点击的行为。" ++msgstr "" ++"#-#-#-#-# zh_CN.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"中键点击的行为。\n" ++"#-#-#-#-# zh_CN.po (dash-to-panel 24) #-#-#-#-#\n" ++"中键点击行为。" + +-#: Settings.ui.h:13 ++#: Settings.ui.h:13 Settings.ui.h:23 + msgid "Middle-Click action" + msgstr "中键点击动作" + +-#: Settings.ui.h:14 ++#: Settings.ui.h:14 Settings.ui.h:24 + msgid "Behavior for Shift+Middle-Click." + msgstr "Shift+中键点击的行为。" + +-#: Settings.ui.h:15 ++#: Settings.ui.h:15 Settings.ui.h:25 + msgid "Shift+Middle-Click action" + msgstr "Shift+中键点击动作" + +@@ -482,11 +516,11 @@ msgstr "所有显示器上都显示" + msgid "Position on screen" + msgstr "屏幕中的位置" + +-#: Settings.ui.h:26 ++#: Settings.ui.h:26 prefs.js:276 Settings.ui.h:105 + msgid "Bottom" + msgstr "底部" + +-#: Settings.ui.h:27 ++#: Settings.ui.h:27 prefs.js:274 Settings.ui.h:106 + msgid "Top" + msgstr "顶部" + +@@ -522,11 +556,11 @@ msgstr "固定图标大小:滚动显示其它图标" + msgid "Position and size" + msgstr "位置和大小" + +-#: Settings.ui.h:36 ++#: Settings.ui.h:36 Settings.ui.h:199 + msgid "Show favorite applications" + msgstr "显示收藏的应用程序" + +-#: Settings.ui.h:37 ++#: Settings.ui.h:37 Settings.ui.h:200 + msgid "Show running applications" + msgstr "显示正在运行的应用程序" + +@@ -549,16 +583,26 @@ msgid "" + msgstr "禁用之后,可以通过 gnome-tweak-tool 或者扩展网站来访问这些设置。" + + #: Settings.ui.h:42 ++#, fuzzy + msgid "Show Applications icon" +-msgstr "显示 应用程序 图标" ++msgstr "" ++"#-#-#-#-# zh_CN.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"显示 应用程序 图标\n" ++"#-#-#-#-# zh_CN.po (dash-to-panel 24) #-#-#-#-#\n" ++"显示应用图标" + + #: Settings.ui.h:43 + msgid "Move the applications button at the beginning of the dock." + msgstr "将应用程序图标移至 Dock 的起始位置" + + #: Settings.ui.h:44 ++#, fuzzy + msgid "Animate Show Applications." +-msgstr "动画方式 显示应用程序" ++msgstr "" ++"#-#-#-#-# zh_CN.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"动画方式 显示应用程序\n" ++"#-#-#-#-# zh_CN.po (dash-to-panel 24) #-#-#-#-#\n" ++"动画化显示应用程序。" + + #: Settings.ui.h:45 + msgid "Show trash can" +@@ -572,23 +616,38 @@ msgstr "显示挂载卷和设备" + msgid "Launchers" + msgstr "启动器" + +-#: Settings.ui.h:48 ++#: Settings.ui.h:48 Settings.ui.h:224 ++#, fuzzy + msgid "" + "Enable Super+(0-9) as shortcuts to activate apps. It can also be used " + "together with Shift and Ctrl." +-msgstr "启用 Super+(0-9) 作为快捷键来激活应用。也可与 Shift 和 Ctrl 一起使用。" ++msgstr "" ++"#-#-#-#-# zh_CN.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"启用 Super+(0-9) 作为快捷键来激活应用。也可与 Shift 和 Ctrl 一起使用。\n" ++"#-#-#-#-# zh_CN.po (dash-to-panel 24) #-#-#-#-#\n" ++"将 Super+(0-9) 作为激活应用程序的快捷键。它也可以和 Shift 或 Ctrl 共同使用。" + + #: Settings.ui.h:49 + msgid "Use keyboard shortcuts to activate apps" + msgstr "使用键盘快捷键激活应用" + +-#: Settings.ui.h:50 ++#: Settings.ui.h:50 Settings.ui.h:212 ++#, fuzzy + msgid "Behaviour when clicking on the icon of a running application." +-msgstr "点击一个正在运行的应用程序图标时的行为。" ++msgstr "" ++"#-#-#-#-# zh_CN.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"点击一个正在运行的应用程序图标时的行为。\n" ++"#-#-#-#-# zh_CN.po (dash-to-panel 24) #-#-#-#-#\n" ++"点击正在运行应用程序图标时的行为。" + +-#: Settings.ui.h:51 ++#: Settings.ui.h:51 Settings.ui.h:213 ++#, fuzzy + msgid "Click action" +-msgstr "点击动作" ++msgstr "" ++"#-#-#-#-# zh_CN.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"点击动作\n" ++"#-#-#-#-# zh_CN.po (dash-to-panel 24) #-#-#-#-#\n" ++"点击行为" + + #: Settings.ui.h:53 + msgid "Behaviour when scrolling on the icon of an application." +@@ -598,17 +657,27 @@ msgstr "在一个应用程序图标上滚动时的行为。" + msgid "Scroll action" + msgstr "滚动动作" + +-#: Settings.ui.h:55 ++#: Settings.ui.h:55 Settings.ui.h:219 ++#, fuzzy + msgid "Do nothing" +-msgstr "无动作" ++msgstr "" ++"#-#-#-#-# zh_CN.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"无动作\n" ++"#-#-#-#-# zh_CN.po (dash-to-panel 24) #-#-#-#-#\n" ++"什么也不做" + +-#: Settings.ui.h:56 ++#: Settings.ui.h:56 Settings.ui.h:220 + msgid "Switch workspace" + msgstr "切换工作区" + +-#: Settings.ui.h:57 ++#: Settings.ui.h:57 Settings.ui.h:211 ++#, fuzzy + msgid "Behavior" +-msgstr "行为" ++msgstr "" ++"#-#-#-#-# zh_CN.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"行为\n" ++"#-#-#-#-# zh_CN.po (dash-to-panel 24) #-#-#-#-#\n" ++"习惯" + + #: Settings.ui.h:58 + msgid "" +@@ -638,33 +707,53 @@ msgstr "显示窗口个数指示器" + msgid "Default" + msgstr "默认" + +-#: Settings.ui.h:64 ++#: Settings.ui.h:64 Settings.ui.h:178 ++#, fuzzy + msgid "Dots" +-msgstr "圆点" ++msgstr "" ++"#-#-#-#-# zh_CN.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"圆点\n" ++"#-#-#-#-# zh_CN.po (dash-to-panel 24) #-#-#-#-#\n" ++"点" + +-#: Settings.ui.h:65 ++#: Settings.ui.h:65 Settings.ui.h:179 ++#, fuzzy + msgid "Squares" +-msgstr "正方形" ++msgstr "" ++"#-#-#-#-# zh_CN.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"正方形\n" ++"#-#-#-#-# zh_CN.po (dash-to-panel 24) #-#-#-#-#\n" ++"方块" + +-#: Settings.ui.h:66 ++#: Settings.ui.h:66 Settings.ui.h:180 ++#, fuzzy + msgid "Dashes" +-msgstr "破折号" ++msgstr "" ++"#-#-#-#-# zh_CN.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"破折号\n" ++"#-#-#-#-# zh_CN.po (dash-to-panel 24) #-#-#-#-#\n" ++"横线" + +-#: Settings.ui.h:67 ++#: Settings.ui.h:67 Settings.ui.h:181 ++#, fuzzy + msgid "Segmented" +-msgstr "分段" ++msgstr "" ++"#-#-#-#-# zh_CN.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"分段\n" ++"#-#-#-#-# zh_CN.po (dash-to-panel 24) #-#-#-#-#\n" ++"间断线" + +-#: Settings.ui.h:68 ++#: Settings.ui.h:182 + msgid "Solid" +-msgstr "" ++msgstr "实心" + +-#: Settings.ui.h:69 ++#: Settings.ui.h:183 + msgid "Ciliora" +-msgstr "" ++msgstr "Ciliora" + +-#: Settings.ui.h:70 ++#: Settings.ui.h:184 + msgid "Metro" +-msgstr "" ++msgstr "Metro" + + #: Settings.ui.h:71 + msgid "Set the background color for the dash." +@@ -678,7 +767,7 @@ msgstr "自定义 Dash 颜色" + msgid "Tune the dash background opacity." + msgstr "调整 Dash 的背景不透明度。" + +-#: Settings.ui.h:75 ++#: Settings.ui.h:75 Settings.ui.h:100 + msgid "Fixed" + msgstr "固定" + +@@ -698,9 +787,14 @@ msgstr "强制边框直角" + msgid "Appearance" + msgstr "外观" + +-#: Settings.ui.h:80 ++#: Settings.ui.h:80 Settings.ui.h:241 ++#, fuzzy + msgid "version: " +-msgstr "版本:" ++msgstr "" ++"#-#-#-#-# zh_CN.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"版本:\n" ++"#-#-#-#-# zh_CN.po (dash-to-panel 24) #-#-#-#-#\n" ++"版本: " + + #: Settings.ui.h:81 + msgid "Moves the dash out of the overview transforming it in a dock" +@@ -717,14 +811,14 @@ msgstr "网站主页" + #: Settings.ui.h:84 + msgid "" + "This program comes with ABSOLUTELY NO WARRANTY.\n" +-"See the GNU General Public License, version 2 or later for details." ++"See the GNU General Public License, version 2 or later for details." + msgstr "" + "本程序不提供任何担保。\n" + "参见 GNU " + "通用公共许可证,第二版或更高版本以了解更多细节。" + +-#: Settings.ui.h:86 ++#: Settings.ui.h:86 Settings.ui.h:248 + msgid "About" + msgstr "关于" + +@@ -740,9 +834,14 @@ msgstr "最小化不透明度" + msgid "Maximum opacity" + msgstr "最大化不透明度" + +-#: Settings.ui.h:90 ++#: Settings.ui.h:90 Settings.ui.h:132 ++#, fuzzy + msgid "Number overlay" +-msgstr "编号覆盖" ++msgstr "" ++"#-#-#-#-# zh_CN.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"编号覆盖\n" ++"#-#-#-#-# zh_CN.po (dash-to-panel 24) #-#-#-#-#\n" ++"数字附加显示" + + #: Settings.ui.h:91 + msgid "" +@@ -764,9 +863,14 @@ msgstr "如果使用了自动隐藏,Dock 将在触发快捷键时短暂显示 + msgid "Shortcut for the options above" + msgstr "以上选项的快捷键" + +-#: Settings.ui.h:95 ++#: Settings.ui.h:95 Settings.ui.h:67 ++#, fuzzy + msgid "Syntax: , , , " +-msgstr "语法:" ++msgstr "" ++"#-#-#-#-# zh_CN.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"语法:\n" ++"#-#-#-#-# zh_CN.po (dash-to-panel 24) #-#-#-#-#\n" ++"语法:, , , " + + #: Settings.ui.h:96 + msgid "Hide timeout (s)" +@@ -796,7 +900,7 @@ msgstr "在不妨碍应用程序窗口时,显示 Dock。" + msgid "Dodge windows" + msgstr "避开窗口" + +-#: Settings.ui.h:103 ++#: Settings.ui.h:103 Settings.ui.h:57 + msgid "All windows" + msgstr "所有窗口" + +@@ -920,7 +1024,7 @@ msgstr "在终端中打开" + msgid "Change Background…" + msgstr "更换壁纸…" + +-#: desktopGrid.js:360 ++#: desktopGrid.js:360 appIcons.js:1913 + msgid "Settings" + msgstr "设置" + +@@ -1004,206 +1108,1323 @@ msgstr "显示已挂载的驱动器" + msgid "Show mounted drives in the desktop." + msgstr "在桌面上显示已挂载的驱动器。" + +-#~ msgid "Application" +-#~ msgstr "应用程序" ++#: appIcons.js:1510 ++#, fuzzy ++msgid "New Window" ++msgstr "" ++"#-#-#-#-# zh_CN.po (gnome-shell-extensions master) #-#-#-#-#\n" ++"新窗口\n" ++"#-#-#-#-# zh_CN.po (dash-to-panel 24) #-#-#-#-#\n" ++"新建窗口" + +-#~ msgid "Create new matching rule" +-#~ msgstr "创建新的匹配规则" ++#: Settings.ui.h:79 ++msgid "1" ++msgstr "1" + +-#~ msgid "Add" +-#~ msgstr "添加" ++#: Settings.ui.h:80 ++msgid "2" ++msgstr "2" + +-#~ msgid "Name" +-#~ msgstr "名称" ++#: Settings.ui.h:81 ++msgid "3" ++msgstr "3" + +-#~ msgid "Attach modal dialog to the parent window" +-#~ msgstr "将模式对话框附着到父窗口" ++#: Settings.ui.h:82 ++msgid "4" ++msgstr "4" + +-#~ msgid "" +-#~ "This key overrides the key in org.gnome.mutter when running GNOME Shell." +-#~ msgstr "当运行 GNOME Shell 时该键会覆盖 org.gnome.mutter 中的键。" ++#: Settings.ui.h:94 ++msgid "16" ++msgstr "16" + +-#~ msgid "Arrangement of buttons on the titlebar" +-#~ msgstr "标题栏上按钮的排列" ++#: prefs.js:200 ++msgid "Show Desktop button height (px)" ++msgstr "“显示桌面”按钮图标高度(像素)" + +-#~ msgid "" +-#~ "This key overrides the key in org.gnome.desktop.wm.preferences when " +-#~ "running GNOME Shell." +-#~ msgstr "" +-#~ "当运行 GNOME Shell 时该键会覆盖 org.gnome.desktop.wm.preferences 中的键。" ++#: prefs.js:200 ++msgid "Show Desktop button width (px)" ++msgstr "“显示桌面”按钮图标宽度(像素)" + +-#~ msgid "Enable edge tiling when dropping windows on screen edges" +-#~ msgstr "启用将窗口拖拽到屏幕边缘时平铺显示的功能" ++#: prefs.js:212 ++msgid "Unavailable when gnome-shell top panel is present" ++msgstr "GNOME-Shell 顶部面板存在时不可用" + +-#~ msgid "Workspaces only on primary monitor" +-#~ msgstr "仅在主显示器上显示工作区" ++#: prefs.js:271 ++msgid "Center" ++msgstr "中间" + +-#~ msgid "Delay focus changes in mouse mode until the pointer stops moving" +-#~ msgstr "将鼠标模式下焦点的切换推迟到光标停止移动之后" ++#: prefs.js:275 prefs.js:280 Settings.ui.h:167 ++msgid "Middle" ++msgstr "中部" + +-#~ msgid "Thumbnail only" +-#~ msgstr "仅缩略图" ++#: prefs.js:279 Settings.ui.h:166 ++msgid "Start" ++msgstr "首部" + +-#~ msgid "Application icon only" +-#~ msgstr "仅应用程序图标" ++#: prefs.js:281 Settings.ui.h:168 ++msgid "End" ++msgstr "尾部" + +-#~ msgid "Thumbnail and application icon" +-#~ msgstr "缩略图和应用程序图标" ++#: prefs.js:366 ++msgid "Show Applications button" ++msgstr "“显示应用程序”按钮" + +-#~ msgid "Present windows as" +-#~ msgstr "窗口展现为" ++#: prefs.js:367 ++msgid "Activities button" ++msgstr "“活动”按钮" + +-#~ msgid "Activities Overview" +-#~ msgstr "活动概览" ++#: prefs.js:368 ++msgid "Taskbar" ++msgstr "任务栏" + +-#~ msgid "Hello, world!" +-#~ msgstr "Hello, world!" ++#: prefs.js:369 ++msgid "Date menu" ++msgstr "日期菜单" + +-#~ msgid "Alternative greeting text." +-#~ msgstr "替代的祝福语。" ++#: prefs.js:370 ++msgid "System menu" ++msgstr "系统菜单" + +-#~ msgid "" +-#~ "If not empty, it contains the text that will be shown when clicking on " +-#~ "the panel." +-#~ msgstr "如果不为空,所包含的文本会在点击面板时显示。" ++#: prefs.js:371 ++msgid "Left box" ++msgstr "Left box" + +-#~ msgid "Message" +-#~ msgstr "消息" ++#: prefs.js:372 ++msgid "Center box" ++msgstr "Center box" + +-#~ msgid "" +-#~ "Example aims to show how to build well behaved extensions for the Shell " +-#~ "and as such it has little functionality on its own.\n" +-#~ "Nevertheless it’s possible to customize the greeting message." +-#~ msgstr "" +-#~ "示例意在展示如何为 Shell 创建良好工作的扩展,本身功能有限。\n" +-#~ "尽管如此,它还是具备定制祝福语的功能。" ++#: prefs.js:373 ++msgid "Right box" ++msgstr "Right box" + +-#~ msgid "GNOME Shell Classic" +-#~ msgstr "GNOME Shell 经典模式" ++#: prefs.js:374 ++msgid "Desktop button" ++msgstr "“桌面”按钮" + +-#~ msgid "Window management and application launching" +-#~ msgstr "窗口管理与应用启动" ++#: prefs.js:380 ++msgid "Move up" ++msgstr "上移" + +-#~ msgid "CPU" +-#~ msgstr "CPU" ++#: prefs.js:382 ++msgid "Move down" ++msgstr "下移" + +-#~ msgid "Memory" +-#~ msgstr "内存" ++#: prefs.js:384 ++msgid "Visible" ++msgstr "显示" + +-#~ msgid "Suspend" +-#~ msgstr "挂起" ++#: prefs.js:385 ++msgid "Select element position" ++msgstr "选择元素位置" + +-#~ msgid "Hibernate" +-#~ msgstr "休眠" ++#: prefs.js:396 ++msgid "Stacked to top" ++msgstr "堆叠到顶部" + +-#~ msgid "Power Off" +-#~ msgstr "关机" ++#: prefs.js:396 ++msgid "Stacked to left" ++msgstr "堆叠到左侧" + +-#~ msgid "Enable suspending" +-#~ msgstr "启用挂起" ++#: prefs.js:397 ++msgid "Stacked to bottom" ++msgstr "堆叠到底部" + +-#~ msgid "Control the visibility of the Suspend menu item" +-#~ msgstr "控制“挂起”菜单项的可见性" ++#: prefs.js:397 ++msgid "Stacked to right" ++msgstr "堆叠到右侧" + +-#~ msgid "Enable hibernating" +-#~ msgstr "启用休眠" ++#: prefs.js:398 ++msgid "Centered" ++msgstr "居中" + +-#~ msgid "Control the visibility of the Hibernate menu item" +-#~ msgstr "控制“休眠”菜单项的可见性" ++#: prefs.js:399 ++msgid "Monitor Center" ++msgstr "显示器中间" + +-#~ msgid "Normal" +-#~ msgstr "正常" ++#: prefs.js:418 ++msgid "More options" ++msgstr "更多选项" + +-#~ msgid "Upside-down" +-#~ msgstr "上下翻转" ++#: prefs.js:440 ++msgid "Show Applications options" ++msgstr "“显示应用程序”选项" + +-#~ msgid "Display" +-#~ msgstr "显示" ++#: prefs.js:453 ++msgid "Open icon" ++msgstr "打开图标" + +-#~ msgid "The application icon mode." +-#~ msgstr "应用程序图标模式。" ++#: prefs.js:505 ++msgid "Show Desktop options" ++msgstr "“显示桌面”选项" + +-#~ msgid "" +-#~ "Configures how the windows are shown in the switcher. Valid possibilities " +-#~ "are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-" +-#~ "only' (shows only the application icon) or 'both'." +-#~ msgstr "" +-#~ "配置窗口在切换器中的显示方式。有效值包括“仅缩略图”(显示窗口的缩略图)、“仅" +-#~ "应用程序图标”(仅显示应用程序图标)或“全部”。" ++#: prefs.js:605 ++#, javascript-format ++msgid "%d ms" ++msgstr "%d ms" + +-#~ msgid "Drag here to add favorites" +-#~ msgstr "拖放到这里以添加收藏" ++#: prefs.js:610 ++#, javascript-format ++msgid "%d ." ++msgstr "%d ." + +-#~ msgid "New Window" +-#~ msgstr "新窗口" ++#: prefs.js:615 prefs.js:620 ++#, javascript-format ++msgid "%d %%" ++msgstr "%d %%" + +-#~ msgid "Quit Application" +-#~ msgstr "退出应用程序" ++#: prefs.js:625 ++#, javascript-format ++msgid "%.1f" ++msgstr "%.1f" + +-#~ msgid "Remove from Favorites" +-#~ msgstr "移除收藏" ++#: prefs.js:630 ++#, javascript-format ++msgid "%d icon" ++msgid_plural "%d icons" ++msgstr[0] "%d icon" ++ ++#: prefs.js:725 ++msgid "Running Indicator Options" ++msgstr "运行指示器选项" ++ ++#: prefs.js:889 ++msgid "Monitor " ++msgstr "显示器 " ++ ++#: prefs.js:1071 ++msgid "Dynamic opacity options" ++msgstr "动态半透明选项" ++ ++#: prefs.js:1215 ++msgid "Intellihide options" ++msgstr "智能隐藏选项" ++ ++#: prefs.js:1338 ++msgid "Window preview options" ++msgstr "窗口预览选项" ++ ++#: prefs.js:1627 ++msgid "Ungrouped application options" ++msgstr "未分组的应用程序选项" + +-#~ msgid "Position of the dock" +-#~ msgstr "Dock 位置" ++#: prefs.js:1789 ++msgid "Customize panel scroll behavior" ++msgstr "自定义面板滚动行为" + +-#~ msgid "" +-#~ "Sets the position of the dock in the screen. Allowed values are 'right' " +-#~ "or 'left'" +-#~ msgstr "设置 Dock 在屏幕上的位置。允许的值有“右”或“左”。" ++#: prefs.js:1833 ++msgid "Customize icon scroll behavior" ++msgstr "自定义图标滚动行为" + +-#~ msgid "Sets icon size of the dock." +-#~ msgstr "设置 Dock 上的图标大小。" ++#: prefs.js:1931 ++msgid "Advanced hotkeys options" ++msgstr "高级热键选项" + +-#~ msgid "Enable/disable autohide" +-#~ msgstr "启用/禁用自动隐藏" ++#: prefs.js:1966 ++msgid "Secondary Menu Options" ++msgstr "次级菜单选项" + +-#~ msgid "Autohide effect" +-#~ msgstr "自动隐藏效果" ++#: prefs.js:2009 Settings.ui.h:239 ++msgid "Advanced Options" ++msgstr "高级选项" + +-#~ msgid "" +-#~ "Sets the effect of the hide dock. Allowed values are 'resize', 'rescale' " +-#~ "and 'move'" +-#~ msgstr "设置隐藏 Dock 的效果。允许的值有“resize”、“rescale”和“move”" ++#: prefs.js:2145 ++msgid "App icon animation options" ++msgstr "应用图标动画选项" + +-#~ msgid "Autohide duration" +-#~ msgstr "自动隐藏时间" ++#: prefs.js:2211 ++msgid "Export settings" ++msgstr "导出设置" + +-#~ msgid "Sets the time duration of the autohide effect." +-#~ msgstr "设置自动隐藏的动画过渡时间。" ++#: prefs.js:2227 ++msgid "Import settings" ++msgstr "导入设置" + +-#~ msgid "Monitor" +-#~ msgstr "显示器" ++#: appIcons.js:1492 ++msgid "Show Details" ++msgstr "显示细节" + +-#~ msgid "" +-#~ "Sets monitor to display dock in. The default value (-1) is the primary " +-#~ "monitor." +-#~ msgstr "设置显示 Dock 的显示器。默认值(-1)是主显示器。" ++# 上面的 Quit 和 这里的 Windows 组合,实际显示成“Quit %d Windows”,为更符合中文习惯,这里加了“个” ++#: appIcons.js:1572 ++msgid "Windows" ++msgstr "个窗口" + +-#~ msgid "%s is away." +-#~ msgstr "%s 不在。" ++#: appIcons.js:1859 ++msgid "Power options" ++msgstr "电源选项" + +-#~ msgid "%s is offline." +-#~ msgstr "%s 离线。" ++#: appIcons.js:1864 ++msgid "Event logs" ++msgstr "事件日志" + +-#~ msgid "%s is online." +-#~ msgstr "%s 在线。" ++#: appIcons.js:1869 ++msgid "System" ++msgstr "系统信息" + +-#~ msgid "%s is busy." +-#~ msgstr "%s 忙碌。" ++#: appIcons.js:1874 ++msgid "Device Management" ++msgstr "设备管理" + +-#~ msgid "Devices" +-#~ msgstr "设备" ++#: appIcons.js:1879 ++msgid "Disk Management" ++msgstr "磁盘管理" + +-#~ msgid "Bookmarks" +-#~ msgstr "书签" ++#: appIcons.js:1893 ++msgid "Terminal" ++msgstr "终端" + +-#~ msgid "Network" +-#~ msgstr "网络" ++#: appIcons.js:1898 ++msgid "System monitor" ++msgstr "系统监视器" + +-#~ msgid "File System" +-#~ msgstr "文件系统" ++#: appIcons.js:1903 ++msgid "Files" ++msgstr "文件" + +-#~ msgid "The alt tab behaviour." ++#: appIcons.js:1908 ++msgid "Extensions" ++msgstr "扩展" ++ ++#: appIcons.js:1925 ++msgid "Unlock taskbar" ++msgstr "解锁任务栏" ++ ++#: appIcons.js:1925 ++msgid "Lock taskbar" ++msgstr "锁定任务栏" ++ ++#: appIcons.js:1930 ++msgid "Dash to Panel Settings" ++msgstr "Dash to Panel 设置" ++ ++#: appIcons.js:1943 ++msgid "Restore Windows" ++msgstr "恢复窗口" ++ ++#: appIcons.js:1943 ++msgid "Show Desktop" ++msgstr "显示桌面" ++ ++#: Settings.ui.h:1 ++msgid "Animation type" ++msgstr "动画类型" ++ ++#: Settings.ui.h:2 ++msgid "Simple" ++msgstr "简单" ++ ++#: Settings.ui.h:3 ++msgid "Ripple" ++msgstr "波纹" ++ ++#: Settings.ui.h:4 ++msgid "Plank" ++msgstr "木板" ++ ++#: Settings.ui.h:5 ++msgid "Duration" ++msgstr "Duration" ++ ++#: Settings.ui.h:6 ++msgid "Rotation" ++msgstr "Rotation" ++ ++#: Settings.ui.h:7 ++msgid "Travel" ++msgstr "Travel" ++ ++#: Settings.ui.h:8 ++msgid "Zoom" ++msgstr "Zoom" ++ ++#: Settings.ui.h:9 ++msgid "Convexity" ++msgstr "Convexity" ++ ++#: Settings.ui.h:10 ++msgid "Extent" ++msgstr "Extent" ++ ++#: Settings.ui.h:11 ++msgid "Nothing yet!" ++msgstr "暂时什么都没有!" ++ ++#: Settings.ui.h:14 ++msgid "Raise windows" ++msgstr "提升窗口" ++ ++#: Settings.ui.h:18 ++msgid "Cycle windows + minimize" ++msgstr "循环窗口 + 最小化" ++ ++#: Settings.ui.h:19 ++msgid "Toggle single / Preview multiple" ++msgstr "切换单个 / 预览多个" ++ ++#: Settings.ui.h:20 ++msgid "Toggle single / Cycle multiple" ++msgstr "切换单个 / 循环多个" ++ ++#: Settings.ui.h:26 ++msgid "Integrate AppMenu items" ++msgstr "集成 应用菜单 项" ++ ++#: Settings.ui.h:27 ++msgid "Show Details menu item" ++msgstr "显示细节 菜单项" ++ ++#: Settings.ui.h:28 ++msgid "Highlight focused application" ++msgstr "高亮显示取得焦点的应用程序" ++ ++#: Settings.ui.h:29 ++msgid "Icon dominant color" ++msgstr "图标主颜色" ++ ++#: Settings.ui.h:30 ++msgid "Custom color" ++msgstr "自定义颜色" ++ ++#: Settings.ui.h:31 ++msgid "Highlight opacity" ++msgstr "高亮不透明度" ++ ++#: Settings.ui.h:32 ++msgid "Indicator size (px)" ++msgstr "指示器大小(像素)" ++ ++#: Settings.ui.h:33 ++msgid "Indicator color - Icon Dominant" ++msgstr "指示器颜色 - 图标主色" ++ ++#: Settings.ui.h:34 ++msgid "Indicator color - Override Theme" ++msgstr "指示器颜色 - 覆盖主题" ++ ++#: Settings.ui.h:35 ++msgid "1 window open (or ungrouped)" ++msgstr "1 窗口开启(或未分组)" ++ ++#: Settings.ui.h:36 ++msgid "Apply to all" ++msgstr "应用至全部" ++ ++#: Settings.ui.h:37 ++msgid "2 windows open" ++msgstr "2 窗口开启" ++ ++#: Settings.ui.h:38 ++msgid "3 windows open" ++msgstr "3 窗口开启" ++ ++#: Settings.ui.h:39 ++msgid "4+ windows open" ++msgstr "4+ 窗口开启" ++ ++#: Settings.ui.h:40 ++msgid "Use different for unfocused" ++msgstr "为未取得焦点的程序使用不同方案" ++ ++#: Settings.ui.h:41 ++msgid "Font size (px) of the application titles (default is 14)" ++msgstr "应用程序标题字体大小(像素)(默认值为 14)" ++ ++#: Settings.ui.h:42 ++msgid "Font weight of application titles" ++msgstr "应用程序标题字体粗细" ++ ++#: Settings.ui.h:43 ++msgid "inherit from theme" ++msgstr "继承自主题" ++ ++#: Settings.ui.h:44 ++msgid "normal" ++msgstr "正常" ++ ++#: Settings.ui.h:45 ++msgid "lighter" ++msgstr "较细" ++ ++#: Settings.ui.h:46 ++msgid "bold" ++msgstr "粗体" ++ ++#: Settings.ui.h:47 ++msgid "bolder" ++msgstr "更粗" ++ ++#: Settings.ui.h:48 ++msgid "Font color of the application titles" ++msgstr "应用程序标题字体颜色" ++ ++#: Settings.ui.h:49 ++msgid "Font color of the minimized application titles" ++msgstr "最小化应用程序标题字体颜色" ++ ++#: Settings.ui.h:50 ++msgid "Maximum width (px) of the application titles (default is 160)" ++msgstr "应用程序标题最大宽度(像素)(默认值为 160)" ++ ++#: Settings.ui.h:51 ++msgid "Use a fixed width for the application titles" ++msgstr "应用程序标题使用固定宽度" ++ ++#: Settings.ui.h:52 ++msgid "" ++"The application titles all have the same width, even if their texts are " ++"shorter than the maximum width. The maximum width value is used as the fixed " ++"width." ++msgstr "" ++"应用程序标题都将使用相同宽度,即使其文本宽度无法达到最大宽度。最大宽度值将被" ++"用于固定宽度值。" ++ ++#: Settings.ui.h:53 ++msgid "Display running indicators on unfocused applications" ++msgstr "在未取得焦点的应用上显示运行指示器" ++ ++#: Settings.ui.h:54 ++msgid "Use the favorite icons as application launchers" ++msgstr "使用收藏的图标作为应用程序启动器" ++ ++#: Settings.ui.h:55 ++msgid "Only hide the panel when it is obstructed by windows " ++msgstr "仅在面板被窗口阻挡时隐藏 " ++ ++#: Settings.ui.h:56 ++msgid "The panel hides from" ++msgstr "触发面板隐藏的对象" ++ ++#: Settings.ui.h:58 ++msgid "Focused windows" ++msgstr "获得焦点的窗口" ++ ++#: Settings.ui.h:59 ++msgid "Maximized windows" ++msgstr "最大化窗口" ++ ++#: Settings.ui.h:60 ++msgid "Require pressure at the edge of the screen to reveal the panel" ++msgstr "在屏幕边缘受到一定光标压力时显示面板" ++ ++#: Settings.ui.h:61 ++msgid "Required pressure threshold (px)" ++msgstr "所需压力阈值(像素)" ++ ++#: Settings.ui.h:62 ++msgid "Required pressure timeout (ms)" ++msgstr "所需压力超时(毫秒)" ++ ++#: Settings.ui.h:63 ++msgid "Allow the panel to be revealed while in fullscreen mode" ++msgstr "允许面板在全屏幕模式下显示" ++ ++#: Settings.ui.h:64 ++msgid "Only hide secondary panels (requires multi-monitors option)" ++msgstr "仅隐藏次要面板(需要多显示器选项)" ++ ++#: Settings.ui.h:65 ++msgid "e.g. i" ++msgstr "例如 i" ++ ++#: Settings.ui.h:66 ++msgid "Keyboard shortcut to reveal and hold the panel" ++msgstr "显示并保持面板的键盘快捷键" ++ ++#: Settings.ui.h:68 ++msgid "Hide and reveal animation duration (ms)" ++msgstr "隐藏与显示动画持续时间(毫秒)" ++ ++#: Settings.ui.h:69 ++msgid "Delay before hiding the panel (ms)" ++msgstr "隐藏面板之前的延时(毫秒)" ++ ++#: Settings.ui.h:70 ++msgid "Delay before enabling intellihide on start (ms)" ++msgstr "启动后到启用智能隐藏之间的延时(毫秒)" ++ ++#: Settings.ui.h:71 ++msgid "Time (ms) before showing (400 is default)" ++msgstr "显示前的延时(毫秒,默认为 400)" ++ ++#: Settings.ui.h:72 ++msgid "Animation time (ms)" ++msgstr "动画时间(毫秒)" ++ ++#: Settings.ui.h:73 ++msgid "Time (ms) before hiding (100 is default)" ++msgstr "隐藏前的延时(毫秒,默认为 100)" ++ ++#: Settings.ui.h:74 ++msgid "Immediate on application icon click" ++msgstr "点击应用程序图标后立即触发" ++ ++#: Settings.ui.h:75 ++msgid "Middle click on the preview to close the window" ++msgstr "在预览上中键点击以关闭窗口" ++ ++#: Settings.ui.h:76 ++msgid "Window previews preferred size (px)" ++msgstr "窗口预览偏好大小(像素)" ++ ++#: Settings.ui.h:77 ++msgid "Window previews aspect ratio Y (height)" ++msgstr "窗口预览长宽比 X(高度)" ++ ++#: Settings.ui.h:78 ++msgid "Window previews padding (px)" ++msgstr "窗口预览填充距离(像素)" ++ ++#: Settings.ui.h:83 ++msgid "5" ++msgstr "5" ++ ++#: Settings.ui.h:84 ++msgid "6" ++msgstr "6" ++ ++#: Settings.ui.h:85 ++msgid "7" ++msgstr "7" ++ ++#: Settings.ui.h:86 ++msgid "8" ++msgstr "8" ++ ++#: Settings.ui.h:87 ++msgid "9" ++msgstr "9" ++ ++#: Settings.ui.h:88 ++msgid "10" ++msgstr "10" ++ ++#: Settings.ui.h:89 ++msgid "11" ++msgstr "11" ++ ++#: Settings.ui.h:90 ++msgid "12" ++msgstr "12" ++ ++#: Settings.ui.h:91 ++msgid "13" ++msgstr "13" ++ ++#: Settings.ui.h:92 ++msgid "14" ++msgstr "14" ++ ++#: Settings.ui.h:93 ++msgid "15" ++msgstr "15" ++ ++#: Settings.ui.h:95 ++msgid "17" ++msgstr "17" ++ ++#: Settings.ui.h:96 ++msgid "18" ++msgstr "18" ++ ++#: Settings.ui.h:97 ++msgid "19" ++msgstr "19" ++ ++#: Settings.ui.h:98 ++msgid "20" ++msgstr "20" ++ ++#: Settings.ui.h:99 ++msgid "21" ++msgstr "21" ++ ++#: Settings.ui.h:101 ++msgid "Window previews aspect ratio X (width)" ++msgstr "窗口预览长宽比 X(宽度)" ++ ++#: Settings.ui.h:102 ++msgid "Use custom opacity for the previews background" ++msgstr "为预览背景使用自定义不透明度" ++ ++#: Settings.ui.h:103 ++msgid "If disabled, the previews background have the same opacity as the panel" ++msgstr "如果禁用,预览的背景与面板的不透明度将保持一致" ++ ++#: Settings.ui.h:104 ++msgid "Close button and header position" ++msgstr "关闭按钮和头部的位置" ++ ++#: Settings.ui.h:107 ++msgid "Display window preview headers" ++msgstr "显示窗口预览头部" ++ ++#: Settings.ui.h:108 ++msgid "Icon size (px) of the window preview" ++msgstr "预览窗口的图标大小(像素)" ++ ++#: Settings.ui.h:109 ++msgid "If disabled, the previews icon size will be based on headerbar size" ++msgstr "如果禁用,预览图标将基于标题栏的大小" ++ ++#: Settings.ui.h:110 ++msgid "Font size (px) of the preview titles" ++msgstr "预览标题的字体大小(像素)" ++ ++#: Settings.ui.h:111 ++msgid "Font weight of the preview titles" ++msgstr "预览标题的字重" ++ ++#: Settings.ui.h:112 ++msgid "Font color of the preview titles" ++msgstr "预览标题的字体颜色" ++ ++#: Settings.ui.h:113 ++msgid "Enable window peeking" ++msgstr "启用窗口概览功能" ++ ++#: Settings.ui.h:114 ++msgid "" ++"When hovering over a window preview for some time, the window gets " ++"distinguished." ++msgstr "在窗口预览上悬浮一定时间后,该窗口将被区别显示。" ++ ++#: Settings.ui.h:115 ++msgid "Enter window peeking mode timeout (ms)" ++msgstr "进入窗口概览模式延时(毫秒)" ++ ++#: Settings.ui.h:116 ++msgid "50" ++msgstr "50" ++ ++#: Settings.ui.h:117 ++msgid "" ++"Time of inactivity while hovering over a window preview needed to enter the " ++"window peeking mode." ++msgstr "为进入窗口概览模式,需要光标悬浮在预览窗口上不活动的时间。" ++ ++#: Settings.ui.h:118 ++msgid "Window peeking mode opacity" ++msgstr "窗口概览模式不透明度" ++ ++#: Settings.ui.h:119 ++msgid "0" ++msgstr "0" ++ ++#: Settings.ui.h:120 ++msgid "" ++"All windows except for the peeked one have their opacity set to the same " ++"value." ++msgstr "除正在处于概览状态的窗口外,其它所有窗口的不透明度将被设置为同一个值。" ++ ++#: Settings.ui.h:121 ++msgid "Delay between mouse scroll events (ms)" ++msgstr "鼠标滚动事件之间的延迟(毫秒)" ++ ++#: Settings.ui.h:122 ++msgid "Use this value to limit the number of captured mouse scroll events." ++msgstr "使用这个值来限制对鼠标滚动事件捕捉的频率。" ++ ++#: Settings.ui.h:123 ++msgid "Show popup when changing workspace" ++msgstr "切换工作区时显示弹窗" ++ ++#: Settings.ui.h:124 ++msgid "This affects workspace popup when scrolling on the panel only." ++msgstr "仅影响在面板上滚动时的工作区弹窗。" ++ ++#: Settings.ui.h:125 ++msgid "Super" ++msgstr "Super" ++ ++#: Settings.ui.h:126 ++msgid "Super + Alt" ++msgstr "Super + Alt" ++ ++#: Settings.ui.h:127 ++msgid "Hotkeys prefix" ++msgstr "热键前缀" ++ ++#: Settings.ui.h:128 ++msgid "Hotkeys will either be Super+Number or Super+Alt+Num" ++msgstr "热键可以是 Super+数字 或者 Super+Alt+数字" ++ ++#: Settings.ui.h:129 ++msgid "Never" ++msgstr "从不" ++ ++#: Settings.ui.h:130 ++msgid "Show temporarily" ++msgstr "暂时显示" ++ ++#: Settings.ui.h:131 ++msgid "Always visible" ++msgstr "总是可见" ++ ++#: Settings.ui.h:133 ++msgid "" ++"Temporarily show the application numbers over the icons when using the " ++"hotkeys." ++msgstr "使用热键时在应用图标上临时显示其对应数字。" ++ ++#: Settings.ui.h:134 ++msgid "Hide timeout (ms)" ++msgstr "隐藏延时(毫秒)" ++ ++#: Settings.ui.h:135 ++msgid "e.g. q" ++msgstr "例如 q" ++ ++#: Settings.ui.h:136 ++msgid "Shortcut to show the overlay for 2 seconds" ++msgstr "显示两秒钟附加数字的快捷键" ++ ++#: Settings.ui.h:137 ++msgid "Show window previews on hotkey" ++msgstr "按下热键时显示窗口预览" ++ ++#: Settings.ui.h:138 ++msgid "Show previews when the application have multiple instances" ++msgstr "应用程序有多个实例时显示预览" ++ ++#: Settings.ui.h:139 ++msgid "Number row" ++msgstr "键盘主数字行" ++ ++#: Settings.ui.h:140 ++msgid "Numeric keypad" ++msgstr "数字小键盘" ++ ++#: Settings.ui.h:141 ++msgid "Both" ++msgstr "两者" ++ ++#: Settings.ui.h:142 ++msgid "Hotkeys are activated with" ++msgstr "热键激活来源" ++ ++#: Settings.ui.h:143 ++msgid "Select which keyboard number keys are used to activate the hotkeys" ++msgstr "选择用于激活热键的键盘数字键" ++ ++#: Settings.ui.h:144 ++msgid "Current Show Applications icon" ++msgstr "当前“显示应用程序”图标" ++ ++#: Settings.ui.h:145 ++msgid "Custom Show Applications image icon" ++msgstr "自定义“显示应用程序”图标图像" ++ ++#: Settings.ui.h:146 ++msgid "Show Applications icon side padding (px)" ++msgstr "“显示应用程序”图标侧边距(像素)" ++ ++#: Settings.ui.h:147 ++msgid "Override escape key and return to desktop" ++msgstr "覆盖 Esc 键并返回桌面" ++ ++#: Settings.ui.h:148 ++msgid "Override Show Desktop line color" ++msgstr "覆盖“显示桌面”线条颜色" ++ ++#: Settings.ui.h:149 ++msgid "Reveal the desktop when hovering the Show Desktop button" ++msgstr "悬停在“显示桌面”按钮时展示桌面预览" ++ ++#: Settings.ui.h:150 ++msgid "Delay before revealing the desktop (ms)" ++msgstr "展示桌面预览之前的延时(毫秒)" ++ ++#: Settings.ui.h:151 ++msgid "Fade duration (ms)" ++msgstr "淡出延时(毫秒)" ++ ++#: Settings.ui.h:152 ++msgid "The panel background opacity is affected by" ++msgstr "面板背景不透明度的影响因素" ++ ++#: Settings.ui.h:153 ++msgid "Change opacity when a window gets closer than (px)" ++msgstr "在窗口多靠近时修改不透明度(像素 px)" ++ ++#: Settings.ui.h:155 ++#, no-c-format ++msgid "Change opacity to (%)" ++msgstr "将不透明度修改为(%)" ++ ++#: Settings.ui.h:156 ++msgid "Opacity change animation duration (ms)" ++msgstr "不透明度变更动画持续时间(毫秒)" ++ ++#: Settings.ui.h:157 ++msgid "Display the main panel on" ++msgstr "将主面板显示于" ++ ++#: Settings.ui.h:158 ++msgid "Display panels on all monitors" ++msgstr "在所有显示器上显示面板" ++ ++#: Settings.ui.h:159 ++msgid "Panel Intellihide" ++msgstr "面板智能隐藏" ++ ++#: Settings.ui.h:160 ++msgid "Hide and reveal the panel according to preferences" ++msgstr "按照配置隐藏和显示面板" ++ ++#: Settings.ui.h:161 ++msgid "Order and positions on monitor" ++msgstr "显示次序和位置" ++ ++#: Settings.ui.h:162 ++msgid "Apply changes to all monitors" ++msgstr "应用修改到所有显示器" ++ ++#: Settings.ui.h:163 ++msgid "Panel thickness (default is 48)" ++msgstr "面板厚度 (默认为 48)" ++ ++#: Settings.ui.h:165 ++#, no-c-format ++msgid "Panel length (%) (default is 100)" ++msgstr "面板长度(%) (默认为 100)" ++ ++#: Settings.ui.h:169 ++msgid "Anchor" ++msgstr "锚点" ++ ++#: Settings.ui.h:170 ++msgid "Panel screen position" ++msgstr "面板屏幕位置" ++ ++#: Settings.ui.h:173 ++msgid "Position" ++msgstr "位置" ++ ++#: Settings.ui.h:174 ++msgid "App Icon Margin (default is 8)" ++msgstr "应用图标边缘空白 (默认为 8)" ++ ++#: Settings.ui.h:175 ++msgid "App Icon Padding (default is 4)" ++msgstr "应用图标边缘空白 (默认为 4)" ++ ++#: Settings.ui.h:176 ++msgid "Running indicator position" ++msgstr "运行指示器位置" ++ ++#: Settings.ui.h:177 ++msgid "Running indicator style (Focused app)" ++msgstr "运行指示器风格(取得焦点的应用)" ++ ++#: Settings.ui.h:185 ++msgid "Running indicator style (Unfocused apps)" ++msgstr "运行指示器风格(未取得焦点的应用)" ++ ++#: Settings.ui.h:186 ++msgid "Override panel theme background color " ++msgstr "覆盖面板主题背景颜色 " ++ ++#: Settings.ui.h:187 ++msgid "Override panel theme background opacity" ++msgstr "覆盖面板主题背景不透明度" ++ ++#: Settings.ui.h:189 ++#, no-c-format ++msgid "Panel background opacity (%)" ++msgstr "面板背景不透明度(%)" ++ ++#: Settings.ui.h:190 ++msgid "Dynamic background opacity" ++msgstr "动态背景不透明度" ++ ++#: Settings.ui.h:191 ++msgid "Change opacity when a window gets close to the panel" ++msgstr "在有窗口接近面板时修改不透明度" ++ ++#: Settings.ui.h:192 ++msgid "Override panel theme gradient " ++msgstr "覆盖面板主题渐变 " ++ ++#: Settings.ui.h:194 ++#, no-c-format ++msgid "Gradient top color and opacity (%)" ++msgstr "渐变顶部颜色和不透明度(%)" ++ ++#: Settings.ui.h:196 ++#, no-c-format ++msgid "Gradient bottom color and opacity (%)" ++msgstr "渐变底部颜色和不透明度(%)" ++ ++#: Settings.ui.h:197 ++msgid "Animate hovering app icons" ++msgstr "动画悬停应用图标" ++ ++#: Settings.ui.h:198 ++msgid "Style" ++msgstr "风格" ++ ++#: Settings.ui.h:201 ++msgid "Show favorite applications on secondary panels" ++msgstr "次要面板显示收藏的应用程序" ++ ++#: Settings.ui.h:202 ++msgid "Show AppMenu button" ++msgstr "显示 应用菜单 按钮" ++ ++#: Settings.ui.h:203 ++msgid "Top Bar > Show App Menu must be enabled in Tweak Tool" ++msgstr "必须在优化工具中启用顶栏 > 显示应用菜单" ++ ++#: Settings.ui.h:204 ++msgid "Show window previews on hover" ++msgstr "悬停时显示窗口预览" ++ ++#: Settings.ui.h:205 ++msgid "Show tooltip on hover" ++msgstr "悬停时显示文字提示" ++ ++#: Settings.ui.h:206 ++msgid "Isolate Workspaces" ++msgstr "隔离工作区" ++ ++#: Settings.ui.h:207 ++msgid "Isolate monitors" ++msgstr "隔离显示器" ++ ++#: Settings.ui.h:208 ++msgid "Click empty space to close overview" ++msgstr "点击空白区域时关闭概览" ++ ++#: Settings.ui.h:209 ++msgid "Disable show overview on startup" ++msgstr "取消启动时显示概览" ++ ++#: Settings.ui.h:210 ++msgid "Ungroup applications" ++msgstr "取消应用程序分组" ++ ++#: Settings.ui.h:214 ++msgid "Toggle windows" ++msgstr "切换窗口" ++ ++#: Settings.ui.h:215 ++msgid "Scroll panel action" ++msgstr "滚动面板行为" ++ ++#: Settings.ui.h:216 ++msgid "Behavior when mouse scrolling over the panel." ++msgstr "在面板上滚动鼠标滚轮时的行为。" ++ ++#: Settings.ui.h:217 ++msgid "Scroll icon action" ++msgstr "滚动行为" ++ ++#: Settings.ui.h:218 ++msgid "Behavior when mouse scrolling over an application icon." ++msgstr "在正在运行应用程序图标上滚动鼠标滚轮时的行为。" ++ ++#: Settings.ui.h:221 ++msgid "Cycle windows" ++msgstr "循环窗口" ++ ++#: Settings.ui.h:222 ++msgid "Change volume" ++msgstr "改变音量" ++ ++#: Settings.ui.h:223 ++msgid "Same as panel" ++msgstr "与面板保持一致" ++ ++#: Settings.ui.h:225 ++msgid "Use hotkeys to activate apps" ++msgstr "使用热键激活应用" ++ ++#: Settings.ui.h:226 ++msgid "Action" ++msgstr "行为" ++ ++#: Settings.ui.h:227 ++msgid "Tray Font Size (0 = theme default)" ++msgstr "托盘字体大小 (0 = 主题默认)" ++ ++#: Settings.ui.h:228 ++msgid "LeftBox Font Size (0 = theme default)" ++msgstr "LeftBox 字体大小 (0 = 主题默认)" ++ ++#: Settings.ui.h:229 ++msgid "Tray Item Padding (-1 = theme default)" ++msgstr "托盘项边缘空白 (-1 = 主题默认)" ++ ++#: Settings.ui.h:230 ++msgid "Status Icon Padding (-1 = theme default)" ++msgstr "状态图标边缘空白 (-1 = 主题默认)" ++ ++#: Settings.ui.h:231 ++msgid "LeftBox Padding (-1 = theme default)" ++msgstr "LeftBox 边缘空白 (-1 = 主题默认)" ++ ++#: Settings.ui.h:232 ++msgid "Animate switching applications" ++msgstr "动画切换应用程序" ++ ++#: Settings.ui.h:233 ++msgid "Animate launching new windows" ++msgstr "动画启动新窗口" ++ ++#: Settings.ui.h:234 ++msgid "Keep original gnome-shell dash (overview)" ++msgstr "保留原始 GNOME-Shell Dash(概览)" ++ ++#: Settings.ui.h:235 ++msgid "Force Activities hot corner on primary monitor" ++msgstr "主显示器强制活动热区" ++ ++#: Settings.ui.h:236 ++msgid "Activate panel menu buttons (e.g. date menu) on click only" ++msgstr "仅在点击时激活面板菜单按钮(例如:日期菜单)" ++ ++#: Settings.ui.h:237 ++msgid "Keep original gnome-shell top panel" ++msgstr "保留原始 GNOME-Shell 顶部面板" ++ ++#: Settings.ui.h:238 ++msgid "App icon secondary (right-click) menu" ++msgstr "应用图标次级(右键点击)菜单" ++ ++#: Settings.ui.h:240 ++msgid "Fine-Tune" ++msgstr "微调" ++ ++#: Settings.ui.h:242 ++msgid "GitHub" ++msgstr "GitHub" ++ ++#: Settings.ui.h:243 ++msgid "" ++"Use the buttons below to create a settings file from your current " ++"preferences that can be imported on a different machine." ++msgstr "" ++"使用下面的按钮以基于您当前的首选项创建一个设置文件;您稍后可使用该文件在其他" ++"机器上导入设置。" ++ ++#: Settings.ui.h:244 ++msgid "Export and import settings" ++msgstr "导入导出设置" ++ ++#: Settings.ui.h:245 ++msgid "Export to file" ++msgstr "导出至文件" ++ ++#: Settings.ui.h:246 ++msgid "Import from file" ++msgstr "从文件导入" ++ ++#: Settings.ui.h:247 ++msgid "" ++"This program comes with ABSOLUTELY NO WARRANTY. See " ++"the GNU " ++"General Public License, version 2 or later for details." ++msgstr "" ++"本程序不提供任何担保。 请查看 GNU 通用公共许可证,第二版或更新" ++"版本 以了解详情。" ++ ++#~ msgid "Application" ++#~ msgstr "应用程序" ++ ++#~ msgid "Create new matching rule" ++#~ msgstr "创建新的匹配规则" ++ ++#~ msgid "Add" ++#~ msgstr "添加" ++ ++#~ msgid "Name" ++#~ msgstr "名称" ++ ++#~ msgid "Attach modal dialog to the parent window" ++#~ msgstr "将模式对话框附着到父窗口" ++ ++#~ msgid "" ++#~ "This key overrides the key in org.gnome.mutter when running GNOME Shell." ++#~ msgstr "当运行 GNOME Shell 时该键会覆盖 org.gnome.mutter 中的键。" ++ ++#~ msgid "Arrangement of buttons on the titlebar" ++#~ msgstr "标题栏上按钮的排列" ++ ++#~ msgid "" ++#~ "This key overrides the key in org.gnome.desktop.wm.preferences when " ++#~ "running GNOME Shell." ++#~ msgstr "" ++#~ "当运行 GNOME Shell 时该键会覆盖 org.gnome.desktop.wm.preferences 中的键。" ++ ++#~ msgid "Enable edge tiling when dropping windows on screen edges" ++#~ msgstr "启用将窗口拖拽到屏幕边缘时平铺显示的功能" ++ ++#~ msgid "Workspaces only on primary monitor" ++#~ msgstr "仅在主显示器上显示工作区" ++ ++#~ msgid "Delay focus changes in mouse mode until the pointer stops moving" ++#~ msgstr "将鼠标模式下焦点的切换推迟到光标停止移动之后" ++ ++#~ msgid "Thumbnail only" ++#~ msgstr "仅缩略图" ++ ++#~ msgid "Application icon only" ++#~ msgstr "仅应用程序图标" ++ ++#~ msgid "Thumbnail and application icon" ++#~ msgstr "缩略图和应用程序图标" ++ ++#~ msgid "Present windows as" ++#~ msgstr "窗口展现为" ++ ++#~ msgid "Activities Overview" ++#~ msgstr "活动概览" ++ ++#~ msgid "Hello, world!" ++#~ msgstr "Hello, world!" ++ ++#~ msgid "Alternative greeting text." ++#~ msgstr "替代的祝福语。" ++ ++#~ msgid "" ++#~ "If not empty, it contains the text that will be shown when clicking on " ++#~ "the panel." ++#~ msgstr "如果不为空,所包含的文本会在点击面板时显示。" ++ ++#~ msgid "Message" ++#~ msgstr "消息" ++ ++#~ msgid "" ++#~ "Example aims to show how to build well behaved extensions for the Shell " ++#~ "and as such it has little functionality on its own.\n" ++#~ "Nevertheless it’s possible to customize the greeting message." ++#~ msgstr "" ++#~ "示例意在展示如何为 Shell 创建良好工作的扩展,本身功能有限。\n" ++#~ "尽管如此,它还是具备定制祝福语的功能。" ++ ++#~ msgid "GNOME Shell Classic" ++#~ msgstr "GNOME Shell 经典模式" ++ ++#~ msgid "Window management and application launching" ++#~ msgstr "窗口管理与应用启动" ++ ++#~ msgid "CPU" ++#~ msgstr "CPU" ++ ++#~ msgid "Memory" ++#~ msgstr "内存" ++ ++#~ msgid "Suspend" ++#~ msgstr "挂起" ++ ++#~ msgid "Hibernate" ++#~ msgstr "休眠" ++ ++#~ msgid "Power Off" ++#~ msgstr "关机" ++ ++#~ msgid "Enable suspending" ++#~ msgstr "启用挂起" ++ ++#~ msgid "Control the visibility of the Suspend menu item" ++#~ msgstr "控制“挂起”菜单项的可见性" ++ ++#~ msgid "Enable hibernating" ++#~ msgstr "启用休眠" ++ ++#~ msgid "Control the visibility of the Hibernate menu item" ++#~ msgstr "控制“休眠”菜单项的可见性" ++ ++#~ msgid "Normal" ++#~ msgstr "正常" ++ ++#~ msgid "Upside-down" ++#~ msgstr "上下翻转" ++ ++#~ msgid "Display" ++#~ msgstr "显示" ++ ++#~ msgid "The application icon mode." ++#~ msgstr "应用程序图标模式。" ++ ++#~ msgid "" ++#~ "Configures how the windows are shown in the switcher. Valid possibilities " ++#~ "are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-" ++#~ "only' (shows only the application icon) or 'both'." ++#~ msgstr "" ++#~ "配置窗口在切换器中的显示方式。有效值包括“仅缩略图”(显示窗口的缩略图)、“仅" ++#~ "应用程序图标”(仅显示应用程序图标)或“全部”。" ++ ++#~ msgid "Drag here to add favorites" ++#~ msgstr "拖放到这里以添加收藏" ++ ++#~ msgid "Quit Application" ++#~ msgstr "退出应用程序" ++ ++#~ msgid "Remove from Favorites" ++#~ msgstr "移除收藏" ++ ++#~ msgid "Position of the dock" ++#~ msgstr "Dock 位置" ++ ++#~ msgid "" ++#~ "Sets the position of the dock in the screen. Allowed values are 'right' " ++#~ "or 'left'" ++#~ msgstr "设置 Dock 在屏幕上的位置。允许的值有“右”或“左”。" ++ ++#~ msgid "Sets icon size of the dock." ++#~ msgstr "设置 Dock 上的图标大小。" ++ ++#~ msgid "Enable/disable autohide" ++#~ msgstr "启用/禁用自动隐藏" ++ ++#~ msgid "Autohide effect" ++#~ msgstr "自动隐藏效果" ++ ++#~ msgid "" ++#~ "Sets the effect of the hide dock. Allowed values are 'resize', 'rescale' " ++#~ "and 'move'" ++#~ msgstr "设置隐藏 Dock 的效果。允许的值有“resize”、“rescale”和“move”" ++ ++#~ msgid "Autohide duration" ++#~ msgstr "自动隐藏时间" ++ ++#~ msgid "Sets the time duration of the autohide effect." ++#~ msgstr "设置自动隐藏的动画过渡时间。" ++ ++#~ msgid "Monitor" ++#~ msgstr "显示器" ++ ++#~ msgid "" ++#~ "Sets monitor to display dock in. The default value (-1) is the primary " ++#~ "monitor." ++#~ msgstr "设置显示 Dock 的显示器。默认值(-1)是主显示器。" ++ ++#~ msgid "%s is away." ++#~ msgstr "%s 不在。" ++ ++#~ msgid "%s is offline." ++#~ msgstr "%s 离线。" ++ ++#~ msgid "%s is online." ++#~ msgstr "%s 在线。" ++ ++#~ msgid "%s is busy." ++#~ msgstr "%s 忙碌。" ++ ++#~ msgid "Devices" ++#~ msgstr "设备" ++ ++#~ msgid "Bookmarks" ++#~ msgstr "书签" ++ ++#~ msgid "Network" ++#~ msgstr "网络" ++ ++#~ msgid "File System" ++#~ msgstr "文件系统" ++ ++#~ msgid "The alt tab behaviour." + #~ msgstr "Alt Tab 行为。" + + #~ msgid "" +@@ -1321,18 +2542,6 @@ msgstr "在桌面上显示已挂载的驱动器。" + #~ msgid "Primary (default)" + #~ msgstr "主显示器(默认)" + +-#~ msgid "1" +-#~ msgstr "1" +- +-#~ msgid "2" +-#~ msgstr "2" +- +-#~ msgid "3" +-#~ msgstr "3" +- +-#~ msgid "4" +-#~ msgstr "4" +- + #~ msgid "Max height" + #~ msgstr "最大高度" + +@@ -1342,9 +2551,6 @@ msgstr "在桌面上显示已挂载的驱动器。" + #~ msgid "Maximum icon size" + #~ msgstr "最大图标尺寸" + +-#~ msgid "16" +-#~ msgstr "16" +- + #~ msgid "24" + #~ msgstr "24" + +@@ -1383,3 +2589,176 @@ msgstr "在桌面上显示已挂载的驱动器。" + + #~ msgid "OK" + #~ msgstr "确定" ++ ++#~ msgid "Top, with plugin icons collapsed to bottom" ++#~ msgstr "顶部,并且插件图标收缩到底部" ++ ++#~ msgid "Left, with plugin icons collapsed to right" ++#~ msgstr "左侧,并且插件图标收缩到右侧" ++ ++#~ msgid "Top, with fixed center plugin icons" ++#~ msgstr "顶部,并且固定居中插件图标" ++ ++#~ msgid "Left, with fixed center plugin icons" ++#~ msgstr "左侧,并且固定居中插件图标" ++ ++#~ msgid "Top, with floating center plugin icons" ++#~ msgstr "顶部,并且浮动居中插件图标" ++ ++#~ msgid "Left, with floating center plugin icons" ++#~ msgstr "左侧,并且浮动居中插件图标" ++ ++#~ msgid "Center, fixed in middle of monitor" ++#~ msgstr "中间,固定在显示屏中间" ++ ++#~ msgid "Center, floating between top and bottom elements" ++#~ msgstr "中间,在顶部元素和底部元素之间浮动" ++ ++#~ msgid "Center, floating between left and right elements" ++#~ msgstr "中间,在左侧元素和右侧元素之间浮动" ++ ++#~ msgid "Top of plugin icons" ++#~ msgstr "插件图标上侧" ++ ++#~ msgid "Left of plugin icons" ++#~ msgstr "插件图标左侧" ++ ++#~ msgid "Bottom of plugin icons" ++#~ msgstr "插件图标下侧" ++ ++#~ msgid "Right of plugin icons" ++#~ msgstr "插件图标右侧" ++ ++#~ msgid "Top of system indicators" ++#~ msgstr "系统指示器上侧" ++ ++#~ msgid "Left of system indicators" ++#~ msgstr "系统指示器左侧" ++ ++#~ msgid "Bottom of system indicators" ++#~ msgstr "系统指示器下侧" ++ ++#~ msgid "Right of system indicators" ++#~ msgstr "系统指示器右侧" ++ ++#~ msgid "Left of taskbar" ++#~ msgstr "任务栏左侧" ++ ++#~ msgid "Bottom of taskbar" ++#~ msgstr "任务栏下侧" ++ ++#~ msgid "Right of taskbar" ++#~ msgstr "任务栏右侧" ++ ++#~ msgid "Multi-monitors options" ++#~ msgstr "多显示器选项" ++ ++#, javascript-format ++#~ msgid "Version %s (%s) is available" ++#~ msgstr "版本 %s(%s)已经可用" ++ ++#~ msgid "Details" ++#~ msgstr "详细信息" ++ ++#~ msgid "Update" ++#~ msgstr "更新" ++ ++#~ msgid "Already up to date" ++#~ msgstr "已经处于最新状态" ++ ++#~ msgid "Update successful, please log out/in" ++#~ msgstr "更新成功,请注销并重新登录" ++ ++#~ msgid "Log out" ++#~ msgstr "注销" ++ ++#~ msgid "Update successful, please restart GNOME Shell" ++#~ msgstr "更新成功,请重新启动 GNOME Shell" ++ ++#~ msgid "Restart GNOME Shell" ++#~ msgstr "重新启动 GNOME Shell" ++ ++#~ msgid "Restarting GNOME Shell..." ++#~ msgstr "正在重新启动 GNOME Shell……" ++ ++#~ msgid "Error: " ++#~ msgstr "错误:" ++ ++#~ msgid "Display favorite applications on all monitors" ++#~ msgstr "在所有显示器上显示收藏的应用程序" ++ ++#~ msgid "Display the clock on all monitors" ++#~ msgstr "在所有显示器上显示时钟" ++ ++#~ msgid "Display the status menu on all monitors" ++#~ msgstr "在所有显示器上显示状态菜单" ++ ++#~ msgid "Select a Show Applications image icon" ++#~ msgstr "选择一个“显示应用程序”图标图像" ++ ++#~ msgid "Taskbar position" ++#~ msgstr "任务栏位置" ++ ++#~ msgid "Clock location" ++#~ msgstr "时钟位置" ++ ++#~ msgid "" ++#~ "This allows you to update the extension directly from the GitHub " ++#~ "repository." ++#~ msgstr "这样可以帮助您直接从 GitHub 仓库更新本扩展。" ++ ++#~ msgid "Updates" ++#~ msgstr "更新" ++ ++#~ msgid "Periodically check for updates" ++#~ msgstr "定期检查更新" ++ ++#~ msgid "Check now" ++#~ msgstr "立刻检查" ++ ++#~ msgid "" ++#~ "Be aware, these official Dash to " ++#~ "Panel releases might not be reviewed yet on extensions.gnome.org! " ++#~ "Read more" ++#~ msgstr "" ++#~ "请注意,这些官方发布的 Dash to " ++#~ "Panel 版本可能还没有通过 extensions.gnome.org 的审查! 详细了解" ++ ++#~ msgid "Highlight color" ++#~ msgstr "高亮颜色" ++ ++#~ msgid "Preview timeout on icon leave (ms)" ++#~ msgstr "离开图标时的预览延时(毫秒)" ++ ++#~ msgid "" ++#~ "If set too low, the window preview of running applications may seem to " ++#~ "close too quickly when trying to enter the popup. If set too high, the " ++#~ "preview may linger too long when moving to an adjacent icon." ++#~ msgstr "" ++#~ "如果设置过低,在尝试进入弹出菜单时正在运行程序的窗口预览可能会关闭得过快。" ++#~ "如果设置过高,在移动至临接图标时预览可能滞留过长时间。" ++ ++#~ msgid "Middle click to close window" ++#~ msgstr "中键点击以关闭窗口" ++ ++#~ msgid "Width of the window previews (px)" ++#~ msgstr "窗口预览宽度(像素)" ++ ++#~ msgid "Height of the window previews (px)" ++#~ msgstr "窗口预览高度(像素)" ++ ++#~ msgid "Padding of the window previews (px)" ++#~ msgstr "窗口预览边缘宽度(像素)" ++ ++#~ msgid "Natural" ++#~ msgstr "自然" ++ ++#~ msgid "Left side of panel" ++#~ msgstr "面板左侧" ++ ++#~ msgid "Centered in content" ++#~ msgstr "内容居中" ++ ++#~ msgid "Github" ++#~ msgstr "Github" +diff --git a/po/zh_TW.po b/po/zh_TW.po +index 4bdf7154..1fc6b171 100644 +--- a/po/zh_TW.po ++++ b/po/zh_TW.po +@@ -1,5 +1,6 @@ + # #-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-# + # #-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-# ++# #-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-# + # Chinese (Taiwan) translation for gnome-shell-extensions. + # Copyright (C) 2011 gnome-shell-extensions's COPYRIGHT HOLDER + # This file is distributed under the same license as the gnome-shell-extensions package. +@@ -18,11 +19,19 @@ + # This file is distributed under the same license as the desktop-icons package. + # Yi-Jyun Pan , 2018. + # ++# #-#-#-#-# zh_TW.po (Dash To Panel) #-#-#-#-# ++# Dash to Panel Traditional Chinese Translation ++# This file is distributed under the same license as the Dash To Panel package. ++# ++# Jack Wu , 2019. ++# pan93412 , 2019. ++# + #, fuzzy + msgid "" + msgstr "" + "#-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" + "#-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"#-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" + "Project-Id-Version: gnome-shell-extensions gnome-3-0\n" + "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/" + "issues\n" +@@ -62,6 +71,19 @@ msgstr "" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" + "X-Generator: Poedit 2.3.1\n" ++"#-#-#-#-# zh_TW.po (Dash To Panel) #-#-#-#-#\n" ++"Project-Id-Version: Dash To Panel\n" ++"Report-Msgid-Bugs-To: \n" ++"POT-Creation-Date: 2019-07-19 20:51+0800\n" ++"PO-Revision-Date: 2019-07-28 14:38+0800\n" ++"Last-Translator: pan93412 \n" ++"Language-Team: Chinese (Traditional)\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.2.1\n" ++"Plural-Forms: nplurals=1; plural=0;\n" + + #: data/gnome-classic.desktop.in:3 + msgid "GNOME Classic" +@@ -335,17 +357,29 @@ msgstr "次螢幕 " + msgid "Intelligent autohide customization" + msgstr "自訂智慧型自動隱藏" + +-#: prefs.js:367 prefs.js:560 prefs.js:616 ++#: prefs.js:367 prefs.js:560 prefs.js:616 prefs.js:317 prefs.js:515 ++#: prefs.js:658 prefs.js:778 prefs.js:842 prefs.js:930 prefs.js:1023 ++#: prefs.js:1260 prefs.js:1344 prefs.js:1455 prefs.js:1489 prefs.js:1531 ++#, fuzzy + msgid "Reset to defaults" +-msgstr "重設回預設值" ++msgstr "" ++"#-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"重設回預設值\n" ++"#-#-#-#-# zh_TW.po (Dash To Panel) #-#-#-#-#\n" ++"重設至預設值" + + #: prefs.js:553 + msgid "Show dock and application numbers" + msgstr "顯示 Dock 和應用程式數量" + +-#: prefs.js:609 ++#: prefs.js:609 prefs.js:1337 ++#, fuzzy + msgid "Customize middle-click behavior" +-msgstr "自訂滑鼠中鍵行為" ++msgstr "" ++"#-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"自訂滑鼠中鍵行為\n" ++"#-#-#-#-# zh_TW.po (Dash To Panel) #-#-#-#-#\n" ++"自訂滑鼠中鍵點選行為" + + #: prefs.js:692 + msgid "Customize running indicators" +@@ -391,31 +425,51 @@ msgstr "退出" + msgid "Unmount" + msgstr "卸載" + +-#: Settings.ui.h:1 ++#: Settings.ui.h:1 Settings.ui.h:2 ++#, fuzzy + msgid "" + "When set to minimize, double clicking minimizes all the windows of the " + "application." +-msgstr "當設定為最小化時,雙點滑鼠可將應用程式的所有視窗最小化。" ++msgstr "" ++"#-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"當設定為最小化時,雙點滑鼠可將應用程式的所有視窗最小化。\n" ++"#-#-#-#-# zh_TW.po (Dash To Panel) #-#-#-#-#\n" ++"當設定為最小化時,點兩下可將應用程式的所有視窗最小化。" + +-#: Settings.ui.h:2 ++#: Settings.ui.h:2 Settings.ui.h:3 ++#, fuzzy + msgid "Shift+Click action" +-msgstr "Shift+滑鼠點按 動作" ++msgstr "" ++"#-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"Shift+滑鼠點按 動作\n" ++"#-#-#-#-# zh_TW.po (Dash To Panel) #-#-#-#-#\n" ++"Shift + 點選動作" + + #: Settings.ui.h:3 + msgid "Raise window" + msgstr "擡升視窗" + +-#: Settings.ui.h:4 ++#: Settings.ui.h:4 Settings.ui.h:5 + msgid "Minimize window" + msgstr "最小化視窗" + +-#: Settings.ui.h:5 ++#: Settings.ui.h:5 Settings.ui.h:6 ++#, fuzzy + msgid "Launch new instance" +-msgstr "啟動新實體" ++msgstr "" ++"#-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"啟動新實體\n" ++"#-#-#-#-# zh_TW.po (Dash To Panel) #-#-#-#-#\n" ++"啟動新實例" + +-#: Settings.ui.h:6 ++#: Settings.ui.h:6 Settings.ui.h:7 ++#, fuzzy + msgid "Cycle through windows" +-msgstr "在視窗之間循環" ++msgstr "" ++"#-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"在視窗之間循環\n" ++"#-#-#-#-# zh_TW.po (Dash To Panel) #-#-#-#-#\n" ++"在視窗間循環" + + #: Settings.ui.h:7 + msgid "Minimize or overview" +@@ -433,25 +487,45 @@ msgstr "最小化或顯示預覽" + msgid "Focus or show previews" + msgstr "聚焦或顯示預覽" + +-#: Settings.ui.h:11 ++#: Settings.ui.h:11 appIcons.js:1306 appIcons.js:1368 appIcons.js:1370 ++#, fuzzy + msgid "Quit" +-msgstr "結束" ++msgstr "" ++"#-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"結束\n" ++"#-#-#-#-# zh_TW.po (Dash To Panel) #-#-#-#-#\n" ++"離開" + +-#: Settings.ui.h:12 ++#: Settings.ui.h:12 Settings.ui.h:11 ++#, fuzzy + msgid "Behavior for Middle-Click." +-msgstr "滑鼠中鍵的行為。" ++msgstr "" ++"#-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"滑鼠中鍵的行為。\n" ++"#-#-#-#-# zh_TW.po (Dash To Panel) #-#-#-#-#\n" ++"滑鼠中鍵行為。" + +-#: Settings.ui.h:13 ++#: Settings.ui.h:13 Settings.ui.h:12 + msgid "Middle-Click action" + msgstr "滑鼠中鍵動作" + +-#: Settings.ui.h:14 ++#: Settings.ui.h:14 Settings.ui.h:13 ++#, fuzzy + msgid "Behavior for Shift+Middle-Click." +-msgstr "Shift+滑鼠中鍵的行為。" ++msgstr "" ++"#-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"Shift+滑鼠中鍵的行為。\n" ++"#-#-#-#-# zh_TW.po (Dash To Panel) #-#-#-#-#\n" ++"Shift + 滑鼠中鍵行為。" + +-#: Settings.ui.h:15 ++#: Settings.ui.h:15 Settings.ui.h:14 ++#, fuzzy + msgid "Shift+Middle-Click action" +-msgstr "Shift+滑鼠中鍵動作" ++msgstr "" ++"#-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"Shift+滑鼠中鍵動作\n" ++"#-#-#-#-# zh_TW.po (Dash To Panel) #-#-#-#-#\n" ++"Shift + 滑鼠中鍵動作" + + #: Settings.ui.h:16 + msgid "Enable Unity7 like glossy backlit items" +@@ -489,13 +563,23 @@ msgstr "在所有顯示器顯示。" + msgid "Position on screen" + msgstr "螢幕上的位置" + +-#: Settings.ui.h:26 ++#: Settings.ui.h:26 Settings.ui.h:95 ++#, fuzzy + msgid "Bottom" +-msgstr "下面" ++msgstr "" ++"#-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"下面\n" ++"#-#-#-#-# zh_TW.po (Dash To Panel) #-#-#-#-#\n" ++"底部" + +-#: Settings.ui.h:27 ++#: Settings.ui.h:27 Settings.ui.h:96 ++#, fuzzy + msgid "Top" +-msgstr "上面" ++msgstr "" ++"#-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"上面\n" ++"#-#-#-#-# zh_TW.po (Dash To Panel) #-#-#-#-#\n" ++"頂部" + + #: Settings.ui.h:29 + msgid "" +@@ -527,13 +611,23 @@ msgstr "固定圖示大小:捲動滑鼠以揭開其他圖示" + msgid "Position and size" + msgstr "位置與大小" + +-#: Settings.ui.h:36 ++#: Settings.ui.h:36 Settings.ui.h:183 ++#, fuzzy + msgid "Show favorite applications" +-msgstr "顯示喜愛的應用程式" ++msgstr "" ++"#-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"顯示喜愛的應用程式\n" ++"#-#-#-#-# zh_TW.po (Dash To Panel) #-#-#-#-#\n" ++"顯示收藏應用程式" + +-#: Settings.ui.h:37 ++#: Settings.ui.h:37 Settings.ui.h:184 ++#, fuzzy + msgid "Show running applications" +-msgstr "顯示執行中應用程式" ++msgstr "" ++"#-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"顯示執行中應用程式\n" ++"#-#-#-#-# zh_TW.po (Dash To Panel) #-#-#-#-#\n" ++"顯示正在執行的應用程式" + + #: Settings.ui.h:38 + msgid "Isolate workspaces." +@@ -553,17 +647,27 @@ msgid "" + "extension website." + msgstr "若停用,這些設定值可從 gnome-tweak-tool 或擴充套件網站存取。" + +-#: Settings.ui.h:42 ++#: Settings.ui.h:42 Settings.ui.h:185 ++#, fuzzy + msgid "Show Applications icon" +-msgstr "顯示 應用程式 圖示" ++msgstr "" ++"#-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"顯示 應用程式 圖示\n" ++"#-#-#-#-# zh_TW.po (Dash To Panel) #-#-#-#-#\n" ++"顯示應用程式圖示" + + #: Settings.ui.h:43 + msgid "Move the applications button at the beginning of the dock." + msgstr "將應用程式按鈕移動到 Dock 開頭。" + +-#: Settings.ui.h:44 ++#: Settings.ui.h:44 Settings.ui.h:186 ++#, fuzzy + msgid "Animate Show Applications." +-msgstr "讓 顯示應用程式 有動畫。" ++msgstr "" ++"#-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"讓 顯示應用程式 有動畫。\n" ++"#-#-#-#-# zh_TW.po (Dash To Panel) #-#-#-#-#\n" ++"動畫化顯示應用程式" + + #: Settings.ui.h:45 + msgid "Show trash can" +@@ -577,24 +681,38 @@ msgstr "顯示掛載儲存區和裝置" + msgid "Launchers" + msgstr "啟動器" + +-#: Settings.ui.h:48 ++#: Settings.ui.h:48 Settings.ui.h:198 ++#, fuzzy + msgid "" + "Enable Super+(0-9) as shortcuts to activate apps. It can also be used " + "together with Shift and Ctrl." + msgstr "" +-"啟用 Super+(0-9) 作為啟用 App 的快捷鍵。這也可以搭配 Shift 和 Ctrl 使用。" ++"#-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"啟用 Super+(0-9) 作為啟用 App 的快捷鍵。這也可以搭配 Shift 和 Ctrl 使用。\n" ++"#-#-#-#-# zh_TW.po (Dash To Panel) #-#-#-#-#\n" ++"將 Super+(0-9) 作為啟用應用程式的快速鍵。它也可以和 Shift 及 Ctrl 共同使用。" + + #: Settings.ui.h:49 + msgid "Use keyboard shortcuts to activate apps" + msgstr "使用鍵盤快捷鍵啟用 App" + +-#: Settings.ui.h:50 ++#: Settings.ui.h:50 Settings.ui.h:195 ++#, fuzzy + msgid "Behaviour when clicking on the icon of a running application." +-msgstr "點按執行中應用程式圖示時的行為。" ++msgstr "" ++"#-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"點按執行中應用程式圖示時的行為。\n" ++"#-#-#-#-# zh_TW.po (Dash To Panel) #-#-#-#-#\n" ++"點選正在執行的應用程式圖示時的行為。" + +-#: Settings.ui.h:51 ++#: Settings.ui.h:51 Settings.ui.h:196 ++#, fuzzy + msgid "Click action" +-msgstr "點按動作" ++msgstr "" ++"#-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"點按動作\n" ++"#-#-#-#-# zh_TW.po (Dash To Panel) #-#-#-#-#\n" ++"點選行為" + + #: Settings.ui.h:53 + msgid "Behaviour when scrolling on the icon of an application." +@@ -612,7 +730,7 @@ msgstr "什麼都不做" + msgid "Switch workspace" + msgstr "切換工作區" + +-#: Settings.ui.h:57 ++#: Settings.ui.h:57 Settings.ui.h:200 + msgid "Behavior" + msgstr "行為" + +@@ -643,33 +761,58 @@ msgstr "自訂視窗計數器的指示器" + msgid "Default" + msgstr "預設" + +-#: Settings.ui.h:64 ++#: Settings.ui.h:64 Settings.ui.h:163 ++#, fuzzy + msgid "Dots" +-msgstr "圓點" ++msgstr "" ++"#-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"圓點\n" ++"#-#-#-#-# zh_TW.po (Dash To Panel) #-#-#-#-#\n" ++"點" + +-#: Settings.ui.h:65 ++#: Settings.ui.h:65 Settings.ui.h:164 ++#, fuzzy + msgid "Squares" +-msgstr "方框" ++msgstr "" ++"#-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"方框\n" ++"#-#-#-#-# zh_TW.po (Dash To Panel) #-#-#-#-#\n" ++"方塊" + +-#: Settings.ui.h:66 ++#: Settings.ui.h:66 Settings.ui.h:165 ++#, fuzzy + msgid "Dashes" +-msgstr "小槓線" ++msgstr "" ++"#-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"小槓線\n" ++"#-#-#-#-# zh_TW.po (Dash To Panel) #-#-#-#-#\n" ++"虛線" + +-#: Settings.ui.h:67 ++#: Settings.ui.h:67 Settings.ui.h:166 ++#, fuzzy + msgid "Segmented" +-msgstr "長段線" ++msgstr "" ++"#-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"長段線\n" ++"#-#-#-#-# zh_TW.po (Dash To Panel) #-#-#-#-#\n" ++"分割線" + +-#: Settings.ui.h:68 ++#: Settings.ui.h:68 Settings.ui.h:167 + msgid "Solid" + msgstr "實心" + +-#: Settings.ui.h:69 ++#: Settings.ui.h:69 Settings.ui.h:168 + msgid "Ciliora" + msgstr "Ciliora" + +-#: Settings.ui.h:70 ++#: Settings.ui.h:70 Settings.ui.h:169 ++#, fuzzy + msgid "Metro" +-msgstr "現代" ++msgstr "" ++"#-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"現代\n" ++"#-#-#-#-# zh_TW.po (Dash To Panel) #-#-#-#-#\n" ++"Metro" + + #: Settings.ui.h:71 + msgid "Set the background color for the dash." +@@ -683,7 +826,7 @@ msgstr "自訂 Dash 色彩" + msgid "Tune the dash background opacity." + msgstr "調整 Dash 的背景不透明度。" + +-#: Settings.ui.h:75 ++#: Settings.ui.h:75 Settings.ui.h:90 + msgid "Fixed" + msgstr "固定" + +@@ -703,9 +846,14 @@ msgstr "強制邊緣直角" + msgid "Appearance" + msgstr "外觀" + +-#: Settings.ui.h:80 ++#: Settings.ui.h:80 Settings.ui.h:218 ++#, fuzzy + msgid "version: " +-msgstr "版本:" ++msgstr "" ++"#-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"版本:\n" ++"#-#-#-#-# zh_TW.po (Dash To Panel) #-#-#-#-#\n" ++"版本: " + + #: Settings.ui.h:81 + msgid "Moves the dash out of the overview transforming it in a dock" +@@ -719,17 +867,23 @@ msgstr "作者" + msgid "Webpage" + msgstr "網頁" + +-#: Settings.ui.h:84 ++#: Settings.ui.h:84 Settings.ui.h:224 ++#, fuzzy + msgid "" + "This program comes with ABSOLUTELY NO WARRANTY.\n" +-"See the GNU General Public License, version 2 or later for details." ++"See the GNU General Public License, version 2 or later for details." + msgstr "" ++"#-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" + "本程式「絕無任何擔保」。\n" + "請見 GNU " +-"通用公眾授權第 2 版,或後續版本 深入瞭解更多細節。" ++"通用公眾授權第 2 版,或後續版本 深入瞭解更多細節。\n" ++"#-#-#-#-# zh_TW.po (Dash To Panel) #-#-#-#-#\n" ++"本程式不提供任何擔保。\n" ++"請檢視 GNU 通用公共許可證 (GPL),第二版或更新版 以瞭解詳情。" + +-#: Settings.ui.h:86 ++#: Settings.ui.h:86 Settings.ui.h:226 + msgid "About" + msgstr "關於" + +@@ -745,9 +899,14 @@ msgstr "最小化不透明度" + msgid "Maximum opacity" + msgstr "最大化不透明度" + +-#: Settings.ui.h:90 ++#: Settings.ui.h:90 Settings.ui.h:116 ++#, fuzzy + msgid "Number overlay" +-msgstr "數字覆層" ++msgstr "" ++"#-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"數字覆層\n" ++"#-#-#-#-# zh_TW.po (Dash To Panel) #-#-#-#-#\n" ++"編號重疊" + + #: Settings.ui.h:91 + msgid "" +@@ -769,9 +928,14 @@ msgstr "若使用自動隱藏,則觸發快捷鍵時 Dock 會出現一段時間 + msgid "Shortcut for the options above" + msgstr "上述選項的快捷鍵" + +-#: Settings.ui.h:95 ++#: Settings.ui.h:95 Settings.ui.h:59 ++#, fuzzy + msgid "Syntax: , , , " +-msgstr "語法:, , , " ++msgstr "" ++"#-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"語法:, , , \n" ++"#-#-#-#-# zh_TW.po (Dash To Panel) #-#-#-#-#\n" ++"語法: , , , " + + #: Settings.ui.h:96 + msgid "Hide timeout (s)" +@@ -801,7 +965,7 @@ msgstr "在 Dock 不會遮到應用程式視窗時顯示。" + msgid "Dodge windows" + msgstr "躲避視窗" + +-#: Settings.ui.h:103 ++#: Settings.ui.h:103 Settings.ui.h:49 + msgid "All windows" + msgstr "所有視窗" + +@@ -926,7 +1090,7 @@ msgstr "在終端器開啟" + msgid "Change Background…" + msgstr "變更背景圖片…" + +-#: desktopGrid.js:355 ++#: desktopGrid.js:355 appIcons.js:1620 + msgid "Settings" + msgstr "設定" + +@@ -1010,6 +1174,900 @@ msgstr "顯示掛載裝置" + msgid "Show mounted drives in the desktop." + msgstr "在桌面顯示掛載裝置。" + ++#: appIcons.js:1306 ++#, fuzzy ++msgid "New Window" ++msgstr "" ++"#-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n" ++"新視窗\n" ++"#-#-#-#-# zh_TW.po (Dash To Panel) #-#-#-#-#\n" ++"建立視窗" ++ ++#: prefs.js:310 ++msgid "Running Indicator Options" ++msgstr "執行指示器選項" ++ ++#: prefs.js:460 ++msgid "Default (Primary monitor)" ++msgstr "預設(主顯示器)" ++ ++#: prefs.js:463 ++msgid "Monitor " ++msgstr "顯示器 " ++ ++#: prefs.js:508 ++msgid "Multi-monitors options" ++msgstr "多顯示器選項" ++ ++#: prefs.js:651 ++msgid "Dynamic opacity options" ++msgstr "動態半透明選項" ++ ++#: prefs.js:771 ++msgid "Intellihide options" ++msgstr "智慧隱藏選項" ++ ++#: prefs.js:835 ++msgid "Show Applications options" ++msgstr "“顯示應用程式”選項" ++ ++#: prefs.js:923 ++msgid "Show Desktop options" ++msgstr "“顯示桌面”選項" ++ ++#: prefs.js:1016 ++msgid "Window preview options" ++msgstr "視窗預覽選項" ++ ++#: prefs.js:1253 ++msgid "Ungrouped application options" ++msgstr "未分組的應用程式選項" ++ ++#: prefs.js:1448 ++msgid "Advanced hotkeys options" ++msgstr "進階快速鍵選項" ++ ++#: prefs.js:1482 ++msgid "Secondary Menu Options" ++msgstr "次級選單選項" ++ ++#: prefs.js:1524 ++msgid "Advanced Options" ++msgstr "進階選項" ++ ++#: prefs.js:1611 ++msgid "Export settings" ++msgstr "匯出設定" ++ ++#: prefs.js:1628 ++msgid "Import settings" ++msgstr "匯入設定" ++ ++#: appIcons.js:1287 ++msgid "Show Details" ++msgstr "顯示詳細資訊" ++ ++#: appIcons.js:1370 ++msgid "Windows" ++msgstr "視窗" ++ ++#: appIcons.js:1578 ++msgid "Power options" ++msgstr "電源選項" ++ ++#: appIcons.js:1583 ++msgid "Event logs" ++msgstr "事件日誌" ++ ++#: appIcons.js:1588 ++msgid "System" ++msgstr "系統" ++ ++#: appIcons.js:1593 ++msgid "Device Management" ++msgstr "裝置管理" ++ ++#: appIcons.js:1598 ++msgid "Disk Management" ++msgstr "磁碟管理" ++ ++#: appIcons.js:1605 ++msgid "Terminal" ++msgstr "終端" ++ ++#: appIcons.js:1610 ++msgid "System monitor" ++msgstr "系統監視器" ++ ++#: appIcons.js:1615 ++msgid "Files" ++msgstr "檔案" ++ ++#: appIcons.js:1627 ++msgid "Unlock taskbar" ++msgstr "解鎖工作列" ++ ++#: appIcons.js:1627 ++msgid "Lock taskbar" ++msgstr "鎖定工作列" ++ ++#: appIcons.js:1632 ++msgid "Dash to Panel Settings" ++msgstr "Dash to Panel 設定" ++ ++#: appIcons.js:1639 ++msgid "Restore Windows" ++msgstr "復原視窗" ++ ++#: appIcons.js:1639 ++msgid "Show Desktop" ++msgstr "顯示桌面" ++ ++#: Settings.ui.h:1 ++msgid "Nothing yet!" ++msgstr "這裏什麼也沒有!" ++ ++#: Settings.ui.h:4 ++msgid "Raise windows" ++msgstr "抬升視窗" ++ ++#: Settings.ui.h:8 ++msgid "Cycle windows + minimize" ++msgstr "循環視窗並最小化" ++ ++#: Settings.ui.h:9 ++msgid "Toggle single / Preview multiple" ++msgstr "切換單視窗 / 預覽多視窗" ++ ++#: Settings.ui.h:15 ++msgid "Isolate monitors" ++msgstr "隔離顯示器" ++ ++#: Settings.ui.h:16 ++msgid "Display favorite applications on all monitors" ++msgstr "在所有顯示器上顯示收藏的應用程式" ++ ++#: Settings.ui.h:17 ++msgid "Display the clock on all monitors" ++msgstr "在所有顯示器上顯示時鐘" ++ ++#: Settings.ui.h:18 ++msgid "Display the status menu on all monitors" ++msgstr "在所有顯示器上顯示狀態選單" ++ ++#: Settings.ui.h:19 ++msgid "Integrate AppMenu items" ++msgstr "整合 AppMenu 項目" ++ ++#: Settings.ui.h:20 ++msgid "Show Details menu item" ++msgstr "顯示詳細資料 選單項目" ++ ++#: Settings.ui.h:21 ++msgid "Highlight focused application" ++msgstr "突顯焦點應用" ++ ++#: Settings.ui.h:22 ++msgid "Icon dominant color" ++msgstr "圖示主色" ++ ++#: Settings.ui.h:23 ++msgid "Custom color" ++msgstr "自訂顏色" ++ ++#: Settings.ui.h:24 ++msgid "Highlight opacity" ++msgstr "突顯不透明度" ++ ++#: Settings.ui.h:25 ++msgid "Indicator height (px)" ++msgstr "指示器高度(像素 px)" ++ ++#: Settings.ui.h:26 ++msgid "Indicator color - Icon Dominant" ++msgstr "指示器顏色 - 主圖示" ++ ++#: Settings.ui.h:27 ++msgid "Indicator color - Override Theme" ++msgstr "指示器顏色 - 覆寫主題" ++ ++#: Settings.ui.h:28 ++msgid "1 window open (or ungrouped)" ++msgstr "打開了(或未分組)1 個視窗" ++ ++#: Settings.ui.h:29 ++msgid "Apply to all" ++msgstr "全部套用" ++ ++#: Settings.ui.h:30 ++msgid "2 windows open" ++msgstr "打開了 2 個視窗" ++ ++#: Settings.ui.h:31 ++msgid "3 windows open" ++msgstr "打開了 3 個視窗" ++ ++#: Settings.ui.h:32 ++msgid "4+ windows open" ++msgstr "打開了 4 個以上的視窗" ++ ++#: Settings.ui.h:33 ++msgid "Use different for unfocused" ++msgstr "為未聚焦視窗使用不同樣式" ++ ++#: Settings.ui.h:34 ++msgid "Font size (px) of the application titles (default is 14)" ++msgstr "應用程式標題字型大小(像素)(預設為 14)" ++ ++#: Settings.ui.h:35 ++msgid "Font weight of application titles" ++msgstr "應用程式標題字型粗細" ++ ++#: Settings.ui.h:36 ++msgid "inherit from theme" ++msgstr "繼承自主題" ++ ++#: Settings.ui.h:37 ++msgid "normal" ++msgstr "normal" ++ ++#: Settings.ui.h:38 ++msgid "lighter" ++msgstr "lighter" ++ ++#: Settings.ui.h:39 ++msgid "bold" ++msgstr "bold" ++ ++#: Settings.ui.h:40 ++msgid "bolder" ++msgstr "bolder" ++ ++#: Settings.ui.h:41 ++msgid "Font color of the application titles" ++msgstr "應用程式標題字型顏色" ++ ++#: Settings.ui.h:42 ++msgid "Maximum width (px) of the application titles (default is 160)" ++msgstr "應用程式標題寬度上限(像素)(預設為 160)" ++ ++#: Settings.ui.h:43 ++msgid "Use a fixed width for the application titles" ++msgstr "為所有應用程式標題使用固定寬度" ++ ++#: Settings.ui.h:44 ++msgid "" ++"The application titles all have the same width, even if their texts are " ++"shorter than the maximum width. The maximum width value is used as the fixed " ++"width." ++msgstr "" ++"所有的應用程式標題共用相同的寬度,即使它們的文字比寬度上限短。寬度上限值被用" ++"作固定寬度。" ++ ++#: Settings.ui.h:45 ++msgid "Display running indicators on unfocused applications" ++msgstr "在未聚焦的應用程式上顯示正在執行的指示器" ++ ++#: Settings.ui.h:46 ++msgid "Use the favorite icons as application launchers" ++msgstr "為應用程式啟動器使用收藏的圖示" ++ ++#: Settings.ui.h:47 ++msgid "Only hide the panel when it is obstructed by windows " ++msgstr "僅在面板被視窗阻擋時才將其隱藏 " ++ ++#: Settings.ui.h:48 ++msgid "The panel hides from" ++msgstr "面板隱藏自" ++ ++#: Settings.ui.h:50 ++msgid "Focused windows" ++msgstr "焦點視窗" ++ ++#: Settings.ui.h:51 ++msgid "Maximized windows" ++msgstr "最大化視窗" ++ ++#: Settings.ui.h:52 ++msgid "Require pressure at the edge of the screen to reveal the panel" ++msgstr "在螢幕邊緣受到一定游標壓力時顯示面板" ++ ++#: Settings.ui.h:53 ++msgid "Required pressure threshold (px)" ++msgstr "所需壓力閾值(像素)" ++ ++#: Settings.ui.h:54 ++msgid "Required pressure timeout (ms)" ++msgstr "所需壓力等候時間(毫秒)" ++ ++#: Settings.ui.h:55 ++msgid "Allow the panel to be revealed while in fullscreen mode" ++msgstr "允許在全螢幕模式下顯示面板" ++ ++#: Settings.ui.h:56 ++msgid "Only hide secondary panels (requires multi-monitors option)" ++msgstr "僅隱藏次級面板(需要多顯示器選項)" ++ ++#: Settings.ui.h:57 ++msgid "e.g. i" ++msgstr "例如 i" ++ ++#: Settings.ui.h:58 ++msgid "Keyboard shortcut to reveal and hold the panel" ++msgstr "顯示並保持面板的鍵盤快速鍵" ++ ++#: Settings.ui.h:60 ++msgid "Hide and reveal animation duration (ms)" ++msgstr "隱藏及顯示動畫持續時間(毫秒)" ++ ++#: Settings.ui.h:61 ++msgid "Delay before hiding the panel (ms)" ++msgstr "隱藏面板前的延遲(毫秒)" ++ ++#: Settings.ui.h:62 ++msgid "Time (ms) before showing (100 is default)" ++msgstr "顯示前的延遲(毫秒)(預設為 100)" ++ ++#: Settings.ui.h:63 ++msgid "Time (ms) before hiding (100 is default)" ++msgstr "隱藏前的延遲(毫秒)(預設為 100)" ++ ++#: Settings.ui.h:64 ++msgid "Animation time (ms)" ++msgstr "動畫時間(毫秒)" ++ ++#: Settings.ui.h:65 ++msgid "Middle click on the preview to close the window" ++msgstr "在預覽介面點選中鍵以關閉視窗" ++ ++#: Settings.ui.h:66 ++msgid "Window previews preferred size (px)" ++msgstr "視窗預覽慣用大小(像素)" ++ ++#: Settings.ui.h:67 ++msgid "Window previews aspect ratio Y (height)" ++msgstr "視窗預覽外觀比例 Y(高度)" ++ ++#: Settings.ui.h:68 ++msgid "Window previews padding (px)" ++msgstr "視窗預覽間距(像素)" ++ ++#: Settings.ui.h:69 ++msgid "1" ++msgstr "1" ++ ++#: Settings.ui.h:70 ++msgid "2" ++msgstr "2" ++ ++#: Settings.ui.h:71 ++msgid "3" ++msgstr "3" ++ ++#: Settings.ui.h:72 ++msgid "4" ++msgstr "4" ++ ++#: Settings.ui.h:73 ++msgid "5" ++msgstr "5" ++ ++#: Settings.ui.h:74 ++msgid "6" ++msgstr "6" ++ ++#: Settings.ui.h:75 ++msgid "7" ++msgstr "7" ++ ++#: Settings.ui.h:76 ++msgid "8" ++msgstr "8" ++ ++#: Settings.ui.h:77 ++msgid "9" ++msgstr "9" ++ ++#: Settings.ui.h:78 ++msgid "10" ++msgstr "10" ++ ++#: Settings.ui.h:79 ++msgid "11" ++msgstr "11" ++ ++#: Settings.ui.h:80 ++msgid "12" ++msgstr "12" ++ ++#: Settings.ui.h:81 ++msgid "13" ++msgstr "13" ++ ++#: Settings.ui.h:82 ++msgid "14" ++msgstr "14" ++ ++#: Settings.ui.h:83 ++msgid "15" ++msgstr "15" ++ ++#: Settings.ui.h:84 ++msgid "16" ++msgstr "16" ++ ++#: Settings.ui.h:85 ++msgid "17" ++msgstr "17" ++ ++#: Settings.ui.h:86 ++msgid "18" ++msgstr "18" ++ ++#: Settings.ui.h:87 ++msgid "19" ++msgstr "19" ++ ++#: Settings.ui.h:88 ++msgid "20" ++msgstr "20" ++ ++#: Settings.ui.h:89 ++msgid "21" ++msgstr "21" ++ ++#: Settings.ui.h:91 ++msgid "Window previews aspect ratio X (width)" ++msgstr "視窗預覽外觀比例 X(寬度)" ++ ++#: Settings.ui.h:92 ++msgid "Use custom opacity for the previews background" ++msgstr "為預覽介面背景使用自定義不透明度" ++ ++#: Settings.ui.h:93 ++msgid "If disabled, the previews background have the same opacity as the panel" ++msgstr "若停用,則預覽介面背景將與面板使用相同的不透明度" ++ ++#: Settings.ui.h:94 ++msgid "Close button and header position" ++msgstr "關閉按鈕及頁首位置" ++ ++#: Settings.ui.h:97 ++msgid "Display window preview headers" ++msgstr "顯示視窗預覽開頭" ++ ++#: Settings.ui.h:98 ++msgid "Font size (px) of the preview titles" ++msgstr "預覽標題字型大小(像素)" ++ ++#: Settings.ui.h:99 ++msgid "Font weight of the preview titles" ++msgstr "預覽標題字型粗細" ++ ++#: Settings.ui.h:100 ++msgid "Font color of the preview titles" ++msgstr "預覽標題字型顏色" ++ ++#: Settings.ui.h:101 ++msgid "Enable window peeking" ++msgstr "啟用視窗查看" ++ ++#: Settings.ui.h:102 ++msgid "" ++"When hovering over a window preview for some time, the window gets " ++"distinguished." ++msgstr "當滑鼠指標在某一視窗預覽介面上懸停一段時間,區分該視窗。" ++ ++#: Settings.ui.h:103 ++msgid "Enter window peeking mode timeout (ms)" ++msgstr "進入視窗查看模式等候時間(毫秒)" ++ ++#: Settings.ui.h:104 ++msgid "50" ++msgstr "50" ++ ++#: Settings.ui.h:105 ++msgid "" ++"Time of inactivity while hovering over a window preview needed to enter the " ++"window peeking mode." ++msgstr "當在某一視窗預覽介面上暫留並進入視窗查看模式所需的時間。" ++ ++#: Settings.ui.h:106 ++msgid "Window peeking mode opacity" ++msgstr "視窗查看模式不透明度" ++ ++#: Settings.ui.h:107 ++msgid "0" ++msgstr "0" ++ ++#: Settings.ui.h:108 ++msgid "" ++"All windows except for the peeked one have their opacity set to the same " ++"value." ++msgstr "除被查看的視窗外,所有視窗的不透明度將被設定為同一值。" ++ ++#: Settings.ui.h:109 ++msgid "Super" ++msgstr "Super" ++ ++#: Settings.ui.h:110 ++msgid "Super + Alt" ++msgstr "Super + Alt" ++ ++#: Settings.ui.h:111 ++msgid "Hotkeys prefix" ++msgstr "快速鍵" ++ ++#: Settings.ui.h:112 ++msgid "Hotkeys will either be Super+Number or Super+Alt+Num" ++msgstr "快速鍵將被設定為 Super+Number 或者 Super+Alt+Num" ++ ++#: Settings.ui.h:113 ++msgid "Never" ++msgstr "永不" ++ ++#: Settings.ui.h:114 ++msgid "Show temporarily" ++msgstr "暫時顯示" ++ ++#: Settings.ui.h:115 ++msgid "Always visible" ++msgstr "永遠顯示" ++ ++#: Settings.ui.h:117 ++msgid "" ++"Temporarily show the application numbers over the icons when using the " ++"hotkeys." ++msgstr "當使用快速鍵時暫時在應用程式圖示上顯示其編號。" ++ ++#: Settings.ui.h:118 ++msgid "Hide timeout (ms)" ++msgstr "隱藏等候時間(毫秒)" ++ ++#: Settings.ui.h:119 ++msgid "e.g. q" ++msgstr "例如 q" ++ ++#: Settings.ui.h:120 ++msgid "Shortcut to show the overlay for 2 seconds" ++msgstr "顯示 2 秒重疊的快速鍵" ++ ++#: Settings.ui.h:121 ++msgid "Show window previews on hotkey" ++msgstr "使用快速鍵時顯示視窗預覽介面" ++ ++#: Settings.ui.h:122 ++msgid "Show previews when the application have multiple instances" ++msgstr "當應用程式有多個實例時顯示預覽" ++ ++#: Settings.ui.h:123 ++msgid "Current Show Applications icon" ++msgstr "目前的“顯示應用程式”圖示" ++ ++#: Settings.ui.h:124 ++msgid "Select a Show Applications image icon" ++msgstr "選取一個“顯示應用程式”圖示" ++ ++#: Settings.ui.h:125 ++msgid "Custom Show Applications image icon" ++msgstr "自訂“顯示應用程式”圖示圖片" ++ ++#: Settings.ui.h:126 ++msgid "Show Applications icon side padding (px)" ++msgstr "“顯示應用程式”圖示邊框間距" ++ ++#: Settings.ui.h:127 ++msgid "Show Desktop button width (px)" ++msgstr "“顯示桌面”按鈕大小(像素)" ++ ++#: Settings.ui.h:128 ++msgid "Reveal the desktop when hovering the Show Desktop button" ++msgstr "當滑鼠指標在“顯示桌面”按鈕上懸停一段時間則預覽桌面" ++ ++#: Settings.ui.h:129 ++msgid "Delay before revealing the desktop (ms)" ++msgstr "預覽桌面前的延遲(毫秒)" ++ ++#: Settings.ui.h:130 ++msgid "Fade duration (ms)" ++msgstr "淡出效果持續時間(毫秒)" ++ ++#: Settings.ui.h:131 ++msgid "The panel background opacity is affected by" ++msgstr "面板背景不透明度受影響於" ++ ++#: Settings.ui.h:132 ++msgid "Change opacity when a window gets closer than (px)" ++msgstr "當視窗靠近時改變不透明度(像素)" ++ ++#: Settings.ui.h:134 ++#, no-c-format ++msgid "Change opacity to (%)" ++msgstr "改變不透明度為(%)" ++ ++#: Settings.ui.h:135 ++msgid "Opacity change animation duration (ms)" ++msgstr "不透明度變化動畫持續時間(毫秒)" ++ ++#: Settings.ui.h:136 ++msgid "Panel screen position" ++msgstr "面板在螢幕中所處的位置" ++ ++#: Settings.ui.h:137 ++msgid "Taskbar position" ++msgstr "工作列位置" ++ ++#: Settings.ui.h:138 ++msgid "Left, with plugin icons collapsed to right" ++msgstr "左側,並將外掛圖示摺疊到右側" ++ ++#: Settings.ui.h:139 ++msgid "Left, with fixed center plugin icons" ++msgstr "左側,並固定居中外掛圖示" ++ ++#: Settings.ui.h:140 ++msgid "Left, with floating center plugin icons" ++msgstr "左側,並浮動居中外掛圖示" ++ ++#: Settings.ui.h:141 ++msgid "Center, fixed in middle of monitor" ++msgstr "中間,固定於顯示器中間" ++ ++#: Settings.ui.h:142 ++msgid "Center, floating between left and right elements" ++msgstr "中間,在左側及右側元素中浮動" ++ ++#: Settings.ui.h:143 ++msgid "Clock location" ++msgstr "時鐘位置" ++ ++#: Settings.ui.h:144 ++msgid "Left of plugin icons" ++msgstr "外掛圖示左側" ++ ++#: Settings.ui.h:145 ++msgid "Right of plugin icons" ++msgstr "外掛圖示右側" ++ ++#: Settings.ui.h:146 ++msgid "Left of system indicators" ++msgstr "系統指示器左側" ++ ++#: Settings.ui.h:147 ++msgid "Right of system indicators" ++msgstr "系統指示器右側" ++ ++#: Settings.ui.h:148 ++msgid "Left of taskbar" ++msgstr "工作列左側" ++ ++#: Settings.ui.h:149 ++msgid "Right of taskbar" ++msgstr "工作列右側" ++ ++#: Settings.ui.h:150 ++msgid "Display the main panel on" ++msgstr "將主面板顯示於" ++ ++#: Settings.ui.h:151 ++msgid "Display panels on all monitors" ++msgstr "在所有顯示器上顯示面板" ++ ++#: Settings.ui.h:152 ++msgid "Panel Intellihide" ++msgstr "面板智慧隱藏" ++ ++#: Settings.ui.h:153 ++msgid "Hide and reveal the panel according to preferences" ++msgstr "依偏好設定隱藏和顯示面板" ++ ++#: Settings.ui.h:154 ++msgid "Position" ++msgstr "位置" ++ ++#: Settings.ui.h:155 ++msgid "" ++"Panel Size\n" ++"(default is 48)" ++msgstr "" ++"面板大小\n" ++"(預設為 48)" ++ ++#: Settings.ui.h:157 ++msgid "" ++"App Icon Margin\n" ++"(default is 8)" ++msgstr "" ++"應用圖示邊界\n" ++"(預設為 8)" ++ ++#: Settings.ui.h:159 ++msgid "" ++"App Icon Padding\n" ++"(default is 4)" ++msgstr "" ++"應用圖示邊框間距\n" ++"(預設為 4)" ++ ++#: Settings.ui.h:161 ++msgid "Running indicator position" ++msgstr "執行指示器位置" ++ ++#: Settings.ui.h:162 ++msgid "Running indicator style (Focused app)" ++msgstr "執行指示器樣式(焦點應用)" ++ ++#: Settings.ui.h:170 ++msgid "Running indicator style (Unfocused apps)" ++msgstr "執行指示器樣式(未聚焦應用)" ++ ++#: Settings.ui.h:171 ++msgid "Override panel theme background color " ++msgstr "覆寫面板主題背景色 " ++ ++#: Settings.ui.h:172 ++msgid "Override panel theme background opacity" ++msgstr "覆寫面板主題背景不透明度" ++ ++#: Settings.ui.h:174 ++#, no-c-format ++msgid "Panel background opacity (%)" ++msgstr "面板背景不透明度(%)" ++ ++#: Settings.ui.h:175 ++msgid "Dynamic background opacity" ++msgstr "動態背景不透明度" ++ ++#: Settings.ui.h:176 ++msgid "Change opacity when a window gets close to the panel" ++msgstr "在有視窗接近面板時改變不透明度" ++ ++#: Settings.ui.h:177 ++msgid "Override panel theme gradient " ++msgstr "覆寫面板主題漸變 " ++ ++#: Settings.ui.h:179 ++#, no-c-format ++msgid "Gradient top color and opacity (%)" ++msgstr "漸變頂部顏色和不透明度(%)" ++ ++#: Settings.ui.h:181 ++#, no-c-format ++msgid "Gradient bottom color and opacity (%)" ++msgstr "漸變底部顏色和不透明度(%)" ++ ++#: Settings.ui.h:182 ++msgid "Style" ++msgstr "樣式" ++ ++#: Settings.ui.h:187 ++msgid "Show Activities button" ++msgstr "顯示活動按鈕" ++ ++#: Settings.ui.h:188 ++msgid "Show Desktop button" ++msgstr "顯示桌面按鈕" ++ ++#: Settings.ui.h:189 ++msgid "Show AppMenu button" ++msgstr "顯示應用選單按鈕" ++ ++#: Settings.ui.h:190 ++msgid "Top Bar > Show App Menu must be enabled in Tweak Tool" ++msgstr "必須在調校工具中啟用頂端列 > 應用程式選單" ++ ++#: Settings.ui.h:191 ++msgid "Show window previews on hover" ++msgstr "懸停時顯示視窗預覽" ++ ++#: Settings.ui.h:192 ++msgid "Show tooltip on hover" ++msgstr "懸停時顯示工具提示" ++ ++#: Settings.ui.h:193 ++msgid "Isolate Workspaces" ++msgstr "隔離工作區" ++ ++#: Settings.ui.h:194 ++msgid "Ungroup applications" ++msgstr "取消應用程式分組" ++ ++#: Settings.ui.h:197 ++msgid "Toggle windows" ++msgstr "切換視窗" ++ ++#: Settings.ui.h:199 ++msgid "Use hotkeys to activate apps" ++msgstr "使用熱鍵啟用應用" ++ ++#: Settings.ui.h:201 ++msgid "" ++"Tray Font Size\n" ++"(0 = theme default)" ++msgstr "" ++"工具列字型大小\n" ++"(0 = 主題預設)" ++ ++#: Settings.ui.h:203 ++msgid "" ++"LeftBox Font Size\n" ++"(0 = theme default)" ++msgstr "" ++"LeftBox 字型大小\n" ++"(0 = 主題預設)" ++ ++#: Settings.ui.h:205 ++msgid "" ++"Tray Item Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"工具列項目間距\n" ++"(-1 = 主題預設)" ++ ++#: Settings.ui.h:207 ++msgid "" ++"Status Icon Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"狀態圖示間距\n" ++"(-1 = 主題預設)" ++ ++#: Settings.ui.h:209 ++msgid "" ++"LeftBox Padding\n" ++"(-1 = theme default)" ++msgstr "" ++"LeftBox 間距\n" ++"(-1 = 主題預設)" ++ ++#: Settings.ui.h:211 ++msgid "Animate switching applications" ++msgstr "使切換應用程式時出現動畫" ++ ++#: Settings.ui.h:212 ++msgid "Animate launching new windows" ++msgstr "使啟動新視窗時出現動畫" ++ ++#: Settings.ui.h:213 ++msgid "Keep original gnome-shell dash (overview)" ++msgstr "保留原始 gnome-shell dash(預覽)" ++ ++#: Settings.ui.h:214 ++msgid "Activate panel menu buttons (e.g. date menu) on click only" ++msgstr "僅在點選時啟用面板選單按鈕(例如日期選單)" ++ ++#: Settings.ui.h:215 ++msgid "App icon secondary (right-click) menu" ++msgstr "應用圖示次級(右鍵點選)選單" ++ ++#: Settings.ui.h:217 ++msgid "Fine-Tune" ++msgstr "微調" ++ ++#: Settings.ui.h:219 ++msgid "GitHub" ++msgstr "GitHub" ++ ++#: Settings.ui.h:220 ++msgid "" ++"Use the buttons below to create a settings file from your current " ++"preferences that can be imported on a different machine." ++msgstr "" ++"使用下面的按鈕以基於您目前的配置建立一份設定檔;您稍後可使用該檔案在其他機器" ++"上匯入設定。" ++ ++#: Settings.ui.h:221 ++msgid "Export and import settings" ++msgstr "匯入及匯出設定" ++ ++#: Settings.ui.h:222 ++msgid "Export to file" ++msgstr "匯出至檔案" ++ ++#: Settings.ui.h:223 ++msgid "Import from file" ++msgstr "從檔案匯入" ++ + #~ msgid "Application" + #~ msgstr "應用程式" + +@@ -1200,9 +2258,6 @@ msgstr "在桌面顯示掛載裝置。" + #~ msgid "Drag here to add favorites" + #~ msgstr "拖曳至此處以加入喜好" + +-#~ msgid "New Window" +-#~ msgstr "新視窗" +- + #~ msgid "Quit Application" + #~ msgstr "退出應用程式" + +-- +2.41.0 + + +From 8ae915152f47068f7f7855edf5a80a3caac6b8ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 2 Dec 2021 19:39:50 +0100 -Subject: [PATCH 6/7] Add classification-banner +Subject: [PATCH 7/8] Add classification-banner --- extensions/classification-banner/adwShim.js | 202 ++++++++++++++++++ @@ -67417,7 +116300,7 @@ index 00000000..fb6a697e +.classification-message { font-weight: bold; } +.classification-banner { font-size: 0.9em; } diff --git a/meson.build b/meson.build -index b83f0795..c71636cb 100644 +index b3212c34..c73261f7 100644 --- a/meson.build +++ b/meson.build @@ -45,6 +45,7 @@ default_extensions += [ @@ -67426,16 +116309,16 @@ index b83f0795..c71636cb 100644 'auto-move-windows', + 'classification-banner', 'dash-to-dock', + 'dash-to-panel', 'native-window-placement', - 'panel-favorites', -- -2.38.1 +2.41.0 -From 4cde1aa62f4605cde761c9f0f2f95af64515720d Mon Sep 17 00:00:00 2001 +From 55f40c6c9c3fffe27dab3490412e1a7268393814 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 12 Jan 2023 19:43:52 +0100 -Subject: [PATCH 7/7] Add custom-menu extension +Subject: [PATCH 8/8] Add custom-menu extension --- extensions/custom-menu/config.js | 484 ++++++++++++++++++++++++ @@ -68201,7 +117084,7 @@ index 00000000..25134b65 @@ -0,0 +1 @@ +/* This extensions requires no special styling */ diff --git a/meson.build b/meson.build -index c71636cb..23fb2c89 100644 +index c73261f7..fa9e622a 100644 --- a/meson.build +++ b/meson.build @@ -46,6 +46,7 @@ all_extensions = default_extensions @@ -68210,8 +117093,8 @@ index c71636cb..23fb2c89 100644 'classification-banner', + 'custom-menu', 'dash-to-dock', + 'dash-to-panel', 'native-window-placement', - 'panel-favorites', -- -2.38.1 +2.41.0 diff --git a/SOURCES/resurrect-system-monitor.patch b/SOURCES/resurrect-system-monitor.patch index 34cd0ca..99eb0ed 100644 --- a/SOURCES/resurrect-system-monitor.patch +++ b/SOURCES/resurrect-system-monitor.patch @@ -1,4 +1,4 @@ -From 2e00e631c7def6d58bdb1eb0fa3254ae82a37574 Mon Sep 17 00:00:00 2001 +From c5e26a4c25754dc74e5f2aa9953bc2e30cfea94e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Wed, 17 May 2017 19:13:50 +0200 Subject: [PATCH 1/6] extensions: Resurrect systemMonitor extension @@ -26,7 +26,7 @@ This reverts commit c9a6421f362cd156cf731289eadc11f44f6970ac. diff --git a/extensions/systemMonitor/extension.js b/extensions/systemMonitor/extension.js new file mode 100644 -index 0000000..7b09df0 +index 00000000..7b09df01 --- /dev/null +++ b/extensions/systemMonitor/extension.js @@ -0,0 +1,376 @@ @@ -408,7 +408,7 @@ index 0000000..7b09df0 +} diff --git a/extensions/systemMonitor/meson.build b/extensions/systemMonitor/meson.build new file mode 100644 -index 0000000..48504f6 +index 00000000..48504f63 --- /dev/null +++ b/extensions/systemMonitor/meson.build @@ -0,0 +1,5 @@ @@ -419,7 +419,7 @@ index 0000000..48504f6 +) diff --git a/extensions/systemMonitor/metadata.json.in b/extensions/systemMonitor/metadata.json.in new file mode 100644 -index 0000000..fa75007 +index 00000000..fa750074 --- /dev/null +++ b/extensions/systemMonitor/metadata.json.in @@ -0,0 +1,11 @@ @@ -436,7 +436,7 @@ index 0000000..fa75007 +} diff --git a/extensions/systemMonitor/stylesheet.css b/extensions/systemMonitor/stylesheet.css new file mode 100644 -index 0000000..13f95ec +index 00000000..13f95ec7 --- /dev/null +++ b/extensions/systemMonitor/stylesheet.css @@ -0,0 +1,35 @@ @@ -476,11 +476,11 @@ index 0000000..13f95ec + font-weight: bold; +} diff --git a/meson.build b/meson.build -index 6a2fdf0..afc0133 100644 +index fa9e622a..70dbf007 100644 --- a/meson.build +++ b/meson.build -@@ -48,6 +48,7 @@ all_extensions += [ - 'dash-to-dock', +@@ -51,6 +51,7 @@ all_extensions += [ + 'dash-to-panel', 'native-window-placement', 'panel-favorites', + 'systemMonitor', @@ -488,10 +488,10 @@ index 6a2fdf0..afc0133 100644 'updates-dialog', 'user-theme' -- -2.32.0 +2.41.0 -From 59927edac1f40239d7926f0285249c933ea42caf Mon Sep 17 00:00:00 2001 +From efe89316c5ae1721306defcdbb80227fe61414c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Fri, 17 May 2019 22:55:48 +0000 Subject: [PATCH 2/6] systemMonitor: Modernise code @@ -507,7 +507,7 @@ Subject: [PATCH 2/6] systemMonitor: Modernise code 1 file changed, 212 insertions(+), 210 deletions(-) diff --git a/extensions/systemMonitor/extension.js b/extensions/systemMonitor/extension.js -index 7b09df0..f7c6a4a 100644 +index 7b09df01..f7c6a4a9 100644 --- a/extensions/systemMonitor/extension.js +++ b/extensions/systemMonitor/extension.js @@ -1,56 +1,57 @@ @@ -1081,10 +1081,10 @@ index 7b09df0..f7c6a4a 100644 function init() { return new Extension(); -- -2.32.0 +2.41.0 -From 71e275ba45b09c5f8c6ca5445a459196dc65474b Mon Sep 17 00:00:00 2001 +From fe1916c1b29ab64c73179ab4c86e106ff69f977d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Wed, 26 May 2021 19:50:37 +0200 Subject: [PATCH 3/6] systemMonitor: Make label property private @@ -1096,7 +1096,7 @@ clash when we subclass St.Button. 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/extensions/systemMonitor/extension.js b/extensions/systemMonitor/extension.js -index f7c6a4a..bde25a1 100644 +index f7c6a4a9..bde25a1d 100644 --- a/extensions/systemMonitor/extension.js +++ b/extensions/systemMonitor/extension.js @@ -19,6 +19,7 @@ const ITEM_HOVER_TIMEOUT = 300; @@ -1187,10 +1187,10 @@ index f7c6a4a..bde25a1 100644 _initValues() { -- -2.32.0 +2.41.0 -From b310c3a5b532a18af38390021daa332961e404ef Mon Sep 17 00:00:00 2001 +From b8457707c2b05b88d443587b729e1893cf8b8d3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Wed, 17 May 2017 19:31:58 +0200 Subject: [PATCH 4/6] systemMonitor: Move indicators to calendar @@ -1206,7 +1206,7 @@ it up quickly). 2 files changed, 50 insertions(+), 70 deletions(-) diff --git a/extensions/systemMonitor/extension.js b/extensions/systemMonitor/extension.js -index bde25a1..1fd01ab 100644 +index bde25a1d..1fd01ab4 100644 --- a/extensions/systemMonitor/extension.js +++ b/extensions/systemMonitor/extension.js @@ -2,10 +2,11 @@ @@ -1418,7 +1418,7 @@ index bde25a1..1fd01ab 100644 return; diff --git a/extensions/systemMonitor/stylesheet.css b/extensions/systemMonitor/stylesheet.css -index 13f95ec..978ac12 100644 +index 13f95ec7..978ac12a 100644 --- a/extensions/systemMonitor/stylesheet.css +++ b/extensions/systemMonitor/stylesheet.css @@ -1,17 +1,4 @@ @@ -1448,10 +1448,10 @@ index 13f95ec..978ac12 100644 .extension-systemMonitor-indicator-label { -- -2.32.0 +2.41.0 -From 432f525336a5da1a545546ab40f882f44ac42bb7 Mon Sep 17 00:00:00 2001 +From bc05d47dbd45f761b14d90f60fd16259486bcb53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 18 May 2017 16:20:07 +0200 Subject: [PATCH 5/6] systemMonitor: Handle clicks on section title @@ -1467,7 +1467,7 @@ Fixes: https://gitlab.gnome.org/GNOME/gnome-shell-extensions3 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/extensions/systemMonitor/extension.js b/extensions/systemMonitor/extension.js -index 1fd01ab..57bdb51 100644 +index 1fd01ab4..57bdb51f 100644 --- a/extensions/systemMonitor/extension.js +++ b/extensions/systemMonitor/extension.js @@ -300,6 +300,22 @@ class MemoryIndicator extends Indicator { @@ -1503,10 +1503,10 @@ index 1fd01ab..57bdb51 100644 for (let i = 0; i < INDICATORS.length; i++) { let indicator = new INDICATORS[i](); -- -2.32.0 +2.41.0 -From 657155f8f37a8d0ddf7c39dbff954d87202c681e Mon Sep 17 00:00:00 2001 +From 597086c27823a7eb0b2124bfbe2c0572bbd1783d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 18 May 2017 18:00:17 +0200 Subject: [PATCH 6/6] systemMonitor: Provide classic styling @@ -1524,7 +1524,7 @@ Fixes: #4 diff --git a/extensions/systemMonitor/classic.css b/extensions/systemMonitor/classic.css new file mode 100644 -index 0000000..946863d +index 00000000..946863dc --- /dev/null +++ b/extensions/systemMonitor/classic.css @@ -0,0 +1,6 @@ @@ -1535,7 +1535,7 @@ index 0000000..946863d + border: 1px solid #a1a1a1; +} diff --git a/extensions/systemMonitor/meson.build b/extensions/systemMonitor/meson.build -index 48504f6..b6548b1 100644 +index 48504f63..b6548b14 100644 --- a/extensions/systemMonitor/meson.build +++ b/extensions/systemMonitor/meson.build @@ -3,3 +3,7 @@ extension_data += configure_file( @@ -1547,5 +1547,5 @@ index 48504f6..b6548b1 100644 + extension_data += files('classic.css') +endif -- -2.32.0 +2.41.0 diff --git a/SPECS/gnome-shell-extensions.spec b/SPECS/gnome-shell-extensions.spec index 13fc0f8..0fe98fa 100644 --- a/SPECS/gnome-shell-extensions.spec +++ b/SPECS/gnome-shell-extensions.spec @@ -7,7 +7,7 @@ Name: gnome-shell-extensions Version: 40.7 -Release: 8%{?dist} +Release: 12%{?dist} Summary: Modify and extend GNOME Shell functionality and behavior License: GPLv2+ @@ -40,6 +40,9 @@ Patch017: 0001-desktopManager-Hook-into-LayoutManager-to-create-gri.patch Patch018: 0001-gesture-inhibitor-Allow-inhibiting-workspace-switch-.patch Patch019: 0001-desktop-icons-Don-t-use-blocking-IO.patch Patch020: 0001-window-list-Explicitly-dispose-settings-on-destroy.patch +Patch021: 0001-desktop-icons-Don-t-try-spawn-with-non-existent-work.patch +Patch022: 0001-docking-Only-remove-spacer-if-necessary.patch +Patch023: 0001-classification-banner-Hide-from-picks.patch %description GNOME Shell Extensions is a collection of extensions providing additional and @@ -51,6 +54,7 @@ Enabled extensions: * classification-banner * custom-menu * dash-to-dock + * dash-to-panel * desktop-icons * drive-menu * gesture-inhibitor @@ -146,6 +150,15 @@ Requires: %{pkg_prefix}-common = %{version}-%{release} This GNOME Shell extension makes the dash available outside the activities overview. +%package -n %{pkg_prefix}-dash-to-panel +Summary: Show the dash in the top bar +License: GPLv2+ +Requires: %{pkg_prefix}-common = %{version}-%{release} + +%description -n %{pkg_prefix}-dash-to-panel +This GNOME Shell extension makes the dash available in the top bar + + %package -n %{pkg_prefix}-desktop-icons Summary: Desktop icons support for the classic experience License: GPLv2+ @@ -355,6 +368,11 @@ workspaces. %{_datadir}/gnome-shell/extensions/dash-to-dock*/ +%files -n %{pkg_prefix}-dash-to-panel +%{_datadir}/glib-2.0/schemas/org.gnome.shell.extensions.dash-to-panel.gschema.xml +%{_datadir}/gnome-shell/extensions/dash-to-panel*/ + + %files -n %{pkg_prefix}-desktop-icons %{_datadir}/glib-2.0/schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml %{_datadir}/gnome-shell/extensions/desktop-icons*/ @@ -428,6 +446,22 @@ workspaces. %changelog +* Fri Feb 02 2024 Florian Müllner - 40.7-12 +- Hide classification banners from picks + Resolves: RHEL-22789 + +* Thu Dec 14 2023 Florian Müllner - 40.7-11 +- Handle missing main dock when restoring dash + Resolves: RHEL-16723 + +* Tue Nov 07 2023 Florian Müllner - 40.7-10 +- Include dash-to-panel extension + Resolves: RHEL-14935 + +* Thu Nov 02 2023 Florian Müllner - 40.7-9 +- Fix spawning terminal without desktop directory + Resolves: RHEL-15366 + * Thu Aug 17 2023 Florian Müllner - 40.7-8 - Rebuild for custom context menu Resolves: #2232332