You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gnome-shell-extensions/SOURCES/add-extra-extensions.patch

117101 lines
3.8 MiB

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

From 6623a374036e0f2458d4b36e268f6e4dcc19a2d7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
Date: Wed, 20 May 2015 17:44:50 +0200
Subject: [PATCH 1/8] Add top-icons extension
---
extensions/top-icons/extension.js | 96 +++++++++++++++++++++++++++
extensions/top-icons/meson.build | 5 ++
extensions/top-icons/metadata.json.in | 10 +++
extensions/top-icons/stylesheet.css | 1 +
meson.build | 1 +
5 files changed, 113 insertions(+)
create mode 100644 extensions/top-icons/extension.js
create mode 100644 extensions/top-icons/meson.build
create mode 100644 extensions/top-icons/metadata.json.in
create mode 100644 extensions/top-icons/stylesheet.css
diff --git a/extensions/top-icons/extension.js b/extensions/top-icons/extension.js
new file mode 100644
index 00000000..79e2f423
--- /dev/null
+++ b/extensions/top-icons/extension.js
@@ -0,0 +1,96 @@
+// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
+/* exported init */
+
+const { Clutter, Shell, St } = imports.gi;
+const Main = imports.ui.main;
+const PanelMenu = imports.ui.panelMenu;
+const System = imports.system;
+
+const PANEL_ICON_SIZE = 16;
+
+const STANDARD_TRAY_ICON_IMPLEMENTATIONS = [
+ 'bluetooth-applet',
+ 'gnome-sound-applet',
+ 'nm-applet',
+ 'gnome-power-manager',
+ 'keyboard',
+ 'a11y-keyboard',
+ 'kbd-scrolllock',
+ 'kbd-numlock',
+ 'kbd-capslock',
+ 'ibus-ui-gtk',
+];
+
+class SysTray {
+ constructor() {
+ this._icons = [];
+ this._tray = null;
+ }
+
+ _onTrayIconAdded(o, icon) {
+ let wmClass = icon.wm_class ? icon.wm_class.toLowerCase() : '';
+ if (STANDARD_TRAY_ICON_IMPLEMENTATIONS.includes(wmClass))
+ return;
+
+ let button = new PanelMenu.Button(0.5, null, true);
+
+ let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
+ let iconSize = PANEL_ICON_SIZE * scaleFactor;
+
+ icon.set({
+ width: iconSize,
+ height: iconSize,
+ x_align: Clutter.ActorAlign.CENTER,
+ y_align: Clutter.ActorAlign.CENTER,
+ });
+
+ let iconBin = new St.Widget({
+ layout_manager: new Clutter.BinLayout(),
+ });
+ iconBin.add_actor(icon);
+ button.add_actor(iconBin);
+
+ this._icons.push(icon);
+
+ button.connect('button-release-event', (actor, event) => {
+ icon.click(event);
+ });
+ button.connect('key-press-event', (actor, event) => {
+ icon.click(event);
+ });
+
+ icon.connect('destroy', () => {
+ button.destroy();
+ });
+
+ let role = wmClass || `${icon}`;
+ Main.panel.addToStatusArea(role, button);
+ }
+
+ _onTrayIconRemoved(o, icon) {
+ let parent = icon.get_parent();
+ parent.destroy();
+ this._icons.splice(this._icons.indexOf(icon), 1);
+ }
+
+ enable() {
+ this._tray = new Shell.TrayManager();
+ this._tray.connect('tray-icon-added',
+ this._onTrayIconAdded.bind(this));
+ this._tray.connect('tray-icon-removed',
+ this._onTrayIconRemoved.bind(this));
+ this._tray.manage_screen(Main.panel);
+ }
+
+ disable() {
+ this._icons.forEach(icon => icon.get_parent().destroy());
+ this._icons = [];
+
+ this._tray = null;
+ System.gc(); // force finalizing tray to unmanage screen
+ }
+}
+
+function init() {
+ return new SysTray();
+}
diff --git a/extensions/top-icons/meson.build b/extensions/top-icons/meson.build
new file mode 100644
index 00000000..48504f63
--- /dev/null
+++ b/extensions/top-icons/meson.build
@@ -0,0 +1,5 @@
+extension_data += configure_file(
+ input: metadata_name + '.in',
+ output: metadata_name,
+ configuration: metadata_conf
+)
diff --git a/extensions/top-icons/metadata.json.in b/extensions/top-icons/metadata.json.in
new file mode 100644
index 00000000..f1e2436f
--- /dev/null
+++ b/extensions/top-icons/metadata.json.in
@@ -0,0 +1,10 @@
+{
+"extension-id": "@extension_id@",
+"uuid": "@uuid@",
+"settings-schema": "@gschemaname@",
+"gettext-domain": "@gettext_domain@",
+"name": "Top Icons",
+"description": "Shows legacy tray icons on top",
+"shell-version": [ "@shell_current@" ],
+"url": "http://94.247.144.115/repo/topicons/"
+}
diff --git a/extensions/top-icons/stylesheet.css b/extensions/top-icons/stylesheet.css
new file mode 100644
index 00000000..25134b65
--- /dev/null
+++ b/extensions/top-icons/stylesheet.css
@@ -0,0 +1 @@
+/* This extensions requires no special styling */
diff --git a/meson.build b/meson.build
index 41a7e99d..f754767c 100644
--- a/meson.build
+++ b/meson.build
@@ -45,6 +45,7 @@ all_extensions = default_extensions
all_extensions += [
'auto-move-windows',
'native-window-placement',
+ 'top-icons',
'user-theme'
]
--
2.41.0
From a38891b5a6b0ba51998298963988bf146b2e1f86 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
Date: Wed, 20 May 2015 18:05:41 +0200
Subject: [PATCH 2/8] Add dash-to-dock extension
---
extensions/dash-to-dock/Settings.ui | 2660 +++++++++++++++++
extensions/dash-to-dock/appIconIndicators.js | 1078 +++++++
extensions/dash-to-dock/appIcons.js | 1273 ++++++++
extensions/dash-to-dock/dash.js | 1072 +++++++
extensions/dash-to-dock/dbusmenuUtils.js | 274 ++
extensions/dash-to-dock/docking.js | 1967 ++++++++++++
extensions/dash-to-dock/extension.js | 21 +
extensions/dash-to-dock/fileManager1API.js | 226 ++
extensions/dash-to-dock/intellihide.js | 321 ++
extensions/dash-to-dock/launcherAPI.js | 281 ++
extensions/dash-to-dock/locations.js | 293 ++
extensions/dash-to-dock/media/glossy.svg | 139 +
.../media/highlight_stacked_bg.svg | 82 +
.../media/highlight_stacked_bg_h.svg | 82 +
extensions/dash-to-dock/media/logo.svg | 528 ++++
extensions/dash-to-dock/media/screenshot.jpg | Bin 0 -> 111454 bytes
extensions/dash-to-dock/meson.build | 27 +
extensions/dash-to-dock/metadata.json.in | 12 +
extensions/dash-to-dock/po/ar.po | 573 ++++
extensions/dash-to-dock/po/cs.po | 552 ++++
extensions/dash-to-dock/po/de.po | 586 ++++
extensions/dash-to-dock/po/el.po | 444 +++
extensions/dash-to-dock/po/es.po | 521 ++++
extensions/dash-to-dock/po/eu.po | 543 ++++
extensions/dash-to-dock/po/fr.po | 529 ++++
extensions/dash-to-dock/po/gl.po | 438 +++
extensions/dash-to-dock/po/hu.po | 440 +++
extensions/dash-to-dock/po/id.po | 450 +++
extensions/dash-to-dock/po/it.po | 517 ++++
extensions/dash-to-dock/po/ja.po | 585 ++++
extensions/dash-to-dock/po/nb.po | 506 ++++
extensions/dash-to-dock/po/nl.po | 662 ++++
extensions/dash-to-dock/po/pl.po | 558 ++++
extensions/dash-to-dock/po/pt.po | 509 ++++
extensions/dash-to-dock/po/pt_BR.po | 513 ++++
extensions/dash-to-dock/po/ru.po | 626 ++++
extensions/dash-to-dock/po/sk.po | 454 +++
extensions/dash-to-dock/po/sr.po | 470 +++
extensions/dash-to-dock/po/sr@latin.po | 469 +++
extensions/dash-to-dock/po/sv.po | 545 ++++
extensions/dash-to-dock/po/tr.po | 525 ++++
extensions/dash-to-dock/po/uk_UA.po | 575 ++++
extensions/dash-to-dock/po/zh_CN.po | 626 ++++
extensions/dash-to-dock/po/zh_TW.po | 542 ++++
extensions/dash-to-dock/prefs.js | 838 ++++++
....shell.extensions.dash-to-dock.gschema.xml | 551 ++++
extensions/dash-to-dock/stylesheet.css | 231 ++
extensions/dash-to-dock/theming.js | 553 ++++
extensions/dash-to-dock/utils.js | 308 ++
extensions/dash-to-dock/windowPreview.js | 598 ++++
meson.build | 1 +
po/ar.po | 568 +++-
po/cs.po | 553 +++-
po/de.po | 587 +++-
po/el.po | 451 ++-
po/es.po | 528 +++-
po/eu.po | 582 +++-
po/fr.po | 537 +++-
po/gl.po | 445 ++-
po/hu.po | 441 ++-
po/id.po | 451 ++-
po/it.po | 516 +++-
po/ja.po | 620 +++-
po/nb.po | 509 +++-
po/nl.po | 663 +++-
po/pl.po | 565 +++-
po/pt.po | 520 +++-
po/pt_BR.po | 519 +++-
po/ru.po | 634 +++-
po/sk.po | 456 ++-
po/sr.po | 478 ++-
po/sr@latin.po | 489 ++-
po/sv.po | 546 +++-
po/tr.po | 554 +++-
po/zh_CN.po | 643 +++-
po/zh_TW.po | 559 +++-
76 files changed, 40473 insertions(+), 115 deletions(-)
create mode 100644 extensions/dash-to-dock/Settings.ui
create mode 100644 extensions/dash-to-dock/appIconIndicators.js
create mode 100644 extensions/dash-to-dock/appIcons.js
create mode 100644 extensions/dash-to-dock/dash.js
create mode 100644 extensions/dash-to-dock/dbusmenuUtils.js
create mode 100644 extensions/dash-to-dock/docking.js
create mode 100644 extensions/dash-to-dock/extension.js
create mode 100644 extensions/dash-to-dock/fileManager1API.js
create mode 100644 extensions/dash-to-dock/intellihide.js
create mode 100644 extensions/dash-to-dock/launcherAPI.js
create mode 100644 extensions/dash-to-dock/locations.js
create mode 100644 extensions/dash-to-dock/media/glossy.svg
create mode 100644 extensions/dash-to-dock/media/highlight_stacked_bg.svg
create mode 100644 extensions/dash-to-dock/media/highlight_stacked_bg_h.svg
create mode 100644 extensions/dash-to-dock/media/logo.svg
create mode 100644 extensions/dash-to-dock/media/screenshot.jpg
create mode 100644 extensions/dash-to-dock/meson.build
create mode 100644 extensions/dash-to-dock/metadata.json.in
create mode 100644 extensions/dash-to-dock/po/ar.po
create mode 100644 extensions/dash-to-dock/po/cs.po
create mode 100644 extensions/dash-to-dock/po/de.po
create mode 100644 extensions/dash-to-dock/po/el.po
create mode 100644 extensions/dash-to-dock/po/es.po
create mode 100644 extensions/dash-to-dock/po/eu.po
create mode 100644 extensions/dash-to-dock/po/fr.po
create mode 100644 extensions/dash-to-dock/po/gl.po
create mode 100644 extensions/dash-to-dock/po/hu.po
create mode 100644 extensions/dash-to-dock/po/id.po
create mode 100644 extensions/dash-to-dock/po/it.po
create mode 100644 extensions/dash-to-dock/po/ja.po
create mode 100644 extensions/dash-to-dock/po/nb.po
create mode 100644 extensions/dash-to-dock/po/nl.po
create mode 100644 extensions/dash-to-dock/po/pl.po
create mode 100644 extensions/dash-to-dock/po/pt.po
create mode 100644 extensions/dash-to-dock/po/pt_BR.po
create mode 100644 extensions/dash-to-dock/po/ru.po
create mode 100644 extensions/dash-to-dock/po/sk.po
create mode 100644 extensions/dash-to-dock/po/sr.po
create mode 100644 extensions/dash-to-dock/po/sr@latin.po
create mode 100644 extensions/dash-to-dock/po/sv.po
create mode 100644 extensions/dash-to-dock/po/tr.po
create mode 100644 extensions/dash-to-dock/po/uk_UA.po
create mode 100644 extensions/dash-to-dock/po/zh_CN.po
create mode 100644 extensions/dash-to-dock/po/zh_TW.po
create mode 100644 extensions/dash-to-dock/prefs.js
create mode 100644 extensions/dash-to-dock/schemas/org.gnome.shell.extensions.dash-to-dock.gschema.xml
create mode 100644 extensions/dash-to-dock/stylesheet.css
create mode 100644 extensions/dash-to-dock/theming.js
create mode 100644 extensions/dash-to-dock/utils.js
create mode 100644 extensions/dash-to-dock/windowPreview.js
diff --git a/extensions/dash-to-dock/Settings.ui b/extensions/dash-to-dock/Settings.ui
new file mode 100644
index 00000000..d2560de5
--- /dev/null
+++ b/extensions/dash-to-dock/Settings.ui
@@ -0,0 +1,2660 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <requires lib="gtk" version="4.0"/>
+ <object class="GtkAdjustment" id="animation_time_adjustment">
+ <property name="upper">1</property>
+ <property name="step-increment">0.050000000000000003</property>
+ <property name="page-increment">0.25</property>
+ </object>
+ <object class="GtkBox" id="box_middle_click_options">
+ <property name="can_focus">0</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkFrame" id="frame_middle_click_options">
+ <property name="can_focus">0</property>
+ <property name="child">
+ <object class="GtkListBox" id="listbox_middle_click_options">
+ <property name="can_focus">0</property>
+ <property name="selection_mode">none</property>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow11">
+ <property name="width_request">100</property>
+ <property name="height_request">80</property>
+ <property name="child">
+ <object class="GtkGrid" id="buitin_theme7">
+ <property name="can_focus">0</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="builtin_theme_description4">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="label" translatable="yes">When set to minimize, double clicking minimizes all the windows of the application.</property>
+ <property name="wrap">1</property>
+ <property name="max_width_chars">40</property>
+
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="builtin_theme_label4">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="label" translatable="yes">Shift+Click action</property>
+
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="shift_click_action_combo">
+ <property name="can_focus">0</property>
+ <property name="valign">center</property>
+ <items>
+ <item translatable="yes">Raise window</item>
+ <item translatable="yes">Minimize window</item>
+ <item translatable="yes">Launch new instance</item>
+ <item translatable="yes">Cycle through windows</item>
+ <item translatable="yes">Minimize or overview</item>
+ <item translatable="yes">Show window previews</item>
+ <item translatable="yes">Minimize or show previews</item>
+ <item translatable="yes">Focus or show previews</item>
+ <item translatable="yes">Focus, minimize or show previews</item>
+ <item translatable="yes">Quit</item>
+ </items>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ <property name="row-span">2</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_middle_click">
+ <property name="width_request">100</property>
+ <property name="height_request">80</property>
+ <property name="child">
+ <object class="GtkGrid" id="grid_middle_click">
+ <property name="can_focus">0</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="description_middle_click">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="label" translatable="yes">Behavior for Middle-Click.</property>
+ <property name="wrap">1</property>
+ <property name="max_width_chars">40</property>
+
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_middle_click">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="label" translatable="yes">Middle-Click action</property>
+
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="middle_click_action_combo">
+ <property name="can_focus">0</property>
+ <property name="valign">center</property>
+ <items>
+ <item translatable="yes">Raise window</item>
+ <item translatable="yes">Minimize window</item>
+ <item translatable="yes">Launch new instance</item>
+ <item translatable="yes">Cycle through windows</item>
+ <item translatable="yes">Minimize or overview</item>
+ <item translatable="yes">Show window previews</item>
+ <item translatable="yes">Minimize or show previews</item>
+ <item translatable="yes">Focus or show previews</item>
+ <item translatable="yes">Focus, minimize or show previews</item>
+ <item translatable="yes">Quit</item>
+ </items>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ <property name="row-span">2</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_shift_middle_click">
+ <property name="width_request">100</property>
+ <property name="height_request">80</property>
+ <property name="child">
+ <object class="GtkGrid" id="grid_shift_middle_click">
+ <property name="can_focus">0</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="description_shift_middle_click">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="label" translatable="yes">Behavior for Shift+Middle-Click.</property>
+ <property name="wrap">1</property>
+ <property name="max_width_chars">40</property>
+
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_shift_middle_click">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="label" translatable="yes">Shift+Middle-Click action</property>
+
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="shift_middle_click_action_combo">
+ <property name="can_focus">0</property>
+ <property name="valign">center</property>
+ <items>
+ <item translatable="yes">Raise window</item>
+ <item translatable="yes">Minimize window</item>
+ <item translatable="yes">Launch new instance</item>
+ <item translatable="yes">Cycle through windows</item>
+ <item translatable="yes">Minimize or overview</item>
+ <item translatable="yes">Show window previews</item>
+ <item translatable="yes">Minimize or show previews</item>
+ <item translatable="yes">Focus or show previews</item>
+ <item translatable="yes">Focus, minimize or show previews</item>
+ <item translatable="yes">Quit</item>
+ </items>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ <property name="row-span">2</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </property>
+ <child type="label_item">
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkAdjustment" id="custom_opacity_adjustement">
+ <property name="upper">1</property>
+ <property name="step-increment">0.01</property>
+ <property name="page-increment">0.10</property>
+ </object>
+ <object class="GtkAdjustment" id="dock_size_adjustment">
+ <property name="lower">0.33</property>
+ <property name="upper">1</property>
+ <property name="step-increment">0.01</property>
+ <property name="page-increment">0.10</property>
+ </object>
+ <object class="GtkAdjustment" id="dot_border_width_adjustment">
+ <property name="upper">10</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">5</property>
+ </object>
+ <object class="GtkBox" id="running_dots_advance_settings_box">
+ <property name="can_focus">0</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkFrame" id="frame1">
+ <property name="can_focus">0</property>
+
+ <property name="child">
+ <object class="GtkListBox" id="listbox7">
+ <property name="can_focus">0</property>
+ <property name="selection_mode">none</property>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow10">
+ <property name="width_request">100</property>
+ <property name="height_request">80</property>
+ <property name="child">
+ <object class="GtkBox" id="dot_style_box">
+ <property name="can_focus">0</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">12</property>
+ <child>
+ <object class="GtkBox">
+ <property name="can_focus">0</property>
+ <property name="spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="unity_backlit_items_label">
+ <property name="hexpand">1</property>
+ <property name="can_focus">0</property>
+ <property name="valign">center</property>
+ <property name="label" translatable="yes">Enable Unity7 like glossy backlit items</property>
+
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="unity_backlit_items_switch">
+ <property name="valign">center</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="can_focus">0</property>
+ <child>
+ <object class="GtkLabel" id="dominant_color_label">
+ <property name="hexpand">1</property>
+ <property name="can_focus">0</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Use dominant color</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="dominant_color_switch"/>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkGrid" id="grid1">
+ <property name="can_focus">0</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkSwitch" id="dot_style_switch">
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label4">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="label" translatable="yes">Customize indicator style</property>
+ <property name="justify">fill</property>
+
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="dot_style_settings_box">
+ <property name="can_focus">0</property>
+ <property name="margin_bottom">1</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">12</property>
+ <child>
+ <object class="GtkBox" id="dot_color_box">
+ <property name="can_focus">0</property>
+ <property name="spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="dot_color_label">
+ <property name="hexpand">1</property>
+ <property name="can_focus">0</property>
+ <property name="label" translatable="yes">Color</property>
+
+ </object>
+ </child>
+ <child>
+ <object class="GtkColorButton" id="dot_color_colorbutton">
+ <property name="receives_default">1</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="border_color_box">
+ <property name="can_focus">0</property>
+ <property name="spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="dot_border_color_label">
+ <property name="hexpand">1</property>
+ <property name="can_focus">0</property>
+ <property name="label" translatable="yes">Border color</property>
+
+ </object>
+ </child>
+ <child>
+ <object class="GtkColorButton" id="dot_border_color_colorbutton">
+ <property name="receives_default">1</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="box_boder_width_box">
+ <property name="can_focus">0</property>
+ <property name="spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="dot_border_width_label">
+ <property name="hexpand">1</property>
+ <property name="can_focus">0</property>
+ <property name="label" translatable="yes">Border width</property>
+
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="dot_border_width_spin_button">
+ <property name="adjustment">dot_border_width_adjustment</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </property>
+ <child type="label_item">
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkAdjustment" id="hide_timeout_adjustment">
+ <property name="upper">1</property>
+ <property name="step-increment">0.050000000000000003</property>
+ <property name="page-increment">0.25</property>
+ </object>
+ <object class="GtkAdjustment" id="icon_size_adjustment">
+ <property name="lower">16</property>
+ <property name="upper">128</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">10</property>
+ </object>
+ <object class="GtkNotebook" id="settings_notebook">
+ <property name="margin-start">6</property>
+ <property name="margin-end">6</property>
+ <property name="margin_top">6</property>
+ <property name="margin_bottom">6</property>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="child">
+ <object class="GtkBox" id="position_and_size">
+ <property name="can_focus">0</property>
+ <property name="margin-start">24</property>
+ <property name="margin-end">24</property>
+ <property name="margin_top">24</property>
+ <property name="margin_bottom">24</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">24</property>
+ <child>
+ <object class="GtkFrame" id="dock_display">
+ <property name="can_focus">0</property>
+
+ <property name="child">
+ <object class="GtkListBox" id="dock_display_listbox">
+ <property name="can_focus">0</property>
+ <property name="selection_mode">none</property>
+ <child>
+ <object class="GtkListBoxRow" id="dock_monitor_listboxrow">
+ <property name="child">
+ <object class="GtkGrid" id="dock_monitor_grid">
+ <property name="can_focus">0</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="dock_monitor_label">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Show the dock on</property>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="dock_monitor_combo">
+ <property name="can_focus">0</property>
+ <property name="valign">center</property>
+ <signal name="changed" handler="dock_display_combo_changed_cb" />
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="multi_monitor_button">
+ <property name="label" translatable="yes">Show on all monitors.</property>
+ <property name="margin_top">12</property>
+
+ <layout>
+ <property name="column">0</property>
+ <property name="row">2</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="dock_position_listboxrow">
+ <property name="width_request">100</property>
+ <property name="child">
+ <object class="GtkBox" id="dock_position_box">
+ <property name="can_focus">0</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="dock_position_label">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="label" translatable="yes">Position on screen</property>
+
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="dock_position_butttons_box">
+ <property name="can_focus">0</property>
+ <property name="spacing">32</property>
+ <child>
+ <object class="GtkCheckButton" id="position_left_button">
+ <property name="label" translatable="yes">Left</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+
+ <signal name="toggled" handler="position_left_button_toggled_cb" />
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="position_bottom_button">
+ <property name="label" translatable="yes">Bottom</property>
+ <property name="halign">center</property>
+
+ <property name="group">position_left_button</property>
+ <signal name="toggled" handler="position_bottom_button_toggled_cb" />
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="position_top_button">
+ <property name="label" translatable="yes">Top</property>
+ <property name="halign">center</property>
+
+
+ <property name="group">position_left_button</property>
+ <signal name="toggled" handler="position_top_button_toggled_cb" />
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="position_right_button">
+ <property name="label" translatable="yes">Right</property>
+ <property name="valign">center</property>
+
+ <property name="group">position_left_button</property>
+ <signal name="toggled" handler="position_right_button_toggled_cb" />
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </property>
+ <child type="label_item">
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFrame" id="intelligent_autohide_frame">
+ <property name="can_focus">0</property>
+
+ <property name="child">
+ <object class="GtkListBox" id="listbox3">
+ <property name="can_focus">0</property>
+ <property name="selection_mode">none</property>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow14">
+ <property name="width_request">100</property>
+ <property name="height_request">80</property>
+ <property name="child">
+ <object class="GtkGrid" id="intelligent_autohide_grid">
+ <property name="can_focus">0</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="builtin_theme_description7">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Hide the dock when it obstructs a window of the current application. More refined settings are available.</property>
+ <property name="wrap">1</property>
+
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="builtin_theme_label8">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Intelligent autohide</property>
+
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="box3">
+ <property name="can_focus">0</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkButton" id="intelligent_autohide_button">
+ <property name="receives_default">1</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+
+ <child>
+ <object class="GtkImage" id="image">
+ <property name="can_focus">0</property>
+ <property name="icon_name">emblem-system-symbolic</property>
+ </object>
+ </child>
+ <style>
+ <class name="circular"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="intelligent_autohide_switch">
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ </object>
+ </child>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ <property name="row-span">2</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </property>
+ <child type="label_item">
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFrame" id="size_frame">
+ <property name="can_focus">0</property>
+
+ <property name="child">
+ <object class="GtkListBox" id="size_listbox">
+ <property name="can_focus">0</property>
+ <property name="selection_mode">none</property>
+ <child>
+ <object class="GtkListBoxRow" id="dock_size_listboxrow">
+ <property name="width_request">100</property>
+ <property name="height_request">80</property>
+ <property name="child">
+ <object class="GtkGrid" id="dock_size_grid">
+ <property name="can_focus">0</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="dock_size_label">
+ <property name="can_focus">0</property>
+ <property name="label" translatable="yes">Dock size limit</property>
+
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScale" id="dock_size_scale">
+ <property name="draw-value">1</property>
+ <property name="valign">baseline</property>
+ <property name="hexpand">1</property>
+ <property name="adjustment">dock_size_adjustment</property>
+ <property name="round_digits">0</property>
+ <property name="digits">2</property>
+ <property name="value_pos">right</property>
+ <signal name="value-changed" handler="dock_size_scale_value_changed_cb" />
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="dock_size_extend_checkbutton">
+ <property name="label" translatable="yes">Panel mode: extend to the screen edge</property>
+ <property name="margin_top">12</property>
+
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="icon_size_listboxrow">
+ <property name="child">
+ <object class="GtkGrid" id="icon_size_grid">
+ <property name="can_focus">0</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="builtin_theme_label6">
+ <property name="can_focus">0</property>
+ <property name="label" translatable="yes">Icon size limit</property>
+
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScale" id="icon_size_scale">
+ <property name="draw-value">1</property>
+ <property name="valign">baseline</property>
+ <property name="hexpand">1</property>
+ <property name="adjustment">icon_size_adjustment</property>
+ <property name="round_digits">1</property>
+ <property name="digits">0</property>
+ <property name="value_pos">right</property>
+ <signal name="value-changed" handler="icon_size_scale_value_changed_cb" />
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="icon_size_fixed_checkbutton">
+ <property name="label" translatable="yes">Fixed icon size: scroll to reveal other icons</property>
+ <property name="margin_top">12</property>
+
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </property>
+ <child type="label_item">
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel" id="general_label">
+ <property name="can_focus">0</property>
+ <property name="label" translatable="yes">Position and size</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="position">1</property>
+ <property name="child">
+ <object class="GtkBox" id="apps">
+ <property name="can_focus">0</property>
+ <property name="margin-start">24</property>
+ <property name="margin-end">24</property>
+ <property name="margin_top">24</property>
+ <property name="margin_bottom">24</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">24</property>
+ <child>
+ <object class="GtkFrame" id="customize_theme1">
+ <property name="can_focus">0</property>
+
+ <property name="child">
+ <object class="GtkListBox" id="listbox9">
+ <property name="can_focus">0</property>
+ <property name="selection_mode">none</property>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow6">
+ <property name="child">
+ <object class="GtkGrid" id="shrink_dash1">
+ <property name="can_focus">0</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkSwitch" id="show_favorite_switch">
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="shrink_dash_label1">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Show favorite applications</property>
+
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow16">
+ <property name="child">
+ <object class="GtkGrid" id="shrink_dash2">
+ <property name="can_focus">0</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkSwitch" id="show_running_switch">
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="shrink_dash_label2">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Show running applications</property>
+
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="application_button_isolation_button">
+ <property name="label" translatable="yes">Isolate workspaces.</property>
+ <property name="halign">start</property>
+ <property name="margin_top">12</property>
+
+ <layout>
+ <property name="column">0</property>
+ <property name="row">2</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="application_button_monitor_isolation_button">
+ <property name="label" translatable="yes">Isolate monitors.</property>
+ <property name="halign">start</property>
+ <property name="margin_top">12</property>
+
+ <layout>
+ <property name="column">0</property>
+ <property name="row">3</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="windows_preview_button">
+ <property name="margin_top">3</property>
+
+ <child>
+ <object class="GtkLabel" id="windows_previews_label">
+ <property name="can_focus">0</property>
+ <property name="label" translatable="yes">Show open windows previews.</property>
+ <property name="use_markup">1</property>
+ </object>
+ </child>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow17">
+ <property name="child">
+ <object class="GtkGrid" id="shrink_dash3">
+ <property name="can_focus">0</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkSwitch" id="show_applications_button_switch">
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ <property name="row-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="shrink_dash_description1">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="label" translatable="yes">If disabled, these settings are accessible from gnome-tweak-tool or the extension website.</property>
+ <property name="wrap">1</property>
+
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="shrink_dash_label3">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Show &lt;i&gt;Applications&lt;/i&gt; icon</property>
+ <property name="use_markup">1</property>
+
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="application_button_first_button">
+ <property name="label" translatable="yes">Move the applications button at the beginning of the dock.</property>
+ <property name="halign">start</property>
+ <property name="margin_top">12</property>
+
+ <layout>
+ <property name="column">0</property>
+ <property name="row">2</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="application_button_animation_button">
+ <property name="margin_top">3</property>
+
+
+ <child>
+ <object class="GtkLabel" id="label3">
+ <property name="can_focus">0</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Animate &lt;i&gt;Show Applications&lt;/i&gt;.</property>
+ <property name="use_markup">1</property>
+ </object>
+ </child>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">3</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow18">
+ <property name="child">
+ <object class="GtkGrid" id="shrink_dash4">
+ <property name="can_focus">0</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkSwitch" id="show_trash_switch">
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="shrink_dash_label4">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Show trash can</property>
+
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow19">
+ <property name="child">
+ <object class="GtkGrid" id="shrink_dash5">
+ <property name="can_focus">0</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkSwitch" id="show_mounts_switch">
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="shrink_dash_label5">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Show mounted volumes and devices</property>
+
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </property>
+ <child type="label_item">
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel" id="launchers_label">
+ <property name="can_focus">0</property>
+ <property name="label" translatable="yes">Launchers</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="position">2</property>
+ <property name="child">
+ <object class="GtkBox" id="behaviour">
+ <property name="can_focus">0</property>
+ <property name="margin-start">24</property>
+ <property name="margin-end">24</property>
+ <property name="margin_top">24</property>
+ <property name="margin_bottom">24</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">24</property>
+ <child>
+ <object class="GtkFrame" id="hot_keys_frame">
+ <property name="can_focus">0</property>
+
+ <property name="child">
+ <object class="GtkListBox" id="hot_keys_listbox">
+ <property name="can_focus">0</property>
+ <property name="selection_mode">none</property>
+ <child>
+ <object class="GtkListBoxRow" id="hot_keys_listboxrow">
+ <property name="child">
+ <object class="GtkGrid" id="hot_keys_grid">
+ <property name="can_focus">0</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="hot_keys_description">
+ <property name="can_focus">0</property>
+ <property name="halign">start</property>
+ <property name="hexpand">1</property>
+ <property name="label" translatable="yes">Enable Super+(0-9) as shortcuts to activate apps. It can also be used together with Shift and Ctrl.</property>
+ <property name="use_markup">1</property>
+ <property name="wrap">1</property>
+
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="hot_keys_label">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Use keyboard shortcuts to activate apps</property>
+
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="overlay_box">
+ <property name="can_focus">0</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkButton" id="overlay_button">
+ <property name="receives_default">1</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+
+ <child>
+ <object class="GtkImage" id="image_overlay">
+ <property name="can_focus">0</property>
+ <property name="icon_name">emblem-system-symbolic</property>
+ </object>
+ </child>
+ <style>
+ <class name="circular"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="hot_keys_switch">
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ </object>
+ </child>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ <property name="row-span">2</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </property>
+ <child type="label_item">
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFrame" id="built_in_theme_frame3">
+ <property name="can_focus">0</property>
+
+ <property name="child">
+ <object class="GtkListBox" id="listbox6">
+ <property name="can_focus">0</property>
+ <property name="selection_mode">none</property>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow9">
+ <property name="child">
+ <object class="GtkGrid" id="buitin_theme5">
+ <property name="can_focus">0</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="builtin_theme_description5">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Behaviour when clicking on the icon of a running application.</property>
+ <property name="wrap">1</property>
+
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="builtin_theme_label5">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Click action</property>
+
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="click_box">
+ <property name="can_focus">0</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkButton" id="middle_click_options_button">
+ <property name="receives_default">1</property>
+ <property name="valign">center</property>
+ <child>
+ <object class="GtkImage" id="middle_click_image">
+ <property name="can_focus">0</property>
+ <property name="icon_name">emblem-system-symbolic</property>
+ </object>
+ </child>
+ <style>
+ <class name="circular"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="click_action_combo">
+ <property name="can_focus">0</property>
+ <property name="valign">center</property>
+ <items>
+ <item translatable="yes">Raise window</item>
+ <item translatable="yes">Minimize</item>
+ <item translatable="yes">Launch new instance</item>
+ <item translatable="yes">Cycle through windows</item>
+ <item translatable="yes">Minimize or overview</item>
+ <item translatable="yes">Show window previews</item>
+ <item translatable="yes">Minimize or show previews</item>
+ <item translatable="yes">Focus or show previews</item>
+ <item translatable="yes">Focus, minimize or show previews</item>
+ </items>
+ </object>
+ </child>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ <property name="row-span">2</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </property>
+ <child type="label_item">
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFrame" id="built_in_theme_frame_scroll">
+ <property name="can_focus">0</property>
+
+ <property name="child">
+ <object class="GtkListBox" id="listbox5">
+ <property name="can_focus">0</property>
+ <property name="selection_mode">none</property>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_scroll">
+ <property name="child">
+ <object class="GtkGrid" id="buitin_theme_scroll">
+ <property name="can_focus">0</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="builtin_theme_description_scroll">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Behaviour when scrolling on the icon of an application.</property>
+ <property name="wrap">1</property>
+
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="builtin_theme_label_scroll">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Scroll action</property>
+
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="click_box_scroll">
+ <property name="can_focus">0</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkComboBoxText" id="scroll_action_combo">
+ <property name="can_focus">0</property>
+ <property name="valign">center</property>
+ <items>
+ <item translatable="yes">Do nothing</item>
+ <item translatable="yes">Cycle through windows</item>
+ <item translatable="yes">Switch workspace</item>
+ </items>
+ </object>
+ </child>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ <property name="row-span">2</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </property>
+ <child type="label_item">
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel" id="behaviour_label">
+ <property name="can_focus">0</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Behavior</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="position">3</property>
+ <property name="child">
+ <object class="GtkBox" id="appearance">
+ <property name="can_focus">0</property>
+ <property name="margin-start">24</property>
+ <property name="margin-end">24</property>
+ <property name="margin_top">24</property>
+ <property name="margin_bottom">24</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">24</property>
+ <child>
+ <object class="GtkFrame" id="built_in_theme_frame">
+ <property name="can_focus">0</property>
+
+ <property name="child">
+ <object class="GtkListBox" id="listbox1">
+ <property name="selection_mode">none</property>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow1">
+ <property name="child">
+ <object class="GtkGrid" id="buitin_theme">
+ <property name="can_focus">0</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="builtin_theme_description">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Few customizations meant to integrate the dock with the default GNOME theme. Alternatively, specific options can be enabled below.</property>
+ <property name="wrap">1</property>
+
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="builtin_theme_label">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Use built-in theme</property>
+
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="builtin_theme_switch">
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ <property name="row-span">2</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </property>
+ <child type="label_item">
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFrame" id="customize_theme">
+ <property name="can_focus">0</property>
+
+ <property name="child">
+ <object class="GtkListBox" id="listbox2">
+ <property name="can_focus">0</property>
+ <property name="selection_mode">none</property>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow2">
+ <property name="child">
+ <object class="GtkGrid" id="shrink_dash">
+ <property name="can_focus">0</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkSwitch" id="shrink_dash_switch">
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ <property name="row-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="shrink_dash_description">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Save space reducing padding and border radius.</property>
+
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="shrink_dash_label">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Shrink the dash</property>
+
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow3">
+ <property name="child">
+ <object class="GtkGrid" id="running_dots">
+ <property name="can_focus">0</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="running_dots_label">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Customize windows counter indicators</property>
+
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="box4">
+ <property name="can_focus">0</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkButton" id="running_indicators_advance_settings_button">
+ <property name="receives_default">1</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+
+ <child>
+ <object class="GtkImage" id="image1">
+ <property name="can_focus">0</property>
+ <property name="icon_name">emblem-system-symbolic</property>
+ </object>
+ </child>
+ <style>
+ <class name="circular"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="running_indicators_combo">
+ <property name="can_focus">0</property>
+ <items>
+ <item translatable="yes">Default</item>
+ <item translatable="yes">Dots</item>
+ <item translatable="yes">Squares</item>
+ <item translatable="yes">Dashes</item>
+ <item translatable="yes">Segmented</item>
+ <item translatable="yes">Solid</item>
+ <item translatable="yes">Ciliora</item>
+ <item translatable="yes">Metro</item>
+ </items>
+ </object>
+ </child>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ <property name="row-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="custom_background_color_listboxrow">
+ <property name="child">
+ <object class="GtkGrid" id="custom_background_color_grid">
+ <property name="can_focus">0</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="custom_background_color_description">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Set the background color for the dash.</property>
+ <property name="wrap">1</property>
+
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="custom_background_color_label">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Customize the dash color</property>
+
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="custom_background_color_box">
+ <property name="can_focus">0</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkColorButton" id="custom_background_color">
+ <property name="receives_default">1</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="custom_background_color_switch">
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ </object>
+ </child>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ <property name="row-span">2</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow4">
+ <property name="child">
+ <object class="GtkBox" id="box2">
+ <property name="can_focus">0</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkGrid" id="customize_opacity">
+ <property name="can_focus">0</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="customize_opacity_description">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Tune the dash background opacity.</property>
+
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="customize_opacity_label">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Customize opacity</property>
+
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="customize_opacity_box">
+ <property name="can_focus">0</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkButton" id="dynamic_opacity_button">
+ <property name="receives_default">1</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <child>
+ <object class="GtkImage" id="dynamic_opacity_image">
+ <property name="can_focus">0</property>
+ <property name="icon_name">emblem-system-symbolic</property>
+ </object>
+ </child>
+ <style>
+ <class name="circular"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="customize_opacity_combo">
+ <property name="can_focus">0</property>
+ <property name="valign">center</property>
+ <items>
+ <item id="0" translatable="yes">Default</item>
+ <item id="1" translatable="yes">Fixed</item>
+ <item id="3" translatable="yes">Dynamic</item>
+ </items>
+ </object>
+ </child>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ <property name="row-span">2</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="custom_opacity">
+ <property name="can_focus">0</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="custom_opacity_label">
+ <property name="can_focus">0</property>
+ <property name="label" translatable="yes">Opacity</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScale" id="custom_opacity_scale">
+ <property name="hexpand">1</property>
+ <property name="draw-value">1</property>
+ <property name="adjustment">custom_opacity_adjustement</property>
+
+ <property name="restrict_to_fill_level">0</property>
+ <property name="fill_level">0</property>
+ <property name="round_digits">0</property>
+ <property name="digits">2</property>
+ <property name="value_pos">right</property>
+ <signal name="value-changed" handler="custom_opacity_scale_value_changed_cb" />
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_rnd_border">
+ <property name="width_request">100</property>
+ <property name="height_request">80</property>
+ <property name="child">
+ <object class="GtkBox">
+ <property name="can_focus">0</property>
+ <property name="spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="force_straight_corner_label">
+ <property name="hexpand">1</property>
+ <property name="can_focus">0</property>
+ <property name="valign">center</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Force straight corner</property>
+
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="force_straight_corner_switch">
+ <property name="valign">center</property>
+ <property name="margin-start">3</property>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </property>
+ <child type="label_item">
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel" id="appearance_label">
+ <property name="can_focus">0</property>
+ <property name="label" translatable="yes">Appearance</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkNotebookPage">
+ <property name="position">4</property>
+ <property name="child">
+ <object class="GtkBox" id="about">
+ <property name="visible">0</property>
+ <property name="can_focus">0</property>
+ <property name="margin_top">24</property>
+ <property name="margin_bottom">24</property>
+ <property name="hexpand">1</property>
+ <property name="vexpand">1</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkImage" id="logo">
+ <property name="can_focus">0</property>
+ <property name="file">./media/logo.svg</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="extension_name">
+ <property name="can_focus">0</property>
+ <property name="label">&lt;b&gt;Dash to Dock&lt;/b&gt;</property>
+ <property name="use_markup">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="box1">
+ <property name="can_focus">0</property>
+ <property name="halign">center</property>
+ <child>
+ <object class="GtkLabel" id="extension_version_label">
+ <property name="can_focus">0</property>
+ <property name="halign">end</property>
+ <property name="label" translatable="yes">version: </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="extension_version">
+ <property name="can_focus">0</property>
+ <property name="halign">start</property>
+ <property name="label">...</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="extension_description">
+ <property name="can_focus">0</property>
+ <property name="label" translatable="yes">Moves the dash out of the overview transforming it in a dock</property>
+ <property name="justify">center</property>
+ <property name="wrap">1</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="box10">
+ <property name="can_focus">0</property>
+ <property name="halign">center</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label15">
+ <property name="can_focus">0</property>
+ <property name="label" translatable="yes">Created by</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label16">
+ <property name="label">Michele (&lt;a href=&quot;mailto:micxgx@gmail.com&quot;&gt;micxgx@gmail.com&lt;/a&gt;)</property>
+ <property name="use_markup">1</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLinkButton" id="homepage_link">
+ <property name="label" translatable="yes">Webpage</property>
+ <property name="receives_default">1</property>
+ <property name="halign">center</property>
+
+ <property name="uri">https://micheleg.github.io/dash-to-dock/</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label1">
+ <property name="vexpand">1</property>
+ <property name="valign">end</property>
+ <property name="label" translatable="yes">&lt;span size=&quot;small&quot;&gt;This program comes with ABSOLUTELY NO WARRANTY.
+See the &lt;a href=&quot;https://www.gnu.org/licenses/old-licenses/gpl-2.0.html&quot;&gt;GNU General Public License, version 2 or later&lt;/a&gt; for details.&lt;/span&gt;</property>
+ <property name="use_markup">1</property>
+ <property name="justify">center</property>
+ <property name="wrap">1</property>
+ </object>
+ </child>
+ </object>
+ </property>
+ <property name="tab">
+ <object class="GtkLabel" id="about_label">
+ <property name="can_focus">0</property>
+ <property name="label" translatable="yes">About</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ <object class="GtkAdjustment" id="max_opacity_adjustement">
+ <property name="upper">1</property>
+ <property name="step-increment">0.01</property>
+ <property name="page-increment">0.10000000000000001</property>
+ </object>
+ <object class="GtkAdjustment" id="min_opacity_adjustement">
+ <property name="upper">1</property>
+ <property name="step-increment">0.01</property>
+ <property name="page-increment">0.10000000000000001</property>
+ </object>
+ <object class="GtkBox" id="advanced_transparency_dialog">
+ <property name="can_focus">0</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkFrame" id="advanced_transparency_frame">
+ <property name="can_focus">0</property>
+
+ <property name="child">
+ <object class="GtkListBox" id="advanced_transparency_listbox">
+ <property name="can_focus">0</property>
+ <property name="selection_mode">none</property>
+ <child>
+ <object class="GtkListBoxRow" id="advanced_transparency_listboxrow">
+ <property name="width_request">100</property>
+ <property name="height_request">80</property>
+ <property name="child">
+ <object class="GtkBox" id="advanced_transparency_box">
+ <property name="can_focus">0</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">12</property>
+ <child>
+ <object class="GtkGrid" id="advanced_transparency_grid">
+ <property name="can_focus">0</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkSwitch" id="customize_alphas_switch">
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="customize_alphas_label">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="label" translatable="yes">Customize minimum and maximum opacity values</property>
+ <property name="justify">fill</property>
+
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="min_alpha_box">
+ <property name="can_focus">0</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="min_alpha_label">
+ <property name="can_focus">0</property>
+ <property name="label" translatable="yes">Minimum opacity</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScale" id="min_alpha_scale">
+ <property name="hexpand">1</property>
+ <property name="draw-value">1</property>
+ <property name="adjustment">min_opacity_adjustement</property>
+
+ <property name="restrict_to_fill_level">0</property>
+ <property name="fill_level">0</property>
+ <property name="round_digits">0</property>
+ <property name="digits">2</property>
+ <property name="value_pos">right</property>
+ <signal name="value-changed" handler="min_opacity_scale_value_changed_cb" />
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="max_alpha_box">
+ <property name="can_focus">0</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="max_alpha_label">
+ <property name="can_focus">0</property>
+ <property name="label" translatable="yes">Maximum opacity</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScale" id="max_alpha_scale">
+ <property name="hexpand">1</property>
+ <property name="draw-value">1</property>
+ <property name="adjustment">max_opacity_adjustement</property>
+
+ <property name="restrict_to_fill_level">0</property>
+ <property name="fill_level">0</property>
+ <property name="round_digits">0</property>
+ <property name="digits">2</property>
+ <property name="value_pos">right</property>
+ <signal name="value-changed" handler="max_opacity_scale_value_changed_cb" />
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </property>
+ <child type="label_item">
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkAdjustment" id="pressure_threshold_adjustment">
+ <property name="upper">1000</property>
+ <property name="step-increment">50</property>
+ <property name="page-increment">250</property>
+ </object>
+ <object class="GtkAdjustment" id="shortcut_time_adjustment">
+ <property name="upper">10</property>
+ <property name="step-increment">0.25</property>
+ <property name="page-increment">1</property>
+ </object>
+ <object class="GtkBox" id="box_overlay_shortcut">
+ <property name="can_focus">0</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkFrame" id="frame_overlay_show_dock">
+ <property name="can_focus">0</property>
+
+ <property name="child">
+ <object class="GtkListBox" id="listbox_overlay_shortcut">
+ <property name="can_focus">0</property>
+ <property name="selection_mode">none</property>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_overlay_shortcut">
+ <property name="width_request">100</property>
+ <property name="height_request">80</property>
+ <property name="child">
+ <object class="GtkGrid" id="grid_overlay">
+ <property name="can_focus">0</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkSwitch" id="overlay_switch">
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ <property name="row-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="overlay_label">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="label" translatable="yes">Number overlay</property>
+
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="overlay_description">
+ <property name="can_focus">0</property>
+ <property name="label" translatable="yes">Temporarily show the application numbers over the icons, corresponding to the shortcut.</property>
+ <property name="wrap">1</property>
+ <property name="max_width_chars">40</property>
+
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_show_dock">
+ <property name="width_request">100</property>
+ <property name="height_request">80</property>
+ <property name="child">
+ <object class="GtkGrid" id="grid_show_dock">
+ <property name="can_focus">0</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkSwitch" id="show_dock_switch">
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ <property name="row-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="show_dock_label">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Show the dock if it is hidden</property>
+
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="show_dock_description">
+ <property name="can_focus">0</property>
+ <property name="label" translatable="yes">If using autohide, the dock will appear for a short time when triggering the shortcut.</property>
+ <property name="wrap">1</property>
+ <property name="max_width_chars">40</property>
+
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_extra_shortcut">
+ <property name="width_request">100</property>
+ <property name="height_request">80</property>
+ <property name="child">
+ <object class="GtkGrid" id="grid_shortcut">
+ <property name="can_focus">0</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkEntry" id="shortcut_entry">
+ <property name="visible">0</property>
+ <property name="valign">center</property>
+ <property name="width_chars">12</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="shortcut_label">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="label" translatable="yes">Shortcut for the options above</property>
+
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="shortcut_description">
+ <property name="can_focus">0</property>
+ <property name="label" translatable="yes">Syntax: &lt;Shift&gt;, &lt;Ctrl&gt;, &lt;Alt&gt;, &lt;Super&gt;</property>
+ <property name="wrap">1</property>
+ <property name="max_width_chars">40</property>
+
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_timeout">
+ <property name="child">
+ <object class="GtkGrid" id="grid_timeout">
+ <property name="can_focus">0</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="hexpand">1</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkSpinButton" id="timeout_spinbutton">
+ <property name="halign">end</property>
+ <property name="adjustment">shortcut_time_adjustment</property>
+ <property name="digits">3</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="shortcut_timeout_label">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="label" translatable="yes">Hide timeout (s)</property>
+
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </property>
+ <child type="label_item">
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkAdjustment" id="show_timeout_adjustment">
+ <property name="upper">1</property>
+ <property name="step-increment">0.050000000000000003</property>
+ <property name="page-increment">0.25</property>
+ </object>
+ <object class="GtkBox" id="intelligent_autohide_advanced_settings_box">
+ <property name="can_focus">0</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkFrame" id="intelligent_autohide_advanced_settings_frame">
+ <property name="can_focus">0</property>
+
+ <property name="child">
+ <object class="GtkListBox" id="listbox4">
+ <property name="can_focus">0</property>
+ <property name="selection_mode">none</property>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow8">
+ <property name="child">
+ <object class="GtkGrid" id="buitin_theme2">
+ <property name="can_focus">0</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="builtin_theme_description2">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Show the dock by mouse hover on the screen edge.</property>
+ <property name="wrap">1</property>
+
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="builtin_theme_label2">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="label" translatable="yes">Autohide</property>
+
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="autohide_switch">
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ <property name="row-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="require_pressure_checkbutton">
+ <property name="label" translatable="yes">Push to show: require pressure to show the dock</property>
+
+ <layout>
+ <property name="column">0</property>
+ <property name="row">3</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="autohide_enable_in_fullscreen_checkbutton">
+ <property name="label" translatable="yes">Enable in fullscreen mode</property>
+ <property name="margin_top">12</property>
+
+ <layout>
+ <property name="column">0</property>
+ <property name="row">2</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow15">
+ <property name="child">
+ <object class="GtkGrid" id="intellihide_grid">
+ <property name="can_focus">0</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="builtin_theme_description3">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Show the dock when it doesn&apos;t obstruct application windows.</property>
+ <property name="wrap">1</property>
+
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="builtin_theme_label3">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="label" translatable="yes">Dodge windows</property>
+
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="intellihide_switch">
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ <property name="row-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="intellihide_mode_box">
+ <property name="can_focus">0</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkCheckButton" id="all_windows_radio_button">
+ <property name="label" translatable="yes">All windows</property>
+ <property name="margin_top">12</property>
+
+ <property name="active">1</property>
+ <signal name="toggled" handler="all_windows_radio_button_toggled_cb" />
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="focus_application_windows_radio_button">
+ <property name="label" translatable="yes">Only focused application&apos;s windows</property>
+
+ <property name="active">1</property>
+ <property name="group">all_windows_radio_button</property>
+ <signal name="toggled" handler="focus_application_windows_radio_button_toggled_cb" />
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="maximized_windows_radio_button">
+ <property name="label" translatable="yes">Only maximized windows</property>
+
+ <property name="active">1</property>
+ <property name="group">all_windows_radio_button</property>
+ <signal name="toggled" handler="maximized_windows_radio_button_toggled_cb" />
+ </object>
+ </child>
+ <layout>
+ <property name="column">0</property>
+ <property name="row">2</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow5">
+ <property name="child">
+ <object class="GtkGrid" id="grid2">
+ <property name="can_focus">0</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="hexpand">1</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkSpinButton" id="animation_duration_spinbutton">
+ <property name="halign">end</property>
+ <property name="adjustment">animation_time_adjustment</property>
+ <property name="digits">3</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label2">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="label" translatable="yes">Animation duration (s)</property>
+
+ <layout>
+ <property name="column">0</property>
+ <property name="row">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="hide_timeout_spinbutton">
+ <property name="halign">end</property>
+ <property name="adjustment">hide_timeout_adjustment</property>
+ <property name="digits">3</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="show_timeout_spinbutton">
+ <property name="halign">end</property>
+ <property name="adjustment">show_timeout_adjustment</property>
+ <property name="digits">3</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="pressure_threshold_spinbutton">
+ <property name="text">0.000</property>
+ <property name="adjustment">pressure_threshold_adjustment</property>
+ <layout>
+ <property name="column">1</property>
+ <property name="row">3</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label9">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="label" translatable="yes">Hide timeout (s)</property>
+
+ <layout>
+ <property name="column">0</property>
+ <property name="row">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="show_timeout_label">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="label" translatable="yes">Show timeout (s)</property>
+
+ <layout>
+ <property name="column">0</property>
+ <property name="row">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="pressure_threshold_label">
+ <property name="can_focus">0</property>
+ <property name="hexpand">1</property>
+ <property name="label" translatable="yes">Pressure threshold</property>
+
+ <layout>
+ <property name="column">0</property>
+ <property name="row">3</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+ </property>
+ <child type="label_item">
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/extensions/dash-to-dock/appIconIndicators.js b/extensions/dash-to-dock/appIconIndicators.js
new file mode 100644
index 00000000..f015a80f
--- /dev/null
+++ b/extensions/dash-to-dock/appIconIndicators.js
@@ -0,0 +1,1078 @@
+const Cairo = imports.cairo;
+const Clutter = imports.gi.Clutter;
+const GdkPixbuf = imports.gi.GdkPixbuf
+const Gio = imports.gi.Gio;
+const Graphene = imports.gi.Graphene;
+const Gtk = imports.gi.Gtk;
+const Main = imports.ui.main;
+const Pango = imports.gi.Pango;
+const Shell = imports.gi.Shell;
+const St = imports.gi.St;
+
+const Util = imports.misc.util;
+
+const Me = imports.misc.extensionUtils.getCurrentExtension();
+const Docking = Me.imports.docking;
+const Utils = Me.imports.utils;
+
+let tracker = Shell.WindowTracker.get_default();
+
+const RunningIndicatorStyle = {
+ DEFAULT: 0,
+ DOTS: 1,
+ SQUARES: 2,
+ DASHES: 3,
+ SEGMENTED: 4,
+ SOLID: 5,
+ CILIORA: 6,
+ METRO: 7
+};
+
+const MAX_WINDOWS_CLASSES = 4;
+
+
+/*
+ * This is the main indicator class to be used. The desired bahviour is
+ * obtained by composing the desired classes below based on the settings.
+ *
+ */
+var AppIconIndicator = class DashToDock_AppIconIndicator {
+
+ constructor(source) {
+ this._indicators = [];
+
+ // Unity indicators always enabled for now
+ let unityIndicator = new UnityIndicator(source);
+ this._indicators.push(unityIndicator);
+
+ // Choose the style for the running indicators
+ let runningIndicator = null;
+ let runningIndicatorStyle;
+
+ let settings = Docking.DockManager.settings;
+ if (settings.get_boolean('apply-custom-theme' )) {
+ runningIndicatorStyle = RunningIndicatorStyle.DOTS;
+ } else {
+ runningIndicatorStyle = settings.get_enum('running-indicator-style');
+ }
+
+ switch (runningIndicatorStyle) {
+ case RunningIndicatorStyle.DEFAULT:
+ runningIndicator = new RunningIndicatorDefault(source);
+ break;
+
+ case RunningIndicatorStyle.DOTS:
+ runningIndicator = new RunningIndicatorDots(source);
+ break;
+
+ case RunningIndicatorStyle.SQUARES:
+ runningIndicator = new RunningIndicatorSquares(source);
+ break;
+
+ case RunningIndicatorStyle.DASHES:
+ runningIndicator = new RunningIndicatorDashes(source);
+ break;
+
+ case RunningIndicatorStyle.SEGMENTED:
+ runningIndicator = new RunningIndicatorSegmented(source);
+ break;
+
+ case RunningIndicatorStyle.SOLID:
+ runningIndicator = new RunningIndicatorSolid(source);
+ break;
+
+ case RunningIndicatorStyle.CILIORA:
+ runningIndicator = new RunningIndicatorCiliora(source);
+ break;
+
+ case RunningIndicatorStyle.METRO:
+ runningIndicator = new RunningIndicatorMetro(source);
+ break;
+
+ default:
+ runningIndicator = new RunningIndicatorBase(source);
+ }
+
+ this._indicators.push(runningIndicator);
+ }
+
+ update() {
+ for (let i=0; i<this._indicators.length; i++){
+ let indicator = this._indicators[i];
+ indicator.update();
+ }
+ }
+
+ destroy() {
+ for (let i=0; i<this._indicators.length; i++){
+ let indicator = this._indicators[i];
+ indicator.destroy();
+ }
+ }
+}
+
+/*
+ * Base class to be inherited by all indicators of any kind
+*/
+var IndicatorBase = class DashToDock_IndicatorBase {
+
+ constructor(source) {
+ this._source = source;
+ this._signalsHandler = new Utils.GlobalSignalsHandler();
+
+ this._sourceDestroyId = this._source.connect('destroy', () => {
+ this._signalsHandler.destroy();
+ });
+ }
+
+ update() {
+ }
+
+ destroy() {
+ this._source.disconnect(this._sourceDestroyId);
+ this._signalsHandler.destroy();
+ }
+};
+
+/*
+ * A base indicator class for running style, from which all other EunningIndicators should derive,
+ * providing some basic methods, variables definitions and their update, css style classes handling.
+ *
+ */
+var RunningIndicatorBase = class DashToDock_RunningIndicatorBase extends IndicatorBase {
+
+ constructor(source) {
+ super(source)
+
+ this._side = Utils.getPosition();
+ this._nWindows = 0;
+
+ this._dominantColorExtractor = new DominantColorExtractor(this._source.app);
+
+ // These statuses take into account the workspace/monitor isolation
+ this._isFocused = false;
+ this._isRunning = false;
+ }
+
+ update() {
+ // Limit to 1 to MAX_WINDOWS_CLASSES windows classes
+ this._nWindows = Math.min(this._source.getInterestingWindows().length, MAX_WINDOWS_CLASSES);
+
+ // We need to check the number of windows, as the focus might be
+ // happening on another monitor if using isolation
+ if (tracker.focus_app == this._source.app && this._nWindows > 0)
+ this._isFocused = true;
+ else
+ this._isFocused = false;
+
+ // In the case of workspace isolation, we need to hide the dots of apps with
+ // no windows in the current workspace
+ if ((this._source.app.state != Shell.AppState.STOPPED || this._source.isLocation()) && this._nWindows > 0)
+ this._isRunning = true;
+ else
+ this._isRunning = false;
+
+ this._updateCounterClass();
+ this._updateFocusClass();
+ this._updateDefaultDot();
+ }
+
+ _updateCounterClass() {
+ for (let i = 1; i <= MAX_WINDOWS_CLASSES; i++) {
+ let className = 'running' + i;
+ if (i != this._nWindows)
+ this._source.remove_style_class_name(className);
+ else
+ this._source.add_style_class_name(className);
+ }
+ }
+
+ _updateFocusClass() {
+ if (this._isFocused)
+ this._source.add_style_class_name('focused');
+ else
+ this._source.remove_style_class_name('focused');
+ }
+
+ _updateDefaultDot() {
+ if (this._isRunning)
+ this._source._dot.show();
+ else
+ this._source._dot.hide();
+ }
+
+ _hideDefaultDot() {
+ // I use opacity to hide the default dot because the show/hide function
+ // are used by the parent class.
+ this._source._dot.opacity = 0;
+ }
+
+ _restoreDefaultDot() {
+ this._source._dot.opacity = 255;
+ }
+
+ _enableBacklight() {
+
+ let colorPalette = this._dominantColorExtractor._getColorPalette();
+
+ // Fallback
+ if (colorPalette === null) {
+ this._source._iconContainer.set_style(
+ 'border-radius: 5px;' +
+ 'background-gradient-direction: vertical;' +
+ 'background-gradient-start: #e0e0e0;' +
+ 'background-gradient-end: darkgray;'
+ );
+
+ return;
+ }
+
+ this._source._iconContainer.set_style(
+ 'border-radius: 5px;' +
+ 'background-gradient-direction: vertical;' +
+ 'background-gradient-start: ' + colorPalette.original + ';' +
+ 'background-gradient-end: ' + colorPalette.darker + ';'
+ );
+
+ }
+
+ _disableBacklight() {
+ this._source._iconContainer.set_style(null);
+ }
+
+ destroy() {
+ this._disableBacklight();
+ // Remove glossy background if the children still exists
+ if (this._source._iconContainer.get_children().length > 1)
+ this._source._iconContainer.get_children()[1].set_style(null);
+ this._restoreDefaultDot();
+
+ super.destroy();
+ }
+};
+
+// We add a css class so third parties themes can limit their indicaor customization
+// to the case we do nothing
+var RunningIndicatorDefault = class DashToDock_RunningIndicatorDefault extends RunningIndicatorBase {
+
+ constructor(source) {
+ super(source);
+ this._source.add_style_class_name('default');
+ }
+
+ destroy() {
+ this._source.remove_style_class_name('default');
+ super.destroy();
+ }
+};
+
+var RunningIndicatorDots = class DashToDock_RunningIndicatorDots extends RunningIndicatorBase {
+
+ constructor(source) {
+ super(source)
+
+ this._hideDefaultDot();
+
+ this._area = new St.DrawingArea({x_expand: true, y_expand: true});
+
+ // We draw for the bottom case and rotate the canvas for other placements
+ //set center of rotatoins to the center
+ this._area.set_pivot_point(0.5, 0.5);
+ // prepare transformation matrix
+ let m = new Graphene.Matrix();
+ m.init_identity();
+ let v = new Graphene.Vec3();
+ v.init(0, 0, 1);
+
+ switch (this._side) {
+ case St.Side.TOP:
+ m.xx = -1;
+ m.rotate(180, v);
+ break
+
+ case St.Side.BOTTOM:
+ // nothing
+ break;
+
+ case St.Side.LEFT:
+ m.yy = -1;
+ m.rotate(90, v);
+ break;
+
+ case St.Side.RIGHT:
+ m.rotate(-90, v);
+ break
+ }
+
+ this._area.set_transform(m);
+
+ this._area.connect('repaint', this._updateIndicator.bind(this));
+ this._source._iconContainer.add_child(this._area);
+
+ let keys = ['custom-theme-running-dots-color',
+ 'custom-theme-running-dots-border-color',
+ 'custom-theme-running-dots-border-width',
+ 'custom-theme-customize-running-dots',
+ 'unity-backlit-items',
+ 'running-indicator-dominant-color'];
+
+ keys.forEach(function(key) {
+ this._signalsHandler.add([
+ Docking.DockManager.settings,
+ 'changed::' + key,
+ this.update.bind(this)
+ ]);
+ }, this);
+
+ // Apply glossy background
+ // TODO: move to enable/disableBacklit to apply itonly to the running apps?
+ // TODO: move to css class for theming support
+ this._glossyBackgroundStyle = 'background-image: url(\'' + Me.path + '/media/glossy.svg\');' +
+ 'background-size: contain;';
+ }
+
+ update() {
+ super.update();
+
+ // Enable / Disable the backlight of running apps
+ if (!Docking.DockManager.settings.get_boolean('apply-custom-theme') &&
+ Docking.DockManager.settings.get_boolean('unity-backlit-items')) {
+ this._source._iconContainer.get_children()[1].set_style(this._glossyBackgroundStyle);
+ if (this._isRunning)
+ this._enableBacklight();
+ else
+ this._disableBacklight();
+ } else {
+ this._disableBacklight();
+ this._source._iconContainer.get_children()[1].set_style(null);
+ }
+
+ if (this._area)
+ this._area.queue_repaint();
+ }
+
+ _computeStyle() {
+
+ let [width, height] = this._area.get_surface_size();
+ this._width = height;
+ this._height = width;
+
+ // By defaut re-use the style - background color, and border width and color -
+ // of the default dot
+ let themeNode = this._source._dot.get_theme_node();
+ this._borderColor = themeNode.get_border_color(this._side);
+ this._borderWidth = themeNode.get_border_width(this._side);
+ this._bodyColor = themeNode.get_background_color();
+
+ let settings = Docking.DockManager.settings;
+ if (!settings.get_boolean('apply-custom-theme')) {
+ // Adjust for the backlit case
+ if (settings.get_boolean('unity-backlit-items')) {
+ // Use dominant color for dots too if the backlit is enables
+ let colorPalette = this._dominantColorExtractor._getColorPalette();
+
+ // Slightly adjust the styling
+ this._borderWidth = 2;
+
+ if (colorPalette !== null) {
+ this._borderColor = Clutter.color_from_string(colorPalette.lighter)[1] ;
+ this._bodyColor = Clutter.color_from_string(colorPalette.darker)[1];
+ } else {
+ // Fallback
+ this._borderColor = Clutter.color_from_string('white')[1];
+ this._bodyColor = Clutter.color_from_string('gray')[1];
+ }
+ }
+
+ // Apply dominant color if requested
+ if (settings.get_boolean('running-indicator-dominant-color')) {
+ let colorPalette = this._dominantColorExtractor._getColorPalette();
+ if (colorPalette !== null) {
+ this._bodyColor = Clutter.color_from_string(colorPalette.original)[1];
+ }
+ }
+
+ // Finally, use customize style if requested
+ if (settings.get_boolean('custom-theme-customize-running-dots')) {
+ this._borderColor = Clutter.color_from_string(settings.get_string('custom-theme-running-dots-border-color'))[1];
+ this._borderWidth = settings.get_int('custom-theme-running-dots-border-width');
+ this._bodyColor = Clutter.color_from_string(settings.get_string('custom-theme-running-dots-color'))[1];
+ }
+ }
+
+ // Define the radius as an arbitrary size, but keep large enough to account
+ // for the drawing of the border.
+ this._radius = Math.max(this._width/22, this._borderWidth/2);
+ this._padding = 0; // distance from the margin
+ this._spacing = this._radius + this._borderWidth; // separation between the dots
+ }
+
+ _updateIndicator() {
+
+ let area = this._area;
+ let cr = this._area.get_context();
+
+ this._computeStyle();
+ this._drawIndicator(cr);
+ cr.$dispose();
+ }
+
+ _drawIndicator(cr) {
+ // Draw the required numbers of dots
+ let n = this._nWindows;
+
+ cr.setLineWidth(this._borderWidth);
+ Clutter.cairo_set_source_color(cr, this._borderColor);
+
+ // draw for the bottom case:
+ cr.translate((this._width - (2*n)*this._radius - (n-1)*this._spacing)/2, this._height - this._padding);
+ for (let i = 0; i < n; i++) {
+ cr.newSubPath();
+ cr.arc((2*i+1)*this._radius + i*this._spacing, -this._radius - this._borderWidth/2, this._radius, 0, 2*Math.PI);
+ }
+
+ cr.strokePreserve();
+ Clutter.cairo_set_source_color(cr, this._bodyColor);
+ cr.fill();
+ }
+
+ destroy() {
+ this._area.destroy();
+ super.destroy();
+ }
+};
+
+// Adapted from dash-to-panel by Jason DeRose
+// https://github.com/jderose9/dash-to-panel
+var RunningIndicatorCiliora = class DashToDock_RunningIndicatorCiliora extends RunningIndicatorDots {
+
+ _drawIndicator(cr) {
+ if (this._isRunning) {
+
+ let size = Math.max(this._width/20, this._borderWidth);
+ let spacing = size; // separation between the dots
+ let lineLength = this._width - (size*(this._nWindows-1)) - (spacing*(this._nWindows-1));
+ let padding = this._borderWidth;
+ // For the backlit case here we don't want the outer border visible
+ if (Docking.DockManager.settings.get_boolean('unity-backlit-items') &&
+ !Docking.DockManager.settings.get_boolean('custom-theme-customize-running-dots'))
+ padding = 0;
+ let yOffset = this._height - padding - size;
+
+ cr.setLineWidth(this._borderWidth);
+ Clutter.cairo_set_source_color(cr, this._borderColor);
+
+ cr.translate(0, yOffset);
+ cr.newSubPath();
+ cr.rectangle(0, 0, lineLength, size);
+ for (let i = 1; i < this._nWindows; i++) {
+ cr.newSubPath();
+ cr.rectangle(lineLength + (i*spacing) + ((i-1)*size), 0, size, size);
+ }
+
+ cr.strokePreserve();
+ Clutter.cairo_set_source_color(cr, this._bodyColor);
+ cr.fill();
+ }
+ }
+};
+
+// Adapted from dash-to-panel by Jason DeRose
+// https://github.com/jderose9/dash-to-panel
+var RunningIndicatorSegmented = class DashToDock_RunningIndicatorSegmented extends RunningIndicatorDots {
+
+ _drawIndicator(cr) {
+ if (this._isRunning) {
+ let size = Math.max(this._width/20, this._borderWidth);
+ let spacing = Math.ceil(this._width/18); // separation between the dots
+ let dashLength = Math.ceil((this._width - ((this._nWindows-1)*spacing))/this._nWindows);
+ let lineLength = this._width - (size*(this._nWindows-1)) - (spacing*(this._nWindows-1));
+ let padding = this._borderWidth;
+ // For the backlit case here we don't want the outer border visible
+ if (Docking.DockManager.settings.get_boolean('unity-backlit-items') &&
+ !Docking.DockManager.settings.get_boolean('custom-theme-customize-running-dots'))
+ padding = 0;
+ let yOffset = this._height - padding - size;
+
+ cr.setLineWidth(this._borderWidth);
+ Clutter.cairo_set_source_color(cr, this._borderColor);
+
+ cr.translate(0, yOffset);
+ for (let i = 0; i < this._nWindows; i++) {
+ cr.newSubPath();
+ cr.rectangle(i*dashLength + i*spacing, 0, dashLength, size);
+ }
+
+ cr.strokePreserve();
+ Clutter.cairo_set_source_color(cr, this._bodyColor);
+ cr.fill()
+ }
+ }
+};
+
+// Adapted from dash-to-panel by Jason DeRose
+// https://github.com/jderose9/dash-to-panel
+var RunningIndicatorSolid = class DashToDock_RunningIndicatorSolid extends RunningIndicatorDots {
+
+ _drawIndicator(cr) {
+ if (this._isRunning) {
+
+ let size = Math.max(this._width/20, this._borderWidth);
+ let padding = this._borderWidth;
+ // For the backlit case here we don't want the outer border visible
+ if (Docking.DockManager.settings.get_boolean('unity-backlit-items') &&
+ !Docking.DockManager.settings.get_boolean('custom-theme-customize-running-dots'))
+ padding = 0;
+ let yOffset = this._height - padding - size;
+
+ cr.setLineWidth(this._borderWidth);
+ Clutter.cairo_set_source_color(cr, this._borderColor);
+
+ cr.translate(0, yOffset);
+ cr.newSubPath();
+ cr.rectangle(0, 0, this._width, size);
+
+ cr.strokePreserve();
+ Clutter.cairo_set_source_color(cr, this._bodyColor);
+ cr.fill();
+
+ }
+ }
+};
+
+// Adapted from dash-to-panel by Jason DeRose
+// https://github.com/jderose9/dash-to-panel
+var RunningIndicatorSquares = class DashToDock_RunningIndicatorSquares extends RunningIndicatorDots {
+
+ _drawIndicator(cr) {
+ if (this._isRunning) {
+ let size = Math.max(this._width/11, this._borderWidth);
+ let padding = this._borderWidth;
+ let spacing = Math.ceil(this._width/18); // separation between the dots
+ let yOffset = this._height - padding - size;
+
+ cr.setLineWidth(this._borderWidth);
+ Clutter.cairo_set_source_color(cr, this._borderColor);
+
+ cr.translate(Math.floor((this._width - this._nWindows*size - (this._nWindows-1)*spacing)/2), yOffset);
+ for (let i = 0; i < this._nWindows; i++) {
+ cr.newSubPath();
+ cr.rectangle(i*size + i*spacing, 0, size, size);
+ }
+ cr.strokePreserve();
+ Clutter.cairo_set_source_color(cr, this._bodyColor);
+ cr.fill();
+ }
+ }
+}
+
+// Adapted from dash-to-panel by Jason DeRose
+// https://github.com/jderose9/dash-to-panel
+var RunningIndicatorDashes = class DashToDock_RunningIndicatorDashes extends RunningIndicatorDots {
+
+ _drawIndicator(cr) {
+ if (this._isRunning) {
+ let size = Math.max(this._width/20, this._borderWidth);
+ let padding = this._borderWidth;
+ let spacing = Math.ceil(this._width/18); // separation between the dots
+ let dashLength = Math.floor(this._width/4) - spacing;
+ let yOffset = this._height - padding - size;
+
+ cr.setLineWidth(this._borderWidth);
+ Clutter.cairo_set_source_color(cr, this._borderColor);
+
+ cr.translate(Math.floor((this._width - this._nWindows*dashLength - (this._nWindows-1)*spacing)/2), yOffset);
+ for (let i = 0; i < this._nWindows; i++) {
+ cr.newSubPath();
+ cr.rectangle(i*dashLength + i*spacing, 0, dashLength, size);
+ }
+
+ cr.strokePreserve();
+ Clutter.cairo_set_source_color(cr, this._bodyColor);
+ cr.fill();
+ }
+ }
+}
+
+// Adapted from dash-to-panel by Jason DeRose
+// https://github.com/jderose9/dash-to-panel
+var RunningIndicatorMetro = class DashToDock_RunningIndicatorMetro extends RunningIndicatorDots {
+
+ constructor(source) {
+ super(source);
+ this._source.add_style_class_name('metro');
+ }
+
+ destroy() {
+ this._source.remove_style_class_name('metro');
+ super.destroy();
+ }
+
+ _drawIndicator(cr) {
+ if (this._isRunning) {
+ let size = Math.max(this._width/20, this._borderWidth);
+ let padding = 0;
+ // For the backlit case here we don't want the outer border visible
+ if (Docking.DockManager.settings.get_boolean('unity-backlit-items') &&
+ !Docking.DockManager.settings.get_boolean('custom-theme-customize-running-dots'))
+ padding = 0;
+ let yOffset = this._height - padding - size;
+
+ let n = this._nWindows;
+ if(n <= 1) {
+ cr.translate(0, yOffset);
+ Clutter.cairo_set_source_color(cr, this._bodyColor);
+ cr.newSubPath();
+ cr.rectangle(0, 0, this._width, size);
+ cr.fill();
+ } else {
+ let blackenedLength = (1/48)*this._width; // need to scale with the SVG for the stacked highlight
+ let darkenedLength = this._isFocused ? (2/48)*this._width : (10/48)*this._width;
+ let blackenedColor = this._bodyColor.shade(.3);
+ let darkenedColor = this._bodyColor.shade(.7);
+
+ cr.translate(0, yOffset);
+
+ Clutter.cairo_set_source_color(cr, this._bodyColor);
+ cr.newSubPath();
+ cr.rectangle(0, 0, this._width - darkenedLength - blackenedLength, size);
+ cr.fill();
+ Clutter.cairo_set_source_color(cr, blackenedColor);
+ cr.newSubPath();
+ cr.rectangle(this._width - darkenedLength - blackenedLength, 0, 1, size);
+ cr.fill();
+ Clutter.cairo_set_source_color(cr, darkenedColor);
+ cr.newSubPath();
+ cr.rectangle(this._width - darkenedLength, 0, darkenedLength, size);
+ cr.fill();
+ }
+ }
+ }
+}
+
+/*
+ * Unity like notification and progress indicators
+ */
+var UnityIndicator = class DashToDock_UnityIndicator extends IndicatorBase {
+
+ constructor(source) {
+
+ super(source);
+
+ this._notificationBadgeLabel = new St.Label();
+ this._notificationBadgeBin = new St.Bin({
+ child: this._notificationBadgeLabel,
+ x_align: Clutter.ActorAlign.END,
+ y_align: Clutter.ActorAlign.START,
+ x_expand: true, y_expand: true
+ });
+ this._notificationBadgeLabel.add_style_class_name('notification-badge');
+ this._notificationBadgeLabel.clutter_text.ellipsize = Pango.EllipsizeMode.MIDDLE;
+ this._notificationBadgeBin.hide();
+
+ this._source._iconContainer.add_child(this._notificationBadgeBin);
+ this.updateNotificationBadgeStyle();
+
+ const remoteEntry = this._source.remoteModel.lookupById(this._source.app.id);
+ this._signalsHandler.add([
+ remoteEntry,
+ ['count-changed', 'count-visible-changed'],
+ (sender, { count, count_visible }) =>
+ this.setNotificationCount(count_visible ? count : 0)
+ ], [
+ remoteEntry,
+ ['progress-changed', 'progress-visible-changed'],
+ (sender, { progress, progress_visible }) =>
+ this.setProgress(progress_visible ? progress : -1)
+ ], [
+ remoteEntry,
+ 'urgent-changed',
+ (sender, { urgent }) => this.setUrgent(urgent)
+ ], [
+ St.ThemeContext.get_for_stage(global.stage),
+ 'changed',
+ this.updateNotificationBadgeStyle.bind(this)
+ ], [
+ this._source._iconContainer,
+ 'notify::size',
+ this.updateNotificationBadgeStyle.bind(this)
+ ]);
+
+ this._isUrgent = false;
+ }
+
+ updateNotificationBadgeStyle() {
+ let themeContext = St.ThemeContext.get_for_stage(global.stage);
+ let fontDesc = themeContext.get_font();
+ let defaultFontSize = fontDesc.get_size() / 1024;
+ let fontSize = defaultFontSize * 0.9;
+ let iconSize = Main.overview.dash.iconSize;
+ let defaultIconSize = Docking.DockManager.settings.get_default_value(
+ 'dash-max-icon-size').unpack();
+
+ if (!fontDesc.get_size_is_absolute()) {
+ // fontSize was exprimed in points, so convert to pixel
+ fontSize /= 0.75;
+ }
+
+ fontSize = Math.round((iconSize / defaultIconSize) * fontSize);
+ let leftMargin = Math.round((iconSize / defaultIconSize) * 3);
+
+ this._notificationBadgeLabel.set_style(
+ 'font-size: ' + fontSize + 'px;' +
+ 'margin-left: ' + leftMargin + 'px'
+ );
+ }
+
+ _notificationBadgeCountToText(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";
+ }
+ }
+
+ setNotificationCount(count) {
+ if (count > 0) {
+ let text = this._notificationBadgeCountToText(count);
+ this._notificationBadgeLabel.set_text(text);
+ this._notificationBadgeBin.show();
+ } else {
+ this._notificationBadgeBin.hide();
+ }
+ }
+
+ _showProgressOverlay() {
+ 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() {
+ if (this._progressOverlayArea)
+ this._progressOverlayArea.destroy();
+ this._progressOverlayArea = null;
+ this._progressbar_background = null;
+ this._progressbar_border = null;
+ }
+
+ _updateProgressOverlay() {
+ if (this._progressOverlayArea)
+ this._progressOverlayArea.queue_repaint();
+ }
+
+ _drawProgressOverlay(area) {
+ let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
+ 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(progress) {
+ if (progress < 0) {
+ this._hideProgressOverlay();
+ } else {
+ this._progress = Math.min(progress, 1.0);
+ this._showProgressOverlay();
+ }
+ }
+
+ setUrgent(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;
+ }
+ }
+}
+
+
+// We need an icons theme object, this is the only way I managed to get
+// pixel buffers that can be used for calculating the backlight color
+let themeLoader = null;
+
+// Global icon cache. Used for Unity7 styling.
+let iconCacheMap = new Map();
+// Max number of items to store
+// We don't expect to ever reach this number, but let's put an hard limit to avoid
+// even the remote possibility of the cached items to grow indefinitely.
+const MAX_CACHED_ITEMS = 1000;
+// When the size exceed it, the oldest 'n' ones are deleted
+const BATCH_SIZE_TO_DELETE = 50;
+// The icon size used to extract the dominant color
+const DOMINANT_COLOR_ICON_SIZE = 64;
+
+// Compute dominant color frim the app icon.
+// The color is cached for efficiency.
+var DominantColorExtractor = class DashToDock_DominantColorExtractor {
+
+ constructor(app) {
+ this._app = app;
+ }
+
+ /**
+ * Try to get the pixel buffer for the current icon, if not fail gracefully
+ */
+ _getIconPixBuf() {
+ 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() {
+ 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 = Utils.ColorUtils.RGBtoHSV(r * 255, g * 255, b * 255);
+
+ if (hsv.s > 0.15)
+ hsv.s = 0.65;
+ hsv.v = 0.90;
+
+ let rgb = Utils.ColorUtils.HSVtoRGB(hsv.h, hsv.s, hsv.v);
+
+ // Cache the result.
+ let backgroundColor = {
+ lighter: Utils.ColorUtils.ColorLuminance(rgb.r, rgb.g, rgb.b, 0.2),
+ original: Utils.ColorUtils.ColorLuminance(rgb.r, rgb.g, rgb.b, 0),
+ darker: Utils.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 (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;
+ }
+};
diff --git a/extensions/dash-to-dock/appIcons.js b/extensions/dash-to-dock/appIcons.js
new file mode 100644
index 00000000..d04230e6
--- /dev/null
+++ b/extensions/dash-to-dock/appIcons.js
@@ -0,0 +1,1273 @@
+// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
+
+const Clutter = imports.gi.Clutter;
+const GdkPixbuf = imports.gi.GdkPixbuf
+const Gio = imports.gi.Gio;
+const GLib = imports.gi.GLib;
+const GObject = imports.gi.GObject;
+const Signals = imports.signals;
+const Meta = imports.gi.Meta;
+const Shell = imports.gi.Shell;
+const St = imports.gi.St;
+
+// Use __ () and N__() for the extension gettext domain, and reuse
+// the shell domain with the default _() and N_()
+const Gettext = imports.gettext.domain('gnome-shell-extensions');
+const __ = Gettext.gettext;
+const N__ = function(e) { return e };
+
+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 ExtensionUtils = imports.misc.extensionUtils;
+const Me = ExtensionUtils.getCurrentExtension();
+const Docking = Me.imports.docking;
+const Utils = Me.imports.utils;
+const WindowPreview = Me.imports.windowPreview;
+const AppIconIndicators = Me.imports.appIconIndicators;
+const DbusmenuUtils = Me.imports.dbusmenuUtils;
+
+let tracker = Shell.WindowTracker.get_default();
+
+const clickAction = {
+ SKIP: 0,
+ MINIMIZE: 1,
+ LAUNCH: 2,
+ CYCLE_WINDOWS: 3,
+ MINIMIZE_OR_OVERVIEW: 4,
+ PREVIEWS: 5,
+ MINIMIZE_OR_PREVIEWS: 6,
+ FOCUS_OR_PREVIEWS: 7,
+ FOCUS_MINIMIZE_OR_PREVIEWS: 8,
+ QUIT: 9
+};
+
+const scrollAction = {
+ DO_NOTHING: 0,
+ CYCLE_WINDOWS: 1,
+ SWITCH_WORKSPACE: 2
+};
+
+let recentlyClickedAppLoopId = 0;
+let recentlyClickedApp = null;
+let recentlyClickedAppWindows = null;
+let recentlyClickedAppIndex = 0;
+let recentlyClickedAppMonitor = -1;
+
+/**
+ * Extend AppIcon
+ *
+ * - Apply a css class based on the number of windows of each application (#N);
+ * - Customized indicators for running applications in place of 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
+ * - Update menu if open on windows change
+ */
+var MyAppIcon = GObject.registerClass(
+class MyAppIcon extends Dash.DashIcon {
+ // settings are required inside.
+ _init(remoteModel, app, monitorIndex, iconAnimator) {
+ super._init(app);
+
+ // a prefix is required to avoid conflicting with the parent class variable
+ this.monitorIndex = monitorIndex;
+ this._signalsHandler = new Utils.GlobalSignalsHandler();
+ this.remoteModel = remoteModel;
+ this.iconAnimator = iconAnimator;
+ this._indicator = null;
+
+ let appInfo = app.get_app_info();
+ this._location = appInfo ? appInfo.get_string('XdtdUri') : null;
+
+ this._updateIndicatorStyle();
+
+ // 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._windowsChangedId = this.app.connect('windows-changed',
+ this.onWindowsChanged.bind(this));
+ this._focusAppChangeId = tracker.connect('notify::focus-app',
+ this._onFocusAppChanged.bind(this));
+
+ // In Wayland sessions, this signal is needed to track the state of windows dragged
+ // from one monitor to another. As this is triggered quite often (whenever a new winow
+ // of any application opened or moved to a different desktop),
+ // we restrict this signal to the case when 'isolate-monitors' is true,
+ // and if there are at least 2 monitors.
+ if (Docking.DockManager.settings.get_boolean('isolate-monitors') &&
+ Main.layoutManager.monitors.length > 1) {
+ this._signalsHandler.removeWithLabel('isolate-monitors');
+ this._signalsHandler.addWithLabel('isolate-monitors', [
+ global.display,
+ 'window-entered-monitor',
+ this._onWindowEntered.bind(this)
+ ]);
+ }
+
+ this._progressOverlayArea = null;
+ this._progress = 0;
+
+ let keys = ['apply-custom-theme',
+ 'running-indicator-style',
+ ];
+
+ keys.forEach(function(key) {
+ this._signalsHandler.add([
+ Docking.DockManager.settings,
+ 'changed::' + key,
+ this._updateIndicatorStyle.bind(this)
+ ]);
+ }, this);
+
+ if (this._location) {
+ this._signalsHandler.add([
+ Docking.DockManager.getDefault().fm1Client,
+ 'windows-changed',
+ this.onWindowsChanged.bind(this)
+ ]);
+ }
+
+ this._numberOverlay();
+
+ this._previewMenuManager = null;
+ this._previewMenu = null;
+ }
+
+ _onDestroy() {
+ super._onDestroy();
+
+ // This is necessary due to an upstream bug
+ // https://bugzilla.gnome.org/show_bug.cgi?id=757556
+ // It can be safely removed once it get solved upstrea.
+ if (this._menu)
+ this._menu.close(false);
+
+ // Disconect global signals
+
+ if (this._windowsChangedId > 0)
+ this.app.disconnect(this._windowsChangedId);
+ this._windowsChangedId = 0;
+
+ if (this._focusAppChangeId > 0) {
+ tracker.disconnect(this._focusAppChangeId);
+ this._focusAppChangeId = 0;
+ }
+
+ this._signalsHandler.destroy();
+ }
+
+ // TOOD Rename this function
+ _updateIndicatorStyle() {
+
+ if (this._indicator !== null) {
+ this._indicator.destroy();
+ this._indicator = null;
+ }
+ this._indicator = new AppIconIndicators.AppIconIndicator(this);
+ this._indicator.update();
+ }
+
+ _onWindowEntered(metaScreen, monitorIndex, metaWin) {
+ let app = Shell.WindowTracker.get_default().get_window_app(metaWin);
+ if (app && app.get_id() == this.app.get_id())
+ this.onWindowsChanged();
+ }
+
+ vfunc_scroll_event(scrollEvent) {
+ let settings = Docking.DockManager.settings;
+ let isEnabled = settings.get_enum('scroll-action') === scrollAction.CYCLE_WINDOWS;
+ if (!isEnabled)
+ return Clutter.EVENT_PROPAGATE;
+
+ // We only activate windows of running applications, i.e. we never open new windows
+ // 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
+ && this.getInterestingWindows().length > 0;
+
+ if (!appIsRunning)
+ return Clutter.EVENT_PROPAGATE;
+
+ if (this._optionalScrollCycleWindowsDeadTimeId)
+ return Clutter.EVENT_PROPAGATE;
+ else
+ this._optionalScrollCycleWindowsDeadTimeId = GLib.timeout_add(
+ GLib.PRIORITY_DEFAULT, 250, () => {
+ this._optionalScrollCycleWindowsDeadTimeId = 0;
+ });
+
+ let direction = null;
+
+ switch (scrollEvent.direction) {
+ case Clutter.ScrollDirection.UP:
+ direction = Meta.MotionDirection.UP;
+ break;
+ case Clutter.ScrollDirection.DOWN:
+ direction = Meta.MotionDirection.DOWN;
+ break;
+ case Clutter.ScrollDirection.SMOOTH:
+ let [, dy] = Clutter.get_current_event().get_scroll_delta();
+ if (dy < 0)
+ direction = Meta.MotionDirection.UP;
+ else if (dy > 0)
+ direction = Meta.MotionDirection.DOWN;
+ break;
+ }
+
+ let focusedApp = tracker.focus_app;
+ if (!Main.overview._shown) {
+ let reversed = direction === Meta.MotionDirection.UP;
+ if (this.app == focusedApp)
+ this._cycleThroughWindows(reversed);
+ else {
+ // Activate the first window
+ let windows = this.getInterestingWindows();
+ if (windows.length > 0) {
+ let w = windows[0];
+ Main.activateWindow(w);
+ }
+ }
+ }
+ else
+ this.app.activate();
+ return Clutter.EVENT_STOP;
+ }
+
+ onWindowsChanged() {
+
+ if (this._menu && this._menu.isOpen)
+ this._menu.update();
+
+ this._indicator.update();
+ this.updateIconGeometry();
+ }
+
+ /**
+ * Update taraget for minimization animation
+ */
+ updateIconGeometry() {
+ // 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.get_stage() == null)
+ return;
+
+ let rect = new Meta.Rectangle();
+
+ [rect.x, rect.y] = this.get_transformed_position();
+ [rect.width, rect.height] = this.get_transformed_size();
+
+ let windows = this.getWindows();
+ if (Docking.DockManager.settings.get_boolean('multi-monitor')) {
+ let monitorIndex = this.monitorIndex;
+ windows = windows.filter(function(w) {
+ return w.get_monitor() == monitorIndex;
+ });
+ }
+ windows.forEach(function(w) {
+ w.set_icon_geometry(rect);
+ });
+ }
+
+ _updateRunningStyle() {
+ // The logic originally in this function has been moved to
+ // AppIconIndicatorBase._updateDefaultDot(). However it cannot be removed as
+ // it called by the parent constructor.
+ }
+
+ popupMenu() {
+ this._removeMenuTimeout();
+ this.fake_release();
+ this._draggable.fakeRelease();
+
+ if (!this._menu) {
+ this._menu = new MyAppIconMenu(this, this.remoteModel);
+ this._menu.connect('activate-window', (menu, window) => {
+ this.activateWindow(window);
+ });
+ this._menu.connect('open-state-changed', (menu, isPoppedUp) => {
+ if (!isPoppedUp)
+ this._onMenuPoppedDown();
+ else {
+ // Setting the max-height is s useful if part of the menu is
+ // scrollable so the minimum height is smaller than the natural height.
+ let monitor_index = Main.layoutManager.findIndexForActor(this);
+ let workArea = Main.layoutManager.getWorkAreaForMonitor(monitor_index);
+ let position = Utils.getPosition();
+ this._isHorizontal = ( position == St.Side.TOP ||
+ position == St.Side.BOTTOM);
+ // If horizontal also remove the height of the dash
+ let fixedDock = Docking.DockManager.settings.get_boolean('dock-fixed');
+ let additional_margin = this._isHorizontal && !fixedDock ? Main.overview.dash.height : 0;
+ let verticalMargins = this._menu.actor.margin_top + this._menu.actor.margin_bottom;
+ // Also set a max width to the menu, so long labels (long windows title) get truncated
+ this._menu.actor.style = ('max-height: ' + Math.round(workArea.height - additional_margin - verticalMargins) + 'px;' +
+ 'max-width: 400px');
+ }
+ });
+ let id = Main.overview.connect('hiding', () => {
+ 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.set_hover(true);
+ this._menu.popup();
+ this._menuManager.ignoreRelease();
+ this.emit('sync-tooltip');
+
+ return false;
+ }
+
+ _onFocusAppChanged() {
+ this._indicator.update();
+ }
+
+ activate(button) {
+ let event = Clutter.get_current_event();
+ let modifiers = event ? event.get_state() : 0;
+ let focusedApp = tracker.focus_app;
+
+ // 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
+ super.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;
+ let settings = Docking.DockManager.settings;
+ if (button && button == 2 ) {
+ if (modifiers & Clutter.ModifierType.SHIFT_MASK)
+ buttonAction = settings.get_enum('shift-middle-click-action');
+ else
+ buttonAction = settings.get_enum('middle-click-action');
+ }
+ else if (button && button == 1) {
+ if (modifiers & Clutter.ModifierType.SHIFT_MASK)
+ buttonAction = settings.get_enum('shift-click-action');
+ else
+ buttonAction = settings.get_enum('click-action');
+ }
+
+ // We check if the app is running, and that the # of windows is > 0 in
+ // case we use workspace isolation.
+ let windows = this.getInterestingWindows();
+ let appIsRunning = (this.app.state == Shell.AppState.RUNNING || this.isLocation())
+ && windows.length > 0;
+
+ // Some action modes (e.g. MINIMIZE_OR_OVERVIEW) require overview to remain open
+ // This variable keeps track of this
+ let shouldHideOverview = true;
+
+ // We customize the action only when the application is already running
+ if (appIsRunning) {
+ switch (buttonAction) {
+ case clickAction.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 (this.app == focusedApp || 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 click_count = 0;
+ if (Clutter.EventType.CLUTTER_BUTTON_PRESS)
+ click_count = event.get_click_count();
+ let all_windows = (button == 1 && ! modifiers) || click_count > 1;
+ this._minimizeWindow(all_windows);
+ }
+ else
+ this._activateAllWindows();
+ }
+ else {
+ let w = windows[0];
+ Main.activateWindow(w);
+ }
+ break;
+
+ case clickAction.MINIMIZE_OR_OVERVIEW:
+ // When a single window is present, toggle minimization
+ // If only one windows is present toggle minimization, but only when trigggered with the
+ // simple click action (no modifiers, no middle click).
+ if (windows.length == 1 && !modifiers && button == 1) {
+ let w = windows[0];
+ if (this.app == focusedApp) {
+ // Window is raised, minimize it
+ this._minimizeWindow(w);
+ } else {
+ // Window is minimized, raise it
+ Main.activateWindow(w);
+ }
+ // Launch overview when multiple windows are present
+ // TODO: only show current app windows when gnome shell API will allow it
+ } else {
+ shouldHideOverview = false;
+ Main.overview.toggle();
+ }
+ break;
+
+ case clickAction.CYCLE_WINDOWS:
+ if (!Main.overview._shown){
+ if (this.app == focusedApp)
+ this._cycleThroughWindows();
+ else {
+ // Activate the first window
+ let w = windows[0];
+ Main.activateWindow(w);
+ }
+ }
+ else
+ this.app.activate();
+ break;
+
+ case clickAction.FOCUS_OR_PREVIEWS:
+ if (this.app == focusedApp &&
+ (windows.length > 1 || modifiers || button != 1)) {
+ this._windowPreviews();
+ } else {
+ // Activate the first window
+ let w = windows[0];
+ Main.activateWindow(w);
+ }
+ break;
+
+ case clickAction.FOCUS_MINIMIZE_OR_PREVIEWS:
+ if (this.app == focusedApp) {
+ if (windows.length > 1 || modifiers || button != 1)
+ this._windowPreviews();
+ else if (!Main.overview.visible)
+ this._minimizeWindow();
+ } else {
+ // Activate the first window
+ let w = windows[0];
+ Main.activateWindow(w);
+ }
+ break;
+
+ case clickAction.LAUNCH:
+ this.launchNewWindow();
+ break;
+
+ case clickAction.PREVIEWS:
+ if (!Main.overview._shown) {
+ // If only one windows is present just switch to it, but only when trigggered with the
+ // simple click action (no modifiers, no middle click).
+ if (windows.length == 1 && !modifiers && button == 1) {
+ let w = windows[0];
+ Main.activateWindow(w);
+ } else
+ this._windowPreviews();
+ }
+ else {
+ this.app.activate();
+ }
+ break;
+
+ case clickAction.MINIMIZE_OR_PREVIEWS:
+ // When a single window is present, toggle minimization
+ // If only one windows is present toggle minimization, but only when trigggered with the
+ // simple click action (no modifiers, no middle click).
+ if (!Main.overview._shown){
+ if (windows.length == 1 && !modifiers && button == 1) {
+ let w = windows[0];
+ if (this.app == focusedApp) {
+ // Window is raised, minimize it
+ this._minimizeWindow(w);
+ } else {
+ // Window is minimized, raise it
+ Main.activateWindow(w);
+ }
+ } else {
+ // Launch previews when multiple windows are present
+ this._windowPreviews();
+ }
+ } else {
+ this.app.activate();
+ }
+ break;
+
+ case clickAction.QUIT:
+ this.closeAllWindows();
+ break;
+
+ case clickAction.SKIP:
+ let w = windows[0];
+ Main.activateWindow(w);
+ break;
+ }
+ }
+ else {
+ this.launchNewWindow();
+ }
+
+ // Hide overview except when action mode requires it
+ if(shouldHideOverview) {
+ Main.overview.hide();
+ }
+ }
+
+ shouldShowTooltip() {
+ return this.hover && (!this._menu || !this._menu.isOpen) &&
+ (!this._previewMenu || !this._previewMenu.isOpen);
+ }
+
+ _windowPreviews() {
+ if (!this._previewMenu) {
+ this._previewMenuManager = new PopupMenu.PopupMenuManager(this);
+
+ this._previewMenu = new WindowPreview.WindowPreviewMenu(this);
+
+ this._previewMenuManager.addMenu(this._previewMenu);
+
+ this._previewMenu.connect('open-state-changed', (menu, isPoppedUp) => {
+ if (!isPoppedUp)
+ this._onMenuPoppedDown();
+ });
+ let id = Main.overview.connect('hiding', () => {
+ this._previewMenu.close();
+ });
+ this._previewMenu.actor.connect('destroy', function() {
+ Main.overview.disconnect(id);
+ });
+
+ }
+
+ if (this._previewMenu.isOpen)
+ this._previewMenu.close();
+ else
+ this._previewMenu.popup();
+
+ return false;
+ }
+
+ // Try to do the right thing when attempting to launch a new window of an app. In
+ // particular, if the application doens't allow to launch a new window, activate
+ // the existing window instead.
+ launchNewWindow(p) {
+ let appInfo = this.app.get_app_info();
+ let actions = appInfo.list_actions();
+ if (this.app.can_open_new_window()) {
+ this.animateLaunch();
+ // This is used as a workaround for a bug resulting in no new windows being opened
+ // for certain running applications when calling open_new_window().
+ //
+ // https://bugzilla.gnome.org/show_bug.cgi?id=756844
+ //
+ // Similar to what done when generating the popupMenu entries, if the application provides
+ // a "New Window" action, use it instead of directly requesting a new window with
+ // open_new_window(), which fails for certain application, notably Nautilus.
+ if (actions.indexOf('new-window') == -1) {
+ this.app.open_new_window(-1);
+ }
+ else {
+ let i = actions.indexOf('new-window');
+ if (i !== -1)
+ this.app.launch_action(actions[i], global.get_current_time(), -1);
+ }
+ }
+ else {
+ // Try to manually activate the first window. Otherwise, when the app is activated by
+ // switching to a different workspace, a launch spinning icon is shown and disappers only
+ // after a timeout.
+ let windows = this.getWindows();
+ if (windows.length > 0)
+ Main.activateWindow(windows[0])
+ else
+ this.app.activate();
+ }
+ }
+
+ _numberOverlay() {
+ // Add label for a Hot-Key visual aid
+ this._numberOverlayLabel = new St.Label();
+ this._numberOverlayBin = new St.Bin({
+ child: this._numberOverlayLabel,
+ x_align: Clutter.ActorAlign.START,
+ y_align: Clutter.ActorAlign.START,
+ x_expand: true, y_expand: true
+ });
+ this._numberOverlayLabel.add_style_class_name('number-overlay');
+ this._numberOverlayOrder = -1;
+ this._numberOverlayBin.hide();
+
+ this._iconContainer.add_child(this._numberOverlayBin);
+
+ }
+
+ updateNumberOverlay() {
+ // 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.
+ let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
+ // 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._iconContainer.get_preferred_width(-1);
+ let font_size = Math.round(Math.max(12, 0.3*natWidth) / scaleFactor);
+ let size = Math.round(font_size*1.2);
+ this._numberOverlayLabel.set_style(
+ 'font-size: ' + font_size + 'px;' +
+ 'border-radius: ' + this.icon.iconSize + 'px;' +
+ 'width: ' + size + 'px; height: ' + size +'px;'
+ );
+ }
+
+ setNumberOverlay(number) {
+ this._numberOverlayOrder = number;
+ this._numberOverlayLabel.set_text(number.toString());
+ }
+
+ toggleNumberOverlay(activate) {
+ if (activate && this._numberOverlayOrder > -1) {
+ this.updateNumberOverlay();
+ this._numberOverlayBin.show();
+ }
+ else
+ this._numberOverlayBin.hide();
+ }
+
+ _minimizeWindow(param) {
+ // Param true make all app windows minimize
+ let windows = this.getInterestingWindows();
+ let current_workspace = global.workspace_manager.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.
+ _activateAllWindows() {
+ // First activate first window so workspace is switched if needed.
+ // We don't do this if isolation is on!
+ if (!Docking.DockManager.settings.get_boolean('isolate-workspaces') &&
+ !Docking.DockManager.settings.get_boolean('isolate-monitors'))
+ this.app.activate();
+
+ // then activate all other app windows in the current workspace
+ let windows = this.getInterestingWindows();
+ let activeWorkspace = global.workspace_manager.get_active_workspace_index();
+
+ if (windows.length <= 0)
+ return;
+
+ let activatedWindows = 0;
+
+ for (let i = windows.length - 1; i >= 0; i--) {
+ if (windows[i].get_workspace().index() == activeWorkspace) {
+ Main.activateWindow(windows[i]);
+ activatedWindows++;
+ }
+ }
+ }
+
+ //This closes all windows of the app.
+ closeAllWindows() {
+ let windows = this.getInterestingWindows();
+ for (let i = 0; i < windows.length; i++)
+ windows[i].delete(global.get_current_time());
+ }
+
+ _cycleThroughWindows(reversed) {
+ // 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 = this.getInterestingWindows();
+
+ if (app_windows.length <1)
+ return
+
+ if (recentlyClickedAppLoopId > 0)
+ GLib.source_remove(recentlyClickedAppLoopId);
+ recentlyClickedAppLoopId = GLib.timeout_add(
+ GLib.PRIORITY_DEFAULT, MEMORY_TIME, this._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.
+ let monitorIsolation = Docking.DockManager.settings.get_boolean('isolate-monitors');
+ if (!recentlyClickedApp ||
+ recentlyClickedApp.get_id() != this.app.get_id() ||
+ recentlyClickedAppWindows.length != app_windows.length ||
+ (recentlyClickedAppMonitor != this.monitorIndex && monitorIsolation)) {
+ recentlyClickedApp = this.app;
+ recentlyClickedAppWindows = app_windows;
+ recentlyClickedAppMonitor = this.monitorIndex;
+ recentlyClickedAppIndex = 0;
+ }
+
+ if (reversed) {
+ recentlyClickedAppIndex--;
+ if (recentlyClickedAppIndex < 0) recentlyClickedAppIndex = recentlyClickedAppWindows.length - 1;
+ } else {
+ recentlyClickedAppIndex++;
+ }
+ let index = recentlyClickedAppIndex % recentlyClickedAppWindows.length;
+ let window = recentlyClickedAppWindows[index];
+
+ Main.activateWindow(window);
+ }
+
+ _resetRecentlyClickedApp() {
+ if (recentlyClickedAppLoopId > 0)
+ GLib.source_remove(recentlyClickedAppLoopId);
+ recentlyClickedAppLoopId=0;
+ recentlyClickedApp =null;
+ recentlyClickedAppWindows = null;
+ recentlyClickedAppIndex = 0;
+ recentlyClickedAppMonitor = -1;
+
+ return false;
+ }
+
+ getWindows() {
+ return getWindows(this.app, this._location);
+ }
+
+ // Filter out unnecessary windows, for instance
+ // nautilus desktop window.
+ getInterestingWindows() {
+ return getInterestingWindows(this.app, this.monitorIndex, this._location);
+ }
+
+ // Does the Icon represent a location rather than an App
+ isLocation() {
+ return this._location != null;
+ }
+});
+/**
+ * Extend AppIconMenu
+ *
+ * - set popup arrow side based on dash orientation
+ * - Add close windows option based on quitfromdash extension
+ * (https://github.com/deuill/shell-extension-quitfromdash)
+ * - Add open windows thumbnails instead of list
+ * - update menu when application windows change
+ */
+const MyAppIconMenu = class DashToDock_MyAppIconMenu extends AppDisplay.AppIconMenu {
+
+ constructor(source, remoteModel) {
+ let side = Utils.getPosition();
+
+ // 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
+ super(source);
+
+ // Change the initialized side where required.
+ this._arrowSide = side;
+ this._boxPointer._arrowSide = side;
+ this._boxPointer._userArrowSide = side;
+
+ this._signalsHandler = new Utils.GlobalSignalsHandler();
+
+ if (remoteModel && DbusmenuUtils.haveDBusMenu()) {
+ const [onQuicklist, onDynamicSection] = Utils.splitHandler((sender, { quicklist }, dynamicSection) => {
+ dynamicSection.removeAll();
+ if (quicklist) {
+ quicklist.get_children().forEach(remoteItem =>
+ dynamicSection.addMenuItem(DbusmenuUtils.makePopupMenuItem(remoteItem, false)));
+ }
+ });
+
+ this._signalsHandler.add([
+ remoteModel.lookupById(this._source.app.id),
+ 'quicklist-changed',
+ onQuicklist
+ ], [
+ this,
+ 'dynamic-section-changed',
+ onDynamicSection
+ ]);
+ }
+ }
+
+ destroy() {
+ this._signalsHandler.destroy();
+ super.destroy();
+ }
+
+ _rebuildMenu() {
+ this.removeAll();
+
+ if (Docking.DockManager.settings.get_boolean('show-windows-preview')) {
+ // Display the app windows menu items and the separator between windows
+ // of the current desktop and other windows.
+
+ this._allWindowsMenuItem = new PopupMenu.PopupSubMenuMenuItem(__('All Windows'), false);
+ this._allWindowsMenuItem.hide();
+ this.addMenuItem(this._allWindowsMenuItem);
+
+ if (!this._source.app.is_window_backed()) {
+ this._appendSeparator();
+
+ let appInfo = this._source.app.get_app_info();
+ let actions = appInfo.list_actions();
+ if (this._source.app.can_open_new_window() &&
+ actions.indexOf('new-window') == -1) {
+ this._newWindowMenuItem = this._appendMenuItem(_('New Window'));
+ this._newWindowMenuItem.connect('activate', () => {
+ if (this._source.app.state == Shell.AppState.STOPPED)
+ this._source.animateLaunch();
+
+ this._source.app.open_new_window(-1);
+ this.emit('activate-window', null);
+ });
+ this._appendSeparator();
+ }
+
+
+ if (AppDisplay.discreteGpuAvailable &&
+ this._source.app.state == Shell.AppState.STOPPED &&
+ actions.indexOf('activate-discrete-gpu') == -1) {
+ this._onDiscreteGpuMenuItem = this._appendMenuItem(_('Launch using Dedicated Graphics Card'));
+ this._onDiscreteGpuMenuItem.connect('activate', () => {
+ if (this._source.app.state == Shell.AppState.STOPPED)
+ this._source.animateLaunch();
+
+ this._source.app.launch(0, -1, true);
+ this.emit('activate-window', null);
+ });
+ }
+
+ for (let i = 0; i < actions.length; i++) {
+ let action = actions[i];
+ let item = this._appendMenuItem(appInfo.get_action_name(action));
+ item.connect('activate', (emitter, event) => {
+ this._source.app.launch_action(action, event.get_time(), -1);
+ this.emit('activate-window', null);
+ });
+ }
+
+ let canFavorite = global.settings.is_writable('favorite-apps') &&
+ !this._source.isLocation();
+
+ if (canFavorite) {
+ this._appendSeparator();
+
+ let isFavorite = AppFavorites.getAppFavorites().isFavorite(this._source.app.get_id());
+
+ if (isFavorite) {
+ let item = this._appendMenuItem(_('Remove from Favorites'));
+ item.connect('activate', () => {
+ let favs = AppFavorites.getAppFavorites();
+ favs.removeFavorite(this._source.app.get_id());
+ });
+ } else {
+ let item = this._appendMenuItem(_('Add to Favorites'));
+ item.connect('activate', () => {
+ let favs = AppFavorites.getAppFavorites();
+ favs.addFavorite(this._source.app.get_id());
+ });
+ }
+ }
+
+ if (Shell.AppSystem.get_default().lookup_app('org.gnome.Software.desktop') &&
+ !this._source.isLocation()) {
+ this._appendSeparator();
+ let item = this._appendMenuItem(_('Show Details'));
+ item.connect('activate', () => {
+ let id = this._source.app.get_id();
+ let args = GLib.Variant.new('(ss)', [id, '']);
+ Gio.DBus.get(Gio.BusType.SESSION, null,
+ function(o, res) {
+ let bus = Gio.DBus.get_finish(res);
+ bus.call('org.gnome.Software',
+ '/org/gnome/Software',
+ 'org.gtk.Actions', 'Activate',
+ GLib.Variant.new('(sava{sv})',
+ ['details', [args], null]),
+ null, 0, -1, null, null);
+ Main.overview.hide();
+ });
+ });
+ }
+ }
+
+ } else {
+ if (super._rebuildMenu)
+ super._rebuildMenu();
+ else
+ super._redisplay();
+ }
+
+ // dynamic menu
+ const items = this._getMenuItems();
+ let i = items.length;
+ if (Shell.AppSystem.get_default().lookup_app('org.gnome.Software.desktop')) {
+ i -= 2;
+ }
+ if (global.settings.is_writable('favorite-apps')) {
+ i -= 2;
+ }
+ if (i < 0) {
+ i = 0;
+ }
+ const dynamicSection = new PopupMenu.PopupMenuSection();
+ this.addMenuItem(dynamicSection, i);
+ this.emit('dynamic-section-changed', dynamicSection);
+
+ // quit menu
+ this._appendSeparator();
+ this._quitfromDashMenuItem = this._appendMenuItem(_('Quit'));
+ this._quitfromDashMenuItem.connect('activate', () => {
+ this._source.closeAllWindows();
+ });
+
+ this.update();
+ }
+
+ // update menu content when application windows change. This is desirable as actions
+ // acting on windows (closing) are performed while the menu is shown.
+ update() {
+
+ let windows = this._source.getInterestingWindows();
+
+ // update, show or hide the quit menu
+ if ( windows.length > 0) {
+ let quitFromDashMenuText = "";
+ if (windows.length == 1)
+ this._quitfromDashMenuItem.label.set_text(_('Quit'));
+ else
+ this._quitfromDashMenuItem.label.set_text(__('Quit %d Windows').format(windows.length));
+
+ this._quitfromDashMenuItem.actor.show();
+
+ } else {
+ this._quitfromDashMenuItem.actor.hide();
+ }
+
+ if(Docking.DockManager.settings.get_boolean('show-windows-preview')){
+
+ // update, show, or hide the allWindows menu
+ // Check if there are new windows not already displayed. In such case, repopulate the allWindows
+ // menu. Windows removal is already handled by each preview being connected to the destroy signal
+ let old_windows = this._allWindowsMenuItem.menu._getMenuItems().map(function(item){
+ return item._window;
+ });
+
+ let new_windows = windows.filter(function(w) {return old_windows.indexOf(w) < 0;});
+ if (new_windows.length > 0) {
+ this._populateAllWindowMenu(windows);
+
+ // Try to set the width to that of the submenu.
+ // TODO: can't get the actual size, getting a bit less.
+ // Temporary workaround: add 15px to compensate
+ this._allWindowsMenuItem.width = this._allWindowsMenuItem.menu.actor.width + 15;
+
+ }
+
+ // The menu is created hidden and never hidded after being shown. Instead, a singlal
+ // connected to its items destroy will set is insensitive if no more windows preview are shown.
+ if (windows.length > 0){
+ this._allWindowsMenuItem.show();
+ this._allWindowsMenuItem.setSensitive(true);
+ }
+ }
+
+ // Update separators
+ this._getMenuItems().forEach(item => {
+ if ('label' in item) {
+ this._updateSeparatorVisibility(item);
+ }
+ });
+ }
+
+ _populateAllWindowMenu(windows) {
+
+ this._allWindowsMenuItem.menu.removeAll();
+
+ if (windows.length > 0) {
+
+ let activeWorkspace = global.workspace_manager.get_active_workspace();
+ let separatorShown = windows[0].get_workspace() != activeWorkspace;
+
+ for (let i = 0; i < windows.length; i++) {
+ let window = windows[i];
+ if (!separatorShown && window.get_workspace() != activeWorkspace) {
+ this._allWindowsMenuItem.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
+ separatorShown = true;
+ }
+
+ let item = new WindowPreview.WindowPreviewMenuItem(window);
+ this._allWindowsMenuItem.menu.addMenuItem(item);
+ item.connect('activate', () => {
+ this.emit('activate-window', window);
+ });
+
+ // This is to achieve a more gracefull transition when the last windows is closed.
+ item.connect('destroy', () => {
+ if(this._allWindowsMenuItem.menu._getMenuItems().length == 1) // It's still counting the item just going to be destroyed
+ this._allWindowsMenuItem.setSensitive(false);
+ });
+ }
+ }
+ }
+};
+Signals.addSignalMethods(MyAppIconMenu.prototype);
+
+function getWindows(app, location) {
+ if (location != null && Docking.DockManager.getDefault().fm1Client) {
+ return Docking.DockManager.getDefault().fm1Client.getWindows(location);
+ } else {
+ return app.get_windows();
+ }
+}
+
+// Filter out unnecessary windows, for instance
+// nautilus desktop window.
+function getInterestingWindows(app, monitorIndex, location) {
+ let windows = getWindows(app, location).filter(function(w) {
+ return !w.skip_taskbar;
+ });
+
+ let settings = Docking.DockManager.settings;
+
+ // When using workspace isolation, we filter out windows
+ // that are not in the current workspace
+ if (settings.get_boolean('isolate-workspaces'))
+ windows = windows.filter(function(w) {
+ return w.get_workspace().index() == global.workspace_manager.get_active_workspace_index();
+ });
+
+ if (settings.get_boolean('isolate-monitors'))
+ windows = windows.filter(function(w) {
+ return w.get_monitor() == monitorIndex;
+ });
+
+ return windows;
+}
+
+/**
+ * A ShowAppsIcon improved class.
+ *
+ * - 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)
+ *
+ */
+
+var MyShowAppsIcon = GObject.registerClass({
+ Signals: {
+ 'menu-state-changed': { param_types: [GObject.TYPE_BOOLEAN] },
+ 'sync-tooltip': {}
+ }
+}
+, class DashToDock_MyShowAppsIcon extends Dash.ShowAppsIcon {
+ _init() {
+ super._init();
+
+ // Re-use appIcon methods
+ let appIconPrototype = AppDisplay.AppIcon.prototype;
+ this.toggleButton.y_expand = false;
+ this.toggleButton.connect('popup-menu',
+ appIconPrototype._onKeyboardPopupMenu.bind(this));
+ this.toggleButton.connect('clicked',
+ this._removeMenuTimeout.bind(this));
+
+ this.reactive = true;
+ this.toggleButton.popupMenu = () => this.popupMenu.call(this);
+ this.toggleButton._removeMenuTimeout = () => this._removeMenuTimeout.call(this);
+
+ this._menu = null;
+ this._menuManager = new PopupMenu.PopupMenuManager(this);
+ this._menuTimeoutId = 0;
+ }
+
+ vfunc_leave_event(leaveEvent)
+ {
+ return AppDisplay.AppIcon.prototype.vfunc_leave_event.call(
+ this.toggleButton, leaveEvent);
+ }
+
+ vfunc_button_press_event(buttonPressEvent)
+ {
+ return AppDisplay.AppIcon.prototype.vfunc_button_press_event.call(
+ this.toggleButton, buttonPressEvent);
+ }
+
+ vfunc_touch_event(touchEvent)
+ {
+ return AppDisplay.AppIcon.prototype.vfunc_touch_event.call(
+ this.toggleButton, touchEvent);
+ }
+
+ showLabel() {
+ itemShowLabel.call(this);
+ }
+
+ _onMenuPoppedDown() {
+ AppDisplay.AppIcon.prototype._onMenuPoppedDown.apply(this, arguments);
+ }
+
+ _setPopupTimeout() {
+ AppDisplay.AppIcon.prototype._onMenuPoppedDown.apply(this, arguments);
+ }
+
+ _removeMenuTimeout() {
+ AppDisplay.AppIcon.prototype._removeMenuTimeout.apply(this, arguments);
+ }
+
+ popupMenu() {
+ this._removeMenuTimeout();
+ this.toggleButton.fake_release();
+
+ if (!this._menu) {
+ this._menu = new MyShowAppsIconMenu(this);
+ this._menu.connect('open-state-changed', (menu, isPoppedUp) => {
+ if (!isPoppedUp)
+ this._onMenuPoppedDown();
+ });
+ let id = Main.overview.connect('hiding', () => {
+ 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.toggleButton.set_hover(true);
+ this._menu.popup();
+ this._menuManager.ignoreRelease();
+ this.emit('sync-tooltip');
+
+ return false;
+ }
+});
+
+
+/**
+ * A menu for the showAppsIcon
+ */
+var MyShowAppsIconMenu = class DashToDock_MyShowAppsIconMenu extends MyAppIconMenu {
+ _rebuildMenu() {
+ this.removeAll();
+
+ /* Translators: %s is "Settings", which is automatically translated. You
+ can also translate the full message if this fits better your language. */
+ let name = __('Dash to Dock %s').format(_('Settings'))
+ let item = this._appendMenuItem(name);
+
+ item.connect('activate', function () {
+ if (typeof ExtensionUtils.openPrefs === 'function') {
+ ExtensionUtils.openPrefs();
+ } else {
+ Util.spawn(["gnome-shell-extension-prefs", Me.metadata.uuid]);
+ }
+ });
+ }
+};
+
+/**
+ * This function is used for both extendShowAppsIcon and extendDashItemContainer
+ */
+function itemShowLabel() {
+ // Check if the label is still present at all. When switching workpaces, the
+ // item might have been destroyed in between.
+ if (!this._labelText || this.label.get_stage() == null)
+ 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 x, y, xOffset, yOffset;
+
+ let position = Utils.getPosition();
+ this._isHorizontal = ((position == St.Side.TOP) || (position == St.Side.BOTTOM));
+ let labelOffset = node.get_length('-x-offset');
+
+ switch (position) {
+ case St.Side.LEFT:
+ yOffset = Math.floor((itemHeight - labelHeight) / 2);
+ y = stageY + yOffset;
+ xOffset = labelOffset;
+ x = stageX + this.get_width() + xOffset;
+ break;
+ case St.Side.RIGHT:
+ yOffset = Math.floor((itemHeight - labelHeight) / 2);
+ y = stageY + yOffset;
+ xOffset = labelOffset;
+ x = Math.round(stageX) - labelWidth - xOffset;
+ break;
+ case St.Side.TOP:
+ y = stageY + labelOffset + itemHeight;
+ xOffset = Math.floor((itemWidth - labelWidth) / 2);
+ x = stageX + xOffset;
+ break;
+ case St.Side.BOTTOM:
+ yOffset = labelOffset;
+ y = stageY - labelHeight - yOffset;
+ xOffset = Math.floor((itemWidth - labelWidth) / 2);
+ x = stageX + xOffset;
+ break;
+ }
+
+ // keep the label inside the screen border
+ // Only needed fot the x coordinate.
+
+ // Leave a few pixel gap
+ let gap = 5;
+ 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.remove_all_transitions();
+ this.label.set_position(x, y);
+ this.label.ease({
+ opacity: 255,
+ duration: Dash.DASH_ITEM_LABEL_SHOW_TIME,
+ mode: Clutter.AnimationMode.EASE_OUT_QUAD
+ });
+}
diff --git a/extensions/dash-to-dock/dash.js b/extensions/dash-to-dock/dash.js
new file mode 100644
index 00000000..bac49c25
--- /dev/null
+++ b/extensions/dash-to-dock/dash.js
@@ -0,0 +1,1072 @@
+// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
+
+const Clutter = imports.gi.Clutter;
+const Gio = imports.gi.Gio;
+const GLib = imports.gi.GLib;
+const GObject = imports.gi.GObject;
+const Meta = imports.gi.Meta;
+const Shell = imports.gi.Shell;
+const St = imports.gi.St;
+
+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 Docking = Me.imports.docking;
+const Utils = Me.imports.utils;
+const AppIcons = Me.imports.appIcons;
+const Locations = Me.imports.locations;
+
+const DASH_ANIMATION_TIME = Dash.DASH_ANIMATION_TIME;
+const DASH_ITEM_LABEL_HIDE_TIME = Dash.DASH_ITEM_LABEL_HIDE_TIME;
+const DASH_ITEM_HOVER_TIMEOUT = Dash.DASH_ITEM_HOVER_TIMEOUT;
+
+/**
+ * Extend DashItemContainer
+ *
+ * - set label position based on dash orientation
+ *
+ */
+let MyDashItemContainer = GObject.registerClass(
+class DashToDock_MyDashItemContainer extends Dash.DashItemContainer {
+
+ showLabel() {
+ return AppIcons.itemShowLabel.call(this);
+ }
+});
+
+const MyDashIconsVerticalLayout = GObject.registerClass(
+ class DashToDock_MyDashIconsVerticalLayout extends Clutter.BoxLayout {
+ _init() {
+ super._init({
+ orientation: Clutter.Orientation.VERTICAL,
+ });
+ }
+
+ vfunc_get_preferred_height(container, forWidth) {
+ const [natHeight] = super.vfunc_get_preferred_height(container, forWidth);
+ return [natHeight, 0];
+ }
+});
+
+
+const baseIconSizes = [16, 22, 24, 32, 48, 64, 96, 128];
+
+/**
+ * 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
+ * - hide showApps label when the custom menu is shown.
+ * - add scrollview
+ * ensure actor is visible on keyfocus inseid the scrollview
+ * - add 128px icon size, might be usefull for hidpi display
+ * - sync minimization application target position.
+ * - keep running apps ordered.
+ */
+var MyDash = GObject.registerClass({
+ Signals: {
+ 'menu-closed': {},
+ 'icon-size-changed': {},
+ }
+}, class DashToDock_MyDash extends St.Widget {
+
+ _init(remoteModel, monitorIndex) {
+ // Initialize icon variables and size
+ this._maxWidth = -1;
+ this._maxHeight = -1;
+ this.iconSize = Docking.DockManager.settings.get_int('dash-max-icon-size');
+ this._availableIconSizes = baseIconSizes;
+ this._shownInitially = false;
+ this._initializeIconSize(this.iconSize);
+
+ this._separator = null;
+
+ this._remoteModel = remoteModel;
+ this._monitorIndex = monitorIndex;
+ this._position = Utils.getPosition();
+ this._isHorizontal = ((this._position == St.Side.TOP) ||
+ (this._position == St.Side.BOTTOM));
+ this._signalsHandler = new Utils.GlobalSignalsHandler();
+
+ this._dragPlaceholder = null;
+ this._dragPlaceholderPos = -1;
+ this._animatingPlaceholdersCount = 0;
+ this._showLabelTimeoutId = 0;
+ this._resetHoverTimeoutId = 0;
+ this._labelShowing = false;
+
+ super._init({
+ name: 'dash',
+ offscreen_redirect: Clutter.OffscreenRedirect.ALWAYS,
+ layout_manager: new Clutter.BinLayout()
+ });
+
+ this._dashContainer = new St.BoxLayout({
+ x_align: Clutter.ActorAlign.CENTER,
+ y_align: this._isHorizontal ? Clutter.ActorAlign.CENTER: Clutter.ActorAlign.START,
+ vertical: !this._isHorizontal,
+ y_expand: this._isHorizontal,
+ x_expand: !this._isHorizontal,
+ pack_start: Docking.DockManager.settings.get_boolean('show-apps-at-top')
+ });
+
+ this._scrollView = new St.ScrollView({
+ name: 'dashtodockDashScrollview',
+ // TODO: Fix scrolling
+ hscrollbar_policy: this._isHorizontal ? St.PolicyType.EXTERNAL : St.PolicyType.NEVER,
+ vscrollbar_policy: this._isHorizontal ? St.PolicyType.NEVER : St.PolicyType.EXTERNAL,
+ x_expand: this._isHorizontal,
+ y_expand: !this._isHorizontal,
+ enable_mouse_scrolling: false
+ });
+
+ if (Docking.DockManager.settings.get_boolean('extend-height')) {
+ if (!this._isHorizontal) {
+ this._scrollView.y_align = Clutter.ActorAlign.START;
+ } else {
+ this._scrollView.x_align = Clutter.ActorAlign.START;
+ }
+ }
+
+ this._scrollView.connect('scroll-event', this._onScrollEvent.bind(this));
+
+ let rtl = Clutter.get_default_text_direction() == Clutter.TextDirection.RTL;
+ this._box = new St.BoxLayout({
+ vertical: !this._isHorizontal,
+ clip_to_allocation: false,
+ ...(!this._isHorizontal ? { layout_manager: new MyDashIconsVerticalLayout() } : {}),
+ x_align: rtl ? Clutter.ActorAlign.END : Clutter.ActorAlign.START,
+ y_align: this._isHorizontal ? Clutter.ActorAlign.CENTER: Clutter.ActorAlign.START,
+ y_expand: !this._isHorizontal,
+ x_expand: this._isHorizontal
+ });
+ this._box._delegate = this;
+ this._dashContainer.add_actor(this._scrollView);
+ this._scrollView.add_actor(this._box);
+
+ this._showAppsIcon = new AppIcons.MyShowAppsIcon();
+ this._showAppsIcon.show(false);
+ this._showAppsIcon.icon.setIconSize(this.iconSize);
+ this._showAppsIcon.x_expand = false;
+ this._showAppsIcon.y_expand = false;
+ if (!this._isHorizontal)
+ this._showAppsIcon.y_align = Clutter.ActorAlign.START;
+ this._hookUpLabel(this._showAppsIcon);
+ this._showAppsIcon.connect('menu-state-changed', (_icon, opened) => {
+ this._itemMenuStateChanged(this._showAppsIcon, opened);
+ });
+
+ this._dashContainer.add_child(this._showAppsIcon);
+
+ this._background = new St.Widget({
+ style_class: 'dash-background',
+ y_expand: this._isHorizontal,
+ x_expand: !this._isHorizontal,
+ });
+
+ const sizerBox = new Clutter.Actor();
+ sizerBox.add_constraint(new Clutter.BindConstraint({
+ source: this._isHorizontal ? this._showAppsIcon.icon : this._dashContainer,
+ coordinate: Clutter.BindCoordinate.HEIGHT,
+ }));
+ sizerBox.add_constraint(new Clutter.BindConstraint({
+ source: this._isHorizontal ? this._dashContainer : this._showAppsIcon.icon,
+ coordinate: Clutter.BindCoordinate.WIDTH,
+ }));
+ this._background.add_child(sizerBox);
+
+ this.add_child(this._background);
+ this.add_child(this._dashContainer);
+
+ this._workId = Main.initializeDeferredWork(this._box, this._redisplay.bind(this));
+
+ this._shellSettings = new Gio.Settings({
+ schema_id: 'org.gnome.shell'
+ });
+
+ this._appSystem = Shell.AppSystem.get_default();
+
+ this.iconAnimator = new Docking.IconAnimator(this);
+
+ this._signalsHandler.add([
+ this._appSystem,
+ 'installed-changed',
+ () => {
+ AppFavorites.getAppFavorites().reload();
+ this._queueRedisplay();
+ }
+ ], [
+ AppFavorites.getAppFavorites(),
+ 'changed',
+ this._queueRedisplay.bind(this)
+ ], [
+ this._appSystem,
+ 'app-state-changed',
+ this._queueRedisplay.bind(this)
+ ], [
+ Main.overview,
+ 'item-drag-begin',
+ this._onItemDragBegin.bind(this)
+ ], [
+ Main.overview,
+ 'item-drag-end',
+ this._onItemDragEnd.bind(this)
+ ], [
+ Main.overview,
+ 'item-drag-cancelled',
+ this._onItemDragCancelled.bind(this)
+ ], [
+ Main.overview,
+ 'window-drag-begin',
+ this._onWindowDragBegin.bind(this)
+ ], [
+ Main.overview,
+ 'window-drag-cancelled',
+ this._onWindowDragEnd.bind(this)
+ ], [
+ Main.overview,
+ 'window-drag-end',
+ this._onWindowDragEnd.bind(this)
+ ]);
+
+ this.connect('destroy', this._onDestroy.bind(this));
+ }
+
+ vfunc_get_preferred_height(forWidth) {
+ let [minHeight, natHeight] = super.vfunc_get_preferred_height.call(this, forWidth);
+ if (!this._isHorizontal && this._maxHeight !== -1 && natHeight > this._maxHeight)
+ return [minHeight, this._maxHeight]
+ else
+ return [minHeight, natHeight]
+ }
+
+ vfunc_get_preferred_width(forHeight) {
+ let [minWidth, natWidth] = super.vfunc_get_preferred_width.call(this, forHeight);
+ if (this._isHorizontal && this._maxWidth !== -1 && natWidth > this._maxWidth)
+ return [minWidth, this._maxWidth]
+ else
+ return [minWidth, natWidth]
+ }
+
+ get _container() {
+ return this._dashContainer;
+ }
+
+ _onDestroy() {
+ this.iconAnimator.destroy();
+ this._signalsHandler.destroy();
+ }
+
+
+ _onItemDragBegin() {
+ return Dash.Dash.prototype._onItemDragBegin.call(this, ...arguments);
+ }
+
+ _onItemDragCancelled() {
+ return Dash.Dash.prototype._onItemDragCancelled.call(this, ...arguments);
+ }
+
+ _onItemDragEnd() {
+ return Dash.Dash.prototype._onItemDragEnd.call(this, ...arguments);
+ }
+
+ _endItemDrag() {
+ return Dash.Dash.prototype._endItemDrag.call(this, ...arguments);
+ }
+
+ _onItemDragMotion() {
+ return Dash.Dash.prototype._onItemDragMotion.call(this, ...arguments);
+ }
+
+ _appIdListToHash() {
+ return Dash.Dash.prototype._appIdListToHash.call(this, ...arguments);
+ }
+
+ _queueRedisplay() {
+ return Dash.Dash.prototype._queueRedisplay.call(this, ...arguments);
+ }
+
+ _hookUpLabel() {
+ return Dash.Dash.prototype._hookUpLabel.call(this, ...arguments);
+ }
+
+ _syncLabel() {
+ return Dash.Dash.prototype._syncLabel.call(this, ...arguments);
+ }
+
+ _clearDragPlaceholder() {
+ return Dash.Dash.prototype._clearDragPlaceholder.call(this, ...arguments);
+ }
+
+ _clearEmptyDropTarget() {
+ return Dash.Dash.prototype._clearEmptyDropTarget.call(this, ...arguments);
+ }
+
+ handleDragOver(source, actor, x, y, time) {
+ let ret;
+ if (this._isHorizontal) {
+ ret = Dash.Dash.prototype.handleDragOver.call(this, source, actor, x, y, time);
+
+ if (ret == DND.DragMotionResult.CONTINUE)
+ return ret;
+ } else {
+ Object.defineProperty(this._box, 'height', {
+ configurable: true,
+ get: () => this._box.get_children().reduce((a, c) => a + c.height, 0),
+ });
+
+ let replacedPlaceholderWidth = false;
+ if (this._dragPlaceholder) {
+ replacedPlaceholderWidth = true;
+ Object.defineProperty(this._dragPlaceholder, 'width', {
+ configurable: true,
+ get: () => this._dragPlaceholder.height,
+ });
+ }
+
+ ret = Dash.Dash.prototype.handleDragOver.call(this, source, actor, y, x, time);
+
+ delete this._box.height;
+ if (replacedPlaceholderWidth && this._dragPlaceholder)
+ delete this._dragPlaceholder.width;
+
+ if (ret == DND.DragMotionResult.CONTINUE)
+ return ret;
+
+ if (this._dragPlaceholder) {
+ this._dragPlaceholder.child.set_width(this.iconSize / 2);
+ this._dragPlaceholder.child.set_height(this.iconSize);
+
+ let pos = this._dragPlaceholderPos;
+ if (this._isHorizontal && (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL))
+ pos = this._box.get_children() - 1 - pos;
+
+ if (pos != this._dragPlaceholderPos) {
+ this._dragPlaceholderPos = pos;
+ this._box.set_child_at_index(this._dragPlaceholder,
+ this._dragPlaceholderPos)
+ }
+ }
+ }
+
+ if (this._dragPlaceholder) {
+ // Ensure the next and previous icon are visible when moving the placeholder
+ // (I assume there's room for both of them)
+ if (this._dragPlaceholderPos > 0)
+ ensureActorVisibleInScrollView(this._scrollView,
+ this._box.get_children()[this._dragPlaceholderPos - 1]);
+
+ if (this._dragPlaceholderPos < this._box.get_children().length - 1)
+ ensureActorVisibleInScrollView(this._scrollView,
+ this._box.get_children()[this._dragPlaceholderPos + 1]);
+ }
+
+ return ret;
+ }
+
+ acceptDrop() {
+ return Dash.Dash.prototype.acceptDrop.call(this, ...arguments);
+ }
+
+ _onWindowDragBegin() {
+ return Dash.Dash.prototype._onWindowDragBegin.call(this, ...arguments);
+ }
+
+ _onWindowDragEnd() {
+ return Dash.Dash.prototype._onWindowDragEnd.call(this, ...arguments);
+ }
+
+ _onScrollEvent(actor, event) {
+ // If scroll is not used because the icon is resized, let the scroll event propagate.
+ if (!Docking.DockManager.settings.get_boolean('icon-size-fixed'))
+ return Clutter.EVENT_PROPAGATE;
+
+ // reset timeout to avid conflicts with the mousehover event
+ if (this._ensureAppIconVisibilityTimeoutId > 0) {
+ GLib.source_remove(this._ensureAppIconVisibilityTimeoutId);
+ this._ensureAppIconVisibilityTimeoutId = 0;
+ }
+
+ // Skip to avoid double events mouse
+ // TODO: Horizontal events are emulated, potentially due to a conflict
+ // with the workspace switching gesture.
+ if (!this._isHorizontal && event.is_pointer_emulated()) {
+ return Clutter.EVENT_STOP;
+ }
+
+ let adjustment, delta = 0;
+
+ if (this._isHorizontal)
+ adjustment = this._scrollView.get_hscroll_bar().get_adjustment();
+ else
+ adjustment = this._scrollView.get_vscroll_bar().get_adjustment();
+
+ let increment = adjustment.step_increment;
+
+ if (this._isHorizontal) {
+ switch (event.get_scroll_direction()) {
+ case Clutter.ScrollDirection.LEFT:
+ delta = -increment;
+ break;
+ case Clutter.ScrollDirection.RIGHT:
+ delta = +increment;
+ break;
+ case Clutter.ScrollDirection.SMOOTH:
+ let [dx, dy] = event.get_scroll_delta();
+ // TODO: Handle y
+ //delta = dy * increment;
+ // Also consider horizontal component, for instance touchpad
+ delta = dx * increment;
+ break;
+ }
+ } else {
+ switch (event.get_scroll_direction()) {
+ case Clutter.ScrollDirection.UP:
+ delta = -increment;
+ break;
+ case Clutter.ScrollDirection.DOWN:
+ delta = +increment;
+ break;
+ case Clutter.ScrollDirection.SMOOTH:
+ let [, dy] = event.get_scroll_delta();
+ delta = dy * increment;
+ break;
+ }
+ }
+
+ const value = adjustment.get_value();
+
+ // TODO: Remove this if possible.
+ if (Number.isNaN(value)) {
+ adjustment.set_value(delta);
+ } else {
+ adjustment.set_value(value + delta);
+ }
+
+ return Clutter.EVENT_STOP;
+ }
+
+ _createAppItem(app) {
+ let appIcon = new AppIcons.MyAppIcon(this._remoteModel, app,
+ this._monitorIndex, this.iconAnimator);
+
+ if (appIcon._draggable) {
+ appIcon._draggable.connect('drag-begin', () => {
+ appIcon.opacity = 50;
+ });
+ appIcon._draggable.connect('drag-end', () => {
+ appIcon.opacity = 255;
+ });
+ }
+
+ appIcon.connect('menu-state-changed', (appIcon, opened) => {
+ this._itemMenuStateChanged(item, opened);
+ });
+
+ let item = new MyDashItemContainer();
+ item.setChild(appIcon);
+
+ appIcon.connect('notify::hover', () => {
+ if (appIcon.hover) {
+ this._ensureAppIconVisibilityTimeoutId = GLib.timeout_add(
+ GLib.PRIORITY_DEFAULT, 100, () => {
+ ensureActorVisibleInScrollView(this._scrollView, appIcon);
+ this._ensureAppIconVisibilityTimeoutId = 0;
+ return GLib.SOURCE_REMOVE;
+ });
+ }
+ else {
+ if (this._ensureAppIconVisibilityTimeoutId > 0) {
+ GLib.source_remove(this._ensureAppIconVisibilityTimeoutId);
+ this._ensureAppIconVisibilityTimeoutId = 0;
+ }
+ }
+ });
+
+ appIcon.connect('clicked', (actor) => {
+ ensureActorVisibleInScrollView(this._scrollView, actor);
+ });
+
+ appIcon.connect('key-focus-in', (actor) => {
+ let [x_shift, y_shift] = ensureActorVisibleInScrollView(this._scrollView, actor);
+
+ // 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.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 dash
+ */
+ getAppIcons() {
+ // Only consider children which are "proper"
+ // icons (i.e. ignoring drag placeholders) and which are not
+ // animating out (which means they will be destroyed at the end of
+ // the animation)
+ let iconChildren = this._box.get_children().filter(function(actor) {
+ return actor.child &&
+ !!actor.child.icon &&
+ !actor.animatingOut;
+ });
+
+ let appIcons = iconChildren.map(function(actor) {
+ return actor.child;
+ });
+
+ return appIcons;
+ }
+
+ _updateAppsIconGeometry() {
+ let appIcons = this.getAppIcons();
+ appIcons.forEach(function(icon) {
+ icon.updateIconGeometry();
+ });
+ }
+
+ _itemMenuStateChanged(item, opened) {
+ Dash.Dash.prototype._itemMenuStateChanged.call(this, item, opened);
+
+ if (!opened) {
+ // 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');
+ }
+ }
+
+ _adjustIconSize() {
+ // For the icon size, we only consider children which are "proper"
+ // icons (i.e. ignoring drag placeholders) and which are not
+ // animating out (which means they will be destroyed at the end of
+ // the animation)
+ let iconChildren = this._box.get_children().filter(actor => {
+ return actor.child &&
+ actor.child._delegate &&
+ actor.child._delegate.icon &&
+ !actor.animatingOut;
+ });
+
+ iconChildren.push(this._showAppsIcon);
+
+ if (this._maxWidth === -1 && this._maxHeight === -1)
+ return;
+
+ // Check if the container is present in the stage. This avoids critical
+ // errors when unlocking the screen
+ if (!this._container.get_stage())
+ return;
+
+ const themeNode = this.get_theme_node();
+ const maxAllocation = new Clutter.ActorBox({
+ x1: 0,
+ y1: 0,
+ x2: this._isHorizontal ? this._maxWidth : 42 /* whatever */,
+ y2: this._isHorizontal ? 42 : this._maxHeight
+ });
+ let maxContent = themeNode.get_content_box(maxAllocation);
+ let availWidth;
+ if (this._isHorizontal)
+ availWidth = maxContent.x2 - maxContent.x1;
+ else
+ availWidth = maxContent.y2 - maxContent.y1;
+ let spacing = themeNode.get_length('spacing');
+
+ let firstButton = iconChildren[0].child;
+ let firstIcon = firstButton._delegate.icon;
+
+ // Enforce valid spacings during the size request
+ firstIcon.icon.ensure_style();
+ const [, , iconWidth, iconHeight] = firstIcon.icon.get_preferred_size();
+ const [, , buttonWidth, buttonHeight] = firstButton.get_preferred_size();
+
+ // Subtract icon padding and box spacing from the available height
+ if (this._isHorizontal)
+ // Subtract icon padding and box spacing from the available width
+ availWidth -= iconChildren.length * (buttonWidth - iconWidth) +
+ (iconChildren.length - 1) * spacing;
+ else
+ availWidth -= iconChildren.length * (buttonHeight - iconHeight) +
+ (iconChildren.length - 1) * spacing;
+
+ // let availHeight = this._maxHeight;
+ // availHeight -= this._background.get_theme_node().get_vertical_padding();
+ // availHeight -= themeNode.get_vertical_padding();
+ // availHeight -= buttonHeight - iconHeight;
+
+ const maxIconSize = // TODO: Math.min(
+ availWidth / iconChildren.length // ); , availHeight);
+ let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
+ let iconSizes = this._availableIconSizes.map(s => s * scaleFactor);
+
+ let newIconSize = this._availableIconSizes[0];
+ for (let i = 0; i < iconSizes.length; i++) {
+ if (iconSizes[i] <= maxIconSize)
+ newIconSize = this._availableIconSizes[i];
+ }
+
+ if (newIconSize == this.iconSize)
+ return;
+
+ let oldIconSize = this.iconSize;
+ this.iconSize = newIconSize;
+ this.emit('icon-size-changed');
+
+ let scale = oldIconSize / newIconSize;
+ 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, not visible or when initially filling
+ // the dash
+ if (!Main.overview.visible || 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);
+
+ icon.icon.ease({
+ width: targetWidth,
+ height: targetHeight,
+ duration: DASH_ANIMATION_TIME,
+ mode: Clutter.AnimationMode.EASE_OUT_QUAD,
+ });
+ }
+
+ if (this._separator) {
+ if (this._isHorizontal) {
+ this._separator.ease({
+ height: this.iconSize,
+ duration: DASH_ANIMATION_TIME,
+ mode: Clutter.AnimationMode.EASE_OUT_QUAD,
+ });
+ } else {
+ this._separator.ease({
+ width: this.iconSize,
+ duration: DASH_ANIMATION_TIME,
+ mode: Clutter.AnimationMode.EASE_OUT_QUAD,
+ });
+ }
+ }
+ }
+
+ _redisplay() {
+ let favorites = AppFavorites.getAppFavorites().getFavoriteMap();
+
+ let running = this._appSystem.get_running();
+ let settings = Docking.DockManager.settings;
+
+ if (settings.get_boolean('isolate-workspaces') ||
+ settings.get_boolean('isolate-monitors')) {
+ // When using isolation, we filter out apps that have no windows in
+ // the current workspace
+ let monitorIndex = this._monitorIndex;
+ running = running.filter(function(_app) {
+ return AppIcons.getInterestingWindows(_app, monitorIndex).length != 0;
+ });
+ }
+
+ let children = this._box.get_children().filter(actor => {
+ return actor.child &&
+ actor.child._delegate &&
+ actor.child._delegate.app;
+ });
+ // Apps currently in the dash
+ let oldApps = children.map(actor => actor.child._delegate.app);
+ // Apps supposed to be in the dash
+ let newApps = [];
+
+ if (settings.get_boolean('show-favorites')) {
+ for (let id in favorites)
+ newApps.push(favorites[id]);
+ }
+
+ if (settings.get_boolean('show-running')) {
+ for (let i = 0; i < running.length; i++) {
+ let app = running[i];
+ if (settings.get_boolean('show-favorites') && app.get_id() in favorites)
+ continue;
+ newApps.push(app);
+ }
+ }
+
+ if (settings.get_boolean('show-mounts')) {
+ if (!this._removables) {
+ this._removables = new Locations.Removables();
+ this._signalsHandler.addWithLabel('show-mounts',
+ [ this._removables,
+ 'changed',
+ this._queueRedisplay.bind(this) ]);
+ }
+ Array.prototype.push.apply(newApps, this._removables.getApps());
+ } else if (this._removables) {
+ this._signalsHandler.removeWithLabel('show-mounts');
+ this._removables.destroy();
+ this._removables = null;
+ }
+
+ if (settings.get_boolean('show-trash')) {
+ if (!this._trash) {
+ this._trash = new Locations.Trash();
+ this._signalsHandler.addWithLabel('show-trash',
+ [ this._trash,
+ 'changed',
+ this._queueRedisplay.bind(this) ]);
+ }
+ newApps.push(this._trash.getApp());
+ } else if (this._trash) {
+ this._signalsHandler.removeWithLabel('show-trash');
+ this._trash.destroy();
+ this._trash = null;
+ }
+
+ // Figure out the actual changes to the list of items; we iterate
+ // over both the list of items currently in the dash and the list
+ // of items expected there, and collect additions and removals.
+ // Moves are both an addition and a removal, where the order of
+ // the operations depends on whether we encounter the position
+ // where the item has been added first or the one from where it
+ // was removed.
+ // There is an assumption that only one item is moved at a given
+ // time; when moving several items at once, everything will still
+ // end up at the right position, but there might be additional
+ // additions/removals (e.g. it might remove all the launchers
+ // and add them back in the new order even if a smaller set of
+ // additions and removals is possible).
+ // If above assumptions turns out to be a problem, we might need
+ // to use a more sophisticated algorithm, e.g. Longest Common
+ // Subsequence as used by diff.
+
+ let addedItems = [];
+ let removedActors = [];
+
+ let newIndex = 0;
+ let oldIndex = 0;
+ while (newIndex < newApps.length || oldIndex < oldApps.length) {
+ let oldApp = oldApps.length > oldIndex ? oldApps[oldIndex] : null;
+ let newApp = newApps.length > newIndex ? newApps[newIndex] : null;
+
+ // No change at oldIndex/newIndex
+ if (oldApp == newApp) {
+ oldIndex++;
+ newIndex++;
+ continue;
+ }
+
+ // App removed at oldIndex
+ if (oldApp && !newApps.includes(oldApp)) {
+ removedActors.push(children[oldIndex]);
+ oldIndex++;
+ continue;
+ }
+
+ // App added at newIndex
+ if (newApp && !oldApps.includes(newApp)) {
+ addedItems.push({ app: newApp,
+ item: this._createAppItem(newApp),
+ pos: newIndex });
+ newIndex++;
+ continue;
+ }
+
+ // App moved
+ let nextApp = newApps.length > newIndex + 1
+ ? newApps[newIndex + 1] : null;
+ let insertHere = nextApp && nextApp == oldApp;
+ let alreadyRemoved = removedActors.reduce((result, actor) => {
+ let removedApp = actor.child._delegate.app;
+ return result || removedApp == newApp;
+ }, false);
+
+ if (insertHere || alreadyRemoved) {
+ let newItem = this._createAppItem(newApp);
+ addedItems.push({ app: newApp,
+ item: newItem,
+ pos: newIndex + removedActors.length });
+ newIndex++;
+ } else {
+ removedActors.push(children[oldIndex]);
+ oldIndex++;
+ }
+ }
+
+ for (let i = 0; i < addedItems.length; i++) {
+ this._box.insert_child_at_index(addedItems[i].item,
+ addedItems[i].pos);
+ }
+
+ for (let i = 0; i < removedActors.length; i++) {
+ let item = removedActors[i];
+
+ // Don't animate item removal when the overview is transitioning
+ // or hidden
+ if (!Main.overview.animationInProgress)
+ item.animateOutAndDestroy();
+ else
+ item.destroy();
+ }
+
+ this._adjustIconSize();
+
+ // Skip animations on first run when adding the initial set
+ // of items, to avoid all items zooming in at once
+
+ let animate = this._shownInitially &&
+ !Main.overview.animationInProgress;
+
+ if (!this._shownInitially)
+ this._shownInitially = true;
+
+ for (let i = 0; i < addedItems.length; i++)
+ addedItems[i].item.show(animate);
+
+ // Update separator
+ const nFavorites = Object.keys(favorites).length;
+ const nIcons = children.length + addedItems.length - removedActors.length;
+ if (nFavorites > 0 && nFavorites < nIcons) {
+ if (!this._separator) {
+ if (!this._isHorizontal) {
+ this._separator = new St.Widget({
+ style_class: 'vertical-dash-separator',
+ x_align: Clutter.ActorAlign.CENTER,
+ width: this.iconSize,
+ });
+ } else {
+ this._separator = new St.Widget({
+ style_class: 'dash-separator',
+ y_align: Clutter.ActorAlign.CENTER,
+ height: this.iconSize,
+ });
+ }
+
+ this._box.add_child(this._separator);
+ }
+ let pos = nFavorites;
+ if (this._dragPlaceholder)
+ pos++;
+ this._box.set_child_at_index(this._separator, pos);
+ } else if (this._separator) {
+ this._separator.destroy();
+ this._separator = null;
+ }
+
+ // Workaround for https://bugzilla.gnome.org/show_bug.cgi?id=692744
+ // Without it, StBoxLayout may use a stale size cache
+ this._box.queue_relayout();
+ // TODO
+ // This is required for icon reordering when the scrollview is used.
+ this._updateAppsIconGeometry();
+
+ // This will update the size, and the corresponding number for each icon
+ this._updateNumberOverlay();
+ }
+
+ _updateNumberOverlay() {
+ let appIcons = this.getAppIcons();
+ let counter = 1;
+ appIcons.forEach(function(icon) {
+ if (counter < 10){
+ icon.setNumberOverlay(counter);
+ counter++;
+ } else if (counter == 10) {
+ icon.setNumberOverlay(0);
+ counter++;
+ } else {
+ // No overlay after 10
+ icon.setNumberOverlay(-1);
+ }
+ icon.updateNumberOverlay();
+ });
+
+ }
+
+ toggleNumberOverlay(activate) {
+ let appIcons = this.getAppIcons();
+ appIcons.forEach(function(icon) {
+ icon.toggleNumberOverlay(activate);
+ });
+ }
+
+ _initializeIconSize(max_size) {
+ let max_allowed = baseIconSizes[baseIconSizes.length-1];
+ max_size = Math.min(max_size, max_allowed);
+
+ if (Docking.DockManager.settings.get_boolean('icon-size-fixed'))
+ this._availableIconSizes = [max_size];
+ else {
+ this._availableIconSizes = baseIconSizes.filter(function(val) {
+ return (val<max_size);
+ });
+ this._availableIconSizes.push(max_size);
+ }
+ }
+
+ setIconSize(max_size, doNotAnimate) {
+ this._initializeIconSize(max_size);
+
+ if (doNotAnimate)
+ this._shownInitially = false;
+
+ this._queueRedisplay();
+ }
+
+ /**
+ * Reset the displayed apps icon to maintain the correct order when changing
+ * show favorites/show running settings
+ */
+ resetAppIcons() {
+ let children = this._box.get_children().filter(function(actor) {
+ return actor.child &&
+ !!actor.child.icon;
+ });
+ for (let i = 0; i < children.length; i++) {
+ let item = children[i];
+ item.destroy();
+ }
+
+ // to avoid ugly animations, just suppress them like when dash is first loaded.
+ this._shownInitially = false;
+ this._redisplay();
+ }
+
+ get showAppsButton() {
+ return this._showAppsIcon.toggleButton;
+ }
+
+ showShowAppsButton() {
+ this.showAppsButton.visible = true
+ this.showAppsButton.set_width(-1)
+ this.showAppsButton.set_height(-1)
+ }
+
+ hideShowAppsButton() {
+ //this.showAppsButton.hide()
+
+ // The height and width of the button is bound to the background.
+ if (this._isHorizontal) {
+ this.showAppsButton.set_width(0)
+ } else {
+ this.showAppsButton.set_height(0)
+ }
+ }
+
+ setMaxSize(maxWidth, maxHeight) {
+ if (this._maxWidth === maxWidth &&
+ this._maxHeight === maxHeight)
+ return;
+
+ this._maxWidth = maxWidth;
+ this._maxHeight = maxHeight;
+ this._queueRedisplay();
+ }
+
+ updateShowAppsButton() {
+ if (Docking.DockManager.settings.get_boolean('show-apps-at-top')) {
+ this._dashContainer.pack_start = true;
+ } else {
+ this._dashContainer.pack_start = false;
+ }
+ }
+});
+
+
+/**
+ * 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
+ */
+function ensureActorVisibleInScrollView(scrollView, actor) {
+ let adjust_v = true;
+ let adjust_h = true;
+
+ let vadjustment = scrollView.get_vscroll_bar().get_adjustment();
+ let hadjustment = scrollView.get_hscroll_bar().get_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 = 0;
+ let hoffset = 0;
+ let fade = scrollView.get_effect('fade');
+ if (fade) {
+ voffset = fade.vfade_offset;
+ hoffset = fade.hfade_offset;
+ }
+
+ 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);
+
+ if (vvalue !== vvalue0) {
+ vadjustment.ease(vvalue, {
+ mode: Clutter.AnimationMode.EASE_OUT_QUAD,
+ duration: Util.SCROLL_TIME
+ });
+ }
+
+ if (hvalue !== hvalue0) {
+ hadjustment.ease(hvalue, {
+ mode: Clutter.AnimationMode.EASE_OUT_QUAD,
+ duration: Util.SCROLL_TIME
+ });
+ }
+
+ return [hvalue- hvalue0, vvalue - vvalue0];
+}
diff --git a/extensions/dash-to-dock/dbusmenuUtils.js b/extensions/dash-to-dock/dbusmenuUtils.js
new file mode 100644
index 00000000..0d2793d0
--- /dev/null
+++ b/extensions/dash-to-dock/dbusmenuUtils.js
@@ -0,0 +1,274 @@
+// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
+
+const Atk = imports.gi.Atk;
+const Clutter = imports.gi.Clutter;
+let Dbusmenu = null; /* Dynamically imported */
+const Gio = imports.gi.Gio;
+const GLib = imports.gi.GLib;
+const St = imports.gi.St;
+
+const PopupMenu = imports.ui.popupMenu;
+
+const Me = imports.misc.extensionUtils.getCurrentExtension();
+const Utils = Me.imports.utils;
+
+// Dbusmenu features not (yet) supported:
+//
+// * The CHILD_DISPLAY property
+//
+// This seems to have only one possible value in the Dbusmenu API, so
+// there's little point in depending on it--the code in libdbusmenu sets it
+// if and only if an item has children, so for our purposes it's simpler
+// and more intuitive to just check children.length. (This does ignore the
+// possibility of a program not using libdbusmenu and setting CHILD_DISPLAY
+// independently, perhaps to indicate that an childless menu item should
+// nevertheless be displayed like a submenu.)
+//
+// * Children more than two levels deep
+//
+// PopupMenu doesn't seem to support submenus in submenus.
+//
+// * Shortcut keys
+//
+// If these keys are supposed to be installed as global shortcuts, we'd
+// have to query these aggressively and not wait for the DBus menu to be
+// mapped to a popup menu. A shortcut key that only works once the popup
+// menu is open and has key focus is possibly of marginal value.
+
+function haveDBusMenu() {
+ if (Dbusmenu)
+ return Dbusmenu;
+
+ try {
+ Dbusmenu = imports.gi.Dbusmenu;
+ return Dbusmenu;
+ } catch (e) {
+ log(`Failed to import DBusMenu, quicklists are not avaialble: ${e}`);
+ return null;
+ }
+}
+
+
+function makePopupMenuItem(dbusmenuItem, deep) {
+ // These are the only properties guaranteed to be available when the root
+ // item is first announced. Other properties might be loaded already, but
+ // be sure to connect to Dbusmenu.MENUITEM_SIGNAL_PROPERTY_CHANGED to get
+ // the most up-to-date values in case they aren't.
+ const itemType = dbusmenuItem.property_get(Dbusmenu.MENUITEM_PROP_TYPE);
+ const label = dbusmenuItem.property_get(Dbusmenu.MENUITEM_PROP_LABEL);
+ const visible = dbusmenuItem.property_get_bool(Dbusmenu.MENUITEM_PROP_VISIBLE);
+ const enabled = dbusmenuItem.property_get_bool(Dbusmenu.MENUITEM_PROP_ENABLED);
+ const accessibleDesc = dbusmenuItem.property_get(Dbusmenu.MENUITEM_PROP_ACCESSIBLE_DESC);
+ //const childDisplay = dbusmenuItem.property_get(Dbusmenu.MENUITEM_PROP_CHILD_DISPLAY);
+
+ let item;
+ const signalsHandler = new Utils.GlobalSignalsHandler();
+ const wantIcon = itemType === Dbusmenu.CLIENT_TYPES_IMAGE;
+
+ // If the basic type of the menu item needs to change, call this.
+ const recreateItem = () => {
+ const newItem = makePopupMenuItem(dbusmenuItem, deep);
+ const parentMenu = item._parent;
+ parentMenu.addMenuItem(newItem);
+ // Reminder: Clutter thinks of later entries in the child list as
+ // "above" earlier ones, so "above" here means "below" in terms of the
+ // menu's vertical order.
+ parentMenu.actor.set_child_above_sibling(newItem.actor, item.actor);
+ if (newItem.menu) {
+ parentMenu.actor.set_child_above_sibling(newItem.menu.actor, newItem.actor);
+ }
+ parentMenu.actor.remove_child(item.actor);
+ item.destroy();
+ item = null;
+ };
+
+ const updateDisposition = () => {
+ const disposition = dbusmenuItem.property_get(Dbusmenu.MENUITEM_PROP_DISPOSITION);
+ let icon_name = null;
+ switch (disposition) {
+ case Dbusmenu.MENUITEM_DISPOSITION_ALERT:
+ case Dbusmenu.MENUITEM_DISPOSITION_WARNING:
+ icon_name = 'dialog-warning-symbolic';
+ break;
+ case Dbusmenu.MENUITEM_DISPOSITION_INFORMATIVE:
+ icon_name = 'dialog-information-symbolic';
+ break;
+ }
+ if (icon_name) {
+ item._dispositionIcon = new St.Icon({
+ icon_name,
+ style_class: 'popup-menu-icon',
+ y_align: Clutter.ActorAlign.CENTER,
+ y_expand: true,
+ });
+ let expander;
+ for (let child = item.label.get_next_sibling();; child = child.get_next_sibling()) {
+ if (!child) {
+ expander = new St.Bin({
+ style_class: 'popup-menu-item-expander',
+ x_expand: true,
+ });
+ item.actor.add_child(expander);
+ break;
+ } else if (child instanceof St.Widget && child.has_style_class_name('popup-menu-item-expander')) {
+ expander = child;
+ break;
+ }
+ }
+ item.actor.insert_child_above(item._dispositionIcon, expander);
+ } else if (item._dispositionIcon) {
+ item.actor.remove_child(item._dispositionIcon);
+ item._dispositionIcon = null;
+ }
+ };
+
+ const updateIcon = () => {
+ if (!wantIcon) {
+ return;
+ }
+ const iconData = dbusmenuItem.property_get_byte_array(Dbusmenu.MENUITEM_PROP_ICON_DATA);
+ const iconName = dbusmenuItem.property_get(Dbusmenu.MENUITEM_PROP_ICON_NAME);
+ if (iconName) {
+ item.icon.icon_name = iconName;
+ } else if (iconData.length) {
+ item.icon.gicon = Gio.BytesIcon.new(iconData);
+ }
+ };
+
+ const updateOrnament = () => {
+ const toggleType = dbusmenuItem.property_get(Dbusmenu.MENUITEM_PROP_TOGGLE_TYPE);
+ switch (toggleType) {
+ case Dbusmenu.MENUITEM_TOGGLE_CHECK:
+ item.actor.accessible_role = Atk.Role.CHECK_MENU_ITEM;
+ break;
+ case Dbusmenu.MENUITEM_TOGGLE_RADIO:
+ item.actor.accessible_role = Atk.Role.RADIO_MENU_ITEM;
+ break;
+ default:
+ item.actor.accessible_role = Atk.Role.MENU_ITEM;
+ }
+ let ornament = PopupMenu.Ornament.NONE;
+ const state = dbusmenuItem.property_get_int(Dbusmenu.MENUITEM_PROP_TOGGLE_STATE);
+ if (state === Dbusmenu.MENUITEM_TOGGLE_STATE_UNKNOWN) {
+ // PopupMenu doesn't natively support an "unknown" ornament, but we
+ // can hack one in:
+ item.setOrnament(ornament);
+ item.actor.add_accessible_state(Atk.StateType.INDETERMINATE);
+ item._ornamentLabel.text = '\u2501';
+ item.actor.remove_style_pseudo_class('checked');
+ } else {
+ item.actor.remove_accessible_state(Atk.StateType.INDETERMINATE);
+ if (state === Dbusmenu.MENUITEM_TOGGLE_STATE_CHECKED) {
+ if (toggleType === Dbusmenu.MENUITEM_TOGGLE_CHECK) {
+ ornament = PopupMenu.Ornament.CHECK;
+ } else if (toggleType === Dbusmenu.MENUITEM_TOGGLE_RADIO) {
+ ornament = PopupMenu.Ornament.DOT;
+ }
+ item.actor.add_style_pseudo_class('checked');
+ } else {
+ item.actor.remove_style_pseudo_class('checked');
+ }
+ item.setOrnament(ornament);
+ }
+ };
+
+ const onPropertyChanged = (dbusmenuItem, name, value) => {
+ // `value` is null when a property is cleared, so handle those cases
+ // with sensible defaults.
+ switch (name) {
+ case Dbusmenu.MENUITEM_PROP_TYPE:
+ recreateItem();
+ break;
+ case Dbusmenu.MENUITEM_PROP_ENABLED:
+ item.setSensitive(value ? value.unpack() : false);
+ break;
+ case Dbusmenu.MENUITEM_PROP_LABEL:
+ item.label.text = value ? value.unpack() : '';
+ break;
+ case Dbusmenu.MENUITEM_PROP_VISIBLE:
+ item.actor.visible = value ? value.unpack() : false;
+ break;
+ case Dbusmenu.MENUITEM_PROP_DISPOSITION:
+ updateDisposition();
+ break;
+ case Dbusmenu.MENUITEM_PROP_ACCESSIBLE_DESC:
+ item.actor.get_accessible().accessible_description = value && value.unpack() || '';
+ break;
+ case Dbusmenu.MENUITEM_PROP_ICON_DATA:
+ case Dbusmenu.MENUITEM_PROP_ICON_NAME:
+ updateIcon();
+ break;
+ case Dbusmenu.MENUITEM_PROP_TOGGLE_TYPE:
+ case Dbusmenu.MENUITEM_PROP_TOGGLE_STATE:
+ updateOrnament();
+ break;
+ }
+ };
+
+
+ // Start actually building the menu item.
+ const children = dbusmenuItem.get_children();
+ if (children.length && !deep) {
+ // Make a submenu.
+ item = new PopupMenu.PopupSubMenuMenuItem(label, wantIcon);
+ const updateChildren = () => {
+ const children = dbusmenuItem.get_children();
+ if (!children.length) {
+ return recreateItem();
+ }
+ item.menu.removeAll();
+ children.forEach(remoteChild =>
+ item.menu.addMenuItem(makePopupMenuItem(remoteChild, true)));
+ };
+ updateChildren();
+ signalsHandler.add(
+ [dbusmenuItem, Dbusmenu.MENUITEM_SIGNAL_CHILD_ADDED, updateChildren],
+ [dbusmenuItem, Dbusmenu.MENUITEM_SIGNAL_CHILD_MOVED, updateChildren],
+ [dbusmenuItem, Dbusmenu.MENUITEM_SIGNAL_CHILD_REMOVED, updateChildren]);
+
+ } else {
+ // Don't make a submenu.
+ if (!deep) {
+ // We only have the potential to get a submenu if we aren't deep.
+ signalsHandler.add(
+ [dbusmenuItem, Dbusmenu.MENUITEM_SIGNAL_CHILD_ADDED, recreateItem],
+ [dbusmenuItem, Dbusmenu.MENUITEM_SIGNAL_CHILD_MOVED, recreateItem],
+ [dbusmenuItem, Dbusmenu.MENUITEM_SIGNAL_CHILD_REMOVED, recreateItem]);
+ }
+
+ if (itemType === Dbusmenu.CLIENT_TYPES_SEPARATOR) {
+ item = new PopupMenu.PopupSeparatorMenuItem();
+ } else if (wantIcon) {
+ item = new PopupMenu.PopupImageMenuItem(label, null);
+ item.icon = item._icon;
+ } else {
+ item = new PopupMenu.PopupMenuItem(label);
+ }
+ }
+
+ // Set common initial properties.
+ item.actor.visible = visible;
+ item.setSensitive(enabled);
+ if (accessibleDesc) {
+ item.actor.get_accessible().accessible_description = accessibleDesc;
+ }
+ updateDisposition();
+ updateIcon();
+ updateOrnament();
+
+ // Prevent an initial resize flicker.
+ if (wantIcon) {
+ item.icon.icon_size = 16;
+ }
+
+ signalsHandler.add([dbusmenuItem, Dbusmenu.MENUITEM_SIGNAL_PROPERTY_CHANGED, onPropertyChanged]);
+
+ // Connections on item will be lost when item is disposed; there's no need
+ // to add them to signalsHandler.
+ item.connect('activate', () => {
+ dbusmenuItem.handle_event(Dbusmenu.MENUITEM_EVENT_ACTIVATED, new GLib.Variant('i', 0), Math.floor(Date.now()/1000));
+ });
+ item.connect('destroy', () => signalsHandler.destroy());
+
+ return item;
+}
diff --git a/extensions/dash-to-dock/docking.js b/extensions/dash-to-dock/docking.js
new file mode 100644
index 00000000..daa9de59
--- /dev/null
+++ b/extensions/dash-to-dock/docking.js
@@ -0,0 +1,1967 @@
+// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
+
+const Clutter = imports.gi.Clutter;
+const GLib = imports.gi.GLib;
+const GObject = imports.gi.GObject;
+const Meta = imports.gi.Meta;
+const Shell = imports.gi.Shell;
+const St = imports.gi.St;
+const Params = imports.misc.params;
+
+const Main = imports.ui.main;
+const Dash = imports.ui.dash;
+const IconGrid = imports.ui.iconGrid;
+const Overview = imports.ui.overview;
+const OverviewControls = imports.ui.overviewControls;
+const PointerWatcher = imports.ui.pointerWatcher;
+const Signals = imports.signals;
+const SearchController = imports.ui.searchController;
+const WorkspaceSwitcherPopup= imports.ui.workspaceSwitcherPopup;
+const Layout = imports.ui.layout;
+const LayoutManager = imports.ui.main.layoutManager;
+
+const ExtensionUtils = imports.misc.extensionUtils;
+const Me = ExtensionUtils.getCurrentExtension();
+const Utils = Me.imports.utils;
+const Intellihide = Me.imports.intellihide;
+const Theming = Me.imports.theming;
+const MyDash = Me.imports.dash;
+const LauncherAPI = Me.imports.launcherAPI;
+const FileManager1API = Me.imports.fileManager1API;
+
+const DOCK_DWELL_CHECK_INTERVAL = 100;
+
+var State = {
+ HIDDEN: 0,
+ SHOWING: 1,
+ SHOWN: 2,
+ HIDING: 3
+};
+
+const scrollAction = {
+ DO_NOTHING: 0,
+ CYCLE_WINDOWS: 1,
+ SWITCH_WORKSPACE: 2
+};
+
+/**
+ * Ported from GNOME Shell 3.38
+ *
+ * In GNOME Shell 40+ the dash is always visible,
+ * we need to re-include a spacer because our dash
+ * is not always visible.
+ */
+var DashSpacer = GObject.registerClass(
+ class DashSpacer extends Clutter.Actor {
+ _init(source) {
+ super._init();
+
+ this._bindConstraint = new Clutter.BindConstraint({
+ source,
+ coordinate: Clutter.BindCoordinate.SIZE,
+ });
+ this.add_constraint(this._bindConstraint);
+ }
+
+ setMaxSize(size) {
+ // Handles overview controls trying to set the dash' max size.
+ }
+
+ vfunc_get_preferred_width(forHeight) {
+ if (this._bindConstraint)
+ return this._bindConstraint.source.get_preferred_width(forHeight);
+ return super.vfunc_get_preferred_width(forHeight);
+ }
+
+ vfunc_get_preferred_height(forWidth) {
+ if (this._bindConstraint)
+ return this._bindConstraint.source.get_preferred_height(forWidth);
+ return super.vfunc_get_preferred_height(forWidth);
+ }
+ }
+);
+
+
+/**
+ * A simple St.Widget with one child whose allocation takes into account the
+ * slide out of its child via the _slidex parameter ([0:1]).
+ *
+ * Required since I want to track the input region of this container which is
+ * based on its allocation even if the child overlows the parent actor. By doing
+ * this the region of the dash that is slideout is not steling anymore the input
+ * regions making the extesion usable when the primary monitor is the right one.
+ *
+ * The slidex parameter can be used to directly animate the sliding. The parent
+ * must have a WEST (SOUTH) anchor_point to achieve the sliding to the RIGHT (BOTTOM)
+ * side.
+*/
+var DashSlideContainer = GObject.registerClass({
+ Properties: {
+ 'side': GObject.ParamSpec.enum(
+ 'side', 'side', 'side',
+ GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT_ONLY,
+ St.Side, St.Side.LEFT),
+ 'slidex': GObject.ParamSpec.double(
+ 'slidex', 'slidex', 'slidex',
+ GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT,
+ 0, 1, 1),
+ }
+}, class DashToDock_DashSlideContainer extends St.Bin {
+
+ _init(params = {}) {
+ super._init(params);
+
+ // slide parameter: 1 = visible, 0 = hidden.
+ this._slidex = params.slidex || 1;
+ this._slideoutSize = 0; // minimum size when slided out
+ }
+
+ vfunc_allocate(box, flags) {
+ let contentBox = this.get_theme_node().get_content_box(box);
+
+ this.set_allocation(box);
+
+ if (this.child == null)
+ return;
+
+ let availWidth = contentBox.x2 - contentBox.x1;
+ let availHeight = contentBox.y2 - contentBox.y1;
+ let [, , natChildWidth, natChildHeight] =
+ this.child.get_preferred_size();
+
+ let childWidth = natChildWidth;
+ let childHeight = natChildHeight;
+
+ let childBox = new Clutter.ActorBox();
+
+ let slideoutSize = this._slideoutSize;
+
+ if (this.side == St.Side.LEFT) {
+ childBox.x1 = (this._slidex -1) * (childWidth - slideoutSize);
+ childBox.x2 = slideoutSize + this._slidex*(childWidth - slideoutSize);
+ childBox.y1 = 0;
+ childBox.y2 = childBox.y1 + childHeight;
+ }
+ else if ((this.side == St.Side.RIGHT) || (this.side == St.Side.BOTTOM)) {
+ childBox.x1 = 0;
+ childBox.x2 = childWidth;
+ childBox.y1 = 0;
+ childBox.y2 = childBox.y1 + childHeight;
+ }
+ else if (this.side == St.Side.TOP) {
+ childBox.x1 = 0;
+ childBox.x2 = childWidth;
+ childBox.y1 = (this._slidex -1) * (childHeight - slideoutSize);
+ childBox.y2 = slideoutSize + this._slidex * (childHeight - slideoutSize);
+ }
+
+ this.child.allocate(childBox);
+
+ this.child.set_clip(-childBox.x1, -childBox.y1,
+ -childBox.x1+availWidth, -childBox.y1 + availHeight);
+ }
+
+ /**
+ * Just the child width but taking into account the slided out part
+ */
+ vfunc_get_preferred_width(forHeight) {
+ let [minWidth, natWidth] = super.vfunc_get_preferred_width(forHeight);
+ if ((this.side == St.Side.LEFT) || (this.side == St.Side.RIGHT)) {
+ minWidth = (minWidth - this._slideoutSize) * this._slidex + this._slideoutSize;
+ natWidth = (natWidth - this._slideoutSize) * this._slidex + this._slideoutSize;
+ }
+ return [minWidth, natWidth];
+ }
+
+ /**
+ * Just the child height but taking into account the slided out part
+ */
+ vfunc_get_preferred_height(forWidth) {
+ let [minHeight, natHeight] = super.vfunc_get_preferred_height(forWidth);
+ if ((this.side == St.Side.TOP) || (this.side == St.Side.BOTTOM)) {
+ minHeight = (minHeight - this._slideoutSize) * this._slidex + this._slideoutSize;
+ natHeight = (natHeight - this._slideoutSize) * this._slidex + this._slideoutSize;
+ }
+ return [minHeight, natHeight];
+ }
+
+ set slidex(value) {
+ if (value == this._slidex)
+ return;
+
+ this._slidex = value;
+ this.notify('slidex');
+
+ this.queue_relayout();
+ }
+
+ get slidex() {
+ return this._slidex;
+ }
+});
+
+var DockedDash = GObject.registerClass({
+ Signals: {
+ 'showing': {},
+ 'hiding': {},
+ }
+}, class DashToDock extends St.Bin {
+
+ _init(remoteModel, monitorIndex) {
+ this._rtl = (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL);
+
+ // Load settings
+ let settings = DockManager.settings;
+ this._remoteModel = remoteModel;
+ this._monitorIndex = monitorIndex;
+ // Connect global signals
+ this._signalsHandler = new Utils.GlobalSignalsHandler();
+
+ this._bindSettingsChanges();
+
+ this._position = Utils.getPosition();
+ this._isHorizontal = ((this._position == St.Side.TOP) || (this._position == St.Side.BOTTOM));
+
+ // Temporary ignore hover events linked to autohide for whatever reason
+ this._ignoreHover = false;
+ this._oldignoreHover = null;
+ // This variables are linked to the settings regardles of autohide or intellihide
+ // being temporary disable. Get set by _updateVisibilityMode;
+ this._autohideIsEnabled = null;
+ this._intellihideIsEnabled = null;
+ this._fixedIsEnabled = null;
+
+ // Create intellihide object to monitor windows overlapping
+ this._intellihide = new Intellihide.Intellihide(this._monitorIndex);
+
+ // initialize dock state
+ this._dockState = State.HIDDEN;
+
+ // Put dock on the required monitor
+ this._monitor = Main.layoutManager.monitors[this._monitorIndex];
+
+ // this store size and the position where the dash is shown;
+ // used by intellihide module to check window overlap.
+ this.staticBox = new Clutter.ActorBox();
+
+ // Initialize pressure barrier variables
+ this._canUsePressure = false;
+ this._pressureBarrier = null;
+ this._barrier = null;
+ this._removeBarrierTimeoutId = 0;
+
+ // Initialize dwelling system variables
+ this._dockDwelling = false;
+ this._dockWatch = null;
+ this._dockDwellUserTime = 0;
+ this._dockDwellTimeoutId = 0
+
+ // Create a new dash object
+ this.dash = new MyDash.MyDash(this._remoteModel, this._monitorIndex);
+
+ if (Main.overview.isDummy || !settings.get_boolean('show-show-apps-button'))
+ this.dash.hideShowAppsButton();
+
+ // Create the main actor and the containers for sliding in and out and
+ // centering, turn on track hover
+
+ let positionStyleClass = ['top', 'right', 'bottom', 'left'];
+ // This is the centering actor
+ super._init({
+ name: 'dashtodockContainer',
+ reactive: false,
+ style_class: positionStyleClass[this._position],
+ });
+
+ // This is the sliding actor whose allocation is to be tracked for input regions
+ this._slider = new DashSlideContainer({
+ side: this._position,
+ slidex: 0,
+ ...(this._isHorizontal ? {
+ x_align: Clutter.ActorAlign.CENTER,
+ } : {
+ y_align: Clutter.ActorAlign.CENTER,
+ })
+ });
+
+ // This is the actor whose hover status us tracked for autohide
+ this._box = new St.BoxLayout({
+ name: 'dashtodockBox',
+ reactive: true,
+ track_hover: true
+ });
+ this._box.connect('notify::hover', this._hoverChanged.bind(this));
+
+ this._signalsHandler.add([
+ // update when workarea changes, for instance if other extensions modify the struts
+ //(like moving th panel at the bottom)
+ global.display,
+ 'workareas-changed',
+ this._resetPosition.bind(this)
+ ], [
+ global.display,
+ 'in-fullscreen-changed',
+ this._updateBarrier.bind(this)
+ ], [
+ // Monitor windows overlapping
+ this._intellihide,
+ 'status-changed',
+ this._updateDashVisibility.bind(this)
+ ], [
+ // sync hover after a popupmenu is closed
+ this.dash,
+ 'menu-closed',
+ () => { this._box.sync_hover() }
+ ]);
+
+ if (!Main.overview.isDummy) {
+ this._signalsHandler.add([
+ Main.overview,
+ 'item-drag-begin',
+ this._onDragStart.bind(this)
+ ], [
+ Main.overview,
+ 'item-drag-end',
+ this._onDragEnd.bind(this)
+ ], [
+ Main.overview,
+ 'item-drag-cancelled',
+ this._onDragEnd.bind(this)
+ ], [
+ Main.overview,
+ 'showing',
+ this._onOverviewShowing.bind(this)
+ ], [
+ Main.overview,
+ 'hiding',
+ this._onOverviewHiding.bind(this)
+ ],
+ [
+ Main.overview,
+ 'hidden',
+ this._onOverviewHidden.bind(this)
+ ]);
+ }
+
+ this._injectionsHandler = new Utils.InjectionsHandler();
+ this._themeManager = new Theming.ThemeManager(this);
+
+ // Since the actor is not a topLevel child and its parent is now not added to the Chrome,
+ // the allocation change of the parent container (slide in and slideout) doesn't trigger
+ // anymore an update of the input regions. Force the update manually.
+ this.connect('notify::allocation',
+ Main.layoutManager._queueUpdateRegions.bind(Main.layoutManager));
+
+
+ // Since Clutter has no longer ClutterAllocationFlags,
+ // "allocation-changed" signal has been removed. MR !1245
+ this.dash._container.connect('notify::allocation', this._updateStaticBox.bind(this));
+ this._slider.connect(this._isHorizontal ? 'notify::x' : 'notify::y', this._updateStaticBox.bind(this));
+
+ // Load optional features that need to be activated for one dock only
+ if (this._monitorIndex == settings.get_int('preferred-monitor'))
+ this._enableExtraFeatures();
+ // Load optional features that need to be activated once per dock
+ this._optionalScrollWorkspaceSwitch();
+
+ // Delay operations that require the shell to be fully loaded and with
+ // user theme applied.
+
+ this._paintId = global.stage.connect('after-paint', this._initialize.bind(this));
+
+ // Reserve space for the dash in the overview.
+ this._dashSpacer = new DashSpacer(this._box);
+
+ // Add dash container actor and the container to the Chrome.
+ this.set_child(this._slider);
+ this._slider.set_child(this._box);
+ this._box.add_actor(this.dash);
+
+ // Add aligning container without tracking it for input region
+ Main.uiGroup.add_child(this);
+ if (Main.uiGroup.contains(global.top_window_group))
+ Main.uiGroup.set_child_below_sibling(this, global.top_window_group);
+
+ if (settings.get_boolean('dock-fixed')) {
+ // Note: tracking the fullscreen directly on the slider actor causes some hiccups when fullscreening
+ // windows of certain applications
+ Main.layoutManager._trackActor(this, {affectsInputRegion: false, trackFullscreen: true});
+ Main.layoutManager._trackActor(this._slider, {affectsStruts: true});
+ }
+ else
+ Main.layoutManager._trackActor(this._slider);
+
+ // Create and apply height/width constraint to the dash.
+ if (this._isHorizontal) {
+ this.connect('notify::width', () => {
+ this.dash.setMaxSize(this.width, this.height);
+ });
+ } else {
+ this.connect('notify::height', () => {
+ this.dash.setMaxSize(this.width, this.height)
+ });
+ }
+
+ if (this._position == St.Side.RIGHT)
+ this.connect('notify::width', () => this.translation_x = -this.width);
+ else if (this._position == St.Side.BOTTOM)
+ this.connect('notify::height', () => this.translation_y = -this.height);
+
+ // Set initial position
+ this._resetPosition();
+
+ this.connect('destroy', this._onDestroy.bind(this));
+ }
+
+ _untrackDock() {
+ Main.layoutManager._untrackActor(this);
+ Main.layoutManager._untrackActor(this._slider);
+
+ }
+
+ _trackDock() {
+ if (DockManager.settings.get_boolean('dock-fixed')) {
+ if (Main.layoutManager._findActor(this) == -1)
+ Main.layoutManager._trackActor(this, { affectsInputRegion: false, trackFullscreen: true });
+ if (Main.layoutManager._findActor(this._slider) == -1)
+ Main.layoutManager._trackActor(this._slider, { affectsStruts: true });
+ } else {
+ if (Main.layoutManager._findActor(this._slider) == -1)
+ Main.layoutManager._trackActor(this._slider);
+ }
+ }
+
+ _initialize() {
+ log('[dash-to-dock] initializing...');
+
+ if (this._paintId > 0) {
+ global.stage.disconnect(this._paintId);
+ this._paintId = 0;
+ }
+
+ // Apply custome css class according to the settings
+ this._themeManager.updateCustomTheme();
+
+ this._updateVisibilityMode();
+
+ // In case we are already inside the overview when the extension is loaded,
+ // for instance on unlocking the screen if it was locked with the overview open.
+ if (Main.overview.visibleTarget) {
+ this._onOverviewShowing();
+ }
+
+ // Setup pressure barrier (GS38+ only)
+ this._updatePressureBarrier();
+ this._updateBarrier();
+
+ // setup dwelling system if pressure barriers are not available
+ this._setupDockDwellIfNeeded();
+ }
+
+ _onDestroy() {
+ // Disconnect global signals
+ this._signalsHandler.destroy();
+ // The dash, intellihide and themeManager have global signals as well internally
+ this.dash.destroy();
+ this._intellihide.destroy();
+ this._themeManager.destroy();
+
+ this._injectionsHandler.destroy();
+
+ if (this._marginLater) {
+ Meta.later_remove(this._marginLater);
+ delete this._marginLater;
+ }
+
+ // Remove barrier timeout
+ if (this._removeBarrierTimeoutId > 0)
+ GLib.source_remove(this._removeBarrierTimeoutId);
+
+ // Remove existing barrier
+ this._removeBarrier();
+
+ // Remove pointer watcher
+ if (this._dockWatch) {
+ PointerWatcher.getPointerWatcher()._removeWatch(this._dockWatch);
+ this._dockWatch = null;
+ }
+ }
+
+ _bindSettingsChanges() {
+ let settings = DockManager.settings;
+ this._signalsHandler.add([
+ settings,
+ 'changed::scroll-action',
+ () => { this._optionalScrollWorkspaceSwitch(); }
+ ], [
+ settings,
+ 'changed::dash-max-icon-size',
+ () => { this.dash.setIconSize(settings.get_int('dash-max-icon-size')); }
+ ], [
+ settings,
+ 'changed::icon-size-fixed',
+ () => { this.dash.setIconSize(settings.get_int('dash-max-icon-size')); }
+ ], [
+ settings,
+ 'changed::show-favorites',
+ () => { this.dash.resetAppIcons(); }
+ ], [
+ settings,
+ 'changed::show-trash',
+ () => { this.dash.resetAppIcons(); },
+ Utils.SignalsHandlerFlags.CONNECT_AFTER,
+ ], [
+ settings,
+ 'changed::show-mounts',
+ () => { this.dash.resetAppIcons(); },
+ Utils.SignalsHandlerFlags.CONNECT_AFTER
+ ], [
+ settings,
+ 'changed::show-running',
+ () => { this.dash.resetAppIcons(); }
+ ], [
+ settings,
+ 'changed::show-apps-at-top',
+ () => { this.dash.updateShowAppsButton(); }
+ ], [
+ settings,
+ 'changed::show-show-apps-button',
+ () => {
+ if (!Main.overview.isDummy &&
+ settings.get_boolean('show-show-apps-button'))
+ this.dash.showShowAppsButton();
+ else
+ this.dash.hideShowAppsButton();
+ }
+ ], [
+ settings,
+ 'changed::dock-fixed',
+ () => {
+ this._untrackDock();
+ this._trackDock();
+
+ this._resetPosition();
+
+ // Add or remove barrier depending on if dock-fixed
+ this._updateBarrier();
+
+ this._updateVisibilityMode();
+ }
+ ], [
+ settings,
+ 'changed::intellihide',
+ this._updateVisibilityMode.bind(this)
+ ], [
+ settings,
+ 'changed::intellihide-mode',
+ () => { this._intellihide.forceUpdate(); }
+ ], [
+ settings,
+ 'changed::autohide',
+ () => {
+ this._updateVisibilityMode();
+ this._updateBarrier();
+ }
+ ], [
+ settings,
+ 'changed::autohide-in-fullscreen',
+ this._updateBarrier.bind(this)
+ ],
+ [
+ settings,
+ 'changed::extend-height',
+ this._resetPosition.bind(this)
+ ], [
+ settings,
+ 'changed::height-fraction',
+ this._resetPosition.bind(this)
+ ], [
+ settings,
+ 'changed::require-pressure-to-show',
+ () => {
+ // Remove pointer watcher
+ if (this._dockWatch) {
+ PointerWatcher.getPointerWatcher()._removeWatch(this._dockWatch);
+ this._dockWatch = null;
+ }
+ this._setupDockDwellIfNeeded();
+ this._updateBarrier();
+ }
+ ], [
+ settings,
+ 'changed::pressure-threshold',
+ () => {
+ this._updatePressureBarrier();
+ this._updateBarrier();
+ }
+ ]);
+
+ }
+
+ /**
+ * This is call when visibility settings change
+ */
+ _updateVisibilityMode() {
+ let settings = DockManager.settings;
+ if (settings.get_boolean('dock-fixed')) {
+ this._fixedIsEnabled = true;
+ this._autohideIsEnabled = false;
+ this._intellihideIsEnabled = false;
+ }
+ else {
+ this._fixedIsEnabled = false;
+ this._autohideIsEnabled = settings.get_boolean('autohide')
+ this._intellihideIsEnabled = settings.get_boolean('intellihide')
+ }
+
+ if (this._autohideIsEnabled)
+ this.add_style_class_name('autohide');
+ else
+ this.remove_style_class_name('autohide');
+
+ if (this._intellihideIsEnabled)
+ this._intellihide.enable();
+ else
+ this._intellihide.disable();
+
+ this._updateDashVisibility();
+ }
+
+ /**
+ * Show/hide dash based on, in order of priority:
+ * overview visibility
+ * fixed mode
+ * intellihide
+ * autohide
+ * overview visibility
+ */
+ _updateDashVisibility() {
+ if (Main.overview.visibleTarget)
+ return;
+
+ let settings = DockManager.settings;
+
+ if (this._fixedIsEnabled) {
+ this._removeAnimations();
+ this._animateIn(settings.get_double('animation-time'), 0);
+ }
+ else if (this._intellihideIsEnabled) {
+ if (this._intellihide.getOverlapStatus()) {
+ this._ignoreHover = false;
+ // Do not hide if autohide is enabled and mouse is hover
+ if (!this._box.hover || !this._autohideIsEnabled)
+ this._animateOut(settings.get_double('animation-time'), 0);
+ }
+ else {
+ this._ignoreHover = true;
+ this._removeAnimations();
+ this._animateIn(settings.get_double('animation-time'), 0);
+ }
+ }
+ else {
+ if (this._autohideIsEnabled) {
+ this._ignoreHover = false;
+
+ if (this._box.hover)
+ this._animateIn(settings.get_double('animation-time'), 0);
+ else
+ this._animateOut(settings.get_double('animation-time'), 0);
+ }
+ else
+ this._animateOut(settings.get_double('animation-time'), 0);
+ }
+ }
+
+ _onOverviewShowing() {
+ this.add_style_class_name('overview');
+
+ this._ignoreHover = true;
+ this._intellihide.disable();
+ this._removeAnimations();
+ // The overview uses the monitor's work area to calculate background size.
+ // If our dock is fixed, it will shrink the monitor's work area unexpectedly.
+ this._untrackDock();
+ this._animateIn(DockManager.settings.get_double('animation-time'), 0);
+ }
+
+ _onOverviewHiding() {
+ this._ignoreHover = false;
+ this._intellihide.enable();
+ this._trackDock();
+ this._updateDashVisibility();
+ }
+
+ _onOverviewHidden() {
+ this.remove_style_class_name('overview');
+ }
+
+ _hoverChanged() {
+ if (!this._ignoreHover) {
+ // Skip if dock is not in autohide mode for instance because it is shown
+ // by intellihide.
+ if (this._autohideIsEnabled) {
+ if (this._box.hover)
+ this._show();
+ else
+ this._hide();
+ }
+ }
+ }
+
+ getDockState() {
+ return this._dockState;
+ }
+
+ _show() {
+ this._delayedHide = false;
+ if ((this._dockState == State.HIDDEN) || (this._dockState == State.HIDING)) {
+ if (this._dockState == State.HIDING)
+ // suppress all potential queued transitions - i.e. added but not started,
+ // always give priority to show
+ this._removeAnimations();
+
+ this.emit('showing');
+ this._animateIn(DockManager.settings.get_double('animation-time'), 0);
+ }
+ }
+
+ _hide() {
+ // If no hiding animation is running or queued
+ if ((this._dockState == State.SHOWN) || (this._dockState == State.SHOWING)) {
+ let settings = DockManager.settings;
+ let delay = settings.get_double('hide-delay');
+
+ if (this._dockState == State.SHOWING) {
+ // if a show already started, let it finish; queue hide without removing the show.
+ // to obtain this, we wait for the animateIn animation to be completed
+ this._delayedHide = true;
+ return;
+ }
+
+ this.emit('hiding');
+ this._animateOut(settings.get_double('animation-time'), delay);
+ }
+ }
+
+ _animateIn(time, delay) {
+ this._dockState = State.SHOWING;
+ this.dash.iconAnimator.start();
+ this._delayedHide = false;
+
+ this._slider.ease_property('slidex', 1, {
+ duration: time * 1000,
+ delay: delay * 1000,
+ mode: Clutter.AnimationMode.EASE_OUT_QUAD,
+ onComplete: () => {
+ this._dockState = State.SHOWN;
+ // Remove barrier so that mouse pointer is released and can access monitors on other side of dock
+ // NOTE: Delay needed to keep mouse from moving past dock and re-hiding dock immediately. This
+ // gives users an opportunity to hover over the dock
+ if (this._removeBarrierTimeoutId > 0)
+ GLib.source_remove(this._removeBarrierTimeoutId);
+
+ if (!this._delayedHide) {
+ this._removeBarrierTimeoutId = GLib.timeout_add(
+ GLib.PRIORITY_DEFAULT, 100, this._removeBarrier.bind(this));
+ } else {
+ this._hide();
+ }
+ }
+ });
+ }
+
+ _animateOut(time, delay) {
+ this._dockState = State.HIDING;
+
+ this._slider.ease_property('slidex', 0, {
+ duration: time * 1000,
+ delay: delay * 1000,
+ mode: Clutter.AnimationMode.EASE_OUT_QUAD,
+ onComplete: () => {
+ this._dockState = State.HIDDEN;
+ // Remove queued barried removal if any
+ if (this._removeBarrierTimeoutId > 0)
+ GLib.source_remove(this._removeBarrierTimeoutId);
+ this._updateBarrier();
+ this.dash.iconAnimator.pause();
+ }
+ });
+ }
+
+ /**
+ * Dwelling system based on the GNOME Shell 3.14 messageTray code.
+ */
+ _setupDockDwellIfNeeded() {
+ // If we don't have extended barrier features, then we need
+ // to support the old tray dwelling mechanism.
+ if (!global.display.supports_extended_barriers() ||
+ !DockManager.settings.get_boolean('require-pressure-to-show')) {
+ let pointerWatcher = PointerWatcher.getPointerWatcher();
+ this._dockWatch = pointerWatcher.addWatch(DOCK_DWELL_CHECK_INTERVAL, this._checkDockDwell.bind(this));
+ this._dockDwelling = false;
+ this._dockDwellUserTime = 0;
+ }
+ }
+
+ _checkDockDwell(x, y) {
+
+ let workArea = Main.layoutManager.getWorkAreaForMonitor(this._monitor.index)
+ let shouldDwell;
+ // Check for the correct screen edge, extending the sensitive area to the whole workarea,
+ // minus 1 px to avoid conflicting with other active corners.
+ if (this._position == St.Side.LEFT)
+ shouldDwell = (x == this._monitor.x) && (y > workArea.y) && (y < workArea.y + workArea.height);
+ else if (this._position == St.Side.RIGHT)
+ shouldDwell = (x == this._monitor.x + this._monitor.width - 1) && (y > workArea.y) && (y < workArea.y + workArea.height);
+ else if (this._position == St.Side.TOP)
+ shouldDwell = (y == this._monitor.y) && (x > workArea.x) && (x < workArea.x + workArea.width);
+ else if (this._position == St.Side.BOTTOM)
+ shouldDwell = (y == this._monitor.y + this._monitor.height - 1) && (x > workArea.x) && (x < workArea.x + workArea.width);
+
+ if (shouldDwell) {
+ // We only set up dwell timeout when the user is not hovering over the dock
+ // already (!this._box.hover).
+ // The _dockDwelling variable is used so that we only try to
+ // fire off one dock dwell - if it fails (because, say, the user has the mouse down),
+ // we don't try again until the user moves the mouse up and down again.
+ if (!this._dockDwelling && !this._box.hover && (this._dockDwellTimeoutId == 0)) {
+ // Save the interaction timestamp so we can detect user input
+ let focusWindow = global.display.focus_window;
+ this._dockDwellUserTime = focusWindow ? focusWindow.user_time : 0;
+
+ this._dockDwellTimeoutId = GLib.timeout_add(
+ GLib.PRIORITY_DEFAULT,
+ DockManager.settings.get_double('show-delay') * 1000,
+ this._dockDwellTimeout.bind(this));
+ GLib.Source.set_name_by_id(this._dockDwellTimeoutId, '[dash-to-dock] this._dockDwellTimeout');
+ }
+ this._dockDwelling = true;
+ }
+ else {
+ this._cancelDockDwell();
+ this._dockDwelling = false;
+ }
+ }
+
+ _cancelDockDwell() {
+ if (this._dockDwellTimeoutId != 0) {
+ GLib.source_remove(this._dockDwellTimeoutId);
+ this._dockDwellTimeoutId = 0;
+ }
+ }
+
+ _dockDwellTimeout() {
+ this._dockDwellTimeoutId = 0;
+
+ if (!DockManager.settings.get_boolean('autohide-in-fullscreen') &&
+ this._monitor.inFullscreen)
+ return GLib.SOURCE_REMOVE;
+
+ // We don't want to open the tray when a modal dialog
+ // is up, so we check the modal count for that. When we are in the
+ // overview we have to take the overview's modal push into account
+ if (Main.modalCount > (Main.overview.visible ? 1 : 0))
+ return GLib.SOURCE_REMOVE;
+
+ // If the user interacted with the focus window since we started the tray
+ // dwell (by clicking or typing), don't activate the message tray
+ let focusWindow = global.display.focus_window;
+ let currentUserTime = focusWindow ? focusWindow.user_time : 0;
+ if (currentUserTime != this._dockDwellUserTime)
+ return GLib.SOURCE_REMOVE;
+
+ // Reuse the pressure version function, the logic is the same
+ this._onPressureSensed();
+ return GLib.SOURCE_REMOVE;
+ }
+
+ _updatePressureBarrier() {
+ let settings = DockManager.settings;
+ this._canUsePressure = global.display.supports_extended_barriers();
+ let pressureThreshold = settings.get_double('pressure-threshold');
+
+ // Remove existing pressure barrier
+ if (this._pressureBarrier) {
+ this._pressureBarrier.destroy();
+ this._pressureBarrier = null;
+ }
+
+ if (this._barrier) {
+ this._barrier.destroy();
+ this._barrier = null;
+ }
+
+ // Create new pressure barrier based on pressure threshold setting
+ if (this._canUsePressure) {
+ this._pressureBarrier = new Layout.PressureBarrier(pressureThreshold, settings.get_double('show-delay')*1000,
+ Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW);
+ this._pressureBarrier.connect('trigger', (barrier) => {
+ if (!settings.get_boolean('autohide-in-fullscreen') && this._monitor.inFullscreen)
+ return;
+ this._onPressureSensed();
+ });
+ }
+ }
+
+ /**
+ * handler for mouse pressure sensed
+ */
+ _onPressureSensed() {
+ if (Main.overview.visibleTarget)
+ return;
+
+ // In case the mouse move away from the dock area before hovering it, in such case the leave event
+ // would never be triggered and the dock would stay visible forever.
+ let triggerTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 250, () => {
+ triggerTimeoutId = 0;
+
+ let [x, y, mods] = global.get_pointer();
+ let shouldHide = true;
+ switch (this._position) {
+ case St.Side.LEFT:
+ if (x <= this.staticBox.x2 &&
+ x >= this._monitor.x &&
+ y >= this._monitor.y &&
+ y <= this._monitor.y + this._monitor.height) {
+ shouldHide = false;
+ }
+ break;
+ case St.Side.RIGHT:
+ if (x >= this.staticBox.x1 &&
+ x <= this._monitor.x + this._monitor.width &&
+ y >= this._monitor.y &&
+ y <= this._monitor.y + this._monitor.height) {
+ shouldHide = false;
+ }
+ break;
+ case St.Side.TOP:
+ if (x >= this._monitor.x &&
+ x <= this._monitor.x + this._monitor.width &&
+ y <= this.staticBox.y2 &&
+ y >= this._monitor.y) {
+ shouldHide = false;
+ }
+ break;
+ case St.Side.BOTTOM:
+ if (x >= this._monitor.x &&
+ x <= this._monitor.x + this._monitor.width &&
+ y >= this.staticBox.y1 &&
+ y <= this._monitor.y + this._monitor.height) {
+ shouldHide = false;
+ }
+ }
+ if (shouldHide) {
+ this._hoverChanged();
+ return GLib.SOURCE_REMOVE;
+ }
+ else {
+ return GLib.SOURCE_CONTINUE;
+ }
+
+ });
+
+ this._show();
+ }
+
+ /**
+ * Remove pressure barrier
+ */
+ _removeBarrier() {
+ if (this._barrier) {
+ if (this._pressureBarrier)
+ this._pressureBarrier.removeBarrier(this._barrier);
+ this._barrier.destroy();
+ this._barrier = null;
+ }
+ this._removeBarrierTimeoutId = 0;
+ return false;
+ }
+
+ /**
+ * Update pressure barrier size
+ */
+ _updateBarrier() {
+ // Remove existing barrier
+ this._removeBarrier();
+
+ // The barrier needs to be removed in fullscreen with autohide disabled, otherwise the mouse can
+ // get trapped on monitor.
+ if (this._monitor.inFullscreen &&
+ !DockManager.settings.get_boolean('autohide-in-fullscreen'))
+ return
+
+ // Manually reset pressure barrier
+ // This is necessary because we remove the pressure barrier when it is triggered to show the dock
+ if (this._pressureBarrier) {
+ this._pressureBarrier._reset();
+ this._pressureBarrier._isTriggered = false;
+ }
+
+ // Create new barrier
+ // The barrier extends to the whole workarea, minus 1 px to avoid conflicting with other active corners
+ // Note: dash in fixed position doesn't use pressure barrier.
+ if (this._canUsePressure && this._autohideIsEnabled &&
+ DockManager.settings.get_boolean('require-pressure-to-show')) {
+ let x1, x2, y1, y2, direction;
+ let workArea = Main.layoutManager.getWorkAreaForMonitor(this._monitor.index)
+
+ if (this._position == St.Side.LEFT) {
+ x1 = this._monitor.x + 1;
+ x2 = x1;
+ y1 = workArea.y + 1;
+ y2 = workArea.y + workArea.height - 1;
+ direction = Meta.BarrierDirection.POSITIVE_X;
+ }
+ else if (this._position == St.Side.RIGHT) {
+ x1 = this._monitor.x + this._monitor.width - 1;
+ x2 = x1;
+ y1 = workArea.y + 1;
+ y2 = workArea.y + workArea.height - 1;
+ direction = Meta.BarrierDirection.NEGATIVE_X;
+ }
+ else if (this._position == St.Side.TOP) {
+ x1 = workArea.x + 1;
+ x2 = workArea.x + workArea.width - 1;
+ y1 = this._monitor.y;
+ y2 = y1;
+ direction = Meta.BarrierDirection.POSITIVE_Y;
+ }
+ else if (this._position == St.Side.BOTTOM) {
+ x1 = workArea.x + 1;
+ x2 = workArea.x + workArea.width - 1;
+ y1 = this._monitor.y + this._monitor.height;
+ y2 = y1;
+ direction = Meta.BarrierDirection.NEGATIVE_Y;
+ }
+
+ if (this._pressureBarrier && this._dockState == State.HIDDEN) {
+ this._barrier = new Meta.Barrier({
+ display: global.display,
+ x1: x1,
+ x2: x2,
+ y1: y1,
+ y2: y2,
+ directions: direction
+ });
+ this._pressureBarrier.addBarrier(this._barrier);
+ }
+ }
+ }
+
+ _isPrimaryMonitor() {
+ return (this._monitorIndex == Main.layoutManager.primaryIndex);
+ }
+
+ _resetPosition() {
+ // Ensure variables linked to settings are updated.
+ this._updateVisibilityMode();
+
+ let extendHeight = DockManager.settings.get_boolean('extend-height');
+
+ // Note: do not use the workarea coordinates in the direction on which the dock is placed,
+ // to avoid a loop [position change -> workArea change -> position change] with
+ // fixed dock.
+ let workArea = Main.layoutManager.getWorkAreaForMonitor(this._monitorIndex);
+
+
+ let fraction = DockManager.settings.get_double('height-fraction');
+
+ if (extendHeight)
+ fraction = 1;
+ else if ((fraction < 0) || (fraction > 1))
+ fraction = 0.95;
+
+ if (this._isHorizontal) {
+ this.width = Math.round(fraction * workArea.width);
+
+ let pos_y = this._monitor.y;
+ if (this._position == St.Side.BOTTOM)
+ pos_y += this._monitor.height;
+
+ this.x = workArea.x + Math.round((1 - fraction) / 2 * workArea.width);
+ this.y = pos_y;
+
+ if (extendHeight) {
+ this.dash._container.set_width(this.width);
+ this.add_style_class_name('extended');
+ } else {
+ this.dash._container.set_width(-1);
+ this.remove_style_class_name('extended');
+ }
+ } else {
+ this.height = Math.round(fraction * workArea.height);
+
+ let pos_x = this._monitor.x;
+ if (this._position == St.Side.RIGHT)
+ pos_x += this._monitor.width;
+
+ this.x = pos_x;
+ this.y = workArea.y + Math.round((1 - fraction) / 2 * workArea.height);
+
+ this._signalsHandler.removeWithLabel('verticalOffsetChecker');
+
+ if (extendHeight) {
+ this.dash._container.set_height(this.height);
+ this.add_style_class_name('extended');
+ } else {
+ this.dash._container.set_height(-1);
+ this.remove_style_class_name('extended');
+ }
+ }
+ }
+
+ _updateStaticBox() {
+ this.staticBox.init_rect(
+ this.x + this._slider.x - (this._position == St.Side.RIGHT ? this._box.width : 0),
+ this.y + this._slider.y - (this._position == St.Side.BOTTOM ? this._box.height : 0),
+ this._box.width,
+ this._box.height
+ );
+
+ this._intellihide.updateTargetBox(this.staticBox);
+ }
+
+ _removeAnimations() {
+ this._slider.remove_all_transitions();
+ }
+
+ _onDragStart() {
+ this._oldignoreHover = this._ignoreHover;
+ this._ignoreHover = true;
+ this._animateIn(DockManager.settings.get_double('animation-time'), 0);
+ }
+
+ _onDragEnd() {
+ if (this._oldignoreHover !== null)
+ this._ignoreHover = this._oldignoreHover;
+ this._oldignoreHover = null;
+ this._box.sync_hover();
+ }
+
+ /**
+ * Show dock and give key focus to it
+ */
+ _onAccessibilityFocus() {
+ this._box.navigate_focus(null, St.DirectionType.TAB_FORWARD, false);
+ this._animateIn(DockManager.settings.get_double('animation-time'), 0);
+ }
+
+ // Optional features to be enabled only for the main Dock
+ _enableExtraFeatures() {
+ // Restore dash accessibility
+ Main.ctrlAltTabManager.addGroup(
+ this.dash, _('Dash'), 'user-bookmarks-symbolic',
+ {focusCallback: this._onAccessibilityFocus.bind(this)});
+ }
+
+ /**
+ * Switch workspace by scrolling over the dock
+ */
+ _optionalScrollWorkspaceSwitch() {
+ let label = 'optionalScrollWorkspaceSwitch';
+
+ function isEnabled() {
+ return DockManager.settings.get_enum('scroll-action') === scrollAction.SWITCH_WORKSPACE;
+ }
+
+ DockManager.settings.connect('changed::scroll-action', () => {
+ if (isEnabled.bind(this)())
+ enable.bind(this)();
+ else
+ disable.bind(this)();
+ });
+
+ if (isEnabled.bind(this)())
+ enable.bind(this)();
+
+ function enable() {
+ this._signalsHandler.removeWithLabel(label);
+
+ this._signalsHandler.addWithLabel(label, [
+ this._box,
+ 'scroll-event',
+ onScrollEvent.bind(this)
+ ]);
+ }
+
+ function disable() {
+ this._signalsHandler.removeWithLabel(label);
+
+ if (this._optionalScrollWorkspaceSwitchDeadTimeId) {
+ GLib.source_remove(this._optionalScrollWorkspaceSwitchDeadTimeId);
+ this._optionalScrollWorkspaceSwitchDeadTimeId = 0;
+ }
+ }
+
+ // This was inspired to desktop-scroller@obsidien.github.com
+ function onScrollEvent(actor, event) {
+ // When in overview change workspace only in windows view
+ if (Main.overview.visible)
+ return false;
+
+ let activeWs = global.workspace_manager.get_active_workspace();
+ let direction = null;
+
+ switch (event.get_scroll_direction()) {
+ case Clutter.ScrollDirection.UP:
+ direction = Meta.MotionDirection.LEFT;
+ break;
+ case Clutter.ScrollDirection.DOWN:
+ direction = Meta.MotionDirection.RIGHT;
+ break;
+ case Clutter.ScrollDirection.SMOOTH:
+ let [dx, dy] = event.get_scroll_delta();
+ if (dy < 0)
+ direction = Meta.MotionDirection.LEFT;
+ else if (dy > 0)
+ direction = Meta.MotionDirection.RIGHT;
+ break;
+ }
+
+ if (direction !== null) {
+ // Prevent scroll events from triggering too many workspace switches
+ // by adding a 250ms deadtime between each scroll event.
+ // Usefull on laptops when using a touchpad.
+
+ // During the deadtime do nothing
+ if (this._optionalScrollWorkspaceSwitchDeadTimeId)
+ return false;
+ else
+ this._optionalScrollWorkspaceSwitchDeadTimeId = GLib.timeout_add(
+ GLib.PRIORITY_DEFAULT, 250, () => {
+ this._optionalScrollWorkspaceSwitchDeadTimeId = 0;
+ });
+
+ let ws;
+
+ ws = activeWs.get_neighbor(direction)
+
+ if (Main.wm._workspaceSwitcherPopup == null)
+ // Support Workspace Grid extension showing their custom Grid Workspace Switcher
+ if (global.workspace_manager.workspace_grid !== undefined) {
+ Main.wm._workspaceSwitcherPopup =
+ global.workspace_manager.workspace_grid.getWorkspaceSwitcherPopup();
+ } else {
+ Main.wm._workspaceSwitcherPopup = new WorkspaceSwitcherPopup.WorkspaceSwitcherPopup();
+ }
+ // Set the actor non reactive, so that it doesn't prevent the
+ // clicks events from reaching the dash actor. I can't see a reason
+ // why it should be reactive.
+ Main.wm._workspaceSwitcherPopup.reactive = false;
+ Main.wm._workspaceSwitcherPopup.connect('destroy', function() {
+ Main.wm._workspaceSwitcherPopup = null;
+ });
+
+ // If Workspace Grid is installed, let them handle the scroll behaviour.
+ if (global.workspace_manager.workspace_grid !== undefined)
+ ws = global.workspace_manager.workspace_grid.actionMoveWorkspace(direction);
+ else
+ Main.wm.actionMoveWorkspace(ws);
+
+ // Do not show workspaceSwitcher in overview
+ if (!Main.overview.visible)
+ Main.wm._workspaceSwitcherPopup.display(direction, ws.index());
+
+ return true;
+ }
+ else
+ return false;
+ }
+ }
+
+ _activateApp(appIndex) {
+ let children = this.dash._box.get_children().filter(function(actor) {
+ return actor.child &&
+ actor.child.app;
+ });
+
+ // Apps currently in the dash
+ let apps = children.map(function(actor) {
+ return actor.child;
+ });
+
+ // Activate with button = 1, i.e. same as left click
+ let button = 1;
+ if (appIndex < apps.length)
+ apps[appIndex].activate(button);
+ }
+});
+
+/*
+ * Handle keybaord shortcuts
+ */
+const DashToDock_KeyboardShortcuts_NUM_HOTKEYS = 10;
+
+var KeyboardShortcuts = class DashToDock_KeyboardShortcuts {
+
+ constructor() {
+ this._signalsHandler = new Utils.GlobalSignalsHandler();
+
+ this._hotKeysEnabled = false;
+ if (DockManager.settings.get_boolean('hot-keys'))
+ this._enableHotKeys();
+
+ this._signalsHandler.add([
+ DockManager.settings,
+ 'changed::hot-keys',
+ () => {
+ if (DockManager.settings.get_boolean('hot-keys'))
+ this._enableHotKeys.bind(this)();
+ else
+ this._disableHotKeys.bind(this)();
+ }
+ ]);
+
+ this._optionalNumberOverlay();
+ }
+
+ destroy() {
+ // Remove keybindings
+ this._disableHotKeys();
+ this._disableExtraShortcut();
+ this._signalsHandler.destroy();
+ }
+
+ _enableHotKeys() {
+ if (this._hotKeysEnabled)
+ return;
+
+ // Setup keyboard bindings for dash elements
+ let keys = ['app-hotkey-', 'app-shift-hotkey-', 'app-ctrl-hotkey-'];
+ keys.forEach( function(key) {
+ for (let i = 0; i < DashToDock_KeyboardShortcuts_NUM_HOTKEYS; i++) {
+ let appNum = i;
+ Main.wm.addKeybinding(key + (i + 1), DockManager.settings,
+ Meta.KeyBindingFlags.IGNORE_AUTOREPEAT,
+ Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW,
+ () => {
+ DockManager.getDefault().mainDock._activateApp(appNum);
+ this._showOverlay();
+ });
+ }
+ }, this);
+
+ this._hotKeysEnabled = true;
+ }
+
+ _disableHotKeys() {
+ if (!this._hotKeysEnabled)
+ return;
+
+ let keys = ['app-hotkey-', 'app-shift-hotkey-', 'app-ctrl-hotkey-'];
+ keys.forEach( function(key) {
+ for (let i = 0; i < DashToDock_KeyboardShortcuts_NUM_HOTKEYS; i++)
+ Main.wm.removeKeybinding(key + (i + 1));
+ }, this);
+
+ this._hotKeysEnabled = false;
+ }
+
+ _optionalNumberOverlay() {
+ let settings = DockManager.settings;
+ this._shortcutIsSet = false;
+ // Enable extra shortcut if either 'overlay' or 'show-dock' are true
+ if (settings.get_boolean('hot-keys') &&
+ (settings.get_boolean('hotkeys-overlay') || settings.get_boolean('hotkeys-show-dock')))
+ this._enableExtraShortcut();
+
+ this._signalsHandler.add([
+ settings,
+ 'changed::hot-keys',
+ this._checkHotkeysOptions.bind(this)
+ ], [
+ settings,
+ 'changed::hotkeys-overlay',
+ this._checkHotkeysOptions.bind(this)
+ ], [
+ settings,
+ 'changed::hotkeys-show-dock',
+ this._checkHotkeysOptions.bind(this)
+ ]);
+ }
+
+ _checkHotkeysOptions() {
+ let settings = DockManager.settings;
+
+ if (settings.get_boolean('hot-keys') &&
+ (settings.get_boolean('hotkeys-overlay') || settings.get_boolean('hotkeys-show-dock')))
+ this._enableExtraShortcut();
+ else
+ this._disableExtraShortcut();
+ }
+
+ _enableExtraShortcut() {
+ if (!this._shortcutIsSet) {
+ Main.wm.addKeybinding('shortcut', DockManager.settings,
+ Meta.KeyBindingFlags.IGNORE_AUTOREPEAT,
+ Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW,
+ this._showOverlay.bind(this));
+ this._shortcutIsSet = true;
+ }
+ }
+
+ _disableExtraShortcut() {
+ if (this._shortcutIsSet) {
+ Main.wm.removeKeybinding('shortcut');
+ this._shortcutIsSet = false;
+ }
+ }
+
+ _showOverlay() {
+ for (let dock of DockManager.allDocks) {
+ if (DockManager.settings.get_boolean('hotkeys-overlay'))
+ dock.dash.toggleNumberOverlay(true);
+
+ // Restart the counting if the shortcut is pressed again
+ if (dock._numberOverlayTimeoutId) {
+ GLib.source_remove(dock._numberOverlayTimeoutId);
+ dock._numberOverlayTimeoutId = 0;
+ }
+
+ // Hide the overlay/dock after the timeout
+ let timeout = DockManager.settings.get_double('shortcut-timeout') * 1000;
+ dock._numberOverlayTimeoutId = GLib.timeout_add(
+ GLib.PRIORITY_DEFAULT, timeout, () => {
+ dock._numberOverlayTimeoutId = 0;
+ dock.dash.toggleNumberOverlay(false);
+ // Hide the dock again if necessary
+ dock._updateDashVisibility();
+ });
+
+ // Show the dock if it is hidden
+ if (DockManager.settings.get_boolean('hotkeys-show-dock')) {
+ let showDock = (dock._intellihideIsEnabled || dock._autohideIsEnabled);
+ if (showDock)
+ dock._show();
+ }
+ }
+ }
+};
+
+/**
+ * Isolate overview to open new windows for inactive apps
+ * Note: the future implementaion is not fully contained here. Some bits are around in other methods of other classes.
+ * This class just take care of enabling/disabling the option.
+ */
+var WorkspaceIsolation = class DashToDock_WorkspaceIsolation {
+
+ constructor() {
+
+ let settings = DockManager.settings;
+
+ this._signalsHandler = new Utils.GlobalSignalsHandler();
+ this._injectionsHandler = new Utils.InjectionsHandler();
+
+ this._signalsHandler.add([
+ settings,
+ 'changed::isolate-workspaces',
+ () => {
+ DockManager.allDocks.forEach((dock) =>
+ dock.dash.resetAppIcons());
+ if (settings.get_boolean('isolate-workspaces') ||
+ settings.get_boolean('isolate-monitors'))
+ this._enable.bind(this)();
+ else
+ this._disable.bind(this)();
+ }
+ ],[
+ settings,
+ 'changed::isolate-monitors',
+ () => {
+ DockManager.allDocks.forEach((dock) =>
+ dock.dash.resetAppIcons());
+ if (settings.get_boolean('isolate-workspaces') ||
+ settings.get_boolean('isolate-monitors'))
+ this._enable.bind(this)();
+ else
+ this._disable.bind(this)();
+ }
+ ]);
+
+ if (settings.get_boolean('isolate-workspaces') ||
+ settings.get_boolean('isolate-monitors'))
+ this._enable();
+
+ }
+
+ _enable() {
+
+ // ensure I never double-register/inject
+ // although it should never happen
+ this._disable();
+
+ DockManager.allDocks.forEach((dock) => {
+ this._signalsHandler.addWithLabel('isolation', [
+ global.display,
+ 'restacked',
+ dock.dash._queueRedisplay.bind(dock.dash)
+ ], [
+ global.window_manager,
+ 'switch-workspace',
+ dock.dash._queueRedisplay.bind(dock.dash)
+ ]);
+
+ // This last signal is only needed for monitor isolation, as windows
+ // might migrate from one monitor to another without triggering 'restacked'
+ if (DockManager.settings.get_boolean('isolate-monitors'))
+ this._signalsHandler.addWithLabel('isolation', [
+ global.display,
+ 'window-entered-monitor',
+ dock.dash._queueRedisplay.bind(dock.dash)
+ ]);
+
+ }, this);
+
+ // here this is the Shell.App
+ function IsolatedOverview() {
+ // These lines take care of Nautilus for icons on Desktop
+ let windows = this.get_windows().filter(function(w) {
+ return w.get_workspace().index() == global.workspace_manager.get_active_workspace_index();
+ });
+ if (windows.length == 1)
+ if (windows[0].skip_taskbar)
+ return this.open_new_window(-1);
+
+ if (this.is_on_workspace(global.workspace_manager.get_active_workspace()))
+ return Main.activateWindow(windows[0]);
+ return this.open_new_window(-1);
+ }
+
+ this._injectionsHandler.addWithLabel('isolation', [
+ Shell.App.prototype,
+ 'activate',
+ IsolatedOverview
+ ]);
+ }
+
+ _disable () {
+ this._signalsHandler.removeWithLabel('isolation');
+ this._injectionsHandler.removeWithLabel('isolation');
+ }
+
+ destroy() {
+ this._signalsHandler.destroy();
+ this._injectionsHandler.destroy();
+ }
+};
+
+
+var DockManager = class DashToDock_DockManager {
+
+ constructor() {
+ if (Me.imports.extension.dockManager)
+ throw new Error('DashToDock has been already initialized');
+
+ Me.imports.extension.dockManager = this;
+
+ this._remoteModel = new LauncherAPI.LauncherEntryRemoteModel();
+ this._signalsHandler = new Utils.GlobalSignalsHandler();
+ this._settings = ExtensionUtils.getSettings('org.gnome.shell.extensions.dash-to-dock');
+ this._oldDash = Main.overview.isDummy ? null : Main.overview.dash;
+
+ this._ensureFileManagerClient();
+
+ /* Array of all the docks created */
+ this._allDocks = [];
+ this._createDocks();
+
+ // status variable: true when the overview is shown through the dash
+ // applications button.
+ this._forcedOverview = false;
+
+ // Connect relevant signals to the toggling function
+ this._bindSettingsChanges();
+ }
+
+ static getDefault() {
+ return Me.imports.extension.dockManager
+ }
+
+ static get allDocks() {
+ return DockManager.getDefault()._allDocks;
+ }
+
+ static get settings() {
+ return DockManager.getDefault()._settings;
+ }
+
+ get fm1Client() {
+ return this._fm1Client;
+ }
+
+ get mainDock() {
+ return this._allDocks.length ? this._allDocks[0] : null;
+ }
+
+ _ensureFileManagerClient() {
+ let supportsLocations = ['show-trash', 'show-mounts'].some((s) => {
+ return this._settings.get_boolean(s);
+ });
+
+ if (supportsLocations) {
+ if (!this._fm1Client)
+ this._fm1Client = new FileManager1API.FileManager1Client();
+ } else if (this._fm1Client) {
+ this._fm1Client.destroy();
+ this._fm1Client = null;
+ }
+ }
+
+ _toggle() {
+ if (this._toggleLater)
+ Meta.later_remove(this._toggleLater);
+
+ this._toggleLater = Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => {
+ delete this._toggleLater;
+ this._restoreDash();
+ this._deleteDocks();
+ this._createDocks();
+ this.emit('toggled');
+ });
+ }
+
+ _bindSettingsChanges() {
+ // Connect relevant signals to the toggling function
+ this._signalsHandler.add([
+ Meta.MonitorManager.get(),
+ 'monitors-changed',
+ this._toggle.bind(this)
+ ], [
+ Main.sessionMode,
+ 'updated',
+ this._toggle.bind(this)
+ ], [
+ this._settings,
+ 'changed::multi-monitor',
+ this._toggle.bind(this)
+ ], [
+ this._settings,
+ 'changed::preferred-monitor',
+ this._toggle.bind(this)
+ ], [
+ this._settings,
+ 'changed::dock-position',
+ this._toggle.bind(this)
+ ], [
+ this._settings,
+ 'changed::extend-height',
+ this._adjustPanelCorners.bind(this)
+ ], [
+ this._settings,
+ 'changed::dock-fixed',
+ this._adjustPanelCorners.bind(this)
+ ], [
+ this._settings,
+ 'changed::show-trash',
+ () => this._ensureFileManagerClient()
+ ], [
+ this._settings,
+ 'changed::show-mounts',
+ () => this._ensureFileManagerClient()
+ ]);
+ }
+
+ _createDocks() {
+
+ // If there are no monitors (headless configurations, but it can also happen temporary while disconnecting
+ // and reconnecting monitors), just do nothing. When a monitor will be connected we we'll be notified and
+ // and thus create the docks. This prevents pointing trying to access monitors throughout the code, were we
+ // are assuming that at least the primary monitor is present.
+ if (Main.layoutManager.monitors.length <= 0) {
+ return;
+ }
+
+ this._preferredMonitorIndex = this._settings.get_int('preferred-monitor');
+ // In case of multi-monitor, we consider the dock on the primary monitor to be the preferred (main) one
+ // regardless of the settings
+ // The dock goes on the primary monitor also if the settings are incosistent (e.g. desired monitor not connected).
+ if (this._settings.get_boolean('multi-monitor') ||
+ this._preferredMonitorIndex < 0 || this._preferredMonitorIndex > Main.layoutManager.monitors.length - 1
+ ) {
+ this._preferredMonitorIndex = Main.layoutManager.primaryIndex;
+ } else {
+ // Gdk and shell monitors numbering differ at least under wayland:
+ // While the primary monitor appears to be always index 0 in Gdk,
+ // the shell can assign a different number (Main.layoutManager.primaryMonitor)
+ // This ensure the indexing in the settings (Gdk) and in the shell are matched,
+ // i.e. that we start counting from the primaryMonitorIndex
+ this._preferredMonitorIndex = (Main.layoutManager.primaryIndex + this._preferredMonitorIndex) % Main.layoutManager.monitors.length ;
+ }
+
+ // First we create the main Dock, to get the extra features to bind to this one
+ let dock = new DockedDash(this._remoteModel, this._preferredMonitorIndex);
+ this._allDocks.push(dock);
+
+ // connect app icon into the view selector
+ dock.dash.showAppsButton.connect('notify::checked', this._onShowAppsButtonToggled.bind(this));
+
+ // Make the necessary changes to Main.overview.dash
+ this._prepareMainDash();
+
+ // Adjust corners if necessary
+ this._adjustPanelCorners();
+
+ if (this._settings.get_boolean('multi-monitor')) {
+ let nMon = Main.layoutManager.monitors.length;
+ for (let iMon = 0; iMon < nMon; iMon++) {
+ if (iMon == this._preferredMonitorIndex)
+ continue;
+ let dock = new DockedDash(this._remoteModel, iMon);
+ this._allDocks.push(dock);
+ // connect app icon into the view selector
+ dock.dash.showAppsButton.connect('notify::checked', this._onShowAppsButtonToggled.bind(this));
+ }
+ }
+
+ // Load optional features. We load *after* the docks are created, since
+ // we need to connect the signals to all dock instances.
+ this._workspaceIsolation = new WorkspaceIsolation();
+ this._keyboardShortcuts = new KeyboardShortcuts();
+ }
+
+ _prepareMainDash() {
+ // Ensure Main.overview.dash is set to our dash in dummy mode
+ // while just use the default getter otherwise.
+ // The getter must be dynamic and not set only when we've a dummy
+ // overview because the mode can change dynamically.
+ let defaultDashGetter = Object.getOwnPropertyDescriptor(
+ Main.overview.constructor.prototype, 'dash').get;
+ Object.defineProperty(Main.overview, 'dash', {
+ configurable: true,
+ get: () => Main.overview.isDummy ?
+ this.mainDock.dash : defaultDashGetter.call(Main.overview),
+ });
+
+ if (Main.overview.isDummy)
+ return;
+
+ this._signalsHandler.removeWithLabel('old-dash-changes');
+
+ // Hide usual Dash
+ this._oldDash.hide();
+
+ // Also set dash 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)
+ this._oldDash.set_height(1);
+
+ this._signalsHandler.addWithLabel('old-dash-changes', [
+ this._oldDash,
+ 'notify::visible',
+ () => this._prepareMainDash()
+ ], [
+ this._oldDash,
+ 'notify::width',
+ () => this._prepareMainDash()
+ ]);
+
+ // Pretend I'm the dash: meant to make appgrid swarm animation come from
+ // the right position of the appShowButton.
+ let overviewControls = Main.overview._overview._controls;
+ overviewControls.dash = this.mainDock.dash;
+ overviewControls._searchController._showAppsButton = this.mainDock.dash.showAppsButton;
+
+ if (this.mainDock.dash._isHorizontal) {
+ overviewControls._dashSpacer = this.mainDock._dashSpacer;
+ Main.overview._overview._controls.add_child(this.mainDock._dashSpacer);
+ Main.overview._overview._controls.layout_manager._dash = this.mainDock._dashSpacer;
+ }
+ }
+
+ _deleteDocks() {
+ if (!this._allDocks.length)
+ return;
+
+ // Remove extra features
+ this._workspaceIsolation.destroy();
+ this._keyboardShortcuts.destroy();
+
+ // Delete all docks
+ this._allDocks.forEach(d => d.destroy());
+ this._allDocks = [];
+ }
+
+ _restoreDash() {
+ Object.defineProperty(Main.overview, 'dash',
+ Object.getOwnPropertyDescriptor(
+ Main.overview.constructor.prototype, 'dash'));
+
+ if (!this._oldDash)
+ return;
+
+ this._signalsHandler.removeWithLabel('old-dash-changes');
+
+ let overviewControls = Main.overview._overview._controls;
+ Main.overview._overview._controls.layout_manager._dash = this._oldDash;
+ if (this.mainDock._dashSpacer) {
+ Main.overview._overview._controls.remove_child(this.mainDock._dashSpacer);
+ }
+
+ overviewControls.dash = this._oldDash;
+ overviewControls._searchController._showAppsButton = this._oldDash.showAppsButton;
+ Main.overview.dash.show();
+ Main.overview.dash.set_height(-1); // reset default dash size
+ // This force the recalculation of the icon size
+ Main.overview.dash._maxHeight = -1;
+ }
+
+ get searchController() {
+ return Main.overview._overview.controls._searchController;
+ }
+
+ _onShowAppsButtonToggled(button) {
+ const checked = button.checked;
+ const overviewControls = Main.overview._overview.controls;
+
+ if (!Main.overview.visible) {
+ this.mainDock.dash.showAppsButton._fromDesktop = true;
+ Main.overview.show(OverviewControls.ControlsState.APP_GRID);
+ } else {
+ if (!checked && this.mainDock.dash.showAppsButton._fromDesktop) {
+ Main.overview.hide();
+ this.mainDock.dash.showAppsButton._fromDesktop = false;
+ } else {
+ // TODO: I'm not sure how reliable this is, we might need to move the
+ // _onShowAppsButtonToggled logic into the extension.
+ if (!checked) {
+ this.mainDock.dash.showAppsButton._fromDesktop = false;
+ }
+
+ // Instead of "syncing" the stock button, let's call its callback directly.
+ overviewControls._onShowAppsButtonToggled.call(overviewControls);
+ }
+ }
+
+ // Because we "disconnected" from the search controller, we have to manage its state.
+ this.searchController._setSearchActive(false);
+ }
+
+ destroy() {
+ this._signalsHandler.destroy();
+ if (this._toggleLater) {
+ Meta.later_remove(this._toggleLater);
+ delete this._toggleLater;
+ }
+ this._restoreDash();
+ this._deleteDocks();
+ this._revertPanelCorners();
+ if (this._oldSelectorMargin)
+ Main.overview._overview.controls._searchController.margin_bottom = this._oldSelectorMargin;
+ if (this._fm1Client) {
+ this._fm1Client.destroy();
+ this._fm1Client = null;
+ }
+ this._remoteModel.destroy();
+ this._settings.run_dispose();
+ this._settings = null;
+ this._oldDash = null;
+
+ Me.imports.extension.dockManager = null;
+ }
+
+ /**
+ * Adjust Panel corners
+ */
+ _adjustPanelCorners() {
+ let position = Utils.getPosition();
+ let isHorizontal = ((position == St.Side.TOP) || (position == St.Side.BOTTOM));
+ let extendHeight = this._settings.get_boolean('extend-height');
+ let fixedIsEnabled = this._settings.get_boolean('dock-fixed');
+ let dockOnPrimary = this._settings.get_boolean('multi-monitor') ||
+ this._preferredMonitorIndex == Main.layoutManager.primaryIndex;
+
+ if (!isHorizontal && dockOnPrimary && extendHeight && fixedIsEnabled) {
+ Main.panel._rightCorner.hide();
+ Main.panel._leftCorner.hide();
+ }
+ else
+ this._revertPanelCorners();
+ }
+
+ _revertPanelCorners() {
+ Main.panel._leftCorner.show();
+ Main.panel._rightCorner.show();
+ }
+};
+Signals.addSignalMethods(DockManager.prototype);
+
+// This class drives long-running icon animations, to keep them running in sync
+// with each other, and to save CPU by pausing them when the dock is hidden.
+var IconAnimator = class DashToDock_IconAnimator {
+ constructor(actor) {
+ this._count = 0;
+ this._started = false;
+ this._animations = {
+ dance: [],
+ };
+ this._timeline = new Clutter.Timeline({
+ duration: 3000,
+ repeat_count: -1,
+ 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() {
+ this._timeline.stop();
+ this._timeline = null;
+ for (const 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() {
+ if (this._started && this._count > 0) {
+ this._timeline.stop();
+ }
+ this._started = false;
+ }
+
+ start() {
+ if (!this._started && this._count > 0) {
+ this._timeline.start();
+ }
+ this._started = true;
+ }
+
+ addAnimation(target, name) {
+ const targetDestroyId = target.connect('destroy', () => this.removeAnimation(target, name));
+ this._animations[name].push({ target, targetDestroyId });
+ if (this._started && this._count === 0) {
+ this._timeline.start();
+ }
+ this._count++;
+ }
+
+ removeAnimation(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;
+ }
+ }
+ }
+};
diff --git a/extensions/dash-to-dock/extension.js b/extensions/dash-to-dock/extension.js
new file mode 100644
index 00000000..4b43d773
--- /dev/null
+++ b/extensions/dash-to-dock/extension.js
@@ -0,0 +1,21 @@
+// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
+
+const ExtensionUtils = imports.misc.extensionUtils;
+const Me = ExtensionUtils.getCurrentExtension();
+const Docking = Me.imports.docking;
+
+// We declare this with var so it can be accessed by other extensions in
+// GNOME Shell 3.26+ (mozjs52+).
+var dockManager;
+
+function init() {
+ ExtensionUtils.initTranslations('gnome-shell-extensions');
+}
+
+function enable() {
+ new Docking.DockManager();
+}
+
+function disable() {
+ dockManager.destroy();
+}
diff --git a/extensions/dash-to-dock/fileManager1API.js b/extensions/dash-to-dock/fileManager1API.js
new file mode 100644
index 00000000..64ec6219
--- /dev/null
+++ b/extensions/dash-to-dock/fileManager1API.js
@@ -0,0 +1,226 @@
+// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
+
+const Gio = imports.gi.Gio;
+const Signals = imports.signals;
+
+const Me = imports.misc.extensionUtils.getCurrentExtension();
+const Utils = Me.imports.utils;
+
+const FileManager1Iface = '<node><interface name="org.freedesktop.FileManager1">\
+ <property name="XUbuntuOpenLocationsXids" type="a{uas}" access="read"/>\
+ <property name="OpenWindowsWithLocations" type="a{sas}" access="read"/>\
+ </interface></node>';
+
+const FileManager1Proxy = Gio.DBusProxy.makeProxyWrapper(FileManager1Iface);
+
+/**
+ * This class implements a client for the org.freedesktop.FileManager1 dbus
+ * interface, and specifically for the OpenWindowsWithLocations property
+ * which is published by Nautilus, but is not an official part of the interface.
+ *
+ * The property is a map from window identifiers to a list of locations open in
+ * the window.
+ *
+ * While OpeWindowsWithLocations is part of upstream Nautilus, for many years
+ * prior, Ubuntu patched Nautilus to publish XUbuntuOpenLocationsXids, which is
+ * similar but uses Xids as the window identifiers instead of gtk window paths.
+ *
+ * When an old or unpatched Nautilus is running, we will observe the properties
+ * to always be empty arrays, but there will not be any correctness issues.
+ */
+var FileManager1Client = class DashToDock_FileManager1Client {
+
+ constructor() {
+ this._signalsHandler = new Utils.GlobalSignalsHandler();
+ this._cancellable = new Gio.Cancellable();
+
+ this._locationMap = new Map();
+ this._proxy = new FileManager1Proxy(Gio.DBus.session,
+ "org.freedesktop.FileManager1",
+ "/org/freedesktop/FileManager1",
+ (initable, error) => {
+ // Use async construction to avoid blocking on errors.
+ if (error) {
+ if (!error.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
+ global.log(error);
+ } else {
+ this._updateLocationMap();
+ }
+ }, this._cancellable);
+
+ this._signalsHandler.add([
+ this._proxy,
+ 'g-properties-changed',
+ this._onPropertyChanged.bind(this)
+ ], [
+ // We must additionally listen for Screen events to know when to
+ // rebuild our location map when the set of available windows changes.
+ global.workspace_manager,
+ 'workspace-switched',
+ this._updateLocationMap.bind(this)
+ ], [
+ global.display,
+ 'window-entered-monitor',
+ this._updateLocationMap.bind(this)
+ ], [
+ global.display,
+ 'window-left-monitor',
+ this._updateLocationMap.bind(this)
+ ]);
+ }
+
+ destroy() {
+ this._cancellable.cancel();
+ this._signalsHandler.destroy();
+ this._proxy.run_dispose();
+ }
+
+ /**
+ * Return an array of windows that are showing a location or
+ * sub-directories of that location.
+ */
+ getWindows(location) {
+ let ret = new Set();
+ let locationEsc = location;
+
+ if (!location.endsWith('/')) {
+ locationEsc += '/';
+ }
+
+ for (let [k,v] of this._locationMap) {
+ if ((k + '/').startsWith(locationEsc)) {
+ for (let l of v) {
+ ret.add(l);
+ }
+ }
+ }
+ return Array.from(ret);
+ }
+
+ _onPropertyChanged(proxy, changed, invalidated) {
+ let property = changed.unpack();
+ if (property &&
+ ('XUbuntuOpenLocationsXids' in property ||
+ 'OpenWindowsWithLocations' in property)) {
+ this._updateLocationMap();
+ }
+ }
+
+ _updateLocationMap() {
+ let properties = this._proxy.get_cached_property_names();
+ if (properties == null) {
+ // Nothing to check yet.
+ return;
+ }
+
+ if (properties.includes('OpenWindowsWithLocations')) {
+ this._updateFromPaths();
+ } else if (properties.includes('XUbuntuOpenLocationsXids')) {
+ this._updateFromXids();
+ }
+ }
+
+ _updateFromPaths() {
+ let pathToLocations = this._proxy.OpenWindowsWithLocations;
+ let pathToWindow = getPathToWindow();
+
+ let locationToWindow = new Map();
+ for (let path in pathToLocations) {
+ let locations = pathToLocations[path];
+ for (let i = 0; i < locations.length; i++) {
+ let l = locations[i];
+ // Use a set to deduplicate when a window has a
+ // location open in multiple tabs.
+ if (!locationToWindow.has(l)) {
+ locationToWindow.set(l, new Set());
+ }
+ let window = pathToWindow.get(path);
+ if (window != null) {
+ locationToWindow.get(l).add(window);
+ }
+ }
+ }
+ this._locationMap = locationToWindow;
+ this.emit('windows-changed');
+ }
+
+ _updateFromXids() {
+ let xidToLocations = this._proxy.XUbuntuOpenLocationsXids;
+ let xidToWindow = getXidToWindow();
+
+ let locationToWindow = new Map();
+ for (let xid in xidToLocations) {
+ let locations = xidToLocations[xid];
+ for (let i = 0; i < locations.length; i++) {
+ let l = locations[i];
+ // Use a set to deduplicate when a window has a
+ // location open in multiple tabs.
+ if (!locationToWindow.has(l)) {
+ locationToWindow.set(l, new Set());
+ }
+ let window = xidToWindow.get(parseInt(xid));
+ if (window != null) {
+ locationToWindow.get(l).add(window);
+ }
+ }
+ }
+ this._locationMap = locationToWindow;
+ this.emit('windows-changed');
+ }
+}
+Signals.addSignalMethods(FileManager1Client.prototype);
+
+/**
+ * Construct a map of gtk application window object paths to MetaWindows.
+ */
+function getPathToWindow() {
+ let pathToWindow = new Map();
+
+ for (let i = 0; i < global.workspace_manager.n_workspaces; i++) {
+ let ws = global.workspace_manager.get_workspace_by_index(i);
+ ws.list_windows().map(function(w) {
+ let path = w.get_gtk_window_object_path();
+ if (path != null) {
+ pathToWindow.set(path, w);
+ }
+ });
+ }
+ return pathToWindow;
+}
+
+/**
+ * Construct a map of XIDs to MetaWindows.
+ *
+ * This is somewhat annoying as you cannot lookup a window by
+ * XID in any way, and must iterate through all of them looking
+ * for a match.
+ */
+function getXidToWindow() {
+ let xidToWindow = new Map();
+
+ for (let i = 0; i < global.workspace_manager.n_workspaces; i++) {
+ let ws = global.workspace_manager.get_workspace_by_index(i);
+ ws.list_windows().map(function(w) {
+ let xid = guessWindowXID(w);
+ if (xid != null) {
+ xidToWindow.set(parseInt(xid), w);
+ }
+ });
+ }
+ return xidToWindow;
+}
+
+/**
+ * Guesses the X ID of a window.
+ *
+ * This is the basic implementation that is sufficient for Nautilus
+ * windows. The pixel-saver extension has a much more complex
+ * implementation if we ever need it.
+ */
+function guessWindowXID(win) {
+ try {
+ return win.get_description().match(/0x[0-9a-f]+/)[0];
+ } catch (err) {
+ return null;
+ }
+}
diff --git a/extensions/dash-to-dock/intellihide.js b/extensions/dash-to-dock/intellihide.js
new file mode 100644
index 00000000..9c10938e
--- /dev/null
+++ b/extensions/dash-to-dock/intellihide.js
@@ -0,0 +1,321 @@
+// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
+
+const GLib = imports.gi.GLib;
+const Meta = imports.gi.Meta;
+const Shell = imports.gi.Shell;
+
+const Main = imports.ui.main;
+const Signals = imports.signals;
+
+const Me = imports.misc.extensionUtils.getCurrentExtension();
+const Docking = Me.imports.docking;
+const Utils = Me.imports.utils;
+
+// A good compromise between reactivity and efficiency; to be tuned.
+const INTELLIHIDE_CHECK_INTERVAL = 100;
+
+const OverlapStatus = {
+ UNDEFINED: -1,
+ FALSE: 0,
+ TRUE: 1
+};
+
+const IntellihideMode = {
+ ALL_WINDOWS: 0,
+ FOCUS_APPLICATION_WINDOWS: 1,
+ MAXIMIZED_WINDOWS : 2
+};
+
+// List of windows type taken into account. Order is important (keep the original
+// enum order).
+const handledWindowTypes = [
+ Meta.WindowType.NORMAL,
+ Meta.WindowType.DOCK,
+ Meta.WindowType.DIALOG,
+ Meta.WindowType.MODAL_DIALOG,
+ Meta.WindowType.TOOLBAR,
+ Meta.WindowType.MENU,
+ Meta.WindowType.UTILITY,
+ Meta.WindowType.SPLASHSCREEN
+];
+
+/**
+ * A rough and ugly implementation of the intellihide behaviour.
+ * Intallihide object: emit 'status-changed' signal when the overlap of windows
+ * with the provided targetBoxClutter.ActorBox changes;
+ */
+var Intellihide = class DashToDock_Intellihide {
+
+ constructor(monitorIndex) {
+ // Load settings
+ this._monitorIndex = monitorIndex;
+
+ this._signalsHandler = new Utils.GlobalSignalsHandler();
+ this._tracker = Shell.WindowTracker.get_default();
+ this._focusApp = null; // The application whose window is focused.
+ this._topApp = null; // The application whose window is on top on the monitor with the dock.
+
+ this._isEnabled = false;
+ this.status = OverlapStatus.UNDEFINED;
+ this._targetBox = null;
+
+ this._checkOverlapTimeoutContinue = false;
+ this._checkOverlapTimeoutId = 0;
+
+ this._trackedWindows = new Map();
+
+ // Connect global signals
+ this._signalsHandler.add([
+ // Add signals on windows created from now on
+ global.display,
+ 'window-created',
+ this._windowCreated.bind(this)
+ ], [
+ // triggered for instance when the window list order changes,
+ // included when the workspace is switched
+ global.display,
+ 'restacked',
+ this._checkOverlap.bind(this)
+ ], [
+ // when windows are alwasy on top, the focus window can change
+ // without the windows being restacked. Thus monitor window focus change.
+ this._tracker,
+ 'notify::focus-app',
+ this._checkOverlap.bind(this)
+ ], [
+ // update wne monitor changes, for instance in multimonitor when monitor are attached
+ Meta.MonitorManager.get(),
+ 'monitors-changed',
+ this._checkOverlap.bind(this)
+ ]);
+ }
+
+ destroy() {
+ // Disconnect global signals
+ this._signalsHandler.destroy();
+
+ // Remove residual windows signals
+ this.disable();
+ }
+
+ enable() {
+ this._isEnabled = true;
+ this._status = OverlapStatus.UNDEFINED;
+ global.get_window_actors().forEach(function(wa) {
+ this._addWindowSignals(wa);
+ }, this);
+ this._doCheckOverlap();
+ }
+
+ disable() {
+ this._isEnabled = false;
+
+ for (let wa of this._trackedWindows.keys()) {
+ this._removeWindowSignals(wa);
+ }
+ this._trackedWindows.clear();
+
+ if (this._checkOverlapTimeoutId > 0) {
+ GLib.source_remove(this._checkOverlapTimeoutId);
+ this._checkOverlapTimeoutId = 0;
+ }
+ }
+
+ _windowCreated(display, metaWindow) {
+ this._addWindowSignals(metaWindow.get_compositor_private());
+ }
+
+ _addWindowSignals(wa) {
+ if (!this._handledWindow(wa))
+ return;
+ let signalId = wa.connect('notify::allocation', this._checkOverlap.bind(this));
+ this._trackedWindows.set(wa, signalId);
+ wa.connect('destroy', this._removeWindowSignals.bind(this));
+ }
+
+ _removeWindowSignals(wa) {
+ if (this._trackedWindows.get(wa)) {
+ wa.disconnect(this._trackedWindows.get(wa));
+ this._trackedWindows.delete(wa);
+ }
+
+ }
+
+ updateTargetBox(box) {
+ this._targetBox = box;
+ this._checkOverlap();
+ }
+
+ forceUpdate() {
+ this._status = OverlapStatus.UNDEFINED;
+ this._doCheckOverlap();
+ }
+
+ getOverlapStatus() {
+ return (this._status == OverlapStatus.TRUE);
+ }
+
+ _checkOverlap() {
+ if (!this._isEnabled || (this._targetBox == null))
+ return;
+
+ /* Limit the number of calls to the doCheckOverlap function */
+ if (this._checkOverlapTimeoutId) {
+ this._checkOverlapTimeoutContinue = true;
+ return
+ }
+
+ this._doCheckOverlap();
+
+ this._checkOverlapTimeoutId = GLib.timeout_add(
+ GLib.PRIORITY_DEFAULT, INTELLIHIDE_CHECK_INTERVAL, () => {
+ this._doCheckOverlap();
+ if (this._checkOverlapTimeoutContinue) {
+ this._checkOverlapTimeoutContinue = false;
+ return GLib.SOURCE_CONTINUE;
+ } else {
+ this._checkOverlapTimeoutId = 0;
+ return GLib.SOURCE_REMOVE;
+ }
+ });
+ }
+
+ _doCheckOverlap() {
+
+ if (!this._isEnabled || (this._targetBox == null))
+ return;
+
+ let overlaps = OverlapStatus.FALSE;
+ let windows = global.get_window_actors();
+
+ if (windows.length > 0) {
+ /*
+ * Get the top window on the monitor where the dock is placed.
+ * The idea is that we dont want to overlap with the windows of the topmost application,
+ * event is it's not the focused app -- for instance because in multimonitor the user
+ * select a window in the secondary monitor.
+ */
+
+ let topWindow = null;
+ for (let i = windows.length - 1; i >= 0; i--) {
+ let meta_win = windows[i].get_meta_window();
+ if (this._handledWindow(windows[i]) && (meta_win.get_monitor() == this._monitorIndex)) {
+ topWindow = meta_win;
+ break;
+ }
+ }
+
+ if (topWindow !== null) {
+ this._topApp = this._tracker.get_window_app(topWindow);
+ // If there isn't a focused app, use that of the window on top
+ this._focusApp = this._tracker.focus_app || this._topApp
+
+ windows = windows.filter(this._intellihideFilterInteresting, this);
+
+ for (let i = 0; i < windows.length; i++) {
+ let win = windows[i].get_meta_window();
+
+ if (win) {
+ let rect = win.get_frame_rect();
+
+ let test = (rect.x < this._targetBox.x2) &&
+ (rect.x + rect.width > this._targetBox.x1) &&
+ (rect.y < this._targetBox.y2) &&
+ (rect.y + rect.height > this._targetBox.y1);
+
+ if (test) {
+ overlaps = OverlapStatus.TRUE;
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ if (this._status !== overlaps) {
+ this._status = overlaps;
+ this.emit('status-changed', this._status);
+ }
+
+ }
+
+ // Filter interesting windows to be considered for intellihide.
+ // Consider all windows visible on the current workspace.
+ // Optionally skip windows of other applications
+ _intellihideFilterInteresting(wa) {
+ let meta_win = wa.get_meta_window();
+ if (!this._handledWindow(wa))
+ return false;
+
+ let currentWorkspace = global.workspace_manager.get_active_workspace_index();
+ let wksp = meta_win.get_workspace();
+ let wksp_index = wksp.index();
+
+ // Depending on the intellihide mode, exclude non-relevent windows
+ switch (Docking.DockManager.settings.get_enum('intellihide-mode')) {
+ case IntellihideMode.ALL_WINDOWS:
+ // Do nothing
+ break;
+
+ case IntellihideMode.FOCUS_APPLICATION_WINDOWS:
+ // Skip windows of other apps
+ if (this._focusApp) {
+ // The DropDownTerminal extension is not an application per se
+ // so we match its window by wm class instead
+ if (meta_win.get_wm_class() == 'DropDownTerminalWindow')
+ return true;
+
+ let currentApp = this._tracker.get_window_app(meta_win);
+ let focusWindow = global.display.get_focus_window()
+
+ // Consider half maximized windows side by side
+ // and windows which are alwayson top
+ if((currentApp != this._focusApp) && (currentApp != this._topApp)
+ && !((focusWindow && focusWindow.maximized_vertically && !focusWindow.maximized_horizontally)
+ && (meta_win.maximized_vertically && !meta_win.maximized_horizontally)
+ && meta_win.get_monitor() == focusWindow.get_monitor())
+ && !meta_win.is_above())
+ return false;
+ }
+ break;
+
+ case IntellihideMode.MAXIMIZED_WINDOWS:
+ // Skip unmaximized windows
+ if (!meta_win.maximized_vertically && !meta_win.maximized_horizontally)
+ return false;
+ break;
+ }
+
+ if ( wksp_index == currentWorkspace && meta_win.showing_on_its_workspace() )
+ return true;
+ else
+ return false;
+
+ }
+
+ // Filter windows by type
+ // inspired by Opacify@gnome-shell.localdomain.pl
+ _handledWindow(wa) {
+ let metaWindow = wa.get_meta_window();
+
+ if (!metaWindow)
+ return false;
+
+ // The DropDownTerminal extension uses the POPUP_MENU window type hint
+ // so we match its window by wm class instead
+ if (metaWindow.get_wm_class() == 'DropDownTerminalWindow')
+ return true;
+
+ let wtype = metaWindow.get_window_type();
+ for (let i = 0; i < handledWindowTypes.length; i++) {
+ var hwtype = handledWindowTypes[i];
+ if (hwtype == wtype)
+ return true;
+ else if (hwtype > wtype)
+ return false;
+ }
+ return false;
+ }
+};
+
+Signals.addSignalMethods(Intellihide.prototype);
diff --git a/extensions/dash-to-dock/launcherAPI.js b/extensions/dash-to-dock/launcherAPI.js
new file mode 100644
index 00000000..55f44f7a
--- /dev/null
+++ b/extensions/dash-to-dock/launcherAPI.js
@@ -0,0 +1,281 @@
+// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
+
+const Gio = imports.gi.Gio;
+
+const Me = imports.misc.extensionUtils.getCurrentExtension();
+const DbusmenuUtils = Me.imports.dbusmenuUtils;
+
+const Dbusmenu = DbusmenuUtils.haveDBusMenu();
+
+var LauncherEntryRemoteModel = class DashToDock_LauncherEntryRemoteModel {
+
+ constructor() {
+ this._entrySourceStacks = new Map();
+ this._remoteMaps = new Map();
+
+ this._launcher_entry_dbus_signal_id =
+ Gio.DBus.session.signal_subscribe(null, // sender
+ 'com.canonical.Unity.LauncherEntry', // iface
+ 'Update', // member
+ null, // path
+ null, // arg0
+ Gio.DBusSignalFlags.NONE,
+ (connection, sender_name, object_path, interface_name, signal_name, parameters) =>
+ this._onUpdate(sender_name, ...parameters.deep_unpack()));
+
+ 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,
+ (connection, sender_name, object_path, interface_name, signal_name, parameters) =>
+ this._onDBusNameChange(...parameters.deep_unpack().slice(1)));
+
+ this._acquireUnityDBus();
+ }
+
+ destroy() {
+ 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();
+ }
+
+ _lookupStackById(appId) {
+ let sourceStack = this._entrySourceStacks.get(appId);
+ if (!sourceStack) {
+ this._entrySourceStacks.set(appId, sourceStack = new PropertySourceStack(new LauncherEntry(), launcherEntryDefaults));
+ }
+ return sourceStack;
+ }
+
+ lookupById(appId) {
+ return this._lookupStackById(appId).target;
+ }
+
+ _acquireUnityDBus() {
+ if (!this._unity_bus_id) {
+ this._unity_bus_id = Gio.DBus.session.own_name('com.canonical.Unity',
+ Gio.BusNameOwnerFlags.ALLOW_REPLACEMENT | Gio.BusNameOwnerFlags.REPLACE,
+ null, () => this._unity_bus_id = 0);
+ }
+ }
+
+ _releaseUnityDBus() {
+ if (this._unity_bus_id) {
+ Gio.DBus.session.unown_name(this._unity_bus_id);
+ this._unity_bus_id = 0;
+ }
+ }
+
+ _onDBusNameChange(before, after) {
+ if (!before || !this._remoteMaps.size) {
+ return;
+ }
+ const remoteMap = this._remoteMaps.get(before);
+ if (!remoteMap) {
+ return;
+ }
+ this._remoteMaps.delete(before);
+ if (after && !this._remoteMaps.has(after)) {
+ this._remoteMaps.set(after, remoteMap);
+ } else {
+ for (const [appId, remote] of remoteMap) {
+ const sourceStack = this._entrySourceStacks.get(appId);
+ const changed = sourceStack.remove(remote);
+ if (changed) {
+ sourceStack.target._emitChangedEvents(changed);
+ }
+ }
+ }
+ }
+
+ _onUpdate(senderName, appUri, properties) {
+ if (!senderName) {
+ return;
+ }
+
+ const appId = appUri.replace(/(^\w+:|^)\/\//, '');
+ if (!appId) {
+ return;
+ }
+
+ let remoteMap = this._remoteMaps.get(senderName);
+ if (!remoteMap) {
+ this._remoteMaps.set(senderName, remoteMap = new Map());
+ }
+ let remote = remoteMap.get(appId);
+ if (!remote) {
+ remoteMap.set(appId, remote = Object.assign({}, launcherEntryDefaults));
+ }
+ for (const name in properties) {
+ if (name === 'quicklist' && Dbusmenu) {
+ const quicklistPath = properties[name].unpack();
+ if (quicklistPath && (!remote._quicklistMenuClient || remote._quicklistMenuClient.dbus_object !== quicklistPath)) {
+ remote.quicklist = null;
+ let menuClient = remote._quicklistMenuClient;
+ if (menuClient) {
+ menuClient.dbus_object = quicklistPath;
+ } else {
+ // This property should not be enumerable
+ Object.defineProperty(remote, '_quicklistMenuClient', {
+ writable: true,
+ value: menuClient = new Dbusmenu.Client({ dbus_name: senderName, dbus_object: quicklistPath }),
+ });
+ }
+ const handler = () => {
+ const root = menuClient.get_root();
+ if (remote.quicklist !== root) {
+ remote.quicklist = root;
+ if (sourceStack.isTop(remote)) {
+ sourceStack.target.quicklist = root;
+ sourceStack.target._emitChangedEvents(['quicklist']);
+ }
+ }
+ };
+ menuClient.connect(Dbusmenu.CLIENT_SIGNAL_ROOT_CHANGED, handler);
+ }
+ } else {
+ remote[name] = properties[name].unpack();
+ }
+ }
+
+ const sourceStack = this._lookupStackById(appId);
+ sourceStack.target._emitChangedEvents(sourceStack.update(remote));
+ }
+};
+
+const launcherEntryDefaults = {
+ count: 0,
+ progress: 0,
+ urgent: false,
+ quicklist: null,
+ 'count-visible': false,
+ 'progress-visible': false,
+};
+
+const LauncherEntry = class DashToDock_LauncherEntry {
+ constructor() {
+ this._connections = new Map();
+ this._handlers = new Map();
+ this._nextId = 0;
+ }
+
+ connect(eventNames, callback) {
+ if (typeof eventNames === 'string') {
+ eventNames = [eventNames];
+ }
+ callback(this, this);
+ const id = this._nextId++;
+ const handler = { id, callback };
+ eventNames.forEach(name => {
+ let handlerList = this._handlers.get(name);
+ if (!handlerList) {
+ this._handlers.set(name, handlerList = []);
+ }
+ handlerList.push(handler);
+ });
+ this._connections.set(id, eventNames);
+ return id;
+ }
+
+ disconnect(id) {
+ const eventNames = this._connections.get(id);
+ if (!eventNames) {
+ return;
+ }
+ this._connections.delete(id);
+ eventNames.forEach(name => {
+ const handlerList = this._handlers.get(name);
+ if (handlerList) {
+ for (let i = 0, iMax = handlerList.length; i < iMax; i++) {
+ if (handlerList[i].id === id) {
+ handlerList.splice(i, 1);
+ break;
+ }
+ }
+ }
+ });
+ }
+
+ _emitChangedEvents(propertyNames) {
+ const handlers = new Set();
+ propertyNames.forEach(name => {
+ const handlerList = this._handlers.get(name + '-changed');
+ if (handlerList) {
+ for (let i = 0, iMax = handlerList.length; i < iMax; i++) {
+ handlers.add(handlerList[i]);
+ }
+ }
+ });
+ Array.from(handlers).sort((x, y) => x.id - y.id).forEach(handler => handler.callback(this, this));
+ }
+}
+
+for (const name in launcherEntryDefaults) {
+ const jsName = name.replace(/-/g, '_');
+ LauncherEntry.prototype[jsName] = launcherEntryDefaults[name];
+ if (jsName !== name) {
+ Object.defineProperty(LauncherEntry.prototype, name, {
+ get() {
+ return this[jsName];
+ },
+ set(value) {
+ this[jsName] = value;
+ },
+ });
+ }
+}
+
+const PropertySourceStack = class DashToDock_PropertySourceStack {
+ constructor(target, bottom) {
+ this.target = target;
+ this._bottom = bottom;
+ this._stack = [];
+ }
+
+ isTop(source) {
+ return this._stack.length > 0 && this._stack[this._stack.length - 1] === source;
+ }
+
+ update(source) {
+ if (!this.isTop(source)) {
+ this.remove(source);
+ this._stack.push(source);
+ }
+ return this._assignFrom(source);
+ }
+
+ remove(source) {
+ const stack = this._stack;
+ const top = stack[stack.length - 1];
+ if (top === source) {
+ stack.length--;
+ return this._assignFrom(stack.length > 0 ? stack[stack.length - 1] : this._bottom);
+ }
+ for (let i = 0, iMax = stack.length; i < iMax; i++) {
+ if (stack[i] === source) {
+ stack.splice(i, 1);
+ break;
+ }
+ }
+ }
+
+ _assignFrom(source) {
+ const changedProperties = [];
+ for (const name in source) {
+ if (this.target[name] !== source[name]) {
+ this.target[name] = source[name];
+ changedProperties.push(name);
+ }
+ }
+ return changedProperties;
+ }
+}
diff --git a/extensions/dash-to-dock/locations.js b/extensions/dash-to-dock/locations.js
new file mode 100644
index 00000000..7636ff40
--- /dev/null
+++ b/extensions/dash-to-dock/locations.js
@@ -0,0 +1,293 @@
+// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
+
+const Gio = imports.gi.Gio;
+const GLib = imports.gi.GLib;
+const Gtk = imports.gi.Gtk;
+const Shell = imports.gi.Shell;
+const Signals = imports.signals;
+
+// Use __ () and N__() for the extension gettext domain, and reuse
+// the shell domain with the default _() and N_()
+const Gettext = imports.gettext.domain('gnome-shell-extensions');
+const __ = Gettext.gettext;
+const N__ = function(e) { return e };
+
+const Me = imports.misc.extensionUtils.getCurrentExtension();
+const Utils = Me.imports.utils;
+
+const UPDATE_TRASH_DELAY = 500;
+
+/**
+ * This class maintains a Shell.App representing the Trash and keeps it
+ * up-to-date as the trash fills and is emptied over time.
+ */
+var Trash = class DashToDock_Trash {
+
+ constructor() {
+ this._file = Gio.file_new_for_uri('trash://');
+ try {
+ this._monitor = this._file.monitor_directory(0, null);
+ this._signalId = this._monitor.connect(
+ 'changed',
+ this._onTrashChange.bind(this)
+ );
+ } catch (e) {
+ log(`Impossible to monitor trash: ${e}`)
+ }
+ this._lastEmpty = true;
+ this._empty = true;
+ this._schedUpdateId = 0;
+ this._updateTrash();
+ }
+
+ destroy() {
+ if (this._monitor) {
+ this._monitor.disconnect(this._signalId);
+ this._monitor.run_dispose();
+ }
+ this._file.run_dispose();
+ }
+
+ _onTrashChange() {
+ if (this._schedUpdateId) {
+ GLib.source_remove(this._schedUpdateId);
+ }
+ this._schedUpdateId = GLib.timeout_add(
+ GLib.PRIORITY_DEFAULT, UPDATE_TRASH_DELAY, () => {
+ this._schedUpdateId = 0;
+ this._updateTrash();
+ return GLib.SOURCE_REMOVE;
+ });
+ }
+
+ _updateTrash() {
+ try {
+ let children = this._file.enumerate_children('*', 0, null);
+ this._empty = children.next_file(null) == null;
+ children.close(null);
+ } catch (e) {
+ log(`Impossible to enumerate trash children: ${e}`)
+ return;
+ }
+
+ this._ensureApp();
+ }
+
+ _ensureApp() {
+ if (this._trashApp == null ||
+ this._lastEmpty != this._empty) {
+ let trashKeys = new GLib.KeyFile();
+ trashKeys.set_string('Desktop Entry', 'Name', __('Trash'));
+ trashKeys.set_string('Desktop Entry', 'Icon',
+ this._empty ? 'user-trash' : 'user-trash-full');
+ trashKeys.set_string('Desktop Entry', 'Type', 'Application');
+ trashKeys.set_string('Desktop Entry', 'Exec', 'gio open trash:///');
+ trashKeys.set_string('Desktop Entry', 'StartupNotify', 'false');
+ trashKeys.set_string('Desktop Entry', 'XdtdUri', 'trash:///');
+ if (!this._empty) {
+ trashKeys.set_string('Desktop Entry', 'Actions', 'empty-trash;');
+ trashKeys.set_string('Desktop Action empty-trash', 'Name', __('Empty Trash'));
+ trashKeys.set_string('Desktop Action empty-trash', 'Exec',
+ 'dbus-send --print-reply --dest=org.gnome.Nautilus /org/gnome/Nautilus org.gnome.Nautilus.FileOperations.EmptyTrash');
+ }
+
+ let trashAppInfo = Gio.DesktopAppInfo.new_from_keyfile(trashKeys);
+ this._trashApp = new Shell.App({appInfo: trashAppInfo});
+ this._lastEmpty = this._empty;
+
+ this.emit('changed');
+ }
+ }
+
+ getApp() {
+ this._ensureApp();
+ return this._trashApp;
+ }
+}
+Signals.addSignalMethods(Trash.prototype);
+
+/**
+ * This class maintains Shell.App representations for removable devices
+ * plugged into the system, and keeps the list of Apps up-to-date as
+ * devices come and go and are mounted and unmounted.
+ */
+var Removables = class DashToDock_Removables {
+
+ constructor() {
+ this._signalsHandler = new Utils.GlobalSignalsHandler();
+
+ this._monitor = Gio.VolumeMonitor.get();
+ this._volumeApps = []
+ this._mountApps = []
+
+ this._monitor.get_volumes().forEach(
+ (volume) => {
+ this._onVolumeAdded(this._monitor, volume);
+ }
+ );
+
+ this._monitor.get_mounts().forEach(
+ (mount) => {
+ this._onMountAdded(this._monitor, mount);
+ }
+ );
+
+ this._signalsHandler.add([
+ this._monitor,
+ 'mount-added',
+ this._onMountAdded.bind(this)
+ ], [
+ this._monitor,
+ 'mount-removed',
+ this._onMountRemoved.bind(this)
+ ], [
+ this._monitor,
+ 'volume-added',
+ this._onVolumeAdded.bind(this)
+ ], [
+ this._monitor,
+ 'volume-removed',
+ this._onVolumeRemoved.bind(this)
+ ]);
+ }
+
+ destroy() {
+ this._signalsHandler.destroy();
+ this._monitor.run_dispose();
+ }
+
+ _getWorkingIconName(icon) {
+ if (icon instanceof Gio.EmblemedIcon) {
+ icon = icon.get_icon();
+ }
+ if (icon instanceof Gio.ThemedIcon) {
+ let iconTheme = Gtk.IconTheme.get_default();
+ let names = icon.get_names();
+ for (let i = 0; i < names.length; i++) {
+ let iconName = names[i];
+ if (iconTheme.has_icon(iconName)) {
+ return iconName;
+ }
+ }
+ return '';
+ } else {
+ return icon.to_string();
+ }
+ }
+
+ _onVolumeAdded(monitor, volume) {
+ if (!volume.can_mount()) {
+ return;
+ }
+
+ if (volume.get_identifier('class') == 'network') {
+ return;
+ }
+
+ let activationRoot = volume.get_activation_root();
+ if (!activationRoot) {
+ // Can't offer to mount a device if we don't know
+ // where to mount it.
+ // These devices are usually ejectable so you
+ // don't normally unmount them anyway.
+ return;
+ }
+
+ let escapedUri = activationRoot.get_uri()
+ let uri = GLib.uri_unescape_string(escapedUri, null);
+
+ let volumeKeys = new GLib.KeyFile();
+ volumeKeys.set_string('Desktop Entry', 'Name', volume.get_name());
+ volumeKeys.set_string('Desktop Entry', 'Icon', this._getWorkingIconName(volume.get_icon()));
+ volumeKeys.set_string('Desktop Entry', 'Type', 'Application');
+ volumeKeys.set_string('Desktop Entry', 'Exec', 'gio open "' + uri + '"');
+ volumeKeys.set_string('Desktop Entry', 'StartupNotify', 'false');
+ volumeKeys.set_string('Desktop Entry', 'XdtdUri', escapedUri);
+ volumeKeys.set_string('Desktop Entry', 'Actions', 'mount;');
+ volumeKeys.set_string('Desktop Action mount', 'Name', __('Mount'));
+ volumeKeys.set_string('Desktop Action mount', 'Exec', 'gio mount "' + uri + '"');
+ let volumeAppInfo = Gio.DesktopAppInfo.new_from_keyfile(volumeKeys);
+ let volumeApp = new Shell.App({appInfo: volumeAppInfo});
+ this._volumeApps.push(volumeApp);
+ this.emit('changed');
+ }
+
+ _onVolumeRemoved(monitor, volume) {
+ for (let i = 0; i < this._volumeApps.length; i++) {
+ let app = this._volumeApps[i];
+ if (app.get_name() == volume.get_name()) {
+ this._volumeApps.splice(i, 1);
+ }
+ }
+ this.emit('changed');
+ }
+
+ _onMountAdded(monitor, mount) {
+ // Filter out uninteresting mounts
+ if (!mount.can_eject() && !mount.can_unmount())
+ return;
+ if (mount.is_shadowed())
+ return;
+
+ let volume = mount.get_volume();
+ if (!volume || volume.get_identifier('class') == 'network') {
+ return;
+ }
+
+ let escapedUri = mount.get_root().get_uri()
+ let uri = GLib.uri_unescape_string(escapedUri, null);
+
+ let mountKeys = new GLib.KeyFile();
+ mountKeys.set_string('Desktop Entry', 'Name', mount.get_name());
+ mountKeys.set_string('Desktop Entry', 'Icon',
+ this._getWorkingIconName(volume.get_icon()));
+ mountKeys.set_string('Desktop Entry', 'Type', 'Application');
+ mountKeys.set_string('Desktop Entry', 'Exec', 'gio open "' + uri + '"');
+ mountKeys.set_string('Desktop Entry', 'StartupNotify', 'false');
+ mountKeys.set_string('Desktop Entry', 'XdtdUri', escapedUri);
+ mountKeys.set_string('Desktop Entry', 'Actions', 'unmount;');
+ if (mount.can_eject()) {
+ mountKeys.set_string('Desktop Action unmount', 'Name', __('Eject'));
+ mountKeys.set_string('Desktop Action unmount', 'Exec',
+ 'gio mount -e "' + uri + '"');
+ } else {
+ mountKeys.set_string('Desktop Entry', 'Actions', 'unmount;');
+ mountKeys.set_string('Desktop Action unmount', 'Name', __('Unmount'));
+ mountKeys.set_string('Desktop Action unmount', 'Exec',
+ 'gio mount -u "' + uri + '"');
+ }
+ let mountAppInfo = Gio.DesktopAppInfo.new_from_keyfile(mountKeys);
+ let mountApp = new Shell.App({appInfo: mountAppInfo});
+ this._mountApps.push(mountApp);
+ this.emit('changed');
+ }
+
+ _onMountRemoved(monitor, mount) {
+ for (let i = 0; i < this._mountApps.length; i++) {
+ let app = this._mountApps[i];
+ if (app.get_name() == mount.get_name()) {
+ this._mountApps.splice(i, 1);
+ }
+ }
+ this.emit('changed');
+ }
+
+ getApps() {
+ // When we have both a volume app and a mount app, we prefer
+ // the mount app.
+ let apps = new Map();
+ this._volumeApps.map(function(app) {
+ apps.set(app.get_name(), app);
+ });
+ this._mountApps.map(function(app) {
+ apps.set(app.get_name(), app);
+ });
+
+ let ret = [];
+ for (let app of apps.values()) {
+ ret.push(app);
+ }
+ return ret;
+ }
+}
+Signals.addSignalMethods(Removables.prototype);
diff --git a/extensions/dash-to-dock/media/glossy.svg b/extensions/dash-to-dock/media/glossy.svg
new file mode 100644
index 00000000..55b71baa
--- /dev/null
+++ b/extensions/dash-to-dock/media/glossy.svg
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="18.343554mm"
+ height="18.343554mm"
+ viewBox="0 0 14.674843 14.674842"
+ version="1.1"
+ id="svg4941"
+ sodipodi:docname="glossy.svg"
+ inkscape:version="0.92.1 r15371">
+ <defs
+ id="defs4935">
+ <linearGradient
+ id="linearGradient6812"
+ inkscape:collect="always">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="0"
+ id="stop6810" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop6808" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient18962"
+ id="linearGradient35463"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.29132751,0,0,0.15428114,-54.210829,160.22776)"
+ x1="214.71877"
+ y1="404.36081"
+ x2="214.71877"
+ y2="443.54596" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient18962">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop18964" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop18966" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient18806">
+ <stop
+ style="stop-color:#ff0101;stop-opacity:1;"
+ offset="0"
+ id="stop18808" />
+ <stop
+ style="stop-color:#800000;stop-opacity:1;"
+ offset="1"
+ id="stop18810" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6812"
+ id="radialGradient6798"
+ cx="7.3538475"
+ cy="230.28426"
+ fx="7.3538475"
+ fy="230.28426"
+ r="7.2099228"
+ gradientTransform="matrix(5.9484829,-0.0346444,0.01679088,3.0681664,-40.338609,-476.01412)"
+ gradientUnits="userSpaceOnUse" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="10.68"
+ inkscape:cx="65.485107"
+ inkscape:cy="29.432163"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="2560"
+ inkscape:window-height="1406"
+ inkscape:window-x="1920"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ scale-x="0.8"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0" />
+ <metadata
+ id="metadata4938">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-222.92515)">
+ <rect
+ inkscape:export-ydpi="180"
+ inkscape:export-xdpi="180"
+ inkscape:export-filename="C:\Arbeit\Blog\Tutorials\glossybutton\Glossy_Button_Tutorial.png"
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.35100002;fill:url(#linearGradient35463);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.39747861;marker:none;enable-background:accumulate"
+ id="rect19155"
+ width="14.634871"
+ height="3.7392156"
+ x="0.039808333"
+ y="222.98268"
+ rx="1.5496143"
+ ry="0.82064426" />
+ <rect
+ style="opacity:0.427;fill:url(#radialGradient6798);fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect6706"
+ width="14.363673"
+ height="14.404656"
+ x="0.090466507"
+ y="223.07919" />
+ </g>
+</svg>
diff --git a/extensions/dash-to-dock/media/highlight_stacked_bg.svg b/extensions/dash-to-dock/media/highlight_stacked_bg.svg
new file mode 100644
index 00000000..19be5a9d
--- /dev/null
+++ b/extensions/dash-to-dock/media/highlight_stacked_bg.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ viewBox="-0.7 0 48 48"
+ version="1.1"
+ id="svg10"
+ sodipodi:docname="highlight_stacked_bg.svg"
+ width="48"
+ height="48"
+ inkscape:version="0.92.1 r15371">
+ <metadata
+ id="metadata16">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs14" />
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1920"
+ inkscape:window-height="951"
+ id="namedview12"
+ showgrid="false"
+ viewbox-x="-0.7"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:zoom="3.8125"
+ inkscape:cx="-63.872219"
+ inkscape:cy="15.195756"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg10" />
+ <g
+ id="g8"
+ transform="matrix(1,0,0,48,-0.7,0)"
+ style="opacity:0.25;fill:#eeeeee;stroke-width:0.14433756">
+ <rect
+ width="45"
+ height="1"
+ id="rect2"
+ x="0"
+ y="0"
+ style="stroke-width:0.14433756" />
+ <rect
+ x="45"
+ width="1"
+ height="1"
+ id="rect4"
+ y="0"
+ style="opacity:0.2;stroke-width:0.02083333" />
+ <rect
+ x="46"
+ width="2"
+ height="1"
+ id="rect6"
+ y="0"
+ style="opacity:0.6;stroke-width:0.02083333" />
+ </g>
+</svg>
diff --git a/extensions/dash-to-dock/media/highlight_stacked_bg_h.svg b/extensions/dash-to-dock/media/highlight_stacked_bg_h.svg
new file mode 100644
index 00000000..eeaa8691
--- /dev/null
+++ b/extensions/dash-to-dock/media/highlight_stacked_bg_h.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ viewBox="-0.7 0 48 48"
+ version="1.1"
+ id="svg10"
+ sodipodi:docname="highlight_stacked_bg_h.svg"
+ width="48"
+ height="48"
+ inkscape:version="0.92.1 r15371">
+ <metadata
+ id="metadata16">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs14" />
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1853"
+ inkscape:window-height="1016"
+ id="namedview12"
+ showgrid="false"
+ viewbox-x="-0.7"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:zoom="3.8125"
+ inkscape:cx="-63.872219"
+ inkscape:cy="15.195756"
+ inkscape:window-x="67"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg10" />
+ <g
+ id="g8"
+ transform="matrix(0,-1,-48,0,47.3,48)"
+ style="opacity:0.25;fill:#eeeeee;stroke-width:0.14433756">
+ <rect
+ width="45"
+ height="1"
+ id="rect2"
+ x="0"
+ y="0"
+ style="stroke-width:0.14433756" />
+ <rect
+ x="45"
+ width="1"
+ height="1"
+ id="rect4"
+ y="0"
+ style="opacity:0.2;stroke-width:0.02083333" />
+ <rect
+ x="46"
+ width="2"
+ height="1"
+ id="rect6"
+ y="0"
+ style="opacity:0.6;stroke-width:0.02083333" />
+ </g>
+</svg>
diff --git a/extensions/dash-to-dock/media/logo.svg b/extensions/dash-to-dock/media/logo.svg
new file mode 100644
index 00000000..eebd0b1d
--- /dev/null
+++ b/extensions/dash-to-dock/media/logo.svg
@@ -0,0 +1,528 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="33.866665mm"
+ height="33.866684mm"
+ viewBox="0 0 33.866665 33.866683"
+ id="svg5179"
+ version="1.1"
+ inkscape:version="0.91 r13725"
+ sodipodi:docname="logo.svg">
+ <defs
+ id="defs5181">
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath4379-92-4-9-6-8-0">
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.83189655;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.04922473;marker:none;enable-background:accumulate"
+ id="rect4381-17-7-5-2-0-6"
+ width="19.934219"
+ height="33.52573"
+ x="356.02826"
+ y="457.71631" />
+ </clipPath>
+ <filter
+ style="color-interpolation-filters:sRGB"
+ inkscape:collect="always"
+ id="filter4435-8-5-3-2-13-8"
+ x="-0.22881356"
+ width="1.4576271"
+ y="-0.22881356"
+ height="1.4576271">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="1.0352993"
+ id="feGaussianBlur4437-6-7-9-8-8-1" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB"
+ inkscape:collect="always"
+ id="filter4365-71-5-7-0-6-2"
+ x="-0.21864407"
+ width="1.437288"
+ y="-0.21864407"
+ height="1.437288">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="0.98928601"
+ id="feGaussianBlur4367-74-5-92-0-6-5" />
+ </filter>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath4379-6-7-5-8-6-01-2">
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.83189655;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.04922473;marker:none;enable-background:accumulate"
+ id="rect4381-1-8-5-2-0-2-7"
+ width="19.934219"
+ height="33.52573"
+ x="356.02826"
+ y="457.71631" />
+ </clipPath>
+ <filter
+ style="color-interpolation-filters:sRGB"
+ inkscape:collect="always"
+ id="filter4435-6-1-2-8-2-2-7"
+ x="-0.22881356"
+ width="1.4576271"
+ y="-0.22881356"
+ height="1.4576271">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="1.0352993"
+ id="feGaussianBlur4437-1-1-3-60-1-4-4" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB"
+ inkscape:collect="always"
+ id="filter4365-4-5-2-24-7-3-3"
+ x="-0.21864407"
+ width="1.437288"
+ y="-0.21864407"
+ height="1.437288">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="0.98928601"
+ id="feGaussianBlur4367-7-0-7-7-9-0-3" />
+ </filter>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath4379-5-6-0-9-8-7-9">
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.83189655;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.04922473;marker:none;enable-background:accumulate"
+ id="rect4381-6-8-5-9-9-2-4"
+ width="19.934219"
+ height="33.52573"
+ x="356.02826"
+ y="457.71631" />
+ </clipPath>
+ <filter
+ style="color-interpolation-filters:sRGB"
+ inkscape:collect="always"
+ id="filter4435-63-9-2-4-1-2-6"
+ x="-0.22881356"
+ width="1.4576271"
+ y="-0.22881356"
+ height="1.4576271">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="1.0352993"
+ id="feGaussianBlur4437-0-5-6-8-8-9-9" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB"
+ inkscape:collect="always"
+ id="filter4365-2-4-3-6-3-1-7"
+ x="-0.21864407"
+ width="1.437288"
+ y="-0.21864407"
+ height="1.437288">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="0.98928601"
+ id="feGaussianBlur4367-1-2-5-3-5-8-3" />
+ </filter>
+ <filter
+ inkscape:collect="always"
+ style="color-interpolation-filters:sRGB"
+ id="filter4255"
+ x="-0.20374454"
+ width="1.4074891"
+ y="-0.13779147"
+ height="1.2755829">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="0.25863247"
+ id="feGaussianBlur4257" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="8"
+ inkscape:cx="60.090739"
+ inkscape:cy="60.108985"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:window-width="1861"
+ inkscape:window-height="1023"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata5184">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(136.97858,-11.552354)">
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#0055d4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.04922473;marker:none;enable-background:accumulate"
+ id="rect4006-4-6-9-2-0-6"
+ width="33.83363"
+ height="33.859909"
+ x="-136.9473"
+ y="11.552354"
+ inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+ inkscape:export-xdpi="44.99099"
+ inkscape:export-ydpi="44.99099" />
+ <path
+ inkscape:connector-curvature="0"
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.15440008;marker:none;filter:url(#filter4365-3);enable-background:accumulate"
+ d="m -130.12265,11.559157 c -4.30029,5.691881 -6.67207,12.608761 -6.82289,19.674442 -0.0115,0.54232 -0.0147,1.0766 0,1.62024 0.11433,4.23572 1.04846,8.50668 2.82497,12.565201 l 31.00865,0 0,-33.859883 -27.01073,0 z"
+ id="path6097-2-6-0-89-4"
+ inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+ inkscape:export-xdpi="44.99099"
+ inkscape:export-ydpi="44.99099" />
+ <path
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;enable-background:accumulate"
+ d="m -136.9473,18.430158 0,0.7896 0,20.641361 0,0.7896 1.23782,0 2.26288,0 1.60528,0 c 0.68577,0 1.23783,-0.3548 1.23783,-0.7896 l 0,-20.641361 c 0,-0.4398 -0.55206,-0.7896 -1.23783,-0.7896 l -1.60528,0 -2.26288,0 z"
+ id="rect4008-7-9-2-0-3-4"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccccssssccc"
+ inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+ inkscape:export-xdpi="44.99099"
+ inkscape:export-ydpi="44.99099" />
+ <path
+ inkscape:connector-curvature="0"
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.15;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.15440008;marker:none;filter:url(#filter4365-3);enable-background:accumulate"
+ d="m -119.36792,11.559157 c -10.47023,5.721881 -17.57762,16.847401 -17.57762,29.627402 0,1.43804 0.0897,2.841801 0.26432,4.232481 l 33.5693,0 0,-33.859883 -16.256,0 z"
+ id="path6097-4-5-23-9"
+ inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+ inkscape:export-xdpi="44.99099"
+ inkscape:export-ydpi="44.99099" />
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.04922473;marker:none;enable-background:accumulate"
+ id="rect4247-4-4-5-3-8-1"
+ width="33.83363"
+ height="2.1162443"
+ x="-136.9473"
+ y="11.552354"
+ inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+ inkscape:export-xdpi="44.99099"
+ inkscape:export-ydpi="44.99099" />
+ <path
+ inkscape:connector-curvature="0"
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.04922473;marker:none;enable-background:accumulate"
+ d="m -103.11365,13.668597 0,1.05812 c 0,-0.58196 -0.47338,-1.05812 -1.05731,-1.05812 l 1.05731,0 z"
+ id="rect4272-0-7-8-1-1-3-3-1"
+ inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+ inkscape:export-xdpi="44.99099"
+ inkscape:export-ydpi="44.99099" />
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.04922473;marker:none;enable-background:accumulate"
+ id="rect4031-9-9-2-4-2-5"
+ width="4.2292037"
+ height="4.2324886"
+ x="-135.89"
+ y="19.488146"
+ rx="1.0583334"
+ ry="1.0583334"
+ inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+ inkscape:export-xdpi="44.99099"
+ inkscape:export-ydpi="44.99099" />
+ <path
+ inkscape:connector-curvature="0"
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.04922473;marker:none;enable-background:accumulate"
+ d="m -136.94728,13.668597 0,1.05812 c 0,-0.58196 0.47337,-1.05812 1.0573,-1.05812 l -1.0573,0 z"
+ id="rect4272-0-2-1-74-41-1-6"
+ inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+ inkscape:export-xdpi="44.99099"
+ inkscape:export-ydpi="44.99099" />
+ <g
+ id="g4353-9-2-1-5-5-4"
+ transform="matrix(0.10331261,0,0,0.10339285,-173.76079,-27.453246)"
+ clip-path="url(#clipPath4379-92-4-9-6-8-0)"
+ inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+ inkscape:export-xdpi="44.99099"
+ inkscape:export-ydpi="44.99099">
+ <circle
+ r="5.4295697"
+ cy="477.71164"
+ cx="274.13016"
+ transform="matrix(0.94749688,0,0,0.94749688,96.290796,21.848877)"
+ id="path3153-1-7-3-5-60-3-6"
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.42241378;fill:#d7eef4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.04922473;marker:none;filter:url(#filter4435-8-5-3-2-13-8);enable-background:accumulate" />
+ <circle
+ r="5.4295697"
+ cy="477.71164"
+ cx="274.13016"
+ transform="matrix(0.24231546,0,0,0.24231546,289.60229,358.72226)"
+ id="path3153-2-4-1-6-6-9-4-1"
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#d7eef4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.04922473;marker:none;filter:url(#filter4365-71-5-7-0-6-2);enable-background:accumulate" />
+ </g>
+ <g
+ id="g4589-4-1-1-3-6-2"
+ transform="matrix(0.49926208,0,0,0.49964988,-318.21072,-206.05794)"
+ inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+ inkscape:export-xdpi="44.99099"
+ inkscape:export-ydpi="44.99099">
+ <g
+ clip-path="url(#clipPath4379-6-7-5-8-6-01-2)"
+ transform="matrix(0.20693061,0,0,0.20693061,289.32686,368.5622)"
+ id="g4353-66-1-4-2-6-94-5">
+ <circle
+ r="5.4295697"
+ cy="477.71164"
+ cx="274.13016"
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.42241378;fill:#d7eef4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.04922473;marker:none;filter:url(#filter4435-6-1-2-8-2-2-7);enable-background:accumulate"
+ id="path3153-1-6-4-5-63-7-1-0"
+ transform="matrix(0.94749688,0,0,0.94749688,96.290796,21.848877)" />
+ <circle
+ r="5.4295697"
+ cy="477.71164"
+ cx="274.13016"
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#d7eef4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.04922473;marker:none;filter:url(#filter4365-4-5-2-24-7-3-3);enable-background:accumulate"
+ id="path3153-2-4-7-6-5-8-5-9-5"
+ transform="matrix(0.24231546,0,0,0.24231546,289.60229,358.72226)" />
+ </g>
+ <g
+ clip-path="url(#clipPath4379-5-6-0-9-8-7-9)"
+ transform="matrix(0.20693061,0,0,0.20693061,289.32686,367.53449)"
+ id="g4353-7-2-2-6-4-5-1">
+ <circle
+ r="5.4295697"
+ cy="477.71164"
+ cx="274.13016"
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.42241378;fill:#d7eef4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.04922473;marker:none;filter:url(#filter4435-63-9-2-4-1-2-6);enable-background:accumulate"
+ id="path3153-1-19-3-1-5-5-7-8"
+ transform="matrix(0.94749688,0,0,0.94749688,96.290796,21.848877)" />
+ <circle
+ r="5.4295697"
+ cy="477.71164"
+ cx="274.13016"
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#d7eef4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.04922473;marker:none;filter:url(#filter4365-2-4-3-6-3-1-7);enable-background:accumulate"
+ id="path3153-2-4-5-7-9-9-9-7-6"
+ transform="matrix(0.24231546,0,0,0.24231546,289.60229,358.72226)" />
+ </g>
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:1.28805089px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none"
+ x="-124.44726"
+ y="13.10139"
+ id="text4824-5-2-0-4-8"
+ sodipodi:linespacing="125%"
+ inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+ inkscape:export-xdpi="44.99099"
+ inkscape:export-ydpi="44.99099"
+ transform="scale(0.99961185,1.0003883)"><tspan
+ sodipodi:role="line"
+ id="tspan4826-16-3-8-8-1"
+ x="-124.44726"
+ y="13.10139">Dash to Dock</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:1.28805089px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none"
+ x="-136.50272"
+ y="13.10139"
+ id="text4824-8-8-6-8-7-4"
+ sodipodi:linespacing="125%"
+ inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+ inkscape:export-xdpi="44.99099"
+ inkscape:export-ydpi="44.99099"
+ transform="scale(0.99961185,1.0003883)"><tspan
+ sodipodi:role="line"
+ id="tspan4826-1-7-7-5-07-5"
+ x="-136.50272"
+ y="13.10139">Michele</tspan></text>
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.04922473;marker:none;enable-background:accumulate"
+ id="rect4031-9-0-8-5-4-0-7-6"
+ width="4.2292037"
+ height="4.2324886"
+ x="-135.89"
+ y="24.778917"
+ rx="1.0583334"
+ ry="1.0583334"
+ inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+ inkscape:export-xdpi="44.99099"
+ inkscape:export-ydpi="44.99099" />
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.04922473;marker:none;enable-background:accumulate"
+ id="rect4031-9-0-7-3-3-6-0-1"
+ width="4.2292037"
+ height="4.2324886"
+ x="-135.89"
+ y="30.069445"
+ rx="1.0583334"
+ ry="1.0583334"
+ inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+ inkscape:export-xdpi="44.99099"
+ inkscape:export-ydpi="44.99099" />
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.04922473;marker:none;enable-background:accumulate"
+ id="rect4031-9-0-6-5-1-3-9-0"
+ width="4.2292037"
+ height="4.2324886"
+ x="-135.89"
+ y="35.359974"
+ rx="1.0583334"
+ ry="1.0583334"
+ inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+ inkscape:export-xdpi="44.99099"
+ inkscape:export-ydpi="44.99099" />
+ <path
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.5;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;enable-background:accumulate"
+ d="m -136.9473,17.901078 0,0.52908 2.42849,0 2.21372,0 c 0.94338,0 1.7016,0.3372 1.7016,0.77704 l 0,20.649921 c 0,0.43476 -0.75822,0.7936 -1.7016,0.7936 l -2.21372,0 -2.42849,0 0,0.52904 0.90862,0 2.64325,0 1.88332,0 c 0.80005,0 1.43727,-0.3712 1.43727,-0.82664 l 0,-21.625361 c 0,-0.46072 -0.63722,-0.82668 -1.43727,-0.82668 l -1.88332,0 -2.64325,0 z"
+ id="rect4008-7-0-0-3-3-3-7-9"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccsssscccccssssccc"
+ inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+ inkscape:export-xdpi="44.99099"
+ inkscape:export-ydpi="44.99099" />
+ <path
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#1a1a1a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;enable-background:accumulate"
+ d="m -136.9473,17.901078 0,0.52908 2.42849,0 2.21372,0 c 0.94338,0 1.7016,0.3372 1.7016,0.77704 l 0,20.649921 c 0,0.43476 -0.75822,0.7936 -1.7016,0.7936 l -2.21372,0 -2.42849,0 0,0.52904 0.90862,0 2.64325,0 1.88332,0 c 0.80005,0 1.43727,-0.3712 1.43727,-0.82664 l 0,-21.625361 c 0,-0.46072 -0.63722,-0.82668 -1.43727,-0.82668 l -1.88332,0 -2.64325,0 z"
+ id="rect4008-7-0-0-3-1-5-0-5-5"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccsssscccccssssccc"
+ inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+ inkscape:export-xdpi="44.99099"
+ inkscape:export-ydpi="44.99099" />
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#f2f2f2;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;filter:url(#filter4365-3);enable-background:accumulate"
+ id="rect6777-7-9-6-9-8"
+ width="20.108335"
+ height="18.256252"
+ x="-125.24149"
+ y="19.139757"
+ inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+ inkscape:export-xdpi="45"
+ inkscape:export-ydpi="45" />
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#1a1a1a;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
+ id="rect4923-8-7-8-2"
+ width="3.7041669"
+ height="3.7041669"
+ x="-116.71888"
+ y="30.163927"
+ rx="1.0583334"
+ ry="1.0583334" />
+ <path
+ inkscape:connector-curvature="0"
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.15;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;filter:url(#filter4365-3);enable-background:accumulate"
+ d="m -111.94623,19.146638 c -5.49508,1.3884 -10.21465,5.00036 -13.29531,9.92188 l 0,8.334361 20.10833,0 0,-18.256241 -6.81302,0 z"
+ id="path6862-84-2-2-6-7"
+ inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+ inkscape:export-xdpi="45"
+ inkscape:export-ydpi="45" />
+ <path
+ inkscape:connector-curvature="0"
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#cccccc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;filter:url(#filter4365-3);enable-background:accumulate"
+ d="m -125.02657,18.882038 c -0.11728,0 -0.21496,0.0812 -0.21496,0.1984 l 0,0.44648 0,1.2568 0,0.2148 0.21496,0 19.67838,0 0.215,0 0,-0.2148 0,-1.2568 0,-0.44648 c 0,-0.1172 -0.0977,-0.1984 -0.215,-0.1984 l -19.67838,0 z"
+ id="rect6779-5-8-6-4-6"
+ inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+ inkscape:export-xdpi="45"
+ inkscape:export-ydpi="45" />
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#999999;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;filter:url(#filter4365-3);enable-background:accumulate"
+ id="rect6779-2-3-9-9-0-8"
+ width="20.108335"
+ height="0.5291667"
+ x="-125.24149"
+ y="20.991808"
+ inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+ inkscape:export-xdpi="45"
+ inkscape:export-ydpi="45" />
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;filter:url(#filter4365-3);enable-background:accumulate"
+ id="rect6779-2-4-8-0-7-1-1"
+ width="15.875001"
+ height="0.5291667"
+ x="21.521105"
+ y="105.13315"
+ transform="rotate(90)"
+ inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+ inkscape:export-xdpi="45"
+ inkscape:export-ydpi="45" />
+ <g
+ id="g6839-1-5-1-33-0"
+ transform="matrix(0.02002288,0.02002284,-0.02002288,0.02002284,-106.62848,-6.0229242)"
+ style="fill:#1a1a1a"
+ inkscape:export-filename="/home/michele/Dropbox/lavori/gnome-shell-extension/icon/g5218.png"
+ inkscape:export-xdpi="45"
+ inkscape:export-ydpi="45">
+ <rect
+ y="616.07727"
+ x="653.01312"
+ height="41.542522"
+ width="11.313708"
+ id="rect6819-8-9-2-56-9"
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#1a1a1a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;filter:url(#filter4365-3);enable-background:accumulate" />
+ <rect
+ transform="rotate(90)"
+ y="-679.44122"
+ x="631.19165"
+ height="41.542522"
+ width="11.313708"
+ id="rect6819-3-9-4-3-1-5"
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#1a1a1a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;filter:url(#filter4365-3);enable-background:accumulate" />
+ </g>
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#1a1a1a;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
+ id="rect4923-6-8-9-1"
+ width="3.7041669"
+ height="3.7041669"
+ x="-123.59805"
+ y="30.163927"
+ rx="1.0583334"
+ ry="1.0583334" />
+ <path
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.26458335;stroke-miterlimit:4;stroke-dasharray:none;marker:none;enable-background:accumulate;opacity:0.866;filter:url(#filter4255)"
+ d="m -121.46776,32.043964 -5e-4,1.742839 -4.9e-4,1.742839 0.71518,-0.708051 0.99716,1.727136 1.33421,-0.770304 -0.99542,-1.724104 0.96903,-0.268366 -1.50959,-0.870995 z"
+ id="path6155-6-0-01-4-5-6-0-0"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccc" />
+ <path
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.13229167;stroke-miterlimit:4;stroke-dasharray:none;marker:none;filter:url(#filter4365-3);enable-background:accumulate"
+ d="m -121.86464,32.043964 -5e-4,1.742839 -4.9e-4,1.742839 0.71518,-0.708051 1.05563,1.8284 1.3342,-0.770304 -1.05388,-1.825368 0.96903,-0.268366 -1.50959,-0.870995 z"
+ id="path6155-6-0-8-0-7-97-5"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccc" />
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#1a1a1a;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
+ id="rect4923-4-8-4"
+ width="3.7041669"
+ height="3.7041669"
+ x="-123.59805"
+ y="23.020128"
+ rx="1.0583334"
+ ry="1.0583334" />
+ <rect
+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#1a1a1a;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
+ id="rect4923-2-6-7-8"
+ width="3.7041669"
+ height="3.7041669"
+ x="-116.71888"
+ y="23.020128"
+ rx="1.0583334"
+ ry="1.0583334" />
+ </g>
+</svg>
diff --git a/extensions/dash-to-dock/media/screenshot.jpg b/extensions/dash-to-dock/media/screenshot.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..4e9b4c6754a0a6d7ff43840812fa807c0937b2da
GIT binary patch
literal 111454
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
literal 0
HcmV?d00001
diff --git a/extensions/dash-to-dock/meson.build b/extensions/dash-to-dock/meson.build
new file mode 100644
index 00000000..35ba2ecf
--- /dev/null
+++ b/extensions/dash-to-dock/meson.build
@@ -0,0 +1,27 @@
+extension_data += configure_file(
+ input: metadata_name + '.in',
+ output: metadata_name,
+ configuration: metadata_conf
+)
+
+extension_sources += files(
+ 'appIconIndicators.js',
+ 'appIcons.js',
+ 'dash.js',
+ 'dbusmenuUtils.js',
+ 'docking.js',
+ 'extension.js',
+ 'fileManager1API.js',
+ 'intellihide.js',
+ 'launcherAPI.js',
+ 'locations.js',
+ 'prefs.js',
+ 'Settings.ui',
+ 'theming.js',
+ 'utils.js',
+ 'windowPreview.js'
+)
+
+extension_schemas += files(join_paths('schemas', metadata_conf.get('gschemaname') + '.gschema.xml'))
+
+install_subdir('media', install_dir: join_paths(extensiondir, uuid))
diff --git a/extensions/dash-to-dock/metadata.json.in b/extensions/dash-to-dock/metadata.json.in
new file mode 100644
index 00000000..641a935c
--- /dev/null
+++ b/extensions/dash-to-dock/metadata.json.in
@@ -0,0 +1,12 @@
+{
+"extension-id": "@extension_id@",
+"uuid": "@uuid@",
+"settings-schema": "@gschemaname@",
+"gettext-domain": "@gettext_domain@",
+"original-author": "micxgx@gmail.com",
+"name": "Dash to Dock",
+"description": "A dock for the Gnome Shell. This extension moves the dash out of the overview transforming it in a dock for an easier launching of applications and a faster switching between windows and desktops. Side and bottom placement options are available.",
+"shell-version": [ "@shell_current@" ],
+"version": 66,
+"url": "https://micheleg.github.io/dash-to-dock/"
+}
diff --git a/extensions/dash-to-dock/po/ar.po b/extensions/dash-to-dock/po/ar.po
new file mode 100644
index 00000000..3bc311dd
--- /dev/null
+++ b/extensions/dash-to-dock/po/ar.po
@@ -0,0 +1,573 @@
+# 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 <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Dash to Dock\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-06-04 12:35+0100\n"
+"PO-Revision-Date: 2015-04-18 18:01+0100\n"
+"Last-Translator: Jean-Baptiste Le Cz <jb.lecoz@gmail.com>\n"
+"Language-Team: Faissal Chamekh <chamfay@gmail.com>\n"
+"Language: ar_DZ\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
+"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5);\n"
+"X-Generator: Poedit 1.7.5\n"
+"X-Poedit-SourceCharset: UTF-8\n"
+
+#: prefs.js:113
+msgid "Primary monitor"
+msgstr "الشاشة الرئيسية"
+
+#: prefs.js:122 prefs.js:129
+msgid "Secondary monitor "
+msgstr "الشاشة الثانوية"
+
+#: prefs.js:154 Settings.ui.h:29
+msgid "Right"
+msgstr "يمين"
+
+#: prefs.js:155 Settings.ui.h:26
+msgid "Left"
+msgstr "يسار"
+
+#: prefs.js:205
+msgid "Intelligent autohide customization"
+msgstr "تخصيص الإخفاء التلقائي"
+
+#: prefs.js:212 prefs.js:393 prefs.js:450
+msgid "Reset to defaults"
+msgstr "العودة للافتراضي"
+
+#: prefs.js:386
+#, fuzzy
+msgid "Show dock and application numbers"
+msgstr "أظهر التطبيقات قيد التشغيل"
+
+#: prefs.js:443
+#, fuzzy
+msgid "Customize middle-click behavior"
+msgstr "خصّص الإعتام"
+
+#: prefs.js:514
+#, fuzzy
+msgid "Customize running indicators"
+msgstr "أظهر التطبيقات قيد التشغيل"
+
+#: appIcons.js:804
+msgid "All Windows"
+msgstr "جميع النوافذ"
+
+#: Settings.ui.h:1
+#, fuzzy
+msgid "Customize indicator style"
+msgstr "خصّص الإعتام"
+
+#: Settings.ui.h:2
+msgid "Color"
+msgstr "اللون"
+
+#: Settings.ui.h:3
+msgid "Border color"
+msgstr "لون الحواف"
+
+#: Settings.ui.h:4
+msgid "Border width"
+msgstr "عرض الحواف"
+
+#: Settings.ui.h:5
+msgid "Number overlay"
+msgstr "عدد التراكب"
+
+#: Settings.ui.h:6
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"عرض أرقام التطبيق مؤقتا على الرموز، المقابلة"
+"للاختصار."
+""
+
+#: Settings.ui.h:7
+#, fuzzy
+msgid "Show the dock if it is hidden"
+msgstr "أظهر المرساة فوق"
+
+#: Settings.ui.h:8
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"إذا اُستخدم الإخفاء التلقائي الشريط سيظهر لوقت قصير عند الضغط"
+"على الإختصار."
+""
+
+#: Settings.ui.h:9
+msgid "Shortcut for the options above"
+msgstr "الإختصار للخيارات في الأعلى"
+
+#: Settings.ui.h:10
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "البنية: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:11
+msgid "Hide timeout (s)"
+msgstr "زمن الاختفاء (ثا)"
+
+#: Settings.ui.h:12
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"عند التصغير النقر المزدوج سيصغر جميع نوافذ"
+"التطبيق."
+""
+""
+
+#: Settings.ui.h:13
+msgid "Shift+Click action"
+msgstr "حدث Shift+Click"
+
+#: Settings.ui.h:14
+#, fuzzy
+msgid "Raise window"
+msgstr "صغّر النافذة"
+
+#: Settings.ui.h:15
+msgid "Minimize window"
+msgstr "صغّر النافذة"
+
+#: Settings.ui.h:16
+msgid "Launch new instance"
+msgstr "شغّل نسخة جديدة"
+
+#: Settings.ui.h:17
+msgid "Cycle through windows"
+msgstr "التبديل بين النوافذ"
+
+#: Settings.ui.h:18
+msgid "Quit"
+msgstr "خروج"
+
+#: Settings.ui.h:19
+msgid "Behavior for Middle-Click."
+msgstr "سلوك الزر المتوسط."
+
+#: Settings.ui.h:20
+#, fuzzy
+msgid "Middle-Click action"
+msgstr "حدث النقر"
+
+#: Settings.ui.h:21
+msgid "Behavior for Shift+Middle-Click."
+msgstr "سلوك Shift+Middle-Click."
+
+#: Settings.ui.h:22
+#, fuzzy
+msgid "Shift+Middle-Click action"
+msgstr "حدث Shift+Click"
+
+#: Settings.ui.h:23
+msgid "Show the dock on"
+msgstr "أظهر المرساة فوق"
+
+#: Settings.ui.h:24
+#, fuzzy
+msgid "Show on all monitors."
+msgstr "الشاشة الثانوية"
+
+#: Settings.ui.h:25
+msgid "Position on screen"
+msgstr "الموضع على الشاشة"
+
+#: Settings.ui.h:27
+msgid "Bottom"
+msgstr "أسفل"
+
+#: Settings.ui.h:28
+msgid "Top"
+msgstr "أعلى"
+
+#: Settings.ui.h:30
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr "إخفاء المرساة عندما تحجب نافذة التطبيق الحالي. تخصيصات أكثر متوفرة."
+
+#: Settings.ui.h:31
+msgid "Intelligent autohide"
+msgstr "إخفاء تلقائي ذكي"
+
+#: Settings.ui.h:32
+msgid "Dock size limit"
+msgstr "حدّ حجم المرساة"
+
+#: Settings.ui.h:33
+msgid "Panel mode: extend to the screen edge"
+msgstr "نمط الشريط: تمديد إلى حواف الشاشة"
+
+#: Settings.ui.h:34
+msgid "Icon size limit"
+msgstr "حدّ حجم الأيقونة"
+
+#: Settings.ui.h:35
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "حجم أيقونات ثابت: استعمل التمرير لكشف أيقونات أخرى"
+
+#: Settings.ui.h:36
+msgid "Position and size"
+msgstr "الموضع والحجم"
+
+#: Settings.ui.h:37
+msgid "Show favorite applications"
+msgstr "أظهر التطبيقات المفضّلة"
+
+#: Settings.ui.h:38
+msgid "Show running applications"
+msgstr "أظهر التطبيقات قيد التشغيل"
+
+#: Settings.ui.h:39
+msgid "Isolate workspaces."
+msgstr "عزل مساحات العمل."
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "عرض معاينات النوافذ المفتوحة."
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"إذا تم تعطيله هذه الإعدادت يمكن الوصول إليها من gnome-tweak-tool أو "
+"موقع الإضافات."
+""
+
+#: Settings.ui.h:42
+#, fuzzy
+msgid "Show <i>Applications</i> icon"
+msgstr "أظهر أيقونة التطبيقات أولا"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr "تحريك زر التطبيقات في بداية الشريط."
+
+#: Settings.ui.h:44
+#, fuzzy
+msgid "Animate <i>Show Applications</i>."
+msgstr "أظهر أيقونة التطبيقات أولا"
+
+#: Settings.ui.h:45
+msgid "Launchers"
+msgstr "المشغلات"
+
+#: Settings.ui.h:46
+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:47
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "استخدام إختصارات لوحة المفاتيح لتفعيل التطبيقات"
+
+#: Settings.ui.h:48
+#, fuzzy
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "التصرّف عن النقر على أيقونة التطبيق قيد التشغيل."
+
+#: Settings.ui.h:49
+msgid "Click action"
+msgstr "حدث النقر"
+
+#: Settings.ui.h:50
+msgid "Minimize"
+msgstr "صغّر"
+
+#: Settings.ui.h:51
+#, fuzzy
+msgid "Minimize or overview"
+msgstr "صغّر النافذة"
+
+#: Settings.ui.h:52
+#, fuzzy
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "التصرّف عن النقر على أيقونة التطبيق قيد التشغيل."
+
+#: Settings.ui.h:53
+#, fuzzy
+msgid "Scroll action"
+msgstr "حدث النقر"
+
+#: Settings.ui.h:54
+msgid "Do nothing"
+msgstr "لا تفعل شيئا"
+
+#: Settings.ui.h:55
+#, fuzzy
+msgid "Switch workspace"
+msgstr "تبديل مساحة عمل واحدة في نفس الوقت"
+
+#: Settings.ui.h:56
+msgid "Behavior"
+msgstr "السلوك"
+
+#: Settings.ui.h:57
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"القليل من التخصيصات يعني إضافة الشريط مع سِمَة غنوم. "
+"بدلاً من هذا, خيارات محددة يُمكن اختيارها من الأسفل."
+""
+
+#: Settings.ui.h:58
+msgid "Use built-in theme"
+msgstr "استعمل السمة المضمّنة"
+
+#: Settings.ui.h:59
+msgid "Save space reducing padding and border radius."
+msgstr "حفظ المساحة يقلل من الحشو ونصف قطر الحافة."
+
+#: Settings.ui.h:60
+msgid "Shrink the dash"
+msgstr "تقليص المرساة"
+
+#: Settings.ui.h:61
+msgid "Show a dot for each windows of the application."
+msgstr "أظهر نقطة لكل نوافذة من التطبيق."
+
+#: Settings.ui.h:62
+msgid "Show windows counter indicators"
+msgstr "أظهر مؤشرات عدد النوافذ"
+
+#: Settings.ui.h:63
+msgid "Set the background color for the dash."
+msgstr "تعيين لون الخلفية لشَرِطة"
+
+#: Settings.ui.h:64
+msgid "Customize the dash color"
+msgstr "تخصيص لون الشَرِطة"
+
+#: Settings.ui.h:65
+msgid "Tune the dash background opacity."
+msgstr "ضبط إعتام خلفية المرساة."
+
+#: Settings.ui.h:66
+msgid "Customize opacity"
+msgstr "خصّص الإعتام"
+
+#: Settings.ui.h:67
+msgid "Opacity"
+msgstr "العتمة"
+
+#: Settings.ui.h:68
+msgid "Force straight corner\n"
+msgstr "الزاوي المستقيمة\n"
+
+#: Settings.ui.h:70
+msgid "Appearance"
+msgstr "المظهر"
+
+#: Settings.ui.h:71
+msgid "version: "
+msgstr "الإصدار:"
+
+#: Settings.ui.h:72
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "تحريك الشريط خارج النظرة العامة في الشَرِطة"
+
+#: Settings.ui.h:73
+msgid "Created by"
+msgstr "أنشئ من طرف"
+
+#: Settings.ui.h:74
+msgid "Webpage"
+msgstr "صفحة الويب"
+
+#: Settings.ui.h:75
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">هذا البرنامج يأتي بدون أي ضمانات.\n"
+"لمزيد من المعلومات أنظر <a href=\"https://www.gnu.org/licenses/old-licenses/"
+"gpl-2.0.html\">رخصة غنو العمومية، الإصدارة 2 فما فوق.</span>"
+
+#: Settings.ui.h:77
+msgid "About"
+msgstr "حول"
+
+#: Settings.ui.h:78
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "أظهر المرساة بتمرير الفأرة على حافة النافذة"
+
+#: Settings.ui.h:79
+msgid "Autohide"
+msgstr "إخفاء تلقائي"
+
+#: Settings.ui.h:80
+msgid "Push to show: require pressure to show the dock"
+msgstr "اضغط للإظهار: يتطلب ضغطا لإظهار المرساة"
+
+#: Settings.ui.h:81
+msgid "Enable in fullscreen mode"
+msgstr "تمكين في وضع ملئ الشاشة"
+
+#: Settings.ui.h:82
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "إظهار المرساة عندما لا تحجب نوافذ التطبيق."
+
+#: Settings.ui.h:83
+msgid "Dodge windows"
+msgstr "حيلة النوافذ"
+
+#: Settings.ui.h:84
+msgid "All windows"
+msgstr "جميع النوافذ"
+
+#: Settings.ui.h:85
+msgid "Only focused application's windows"
+msgstr "نوافذ التطبيق المركزة فقط"
+
+#: Settings.ui.h:86
+#, fuzzy
+msgid "Only maximized windows"
+msgstr "صغّر النافذة"
+
+#: Settings.ui.h:87
+msgid "Animation duration (s)"
+msgstr "مدة التحريك (ثا)"
+
+#: Settings.ui.h:88
+msgid "0.000"
+msgstr "0.000"
+
+#: Settings.ui.h:89
+msgid "Show timeout (s)"
+msgstr "زمن الظهور (ثا)"
+
+#: Settings.ui.h:90
+msgid "Pressure threshold"
+msgstr "عتبة الضغط"
+
+#~ msgid "Switch workspace by scrolling on the dock"
+#~ 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 "1"
+#~ msgstr "1"
+
+#~ msgid "2"
+#~ msgstr "2"
+
+#~ msgid "3"
+#~ msgstr "3"
+
+#~ msgid "4"
+#~ msgstr "4"
+
+#~ msgid "Max height"
+#~ msgstr "الارتفاع الأقصى"
+
+#~ msgid "Expand (experimental and buggy)"
+#~ msgstr "تمديد (تجريبي)"
+
+#~ msgid "Maximum icon size"
+#~ msgstr "الحجم الأقصى للأيقونة"
+
+#~ msgid "16"
+#~ msgstr "16"
+
+#~ msgid "24"
+#~ msgstr "24"
+
+#~ msgid "32"
+#~ msgstr "32"
+
+#~ msgid "48"
+#~ msgstr "48"
+
+#~ msgid "64"
+#~ msgstr "64"
+
+#~ msgid "Optional features"
+#~ msgstr "ميزات إضافية"
+
+#~ msgid "Deadtime between each workspace switching [ms]"
+#~ msgstr "الوقت بين تبديل كل مساحة عمل"
+
+#~ msgid "Only a 1px wide area close to the screen edge is active"
+#~ msgstr "مساحة بعرض 1 بكسل فقط قريبة من حافة الشاشة هي النشطة"
+
+#~ msgid "All the area of the dock is active"
+#~ msgstr "جميع مناطق المرساة نشطة"
+
+#~ msgid "Customize actions on mouse click"
+#~ msgstr "خصّص حدث النقر على الفأرة"
+
+#~ msgid "Action on clicking on running app"
+#~ msgstr "الحدث عن النقر على تطبيق قيد التشغيل"
+
+#~ msgid "Minimize window on shift+click (double click for all app windows)"
+#~ msgstr ""
+#~ "تصغير النافذة عند النقر مع shift (الضغط المزدوج بالنسبة لكل نوافذ التطبيق)"
+
+#~ msgid "Make message tray insensitive to mouse events"
+#~ msgstr "اجعل رسالة التنبيه غير حساسة لأحداث الفأرة"
+
+#~ msgid "Appearence and Themes"
+#~ msgstr "المظهر والسمة"
+
+#~ msgid ""
+#~ "A customized theme is built in the extension. This is meant to work with "
+#~ "the default Adwaita theme: the dash is shrunk to save space, its "
+#~ "background transparency reduced, and custom indicators for the number of "
+#~ "windows of each application are added."
+#~ msgstr ""
+#~ "تم تضمين سمة مخصّصة للإضافة، هذا يعني أنها تعمل مع السمة الافتراضية "
+#~ "Adwaita: تقليص المرساة لكسب مساحة، إنقاص شفافيتها، كذلك تم إضافة مؤشرات "
+#~ "لعدد نوافذ التطبيق."
+
+#~ msgid ""
+#~ "Alternatively, for a better integration with custom themes, each "
+#~ "customization can be applied indipendently"
+#~ msgstr "بدلا من هذا، لتكاملية أفضل مع سمات مخصّصة، كل تخصيص يطبّق على حدة"
+
+#~ msgid "Shrink the dash size by reducing padding"
+#~ msgstr "مساحة المرساة بإنقاص الحشو"
+
+#~ msgid "Only when in autohide"
+#~ msgstr "فقط عند الإخفاء التلقائي"
diff --git a/extensions/dash-to-dock/po/cs.po b/extensions/dash-to-dock/po/cs.po
new file mode 100644
index 00000000..dc4f9a98
--- /dev/null
+++ b/extensions/dash-to-dock/po/cs.po
@@ -0,0 +1,552 @@
+# Translation for cs
+# Copyright (C) 2014 Michele
+# This file is distributed under the same license as the dash-to-dock package.
+# Jiří Doubravský <jiri.doubravsky@gmail.com>, 2015.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Dash to Dock\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-05-16 13:48+0200\n"
+"PO-Revision-Date: 2020-05-16 13:54+0200\n"
+"Last-Translator: Daniel Rusek <mail@asciiwolf.com>\n"
+"Language-Team: CZECH <jiri.doubravsky@gmail.com>\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.3\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+#: prefs.js:268
+msgid "Primary monitor"
+msgstr "Hlavní obrazovka"
+
+#: prefs.js:277 prefs.js:284
+msgid "Secondary monitor "
+msgstr "Sekundární obrazovka "
+
+#: prefs.js:309 Settings.ui.h:28
+msgid "Right"
+msgstr "Vpravo"
+
+#: prefs.js:310 Settings.ui.h:25
+msgid "Left"
+msgstr "Vlevo"
+
+#: prefs.js:360
+msgid "Intelligent autohide customization"
+msgstr "Přizpůsobení chytrého skrývání"
+
+#: prefs.js:367 prefs.js:560 prefs.js:616
+msgid "Reset to defaults"
+msgstr "Obnovit výchozí nastavení"
+
+#: prefs.js:553
+msgid "Show dock and application numbers"
+msgstr "Zobrazování doku a čísel aplikací"
+
+#: prefs.js:609
+msgid "Customize middle-click behavior"
+msgstr "Nastavit chování prostředního tlačítka"
+
+#: prefs.js:692
+msgid "Customize running indicators"
+msgstr "Nastavit indikátory spuštěných aplikací"
+
+#: prefs.js:804 Settings.ui.h:74
+msgid "Customize opacity"
+msgstr "Přizpůsobení průhlednosti"
+
+#: appIcons.js:797
+msgid "All Windows"
+msgstr "Všechna okna"
+
+#: appIcons.js:916
+#, javascript-format
+msgid "Quit %d Windows"
+msgstr "Ukončit %d oken"
+
+#. Translators: %s is "Settings", which is automatically translated. You
+#. can also translate the full message if this fits better your language.
+#: appIcons.js:1134
+#, javascript-format
+msgid "Dash to Dock %s"
+msgstr "%s Dash to Docku"
+
+#: locations.js:65
+msgid "Trash"
+msgstr "Koš"
+
+#: locations.js:74
+msgid "Empty Trash"
+msgstr "Vyprázdnit koš"
+
+#: locations.js:192
+msgid "Mount"
+msgstr "Připojit"
+
+#: locations.js:235
+msgid "Eject"
+msgstr "Vysunout"
+
+#: locations.js:240
+msgid "Unmount"
+msgstr "Odpojit"
+
+#: Settings.ui.h:1
+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."
+
+#: Settings.ui.h:2
+msgid "Shift+Click action"
+msgstr "Shift + levé tlačítko"
+
+#: Settings.ui.h:3
+msgid "Raise window"
+msgstr "Přenést okno do popředí"
+
+#: Settings.ui.h:4
+msgid "Minimize window"
+msgstr "Minimalizovat okno"
+
+#: Settings.ui.h:5
+msgid "Launch new instance"
+msgstr "Spustit novou instanci"
+
+#: Settings.ui.h:6
+msgid "Cycle through windows"
+msgstr "Přepínat mezi okny"
+
+#: Settings.ui.h:7
+msgid "Minimize or overview"
+msgstr "Minimalizovat nebo zobrazit přehled"
+
+#: Settings.ui.h:8
+msgid "Show window previews"
+msgstr "Zobrazit náhledy oken"
+
+#: Settings.ui.h:9
+msgid "Minimize or show previews"
+msgstr "Minimalizovat nebo zobrazit náhledy oken"
+
+#: Settings.ui.h:10
+msgid "Focus or show previews"
+msgstr "Zaměřit nebo zobrazit náhledy oken"
+
+#: Settings.ui.h:11
+msgid "Quit"
+msgstr "Ukončit"
+
+#: Settings.ui.h:12
+msgid "Behavior for Middle-Click."
+msgstr "Chování při kliknutím prostředního tlačítka"
+
+#: Settings.ui.h:13
+msgid "Middle-Click action"
+msgstr "Prostřední tlačítko"
+
+#: Settings.ui.h:14
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Chování při kliknutím prostředního tlačítka a stiknuté klávese Shift"
+
+#: Settings.ui.h:15
+msgid "Shift+Middle-Click action"
+msgstr "Shift + prostřední tlačítko"
+
+#: Settings.ui.h:16
+msgid "Enable Unity7 like glossy backlit items"
+msgstr "Podsvícení ikon jako v Unity 7"
+
+#: Settings.ui.h:17
+msgid "Use dominant color"
+msgstr "Použít převládající barvu ikony"
+
+#: Settings.ui.h:18
+msgid "Customize indicator style"
+msgstr "Vlastní styl indikátorů"
+
+#: Settings.ui.h:19
+msgid "Color"
+msgstr "Barva"
+
+#: Settings.ui.h:20
+msgid "Border color"
+msgstr "Barva ohraničení"
+
+#: Settings.ui.h:21
+msgid "Border width"
+msgstr "Šířka ohraničení"
+
+#: Settings.ui.h:22
+msgid "Show the dock on"
+msgstr "Kde zobrazit dok"
+
+#: Settings.ui.h:23
+msgid "Show on all monitors."
+msgstr "Zobrazit na všech obrazovkách"
+
+#: Settings.ui.h:24
+msgid "Position on screen"
+msgstr "Umístění na obrazovce"
+
+#: Settings.ui.h:26
+msgid "Bottom"
+msgstr "Dole"
+
+#: Settings.ui.h:27
+msgid "Top"
+msgstr "Nahoře"
+
+#: Settings.ui.h:29
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"Skrýt dok, pokud překáží oknu aktivní aplikace. K dispozici jsou podrobnější "
+"nastavení."
+
+#: Settings.ui.h:30
+msgid "Intelligent autohide"
+msgstr "Chytré skrývání"
+
+#: Settings.ui.h:31
+msgid "Dock size limit"
+msgstr "Maximální velikost doku"
+
+#: Settings.ui.h:32
+msgid "Panel mode: extend to the screen edge"
+msgstr "Režim panelu (roztáhnout dok po celé délce obrazovky)"
+
+#: Settings.ui.h:33
+msgid "Icon size limit"
+msgstr "Maximální velikost ikon"
+
+#: Settings.ui.h:34
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr ""
+"Neměnná velikost ikon (rolováním na doku je možné zobrazit další ikony)"
+
+#: Settings.ui.h:35
+msgid "Position and size"
+msgstr "Umístění a velikost"
+
+#: Settings.ui.h:36
+msgid "Show favorite applications"
+msgstr "Zobrazit oblíbené aplikace"
+
+#: Settings.ui.h:37
+msgid "Show running applications"
+msgstr "Zobrazit spuštěné aplikace"
+
+#: Settings.ui.h:38
+msgid "Isolate workspaces."
+msgstr "Izolovat pracovní plochy"
+
+#: Settings.ui.h:39
+msgid "Isolate monitors."
+msgstr "Izolovat obrazovky"
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "Zobrazit náhledy oken"
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+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
+msgid "Show <i>Applications</i> icon"
+msgstr "Tlačítko přístupu ke všem aplikacím"
+
+#: 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
+msgid "Animate <i>Show Applications</i>."
+msgstr "Animace při zobrazení všech aplikací"
+
+#: Settings.ui.h:45
+msgid "Show trash can"
+msgstr "Zobrazit koš"
+
+#: Settings.ui.h:46
+msgid "Show mounted volumes and devices"
+msgstr "Zobrazit připojené svazky a zařízení"
+
+#: Settings.ui.h:47
+msgid "Launchers"
+msgstr "Spouštěče"
+
+#: Settings.ui.h:48
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"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."
+
+#: Settings.ui.h:49
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "Klávesová zkratka pro aktivaci aplikací"
+
+#: Settings.ui.h:50
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Chování při kliknutí na ikonu běžící aplikace"
+
+#: Settings.ui.h:51
+msgid "Click action"
+msgstr "Kliknutí tlačítkem myši"
+
+#: Settings.ui.h:52
+msgid "Minimize"
+msgstr "Minimalizovat"
+
+#: Settings.ui.h:53
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Chování při rolování na ikoně běžící aplikace"
+
+#: Settings.ui.h:54
+msgid "Scroll action"
+msgstr "Rolování kolečkem myši"
+
+#: Settings.ui.h:55
+msgid "Do nothing"
+msgstr "Nedělat nic"
+
+#: Settings.ui.h:56
+msgid "Switch workspace"
+msgstr "Přepnout pracovní plochu"
+
+#: Settings.ui.h:57
+msgid "Behavior"
+msgstr "Chování"
+
+#: Settings.ui.h:58
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Nastavení kvůli integraci doku s výchozím motivem GNOME; jinak lze použít "
+"samostatné předvolby níže."
+
+#: Settings.ui.h:59
+msgid "Use built-in theme"
+msgstr "Použít výchozí motiv doku"
+
+#: Settings.ui.h:60
+msgid "Save space reducing padding and border radius."
+msgstr "Prostorově méně náročné zobrazení (zmenšení volného místa kolem ikon)"
+
+#: Settings.ui.h:61
+msgid "Shrink the dash"
+msgstr "Zmenšený dok"
+
+#: Settings.ui.h:62
+msgid "Customize windows counter indicators"
+msgstr "Indikátory počtu otevřených oken"
+
+#: Settings.ui.h:63
+msgid "Default"
+msgstr "Výchozí"
+
+#: Settings.ui.h:64
+msgid "Dots"
+msgstr "Tečky"
+
+#: Settings.ui.h:65
+msgid "Squares"
+msgstr "Čtverečky"
+
+#: Settings.ui.h:66
+msgid "Dashes"
+msgstr "Čárky"
+
+#: Settings.ui.h:67
+msgid "Segmented"
+msgstr "Dělená linka"
+
+#: Settings.ui.h:68
+msgid "Solid"
+msgstr "Plná linka"
+
+#: Settings.ui.h:69
+msgid "Ciliora"
+msgstr "Styl Ciliora"
+
+#: Settings.ui.h:70
+msgid "Metro"
+msgstr "Styl Metro"
+
+#: Settings.ui.h:71
+msgid "Set the background color for the dash."
+msgstr "Nastavit barvu pozadí doku"
+
+#: Settings.ui.h:72
+msgid "Customize the dash color"
+msgstr "Vlastní barva doku"
+
+#: Settings.ui.h:73
+msgid "Tune the dash background opacity."
+msgstr "Nastavit průhlednost doku"
+
+#: Settings.ui.h:75
+msgid "Fixed"
+msgstr "Neměnná"
+
+#: Settings.ui.h:76
+msgid "Dynamic"
+msgstr "Dynamická"
+
+#: Settings.ui.h:77
+msgid "Opacity"
+msgstr "Průhlednost"
+
+#: Settings.ui.h:78
+msgid "Force straight corner"
+msgstr "Zakázat zaoblené rohy"
+
+#: Settings.ui.h:79
+msgid "Appearance"
+msgstr "Vzhled"
+
+#: Settings.ui.h:80
+msgid "version: "
+msgstr "verze: "
+
+#: Settings.ui.h:81
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Vytvoří dok z přehledu činností a oblíbených aplikací"
+
+#: Settings.ui.h:82
+msgid "Created by"
+msgstr "Autor"
+
+#: Settings.ui.h:83
+msgid "Webpage"
+msgstr "Webová stránka"
+
+#: Settings.ui.h:84
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">Na tento program NEJSOU POSKYTOVÁNY ZÁRUKY.\n"
+"Podrobněji viz <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0."
+"html\">GNU General Public License, verze 2 nebo pozdější</a>.</span>"
+
+#: Settings.ui.h:86
+msgid "About"
+msgstr "O tomto doplňku"
+
+#: Settings.ui.h:87
+msgid "Customize minimum and maximum opacity values"
+msgstr "Nastavit minimální a maximální hodnoty průhlednosti"
+
+#: Settings.ui.h:88
+msgid "Minimum opacity"
+msgstr "Minimální průhlednost"
+
+#: Settings.ui.h:89
+msgid "Maximum opacity"
+msgstr "Maximální průhlednost"
+
+#: Settings.ui.h:90
+msgid "Number overlay"
+msgstr "Čísla aplikací"
+
+#: Settings.ui.h:91
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr "Krátce ukázat čísla aplikací odpovídající klávesové zkratce"
+
+#: Settings.ui.h:92
+msgid "Show the dock if it is hidden"
+msgstr "Zobrazit dok, pokud je skrytý"
+
+#: Settings.ui.h:93
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Pokud je nastaveno automatické skrývání, stisknutím klávesové zkratky se dok "
+"krátce zobrazí."
+
+#: Settings.ui.h:94
+msgid "Shortcut for the options above"
+msgstr "Klávesová zkratka"
+
+#: Settings.ui.h:95
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Syntaxe: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:96
+msgid "Hide timeout (s)"
+msgstr "Prodleva při skrytí (s)"
+
+#: Settings.ui.h:97
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Zobrazit dok najetím myši ke kraji obrazovky"
+
+#: Settings.ui.h:98
+msgid "Autohide"
+msgstr "Automatické skrývání"
+
+#: Settings.ui.h:99
+msgid "Push to show: require pressure to show the dock"
+msgstr "Zobrazit dok až po zatlačení na kraj obrazovky"
+
+#: Settings.ui.h:100
+msgid "Enable in fullscreen mode"
+msgstr "Povolit celoobrazovkový režim"
+
+#: Settings.ui.h:101
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Zobrazit dok pokud nepřekáží oknům aplikací"
+
+#: Settings.ui.h:102
+msgid "Dodge windows"
+msgstr "Uhýbání oknům"
+
+#: Settings.ui.h:103
+msgid "All windows"
+msgstr "Všechna okna"
+
+#: Settings.ui.h:104
+msgid "Only focused application's windows"
+msgstr "Pouze aktivní okna"
+
+#: Settings.ui.h:105
+msgid "Only maximized windows"
+msgstr "Pouze maximalizovaná okna"
+
+#: Settings.ui.h:106
+msgid "Animation duration (s)"
+msgstr "Trvání animace (s)"
+
+#: Settings.ui.h:107
+msgid "Show timeout (s)"
+msgstr "Prodleva při zobrazení (s)"
+
+#: Settings.ui.h:108
+msgid "Pressure threshold"
+msgstr "Míra tlaku (px)"
+
+#~ msgid "Show a dot for each windows of the application."
+#~ msgstr "Zobrazit u ikon tečku indikující každé otevřené okno aplikace"
+
+#~ msgid "Show windows counter indicators"
+#~ msgstr "Indikátory počtu oken"
+
+#~ msgid "Adaptive"
+#~ msgstr "Adaptivní"
diff --git a/extensions/dash-to-dock/po/de.po b/extensions/dash-to-dock/po/de.po
new file mode 100644
index 00000000..65f840f0
--- /dev/null
+++ b/extensions/dash-to-dock/po/de.po
@@ -0,0 +1,586 @@
+# Translation for de
+# Copyright (C) 2014 Michele
+# This file is distributed under the same license as the dash-to-dock package.
+# Morris Jobke <hey@morrisjobke.de>, 2014.
+# Jonatan Zeidler <jonatan_zeidler@hotmail.de>, 2012
+# jonius <jonatan_zeidler@gmx.de>, 2012
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Dash to Dock\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-06-04 12:35+0100\n"
+"PO-Revision-Date: 2017-12-11 19:21+0100\n"
+"Last-Translator: Klaus Staedtler <staedtler-przyborski@web.de>\n"
+"Language-Team: jonius <jonatan_zeidler@gmx.de>\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.0.4\n"
+
+# Konjugation wegen Stellung im Satz
+#: prefs.js:113
+msgid "Primary monitor"
+msgstr "Primärer Anzeige"
+
+# Konjugation wegen Stellung im Satz
+#: prefs.js:122 prefs.js:129
+msgid "Secondary monitor "
+msgstr "Sekundärer Anzeige"
+
+#: prefs.js:154 Settings.ui.h:29
+msgid "Right"
+msgstr "Rechts"
+
+#: prefs.js:155 Settings.ui.h:26
+msgid "Left"
+msgstr "Links"
+
+#: prefs.js:205
+msgid "Intelligent autohide customization"
+msgstr "Automatisches Ausblenden anpassen"
+
+# Verwende Übersetzung aus Nautilus
+#: prefs.js:212 prefs.js:393 prefs.js:450
+msgid "Reset to defaults"
+msgstr "Auf Vorgaben zurücksetzen"
+
+#: prefs.js:386
+msgid "Show dock and application numbers"
+msgstr "Zeige Dock und Anwendungsnummern"
+
+#: prefs.js:443
+msgid "Customize middle-click behavior"
+msgstr "Verhalten des mittleren Klick anpassen"
+
+#: prefs.js:514
+msgid "Customize running indicators"
+msgstr "Laufende Anzeigen anpassen"
+
+#: appIcons.js:804
+msgid "All Windows"
+msgstr "Alle Fenster"
+
+#: Settings.ui.h:1
+msgid "Customize indicator style"
+msgstr "Anzeigenstil anpassen"
+
+#: Settings.ui.h:2
+msgid "Color"
+msgstr "Farbe"
+
+#: Settings.ui.h:3
+msgid "Border color"
+msgstr "Randfarbe"
+
+#: Settings.ui.h:4
+msgid "Border width"
+msgstr "Randbreite"
+
+#: Settings.ui.h:5
+msgid "Number overlay"
+msgstr "Nummer der Überlagung"
+
+#: Settings.ui.h:6
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"Zeige vorübergehend die Nummer der Anwendung über den Icons, passend zum "
+"Tastaturkürzel."
+
+#: Settings.ui.h:7
+msgid "Show the dock if it is hidden"
+msgstr "Dock anzeigen wenn es versteckt ist"
+
+#: Settings.ui.h:8
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Wenn automatisches Ausblenden benutzt wird, erscheint kurzzeitig das Dock "
+"durch drücken des Tastaturkürzels."
+
+#: Settings.ui.h:9
+msgid "Shortcut for the options above"
+msgstr "Tastaturkürzel für die obigen Aktionen"
+
+#: Settings.ui.h:10
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:11
+msgid "Hide timeout (s)"
+msgstr "Ausblende-Verzögerung in s"
+
+#: Settings.ui.h:12
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Wenn auf »Minimieren« eingestellt, können durch Doppelklick alle Fenster der "
+"Anwendung gleichzeitig minimiert werden."
+
+#: Settings.ui.h:13
+msgid "Shift+Click action"
+msgstr "Wirkung bei Umschalttaste + Mausklick"
+
+#: Settings.ui.h:14
+msgid "Raise window"
+msgstr "Fenster anheben"
+
+#: Settings.ui.h:15
+msgid "Minimize window"
+msgstr "Minimieren"
+
+#: Settings.ui.h:16
+msgid "Launch new instance"
+msgstr "Neues Fenster"
+
+# Vielleicht einen Tick besser als „umschalten“?
+#: Settings.ui.h:17
+msgid "Cycle through windows"
+msgstr "Zwischen den Fenstern der Anwendung wechseln"
+
+#: Settings.ui.h:18
+msgid "Quit"
+msgstr "Beenden"
+
+#: Settings.ui.h:19
+msgid "Behavior for Middle-Click."
+msgstr "Verhalten bei Mittel-Klick "
+
+#: Settings.ui.h:20
+#, fuzzy
+msgid "Middle-Click action"
+msgstr "Wirkung bei Mausklick"
+
+#: Settings.ui.h:21
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Verhalten bei Umschalttaste+Mittel-Klick."
+
+#: Settings.ui.h:22
+#, fuzzy
+msgid "Shift+Middle-Click action"
+msgstr "Wirkung bei Umschalttaste + Mausklick"
+
+#: Settings.ui.h:23
+msgid "Show the dock on"
+msgstr "Dock anzeigen auf"
+
+# Konjugation wegen Stellung im Satz
+#: Settings.ui.h:24
+msgid "Show on all monitors."
+msgstr "Auf allen Bildschirmen anzeigen"
+
+#: Settings.ui.h:25
+msgid "Position on screen"
+msgstr "Position auf Bildschirm"
+
+#: Settings.ui.h:27
+msgid "Bottom"
+msgstr "Unten"
+
+#: Settings.ui.h:28
+msgid "Top"
+msgstr "Oben"
+
+#: Settings.ui.h:30
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"Das Dock automatisch ausblenden, falls es ein Fenster der laufenden "
+"Anwendung überlagert. Einstellungen können weiter verfeinert werden."
+
+#: Settings.ui.h:31
+msgid "Intelligent autohide"
+msgstr "Automatisch ausblenden"
+
+#: Settings.ui.h:32
+msgid "Dock size limit"
+msgstr "Maximale Dockgröße"
+
+#: Settings.ui.h:33
+msgid "Panel mode: extend to the screen edge"
+msgstr "Panelmodus: bis zu Bildschirmkanten ausdehnen"
+
+#: Settings.ui.h:34
+msgid "Icon size limit"
+msgstr "Maximale Icongröße"
+
+#: Settings.ui.h:35
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Feste Icongröße: andere Icons durch Scrollen sichtbar machen"
+
+#: Settings.ui.h:36
+msgid "Position and size"
+msgstr "Position und Größe"
+
+#: Settings.ui.h:37
+msgid "Show favorite applications"
+msgstr "Favoriten anzeigen"
+
+#: Settings.ui.h:38
+msgid "Show running applications"
+msgstr "Laufende Anwendungen anzeigen"
+
+#: Settings.ui.h:39
+msgid "Isolate workspaces."
+msgstr "Isoliere Arbeitsflächen."
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "Zeige Vorschau der geöffneten Fenster"
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Falls deaktiviert, sind diese Einstellungen über Gnome-Tweak-Tool oder die "
+"Erweiterungsseite erreichbar."
+
+# Durchkopplung von Kompositum
+#: Settings.ui.h:42
+msgid "Show <i>Applications</i> icon"
+msgstr "Symbol <i>Anwendungen anzeigen</i> anzeigen"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr "Anwendungen-anzeigen-Button an den Anfang verschieben."
+
+# Durchkopplung von Kompositum
+#: Settings.ui.h:44
+msgid "Animate <i>Show Applications</i>."
+msgstr "Symbol <i>Anwendungen anzeigen</i> animieren"
+
+#: Settings.ui.h:45
+msgid "Launchers"
+msgstr "Starter"
+
+#: Settings.ui.h:46
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Benutze Super+(0-9) als Tastaturkürzel um Anwendungen zu aktivieren. Kann "
+"auch zusammen mit Umschalttaste und Strg. 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
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Verhalten bei Mausklick auf das Icon einer laufenden Anwendung."
+
+#: Settings.ui.h:49
+msgid "Click action"
+msgstr "Wirkung bei Mausklick"
+
+#: Settings.ui.h:50
+msgid "Minimize"
+msgstr "Minimieren"
+
+#: Settings.ui.h:51
+msgid "Minimize or overview"
+msgstr "Minimieren oder Übersicht"
+
+#: Settings.ui.h:52
+#, fuzzy
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Verhalten bei Mausklick auf das Icon einer laufenden Anwendung."
+
+#: Settings.ui.h:53
+#, fuzzy
+msgid "Scroll action"
+msgstr "Wirkung bei Mausklick"
+
+#: Settings.ui.h:54
+msgid "Do nothing"
+msgstr "Nichts tun"
+
+#: Settings.ui.h:55
+msgid "Switch workspace"
+msgstr "Arbeitsfläche umschalten"
+
+# Verwende Übersetzung aus Nautilus
+#: Settings.ui.h:56
+msgid "Behavior"
+msgstr "Verhalten"
+
+#: Settings.ui.h:57
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Einige Anpassungen, durch die das Dock besser in das standardmäßige GNOME-"
+"Thema eingepasst werden soll. Alternativ können im Folgenden besondere "
+"Einstellungen vorgenommen werden."
+
+#: Settings.ui.h:58
+msgid "Use built-in theme"
+msgstr "Angepasstes Thema dieser Erweiterung nutzen"
+
+#: Settings.ui.h:59
+msgid "Save space reducing padding and border radius."
+msgstr "Platz sparen, indem Innenabstand und Eckenradius verkleinert werden."
+
+#: Settings.ui.h:60
+msgid "Shrink the dash"
+msgstr "Dash verkleinern"
+
+#: Settings.ui.h:61
+msgid "Show a dot for each windows of the application."
+msgstr "Für jedes Fenster einer Anwendung einen kleinen Indikator einblenden."
+
+#: Settings.ui.h:62
+msgid "Show windows counter indicators"
+msgstr "Indikatoren für Fensterzahl"
+
+#: Settings.ui.h:63
+msgid "Set the background color for the dash."
+msgstr "Setze Hintergrundfarbe für das Dash"
+
+#: Settings.ui.h:64
+msgid "Customize the dash color"
+msgstr "Farbe des Dash anpassen"
+
+#: Settings.ui.h:65
+msgid "Tune the dash background opacity."
+msgstr "Die Hintergrundtransparenz des Dash einstellen."
+
+#: Settings.ui.h:66
+msgid "Customize opacity"
+msgstr "Transparenz anpassen"
+
+#: Settings.ui.h:67
+msgid "Opacity"
+msgstr "Transparenz"
+
+#: Settings.ui.h:68
+msgid "Force straight corner\n"
+msgstr "Erzwinge rechte Ecke\n"
+
+#: Settings.ui.h:70
+msgid "Appearance"
+msgstr "Erscheinungsbild"
+
+#: Settings.ui.h:71
+msgid "version: "
+msgstr "Version: "
+
+#: Settings.ui.h:72
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Verwandelt das Dash aus dem Übersichtsmodus in ein Dock"
+
+#: Settings.ui.h:73
+msgid "Created by"
+msgstr "Erstellt von"
+
+#: Settings.ui.h:74
+msgid "Webpage"
+msgstr "Internetseite"
+
+#: Settings.ui.h:75
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">Für dieses Programm besteht KEINERLEI GARANTIE.\n"
+" Details finden Sie in der <a href=\"https://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.html\">GNU General Public License, Version 2 oder später</"
+"a>.</span>"
+
+# Verwende Übersetzung aus Nautilus
+#: Settings.ui.h:77
+msgid "About"
+msgstr "Info"
+
+#: Settings.ui.h:78
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Dock einblenden, wenn Mauszeiger an Bildschirmkante anliegt."
+
+#: Settings.ui.h:79
+msgid "Autohide"
+msgstr "Automatisch ausblenden"
+
+#: Settings.ui.h:80
+msgid "Push to show: require pressure to show the dock"
+msgstr ""
+"Anstoßen erforderlich: Dock nur einblenden, wenn Mauszeiger schnell gegen "
+"Bildschirmkante stößt"
+
+#: Settings.ui.h:81
+msgid "Enable in fullscreen mode"
+msgstr "Im Vollbildmodus einschalten"
+
+#: Settings.ui.h:82
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Dock einblenden, falls es keine Anwendungsfenster überlagert."
+
+#: Settings.ui.h:83
+msgid "Dodge windows"
+msgstr "Fenstern ausweichen"
+
+#: Settings.ui.h:84
+msgid "All windows"
+msgstr "Alle Fenster"
+
+#: Settings.ui.h:85
+msgid "Only focused application's windows"
+msgstr "Nur Anwendungsfenster mit Fokus"
+
+#: Settings.ui.h:86
+msgid "Only maximized windows"
+msgstr "Nur maximierte Fenster"
+
+# Nach DIN 1313 werden Einheiten nicht in Klammern gesetzt
+#: Settings.ui.h:87
+msgid "Animation duration (s)"
+msgstr "Animationsdauer in s"
+
+#: Settings.ui.h:88
+msgid "0.000"
+msgstr "0,000"
+
+#: Settings.ui.h:89
+msgid "Show timeout (s)"
+msgstr "Einblende-Verzögerung in s"
+
+#: Settings.ui.h:90
+msgid "Pressure threshold"
+msgstr "Stoßschwellwert"
+
+#: Settings.ui.h:91
+msgid "Isolate monitors."
+msgstr "Isoliere Monitore."
+
+#, fuzzy
+#~ msgid ""
+#~ "With fixed icon size, only the edge of the dock and the <i>Show "
+#~ "Applications</i> icon are active."
+#~ msgstr ""
+#~ "Falls es zu viele Symbole auf dem Dock werden, dann bleibt nur "
+#~ "<i>Anwendungen anzeigen</i> aktiv."
+
+#~ msgid "Switch workspace by scrolling on the dock"
+#~ msgstr "Arbeitsfläche durch Scrollen wechseln"
+
+#~ msgid "Only consider windows of the focused application"
+#~ msgstr "Nur Fenster der fokussierten Anwendung einbeziehen"
+
+#~ msgid "Main Settings"
+#~ msgstr "Grundeinstellungen"
+
+#~ msgid "Dock Position"
+#~ msgstr "Dock-Position"
+
+#~ msgid "Dock is fixed and always visible"
+#~ msgstr "Das Dock hat eine feste Position und ist immer sichtbar"
+
+#~ msgid "Show delay [ms]"
+#~ msgstr "Einblendeverzögerung [ms]"
+
+#~ msgid "Hide delay [ms]"
+#~ msgstr "Ausblendeverzögerung [ms]"
+
+#~ msgid "Application based intellihide"
+#~ msgstr "Anwendungsbasiertes intelligentes Verstecken"
+
+#~ msgid "Show the dock on following monitor (if attached)"
+#~ msgstr "Zeige Dock auf folgendem Monitor (falls angeschlossen)"
+
+#~ 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"
+
+#~ msgid "Expand (experimental and buggy)"
+#~ msgstr "Komplette Höhe (experimentell und fehlerbehaftet)"
+
+#~ msgid "Maximum icon size"
+#~ msgstr "Maximale Symbolgröße"
+
+#~ msgid "16"
+#~ msgstr "16"
+
+#~ msgid "24"
+#~ msgstr "24"
+
+#~ msgid "32"
+#~ msgstr "32"
+
+#~ msgid "48"
+#~ msgstr "48"
+
+#~ msgid "64"
+#~ msgstr "64"
+
+#~ msgid "Optional features"
+#~ msgstr "Optionale Funktionen"
+
+#~ msgid "Deadtime between each workspace switching [ms]"
+#~ msgstr "Stillstandszeit zwischen Arbeitsflächenwechsel [ms]"
+
+#~ msgid "Only a 1px wide area close to the screen edge is active"
+#~ msgstr "Nur einen 1 Pixel-breiten Bereich am Rand nutzen"
+
+#~ msgid "All the area of the dock is active"
+#~ msgstr "Den gesamten Bereich des Docks nutzen"
+
+#~ msgid "Customize actions on mouse click"
+#~ msgstr "Aktion bei Mausklick anpassen"
+
+#~ msgid "Action on clicking on running app"
+#~ msgstr "Aktion beim Klicken auf eine laufende Anwendung"
+
+#~ msgid "Minimize window on shift+click (double click for all app windows)"
+#~ msgstr ""
+#~ "Fenster mit Shift+Klick minimieren (Doppelklick für alle Fenster der "
+#~ "Anwendung)"
+
+#~ msgid "Appearence and Themes"
+#~ msgstr "Erscheinungsbild und Themen"
+
+#~ msgid ""
+#~ "A customized theme is built in the extension. This is meant to work with "
+#~ "the default Adwaita theme: the dash is shrunk to save space, its "
+#~ "background transparency reduced, and custom indicators for the number of "
+#~ "windows of each application are added."
+#~ msgstr ""
+#~ "Ein angepasstes Thema ist in dieser Erweiterung enthalten. Es ist für das "
+#~ "Vorgabe-Adwaita-Thema gedacht: Das Dash ist schmaler, um Platz zu sparen, "
+#~ "die Hintergrundtransparenz ist reduziert und für jede Anwendung wird ein "
+#~ "Indikator für die Anzahl der Fenster eingefügt."
+
+#~ msgid ""
+#~ "Alternatively, for a better integration with custom themes, each "
+#~ "customization can be applied indipendently"
+#~ msgstr ""
+#~ "Alternativ können für eine bessere Integration Anpassungen vorgenommen "
+#~ "werden"
+
+#~ msgid "Shrink the dash size by reducing padding"
+#~ msgstr "Das Dash schmaler machen durch Verkleinern des Abstands zum Rand"
+
+#~ msgid "Apply custom theme (work only with the default Adwaita theme)"
+#~ msgstr ""
+#~ "Benutzerdefiniertes Theme verwenden (funktioniert nur mit dem Standard-"
+#~ "Adwaita-Theme)"
diff --git a/extensions/dash-to-dock/po/el.po b/extensions/dash-to-dock/po/el.po
new file mode 100644
index 00000000..88285213
--- /dev/null
+++ b/extensions/dash-to-dock/po/el.po
@@ -0,0 +1,444 @@
+# 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 <EMAIL@ADDRESS>, YEAR.
+# Δημήτριος-Ρωμανός Ησαΐας <dirosissaias@cosmotemail.gr>, 2017.
+# Vangelis Skarmoutsos <skarmoutsosv@gmail.com>, 2017.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Dash to Dock\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-06-04 12:35+0100\n"
+"PO-Revision-Date: 2017-09-29 21:48+0300\n"
+"Last-Translator: Vangelis Skarmoutsos <skarmoutsosv@gmail.com>\n"
+"Language-Team:\n"
+"Language: el\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"
+
+#: prefs.js:113
+msgid "Primary monitor"
+msgstr "Κύρια οθόνη"
+
+#: prefs.js:122 prefs.js:129
+msgid "Secondary monitor "
+msgstr "Δευτερεύουσα οθόνη "
+
+#: prefs.js:154 Settings.ui.h:29
+msgid "Right"
+msgstr "Δεξιά"
+
+#: prefs.js:155 Settings.ui.h:26
+msgid "Left"
+msgstr "Αριστερά"
+
+#: prefs.js:205
+msgid "Intelligent autohide customization"
+msgstr "Προσαρμογή έξυπνης απόκρυψης"
+
+#: prefs.js:212 prefs.js:393 prefs.js:450
+msgid "Reset to defaults"
+msgstr "Επαναφορά στις προεπιλογές"
+
+#: prefs.js:386
+msgid "Show dock and application numbers"
+msgstr "Προβολή της μπάρας και της αρίθμησης εφαρμογών"
+
+#: prefs.js:443
+msgid "Customize middle-click behavior"
+msgstr "Προσαρμογή συμπεριφοράς μεσαίου κλικ"
+
+#: prefs.js:514
+msgid "Customize running indicators"
+msgstr "Προσαρμογή δεικτών τρεχόντων εφαρμογών"
+
+#: appIcons.js:804
+msgid "All Windows"
+msgstr "Όλα τα παράθυρα"
+
+#: Settings.ui.h:1
+msgid "Customize indicator style"
+msgstr "Προσαρμογή του στυλ του δείκτη"
+
+#: Settings.ui.h:2
+msgid "Color"
+msgstr "Χρώμα"
+
+#: Settings.ui.h:3
+msgid "Border color"
+msgstr "Χρώμα περιγράμματος"
+
+#: Settings.ui.h:4
+msgid "Border width"
+msgstr "Πλάτος περιγράμματος"
+
+#: Settings.ui.h:5
+msgid "Number overlay"
+msgstr "Επίστρωση αριθμού"
+
+#: Settings.ui.h:6
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"Προσωρινή εμφάνιση αριθμών εφαρμογής πάνω από τα εικονίδια, που αντιστοιχούν "
+"στη συντόμευση πληκτρολογίου."
+
+#: Settings.ui.h:7
+msgid "Show the dock if it is hidden"
+msgstr "Προβολή της μπάρας αν είναι κρυμμένη"
+
+#: Settings.ui.h:8
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Αν χρησιμοποιείται η αυτόματη απόκρυψη, η μπάρα θα εμφανίζεται για λίγο "
+"χρόνο όταν πατιέται η συντόμευση."
+
+#: Settings.ui.h:9
+msgid "Shortcut for the options above"
+msgstr "Συντόμευση για τις παραπάνω επιλογές"
+
+#: Settings.ui.h:10
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Σύνταξη: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:11
+msgid "Hide timeout (s)"
+msgstr "Καθυστέρηση απόκρυψης"
+
+#: Settings.ui.h:12
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Όταν είναι ρυθμισμένο στην ελαχιστοποίηση, το διπλό κλικ ελαχιστοποιεί όλα "
+"τα παράθυρα της εφαρμογής."
+
+#: Settings.ui.h:13
+msgid "Shift+Click action"
+msgstr "Λειτουργία του Shift+Click"
+
+#: Settings.ui.h:14
+msgid "Raise window"
+msgstr "Ανύψωση παραθύρου"
+
+#: Settings.ui.h:15
+msgid "Minimize window"
+msgstr "Ελαχιστοποίηση παραθύρου"
+
+#: Settings.ui.h:16
+msgid "Launch new instance"
+msgstr "Εκκίνηση νέου παραθύρου"
+
+#: Settings.ui.h:17
+msgid "Cycle through windows"
+msgstr "Περιήγηση στα ανοικτά παράθυρα"
+
+#: Settings.ui.h:18
+msgid "Quit"
+msgstr "Έξοδος"
+
+#: Settings.ui.h:19
+msgid "Behavior for Middle-Click."
+msgstr "Συμπεριφορά μεσαίου κλικ."
+
+#: Settings.ui.h:20
+msgid "Middle-Click action"
+msgstr "Λειτουργία του μεσαίου κλικ"
+
+#: Settings.ui.h:21
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Συμπεριφορά Shift+Μεσαίο κλικ."
+
+#: Settings.ui.h:22
+msgid "Shift+Middle-Click action"
+msgstr "Λειτουργία του Shift+Μεσαίο κλικ"
+
+#: Settings.ui.h:23
+msgid "Show the dock on"
+msgstr "Εμφάνιση της μπάρας στην"
+
+#: Settings.ui.h:24
+msgid "Show on all monitors."
+msgstr "Εμφάνιση σε όλες τις οθόνες."
+
+#: Settings.ui.h:25
+msgid "Position on screen"
+msgstr "Θέση στην οθόνη"
+
+#: Settings.ui.h:27
+msgid "Bottom"
+msgstr "Κάτω"
+
+#: Settings.ui.h:28
+msgid "Top"
+msgstr "Πάνω"
+
+#: Settings.ui.h:30
+msgid ""
+"Hide the dock when it obstructs a window of the the current application. "
+"More refined settings are available."
+msgstr ""
+"Απόκρυψη της μπάρας όταν εμποδίζει ένα παράθυρο της τρέχουσας εφαρμογής. Πιο "
+"εξειδικευμένες επιλογές είναι επίσης διαθέσιμες."
+
+#: Settings.ui.h:31
+msgid "Intelligent autohide"
+msgstr "Έξυπνη απόκρυψη"
+
+#: Settings.ui.h:32
+msgid "Dock size limit"
+msgstr "Περιορισμός μεγέθους μπάρας"
+
+#: Settings.ui.h:33
+msgid "Panel mode: extend to the screen edge"
+msgstr "Λειτουργιά πάνελ: επέκταση της μπάρας ως τις άκρες της οθόνης"
+
+#: Settings.ui.h:34
+msgid "Icon size limit"
+msgstr "Περιορισμός μεγέθους εικονιδίων"
+
+#: Settings.ui.h:35
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr ""
+"Σταθερό μέγεθος εικονιδίων: κύλιση για την εμφάνιση περαιτέρω εικονιδίων"
+
+#: Settings.ui.h:36
+msgid "Position and size"
+msgstr "Θέση και μέγεθος"
+
+#: Settings.ui.h:37
+msgid "Show favorite applications"
+msgstr "Εμφάνιση αγαπημένων εφαρμογών"
+
+#: Settings.ui.h:38
+msgid "Show running applications"
+msgstr "Εμφάνιση εκτελούμενων εφαρμογών"
+
+#: Settings.ui.h:39
+msgid "Isolate workspaces."
+msgstr "Απομόνωση χώρων εργασίας."
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "Εμφάνιση προεπισκόπησης ανοικτών παραθύρων."
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Αν είναι απενεργοποιημένο, αυτές οι ρυθμίσεις είναι προσβάσιμες από το "
+"εργαλείο μικρορυθμίσεων του GNOME ή τον ιστοτόπο επεκτάσεων."
+
+#: Settings.ui.h:42
+msgid "Show <i>Applications</i> icon"
+msgstr "Εμφάνιση εικονιδίου <i>Εφαρμογές</i>"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr "Μετακίνηση του πλήκτρου εφαρμογών στην αρχή της μπάρας."
+
+#: Settings.ui.h:44
+msgid "Animate <i>Show Applications</i>."
+msgstr "Ενεργοποίηση γραφικών κατά την <i>Εμφάνιση Εφαρμογών</i>."
+
+#: Settings.ui.h:45
+msgid "Launchers"
+msgstr "Εκκινητές"
+
+#: Settings.ui.h:46
+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:47
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "Χρήση συντομεύσεων πληκτρολογίου για την ενεργοποίηση εφαρμογών"
+
+#: Settings.ui.h:48
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Συμπεριφορά κατά το κλικ σε εικονίδιο τρέχουσας εφαρμογής."
+
+#: Settings.ui.h:49
+msgid "Click action"
+msgstr "Συμπεριφορά κλικ"
+
+#: Settings.ui.h:50
+msgid "Minimize"
+msgstr "Ελαχιστοποίηση"
+
+#: Settings.ui.h:51
+msgid "Minimize or overview"
+msgstr "Ελαχιστοποίηση ή επισκόπηση"
+
+#: Settings.ui.h:52
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Συμπεριφορά κατά την κύλιση σε εικονίδιο τρέχουσας εφαρμογής."
+
+#: Settings.ui.h:53
+msgid "Scroll action"
+msgstr "Συμπεριφορά κύλισης"
+
+#: Settings.ui.h:54
+msgid "Do nothing"
+msgstr "Καμία δράση"
+
+#: Settings.ui.h:55
+msgid "Switch workspace"
+msgstr "Αλλαγή χώρου εργασίας"
+
+#: Settings.ui.h:56
+msgid "Behavior"
+msgstr "Συμπεριφορά"
+
+#: Settings.ui.h:57
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Μερικές προσαρμογές στοχεύουν στο να ενοποιήσουν την μπάρα με το "
+"προκαθορισμένο θέμα του GNOME. Εναλλακτικά, ειδικές επιλογές μπορούν να "
+"ενεργοποιηθούν παρακάτω."
+
+#: Settings.ui.h:58
+msgid "Use built-in theme"
+msgstr "Χρήση ενσωματωμένου θέματος"
+
+#: Settings.ui.h:59
+msgid "Save space reducing padding and border radius."
+msgstr "Εξοικονόμηση χώρου μειώνοντας τα κενά και τα περιθώρια."
+
+#: Settings.ui.h:60
+msgid "Shrink the dash"
+msgstr "Σμίκρυνση της μπάρας"
+
+#: Settings.ui.h:61
+msgid "Show a dot for each windows of the application."
+msgstr "Εμφανίζει μία τελεία για κάθε παράθυρο της εφαρμογής."
+
+#: Settings.ui.h:62
+msgid "Show windows counter indicators"
+msgstr "Εμφάνιση μετρητή παραθύρων"
+
+#: Settings.ui.h:63
+msgid "Set the background color for the dash."
+msgstr "Ορισμός χρώματος φόντου της μπάρας."
+
+#: Settings.ui.h:64
+msgid "Customize the dash color"
+msgstr "Προσαρμογή του χρώματος της μπάρας"
+
+#: Settings.ui.h:65
+msgid "Tune the dash background opacity."
+msgstr "Αλλαγή της αδιαφάνειας του φόντου της μπάρας."
+
+#: Settings.ui.h:66
+msgid "Customize opacity"
+msgstr "Προσαρμογή αδιαφάνειας"
+
+#: Settings.ui.h:67
+msgid "Opacity"
+msgstr "Αδιαφάνεια"
+
+#: Settings.ui.h:68
+msgid "Force straight corner\n"
+msgstr "Εξαναγκασμός ευθείας γωνίας\n"
+
+#: Settings.ui.h:70
+msgid "Appearance"
+msgstr "Εμφάνιση"
+
+#: Settings.ui.h:71
+msgid "version: "
+msgstr "έκδοση: "
+
+#: Settings.ui.h:72
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr ""
+"Μετακινεί το ταμπλό και εκτός της προεπισκόπησης μετατρέποντάς το σε μπάρα "
+"εφαρμογών"
+
+#: Settings.ui.h:73
+msgid "Created by"
+msgstr "Δημιουργήθηκε από"
+
+#: Settings.ui.h:74
+msgid "Webpage"
+msgstr "Ιστοσελίδα"
+
+#: Settings.ui.h:75
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">Αυτό πρόγραμμα παρέχεται χωρίς ΑΠΟΛΥΤΩΣ ΚΑΜΙΑ ΕΓΓΥΗΣΗ.\n"
+"Για λεπτομέρειες δείτε την <a href=\"https://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.html\">Γενική δημόσια άδεια GNU, έκδοση 2 ή νεότερη.</a> </"
+"span>"
+
+#: Settings.ui.h:77
+msgid "About"
+msgstr "Περί"
+
+#: Settings.ui.h:78
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Εμφάνιση της μπάρας όταν το ποντίκι πηγαίνει στην άκρη της οθόνης."
+
+#: Settings.ui.h:79
+msgid "Autohide"
+msgstr "Αυτόματη απόκρυψη"
+
+#: Settings.ui.h:80
+msgid "Push to show: require pressure to show the dock"
+msgstr "Πίεση για εμφάνιση: απαιτείται πίεση για την εμφάνιση της μπάρας"
+
+#: Settings.ui.h:81
+msgid "Enable in fullscreen mode"
+msgstr "Ενεργοποίηση σε κατάσταση πλήρους οθόνης"
+
+#: Settings.ui.h:82
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Εμφάνιση της μπάρας όταν δεν εμποδίζει τα παράθυρά των εφαρμογών."
+
+#: Settings.ui.h:83
+msgid "Dodge windows"
+msgstr "Αποφυγή παραθύρων"
+
+#: Settings.ui.h:84
+msgid "All windows"
+msgstr "Όλα τα παράθυρα"
+
+#: Settings.ui.h:85
+msgid "Only focused application's windows"
+msgstr "Μόνο τα παράθυρα της εστιασμένης εφαρμογής"
+
+#: Settings.ui.h:86
+msgid "Only maximized windows"
+msgstr "Μόνο μεγιστοποιημένα παράθυρα"
+
+#: Settings.ui.h:87
+msgid "Animation duration (s)"
+msgstr "Διάρκεια κίνησης γραφικών (s)"
+
+#: Settings.ui.h:88
+msgid "0.000"
+msgstr "0.000"
+
+#: Settings.ui.h:89
+msgid "Show timeout (s)"
+msgstr "Χρονικό όριο εμφάνισης"
+
+#: Settings.ui.h:90
+msgid "Pressure threshold"
+msgstr "Ελάχιστη πίεση"
diff --git a/extensions/dash-to-dock/po/es.po b/extensions/dash-to-dock/po/es.po
new file mode 100644
index 00000000..0bdfaa67
--- /dev/null
+++ b/extensions/dash-to-dock/po/es.po
@@ -0,0 +1,521 @@
+# Dash to Dock spanish translation.
+# This file is distributed under the same license as the Dash to Dock package.
+# Hugo Olabera <hugolabe@gmail.com>, 2015.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2019-03-06 01:57-0600\n"
+"PO-Revision-Date: 2020-03-23 11:25+0100\n"
+"Last-Translator: Adolfo Jayme Barrientos <fitojb@ubuntu.com>\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.3\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: prefs.js:264
+msgid "Primary monitor"
+msgstr "Monitor principal"
+
+#: prefs.js:273 prefs.js:280
+msgid "Secondary monitor "
+msgstr "Monitor secundario"
+
+#: prefs.js:305 Settings.ui.h:28
+msgid "Right"
+msgstr "Derecha"
+
+#: prefs.js:306 Settings.ui.h:25
+msgid "Left"
+msgstr "Izquierda"
+
+#: prefs.js:356
+msgid "Intelligent autohide customization"
+msgstr "Personalización de ocultamiento inteligente"
+
+#: prefs.js:363 prefs.js:548 prefs.js:604
+msgid "Reset to defaults"
+msgstr "Restablecer la configuración predeterminada"
+
+#: prefs.js:541
+msgid "Show dock and application numbers"
+msgstr "Mostrar dock y números de aplicación"
+
+#: prefs.js:597
+msgid "Customize middle-click behavior"
+msgstr "Personalizar comportamiento del botón central"
+
+#: prefs.js:680
+msgid "Customize running indicators"
+msgstr "Personalizar indicadores de ejecución"
+
+#: appIcons.js:790
+msgid "All Windows"
+msgstr "Todas las ventanas"
+
+#. Translators: %s is "Settings", which is automatically translated. You
+#. can also translate the full message if this fits better your language.
+#: appIcons.js:1092
+#, javascript-format
+msgid "Dash to Dock %s"
+msgstr "%s • Dash to Dock"
+
+#: Settings.ui.h:1
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Cuando se selecciona minimizar, una pulsación doble minimiza todas las "
+"ventanas de la aplicación."
+
+#: Settings.ui.h:2
+msgid "Shift+Click action"
+msgstr "Acción de Mayús + pulsación"
+
+#: Settings.ui.h:3
+msgid "Raise window"
+msgstr "Elevar ventana"
+
+#: Settings.ui.h:4
+msgid "Minimize window"
+msgstr "Minimizar ventana"
+
+#: Settings.ui.h:5
+msgid "Launch new instance"
+msgstr "Iniciar una instancia nueva"
+
+#: Settings.ui.h:6
+msgid "Cycle through windows"
+msgstr "Alternar entre ventanas"
+
+#: Settings.ui.h:7
+msgid "Minimize or overview"
+msgstr "Minimizar o vista de actividades"
+
+#: Settings.ui.h:8
+msgid "Show window previews"
+msgstr "Mostrar previsualizaciones de ventanas"
+
+#: Settings.ui.h:9
+msgid "Minimize or show previews"
+msgstr "Minimizar o mostrar previsualizaciones"
+
+#: Settings.ui.h:10
+msgid "Focus or show previews"
+msgstr "Focalizar o mostrar previsualizaciones"
+
+#: Settings.ui.h:11
+msgid "Quit"
+msgstr "Salir"
+
+#: Settings.ui.h:12
+msgid "Behavior for Middle-Click."
+msgstr "Comportamiento del botón central"
+
+#: Settings.ui.h:13
+msgid "Middle-Click action"
+msgstr "Acción del botón central"
+
+#: Settings.ui.h:14
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Comportamiento de Mayús + botón central"
+
+#: Settings.ui.h:15
+msgid "Shift+Middle-Click action"
+msgstr "Acción de Mayús + botón central"
+
+#: Settings.ui.h:16
+msgid "Enable Unity7 like glossy backlit items"
+msgstr "Activar elementos retroiluminados a la Unity 7"
+
+#: Settings.ui.h:17
+msgid "Use dominant color"
+msgstr "Utilizar el color dominante"
+
+#: Settings.ui.h:18
+msgid "Customize indicator style"
+msgstr "Personalizar estilo del indicador"
+
+#: Settings.ui.h:19
+msgid "Color"
+msgstr "Color"
+
+#: Settings.ui.h:20
+msgid "Border color"
+msgstr "Color del borde"
+
+#: Settings.ui.h:21
+msgid "Border width"
+msgstr "Grosor del borde"
+
+#: Settings.ui.h:22
+msgid "Show the dock on"
+msgstr "Mostrar el dock en"
+
+#: Settings.ui.h:23
+msgid "Show on all monitors."
+msgstr "Mostrar en todos los monitores."
+
+#: Settings.ui.h:24
+msgid "Position on screen"
+msgstr "Posición en pantalla"
+
+#: Settings.ui.h:26
+msgid "Bottom"
+msgstr "Inferior"
+
+#: Settings.ui.h:27
+msgid "Top"
+msgstr "Superior"
+
+#: Settings.ui.h:29
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"Ocultar el dock cuando cubre una ventana de la aplicación activa. Otras "
+"opciones disponibles."
+
+#: Settings.ui.h:30
+msgid "Intelligent autohide"
+msgstr "Ocultamiento automático inteligente"
+
+#: Settings.ui.h:31
+msgid "Dock size limit"
+msgstr "Tamaño máximo del dock"
+
+#: Settings.ui.h:32
+msgid "Panel mode: extend to the screen edge"
+msgstr "Modo panel: extender hasta los bordes de la pantalla"
+
+#: Settings.ui.h:33
+msgid "Icon size limit"
+msgstr "Tamaño máximo de los iconos"
+
+#: Settings.ui.h:34
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Tamaño fijo de los iconos: desplazarse para mostrar otros"
+
+#: Settings.ui.h:35
+msgid "Position and size"
+msgstr "Posición y tamaño"
+
+#: Settings.ui.h:36
+msgid "Show favorite applications"
+msgstr "Mostrar aplicaciones favoritas"
+
+#: Settings.ui.h:37
+msgid "Show running applications"
+msgstr "Mostrar aplicaciones en ejecución"
+
+#: Settings.ui.h:38
+msgid "Isolate workspaces."
+msgstr "Aislar los espacios de trabajo."
+
+#: Settings.ui.h:39
+msgid "Isolate monitors."
+msgstr "Aislar los monitores."
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "Mostrar vista rápida de ventanas."
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Si se desactiva, estas opciones estarán disponibles en Retoques de GNOME y "
+"el sitio web de la extensión."
+
+#: Settings.ui.h:42
+msgid "Show <i>Applications</i> icon"
+msgstr "Mostrar el icono <i>Aplicaciones</i>"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr "Mover el botón de aplicaciones al comienzo del dock"
+
+#: Settings.ui.h:44
+msgid "Animate <i>Show Applications</i>."
+msgstr "Animar <i>Mostrar aplicaciones</i>"
+
+#: Settings.ui.h:45
+msgid "Launchers"
+msgstr "Lanzadores"
+
+#: Settings.ui.h:46
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Activar Súper + (0-9) como atajos para activar aplicaciones. Pueden "
+"emplearse en conjunto 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
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Comportamiento al pulsar el icono de una aplicación en ejecución"
+
+#: Settings.ui.h:49
+msgid "Click action"
+msgstr "Acción al pulsar"
+
+#: Settings.ui.h:50
+msgid "Minimize"
+msgstr "Minimizar"
+
+#: Settings.ui.h:51
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Comportamiento al usar la rueda sobre el icono de una aplicación."
+
+#: Settings.ui.h:52
+msgid "Scroll action"
+msgstr "Acción al desplazarse"
+
+#: Settings.ui.h:53
+msgid "Do nothing"
+msgstr "No hacer nada"
+
+#: Settings.ui.h:54
+msgid "Switch workspace"
+msgstr "Cambiar de espacio de trabajo."
+
+#: Settings.ui.h:55
+msgid "Behavior"
+msgstr "Comportamiento"
+
+#: Settings.ui.h:56
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Utilizar el tema predeterminado de GNOME. Alternativamente, pueden elegirse "
+"ciertas opciones más abajo."
+
+#: Settings.ui.h:57
+msgid "Use built-in theme"
+msgstr "Utilizar el tema incorporado"
+
+#: Settings.ui.h:58
+msgid "Save space reducing padding and border radius."
+msgstr "Reducir los márgenes para ganar espacio"
+
+#: Settings.ui.h:59
+msgid "Shrink the dash"
+msgstr "Encoger el tablero"
+
+#: Settings.ui.h:60
+msgid "Customize windows counter indicators"
+msgstr "Personalizar los contadores de ventanas"
+
+#: Settings.ui.h:61
+msgid "Default"
+msgstr "Predeterminado"
+
+#: Settings.ui.h:62
+msgid "Dots"
+msgstr "Puntos"
+
+#: Settings.ui.h:63
+msgid "Squares"
+msgstr "Cuadrados"
+
+#: Settings.ui.h:64
+msgid "Dashes"
+msgstr "Rayas"
+
+#: Settings.ui.h:65
+msgid "Segmented"
+msgstr "Segmentado"
+
+#: Settings.ui.h:66
+msgid "Solid"
+msgstr "Sólido"
+
+#: Settings.ui.h:67
+msgid "Ciliora"
+msgstr "Ciliora"
+
+#: Settings.ui.h:68
+msgid "Metro"
+msgstr "Metro"
+
+#: Settings.ui.h:69
+msgid "Set the background color for the dash."
+msgstr "Escoger el color de fondo del dock."
+
+#: Settings.ui.h:70
+msgid "Customize the dash color"
+msgstr "Personalizar el color del dock"
+
+#: Settings.ui.h:71
+msgid "Tune the dash background opacity."
+msgstr "Ajustar la opacidad del fondo del dock."
+
+#: prefs.js:792 Settings.ui.h:72
+msgid "Customize opacity"
+msgstr "Personalizar opacidad"
+
+#: Settings.ui.h:73
+msgid "Fixed"
+msgstr "Fijo"
+
+#: Settings.ui.h:74
+msgid "Dynamic"
+msgstr "Dinámico"
+
+#: Settings.ui.h:75
+msgid "Opacity"
+msgstr "Opacidad"
+
+#: Settings.ui.h:76
+msgid "Force straight corner"
+msgstr "Forzar esquinas rectas"
+
+#: Settings.ui.h:78
+msgid "Appearance"
+msgstr "Apariencia"
+
+#: Settings.ui.h:79
+msgid "version: "
+msgstr "versión: "
+
+#: Settings.ui.h:80
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr ""
+"Mueve el panel fuera de la vista de actividades trasformándolo en un dock"
+
+#: Settings.ui.h:81
+msgid "Created by"
+msgstr "Creado por"
+
+#: Settings.ui.h:82
+msgid "Webpage"
+msgstr "Sitio web"
+
+#: Settings.ui.h:83
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">Este programa viene SIN NINGUNA GARANTÍA.\n"
+"Consulte la <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">Licencia Pública General de GNU, versión 2 o posterior</a> para obtener "
+"más detalles.</span>"
+
+#: Settings.ui.h:85
+msgid "About"
+msgstr "Acerca de"
+
+#: Settings.ui.h:86
+msgid "Customize minimum and maximum opacity values"
+msgstr "Personalizar los valores mínimo y máximo de opacidad"
+
+#: Settings.ui.h:87
+msgid "Minimum opacity"
+msgstr "Opacidad mínima"
+
+#: Settings.ui.h:88
+msgid "Maximum opacity"
+msgstr "Opacidad máxima"
+
+#: Settings.ui.h:89
+msgid "Number overlay"
+msgstr "Número sobrepuesto"
+
+#: Settings.ui.h:90
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"Al usar atajos, mostrar momentáneamente el número de aplicación sobre los "
+"iconos."
+
+#: Settings.ui.h:91
+msgid "Show the dock if it is hidden"
+msgstr "Mostrar el dock si está oculto"
+
+#: Settings.ui.h:92
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Si se activa el ocultamiento automático, el dock aparecerá momentáneamente "
+"al usar el atajo."
+
+#: Settings.ui.h:93
+msgid "Shortcut for the options above"
+msgstr "Atajo para las opciones anteriores"
+
+#: Settings.ui.h:94
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Sintaxis: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:95
+msgid "Hide timeout (s)"
+msgstr "Tiempo de ocultación (s)"
+
+#: Settings.ui.h:96
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Mostrar el dock al mover el puntero al borde de la pantalla"
+
+#: Settings.ui.h:97
+msgid "Autohide"
+msgstr "Ocultar automáticamente"
+
+#: Settings.ui.h:98
+msgid "Push to show: require pressure to show the dock"
+msgstr "Empujar para mostrar: requiere hacer presión para mostrar el dock"
+
+#: Settings.ui.h:99
+msgid "Enable in fullscreen mode"
+msgstr "Activar en modo de pantalla completa"
+
+#: Settings.ui.h:100
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Mostrar el dock cuando no cubra otras ventanas de aplicaciones."
+
+#: Settings.ui.h:101
+msgid "Dodge windows"
+msgstr "Esquivar las ventanas"
+
+#: Settings.ui.h:102
+msgid "All windows"
+msgstr "Todas las ventanas"
+
+#: Settings.ui.h:103
+msgid "Only focused application's windows"
+msgstr "Solo las ventanas de la aplicación activa"
+
+#: Settings.ui.h:104
+msgid "Only maximized windows"
+msgstr "Solo las ventanas maximizadas"
+
+#: Settings.ui.h:105
+msgid "Animation duration (s)"
+msgstr "Duración de la animación (s)"
+
+#: Settings.ui.h:106
+msgid "Show timeout (s)"
+msgstr "Tiempo de aparición (s)"
+
+#: Settings.ui.h:107
+msgid "Pressure threshold"
+msgstr "Nivel de presión"
+
+#: Settings.ui.h:108
+msgid "Show trash can"
+msgstr "Mostrar el icono Papelera"
+
+#: Settings.ui.h:109
+msgid "Show mounted volumes and devices"
+msgstr "Mostrar los dispositivos montados"
diff --git a/extensions/dash-to-dock/po/eu.po b/extensions/dash-to-dock/po/eu.po
new file mode 100644
index 00000000..fa780b1b
--- /dev/null
+++ b/extensions/dash-to-dock/po/eu.po
@@ -0,0 +1,543 @@
+# Dash to Dock Basque translation.
+# This file is distributed under the same license as the Dash to Dock package.
+# Ibai Oihanguren Sala <ibai@oihanguren.com>, 2020.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-03-22 23:54+0100\n"
+"PO-Revision-Date: 2020-03-22 23:54+0100\n"
+"Last-Translator: Ibai Oihanguren Sala <ibai@oihanguren.com>\n"
+"Language-Team: \n"
+"Language: eu\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: prefs.js:268
+msgid "Primary monitor"
+msgstr "Monitore nagusia"
+
+#: prefs.js:277 prefs.js:284
+msgid "Secondary monitor "
+msgstr "Bigarren monitorea "
+
+#: prefs.js:309 Settings.ui.h:29
+msgid "Right"
+msgstr "Eskuinean"
+
+#: prefs.js:310 Settings.ui.h:26
+msgid "Left"
+msgstr "Ezkerrean"
+
+#: prefs.js:360
+msgid "Intelligent autohide customization"
+msgstr "Ezkutatze adimentsuaren pertsonalizazioa"
+
+#: prefs.js:367 prefs.js:560 prefs.js:616
+msgid "Reset to defaults"
+msgstr "Berrezarri balio lehenetsiak"
+
+#: prefs.js:553
+msgid "Show dock and application numbers"
+msgstr "Erakutsi atrakea eta aplikazioen zenbakiak"
+
+#: prefs.js:609
+msgid "Customize middle-click behavior"
+msgstr "Pertsonalizatu erdiko klikaren portaera"
+
+#: prefs.js:692
+msgid "Customize running indicators"
+msgstr "Pertsonalizatu martxan egotearen adierazleak"
+
+#: prefs.js:804 Settings.ui.h:75
+msgid "Customize opacity"
+msgstr "Pertsonalizatu opakutasuna"
+
+#: appIcons.js:792
+msgid "All Windows"
+msgstr "Leiho guztiak"
+
+#. Translators: %s is "Settings", which is automatically translated. You
+#. can also translate the full message if this fits better your language.
+#: appIcons.js:1119
+#, javascript-format
+msgid "Dash to Dock %s"
+msgstr "Dash to Dock %s"
+
+#: locations.js:65
+msgid "Trash"
+msgstr "Zakarrontzia"
+
+#: locations.js:74
+msgid "Empty Trash"
+msgstr "Hustu zakarrontzia"
+
+#: locations.js:189
+msgid "Mount"
+msgstr "Muntatu"
+
+#: locations.js:232
+msgid "Eject"
+msgstr "Egotzi"
+
+#: locations.js:237
+msgid "Unmount"
+msgstr "Desmuntatu"
+
+#: Settings.ui.h:1
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Minimizatzea hautatuz gero, klik bikoitzak aplikazioaren leiho guztiak "
+"minimizatzen ditu."
+
+#: Settings.ui.h:2
+msgid "Shift+Click action"
+msgstr "Maius+Klik ekintza"
+
+#: Settings.ui.h:3
+msgid "Raise window"
+msgstr "Goratu leihoa"
+
+#: Settings.ui.h:4
+msgid "Minimize window"
+msgstr "Minimizatu leihoa"
+
+#: Settings.ui.h:5
+msgid "Launch new instance"
+msgstr "Abiarazi instantzia berria"
+
+#: Settings.ui.h:6
+msgid "Cycle through windows"
+msgstr "Txandakatu leihoak"
+
+#: Settings.ui.h:7
+msgid "Minimize or overview"
+msgstr "Minimizatu edo ikuspegi orokorra"
+
+#: Settings.ui.h:8
+msgid "Show window previews"
+msgstr "Erakutsi leihoen aurrebistak"
+
+#: Settings.ui.h:9
+msgid "Minimize or show previews"
+msgstr "Minimizatu edo erakutsi aurrebistak"
+
+#: Settings.ui.h:10
+msgid "Focus or show previews"
+msgstr "Fokuratu edo erakutsi aurrebistak"
+
+#: Settings.ui.h:11
+msgid "Quit"
+msgstr "Irten"
+
+#: Settings.ui.h:12
+msgid "Behavior for Middle-Click."
+msgstr "Erdiko klikaren portaera"
+
+#: Settings.ui.h:13
+msgid "Middle-Click action"
+msgstr "Erdiko klikaren ekintza"
+
+#: Settings.ui.h:14
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Maius+Erdiko klikaren portaera"
+
+#: Settings.ui.h:15
+msgid "Shift+Middle-Click action"
+msgstr "Maius+Erdiko klikaren ekintza"
+
+#: Settings.ui.h:16
+msgid "Enable Unity7 like glossy backlit items"
+msgstr "Gaitu Unity7 erako atzeko argidun elementu distiratsuak"
+
+#: Settings.ui.h:17
+msgid "Apply glossy effect."
+msgstr "Aplikatu efektu distiratsua."
+
+#: Settings.ui.h:18
+msgid "Use dominant color"
+msgstr "Erabili kolore nagusia"
+
+#: Settings.ui.h:19
+msgid "Customize indicator style"
+msgstr "Pertsonalizatu adierazleen estiloa"
+
+#: Settings.ui.h:20
+msgid "Color"
+msgstr "Kolorea"
+
+#: Settings.ui.h:21
+msgid "Border color"
+msgstr "Ertzaren kolorea"
+
+#: Settings.ui.h:22
+msgid "Border width"
+msgstr "Ertzaren zabalera"
+
+#: Settings.ui.h:23
+msgid "Show the dock on"
+msgstr "Erakutsi atrakea hemen"
+
+#: Settings.ui.h:24
+msgid "Show on all monitors."
+msgstr "Erakutsi monitore guztietan."
+
+#: Settings.ui.h:25
+msgid "Position on screen"
+msgstr "Pantailako posizioa"
+
+#: Settings.ui.h:27
+msgid "Bottom"
+msgstr "Behean"
+
+#: Settings.ui.h:28
+msgid "Top"
+msgstr "Goian"
+
+#: Settings.ui.h:30
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"Ezkutatu atrakea uneko aplikazioaren leiho bat eragozten duenean. Ezarpen "
+"zehatzagoak erabilgarri daude."
+
+#: Settings.ui.h:31
+msgid "Intelligent autohide"
+msgstr "Ezkutatze adimentsua"
+
+#: Settings.ui.h:32
+msgid "Dock size limit"
+msgstr "Atrakearen tamaina-muga"
+
+#: Settings.ui.h:33
+msgid "Panel mode: extend to the screen edge"
+msgstr "Panel modua: hedatu pantailaren ertzetara"
+
+#: Settings.ui.h:34
+msgid "Icon size limit"
+msgstr "Ikonoen tamaina-muga"
+
+#: Settings.ui.h:35
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Ikono-tamaina finkoa: korritu beste ikonoak erakusteko"
+
+#: Settings.ui.h:36
+msgid "Position and size"
+msgstr "Posizioa eta tamaina"
+
+#: Settings.ui.h:37
+msgid "Show favorite applications"
+msgstr "Erakutsi gogoko aplikazioak"
+
+#: Settings.ui.h:38
+msgid "Show running applications"
+msgstr "Erakutsi martxan dauden aplikazioak"
+
+#: Settings.ui.h:39
+msgid "Isolate workspaces."
+msgstr "Isolatu laneako areak."
+
+#: Settings.ui.h:40
+msgid "Isolate monitors."
+msgstr "Isolatu monitoreak."
+
+#: Settings.ui.h:41
+msgid "Show open windows previews."
+msgstr "Erakutsi irekitako leihoen aurrebistak."
+
+#: Settings.ui.h:42
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Desgaituz gero, ezarpen hauek gnome-tweak-tool aplikazioan edo hedapenen "
+"webgunean daude erabilgarri."
+
+#: Settings.ui.h:43
+msgid "Show <i>Applications</i> icon"
+msgstr "Erakutsi <i>Aplikazioak</i> ikonoa"
+
+#: Settings.ui.h:44
+msgid "Move the applications button at the beginning of the dock."
+msgstr "Eraman aplikazioen botoia atrakearen hasierara."
+
+#: Settings.ui.h:45
+msgid "Animate <i>Show Applications</i>."
+msgstr "Animatu <i>Erakutsi aplikazioak</i> ekintza."
+
+#: Settings.ui.h:46
+msgid "Show trash can"
+msgstr "Erakutsi zakarrontzia"
+
+#: Settings.ui.h:47
+msgid "Show mounted volumes and devices"
+msgstr "Erakutsi muntatutako bolumen eta gailuak"
+
+#: Settings.ui.h:48
+msgid "Launchers"
+msgstr "Abiarazleak"
+
+#: Settings.ui.h:49
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Gaitu Super+(0-9) aplikazioak aktibatzeko laster-tekla gisa. Maius eta Ktrl "
+"teklekin batera ere erabil daiteke."
+
+#: Settings.ui.h:50
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "Erabili laster-teklak aplikazioak aktibatzeko"
+
+#: Settings.ui.h:51
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Martxan dagoen aplikazio baten ikonoak klik egitean duen portaera."
+
+#: Settings.ui.h:52
+msgid "Click action"
+msgstr "Klik ekintza"
+
+#: Settings.ui.h:53
+msgid "Minimize"
+msgstr "Minimizatu"
+
+#: Settings.ui.h:54
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Aplikazio baten ikonoaren gainean sagua korritzean duen portaera."
+
+#: Settings.ui.h:55
+msgid "Scroll action"
+msgstr "Korritze-ekintza"
+
+#: Settings.ui.h:56
+msgid "Do nothing"
+msgstr "Ez egin ezer"
+
+#: Settings.ui.h:57
+msgid "Switch workspace"
+msgstr "Aldatu laneko areaz"
+
+#: Settings.ui.h:58
+msgid "Behavior"
+msgstr "Portaera"
+
+#: Settings.ui.h:59
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Atrakea GNOMEren gai lehenetsiarekin integratzeko ezarritako pertsonalizazio "
+"txikiak. Honen ordez aukera zehatzak gaitu daitezke jarraian."
+
+#: Settings.ui.h:60
+msgid "Use built-in theme"
+msgstr "Erabili integrazio gaia"
+
+#: Settings.ui.h:61
+msgid "Save space reducing padding and border radius."
+msgstr "Hartu leku gutxiago betegarria eta ertzen erradioa txikituz."
+
+#: Settings.ui.h:62
+msgid "Shrink the dash"
+msgstr "Txikiagotu abiarazle-panela"
+
+#: Settings.ui.h:63
+msgid "Customize windows counter indicators"
+msgstr "Pertsonalizatu leiho kopuruen adierazleak"
+
+#: Settings.ui.h:64
+msgid "Default"
+msgstr "Lehenetsia"
+
+#: Settings.ui.h:65
+msgid "Dots"
+msgstr "Puntuak"
+
+#: Settings.ui.h:66
+msgid "Squares"
+msgstr "Laukiak"
+
+#: Settings.ui.h:67
+msgid "Dashes"
+msgstr "Marrak"
+
+#: Settings.ui.h:68
+msgid "Segmented"
+msgstr "Zatikatua"
+
+#: Settings.ui.h:69
+msgid "Solid"
+msgstr "Solidoa"
+
+#: Settings.ui.h:70
+msgid "Ciliora"
+msgstr "Ciliora"
+
+#: Settings.ui.h:71
+msgid "Metro"
+msgstr "Metro"
+
+#: Settings.ui.h:72
+msgid "Set the background color for the dash."
+msgstr "Ezarri abiarazle-panelaren atzeko planoko kolorea"
+
+#: Settings.ui.h:73
+msgid "Customize the dash color"
+msgstr "Personalizatu abiarazle-panelaren kolorea"
+
+#: Settings.ui.h:74
+msgid "Tune the dash background opacity."
+msgstr "Doitu abiarazle-panelaren atzeko planoaren opakutasuna."
+
+#: Settings.ui.h:76
+msgid "Fixed"
+msgstr "Finkoa"
+
+#: Settings.ui.h:77
+msgid "Dynamic"
+msgstr "Dinamikoa"
+
+#: Settings.ui.h:78
+msgid "Opacity"
+msgstr "Opakutasuna"
+
+#: Settings.ui.h:79
+msgid "Force straight corner\n"
+msgstr "Behartu erpin zuzena\n"
+
+#: Settings.ui.h:80
+msgid "Appearance"
+msgstr "Itxura"
+
+#: Settings.ui.h:81
+msgid "version: "
+msgstr "bertsioa: "
+
+#: Settings.ui.h:82
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Abiarazle-panela ikuspegi orokorretik ateratzen du, atrake bihurtuz"
+
+#: Settings.ui.h:83
+msgid "Created by"
+msgstr "Sortzaileak"
+
+#: Settings.ui.h:84
+msgid "Webpage"
+msgstr "Webgunea"
+
+#: Settings.ui.h:85
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">Programa honek ez du inolako bermerik.\n"
+"Xehetasun gehiagorako, ikusi <a href=\"https://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.html\">GNUren Lizentzia Publiko Orokorra, 2. bertsioa edo "
+"berriagoa</a></span>"
+
+#: Settings.ui.h:87
+msgid "About"
+msgstr "Honi buruz"
+
+#: Settings.ui.h:88
+msgid "Customize minimum and maximum opacity values"
+msgstr "Pertsonalizatu opakutasun minimo eta maximoa"
+
+#: Settings.ui.h:89
+msgid "Minimum opacity"
+msgstr "Opakutasun minimoa"
+
+#: Settings.ui.h:90
+msgid "Maximum opacity"
+msgstr "Opakutasun maximoa"
+
+#: Settings.ui.h:91
+msgid "Number overlay"
+msgstr "Gainjarritako zenbakiak"
+
+#: Settings.ui.h:92
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"Erakutsi une batez laster-teklei dagozkien aplikazio-zenbakiak ikonoen "
+"gainean."
+
+#: Settings.ui.h:93
+msgid "Show the dock if it is hidden"
+msgstr "Erakutsi atrakea ezkutatua badago"
+
+#: Settings.ui.h:94
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Ezkutatze automatikoa erabiltzean, laster-tekla sakatuz atrakea une baterako "
+"azalduko da."
+
+#: Settings.ui.h:95
+msgid "Shortcut for the options above"
+msgstr "Goiko aukeretarako laster-teklak"
+
+#: Settings.ui.h:96
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Sintaxia: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:97
+msgid "Hide timeout (s)"
+msgstr "Ezkutatzeko denbora-muga (s)"
+
+#: Settings.ui.h:98
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Erakutsi atrakea sagua pantailaren ertzera eramatean."
+
+#: Settings.ui.h:99
+msgid "Autohide"
+msgstr "Ezkutatze automatikoa"
+
+#: Settings.ui.h:100
+msgid "Push to show: require pressure to show the dock"
+msgstr "Bultzatu erakusteko: presio pixka bat egin behar da atrakea erakusteko"
+
+#: Settings.ui.h:101
+msgid "Enable in fullscreen mode"
+msgstr "Gaitu pantaila osoko moduan"
+
+#: Settings.ui.h:102
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Erakutsi atrakea aplikazioaren leihoak eragozten ez dituenean."
+
+#: Settings.ui.h:103
+msgid "Dodge windows"
+msgstr "Saihestu leihoak"
+
+#: Settings.ui.h:104
+msgid "All windows"
+msgstr "Leiho guztiak"
+
+#: Settings.ui.h:105
+msgid "Only focused application's windows"
+msgstr "Fokuratutako aplikazioen leihoetan soilik"
+
+#: Settings.ui.h:106
+msgid "Only maximized windows"
+msgstr "Maximizatutako leihoetan soilik"
+
+#: Settings.ui.h:107
+msgid "Animation duration (s)"
+msgstr "Animazioaren iraupena (s)"
+
+#: Settings.ui.h:108
+msgid "Show timeout (s)"
+msgstr "Erakusteko denbora-muga (s)"
+
+#: Settings.ui.h:109
+msgid "Pressure threshold"
+msgstr "Presio-atalasea"
diff --git a/extensions/dash-to-dock/po/fr.po b/extensions/dash-to-dock/po/fr.po
new file mode 100644
index 00000000..c5a13e8a
--- /dev/null
+++ b/extensions/dash-to-dock/po/fr.po
@@ -0,0 +1,529 @@
+# 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 <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Dash to Dock\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2019-12-07 16:40+0900\n"
+"PO-Revision-Date: 2019-12-07 16:52+0900\n"
+"Last-Translator: Julien Humbert <julroy67@gmail.com>\n"
+"Language-Team: Jean-Baptiste Le Cz <jb.lecoz@gmail.com>\n"
+"Language: fr\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"
+
+#: prefs.js:268
+msgid "Primary monitor"
+msgstr "Moniteur principal"
+
+#: prefs.js:277 prefs.js:284
+msgid "Secondary monitor "
+msgstr "Moniteur secondaire "
+
+#: prefs.js:309 Settings.ui.h:28
+msgid "Right"
+msgstr "Droite"
+
+#: prefs.js:310 Settings.ui.h:25
+msgid "Left"
+msgstr "Gauche"
+
+#: prefs.js:360
+msgid "Intelligent autohide customization"
+msgstr "Personnalisation du masquage automatique"
+
+#: prefs.js:367 prefs.js:560 prefs.js:616
+msgid "Reset to defaults"
+msgstr "Restaurer la configuration par défaut"
+
+#: prefs.js:553
+msgid "Show dock and application numbers"
+msgstr "Afficher le dock et le numéro dapplication"
+
+#: prefs.js:609
+msgid "Customize middle-click behavior"
+msgstr "Personnaliser le comportement du clic milieu"
+
+#: prefs.js:692
+msgid "Customize running indicators"
+msgstr "Régler les indicateurs de fenêtres"
+
+#: prefs.js:804 Settings.ui.h:74
+msgid "Customize opacity"
+msgstr "Régler lopacité du dock"
+
+#: appIcons.js:810
+msgid "All Windows"
+msgstr "Toutes les fenêtres"
+
+#. Translators: %s is "Settings", which is automatically translated. You
+#. can also translate the full message if this fits better your language.
+#: appIcons.js:1127
+#, javascript-format
+msgid "Dash to Dock %s"
+msgstr "Dash to Dock %s"
+
+#: Settings.ui.h:1
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Quand réglé sur Minimiser, double-cliquer minimise toutes les fenêtres de "
+"lapplication."
+
+#: Settings.ui.h:2
+msgid "Shift+Click action"
+msgstr "Action Maj+Clic"
+
+#: Settings.ui.h:3
+msgid "Raise window"
+msgstr "Faire apparaître la fenêtre"
+
+#: Settings.ui.h:4
+msgid "Minimize window"
+msgstr "Minimiser la fenêtre"
+
+#: Settings.ui.h:5
+msgid "Launch new instance"
+msgstr "Lancer une nouvelle fenêtre"
+
+#: Settings.ui.h:6
+msgid "Cycle through windows"
+msgstr "Cycler sur les fenêtres"
+
+#: Settings.ui.h:7
+msgid "Minimize or overview"
+msgstr "Minimiser ou lancer lexposé"
+
+#: Settings.ui.h:8
+msgid "Show window previews"
+msgstr "Afficher des aperçus de fenêtres"
+
+#: Settings.ui.h:9
+msgid "Minimize or show previews"
+msgstr "Minimiser ou afficher laperçu des fenêtres"
+
+#: Settings.ui.h:10
+msgid "Focus or show previews"
+msgstr "Activer ou afficher laperçu des fenêtres"
+
+#: Settings.ui.h:11
+msgid "Quit"
+msgstr "Quitter"
+
+#: Settings.ui.h:12
+msgid "Behavior for Middle-Click."
+msgstr "Comportement pour le clic milieu."
+
+#: Settings.ui.h:13
+msgid "Middle-Click action"
+msgstr "Action du clic milieu"
+
+#: Settings.ui.h:14
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Comportement pour Maj+Clic milieu."
+
+#: Settings.ui.h:15
+msgid "Shift+Middle-Click action"
+msgstr "Action de Maj+Clic milieu"
+
+#: Settings.ui.h:16
+msgid "Enable Unity7 like glossy backlit items"
+msgstr "Activer un fond brillant à la Unity 7"
+
+#: Settings.ui.h:17
+msgid "Use dominant color"
+msgstr "Utiliser la couleur dominante"
+
+#: Settings.ui.h:18
+msgid "Customize indicator style"
+msgstr "Régler le style des indicateurs"
+
+#: Settings.ui.h:19
+msgid "Color"
+msgstr "Couleur"
+
+#: Settings.ui.h:20
+msgid "Border color"
+msgstr "Couleur de la bordure"
+
+#: Settings.ui.h:21
+msgid "Border width"
+msgstr "Épaisseur de la bordure"
+
+#: Settings.ui.h:22
+msgid "Show the dock on"
+msgstr "Afficher le dock sur le"
+
+#: Settings.ui.h:23
+msgid "Show on all monitors."
+msgstr "Afficher sur tous les écrans."
+
+#: Settings.ui.h:24
+msgid "Position on screen"
+msgstr "Position sur lécran"
+
+#: Settings.ui.h:26
+msgid "Bottom"
+msgstr "Bas"
+
+#: Settings.ui.h:27
+msgid "Top"
+msgstr "Haut"
+
+#: Settings.ui.h:29
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"Cache le dock quand il gêne lapplication principale. Dautres paramètres "
+"plus spécifiques sont disponibles."
+
+#: Settings.ui.h:30
+msgid "Intelligent autohide"
+msgstr "Masquage intelligent"
+
+#: Settings.ui.h:31
+msgid "Dock size limit"
+msgstr "Taille maximum du dock"
+
+#: Settings.ui.h:32
+msgid "Panel mode: extend to the screen edge"
+msgstr "Mode barre : étendre aux bords de lécran"
+
+#: Settings.ui.h:33
+msgid "Icon size limit"
+msgstr "Taille maximum des icônes"
+
+#: Settings.ui.h:34
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Taille des icônes fixe : faire défiler pour voir les autres icônes"
+
+#: Settings.ui.h:35
+msgid "Position and size"
+msgstr "Position et taille"
+
+#: Settings.ui.h:36
+msgid "Show favorite applications"
+msgstr "Afficher les applications favorites"
+
+#: Settings.ui.h:37
+msgid "Show running applications"
+msgstr "Afficher les applications en cours"
+
+#: Settings.ui.h:38
+msgid "Isolate workspaces."
+msgstr "Isoler les espaces de travail."
+
+#: Settings.ui.h:39
+msgid "Isolate monitors."
+msgstr "Isoler les moniteurs."
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "Afficher des aperçus de fenêtres."
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Si désactivés, ces paramètres sont accessibles via gnome-tweak-tool ou le "
+"site dextension GNOME."
+
+#: Settings.ui.h:42
+msgid "Show <i>Applications</i> icon"
+msgstr "Afficher le raccourci <i>Afficher les Applications</i>"
+
+#: 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
+msgid "Animate <i>Show Applications</i>."
+msgstr "Animer le raccourci <i>Afficher les Applications</i>."
+
+#: Settings.ui.h:45
+msgid "Show trash can"
+msgstr "Afficher la corbeille"
+
+#: Settings.ui.h:46
+msgid "Show mounted volumes and devices"
+msgstr "Afficher les appareils et volumes montés"
+
+#: Settings.ui.h:47
+msgid "Launchers"
+msgstr "Lanceurs"
+
+#: Settings.ui.h:48
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Activer Super+(0-9) comme raccourcis pour activer les applications. On peut "
+"lutiliser aussi avec Maj et Ctrl."
+
+#: Settings.ui.h:49
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "Utiliser des raccourcis clavier pour activer les applications"
+
+#: Settings.ui.h:50
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Comportement du clic sur licône dune application ouverte."
+
+#: Settings.ui.h:51
+msgid "Click action"
+msgstr "Action du clic"
+
+#: Settings.ui.h:52
+msgid "Minimize"
+msgstr "Minimiser la fenêtre"
+
+#: Settings.ui.h:53
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Comportement lors du défilement sur licône dune application."
+
+#: Settings.ui.h:54
+msgid "Scroll action"
+msgstr "Action du défilement"
+
+#: Settings.ui.h:55
+msgid "Do nothing"
+msgstr "Ne rien faire"
+
+#: Settings.ui.h:56
+msgid "Switch workspace"
+msgstr "Changer despace de travail"
+
+#: Settings.ui.h:57
+msgid "Behavior"
+msgstr "Comportement"
+
+#: Settings.ui.h:58
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Assortir le dock avec le thème par défaut. Sinon, vous pouvez personnaliser "
+"quelques paramètres ci-dessous."
+
+#: Settings.ui.h:59
+msgid "Use built-in theme"
+msgstr "Utiliser le thème par défaut"
+
+#: Settings.ui.h:60
+msgid "Save space reducing padding and border radius."
+msgstr "Réduire la taille des marges pour gagner de la place."
+
+#: Settings.ui.h:61
+msgid "Shrink the dash"
+msgstr "Réduire les marges"
+
+#: Settings.ui.h:62
+msgid "Customize windows counter indicators"
+msgstr "Personnaliser lindicateur du compteur de fenêtres"
+
+#: Settings.ui.h:63
+msgid "Default"
+msgstr "Défaut"
+
+#: Settings.ui.h:64
+msgid "Dots"
+msgstr "Points"
+
+#: Settings.ui.h:65
+msgid "Squares"
+msgstr "Carrés"
+
+#: Settings.ui.h:66
+msgid "Dashes"
+msgstr "Tirets"
+
+#: Settings.ui.h:67
+msgid "Segmented"
+msgstr "Segments"
+
+#: Settings.ui.h:68
+msgid "Solid"
+msgstr "Solides"
+
+#: Settings.ui.h:69
+msgid "Ciliora"
+msgstr "Ciliora"
+
+#: Settings.ui.h:70
+msgid "Metro"
+msgstr "Métro"
+
+#: Settings.ui.h:71
+msgid "Set the background color for the dash."
+msgstr "Choisir la couleur de fond du dock."
+
+#: Settings.ui.h:72
+msgid "Customize the dash color"
+msgstr "Changer la couleur du dock"
+
+#: Settings.ui.h:73
+msgid "Tune the dash background opacity."
+msgstr "Régler lopacité en fond du dock."
+
+#: Settings.ui.h:75
+msgid "Fixed"
+msgstr "Fixe"
+
+#: Settings.ui.h:76
+msgid "Dynamic"
+msgstr "Dynamique"
+
+#: Settings.ui.h:77
+msgid "Opacity"
+msgstr "Opacité"
+
+#: Settings.ui.h:78
+msgid "Force straight corner\n"
+msgstr "Forcer des coins droits\n"
+
+#: Settings.ui.h:80
+msgid "Appearance"
+msgstr "Apparence"
+
+#: Settings.ui.h:81
+msgid "version: "
+msgstr "Version : "
+
+#: Settings.ui.h:82
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Place le dash hors de laperçu des fenêtres, le transformant en dock"
+
+#: Settings.ui.h:83
+msgid "Created by"
+msgstr "Conçu par"
+
+#: Settings.ui.h:84
+msgid "Webpage"
+msgstr "Site web"
+
+#: Settings.ui.h:85
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">Ce programme est distribué SANS AUCUNE GARANTIE.\n"
+"Consultez la <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">Licence Générale Publique GNU version 2 ou plus récente</a> pour plus "
+"dinformations.</span>"
+
+#: Settings.ui.h:87
+msgid "About"
+msgstr "À propos"
+
+#: Settings.ui.h:88
+msgid "Customize minimum and maximum opacity values"
+msgstr "Personnaliser les valeurs minimum et maximum de lopacité"
+
+#: Settings.ui.h:89
+msgid "Minimum opacity"
+msgstr "Opacité minimum"
+
+#: Settings.ui.h:90
+msgid "Maximum opacity"
+msgstr "Opacité maximum"
+
+#: Settings.ui.h:91
+msgid "Number overlay"
+msgstr "Numéro dapplication"
+
+#: Settings.ui.h:92
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"Afficher temporairement les numéros dapplication sur les icônes, "
+"correspondant au raccourci clavier."
+
+#: Settings.ui.h:93
+msgid "Show the dock if it is hidden"
+msgstr "Afficher le dock sil est caché"
+
+#: Settings.ui.h:94
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Si le masquage automatique est actif, le dock apparaîtra temporairement lors "
+"de lutilisation du raccourci."
+
+#: Settings.ui.h:95
+msgid "Shortcut for the options above"
+msgstr "Raccourci pour les options dessus"
+
+#: Settings.ui.h:96
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Syntaxe : <Maj>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:97
+msgid "Hide timeout (s)"
+msgstr "Délai de masquage (s)"
+
+#: Settings.ui.h:98
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Afficher le dock en survolant le bord de lécran."
+
+#: Settings.ui.h:99
+msgid "Autohide"
+msgstr "Masquage automatique"
+
+#: Settings.ui.h:100
+msgid "Push to show: require pressure to show the dock"
+msgstr "Pousser pour Afficher : requiert une pression pour afficher le dock"
+
+#: Settings.ui.h:101
+msgid "Enable in fullscreen mode"
+msgstr "Activer en mode plein-écran"
+
+#: Settings.ui.h:102
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Afficher le dock quand il ne gêne pas les fenêtres."
+
+#: Settings.ui.h:103
+msgid "Dodge windows"
+msgstr "Masquage automatique intelligent"
+
+#: Settings.ui.h:104
+msgid "All windows"
+msgstr "Toutes les fenêtres"
+
+#: Settings.ui.h:105
+msgid "Only focused application's windows"
+msgstr "Seulement la fenêtre de lapplication active"
+
+#: Settings.ui.h:106
+msgid "Only maximized windows"
+msgstr "Seulement les fenêtres maximisées"
+
+#: Settings.ui.h:107
+msgid "Animation duration (s)"
+msgstr "Durée de lanimation (s)"
+
+#: Settings.ui.h:108
+msgid "Show timeout (s)"
+msgstr "Délai dapparition (s)"
+
+#: Settings.ui.h:109
+msgid "Pressure threshold"
+msgstr "Seuil de pression"
+
+#~ msgid "Adaptive"
+#~ msgstr "Adaptatif"
+
+#~ msgid "Show a dot for each windows of the application."
+#~ msgstr "Afficher un point pour chaque fenêtre ouverte de lapplication."
+
+#~ msgid "0.000"
+#~ msgstr "0.000"
diff --git a/extensions/dash-to-dock/po/gl.po b/extensions/dash-to-dock/po/gl.po
new file mode 100644
index 00000000..15f8122f
--- /dev/null
+++ b/extensions/dash-to-dock/po/gl.po
@@ -0,0 +1,438 @@
+# Dash to Dock galician translation.
+# This file is distributed under the same license as the Dash to Dock package.
+# Xosé M. Lamas <correo@xmgz.eu>, 2018.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2018-03-30 11:27-0400\n"
+"PO-Revision-Date: 2018-03-30 16:42-0500\n"
+"Last-Translator: Xosé M. Lamas <correo@xmgz.eu>\n"
+"Language-Team: \n"
+"Language: gl\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"
+
+#: prefs.js:113
+msgid "Primary monitor"
+msgstr "Monitor principal"
+
+#: prefs.js:122 prefs.js:129
+msgid "Secondary monitor "
+msgstr "Monitor secundario"
+
+#: prefs.js:154 Settings.ui.h:29
+msgid "Right"
+msgstr "Dereita"
+
+#: prefs.js:155 Settings.ui.h:26
+msgid "Left"
+msgstr "Esquerda"
+
+#: prefs.js:205
+msgid "Intelligent autohide customization"
+msgstr "Personalización de agochamento intelixente"
+
+#: prefs.js:212 prefs.js:393 prefs.js:450
+msgid "Reset to defaults"
+msgstr "Restablecer aos valores por omisión"
+
+#: prefs.js:386
+msgid "Show dock and application numbers"
+msgstr "Mostrar dock e números do aplicativo"
+
+#: prefs.js:443
+msgid "Customize middle-click behavior"
+msgstr "Personalizar comportamento do botón central"
+
+#: prefs.js:514
+msgid "Customize running indicators"
+msgstr "Personalizar indicadores en execución"
+
+#: appIcons.js:804
+msgid "All Windows"
+msgstr "Todas as ventás"
+
+#: Settings.ui.h:1
+msgid "Customize indicator style"
+msgstr "Personalizar estilo do indicador"
+
+#: Settings.ui.h:2
+msgid "Color"
+msgstr "Cor"
+
+#: Settings.ui.h:3
+msgid "Border color"
+msgstr "Cor do borde"
+
+#: Settings.ui.h:4
+msgid "Border width"
+msgstr "Ancho do borde"
+
+#: Settings.ui.h:5
+msgid "Number overlay"
+msgstr "Número na vista extendida"
+
+#: Settings.ui.h:6
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"Mostrar brevemente o número de aplicativo sobre a icona que corresponda "
+"ao atallo."
+
+#: Settings.ui.h:7
+msgid "Show the dock if it is hidden"
+msgstr "Mostrar o dock si está agochado"
+
+#: Settings.ui.h:8
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Si se activa o agochamento automático, o dock aparecerá brevemente "
+"ao utilizar o atallo."
+
+#: Settings.ui.h:9
+msgid "Shortcut for the options above"
+msgstr "Atallo para os axustes de arriba"
+
+#: Settings.ui.h:10
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Sintaxe: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:11
+msgid "Hide timeout (s)"
+msgstr "Tempo en agocharse (s)"
+
+#: Settings.ui.h:12
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Cando se establece minimizar, facendo duplo click minimiza todas as ventás "
+"do aplicativo."
+
+#: Settings.ui.h:13
+msgid "Shift+Click action"
+msgstr "Acción de Maiús + pulsación"
+
+#: Settings.ui.h:14
+msgid "Raise window"
+msgstr "Elevar ventá"
+
+#: Settings.ui.h:15
+msgid "Minimize window"
+msgstr "Minimizar ventá"
+
+#: Settings.ui.h:16
+msgid "Launch new instance"
+msgstr "Iniciar unha nova instancia"
+
+#: Settings.ui.h:17
+msgid "Cycle through windows"
+msgstr "Alternar entre ventás"
+
+#: Settings.ui.h:18
+msgid "Quit"
+msgstr "Saír"
+
+#: Settings.ui.h:19
+msgid "Behavior for Middle-Click."
+msgstr "Comportamento do botón central"
+
+#: Settings.ui.h:20
+msgid "Middle-Click action"
+msgstr "Acción do botón central"
+
+#: Settings.ui.h:21
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Comportamento de Maiús + botón central"
+
+#: Settings.ui.h:22
+msgid "Shift+Middle-Click action"
+msgstr "Acción de Maiús + botón central"
+
+#: Settings.ui.h:23
+msgid "Show the dock on"
+msgstr "Mostrar o dock en"
+
+#: Settings.ui.h:24
+msgid "Show on all monitors."
+msgstr "Mostrar en todos os monitores."
+
+#: Settings.ui.h:25
+msgid "Position on screen"
+msgstr "Posición na pantalla"
+
+#: Settings.ui.h:27
+msgid "Bottom"
+msgstr "Inferior"
+
+#: Settings.ui.h:28
+msgid "Top"
+msgstr "Superior"
+
+#: Settings.ui.h:30
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"Agochar o dock cando obstrúe a ventá do aplicativo actual. Dispoñibles "
+"máis opcións."
+
+#: Settings.ui.h:31
+msgid "Intelligent autohide"
+msgstr "Agochamento automático intelixente"
+
+#: Settings.ui.h:32
+msgid "Dock size limit"
+msgstr "Tamaño máximo do dock"
+
+#: Settings.ui.h:33
+msgid "Panel mode: extend to the screen edge"
+msgstr "Modo panel: extender ate os bordes da pantalla"
+
+#: Settings.ui.h:34
+msgid "Icon size limit"
+msgstr "Tamaño máximo das iconas"
+
+#: Settings.ui.h:35
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Tamaño fixo das iconas: desprazarse para mostrar outros"
+
+#: Settings.ui.h:36
+msgid "Position and size"
+msgstr "Posición e tamaño"
+
+#: Settings.ui.h:37
+msgid "Show favorite applications"
+msgstr "Mostrar aplicativos favoritos"
+
+#: Settings.ui.h:38
+msgid "Show running applications"
+msgstr "Mostrar aplicativos en execución"
+
+#: Settings.ui.h:39
+msgid "Isolate workspaces."
+msgstr "Illar os espazos de traballo."
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "Mostrar vista rápida de ventás."
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+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
+msgid "Show <i>Applications</i> icon"
+msgstr "Mostrar a icona <i>Aplicativos</i>"
+
+#: 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
+msgid "Animate <i>Show Applications</i>."
+msgstr "Animar <i>Mostrar aplicativos</i>"
+
+#: Settings.ui.h:45
+msgid "Launchers"
+msgstr "Lanzadores"
+
+#: Settings.ui.h:46
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Habilitar Súper+(0-9) como atallos para activar aplicativos. Tamén puede "
+"ser utilizado 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
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Comportamiento ao pulsar na icona de un aplicativo en execución."
+
+#: Settings.ui.h:49
+msgid "Click action"
+msgstr "Acción de pulsación"
+
+#: Settings.ui.h:50
+msgid "Minimize"
+msgstr "Minimizar"
+
+#: Settings.ui.h:51
+msgid "Minimize or overview"
+msgstr "Minimizar ou vista de actividades"
+
+#: Settings.ui.h:52
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Comportamiento ao utilizar a roda sobre a icona de un aplicativo."
+
+#: Settings.ui.h:53
+msgid "Scroll action"
+msgstr "Acción de desprazamento"
+
+#: Settings.ui.h:54
+msgid "Do nothing"
+msgstr "Non facer nada"
+
+#: Settings.ui.h:55
+msgid "Switch workspace"
+msgstr "Cambiar de espazo de traballo."
+
+#: Settings.ui.h:56
+msgid "Behavior"
+msgstr "Comportamento"
+
+#: Settings.ui.h:57
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Utilizar o decorado predeterminado de GNOME. De xeito alternativo, poden habilitarse "
+"certos axustes aquí abaixo."
+
+#: Settings.ui.h:58
+msgid "Use built-in theme"
+msgstr "Utilizar o decorado incorporado"
+
+#: Settings.ui.h:59
+msgid "Save space reducing padding and border radius."
+msgstr "Reducir as marxes para gañar espazo."
+
+#: Settings.ui.h:60
+msgid "Shrink the dash"
+msgstr "Comprimir o taboleiro"
+
+#: Settings.ui.h:61
+msgid "Show a dot for each windows of the application."
+msgstr "Mostrar un punto por cada ventá do aplicativo."
+
+#: Settings.ui.h:62
+msgid "Show windows counter indicators"
+msgstr "Mostrar contador de ventás"
+
+#: Settings.ui.h:63
+msgid "Set the background color for the dash."
+msgstr "Escoller a cor de fondo do taboleiro."
+
+#: Settings.ui.h:64
+msgid "Customize the dash color"
+msgstr "Personalizar a cor do dock"
+
+#: Settings.ui.h:65
+msgid "Tune the dash background opacity."
+msgstr "Axustar a opacidade do fondo."
+
+#: Settings.ui.h:66
+msgid "Customize opacity"
+msgstr "Personalizar opacidade"
+
+#: Settings.ui.h:67
+msgid "Opacity"
+msgstr "Opacidade"
+
+#: Settings.ui.h:68
+msgid "Force straight corner\n"
+msgstr "Forzar esquinas rectas\n"
+
+#: Settings.ui.h:70
+msgid "Appearance"
+msgstr "Aparencia"
+
+#: Settings.ui.h:71
+msgid "version: "
+msgstr "versión: "
+
+#: Settings.ui.h:72
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr ""
+"Move o panel da vista de actividades transformándoo nun dock"
+
+#: Settings.ui.h:73
+msgid "Created by"
+msgstr "Creado por"
+
+#: Settings.ui.h:74
+msgid "Webpage"
+msgstr "Sitio web"
+
+#: Settings.ui.h:75
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">Este programa ven SIN GARANTÍA ALGUNHA.\n"
+"Consulte a <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">Licenza Pública Xeral de GNU, versión 2 ou posterior</a> para obter "
+"máis detalles.</span>"
+
+#: Settings.ui.h:77
+msgid "About"
+msgstr "Sobre o"
+
+#: Settings.ui.h:78
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Mostrar o dock ao pasar o punteiro sobre o borde da pantalla."
+
+#: Settings.ui.h:79
+msgid "Autohide"
+msgstr "Agochar automáticamente"
+
+#: Settings.ui.h:80
+msgid "Push to show: require pressure to show the dock"
+msgstr "Empurrar para mostrasr: require facer presión para mostrar o dock"
+
+#: Settings.ui.h:81
+msgid "Enable in fullscreen mode"
+msgstr "Activar en modo de pantalla completa"
+
+#: Settings.ui.h:82
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Mostrar o dock cando non cubra outras ventás de aplicativos."
+
+#: Settings.ui.h:83
+msgid "Dodge windows"
+msgstr "Evitar as ventás"
+
+#: Settings.ui.h:84
+msgid "All windows"
+msgstr "Todas as ventás"
+
+#: Settings.ui.h:85
+msgid "Only focused application's windows"
+msgstr "Só as ventás do aplicativo activo"
+
+#: Settings.ui.h:86
+msgid "Only maximized windows"
+msgstr "Só as ventás maximizadas"
+
+#: Settings.ui.h:87
+msgid "Animation duration (s)"
+msgstr "Duración da animación (s)"
+
+#: Settings.ui.h:88
+msgid "0.000"
+msgstr "0.000"
+
+#: Settings.ui.h:89
+msgid "Show timeout (s)"
+msgstr "Tempo de aparición"
+
+#: Settings.ui.h:90
+msgid "Pressure threshold"
+msgstr "Límite de presión"
diff --git a/extensions/dash-to-dock/po/hu.po b/extensions/dash-to-dock/po/hu.po
new file mode 100644
index 00000000..36235281
--- /dev/null
+++ b/extensions/dash-to-dock/po/hu.po
@@ -0,0 +1,440 @@
+# Hungarian translation for dash-to-dock.
+# Copyright (C) 2017 Free Software Foundation, Inc.
+# This file is distributed under the same license as the dash-to-dock package.
+#
+# Balázs Úr <urbalazs@gmail.com>, 2017.
+msgid ""
+msgstr ""
+"Project-Id-Version: dash-to-dock master\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-06-04 12:35+0100\n"
+"PO-Revision-Date: 2017-04-10 22:02+0100\n"
+"Last-Translator: Balázs Úr <urbalazs@gmail.com>\n"
+"Language-Team: Hungarian <openscope@googlegroups.com>\n"
+"Language: hu\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 2.0\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: prefs.js:113
+msgid "Primary monitor"
+msgstr "Elsődleges kijelző"
+
+#: prefs.js:122 prefs.js:129
+msgid "Secondary monitor "
+msgstr "Másodlagos kijelző"
+
+#: prefs.js:154 Settings.ui.h:29
+msgid "Right"
+msgstr "Jobb"
+
+#: prefs.js:155 Settings.ui.h:26
+msgid "Left"
+msgstr "Bal"
+
+#: prefs.js:205
+msgid "Intelligent autohide customization"
+msgstr "Intelligens automatikus elrejtés személyre szabása"
+
+#: prefs.js:212 prefs.js:393 prefs.js:450
+msgid "Reset to defaults"
+msgstr "Visszaállítás az alapértékekre"
+
+#: prefs.js:386
+msgid "Show dock and application numbers"
+msgstr "A dokk és az alkalmazás számainak megjelenítése"
+
+#: prefs.js:443
+msgid "Customize middle-click behavior"
+msgstr "Középső kattintás viselkedésének személyre szabása"
+
+#: prefs.js:514
+msgid "Customize running indicators"
+msgstr "Futásjelzők személyre szabása"
+
+#: appIcons.js:804
+msgid "All Windows"
+msgstr "Összes Ablak"
+
+#: Settings.ui.h:1
+msgid "Customize indicator style"
+msgstr "Jelző stílusának személyre szabása"
+
+#: Settings.ui.h:2
+msgid "Color"
+msgstr "Szín"
+
+#: Settings.ui.h:3
+msgid "Border color"
+msgstr "Szegély színe"
+
+#: Settings.ui.h:4
+msgid "Border width"
+msgstr "Szegély szélessége"
+
+#: Settings.ui.h:5
+msgid "Number overlay"
+msgstr "Szám rátét"
+
+#: Settings.ui.h:6
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"Az alkalmazás számainak átmeneti megjelenítése az ikonok fölött a "
+"gyorsbillentyűnek megfelelően."
+
+#: Settings.ui.h:7
+msgid "Show the dock if it is hidden"
+msgstr "A dokk megjelenítése, ha el van rejtve"
+
+#: Settings.ui.h:8
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Az automatikus elrejtés használatakor a dokk meg fog jelenni egy rövid ideig "
+"a gyorsbillentyű megnyomásakor."
+
+#: Settings.ui.h:9
+msgid "Shortcut for the options above"
+msgstr "Gyorsbillentyűk a fenti beállításokhoz"
+
+#: Settings.ui.h:10
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Szintaxis: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:11
+msgid "Hide timeout (s)"
+msgstr "Elrejtési időkorlát (mp)"
+
+#: Settings.ui.h:12
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+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
+msgid "Shift+Click action"
+msgstr "Shift + kattintás művelet"
+
+#: Settings.ui.h:14
+msgid "Raise window"
+msgstr "Ablak előre hozása"
+
+#: Settings.ui.h:15
+msgid "Minimize window"
+msgstr "Ablak minimalizálása"
+
+#: Settings.ui.h:16
+msgid "Launch new instance"
+msgstr "Új példány indítása"
+
+#: Settings.ui.h:17
+msgid "Cycle through windows"
+msgstr "Ablakok körbeléptetése"
+
+#: Settings.ui.h:18
+msgid "Quit"
+msgstr "Kilépés"
+
+#: Settings.ui.h:19
+msgid "Behavior for Middle-Click."
+msgstr "A középső kattintás viselkedése."
+
+#: Settings.ui.h:20
+msgid "Middle-Click action"
+msgstr "Középső kattintás művelet"
+
+#: Settings.ui.h:21
+msgid "Behavior for Shift+Middle-Click."
+msgstr "A Shift + középső kattintás viselkedése."
+
+#: Settings.ui.h:22
+msgid "Shift+Middle-Click action"
+msgstr "Shift + középső kattintás művelet"
+
+#: Settings.ui.h:23
+msgid "Show the dock on"
+msgstr "A dokk megjelenítése"
+
+#: Settings.ui.h:24
+#, fuzzy
+msgid "Show on all monitors."
+msgstr "Másodlagos kijelző"
+
+#: Settings.ui.h:25
+msgid "Position on screen"
+msgstr "Elhelyezkedés a képernyőn"
+
+#: Settings.ui.h:27
+msgid "Bottom"
+msgstr "Lent"
+
+#: Settings.ui.h:28
+msgid "Top"
+msgstr "Fent"
+
+#: Settings.ui.h:30
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"A dokk elrejtése, amikor az aktuális alkalmazás ablakát akadályozza. További "
+"finombeállítások is elérhetők."
+
+#: Settings.ui.h:31
+msgid "Intelligent autohide"
+msgstr "Intelligens automatikus elrejtés"
+
+#: Settings.ui.h:32
+msgid "Dock size limit"
+msgstr "Dokk méretkorlátja"
+
+#: Settings.ui.h:33
+msgid "Panel mode: extend to the screen edge"
+msgstr "Panel mód: kiterjesztés a képernyő széléig"
+
+#: Settings.ui.h:34
+msgid "Icon size limit"
+msgstr "Ikon méretkorlátja"
+
+#: Settings.ui.h:35
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Rögzített ikonméret: görgetés egyéb ikonok felfedéséhez"
+
+#: Settings.ui.h:36
+msgid "Position and size"
+msgstr "Elhelyezkedés és méret"
+
+#: Settings.ui.h:37
+msgid "Show favorite applications"
+msgstr "Kedvenc alkalmazások megjelenítése"
+
+#: Settings.ui.h:38
+msgid "Show running applications"
+msgstr "Futó alkalmazások megjelenítése"
+
+#: Settings.ui.h:39
+msgid "Isolate workspaces."
+msgstr "Munkaterületek elkülönítése."
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "Nyitott ablakok előnézeteinek megjelenítése."
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+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
+msgid "Show <i>Applications</i> icon"
+msgstr "<i>Alkalmazások</i> ikon megjelenítése"
+
+#: Settings.ui.h:43
+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
+msgid "Animate <i>Show Applications</i>."
+msgstr "<i>Alkalmazások megjelenítése</i> animálása."
+
+#: Settings.ui.h:45
+msgid "Launchers"
+msgstr "Indítok"
+
+#: Settings.ui.h:46
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Szuper + (0-9) engedélyezése gyorsbillentyűként az alkalmazások "
+"aktiválásához. Használható a Shift és a Ctrl billentyűkkel együtt is."
+
+#: Settings.ui.h:47
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "Gyorsbillentyűk használata az alkalmazások aktiválásához"
+
+#: Settings.ui.h:48
+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
+msgid "Click action"
+msgstr "Kattintás művelet"
+
+#: Settings.ui.h:50
+msgid "Minimize"
+msgstr "Minimalizálás"
+
+#: Settings.ui.h:51
+#, fuzzy
+msgid "Minimize or overview"
+msgstr "Ablak minimalizálása"
+
+#: Settings.ui.h:52
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Viselkedés egy alkalmazás ikonján való görgetéskor."
+
+#: Settings.ui.h:53
+msgid "Scroll action"
+msgstr "Görgetési művelet"
+
+#: Settings.ui.h:54
+msgid "Do nothing"
+msgstr "Ne tegyen semmit"
+
+#: Settings.ui.h:55
+msgid "Switch workspace"
+msgstr "Munkaterület váltása"
+
+#: Settings.ui.h:56
+msgid "Behavior"
+msgstr "Viselkedés"
+
+#: Settings.ui.h:57
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Néhány személyre szabás célja, hogy integrálja a dokkot az alapértelmezett "
+"GNOME témába. Alternatív esetben bizonyos beállítások engedélyezhetők lent."
+
+#: Settings.ui.h:58
+msgid "Use built-in theme"
+msgstr "Beépített téma használata"
+
+#: Settings.ui.h:59
+msgid "Save space reducing padding and border radius."
+msgstr "Helymegtakarítás a kitöltés és a szegély sugarának csökkentésével."
+
+#: Settings.ui.h:60
+msgid "Shrink the dash"
+msgstr "A dash zsugorítása"
+
+#: Settings.ui.h:61
+msgid "Show a dot for each windows of the application."
+msgstr "Egy pont megjelenítése az alkalmazás minden ablakánál."
+
+#: Settings.ui.h:62
+msgid "Show windows counter indicators"
+msgstr "Ablakszámlálók jelzőinek megjelenítése"
+
+#: Settings.ui.h:63
+msgid "Set the background color for the dash."
+msgstr "A dash háttérszínének beállítása."
+
+#: Settings.ui.h:64
+msgid "Customize the dash color"
+msgstr "A dash színének személyre szabása"
+
+#: Settings.ui.h:65
+msgid "Tune the dash background opacity."
+msgstr "A dash háttér átlátszatlanságának finomhangolása."
+
+#: Settings.ui.h:66
+msgid "Customize opacity"
+msgstr "Átlátszatlanság személyre szabása"
+
+#: Settings.ui.h:67
+msgid "Opacity"
+msgstr "Átlátszatlanság"
+
+#: Settings.ui.h:68
+msgid "Force straight corner\n"
+msgstr "Egyenes sarok kényszerítése\n"
+
+#: Settings.ui.h:70
+msgid "Appearance"
+msgstr "Megjelenés"
+
+#: Settings.ui.h:71
+msgid "version: "
+msgstr "verzió: "
+
+#: Settings.ui.h:72
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Áthelyezi a dasht az áttekintőn kívülre egy dokká alakítva azt"
+
+#: Settings.ui.h:73
+msgid "Created by"
+msgstr "Létrehozta"
+
+#: Settings.ui.h:74
+msgid "Webpage"
+msgstr "Weboldal"
+
+#: Settings.ui.h:75
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">Ehhez a programhoz SEMMILYEN GARANCIA NEM JÁR.\n"
+"Nézze meg a <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html "
+"\">GNU General Public License 2. vagy későbbi verzióját</a> a részletekért.</"
+"span>"
+
+#: Settings.ui.h:77
+msgid "About"
+msgstr "Névjegy"
+
+#: Settings.ui.h:78
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "A dokk megjelenítése a képernyő szélére történő egér rámutatással."
+
+#: Settings.ui.h:79
+msgid "Autohide"
+msgstr "Automatikus elrejtés"
+
+#: Settings.ui.h:80
+msgid "Push to show: require pressure to show the dock"
+msgstr "Nyomás a megjelenítéshez: nyomást igényel a dokk megjelenítéséhez"
+
+#: Settings.ui.h:81
+msgid "Enable in fullscreen mode"
+msgstr "Engedélyezés teljes képernyős módban"
+
+#: Settings.ui.h:82
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "A dokk megjelenítése, amikor nem akadályozza az alkalmazás ablakait."
+
+#: Settings.ui.h:83
+msgid "Dodge windows"
+msgstr "Ablakok kikerülése"
+
+#: Settings.ui.h:84
+msgid "All windows"
+msgstr "Összes ablak"
+
+#: Settings.ui.h:85
+msgid "Only focused application's windows"
+msgstr "Csak a kijelölt alkalmazások ablakai"
+
+#: Settings.ui.h:86
+msgid "Only maximized windows"
+msgstr "Csak a maximalizált ablakok"
+
+#: Settings.ui.h:87
+msgid "Animation duration (s)"
+msgstr "Animáció időtartama (mp)"
+
+#: Settings.ui.h:88
+msgid "0.000"
+msgstr "0,000"
+
+#: Settings.ui.h:89
+msgid "Show timeout (s)"
+msgstr "Megjelenítési időkorlát (mp)"
+
+#: Settings.ui.h:90
+msgid "Pressure threshold"
+msgstr "Nyomás küszöbszintje"
diff --git a/extensions/dash-to-dock/po/id.po b/extensions/dash-to-dock/po/id.po
new file mode 100644
index 00000000..ac09c410
--- /dev/null
+++ b/extensions/dash-to-dock/po/id.po
@@ -0,0 +1,450 @@
+# 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 <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Dash-to-Dock\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-06-04 12:35+0100\n"
+"PO-Revision-Date: 2017-10-02 11:25+0700\n"
+"Last-Translator: Mahyuddin <yudi.al@gmail.com>\n"
+"Language-Team: Mahyuddin <yudi.al@gmail.com>\n"
+"Language: id\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 1.8.11\n"
+
+#: prefs.js:113
+msgid "Primary monitor"
+msgstr "Monitor primer"
+
+#: prefs.js:122 prefs.js:129
+msgid "Secondary monitor "
+msgstr "Monitor sekunder"
+
+#: prefs.js:154 Settings.ui.h:29
+msgid "Right"
+msgstr "Kanan"
+
+#: prefs.js:155 Settings.ui.h:26
+msgid "Left"
+msgstr "Kiri"
+
+#: prefs.js:205
+msgid "Intelligent autohide customization"
+msgstr "Kustomisasi autohide yang cerdas"
+
+#: prefs.js:212 prefs.js:393 prefs.js:450
+msgid "Reset to defaults"
+msgstr "Setel ulang ke bawaan"
+
+#: prefs.js:386
+msgid "Show dock and application numbers"
+msgstr "Tampilkan dock dan nomor aplikasi"
+
+#: prefs.js:443
+msgid "Customize middle-click behavior"
+msgstr "Sesuaikan perilaku klik menengah"
+
+#: prefs.js:514
+msgid "Customize running indicators"
+msgstr "Sesuaikan indikator yang sedang berjalan"
+
+#: appIcons.js:804
+msgid "All Windows"
+msgstr "Semua Jendela"
+
+#: Settings.ui.h:1
+msgid "Customize indicator style"
+msgstr "Sesuaikan gaya indikator"
+
+#: Settings.ui.h:2
+msgid "Color"
+msgstr "Warna"
+
+#: Settings.ui.h:3
+msgid "Border color"
+msgstr "Warna border"
+
+#: Settings.ui.h:4
+msgid "Border width"
+msgstr "Lebar border"
+
+#: Settings.ui.h:5
+msgid "Number overlay"
+msgstr "Nomor overlay"
+
+#: Settings.ui.h:6
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"Untuk sementara menunjukkan nomor aplikasi di atas ikon, sesuai dengan "
+"pintasan."
+
+#: Settings.ui.h:7
+msgid "Show the dock if it is hidden"
+msgstr "Tunjukkan dock jika tersembunyi"
+
+#: Settings.ui.h:8
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Jika menggunakan autohide, dock akan muncul dalam waktu singkat saat memicu "
+"pintasan."
+
+#: Settings.ui.h:9
+msgid "Shortcut for the options above"
+msgstr "Pintasan untuk opsi di atas"
+
+#: Settings.ui.h:10
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Sintaks: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:11
+msgid "Hide timeout (s)"
+msgstr "Sembunyikan batas waktu (s)"
+
+#: Settings.ui.h:12
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Bila disetel untuk meminimalkan, klik ganda meminimalkan semua jendela "
+"aplikasi."
+
+#: Settings.ui.h:13
+msgid "Shift+Click action"
+msgstr "Tindakan Shift+Klik"
+
+#: Settings.ui.h:14
+msgid "Raise window"
+msgstr "Menaikkan jendela"
+
+#: Settings.ui.h:15
+msgid "Minimize window"
+msgstr "Minimalkan jendela"
+
+#: Settings.ui.h:16
+msgid "Launch new instance"
+msgstr "Luncurkan contoh baru"
+
+#: Settings.ui.h:17
+msgid "Cycle through windows"
+msgstr "Siklus melalui jendela"
+
+#: Settings.ui.h:18
+msgid "Quit"
+msgstr "Berhenti"
+
+#: Settings.ui.h:19
+msgid "Behavior for Middle-Click."
+msgstr "Perilaku untuk Klik-Tengah."
+
+#: Settings.ui.h:20
+msgid "Middle-Click action"
+msgstr "Tindakan Klik-Tengah"
+
+#: Settings.ui.h:21
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Perilaku untuk Shift+Klik-Tengah."
+
+#: Settings.ui.h:22
+msgid "Shift+Middle-Click action"
+msgstr "Tindakan Shift+Klik-Tengah"
+
+#: Settings.ui.h:23
+msgid "Show the dock on"
+msgstr "Tunjukkan dock pada"
+
+#: Settings.ui.h:24
+msgid "Show on all monitors."
+msgstr "Tunjukkan pada semua monitor."
+
+#: Settings.ui.h:25
+msgid "Position on screen"
+msgstr "Posisi pada layar"
+
+#: Settings.ui.h:27
+msgid "Bottom"
+msgstr "Bawah"
+
+#: Settings.ui.h:28
+msgid "Top"
+msgstr "Atas"
+
+#: Settings.ui.h:30
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"Sembunyikan dock saat menghalangi jendela aplikasi saat ini. Setelan yang "
+"lebih halus juga tersedia."
+
+#: Settings.ui.h:31
+msgid "Intelligent autohide"
+msgstr "Autohide cerdas"
+
+#: Settings.ui.h:32
+msgid "Dock size limit"
+msgstr "Batas ukuran dock"
+
+#: Settings.ui.h:33
+msgid "Panel mode: extend to the screen edge"
+msgstr "Mode panel: meluas ke tepi layar"
+
+#: Settings.ui.h:34
+msgid "Icon size limit"
+msgstr "Batas ukuran ikon"
+
+#: Settings.ui.h:35
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Ukuran ikon tetap: gulir untuk menampilkan ikon lain"
+
+#: Settings.ui.h:36
+msgid "Position and size"
+msgstr "Posisi dan ukuran"
+
+#: Settings.ui.h:37
+msgid "Show favorite applications"
+msgstr "Tampilkan aplikasi favorit"
+
+#: Settings.ui.h:38
+msgid "Show running applications"
+msgstr "Tampilkan aplikasi yang sedang berjalan"
+
+#: Settings.ui.h:39
+msgid "Isolate workspaces."
+msgstr "Isolasi ruang kerja."
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "Tampilkan pratinjau windows yang terbuka."
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Jika dinonaktifkan, setelan ini dapat diakses dari gnome-tweak-tool atau "
+"situs ekstensi."
+
+#: Settings.ui.h:42
+msgid "Show <i>Applications</i> icon"
+msgstr "Tampilkan ikon <i>Aplikasi</ i>"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr "Pindahkan tombol aplikasi di awal dock."
+
+#: Settings.ui.h:44
+msgid "Animate <i>Show Applications</i>."
+msgstr "Animasi <i>Tampilkan Aplikasi</ i>."
+
+#: Settings.ui.h:45
+msgid "Launchers"
+msgstr "Peluncur"
+
+#: Settings.ui.h:46
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Aktifkan Super+(0-9) sebagai cara pintas untuk mengaktifkan aplikasi. Ini "
+"juga bisa digunakan bersamaan dengan Shift dan Ctrl."
+
+#: Settings.ui.h:47
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "Gunakan pintasan papan tik untuk mengaktifkan aplikasi"
+
+#: Settings.ui.h:48
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Perilaku saat mengklik ikon aplikasi yang sedang berjalan."
+
+#: Settings.ui.h:49
+msgid "Click action"
+msgstr "Klik tindakan"
+
+#: Settings.ui.h:50
+msgid "Minimize"
+msgstr "Minimalkan"
+
+#: Settings.ui.h:51
+msgid "Minimize or overview"
+msgstr "Minimalkan atau ikhtisar"
+
+#: Settings.ui.h:52
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Perilaku saat menggulir pada ikon aplikasi."
+
+#: Settings.ui.h:53
+msgid "Scroll action"
+msgstr "Gulir tindakan"
+
+#: Settings.ui.h:54
+msgid "Do nothing"
+msgstr "Tidak melakukan apapun"
+
+#: Settings.ui.h:55
+msgid "Switch workspace"
+msgstr "Beralih ruang kerja"
+
+#: Settings.ui.h:56
+msgid "Behavior"
+msgstr "Perilaku"
+
+#: Settings.ui.h:57
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Beberapa penyesuaian dimaksudkan untuk mengintegrasikan dock dengan tema "
+"GNOME bawaan. Sebagai alternatif, pilihan spesifik dapat diaktifkan di bawah "
+"ini."
+
+#: Settings.ui.h:58
+msgid "Use built-in theme"
+msgstr "Gunakan tema bawaan"
+
+#: Settings.ui.h:59
+msgid "Save space reducing padding and border radius."
+msgstr "Hemat ruang padding mengurangi dan radius border."
+
+#: Settings.ui.h:60
+msgid "Shrink the dash"
+msgstr "Penyusutan dash"
+
+#: Settings.ui.h:61
+msgid "Show a dot for each windows of the application."
+msgstr "Tampilkan titik untuk setiap jendela aplikasi."
+
+#: Settings.ui.h:62
+msgid "Show windows counter indicators"
+msgstr "Tampilkan indikator counter jendela"
+
+#: Settings.ui.h:63
+msgid "Set the background color for the dash."
+msgstr "Atur warna latar belakang untuk dash."
+
+#: Settings.ui.h:64
+msgid "Customize the dash color"
+msgstr "Sesuaikan warna dash."
+
+#: Settings.ui.h:65
+msgid "Tune the dash background opacity."
+msgstr "Cocokkan opacity latar belakang."
+
+#: Settings.ui.h:66
+msgid "Customize opacity"
+msgstr "Menyesuaikan opacity"
+
+#: Settings.ui.h:67
+msgid "Opacity"
+msgstr "Opacity"
+
+#: Settings.ui.h:68
+msgid "Force straight corner\n"
+msgstr "Paksa sudut lurus\n"
+
+#: Settings.ui.h:70
+msgid "Appearance"
+msgstr "Penampilan"
+
+#: Settings.ui.h:71
+msgid "version: "
+msgstr "versi: "
+
+#: Settings.ui.h:72
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Memindahkan dash keluar dari ikhtisar yang mengubahnya di dock"
+
+#: Settings.ui.h:73
+msgid "Created by"
+msgstr "Dibuat oleh"
+
+#: Settings.ui.h:74
+msgid "Webpage"
+msgstr "Halaman web"
+
+#: Settings.ui.h:75
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size = \"small\">Program ini hadir dengan TIDAK ADA JAMINAN TIDAK "
+"BENAR.\n"
+"Lihat <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html\"> "
+"GNU General Public License, versi 2 atau yang lebih baru </a> untuk "
+"detailnya. </ Span>"
+
+#: Settings.ui.h:77
+msgid "About"
+msgstr "Tentang"
+
+#: Settings.ui.h:78
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Tunjukkan dock dengan mouse hover di tepi layar."
+
+#: Settings.ui.h:79
+msgid "Autohide"
+msgstr "Autohide"
+
+#: Settings.ui.h:80
+msgid "Push to show: require pressure to show the dock"
+msgstr "Tekan untuk tampilkan: butuh tekanan untuk menunjukkan dock"
+
+#: Settings.ui.h:81
+msgid "Enable in fullscreen mode"
+msgstr "Aktifkan dalam mode layar penuh"
+
+#: Settings.ui.h:82
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Tunjukkan dokk bila tidak menghalangi jendela aplikasi."
+
+#: Settings.ui.h:83
+msgid "Dodge windows"
+msgstr "Dodge jendela"
+
+#: Settings.ui.h:84
+msgid "All windows"
+msgstr "Semua jendela"
+
+#: Settings.ui.h:85
+msgid "Only focused application's windows"
+msgstr "Hanya fokus aplikasi jendela"
+
+#: Settings.ui.h:86
+msgid "Only maximized windows"
+msgstr "Hanya jendela yang maksimal"
+
+#: Settings.ui.h:87
+msgid "Animation duration (s)"
+msgstr "Durasi animasi (s)"
+
+#: Settings.ui.h:88
+msgid "0.000"
+msgstr "0.000"
+
+#: Settings.ui.h:89
+msgid "Show timeout (s)"
+msgstr "Tampilkan batas waktu (s)"
+
+#: Settings.ui.h:90
+msgid "Pressure threshold"
+msgstr "Ambang tekanan"
+
+#~ msgid ""
+#~ "With fixed icon size, only the edge of the dock and the <i>Show "
+#~ "Applications</i> icon are active."
+#~ msgstr ""
+#~ "Con la dimensione fissa delle icone, solo il bordo della dock e l'icona "
+#~ "<i> Mostra Applicazioni</i> sono attive."
+
+#~ msgid "Switch workspace by scrolling on the dock"
+#~ msgstr "Cambia spazio di lavoro scorrendo sulla dock"
diff --git a/extensions/dash-to-dock/po/it.po b/extensions/dash-to-dock/po/it.po
new file mode 100644
index 00000000..2806ad5f
--- /dev/null
+++ b/extensions/dash-to-dock/po/it.po
@@ -0,0 +1,517 @@
+# Dash-to-Dock Italian translation.
+# Copyright (C) 2018 the Dash-to-Dock copyright holder.
+# This file is distributed under the same license as the Dash-to-Dock package.
+# Milo Casagrande <milo@milo.name>, 2018
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Dash-to-Dock\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2018-04-03 17:18+0200\n"
+"PO-Revision-Date: 2018-04-04 10:13+0200\n"
+"Last-Translator: Milo Casagrande <milo@milo.name>\n"
+"Language-Team: Italian <micxgx@gmail.com>\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: prefs.js:140
+msgid "Primary monitor"
+msgstr "Monitor primario"
+
+#: prefs.js:149 prefs.js:156
+msgid "Secondary monitor "
+msgstr "Monitor secondario "
+
+#: prefs.js:181 Settings.ui.h:27
+msgid "Right"
+msgstr "Destra"
+
+#: prefs.js:182 Settings.ui.h:24
+msgid "Left"
+msgstr "Sinistra"
+
+#: prefs.js:232
+msgid "Intelligent autohide customization"
+msgstr "Personalizzazione nascondimento automatico intelligente"
+
+#: prefs.js:239 prefs.js:424 prefs.js:481
+msgid "Reset to defaults"
+msgstr "Ripristina a predefinito"
+
+#: prefs.js:417
+msgid "Show dock and application numbers"
+msgstr "Mostra applicazioni in esecuzione"
+
+#: prefs.js:474
+msgid "Customize middle-click behavior"
+msgstr "Personalizza comportamento clic centrale"
+
+#: prefs.js:557
+msgid "Customize running indicators"
+msgstr "Personalizza indicatori in esecuzione"
+
+#: prefs.js:671
+#: Settings.ui.h:71
+msgid "Customize opacity"
+msgstr "Personalizza opacità"
+
+#: appIcons.js:785
+msgid "All Windows"
+msgstr "Tutte le finestre"
+
+#. Translators: %s is "Settings", which is automatically translated. You
+#. can also translate the full message if this fits better your language.
+#: appIcons.js:1091
+#, javascript-format
+msgid "Dash to Dock %s"
+msgstr "%s di «Dash to Dock»"
+
+#: Settings.ui.h:1
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Quando impostato su minimizza, un doppio clic minimizza tutte le finestre "
+"dell'applicazione"
+
+#: Settings.ui.h:2
+msgid "Shift+Click action"
+msgstr "Azione Maiusc+Clic"
+
+#: Settings.ui.h:3
+msgid "Raise window"
+msgstr "Solleva finestra"
+
+#: Settings.ui.h:4
+msgid "Minimize window"
+msgstr "Minimizza finestra"
+
+#: Settings.ui.h:5
+msgid "Launch new instance"
+msgstr "Lancia nuova istanza"
+
+#: Settings.ui.h:6
+msgid "Cycle through windows"
+msgstr "Passa attraverso le finestre"
+
+#: Settings.ui.h:7
+msgid "Minimize or overview"
+msgstr "Minimizza o mostra attività"
+
+#: Settings.ui.h:8
+msgid "Show window previews"
+msgstr "Mostra anteprime finestra"
+
+#: Settings.ui.h:9
+msgid "Minimize or show previews"
+msgstr "Minimizza o mostra anteprime"
+
+#: Settings.ui.h:10
+msgid "Quit"
+msgstr "Chiudi"
+
+#: Settings.ui.h:11
+msgid "Behavior for Middle-Click."
+msgstr "Comportamento del clic-centrale"
+
+#: Settings.ui.h:12
+msgid "Middle-Click action"
+msgstr "Azione clic-centrale"
+
+#: Settings.ui.h:13
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Comportamento per Maiusc+Clic-centrale"
+
+#: Settings.ui.h:14
+msgid "Shift+Middle-Click action"
+msgstr "Azione Maiusc+Clic-centrale"
+
+#: Settings.ui.h:15
+msgid "Enable Unity7 like glossy backlit items"
+msgstr "Abilitare elementi lucidi retroilluminati come Unity7"
+
+#: Settings.ui.h:16
+msgid "Use dominant color"
+msgstr "Usare colore dominante"
+
+#: Settings.ui.h:17
+msgid "Customize indicator style"
+msgstr "Personalizza stile indicatori"
+
+#: Settings.ui.h:18
+msgid "Color"
+msgstr "Colore"
+
+#: Settings.ui.h:19
+msgid "Border color"
+msgstr "Colore bordo"
+
+#: Settings.ui.h:20
+msgid "Border width"
+msgstr "Larghezza bordo"
+
+#: Settings.ui.h:21
+msgid "Show the dock on"
+msgstr "Mostra dock su"
+
+#: Settings.ui.h:22
+msgid "Show on all monitors."
+msgstr "Mostra su tutti gli schermi"
+
+#: Settings.ui.h:23
+msgid "Position on screen"
+msgstr "Posizione sullo schermo"
+
+#: Settings.ui.h:25
+msgid "Bottom"
+msgstr "Basso"
+
+#: Settings.ui.h:26
+msgid "Top"
+msgstr "Alto"
+
+#: Settings.ui.h:28
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"Nasconde la dock quando questa ostruisce una finestra dell'applicazione "
+"corrente. Sono disponibili maggiori impostazioni."
+
+#: Settings.ui.h:29
+msgid "Intelligent autohide"
+msgstr "Nascondi automaticamente intelligente"
+
+#: Settings.ui.h:30
+msgid "Dock size limit"
+msgstr "Limite dimensione dock"
+
+#: Settings.ui.h:31
+msgid "Panel mode: extend to the screen edge"
+msgstr "Modalità pannello: si estende fino al bordo dello schermo"
+
+#: Settings.ui.h:32
+msgid "Icon size limit"
+msgstr "Limite dimensione icone"
+
+#: Settings.ui.h:33
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Dimensione icona fissa: scorrere per rivelare le altre icone"
+
+#: Settings.ui.h:34
+msgid "Position and size"
+msgstr "Posizione e dimensione"
+
+#: Settings.ui.h:35
+msgid "Show favorite applications"
+msgstr "Mostra applicazioni preferite"
+
+#: Settings.ui.h:36
+msgid "Show running applications"
+msgstr "Mostra applicazioni in esecuzione"
+
+#: Settings.ui.h:37
+msgid "Isolate workspaces."
+msgstr "Isola spazi di lavoro"
+
+#: Settings.ui.h:38
+msgid "Isolate monitors."
+msgstr "Isola gli schermi"
+
+#: Settings.ui.h:39
+msgid "Show open windows previews."
+msgstr "Mostra anteprime delle finestre aperte"
+
+#: Settings.ui.h:40
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Se disabilitate, queste impostazioni sono accessibili da gnome-tweak-tool o "
+"dal sito web delle estensioni."
+
+#: Settings.ui.h:41
+msgid "Show <i>Applications</i> icon"
+msgstr "Mostra icona <i>Applicazioni</i>"
+
+#: Settings.ui.h:42
+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
+msgid "Animate <i>Show Applications</i>."
+msgstr "Anima <i>Mostra applicazioni</i>"
+
+#: Settings.ui.h:44
+msgid "Launchers"
+msgstr "Icone applicazioni"
+
+#: Settings.ui.h:45
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Attiva Super+(0-9) come scorciatoie per attivare le applicazioni, funziona "
+"anche con Maiusc 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
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr ""
+"Comportamento quando si fa clic sull'icona di una applicazione in esecuzione."
+
+#: Settings.ui.h:48
+msgid "Click action"
+msgstr "Azione clic"
+
+#: Settings.ui.h:49
+msgid "Minimize"
+msgstr "Minimizza"
+
+#: Settings.ui.h:50
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr ""
+"Comportamento quando si scorre sull'icona di una applicazione in esecuzione"
+
+#: Settings.ui.h:51
+msgid "Scroll action"
+msgstr "Azione scorrimento"
+
+#: Settings.ui.h:52
+msgid "Do nothing"
+msgstr "Non fare nulla"
+
+#: Settings.ui.h:53
+msgid "Switch workspace"
+msgstr "Cambia spazio di lavoro"
+
+#: Settings.ui.h:54
+msgid "Behavior"
+msgstr "Comportamento"
+
+#: Settings.ui.h:55
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Poche personalizzazioni significative per integrare la dock con il tema "
+"predefinito di GNOME. In alternativa, delle opzioni specifiche possono "
+"essere abilitate qui sotto."
+
+#: Settings.ui.h:56
+msgid "Use built-in theme"
+msgstr "Usa tema integrato"
+
+#: Settings.ui.h:57
+msgid "Save space reducing padding and border radius."
+msgstr "Salva spazio riducendo il margine e il raggio dei bordi"
+
+#: Settings.ui.h:58
+msgid "Shrink the dash"
+msgstr "Riduci la dash"
+
+#: Settings.ui.h:59
+msgid "Customize windows counter indicators"
+msgstr "Personalizza indicatori conteggio finestre"
+
+#: Settings.ui.h:60
+msgid "Default"
+msgstr "Predefinito"
+
+#: Settings.ui.h:61
+msgid "Dots"
+msgstr "Puntini"
+
+#: Settings.ui.h:62
+msgid "Squares"
+msgstr "Quadrati"
+
+#: Settings.ui.h:63
+msgid "Dashes"
+msgstr "Trattini"
+
+#: Settings.ui.h:64
+msgid "Segmented"
+msgstr "Segmenti"
+
+#: Settings.ui.h:65
+msgid "Solid"
+msgstr "Solido"
+
+#: Settings.ui.h:66
+msgid "Ciliora"
+msgstr "Ciliora"
+
+#: Settings.ui.h:67
+msgid "Metro"
+msgstr "Metro"
+
+#: Settings.ui.h:68
+msgid "Set the background color for the dash."
+msgstr "Imposta il colore di sfondo della dash"
+
+#: Settings.ui.h:69
+msgid "Customize the dash color"
+msgstr "Personalizza il colore della dash"
+
+#: Settings.ui.h:70
+msgid "Tune the dash background opacity."
+msgstr "Personalizza l'opacità dello sfondo della dash"
+
+#: Settings.ui.h:72
+msgid "Fixed"
+msgstr "Fisso"
+
+#: Settings.ui.h:73
+msgid "Adaptive"
+msgstr "Adattivo"
+
+#: Settings.ui.h:74
+msgid "Dynamic"
+msgstr "Dinamico"
+
+#: Settings.ui.h:75
+msgid "Opacity"
+msgstr "Opacità"
+
+#: Settings.ui.h:76
+msgid "Force straight corner\n"
+msgstr "Forza angoli squadrati\n"
+
+#: Settings.ui.h:78
+msgid "Appearance"
+msgstr "Aspetto"
+
+#: Settings.ui.h:79
+msgid "version: "
+msgstr "versione: "
+
+#: Settings.ui.h:80
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Sposta la dash fuori dalla panoramica trasformandola in una dock"
+
+#: Settings.ui.h:81
+msgid "Created by"
+msgstr "Creata da"
+
+#: Settings.ui.h:82
+msgid "Webpage"
+msgstr "Sito web"
+
+#: Settings.ui.h:83
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">Questo programma viene fornito senza ALCUNA GARANZIA.\n"
+"Per maggiori informazioni, consultare la <a href=\"https://www.gnu.org/"
+"licenses/old-licenses/gpl-2.0.html\">GNU General Public License, versione 2 "
+"o successiva</a>.<span>"
+
+#: Settings.ui.h:85
+msgid "About"
+msgstr "Informazioni"
+
+#: Settings.ui.h:86
+msgid "Customize minimum and maximum opacity values"
+msgstr "Personalizza i valori minimo e massimo dell'opacità"
+
+#: Settings.ui.h:87
+msgid "Minimum opacity"
+msgstr "Opacità minima"
+
+#: Settings.ui.h:88
+msgid "Maximum opacity"
+msgstr "Opacità massima"
+
+#: Settings.ui.h:89
+msgid "Number overlay"
+msgstr "Indicatore numerico in sovraimpressione"
+
+#: Settings.ui.h:90
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"Mostra brevemente il numero corrispondente alla scorciatoia sull'icona "
+"dell'applicazione."
+
+#: Settings.ui.h:91
+msgid "Show the dock if it is hidden"
+msgstr "Mostra dock se nascosta"
+
+#: Settings.ui.h:92
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"In modalità «Nascondi automaticamente intelligente», la dock viene mostrata "
+"per un istante quando la scorciatoia è attivata"
+
+#: Settings.ui.h:93
+msgid "Shortcut for the options above"
+msgstr "Scorciatoia"
+
+#: Settings.ui.h:94
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Formato: <Maiusc>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:95
+msgid "Hide timeout (s)"
+msgstr "Timeout nascondimento (s)"
+
+#: Settings.ui.h:96
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Mostra la dock passando con il mouse sul bordo dello schermo"
+
+#: Settings.ui.h:97
+msgid "Autohide"
+msgstr "Nascondi automaticamente"
+
+#: Settings.ui.h:98
+msgid "Push to show: require pressure to show the dock"
+msgstr "Premere per vedere: richiede una pressione per mostrare la dock"
+
+#: Settings.ui.h:99
+msgid "Enable in fullscreen mode"
+msgstr "Abilita in modalità a schermo intero"
+
+#: Settings.ui.h:100
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr ""
+"Mostra la dock quando questa non ostruisce le finestre dell'applicazione"
+
+#: Settings.ui.h:101
+msgid "Dodge windows"
+msgstr "Schive finestre"
+
+#: Settings.ui.h:102
+msgid "All windows"
+msgstr "Tutte le finestre"
+
+#: Settings.ui.h:103
+msgid "Only focused application's windows"
+msgstr "Solo le finestre delle applicazione col focus"
+
+#: Settings.ui.h:104
+msgid "Only maximized windows"
+msgstr "Solo le finestre massimizzate"
+
+#: Settings.ui.h:105
+msgid "Animation duration (s)"
+msgstr "Durata animazione (s)"
+
+#: Settings.ui.h:106
+msgid "Show timeout (s)"
+msgstr "Timeout rivelazione (s)"
+
+#: Settings.ui.h:107
+msgid "Pressure threshold"
+msgstr "Soglia pressione"
+
diff --git a/extensions/dash-to-dock/po/ja.po b/extensions/dash-to-dock/po/ja.po
new file mode 100644
index 00000000..37cf8dd7
--- /dev/null
+++ b/extensions/dash-to-dock/po/ja.po
@@ -0,0 +1,585 @@
+# Dash to Dock master ja.po
+# Copyright (C) 2013-2017, 2019-2020 THE dash-to-dock'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the dash-to-dock package.
+# Jiro Matsuzawa <jmatsuzawa@gnome.org>, 2013.
+# Debonne Hooties <debonne.hooties@gmail.com>, 2014-2017.
+# sicklylife <translation@sicklylife.jp>, 2019-2020.
+# Ryo Nakano <ryonakaknock3@gmail.com>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: dash-to-dock master\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-06-14 23:00+0900\n"
+"PO-Revision-Date: 2020-06-15 07:30+0900\n"
+"Last-Translator: sicklylife <translation@sicklylife.jp>\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"
+
+#: appIcons.js:797
+msgid "All Windows"
+msgstr "ウィンドウプレビューの表示"
+
+#: appIcons.js:808
+msgid "New Window"
+msgstr "新しいウィンドウ"
+
+#: appIcons.js:823
+msgid "Launch using Dedicated Graphics Card"
+msgstr "専用のグラフィックカードを使用して起動"
+
+#: appIcons.js:851
+msgid "Remove from Favorites"
+msgstr "お気に入りから削除"
+
+#: appIcons.js:857
+msgid "Add to Favorites"
+msgstr "お気に入りに追加"
+
+#: appIcons.js:868
+msgid "Show Details"
+msgstr "詳細を表示"
+
+# ここの翻訳は GNOME Shell の訳が優先される様子
+#: appIcons.js:896 appIcons.js:914 Settings.ui.h:11
+msgid "Quit"
+msgstr "終了"
+
+# ここの「Quit」は GNOME Shell の訳に合わせた方が良さげ
+#: appIcons.js:916
+#, javascript-format
+msgid "Quit %d Windows"
+msgstr "%d 個のウィンドウを終了"
+
+#. Translators: %s is "Settings", which is automatically translated. You
+#. can also translate the full message if this fits better your language.
+#: appIcons.js:1134
+#, javascript-format
+msgid "Dash to Dock %s"
+msgstr "Dash to Dock の%s"
+
+#: appIcons.js:1134
+msgid "Settings"
+msgstr "設定"
+
+#: docking.js:1188
+msgid "Dash"
+msgstr "Dash"
+
+#: locations.js:65
+msgid "Trash"
+msgstr "ゴミ箱"
+
+#: locations.js:74
+msgid "Empty Trash"
+msgstr "ゴミ箱を空にする"
+
+#: locations.js:192
+msgid "Mount"
+msgstr "マウント"
+
+#: locations.js:235
+msgid "Eject"
+msgstr "取り出す"
+
+#: locations.js:240
+msgid "Unmount"
+msgstr "アンマウント"
+
+#: prefs.js:268
+msgid "Primary monitor"
+msgstr "プライマリーモニター"
+
+#: prefs.js:277 prefs.js:284
+msgid "Secondary monitor "
+msgstr "セカンダリーモニター"
+
+#: prefs.js:309 Settings.ui.h:28
+msgid "Right"
+msgstr "右"
+
+#: prefs.js:310 Settings.ui.h:25
+msgid "Left"
+msgstr "左"
+
+#: prefs.js:360
+msgid "Intelligent autohide customization"
+msgstr "インテリジェント表示の設定"
+
+#: prefs.js:367 prefs.js:560 prefs.js:616
+msgid "Reset to defaults"
+msgstr "既定値にリセット"
+
+#: prefs.js:553
+msgid "Show dock and application numbers"
+msgstr "ドック表示とアプリケーション番号"
+
+#: prefs.js:609
+msgid "Customize middle-click behavior"
+msgstr "中ボタンクリック時のアクション"
+
+#: prefs.js:692
+msgid "Customize running indicators"
+msgstr "インジケーターの表示設定"
+
+#: prefs.js:804 Settings.ui.h:74
+msgid "Customize opacity"
+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 "Minimize or overview"
+msgstr "ウィンドウの最小化またはオーバービュー"
+
+#: Settings.ui.h:8
+msgid "Show window previews"
+msgstr "ウィンドウのプレビュー表示"
+
+#: Settings.ui.h:9
+msgid "Minimize or show previews"
+msgstr "ウィンドウの最小化またはプレビュー表示"
+
+#: Settings.ui.h:10
+msgid "Focus or show previews"
+msgstr "フォーカスまたはプレビュー表示"
+
+#: Settings.ui.h:12
+msgid "Behavior for Middle-Click."
+msgstr "中ボタンをクリックしたときの動作を設定します。"
+
+#: Settings.ui.h:13
+msgid "Middle-Click action"
+msgstr "中ボタンクリック時のアクション"
+
+#: Settings.ui.h:14
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Shift を押しながら中ボタンをクリックしたときの動作を設定します。"
+
+#: Settings.ui.h:15
+msgid "Shift+Middle-Click action"
+msgstr "Shift + 中ボタンクリック時のアクション"
+
+#: Settings.ui.h:16
+msgid "Enable Unity7 like glossy backlit items"
+msgstr "Unity7 のような色付きのアイテム背景"
+
+#: Settings.ui.h:17
+msgid "Use dominant color"
+msgstr "ドミナントカラーを使用"
+
+#: Settings.ui.h:18
+msgid "Customize indicator style"
+msgstr "表示スタイルの設定"
+
+#: Settings.ui.h:19
+msgid "Color"
+msgstr "ボディ色"
+
+#: Settings.ui.h:20
+msgid "Border color"
+msgstr "縁取り色"
+
+#: Settings.ui.h:21
+msgid "Border width"
+msgstr "縁取り幅"
+
+#: Settings.ui.h:22
+msgid "Show the dock on"
+msgstr "ドックを表示するモニター"
+
+#: Settings.ui.h:23
+msgid "Show on all monitors."
+msgstr "すべてのモニターで表示"
+
+#: Settings.ui.h:24
+msgid "Position on screen"
+msgstr "表示位置"
+
+#: Settings.ui.h:26
+msgid "Bottom"
+msgstr "下"
+
+#: Settings.ui.h:27
+msgid "Top"
+msgstr "上"
+
+#: Settings.ui.h:29
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"開いているウィンドウの邪魔にならないようドックの表示/非表示を自動的に切り替え"
+"ます。より洗練された表示設定も可能です。"
+
+#: Settings.ui.h:30
+msgid "Intelligent autohide"
+msgstr "インテリジェント表示"
+
+#: Settings.ui.h:31
+msgid "Dock size limit"
+msgstr "ドックサイズの上限"
+
+#: Settings.ui.h:32
+msgid "Panel mode: extend to the screen edge"
+msgstr "パネルモード (画面の端までドックを拡張)"
+
+#: Settings.ui.h:33
+msgid "Icon size limit"
+msgstr "アイコンサイズの上限"
+
+#: Settings.ui.h:34
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "アイコンサイズの固定 (隠れたアイコンはスクロールで表示)"
+
+#: Settings.ui.h:35
+msgid "Position and size"
+msgstr "位置とサイズ"
+
+#: Settings.ui.h:36
+msgid "Show favorite applications"
+msgstr "お気に入りアプリケーションの表示"
+
+#: Settings.ui.h:37
+msgid "Show running applications"
+msgstr "実行中アプリケーションの表示"
+
+#: Settings.ui.h:38
+msgid "Isolate workspaces."
+msgstr "現在のワークスペースのみ表示"
+
+#: Settings.ui.h:39
+msgid "Isolate monitors."
+msgstr "現在のモニターのみ表示"
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "ウィンドウのプレビューを右クリックで表示可能にする"
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"オフにしたときは gnome-tweak-tool または拡張機能ウェブサイトを経由してこの設"
+"定ダイアログにアクセスします。"
+
+#: Settings.ui.h:42
+msgid "Show <i>Applications</i> icon"
+msgstr "[アプリケーションを表示する] アイコンの表示"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr "ドックの先頭 (最上段または左端) に表示"
+
+#: Settings.ui.h:44
+msgid "Animate <i>Show Applications</i>."
+msgstr "アニメーションしながらアプリケーション一覧を表示"
+
+#: Settings.ui.h:45
+msgid "Show trash can"
+msgstr "ゴミ箱を表示"
+
+#: Settings.ui.h:46
+msgid "Show mounted volumes and devices"
+msgstr "マウントしたボリュームとデバイスを表示"
+
+#: Settings.ui.h:47
+msgid "Launchers"
+msgstr "ランチャー"
+
+#: Settings.ui.h:48
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Super キーと番号 (0-9) を同時に押すことでアプリケーションのアクティブ化を可"
+"能にします。\n"
+"Shift キーまたは Ctrl キーを Super キーとともに押しても機能します。"
+
+#: Settings.ui.h:49
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "アプリのアクティブ化にキーボードショートカットを使用"
+
+#: Settings.ui.h:50
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "実行中アプリケーションのアイコンをクリックしたときの動作を設定します。"
+
+#: Settings.ui.h:51
+msgid "Click action"
+msgstr "クリック時のアクション"
+
+#: Settings.ui.h:52
+msgid "Minimize"
+msgstr "ウィンドウの最小化"
+
+#: Settings.ui.h:53
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr ""
+"実行中アプリケーションのアイコン上でスクロールしたときの動作を設定します。"
+
+#: Settings.ui.h:54
+msgid "Scroll action"
+msgstr "スクロール時のアクション"
+
+#: Settings.ui.h:55
+msgid "Do nothing"
+msgstr "何もしない"
+
+#: Settings.ui.h:56
+msgid "Switch workspace"
+msgstr "ワークスペースの切り替え"
+
+#: Settings.ui.h:57
+msgid "Behavior"
+msgstr "動作"
+
+#: Settings.ui.h:58
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"この設定がオンのときは、お使いの GNOME テーマとの調和を図るためカスタマイズは"
+"無効になります。オフのときには以下のカスタマイズが可能です。"
+
+#: Settings.ui.h:59
+msgid "Use built-in theme"
+msgstr "ビルトインテーマの使用"
+
+#: Settings.ui.h:60
+msgid "Save space reducing padding and border radius."
+msgstr "境界線の太さとパディングを減らして表示域を小さくします。"
+
+#: Settings.ui.h:61
+msgid "Shrink the dash"
+msgstr "Dash の縮小表示"
+
+#: Settings.ui.h:62
+msgid "Customize windows counter indicators"
+msgstr "ウィンドウ数インジケーターの設定"
+
+#: Settings.ui.h:63
+msgid "Default"
+msgstr "デフォルト"
+
+#: Settings.ui.h:64
+msgid "Dots"
+msgstr ""
+
+#: Settings.ui.h:65
+msgid "Squares"
+msgstr ""
+
+#: Settings.ui.h:66
+msgid "Dashes"
+msgstr ""
+
+#: Settings.ui.h:67
+msgid "Segmented"
+msgstr ""
+
+#: Settings.ui.h:68
+msgid "Solid"
+msgstr ""
+
+#: Settings.ui.h:69
+msgid "Ciliora"
+msgstr ""
+
+#: Settings.ui.h:70
+msgid "Metro"
+msgstr ""
+
+#: Settings.ui.h:71
+msgid "Set the background color for the dash."
+msgstr "Dash の背景色を設定します"
+
+#: Settings.ui.h:72
+msgid "Customize the dash color"
+msgstr "Dash 背景色の設定"
+
+#: Settings.ui.h:73
+msgid "Tune the dash background opacity."
+msgstr "Dash 背景の不透明度を調整します。"
+
+#: Settings.ui.h:75
+msgid "Fixed"
+msgstr "固定"
+
+#: Settings.ui.h:76
+msgid "Dynamic"
+msgstr "動的"
+
+#: Settings.ui.h:77
+msgid "Opacity"
+msgstr "不透明度"
+
+#: Settings.ui.h:78
+msgid "Force straight corner"
+msgstr "角を丸めない"
+
+#: Settings.ui.h:79
+msgid "Appearance"
+msgstr "外観"
+
+#: Settings.ui.h:80
+msgid "version: "
+msgstr "バージョン: "
+
+#: Settings.ui.h:81
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr ""
+"Dash をドック化してアクティビティ画面以外でも Dash 操作を可能にします。"
+
+#: Settings.ui.h:82
+msgid "Created by"
+msgstr "作者:"
+
+#: Settings.ui.h:83
+msgid "Webpage"
+msgstr "ウェブページ"
+
+#: Settings.ui.h:84
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">このプログラムに<b>保証は一切ありません</b>。\n"
+"詳しくは <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">GNU 一般公衆ライセンス (GPL) バージョン 2</a> またはそれ以降のバージョン"
+"をご覧ください。</span>"
+
+#: Settings.ui.h:86
+msgid "About"
+msgstr "情報"
+
+#: Settings.ui.h:87
+msgid "Customize minimum and maximum opacity values"
+msgstr "不透明度の最小値と最大値の設定"
+
+#: Settings.ui.h:88
+msgid "Minimum opacity"
+msgstr "最小不透明度"
+
+#: Settings.ui.h:89
+msgid "Maximum opacity"
+msgstr "最大不透明度"
+
+#: Settings.ui.h:90
+msgid "Number overlay"
+msgstr "番号の表示"
+
+#: Settings.ui.h:91
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"ショートカットキーが押されたときに、アイコン上にアプリケーション番号を一時的"
+"に表示します。"
+
+#: Settings.ui.h:92
+msgid "Show the dock if it is hidden"
+msgstr "ドックが非表示なら一時的に表示"
+
+#: Settings.ui.h:93
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"ドックが表示されていない状態のとき、ショーカットキーで一時的にドックを表示し"
+"ます。"
+
+#: Settings.ui.h:94
+msgid "Shortcut for the options above"
+msgstr "上記設定のためのショートカットキー"
+
+#: Settings.ui.h:95
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "表記法: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:96
+msgid "Hide timeout (s)"
+msgstr "非表示までのタイムアウト (秒)"
+
+#: Settings.ui.h:97
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr ""
+"ドックを表示したいとき、ポインターを画面端に移動するとドックが表示されます。"
+
+#: Settings.ui.h:98
+msgid "Autohide"
+msgstr "オンデマンド表示"
+
+#: Settings.ui.h:99
+msgid "Push to show: require pressure to show the dock"
+msgstr ""
+"押し込んで表示 (画面外にポインターを移動するようにマウスを動かして表示)"
+
+#: Settings.ui.h:100
+msgid "Enable in fullscreen mode"
+msgstr "フルスクリーンモード時でも表示"
+
+#: Settings.ui.h:101
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr ""
+"ドックを常に表示しますが、アプリケーションウィンドウと重なるときは表示しませ"
+"ん。"
+
+#: Settings.ui.h:102
+msgid "Dodge windows"
+msgstr "ウィンドウ重なり防止"
+
+#: Settings.ui.h:103
+msgid "All windows"
+msgstr "すべてのウィンドウが対象"
+
+#: Settings.ui.h:104
+msgid "Only focused application's windows"
+msgstr "フォーカスされたアプリケーションのウィンドウが対象"
+
+#: Settings.ui.h:105
+msgid "Only maximized windows"
+msgstr "最大化されたウィンドウが対象"
+
+#: Settings.ui.h:106
+msgid "Animation duration (s)"
+msgstr "アニメーション表示時間 (秒)"
+
+#: Settings.ui.h:107
+msgid "Show timeout (s)"
+msgstr "表示までのタイムアウト (秒)"
+
+#: Settings.ui.h:108
+msgid "Pressure threshold"
+msgstr "押し込み量 (ピクセル)"
diff --git a/extensions/dash-to-dock/po/nb.po b/extensions/dash-to-dock/po/nb.po
new file mode 100644
index 00000000..77a0f0db
--- /dev/null
+++ b/extensions/dash-to-dock/po/nb.po
@@ -0,0 +1,506 @@
+# Norwegian Bokmål translation for Dash to Dock.
+# Copyright (C) 2018 Michele
+# This file is distributed under the same license as the dash-to-dock package.
+# Harald H. <harald@fsfe.org>, 2018.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Dash-to-Dock\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2018-02-28 09:47+0100\n"
+"PO-Revision-Date: 2018-03-02 11:02+0100\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 1.8.7.1\n"
+"Last-Translator: Harald H. <harald@fsfe.org>\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Language: nb\n"
+
+#: prefs.js:131
+msgid "Primary monitor"
+msgstr "Primærskjerm"
+
+#: prefs.js:140 prefs.js:147
+msgid "Secondary monitor "
+msgstr "Sekundærskjerm"
+
+#: prefs.js:172 Settings.ui.h:26
+msgid "Right"
+msgstr "Høyre"
+
+#: prefs.js:173 Settings.ui.h:23
+msgid "Left"
+msgstr "Venstre"
+
+#: prefs.js:223
+msgid "Intelligent autohide customization"
+msgstr "Tilpass intelligent autoskjul"
+
+#: prefs.js:230 prefs.js:415 prefs.js:472
+msgid "Reset to defaults"
+msgstr "Tilbakestill til standard"
+
+#: prefs.js:408
+msgid "Show dock and application numbers"
+msgstr "Vis dokk og programnumre"
+
+#: prefs.js:465
+msgid "Customize middle-click behavior"
+msgstr "Tilpass oppførsel for mellomklikk"
+
+#: prefs.js:548
+msgid "Customize running indicators"
+msgstr "Tilpass kjørende indikatorer"
+
+#: prefs.js:662
+#: Settings.ui.h:70
+msgid "Customize opacity"
+msgstr "Tilpass gjennomsiktighet"
+
+#: appIcons.js:763
+msgid "All Windows"
+msgstr "Alle vinduer"
+
+#. Translators: %s is "Settings", which is automatically translated. You
+#. can also translate the full message if this fits better your language.
+#: appIcons.js:1069
+#, javascript-format
+msgid "Dash to Dock %s"
+msgstr "Dash to Dock %s"
+
+#: Settings.ui.h:1
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Når satt til minimer vil dobbeltklikking minimere alle åpne instanser av "
+"programmet."
+
+#: Settings.ui.h:2
+msgid "Shift+Click action"
+msgstr "Handling for Shift + klikk"
+
+#: Settings.ui.h:3
+msgid "Raise window"
+msgstr "Fremhev vindu"
+
+#: Settings.ui.h:4
+msgid "Minimize window"
+msgstr "Minimer vindu"
+
+#: Settings.ui.h:5
+msgid "Launch new instance"
+msgstr "Åpne ny instans"
+
+#: Settings.ui.h:6
+msgid "Cycle through windows"
+msgstr "Veksle mellom vinduer"
+
+#: Settings.ui.h:7
+msgid "Minimize or overview"
+msgstr "Minimer eller oversikt"
+
+#: Settings.ui.h:8
+msgid "Show window previews"
+msgstr "Vis forhåndsvisning"
+
+#: Settings.ui.h:9
+msgid "Quit"
+msgstr "Avslutt"
+
+#: Settings.ui.h:10
+msgid "Behavior for Middle-Click."
+msgstr "Oppførsel for mellomklikk."
+
+#: Settings.ui.h:11
+msgid "Middle-Click action"
+msgstr "Mellomklikk"
+
+#: Settings.ui.h:12
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Oppførsel for Shift + mellomklikk."
+
+#: Settings.ui.h:13
+msgid "Shift+Middle-Click action"
+msgstr "Shift + mellomklikk"
+
+#: Settings.ui.h:14
+msgid "Enable Unity7 like glossy backlit items"
+msgstr "Aktiver Unity7-lignende bakgrunnsglans"
+
+#: Settings.ui.h:15
+msgid "Use dominant color"
+msgstr "Bruk dominerende farge"
+
+#: Settings.ui.h:16
+msgid "Customize indicator style"
+msgstr "Tilpass indikatorstil"
+
+#: Settings.ui.h:17
+msgid "Color"
+msgstr "Farge"
+
+#: Settings.ui.h:18
+msgid "Border color"
+msgstr "Kantfarge"
+
+#: Settings.ui.h:19
+msgid "Border width"
+msgstr "Kantbredde"
+
+#: Settings.ui.h:20
+msgid "Show the dock on"
+msgstr "Vis dokken på"
+
+#: Settings.ui.h:21
+msgid "Show on all monitors."
+msgstr "Vis på alle skjermer."
+
+#: Settings.ui.h:22
+msgid "Position on screen"
+msgstr "Skjermposisjon"
+
+#: Settings.ui.h:24
+msgid "Bottom"
+msgstr "Bunn"
+
+#: Settings.ui.h:25
+msgid "Top"
+msgstr "Topp"
+
+#: Settings.ui.h:27
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"Skjul dokken når den forstyrrer et aktivt programvindu. Flere innstillinger "
+"er tilgjengelig."
+
+#: Settings.ui.h:28
+msgid "Intelligent autohide"
+msgstr "Intelligent autoskjul"
+
+#: Settings.ui.h:29
+msgid "Dock size limit"
+msgstr "Maks dokkstørrelse"
+
+#: Settings.ui.h:30
+msgid "Panel mode: extend to the screen edge"
+msgstr "Panelmodus: strekker seg til skjermkanten"
+
+#: Settings.ui.h:31
+msgid "Icon size limit"
+msgstr "Ikonstørrelse"
+
+#: Settings.ui.h:32
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Fast ikonstørrelse: rull for vise andre ikoner"
+
+#: Settings.ui.h:33
+msgid "Position and size"
+msgstr "Posisjon og størrelse"
+
+#: Settings.ui.h:34
+msgid "Show favorite applications"
+msgstr "Vis favorittprogrammer"
+
+#: Settings.ui.h:35
+msgid "Show running applications"
+msgstr "Vis kjørende programmer"
+
+#: Settings.ui.h:36
+msgid "Isolate workspaces."
+msgstr "Isoler arbeidsområder."
+
+#: Settings.ui.h:37
+msgid "Isolate monitors."
+msgstr "Isoler skjermer."
+
+#: Settings.ui.h:38
+msgid "Show open windows previews."
+msgstr "Vis forhåndsvisning av åpne vinduer."
+
+#: Settings.ui.h:39
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Om deaktivert er disse innstillingene tilgjengelig i gnome-tweak-tool eller "
+"på nettsiden for utvidelser."
+
+#: Settings.ui.h:40
+msgid "Show <i>Applications</i> icon"
+msgstr "Vis <i>programmer</i> ikon"
+
+#: Settings.ui.h:41
+msgid "Move the applications button at the beginning of the dock."
+msgstr "Flytt programmer-knappen til starten av dokken."
+
+#: Settings.ui.h:42
+msgid "Animate <i>Show Applications</i>."
+msgstr "Animere <i>Vis programmer</i>."
+
+#: Settings.ui.h:43
+msgid "Launchers"
+msgstr "Utløsere"
+
+#: Settings.ui.h:44
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Bruk Super+(0-9) som snarvei for å aktivere apper. Den kan også brukes i "
+"kombinasjon med Shift og Ctrl."
+
+#: Settings.ui.h:45
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "Bruk tastatursnarveier for å åpne apper"
+
+#: Settings.ui.h:46
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Oppførsel når du klikker på ikonet for et åpent program."
+
+#: Settings.ui.h:47
+msgid "Click action"
+msgstr "Klikkhandling"
+
+#: Settings.ui.h:48
+msgid "Minimize"
+msgstr "Minimer"
+
+#: Settings.ui.h:49
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Oppførsel ved rulling over et programikon."
+
+#: Settings.ui.h:50
+msgid "Scroll action"
+msgstr "Rullehandling"
+
+#: Settings.ui.h:51
+msgid "Do nothing"
+msgstr "Ikke gjør noe"
+
+#: Settings.ui.h:52
+msgid "Switch workspace"
+msgstr "Bytt arbeidsområde"
+
+#: Settings.ui.h:53
+msgid "Behavior"
+msgstr "Oppførsel"
+
+#: Settings.ui.h:54
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Enkelte tilpasninger som forsøker å integrere dokken med det standard GNOME-"
+"temaet. Alternativt kan bestemte valg aktiveres nedenfor."
+
+#: Settings.ui.h:55
+msgid "Use built-in theme"
+msgstr "Bruk innebygget tema"
+
+#: Settings.ui.h:56
+msgid "Save space reducing padding and border radius."
+msgstr "Spar plass ved å redusere utfylling og kant-radius."
+
+#: Settings.ui.h:57
+msgid "Shrink the dash"
+msgstr "Krymp dash"
+
+#: Settings.ui.h:58
+msgid "Customize windows counter indicators"
+msgstr "Tilpass vinduenes nummer-indikatorer"
+
+#: Settings.ui.h:59
+msgid "Default"
+msgstr "Standard"
+
+#: Settings.ui.h:60
+msgid "Dots"
+msgstr "Prikker"
+
+#: Settings.ui.h:61
+msgid "Squares"
+msgstr "Firkanter"
+
+#: Settings.ui.h:62
+msgid "Dashes"
+msgstr "Streker"
+
+#: Settings.ui.h:63
+msgid "Segmented"
+msgstr "Segmentert"
+
+#: Settings.ui.h:64
+msgid "Solid"
+msgstr "Solid"
+
+#: Settings.ui.h:65
+msgid "Ciliora"
+msgstr "Ciliora"
+
+#: Settings.ui.h:66
+msgid "Metro"
+msgstr "Metro"
+
+#: Settings.ui.h:67
+msgid "Set the background color for the dash."
+msgstr "Avgjør bakgrunnsfargen."
+
+#: Settings.ui.h:68
+msgid "Customize the dash color"
+msgstr "Tilpass fargen"
+
+#: Settings.ui.h:69
+msgid "Tune the dash background opacity."
+msgstr "Justere bakgrunnens gjennomsiktighet."
+
+#: Settings.ui.h:71
+msgid "Fixed"
+msgstr "Fast"
+
+#: Settings.ui.h:72
+msgid "Adaptive"
+msgstr "Adaptiv"
+
+#: Settings.ui.h:73
+msgid "Dynamic"
+msgstr "Dynamisk"
+
+#: Settings.ui.h:74
+msgid "Opacity"
+msgstr "Gjennomsiktighet"
+
+#: Settings.ui.h:75
+msgid "Force straight corner\n"
+msgstr "Tving rette hjørner\n"
+
+#: Settings.ui.h:77
+msgid "Appearance"
+msgstr "Utseende"
+
+#: Settings.ui.h:78
+msgid "version: "
+msgstr "versjon: "
+
+#: Settings.ui.h:79
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Flytter dash ut av oversikten og omformer den til en dokk"
+
+#: Settings.ui.h:80
+msgid "Created by"
+msgstr "Laget av"
+
+#: Settings.ui.h:81
+msgid "Webpage"
+msgstr "Nettside"
+
+#: Settings.ui.h:82
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">Dette programmet leveres med ABSOLUTT INGEN GARANTI.\n"
+"Se <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html\">GNU "
+"General Public License, versjon 2 eller senere</a> for detaljer.</span>"
+
+#: Settings.ui.h:84
+msgid "About"
+msgstr "Om"
+
+#: Settings.ui.h:85
+msgid "Customize minimum and maximum opacity values"
+msgstr "Tilpass verdier for minimum og maks gjennomsiktighet"
+
+#: Settings.ui.h:86
+msgid "Minimum opacity"
+msgstr "Minimum gjennomsiktighet"
+
+#: Settings.ui.h:87
+msgid "Maximum opacity"
+msgstr "Maksimum gjennomsiktighet"
+
+#: Settings.ui.h:88
+msgid "Number overlay"
+msgstr "Nummerert overlag"
+
+#: Settings.ui.h:89
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr "Midlertidig vis programnummer over ikoner, som svarer til snarveien."
+
+#: Settings.ui.h:90
+msgid "Show the dock if it is hidden"
+msgstr "Vis dokken om den er skjult"
+
+#: Settings.ui.h:91
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Om autoskjul er i bruk vil dokken vises en kort stund når snarveien utløses."
+
+#: Settings.ui.h:92
+msgid "Shortcut for the options above"
+msgstr "Snarvei for valgene ovenfor"
+
+#: Settings.ui.h:93
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Syntaks: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:94
+msgid "Hide timeout (s)"
+msgstr "Skjuleperiode (s)"
+
+#: Settings.ui.h:95
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Vis dokken når musepekeren holdes langs skjermkanten."
+
+#: Settings.ui.h:96
+msgid "Autohide"
+msgstr "Autoskjul"
+
+#: Settings.ui.h:97
+msgid "Push to show: require pressure to show the dock"
+msgstr "Dytt for å vise: krev et økt trykk for å vise dokken"
+
+#: Settings.ui.h:98
+msgid "Enable in fullscreen mode"
+msgstr "Aktiver i fullskjermmodus"
+
+#: Settings.ui.h:99
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Vis dokken når den ikke forstyrrer programvinduer."
+
+#: Settings.ui.h:100
+msgid "Dodge windows"
+msgstr "Smett unna vinduer"
+
+#: Settings.ui.h:101
+msgid "All windows"
+msgstr "Alle vinduer"
+
+#: Settings.ui.h:102
+msgid "Only focused application's windows"
+msgstr "Kun fokuserte programvinduer"
+
+#: Settings.ui.h:103
+msgid "Only maximized windows"
+msgstr "Kun maksimerte programvinduer"
+
+#: Settings.ui.h:104
+msgid "Animation duration (s)"
+msgstr "Animasjonsvarighet (s)"
+
+#: Settings.ui.h:105
+msgid "Show timeout (s)"
+msgstr "Visningslengde (s)"
+
+#: Settings.ui.h:106
+msgid "Pressure threshold"
+msgstr "Trykkterskel"
diff --git a/extensions/dash-to-dock/po/nl.po b/extensions/dash-to-dock/po/nl.po
new file mode 100644
index 00000000..ea742c74
--- /dev/null
+++ b/extensions/dash-to-dock/po/nl.po
@@ -0,0 +1,662 @@
+# Translation for de
+# Copyright (C) 2014 Michele
+# This file is distributed under the same license as the dash-to-dock package.
+#
+# Morris Jobke <hey@morrisjobke.de>, 2014.
+# Jonatan Zeidler <jonatan_zeidler@hotmail.de>, 2012.
+# jonius <jonatan_zeidler@gmx.de>, 2012.
+# Heimen Stoffels <vistausss@outlook.com>, 2015, 2019.
+msgid ""
+msgstr ""
+"Project-Id-Version: Dash to Dock\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2019-10-10 20:27+0200\n"
+"PO-Revision-Date: 2019-10-10 20:46+0200\n"
+"Last-Translator: Heimen Stoffels <vistausss@outlook.com>\n"
+"Language-Team: Dutch <kde-i18n-doc@kde.org>\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 19.11.70\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: prefs.js:264
+msgid "Primary monitor"
+msgstr "Primair beeldscherm"
+
+#: prefs.js:273 prefs.js:280
+msgid "Secondary monitor "
+msgstr "Secundair beeldscherm"
+
+#: prefs.js:305 Settings.ui.h:28
+msgid "Right"
+msgstr "Rechts"
+
+#: prefs.js:306 Settings.ui.h:25
+msgid "Left"
+msgstr "Links"
+
+#: prefs.js:356
+msgid "Intelligent autohide customization"
+msgstr "Voorkeuren voor slim verbergen"
+
+#: prefs.js:363 prefs.js:556 prefs.js:612
+msgid "Reset to defaults"
+msgstr "Standaardwaarden"
+
+#: prefs.js:549
+msgid "Show dock and application numbers"
+msgstr "Dock en programmanummers tonen"
+
+#: prefs.js:605
+msgid "Customize middle-click behavior"
+msgstr "Middelste muisknop-gedrag aanpassen"
+
+#: prefs.js:688
+msgid "Customize running indicators"
+msgstr "Indicatoren van draaiende programma's aanpassen"
+
+#: prefs.js:800
+#: Settings.ui.h:74
+msgid "Customize opacity"
+msgstr "Doorzichtigheid aanpassen"
+
+#: appIcons.js:809
+msgid "All Windows"
+msgstr "Alle vensters"
+
+#. Translators: %s is "Settings", which is automatically translated. You
+#. can also translate the full message if this fits better your language.
+#: appIcons.js:1126
+#, javascript-format
+msgid "Dash to Dock %s"
+msgstr "Dash to Dock %s"
+
+#: Settings.ui.h:1
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Als je gekozen hebt voor minimaliseren, dan zorgt dubbelklikken ervoor dat "
+"alle vensters van het huidige programma worden geminimaliseerd."
+
+#: Settings.ui.h:2
+msgid "Shift+Click action"
+msgstr "Shift+klikken-actie"
+
+#: Settings.ui.h:3
+msgid "Raise window"
+msgstr "Venster naar voren halen"
+
+#: Settings.ui.h:4
+msgid "Minimize window"
+msgstr "Venster minimalisren"
+
+#: Settings.ui.h:5
+msgid "Launch new instance"
+msgstr "Nieuw proces openen"
+
+#: Settings.ui.h:6
+msgid "Cycle through windows"
+msgstr "Schakelen tussen vensters"
+
+#: Settings.ui.h:7
+msgid "Minimize or overview"
+msgstr "Minimaliseren of activiteitenoverzicht"
+
+#: Settings.ui.h:8
+msgid "Show window previews"
+msgstr "Venstervoorbeelden tonen"
+
+#: Settings.ui.h:9
+msgid "Minimize or show previews"
+msgstr "Minimaliseren of voorbeelden tonen"
+
+#: Settings.ui.h:10
+msgid "Focus or show previews"
+msgstr "Focussen of voorbeelden tonen"
+
+#: Settings.ui.h:11
+msgid "Quit"
+msgstr "Afsluiten"
+
+#: Settings.ui.h:12
+msgid "Behavior for Middle-Click."
+msgstr "Wat er gebeurt bij middelklikken."
+
+#: Settings.ui.h:13
+msgid "Middle-Click action"
+msgstr "Middelklikactie"
+
+#: Settings.ui.h:14
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Wat er gebeurt bij Shift+middelklikken."
+
+#: Settings.ui.h:15
+msgid "Shift+Middle-Click action"
+msgstr "Shift+middelklik-actie"
+
+#: Settings.ui.h:16
+msgid "Enable Unity7 like glossy backlit items"
+msgstr "Unity7-achtige itemachtergrond gebruiken"
+
+#: Settings.ui.h:17
+msgid "Use dominant color"
+msgstr "Dominante kleur gebruiken"
+
+#: Settings.ui.h:18
+msgid "Customize indicator style"
+msgstr "Indicatorstijl aanpassen"
+
+#: Settings.ui.h:19
+msgid "Color"
+msgstr "Kleur"
+
+#: Settings.ui.h:20
+msgid "Border color"
+msgstr "Randkleur"
+
+#: Settings.ui.h:21
+msgid "Border width"
+msgstr "Randbreedte"
+
+#: Settings.ui.h:22
+msgid "Show the dock on"
+msgstr "Dock tonen op"
+
+#: Settings.ui.h:23
+msgid "Show on all monitors."
+msgstr "Tonen op alle beeldschermen."
+
+#: Settings.ui.h:24
+msgid "Position on screen"
+msgstr "Positie op het scherm"
+
+#: Settings.ui.h:26
+msgid "Bottom"
+msgstr "Onderaan"
+
+#: Settings.ui.h:27
+msgid "Top"
+msgstr "Bovenaan"
+
+#: Settings.ui.h:29
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"Verberg het dock als het een venster van het huidige programma in de weg "
+"zit. Er zijn uitgebreide instellingen hiervoor beschikbaar."
+
+#: Settings.ui.h:30
+msgid "Intelligent autohide"
+msgstr "Slim verbergen"
+
+#: Settings.ui.h:31
+msgid "Dock size limit"
+msgstr "Maximale dockgrootte"
+
+#: Settings.ui.h:32
+msgid "Panel mode: extend to the screen edge"
+msgstr "Paneelmodus: uitrekken tot aan de schermrand"
+
+#: Settings.ui.h:33
+msgid "Icon size limit"
+msgstr "Maximale pictogramgrootte"
+
+#: Settings.ui.h:34
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr ""
+"Vastgezette pictogramgrootte: scroll om meer pictogrammen weer te geven"
+
+#: Settings.ui.h:35
+msgid "Position and size"
+msgstr "Positie en grootte"
+
+#: Settings.ui.h:36
+msgid "Show favorite applications"
+msgstr "Favoriete programma's tonen"
+
+#: Settings.ui.h:37
+msgid "Show running applications"
+msgstr "Geopende programma's tonen"
+
+#: Settings.ui.h:38
+msgid "Isolate workspaces."
+msgstr "Werkbladen isoleren."
+
+#: Settings.ui.h:39
+msgid "Isolate monitors."
+msgstr "Beeldschermen isoleren."
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "Voorbeelden van geopende vensters tonen."
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Als je dit uitschakelt, dan zijn deze instellingen toegankelijk via gnome-"
+"tweaks of de extensiesite."
+
+#: Settings.ui.h:42
+msgid "Show <i>Applications</i> icon"
+msgstr "Pictogram voor <i>Alle programma's</i> tonen"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr "Verplaatst de 'Alle programma's'-knop naar het begin van het dock."
+
+#: Settings.ui.h:44
+msgid "Animate <i>Show Applications</i>."
+msgstr "Animatie na klikken op <i>Alle programma's tonen</i>."
+
+#: Settings.ui.h:45
+msgid "Show trash can"
+msgstr "Prullenbak tonen"
+
+#: Settings.ui.h:46
+msgid "Show mounted volumes and devices"
+msgstr "Aangekoppelde schijven en apparaten tonen"
+
+#: Settings.ui.h:47
+msgid "Launchers"
+msgstr "Starters"
+
+#: Settings.ui.h:48
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Gebruik Super+(0-9) om programma's te openen en focussen. Kan ook worden "
+"gebruikt met Shift en Ctrl."
+
+#: Settings.ui.h:49
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "Sneltoetsen gebruiken om programma's te openen/focussen"
+
+#: Settings.ui.h:50
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr ""
+"Wat er gebeurt bij het klikken op het pictogram van een geopend programma."
+
+#: Settings.ui.h:51
+msgid "Click action"
+msgstr "Klikactie"
+
+#: Settings.ui.h:52
+msgid "Minimize"
+msgstr "Minimaliseren"
+
+#: Settings.ui.h:53
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr ""
+"Wat er gebeurt bij het scrollen op het pictogram van een geopend programma."
+
+#: Settings.ui.h:54
+msgid "Scroll action"
+msgstr "Scrollactie"
+
+#: Settings.ui.h:55
+msgid "Do nothing"
+msgstr "Niets doen"
+
+#: Settings.ui.h:56
+msgid "Switch workspace"
+msgstr "Van werkblad wisselen"
+
+#: Settings.ui.h:57
+msgid "Behavior"
+msgstr "Gedrag"
+
+#: Settings.ui.h:58
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Enkele aanpassingen, bedoeld om het dock te integreren met het standaard "
+"GNOME-thema. In plaats daarvan kun je hieronder specifieke opties inschakelen."
+
+#: Settings.ui.h:59
+msgid "Use built-in theme"
+msgstr "Ingebouwd thema gebruiken"
+
+#: Settings.ui.h:60
+msgid "Save space reducing padding and border radius."
+msgstr "Bespaar ruimte door de straal van de dikte en rand te verkleinen."
+
+#: Settings.ui.h:61
+msgid "Shrink the dash"
+msgstr "Snelstarter verkleinen"
+
+#: Settings.ui.h:62
+msgid "Customize windows counter indicators"
+msgstr "Vensterindicatoren aanpassen"
+
+#: Settings.ui.h:63
+msgid "Default"
+msgstr "Standaard"
+
+#: Settings.ui.h:64
+msgid "Dots"
+msgstr "Stipjes"
+
+#: Settings.ui.h:65
+msgid "Squares"
+msgstr "Vierkantjes"
+
+#: Settings.ui.h:66
+msgid "Dashes"
+msgstr "Streepjes"
+
+#: Settings.ui.h:67
+msgid "Segmented"
+msgstr "Gesegmenteerd"
+
+#: Settings.ui.h:68
+msgid "Solid"
+msgstr "Vast"
+
+#: Settings.ui.h:69
+msgid "Ciliora"
+msgstr "Ciliora"
+
+#: Settings.ui.h:70
+msgid "Metro"
+msgstr "Metro"
+
+#: Settings.ui.h:71
+msgid "Set the background color for the dash."
+msgstr "Stel de achtergrondkleur in van de snelstarter."
+
+#: Settings.ui.h:72
+msgid "Customize the dash color"
+msgstr "Snelstarterkleur aanpassen"
+
+#: Settings.ui.h:73
+msgid "Tune the dash background opacity."
+msgstr "Pas de doorzichtigheid van de snelstarterachtergrond aan."
+
+#: Settings.ui.h:75
+msgid "Fixed"
+msgstr "Vooringesteld"
+
+#: Settings.ui.h:76
+msgid "Dynamic"
+msgstr "Dynamisch"
+
+#: Settings.ui.h:77
+msgid "Opacity"
+msgstr "Doorzichtigheid"
+
+#: Settings.ui.h:78
+msgid "Force straight corner\n"
+msgstr "Rechte hoek afdwingen\n"
+
+#: Settings.ui.h:80
+msgid "Appearance"
+msgstr "Uiterlijk"
+
+#: Settings.ui.h:81
+msgid "version: "
+msgstr "versie: "
+
+#: Settings.ui.h:82
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr ""
+"Toont de snelstarter buiten het activiteitenoverzicht zodat het een dock "
+"wordt"
+
+#: Settings.ui.h:83
+msgid "Created by"
+msgstr "Gemaakt door"
+
+#: Settings.ui.h:84
+msgid "Webpage"
+msgstr "Website"
+
+#: Settings.ui.h:85
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">Dit programma wordt geleverd ZONDER ENIGE GARANTIE.\n"
+"Lees de <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">GNU General Public License, versie 2 of nieuwer</a>, voor meer informatie."
+"</span>"
+
+#: Settings.ui.h:87
+msgid "About"
+msgstr "Over"
+
+#: Settings.ui.h:88
+msgid "Customize minimum and maximum opacity values"
+msgstr "Minimum- en maximumwaarden van doorzichtigheid aanpassen"
+
+#: Settings.ui.h:89
+msgid "Minimum opacity"
+msgstr "Minimale doorzichtigheid"
+
+#: Settings.ui.h:90
+msgid "Maximum opacity"
+msgstr "Maximale doorzichtigheid"
+
+#: Settings.ui.h:91
+msgid "Number overlay"
+msgstr "Nummers tonen"
+
+#: Settings.ui.h:92
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"Toon tijdelijk de programmanummers, behorende bij de sneltoets, op de "
+"pictogrammen."
+
+#: Settings.ui.h:93
+msgid "Show the dock if it is hidden"
+msgstr "Dock tonen indien verborgen"
+
+#: Settings.ui.h:94
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Als je automatisch verbergen gebruikt, dan wordt het dock, middels de "
+"sneltoets, korte tijd getoond."
+
+#: Settings.ui.h:95
+msgid "Shortcut for the options above"
+msgstr "Sneltoets voor bovenstaande opties"
+
+#: Settings.ui.h:96
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:97
+msgid "Hide timeout (s)"
+msgstr "Verberginterval (s)"
+
+#: Settings.ui.h:98
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Dock tonen door de muiscursor op de schermrand te plaatsen."
+
+#: Settings.ui.h:99
+msgid "Autohide"
+msgstr "Automatisch verbergen"
+
+#: Settings.ui.h:100
+msgid "Push to show: require pressure to show the dock"
+msgstr "Tonen middels druk: druk toepassen om het dock te tonen"
+
+#: Settings.ui.h:101
+msgid "Enable in fullscreen mode"
+msgstr "Inschakelen in beeldvullende modus"
+
+#: Settings.ui.h:102
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Toon het dock als het geen programmavensters in de weg zit."
+
+#: Settings.ui.h:103
+msgid "Dodge windows"
+msgstr "Vensters ontwijken"
+
+#: Settings.ui.h:104
+msgid "All windows"
+msgstr "Alle vensters"
+
+#: Settings.ui.h:105
+msgid "Only focused application's windows"
+msgstr "Alleen gefocuste programmavensters"
+
+#: Settings.ui.h:106
+msgid "Only maximized windows"
+msgstr "Alleen gemaximaliseerde vensters"
+
+#: Settings.ui.h:107
+msgid "Animation duration (s)"
+msgstr "Animatieduur (s)"
+
+#: Settings.ui.h:108
+msgid "Show timeout (s)"
+msgstr "Weergave-interval (s)"
+
+#: Settings.ui.h:109
+msgid "Pressure threshold"
+msgstr "Drukwaarde"
+
+#~ msgid "Show a dot for each windows of the application."
+#~ msgstr "Toon een stip voor elk geopend venster."
+
+#~ msgid "0.000"
+#~ msgstr "0.000"
+
+#, fuzzy
+#~ msgid ""
+#~ "With fixed icon size, only the edge of the dock and the <i>Show "
+#~ "Applications</i> icon are active."
+#~ msgstr ""
+#~ "Het gebied nabij de schermrand en de <i>Applicaties weergeven</i>-knop "
+#~ "zijn actief."
+
+#~ msgid "Switch workspace by scrolling on the dock"
+#~ msgstr "Van werkblad wisselen door te scrollen op het dock"
+
+#~ msgid "Only consider windows of the focused application"
+#~ msgstr "Alleen vensters van de huidige gefocuste applicatie overwegen"
+
+#~ msgid "Main Settings"
+#~ msgstr "Grundeinstellungen"
+
+#~ msgid "Dock Position"
+#~ msgstr "Dock-Position"
+
+#~ msgid "Dock is fixed and always visible"
+#~ msgstr "Das Dock hat eine feste Position und ist immer sichtbar"
+
+#~ msgid "Show delay [ms]"
+#~ msgstr "Einblendeverzögerung [ms]"
+
+#~ msgid "Hide delay [ms]"
+#~ msgstr "Ausblendeverzögerung [ms]"
+
+#~ msgid "Application based intellihide"
+#~ msgstr "Anwendungsbasiertes intelligentes Verstecken"
+
+#~ msgid "Show the dock on following monitor (if attached)"
+#~ msgstr "Zeige Dock auf folgendem Monitor (falls angeschlossen)"
+
+#~ 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"
+
+#~ msgid "Expand (experimental and buggy)"
+#~ msgstr "Komplette Höhe (experimentell und fehlerbehaftet)"
+
+#~ msgid "Maximum icon size"
+#~ msgstr "Maximale Symbolgröße"
+
+#~ msgid "16"
+#~ msgstr "16"
+
+#~ msgid "24"
+#~ msgstr "24"
+
+#~ msgid "32"
+#~ msgstr "32"
+
+#~ msgid "48"
+#~ msgstr "48"
+
+#~ msgid "64"
+#~ msgstr "64"
+
+#~ msgid "Optional features"
+#~ msgstr "Optionale Funktionen"
+
+#~ msgid "Deadtime between each workspace switching [ms]"
+#~ msgstr "Stillstandszeit zwischen Arbeitsflächenwechsel [ms]"
+
+#~ msgid "Only a 1px wide area close to the screen edge is active"
+#~ msgstr "Nur einen 1 Pixel-breiten Bereich am Rand nutzen"
+
+#~ msgid "All the area of the dock is active"
+#~ msgstr "Den gesamten Bereich des Docks nutzen"
+
+#~ msgid "Customize actions on mouse click"
+#~ msgstr "Aktion bei Mausklick anpassen"
+
+#~ msgid "Action on clicking on running app"
+#~ msgstr "Aktion beim Klicken auf eine laufende Anwendung"
+
+#~ msgid "Minimize window on shift+click (double click for all app windows)"
+#~ msgstr ""
+#~ "Fenster mit Shift+Klick minimieren (Doppelklick für alle Fenster der "
+#~ "Anwendung)"
+
+#~ msgid "Appearence and Themes"
+#~ msgstr "Erscheinungsbild und Themen"
+
+#~ msgid ""
+#~ "A customized theme is built in the extension. This is meant to work with "
+#~ "the default Adwaita theme: the dash is shrunk to save space, its "
+#~ "background transparency reduced, and custom indicators for the number of "
+#~ "windows of each application are added."
+#~ msgstr ""
+#~ "Ein angepasstes Thema ist in dieser Erweiterung enthalten. Es ist für das "
+#~ "Vorgabe-Adwaita-Thema gedacht: Das Dash ist schmaler, um Platz zu sparen, "
+#~ "die Hintergrundtransparenz ist reduziert und für jede Anwendung wird ein "
+#~ "Indikator für die Anzahl der Fenster eingefügt."
+
+#~ msgid ""
+#~ "Alternatively, for a better integration with custom themes, each "
+#~ "customization can be applied indipendently"
+#~ msgstr ""
+#~ "Alternativ können für eine bessere Integration Anpassungen vorgenommen "
+#~ "werden"
+
+#~ msgid "Shrink the dash size by reducing padding"
+#~ msgstr "Das Dash schmaler machen durch Verkleinern des Abstands zum Rand"
+
+#~ msgid "Apply custom theme (work only with the default Adwaita theme)"
+#~ msgstr ""
+#~ "Benutzerdefiniertes Theme verwenden (funktioniert nur mit dem Standard-"
+#~ "Adwaita-Theme)"
diff --git a/extensions/dash-to-dock/po/pl.po b/extensions/dash-to-dock/po/pl.po
new file mode 100644
index 00000000..b45c00a0
--- /dev/null
+++ b/extensions/dash-to-dock/po/pl.po
@@ -0,0 +1,558 @@
+# Polish translation for dash-to-dock GNOME Shell extension
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the dash-to-dock package.
+#
+#
+# Piotr Sokół <psokol.l10n@gmail.com>, 2012, 2013, 2015, 2016, 2017.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 55\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2019-10-10 10:10+0200\n"
+"PO-Revision-Date: 2019-10-10 10:31+0200\n"
+"Last-Translator: Piotr Sokół <psokol.l10n@gmail.com>\n"
+"Language-Team: polski <>\n"
+"Language: pl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2;\n"
+"X-Generator: Poedit 2.2.3\n"
+
+#: prefs.js:264
+msgid "Primary monitor"
+msgstr "Podstawowy"
+
+#: prefs.js:273 prefs.js:280
+msgid "Secondary monitor "
+msgstr "Drugorzędny "
+
+#: prefs.js:305 Settings.ui.h:28
+msgid "Right"
+msgstr "Po prawej"
+
+#: prefs.js:306 Settings.ui.h:25
+msgid "Left"
+msgstr "Po lewej"
+
+#: prefs.js:356
+msgid "Intelligent autohide customization"
+msgstr "Dostosowanie automatycznego ukrywania"
+
+#: prefs.js:363 prefs.js:556 prefs.js:612
+msgid "Reset to defaults"
+msgstr "Przywróć domyślne"
+
+#: prefs.js:549
+msgid "Show dock and application numbers"
+msgstr "Wyświetlanie doku i numerów programów"
+
+#: prefs.js:605
+msgid "Customize middle-click behavior"
+msgstr "Dostosowanie działania przycisków myszy"
+
+#: prefs.js:688
+msgid "Customize running indicators"
+msgstr "Dostosowanie wskaźników okien"
+
+#: prefs.js:800
+#: Settings.ui.h:74
+msgid "Customize opacity"
+msgstr "Dostosowanie nieprzejrzystości"
+
+#: appIcons.js:809
+msgid "All Windows"
+msgstr "Wszystkie okna"
+
+#. Translators: %s is "Settings", which is automatically translated. You
+#. can also translate the full message if this fits better your language.
+#: appIcons.js:1126
+#, javascript-format
+msgid "Dash to Dock %s"
+msgstr "%s Dash to Dock"
+
+#: locations.js:65
+msgid "Trash"
+msgstr "Kosz"
+
+#: locations.js:74
+msgid "Empty Trash"
+msgstr "Pusty kosz"
+
+#: locations.js:182
+msgid "Mount"
+msgstr "Zamontuj"
+
+#: locations.js:225
+msgid "Eject"
+msgstr "Wysuń"
+
+#: locations.js:230
+msgid "Unmount"
+msgstr "Odmontuj"
+
+#: Settings.ui.h:1
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Wybranie zminimalizowania okna, umożliwia minimalizowanie wszystkich okien "
+"programu dwukrotnym kliknięciem"
+
+#: Settings.ui.h:2
+msgid "Shift+Click action"
+msgstr "Kliknięcia lewym przyciskiem + Shift"
+
+#: Settings.ui.h:3
+msgid "Raise window"
+msgstr "Przywrócenie okna"
+
+#: Settings.ui.h:4
+msgid "Minimize window"
+msgstr "Zminimalizowanie okna"
+
+#: Settings.ui.h:5
+msgid "Launch new instance"
+msgstr "Otwarcie nowego okna"
+
+#: Settings.ui.h:6
+msgid "Cycle through windows"
+msgstr "Przełączenie pomiędzy oknami"
+
+#: Settings.ui.h:7
+msgid "Minimize or overview"
+msgstr "Zminimalizowanie lub ekran podglądu"
+
+#: Settings.ui.h:8
+msgid "Show window previews"
+msgstr "Wyświetlenie podglądu okien"
+
+#: Settings.ui.h:9
+#, fuzzy
+#| msgid "Minimize or overview"
+msgid "Minimize or show previews"
+msgstr "Zminimalizowanie lub ekran podglądu"
+
+#: Settings.ui.h:10
+#, fuzzy
+#| msgid "Show window previews"
+msgid "Focus or show previews"
+msgstr "Wyświetlenie podglądu okien"
+
+#: Settings.ui.h:11
+msgid "Quit"
+msgstr "Zakończenie działania"
+
+#: Settings.ui.h:12
+msgid "Behavior for Middle-Click."
+msgstr "Konfiguruje działanie kliknięcia środkowym przyciskiem myszy"
+
+#: Settings.ui.h:13
+msgid "Middle-Click action"
+msgstr "Kliknięcie środkowym przyciskiem"
+
+#: Settings.ui.h:14
+msgid "Behavior for Shift+Middle-Click."
+msgstr ""
+"Konfiguruje działanie kliknięcia środkowym przyciskiem myszy z przytrzymanym "
+"klawiszem Shift"
+
+#: Settings.ui.h:15
+msgid "Shift+Middle-Click action"
+msgstr "Kliknięcie środkowym przyciskiem + Shift"
+
+#: Settings.ui.h:16
+msgid "Enable Unity7 like glossy backlit items"
+msgstr "Podświetlenie elementów w stylu Unity7"
+
+#: Settings.ui.h:17
+msgid "Use dominant color"
+msgstr "Użyj dominującego koloru"
+
+#: Settings.ui.h:18
+msgid "Customize indicator style"
+msgstr "Dostosowanie stylu wskaźników"
+
+#: Settings.ui.h:19
+msgid "Color"
+msgstr "Kolor"
+
+#: Settings.ui.h:20
+msgid "Border color"
+msgstr "Kolor obramowania"
+
+#: Settings.ui.h:21
+msgid "Border width"
+msgstr "Szerokość obramowania"
+
+#: Settings.ui.h:22
+msgid "Show the dock on"
+msgstr "Ekran wyświetlania doku"
+
+#: Settings.ui.h:23
+msgid "Show on all monitors."
+msgstr "Na wszystkich ekranach"
+
+#: Settings.ui.h:24
+msgid "Position on screen"
+msgstr "Położenie na ekranie"
+
+#: Settings.ui.h:26
+msgid "Bottom"
+msgstr "Na dole"
+
+#: Settings.ui.h:27
+msgid "Top"
+msgstr "U góry"
+
+#: Settings.ui.h:29
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"Ukrywa dok jeśli zakrywa okno bieżącego programu. Dostępnych jest więcej "
+"szczegółowych opcji."
+
+#: Settings.ui.h:30
+msgid "Intelligent autohide"
+msgstr "Inteligentne ukrywanie"
+
+#: Settings.ui.h:31
+msgid "Dock size limit"
+msgstr "Ograniczenie rozmiaru doku"
+
+#: Settings.ui.h:32
+msgid "Panel mode: extend to the screen edge"
+msgstr "Tryb panelu: rozciągnięcie do krawędzi ekranu"
+
+#: Settings.ui.h:33
+msgid "Icon size limit"
+msgstr "Ograniczenie rozmiaru ikon"
+
+#: Settings.ui.h:34
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Ustalony rozmiar ikon: odsłanianie ikon przewijaniem"
+
+#: Settings.ui.h:35
+msgid "Position and size"
+msgstr "Położenie i rozmiar"
+
+#: Settings.ui.h:36
+msgid "Show favorite applications"
+msgstr "Ulubione programy"
+
+#: Settings.ui.h:37
+msgid "Show running applications"
+msgstr "Uruchomione programy"
+
+#: Settings.ui.h:38
+msgid "Isolate workspaces."
+msgstr "Izolowanie obszarów roboczych"
+
+#: Settings.ui.h:39
+msgid "Isolate monitors."
+msgstr "Izolowanie ekranów"
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "Podgląd otwartych okien"
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+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
+msgid "Show <i>Applications</i> icon"
+msgstr "Przycisk <i>Wyświetl programy</i>"
+
+#: 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
+msgid "Animate <i>Show Applications</i>."
+msgstr "Animowanie przycisku <i>Wyświetl programy</i>"
+
+#: Settings.ui.h:45
+msgid "Show trash can"
+msgstr "Pokaż kosz na śmieci"
+
+#: Settings.ui.h:46
+msgid "Show mounted volumes and devices"
+msgstr "Pokaż zamontowane woluminy oraz urządzenia"
+
+#: Settings.ui.h:47
+msgid "Launchers"
+msgstr "Aktywatory"
+
+#: Settings.ui.h:48
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Używa skrótu Super+(0-9) do uruchomienia aktywatorów. Można użyć z "
+"modyfikatorem Shift lub Ctrl."
+
+#: Settings.ui.h:49
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "Uruchamianie aktywatorów skrótami klawiszowymi"
+
+#: Settings.ui.h:50
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Określa działanie kliknięcia ikony uruchomionego programu"
+
+#: Settings.ui.h:51
+msgid "Click action"
+msgstr "Działanie kliknięcia"
+
+#: Settings.ui.h:52
+msgid "Minimize"
+msgstr "Zminimalizowanie okna"
+
+#: Settings.ui.h:53
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Określa działanie przewijania kółkiem ikony programu"
+
+#: Settings.ui.h:54
+msgid "Scroll action"
+msgstr "Działanie przewijania"
+
+#: Settings.ui.h:55
+msgid "Do nothing"
+msgstr "Brak"
+
+#: Settings.ui.h:56
+msgid "Switch workspace"
+msgstr "Przełączenie obszaru roboczego"
+
+#: Settings.ui.h:57
+msgid "Behavior"
+msgstr "Zachowanie"
+
+#: Settings.ui.h:58
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Integruje dok z domyślnym stylem GNOME przy użyciu kilku ustawień. "
+"Opcjonalnie ustawienia te można określić poniżej."
+
+#: Settings.ui.h:59
+msgid "Use built-in theme"
+msgstr "Użycie zintegrowanego stylu"
+
+#: Settings.ui.h:60
+msgid "Save space reducing padding and border radius."
+msgstr ""
+"Zmniejsza zajmowaną powierzchnię redukując\n"
+"odległość od krawędzi i jej zaokrąglenie"
+
+#: Settings.ui.h:61
+msgid "Shrink the dash"
+msgstr "Zmniejszenie kokpitu"
+
+#: Settings.ui.h:62
+#, fuzzy
+#| msgid "Show windows counter indicators"
+msgid "Customize windows counter indicators"
+msgstr "Wskaźniki ilości okien"
+
+#: Settings.ui.h:63
+msgid "Default"
+msgstr "Domyślnie"
+
+#: Settings.ui.h:64
+msgid "Dots"
+msgstr "Kropki"
+
+#: Settings.ui.h:65
+msgid "Squares"
+msgstr "Kwadraty"
+
+#: Settings.ui.h:66
+msgid "Dashes"
+msgstr "Kreski"
+
+#: Settings.ui.h:67
+msgid "Segmented"
+msgstr "Posegmentowane"
+
+#: Settings.ui.h:68
+msgid "Solid"
+msgstr "Nieprzerywane"
+
+#: Settings.ui.h:69
+msgid "Ciliora"
+msgstr ""
+
+#: Settings.ui.h:70
+msgid "Metro"
+msgstr ""
+
+#: Settings.ui.h:71
+msgid "Set the background color for the dash."
+msgstr "Ustala wybrany kolor tła kokpitu"
+
+#: Settings.ui.h:72
+msgid "Customize the dash color"
+msgstr "Kolor kokpitu"
+
+#: Settings.ui.h:73
+msgid "Tune the dash background opacity."
+msgstr "Modyfikuje zaciemnienie tła kokpitu"
+
+#: Settings.ui.h:75
+msgid "Fixed"
+msgstr "Ustalona"
+
+#: Settings.ui.h:76
+msgid "Dynamic"
+msgstr "Dynamiczna"
+
+#: Settings.ui.h:77
+msgid "Opacity"
+msgstr "Nieprzejrzystość"
+
+#: Settings.ui.h:78
+msgid "Force straight corner\n"
+msgstr "Kąty proste narożników\n"
+
+#: Settings.ui.h:80
+msgid "Appearance"
+msgstr "Wygląd"
+
+#: Settings.ui.h:81
+msgid "version: "
+msgstr "wersja: "
+
+#: Settings.ui.h:82
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Przemieszcza kokpit z widoku podglądu do doku"
+
+#: Settings.ui.h:83
+msgid "Created by"
+msgstr "Stworzony przez"
+
+#: Settings.ui.h:84
+msgid "Webpage"
+msgstr "Strona internetowa"
+
+#: Settings.ui.h:85
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">Niniejszy program rozpowszechniany jest bez "
+"jakiejkolwiek gwarancji.\n"
+"Więcej informacji: <a href=\"https://www.gnu.org/licenses/old-licenses/"
+"gpl-2.0.html\">Powszechna licencja publiczna GNU, wersja 2 lub późniejsza</"
+"a>.</span>"
+
+#: Settings.ui.h:87
+msgid "About"
+msgstr "O programie"
+
+#: Settings.ui.h:88
+msgid "Customize minimum and maximum opacity values"
+msgstr "Dostosowanie minimalnej i maksymalnej wartości nieprzejrzystości"
+
+#: Settings.ui.h:89
+msgid "Minimum opacity"
+msgstr "Minimalna nieprzejrzystość"
+
+#: Settings.ui.h:90
+msgid "Maximum opacity"
+msgstr "Maksymalna nieprzejrzystość"
+
+#: Settings.ui.h:91
+msgid "Number overlay"
+msgstr "Nakładka z numerem"
+
+#: Settings.ui.h:92
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr "Wyświetla chwilowo na ikonach numery programów powiązane ze skrótami"
+
+#: Settings.ui.h:93
+msgid "Show the dock if it is hidden"
+msgstr "Wyświetlenie ukrytego doku"
+
+#: Settings.ui.h:94
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr "Wyświetla chwilowo dok po wciśnięciu skrótu klawiszowego"
+
+#: Settings.ui.h:95
+msgid "Shortcut for the options above"
+msgstr "Skrót klawiszowy dla powyższych poleceń"
+
+#: Settings.ui.h:96
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Składnia: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:97
+msgid "Hide timeout (s)"
+msgstr "Czas ukrywania (s)"
+
+#: Settings.ui.h:98
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Wyświetla dok po przemieszczeniu wskaźnika myszy do krawędzi ekranu"
+
+#: Settings.ui.h:99
+msgid "Autohide"
+msgstr "Automatyczne ukrywanie"
+
+#: Settings.ui.h:100
+msgid "Push to show: require pressure to show the dock"
+msgstr "Wymagany nacisk do wyświetlenia doku"
+
+#: Settings.ui.h:101
+msgid "Enable in fullscreen mode"
+msgstr "Wyświetlanie na pełnym ekranie"
+
+#: Settings.ui.h:102
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Wyświetla dok jeśli nie zakrywa okien programu"
+
+#: Settings.ui.h:103
+msgid "Dodge windows"
+msgstr "Ukrywanie przed oknami"
+
+#: Settings.ui.h:104
+msgid "All windows"
+msgstr "Wszystkie okna"
+
+#: Settings.ui.h:105
+msgid "Only focused application's windows"
+msgstr "Tylko aktywne okna programu"
+
+#: Settings.ui.h:106
+msgid "Only maximized windows"
+msgstr "Tylko zmaksymalizowane okna"
+
+#: Settings.ui.h:107
+msgid "Animation duration (s)"
+msgstr "Czas animacji (s)"
+
+#: Settings.ui.h:108
+msgid "Show timeout (s)"
+msgstr "Czas wyświetlania (s)"
+
+#: Settings.ui.h:109
+msgid "Pressure threshold"
+msgstr "Próg nacisku"
+
+#~ msgid "Show a dot for each windows of the application."
+#~ msgstr "Wyświetla kropkę dla każdego okna programu"
+
+#~ msgid "Adaptive"
+#~ msgstr "Adaptacyjna"
diff --git a/extensions/dash-to-dock/po/pt.po b/extensions/dash-to-dock/po/pt.po
new file mode 100644
index 00000000..d65da5f1
--- /dev/null
+++ b/extensions/dash-to-dock/po/pt.po
@@ -0,0 +1,509 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Carlos Alberto Junior Spohr Poletto <carlos.spohr@gmail.com>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Dash to Dock\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2019-03-06 01:57-0600\n"
+"PO-Revision-Date: 2019-03-06 03:55-0600\n"
+"Last-Translator: Adolfo Jayme Barrientos <fitojb@ubuntu.com>\n"
+"Language-Team: Carlos Alberto Junior Spohr Poletto <carlos.spohr@gmail>\n"
+"Language: pt\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"
+
+#: prefs.js:264
+msgid "Primary monitor"
+msgstr "Monitor primário"
+
+#: prefs.js:273 prefs.js:280
+msgid "Secondary monitor "
+msgstr "Monitor secundário "
+
+#: prefs.js:305 Settings.ui.h:28
+msgid "Right"
+msgstr "Direita"
+
+#: prefs.js:306 Settings.ui.h:25
+msgid "Left"
+msgstr "Esquerda"
+
+#: prefs.js:356
+msgid "Intelligent autohide customization"
+msgstr "Personalização do auto-hide inteligente"
+
+#: prefs.js:363 prefs.js:548 prefs.js:604
+msgid "Reset to defaults"
+msgstr "Repor padrão"
+
+#: prefs.js:541
+msgid "Show dock and application numbers"
+msgstr "Mostrar números das docks e aplicações"
+
+#: prefs.js:597
+msgid "Customize middle-click behavior"
+msgstr "Personalizar comportamento do clique do meio"
+
+#: prefs.js:680
+msgid "Customize running indicators"
+msgstr "Personalizar indicadores de execução"
+
+#: prefs.js:792
+#: Settings.ui.h:72
+msgid "Customize opacity"
+msgstr "Personalizar opacidade"
+
+#: appIcons.js:790
+msgid "All Windows"
+msgstr "Todas as janelas"
+
+#. Translators: %s is "Settings", which is automatically translated. You
+#. can also translate the full message if this fits better your language.
+#: appIcons.js:1092
+#, javascript-format
+msgid "Dash to Dock %s"
+msgstr "%s do Dash to Dock"
+
+#: Settings.ui.h:1
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Quando definido para minimizar, duplo clique minimiza todas as janelas da "
+"aplicação."
+
+#: Settings.ui.h:2
+msgid "Shift+Click action"
+msgstr "Ação de Shift+Clique"
+
+#: Settings.ui.h:3
+msgid "Raise window"
+msgstr "Levantar janela"
+
+#: Settings.ui.h:4
+msgid "Minimize window"
+msgstr "Minimizar janela"
+
+#: Settings.ui.h:5
+msgid "Launch new instance"
+msgstr "Abrir nova janela"
+
+#: Settings.ui.h:6
+msgid "Cycle through windows"
+msgstr "Percorrer janelas"
+
+#: Settings.ui.h:7
+msgid "Minimize or overview"
+msgstr "Minimizar ou antever"
+
+#: Settings.ui.h:8
+msgid "Show window previews"
+msgstr "Mostrar antevisão das janelas abertas"
+
+#: Settings.ui.h:9
+msgid "Minimize or show previews"
+msgstr "Minimizar ou antever"
+
+#: Settings.ui.h:10
+msgid "Focus or show previews"
+msgstr "Focar ou antever"
+
+#: Settings.ui.h:11
+msgid "Quit"
+msgstr "Sair"
+
+#: Settings.ui.h:12
+msgid "Behavior for Middle-Click."
+msgstr "Comportamento do clique do meio."
+
+#: Settings.ui.h:13
+msgid "Middle-Click action"
+msgstr "Ação do clique do meio"
+
+#: Settings.ui.h:14
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Comportamento do Shift+Clique do meio."
+
+#: Settings.ui.h:15
+msgid "Shift+Middle-Click action"
+msgstr "Ação do Shift+Clique do meio"
+
+#: Settings.ui.h:16
+msgid "Enable Unity7 like glossy backlit items"
+msgstr "Usar efeito polido no fundo (estilo Unity7)"
+
+#: Settings.ui.h:17
+msgid "Use dominant color"
+msgstr "Usar cor dominante"
+
+#: Settings.ui.h:18
+msgid "Customize indicator style"
+msgstr "Personalizar indicadores"
+
+#: Settings.ui.h:19
+msgid "Color"
+msgstr "Cor"
+
+#: Settings.ui.h:20
+msgid "Border color"
+msgstr "Cor da borda"
+
+#: Settings.ui.h:21
+msgid "Border width"
+msgstr "Largura da borda"
+
+#: Settings.ui.h:22
+msgid "Show the dock on"
+msgstr "Mostrar a dock em"
+
+#: Settings.ui.h:23
+msgid "Show on all monitors."
+msgstr "Mostrar em todos os monitores."
+
+#: Settings.ui.h:24
+msgid "Position on screen"
+msgstr "Posição no ecrã"
+
+#: Settings.ui.h:26
+msgid "Bottom"
+msgstr "Em baixo"
+
+#: Settings.ui.h:27
+msgid "Top"
+msgstr "Em cima"
+
+#: Settings.ui.h:29
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"Esconder a dock quando obstrói uma janela da aplicação atual. Estão "
+"disponíveis opções mais detalhadas."
+
+#: Settings.ui.h:30
+msgid "Intelligent autohide"
+msgstr "Ocultação inteligente"
+
+#: Settings.ui.h:31
+msgid "Dock size limit"
+msgstr "Limite do tamanho da dock"
+
+#: Settings.ui.h:32
+msgid "Panel mode: extend to the screen edge"
+msgstr "Modo Painel: expandir até ao limite do ecrã"
+
+#: Settings.ui.h:33
+msgid "Icon size limit"
+msgstr "Limite do tamanho dos ícones"
+
+#: Settings.ui.h:34
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Tamanho fixo dos ícones: scroll para revelar outros ícones"
+
+#: Settings.ui.h:35
+msgid "Position and size"
+msgstr "Posição e dimensão"
+
+#: Settings.ui.h:36
+msgid "Show favorite applications"
+msgstr "Mostrar aplicações favoritas"
+
+#: Settings.ui.h:37
+msgid "Show running applications"
+msgstr "Mostrar aplicações em execução"
+
+#: Settings.ui.h:38
+msgid "Isolate workspaces."
+msgstr "Isolar áreas de trabalho."
+
+#: Settings.ui.h:39
+msgid "Isolate monitors."
+msgstr "Isolar monitores."
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "Mostrar antevisão das janelas abertas."
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Se desativadas, estas opções estão acessíveis através do gnome-tweak-tool ou "
+"no site das extensões."
+
+#: Settings.ui.h:42
+msgid "Show <i>Applications</i> icon"
+msgstr "Mostrar ícone das <i>Aplicações</i>"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr "Mover o botão das aplicações para o início da dock."
+
+#: Settings.ui.h:44
+msgid "Animate <i>Show Applications</i>."
+msgstr "Animar <i>Mostrar aplicações</i>."
+
+#: Settings.ui.h:45
+msgid "Launchers"
+msgstr "Lançadores"
+
+#: Settings.ui.h:46
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Usar Super+(0-9) como atalhos para as aplicações. Também pode ser usado com "
+"Shift e Ctrl."
+
+#: Settings.ui.h:47
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "Usar atalhos de teclado para aplicações"
+
+#: Settings.ui.h:48
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Comportamento do clique no ícone de uma aplicação em execução."
+
+#: Settings.ui.h:49
+msgid "Click action"
+msgstr "Ação do clique"
+
+#: Settings.ui.h:50
+msgid "Minimize"
+msgstr "Minimizar"
+
+#: Settings.ui.h:51
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Comportamento do scroll no ícone de uma aplicação."
+
+#: Settings.ui.h:52
+msgid "Scroll action"
+msgstr "Ação do scroll"
+
+#: Settings.ui.h:53
+msgid "Do nothing"
+msgstr "Não fazer nada"
+
+#: Settings.ui.h:54
+msgid "Switch workspace"
+msgstr "Alternar espaço de trabalho"
+
+#: Settings.ui.h:55
+msgid "Behavior"
+msgstr "Comportamento"
+
+#: Settings.ui.h:56
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Menos opções visando a integração da doca com o tema padrão do GNOME. "
+"Alternativamente, opções mais detalhadas podem ser ativadas abaixo."
+
+#: Settings.ui.h:57
+msgid "Use built-in theme"
+msgstr "Usar tema embutido"
+
+#: Settings.ui.h:58
+msgid "Save space reducing padding and border radius."
+msgstr "Poupar espaço reduzindo o preenchimento e as bordas."
+
+#: Settings.ui.h:59
+msgid "Shrink the dash"
+msgstr "Encolher a dock"
+
+#: Settings.ui.h:60
+msgid "Customize windows counter indicators"
+msgstr "Mostrar indicador com contagem de janelas"
+
+#: Settings.ui.h:61
+msgid "Default"
+msgstr "Padrão"
+
+#: Settings.ui.h:62
+msgid "Dots"
+msgstr "Pontos"
+
+#: Settings.ui.h:63
+msgid "Squares"
+msgstr "Quadrados"
+
+#: Settings.ui.h:64
+msgid "Dashes"
+msgstr "Linhas"
+
+#: Settings.ui.h:65
+msgid "Segmented"
+msgstr "Segmentado"
+
+#: Settings.ui.h:66
+msgid "Solid"
+msgstr "Sólido"
+
+#: Settings.ui.h:67
+msgid "Ciliora"
+msgstr "Ciliora"
+
+#: Settings.ui.h:68
+msgid "Metro"
+msgstr "Metro"
+
+#: Settings.ui.h:69
+msgid "Set the background color for the dash."
+msgstr "Definir a cor de fundo do painel."
+
+#: Settings.ui.h:70
+msgid "Customize the dash color"
+msgstr "Personalizar cor do painel"
+
+#: Settings.ui.h:71
+msgid "Tune the dash background opacity."
+msgstr "Afinar a cor de fundo do painel."
+
+#: Settings.ui.h:73
+msgid "Fixed"
+msgstr "Fixo"
+
+#: Settings.ui.h:74
+msgid "Dynamic"
+msgstr "Dinâmico"
+
+#: Settings.ui.h:75
+msgid "Opacity"
+msgstr "Opacidade"
+
+#: Settings.ui.h:76
+msgid "Force straight corner\n"
+msgstr "Forçar cantos retos\n"
+
+#: Settings.ui.h:78
+msgid "Appearance"
+msgstr "Aparência"
+
+#: Settings.ui.h:79
+msgid "version: "
+msgstr "versão: "
+
+#: Settings.ui.h:80
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Retira o painel da vista de Atividades, tornando-o numa dock"
+
+#: Settings.ui.h:81
+msgid "Created by"
+msgstr "Criado por"
+
+#: Settings.ui.h:82
+msgid "Webpage"
+msgstr "Página web"
+
+#: Settings.ui.h:83
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+
+#: Settings.ui.h:85
+msgid "About"
+msgstr "Sobre"
+
+#: Settings.ui.h:86
+msgid "Customize minimum and maximum opacity values"
+msgstr "Personalizar valor mínimo e máximo da opacidade"
+
+#: Settings.ui.h:87
+msgid "Minimum opacity"
+msgstr "Opacidade mínima"
+
+#: Settings.ui.h:88
+msgid "Maximum opacity"
+msgstr "Opacidade máxima"
+
+#: Settings.ui.h:89
+msgid "Number overlay"
+msgstr "Números sobrepostos"
+
+#: Settings.ui.h:90
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"Mostrar temporariamente o número das aplicações sobre os ícones, "
+"correspondendo os atalhos."
+
+#: Settings.ui.h:91
+msgid "Show the dock if it is hidden"
+msgstr "Mostrar a dock se estiver escondida"
+
+#: Settings.ui.h:92
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Se o auto-hide estiver ativo, a dock aparecerá temporariamente ao utilizar o "
+"atalho."
+
+#: Settings.ui.h:93
+msgid "Shortcut for the options above"
+msgstr "Atalho para as opções acima"
+
+#: Settings.ui.h:94
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Síntaxe: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:95
+msgid "Hide timeout (s)"
+msgstr "Tempo limite para esconder (s)"
+
+#: Settings.ui.h:96
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Mostrar a dock ao passar o rato na borda do ecrã."
+
+#: Settings.ui.h:97
+msgid "Autohide"
+msgstr "Ocultação inteligente"
+
+#: Settings.ui.h:98
+msgid "Push to show: require pressure to show the dock"
+msgstr "Pressionar para mostrar: requerer pressão para mostrar a doca"
+
+#: Settings.ui.h:99
+msgid "Enable in fullscreen mode"
+msgstr "Ativar no modo de ecrã inteiro"
+
+#: Settings.ui.h:100
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Mostrar a dock quando esta não obstrui as janelas."
+
+#: Settings.ui.h:101
+msgid "Dodge windows"
+msgstr "Esquivar as janelas"
+
+#: Settings.ui.h:102
+msgid "All windows"
+msgstr "Todas as janelas"
+
+#: Settings.ui.h:103
+msgid "Only focused application's windows"
+msgstr "Apenas janelas da aplicação focada"
+
+#: Settings.ui.h:104
+msgid "Only maximized windows"
+msgstr "Apenas janelas maximizadas"
+
+#: Settings.ui.h:105
+msgid "Animation duration (s)"
+msgstr "Tempo da animação (s)"
+
+#: Settings.ui.h:106
+msgid "Show timeout (s)"
+msgstr "Mostrar tempo limite (s)"
+
+#: Settings.ui.h:107
+msgid "Pressure threshold"
+msgstr "Limite de pressão"
diff --git a/extensions/dash-to-dock/po/pt_BR.po b/extensions/dash-to-dock/po/pt_BR.po
new file mode 100644
index 00000000..6cb10a33
--- /dev/null
+++ b/extensions/dash-to-dock/po/pt_BR.po
@@ -0,0 +1,513 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Carlos Alberto Junior Spohr Poletto <carlos.spohr@gmail.com>, 2012.
+# Fábio Nogueira <fnogueira@gnome.org>, 2016.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Dash to Dock\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2019-03-06 01:57-0600\n"
+"PO-Revision-Date: 2019-03-06 03:56-0600\n"
+"Last-Translator: Adolfo Jayme Barrientos <fitojb@ubuntu.com>\n"
+"Language-Team: Português do Brasil\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.2.1\n"
+
+#: prefs.js:264
+msgid "Primary monitor"
+msgstr "Monitor primário"
+
+#: prefs.js:273 prefs.js:280
+msgid "Secondary monitor "
+msgstr "Monitor secundário"
+
+#: prefs.js:305 Settings.ui.h:28
+msgid "Right"
+msgstr "Direita"
+
+#: prefs.js:306 Settings.ui.h:25
+msgid "Left"
+msgstr "Esquerda"
+
+#: prefs.js:356
+msgid "Intelligent autohide customization"
+msgstr "Configuração da ocultação inteligente"
+
+#: prefs.js:363 prefs.js:548 prefs.js:604
+msgid "Reset to defaults"
+msgstr "Restaurar o padrão"
+
+#: prefs.js:541
+msgid "Show dock and application numbers"
+msgstr "Exibir o dock e os números dos aplicativos"
+
+#: prefs.js:597
+msgid "Customize middle-click behavior"
+msgstr "Customizar o comportamento do clique do botão do meio"
+
+#: prefs.js:680
+msgid "Customize running indicators"
+msgstr "Customizar os indicadores de execução"
+
+#: prefs.js:792
+#: Settings.ui.h:72
+msgid "Customize opacity"
+msgstr "Customizar opacidade"
+
+#: appIcons.js:790
+msgid "All Windows"
+msgstr "Todas as janelas"
+
+#. Translators: %s is "Settings", which is automatically translated. You
+#. can also translate the full message if this fits better your language.
+#: appIcons.js:1092
+#, javascript-format
+msgid "Dash to Dock %s"
+msgstr "%s do Dash to Dock"
+
+#: Settings.ui.h:1
+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"
+
+#: Settings.ui.h:2
+msgid "Shift+Click action"
+msgstr "Ação do Shift+Clique"
+
+#: Settings.ui.h:3
+msgid "Raise window"
+msgstr "Aumentar janela"
+
+#: Settings.ui.h:4
+msgid "Minimize window"
+msgstr "Minimizar janela"
+
+#: Settings.ui.h:5
+msgid "Launch new instance"
+msgstr "Iniciar nova instância"
+
+#: Settings.ui.h:6
+msgid "Cycle through windows"
+msgstr "Percorrer através das janelas"
+
+#: Settings.ui.h:7
+msgid "Minimize or overview"
+msgstr "Minimizar o visão geral"
+
+#: Settings.ui.h:8
+msgid "Show window previews"
+msgstr "Mostrar pré-visualizações das janelas"
+
+#: Settings.ui.h:9
+msgid "Minimize or show previews"
+msgstr "Minimizar o mostrar pré-visualizações"
+
+#: Settings.ui.h:10
+msgid "Focus or show previews"
+msgstr "Pôr em foco o pré-visualizar"
+
+#: Settings.ui.h:11
+msgid "Quit"
+msgstr "Sair"
+
+#: Settings.ui.h:12
+msgid "Behavior for Middle-Click."
+msgstr "Comportamento do Clique do botão do meio."
+
+#: Settings.ui.h:13
+msgid "Middle-Click action"
+msgstr "Ação do clique do botão do meio"
+
+#: Settings.ui.h:14
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Comportamento para Shift + Clique do botão do meio."
+
+#: Settings.ui.h:15
+msgid "Shift+Middle-Click action"
+msgstr "Ação do Shift+Clique do botão do meio"
+
+#: Settings.ui.h:16
+msgid "Enable Unity7 like glossy backlit items"
+msgstr "Ativar retroiluminação estilo Unity 7 dos elementos"
+
+#: Settings.ui.h:17
+msgid "Use dominant color"
+msgstr "Usar cor dominante"
+
+#: Settings.ui.h:18
+msgid "Customize indicator style"
+msgstr "Customizar o estilo do indicador"
+
+#: Settings.ui.h:19
+msgid "Color"
+msgstr "Cor"
+
+#: Settings.ui.h:20
+msgid "Border color"
+msgstr "Cor da borda"
+
+#: Settings.ui.h:21
+msgid "Border width"
+msgstr "Tamanho da borda"
+
+#: Settings.ui.h:22
+msgid "Show the dock on"
+msgstr "Exibir o dock"
+
+#: Settings.ui.h:23
+msgid "Show on all monitors."
+msgstr "Mostrar em todos os monitores."
+
+#: Settings.ui.h:24
+msgid "Position on screen"
+msgstr "Posição na tela"
+
+#: Settings.ui.h:26
+msgid "Bottom"
+msgstr "Embaixo"
+
+#: Settings.ui.h:27
+msgid "Top"
+msgstr "Em cima"
+
+#: Settings.ui.h:29
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"Ocultar o dock quando o mesmo sobrepor a janela do aplicativo em uso. "
+"Definições mais aperfeiçoadas estão disponíveis."
+
+#: Settings.ui.h:30
+msgid "Intelligent autohide"
+msgstr "Ocultação inteligente"
+
+#: Settings.ui.h:31
+msgid "Dock size limit"
+msgstr "Tamanho limite do dock"
+
+#: Settings.ui.h:32
+msgid "Panel mode: extend to the screen edge"
+msgstr "Modo do painel: estender até a borda da tela"
+
+#: Settings.ui.h:33
+msgid "Icon size limit"
+msgstr "Tamanho limite do ícone"
+
+#: Settings.ui.h:34
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Tamanho do ícone fixo: use o scroll do mouse para revelar outro ícone"
+
+#: Settings.ui.h:35
+msgid "Position and size"
+msgstr "Posição e tamanho"
+
+#: Settings.ui.h:36
+msgid "Show favorite applications"
+msgstr "Mostrar aplicativos favoritos"
+
+#: Settings.ui.h:37
+msgid "Show running applications"
+msgstr "Mostrar aplicativos em execução"
+
+#: Settings.ui.h:38
+msgid "Isolate workspaces."
+msgstr "Isolar espaços de trabalho."
+
+#: Settings.ui.h:39
+msgid "Isolate monitors."
+msgstr "Isolar monitores."
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "Mostrar pré-visualizações de janelas abertas."
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+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
+msgid "Show <i>Applications</i> icon"
+msgstr "Exibir ícone dos <i>Aplicativos</i>"
+
+#: 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
+msgid "Animate <i>Show Applications</i>."
+msgstr "<i>Mostrar aplicativos</i> com efeitos."
+
+#: Settings.ui.h:45
+msgid "Launchers"
+msgstr "Lançadores"
+
+#: Settings.ui.h:46
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Habilita tecla Super+(0-9) como atalhos para ativar aplicativos. Também 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
+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
+msgid "Click action"
+msgstr "Ação do clique"
+
+#: Settings.ui.h:50
+msgid "Minimize"
+msgstr "Minimizar"
+
+#: Settings.ui.h:51
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Comportamento ao rolar sobre o ícone de um aplicativo."
+
+#: Settings.ui.h:52
+msgid "Scroll action"
+msgstr "Ação da rolagem"
+
+#: Settings.ui.h:53
+msgid "Do nothing"
+msgstr "Não fazer nada"
+
+#: Settings.ui.h:54
+msgid "Switch workspace"
+msgstr "Alternar espaço de trabalho"
+
+#: Settings.ui.h:55
+msgid "Behavior"
+msgstr "Comportamento"
+
+#: Settings.ui.h:56
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Algumas personalizações se destinam a integrar o dock com o tema padrão do "
+"GNOME. Alternativamente, as opções específicas podem ser ativadas abaixo."
+
+#: Settings.ui.h:57
+msgid "Use built-in theme"
+msgstr "Usar o tema do sistema"
+
+#: Settings.ui.h:58
+msgid "Save space reducing padding and border radius."
+msgstr "Economizar espaço reduzindo preenchimento e a borda arredondada"
+
+#: Settings.ui.h:59
+msgid "Shrink the dash"
+msgstr "Encolher o dash"
+
+#: Settings.ui.h:60
+msgid "Customize windows counter indicators"
+msgstr "Customizar indicadores de contagem de janelas"
+
+#: Settings.ui.h:61
+msgid "Default"
+msgstr "Padrão"
+
+#: Settings.ui.h:62
+msgid "Dots"
+msgstr "Pontos"
+
+#: Settings.ui.h:63
+msgid "Squares"
+msgstr "Quadrados"
+
+#: Settings.ui.h:64
+msgid "Dashes"
+msgstr "Linhas"
+
+#: Settings.ui.h:65
+msgid "Segmented"
+msgstr "Segmentado"
+
+#: Settings.ui.h:66
+msgid "Solid"
+msgstr "Sólido"
+
+#: Settings.ui.h:67
+msgid "Ciliora"
+msgstr "Ciliora"
+
+#: Settings.ui.h:68
+msgid "Metro"
+msgstr "Metro"
+
+#: Settings.ui.h:69
+msgid "Set the background color for the dash."
+msgstr "Define a cor de fundo para o dash."
+
+#: Settings.ui.h:70
+msgid "Customize the dash color"
+msgstr "Customizar a cor do dash"
+
+#: Settings.ui.h:71
+msgid "Tune the dash background opacity."
+msgstr "Ajustar a opacidade do fundo do dash."
+
+#: Settings.ui.h:73
+msgid "Fixed"
+msgstr "Fixo"
+
+#: Settings.ui.h:74
+msgid "Dynamic"
+msgstr "Dinâmico"
+
+#: Settings.ui.h:75
+msgid "Opacity"
+msgstr "Opacidade"
+
+#: Settings.ui.h:76
+msgid "Force straight corner\n"
+msgstr "Forçar canto reto\n"
+
+#: Settings.ui.h:78
+msgid "Appearance"
+msgstr "Aparência"
+
+#: Settings.ui.h:79
+msgid "version: "
+msgstr "versão:"
+
+#: Settings.ui.h:80
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Mover o dash para fora da visão geral transformando-o em dock"
+
+#: Settings.ui.h:81
+msgid "Created by"
+msgstr "Criado por"
+
+#: Settings.ui.h:82
+msgid "Webpage"
+msgstr "Página Web"
+
+#: Settings.ui.h:83
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">Este programa é distribuido SEM QUALQUER GARANTIA.\n"
+"Veja em <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">GNU General Public License, versão 2 ou posterior</a> para maiores "
+"detalhes.</span>"
+
+#: Settings.ui.h:85
+msgid "About"
+msgstr "Sobre"
+
+#: Settings.ui.h:86
+msgid "Customize minimum and maximum opacity values"
+msgstr "Customizar os valores mínimo e máximo da opacidade"
+
+#: Settings.ui.h:87
+msgid "Minimum opacity"
+msgstr "Opacidade mínima"
+
+#: Settings.ui.h:88
+msgid "Maximum opacity"
+msgstr "Opacidade máxima"
+
+#: Settings.ui.h:89
+msgid "Number overlay"
+msgstr "Sobreposição de número"
+
+#: Settings.ui.h:90
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"Mostrar temporariamente os números dos aplicativos sobre os ícones, "
+"correspondentes ao atalho."
+
+#: Settings.ui.h:91
+msgid "Show the dock if it is hidden"
+msgstr "Exibir o dock se este estiver oculto"
+
+#: Settings.ui.h:92
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Se utilizar a ocultação, o dock será exibido por um curto período de tempo "
+"ao acionar o atalho."
+
+#: Settings.ui.h:93
+msgid "Shortcut for the options above"
+msgstr "Atalho para as opções acima"
+
+#: Settings.ui.h:94
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Sintaxe: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:95
+msgid "Hide timeout (s)"
+msgstr "Ocultar tempo limite [s]"
+
+#: Settings.ui.h:96
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Mostrar o dock quando o mouse pairar sobre a tela."
+
+#: Settings.ui.h:97
+msgid "Autohide"
+msgstr "Ocultação"
+
+#: Settings.ui.h:98
+msgid "Push to show: require pressure to show the dock"
+msgstr "Empurrar para mostrar: requer pressão para mostrar o dock"
+
+#: Settings.ui.h:99
+msgid "Enable in fullscreen mode"
+msgstr "Habilitar modo tela cheia"
+
+#: Settings.ui.h:100
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Mostrar o dock quando nenhum aplicativo sobrepor o mesmo."
+
+#: Settings.ui.h:101
+msgid "Dodge windows"
+msgstr "Esconder janela"
+
+#: Settings.ui.h:102
+msgid "All windows"
+msgstr "Todas as janelas"
+
+#: Settings.ui.h:103
+msgid "Only focused application's windows"
+msgstr "Apenas janelas de aplicativos em foco"
+
+#: Settings.ui.h:104
+msgid "Only maximized windows"
+msgstr "Somente janelas maximizadas"
+
+#: Settings.ui.h:105
+msgid "Animation duration (s)"
+msgstr "Tempo da animação [s]"
+
+#: Settings.ui.h:106
+msgid "Show timeout (s)"
+msgstr "Mostrar tempo limite [s]"
+
+#: Settings.ui.h:107
+msgid "Pressure threshold"
+msgstr "Limite de pressão"
diff --git a/extensions/dash-to-dock/po/ru.po b/extensions/dash-to-dock/po/ru.po
new file mode 100644
index 00000000..b41fa0c0
--- /dev/null
+++ b/extensions/dash-to-dock/po/ru.po
@@ -0,0 +1,626 @@
+# Russian translation for dash-to-dock GNOME Shell extension
+# Ivan Komaritsyn <vantu5z@mail.ru>, 2015-2020.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: dash-to-dock\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-01-31 14:36+0300\n"
+"PO-Revision-Date: 2020-01-31 14:40+0300\n"
+"Last-Translator: Ivan Komaritsyn <vantu5z@mail.ru>\n"
+"Language-Team: \n"
+"Language: ru\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
+"X-Generator: Gtranslator 2.91.7\n"
+
+#: prefs.js:268
+msgid "Primary monitor"
+msgstr "Основной монитор"
+
+#: prefs.js:277 prefs.js:284
+msgid "Secondary monitor "
+msgstr "Дополнительный монитор"
+
+#: prefs.js:309 Settings.ui.h:28
+msgid "Right"
+msgstr "Справа"
+
+#: prefs.js:310 Settings.ui.h:25
+msgid "Left"
+msgstr "Слева"
+
+#: prefs.js:360
+msgid "Intelligent autohide customization"
+msgstr "Настройка автоскрытия"
+
+#: prefs.js:367 prefs.js:560 prefs.js:616
+msgid "Reset to defaults"
+msgstr "Сбросить настройки"
+
+#: prefs.js:553
+msgid "Show dock and application numbers"
+msgstr "Показывать количество запущенных приложений"
+
+#: prefs.js:609
+msgid "Customize middle-click behavior"
+msgstr "Настройка действий для средней кнопки мыши"
+
+#: prefs.js:692
+msgid "Customize running indicators"
+msgstr "Настройка индикаторов запуска"
+
+#: prefs.js:804 Settings.ui.h:74
+msgid "Customize opacity"
+msgstr "Настроить прозрачность"
+
+#: appIcons.js:810
+msgid "All Windows"
+msgstr "Все окна"
+
+#. Translators: %s is "Settings", which is automatically translated. You
+#. can also translate the full message if this fits better your language.
+#: appIcons.js:1127
+#, javascript-format
+msgid "Dash to Dock %s"
+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 "Minimize or overview"
+msgstr "Минимизация или обзор"
+
+#: Settings.ui.h:8
+msgid "Show window previews"
+msgstr "Показать миниатюры окон"
+
+#: Settings.ui.h:9
+msgid "Minimize or show previews"
+msgstr "Минимизация или показ миниатюр"
+
+#: Settings.ui.h:10
+msgid "Focus or show previews"
+msgstr "Минимизация или показ миниатюр"
+
+#: Settings.ui.h:11
+msgid "Quit"
+msgstr "Выйти"
+
+#: Settings.ui.h:12
+msgid "Behavior for Middle-Click."
+msgstr "Действие по нажатию средней кнопки мыши."
+
+#: Settings.ui.h:13
+msgid "Middle-Click action"
+msgstr "Действие по Middle-Click"
+
+#: Settings.ui.h:14
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Действие по нажатию Shift + средняя кнопка мыши."
+
+#: Settings.ui.h:15
+msgid "Shift+Middle-Click action"
+msgstr "Действие по Shift+Middle-Click"
+
+#: Settings.ui.h:16
+msgid "Enable Unity7 like glossy backlit items"
+msgstr "Включить подсветку элементов как в Unity7"
+
+#: Settings.ui.h:17
+msgid "Use dominant color"
+msgstr "Использовать доминирующий цвет"
+
+#: Settings.ui.h:18
+msgid "Customize indicator style"
+msgstr "Настроить стиль индикатора"
+
+#: Settings.ui.h:19
+msgid "Color"
+msgstr "Цвет"
+
+#: Settings.ui.h:20
+msgid "Border color"
+msgstr "Цвет границы"
+
+#: Settings.ui.h:21
+msgid "Border width"
+msgstr "Ширина границы"
+
+#: Settings.ui.h:22
+msgid "Show the dock on"
+msgstr "Показывать Док на"
+
+#: Settings.ui.h:23
+msgid "Show on all monitors."
+msgstr "Показывать на всех мониторах."
+
+#: Settings.ui.h:24
+msgid "Position on screen"
+msgstr "Расположение на экране"
+
+#: Settings.ui.h:26
+msgid "Bottom"
+msgstr "Снизу"
+
+#: Settings.ui.h:27
+msgid "Top"
+msgstr "Сверху"
+
+#: Settings.ui.h:29
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"Скрывать Док, если он перекрывается окном активного приложения. Доступны "
+"дополнительные настройки."
+
+#: Settings.ui.h:30
+msgid "Intelligent autohide"
+msgstr "Интеллектуальное скрытие"
+
+#: Settings.ui.h:31
+msgid "Dock size limit"
+msgstr "Ограничение размера Дока"
+
+#: Settings.ui.h:32
+msgid "Panel mode: extend to the screen edge"
+msgstr "Режим панели: Док растянут по всей стороне экрана"
+
+#: Settings.ui.h:33
+msgid "Icon size limit"
+msgstr "Ограничение размера иконок"
+
+#: Settings.ui.h:34
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr ""
+"Фиксированный размер иконок: используйте прокрутку для доступа к нужному "
+"приложению"
+
+#: Settings.ui.h:35
+msgid "Position and size"
+msgstr "Положение и размер"
+
+#: Settings.ui.h:36
+msgid "Show favorite applications"
+msgstr "Показывать избранные приложения"
+
+#: Settings.ui.h:37
+msgid "Show running applications"
+msgstr "Показывать запущенные приложения"
+
+#: Settings.ui.h:38
+msgid "Isolate workspaces."
+msgstr "Для текущего рабочего стола."
+
+#: Settings.ui.h:39
+msgid "Isolate monitors."
+msgstr "Изолировать мониторы."
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "Показывать миниатюры открытых окон."
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Если отключено, то эти настройки доступны в gnome-tweak-tool или через сайт "
+"дополнений."
+
+#: Settings.ui.h:42
+msgid "Show <i>Applications</i> icon"
+msgstr "Показывать иконку <i>«Приложения»</i>"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr "Расположить кнопку «Приложения» с другой стороны Дока."
+
+#: Settings.ui.h:44
+msgid "Animate <i>Show Applications</i>."
+msgstr "Анимация при показе <i>«Приложений»</i>"
+
+#: Settings.ui.h:45
+msgid "Show trash can"
+msgstr "Показывать корзину"
+
+#: Settings.ui.h:46
+msgid "Show mounted volumes and devices"
+msgstr "Показывать примонтированные разделы и устройства"
+
+#: Settings.ui.h:47
+msgid "Launchers"
+msgstr "Команды"
+
+#: Settings.ui.h:48
+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:49
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "Использовать сочетания клавиш для выбора приложений"
+
+#: Settings.ui.h:50
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Поведение при нажатии на иконку запущенного приложения."
+
+#: Settings.ui.h:51
+msgid "Click action"
+msgstr "Действие по нажатию"
+
+#: Settings.ui.h:52
+msgid "Minimize"
+msgstr "Минимизировать"
+
+#: Settings.ui.h:53
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Поведение при прокрутке на иконке приложения."
+
+#: Settings.ui.h:54
+msgid "Scroll action"
+msgstr "Действие при прокрутке"
+
+#: Settings.ui.h:55
+msgid "Do nothing"
+msgstr "Ничего не делать"
+
+#: Settings.ui.h:56
+msgid "Switch workspace"
+msgstr "Переключить рабочий стол"
+
+#: Settings.ui.h:57
+msgid "Behavior"
+msgstr "Поведение"
+
+#: Settings.ui.h:58
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Сбалансированные настройки для интеграции Дока с темой Gnome по умолчанию. "
+"Ниже можно установить настройки вручную."
+
+#: Settings.ui.h:59
+msgid "Use built-in theme"
+msgstr "Использовать встроенную тему"
+
+#: Settings.ui.h:60
+msgid "Save space reducing padding and border radius."
+msgstr ""
+"Экономия рабочего пространства за счёт уменьшения промежутков и "
+"использования скругленных углов."
+
+#: Settings.ui.h:61
+msgid "Shrink the dash"
+msgstr "Сжать Док"
+
+#: Settings.ui.h:62
+msgid "Customize windows counter indicators"
+msgstr "Настроить индикаторы количества окон"
+
+#: Settings.ui.h:63
+msgid "Default"
+msgstr "По умолчанию"
+
+#: Settings.ui.h:64
+msgid "Dots"
+msgstr "Точки"
+
+#: Settings.ui.h:65
+msgid "Squares"
+msgstr "Квадраты"
+
+#: Settings.ui.h:66
+msgid "Dashes"
+msgstr "Линии"
+
+#: Settings.ui.h:67
+msgid "Segmented"
+msgstr "Сегменты"
+
+#: Settings.ui.h:68
+msgid "Solid"
+msgstr "Слитно"
+
+#: Settings.ui.h:69
+msgid "Ciliora"
+msgstr ""
+
+#: Settings.ui.h:70
+msgid "Metro"
+msgstr "Метро"
+
+#: Settings.ui.h:71
+msgid "Set the background color for the dash."
+msgstr "Вобор цвета фона для панели."
+
+#: Settings.ui.h:72
+msgid "Customize the dash color"
+msgstr "Настроить цвет Дока"
+
+#: Settings.ui.h:73
+msgid "Tune the dash background opacity."
+msgstr "Настройка прозрачности фона Дока."
+
+#: Settings.ui.h:75
+msgid "Fixed"
+msgstr "Постоянная"
+
+#: Settings.ui.h:76
+msgid "Dynamic"
+msgstr "Динамическая"
+
+#: Settings.ui.h:77
+msgid "Opacity"
+msgstr "Непрозрачность"
+
+#: Settings.ui.h:78
+msgid "Force straight corner\n"
+msgstr "Не скруглять углы\n"
+
+#: Settings.ui.h:80
+msgid "Appearance"
+msgstr "Внешний вид"
+
+#: Settings.ui.h:81
+msgid "version: "
+msgstr "версия: "
+
+#: Settings.ui.h:82
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Показывает панель из режима «Обзор» в виде дока"
+
+#: Settings.ui.h:83
+msgid "Created by"
+msgstr "Автор"
+
+#: Settings.ui.h:84
+msgid "Webpage"
+msgstr "Домашняя страница"
+
+#: Settings.ui.h:85
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">Эта программа распространяется БЕЗ КАКИХ ЛИБО "
+"ГАРАНТИЙ.\n"
+"Смотри <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">GNU General Public License, версия 2 или позднее</a> для информации.</"
+"span>"
+
+#: Settings.ui.h:87
+msgid "About"
+msgstr "О дополнении"
+
+#: Settings.ui.h:88
+msgid "Customize minimum and maximum opacity values"
+msgstr "Настройка минимального и максимального значения прозрачности"
+
+#: Settings.ui.h:89
+msgid "Minimum opacity"
+msgstr "Минимальная прозрачность"
+
+#: Settings.ui.h:90
+msgid "Maximum opacity"
+msgstr "Максимальная прозрачность"
+
+#: Settings.ui.h:91
+msgid "Number overlay"
+msgstr "Отображение номера"
+
+#: Settings.ui.h:92
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"Временно показывать номера приложений рядом с иконками, при нажатии "
+"сочетания клавиш."
+
+#: Settings.ui.h:93
+msgid "Show the dock if it is hidden"
+msgstr "Показать Док, если он скрыт"
+
+#: Settings.ui.h:94
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Если используется автоматическое скрытие, то Док кратковреммено появится при "
+"обработке сочетания клавиш."
+
+#: Settings.ui.h:95
+msgid "Shortcut for the options above"
+msgstr "Сочетания клавиш для указанных параметров"
+
+#: Settings.ui.h:96
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Синтаксис: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:97
+msgid "Hide timeout (s)"
+msgstr "Задержка скрытия (сек.)"
+
+#: Settings.ui.h:98
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Показывать Док при подведении мыши к стороне экрана."
+
+#: Settings.ui.h:99
+msgid "Autohide"
+msgstr "Автоматическое скрытие"
+
+#: Settings.ui.h:100
+msgid "Push to show: require pressure to show the dock"
+msgstr "Давление для появления: требуется давление для открытия Дока"
+
+#: Settings.ui.h:101
+msgid "Enable in fullscreen mode"
+msgstr "Включить для полноэкранного режима"
+
+#: Settings.ui.h:102
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Скрывать Док, когда он перекрыт окнами приложений"
+
+#: Settings.ui.h:103
+msgid "Dodge windows"
+msgstr "Перекрытие окнами"
+
+#: Settings.ui.h:104
+msgid "All windows"
+msgstr "Все окна"
+
+#: Settings.ui.h:105
+msgid "Only focused application's windows"
+msgstr "Только активное окно приложения"
+
+#: Settings.ui.h:106
+msgid "Only maximized windows"
+msgstr "Только развёрнутые окна"
+
+#: Settings.ui.h:107
+msgid "Animation duration (s)"
+msgstr "Время анимации (сек.)"
+
+#: Settings.ui.h:108
+msgid "Show timeout (s)"
+msgstr "Задержка открытия (сек.)"
+
+#: Settings.ui.h:109
+msgid "Pressure threshold"
+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 <i>Show "
+#~ "Applications</i> icon are active."
+#~ msgstr ""
+#~ "При фиксированном размере иконок приложений активна только область иконки "
+#~ "<i>«Приложения»</i> и край дока."
+
+#~ 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 "Максимальный размер иконки"
+
+#~ msgid "Optional features"
+#~ msgstr "Дополнительные функции"
+
+#~ msgid "Deadtime between each workspace switching [ms]"
+#~ msgstr "Задержка между каждым переключением [мс]"
+
+#~ msgid "Only a 1px wide area close to the screen edge is active"
+#~ msgstr "Активная область - 1 пиксель от края экрана"
+
+#~ msgid "All the area of the dock is active"
+#~ msgstr "Активен весь Док"
+
+#~ msgid "Customize actions on mouse click"
+#~ msgstr "Настроить действия по нажатию мыши"
+
+#~ msgid "Action on clicking on running app"
+#~ msgstr "Действие по нажатию на иконку запущенного приложения"
+
+#~ msgid "Minimize window on shift+click (double click for all app windows)"
+#~ msgstr ""
+#~ "Минимизировать окно при shift+click (двойное нажатие скрывает все окна "
+#~ "приложений)"
+
+#~ msgid "Make message tray insensitive to mouse events"
+#~ msgstr "Сделать область сообщений нечувствительной к мыши"
+
+#~ msgid "Appearence and Themes"
+#~ msgstr "Внешний вид и Темы"
+
+#~ msgid ""
+#~ "A customized theme is built in the extension. This is meant to work with "
+#~ "the default Adwaita theme: the dash is shrunk to save space, its "
+#~ "background transparency reduced, and custom indicators for the number of "
+#~ "windows of each application are added."
+#~ msgstr ""
+#~ "Тема встроена в расширение. Она оптимизирована для темы Adwaita по "
+#~ "умолчанию: Док уменьшен, чтобы сохранить пространство; прозрачность фона "
+#~ "снижена; включены индикаторы количества окон для каждого приложения."
+
+#~ msgid ""
+#~ "Alternatively, for a better integration with custom themes, each "
+#~ "customization can be applied indipendently"
+#~ msgstr ""
+#~ "Для большей интеграции с пользовательской темой, каждый параметр можно "
+#~ "настроить независимо"
+
+#~ msgid "Shrink the dash size by reducing padding"
+#~ msgstr "Уменьшить Док за счёт промежутков"
diff --git a/extensions/dash-to-dock/po/sk.po b/extensions/dash-to-dock/po/sk.po
new file mode 100644
index 00000000..9bcd3444
--- /dev/null
+++ b/extensions/dash-to-dock/po/sk.po
@@ -0,0 +1,454 @@
+# Slovak translation of dash-to-dock.
+# Copyright (C) 2016 Dušan Kazik
+# This file is distributed under the same license as the PACKAGE package.
+# Dušan Kazik <prescott66@gmail.com>, 2015, 2016.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-06-04 12:35+0100\n"
+"PO-Revision-Date: 2016-07-15 12:48+0200\n"
+"Last-Translator: Dušan Kazik <prescott66@gmail.com>\n"
+"Language-Team: \n"
+"Language: sk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+#: prefs.js:113
+msgid "Primary monitor"
+msgstr "Hlavnom monitore"
+
+#: prefs.js:122 prefs.js:129
+msgid "Secondary monitor "
+msgstr "Vedľajšom monitore"
+
+#: prefs.js:154 Settings.ui.h:29
+msgid "Right"
+msgstr "Vpravo"
+
+#: prefs.js:155 Settings.ui.h:26
+msgid "Left"
+msgstr "Vľavo"
+
+#: prefs.js:205
+msgid "Intelligent autohide customization"
+msgstr "Prispôsobenie inteligentného automatického skrývania"
+
+#: prefs.js:212 prefs.js:393 prefs.js:450
+msgid "Reset to defaults"
+msgstr "Obnoviť pôvodné"
+
+#: prefs.js:386
+#, fuzzy
+msgid "Show dock and application numbers"
+msgstr "Zobraziť spustené aplikácie"
+
+#: prefs.js:443
+#, fuzzy
+msgid "Customize middle-click behavior"
+msgstr "Prispôsobenie štýlu indikátorov"
+
+#: prefs.js:514
+msgid "Customize running indicators"
+msgstr "Prispôsobenie "
+
+#: appIcons.js:804
+msgid "All Windows"
+msgstr "Všetky okná"
+
+#: Settings.ui.h:1
+msgid "Customize indicator style"
+msgstr "Prispôsobenie štýlu indikátorov"
+
+#: Settings.ui.h:2
+msgid "Color"
+msgstr "Farba"
+
+#: Settings.ui.h:3
+msgid "Border color"
+msgstr "Farba okraja"
+
+#: Settings.ui.h:4
+msgid "Border width"
+msgstr "Šírka okraja"
+
+#: Settings.ui.h:5
+msgid "Number overlay"
+msgstr ""
+
+#: Settings.ui.h:6
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+
+#: Settings.ui.h:7
+#, fuzzy
+msgid "Show the dock if it is hidden"
+msgstr "Zobraziť dok na"
+
+#: Settings.ui.h:8
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+
+#: Settings.ui.h:9
+msgid "Shortcut for the options above"
+msgstr ""
+
+#: Settings.ui.h:10
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr ""
+
+#: Settings.ui.h:11
+msgid "Hide timeout (s)"
+msgstr "Časový limit na skrytie (s)"
+
+#: Settings.ui.h:12
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Keď je nastavené na minimalizovanie, dvojklik minimalizuje všetky okná "
+"aplikácie."
+
+#: Settings.ui.h:13
+msgid "Shift+Click action"
+msgstr "Akcia Shift+Kliknutie"
+
+#: Settings.ui.h:14
+#, fuzzy
+msgid "Raise window"
+msgstr "Minimalizovať okno"
+
+#: Settings.ui.h:15
+msgid "Minimize window"
+msgstr "Minimalizovať okno"
+
+#: Settings.ui.h:16
+msgid "Launch new instance"
+msgstr "Spustiť novú inštanciu"
+
+#: Settings.ui.h:17
+msgid "Cycle through windows"
+msgstr "Striedať okná"
+
+#: Settings.ui.h:18
+msgid "Quit"
+msgstr ""
+
+#: Settings.ui.h:19
+msgid "Behavior for Middle-Click."
+msgstr ""
+
+#: Settings.ui.h:20
+#, fuzzy
+msgid "Middle-Click action"
+msgstr "Akcia po kliknutí"
+
+#: Settings.ui.h:21
+msgid "Behavior for Shift+Middle-Click."
+msgstr ""
+
+#: Settings.ui.h:22
+#, fuzzy
+msgid "Shift+Middle-Click action"
+msgstr "Akcia Shift+Kliknutie"
+
+#: Settings.ui.h:23
+msgid "Show the dock on"
+msgstr "Zobraziť dok na"
+
+#: Settings.ui.h:24
+#, fuzzy
+msgid "Show on all monitors."
+msgstr "Vedľajšom monitore"
+
+#: Settings.ui.h:25
+msgid "Position on screen"
+msgstr "Pozícia na obrazovke"
+
+#: Settings.ui.h:27
+msgid "Bottom"
+msgstr "Na spodku"
+
+#: Settings.ui.h:28
+msgid "Top"
+msgstr "Na vrchu"
+
+#: Settings.ui.h:30
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"Skryť dok, keď zasahuje do okna aktuálnej aplikácie. Sú dostupné "
+"podrobnejšie nastavenia."
+
+#: Settings.ui.h:31
+msgid "Intelligent autohide"
+msgstr "Inteligentné automatické skrývanie"
+
+#: Settings.ui.h:32
+msgid "Dock size limit"
+msgstr "Limit veľkosti doku"
+
+#: Settings.ui.h:33
+msgid "Panel mode: extend to the screen edge"
+msgstr "Režim panelu: roztiahnutie k hranám obrazovky"
+
+#: Settings.ui.h:34
+msgid "Icon size limit"
+msgstr "Limit veľkosti ikôn"
+
+#: Settings.ui.h:35
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Pevná veľkosť ikôn: rolovaním odhalíte ostatné ikony"
+
+#: Settings.ui.h:36
+msgid "Position and size"
+msgstr "Pozícia a veľkosť"
+
+#: Settings.ui.h:37
+msgid "Show favorite applications"
+msgstr "Zobraziť obľúbené aplikácie"
+
+#: Settings.ui.h:38
+msgid "Show running applications"
+msgstr "Zobraziť spustené aplikácie"
+
+#: Settings.ui.h:39
+msgid "Isolate workspaces."
+msgstr "Oddelené pracovné priestory."
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr ""
+
+#: Settings.ui.h:41
+#, fuzzy
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Ak je voľba zakázaná, nastavenia sú dostupné z nástroja na vyladenie "
+"nastavení prostredia Gnome alebo webovej stránky rozšírenia."
+
+#: Settings.ui.h:42
+msgid "Show <i>Applications</i> icon"
+msgstr "Zobraziť ikonu <i>Aplikácie</i>"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr "Premiestni tlačidlo aplikácií na začiatok doku."
+
+#: Settings.ui.h:44
+msgid "Animate <i>Show Applications</i>."
+msgstr "Animovať položku <i>Zobraziť aplikácie</i>."
+
+#: Settings.ui.h:45
+msgid "Launchers"
+msgstr ""
+
+#: Settings.ui.h:46
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+
+#: Settings.ui.h:47
+msgid "Use keyboard shortcuts to activate apps"
+msgstr ""
+
+#: Settings.ui.h:48
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Správanie pri kliknutí na ikonu spustenej aplikácie."
+
+#: Settings.ui.h:49
+msgid "Click action"
+msgstr "Akcia po kliknutí"
+
+#: Settings.ui.h:50
+msgid "Minimize"
+msgstr "Minimalizovať"
+
+#: Settings.ui.h:51
+#, fuzzy
+msgid "Minimize or overview"
+msgstr "Minimalizovať okno"
+
+#: Settings.ui.h:52
+#, fuzzy
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Správanie pri kliknutí na ikonu spustenej aplikácie."
+
+#: Settings.ui.h:53
+#, fuzzy
+msgid "Scroll action"
+msgstr "Akcia po kliknutí"
+
+#: Settings.ui.h:54
+msgid "Do nothing"
+msgstr "Nevykonať nič"
+
+#: Settings.ui.h:55
+#, fuzzy
+msgid "Switch workspace"
+msgstr "Oddelené pracovné priestory."
+
+#: Settings.ui.h:56
+msgid "Behavior"
+msgstr "Správanie"
+
+#: Settings.ui.h:57
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Niekoľko úprav na integrovanie doku s predvolenou témou prostredia GNOME. "
+"Alternatívne môžu byť povolené špecifické voľby nižšie."
+
+#: Settings.ui.h:58
+msgid "Use built-in theme"
+msgstr "Použiť zabudovanú tému"
+
+#: Settings.ui.h:59
+msgid "Save space reducing padding and border radius."
+msgstr "Ušetrí miesto zmenšením rádiusu odsadenia a okrajov."
+
+#: Settings.ui.h:60
+msgid "Shrink the dash"
+msgstr "Zmenšiť panel"
+
+#: Settings.ui.h:61
+msgid "Show a dot for each windows of the application."
+msgstr "Zobrazí bodku za každé okno aplikácie."
+
+#: Settings.ui.h:62
+msgid "Show windows counter indicators"
+msgstr "Zobraziť indikátory počítadiel okien"
+
+#: Settings.ui.h:63
+msgid "Set the background color for the dash."
+msgstr "Nastaví farbu pozadia panelu."
+
+#: Settings.ui.h:64
+msgid "Customize the dash color"
+msgstr "Prispôsobenie farby panelu"
+
+#: Settings.ui.h:65
+msgid "Tune the dash background opacity."
+msgstr "Vyladí krytie pozadia panelu."
+
+#: Settings.ui.h:66
+msgid "Customize opacity"
+msgstr "Prispôsobenie krytia"
+
+#: Settings.ui.h:67
+msgid "Opacity"
+msgstr "Krytie"
+
+#: Settings.ui.h:68
+msgid "Force straight corner\n"
+msgstr ""
+
+#: Settings.ui.h:70
+msgid "Appearance"
+msgstr "Vzhľad"
+
+#: Settings.ui.h:71
+msgid "version: "
+msgstr "Verzia: c"
+
+#: Settings.ui.h:72
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Presunie panel z prehľadu transformovaním do doku"
+
+#: Settings.ui.h:73
+msgid "Created by"
+msgstr "Vytvoril"
+
+#: Settings.ui.h:74
+msgid "Webpage"
+msgstr "Webová stránka"
+
+#: Settings.ui.h:75
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">Tento program je ABSOLÚTNE BEZ ZÁRUKY.\n"
+"Pre viac podrobností si pozrite <a href=\"https://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.html\">Licenciu GNU General Public, verzie 2 alebo novšiu</"
+"a>.</span>"
+
+#: Settings.ui.h:77
+msgid "About"
+msgstr "O rozšírení"
+
+#: Settings.ui.h:78
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Zobrazí dok prejdením myši na hranu obrazovky."
+
+#: Settings.ui.h:79
+msgid "Autohide"
+msgstr "Automatické skrytie"
+
+#: Settings.ui.h:80
+msgid "Push to show: require pressure to show the dock"
+msgstr "Zobraziť stlačením: vyžaduje tlak na zobrazenie doku"
+
+#: Settings.ui.h:81
+msgid "Enable in fullscreen mode"
+msgstr "Povoliť v režime na celú obrazovku"
+
+#: Settings.ui.h:82
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Zobrazí dok, keď nebude zasahovať do okien aplikácií."
+
+#: Settings.ui.h:83
+msgid "Dodge windows"
+msgstr "Vyhýbať sa oknám"
+
+#: Settings.ui.h:84
+msgid "All windows"
+msgstr "Všetky okná"
+
+#: Settings.ui.h:85
+msgid "Only focused application's windows"
+msgstr "Iba zamerané okná aplikácií"
+
+#: Settings.ui.h:86
+msgid "Only maximized windows"
+msgstr "Iba maximalizované okná"
+
+#: Settings.ui.h:87
+msgid "Animation duration (s)"
+msgstr "Trvanie animácie (s)"
+
+#: Settings.ui.h:88
+msgid "0.000"
+msgstr "0.000"
+
+#: Settings.ui.h:89
+msgid "Show timeout (s)"
+msgstr "Zobraziť časový limit (s)"
+
+#: Settings.ui.h:90
+msgid "Pressure threshold"
+msgstr "Medza tlaku"
+
+#~ msgid ""
+#~ "With fixed icon size, only the edge of the dock and the <i>Show "
+#~ "Applications</i> icon are active."
+#~ msgstr ""
+#~ "S pevnou veľkosťou ikon je aktívna iba hrana doku a ikona <i>Zobraziť "
+#~ "aplikácie</i>."
+
+#~ msgid "Switch workspace by scrolling on the dock"
+#~ msgstr "Prepínať pracovné priestory rolovaním na doku"
diff --git a/extensions/dash-to-dock/po/sr.po b/extensions/dash-to-dock/po/sr.po
new file mode 100644
index 00000000..af9ff533
--- /dev/null
+++ b/extensions/dash-to-dock/po/sr.po
@@ -0,0 +1,470 @@
+# 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 <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-09-16 13:45+0200\n"
+"PO-Revision-Date: 2017-09-20 18:59+0200\n"
+"Last-Translator: Слободан Терзић <Xabre@archlinux.info>\n"
+"Language-Team: \n"
+"Language: sr\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=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: prefs.js:113
+msgid "Primary monitor"
+msgstr "примарном монитору"
+
+#: prefs.js:122 prefs.js:129
+msgid "Secondary monitor "
+msgstr "секундарном монитору"
+
+#: prefs.js:154 Settings.ui.h:31
+msgid "Right"
+msgstr "десно"
+
+#: prefs.js:155 Settings.ui.h:28
+msgid "Left"
+msgstr "лево"
+
+#: prefs.js:205
+msgid "Intelligent autohide customization"
+msgstr "Поставке интелигентног аутоматског сакривања"
+
+#: prefs.js:212 prefs.js:397 prefs.js:454
+msgid "Reset to defaults"
+msgstr "Поврати основно"
+
+#: prefs.js:390
+msgid "Show dock and application numbers"
+msgstr "Прикажи док и бројеве програма"
+
+#: prefs.js:447
+msgid "Customize middle-click behavior"
+msgstr "Прилагоћавање понашања средњег клика"
+
+#: prefs.js:518
+msgid "Customize running indicators"
+msgstr "Прилагођавање индикатора покренутих"
+
+#: appIcons.js:1144
+msgid "All Windows"
+msgstr "Сви прозори"
+
+#. Translators: %s is "Settings", which is automatically translated. You
+#. can also translate the full message if this fits better your language.
+#: appIcons.js:1450
+#, javascript-format
+msgid "Dash to Dock %s"
+msgstr "%s плоче/панела"
+
+#: Settings.ui.h:1
+msgid "Customize indicator style"
+msgstr "Прилагоћавање стила индикатора"
+
+#: Settings.ui.h:2
+msgid "Color"
+msgstr "Боја"
+
+#: Settings.ui.h:3
+msgid "Border color"
+msgstr "Боја ивице"
+
+#: Settings.ui.h:4
+msgid "Border width"
+msgstr "Ширина ивице"
+
+#: Settings.ui.h:5
+msgid "Number overlay"
+msgstr "Бројне налепнице"
+
+#: Settings.ui.h:6
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"Привремено прикажи бројеве програма изнад иконица, према припадајућој "
+"пречици."
+
+#: Settings.ui.h:7
+msgid "Show the dock if it is hidden"
+msgstr "Прикажи док уколико је сакривен"
+
+#: Settings.ui.h:8
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Уколико се користи аутоматско сакривање, док ће се приказати на тренутак при "
+"окидању пречице."
+
+#: Settings.ui.h:9
+msgid "Shortcut for the options above"
+msgstr "Пречица за горе наведене опције"
+
+#: Settings.ui.h:10
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Синтакса: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:11
+msgid "Hide timeout (s)"
+msgstr "Застој скривања"
+
+#: Settings.ui.h:12
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Кад је постављено на минимизовање, дупли клик минимизује све прозоре "
+"програма."
+
+#: Settings.ui.h:13
+msgid "Shift+Click action"
+msgstr "Радња шифт+клика"
+
+#: Settings.ui.h:14
+msgid "Raise window"
+msgstr "издигни прозор"
+
+#: Settings.ui.h:15
+msgid "Minimize window"
+msgstr "минимизуј прозор"
+
+#: Settings.ui.h:16
+msgid "Launch new instance"
+msgstr "покрени нови примерак"
+
+#: Settings.ui.h:17
+msgid "Cycle through windows"
+msgstr "кружење кроз прозоре"
+
+#: Settings.ui.h:18
+msgid "Minimize or overview"
+msgstr "минимиуј или преглед"
+
+#: Settings.ui.h:19
+msgid "Show window previews"
+msgstr "прикажи сличице прозора"
+
+#: Settings.ui.h:20
+msgid "Quit"
+msgstr "напусти"
+
+#: Settings.ui.h:21
+msgid "Behavior for Middle-Click."
+msgstr "Понашање средњег клика."
+
+#: Settings.ui.h:22
+msgid "Middle-Click action"
+msgstr "Радња средњег клика"
+
+#: Settings.ui.h:23
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Пoнашање шифт+средњег клика."
+
+#: Settings.ui.h:24
+msgid "Shift+Middle-Click action"
+msgstr "Радња шифт+средњегклика"
+
+#: Settings.ui.h:25
+msgid "Show the dock on"
+msgstr "Прикажи док на"
+
+#: Settings.ui.h:26
+msgid "Show on all monitors."
+msgstr "Прикажи на свим мониторима."
+
+#: Settings.ui.h:27
+msgid "Position on screen"
+msgstr "Позиција на екрану"
+
+#: Settings.ui.h:29
+msgid "Bottom"
+msgstr "дно"
+
+#: Settings.ui.h:30
+msgid "Top"
+msgstr "врх"
+
+#: Settings.ui.h:32
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"Сакриј док када је на путу прозора тренутног програма. Доступне су финије "
+"поставке."
+
+#: Settings.ui.h:33
+msgid "Intelligent autohide"
+msgstr "Интелигентно аутоматско сакривање"
+
+#: Settings.ui.h:34
+msgid "Dock size limit"
+msgstr "Ограничење величине дока"
+
+#: Settings.ui.h:35
+msgid "Panel mode: extend to the screen edge"
+msgstr "Режим панела: проширен до ивица екрана"
+
+#: Settings.ui.h:36
+msgid "Icon size limit"
+msgstr "Ограничење величине иконица"
+
+#: Settings.ui.h:37
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Устаљена величина иконица: клизајте за друге иконе"
+
+#: Settings.ui.h:38
+msgid "Position and size"
+msgstr "Позиција и величина"
+
+#: Settings.ui.h:39
+msgid "Show favorite applications"
+msgstr "Приказ омиљених програма"
+
+#: Settings.ui.h:40
+msgid "Show running applications"
+msgstr "Приказ покренутих програма"
+
+#: Settings.ui.h:41
+msgid "Isolate workspaces."
+msgstr "Изолуј радне просторе."
+
+#: Settings.ui.h:42
+msgid "Isolate monitors."
+msgstr "Изолуј мониторе."
+
+#: Settings.ui.h:43
+msgid "Show open windows previews."
+msgstr "Прикажи сличице отворених прозора."
+
+#: Settings.ui.h:44
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Уколико је онемогућено, ове поставке су доступне кроз алатку за лицкање или "
+"веб сајт проширења."
+
+#: Settings.ui.h:45
+msgid "Show <i>Applications</i> icon"
+msgstr "Приказ иконице <i>Прикажи програме</i>"
+
+#: Settings.ui.h:46
+msgid "Move the applications button at the beginning of the dock."
+msgstr "Помери дугме програма на почетак дока."
+
+#: Settings.ui.h:47
+msgid "Animate <i>Show Applications</i>."
+msgstr "Анимирај приказ програма."
+
+#: Settings.ui.h:48
+msgid "Launchers"
+msgstr "Покретачи"
+
+#: Settings.ui.h:49
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Укључује Супер+(0-9) као пречице за активацију програма. Такође је могуће "
+"користити уз shift и ctrl."
+
+#: Settings.ui.h:50
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "Активирај програме пречицама тастатуре"
+
+#: Settings.ui.h:51
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Понашање при клику на покренути програм."
+
+#: Settings.ui.h:52
+msgid "Click action"
+msgstr "Радња клика"
+
+#: Settings.ui.h:53
+msgid "Minimize"
+msgstr "минимизуј"
+
+#: Settings.ui.h:54
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Понашање при клизању на иконицу покренутог програма."
+
+#: Settings.ui.h:55
+msgid "Scroll action"
+msgstr "Радња клизања на иконицу"
+
+#: Settings.ui.h:56
+msgid "Do nothing"
+msgstr "ништа"
+
+#: Settings.ui.h:57
+msgid "Switch workspace"
+msgstr "пребаци радни простор"
+
+#: Settings.ui.h:58
+msgid "Behavior"
+msgstr "Понашање"
+
+#: Settings.ui.h:59
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Неколико поставки намењених уграђивању дока у основну тему Гнома. "
+"Алтернативно, посебне поставке се могу уредити испод."
+
+#: Settings.ui.h:60
+msgid "Use built-in theme"
+msgstr "Користи уграђену тему"
+
+#: Settings.ui.h:61
+msgid "Save space reducing padding and border radius."
+msgstr "Чува простор сужавањем попуне и опсега ивица."
+
+#: Settings.ui.h:62
+msgid "Shrink the dash"
+msgstr "Скупи плочу"
+
+#: Settings.ui.h:63
+msgid "Show a dot for each windows of the application."
+msgstr "Приказује тачку за сваки прозор програма."
+
+#: Settings.ui.h:64
+msgid "Show windows counter indicators"
+msgstr "Приказ индикаторa бројача прозора."
+
+#: Settings.ui.h:65
+msgid "Set the background color for the dash."
+msgstr "Постави позадинску боју плоче."
+
+#: Settings.ui.h:66
+msgid "Customize the dash color"
+msgstr "Прилагоди боју плоче"
+
+#: Settings.ui.h:67
+msgid "Tune the dash background opacity."
+msgstr "Прилагоди прозирност позадине плоче."
+
+#: Settings.ui.h:68
+msgid "Customize opacity"
+msgstr "Прилагоћавање прозирности"
+
+#: Settings.ui.h:69
+msgid "Opacity"
+msgstr "Прозирност"
+
+#: Settings.ui.h:70
+msgid "Enable Unity7 like glossy backlit items"
+msgstr "Укључи позадинске ефекте попут Unity7"
+
+#: Settings.ui.h:71
+msgid "Force straight corner\n"
+msgstr "Наметни равне углове\n"
+
+#: Settings.ui.h:73
+msgid "Appearance"
+msgstr "Изглед"
+
+#: Settings.ui.h:74
+msgid "version: "
+msgstr "верзија: "
+
+#: Settings.ui.h:75
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Помера плочу из глобалног приказа, претварајући је у док"
+
+#: Settings.ui.h:76
+msgid "Created by"
+msgstr "Направи"
+
+#: Settings.ui.h:77
+msgid "Webpage"
+msgstr "Веб страница"
+
+#: Settings.ui.h:78
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">Овај програм се доставља БЕЗ ИКАКВИХ ГАРАНЦИЈА.\n"
+"Погледајте <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">ГНУову Општу Јавну лиценцу, верзија 2 или каснија</a>, за детаље.</span>"
+
+#: Settings.ui.h:80
+msgid "About"
+msgstr "О програму"
+
+#: Settings.ui.h:81
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Прикажи док прелазом миша пеко ивице екрана."
+
+#: Settings.ui.h:82
+msgid "Autohide"
+msgstr "Аутоматско сакривање"
+
+#: Settings.ui.h:83
+msgid "Push to show: require pressure to show the dock"
+msgstr "Приказ притиском: захтева притисак за приказ дока"
+
+#: Settings.ui.h:84
+msgid "Enable in fullscreen mode"
+msgstr "Омогући у целоекранском режиму"
+
+#: Settings.ui.h:85
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Приказује док када није на путу прозорима програма."
+
+#: Settings.ui.h:86
+msgid "Dodge windows"
+msgstr "Избегавање розора"
+
+#: Settings.ui.h:87
+msgid "All windows"
+msgstr "Сви прозори"
+
+#: Settings.ui.h:88
+msgid "Only focused application's windows"
+msgstr "Само прозор фокусираног програма"
+
+#: Settings.ui.h:89
+msgid "Only maximized windows"
+msgstr "Само максимизовани прозори"
+
+#: Settings.ui.h:90
+msgid "Animation duration (s)"
+msgstr "Трајање(а) анимације"
+
+#: Settings.ui.h:91
+msgid "Show timeout (s)"
+msgstr "Застој приказивања"
+
+#: Settings.ui.h:92
+msgid "Pressure threshold"
+msgstr "Праг притиска"
+
+#~ msgid "0.000"
+#~ msgstr "0,000"
+
+#, fuzzy
+#~ msgid ""
+#~ "With fixed icon size, only the edge of the dock and the <i>Show "
+#~ "Applications</i> icon are active."
+#~ msgstr ""
+#~ "Ако се иконе преклапају на доку, приказује се само икона <i>Прикажи "
+#~ "програме</i>."
+
+#~ msgid "Switch workspace by scrolling on the dock"
+#~ msgstr "Промена радног простора клизањем по доку"
+
+#~ msgid "Only consider windows of the focused application"
+#~ msgstr "Разматрај само прозор фокусираног програма"
diff --git a/extensions/dash-to-dock/po/sr@latin.po b/extensions/dash-to-dock/po/sr@latin.po
new file mode 100644
index 00000000..e7f7794f
--- /dev/null
+++ b/extensions/dash-to-dock/po/sr@latin.po
@@ -0,0 +1,469 @@
+# 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 <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-09-16 13:45+0200\n"
+"PO-Revision-Date: 2017-09-20 18:56+0200\n"
+"Last-Translator: Slobodan Terzić <Xabre@archlinux.info>\n"
+"Language-Team: \n"
+"Language: sr@latin\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=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: prefs.js:113
+msgid "Primary monitor"
+msgstr "primarnom monitoru"
+
+#: prefs.js:122 prefs.js:129
+msgid "Secondary monitor "
+msgstr "sekundarnom monitoru"
+
+#: prefs.js:154 Settings.ui.h:31
+msgid "Right"
+msgstr "desno"
+
+#: prefs.js:155 Settings.ui.h:28
+msgid "Left"
+msgstr "levo"
+
+#: prefs.js:205
+msgid "Intelligent autohide customization"
+msgstr "Postavke inteligentnog automatskog sakrivanja"
+
+#: prefs.js:212 prefs.js:397 prefs.js:454
+msgid "Reset to defaults"
+msgstr "Povrati osnovno"
+
+#: prefs.js:390
+msgid "Show dock and application numbers"
+msgstr "Prikaži dok i brojeve programa"
+
+#: prefs.js:447
+msgid "Customize middle-click behavior"
+msgstr "Prilagoćavanje ponašanja srednjeg klika"
+
+#: prefs.js:518
+msgid "Customize running indicators"
+msgstr "Prilagođavanje indikatora pokrenutih"
+
+#: appIcons.js:1144
+msgid "All Windows"
+msgstr "Svi prozori"
+
+#. Translators: %s is "Settings", which is automatically translated. You
+#. can also translate the full message if this fits better your language.
+#: appIcons.js:1450
+#, javascript-format
+msgid "Dash to Dock %s"
+msgstr "%s ploče/panela"
+
+#: Settings.ui.h:1
+msgid "Customize indicator style"
+msgstr "Prilagoćavanje stila indikatora"
+
+#: Settings.ui.h:2
+msgid "Color"
+msgstr "Boja"
+
+#: Settings.ui.h:3
+msgid "Border color"
+msgstr "Boja ivice"
+
+#: Settings.ui.h:4
+msgid "Border width"
+msgstr "Širina ivice"
+
+#: Settings.ui.h:5
+msgid "Number overlay"
+msgstr "Brojne nalepnice"
+
+#: Settings.ui.h:6
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to the "
+"shortcut."
+msgstr ""
+"Privremeno prikaži brojeve programa iznad ikonica, prema pripadajućoj prečici."
+
+#: Settings.ui.h:7
+msgid "Show the dock if it is hidden"
+msgstr "Prikaži dok ukoliko je sakriven"
+
+#: Settings.ui.h:8
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Ukoliko se koristi automatsko sakrivanje, dok će se prikazati na trenutak pri "
+"okidanju prečice."
+
+#: Settings.ui.h:9
+msgid "Shortcut for the options above"
+msgstr "Prečica za gore navedene opcije"
+
+#: Settings.ui.h:10
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Sintaksa: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:11
+msgid "Hide timeout (s)"
+msgstr "Zastoj skrivanja"
+
+#: Settings.ui.h:12
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Kad je postavljeno na minimizovanje, dupli klik minimizuje sve prozore "
+"programa."
+
+#: Settings.ui.h:13
+msgid "Shift+Click action"
+msgstr "Radnja šift+klika"
+
+#: Settings.ui.h:14
+msgid "Raise window"
+msgstr "izdigni prozor"
+
+#: Settings.ui.h:15
+msgid "Minimize window"
+msgstr "minimizuj prozor"
+
+#: Settings.ui.h:16
+msgid "Launch new instance"
+msgstr "pokreni novi primerak"
+
+#: Settings.ui.h:17
+msgid "Cycle through windows"
+msgstr "kruženje kroz prozore"
+
+#: Settings.ui.h:18
+msgid "Minimize or overview"
+msgstr "minimiuj ili pregled"
+
+#: Settings.ui.h:19
+msgid "Show window previews"
+msgstr "prikaži sličice prozora"
+
+#: Settings.ui.h:20
+msgid "Quit"
+msgstr "napusti"
+
+#: Settings.ui.h:21
+msgid "Behavior for Middle-Click."
+msgstr "Ponašanje srednjeg klika."
+
+#: Settings.ui.h:22
+msgid "Middle-Click action"
+msgstr "Radnja srednjeg klika"
+
+#: Settings.ui.h:23
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Ponašanje šift+srednjeg klika."
+
+#: Settings.ui.h:24
+msgid "Shift+Middle-Click action"
+msgstr "Radnja šift+srednjegklika"
+
+#: Settings.ui.h:25
+msgid "Show the dock on"
+msgstr "Prikaži dok na"
+
+#: Settings.ui.h:26
+msgid "Show on all monitors."
+msgstr "Prikaži na svim monitorima."
+
+#: Settings.ui.h:27
+msgid "Position on screen"
+msgstr "Pozicija na ekranu"
+
+#: Settings.ui.h:29
+msgid "Bottom"
+msgstr "dno"
+
+#: Settings.ui.h:30
+msgid "Top"
+msgstr "vrh"
+
+#: Settings.ui.h:32
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"Sakrij dok kada je na putu prozora trenutnog programa. Dostupne su finije "
+"postavke."
+
+#: Settings.ui.h:33
+msgid "Intelligent autohide"
+msgstr "Inteligentno automatsko sakrivanje"
+
+#: Settings.ui.h:34
+msgid "Dock size limit"
+msgstr "Ograničenje veličine doka"
+
+#: Settings.ui.h:35
+msgid "Panel mode: extend to the screen edge"
+msgstr "Režim panela: proširen do ivica ekrana"
+
+#: Settings.ui.h:36
+msgid "Icon size limit"
+msgstr "Ograničenje veličine ikonica"
+
+#: Settings.ui.h:37
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Ustaljena veličina ikonica: klizajte za druge ikone"
+
+#: Settings.ui.h:38
+msgid "Position and size"
+msgstr "Pozicija i veličina"
+
+#: Settings.ui.h:39
+msgid "Show favorite applications"
+msgstr "Prikaz omiljenih programa"
+
+#: Settings.ui.h:40
+msgid "Show running applications"
+msgstr "Prikaz pokrenutih programa"
+
+#: Settings.ui.h:41
+msgid "Isolate workspaces."
+msgstr "Izoluj radne prostore."
+
+#: Settings.ui.h:42
+msgid "Isolate monitors."
+msgstr "Izoluj monitore."
+
+#: Settings.ui.h:43
+msgid "Show open windows previews."
+msgstr "Prikaži sličice otvorenih prozora."
+
+#: Settings.ui.h:44
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Ukoliko je onemogućeno, ove postavke su dostupne kroz alatku za lickanje ili "
+"veb sajt proširenja."
+
+#: Settings.ui.h:45
+msgid "Show <i>Applications</i> icon"
+msgstr "Prikaz ikonice <i>Prikaži programe</i>"
+
+#: Settings.ui.h:46
+msgid "Move the applications button at the beginning of the dock."
+msgstr "Pomeri dugme programa na početak doka."
+
+#: Settings.ui.h:47
+msgid "Animate <i>Show Applications</i>."
+msgstr "Animiraj prikaz programa."
+
+#: Settings.ui.h:48
+msgid "Launchers"
+msgstr "Pokretači"
+
+#: Settings.ui.h:49
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Uključuje Super+(0-9) kao prečice za aktivaciju programa. Takođe je moguće "
+"koristiti uz shift i ctrl."
+
+#: Settings.ui.h:50
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "Aktiviraj programe prečicama tastature"
+
+#: Settings.ui.h:51
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Ponašanje pri kliku na pokrenuti program."
+
+#: Settings.ui.h:52
+msgid "Click action"
+msgstr "Radnja klika"
+
+#: Settings.ui.h:53
+msgid "Minimize"
+msgstr "minimizuj"
+
+#: Settings.ui.h:54
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Ponašanje pri klizanju na ikonicu pokrenutog programa."
+
+#: Settings.ui.h:55
+msgid "Scroll action"
+msgstr "Radnja klizanja na ikonicu"
+
+#: Settings.ui.h:56
+msgid "Do nothing"
+msgstr "ništa"
+
+#: Settings.ui.h:57
+msgid "Switch workspace"
+msgstr "prebaci radni prostor"
+
+#: Settings.ui.h:58
+msgid "Behavior"
+msgstr "Ponašanje"
+
+#: Settings.ui.h:59
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Nekoliko postavki namenjenih ugrađivanju doka u osnovnu temu Gnoma. "
+"Alternativno, posebne postavke se mogu urediti ispod."
+
+#: Settings.ui.h:60
+msgid "Use built-in theme"
+msgstr "Koristi ugrađenu temu"
+
+#: Settings.ui.h:61
+msgid "Save space reducing padding and border radius."
+msgstr "Čuva prostor sužavanjem popune i opsega ivica."
+
+#: Settings.ui.h:62
+msgid "Shrink the dash"
+msgstr "Skupi ploču"
+
+#: Settings.ui.h:63
+msgid "Show a dot for each windows of the application."
+msgstr "Prikazuje tačku za svaki prozor programa."
+
+#: Settings.ui.h:64
+msgid "Show windows counter indicators"
+msgstr "Prikaz indikatora brojača prozora."
+
+#: Settings.ui.h:65
+msgid "Set the background color for the dash."
+msgstr "Postavi pozadinsku boju ploče."
+
+#: Settings.ui.h:66
+msgid "Customize the dash color"
+msgstr "Prilagodi boju ploče"
+
+#: Settings.ui.h:67
+msgid "Tune the dash background opacity."
+msgstr "Prilagodi prozirnost pozadine ploče."
+
+#: Settings.ui.h:68
+msgid "Customize opacity"
+msgstr "Prilagoćavanje prozirnosti"
+
+#: Settings.ui.h:69
+msgid "Opacity"
+msgstr "Prozirnost"
+
+#: Settings.ui.h:70
+msgid "Enable Unity7 like glossy backlit items"
+msgstr "Uključi pozadinske efekte poput Unity7"
+
+#: Settings.ui.h:71
+msgid "Force straight corner\n"
+msgstr "Nametni ravne uglove\n"
+
+#: Settings.ui.h:73
+msgid "Appearance"
+msgstr "Izgled"
+
+#: Settings.ui.h:74
+msgid "version: "
+msgstr "verzija: "
+
+#: Settings.ui.h:75
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Pomera ploču iz globalnog prikaza, pretvarajući je u dok"
+
+#: Settings.ui.h:76
+msgid "Created by"
+msgstr "Napravi"
+
+#: Settings.ui.h:77
+msgid "Webpage"
+msgstr "Veb stranica"
+
+#: Settings.ui.h:78
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">Ovaj program se dostavlja BEZ IKAKVIH GARANCIJA.\n"
+"Pogledajte <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">GNUovu Opštu Javnu licencu, verzija 2 ili kasnija</a>, za detalje.</span>"
+
+#: Settings.ui.h:80
+msgid "About"
+msgstr "O programu"
+
+#: Settings.ui.h:81
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Prikaži dok prelazom miša peko ivice ekrana."
+
+#: Settings.ui.h:82
+msgid "Autohide"
+msgstr "Automatsko sakrivanje"
+
+#: Settings.ui.h:83
+msgid "Push to show: require pressure to show the dock"
+msgstr "Prikaz pritiskom: zahteva pritisak za prikaz doka"
+
+#: Settings.ui.h:84
+msgid "Enable in fullscreen mode"
+msgstr "Omogući u celoekranskom režimu"
+
+#: Settings.ui.h:85
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Prikazuje dok kada nije na putu prozorima programa."
+
+#: Settings.ui.h:86
+msgid "Dodge windows"
+msgstr "Izbegavanje rozora"
+
+#: Settings.ui.h:87
+msgid "All windows"
+msgstr "Svi prozori"
+
+#: Settings.ui.h:88
+msgid "Only focused application's windows"
+msgstr "Samo prozor fokusiranog programa"
+
+#: Settings.ui.h:89
+msgid "Only maximized windows"
+msgstr "Samo maksimizovani prozori"
+
+#: Settings.ui.h:90
+msgid "Animation duration (s)"
+msgstr "Trajanje(a) animacije"
+
+#: Settings.ui.h:91
+msgid "Show timeout (s)"
+msgstr "Zastoj prikazivanja"
+
+#: Settings.ui.h:92
+msgid "Pressure threshold"
+msgstr "Prag pritiska"
+
+#~ msgid "0.000"
+#~ msgstr "0,000"
+
+#, fuzzy
+#~ msgid ""
+#~ "With fixed icon size, only the edge of the dock and the <i>Show "
+#~ "Applications</i> icon are active."
+#~ msgstr ""
+#~ "Ako se ikone preklapaju na doku, prikazuje se samo ikona <i>Prikaži "
+#~ "programe</i>."
+
+#~ msgid "Switch workspace by scrolling on the dock"
+#~ msgstr "Promena radnog prostora klizanjem po doku"
+
+#~ msgid "Only consider windows of the focused application"
+#~ msgstr "Razmatraj samo prozor fokusiranog programa"
diff --git a/extensions/dash-to-dock/po/sv.po b/extensions/dash-to-dock/po/sv.po
new file mode 100644
index 00000000..dd5b4bdb
--- /dev/null
+++ b/extensions/dash-to-dock/po/sv.po
@@ -0,0 +1,545 @@
+# Swedish translation for dash-to-dock.
+# Copyright © 2020 dash-to-dock's COPYRIGHT HOLDER
+# This file is distributed under the same license as the dash-to-dock package.
+# Anders Jonsson <anders.jonsson@norsjovallen.se>, 2016.
+# Morgan Antonsson <morgan.antonsson@gmail.com>, 2020.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-08-03 19:27+0200\n"
+"PO-Revision-Date: 2020-08-03 19:41+0200\n"
+"Last-Translator: Morgan Antonsson <morgan.antonsson@gmail.com>\n"
+"Language-Team: \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.3\n"
+
+#: prefs.js:268
+msgid "Primary monitor"
+msgstr "Primär skärm"
+
+#: prefs.js:277 prefs.js:284
+msgid "Secondary monitor "
+msgstr "Sekundär skärm "
+
+#: prefs.js:309 Settings.ui.h:28
+msgid "Right"
+msgstr "Höger"
+
+#: prefs.js:310 Settings.ui.h:25
+msgid "Left"
+msgstr "Vänster"
+
+#: prefs.js:360
+msgid "Intelligent autohide customization"
+msgstr "Anpassning av intelligent automatiskt döljande"
+
+#: prefs.js:367 prefs.js:560 prefs.js:616
+msgid "Reset to defaults"
+msgstr "Återställ till standardvärden"
+
+#: prefs.js:553
+msgid "Show dock and application numbers"
+msgstr "Visa docka och programnummer"
+
+#: prefs.js:609
+msgid "Customize middle-click behavior"
+msgstr "Anpassa mellanklicksbeteende"
+
+#: prefs.js:692
+msgid "Customize running indicators"
+msgstr "Anpassa körningsindikatorer"
+
+#: prefs.js:804 Settings.ui.h:74
+msgid "Customize opacity"
+msgstr "Anpassa opacitet"
+
+#: appIcons.js:797
+msgid "All Windows"
+msgstr "Alla fönster"
+
+#: appIcons.js:916
+#, javascript-format
+msgid "Quit %d Windows"
+msgstr "Stäng %d fönster"
+
+#. Translators: %s is "Settings", which is automatically translated. You
+#. can also translate the full message if this fits better your language.
+#: appIcons.js:1134
+#, javascript-format
+msgid "Dash to Dock %s"
+msgstr "%s för Dash to Dock"
+
+#: locations.js:80
+msgid "Trash"
+msgstr "Papperskorg"
+
+#: locations.js:89
+msgid "Empty Trash"
+msgstr "Töm papperskorgen"
+
+#: locations.js:207
+msgid "Mount"
+msgstr "Montera"
+
+#: locations.js:250
+msgid "Eject"
+msgstr "Mata ut"
+
+#: locations.js:255
+msgid "Unmount"
+msgstr "Avmontera"
+
+#: Settings.ui.h:1
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Då inställd till minimera så minimerar dubbelklick alla fönster för "
+"programmet."
+
+#: Settings.ui.h:2
+msgid "Shift+Click action"
+msgstr "Skift+klick-åtgärd"
+
+#: Settings.ui.h:3
+msgid "Raise window"
+msgstr "Höj fönster"
+
+#: Settings.ui.h:4
+msgid "Minimize window"
+msgstr "Minimera fönster"
+
+#: Settings.ui.h:5
+msgid "Launch new instance"
+msgstr "Starta ny instans"
+
+#: Settings.ui.h:6
+msgid "Cycle through windows"
+msgstr "Växla mellan fönster"
+
+#: Settings.ui.h:7
+msgid "Minimize or overview"
+msgstr "Minimera eller visa översikt"
+
+#: Settings.ui.h:8
+msgid "Show window previews"
+msgstr "Visa förhandsgranskningar av fönster"
+
+#: Settings.ui.h:9
+msgid "Minimize or show previews"
+msgstr "Minimera eller visa förhandsgranskningar"
+
+#: Settings.ui.h:10
+msgid "Focus or show previews"
+msgstr "Fokusera eller visa förhandsgranskningar"
+
+#: Settings.ui.h:11
+msgid "Quit"
+msgstr "Avsluta"
+
+#: Settings.ui.h:12
+msgid "Behavior for Middle-Click."
+msgstr "Beteende för mellanklick."
+
+#: Settings.ui.h:13
+msgid "Middle-Click action"
+msgstr "Åtgärd för mellanklick"
+
+#: Settings.ui.h:14
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Beteende för skift+mellanklick."
+
+#: Settings.ui.h:15
+msgid "Shift+Middle-Click action"
+msgstr "Åtgärd för skift+mellanklick"
+
+#: Settings.ui.h:16
+msgid "Enable Unity7 like glossy backlit items"
+msgstr "Aktivera bakgrundsbelysta blanka knappar"
+
+#: Settings.ui.h:17
+msgid "Use dominant color"
+msgstr "Använd dominerande färg"
+
+#: Settings.ui.h:18
+msgid "Customize indicator style"
+msgstr "Anpassa indikatorstil"
+
+#: Settings.ui.h:19
+msgid "Color"
+msgstr "Färg"
+
+#: Settings.ui.h:20
+msgid "Border color"
+msgstr "Kantfärg"
+
+#: Settings.ui.h:21
+msgid "Border width"
+msgstr "Kantbredd"
+
+#: Settings.ui.h:22
+msgid "Show the dock on"
+msgstr "Visa dockan på"
+
+#: Settings.ui.h:23
+msgid "Show on all monitors."
+msgstr "Visa på alla skärmar."
+
+#: Settings.ui.h:24
+msgid "Position on screen"
+msgstr "Position på skärmen"
+
+#: Settings.ui.h:26
+msgid "Bottom"
+msgstr "Nederkant"
+
+#: Settings.ui.h:27
+msgid "Top"
+msgstr "Överkant"
+
+#: Settings.ui.h:29
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"Dölj dockan då den är i vägen för ett fönster för det aktuella programmet. "
+"Mer förfinade inställningar finns tillgängliga."
+
+#: Settings.ui.h:30
+msgid "Intelligent autohide"
+msgstr "Intelligent automatiskt döljande"
+
+#: Settings.ui.h:31
+msgid "Dock size limit"
+msgstr "Storleksgräns för docka"
+
+#: Settings.ui.h:32
+msgid "Panel mode: extend to the screen edge"
+msgstr "Panelläge: sträck ut till skärmkanten"
+
+#: Settings.ui.h:33
+msgid "Icon size limit"
+msgstr "Storleksgräns för ikoner"
+
+#: Settings.ui.h:34
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Fast ikonstorlek: rulla för att visa dolda ikoner"
+
+#: Settings.ui.h:35
+msgid "Position and size"
+msgstr "Position och storlek"
+
+#: Settings.ui.h:36
+msgid "Show favorite applications"
+msgstr "Visa favoritprogram"
+
+#: Settings.ui.h:37
+msgid "Show running applications"
+msgstr "Visa körande program"
+
+#: Settings.ui.h:38
+msgid "Isolate workspaces."
+msgstr "Visa endast arbetsytans fönster."
+
+#: Settings.ui.h:39
+msgid "Isolate monitors."
+msgstr "Visa endast skärmens fönster."
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "Visa förhandsgranskningar av öppna fönster."
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Om inaktiverad är dessa inställningar tillgängliga från justeringsverktyg "
+"eller webbplatsen för utökningar."
+
+#: Settings.ui.h:42
+msgid "Show <i>Applications</i> icon"
+msgstr "Visa <i>Program</i>-ikon"
+
+#: 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
+msgid "Animate <i>Show Applications</i>."
+msgstr "Animera <i>Visa program</i>."
+
+#: Settings.ui.h:45
+msgid "Show trash can"
+msgstr "Visa papperskorgen"
+
+#: Settings.ui.h:46
+msgid "Show mounted volumes and devices"
+msgstr "Visa monterade volymer och enheter"
+
+#: Settings.ui.h:47
+msgid "Launchers"
+msgstr "Programstartare"
+
+#: Settings.ui.h:48
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Använd Super+(0-9) som tangentbordsgenvägar för att aktivera program. De kan "
+"även användas tillsammans med skift- och ctrl-tangenterna."
+
+#: 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
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Beteende då ikonen för ett körande program klickas."
+
+#: Settings.ui.h:51
+msgid "Click action"
+msgstr "Klickåtgärd"
+
+#: Settings.ui.h:52
+msgid "Minimize"
+msgstr "Minimera"
+
+#: Settings.ui.h:53
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Beteende vid rullning över programikon."
+
+#: Settings.ui.h:54
+msgid "Scroll action"
+msgstr "Rullåtgärd"
+
+#: Settings.ui.h:55
+msgid "Do nothing"
+msgstr "Gör ingenting"
+
+#: Settings.ui.h:56
+msgid "Switch workspace"
+msgstr "Byt arbetsyta"
+
+#: Settings.ui.h:57
+msgid "Behavior"
+msgstr "Beteende"
+
+#: Settings.ui.h:58
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Några anpassningar för att integrera dockan med GNOME:s standardtema. "
+"Alternativt kan specifika alternativ aktiveras nedan."
+
+#: Settings.ui.h:59
+msgid "Use built-in theme"
+msgstr "Använd inbyggt tema"
+
+#: Settings.ui.h:60
+msgid "Save space reducing padding and border radius."
+msgstr "Spara utrymme genom att minska utfyllnad och kantradie."
+
+#: Settings.ui.h:61
+msgid "Shrink the dash"
+msgstr "Krymp snabbstartspanelen"
+
+#: Settings.ui.h:62
+msgid "Customize windows counter indicators"
+msgstr "Anpassa räknare för öppna fönster"
+
+#: Settings.ui.h:63
+msgid "Default"
+msgstr "Standard"
+
+#: Settings.ui.h:64
+msgid "Dots"
+msgstr "Prickar"
+
+#: Settings.ui.h:65
+msgid "Squares"
+msgstr "Kvadrater"
+
+#: Settings.ui.h:66
+msgid "Dashes"
+msgstr "Streck"
+
+#: Settings.ui.h:67
+msgid "Segmented"
+msgstr "Segment"
+
+#: Settings.ui.h:68
+msgid "Solid"
+msgstr "Solid"
+
+#: Settings.ui.h:69
+msgid "Ciliora"
+msgstr "Ciliora"
+
+#: Settings.ui.h:70
+msgid "Metro"
+msgstr "Metro"
+
+#: Settings.ui.h:71
+msgid "Set the background color for the dash."
+msgstr "Ställ in bakgrundsfärg för snabbstartspanelen."
+
+#: Settings.ui.h:72
+msgid "Customize the dash color"
+msgstr "Anpassa färgen för snabbstartspanelen"
+
+#: Settings.ui.h:73
+msgid "Tune the dash background opacity."
+msgstr "Justera opacitet för bakgrunden till snabbstartspanelen."
+
+#: Settings.ui.h:75
+msgid "Fixed"
+msgstr "Fast"
+
+#: Settings.ui.h:76
+msgid "Dynamic"
+msgstr "Dynamisk"
+
+#: Settings.ui.h:77
+msgid "Opacity"
+msgstr "Opacitet"
+
+#: Settings.ui.h:78
+msgid "Force straight corner"
+msgstr "Tvinga räta hörn"
+
+#: Settings.ui.h:79
+msgid "Appearance"
+msgstr "Utseende"
+
+#: Settings.ui.h:80
+msgid "version: "
+msgstr "version: "
+
+#: Settings.ui.h:81
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr ""
+"Flyttar snabbstartspanelen från översiktsvyn och förvandlar den till en docka"
+
+#: Settings.ui.h:82
+msgid "Created by"
+msgstr "Skapat av"
+
+#: Settings.ui.h:83
+msgid "Webpage"
+msgstr "Webbsida"
+
+#: Settings.ui.h:84
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">Detta program kommer HELT UTAN GARANTI.\n"
+"Se <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html\">GNU "
+"General Public License, version 2 eller senare</a> för detaljer.</span>"
+
+#: Settings.ui.h:86
+msgid "About"
+msgstr "Om"
+
+#: Settings.ui.h:87
+msgid "Customize minimum and maximum opacity values"
+msgstr "Anpassa minsta och högsta värden för opacitet"
+
+#: Settings.ui.h:88
+msgid "Minimum opacity"
+msgstr "Minsta opacitet"
+
+#: Settings.ui.h:89
+msgid "Maximum opacity"
+msgstr "Högsta opacitet"
+
+#: Settings.ui.h:90
+msgid "Number overlay"
+msgstr "Nummermarkeringar"
+
+#: Settings.ui.h:91
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"Visa tillfälligt programmens tangentbordsgenvägsnummer ovanpå dess ikoner."
+
+#: Settings.ui.h:92
+msgid "Show the dock if it is hidden"
+msgstr "Visa dockan om den är dold"
+
+#: Settings.ui.h:93
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Om automatiskt döljande är aktiverat kommer dockan att synas tillfälligt när "
+"tangentbordsgenvägen triggas."
+
+#: Settings.ui.h:94
+msgid "Shortcut for the options above"
+msgstr "Tangentbordsgenväg för alternativen ovan"
+
+#: Settings.ui.h:95
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Syntax: <Skift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:96
+msgid "Hide timeout (s)"
+msgstr "Tidsgräns för att dölja (s)"
+
+#: Settings.ui.h:97
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Visa dockan genom att flytta muspekaren till skärmkanten."
+
+#: Settings.ui.h:98
+msgid "Autohide"
+msgstr "Dölj automatiskt"
+
+#: Settings.ui.h:99
+msgid "Push to show: require pressure to show the dock"
+msgstr "Tryck för att visa: kräv tryck för att visa dockan"
+
+#: Settings.ui.h:100
+msgid "Enable in fullscreen mode"
+msgstr "Aktivera i helskärmsläge"
+
+#: Settings.ui.h:101
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Visa dockan då den inte är i vägen för programfönster."
+
+#: Settings.ui.h:102
+msgid "Dodge windows"
+msgstr "Undvik fönster"
+
+#: Settings.ui.h:103
+msgid "All windows"
+msgstr "Alla fönster"
+
+#: Settings.ui.h:104
+msgid "Only focused application's windows"
+msgstr "Endast fokuserade programs fönster"
+
+#: Settings.ui.h:105
+msgid "Only maximized windows"
+msgstr "Endast maximerade fönster"
+
+#: Settings.ui.h:106
+msgid "Animation duration (s)"
+msgstr "Animationens varaktighet (s)"
+
+#: Settings.ui.h:107
+msgid "Show timeout (s)"
+msgstr "Tidsgräns för att visa (s)"
+
+#: Settings.ui.h:108
+msgid "Pressure threshold"
+msgstr "Tröskelvärde för tryck"
diff --git a/extensions/dash-to-dock/po/tr.po b/extensions/dash-to-dock/po/tr.po
new file mode 100644
index 00000000..e4bf8a8b
--- /dev/null
+++ b/extensions/dash-to-dock/po/tr.po
@@ -0,0 +1,525 @@
+# Turkish translation for dash-to-dock GNOME shell extension.
+# Copyright (C) 2015-2019, dash-to-dock'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the dash-to-dock package.
+#
+# Mustafa Akgün <mustafa.akgun@gmail.com>, 2015.
+# Çağatay Yiğit Şahin <cyigitsahin@outlook.com>, 2016.
+# Serdar Sağlam <teknomobil@yandex.com>, 2018, 2019.
+# Sabri Ünal <libreajans@gmail.com>, 2019.
+#
+# Note for all turkish translators:
+# Lütfen GNOME Shell çevirileri ile uyumlu çevirmeye gayret edelim.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: dash-to-dock master\n"
+"Report-Msgid-Bugs-To: https://github.com/micheleg/dash-to-dock\n"
+"POT-Creation-Date: 2019-10-13 08:54+0300\n"
+"PO-Revision-Date: 2019-11-11 17:21+0300\n"
+"Last-Translator: Sabri Ünal <libreajans@gmail.com>\n"
+"Language-Team: \n"
+"Language: tr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Poedit 2.0.6\n"
+
+#: prefs.js:264
+msgid "Primary monitor"
+msgstr "Ana ekran"
+
+#: prefs.js:273 prefs.js:280
+msgid "Secondary monitor "
+msgstr "İkincil ekran "
+
+#: prefs.js:305 Settings.ui.h:28
+msgid "Right"
+msgstr "Sağ"
+
+#: prefs.js:306 Settings.ui.h:25
+msgid "Left"
+msgstr "Sol"
+
+#: prefs.js:356
+msgid "Intelligent autohide customization"
+msgstr "Akıllı otomatik gizleme özelleştirmeleri"
+
+#: prefs.js:363 prefs.js:556 prefs.js:612
+msgid "Reset to defaults"
+msgstr "Varsayılan ayarlara 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
+msgid "Customize middle-click behavior"
+msgstr "Orta tık davranışını özelleştir"
+
+#: prefs.js:688
+msgid "Customize running indicators"
+msgstr "Çalışan göstergeleri özelleştir"
+
+#: prefs.js:800 Settings.ui.h:74
+msgid "Customize opacity"
+msgstr "Matlığı özelleştir"
+
+#: appIcons.js:809
+msgid "All Windows"
+msgstr "Tüm Pencereler"
+
+# %s değişkeni Ayarlar olarak çevrildiği için, bir ı harfi ekleyerek Türkçeye uyumlu hale getiriyoruz.
+#. Translators: %s is "Settings", which is automatically translated. You
+#. can also translate the full message if this fits better your language.
+#: appIcons.js:1126
+#, javascript-format
+msgid "Dash to Dock %s"
+msgstr "Dash to Dock %sı"
+
+#: Settings.ui.h:1
+msgid "When set to minimize, double clicking minimizes all the windows of the application."
+msgstr "Küçültmeye ayarlandığında, çift tıklamak uygulamanın tüm pencerelerini küçültür."
+
+#: Settings.ui.h:2
+msgid "Shift+Click action"
+msgstr "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
+msgid "Minimize window"
+msgstr "Pencereyi küçült"
+
+#: Settings.ui.h:5
+msgid "Launch new instance"
+msgstr "Yeni uygulama örneği başlat"
+
+#: Settings.ui.h:6
+msgid "Cycle through windows"
+msgstr "Pencere döngüsü"
+
+#: Settings.ui.h:7
+msgid "Minimize or overview"
+msgstr "Küçült yada genel bakış"
+
+#: Settings.ui.h:8
+msgid "Show window previews"
+msgstr "Pencere önizlemelerini göster"
+
+#: Settings.ui.h:9
+msgid "Minimize or show previews"
+msgstr "Küçült yada önizlemeleri göster"
+
+#: Settings.ui.h:10
+msgid "Focus or show previews"
+msgstr "Odaklan veya önizlemeleri göster"
+
+#: Settings.ui.h:11
+msgid "Quit"
+msgstr "Çık"
+
+#: Settings.ui.h:12
+msgid "Behavior for Middle-Click."
+msgstr "Orta Tıklama davranışı."
+
+#: Settings.ui.h:13
+msgid "Middle-Click action"
+msgstr "Orta Tıklama eylemi"
+
+#: Settings.ui.h:14
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Shift + Orta Tıklama davranışı."
+
+#: Settings.ui.h:15
+msgid "Shift+Middle-Click action"
+msgstr "Shift + Orta Tıklama eylemi"
+
+# glossy backlit için serbest çeviri yapıldı
+#: Settings.ui.h:16
+msgid "Enable Unity7 like glossy backlit items"
+msgstr "Unity7 tipi parlak öğeleri etkinleştir"
+
+#: Settings.ui.h:17
+msgid "Use dominant color"
+msgstr "Baskın rengi kullan"
+
+#: Settings.ui.h:18
+msgid "Customize indicator style"
+msgstr "Gösterge biçemini özelleştir"
+
+#: Settings.ui.h:19
+msgid "Color"
+msgstr "Renk"
+
+#: Settings.ui.h:20
+msgid "Border color"
+msgstr "Kenarlık rengi"
+
+#: Settings.ui.h:21
+msgid "Border width"
+msgstr "Kenarlık genişliği"
+
+#: Settings.ui.h:22
+msgid "Show the dock on"
+msgstr "Rıhtım'ı göster"
+
+#: Settings.ui.h:23
+msgid "Show on all monitors."
+msgstr "Tüm ekranlarda göster."
+
+#: Settings.ui.h:24
+msgid "Position on screen"
+msgstr "Ekrandaki konumu"
+
+#: Settings.ui.h:26
+msgid "Bottom"
+msgstr "Alt"
+
+#: Settings.ui.h:27
+msgid "Top"
+msgstr "Üst"
+
+#: Settings.ui.h:29
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More refined settings are available."
+msgstr "Geçerli uygulamanın penceresini engellediğinde rıhtımı gizle. Daha detaylı ayarlar mevcuttur."
+
+#: Settings.ui.h:30
+msgid "Intelligent autohide"
+msgstr "Akıllı gizleme"
+
+# son limit cümlesi kasten çevrilmedi
+#: Settings.ui.h:31
+msgid "Dock size limit"
+msgstr "Rıhtım boyutu"
+
+#: Settings.ui.h:32
+msgid "Panel mode: extend to the screen edge"
+msgstr "Panel kipi: Ekran köşelerine genişlet"
+
+# son limit cümlesi kasten çevrilmedi
+#: Settings.ui.h:33
+msgid "Icon size limit"
+msgstr "Simge boyutu"
+
+#: Settings.ui.h:34
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Sabit simge boyutu: Diğer simgeleri görmek için kaydır"
+
+#: Settings.ui.h:35
+msgid "Position and size"
+msgstr "Konum ve boyut"
+
+#: Settings.ui.h:36
+msgid "Show favorite applications"
+msgstr "Sık kullanılan uygulamaları göster"
+
+#: Settings.ui.h:37
+msgid "Show running applications"
+msgstr "Çalışan uygulamaları göster"
+
+#: Settings.ui.h:38
+msgid "Isolate workspaces."
+msgstr "Çalışma alanlarını ayır."
+
+#: Settings.ui.h:39
+msgid "Isolate monitors."
+msgstr "Ekranları ayır."
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "Açık pencere önizlemelerini göster."
+
+# Anlamlı ve açıklayıcı olması için ilave değerler eklendi
+#: Settings.ui.h:41
+msgid "If disabled, these settings are accessible from gnome-tweak-tool or the extension website."
+msgstr ""
+"Eğer kapatılmışsa, bu ayarlara GNOME İnce Ayarlar (gnome-tweak-tool) uygulamasından veya GNOME eklentileri "
+"(https://extensions.gnome.org) sitesinden ulaşılabilir."
+
+#: Settings.ui.h:42
+msgid "Show <i>Applications</i> icon"
+msgstr "<i>Uygulamalar</i> simgesini göster"
+
+#: 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
+msgid "Animate <i>Show Applications</i>."
+msgstr "<i>Uygulamalar</i> açılırken canlandırma göster."
+
+#: Settings.ui.h:45
+msgid "Show trash can"
+msgstr "Çöp kutusunu göster"
+
+#: Settings.ui.h:46
+msgid "Show mounted volumes and devices"
+msgstr "Bağlı birimleri ve aygıtları göster"
+
+#: Settings.ui.h:47
+msgid "Launchers"
+msgstr "Başlatıcılar"
+
+#: Settings.ui.h:48
+msgid "Enable Super+(0-9) as shortcuts to activate apps. It can also be used together with Shift and Ctrl."
+msgstr ""
+"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."
+
+#: 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
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Çalışan bir uygulamanın simgesine tıklandığındaki davranışı."
+
+#: Settings.ui.h:51
+msgid "Click action"
+msgstr "Tıklama eylemi"
+
+#: Settings.ui.h:52
+msgid "Minimize"
+msgstr "Küçült"
+
+#: Settings.ui.h:53
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Bir uygulamanın simgesini kaydırdığınızdaki davranışı."
+
+#: Settings.ui.h:54
+msgid "Scroll action"
+msgstr "Kaydırma eylemi"
+
+#: Settings.ui.h:55
+msgid "Do nothing"
+msgstr "Hiçbir şey yapma"
+
+#: Settings.ui.h:56
+msgid "Switch workspace"
+msgstr "Çalışma alanını değiştir"
+
+#: Settings.ui.h:57
+msgid "Behavior"
+msgstr "Davranış"
+
+# Çeviri yapmak yerine, Türkçe'de anlamlı, konuma uyumlu özgün metin oluşturuldu.
+#: Settings.ui.h:58
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. Alternatively, specific "
+"options can be enabled below."
+msgstr ""
+"Sistemde bulunan etkin GNOME teması kullanılır ve rıhtım ona göre şekillenir. Özelleştirmek isterseniz bu "
+"menüyü kapatın."
+
+#: Settings.ui.h:59
+msgid "Use built-in theme"
+msgstr "Yerleşik temayı kullan"
+
+#: Settings.ui.h:60
+msgid "Save space reducing padding and border radius."
+msgstr "Dolgu ve kenarlığı azaltarak yer kazan."
+
+# Shrink için genelde küçült çevirisini kullanıyoruz ama,
+# anlamlı ve eylemle uyumlu olduğu için daralt çevirisi kullanıldı
+#: Settings.ui.h:61
+msgid "Shrink the dash"
+msgstr "Paneli daralt"
+
+#: Settings.ui.h:62
+msgid "Customize windows counter indicators"
+msgstr "Pencere sayı göstergelerini özelleştir"
+
+#: Settings.ui.h:63
+msgid "Default"
+msgstr "Varsayılan"
+
+#: Settings.ui.h:64
+msgid "Dots"
+msgstr "Noktalar"
+
+#: Settings.ui.h:65
+msgid "Squares"
+msgstr "Kareler"
+
+#: Settings.ui.h:66
+msgid "Dashes"
+msgstr "Tireler"
+
+#: Settings.ui.h:67
+msgid "Segmented"
+msgstr "Segmentler"
+
+#: Settings.ui.h:68
+msgid "Solid"
+msgstr "Kalın çizgi"
+
+#: Settings.ui.h:69
+msgid "Ciliora"
+msgstr "Nokta ve çizgi"
+
+#: Settings.ui.h:70
+msgid "Metro"
+msgstr "Metro"
+
+#: Settings.ui.h:71
+msgid "Set the background color for the dash."
+msgstr "Panel arkaplan rengini ayarla."
+
+#: Settings.ui.h:72
+msgid "Customize the dash color"
+msgstr "Panel rengini özelleştir"
+
+#: Settings.ui.h:73
+msgid "Tune the dash background opacity."
+msgstr "Panel arkaplan matlığını ayarla."
+
+#: Settings.ui.h:75
+msgid "Fixed"
+msgstr "Sabit"
+
+#: Settings.ui.h:76
+msgid "Dynamic"
+msgstr "Dinamik"
+
+#: Settings.ui.h:77
+msgid "Opacity"
+msgstr "Matlık"
+
+# Daha anlaşılır olması için serbest çeviri yapıldı
+#: Settings.ui.h:78
+msgid "Force straight corner\n"
+msgstr "Köşeleri düzleştir\n"
+
+#: Settings.ui.h:80
+msgid "Appearance"
+msgstr "Görünüm"
+
+#: Settings.ui.h:81
+msgid "version: "
+msgstr "sürüm: "
+
+#: Settings.ui.h:82
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Paneli genel görünümden taşır ve rıhtıma dönüştürür"
+
+# Çeviri anlamlı olması için : eklendi
+#: Settings.ui.h:83
+msgid "Created by"
+msgstr "Oluşturan:"
+
+#: Settings.ui.h:84
+msgid "Webpage"
+msgstr "Web sitesi"
+
+#: Settings.ui.h:85
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">Bu program kesinlikle hiçbir garanti vermiyor..\n"
+"Ayrıntılar için <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html\">GNU Genel Kamu Lisansı, "
+"sürüm 2 veya üstü</a> bağlantısına bakın</span>"
+
+#: Settings.ui.h:87
+msgid "About"
+msgstr "Hakkında"
+
+# minimum and maximum değerleri çevrilmedi
+#: Settings.ui.h:88
+msgid "Customize minimum and maximum opacity values"
+msgstr "Matlık değerlerini özelleştir"
+
+#: Settings.ui.h:89
+msgid "Minimum opacity"
+msgstr "Asgari matlık"
+
+#: Settings.ui.h:90
+msgid "Maximum opacity"
+msgstr "Azami matlık"
+
+#: Settings.ui.h:91
+msgid "Number overlay"
+msgstr "Sayı yerleşimi"
+
+#: Settings.ui.h:92
+msgid "Temporarily show the application numbers over the icons, corresponding to the shortcut."
+msgstr "Uygulama numaralarını, karşılık gelen simgelere göre geçici olarak göster kısayol."
+
+#: Settings.ui.h:93
+msgid "Show the dock if it is hidden"
+msgstr "Gizlenmişse rıhtım'ı göster"
+
+#: Settings.ui.h:94
+msgid "If using autohide, the dock will appear for a short time when triggering the shortcut."
+msgstr "Otomatik gizleme kullanıyorsanız, kısayol tetiklendiğinde rıhtım kısa bir süre için görünür."
+
+#: Settings.ui.h:95
+msgid "Shortcut for the options above"
+msgstr "Yukarıdaki seçenekler için kısayol"
+
+#: Settings.ui.h:96
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Sözdizimi: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:97
+msgid "Hide timeout (s)"
+msgstr "Gizleme zaman aşımı (s)"
+
+#: Settings.ui.h:98
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Fare ekran köşeleri üzerindeyken rıhtım'ı göster."
+
+#: Settings.ui.h:99
+msgid "Autohide"
+msgstr "Otomatik gizle"
+
+# Anlaşılması kolay olsun diye, pressure burada etki olarak çevrilmiştir
+#: Settings.ui.h:100
+msgid "Push to show: require pressure to show the dock"
+msgstr "Göstermek için it: Rıhtım'ın gösterilmesi için etki gerekir"
+
+#: Settings.ui.h:101
+msgid "Enable in fullscreen mode"
+msgstr "Tam ekran kipinde etkinleştir"
+
+#: Settings.ui.h:102
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Uygulama penceresine engel olmadığında rıhtımı göster."
+
+#: Settings.ui.h:103
+msgid "Dodge windows"
+msgstr "Pencelereleri atlat"
+
+#: Settings.ui.h:104
+msgid "All windows"
+msgstr "Tüm pencereler"
+
+#: Settings.ui.h:105
+msgid "Only focused application's windows"
+msgstr "Sadece odaklanılan uygulamanın pencereleri"
+
+#: Settings.ui.h:106
+msgid "Only maximized windows"
+msgstr "Sadece büyütülen pencereler"
+
+#: Settings.ui.h:107
+msgid "Animation duration (s)"
+msgstr "Canlandırma süresi (s)"
+
+#: Settings.ui.h:108
+msgid "Show timeout (s)"
+msgstr "Gösterim zaman aşımı (s)"
+
+# Anlaşılması kolay olsun diye, pressure burada etki olarak çevrilmiştir
+#: Settings.ui.h:109
+msgid "Pressure threshold"
+msgstr "Etki eşiği"
+
+#~ msgid "Adaptive"
+#~ msgstr "Uyarlanır"
diff --git a/extensions/dash-to-dock/po/uk_UA.po b/extensions/dash-to-dock/po/uk_UA.po
new file mode 100644
index 00000000..3252304c
--- /dev/null
+++ b/extensions/dash-to-dock/po/uk_UA.po
@@ -0,0 +1,575 @@
+# Ukrainian translation for dash-to-dock GNOME Shell extension
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: dash-to-dock\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-08-28 10:52+0300\n"
+"PO-Revision-Date: 2018-01-03 17:00+0200\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Poedit 2.0.5\n"
+"Last-Translator: \n"
+"Language: uk_UA\n"
+
+#: prefs.js:113
+msgid "Primary monitor"
+msgstr "Головний монітор"
+
+#: prefs.js:122 prefs.js:129
+msgid "Secondary monitor "
+msgstr "Додатковий монітор "
+
+#: prefs.js:154 Settings.ui.h:31
+msgid "Right"
+msgstr "Праворуч"
+
+#: prefs.js:155 Settings.ui.h:28
+msgid "Left"
+msgstr "Ліворуч"
+
+#: prefs.js:205
+msgid "Intelligent autohide customization"
+msgstr "Налаштувати розумне приховування"
+
+#: prefs.js:212 prefs.js:397 prefs.js:454
+msgid "Reset to defaults"
+msgstr "Скинути налаштування"
+
+#: prefs.js:390
+msgid "Show dock and application numbers"
+msgstr "Показувати кількість активних додатків"
+
+#: prefs.js:447
+msgid "Customize middle-click behavior"
+msgstr "Налаштування дій середньої кнопки миші"
+
+#: prefs.js:518
+msgid "Customize running indicators"
+msgstr "Налаштування індикатора пускача"
+
+#: appIcons.js:1131
+msgid "All Windows"
+msgstr "Усі вікна"
+
+#. Translators: %s is "Settings", which is automatically translated. You
+#. can also translate the full message if this fits better your language.
+#: appIcons.js:1429
+#, javascript-format
+msgid "Dash to Dock %s"
+msgstr ""
+
+#: Settings.ui.h:1
+msgid "Customize indicator style"
+msgstr "Налаштувати вигляд індикатора"
+
+#: Settings.ui.h:2
+msgid "Color"
+msgstr "Колір"
+
+#: Settings.ui.h:3
+msgid "Border color"
+msgstr "Колір контуру"
+
+#: Settings.ui.h:4
+msgid "Border width"
+msgstr "Товщина контуру"
+
+#: Settings.ui.h:5
+msgid "Number overlay"
+msgstr "Відображення номеру"
+
+#: Settings.ui.h:6
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr "Тимчасово показувати номери програм за сполученням клавіш."
+
+#: Settings.ui.h:7
+msgid "Show the dock if it is hidden"
+msgstr "Показувати Док, якщо він прихований"
+
+#: Settings.ui.h:8
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Док з'явиться за сполученням клавіш, якщо використовується автоматичне "
+"приховування."
+
+#: Settings.ui.h:9
+msgid "Shortcut for the options above"
+msgstr "Сполучення клавіш для вказаних параметрів"
+
+#: Settings.ui.h:10
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Синтаксис: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:11
+msgid "Hide timeout (s)"
+msgstr "Затримка приховування (сек.)"
+
+#: Settings.ui.h:12
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Якщо встановлено на \"Мінімізувати\", подвійний клік мінімізує усі вікна "
+"програми."
+
+#: Settings.ui.h:13
+msgid "Shift+Click action"
+msgstr "Дія за Shift+Click"
+
+#: Settings.ui.h:14
+msgid "Raise window"
+msgstr "Показати вікно"
+
+#: Settings.ui.h:15
+msgid "Minimize window"
+msgstr "Мінімізувати вікно"
+
+#: Settings.ui.h:16
+msgid "Launch new instance"
+msgstr "Відкрити нове вікно"
+
+#: Settings.ui.h:17
+msgid "Cycle through windows"
+msgstr "Переключити вікно програми"
+
+#: Settings.ui.h:18
+msgid "Minimize or overview"
+msgstr "Мінімізувати або відобразити"
+
+#: Settings.ui.h:19
+msgid "Show window previews"
+msgstr "Показувати мініатюри вікон"
+
+#: Settings.ui.h:20
+msgid "Quit"
+msgstr "Вийти"
+
+#: Settings.ui.h:21
+msgid "Behavior for Middle-Click."
+msgstr "Дія при натисканні середньої кнопки миші."
+
+#: Settings.ui.h:22
+msgid "Middle-Click action"
+msgstr "Дія за Middle-Click"
+
+#: Settings.ui.h:23
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Поведінка за Shift+Middle-Click."
+
+#: Settings.ui.h:24
+msgid "Shift+Middle-Click action"
+msgstr "Дія за Shift+Middle-Click"
+
+#: Settings.ui.h:25
+msgid "Show the dock on"
+msgstr "Показувати Док на"
+
+#: Settings.ui.h:26
+msgid "Show on all monitors."
+msgstr "Показувати Док на усіх моніторах."
+
+#: Settings.ui.h:27
+msgid "Position on screen"
+msgstr "Позиція на екрані"
+
+#: Settings.ui.h:29
+msgid "Bottom"
+msgstr "Знизу"
+
+#: Settings.ui.h:30
+msgid "Top"
+msgstr "Зверху"
+
+#: Settings.ui.h:32
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"Приховувати Док якщо він перекривається вікном активної програми. Доступні "
+"додаткові налаштування."
+
+#: Settings.ui.h:33
+msgid "Intelligent autohide"
+msgstr "Делікатне приховування"
+
+#: Settings.ui.h:34
+msgid "Dock size limit"
+msgstr "Обмеження розміру Дока"
+
+#: Settings.ui.h:35
+msgid "Panel mode: extend to the screen edge"
+msgstr "Режим панелі: Док заповнює активну сторону екрану"
+
+#: Settings.ui.h:36
+msgid "Icon size limit"
+msgstr "Обмеження розміру піктограм"
+
+#: Settings.ui.h:37
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr ""
+"Фіксований розмір піктограм: використайте коліщатко миші, щоб виявити інші "
+"піктограми"
+
+#: Settings.ui.h:38
+msgid "Position and size"
+msgstr "Позиція та розмір"
+
+#: Settings.ui.h:39
+msgid "Show favorite applications"
+msgstr "Показувати закріплені програми"
+
+#: Settings.ui.h:40
+msgid "Show running applications"
+msgstr "Показувати запущені програми"
+
+#: Settings.ui.h:41
+msgid "Isolate workspaces."
+msgstr "Обмежити робочим простором."
+
+#: Settings.ui.h:42
+msgid "Isolate monitors."
+msgstr "Обмежити монітором."
+
+#: Settings.ui.h:43
+msgid "Show open windows previews."
+msgstr "Показувати мініатюри відкритих вікон."
+
+#: Settings.ui.h:44
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Якщо відключено, ці налаштування доступні з \"gnome-tweak-tool\" або з сайту "
+"додатків."
+
+#: Settings.ui.h:45
+msgid "Show <i>Applications</i> icon"
+msgstr "Показувати піктограму <i>Програми</i>"
+
+#: Settings.ui.h:46
+msgid "Move the applications button at the beginning of the dock."
+msgstr "Кнопка \"Програми\" з іншої сторони Дока."
+
+#: Settings.ui.h:47
+msgid "Animate <i>Show Applications</i>."
+msgstr "Анімувати показ програм."
+
+#: Settings.ui.h:48
+msgid "Launchers"
+msgstr "Пускачі"
+
+#: Settings.ui.h:49
+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:50
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "Використовувати сполучення клавіш для вибору програми"
+
+#: Settings.ui.h:51
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Поведінка при натисканні на піктограму активної програми."
+
+#: Settings.ui.h:52
+msgid "Click action"
+msgstr "Дія при натисканні"
+
+#: Settings.ui.h:53
+msgid "Minimize"
+msgstr "Мінімізувати"
+
+#: Settings.ui.h:54
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Поведінка при прокручуванні на піктограмі програми."
+
+#: Settings.ui.h:55
+msgid "Scroll action"
+msgstr "Дія при прокручуванні"
+
+#: Settings.ui.h:56
+msgid "Do nothing"
+msgstr "Нічого"
+
+#: Settings.ui.h:57
+msgid "Switch workspace"
+msgstr "Переключити робочій простір"
+
+#: Settings.ui.h:58
+msgid "Behavior"
+msgstr "Поведінка"
+
+#: Settings.ui.h:59
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Збалансовані налаштування для інтеграції Дока з оформленням Gnome по "
+"замовчуванню. Нижче можна встановити власні параметри."
+
+#: Settings.ui.h:60
+msgid "Use built-in theme"
+msgstr "Використовувати стандартне оформлення"
+
+#: Settings.ui.h:61
+msgid "Save space reducing padding and border radius."
+msgstr ""
+"Економія робочого простору за рахунок зменшення проміжків та застосування "
+"заокруглених кутів."
+
+#: Settings.ui.h:62
+msgid "Shrink the dash"
+msgstr "Стиснути Док"
+
+#: Settings.ui.h:63
+msgid "Show a dot for each windows of the application."
+msgstr "Показує точку для кожного вікна програми."
+
+#: Settings.ui.h:64
+msgid "Show windows counter indicators"
+msgstr "Показує індикатори кількості вікон"
+
+#: Settings.ui.h:65
+msgid "Set the background color for the dash."
+msgstr "Встановити колір фону."
+
+#: Settings.ui.h:66
+msgid "Customize the dash color"
+msgstr "Змінити колір фону"
+
+#: Settings.ui.h:67
+msgid "Tune the dash background opacity."
+msgstr "Застосувати прозорість фону."
+
+#: Settings.ui.h:68
+msgid "Customize opacity"
+msgstr "Налаштувати прозорість"
+
+#: Settings.ui.h:69
+msgid "Opacity"
+msgstr "Непрозорість"
+
+#: Settings.ui.h:70
+msgid "Enable Unity7 like glossy backlit items"
+msgstr "Застосувати підсвічування елементів як в Unity7"
+
+#: Settings.ui.h:71
+msgid "Force straight corner\n"
+msgstr "Прямі кути\n"
+
+#: Settings.ui.h:73
+msgid "Appearance"
+msgstr "Зовнішній вигляд"
+
+#: Settings.ui.h:74
+msgid "version: "
+msgstr "версія: "
+
+#: Settings.ui.h:75
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Відображає панель з режиму \"Огляд\" у вигляді Дока"
+
+#: Settings.ui.h:76
+msgid "Created by"
+msgstr "Автор"
+
+#: Settings.ui.h:77
+msgid "Webpage"
+msgstr "Домашня сторінка"
+
+#: Settings.ui.h:78
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">Цей додаток розповсюджується БЕЗ БУДЬ ЯКИХ ГАРАНТИЙ.\n"
+"Дивись <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">GNU General Public License, версія 2 або пізніше</a> для детальної "
+"інформації.</span>"
+
+#: Settings.ui.h:80
+msgid "About"
+msgstr "Про додаток"
+
+#: Settings.ui.h:81
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Показувати Док якщо курсор наблизиться до краю екрану."
+
+#: Settings.ui.h:82
+msgid "Autohide"
+msgstr "Автоматично приховувати"
+
+#: Settings.ui.h:83
+msgid "Push to show: require pressure to show the dock"
+msgstr "Тиск для показу: потрібне сильніше притискання для відкриття Дока"
+
+#: Settings.ui.h:84
+msgid "Enable in fullscreen mode"
+msgstr "Застосувати для повноекранного режиму"
+
+#: Settings.ui.h:85
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Показати Док, якщо він не заважає вікну програми у фокусі."
+
+#: Settings.ui.h:86
+msgid "Dodge windows"
+msgstr "Перекривання вікнами"
+
+#: Settings.ui.h:87
+msgid "All windows"
+msgstr "Усі вікна"
+
+#: Settings.ui.h:88
+msgid "Only focused application's windows"
+msgstr "Тільки вікна програми у фокусі"
+
+#: Settings.ui.h:89
+msgid "Only maximized windows"
+msgstr "Тільки розгорнуті вікна"
+
+#: Settings.ui.h:90
+msgid "Animation duration (s)"
+msgstr "Час анімації (сек.)"
+
+#: Settings.ui.h:91
+msgid "Show timeout (s)"
+msgstr "Затримка показу (сек.)"
+
+#: Settings.ui.h:92
+msgid "Pressure threshold"
+msgstr "Поріг притискання"
+
+msgid ""
+"With fixed icon size, only the edge of the dock and the <i>Show "
+"Applications</i> icon are active."
+msgstr ""
+"При фіксованому розмірі піктограм програм активна тільки область піктограми "
+"<i>«Програми»</i> та край Дока."
+
+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 "1"
+msgstr "1"
+
+msgid "2"
+msgstr "2"
+
+msgid "3"
+msgstr "3"
+
+msgid "4"
+msgstr "4"
+
+msgid "Max height"
+msgstr "Максимальна висота"
+
+msgid "Expand (experimental and buggy)"
+msgstr "Розширюється (експериментальна, можливі помилки)"
+
+msgid "Maximum icon size"
+msgstr "Максимальній розмір піктограми"
+
+msgid "16"
+msgstr "16"
+
+msgid "24"
+msgstr "24"
+
+msgid "32"
+msgstr "32"
+
+msgid "48"
+msgstr "48"
+
+msgid "64"
+msgstr "64"
+
+msgid "Optional features"
+msgstr "Додаткові функції"
+
+msgid "Deadtime between each workspace switching [ms]"
+msgstr "Затримка між кожним перемиканням [мс]"
+
+msgid "Only a 1px wide area close to the screen edge is active"
+msgstr "Активна лише область розміром з 1 піксель, близька до краю екрана"
+
+msgid "All the area of the dock is active"
+msgstr "Вся площа Доку активна"
+
+msgid "Customize actions on mouse click"
+msgstr "Налаштувати дії на клік мишею"
+
+msgid "Action on clicking on running app"
+msgstr "Дія при натисканні на запущену програму"
+
+msgid "Minimize window on shift+click (double click for all app windows)"
+msgstr ""
+"Мінімізувати вікно за shift+click (подвійне натискання приховує усі вікна "
+"програм)"
+
+msgid "Make message tray insensitive to mouse events"
+msgstr "Зробити область повідомлень нечутливою до миші"
+
+msgid "Appearence and Themes"
+msgstr "Зовнішній вигляд та Теми"
+
+msgid ""
+"A customized theme is built in the extension. This is meant to work with the "
+"default Adwaita theme: the dash is shrunk to save space, its background "
+"transparency reduced, and custom indicators for the number of windows of "
+"each application are added."
+msgstr ""
+"Тема влаштована в додаток. Вона оптимізована для теми Adwaita: Док зменшено, "
+"щоб зберегти простір; прозорість фону знижено; активні індикатори кількості "
+"вікон для кожної програми."
+
+msgid ""
+"Alternatively, for a better integration with custom themes, each "
+"customization can be applied indipendently"
+msgstr ""
+"Для кращої інтеграцією з користувацькою темою, кожен параметр можна "
+"налаштувати незалежно"
+
+msgid "Shrink the dash size by reducing padding"
+msgstr "Зменшити Док за рахунок проміжків"
diff --git a/extensions/dash-to-dock/po/zh_CN.po b/extensions/dash-to-dock/po/zh_CN.po
new file mode 100644
index 00000000..cae290f7
--- /dev/null
+++ b/extensions/dash-to-dock/po/zh_CN.po
@@ -0,0 +1,626 @@
+# Simplified Chinese translation of dash-to-dock
+# Copyright (C) 2013 tuhaihe
+# This file is distributed under the same license as the dash-to-dock package.
+# tuhaihe <1132321739qq@gmail.com>, 2013.
+# 绿色圣光 <lishaohui.qd@163.com>, 2015, 2016, 2017.
+# zhmars <1403122061@qq.com>, 2019, 2020.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Dash to Dock\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-03-23 15:33+0800\n"
+"PO-Revision-Date: 2017-08-03 22:49+0800\n"
+"Last-Translator: zhmars <1403122061@qq.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: Gtranslator 2.91.7\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: prefs.js:268
+msgid "Primary monitor"
+msgstr "主显示器"
+
+#: prefs.js:277 prefs.js:284
+msgid "Secondary monitor "
+msgstr "副显示器"
+
+#: prefs.js:309 Settings.ui.h:28
+msgid "Right"
+msgstr "右侧"
+
+#: prefs.js:310 Settings.ui.h:25
+msgid "Left"
+msgstr "左侧"
+
+#: prefs.js:360
+msgid "Intelligent autohide customization"
+msgstr "智能自动隐藏自定义"
+
+#: prefs.js:367 prefs.js:560 prefs.js:616
+msgid "Reset to defaults"
+msgstr "重置为默认值"
+
+#: prefs.js:553
+msgid "Show dock and application numbers"
+msgstr "显示 Dock 和应用程序编号"
+
+#: prefs.js:609
+msgid "Customize middle-click behavior"
+msgstr "自定义中键点击行为"
+
+#: prefs.js:692
+msgid "Customize running indicators"
+msgstr "自定义“运行中”指示器"
+
+#: prefs.js:804 Settings.ui.h:74
+msgid "Customize opacity"
+msgstr "自定义不透明度"
+
+#: appIcons.js:810
+msgid "All Windows"
+msgstr "所有窗口"
+
+#. Translators: %s is "Settings", which is automatically translated. You
+#. can also translate the full message if this fits better your language.
+#: appIcons.js:1125
+#, javascript-format
+msgid "Dash to Dock %s"
+msgstr "Dash to Dock %s"
+
+#: locations.js:65
+msgid "Trash"
+msgstr "回收站"
+
+#: locations.js:74
+msgid "Empty Trash"
+msgstr "清空回收站"
+
+#: locations.js:189
+msgid "Mount"
+msgstr "挂载"
+
+#: locations.js:232
+msgid "Eject"
+msgstr "弹出"
+
+#: locations.js:237
+msgid "Unmount"
+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 "Minimize or overview"
+msgstr "最小化或概览"
+
+#: Settings.ui.h:8
+msgid "Show window previews"
+msgstr "显示打开窗口预览"
+
+#: Settings.ui.h:9
+msgid "Minimize or show previews"
+msgstr "最小化或显示预览"
+
+#: Settings.ui.h:10
+msgid "Focus or show previews"
+msgstr "聚焦或显示预览"
+
+#: Settings.ui.h:11
+msgid "Quit"
+msgstr "退出"
+
+#: Settings.ui.h:12
+msgid "Behavior for Middle-Click."
+msgstr "中键点击的行为。"
+
+#: Settings.ui.h:13
+msgid "Middle-Click action"
+msgstr "中键点击动作"
+
+#: Settings.ui.h:14
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Shift+中键点击的行为。"
+
+#: Settings.ui.h:15
+msgid "Shift+Middle-Click action"
+msgstr "Shift+中键点击动作"
+
+#: Settings.ui.h:16
+msgid "Enable Unity7 like glossy backlit items"
+msgstr "启用类似 Unity 7 的高亮阴影"
+
+#: Settings.ui.h:17
+msgid "Use dominant color"
+msgstr "使用主色调"
+
+#: Settings.ui.h:18
+msgid "Customize indicator style"
+msgstr "自定义指示器样式"
+
+#: Settings.ui.h:19
+msgid "Color"
+msgstr "颜色"
+
+#: Settings.ui.h:20
+msgid "Border color"
+msgstr "边框颜色"
+
+#: Settings.ui.h:21
+msgid "Border width"
+msgstr "边框宽度"
+
+#: Settings.ui.h:22
+msgid "Show the dock on"
+msgstr "显示 Dock 于"
+
+#: Settings.ui.h:23
+msgid "Show on all monitors."
+msgstr "所有显示器上都显示"
+
+#: Settings.ui.h:24
+msgid "Position on screen"
+msgstr "屏幕中的位置"
+
+#: Settings.ui.h:26
+msgid "Bottom"
+msgstr "底部"
+
+#: Settings.ui.h:27
+msgid "Top"
+msgstr "顶部"
+
+#: Settings.ui.h:29
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"当 Dock 会挡住当前应用程序的某个窗口时,将其隐藏。点击右侧设置按钮可以设置更"
+"多细节。"
+
+#: Settings.ui.h:30
+msgid "Intelligent autohide"
+msgstr "智能隐藏"
+
+#: Settings.ui.h:31
+msgid "Dock size limit"
+msgstr "Dock 大小限制"
+
+#: Settings.ui.h:32
+msgid "Panel mode: extend to the screen edge"
+msgstr "面板模式:延伸到屏幕边缘"
+
+#: Settings.ui.h:33
+msgid "Icon size limit"
+msgstr "图标大小限制"
+
+#: Settings.ui.h:34
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "固定图标大小:滚动显示其它图标"
+
+#: Settings.ui.h:35
+msgid "Position and size"
+msgstr "位置和大小"
+
+#: Settings.ui.h:36
+msgid "Show favorite applications"
+msgstr "显示收藏的应用程序"
+
+#: Settings.ui.h:37
+msgid "Show running applications"
+msgstr "显示正在运行的应用程序"
+
+#: Settings.ui.h:38
+msgid "Isolate workspaces."
+msgstr "隔离工作区"
+
+#: Settings.ui.h:39
+msgid "Isolate monitors."
+msgstr "隔离显示器"
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "显示打开窗口预览"
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr "禁用之后,可以通过 gnome-tweak-tool 或者扩展网站来访问这些设置。"
+
+#: Settings.ui.h:42
+msgid "Show <i>Applications</i> icon"
+msgstr "显示 <i>应用程序</i> 图标"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr "将应用程序图标移至 Dock 的起始位置"
+
+#: Settings.ui.h:44
+msgid "Animate <i>Show Applications</i>."
+msgstr "动画方式 <i>显示应用程序</i>"
+
+#: Settings.ui.h:45
+msgid "Show trash can"
+msgstr "显示回收站"
+
+#: Settings.ui.h:46
+msgid "Show mounted volumes and devices"
+msgstr "显示挂载卷和设备"
+
+#: Settings.ui.h:47
+msgid "Launchers"
+msgstr "启动器"
+
+#: Settings.ui.h:48
+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:49
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "使用键盘快捷键激活应用"
+
+#: Settings.ui.h:50
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "点击一个正在运行的应用程序图标时的行为。"
+
+#: Settings.ui.h:51
+msgid "Click action"
+msgstr "点击动作"
+
+#: Settings.ui.h:52
+msgid "Minimize"
+msgstr "最小化"
+
+#: Settings.ui.h:53
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "在一个应用程序图标上滚动时的行为。"
+
+#: Settings.ui.h:54
+msgid "Scroll action"
+msgstr "滚动动作"
+
+#: Settings.ui.h:55
+msgid "Do nothing"
+msgstr "无动作"
+
+#: Settings.ui.h:56
+msgid "Switch workspace"
+msgstr "切换工作区"
+
+#: Settings.ui.h:57
+msgid "Behavior"
+msgstr "行为"
+
+#: Settings.ui.h:58
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"几个自定义项可以将 Dock 整合到默认 GNOME 主题中。或者,也可以启动下面的几个特"
+"殊选项。"
+
+#: Settings.ui.h:59
+msgid "Use built-in theme"
+msgstr "使用内置主题"
+
+#: Settings.ui.h:60
+msgid "Save space reducing padding and border radius."
+msgstr "减小填充和边框半径以节省空间。"
+
+#: Settings.ui.h:61
+msgid "Shrink the dash"
+msgstr "收缩 Dash"
+
+#: Settings.ui.h:62
+msgid "Customize windows counter indicators"
+msgstr "显示窗口个数指示器"
+
+#: Settings.ui.h:63
+msgid "Default"
+msgstr "默认"
+
+#: Settings.ui.h:64
+msgid "Dots"
+msgstr "圆点"
+
+#: Settings.ui.h:65
+msgid "Squares"
+msgstr "正方形"
+
+#: Settings.ui.h:66
+msgid "Dashes"
+msgstr "破折号"
+
+#: Settings.ui.h:67
+msgid "Segmented"
+msgstr "分段"
+
+#: Settings.ui.h:68
+msgid "Solid"
+msgstr ""
+
+#: Settings.ui.h:69
+msgid "Ciliora"
+msgstr ""
+
+#: Settings.ui.h:70
+msgid "Metro"
+msgstr ""
+
+#: Settings.ui.h:71
+msgid "Set the background color for the dash."
+msgstr "设置 Dash 的背景颜色。"
+
+#: Settings.ui.h:72
+msgid "Customize the dash color"
+msgstr "自定义 Dash 颜色"
+
+#: Settings.ui.h:73
+msgid "Tune the dash background opacity."
+msgstr "调整 Dash 的背景不透明度。"
+
+#: Settings.ui.h:75
+msgid "Fixed"
+msgstr "固定"
+
+#: Settings.ui.h:76
+msgid "Dynamic"
+msgstr "动态"
+
+#: Settings.ui.h:77
+msgid "Opacity"
+msgstr "不透明度"
+
+#: Settings.ui.h:78
+msgid "Force straight corner"
+msgstr "强制边框直角"
+
+#: Settings.ui.h:79
+msgid "Appearance"
+msgstr "外观"
+
+#: Settings.ui.h:80
+msgid "version: "
+msgstr "版本:"
+
+#: Settings.ui.h:81
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "让 Dash 跳出概览之外,转化为一个 Dock"
+
+#: Settings.ui.h:82
+msgid "Created by"
+msgstr "作者:"
+
+#: Settings.ui.h:83
+msgid "Webpage"
+msgstr "网站主页"
+
+#: Settings.ui.h:84
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">本程序不提供任何担保。\n"
+"参见 <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html\">GNU "
+"通用公共许可证,第二版或更高版本</a>以了解更多细节。</span>"
+
+#: Settings.ui.h:86
+msgid "About"
+msgstr "关于"
+
+#: Settings.ui.h:87
+msgid "Customize minimum and maximum opacity values"
+msgstr "自定义窗口最小化和最大化时 Dock 的不透明度"
+
+#: Settings.ui.h:88
+msgid "Minimum opacity"
+msgstr "最小化不透明度"
+
+#: Settings.ui.h:89
+msgid "Maximum opacity"
+msgstr "最大化不透明度"
+
+#: Settings.ui.h:90
+msgid "Number overlay"
+msgstr "编号覆盖"
+
+#: Settings.ui.h:91
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr "临时显示与快捷键对应的图标上的应用程序编号。"
+
+#: Settings.ui.h:92
+msgid "Show the dock if it is hidden"
+msgstr "若 Dock 已隐藏,将其显示"
+
+#: Settings.ui.h:93
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr "如果使用了自动隐藏Dock 将在触发快捷键时短暂显示。"
+
+#: Settings.ui.h:94
+msgid "Shortcut for the options above"
+msgstr "以上选项的快捷键"
+
+#: Settings.ui.h:95
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "语法:<Shift><Ctrl><Alt><Super>"
+
+#: Settings.ui.h:96
+msgid "Hide timeout (s)"
+msgstr "隐藏超时时间(秒)"
+
+#: Settings.ui.h:97
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "鼠标移至屏幕边缘时显示 Dock。"
+
+#: Settings.ui.h:98
+msgid "Autohide"
+msgstr "自动隐藏"
+
+#: Settings.ui.h:99
+msgid "Push to show: require pressure to show the dock"
+msgstr "推压以显示:需要一定压力来显示 Dock"
+
+#: Settings.ui.h:100
+msgid "Enable in fullscreen mode"
+msgstr "在全屏模式下启用"
+
+#: Settings.ui.h:101
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "在不妨碍应用程序窗口时,显示 Dock。"
+
+#: Settings.ui.h:102
+msgid "Dodge windows"
+msgstr "避开窗口"
+
+#: Settings.ui.h:103
+msgid "All windows"
+msgstr "所有窗口"
+
+#: Settings.ui.h:104
+msgid "Only focused application's windows"
+msgstr "仅焦点程序窗口"
+
+#: Settings.ui.h:105
+msgid "Only maximized windows"
+msgstr "仅最大化窗口"
+
+#: Settings.ui.h:106
+msgid "Animation duration (s)"
+msgstr "动画持续时间(秒)"
+
+#: Settings.ui.h:107
+msgid "Show timeout (s)"
+msgstr "显示超时时间(秒)"
+
+#: Settings.ui.h:108
+msgid "Pressure threshold"
+msgstr "压力阈值"
+
+#~ msgid "Show a dot for each windows of the application."
+#~ msgstr "为应用程序的每个窗口显示一个点。"
+
+#~ msgid "0.000"
+#~ msgstr "0.000"
+
+#~ msgid ""
+#~ "With fixed icon size, only the edge of the dock and the <i>Show "
+#~ "Applications</i> icon are active."
+#~ msgstr ""
+#~ "如果固定了图标大小,只有 dock 边缘和“<i>显示应用程序</i>”图标会激活该功"
+#~ "能。"
+
+#~ msgid "Switch workspace by scrolling on the dock"
+#~ msgstr "通过滚动 dock 来切换工作区"
+
+#~ msgid "Main Settings"
+#~ msgstr "主设置"
+
+#~ msgid "Dock is fixed and always visible"
+#~ msgstr "Dock 固定且总是可见"
+
+#~ 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 "Dock 将在如下显示器显示(如果已连接)"
+
+#~ msgid "Primary (default)"
+#~ msgstr "主显示器(默认)"
+
+#~ msgid "1"
+#~ msgstr "1"
+
+#~ msgid "2"
+#~ msgstr "2"
+
+#~ msgid "3"
+#~ msgstr "3"
+
+#~ msgid "4"
+#~ msgstr "4"
+
+#~ msgid "Max height"
+#~ msgstr "最大高度"
+
+#~ msgid "Expand (experimental and buggy)"
+#~ msgstr "全部展开(实验阶段且存在问题)"
+
+#~ msgid "Maximum icon size"
+#~ msgstr "最大图标尺寸"
+
+#~ msgid "16"
+#~ msgstr "16"
+
+#~ msgid "24"
+#~ msgstr "24"
+
+#~ msgid "32"
+#~ msgstr "32"
+
+#~ msgid "48"
+#~ msgstr "48"
+
+#~ msgid "64"
+#~ msgstr "64"
+
+#~ msgid "Optional features"
+#~ msgstr "可选功能"
+
+#~ msgid "Only a 1px wide area close to the screen edge is active"
+#~ msgstr "仅当靠近屏幕边缘1像素宽区域时启用"
+
+#~ msgid "All the area of the dock is active"
+#~ msgstr "Dock 全部区域时启用"
+
+#~ msgid "Customize actions on mouse click"
+#~ msgstr "自定义鼠标点击动作"
+
+#~ msgid "Action on clicking on running app"
+#~ msgstr "点击正在运行程序的动作"
+
+#~ msgid "Minimize window on shift+click (double click for all app windows)"
+#~ msgstr "当按下“Shift+单击”(双击适用于全部程序窗口)时最小化窗口"
+
+#~ msgid "Only when in autohide"
+#~ msgstr "仅当自动隐藏时"
diff --git a/extensions/dash-to-dock/po/zh_TW.po b/extensions/dash-to-dock/po/zh_TW.po
new file mode 100644
index 00000000..84cb252a
--- /dev/null
+++ b/extensions/dash-to-dock/po/zh_TW.po
@@ -0,0 +1,542 @@
+# Traditional Chinese translation of dash-to-dock
+# Copyright (C) 2013 micheleg
+# This file is distributed under the same license as the dash-to-dock package.
+# Cheng-Chia Tseng <pswo10680@gmail.com>, 2017
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Dash to Dock\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-05-23 23:49+0800\n"
+"PO-Revision-Date: 2020-05-24 00:08+0800\n"
+"Last-Translator: Yi-Jyun Pan <pan93412@gmail.com>\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.3.1\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: prefs.js:268
+msgid "Primary monitor"
+msgstr "主螢幕"
+
+#: prefs.js:277 prefs.js:284
+msgid "Secondary monitor "
+msgstr "次螢幕 "
+
+#: prefs.js:309 Settings.ui.h:28
+msgid "Right"
+msgstr "右側"
+
+#: prefs.js:310 Settings.ui.h:25
+msgid "Left"
+msgstr "左側"
+
+#: prefs.js:360
+msgid "Intelligent autohide customization"
+msgstr "自訂智慧型自動隱藏"
+
+#: prefs.js:367 prefs.js:560 prefs.js:616
+msgid "Reset to defaults"
+msgstr "重設回預設值"
+
+#: prefs.js:553
+msgid "Show dock and application numbers"
+msgstr "顯示 Dock 和應用程式數量"
+
+#: prefs.js:609
+msgid "Customize middle-click behavior"
+msgstr "自訂滑鼠中鍵行為"
+
+#: prefs.js:692
+msgid "Customize running indicators"
+msgstr "自訂執行中指示器"
+
+#: prefs.js:804 Settings.ui.h:74
+msgid "Customize opacity"
+msgstr "自訂不透明度"
+
+#: appIcons.js:797
+msgid "All Windows"
+msgstr "所有視窗"
+
+#: appIcons.js:916
+#, javascript-format
+msgid "Quit %d Windows"
+msgstr "結束 %d 個視窗"
+
+#. Translators: %s is "Settings", which is automatically translated. You
+#. can also translate the full message if this fits better your language.
+#: appIcons.js:1134
+#, javascript-format
+msgid "Dash to Dock %s"
+msgstr "Dash to Dock %s"
+
+#: locations.js:65
+msgid "Trash"
+msgstr "垃圾桶"
+
+#: locations.js:74
+msgid "Empty Trash"
+msgstr "清空垃圾桶"
+
+#: locations.js:192
+msgid "Mount"
+msgstr "掛載"
+
+#: locations.js:235
+msgid "Eject"
+msgstr "退出"
+
+#: locations.js:240
+msgid "Unmount"
+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 "Minimize or overview"
+msgstr "最小化或概覽"
+
+#: Settings.ui.h:8
+msgid "Show window previews"
+msgstr "顯示視窗預覽"
+
+#: Settings.ui.h:9
+msgid "Minimize or show previews"
+msgstr "最小化或顯示預覽"
+
+#: Settings.ui.h:10
+msgid "Focus or show previews"
+msgstr "聚焦或顯示預覽"
+
+#: Settings.ui.h:11
+msgid "Quit"
+msgstr "結束"
+
+#: Settings.ui.h:12
+msgid "Behavior for Middle-Click."
+msgstr "滑鼠中鍵的行為。"
+
+#: Settings.ui.h:13
+msgid "Middle-Click action"
+msgstr "滑鼠中鍵動作"
+
+#: Settings.ui.h:14
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Shift+滑鼠中鍵的行為。"
+
+#: Settings.ui.h:15
+msgid "Shift+Middle-Click action"
+msgstr "Shift+滑鼠中鍵動作"
+
+#: Settings.ui.h:16
+msgid "Enable Unity7 like glossy backlit items"
+msgstr "啟用 Unity7 類平滑背光項目"
+
+#: Settings.ui.h:17
+msgid "Use dominant color"
+msgstr "使用主色調"
+
+#: Settings.ui.h:18
+msgid "Customize indicator style"
+msgstr "自訂指示器樣式"
+
+#: Settings.ui.h:19
+msgid "Color"
+msgstr "色彩"
+
+#: Settings.ui.h:20
+msgid "Border color"
+msgstr "邊框色彩"
+
+#: Settings.ui.h:21
+msgid "Border width"
+msgstr "邊框寬度"
+
+#: Settings.ui.h:22
+msgid "Show the dock on"
+msgstr "Dock 顯示於"
+
+#: Settings.ui.h:23
+msgid "Show on all monitors."
+msgstr "在所有顯示器顯示。"
+
+#: Settings.ui.h:24
+msgid "Position on screen"
+msgstr "螢幕上的位置"
+
+#: Settings.ui.h:26
+msgid "Bottom"
+msgstr "下面"
+
+#: Settings.ui.h:27
+msgid "Top"
+msgstr "上面"
+
+#: Settings.ui.h:29
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr "當 Dock 遮到目前應用程式的視窗時隱藏。可調整更多細部設定。"
+
+#: Settings.ui.h:30
+msgid "Intelligent autohide"
+msgstr "智慧型自動隱藏"
+
+#: Settings.ui.h:31
+msgid "Dock size limit"
+msgstr "Dock 大小限制"
+
+#: Settings.ui.h:32
+msgid "Panel mode: extend to the screen edge"
+msgstr "面板模式:延伸到螢幕邊緣"
+
+#: Settings.ui.h:33
+msgid "Icon size limit"
+msgstr "圖示大小限制"
+
+#: Settings.ui.h:34
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "固定圖示大小:捲動滑鼠以揭開其他圖示"
+
+#: Settings.ui.h:35
+msgid "Position and size"
+msgstr "位置與大小"
+
+#: Settings.ui.h:36
+msgid "Show favorite applications"
+msgstr "顯示喜愛的應用程式"
+
+#: Settings.ui.h:37
+msgid "Show running applications"
+msgstr "顯示執行中應用程式"
+
+#: Settings.ui.h:38
+msgid "Isolate workspaces."
+msgstr "獨立工作區。"
+
+#: Settings.ui.h:39
+msgid "Isolate monitors."
+msgstr "獨立顯示器。"
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "顯示開啟視窗的預覽。"
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr "若停用,這些設定值可從 gnome-tweak-tool 或擴充套件網站存取。"
+
+#: Settings.ui.h:42
+msgid "Show <i>Applications</i> icon"
+msgstr "顯示 <i>應用程式</i> 圖示"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr "將應用程式按鈕移動到 Dock 開頭。"
+
+#: Settings.ui.h:44
+msgid "Animate <i>Show Applications</i>."
+msgstr "讓 <i>顯示應用程式</i> 有動畫。"
+
+#: Settings.ui.h:45
+msgid "Show trash can"
+msgstr "顯示垃圾桶"
+
+#: Settings.ui.h:46
+msgid "Show mounted volumes and devices"
+msgstr "顯示掛載儲存區和裝置"
+
+#: Settings.ui.h:47
+msgid "Launchers"
+msgstr "啟動器"
+
+#: Settings.ui.h:48
+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 使用。"
+
+#: Settings.ui.h:49
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "使用鍵盤快捷鍵啟用 App"
+
+#: Settings.ui.h:50
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "點按執行中應用程式圖示時的行為。"
+
+#: Settings.ui.h:51
+msgid "Click action"
+msgstr "點按動作"
+
+#: Settings.ui.h:52
+msgid "Minimize"
+msgstr "最小化"
+
+#: Settings.ui.h:53
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "捲動應用程式圖示時的行為。"
+
+#: Settings.ui.h:54
+msgid "Scroll action"
+msgstr "捲動動作"
+
+#: Settings.ui.h:55
+msgid "Do nothing"
+msgstr "什麼都不做"
+
+#: Settings.ui.h:56
+msgid "Switch workspace"
+msgstr "切換工作區"
+
+#: Settings.ui.h:57
+msgid "Behavior"
+msgstr "行為"
+
+#: Settings.ui.h:58
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"不自訂即代表將 Dock 與預設 GNOME 主題整合。或者可以啟用下方的特定選項。"
+
+#: Settings.ui.h:59
+msgid "Use built-in theme"
+msgstr "使用內建主題"
+
+#: Settings.ui.h:60
+msgid "Save space reducing padding and border radius."
+msgstr "透過縮小邊框間距及邊框半徑來節省空間。"
+
+#: Settings.ui.h:61
+msgid "Shrink the dash"
+msgstr "縮小 Dash"
+
+#: Settings.ui.h:62
+msgid "Customize windows counter indicators"
+msgstr "自訂視窗計數器的指示器"
+
+#: Settings.ui.h:63
+msgid "Default"
+msgstr "預設"
+
+#: Settings.ui.h:64
+msgid "Dots"
+msgstr "圓點"
+
+#: Settings.ui.h:65
+msgid "Squares"
+msgstr "方框"
+
+#: Settings.ui.h:66
+msgid "Dashes"
+msgstr "小槓線"
+
+#: Settings.ui.h:67
+msgid "Segmented"
+msgstr "長段線"
+
+#: Settings.ui.h:68
+msgid "Solid"
+msgstr "實心"
+
+#: Settings.ui.h:69
+msgid "Ciliora"
+msgstr "Ciliora"
+
+#: Settings.ui.h:70
+msgid "Metro"
+msgstr "現代"
+
+#: Settings.ui.h:71
+msgid "Set the background color for the dash."
+msgstr "設定 Dash 的背景色彩。"
+
+#: Settings.ui.h:72
+msgid "Customize the dash color"
+msgstr "自訂 Dash 色彩"
+
+#: Settings.ui.h:73
+msgid "Tune the dash background opacity."
+msgstr "調整 Dash 的背景不透明度。"
+
+#: Settings.ui.h:75
+msgid "Fixed"
+msgstr "固定"
+
+#: Settings.ui.h:76
+msgid "Dynamic"
+msgstr "動態"
+
+#: Settings.ui.h:77
+msgid "Opacity"
+msgstr "不透明"
+
+#: Settings.ui.h:78
+msgid "Force straight corner"
+msgstr "強制邊緣直角"
+
+#: Settings.ui.h:79
+msgid "Appearance"
+msgstr "外觀"
+
+#: Settings.ui.h:80
+msgid "version: "
+msgstr "版本:"
+
+#: Settings.ui.h:81
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "將 Dash 移出概覽轉變成 Dock"
+
+#: Settings.ui.h:82
+msgid "Created by"
+msgstr "作者"
+
+#: Settings.ui.h:83
+msgid "Webpage"
+msgstr "網頁"
+
+#: Settings.ui.h:84
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">本程式「絕無任何擔保」。\n"
+"請見 <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html\">GNU "
+"通用公眾授權第 2 版,或後續版本</a> 深入瞭解更多細節。</span>"
+
+#: Settings.ui.h:86
+msgid "About"
+msgstr "關於"
+
+#: Settings.ui.h:87
+msgid "Customize minimum and maximum opacity values"
+msgstr "自訂最低與最高不透明值"
+
+#: Settings.ui.h:88
+msgid "Minimum opacity"
+msgstr "最小化不透明度"
+
+#: Settings.ui.h:89
+msgid "Maximum opacity"
+msgstr "最大化不透明度"
+
+#: Settings.ui.h:90
+msgid "Number overlay"
+msgstr "數字覆層"
+
+#: Settings.ui.h:91
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr "暫時在圖示上顯示應用程式數量,對應到快捷鍵。"
+
+#: Settings.ui.h:92
+msgid "Show the dock if it is hidden"
+msgstr "若隱藏時顯示 Dock"
+
+#: Settings.ui.h:93
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr "若使用自動隱藏,則觸發快捷鍵時 Dock 會出現一段時間。"
+
+#: Settings.ui.h:94
+msgid "Shortcut for the options above"
+msgstr "上述選項的快捷鍵"
+
+#: Settings.ui.h:95
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "語法:<Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:96
+msgid "Hide timeout (s)"
+msgstr "隱藏等候時間"
+
+#: Settings.ui.h:97
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "滑鼠停駐在螢幕邊緣時顯示 Dock。"
+
+#: Settings.ui.h:98
+msgid "Autohide"
+msgstr "自動隱藏"
+
+#: Settings.ui.h:99
+msgid "Push to show: require pressure to show the dock"
+msgstr "推擠才顯示:需要一些壓力才會顯示 Dock"
+
+#: Settings.ui.h:100
+msgid "Enable in fullscreen mode"
+msgstr "在全螢幕模式啟用"
+
+#: Settings.ui.h:101
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "在 Dock 不會遮到應用程式視窗時顯示。"
+
+#: Settings.ui.h:102
+msgid "Dodge windows"
+msgstr "躲避視窗"
+
+#: Settings.ui.h:103
+msgid "All windows"
+msgstr "所有視窗"
+
+#: Settings.ui.h:104
+msgid "Only focused application's windows"
+msgstr "僅聚焦中的應用程式視窗"
+
+#: Settings.ui.h:105
+msgid "Only maximized windows"
+msgstr "僅最大化的視窗"
+
+#: Settings.ui.h:106
+msgid "Animation duration (s)"
+msgstr "動畫時間長度"
+
+#: Settings.ui.h:107
+msgid "Show timeout (s)"
+msgstr "顯示等候秒數"
+
+#: Settings.ui.h:108
+msgid "Pressure threshold"
+msgstr "壓力閾值"
+
+#~ msgid "Adaptive"
+#~ msgstr "自適應"
+
+#~ msgid "Show a dot for each windows of the application."
+#~ msgstr "為應用程式的每個視窗顯示圓點。"
+
+#~ msgid "0.000"
+#~ msgstr "0.000"
diff --git a/extensions/dash-to-dock/prefs.js b/extensions/dash-to-dock/prefs.js
new file mode 100644
index 00000000..c1e57b67
--- /dev/null
+++ b/extensions/dash-to-dock/prefs.js
@@ -0,0 +1,838 @@
+// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
+
+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;
+
+// Use __ () and N__() for the extension gettext domain, and reuse
+// the shell domain with the default _() and N_()
+const Gettext = imports.gettext.domain('gnome-shell-extensions');
+const __ = Gettext.gettext;
+const N__ = function (e) { return e };
+
+const ExtensionUtils = imports.misc.extensionUtils;
+const Me = ExtensionUtils.getCurrentExtension();
+
+const SCALE_UPDATE_TIMEOUT = 500;
+const DEFAULT_ICONS_SIZES = [128, 96, 64, 48, 32, 24, 16];
+
+const TransparencyMode = {
+ DEFAULT: 0,
+ FIXED: 1,
+ DYNAMIC: 3
+};
+
+const RunningIndicatorStyle = {
+ DEFAULT: 0,
+ DOTS: 1,
+ SQUARES: 2,
+ DASHES: 3,
+ SEGMENTED: 4,
+ SOLID: 5,
+ CILIORA: 6,
+ METRO: 7
+};
+
+// TODO:
+// function setShortcut(settings) {
+// let shortcut_text = settings.get_string('shortcut-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('shortcut', [shortcut]);
+// }
+// else {
+// settings.set_strv('shortcut', []);
+// }
+// }
+
+var Settings = GObject.registerClass({
+ Implements: [Gtk.BuilderScope],
+}, class DashToDock_Settings extends GObject.Object {
+
+ _init() {
+ super._init();
+
+ this._settings = ExtensionUtils.getSettings('org.gnome.shell.extensions.dash-to-dock');
+
+ this._rtl = (Gtk.Widget.get_default_direction() == Gtk.TextDirection.RTL);
+
+ this._builder = new Gtk.Builder();
+ this._builder.set_scope(this);
+ this._builder.set_translation_domain(Me.metadata['gettext-domain']);
+ this._builder.add_from_file(Me.path + '/Settings.ui');
+
+ this.widget = new Gtk.ScrolledWindow({ hscrollbar_policy: Gtk.PolicyType.NEVER });
+ this._notebook = this._builder.get_object('settings_notebook');
+ this.widget.set_child(this._notebook);
+
+ // Timeout to delay the update of the settings
+ this._dock_size_timeout = 0;
+ this._icon_size_timeout = 0;
+ this._opacity_timeout = 0;
+
+ this._bindSettings();
+ }
+
+ 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);
+ }
+
+ dock_display_combo_changed_cb(combo) {
+ this._settings.set_int('preferred-monitor', this._monitors[combo.get_active()]);
+ }
+
+ position_top_button_toggled_cb(button) {
+ if (button.get_active())
+ this._settings.set_enum('dock-position', 0);
+ }
+
+ position_right_button_toggled_cb(button) {
+ if (button.get_active())
+ this._settings.set_enum('dock-position', 1);
+ }
+
+ position_bottom_button_toggled_cb(button) {
+ if (button.get_active())
+ this._settings.set_enum('dock-position', 2);
+ }
+
+ position_left_button_toggled_cb(button) {
+ if (button.get_active())
+ this._settings.set_enum('dock-position', 3);
+ }
+
+ icon_size_combo_changed_cb(combo) {
+ this._settings.set_int('dash-max-icon-size', this._allIconSizes[combo.get_active()]);
+ }
+
+ dock_size_scale_value_changed_cb(scale) {
+ // Avoid settings the size continuously
+ if (this._dock_size_timeout > 0)
+ GLib.source_remove(this._dock_size_timeout);
+ const id = this._dock_size_timeout = GLib.timeout_add(
+ GLib.PRIORITY_DEFAULT, SCALE_UPDATE_TIMEOUT, () => {
+ if (id === this._dock_size_timeout) {
+ this._settings.set_double('height-fraction', scale.get_value());
+ this._dock_size_timeout = 0;
+ return GLib.SOURCE_REMOVE;
+ }
+ });
+ }
+
+ icon_size_scale_value_changed_cb(scale) {
+ // Avoid settings the size consinuosly
+ if (this._icon_size_timeout > 0)
+ GLib.source_remove(this._icon_size_timeout);
+ this._icon_size_timeout = GLib.timeout_add(
+ GLib.PRIORITY_DEFAULT, SCALE_UPDATE_TIMEOUT, () => {
+ log(scale.get_value());
+ this._settings.set_int('dash-max-icon-size', scale.get_value());
+ this._icon_size_timeout = 0;
+ return GLib.SOURCE_REMOVE;
+ });
+ }
+ custom_opacity_scale_value_changed_cb(scale) {
+ // Avoid settings the opacity consinuosly as it's change is animated
+ if (this._opacity_timeout > 0)
+ GLib.source_remove(this._opacity_timeout);
+ this._opacity_timeout = GLib.timeout_add(
+ GLib.PRIORITY_DEFAULT, SCALE_UPDATE_TIMEOUT, () => {
+ this._settings.set_double('background-opacity', scale.get_value());
+ this._opacity_timeout = 0;
+ return GLib.SOURCE_REMOVE;
+ });
+ }
+ min_opacity_scale_value_changed_cb(scale) {
+ // Avoid settings the opacity consinuosly as it's change is animated
+ if (this._opacity_timeout > 0)
+ GLib.source_remove(this._opacity_timeout);
+ this._opacity_timeout = GLib.timeout_add(
+ GLib.PRIORITY_DEFAULT, SCALE_UPDATE_TIMEOUT, () => {
+ this._settings.set_double('min-alpha', scale.get_value());
+ this._opacity_timeout = 0;
+ return GLib.SOURCE_REMOVE;
+ });
+ }
+ max_opacity_scale_value_changed_cb(scale) {
+ // Avoid settings the opacity consinuosly as it's change is animated
+ if (this._opacity_timeout > 0)
+ GLib.source_remove(this._opacity_timeout);
+ this._opacity_timeout = GLib.timeout_add(
+ GLib.PRIORITY_DEFAULT, SCALE_UPDATE_TIMEOUT, () => {
+ this._settings.set_double('max-alpha', scale.get_value());
+ this._opacity_timeout = 0;
+ return GLib.SOURCE_REMOVE;
+ });
+ }
+
+ all_windows_radio_button_toggled_cb(button) {
+ if (button.get_active())
+ this._settings.set_enum('intellihide-mode', 0);
+ }
+ focus_application_windows_radio_button_toggled_cb(button) {
+ if (button.get_active())
+ this._settings.set_enum('intellihide-mode', 1);
+ }
+ maximized_windows_radio_button_toggled_cb(button) {
+ if (button.get_active())
+ this._settings.set_enum('intellihide-mode', 2);
+ }
+
+
+ _bindSettings() {
+ // Position and size panel
+
+ // Monitor options
+
+ this._monitors = [];
+ // Build options based on the number of monitors and the current settings.
+ let monitors = Gdk.Display.get_default().get_monitors();
+ let n_monitors = monitors.length;
+ let primary_monitor = 0; // Gdk.Screen.get_default().get_primary_monitor();
+
+ let monitor = this._settings.get_int('preferred-monitor');
+
+ // Add primary monitor with index 0, because in GNOME Shell the primary monitor is always 0
+ this._builder.get_object('dock_monitor_combo').append_text(__('Primary monitor'));
+ this._monitors.push(0);
+
+ // Add connected monitors
+ let ctr = 0;
+ for (let i = 0; i < n_monitors; i++) {
+ if (i !== primary_monitor) {
+ ctr++;
+ this._monitors.push(ctr);
+ this._builder.get_object('dock_monitor_combo').append_text(__('Secondary monitor ') + ctr);
+ }
+ }
+
+ // If one of the external monitor is set as preferred, show it even if not attached
+ if ((monitor >= n_monitors) && (monitor !== primary_monitor)) {
+ this._monitors.push(monitor)
+ this._builder.get_object('dock_monitor_combo').append_text(__('Secondary monitor ') + ++ctr);
+ }
+
+ this._builder.get_object('dock_monitor_combo').set_active(this._monitors.indexOf(monitor));
+
+ // Position option
+ let position = this._settings.get_enum('dock-position');
+
+ switch (position) {
+ case 0:
+ this._builder.get_object('position_top_button').set_active(true);
+ break;
+ case 1:
+ this._builder.get_object('position_right_button').set_active(true);
+ break;
+ case 2:
+ this._builder.get_object('position_bottom_button').set_active(true);
+ break;
+ case 3:
+ this._builder.get_object('position_left_button').set_active(true);
+ break;
+ }
+
+ if (this._rtl) {
+ /* Left is Right in rtl as a setting */
+ this._builder.get_object('position_left_button').set_label(__('Right'));
+ this._builder.get_object('position_right_button').set_label(__('Left'));
+ }
+
+ // Intelligent autohide options
+ this._settings.bind('dock-fixed',
+ this._builder.get_object('intelligent_autohide_switch'),
+ 'active',
+ Gio.SettingsBindFlags.INVERT_BOOLEAN);
+ this._settings.bind('dock-fixed',
+ this._builder.get_object('intelligent_autohide_button'),
+ 'sensitive',
+ Gio.SettingsBindFlags.INVERT_BOOLEAN);
+ this._settings.bind('autohide',
+ this._builder.get_object('autohide_switch'),
+ 'active',
+ Gio.SettingsBindFlags.DEFAULT);
+ this._settings.bind('autohide-in-fullscreen',
+ this._builder.get_object('autohide_enable_in_fullscreen_checkbutton'),
+ 'active',
+ Gio.SettingsBindFlags.DEFAULT);
+ this._settings.bind('require-pressure-to-show',
+ this._builder.get_object('require_pressure_checkbutton'),
+ 'active',
+ Gio.SettingsBindFlags.DEFAULT);
+ this._settings.bind('intellihide',
+ this._builder.get_object('intellihide_switch'),
+ 'active',
+ Gio.SettingsBindFlags.DEFAULT);
+ this._settings.bind('animation-time',
+ this._builder.get_object('animation_duration_spinbutton'),
+ 'value',
+ Gio.SettingsBindFlags.DEFAULT);
+ this._settings.bind('hide-delay',
+ this._builder.get_object('hide_timeout_spinbutton'),
+ 'value',
+ Gio.SettingsBindFlags.DEFAULT);
+ this._settings.bind('show-delay',
+ this._builder.get_object('show_timeout_spinbutton'),
+ 'value',
+ Gio.SettingsBindFlags.DEFAULT);
+ this._settings.bind('pressure-threshold',
+ this._builder.get_object('pressure_threshold_spinbutton'),
+ 'value',
+ Gio.SettingsBindFlags.DEFAULT);
+
+ //this._builder.get_object('animation_duration_spinbutton').set_value(this._settings.get_double('animation-time'));
+
+ // Create dialog for intelligent autohide advanced settings
+ this._builder.get_object('intelligent_autohide_button').connect('clicked', () => {
+
+ let dialog = new Gtk.Dialog({
+ title: __('Intelligent autohide customization'),
+ transient_for: this.widget.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('intelligent_autohide_advanced_settings_box');
+ dialog.get_content_area().append(box);
+
+ this._settings.bind('intellihide',
+ this._builder.get_object('intellihide_mode_box'),
+ 'sensitive',
+ Gio.SettingsBindFlags.GET);
+
+ // intellihide mode
+
+ let intellihideModeRadioButtons = [
+ this._builder.get_object('all_windows_radio_button'),
+ this._builder.get_object('focus_application_windows_radio_button'),
+ this._builder.get_object('maximized_windows_radio_button')
+ ];
+
+ intellihideModeRadioButtons[this._settings.get_enum('intellihide-mode')].set_active(true);
+
+ this._settings.bind('autohide',
+ this._builder.get_object('require_pressure_checkbutton'),
+ 'sensitive',
+ Gio.SettingsBindFlags.GET);
+
+ this._settings.bind('autohide',
+ this._builder.get_object('autohide_enable_in_fullscreen_checkbutton'),
+ 'sensitive',
+ Gio.SettingsBindFlags.GET);
+
+ this._settings.bind('require-pressure-to-show',
+ this._builder.get_object('show_timeout_spinbutton'),
+ 'sensitive',
+ Gio.SettingsBindFlags.INVERT_BOOLEAN);
+ this._settings.bind('require-pressure-to-show',
+ this._builder.get_object('show_timeout_label'),
+ 'sensitive',
+ Gio.SettingsBindFlags.INVERT_BOOLEAN);
+ this._settings.bind('require-pressure-to-show',
+ this._builder.get_object('pressure_threshold_spinbutton'),
+ 'sensitive',
+ Gio.SettingsBindFlags.DEFAULT);
+ this._settings.bind('require-pressure-to-show',
+ this._builder.get_object('pressure_threshold_label'),
+ 'sensitive',
+ Gio.SettingsBindFlags.DEFAULT);
+
+ dialog.connect('response', (dialog, id) => {
+ if (id == 1) {
+ // restore default settings for the relevant keys
+ let keys = ['intellihide', 'autohide', 'intellihide-mode', 'autohide-in-fullscreen', 'require-pressure-to-show',
+ 'animation-time', 'show-delay', 'hide-delay', 'pressure-threshold'];
+ keys.forEach(function (val) {
+ this._settings.set_value(val, this._settings.get_default_value(val));
+ }, this);
+ intellihideModeRadioButtons[this._settings.get_enum('intellihide-mode')].set_active(true);
+ } else {
+ // remove the settings box so it doesn't get destroyed;
+ dialog.get_content_area().remove(box);
+ dialog.destroy();
+ }
+ return;
+ });
+
+ dialog.present();
+
+ });
+
+ // size options
+ const dock_size_scale = this._builder.get_object('dock_size_scale');
+ dock_size_scale.set_value(this._settings.get_double('height-fraction'));
+ dock_size_scale.add_mark(0.9, Gtk.PositionType.TOP, null);
+ dock_size_scale.set_format_value_func((_, value) => {
+ return Math.round(value * 100) + ' %';
+ });
+ let icon_size_scale = this._builder.get_object('icon_size_scale');
+ icon_size_scale.set_range(8, DEFAULT_ICONS_SIZES[0]);
+ icon_size_scale.set_value(this._settings.get_int('dash-max-icon-size'));
+ DEFAULT_ICONS_SIZES.forEach(function (val) {
+ icon_size_scale.add_mark(val, Gtk.PositionType.TOP, val.toString());
+ });
+ icon_size_scale.set_format_value_func((_, value) => {
+ return value + ' px';
+ });
+
+ // Corrent for rtl languages
+ if (this._rtl) {
+ // Flip value position: this is not done automatically
+ dock_size_scale.set_value_pos(Gtk.PositionType.LEFT);
+ icon_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
+ icon_size_scale.set_flippable(false);
+ icon_size_scale.set_inverted(true);
+ }
+
+ this._settings.bind('icon-size-fixed', this._builder.get_object('icon_size_fixed_checkbutton'), 'active', Gio.SettingsBindFlags.DEFAULT);
+ this._settings.bind('extend-height', this._builder.get_object('dock_size_extend_checkbutton'), 'active', Gio.SettingsBindFlags.DEFAULT);
+ this._settings.bind('extend-height', this._builder.get_object('dock_size_scale'), 'sensitive', Gio.SettingsBindFlags.INVERT_BOOLEAN);
+
+
+ // Apps panel
+
+ this._settings.bind('show-running',
+ this._builder.get_object('show_running_switch'),
+ 'active',
+ Gio.SettingsBindFlags.DEFAULT);
+ this._settings.bind('isolate-workspaces',
+ this._builder.get_object('application_button_isolation_button'),
+ 'active',
+ Gio.SettingsBindFlags.DEFAULT);
+ this._settings.bind('isolate-monitors',
+ this._builder.get_object('application_button_monitor_isolation_button'),
+ 'active',
+ Gio.SettingsBindFlags.DEFAULT);
+ this._settings.bind('show-windows-preview',
+ this._builder.get_object('windows_preview_button'),
+ 'active',
+ Gio.SettingsBindFlags.DEFAULT);
+ this._settings.bind('multi-monitor',
+ this._builder.get_object('multi_monitor_button'),
+ 'active',
+ Gio.SettingsBindFlags.DEFAULT);
+ this._settings.bind('show-favorites',
+ this._builder.get_object('show_favorite_switch'),
+ 'active',
+ Gio.SettingsBindFlags.DEFAULT);
+ this._settings.bind('show-trash',
+ this._builder.get_object('show_trash_switch'),
+ 'active',
+ Gio.SettingsBindFlags.DEFAULT);
+ this._settings.bind('show-mounts',
+ this._builder.get_object('show_mounts_switch'),
+ 'active',
+ Gio.SettingsBindFlags.DEFAULT);
+ this._settings.bind('show-show-apps-button',
+ this._builder.get_object('show_applications_button_switch'),
+ 'active',
+ Gio.SettingsBindFlags.DEFAULT);
+ this._settings.bind('show-apps-at-top',
+ this._builder.get_object('application_button_first_button'),
+ 'active',
+ Gio.SettingsBindFlags.DEFAULT);
+ this._settings.bind('show-show-apps-button',
+ this._builder.get_object('application_button_first_button'),
+ 'sensitive',
+ Gio.SettingsBindFlags.DEFAULT);
+ this._settings.bind('animate-show-apps',
+ this._builder.get_object('application_button_animation_button'),
+ 'active',
+ Gio.SettingsBindFlags.DEFAULT);
+ this._settings.bind('show-show-apps-button',
+ this._builder.get_object('application_button_animation_button'),
+ 'sensitive',
+ Gio.SettingsBindFlags.DEFAULT);
+
+
+ // Behavior panel
+
+ 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('click_action_combo').set_active(this._settings.get_enum('click-action'));
+ this._builder.get_object('click_action_combo').connect('changed', (widget) => {
+ this._settings.set_enum('click-action', widget.get_active());
+ });
+
+ this._builder.get_object('scroll_action_combo').set_active(this._settings.get_enum('scroll-action'));
+ this._builder.get_object('scroll_action_combo').connect('changed', (widget) => {
+ this._settings.set_enum('scroll-action', widget.get_active());
+ });
+
+ this._builder.get_object('shift_click_action_combo').connect('changed', (widget) => {
+ this._settings.set_enum('shift-click-action', widget.get_active());
+ });
+
+ this._builder.get_object('middle_click_action_combo').connect('changed', (widget) => {
+ this._settings.set_enum('middle-click-action', widget.get_active());
+ });
+ this._builder.get_object('shift_middle_click_action_combo').connect('changed', (widget) => {
+ this._settings.set_enum('shift-middle-click-action', widget.get_active());
+ });
+
+ // Create dialog for number overlay options
+ this._builder.get_object('overlay_button').connect('clicked', () => {
+
+ let dialog = new Gtk.Dialog({
+ title: __('Show dock and application numbers'),
+ transient_for: this.widget.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);
+
+ this._builder.get_object('overlay_switch').set_active(this._settings.get_boolean('hotkeys-overlay'));
+ this._builder.get_object('show_dock_switch').set_active(this._settings.get_boolean('hotkeys-show-dock'));
+
+ // We need to update the shortcut 'strv' when the text is modified
+ this._settings.connect('changed::shortcut-text', () => { setShortcut(this._settings); });
+ this._settings.bind('shortcut-text',
+ this._builder.get_object('shortcut_entry'),
+ 'text',
+ Gio.SettingsBindFlags.DEFAULT);
+
+ this._settings.bind('hotkeys-overlay',
+ this._builder.get_object('overlay_switch'),
+ 'active',
+ Gio.SettingsBindFlags.DEFAULT);
+ this._settings.bind('hotkeys-show-dock',
+ this._builder.get_object('show_dock_switch'),
+ 'active',
+ Gio.SettingsBindFlags.DEFAULT);
+ this._settings.bind('shortcut-timeout',
+ this._builder.get_object('timeout_spinbutton'),
+ 'value',
+ Gio.SettingsBindFlags.DEFAULT);
+
+ dialog.connect('response', (dialog, id) => {
+ if (id == 1) {
+ // restore default settings for the relevant keys
+ let keys = ['shortcut-text', 'hotkeys-overlay', 'hotkeys-show-dock', 'shortcut-timeout'];
+ 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.present();
+ });
+
+ // Create dialog for middle-click options
+ this._builder.get_object('middle_click_options_button').connect('clicked', () => {
+
+ let dialog = new Gtk.Dialog({
+ title: __('Customize middle-click behavior'),
+ transient_for: this.widget.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(this._settings.get_enum('shift-click-action'));
+
+ this._builder.get_object('middle_click_action_combo').set_active(this._settings.get_enum('middle-click-action'));
+
+ this._builder.get_object('shift_middle_click_action_combo').set_active(this._settings.get_enum('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', (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(this._settings.get_enum('shift-click-action'));
+ this._builder.get_object('middle_click_action_combo').set_active(this._settings.get_enum('middle-click-action'));
+ this._builder.get_object('shift_middle_click_action_combo').set_active(this._settings.get_enum('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.present();
+
+ });
+
+ // Appearance Panel
+
+ this._settings.bind('apply-custom-theme', this._builder.get_object('customize_theme'), 'sensitive', Gio.SettingsBindFlags.INVERT_BOOLEAN | Gio.SettingsBindFlags.GET);
+ this._settings.bind('apply-custom-theme', this._builder.get_object('builtin_theme_switch'), 'active', Gio.SettingsBindFlags.DEFAULT);
+ this._settings.bind('custom-theme-shrink', this._builder.get_object('shrink_dash_switch'), 'active', Gio.SettingsBindFlags.DEFAULT);
+
+ // Running indicators
+ this._builder.get_object('running_indicators_combo').set_active(
+ this._settings.get_enum('running-indicator-style')
+ );
+ this._builder.get_object('running_indicators_combo').connect(
+ 'changed',
+ (widget) => {
+ this._settings.set_enum('running-indicator-style', widget.get_active());
+ }
+ );
+
+ if (this._settings.get_enum('running-indicator-style') == RunningIndicatorStyle.DEFAULT)
+ this._builder.get_object('running_indicators_advance_settings_button').set_sensitive(false);
+
+ this._settings.connect('changed::running-indicator-style', () => {
+ if (this._settings.get_enum('running-indicator-style') == RunningIndicatorStyle.DEFAULT)
+ this._builder.get_object('running_indicators_advance_settings_button').set_sensitive(false);
+ else
+ this._builder.get_object('running_indicators_advance_settings_button').set_sensitive(true);
+ });
+
+ // Create dialog for running indicators advanced settings
+ this._builder.get_object('running_indicators_advance_settings_button').connect('clicked', () => {
+
+ let dialog = new Gtk.Dialog({
+ title: __('Customize running indicators'),
+ transient_for: this.widget.get_root(),
+ use_header_bar: true,
+ modal: true
+ });
+
+ let box = this._builder.get_object('running_dots_advance_settings_box');
+ dialog.get_content_area().append(box);
+
+ this._settings.bind('running-indicator-dominant-color',
+ this._builder.get_object('dominant_color_switch'),
+ 'active',
+ Gio.SettingsBindFlags.DEFAULT);
+
+ this._settings.bind('custom-theme-customize-running-dots',
+ this._builder.get_object('dot_style_switch'),
+ 'active',
+ Gio.SettingsBindFlags.DEFAULT);
+ this._settings.bind('custom-theme-customize-running-dots',
+ this._builder.get_object('dot_style_settings_box'),
+ 'sensitive', Gio.SettingsBindFlags.DEFAULT);
+
+ let rgba = new Gdk.RGBA();
+ rgba.parse(this._settings.get_string('custom-theme-running-dots-color'));
+ this._builder.get_object('dot_color_colorbutton').set_rgba(rgba);
+
+ this._builder.get_object('dot_color_colorbutton').connect('notify::rgba', (button) => {
+ let css = button.rgba.to_string();
+
+ this._settings.set_string('custom-theme-running-dots-color', css);
+ });
+
+ rgba.parse(this._settings.get_string('custom-theme-running-dots-border-color'));
+ this._builder.get_object('dot_border_color_colorbutton').set_rgba(rgba);
+
+ this._builder.get_object('dot_border_color_colorbutton').connect('notify::rgba', (button) => {
+ let css = button.rgba.to_string();
+
+ this._settings.set_string('custom-theme-running-dots-border-color', css);
+ });
+
+ this._settings.bind('custom-theme-running-dots-border-width',
+ this._builder.get_object('dot_border_width_spin_button'),
+ 'value',
+ Gio.SettingsBindFlags.DEFAULT);
+
+
+ dialog.connect('response', (dialog, id) => {
+ // remove the settings box so it doesn't get destroyed;
+ dialog.get_content_area().remove(box);
+ dialog.destroy();
+ return;
+ });
+
+ dialog.present();
+
+ });
+
+ this._settings.bind('custom-background-color', this._builder.get_object('custom_background_color_switch'), 'active', Gio.SettingsBindFlags.DEFAULT);
+ this._settings.bind('custom-background-color', this._builder.get_object('custom_background_color'), 'sensitive', Gio.SettingsBindFlags.DEFAULT);
+
+ let rgba = new Gdk.RGBA();
+ rgba.parse(this._settings.get_string('background-color'));
+ this._builder.get_object('custom_background_color').set_rgba(rgba);
+
+ this._builder.get_object('custom_background_color').connect('notify::rgba', (button) => {
+ let css = button.rgba.to_string();
+
+ this._settings.set_string('background-color', css);
+ });
+
+ // Opacity
+ this._builder.get_object('customize_opacity_combo').set_active_id(
+ this._settings.get_enum('transparency-mode').toString()
+ );
+ this._builder.get_object('customize_opacity_combo').connect(
+ 'changed',
+ (widget) => {
+ this._settings.set_enum('transparency-mode', parseInt(widget.get_active_id()));
+ }
+ );
+
+ const custom_opacity_scale = this._builder.get_object('custom_opacity_scale');
+ custom_opacity_scale.set_value(this._settings.get_double('background-opacity'));
+ custom_opacity_scale.set_format_value_func((_, value) => {
+ return Math.round(value * 100) + '%';
+ });
+
+ if (this._settings.get_enum('transparency-mode') !== TransparencyMode.FIXED)
+ this._builder.get_object('custom_opacity_scale').set_sensitive(false);
+
+ this._settings.connect('changed::transparency-mode', () => {
+ if (this._settings.get_enum('transparency-mode') !== TransparencyMode.FIXED)
+ this._builder.get_object('custom_opacity_scale').set_sensitive(false);
+ else
+ this._builder.get_object('custom_opacity_scale').set_sensitive(true);
+ });
+
+ if (this._settings.get_enum('transparency-mode') !== TransparencyMode.DYNAMIC) {
+ this._builder.get_object('dynamic_opacity_button').set_sensitive(false);
+ }
+
+ this._settings.connect('changed::transparency-mode', () => {
+ if (this._settings.get_enum('transparency-mode') !== TransparencyMode.DYNAMIC) {
+ this._builder.get_object('dynamic_opacity_button').set_sensitive(false);
+ }
+ else {
+ this._builder.get_object('dynamic_opacity_button').set_sensitive(true);
+ }
+ });
+
+ // Create dialog for transparency advanced settings
+ this._builder.get_object('dynamic_opacity_button').connect('clicked', () => {
+
+ let dialog = new Gtk.Dialog({
+ title: __('Customize opacity'),
+ transient_for: this.widget.get_root(),
+ use_header_bar: true,
+ modal: true
+ });
+
+ let box = this._builder.get_object('advanced_transparency_dialog');
+ dialog.get_content_area().append(box);
+
+ this._settings.bind(
+ 'customize-alphas',
+ this._builder.get_object('customize_alphas_switch'),
+ 'active',
+ Gio.SettingsBindFlags.DEFAULT
+ );
+ this._settings.bind(
+ 'customize-alphas',
+ this._builder.get_object('min_alpha_scale'),
+ 'sensitive',
+ Gio.SettingsBindFlags.DEFAULT
+ );
+ this._settings.bind(
+ 'customize-alphas',
+ this._builder.get_object('max_alpha_scale'),
+ 'sensitive',
+ Gio.SettingsBindFlags.DEFAULT
+ );
+
+ const min_alpha_scale = this._builder.get_object('min_alpha_scale');
+ const max_alpha_scale = this._builder.get_object('max_alpha_scale');
+ min_alpha_scale.set_value(
+ this._settings.get_double('min-alpha')
+ );
+ min_alpha_scale.set_format_value_func((_, value) => {
+ return Math.round(value * 100) + ' %';
+ });
+ max_alpha_scale.set_format_value_func((_, value) => {
+ return Math.round(value * 100) + ' %';
+ });
+
+ max_alpha_scale.set_value(
+ this._settings.get_double('max-alpha')
+ );
+
+ dialog.connect('response', (dialog, id) => {
+ // remove the settings box so it doesn't get destroyed;
+ dialog.get_content_area().remove(box);
+ dialog.destroy();
+ return;
+ });
+
+ dialog.present();
+ });
+
+
+ this._settings.bind('unity-backlit-items',
+ this._builder.get_object('unity_backlit_items_switch'),
+ 'active', Gio.SettingsBindFlags.DEFAULT
+ );
+
+ this._settings.bind('force-straight-corner',
+ this._builder.get_object('force_straight_corner_switch'),
+ 'active', Gio.SettingsBindFlags.DEFAULT);
+
+ // About Panel
+
+ this._builder.get_object('extension_version').set_label(Me.metadata.version.toString());
+ }
+});
+
+function init() {
+ ExtensionUtils.initTranslations();
+}
+
+function buildPrefsWidget() {
+ let settings = new Settings();
+ let widget = settings.widget;
+ if (widget.show_all) widget.show_all();
+ return widget;
+}
diff --git a/extensions/dash-to-dock/schemas/org.gnome.shell.extensions.dash-to-dock.gschema.xml b/extensions/dash-to-dock/schemas/org.gnome.shell.extensions.dash-to-dock.gschema.xml
new file mode 100644
index 00000000..54dd9f21
--- /dev/null
+++ b/extensions/dash-to-dock/schemas/org.gnome.shell.extensions.dash-to-dock.gschema.xml
@@ -0,0 +1,551 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schemalist gettext-domain="gnome-shell-extensions">
+ <enum id='org.gnome.shell.extensions.dash-to-dock.clickAction'>
+ <value value='0' nick='skip'/>
+ <value value='1' nick='minimize'/>
+ <value value='2' nick='launch'/>
+ <value value='3' nick='cycle-windows'/>
+ <value value='4' nick='minimize-or-overview'/>
+ <value value='5' nick='previews'/>
+ <value value='6' nick='minimize-or-previews'/>
+ <value value='7' nick='focus-or-previews'/>
+ <value value='8' nick='focus-minimize-or-previews'/>
+ <value value='9' nick='quit'/>
+ </enum>
+ <enum id='org.gnome.shell.extensions.dash-to-dock.scrollAction'>
+ <value value='0' nick='do-nothing'/>
+ <value value='1' nick='cycle-windows'/>
+ <value value='2' nick='switch-workspace'/>
+ </enum>
+ <!-- this is mean to Match StSide. LEFT and RIGHT actual position in reversed in
+ rtl languages -->
+ <enum id='org.gnome.shell.extensions.dash-to-dock.position'>
+ <value value='0' nick='TOP'/>
+ <value value='1' nick='RIGHT'/>
+ <value value='2' nick='BOTTOM'/>
+ <value value='3' nick='LEFT'/>
+ </enum>
+ <enum id='org.gnome.shell.extensions.dash-to-dock.intellihide-mode'>
+ <value value='0' nick='ALL_WINDOWS'/>
+ <value value='1' nick='FOCUS_APPLICATION_WINDOWS'/>
+ <value value='2' nick='MAXIMIZED_WINDOWS'/>
+ </enum>
+ <enum id='org.gnome.shell.extensions.dash-to-dock.transparency-mode'>
+ <value value='0' nick='DEFAULT'/>
+ <value value='1' nick='FIXED'/>
+ <value value='3' nick='DYNAMIC'/>
+ </enum>
+ <enum id='org.gnome.shell.extensions.dash-to-dock.running-indicator-style'>
+ <value value='0' nick='DEFAULT'/>
+ <value value='1' nick='DOTS'/>
+ <value value='2' nick='SQUARES'/>
+ <value value='3' nick='DASHES'/>
+ <value value='4' nick='SEGMENTED'/>
+ <value value='5' nick='SOLID'/>
+ <value value='6' nick='CILIORA'/>
+ <value value='7' nick='METRO'/>
+ </enum>
+ <schema path="/org/gnome/shell/extensions/dash-to-dock/" id="org.gnome.shell.extensions.dash-to-dock">
+ <key name="dock-position" enum="org.gnome.shell.extensions.dash-to-dock.position">
+ <default>'BOTTOM'</default>
+ <summary>Dock position</summary>
+ <description>Dock is shown on the Left, Right, Top or Bottom side of the screen.</description>
+ </key>
+ <key type="d" name="animation-time">
+ <default>0.2</default>
+ <summary>Animation time</summary>
+ <description>Sets the time duration of the autohide effect.</description>
+ </key>
+ <key type="d" name="show-delay">
+ <default>0.25</default>
+ <summary>Show delay</summary>
+ <description>Sets the delay after the mouse reaches the screen border before showing the dock.</description>
+ </key>
+ <key type="d" name="hide-delay">
+ <default>0.20</default>
+ <summary>Show delay</summary>
+ <description>Sets the delay after the mouse left the dock before hiding it.</description>
+ </key>
+ <key type="b" name="custom-background-color">
+ <default>false</default>
+ <summary>Set a custom dash background background color</summary>
+ <description>Sets the color for the dash background.</description>
+ </key>
+ <key type="s" name="background-color">
+ <default>"#ffffff"</default>
+ <summary>Dash background color.</summary>
+ <description>Customize the background color of the dash.</description>
+ </key>
+ <key name="transparency-mode" enum="org.gnome.shell.extensions.dash-to-dock.transparency-mode">
+ <default>'DEFAULT'</default>
+ <summary>Transparency mode for the dock</summary>
+ <description>FIXED: constant transparency. DYNAMIC: dock takes the opaque style only when windows are close to it.</description>
+ </key>
+ <key name="running-indicator-style" enum="org.gnome.shell.extensions.dash-to-dock.running-indicator-style">
+ <default>'DEFAULT'</default>
+ <summary>...</summary>
+ <description>DEFAULT: .... DOTS: ....</description>
+ </key>
+ <key type="b" name="running-indicator-dominant-color">
+ <default>false</default>
+ <summary>Use application icon dominant color for the indicator color</summary>
+ <description></description>
+ </key>
+ <key type="b" name="customize-alphas">
+ <default>false</default>
+ <summary>Manually set the min and max opacity</summary>
+ <description>For the dynamic mode, the min/max opacity values will be given by 'min-alpha' and 'max-alpha'.</description>
+ </key>
+ <key type="d" name="min-alpha">
+ <default>0.2</default>
+ <summary>Opacity of the dash background when free-floating</summary>
+ <description>Sets the opacity of the dash background when no windows are close.</description>
+ </key>
+ <key type="d" name="max-alpha">
+ <default>0.8</default>
+ <summary>Opacity of the dash background when windows are close.</summary>
+ <description>Sets the opacity of the dash background when windows are close.</description>
+ </key>
+ <key type="d" name="background-opacity">
+ <default>0.8</default>
+ <summary>Opacity of the dash background</summary>
+ <description>Sets the opacity of the dash background when in autohide mode.</description>
+ </key>
+ <key type="b" name="intellihide">
+ <default>true</default>
+ <summary>Dock dodges windows</summary>
+ <description>Enable or disable intellihide mode</description>
+ </key>
+ <key name="intellihide-mode" enum="org.gnome.shell.extensions.dash-to-dock.intellihide-mode">
+ <default>'FOCUS_APPLICATION_WINDOWS'</default>
+ <summary>Define which windows are considered for intellihide.</summary>
+ <description></description>
+ </key>
+ <key type="b" name="autohide">
+ <default>true</default>
+ <summary>Dock shown on mouse over</summary>
+ <description>Enable or disable autohide mode</description>
+ </key>
+ <key type="b" name="require-pressure-to-show">
+ <default>true</default>
+ <summary>Require pressure to show dash</summary>
+ <description>Enable or disable requiring pressure to show the dash</description>
+ </key>
+ <key type="d" name="pressure-threshold">
+ <default>100</default>
+ <summary>Pressure threshold</summary>
+ <description>Sets how much pressure is needed to show the dash.</description>
+ </key>
+ <key type="b" name="autohide-in-fullscreen">
+ <default>false</default>
+ <summary>Enable autohide in fullscreen mode.</summary>
+ <description>Enable autohide in fullscreen mode.</description>
+ </key>
+ <key type="b" name="dock-fixed">
+ <default>false</default>
+ <summary>Dock always visible</summary>
+ <description>Dock is always visible</description>
+ </key>
+ <key type="b" name="scroll-switch-workspace">
+ <default>true</default>
+ <summary>Switch workspace by scrolling over the dock</summary>
+ <description>Add the possibility to switch workspace by mouse scrolling over the dock.</description>
+ </key>
+ <key type="i" name="dash-max-icon-size">
+ <default>48</default>
+ <summary>Maximum dash icon size</summary>
+ <description>Set the allowed maximum dash icon size. Allowed range: 16..64.</description>
+ </key>
+ <key type="b" name="icon-size-fixed">
+ <default>false</default>
+ <summary>Fixed icon size</summary>
+ <description>Keep the icon size fived by scrolling the dock.</description>
+ </key>
+ <key type="b" name="apply-custom-theme">
+ <default>false</default>
+ <summary>Apply custom theme</summary>
+ <description>Apply customization to the dash appearance</description>
+ </key>
+ <key type="b" name="custom-theme-shrink">
+ <default>false</default>
+ <summary>TODO</summary>
+ <description>TODO</description>
+ </key>
+ <key type="b" name="custom-theme-customize-running-dots">
+ <default>false</default>
+ <summary>Customize the style of the running application indicators.</summary>
+ <description>Customize the style of the running application indicators.</description>
+ </key>
+ <key type="s" name="custom-theme-running-dots-color">
+ <default>"#ffffff"</default>
+ <summary>Running application indicators color</summary>
+ <description>Customize the color of the running application indicators.</description>
+ </key>
+ <key type="s" name="custom-theme-running-dots-border-color">
+ <default>"#ffffff"</default>
+ <summary>Running application indicators border color.</summary>
+ <description>Customize the border color of the running application indicators.</description>
+ </key>
+ <key type="i" name="custom-theme-running-dots-border-width">
+ <default>0</default>
+ <summary>Running application indicators border width.</summary>
+ <description>Customize the border width of the running application indicators.</description>
+ </key>
+ <key type="b" name="show-running">
+ <default>true</default>
+ <summary>Show running apps</summary>
+ <description>Show or hide running applications icons in the dash</description>
+ </key>
+ <key type="b" name="isolate-workspaces">
+ <default>false</default>
+ <summary>Provide workspace isolation</summary>
+ <description>Dash shows only windows from the currentworkspace</description>
+ </key>
+ <key type="b" name="isolate-monitors">
+ <default>false</default>
+ <summary>Provide monitor isolation</summary>
+ <description>Dash shows only windows from the monitor</description>
+ </key>
+ <key type="b" name="show-windows-preview">
+ <default>true</default>
+ <summary>Show preview of the open windows</summary>
+ <description>Replace open windows list with windows previews</description>
+ </key>
+ <key type="b" name="show-favorites">
+ <default>true</default>
+ <summary>Show favorites apps</summary>
+ <description>Show or hide favorite applications icons in the dash</description>
+ </key>
+ <key type="b" name="show-trash">
+ <default>true</default>
+ <summary>Show trash can</summary>
+ <description>Show or hide the trash can icon in the dash</description>
+ </key>
+ <key type="b" name="show-mounts">
+ <default>true</default>
+ <summary>Show mounted volumes and devices</summary>
+ <description>Show or hide mounted volume and device icons in the dash</description>
+ </key>
+ <key type="b" name="show-show-apps-button">
+ <default>true</default>
+ <summary>Show applications button</summary>
+ <description>Show applications button in the dash</description>
+ </key>
+ <key type="b" name="show-apps-at-top">
+ <default>false</default>
+ <summary>Show application button on the left</summary>
+ <description>Show application button on the left of the dash</description>
+ </key>
+ <key type="b" name="animate-show-apps">
+ <default>true</default>
+ <summary>Animate Show Applications from the desktop</summary>
+ <description>Animate Show Applications from the desktop</description>
+ </key>
+ <key type="b" name="bolt-support">
+ <default>true</default>
+ <summary>Basic compatibility with bolt extensions</summary>
+ <description>Make the extension work properly when bolt extensions is enabled</description>
+ </key>
+ <key type="d" name="height-fraction">
+ <default>0.90</default>
+ <summary>Dock max height (fraction of available space)</summary>
+ </key>
+ <key type="b" name="extend-height">
+ <default>false</default>
+ <summary>Extend the dock container to all the available height</summary>
+ </key>
+ <key type="i" name="preferred-monitor">
+ <default>-1</default>
+ <summary>Monitor on which putting the dock</summary>
+ <description>Set on which monitor to put the dock, use -1 for the primary one</description>
+ </key>
+ <key type="b" name="multi-monitor">
+ <default>false</default>
+ <summary>Enable multi-monitor docks</summary>
+ <description>Show a dock on every monitor</description>
+ </key>
+ <key type="b" name="minimize-shift">
+ <default>true</default>
+ <summary>Minimize on shift+click</summary>
+ </key>
+ <key type="b" name="activate-single-window">
+ <default>true</default>
+ <summary>Activate only one window</summary>
+ </key>
+ <key name="click-action" enum="org.gnome.shell.extensions.dash-to-dock.clickAction">
+ <default>'cycle-windows'</default>
+ <summary>Action when clicking on a running app</summary>
+ <description>Set the action that is executed when clicking on the icon of a running application</description>
+ </key>
+ <key name="scroll-action" enum="org.gnome.shell.extensions.dash-to-dock.scrollAction">
+ <default>'do-nothing'</default>
+ <summary>Action when scrolling app</summary>
+ <description>Set the action that is executed when scrolling on the application icon</description>
+ </key>
+ <key name="shift-click-action" enum="org.gnome.shell.extensions.dash-to-dock.clickAction">
+ <default>'minimize'</default>
+ <summary>Action when shift+clicking on a running app</summary>
+ <description>Set the action that is executed when shift+clicking on the icon of a running application</description>
+ </key>
+ <key name="middle-click-action" enum="org.gnome.shell.extensions.dash-to-dock.clickAction">
+ <default>'launch'</default>
+ <summary>Action when clicking on a running app</summary>
+ <description>Set the action that is executed when middle-clicking on the icon of a running application</description>
+ </key>
+ <key name="shift-middle-click-action" enum="org.gnome.shell.extensions.dash-to-dock.clickAction">
+ <default>'launch'</default>
+ <summary>Action when clicking on a running app</summary>
+ <description>Set the action that is executed when shift+middle-clicking on the icon of a running application</description>
+ </key>
+ <key type="b" name="hot-keys">
+ <default>true</default>
+ <summary>Super Hot-Keys</summary>
+ <description>Launch and switch between dash items using Super+(0-9)</description>
+ </key>
+ <key type="b" name="hotkeys-show-dock">
+ <default>true</default>
+ <summary>Show the dock when using the hotkeys</summary>
+ <description>The dock will be quickly shown so that the number-overlay is visible and app activation is easier</description>
+ </key>
+ <key type="s" name="shortcut-text">
+ <default>"&lt;Super&gt;q"</default>
+ <summary>Keybinding to show the dock and the number overlay.</summary>
+ <description>Behavior depends on hotkeys-show-dock and hotkeys-overlay.</description>
+ </key>
+ <key type="as" name="shortcut">
+ <default><![CDATA[['<Super>q']]]></default>
+ <summary>Keybinding to show the dock and the number overlay.</summary>
+ <description>Behavior depends on hotkeys-show-dock and hotkeys-overlay.</description>
+ </key>
+ <key type="d" name="shortcut-timeout">
+ <default>2</default>
+ <summary>Timeout to hide the dock</summary>
+ <description>Sets the time duration before the dock is hidden again.</description>
+ </key>
+ <key type="b" name="hotkeys-overlay">
+ <default>true</default>
+ <summary>Show the dock when using the hotkeys</summary>
+ <description>The dock will be quickly shown so that the number-overlay is visible and app activation is easier</description>
+ </key>
+ <key name="app-ctrl-hotkey-1" type="as">
+ <default><![CDATA[['<Ctrl><Super>1']]]></default>
+ <summary>Keybinding to launch 1st dash app</summary>
+ <description>
+ Keybinding to launch 1st app.
+ </description>
+ </key>
+ <key name="app-ctrl-hotkey-2" type="as">
+ <default><![CDATA[['<Ctrl><Super>2']]]></default>
+ <summary>Keybinding to launch 2nd dash app</summary>
+ <description>
+ Keybinding to launch 2nd app.
+ </description>
+ </key>
+ <key name="app-ctrl-hotkey-3" type="as">
+ <default><![CDATA[['<Ctrl><Super>3']]]></default>
+ <summary>Keybinding to launch 3rd dash app</summary>
+ <description>
+ Keybinding to launch 3rd app.
+ </description>
+ </key>
+ <key name="app-ctrl-hotkey-4" type="as">
+ <default><![CDATA[['<Ctrl><Super>4']]]></default>
+ <summary>Keybinding to launch 4th dash app</summary>
+ <description>
+ Keybinding to launch 4th app.
+ </description>
+ </key>
+ <key name="app-ctrl-hotkey-5" type="as">
+ <default><![CDATA[['<Ctrl><Super>5']]]></default>
+ <summary>Keybinding to launch 5th dash app</summary>
+ <description>
+ Keybinding to launch 5th app.
+ </description>
+ </key>
+ <key name="app-ctrl-hotkey-6" type="as">
+ <default><![CDATA[['<Ctrl><Super>6']]]></default>
+ <summary>Keybinding to launch 6th dash app</summary>
+ <description>
+ Keybinding to launch 6th app.
+ </description>
+ </key>
+ <key name="app-ctrl-hotkey-7" type="as">
+ <default><![CDATA[['<Ctrl><Super>7']]]></default>
+ <summary>Keybinding to launch 7th dash app</summary>
+ <description>
+ Keybinding to launch 7th app.
+ </description>
+ </key>
+ <key name="app-ctrl-hotkey-8" type="as">
+ <default><![CDATA[['<Ctrl><Super>8']]]></default>
+ <summary>Keybinding to launch 8th dash app</summary>
+ <description>
+ Keybinding to launch 8th app.
+ </description>
+ </key>
+ <key name="app-ctrl-hotkey-9" type="as">
+ <default><![CDATA[['<Ctrl><Super>9']]]></default>
+ <summary>Keybinding to launch 9th dash app</summary>
+ <description>
+ Keybinding to launch 9th app.
+ </description>
+ </key>
+ <key name="app-ctrl-hotkey-10" type="as">
+ <default><![CDATA[['<Ctrl><Super>0']]]></default>
+ <summary>Keybinding to launch 10th dash app</summary>
+ <description>
+ Keybinding to launch 10th app.
+ </description>
+ </key>
+ <key name="app-shift-hotkey-1" type="as">
+ <default><![CDATA[['<Shift><Super>1']]]></default>
+ <summary>Keybinding to trigger 1st dash app with shift behavior</summary>
+ <description>
+ Keybinding to trigger 1st app with shift behavior.
+ </description>
+ </key>
+ <key name="app-shift-hotkey-2" type="as">
+ <default><![CDATA[['<Shift><Super>2']]]></default>
+ <summary>Keybinding to trigger 2nd dash app with shift behavior</summary>
+ <description>
+ Keybinding to trigger 2nd app with shift behavior.
+ </description>
+ </key>
+ <key name="app-shift-hotkey-3" type="as">
+ <default><![CDATA[['<Shift><Super>3']]]></default>
+ <summary>Keybinding to trigger 3rd dash app with shift behavior</summary>
+ <description>
+ Keybinding to trigger 3rd app with shift behavior.
+ </description>
+ </key>
+ <key name="app-shift-hotkey-4" type="as">
+ <default><![CDATA[['<Shift><Super>4']]]></default>
+ <summary>Keybinding to trigger 4th dash app with shift behavior</summary>
+ <description>
+ Keybinding to trigger 4th app with shift behavior.
+ </description>
+ </key>
+ <key name="app-shift-hotkey-5" type="as">
+ <default><![CDATA[['<Shift><Super>5']]]></default>
+ <summary>Keybinding to trigger 5th dash app with shift behavior</summary>
+ <description>
+ Keybinding to trigger 5th app with shift behavior.
+ </description>
+ </key>
+ <key name="app-shift-hotkey-6" type="as">
+ <default><![CDATA[['<Shift><Super>6']]]></default>
+ <summary>Keybinding to trigger 6th dash app with shift behavior</summary>
+ <description>
+ Keybinding to trigger 6th app with shift behavior.
+ </description>
+ </key>
+ <key name="app-shift-hotkey-7" type="as">
+ <default><![CDATA[['<Shift><Super>7']]]></default>
+ <summary>Keybinding to trigger 7th dash app with shift behavior</summary>
+ <description>
+ Keybinding to trigger 7th app with shift behavior.
+ </description>
+ </key>
+ <key name="app-shift-hotkey-8" type="as">
+ <default><![CDATA[['<Shift><Super>8']]]></default>
+ <summary>Keybinding to trigger 8th dash app with shift behavior</summary>
+ <description>
+ Keybinding to trigger 8th app with shift behavior.
+ </description>
+ </key>
+ <key name="app-shift-hotkey-9" type="as">
+ <default><![CDATA[['<Shift><Super>9']]]></default>
+ <summary>Keybinding to trigger 9th dash app with shift behavior</summary>
+ <description>
+ Keybinding to trigger 9th app with shift behavior.
+ </description>
+ </key>
+ <key name="app-shift-hotkey-10" type="as">
+ <default><![CDATA[['<Shift><Super>0']]]></default>
+ <summary>Keybinding to trigger 10th dash app with shift behavior</summary>
+ <description>
+ Keybinding to trigger 10th app with shift behavior.
+ </description>
+ </key>
+ <key name="app-hotkey-1" type="as">
+ <default><![CDATA[['<Super>1']]]></default>
+ <summary>Keybinding to trigger 1st dash app</summary>
+ <description>
+ Keybinding to either show or launch the 1st application in the dash.
+ </description>
+ </key>
+ <key name="app-hotkey-2" type="as">
+ <default><![CDATA[['<Super>2']]]></default>
+ <summary>Keybinding to trigger 2nd dash app</summary>
+ <description>
+ Keybinding to either show or launch the 2nd application in the dash.
+ </description>
+ </key>
+ <key name="app-hotkey-3" type="as">
+ <default><![CDATA[['<Super>3']]]></default>
+ <summary>Keybinding to trigger 3rd dash app</summary>
+ <description>
+ Keybinding to either show or launch the 3rd application in the dash.
+ </description>
+ </key>
+ <key name="app-hotkey-4" type="as">
+ <default><![CDATA[['<Super>4']]]></default>
+ <summary>Keybinding to trigger 4th dash app</summary>
+ <description>
+ Keybinding to either show or launch the 4th application in the dash.
+ </description>
+ </key>
+ <key name="app-hotkey-5" type="as">
+ <default><![CDATA[['<Super>5']]]></default>
+ <summary>Keybinding to trigger 5th dash app</summary>
+ <description>
+ Keybinding to either show or launch the 5th application in the dash.
+ </description>
+ </key>
+ <key name="app-hotkey-6" type="as">
+ <default><![CDATA[['<Super>6']]]></default>
+ <summary>Keybinding to trigger 6th dash app</summary>
+ <description>
+ Keybinding to either show or launch the 6th application in the dash.
+ </description>
+ </key>
+ <key name="app-hotkey-7" type="as">
+ <default><![CDATA[['<Super>7']]]></default>
+ <summary>Keybinding to trigger 7th dash app</summary>
+ <description>
+ Keybinding to either show or launch the 7th application in the dash.
+ </description>
+ </key>
+ <key name="app-hotkey-8" type="as">
+ <default><![CDATA[['<Super>8']]]></default>
+ <summary>Keybinding to trigger 8th dash app</summary>
+ <description>
+ Keybinding to either show or launch the 8th application in the dash.
+ </description>
+ </key>
+ <key name="app-hotkey-9" type="as">
+ <default><![CDATA[['<Super>9']]]></default>
+ <summary>Keybinding to trigger 9th dash app</summary>
+ <description>
+ Keybinding to either show or launch the 9th application in the dash.
+ </description>
+ </key>
+ <key name="app-hotkey-10" type="as">
+ <default><![CDATA[['<Super>0']]]></default>
+ <summary>Keybinding to trigger 10th dash app</summary>
+ <description>
+ Keybinding to either show or launch the 10th application in the dash.
+ </description>
+ </key>
+ <key name="force-straight-corner" type="b">
+ <default>false</default>
+ <summary>Force straight corners in dash</summary>
+ <description>Make the borders in the dash non rounded</description>
+ </key>
+ <key name="unity-backlit-items" type="b">
+ <default>false</default>
+ <summary>Enable unity7 like glossy backlit items</summary>
+ <description>Emulate the unity7 backlit glossy items behaviour</description>
+ </key>
+ </schema>
+</schemalist>
diff --git a/extensions/dash-to-dock/stylesheet.css b/extensions/dash-to-dock/stylesheet.css
new file mode 100644
index 00000000..9a427f24
--- /dev/null
+++ b/extensions/dash-to-dock/stylesheet.css
@@ -0,0 +1,231 @@
+/* Shrink the dash by reducing padding */
+#dashtodockContainer.bottom.shrink #dash .dash-background {
+ border: 1px;
+ padding: 2.5px;
+ border-bottom: 0px; }
+
+#dashtodockContainer.bottom.shrink #dash .dash-item-container .app-well-app,
+#dashtodockContainer.bottom.shrink #dash .dash-item-container .show-apps {
+ padding: 2.5px; }
+
+#dashtodockContainer.bottom.extended #dash {
+ margin-top: 0;
+ margin-bottom: 0; }
+
+#dashtodockContainer.top.shrink #dash .dash-background {
+ border: 1px;
+ padding: 2.5px;
+ border-top: 0px; }
+
+#dashtodockContainer.top.shrink #dash .dash-item-container .app-well-app,
+#dashtodockContainer.top.shrink #dash .dash-item-container .show-apps {
+ padding: 2.5px; }
+
+#dashtodockContainer.top.extended #dash {
+ margin-top: 0;
+ margin-bottom: 0; }
+
+#dashtodockContainer.left.shrink #dash .dash-background {
+ border: 1px;
+ padding: 2.5px;
+ border-left: 0px; }
+
+#dashtodockContainer.left.shrink #dash .dash-item-container .app-well-app,
+#dashtodockContainer.left.shrink #dash .dash-item-container .show-apps {
+ padding: 2.5px; }
+
+#dashtodockContainer.left.extended #dash {
+ margin-top: 0;
+ margin-bottom: 0; }
+
+#dashtodockContainer.right.shrink #dash .dash-background {
+ border: 1px;
+ padding: 2.5px;
+ border-right: 0px; }
+
+#dashtodockContainer.right.shrink #dash .dash-item-container .app-well-app,
+#dashtodockContainer.right.shrink #dash .dash-item-container .show-apps {
+ padding: 2.5px; }
+
+#dashtodockContainer.right.extended #dash {
+ margin-top: 0;
+ margin-bottom: 0; }
+
+#dashtodockContainer.bottom.shrink #dash .dash-background {
+ margin-top: 0;
+ margin-bottom: 4px; }
+
+#dashtodockContainer.straight-corner #dash .dash-background,
+#dashtodockContainer.shrink.straight-corner #dash .dash-background {
+ border-radius: 0px; }
+
+/* Scrollview style */
+.bottom #dashtodockDashScrollview,
+.top #dashtodockDashScrollview {
+ -st-hfade-offset: 24px; }
+
+.left #dashtodockDashScrollview,
+.right #dashtodockDashScrollview {
+ -st-vfade-offset: 24px; }
+
+#dashtodockContainer.running-dots .dash-item-container > StButton,
+#dashtodockContainer.dashtodock .dash-item-container > StButton {
+ transition-duration: 250;
+ background-size: contain; }
+
+#dashtodockContainer #dash .dash-separator {
+ margin-bottom: 0; }
+
+#dashtodockContainer #dash .vertical-dash-separator {
+ height: 1px;
+ margin: 6.5px 0;
+ background-color: rgba(238, 238, 236, 0.3); }
+
+#dashtodockContainer.bottom #dash {
+ margin-top: 0; }
+ #dashtodockContainer.bottom #dash .dash-background {
+ margin-bottom: 8px; }
+ #dashtodockContainer.bottom #dash .dash-item-container .app-well-app,
+ #dashtodockContainer.bottom #dash .dash-item-container .show-apps {
+ padding: 10px 1.5px 18px; }
+
+#dashtodockContainer.bottom.overview #dash {
+ margin-top: 12px; }
+
+#dashtodockContainer.bottom.extended #dash .dash-background, #dashtodockContainer.bottom.shrink #dash .dash-background {
+ margin-bottom: 0; }
+
+#dashtodockContainer.bottom.extended #dash .dash-item-container .app-well-app,
+#dashtodockContainer.bottom.extended #dash .dash-item-container .show-apps {
+ padding-bottom: 10px; }
+
+#dashtodockContainer.bottom.shrink #dash .dash-item-container .app-well-app,
+#dashtodockContainer.bottom.shrink #dash .dash-item-container .show-apps {
+ padding-bottom: 2.5px; }
+
+#dashtodockContainer.left #dash,
+#dashtodockContainer.right #dash {
+ padding-left: 4px;
+ padding-right: 4px; }
+ #dashtodockContainer.left #dash .dash-item-container .app-well-app,
+ #dashtodockContainer.left #dash .dash-item-container .show-apps,
+ #dashtodockContainer.right #dash .dash-item-container .app-well-app,
+ #dashtodockContainer.right #dash .dash-item-container .show-apps {
+ /* In vertical we don't want to add additional padding below the button. */
+ padding-bottom: 6px;
+ padding-top: 6px; }
+
+#dashtodockContainer.left.shrink #dash,
+#dashtodockContainer.right.shrink #dash {
+ padding-left: 0;
+ padding-right: 0; }
+
+#dashtodockContainer.top #dash {
+ margin-bottom: 0px; }
+
+/* Dash height extended to the whole available vertical space */
+#dashtodockContainer.extended.left #dash, #dashtodockContainer.extended.right #dash, #dashtodockContainer.extended.top #dash, #dashtodockContainer.extended.bottom #dash {
+ padding-top: 0;
+ padding-bottom: 0;
+ padding-left: 0;
+ padding-right: 0; }
+ #dashtodockContainer.extended.left #dash .dash-background, #dashtodockContainer.extended.right #dash .dash-background, #dashtodockContainer.extended.top #dash .dash-background, #dashtodockContainer.extended.bottom #dash .dash-background {
+ border-radius: 0; }
+
+#dashtodockContainer.extended.top #dash, #dashtodockContainer.extended.bottom #dash {
+ border-left: 0px;
+ border-right: 0px; }
+ #dashtodockContainer.extended.top #dash .dash-background, #dashtodockContainer.extended.bottom #dash .dash-background {
+ padding-left: 0;
+ padding-right: 0; }
+
+#dashtodockContainer.extended.left #dash, #dashtodockContainer.extended.right #dash {
+ border-top: 0px;
+ border-bottom: 0px; }
+
+/* Running and focused application style */
+#dashtodockContainer.running-dots .app-well-app.running > .overview-icon,
+#dashtodockContainer.dashtodock .app-well-app.running > .overview-icon {
+ background-image: none; }
+
+#dashtodockContainer.running-dots .app-well-app.focused .overview-icon,
+#dashtodockContainer.dashtodock .app-well-app.focused .overview-icon {
+ background-color: rgba(238, 238, 236, 0.2); }
+
+#dashtodockContainer.dashtodock #dash .dash-background {
+ background: #2e3436; }
+
+#dashtodockContainer.dashtodock .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);
+ */ }
+
+#dashtodockContainer.top #dash .placeholder,
+#dashtodockContainer.bottom #dash .placeholder {
+ width: 32px;
+ height: 1px; }
+
+/*
+ * This is applied to a dummy actor. Only the alpha value for the background and border color
+ * and the transition-duration are used
+ */
+#dashtodockContainer.dummy-opaque {
+ background-color: rgba(0, 0, 0, 0.8);
+ border-color: rgba(0, 0, 0, 0.4);
+ transition-duration: 300ms; }
+
+/*
+ * This is applied to a dummy actor. Only the alpha value for the background and border color
+ * and the transition-duration are used
+ */
+#dashtodockContainer.dummy-transparent {
+ background-color: rgba(0, 0, 0, 0.2);
+ border-color: rgba(0, 0, 0, 0.1);
+ transition-duration: 500ms; }
+
+#dashtodockContainer .number-overlay {
+ color: white;
+ background-color: rgba(0, 0, 0, 0.8);
+ text-align: center; }
+
+#dashtodockContainer .notification-badge {
+ color: white;
+ background-color: red;
+ padding: 0.2em 0.5em;
+ border-radius: 1em;
+ font-weight: bold;
+ text-align: center;
+ margin: 2px; }
+
+#dashtodockPreviewSeparator.popup-separator-menu-item-horizontal {
+ width: 1px;
+ height: auto;
+ border-right-width: 1px;
+ margin: 32px 0px; }
+
+.dashtodock-app-well-preview-menu-item {
+ padding: 1em 1em 0.5em 1em; }
+
+#dashtodockContainer .metro .overview-icon {
+ border-radius: 0px; }
+
+#dashtodockContainer.bottom .metro.running2.focused,
+#dashtodockContainer.bottom .metro.running3.focused,
+#dashtodockContainer.bottom .metro.running4.focused,
+#dashtodockContainer.top .metro.running2.focused,
+#dashtodockContainer.top .metro.running3.focused,
+#dashtodockContainer.top .metro.running4.focused {
+ background-image: url("./media/highlight_stacked_bg.svg");
+ background-position: 0px 0px;
+ background-size: contain; }
+
+#dashtodockContainer.left .metro.running2.focused,
+#dashtodockContainer.left .metro.running3.focused,
+#dashtodockContainer.left .metro.running4.focused,
+#dashtodockContainer.right .metro.running2.focused,
+#dashtodockContainer.right .metro.running3.focused,
+#dashtodockContainer.right .metro.running4.focused {
+ background-image: url("./media/highlight_stacked_bg_h.svg");
+ background-position: 0px 0px;
+ background-size: contain; }
diff --git a/extensions/dash-to-dock/theming.js b/extensions/dash-to-dock/theming.js
new file mode 100644
index 00000000..4b9e10ac
--- /dev/null
+++ b/extensions/dash-to-dock/theming.js
@@ -0,0 +1,553 @@
+// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
+
+const Gio = imports.gi.Gio;
+const GLib = imports.gi.GLib;
+const Signals = imports.signals;
+const Meta = imports.gi.Meta;
+const Shell = imports.gi.Shell;
+const St = imports.gi.St;
+const Clutter = imports.gi.Clutter;
+
+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 Docking = Me.imports.docking;
+const Utils = Me.imports.utils;
+
+/*
+ * DEFAULT: transparency given by theme
+ * FIXED: constant transparency chosen by user
+ * DYNAMIC: apply 'transparent' style when no windows are close to the dock
+ * */
+const TransparencyMode = {
+ DEFAULT: 0,
+ FIXED: 1,
+ DYNAMIC: 3
+};
+
+/**
+ * Manage theme customization and custom theme support
+ */
+var ThemeManager = class DashToDock_ThemeManager {
+
+ constructor(dock) {
+ this._signalsHandler = new Utils.GlobalSignalsHandler();
+ this._bindSettingsChanges();
+ this._actor = dock;
+ this._dash = dock.dash;
+
+ // initialize colors with generic values
+ this._customizedBackground = {red: 0, green: 0, blue: 0, alpha: 0};
+ this._customizedBorder = {red: 0, green: 0, blue: 0, alpha: 0};
+ this._transparency = new Transparency(dock);
+
+ this._signalsHandler.add([
+ // When theme changes re-obtain default background color
+ St.ThemeContext.get_for_stage (global.stage),
+ 'changed',
+ this.updateCustomTheme.bind(this)
+ ], [
+ // update :overview pseudoclass
+ Main.overview,
+ 'showing',
+ this._onOverviewShowing.bind(this)
+ ], [
+ Main.overview,
+ 'hiding',
+ this._onOverviewHiding.bind(this)
+ ]);
+
+ this._updateCustomStyleClasses();
+
+ // destroy themeManager when the managed actor is destroyed (e.g. extension unload)
+ // in order to disconnect signals
+ this._actor.connect('destroy', this.destroy.bind(this));
+
+ }
+
+ destroy() {
+ this._signalsHandler.destroy();
+ this._transparency.destroy();
+ }
+
+ _onOverviewShowing() {
+ this._actor.add_style_pseudo_class('overview');
+ }
+
+ _onOverviewHiding() {
+ this._actor.remove_style_pseudo_class('overview');
+ }
+
+ _updateDashOpacity() {
+ let newAlpha = Docking.DockManager.settings.get_double('background-opacity');
+
+ let [backgroundColor, borderColor] = this._getDefaultColors();
+
+ if (backgroundColor==null)
+ return;
+
+ // Get the background and border alphas. We check the background alpha
+ // for a minimum of .001 to prevent division by 0 errors
+ let backgroundAlpha = Math.max(Math.round(backgroundColor.alpha/2.55)/100, .001);
+ let borderAlpha = Math.round(borderColor.alpha/2.55)/100;
+
+ // The border and background alphas should remain in sync
+ // We also limit the borderAlpha to a maximum of 1 (full opacity)
+ borderAlpha = Math.min((borderAlpha/backgroundAlpha)*newAlpha, 1);
+
+ this._customizedBackground = 'rgba(' +
+ backgroundColor.red + ',' +
+ backgroundColor.green + ',' +
+ backgroundColor.blue + ',' +
+ newAlpha + ')';
+
+ this._customizedBorder = 'rgba(' +
+ borderColor.red + ',' +
+ borderColor.green + ',' +
+ borderColor.blue + ',' +
+ borderAlpha + ')';
+
+ }
+
+ _getDefaultColors() {
+ // Prevent shell crash if the actor is not on the stage.
+ // It happens enabling/disabling repeatedly the extension
+ if (!this._dash._container.get_stage())
+ return [null, null];
+
+ // Remove custom style
+ let oldStyle = this._dash._container.get_style();
+ this._dash._container.set_style(null);
+
+ let themeNode = this._dash._container.get_theme_node();
+ this._dash._container.set_style(oldStyle);
+
+ let backgroundColor = themeNode.get_background_color();
+
+ // Just in case the theme has different border colors ..
+ // We want to find the inside border-color of the dock because it is
+ // the side most visible to the user. We do this by finding the side
+ // opposite the position
+ let position = Utils.getPosition();
+ let side = position + 2;
+ if (side > 3)
+ side = Math.abs(side - 4);
+
+ let borderColor = themeNode.get_border_color(side);
+
+ return [backgroundColor, borderColor];
+ }
+
+ _updateDashColor() {
+ // Retrieve the color. If needed we will adjust it before passing it to
+ // this._transparency.
+ let [backgroundColor, borderColor] = this._getDefaultColors();
+
+ if (backgroundColor==null)
+ return;
+
+ let settings = Docking.DockManager.settings;
+
+ if (settings.get_boolean('custom-background-color')) {
+ // When applying a custom color, we need to check the alpha value,
+ // if not the opacity will always be overridden by the color below.
+ // Note that if using 'dynamic' transparency modes,
+ // the opacity will be set by the opaque/transparent styles anyway.
+ let newAlpha = Math.round(backgroundColor.alpha/2.55)/100;
+ if (settings.get_enum('transparency-mode') == TransparencyMode.FIXED)
+ newAlpha = settings.get_double('background-opacity');
+
+ backgroundColor = settings.get_string('background-color');
+
+ this._customizedBackground = backgroundColor;
+
+ this._customizedBorder = this._customizedBackground;
+
+ // backgroundColor is a string like rgb(0,0,0)
+ const color = Clutter.Color.from_string(backgroundColor);
+ color.alpha = newAlpha;
+
+ this._transparency.setColor(color);
+ } else {
+ // backgroundColor is a Clutter.Color object
+ this._transparency.setColor(backgroundColor);
+ }
+ }
+
+ _updateCustomStyleClasses() {
+ let settings = Docking.DockManager.settings;
+
+ if (settings.get_boolean('apply-custom-theme'))
+ this._actor.add_style_class_name('dashtodock');
+ else
+ this._actor.remove_style_class_name('dashtodock');
+
+ if (settings.get_boolean('custom-theme-shrink'))
+ this._actor.add_style_class_name('shrink');
+ else
+ this._actor.remove_style_class_name('shrink');
+
+ if (settings.get_enum('running-indicator-style') !== 0)
+ this._actor.add_style_class_name('running-dots');
+ else
+ this._actor.remove_style_class_name('running-dots');
+
+ // If not the built-in theme option is not selected
+ if (!settings.get_boolean('apply-custom-theme')) {
+ if (settings.get_boolean('force-straight-corner'))
+ this._actor.add_style_class_name('straight-corner');
+ else
+ this._actor.remove_style_class_name('straight-corner');
+ } else {
+ this._actor.remove_style_class_name('straight-corner');
+ }
+ }
+
+ updateCustomTheme() {
+ this._updateCustomStyleClasses();
+ this._updateDashOpacity();
+ this._updateDashColor();
+ this._adjustTheme();
+ this._dash._redisplay();
+ }
+
+ /**
+ * Reimported back and adapted from atomdock
+ */
+ _adjustTheme() {
+ // Prevent shell crash if the actor is not on the stage.
+ // It happens enabling/disabling repeatedly the extension
+ if (!this._dash._background.get_stage())
+ return;
+
+ let settings = Docking.DockManager.settings;
+
+ // Remove prior style edits
+ this._dash._background.set_style(null);
+ this._transparency.disable();
+
+ // If built-in theme is enabled do nothing else
+ if (settings.get_boolean('apply-custom-theme'))
+ return;
+
+ let newStyle = '';
+ let position = Utils.getPosition(settings);
+
+ // obtain theme border settings
+ let themeNode = this._dash._background.get_theme_node();
+ let borderColor = themeNode.get_border_color(St.Side.TOP);
+ let borderWidth = themeNode.get_border_width(St.Side.TOP);
+
+ // We're copying border and corner styles to left border and top-left
+ // corner, also removing bottom border and bottom-right corner styles
+ let borderInner = '';
+ let borderMissingStyle = '';
+
+ if (this._rtl && (position != St.Side.RIGHT))
+ borderMissingStyle = 'border-right: ' + borderWidth + 'px solid ' +
+ borderColor.to_string() + ';';
+ else if (!this._rtl && (position != St.Side.LEFT))
+ borderMissingStyle = 'border-left: ' + borderWidth + 'px solid ' +
+ borderColor.to_string() + ';';
+
+ newStyle = borderMissingStyle;
+
+ // I do call set_style possibly twice so that only the background gets the transition.
+ // The transition-property css rules seems to be unsupported
+ this._dash._background.set_style(newStyle);
+
+ // Customize background
+ let fixedTransparency = settings.get_enum('transparency-mode') == TransparencyMode.FIXED;
+ let defaultTransparency = settings.get_enum('transparency-mode') == TransparencyMode.DEFAULT;
+ if (!defaultTransparency && !fixedTransparency) {
+ this._transparency.enable();
+ }
+ else if (!defaultTransparency || settings.get_boolean('custom-background-color')) {
+ newStyle = newStyle + 'background-color:'+ this._customizedBackground + '; ' +
+ 'border-color:'+ this._customizedBorder + '; ' +
+ 'transition-delay: 0s; transition-duration: 0.250s;';
+ this._dash._background.set_style(newStyle);
+ }
+ }
+
+ _bindSettingsChanges() {
+ let keys = ['transparency-mode',
+ 'customize-alphas',
+ 'min-alpha',
+ 'max-alpha',
+ 'background-opacity',
+ 'custom-background-color',
+ 'background-color',
+ 'apply-custom-theme',
+ 'custom-theme-shrink',
+ 'custom-theme-running-dots',
+ 'extend-height',
+ 'force-straight-corner'];
+
+ keys.forEach(function(key) {
+ this._signalsHandler.add([
+ Docking.DockManager.settings,
+ 'changed::' + key,
+ this.updateCustomTheme.bind(this)
+ ]);
+ }, this);
+ }
+};
+
+/**
+ * The following class is based on the following upstream commit:
+ * https://git.gnome.org/browse/gnome-shell/commit/?id=447bf55e45b00426ed908b1b1035f472c2466956
+ * Transparency when free-floating
+ */
+var Transparency = class DashToDock_Transparency {
+
+ constructor(dock) {
+ this._dash = dock.dash;
+ this._actor = this._dash._container;
+ this._backgroundActor = this._dash._background;
+ this._dockActor = dock;
+ this._dock = dock;
+ this._panel = Main.panel;
+ this._position = Utils.getPosition();
+
+ // All these properties are replaced with the ones in the .dummy-opaque and .dummy-transparent css classes
+ this._backgroundColor = '0,0,0';
+ this._transparentAlpha = '0.2';
+ this._opaqueAlpha = '1';
+ this._transparentAlphaBorder = '0.1';
+ this._opaqueAlphaBorder = '0.5';
+ this._transparentTransition = '0ms';
+ this._opaqueTransition = '0ms';
+ this._base_actor_style = "";
+
+ this._signalsHandler = new Utils.GlobalSignalsHandler();
+ this._injectionsHandler = new Utils.InjectionsHandler();
+ this._trackedWindows = new Map();
+ }
+
+ enable() {
+ // ensure I never double-register/inject
+ // although it should never happen
+ this.disable();
+
+ this._base_actor_style = this._actor.get_style();
+ if (this._base_actor_style == null) {
+ this._base_actor_style = "";
+ }
+
+ this._signalsHandler.addWithLabel('transparency', [
+ global.window_group,
+ 'actor-added',
+ this._onWindowActorAdded.bind(this)
+ ], [
+ global.window_group,
+ 'actor-removed',
+ this._onWindowActorRemoved.bind(this)
+ ], [
+ global.window_manager,
+ 'switch-workspace',
+ this._updateSolidStyle.bind(this)
+ ], [
+ Main.overview,
+ 'hiding',
+ this._updateSolidStyle.bind(this)
+ ], [
+ Main.overview,
+ 'showing',
+ this._updateSolidStyle.bind(this)
+ ]);
+
+ // Window signals
+ global.window_group.get_children().filter(function(child) {
+ // An irrelevant window actor ('Gnome-shell') produces an error when the signals are
+ // disconnected, therefore do not add signals to it.
+ return child instanceof Meta.WindowActor &&
+ child.get_meta_window().get_wm_class() !== 'Gnome-shell';
+ }).forEach(function(win) {
+ this._onWindowActorAdded(null, win);
+ }, this);
+
+ if (this._actor.get_stage())
+ this._updateSolidStyle();
+
+ this._updateStyles();
+ this._updateSolidStyle();
+
+ this.emit('transparency-enabled');
+ }
+
+ disable() {
+ // ensure I never double-register/inject
+ // although it should never happen
+ this._signalsHandler.removeWithLabel('transparency');
+
+ for (let key of this._trackedWindows.keys())
+ this._trackedWindows.get(key).forEach(id => {
+ key.disconnect(id);
+ });
+ this._trackedWindows.clear();
+
+ this.emit('transparency-disabled');
+ }
+
+ destroy() {
+ this.disable();
+ this._signalsHandler.destroy();
+ this._injectionsHandler.destroy();
+ }
+
+ _onWindowActorAdded(container, metaWindowActor) {
+ let signalIds = [];
+ ['notify::allocation', 'notify::visible'].forEach(s => {
+ signalIds.push(metaWindowActor.connect(s, this._updateSolidStyle.bind(this)));
+ });
+ this._trackedWindows.set(metaWindowActor, signalIds);
+ }
+
+ _onWindowActorRemoved(container, metaWindowActor) {
+ if (!this._trackedWindows.get(metaWindowActor))
+ return;
+
+ this._trackedWindows.get(metaWindowActor).forEach(id => {
+ metaWindowActor.disconnect(id);
+ });
+ this._trackedWindows.delete(metaWindowActor);
+ this._updateSolidStyle();
+ }
+
+ _updateSolidStyle() {
+ let isNear = this._dockIsNear();
+ if (isNear) {
+ this._backgroundActor.set_style(this._opaque_style);
+ this._dockActor.remove_style_class_name('transparent');
+ this._dockActor.add_style_class_name('opaque');
+ }
+ else {
+ this._backgroundActor.set_style(this._transparent_style);
+ this._dockActor.remove_style_class_name('opaque');
+ this._dockActor.add_style_class_name('transparent');
+ }
+
+ this.emit('solid-style-updated', isNear);
+ }
+
+ _dockIsNear() {
+ if (this._dockActor.has_style_pseudo_class('overview'))
+ return false;
+ /* Get all the windows in the active workspace that are in the primary monitor and visible */
+ let activeWorkspace = global.workspace_manager.get_active_workspace();
+ let dash = this._dash;
+ let windows = activeWorkspace.list_windows().filter(function(metaWindow) {
+ return metaWindow.get_monitor() === dash._monitorIndex &&
+ metaWindow.showing_on_its_workspace() &&
+ metaWindow.get_window_type() != Meta.WindowType.DESKTOP;
+ });
+
+ /* Check if at least one window is near enough to the panel.
+ * If the dock is hidden, we need to account for the space it would take
+ * up when it slides out. This is avoid an ugly transition.
+ * */
+ let factor = 0;
+ if (!Docking.DockManager.settings.get_boolean('dock-fixed') &&
+ this._dock.getDockState() == Docking.State.HIDDEN)
+ factor = 1;
+ let [leftCoord, topCoord] = this._actor.get_transformed_position();
+ let threshold;
+ if (this._position === St.Side.LEFT)
+ threshold = leftCoord + this._actor.get_width() * (factor + 1);
+ else if (this._position === St.Side.RIGHT)
+ threshold = leftCoord - this._actor.get_width() * factor;
+ else if (this._position === St.Side.TOP)
+ threshold = topCoord + this._actor.get_height() * (factor + 1);
+ else
+ threshold = topCoord - this._actor.get_height() * factor;
+
+ let scale = St.ThemeContext.get_for_stage(global.stage).scale_factor;
+ let isNearEnough = windows.some((metaWindow) => {
+ let coord;
+ if (this._position === St.Side.LEFT) {
+ coord = metaWindow.get_frame_rect().x;
+ return coord < threshold + 5 * scale;
+ }
+ else if (this._position === St.Side.RIGHT) {
+ coord = metaWindow.get_frame_rect().x + metaWindow.get_frame_rect().width;
+ return coord > threshold - 5 * scale;
+ }
+ else if (this._position === St.Side.TOP) {
+ coord = metaWindow.get_frame_rect().y;
+ return coord < threshold + 5 * scale;
+ }
+ else {
+ coord = metaWindow.get_frame_rect().y + metaWindow.get_frame_rect().height;
+ return coord > threshold - 5 * scale;
+ }
+ });
+
+ return isNearEnough;
+ }
+
+ _updateStyles() {
+ this._getAlphas();
+
+ this._transparent_style = this._base_actor_style +
+ 'background-color: rgba(' +
+ this._backgroundColor + ', ' + this._transparentAlpha + ');' +
+ 'border-color: rgba(' +
+ this._backgroundColor + ', ' + this._transparentAlphaBorder + ');' +
+ 'transition-duration: ' + this._transparentTransition + 'ms;';
+
+ this._opaque_style = this._base_actor_style +
+ 'background-color: rgba(' +
+ this._backgroundColor + ', ' + this._opaqueAlpha + ');' +
+ 'border-color: rgba(' +
+ this._backgroundColor + ',' + this._opaqueAlphaBorder + ');' +
+ 'transition-duration: ' + this._opaqueTransition + 'ms;';
+
+ this.emit('styles-updated');
+ }
+
+ setColor(color) {
+ this._backgroundColor = color.red + ',' + color.green + ',' + color.blue;
+ this._updateStyles();
+ }
+
+ _getAlphas() {
+ // Create dummy object and add to the uiGroup to get it to the stage
+ let dummyObject = new St.Bin({
+ name: 'dashtodockContainer',
+ });
+ Main.uiGroup.add_child(dummyObject);
+
+ dummyObject.add_style_class_name('dummy-opaque');
+ let themeNode = dummyObject.get_theme_node();
+ this._opaqueAlpha = themeNode.get_background_color().alpha / 255;
+ this._opaqueAlphaBorder = themeNode.get_border_color(0).alpha / 255;
+ this._opaqueTransition = themeNode.get_transition_duration();
+
+ dummyObject.add_style_class_name('dummy-transparent');
+ themeNode = dummyObject.get_theme_node();
+ this._transparentAlpha = themeNode.get_background_color().alpha / 255;
+ this._transparentAlphaBorder = themeNode.get_border_color(0).alpha / 255;
+ this._transparentTransition = themeNode.get_transition_duration();
+
+ Main.uiGroup.remove_child(dummyObject);
+
+ let settings = Docking.DockManager.settings;
+
+ if (settings.get_boolean('customize-alphas')) {
+ this._opaqueAlpha = settings.get_double('max-alpha');
+ this._opaqueAlphaBorder = this._opaqueAlpha / 2;
+ this._transparentAlpha = settings.get_double('min-alpha');
+ this._transparentAlphaBorder = this._transparentAlpha / 2;
+ }
+ }
+};
+Signals.addSignalMethods(Transparency.prototype);
diff --git a/extensions/dash-to-dock/utils.js b/extensions/dash-to-dock/utils.js
new file mode 100644
index 00000000..3dd8029c
--- /dev/null
+++ b/extensions/dash-to-dock/utils.js
@@ -0,0 +1,308 @@
+const Clutter = imports.gi.Clutter;
+const Meta = imports.gi.Meta;
+const St = imports.gi.St;
+
+const Me = imports.misc.extensionUtils.getCurrentExtension();
+const Docking = Me.imports.docking;
+
+var SignalsHandlerFlags = {
+ NONE: 0,
+ CONNECT_AFTER: 1
+};
+
+/**
+ * Simplify global signals and function injections handling
+ * abstract class
+ */
+const BasicHandler = class DashToDock_BasicHandler {
+
+ constructor() {
+ this._storage = new Object();
+ }
+
+ add(/* unlimited 3-long array arguments */) {
+ // Convert arguments object to array, concatenate with generic
+ // Call addWithLabel with ags as if they were passed arguments
+ this.addWithLabel('generic', ...arguments);
+ }
+
+ destroy() {
+ for( let label in this._storage )
+ this.removeWithLabel(label);
+ }
+
+ addWithLabel(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];
+ try {
+ item.push(this._create(arguments[i]));
+ } catch (e) {
+ logError(e);
+ }
+ }
+ }
+
+ removeWithLabel(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(item) {
+ throw new GObject.NotImplementedError(`_create in ${this.constructor.name}`);
+ }
+
+ /**
+ * Correctly delete single element
+ */
+ _remove(item) {
+ throw new GObject.NotImplementedError(`_remove in ${this.constructor.name}`);
+ }
+};
+
+/**
+ * Manage global signals
+ */
+var GlobalSignalsHandler = class DashToDock_GlobalSignalHandler extends BasicHandler {
+
+ _create(item) {
+ let object = item[0];
+ let event = item[1];
+ let callback = item[2]
+ let flags = item.length > 3 ? item[3] : SignalsHandlerFlags.NONE;
+
+ if (!object)
+ throw new Error('Impossible to connect to an invalid object');
+
+ let after = flags == SignalsHandlerFlags.CONNECT_AFTER;
+ let connector = after ? object.connect_after : object.connect;
+
+ if (!connector) {
+ throw new Error(`Requested to connect to signal '${event}', ` +
+ `but no implementation for 'connect${after ? '_after' : ''}' `+
+ `found in ${object.constructor.name}`);
+ }
+
+ let id = connector.call(object, event, callback);
+
+ return [object, id];
+ }
+
+ _remove(item) {
+ item[0].disconnect(item[1]);
+ }
+};
+
+/**
+ * Color manipulation utilities
+ */
+var ColorUtils = class DashToDock_ColorUtils {
+
+ // Darken or brigthen color by a fraction dlum
+ // Each rgb value is modified by the same fraction.
+ // Return "#rrggbb" string
+ static ColorLuminance(r, g, b, dlum) {
+ 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;
+ }
+
+ // Convert decimal to an hexadecimal string adding the desired padding
+ static _decimalToHex(d, padding) {
+ let hex = d.toString(16);
+ while (hex.length < padding)
+ hex = '0'+ hex;
+ return hex;
+ }
+
+ // 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.
+ static HSVtoRGB(h, s, v) {
+ 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)
+ };
+ }
+
+ // 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.
+ static RGBtoHSV(r, g, b) {
+ 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
+ };
+ }
+};
+
+/**
+ * Manage function injection: both instances and prototype can be overridden
+ * and restored
+ */
+var InjectionsHandler = class DashToDock_InjectionsHandler extends BasicHandler {
+
+ _create(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(item) {
+ let object = item[0];
+ let name = item[1];
+ let original = item[3];
+ object[name] = original;
+ }
+};
+
+/**
+ * Return the actual position reverseing left and right in rtl
+ */
+function getPosition() {
+ let position = Docking.DockManager.settings.get_enum('dock-position');
+ if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL) {
+ if (position == St.Side.LEFT)
+ position = St.Side.RIGHT;
+ else if (position == St.Side.RIGHT)
+ position = St.Side.LEFT;
+ }
+ return position;
+}
+
+function drawRoundedLine(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();
+}
+
+/**
+ * Convert a signal handler with n value parameters (that is, excluding the
+ * signal source parameter) to an array of n handlers that are each responsible
+ * for receiving one of the n values and calling the original handler with the
+ * most up-to-date arguments.
+ */
+function splitHandler(handler) {
+ if (handler.length > 30) {
+ throw new Error("too many parameters");
+ }
+ const count = handler.length - 1;
+ let missingValueBits = (1 << count) - 1;
+ const values = Array.from({ length: count });
+ return values.map((_ignored, i) => {
+ const mask = ~(1 << i);
+ return (obj, value) => {
+ values[i] = value;
+ missingValueBits &= mask;
+ if (missingValueBits === 0) {
+ handler(obj, ...values);
+ }
+ };
+ });
+}
diff --git a/extensions/dash-to-dock/windowPreview.js b/extensions/dash-to-dock/windowPreview.js
new file mode 100644
index 00000000..8cb14b88
--- /dev/null
+++ b/extensions/dash-to-dock/windowPreview.js
@@ -0,0 +1,598 @@
+/*
+ * Credits:
+ * This file is based on code from the Dash to Panel extension by Jason DeRose
+ * 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 GLib = imports.gi.GLib;
+const GObject = imports.gi.GObject;
+const St = imports.gi.St;
+const Main = imports.ui.main;
+
+const Params = imports.misc.params;
+const PopupMenu = imports.ui.popupMenu;
+const Workspace = imports.ui.workspace;
+
+const Me = imports.misc.extensionUtils.getCurrentExtension();
+const Utils = Me.imports.utils;
+
+const PREVIEW_MAX_WIDTH = 250;
+const PREVIEW_MAX_HEIGHT = 150;
+
+const PREVIEW_ANIMATION_DURATION = 250;
+
+var WindowPreviewMenu = class DashToDock_WindowPreviewMenu extends PopupMenu.PopupMenu {
+
+ constructor(source) {
+ let side = Utils.getPosition();
+ super(source, 0.5, side);
+
+ // We want to keep the item hovered while the menu is up
+ this.blockSourceEvents = true;
+
+ this._source = source;
+ this._app = this._source.app;
+ let monitorIndex = this._source.monitorIndex;
+
+ this.actor.add_style_class_name('app-well-menu');
+ this.actor.set_style('max-width: ' + (Main.layoutManager.monitors[monitorIndex].width - 22) + 'px; ' +
+ 'max-height: ' + (Main.layoutManager.monitors[monitorIndex].height - 22) + 'px;');
+ this.actor.hide();
+
+ // Chain our visibility and lifecycle to that of the source
+ this._mappedId = this._source.connect('notify::mapped', () => {
+ if (!this._source.mapped)
+ this.close();
+ });
+ this._destroyId = this._source.connect('destroy', this.destroy.bind(this));
+
+ Main.uiGroup.add_actor(this.actor);
+
+ // Change the initialized side where required.
+ this._arrowSide = side;
+ this._boxPointer._arrowSide = side;
+ this._boxPointer._userArrowSide = side;
+
+ this.connect('destroy', this._onDestroy.bind(this));
+ }
+
+ _redisplay() {
+ if (this._previewBox)
+ this._previewBox.destroy();
+ this._previewBox = new WindowPreviewList(this._source);
+ this.addMenuItem(this._previewBox);
+ this._previewBox._redisplay();
+ }
+
+ popup() {
+ let windows = this._source.getInterestingWindows();
+ if (windows.length > 0) {
+ this._redisplay();
+ this.open();
+ this.actor.navigate_focus(null, St.DirectionType.TAB_FORWARD, false);
+ this._source.emit('sync-tooltip');
+ }
+ }
+
+ _onDestroy() {
+ if (this._mappedId)
+ this._source.disconnect(this._mappedId);
+
+ if (this._destroyId)
+ this._source.disconnect(this._destroyId);
+ }
+};
+
+var WindowPreviewList = class DashToDock_WindowPreviewList extends PopupMenu.PopupMenuSection {
+
+ constructor(source) {
+ super();
+ this.actor = new St.ScrollView({
+ name: 'dashtodockWindowScrollview',
+ hscrollbar_policy: St.PolicyType.NEVER,
+ vscrollbar_policy: St.PolicyType.NEVER,
+ enable_mouse_scrolling: true
+ });
+
+ this.actor.connect('scroll-event', this._onScrollEvent.bind(this));
+
+ let position = Utils.getPosition();
+ this.isHorizontal = position == St.Side.BOTTOM || position == St.Side.TOP;
+ this.box.set_vertical(!this.isHorizontal);
+ this.box.set_name('dashtodockWindowList');
+ this.actor.add_actor(this.box);
+ this.actor._delegate = this;
+
+ this._shownInitially = false;
+
+ this._source = source;
+ this.app = source.app;
+
+ this._redisplayId = Main.initializeDeferredWork(this.actor, this._redisplay.bind(this));
+
+ this.actor.connect('destroy', this._onDestroy.bind(this));
+ this._stateChangedId = this.app.connect('windows-changed',
+ this._queueRedisplay.bind(this));
+ }
+
+ _queueRedisplay () {
+ Main.queueDeferredWork(this._redisplayId);
+ }
+
+ _onScrollEvent(actor, event) {
+ // Event coordinates are relative to the stage but can be transformed
+ // as the actor will only receive events within his bounds.
+ let stage_x, stage_y, ok, event_x, event_y, actor_w, actor_h;
+ [stage_x, stage_y] = event.get_coords();
+ [ok, event_x, event_y] = actor.transform_stage_point(stage_x, stage_y);
+ [actor_w, actor_h] = actor.get_size();
+
+ // If the scroll event is within a 1px margin from
+ // the relevant edge of the actor, let the event propagate.
+ if (event_y >= actor_h - 2)
+ return Clutter.EVENT_PROPAGATE;
+
+ // Skip to avoid double events mouse
+ if (event.is_pointer_emulated())
+ return Clutter.EVENT_STOP;
+
+ let adjustment, delta;
+
+ if (this.isHorizontal)
+ adjustment = this.actor.get_hscroll_bar().get_adjustment();
+ else
+ adjustment = this.actor.get_vscroll_bar().get_adjustment();
+
+ let increment = adjustment.step_increment;
+
+ switch ( event.get_scroll_direction() ) {
+ case Clutter.ScrollDirection.UP:
+ delta = -increment;
+ break;
+ case Clutter.ScrollDirection.DOWN:
+ 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;
+ }
+
+ _onDestroy() {
+ this.app.disconnect(this._stateChangedId);
+ this._stateChangedId = 0;
+ }
+
+ _createPreviewItem(window) {
+ let preview = new WindowPreviewMenuItem(window);
+ return preview;
+ }
+
+ _redisplay () {
+ let children = this._getMenuItems().filter(function(actor) {
+ return actor._window;
+ });
+
+ // Windows currently on the menu
+ let oldWin = children.map(function(actor) {
+ return actor._window;
+ });
+
+ // All app windows with a static order
+ let newWin = this._source.getInterestingWindows().sort(function(a, b) {
+ return a.get_stable_sequence() > b.get_stable_sequence();
+ });
+
+ let addedItems = [];
+ let removedActors = [];
+
+ let newIndex = 0;
+ let oldIndex = 0;
+
+ while (newIndex < newWin.length || oldIndex < oldWin.length) {
+ // No change at oldIndex/newIndex
+ if (oldWin[oldIndex] &&
+ oldWin[oldIndex] == newWin[newIndex]) {
+ oldIndex++;
+ newIndex++;
+ continue;
+ }
+
+ // Window removed at oldIndex
+ if (oldWin[oldIndex] &&
+ newWin.indexOf(oldWin[oldIndex]) == -1) {
+ removedActors.push(children[oldIndex]);
+ oldIndex++;
+ continue;
+ }
+
+ // Window added at newIndex
+ if (newWin[newIndex] &&
+ oldWin.indexOf(newWin[newIndex]) == -1) {
+ addedItems.push({ item: this._createPreviewItem(newWin[newIndex]),
+ pos: newIndex });
+ newIndex++;
+ continue;
+ }
+
+ // Window moved
+ let insertHere = newWin[newIndex + 1] &&
+ newWin[newIndex + 1] == oldWin[oldIndex];
+ let alreadyRemoved = removedActors.reduce(function(result, actor) {
+ let removedWin = actor._window;
+ return result || removedWin == newWin[newIndex];
+ }, false);
+
+ if (insertHere || alreadyRemoved) {
+ addedItems.push({ item: this._createPreviewItem(newWin[newIndex]),
+ pos: newIndex + removedActors.length });
+ newIndex++;
+ } else {
+ removedActors.push(children[oldIndex]);
+ oldIndex++;
+ }
+ }
+
+ for (let i = 0; i < addedItems.length; i++)
+ this.addMenuItem(addedItems[i].item,
+ addedItems[i].pos);
+
+ for (let i = 0; i < removedActors.length; i++) {
+ let item = removedActors[i];
+ if (this._shownInitially)
+ item._animateOutAndDestroy();
+ else
+ item.actor.destroy();
+ }
+
+ // Skip animations on first run when adding the initial set
+ // of items, to avoid all items zooming in at once
+ let animate = this._shownInitially;
+
+ if (!this._shownInitially)
+ this._shownInitially = true;
+
+ for (let i = 0; i < addedItems.length; i++)
+ addedItems[i].item.show(animate);
+
+ // Workaround for https://bugzilla.gnome.org/show_bug.cgi?id=692744
+ // Without it, StBoxLayout may use a stale size cache
+ this.box.queue_relayout();
+
+ if (newWin.length < 1)
+ this._getTopMenu().close(~0);
+
+ // As for upstream:
+ // St.ScrollView always requests space horizontally for a possible vertical
+ // scrollbar if in AUTOMATIC mode. Doing better would require implementation
+ // of width-for-height in St.BoxLayout and St.ScrollView. This looks bad
+ // when we *don't* need it, so turn off the scrollbar when that's true.
+ // Dynamic changes in whether we need it aren't handled properly.
+ let needsScrollbar = this._needsScrollbar();
+ let scrollbar_policy = needsScrollbar ?
+ St.PolicyType.AUTOMATIC : St.PolicyType.NEVER;
+ if (this.isHorizontal)
+ this.actor.hscrollbar_policy = scrollbar_policy;
+ else
+ this.actor.vscrollbar_policy = scrollbar_policy;
+
+ if (needsScrollbar)
+ this.actor.add_style_pseudo_class('scrolled');
+ else
+ this.actor.remove_style_pseudo_class('scrolled');
+ }
+
+ _needsScrollbar() {
+ let topMenu = this._getTopMenu();
+ let topThemeNode = topMenu.actor.get_theme_node();
+ if (this.isHorizontal) {
+ let [topMinWidth, topNaturalWidth] = topMenu.actor.get_preferred_width(-1);
+ let topMaxWidth = topThemeNode.get_max_width();
+ return topMaxWidth >= 0 && topNaturalWidth >= topMaxWidth;
+ } else {
+ let [topMinHeight, topNaturalHeight] = topMenu.actor.get_preferred_height(-1);
+ let topMaxHeight = topThemeNode.get_max_height();
+ return topMaxHeight >= 0 && topNaturalHeight >= topMaxHeight;
+ }
+
+ }
+
+ isAnimatingOut() {
+ return this.actor.get_children().reduce(function(result, actor) {
+ return result || actor.animatingOut;
+ }, false);
+ }
+};
+
+var WindowPreviewMenuItem = GObject.registerClass(
+class DashToDock_WindowPreviewMenuItem extends PopupMenu.PopupBaseMenuItem {
+ _init(window, params) {
+ super._init(params);
+
+ this._window = window;
+ this._destroyId = 0;
+ this._windowAddedId = 0;
+ [this._width, this._height, this._scale] = this._getWindowPreviewSize(); // This gets the actual windows size for the preview
+
+ // We don't want this: it adds spacing on the left of the item.
+ this.remove_child(this._ornamentLabel);
+ this.add_style_class_name('dashtodock-app-well-preview-menu-item');
+
+ // Now we don't have to set PREVIEW_MAX_WIDTH and PREVIEW_MAX_HEIGHT as preview size - that made all kinds of windows either stretched or squished (aspect ratio problem)
+ this._cloneBin = new St.Bin();
+ this._cloneBin.set_size(this._width*this._scale, this._height*this._scale);
+
+ // TODO: improve the way the closebutton is layout. Just use some padding
+ // for the moment.
+ this._cloneBin.set_style('padding-bottom: 0.5em');
+
+ this.closeButton = new St.Button({ style_class: 'window-close',
+ x_expand: true,
+ y_expand: true});
+ this.closeButton.add_actor(new St.Icon({ icon_name: 'window-close-symbolic' }));
+ this.closeButton.set_x_align(Clutter.ActorAlign.END);
+ this.closeButton.set_y_align(Clutter.ActorAlign.START);
+
+
+ this.closeButton.opacity = 0;
+ this.closeButton.connect('clicked', this._closeWindow.bind(this));
+
+ let overlayGroup = new Clutter.Actor({layout_manager: new Clutter.BinLayout(), y_expand: true });
+
+ overlayGroup.add_actor(this._cloneBin);
+ overlayGroup.add_actor(this.closeButton);
+
+ let label = new St.Label({ text: window.get_title()});
+ label.set_style('max-width: '+PREVIEW_MAX_WIDTH +'px');
+ let labelBin = new St.Bin({ child: label,
+ x_align: Clutter.ActorAlign.CENTER,
+ });
+
+ this._windowTitleId = this._window.connect('notify::title', () => {
+ label.set_text(this._window.get_title());
+ });
+
+ let box = new St.BoxLayout({ vertical: true,
+ reactive:true,
+ x_expand:true });
+ box.add(overlayGroup);
+ box.add(labelBin);
+ this.add_actor(box);
+
+ this._cloneTexture(window);
+
+ this.connect('destroy', this._onDestroy.bind(this));
+ }
+
+ _getWindowPreviewSize() {
+ let mutterWindow = this._window.get_compositor_private();
+ let [width, height] = mutterWindow.get_size();
+ let scale = Math.min(1.0, PREVIEW_MAX_WIDTH/width, PREVIEW_MAX_HEIGHT/height);
+ return [width, height, scale];
+ }
+
+ _cloneTexture(metaWin){
+
+ let mutterWindow = metaWin.get_compositor_private();
+
+ // Newly-created windows are added to a workspace before
+ // the compositor finds out about them...
+ // Moreover sometimes they return an empty texture, thus as a workarounf also check for it size
+ if (!mutterWindow || !mutterWindow.get_texture() || !mutterWindow.get_size()[0]) {
+ this._cloneTextureId = GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
+ // Check if there's still a point in getting the texture,
+ // otherwise this could go on indefinitely
+ if (metaWin.get_workspace())
+ this._cloneTexture(metaWin);
+ this._cloneTextureId = 0;
+ return GLib.SOURCE_REMOVE;
+ });
+ GLib.Source.set_name_by_id(this._cloneTextureId, '[dash-to-dock] this._cloneTexture');
+ return;
+ }
+
+ let clone = new Clutter.Clone ({ source: mutterWindow,
+ reactive: true,
+ width: this._width * this._scale,
+ height: this._height * this._scale });
+
+ // when the source actor is destroyed, i.e. the window closed, first destroy the clone
+ // and then destroy the menu item (do this animating out)
+ this._destroyId = mutterWindow.connect('destroy', () => {
+ clone.destroy();
+ this._destroyId = 0; // avoid to try to disconnect this signal from mutterWindow in _onDestroy(),
+ // as the object was just destroyed
+ this._animateOutAndDestroy();
+ });
+
+ this._clone = clone;
+ this._mutterWindow = mutterWindow;
+ this._cloneBin.set_child(this._clone);
+
+ this._clone.connect('destroy', () => {
+ if (this._destroyId) {
+ mutterWindow.disconnect(this._destroyId);
+ this._destroyId = 0;
+ }
+ this._clone = null;
+ })
+ }
+
+ _windowCanClose() {
+ return this._window.can_close() &&
+ !this._hasAttachedDialogs();
+ }
+
+ _closeWindow(actor) {
+ this._workspace = this._window.get_workspace();
+
+ // This mechanism is copied from the workspace.js upstream code
+ // It forces window activation if the windows don't get closed,
+ // for instance because asking user confirmation, by monitoring the opening of
+ // such additional confirmation window
+ this._windowAddedId = this._workspace.connect('window-added',
+ this._onWindowAdded.bind(this));
+
+ this.deleteAllWindows();
+ }
+
+ deleteAllWindows() {
+ // Delete all windows, starting from the bottom-most (most-modal) one
+ //let windows = this._window.get_compositor_private().get_children();
+ let windows = this._clone.get_children();
+ for (let i = windows.length - 1; i >= 1; i--) {
+ let realWindow = windows[i].source;
+ let metaWindow = realWindow.meta_window;
+
+ metaWindow.delete(global.get_current_time());
+ }
+
+ this._window.delete(global.get_current_time());
+ }
+
+ _onWindowAdded(workspace, win) {
+ let metaWindow = this._window;
+
+ if (win.get_transient_for() == metaWindow) {
+ workspace.disconnect(this._windowAddedId);
+ this._windowAddedId = 0;
+
+ // use an idle handler to avoid mapping problems -
+ // see comment in Workspace._windowAdded
+ let activationEvent = Clutter.get_current_event();
+ let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
+ this.emit('activate', activationEvent);
+ return GLib.SOURCE_REMOVE;
+ });
+ GLib.Source.set_name_by_id(id, '[dash-to-dock] this.emit');
+ }
+ }
+
+ _hasAttachedDialogs() {
+ // count trasient windows
+ let n=0;
+ this._window.foreach_transient(function(){n++;});
+ return n>0;
+ }
+
+ vfunc_key_focus_in() {
+ super.vfunc_key_focus_in();
+ this._showCloseButton();
+ }
+
+ vfunc_key_focus_out() {
+ super.vfunc_key_focus_out();
+ this._hideCloseButton();
+ }
+
+ vfunc_enter_event(crossingEvent) {
+ this._showCloseButton();
+ return super.vfunc_enter_event(crossingEvent);
+ }
+
+ vfunc_leave_event(crossingEvent) {
+ this._hideCloseButton();
+ return super.vfunc_leave_event(crossingEvent);
+ }
+
+ _idleToggleCloseButton() {
+ this._idleToggleCloseId = 0;
+
+ this._hideCloseButton();
+
+ return GLib.SOURCE_REMOVE;
+ }
+
+ _showCloseButton() {
+
+ if (this._windowCanClose()) {
+ this.closeButton.show();
+ this.closeButton.remove_all_transitions();
+ this.closeButton.ease({
+ opacity: 255,
+ duration: Workspace.WINDOW_OVERLAY_FADE_TIME,
+ mode: Clutter.AnimationMode.EASE_OUT_QUAD
+ });
+ }
+ }
+
+ _hideCloseButton() {
+ if (this.closeButton.has_pointer ||
+ this.get_children().some(a => a.has_pointer))
+ return;
+
+ this.closeButton.remove_all_transitions();
+ this.closeButton.ease({
+ opacity: 0,
+ duration: Workspace.WINDOW_OVERLAY_FADE_TIME,
+ mode: Clutter.AnimationMode.EASE_IN_QUAD
+ });
+ }
+
+ show(animate) {
+ let fullWidth = this.get_width();
+
+ this.opacity = 0;
+ this.set_width(0);
+
+ let time = animate ? PREVIEW_ANIMATION_DURATION : 0;
+ this.remove_all_transitions();
+ this.ease({
+ opacity: 255,
+ width: fullWidth,
+ duration: time,
+ mode: Clutter.AnimationMode.EASE_IN_OUT_QUAD,
+ });
+ }
+
+ _animateOutAndDestroy() {
+ this.remove_all_transitions();
+ this.ease({
+ opacity: 0,
+ duration: PREVIEW_ANIMATION_DURATION,
+ });
+
+ this.ease({
+ width: 0,
+ height: 0,
+ duration: PREVIEW_ANIMATION_DURATION,
+ delay: PREVIEW_ANIMATION_DURATION,
+ onComplete: () => this.destroy()
+ });
+ }
+
+ activate() {
+ this._getTopMenu().close();
+ Main.activateWindow(this._window);
+ }
+
+ _onDestroy() {
+ if (this._cloneTextureId) {
+ GLib.source_remove(this._cloneTextureId);
+ this._cloneTextureId = 0;
+ }
+
+ if (this._windowAddedId > 0) {
+ this._workspace.disconnect(this._windowAddedId);
+ this._windowAddedId = 0;
+ }
+
+ if (this._destroyId > 0) {
+ this._mutterWindow.disconnect(this._destroyId);
+ this._destroyId = 0;
+ }
+
+ if (this._windowTitleId > 0) {
+ this._window.disconnect(this._windowTitleId);
+ this._windowTitleId = 0;
+ }
+ }
+});
\ No newline at end of file
diff --git a/meson.build b/meson.build
index f754767c..e3d94918 100644
--- a/meson.build
+++ b/meson.build
@@ -44,6 +44,7 @@ default_extensions += [
all_extensions = default_extensions
all_extensions += [
'auto-move-windows',
+ 'dash-to-dock',
'native-window-placement',
'top-icons',
'user-theme'
diff --git a/po/ar.po b/po/ar.po
index fe3ad350..5a21c94a 100644
--- a/po/ar.po
+++ b/po/ar.po
@@ -1,9 +1,18 @@
+# #-#-#-#-# ar.po (PACKAGE VERSION) #-#-#-#-#
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# Khaled Hosny <khaledhosny@eglug.org>, 2012, 2013, 2015, 2017.
+# #-#-#-#-# ar.po (Dash to Dock) #-#-#-#-#
+# 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 <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
msgid ""
msgstr ""
+"#-#-#-#-# ar.po (PACKAGE VERSION) #-#-#-#-#\n"
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=extensions\n"
@@ -19,6 +28,21 @@ msgstr ""
"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
"X-Generator: Virtaal 1.0.0-beta1\n"
"X-Project-Style: gnome\n"
+"#-#-#-#-# ar.po (Dash to Dock) #-#-#-#-#\n"
+"Project-Id-Version: Dash to Dock\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-06-04 12:35+0100\n"
+"PO-Revision-Date: 2015-04-18 18:01+0100\n"
+"Last-Translator: Jean-Baptiste Le Cz <jb.lecoz@gmail.com>\n"
+"Language-Team: Faissal Chamekh <chamfay@gmail.com>\n"
+"Language: ar_DZ\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
+"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5);\n"
+"X-Generator: Poedit 1.7.5\n"
+"X-Poedit-SourceCharset: UTF-8\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -237,7 +261,7 @@ msgstr "أغلق"
msgid "Unminimize"
msgstr "ألغِ التصغير"
-#: extensions/window-list/extension.js:130
+#: extensions/window-list/extension.js:130 Settings.ui.h:50
msgid "Minimize"
msgstr "صغّر"
@@ -334,6 +358,430 @@ msgstr "الاسم"
msgid "Workspace %d"
msgstr "مساحة العمل %Id"
+#: prefs.js:155 Settings.ui.h:26
+msgid "Left"
+msgstr "يسار"
+
+#: prefs.js:154 Settings.ui.h:29
+msgid "Right"
+msgstr "يمين"
+
+#: prefs.js:113
+msgid "Primary monitor"
+msgstr "الشاشة الرئيسية"
+
+#: prefs.js:122 prefs.js:129
+msgid "Secondary monitor "
+msgstr "الشاشة الثانوية"
+
+#: prefs.js:205
+msgid "Intelligent autohide customization"
+msgstr "تخصيص الإخفاء التلقائي"
+
+#: prefs.js:212 prefs.js:393 prefs.js:450
+msgid "Reset to defaults"
+msgstr "العودة للافتراضي"
+
+#: prefs.js:386
+#, fuzzy
+msgid "Show dock and application numbers"
+msgstr "أظهر التطبيقات قيد التشغيل"
+
+#: prefs.js:443
+#, fuzzy
+msgid "Customize middle-click behavior"
+msgstr "خصّص الإعتام"
+
+#: prefs.js:514
+#, fuzzy
+msgid "Customize running indicators"
+msgstr "أظهر التطبيقات قيد التشغيل"
+
+#: appIcons.js:804
+msgid "All Windows"
+msgstr "جميع النوافذ"
+
+#: Settings.ui.h:1
+#, fuzzy
+msgid "Customize indicator style"
+msgstr "خصّص الإعتام"
+
+#: Settings.ui.h:2
+msgid "Color"
+msgstr "اللون"
+
+#: Settings.ui.h:3
+msgid "Border color"
+msgstr "لون الحواف"
+
+#: Settings.ui.h:4
+msgid "Border width"
+msgstr "عرض الحواف"
+
+#: Settings.ui.h:5
+msgid "Number overlay"
+msgstr "عدد التراكب"
+
+#: Settings.ui.h:6
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr "عرض أرقام التطبيق مؤقتا على الرموز، المقابلةللاختصار."
+
+#: Settings.ui.h:7
+#, fuzzy
+msgid "Show the dock if it is hidden"
+msgstr "أظهر المرساة فوق"
+
+#: Settings.ui.h:8
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"إذا اُستخدم الإخفاء التلقائي الشريط سيظهر لوقت قصير عند الضغطعلى الإختصار."
+
+#: Settings.ui.h:9
+msgid "Shortcut for the options above"
+msgstr "الإختصار للخيارات في الأعلى"
+
+#: Settings.ui.h:10
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "البنية: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:11
+msgid "Hide timeout (s)"
+msgstr "زمن الاختفاء (ثا)"
+
+#: Settings.ui.h:12
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr "عند التصغير النقر المزدوج سيصغر جميع نوافذالتطبيق."
+
+#: Settings.ui.h:13
+msgid "Shift+Click action"
+msgstr "حدث Shift+Click"
+
+#: Settings.ui.h:14
+#, fuzzy
+msgid "Raise window"
+msgstr "صغّر النافذة"
+
+#: Settings.ui.h:15
+msgid "Minimize window"
+msgstr "صغّر النافذة"
+
+#: Settings.ui.h:16
+msgid "Launch new instance"
+msgstr "شغّل نسخة جديدة"
+
+#: Settings.ui.h:17
+msgid "Cycle through windows"
+msgstr "التبديل بين النوافذ"
+
+#: Settings.ui.h:18
+msgid "Quit"
+msgstr "خروج"
+
+#: Settings.ui.h:19
+msgid "Behavior for Middle-Click."
+msgstr "سلوك الزر المتوسط."
+
+#: Settings.ui.h:20
+#, fuzzy
+msgid "Middle-Click action"
+msgstr "حدث النقر"
+
+#: Settings.ui.h:21
+msgid "Behavior for Shift+Middle-Click."
+msgstr "سلوك Shift+Middle-Click."
+
+#: Settings.ui.h:22
+#, fuzzy
+msgid "Shift+Middle-Click action"
+msgstr "حدث Shift+Click"
+
+#: Settings.ui.h:23
+msgid "Show the dock on"
+msgstr "أظهر المرساة فوق"
+
+#: Settings.ui.h:24
+#, fuzzy
+msgid "Show on all monitors."
+msgstr "الشاشة الثانوية"
+
+#: Settings.ui.h:25
+msgid "Position on screen"
+msgstr "الموضع على الشاشة"
+
+#: Settings.ui.h:27
+msgid "Bottom"
+msgstr "أسفل"
+
+#: Settings.ui.h:28
+msgid "Top"
+msgstr "أعلى"
+
+#: Settings.ui.h:30
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr "إخفاء المرساة عندما تحجب نافذة التطبيق الحالي. تخصيصات أكثر متوفرة."
+
+#: Settings.ui.h:31
+msgid "Intelligent autohide"
+msgstr "إخفاء تلقائي ذكي"
+
+#: Settings.ui.h:32
+msgid "Dock size limit"
+msgstr "حدّ حجم المرساة"
+
+#: Settings.ui.h:33
+msgid "Panel mode: extend to the screen edge"
+msgstr "نمط الشريط: تمديد إلى حواف الشاشة"
+
+#: Settings.ui.h:34
+msgid "Icon size limit"
+msgstr "حدّ حجم الأيقونة"
+
+#: Settings.ui.h:35
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "حجم أيقونات ثابت: استعمل التمرير لكشف أيقونات أخرى"
+
+#: Settings.ui.h:36
+msgid "Position and size"
+msgstr "الموضع والحجم"
+
+#: Settings.ui.h:37
+msgid "Show favorite applications"
+msgstr "أظهر التطبيقات المفضّلة"
+
+#: Settings.ui.h:38
+msgid "Show running applications"
+msgstr "أظهر التطبيقات قيد التشغيل"
+
+#: Settings.ui.h:39
+msgid "Isolate workspaces."
+msgstr "عزل مساحات العمل."
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "عرض معاينات النوافذ المفتوحة."
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"إذا تم تعطيله هذه الإعدادت يمكن الوصول إليها من gnome-tweak-tool أو موقع "
+"الإضافات."
+
+#: Settings.ui.h:42
+#, fuzzy
+msgid "Show <i>Applications</i> icon"
+msgstr "أظهر أيقونة التطبيقات أولا"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr "تحريك زر التطبيقات في بداية الشريط."
+
+#: Settings.ui.h:44
+#, fuzzy
+msgid "Animate <i>Show Applications</i>."
+msgstr "أظهر أيقونة التطبيقات أولا"
+
+#: Settings.ui.h:45
+msgid "Launchers"
+msgstr "المشغلات"
+
+#: Settings.ui.h:46
+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:47
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "استخدام إختصارات لوحة المفاتيح لتفعيل التطبيقات"
+
+#: Settings.ui.h:48
+#, fuzzy
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "التصرّف عن النقر على أيقونة التطبيق قيد التشغيل."
+
+#: Settings.ui.h:49
+msgid "Click action"
+msgstr "حدث النقر"
+
+#: Settings.ui.h:51
+#, fuzzy
+msgid "Minimize or overview"
+msgstr "صغّر النافذة"
+
+#: Settings.ui.h:52
+#, fuzzy
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "التصرّف عن النقر على أيقونة التطبيق قيد التشغيل."
+
+#: Settings.ui.h:53
+#, fuzzy
+msgid "Scroll action"
+msgstr "حدث النقر"
+
+#: Settings.ui.h:54
+msgid "Do nothing"
+msgstr "لا تفعل شيئا"
+
+#: Settings.ui.h:55
+#, fuzzy
+msgid "Switch workspace"
+msgstr "تبديل مساحة عمل واحدة في نفس الوقت"
+
+#: Settings.ui.h:56
+msgid "Behavior"
+msgstr "السلوك"
+
+#: Settings.ui.h:57
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"القليل من التخصيصات يعني إضافة الشريط مع سِمَة غنوم. بدلاً من هذا, خيارات محددة "
+"يُمكن اختيارها من الأسفل."
+
+#: Settings.ui.h:58
+msgid "Use built-in theme"
+msgstr "استعمل السمة المضمّنة"
+
+#: Settings.ui.h:59
+msgid "Save space reducing padding and border radius."
+msgstr "حفظ المساحة يقلل من الحشو ونصف قطر الحافة."
+
+#: Settings.ui.h:60
+msgid "Shrink the dash"
+msgstr "تقليص المرساة"
+
+#: Settings.ui.h:61
+msgid "Show a dot for each windows of the application."
+msgstr "أظهر نقطة لكل نوافذة من التطبيق."
+
+#: Settings.ui.h:62
+msgid "Show windows counter indicators"
+msgstr "أظهر مؤشرات عدد النوافذ"
+
+#: Settings.ui.h:63
+msgid "Set the background color for the dash."
+msgstr "تعيين لون الخلفية لشَرِطة"
+
+#: Settings.ui.h:64
+msgid "Customize the dash color"
+msgstr "تخصيص لون الشَرِطة"
+
+#: Settings.ui.h:65
+msgid "Tune the dash background opacity."
+msgstr "ضبط إعتام خلفية المرساة."
+
+#: Settings.ui.h:66
+msgid "Customize opacity"
+msgstr "خصّص الإعتام"
+
+#: Settings.ui.h:67
+msgid "Opacity"
+msgstr "العتمة"
+
+#: Settings.ui.h:68
+msgid "Force straight corner\n"
+msgstr "الزاوي المستقيمة\n"
+
+#: Settings.ui.h:70
+msgid "Appearance"
+msgstr "المظهر"
+
+#: Settings.ui.h:71
+msgid "version: "
+msgstr "الإصدار:"
+
+#: Settings.ui.h:72
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "تحريك الشريط خارج النظرة العامة في الشَرِطة"
+
+#: Settings.ui.h:73
+msgid "Created by"
+msgstr "أنشئ من طرف"
+
+#: Settings.ui.h:74
+msgid "Webpage"
+msgstr "صفحة الويب"
+
+#: Settings.ui.h:75
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">هذا البرنامج يأتي بدون أي ضمانات.\n"
+"لمزيد من المعلومات أنظر <a href=\"https://www.gnu.org/licenses/old-licenses/"
+"gpl-2.0.html\">رخصة غنو العمومية، الإصدارة 2 فما فوق.</span>"
+
+#: Settings.ui.h:77
+msgid "About"
+msgstr "حول"
+
+#: Settings.ui.h:78
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "أظهر المرساة بتمرير الفأرة على حافة النافذة"
+
+#: Settings.ui.h:79
+msgid "Autohide"
+msgstr "إخفاء تلقائي"
+
+#: Settings.ui.h:80
+msgid "Push to show: require pressure to show the dock"
+msgstr "اضغط للإظهار: يتطلب ضغطا لإظهار المرساة"
+
+#: Settings.ui.h:81
+msgid "Enable in fullscreen mode"
+msgstr "تمكين في وضع ملئ الشاشة"
+
+#: Settings.ui.h:82
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "إظهار المرساة عندما لا تحجب نوافذ التطبيق."
+
+#: Settings.ui.h:83
+msgid "Dodge windows"
+msgstr "حيلة النوافذ"
+
+#: Settings.ui.h:84
+msgid "All windows"
+msgstr "جميع النوافذ"
+
+#: Settings.ui.h:85
+msgid "Only focused application's windows"
+msgstr "نوافذ التطبيق المركزة فقط"
+
+#: Settings.ui.h:86
+#, fuzzy
+msgid "Only maximized windows"
+msgstr "صغّر النافذة"
+
+#: Settings.ui.h:87
+msgid "Animation duration (s)"
+msgstr "مدة التحريك (ثا)"
+
+#: Settings.ui.h:88
+msgid "0.000"
+msgstr "0.000"
+
+#: Settings.ui.h:89
+msgid "Show timeout (s)"
+msgstr "زمن الظهور (ثا)"
+
+#: Settings.ui.h:90
+msgid "Pressure threshold"
+msgstr "عتبة الضغط"
+
#~ msgid "GNOME Shell Classic"
#~ msgstr "صدفة جنوم تقليدية"
@@ -349,12 +797,6 @@ msgstr "مساحة العمل %Id"
#~ msgid "Normal"
#~ msgstr "عادي"
-#~ msgid "Left"
-#~ msgstr "يسار"
-
-#~ msgid "Right"
-#~ msgstr "يمين"
-
#~ msgid "Upside-down"
#~ msgstr "رأسا على عقب"
@@ -463,3 +905,115 @@ msgstr "مساحة العمل %Id"
#~ msgid "Removable Devices"
#~ msgstr "الأجهزة المنفصلة"
+
+#~ msgid "Switch workspace by scrolling on the dock"
+#~ 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 "1"
+#~ msgstr "1"
+
+#~ msgid "2"
+#~ msgstr "2"
+
+#~ msgid "3"
+#~ msgstr "3"
+
+#~ msgid "4"
+#~ msgstr "4"
+
+#~ msgid "Max height"
+#~ msgstr "الارتفاع الأقصى"
+
+#~ msgid "Expand (experimental and buggy)"
+#~ msgstr "تمديد (تجريبي)"
+
+#~ msgid "Maximum icon size"
+#~ msgstr "الحجم الأقصى للأيقونة"
+
+#~ msgid "16"
+#~ msgstr "16"
+
+#~ msgid "24"
+#~ msgstr "24"
+
+#~ msgid "32"
+#~ msgstr "32"
+
+#~ msgid "48"
+#~ msgstr "48"
+
+#~ msgid "64"
+#~ msgstr "64"
+
+#~ msgid "Optional features"
+#~ msgstr "ميزات إضافية"
+
+#~ msgid "Deadtime between each workspace switching [ms]"
+#~ msgstr "الوقت بين تبديل كل مساحة عمل"
+
+#~ msgid "Only a 1px wide area close to the screen edge is active"
+#~ msgstr "مساحة بعرض 1 بكسل فقط قريبة من حافة الشاشة هي النشطة"
+
+#~ msgid "All the area of the dock is active"
+#~ msgstr "جميع مناطق المرساة نشطة"
+
+#~ msgid "Customize actions on mouse click"
+#~ msgstr "خصّص حدث النقر على الفأرة"
+
+#~ msgid "Action on clicking on running app"
+#~ msgstr "الحدث عن النقر على تطبيق قيد التشغيل"
+
+#~ msgid "Minimize window on shift+click (double click for all app windows)"
+#~ msgstr ""
+#~ "تصغير النافذة عند النقر مع shift (الضغط المزدوج بالنسبة لكل نوافذ التطبيق)"
+
+#~ msgid "Make message tray insensitive to mouse events"
+#~ msgstr "اجعل رسالة التنبيه غير حساسة لأحداث الفأرة"
+
+#~ msgid "Appearence and Themes"
+#~ msgstr "المظهر والسمة"
+
+#~ msgid ""
+#~ "A customized theme is built in the extension. This is meant to work with "
+#~ "the default Adwaita theme: the dash is shrunk to save space, its "
+#~ "background transparency reduced, and custom indicators for the number of "
+#~ "windows of each application are added."
+#~ msgstr ""
+#~ "تم تضمين سمة مخصّصة للإضافة، هذا يعني أنها تعمل مع السمة الافتراضية "
+#~ "Adwaita: تقليص المرساة لكسب مساحة، إنقاص شفافيتها، كذلك تم إضافة مؤشرات "
+#~ "لعدد نوافذ التطبيق."
+
+#~ msgid ""
+#~ "Alternatively, for a better integration with custom themes, each "
+#~ "customization can be applied indipendently"
+#~ msgstr "بدلا من هذا، لتكاملية أفضل مع سمات مخصّصة، كل تخصيص يطبّق على حدة"
+
+#~ msgid "Shrink the dash size by reducing padding"
+#~ msgstr "مساحة المرساة بإنقاص الحشو"
+
+#~ msgid "Only when in autohide"
+#~ msgstr "فقط عند الإخفاء التلقائي"
diff --git a/po/cs.po b/po/cs.po
index 7d3258dc..572b3787 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -1,11 +1,20 @@
+# #-#-#-#-# 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.
# Petr Kovar <pknbe@volny.cz>, 2013.
# Marek Černocký <marek@manet.cz>, 2011, 2012, 2013, 2014, 2015, 2017, 2019, 2020.
#
+# #-#-#-#-# cs.po (Dash to Dock) #-#-#-#-#
+# Translation for cs
+# Copyright (C) 2014 Michele
+# This file is distributed under the same license as the dash-to-dock package.
+# Jiří Doubravský <jiri.doubravsky@gmail.com>, 2015.
+#
+#, fuzzy
msgid ""
msgstr ""
+"#-#-#-#-# 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"
@@ -19,6 +28,19 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-Generator: Gtranslator 2.91.6\n"
+"#-#-#-#-# cs.po (Dash to Dock) #-#-#-#-#\n"
+"Project-Id-Version: Dash to Dock\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-05-16 13:48+0200\n"
+"PO-Revision-Date: 2020-05-16 13:54+0200\n"
+"Last-Translator: Daniel Rusek <mail@asciiwolf.com>\n"
+"Language-Team: CZECH <jiri.doubravsky@gmail.com>\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.3\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -151,7 +173,7 @@ msgstr "Zavřít"
msgid "Unminimize"
msgstr "Zrušit minimalizaci"
-#: extensions/window-list/extension.js:118
+#: extensions/window-list/extension.js:118 Settings.ui.h:52
msgid "Minimize"
msgstr "Minimalizovat"
@@ -257,3 +279,532 @@ msgstr "Pracovní plocha %d"
#: extensions/workspace-indicator/prefs.js:218
msgid "Add Workspace"
msgstr "Přidat pracovní plochu"
+
+#: prefs.js:268
+msgid "Primary monitor"
+msgstr "Hlavní obrazovka"
+
+#: prefs.js:277 prefs.js:284
+msgid "Secondary monitor "
+msgstr "Sekundární obrazovka "
+
+#: prefs.js:309 Settings.ui.h:28
+msgid "Right"
+msgstr "Vpravo"
+
+#: prefs.js:310 Settings.ui.h:25
+msgid "Left"
+msgstr "Vlevo"
+
+#: prefs.js:360
+msgid "Intelligent autohide customization"
+msgstr "Přizpůsobení chytrého skrývání"
+
+#: prefs.js:367 prefs.js:560 prefs.js:616
+msgid "Reset to defaults"
+msgstr "Obnovit výchozí nastavení"
+
+#: prefs.js:553
+msgid "Show dock and application numbers"
+msgstr "Zobrazování doku a čísel aplikací"
+
+#: prefs.js:609
+msgid "Customize middle-click behavior"
+msgstr "Nastavit chování prostředního tlačítka"
+
+#: prefs.js:692
+msgid "Customize running indicators"
+msgstr "Nastavit indikátory spuštěných aplikací"
+
+#: prefs.js:804 Settings.ui.h:74
+msgid "Customize opacity"
+msgstr "Přizpůsobení průhlednosti"
+
+#: appIcons.js:797
+msgid "All Windows"
+msgstr "Všechna okna"
+
+#: appIcons.js:916
+#, javascript-format
+msgid "Quit %d Windows"
+msgstr "Ukončit %d oken"
+
+#. Translators: %s is "Settings", which is automatically translated. You
+#. can also translate the full message if this fits better your language.
+#: appIcons.js:1134
+#, javascript-format
+msgid "Dash to Dock %s"
+msgstr "%s Dash to Docku"
+
+#: locations.js:65
+msgid "Trash"
+msgstr "Koš"
+
+#: locations.js:74
+msgid "Empty Trash"
+msgstr "Vyprázdnit koš"
+
+#: locations.js:192
+msgid "Mount"
+msgstr "Připojit"
+
+#: locations.js:235
+msgid "Eject"
+msgstr "Vysunout"
+
+#: locations.js:240
+msgid "Unmount"
+msgstr "Odpojit"
+
+#: Settings.ui.h:1
+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."
+
+#: Settings.ui.h:2
+msgid "Shift+Click action"
+msgstr "Shift + levé tlačítko"
+
+#: Settings.ui.h:3
+msgid "Raise window"
+msgstr "Přenést okno do popředí"
+
+#: Settings.ui.h:4
+msgid "Minimize window"
+msgstr "Minimalizovat okno"
+
+#: Settings.ui.h:5
+msgid "Launch new instance"
+msgstr "Spustit novou instanci"
+
+#: Settings.ui.h:6
+msgid "Cycle through windows"
+msgstr "Přepínat mezi okny"
+
+#: Settings.ui.h:7
+msgid "Minimize or overview"
+msgstr "Minimalizovat nebo zobrazit přehled"
+
+#: Settings.ui.h:8
+msgid "Show window previews"
+msgstr "Zobrazit náhledy oken"
+
+#: Settings.ui.h:9
+msgid "Minimize or show previews"
+msgstr "Minimalizovat nebo zobrazit náhledy oken"
+
+#: Settings.ui.h:10
+msgid "Focus or show previews"
+msgstr "Zaměřit nebo zobrazit náhledy oken"
+
+#: Settings.ui.h:11
+msgid "Quit"
+msgstr "Ukončit"
+
+#: Settings.ui.h:12
+msgid "Behavior for Middle-Click."
+msgstr "Chování při kliknutím prostředního tlačítka"
+
+#: Settings.ui.h:13
+msgid "Middle-Click action"
+msgstr "Prostřední tlačítko"
+
+#: Settings.ui.h:14
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Chování při kliknutím prostředního tlačítka a stiknuté klávese Shift"
+
+#: Settings.ui.h:15
+msgid "Shift+Middle-Click action"
+msgstr "Shift + prostřední tlačítko"
+
+#: Settings.ui.h:16
+msgid "Enable Unity7 like glossy backlit items"
+msgstr "Podsvícení ikon jako v Unity 7"
+
+#: Settings.ui.h:17
+msgid "Use dominant color"
+msgstr "Použít převládající barvu ikony"
+
+#: Settings.ui.h:18
+msgid "Customize indicator style"
+msgstr "Vlastní styl indikátorů"
+
+#: Settings.ui.h:19
+msgid "Color"
+msgstr "Barva"
+
+#: Settings.ui.h:20
+msgid "Border color"
+msgstr "Barva ohraničení"
+
+#: Settings.ui.h:21
+msgid "Border width"
+msgstr "Šířka ohraničení"
+
+#: Settings.ui.h:22
+msgid "Show the dock on"
+msgstr "Kde zobrazit dok"
+
+#: Settings.ui.h:23
+msgid "Show on all monitors."
+msgstr "Zobrazit na všech obrazovkách"
+
+#: Settings.ui.h:24
+msgid "Position on screen"
+msgstr "Umístění na obrazovce"
+
+#: Settings.ui.h:26
+msgid "Bottom"
+msgstr "Dole"
+
+#: Settings.ui.h:27
+msgid "Top"
+msgstr "Nahoře"
+
+#: Settings.ui.h:29
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"Skrýt dok, pokud překáží oknu aktivní aplikace. K dispozici jsou podrobnější "
+"nastavení."
+
+#: Settings.ui.h:30
+msgid "Intelligent autohide"
+msgstr "Chytré skrývání"
+
+#: Settings.ui.h:31
+msgid "Dock size limit"
+msgstr "Maximální velikost doku"
+
+#: Settings.ui.h:32
+msgid "Panel mode: extend to the screen edge"
+msgstr "Režim panelu (roztáhnout dok po celé délce obrazovky)"
+
+#: Settings.ui.h:33
+msgid "Icon size limit"
+msgstr "Maximální velikost ikon"
+
+#: Settings.ui.h:34
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr ""
+"Neměnná velikost ikon (rolováním na doku je možné zobrazit další ikony)"
+
+#: Settings.ui.h:35
+msgid "Position and size"
+msgstr "Umístění a velikost"
+
+#: Settings.ui.h:36
+msgid "Show favorite applications"
+msgstr "Zobrazit oblíbené aplikace"
+
+#: Settings.ui.h:37
+msgid "Show running applications"
+msgstr "Zobrazit spuštěné aplikace"
+
+#: Settings.ui.h:38
+msgid "Isolate workspaces."
+msgstr "Izolovat pracovní plochy"
+
+#: Settings.ui.h:39
+msgid "Isolate monitors."
+msgstr "Izolovat obrazovky"
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "Zobrazit náhledy oken"
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+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
+msgid "Show <i>Applications</i> icon"
+msgstr "Tlačítko přístupu ke všem aplikacím"
+
+#: 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
+msgid "Animate <i>Show Applications</i>."
+msgstr "Animace při zobrazení všech aplikací"
+
+#: Settings.ui.h:45
+msgid "Show trash can"
+msgstr "Zobrazit koš"
+
+#: Settings.ui.h:46
+msgid "Show mounted volumes and devices"
+msgstr "Zobrazit připojené svazky a zařízení"
+
+#: Settings.ui.h:47
+msgid "Launchers"
+msgstr "Spouštěče"
+
+#: Settings.ui.h:48
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"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."
+
+#: Settings.ui.h:49
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "Klávesová zkratka pro aktivaci aplikací"
+
+#: Settings.ui.h:50
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Chování při kliknutí na ikonu běžící aplikace"
+
+#: Settings.ui.h:51
+msgid "Click action"
+msgstr "Kliknutí tlačítkem myši"
+
+#: Settings.ui.h:53
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Chování při rolování na ikoně běžící aplikace"
+
+#: Settings.ui.h:54
+msgid "Scroll action"
+msgstr "Rolování kolečkem myši"
+
+#: Settings.ui.h:55
+msgid "Do nothing"
+msgstr "Nedělat nic"
+
+#: Settings.ui.h:56
+msgid "Switch workspace"
+msgstr "Přepnout pracovní plochu"
+
+#: Settings.ui.h:57
+msgid "Behavior"
+msgstr "Chování"
+
+#: Settings.ui.h:58
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Nastavení kvůli integraci doku s výchozím motivem GNOME; jinak lze použít "
+"samostatné předvolby níže."
+
+#: Settings.ui.h:59
+msgid "Use built-in theme"
+msgstr "Použít výchozí motiv doku"
+
+#: Settings.ui.h:60
+msgid "Save space reducing padding and border radius."
+msgstr "Prostorově méně náročné zobrazení (zmenšení volného místa kolem ikon)"
+
+#: Settings.ui.h:61
+msgid "Shrink the dash"
+msgstr "Zmenšený dok"
+
+#: Settings.ui.h:62
+msgid "Customize windows counter indicators"
+msgstr "Indikátory počtu otevřených oken"
+
+#: Settings.ui.h:63
+msgid "Default"
+msgstr "Výchozí"
+
+#: Settings.ui.h:64
+msgid "Dots"
+msgstr "Tečky"
+
+#: Settings.ui.h:65
+msgid "Squares"
+msgstr "Čtverečky"
+
+#: Settings.ui.h:66
+msgid "Dashes"
+msgstr "Čárky"
+
+#: Settings.ui.h:67
+msgid "Segmented"
+msgstr "Dělená linka"
+
+#: Settings.ui.h:68
+msgid "Solid"
+msgstr "Plná linka"
+
+#: Settings.ui.h:69
+msgid "Ciliora"
+msgstr "Styl Ciliora"
+
+#: Settings.ui.h:70
+msgid "Metro"
+msgstr "Styl Metro"
+
+#: Settings.ui.h:71
+msgid "Set the background color for the dash."
+msgstr "Nastavit barvu pozadí doku"
+
+#: Settings.ui.h:72
+msgid "Customize the dash color"
+msgstr "Vlastní barva doku"
+
+#: Settings.ui.h:73
+msgid "Tune the dash background opacity."
+msgstr "Nastavit průhlednost doku"
+
+#: Settings.ui.h:75
+msgid "Fixed"
+msgstr "Neměnná"
+
+#: Settings.ui.h:76
+msgid "Dynamic"
+msgstr "Dynamická"
+
+#: Settings.ui.h:77
+msgid "Opacity"
+msgstr "Průhlednost"
+
+#: Settings.ui.h:78
+msgid "Force straight corner"
+msgstr "Zakázat zaoblené rohy"
+
+#: Settings.ui.h:79
+msgid "Appearance"
+msgstr "Vzhled"
+
+#: Settings.ui.h:80
+msgid "version: "
+msgstr "verze: "
+
+#: Settings.ui.h:81
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Vytvoří dok z přehledu činností a oblíbených aplikací"
+
+#: Settings.ui.h:82
+msgid "Created by"
+msgstr "Autor"
+
+#: Settings.ui.h:83
+msgid "Webpage"
+msgstr "Webová stránka"
+
+#: Settings.ui.h:84
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">Na tento program NEJSOU POSKYTOVÁNY ZÁRUKY.\n"
+"Podrobněji viz <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0."
+"html\">GNU General Public License, verze 2 nebo pozdější</a>.</span>"
+
+#: Settings.ui.h:86
+msgid "About"
+msgstr "O tomto doplňku"
+
+#: Settings.ui.h:87
+msgid "Customize minimum and maximum opacity values"
+msgstr "Nastavit minimální a maximální hodnoty průhlednosti"
+
+#: Settings.ui.h:88
+msgid "Minimum opacity"
+msgstr "Minimální průhlednost"
+
+#: Settings.ui.h:89
+msgid "Maximum opacity"
+msgstr "Maximální průhlednost"
+
+#: Settings.ui.h:90
+msgid "Number overlay"
+msgstr "Čísla aplikací"
+
+#: Settings.ui.h:91
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr "Krátce ukázat čísla aplikací odpovídající klávesové zkratce"
+
+#: Settings.ui.h:92
+msgid "Show the dock if it is hidden"
+msgstr "Zobrazit dok, pokud je skrytý"
+
+#: Settings.ui.h:93
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Pokud je nastaveno automatické skrývání, stisknutím klávesové zkratky se dok "
+"krátce zobrazí."
+
+#: Settings.ui.h:94
+msgid "Shortcut for the options above"
+msgstr "Klávesová zkratka"
+
+#: Settings.ui.h:95
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Syntaxe: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:96
+msgid "Hide timeout (s)"
+msgstr "Prodleva při skrytí (s)"
+
+#: Settings.ui.h:97
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Zobrazit dok najetím myši ke kraji obrazovky"
+
+#: Settings.ui.h:98
+msgid "Autohide"
+msgstr "Automatické skrývání"
+
+#: Settings.ui.h:99
+msgid "Push to show: require pressure to show the dock"
+msgstr "Zobrazit dok až po zatlačení na kraj obrazovky"
+
+#: Settings.ui.h:100
+msgid "Enable in fullscreen mode"
+msgstr "Povolit celoobrazovkový režim"
+
+#: Settings.ui.h:101
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Zobrazit dok pokud nepřekáží oknům aplikací"
+
+#: Settings.ui.h:102
+msgid "Dodge windows"
+msgstr "Uhýbání oknům"
+
+#: Settings.ui.h:103
+msgid "All windows"
+msgstr "Všechna okna"
+
+#: Settings.ui.h:104
+msgid "Only focused application's windows"
+msgstr "Pouze aktivní okna"
+
+#: Settings.ui.h:105
+msgid "Only maximized windows"
+msgstr "Pouze maximalizovaná okna"
+
+#: Settings.ui.h:106
+msgid "Animation duration (s)"
+msgstr "Trvání animace (s)"
+
+#: Settings.ui.h:107
+msgid "Show timeout (s)"
+msgstr "Prodleva při zobrazení (s)"
+
+#: Settings.ui.h:108
+msgid "Pressure threshold"
+msgstr "Míra tlaku (px)"
+
+#~ msgid "Show a dot for each windows of the application."
+#~ msgstr "Zobrazit u ikon tečku indikující každé otevřené okno aplikace"
+
+#~ msgid "Show windows counter indicators"
+#~ msgstr "Indikátory počtu oken"
+
+#~ msgid "Adaptive"
+#~ msgstr "Adaptivní"
diff --git a/po/de.po b/po/de.po
index 6e797d13..30119a76 100644
--- a/po/de.po
+++ b/po/de.po
@@ -1,3 +1,4 @@
+# #-#-#-#-# 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.
@@ -8,8 +9,18 @@
# Paul Seyfert <pseyfert@mathphys.fsk.uni-heidelberg.de>, 2017.
# Tim Sabsch <tim@sabsch.com>, 2019-2020.
#
+# #-#-#-#-# de.po (Dash to Dock) #-#-#-#-#
+# Translation for de
+# Copyright (C) 2014 Michele
+# This file is distributed under the same license as the dash-to-dock package.
+# Morris Jobke <hey@morrisjobke.de>, 2014.
+# Jonatan Zeidler <jonatan_zeidler@hotmail.de>, 2012
+# jonius <jonatan_zeidler@gmx.de>, 2012
+#
+#, fuzzy
msgid ""
msgstr ""
+"#-#-#-#-# 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"
@@ -23,6 +34,18 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 2.4.1\n"
+"#-#-#-#-# de.po (Dash to Dock) #-#-#-#-#\n"
+"Project-Id-Version: Dash to Dock\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-06-04 12:35+0100\n"
+"PO-Revision-Date: 2017-12-11 19:21+0100\n"
+"Last-Translator: Klaus Staedtler <staedtler-przyborski@web.de>\n"
+"Language-Team: jonius <jonatan_zeidler@gmx.de>\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.0.4\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -160,7 +183,7 @@ msgstr "Schließen"
msgid "Unminimize"
msgstr "Minimieren rückgängig"
-#: extensions/window-list/extension.js:118
+#: extensions/window-list/extension.js:118 Settings.ui.h:50
msgid "Minimize"
msgstr "Minimieren"
@@ -270,6 +293,442 @@ msgstr "Arbeitsfläche %d"
msgid "Add Workspace"
msgstr "Arbeitsfläche hinzufügen"
+# Konjugation wegen Stellung im Satz
+#: prefs.js:113
+msgid "Primary monitor"
+msgstr "Primärer Anzeige"
+
+# Konjugation wegen Stellung im Satz
+#: prefs.js:122 prefs.js:129
+msgid "Secondary monitor "
+msgstr "Sekundärer Anzeige"
+
+#: prefs.js:154 Settings.ui.h:29
+msgid "Right"
+msgstr "Rechts"
+
+#: prefs.js:155 Settings.ui.h:26
+msgid "Left"
+msgstr "Links"
+
+#: prefs.js:205
+msgid "Intelligent autohide customization"
+msgstr "Automatisches Ausblenden anpassen"
+
+# Verwende Übersetzung aus Nautilus
+#: prefs.js:212 prefs.js:393 prefs.js:450
+msgid "Reset to defaults"
+msgstr "Auf Vorgaben zurücksetzen"
+
+#: prefs.js:386
+msgid "Show dock and application numbers"
+msgstr "Zeige Dock und Anwendungsnummern"
+
+#: prefs.js:443
+msgid "Customize middle-click behavior"
+msgstr "Verhalten des mittleren Klick anpassen"
+
+#: prefs.js:514
+msgid "Customize running indicators"
+msgstr "Laufende Anzeigen anpassen"
+
+#: appIcons.js:804
+msgid "All Windows"
+msgstr "Alle Fenster"
+
+#: Settings.ui.h:1
+msgid "Customize indicator style"
+msgstr "Anzeigenstil anpassen"
+
+#: Settings.ui.h:2
+msgid "Color"
+msgstr "Farbe"
+
+#: Settings.ui.h:3
+msgid "Border color"
+msgstr "Randfarbe"
+
+#: Settings.ui.h:4
+msgid "Border width"
+msgstr "Randbreite"
+
+#: Settings.ui.h:5
+msgid "Number overlay"
+msgstr "Nummer der Überlagung"
+
+#: Settings.ui.h:6
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"Zeige vorübergehend die Nummer der Anwendung über den Icons, passend zum "
+"Tastaturkürzel."
+
+#: Settings.ui.h:7
+msgid "Show the dock if it is hidden"
+msgstr "Dock anzeigen wenn es versteckt ist"
+
+#: Settings.ui.h:8
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Wenn automatisches Ausblenden benutzt wird, erscheint kurzzeitig das Dock "
+"durch drücken des Tastaturkürzels."
+
+#: Settings.ui.h:9
+msgid "Shortcut for the options above"
+msgstr "Tastaturkürzel für die obigen Aktionen"
+
+#: Settings.ui.h:10
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:11
+msgid "Hide timeout (s)"
+msgstr "Ausblende-Verzögerung in s"
+
+#: Settings.ui.h:12
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Wenn auf »Minimieren« eingestellt, können durch Doppelklick alle Fenster der "
+"Anwendung gleichzeitig minimiert werden."
+
+#: Settings.ui.h:13
+msgid "Shift+Click action"
+msgstr "Wirkung bei Umschalttaste + Mausklick"
+
+#: Settings.ui.h:14
+msgid "Raise window"
+msgstr "Fenster anheben"
+
+#: Settings.ui.h:15
+msgid "Minimize window"
+msgstr "Minimieren"
+
+#: Settings.ui.h:16
+msgid "Launch new instance"
+msgstr "Neues Fenster"
+
+# Vielleicht einen Tick besser als „umschalten“?
+#: Settings.ui.h:17
+msgid "Cycle through windows"
+msgstr "Zwischen den Fenstern der Anwendung wechseln"
+
+#: Settings.ui.h:18
+msgid "Quit"
+msgstr "Beenden"
+
+#: Settings.ui.h:19
+msgid "Behavior for Middle-Click."
+msgstr "Verhalten bei Mittel-Klick "
+
+#: Settings.ui.h:20
+#, fuzzy
+msgid "Middle-Click action"
+msgstr "Wirkung bei Mausklick"
+
+#: Settings.ui.h:21
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Verhalten bei Umschalttaste+Mittel-Klick."
+
+#: Settings.ui.h:22
+#, fuzzy
+msgid "Shift+Middle-Click action"
+msgstr "Wirkung bei Umschalttaste + Mausklick"
+
+#: Settings.ui.h:23
+msgid "Show the dock on"
+msgstr "Dock anzeigen auf"
+
+# Konjugation wegen Stellung im Satz
+#: Settings.ui.h:24
+msgid "Show on all monitors."
+msgstr "Auf allen Bildschirmen anzeigen"
+
+#: Settings.ui.h:25
+msgid "Position on screen"
+msgstr "Position auf Bildschirm"
+
+#: Settings.ui.h:27
+msgid "Bottom"
+msgstr "Unten"
+
+#: Settings.ui.h:28
+msgid "Top"
+msgstr "Oben"
+
+#: Settings.ui.h:30
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"Das Dock automatisch ausblenden, falls es ein Fenster der laufenden "
+"Anwendung überlagert. Einstellungen können weiter verfeinert werden."
+
+#: Settings.ui.h:31
+msgid "Intelligent autohide"
+msgstr "Automatisch ausblenden"
+
+#: Settings.ui.h:32
+msgid "Dock size limit"
+msgstr "Maximale Dockgröße"
+
+#: Settings.ui.h:33
+msgid "Panel mode: extend to the screen edge"
+msgstr "Panelmodus: bis zu Bildschirmkanten ausdehnen"
+
+#: Settings.ui.h:34
+msgid "Icon size limit"
+msgstr "Maximale Icongröße"
+
+#: Settings.ui.h:35
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Feste Icongröße: andere Icons durch Scrollen sichtbar machen"
+
+#: Settings.ui.h:36
+msgid "Position and size"
+msgstr "Position und Größe"
+
+#: Settings.ui.h:37
+msgid "Show favorite applications"
+msgstr "Favoriten anzeigen"
+
+#: Settings.ui.h:38
+msgid "Show running applications"
+msgstr "Laufende Anwendungen anzeigen"
+
+#: Settings.ui.h:39
+msgid "Isolate workspaces."
+msgstr "Isoliere Arbeitsflächen."
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "Zeige Vorschau der geöffneten Fenster"
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Falls deaktiviert, sind diese Einstellungen über Gnome-Tweak-Tool oder die "
+"Erweiterungsseite erreichbar."
+
+# Durchkopplung von Kompositum
+#: Settings.ui.h:42
+msgid "Show <i>Applications</i> icon"
+msgstr "Symbol <i>Anwendungen anzeigen</i> anzeigen"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr "Anwendungen-anzeigen-Button an den Anfang verschieben."
+
+# Durchkopplung von Kompositum
+#: Settings.ui.h:44
+msgid "Animate <i>Show Applications</i>."
+msgstr "Symbol <i>Anwendungen anzeigen</i> animieren"
+
+#: Settings.ui.h:45
+msgid "Launchers"
+msgstr "Starter"
+
+#: Settings.ui.h:46
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Benutze Super+(0-9) als Tastaturkürzel um Anwendungen zu aktivieren. Kann "
+"auch zusammen mit Umschalttaste und Strg. 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
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Verhalten bei Mausklick auf das Icon einer laufenden Anwendung."
+
+#: Settings.ui.h:49
+msgid "Click action"
+msgstr "Wirkung bei Mausklick"
+
+#: Settings.ui.h:51
+msgid "Minimize or overview"
+msgstr "Minimieren oder Übersicht"
+
+#: Settings.ui.h:52
+#, fuzzy
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Verhalten bei Mausklick auf das Icon einer laufenden Anwendung."
+
+#: Settings.ui.h:53
+#, fuzzy
+msgid "Scroll action"
+msgstr "Wirkung bei Mausklick"
+
+#: Settings.ui.h:54
+msgid "Do nothing"
+msgstr "Nichts tun"
+
+#: Settings.ui.h:55
+msgid "Switch workspace"
+msgstr "Arbeitsfläche umschalten"
+
+# Verwende Übersetzung aus Nautilus
+#: Settings.ui.h:56
+msgid "Behavior"
+msgstr "Verhalten"
+
+#: Settings.ui.h:57
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Einige Anpassungen, durch die das Dock besser in das standardmäßige GNOME-"
+"Thema eingepasst werden soll. Alternativ können im Folgenden besondere "
+"Einstellungen vorgenommen werden."
+
+#: Settings.ui.h:58
+msgid "Use built-in theme"
+msgstr "Angepasstes Thema dieser Erweiterung nutzen"
+
+#: Settings.ui.h:59
+msgid "Save space reducing padding and border radius."
+msgstr "Platz sparen, indem Innenabstand und Eckenradius verkleinert werden."
+
+#: Settings.ui.h:60
+msgid "Shrink the dash"
+msgstr "Dash verkleinern"
+
+#: Settings.ui.h:61
+msgid "Show a dot for each windows of the application."
+msgstr "Für jedes Fenster einer Anwendung einen kleinen Indikator einblenden."
+
+#: Settings.ui.h:62
+msgid "Show windows counter indicators"
+msgstr "Indikatoren für Fensterzahl"
+
+#: Settings.ui.h:63
+msgid "Set the background color for the dash."
+msgstr "Setze Hintergrundfarbe für das Dash"
+
+#: Settings.ui.h:64
+msgid "Customize the dash color"
+msgstr "Farbe des Dash anpassen"
+
+#: Settings.ui.h:65
+msgid "Tune the dash background opacity."
+msgstr "Die Hintergrundtransparenz des Dash einstellen."
+
+#: Settings.ui.h:66
+msgid "Customize opacity"
+msgstr "Transparenz anpassen"
+
+#: Settings.ui.h:67
+msgid "Opacity"
+msgstr "Transparenz"
+
+#: Settings.ui.h:68
+msgid "Force straight corner\n"
+msgstr "Erzwinge rechte Ecke\n"
+
+#: Settings.ui.h:70
+msgid "Appearance"
+msgstr "Erscheinungsbild"
+
+#: Settings.ui.h:71
+msgid "version: "
+msgstr "Version: "
+
+#: Settings.ui.h:72
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Verwandelt das Dash aus dem Übersichtsmodus in ein Dock"
+
+#: Settings.ui.h:73
+msgid "Created by"
+msgstr "Erstellt von"
+
+#: Settings.ui.h:74
+msgid "Webpage"
+msgstr "Internetseite"
+
+#: Settings.ui.h:75
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">Für dieses Programm besteht KEINERLEI GARANTIE.\n"
+" Details finden Sie in der <a href=\"https://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.html\">GNU General Public License, Version 2 oder später</"
+"a>.</span>"
+
+# Verwende Übersetzung aus Nautilus
+#: Settings.ui.h:77
+msgid "About"
+msgstr "Info"
+
+#: Settings.ui.h:78
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Dock einblenden, wenn Mauszeiger an Bildschirmkante anliegt."
+
+#: Settings.ui.h:79
+msgid "Autohide"
+msgstr "Automatisch ausblenden"
+
+#: Settings.ui.h:80
+msgid "Push to show: require pressure to show the dock"
+msgstr ""
+"Anstoßen erforderlich: Dock nur einblenden, wenn Mauszeiger schnell gegen "
+"Bildschirmkante stößt"
+
+#: Settings.ui.h:81
+msgid "Enable in fullscreen mode"
+msgstr "Im Vollbildmodus einschalten"
+
+#: Settings.ui.h:82
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Dock einblenden, falls es keine Anwendungsfenster überlagert."
+
+#: Settings.ui.h:83
+msgid "Dodge windows"
+msgstr "Fenstern ausweichen"
+
+#: Settings.ui.h:84
+msgid "All windows"
+msgstr "Alle Fenster"
+
+#: Settings.ui.h:85
+msgid "Only focused application's windows"
+msgstr "Nur Anwendungsfenster mit Fokus"
+
+#: Settings.ui.h:86
+msgid "Only maximized windows"
+msgstr "Nur maximierte Fenster"
+
+# Nach DIN 1313 werden Einheiten nicht in Klammern gesetzt
+#: Settings.ui.h:87
+msgid "Animation duration (s)"
+msgstr "Animationsdauer in s"
+
+#: Settings.ui.h:88
+msgid "0.000"
+msgstr "0,000"
+
+#: Settings.ui.h:89
+msgid "Show timeout (s)"
+msgstr "Einblende-Verzögerung in s"
+
+#: Settings.ui.h:90
+msgid "Pressure threshold"
+msgstr "Stoßschwellwert"
+
+#: Settings.ui.h:91
+msgid "Isolate monitors."
+msgstr "Isoliere Monitore."
+
#~ msgid "Application"
#~ msgstr "Anwendung"
@@ -354,3 +813,129 @@ msgstr "Arbeitsfläche hinzufügen"
#~ "Das Beispiel soll zeigen, wie sich korrekt verhaltende Erweiterungen für "
#~ "die Shell erstellt werden. Es enthält grundlegende Funktionalität.\n"
#~ "Es ist möglich, die Begrüßungsnachricht zu ändern."
+
+#, fuzzy
+#~ msgid ""
+#~ "With fixed icon size, only the edge of the dock and the <i>Show "
+#~ "Applications</i> icon are active."
+#~ msgstr ""
+#~ "Falls es zu viele Symbole auf dem Dock werden, dann bleibt nur "
+#~ "<i>Anwendungen anzeigen</i> aktiv."
+
+#~ msgid "Switch workspace by scrolling on the dock"
+#~ msgstr "Arbeitsfläche durch Scrollen wechseln"
+
+#~ msgid "Only consider windows of the focused application"
+#~ msgstr "Nur Fenster der fokussierten Anwendung einbeziehen"
+
+#~ msgid "Main Settings"
+#~ msgstr "Grundeinstellungen"
+
+#~ msgid "Dock Position"
+#~ msgstr "Dock-Position"
+
+#~ msgid "Dock is fixed and always visible"
+#~ msgstr "Das Dock hat eine feste Position und ist immer sichtbar"
+
+#~ msgid "Show delay [ms]"
+#~ msgstr "Einblendeverzögerung [ms]"
+
+#~ msgid "Hide delay [ms]"
+#~ msgstr "Ausblendeverzögerung [ms]"
+
+#~ msgid "Application based intellihide"
+#~ msgstr "Anwendungsbasiertes intelligentes Verstecken"
+
+#~ msgid "Show the dock on following monitor (if attached)"
+#~ msgstr "Zeige Dock auf folgendem Monitor (falls angeschlossen)"
+
+#~ 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"
+
+#~ msgid "Expand (experimental and buggy)"
+#~ msgstr "Komplette Höhe (experimentell und fehlerbehaftet)"
+
+#~ msgid "Maximum icon size"
+#~ msgstr "Maximale Symbolgröße"
+
+#~ msgid "16"
+#~ msgstr "16"
+
+#~ msgid "24"
+#~ msgstr "24"
+
+#~ msgid "32"
+#~ msgstr "32"
+
+#~ msgid "48"
+#~ msgstr "48"
+
+#~ msgid "64"
+#~ msgstr "64"
+
+#~ msgid "Optional features"
+#~ msgstr "Optionale Funktionen"
+
+#~ msgid "Deadtime between each workspace switching [ms]"
+#~ msgstr "Stillstandszeit zwischen Arbeitsflächenwechsel [ms]"
+
+#~ msgid "Only a 1px wide area close to the screen edge is active"
+#~ msgstr "Nur einen 1 Pixel-breiten Bereich am Rand nutzen"
+
+#~ msgid "All the area of the dock is active"
+#~ msgstr "Den gesamten Bereich des Docks nutzen"
+
+#~ msgid "Customize actions on mouse click"
+#~ msgstr "Aktion bei Mausklick anpassen"
+
+#~ msgid "Action on clicking on running app"
+#~ msgstr "Aktion beim Klicken auf eine laufende Anwendung"
+
+#~ msgid "Minimize window on shift+click (double click for all app windows)"
+#~ msgstr ""
+#~ "Fenster mit Shift+Klick minimieren (Doppelklick für alle Fenster der "
+#~ "Anwendung)"
+
+#~ msgid "Appearence and Themes"
+#~ msgstr "Erscheinungsbild und Themen"
+
+#~ msgid ""
+#~ "A customized theme is built in the extension. This is meant to work with "
+#~ "the default Adwaita theme: the dash is shrunk to save space, its "
+#~ "background transparency reduced, and custom indicators for the number of "
+#~ "windows of each application are added."
+#~ msgstr ""
+#~ "Ein angepasstes Thema ist in dieser Erweiterung enthalten. Es ist für das "
+#~ "Vorgabe-Adwaita-Thema gedacht: Das Dash ist schmaler, um Platz zu sparen, "
+#~ "die Hintergrundtransparenz ist reduziert und für jede Anwendung wird ein "
+#~ "Indikator für die Anzahl der Fenster eingefügt."
+
+#~ msgid ""
+#~ "Alternatively, for a better integration with custom themes, each "
+#~ "customization can be applied indipendently"
+#~ msgstr ""
+#~ "Alternativ können für eine bessere Integration Anpassungen vorgenommen "
+#~ "werden"
+
+#~ msgid "Shrink the dash size by reducing padding"
+#~ msgstr "Das Dash schmaler machen durch Verkleinern des Abstands zum Rand"
+
+#~ msgid "Apply custom theme (work only with the default Adwaita theme)"
+#~ msgstr ""
+#~ "Benutzerdefiniertes Theme verwenden (funktioniert nur mit dem Standard-"
+#~ "Adwaita-Theme)"
diff --git a/po/el.po b/po/el.po
index 59b14dfb..bd0a7a5f 100644
--- a/po/el.po
+++ b/po/el.po
@@ -1,3 +1,4 @@
+# #-#-#-#-# el.po (gnome-shell-extensions master) #-#-#-#-#
# Greek 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.
@@ -7,8 +8,18 @@
# Vangelis Skarmoutsos <skarmoutsosv@gmail.com>, 2013.
# Efstathios Iosifidis <iosifidis@opensuse.org>, 2013-2019.
#
+# #-#-#-#-# el.po (Dash to Dock) #-#-#-#-#
+# 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 <EMAIL@ADDRESS>, YEAR.
+# Δημήτριος-Ρωμανός Ησαΐας <dirosissaias@cosmotemail.gr>, 2017.
+# Vangelis Skarmoutsos <skarmoutsosv@gmail.com>, 2017.
+#
+#, fuzzy
msgid ""
msgstr ""
+"#-#-#-#-# el.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"
@@ -23,6 +34,19 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 1.8.7.1\n"
"X-Project-Style: gnome\n"
+"#-#-#-#-# el.po (Dash to Dock) #-#-#-#-#\n"
+"Project-Id-Version: Dash to Dock\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-06-04 12:35+0100\n"
+"PO-Revision-Date: 2017-09-29 21:48+0300\n"
+"Last-Translator: Vangelis Skarmoutsos <skarmoutsosv@gmail.com>\n"
+"Language-Team:\n"
+"Language: el\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"
@@ -159,7 +183,7 @@ msgstr "Κλείσιμο"
msgid "Unminimize"
msgstr "Αποελαχιστοποίηση"
-#: extensions/window-list/extension.js:118
+#: extensions/window-list/extension.js:118 Settings.ui.h:50
msgid "Minimize"
msgstr "Ελαχιστοποίηση"
@@ -268,6 +292,425 @@ msgstr "Χώρος εργασίας %d"
msgid "Add Workspace"
msgstr "Προσθήκη χώρου εργασίας"
+#: prefs.js:155 Settings.ui.h:26
+msgid "Left"
+msgstr "Αριστερά"
+
+#: prefs.js:154 Settings.ui.h:29
+msgid "Right"
+msgstr "Δεξιά"
+
+#: prefs.js:113
+msgid "Primary monitor"
+msgstr "Κύρια οθόνη"
+
+#: prefs.js:122 prefs.js:129
+msgid "Secondary monitor "
+msgstr "Δευτερεύουσα οθόνη "
+
+#: prefs.js:205
+msgid "Intelligent autohide customization"
+msgstr "Προσαρμογή έξυπνης απόκρυψης"
+
+#: prefs.js:212 prefs.js:393 prefs.js:450
+msgid "Reset to defaults"
+msgstr "Επαναφορά στις προεπιλογές"
+
+#: prefs.js:386
+msgid "Show dock and application numbers"
+msgstr "Προβολή της μπάρας και της αρίθμησης εφαρμογών"
+
+#: prefs.js:443
+msgid "Customize middle-click behavior"
+msgstr "Προσαρμογή συμπεριφοράς μεσαίου κλικ"
+
+#: prefs.js:514
+msgid "Customize running indicators"
+msgstr "Προσαρμογή δεικτών τρεχόντων εφαρμογών"
+
+#: appIcons.js:804
+msgid "All Windows"
+msgstr "Όλα τα παράθυρα"
+
+#: Settings.ui.h:1
+msgid "Customize indicator style"
+msgstr "Προσαρμογή του στυλ του δείκτη"
+
+#: Settings.ui.h:2
+msgid "Color"
+msgstr "Χρώμα"
+
+#: Settings.ui.h:3
+msgid "Border color"
+msgstr "Χρώμα περιγράμματος"
+
+#: Settings.ui.h:4
+msgid "Border width"
+msgstr "Πλάτος περιγράμματος"
+
+#: Settings.ui.h:5
+msgid "Number overlay"
+msgstr "Επίστρωση αριθμού"
+
+#: Settings.ui.h:6
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"Προσωρινή εμφάνιση αριθμών εφαρμογής πάνω από τα εικονίδια, που αντιστοιχούν "
+"στη συντόμευση πληκτρολογίου."
+
+#: Settings.ui.h:7
+msgid "Show the dock if it is hidden"
+msgstr "Προβολή της μπάρας αν είναι κρυμμένη"
+
+#: Settings.ui.h:8
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Αν χρησιμοποιείται η αυτόματη απόκρυψη, η μπάρα θα εμφανίζεται για λίγο "
+"χρόνο όταν πατιέται η συντόμευση."
+
+#: Settings.ui.h:9
+msgid "Shortcut for the options above"
+msgstr "Συντόμευση για τις παραπάνω επιλογές"
+
+#: Settings.ui.h:10
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Σύνταξη: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:11
+msgid "Hide timeout (s)"
+msgstr "Καθυστέρηση απόκρυψης"
+
+#: Settings.ui.h:12
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Όταν είναι ρυθμισμένο στην ελαχιστοποίηση, το διπλό κλικ ελαχιστοποιεί όλα "
+"τα παράθυρα της εφαρμογής."
+
+#: Settings.ui.h:13
+msgid "Shift+Click action"
+msgstr "Λειτουργία του Shift+Click"
+
+#: Settings.ui.h:14
+msgid "Raise window"
+msgstr "Ανύψωση παραθύρου"
+
+#: Settings.ui.h:15
+msgid "Minimize window"
+msgstr "Ελαχιστοποίηση παραθύρου"
+
+#: Settings.ui.h:16
+msgid "Launch new instance"
+msgstr "Εκκίνηση νέου παραθύρου"
+
+#: Settings.ui.h:17
+msgid "Cycle through windows"
+msgstr "Περιήγηση στα ανοικτά παράθυρα"
+
+#: Settings.ui.h:18
+msgid "Quit"
+msgstr "Έξοδος"
+
+#: Settings.ui.h:19
+msgid "Behavior for Middle-Click."
+msgstr "Συμπεριφορά μεσαίου κλικ."
+
+#: Settings.ui.h:20
+msgid "Middle-Click action"
+msgstr "Λειτουργία του μεσαίου κλικ"
+
+#: Settings.ui.h:21
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Συμπεριφορά Shift+Μεσαίο κλικ."
+
+#: Settings.ui.h:22
+msgid "Shift+Middle-Click action"
+msgstr "Λειτουργία του Shift+Μεσαίο κλικ"
+
+#: Settings.ui.h:23
+msgid "Show the dock on"
+msgstr "Εμφάνιση της μπάρας στην"
+
+#: Settings.ui.h:24
+msgid "Show on all monitors."
+msgstr "Εμφάνιση σε όλες τις οθόνες."
+
+#: Settings.ui.h:25
+msgid "Position on screen"
+msgstr "Θέση στην οθόνη"
+
+#: Settings.ui.h:27
+msgid "Bottom"
+msgstr "Κάτω"
+
+#: Settings.ui.h:28
+msgid "Top"
+msgstr "Πάνω"
+
+#: Settings.ui.h:30
+msgid ""
+"Hide the dock when it obstructs a window of the the current application. "
+"More refined settings are available."
+msgstr ""
+"Απόκρυψη της μπάρας όταν εμποδίζει ένα παράθυρο της τρέχουσας εφαρμογής. Πιο "
+"εξειδικευμένες επιλογές είναι επίσης διαθέσιμες."
+
+#: Settings.ui.h:31
+msgid "Intelligent autohide"
+msgstr "Έξυπνη απόκρυψη"
+
+#: Settings.ui.h:32
+msgid "Dock size limit"
+msgstr "Περιορισμός μεγέθους μπάρας"
+
+#: Settings.ui.h:33
+msgid "Panel mode: extend to the screen edge"
+msgstr "Λειτουργιά πάνελ: επέκταση της μπάρας ως τις άκρες της οθόνης"
+
+#: Settings.ui.h:34
+msgid "Icon size limit"
+msgstr "Περιορισμός μεγέθους εικονιδίων"
+
+#: Settings.ui.h:35
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr ""
+"Σταθερό μέγεθος εικονιδίων: κύλιση για την εμφάνιση περαιτέρω εικονιδίων"
+
+#: Settings.ui.h:36
+msgid "Position and size"
+msgstr "Θέση και μέγεθος"
+
+#: Settings.ui.h:37
+msgid "Show favorite applications"
+msgstr "Εμφάνιση αγαπημένων εφαρμογών"
+
+#: Settings.ui.h:38
+msgid "Show running applications"
+msgstr "Εμφάνιση εκτελούμενων εφαρμογών"
+
+#: Settings.ui.h:39
+msgid "Isolate workspaces."
+msgstr "Απομόνωση χώρων εργασίας."
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "Εμφάνιση προεπισκόπησης ανοικτών παραθύρων."
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Αν είναι απενεργοποιημένο, αυτές οι ρυθμίσεις είναι προσβάσιμες από το "
+"εργαλείο μικρορυθμίσεων του GNOME ή τον ιστοτόπο επεκτάσεων."
+
+#: Settings.ui.h:42
+msgid "Show <i>Applications</i> icon"
+msgstr "Εμφάνιση εικονιδίου <i>Εφαρμογές</i>"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr "Μετακίνηση του πλήκτρου εφαρμογών στην αρχή της μπάρας."
+
+#: Settings.ui.h:44
+msgid "Animate <i>Show Applications</i>."
+msgstr "Ενεργοποίηση γραφικών κατά την <i>Εμφάνιση Εφαρμογών</i>."
+
+#: Settings.ui.h:45
+msgid "Launchers"
+msgstr "Εκκινητές"
+
+#: Settings.ui.h:46
+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:47
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "Χρήση συντομεύσεων πληκτρολογίου για την ενεργοποίηση εφαρμογών"
+
+#: Settings.ui.h:48
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Συμπεριφορά κατά το κλικ σε εικονίδιο τρέχουσας εφαρμογής."
+
+#: Settings.ui.h:49
+msgid "Click action"
+msgstr "Συμπεριφορά κλικ"
+
+#: Settings.ui.h:51
+msgid "Minimize or overview"
+msgstr "Ελαχιστοποίηση ή επισκόπηση"
+
+#: Settings.ui.h:52
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Συμπεριφορά κατά την κύλιση σε εικονίδιο τρέχουσας εφαρμογής."
+
+#: Settings.ui.h:53
+msgid "Scroll action"
+msgstr "Συμπεριφορά κύλισης"
+
+#: Settings.ui.h:54
+msgid "Do nothing"
+msgstr "Καμία δράση"
+
+#: Settings.ui.h:55
+msgid "Switch workspace"
+msgstr "Αλλαγή χώρου εργασίας"
+
+#: Settings.ui.h:56
+msgid "Behavior"
+msgstr "Συμπεριφορά"
+
+#: Settings.ui.h:57
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Μερικές προσαρμογές στοχεύουν στο να ενοποιήσουν την μπάρα με το "
+"προκαθορισμένο θέμα του GNOME. Εναλλακτικά, ειδικές επιλογές μπορούν να "
+"ενεργοποιηθούν παρακάτω."
+
+#: Settings.ui.h:58
+msgid "Use built-in theme"
+msgstr "Χρήση ενσωματωμένου θέματος"
+
+#: Settings.ui.h:59
+msgid "Save space reducing padding and border radius."
+msgstr "Εξοικονόμηση χώρου μειώνοντας τα κενά και τα περιθώρια."
+
+#: Settings.ui.h:60
+msgid "Shrink the dash"
+msgstr "Σμίκρυνση της μπάρας"
+
+#: Settings.ui.h:61
+msgid "Show a dot for each windows of the application."
+msgstr "Εμφανίζει μία τελεία για κάθε παράθυρο της εφαρμογής."
+
+#: Settings.ui.h:62
+msgid "Show windows counter indicators"
+msgstr "Εμφάνιση μετρητή παραθύρων"
+
+#: Settings.ui.h:63
+msgid "Set the background color for the dash."
+msgstr "Ορισμός χρώματος φόντου της μπάρας."
+
+#: Settings.ui.h:64
+msgid "Customize the dash color"
+msgstr "Προσαρμογή του χρώματος της μπάρας"
+
+#: Settings.ui.h:65
+msgid "Tune the dash background opacity."
+msgstr "Αλλαγή της αδιαφάνειας του φόντου της μπάρας."
+
+#: Settings.ui.h:66
+msgid "Customize opacity"
+msgstr "Προσαρμογή αδιαφάνειας"
+
+#: Settings.ui.h:67
+msgid "Opacity"
+msgstr "Αδιαφάνεια"
+
+#: Settings.ui.h:68
+msgid "Force straight corner\n"
+msgstr "Εξαναγκασμός ευθείας γωνίας\n"
+
+#: Settings.ui.h:70
+msgid "Appearance"
+msgstr "Εμφάνιση"
+
+#: Settings.ui.h:71
+msgid "version: "
+msgstr "έκδοση: "
+
+#: Settings.ui.h:72
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr ""
+"Μετακινεί το ταμπλό και εκτός της προεπισκόπησης μετατρέποντάς το σε μπάρα "
+"εφαρμογών"
+
+#: Settings.ui.h:73
+msgid "Created by"
+msgstr "Δημιουργήθηκε από"
+
+#: Settings.ui.h:74
+msgid "Webpage"
+msgstr "Ιστοσελίδα"
+
+#: Settings.ui.h:75
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">Αυτό πρόγραμμα παρέχεται χωρίς ΑΠΟΛΥΤΩΣ ΚΑΜΙΑ ΕΓΓΥΗΣΗ.\n"
+"Για λεπτομέρειες δείτε την <a href=\"https://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.html\">Γενική δημόσια άδεια GNU, έκδοση 2 ή νεότερη.</a> </"
+"span>"
+
+#: Settings.ui.h:77
+msgid "About"
+msgstr "Περί"
+
+#: Settings.ui.h:78
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Εμφάνιση της μπάρας όταν το ποντίκι πηγαίνει στην άκρη της οθόνης."
+
+#: Settings.ui.h:79
+msgid "Autohide"
+msgstr "Αυτόματη απόκρυψη"
+
+#: Settings.ui.h:80
+msgid "Push to show: require pressure to show the dock"
+msgstr "Πίεση για εμφάνιση: απαιτείται πίεση για την εμφάνιση της μπάρας"
+
+#: Settings.ui.h:81
+msgid "Enable in fullscreen mode"
+msgstr "Ενεργοποίηση σε κατάσταση πλήρους οθόνης"
+
+#: Settings.ui.h:82
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Εμφάνιση της μπάρας όταν δεν εμποδίζει τα παράθυρά των εφαρμογών."
+
+#: Settings.ui.h:83
+msgid "Dodge windows"
+msgstr "Αποφυγή παραθύρων"
+
+#: Settings.ui.h:84
+msgid "All windows"
+msgstr "Όλα τα παράθυρα"
+
+#: Settings.ui.h:85
+msgid "Only focused application's windows"
+msgstr "Μόνο τα παράθυρα της εστιασμένης εφαρμογής"
+
+#: Settings.ui.h:86
+msgid "Only maximized windows"
+msgstr "Μόνο μεγιστοποιημένα παράθυρα"
+
+#: Settings.ui.h:87
+msgid "Animation duration (s)"
+msgstr "Διάρκεια κίνησης γραφικών (s)"
+
+#: Settings.ui.h:88
+msgid "0.000"
+msgstr "0.000"
+
+#: Settings.ui.h:89
+msgid "Show timeout (s)"
+msgstr "Χρονικό όριο εμφάνισης"
+
+#: Settings.ui.h:90
+msgid "Pressure threshold"
+msgstr "Ελάχιστη πίεση"
+
#~ msgid "Application"
#~ msgstr "Εφαρμογή"
@@ -389,12 +832,6 @@ msgstr "Προσθήκη χώρου εργασίας"
#~ msgid "Normal"
#~ msgstr "Κανονικό"
-#~ msgid "Left"
-#~ msgstr "Αριστερά"
-
-#~ msgid "Right"
-#~ msgstr "Δεξιά"
-
#~ msgid "Upside-down"
#~ msgstr "Αναποδογυρισμένο"
diff --git a/po/es.po b/po/es.po
index d0b5ab1f..eaafe99e 100644
--- a/po/es.po
+++ b/po/es.po
@@ -1,3 +1,4 @@
+# #-#-#-#-# 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.
@@ -6,8 +7,15 @@
#
# Daniel Mustieles <daniel.mustieles@gmail.com>, 2011-2020.
#
+# #-#-#-#-# es.po #-#-#-#-#
+# Dash to Dock spanish translation.
+# This file is distributed under the same license as the Dash to Dock package.
+# Hugo Olabera <hugolabe@gmail.com>, 2015.
+#
+#, fuzzy
msgid ""
msgstr ""
+"#-#-#-#-# 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"
@@ -21,6 +29,19 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Gtranslator 3.36.0\n"
+"#-#-#-#-# es.po #-#-#-#-#\n"
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2019-03-06 01:57-0600\n"
+"PO-Revision-Date: 2020-03-23 11:25+0100\n"
+"Last-Translator: Adolfo Jayme Barrientos <fitojb@ubuntu.com>\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.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"
@@ -155,7 +176,7 @@ msgstr "Cerrar"
msgid "Unminimize"
msgstr "Desminimizar"
-#: extensions/window-list/extension.js:118
+#: extensions/window-list/extension.js:118 Settings.ui.h:50
msgid "Minimize"
msgstr "Minimizar"
@@ -264,6 +285,505 @@ msgstr "Área de trabajo %d"
msgid "Add Workspace"
msgstr "Añadir área de trabajo"
+#: prefs.js:306 Settings.ui.h:25
+msgid "Left"
+msgstr "Izquierda"
+
+#: prefs.js:305 Settings.ui.h:28
+msgid "Right"
+msgstr "Derecha"
+
+#: prefs.js:264
+msgid "Primary monitor"
+msgstr "Monitor principal"
+
+#: prefs.js:273 prefs.js:280
+msgid "Secondary monitor "
+msgstr "Monitor secundario"
+
+#: prefs.js:356
+msgid "Intelligent autohide customization"
+msgstr "Personalización de ocultamiento inteligente"
+
+#: prefs.js:363 prefs.js:548 prefs.js:604
+msgid "Reset to defaults"
+msgstr "Restablecer la configuración predeterminada"
+
+#: prefs.js:541
+msgid "Show dock and application numbers"
+msgstr "Mostrar dock y números de aplicación"
+
+#: prefs.js:597
+msgid "Customize middle-click behavior"
+msgstr "Personalizar comportamiento del botón central"
+
+#: prefs.js:680
+msgid "Customize running indicators"
+msgstr "Personalizar indicadores de ejecución"
+
+#: appIcons.js:790
+msgid "All Windows"
+msgstr "Todas las ventanas"
+
+#. Translators: %s is "Settings", which is automatically translated. You
+#. can also translate the full message if this fits better your language.
+#: appIcons.js:1092
+#, javascript-format
+msgid "Dash to Dock %s"
+msgstr "%s • Dash to Dock"
+
+#: Settings.ui.h:1
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Cuando se selecciona minimizar, una pulsación doble minimiza todas las "
+"ventanas de la aplicación."
+
+#: Settings.ui.h:2
+msgid "Shift+Click action"
+msgstr "Acción de Mayús + pulsación"
+
+#: Settings.ui.h:3
+msgid "Raise window"
+msgstr "Elevar ventana"
+
+#: Settings.ui.h:4
+msgid "Minimize window"
+msgstr "Minimizar ventana"
+
+#: Settings.ui.h:5
+msgid "Launch new instance"
+msgstr "Iniciar una instancia nueva"
+
+#: Settings.ui.h:6
+msgid "Cycle through windows"
+msgstr "Alternar entre ventanas"
+
+#: Settings.ui.h:7
+msgid "Minimize or overview"
+msgstr "Minimizar o vista de actividades"
+
+#: Settings.ui.h:8
+msgid "Show window previews"
+msgstr "Mostrar previsualizaciones de ventanas"
+
+#: Settings.ui.h:9
+msgid "Minimize or show previews"
+msgstr "Minimizar o mostrar previsualizaciones"
+
+#: Settings.ui.h:10
+msgid "Focus or show previews"
+msgstr "Focalizar o mostrar previsualizaciones"
+
+#: Settings.ui.h:11
+msgid "Quit"
+msgstr "Salir"
+
+#: Settings.ui.h:12
+msgid "Behavior for Middle-Click."
+msgstr "Comportamiento del botón central"
+
+#: Settings.ui.h:13
+msgid "Middle-Click action"
+msgstr "Acción del botón central"
+
+#: Settings.ui.h:14
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Comportamiento de Mayús + botón central"
+
+#: Settings.ui.h:15
+msgid "Shift+Middle-Click action"
+msgstr "Acción de Mayús + botón central"
+
+#: Settings.ui.h:16
+msgid "Enable Unity7 like glossy backlit items"
+msgstr "Activar elementos retroiluminados a la Unity 7"
+
+#: Settings.ui.h:17
+msgid "Use dominant color"
+msgstr "Utilizar el color dominante"
+
+#: Settings.ui.h:18
+msgid "Customize indicator style"
+msgstr "Personalizar estilo del indicador"
+
+#: Settings.ui.h:19
+msgid "Color"
+msgstr "Color"
+
+#: Settings.ui.h:20
+msgid "Border color"
+msgstr "Color del borde"
+
+#: Settings.ui.h:21
+msgid "Border width"
+msgstr "Grosor del borde"
+
+#: Settings.ui.h:22
+msgid "Show the dock on"
+msgstr "Mostrar el dock en"
+
+#: Settings.ui.h:23
+msgid "Show on all monitors."
+msgstr "Mostrar en todos los monitores."
+
+#: Settings.ui.h:24
+msgid "Position on screen"
+msgstr "Posición en pantalla"
+
+#: Settings.ui.h:26
+msgid "Bottom"
+msgstr "Inferior"
+
+#: Settings.ui.h:27
+msgid "Top"
+msgstr "Superior"
+
+#: Settings.ui.h:29
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"Ocultar el dock cuando cubre una ventana de la aplicación activa. Otras "
+"opciones disponibles."
+
+#: Settings.ui.h:30
+msgid "Intelligent autohide"
+msgstr "Ocultamiento automático inteligente"
+
+#: Settings.ui.h:31
+msgid "Dock size limit"
+msgstr "Tamaño máximo del dock"
+
+#: Settings.ui.h:32
+msgid "Panel mode: extend to the screen edge"
+msgstr "Modo panel: extender hasta los bordes de la pantalla"
+
+#: Settings.ui.h:33
+msgid "Icon size limit"
+msgstr "Tamaño máximo de los iconos"
+
+#: Settings.ui.h:34
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Tamaño fijo de los iconos: desplazarse para mostrar otros"
+
+#: Settings.ui.h:35
+msgid "Position and size"
+msgstr "Posición y tamaño"
+
+#: Settings.ui.h:36
+msgid "Show favorite applications"
+msgstr "Mostrar aplicaciones favoritas"
+
+#: Settings.ui.h:37
+msgid "Show running applications"
+msgstr "Mostrar aplicaciones en ejecución"
+
+#: Settings.ui.h:38
+msgid "Isolate workspaces."
+msgstr "Aislar los espacios de trabajo."
+
+#: Settings.ui.h:39
+msgid "Isolate monitors."
+msgstr "Aislar los monitores."
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "Mostrar vista rápida de ventanas."
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Si se desactiva, estas opciones estarán disponibles en Retoques de GNOME y "
+"el sitio web de la extensión."
+
+#: Settings.ui.h:42
+msgid "Show <i>Applications</i> icon"
+msgstr "Mostrar el icono <i>Aplicaciones</i>"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr "Mover el botón de aplicaciones al comienzo del dock"
+
+#: Settings.ui.h:44
+msgid "Animate <i>Show Applications</i>."
+msgstr "Animar <i>Mostrar aplicaciones</i>"
+
+#: Settings.ui.h:45
+msgid "Launchers"
+msgstr "Lanzadores"
+
+#: Settings.ui.h:46
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Activar Súper + (0-9) como atajos para activar aplicaciones. Pueden "
+"emplearse en conjunto 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
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Comportamiento al pulsar el icono de una aplicación en ejecución"
+
+#: Settings.ui.h:49
+msgid "Click action"
+msgstr "Acción al pulsar"
+
+#: Settings.ui.h:51
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Comportamiento al usar la rueda sobre el icono de una aplicación."
+
+#: Settings.ui.h:52
+msgid "Scroll action"
+msgstr "Acción al desplazarse"
+
+#: Settings.ui.h:53
+msgid "Do nothing"
+msgstr "No hacer nada"
+
+#: Settings.ui.h:54
+msgid "Switch workspace"
+msgstr "Cambiar de espacio de trabajo."
+
+#: Settings.ui.h:55
+msgid "Behavior"
+msgstr "Comportamiento"
+
+#: Settings.ui.h:56
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Utilizar el tema predeterminado de GNOME. Alternativamente, pueden elegirse "
+"ciertas opciones más abajo."
+
+#: Settings.ui.h:57
+msgid "Use built-in theme"
+msgstr "Utilizar el tema incorporado"
+
+#: Settings.ui.h:58
+msgid "Save space reducing padding and border radius."
+msgstr "Reducir los márgenes para ganar espacio"
+
+#: Settings.ui.h:59
+msgid "Shrink the dash"
+msgstr "Encoger el tablero"
+
+#: Settings.ui.h:60
+msgid "Customize windows counter indicators"
+msgstr "Personalizar los contadores de ventanas"
+
+#: Settings.ui.h:61
+msgid "Default"
+msgstr "Predeterminado"
+
+#: Settings.ui.h:62
+msgid "Dots"
+msgstr "Puntos"
+
+#: Settings.ui.h:63
+msgid "Squares"
+msgstr "Cuadrados"
+
+#: Settings.ui.h:64
+msgid "Dashes"
+msgstr "Rayas"
+
+#: Settings.ui.h:65
+msgid "Segmented"
+msgstr "Segmentado"
+
+#: Settings.ui.h:66
+msgid "Solid"
+msgstr "Sólido"
+
+#: Settings.ui.h:67
+msgid "Ciliora"
+msgstr "Ciliora"
+
+#: Settings.ui.h:68
+msgid "Metro"
+msgstr "Metro"
+
+#: Settings.ui.h:69
+msgid "Set the background color for the dash."
+msgstr "Escoger el color de fondo del dock."
+
+#: Settings.ui.h:70
+msgid "Customize the dash color"
+msgstr "Personalizar el color del dock"
+
+#: Settings.ui.h:71
+msgid "Tune the dash background opacity."
+msgstr "Ajustar la opacidad del fondo del dock."
+
+#: prefs.js:792 Settings.ui.h:72
+msgid "Customize opacity"
+msgstr "Personalizar opacidad"
+
+#: Settings.ui.h:73
+msgid "Fixed"
+msgstr "Fijo"
+
+#: Settings.ui.h:74
+msgid "Dynamic"
+msgstr "Dinámico"
+
+#: Settings.ui.h:75
+msgid "Opacity"
+msgstr "Opacidad"
+
+#: Settings.ui.h:76
+msgid "Force straight corner"
+msgstr "Forzar esquinas rectas"
+
+#: Settings.ui.h:78
+msgid "Appearance"
+msgstr "Apariencia"
+
+#: Settings.ui.h:79
+msgid "version: "
+msgstr "versión: "
+
+#: Settings.ui.h:80
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr ""
+"Mueve el panel fuera de la vista de actividades trasformándolo en un dock"
+
+#: Settings.ui.h:81
+msgid "Created by"
+msgstr "Creado por"
+
+#: Settings.ui.h:82
+msgid "Webpage"
+msgstr "Sitio web"
+
+#: Settings.ui.h:83
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">Este programa viene SIN NINGUNA GARANTÍA.\n"
+"Consulte la <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">Licencia Pública General de GNU, versión 2 o posterior</a> para obtener "
+"más detalles.</span>"
+
+#: Settings.ui.h:85
+msgid "About"
+msgstr "Acerca de"
+
+#: Settings.ui.h:86
+msgid "Customize minimum and maximum opacity values"
+msgstr "Personalizar los valores mínimo y máximo de opacidad"
+
+#: Settings.ui.h:87
+msgid "Minimum opacity"
+msgstr "Opacidad mínima"
+
+#: Settings.ui.h:88
+msgid "Maximum opacity"
+msgstr "Opacidad máxima"
+
+#: Settings.ui.h:89
+msgid "Number overlay"
+msgstr "Número sobrepuesto"
+
+#: Settings.ui.h:90
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"Al usar atajos, mostrar momentáneamente el número de aplicación sobre los "
+"iconos."
+
+#: Settings.ui.h:91
+msgid "Show the dock if it is hidden"
+msgstr "Mostrar el dock si está oculto"
+
+#: Settings.ui.h:92
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Si se activa el ocultamiento automático, el dock aparecerá momentáneamente "
+"al usar el atajo."
+
+#: Settings.ui.h:93
+msgid "Shortcut for the options above"
+msgstr "Atajo para las opciones anteriores"
+
+#: Settings.ui.h:94
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Sintaxis: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:95
+msgid "Hide timeout (s)"
+msgstr "Tiempo de ocultación (s)"
+
+#: Settings.ui.h:96
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Mostrar el dock al mover el puntero al borde de la pantalla"
+
+#: Settings.ui.h:97
+msgid "Autohide"
+msgstr "Ocultar automáticamente"
+
+#: Settings.ui.h:98
+msgid "Push to show: require pressure to show the dock"
+msgstr "Empujar para mostrar: requiere hacer presión para mostrar el dock"
+
+#: Settings.ui.h:99
+msgid "Enable in fullscreen mode"
+msgstr "Activar en modo de pantalla completa"
+
+#: Settings.ui.h:100
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Mostrar el dock cuando no cubra otras ventanas de aplicaciones."
+
+#: Settings.ui.h:101
+msgid "Dodge windows"
+msgstr "Esquivar las ventanas"
+
+#: Settings.ui.h:102
+msgid "All windows"
+msgstr "Todas las ventanas"
+
+#: Settings.ui.h:103
+msgid "Only focused application's windows"
+msgstr "Solo las ventanas de la aplicación activa"
+
+#: Settings.ui.h:104
+msgid "Only maximized windows"
+msgstr "Solo las ventanas maximizadas"
+
+#: Settings.ui.h:105
+msgid "Animation duration (s)"
+msgstr "Duración de la animación (s)"
+
+#: Settings.ui.h:106
+msgid "Show timeout (s)"
+msgstr "Tiempo de aparición (s)"
+
+#: Settings.ui.h:107
+msgid "Pressure threshold"
+msgstr "Nivel de presión"
+
+#: Settings.ui.h:108
+msgid "Show trash can"
+msgstr "Mostrar el icono Papelera"
+
+#: Settings.ui.h:109
+msgid "Show mounted volumes and devices"
+msgstr "Mostrar los dispositivos montados"
+
#~ msgid "Application"
#~ msgstr "Aplicación"
@@ -387,12 +907,6 @@ msgstr "Añadir área de trabajo"
#~ msgid "Normal"
#~ msgstr "Normal"
-#~ msgid "Left"
-#~ msgstr "Izquierda"
-
-#~ msgid "Right"
-#~ msgstr "Derecha"
-
#~ msgid "Upside-down"
#~ msgstr "Hacia abajo"
diff --git a/po/eu.po b/po/eu.po
index 094f6749..f3e26694 100644
--- a/po/eu.po
+++ b/po/eu.po
@@ -1,3 +1,4 @@
+# #-#-#-#-# eu.po (gnome-shell-extensions master) #-#-#-#-#
# Basque 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.
@@ -7,9 +8,18 @@
# Edurne Labaka <elabaka@uzei.com>, 2015.
# Asier Sarasua Garmendia <asiersarasua@ni.eus>, 2019, 2020.
#
+# #-#-#-#-# eu.po #-#-#-#-#
+# Dash to Dock Basque translation.
+# This file is distributed under the same license as the Dash to Dock package.
+# Ibai Oihanguren Sala <ibai@oihanguren.com>, 2020.
+#
+#, fuzzy
msgid ""
-msgstr "Project-Id-Version: gnome-shell-extensions master\n"
-"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/issues\n"
+msgstr ""
+"#-#-#-#-# eu.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"
"POT-Creation-Date: 2020-05-28 00:55+0000\n"
"PO-Revision-Date: 2020-08-10 00:42+0200\n"
"Last-Translator: Asier Sarasua Garmendia <asiersarasua@ni.eus>\n"
@@ -21,6 +31,17 @@ msgstr "Project-Id-Version: gnome-shell-extensions master\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Project-Style: gnome\n"
"X-Generator: Poedit 2.2.3\n"
+"#-#-#-#-# eu.po #-#-#-#-#\n"
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-03-22 23:54+0100\n"
+"PO-Revision-Date: 2020-03-22 23:54+0100\n"
+"Last-Translator: Ibai Oihanguren Sala <ibai@oihanguren.com>\n"
+"Language-Team: \n"
+"Language: eu\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -46,7 +67,9 @@ msgstr "Aplikazioen eta laneko areen zerrenda"
msgid ""
"A list of strings, each containing an application id (desktop file name), "
"followed by a colon and the workspace number"
-msgstr "Kateen zerrenda bat, bakoitzak aplikazio-ID bat duena (mahaigainaren fitxategi-izena) eta jarraian bi puntu eta laneko arearen zenbakia dituena"
+msgstr ""
+"Kateen zerrenda bat, bakoitzak aplikazio-ID bat duena (mahaigainaren "
+"fitxategi-izena) eta jarraian bi puntu eta laneko arearen zenbakia dituena"
#: extensions/auto-move-windows/prefs.js:35
msgid "Workspace Rules"
@@ -80,7 +103,11 @@ msgid ""
"Try to use more screen for placing window thumbnails by adapting to screen "
"aspect ratio, and consolidating them further to reduce the bounding box. "
"This setting applies only with the natural placement strategy."
-msgstr "Saiatu pantaila gehiago erabiltzen leihoen koadro txikiak kokatzeko pantailaren aspektu-erlaziora egokituz, eta haiek taldekatu muga-koadroa txikiagotzeko. Ezarpen hau kokapen naturalaren estrategiarekin soilik aplikatzen da."
+msgstr ""
+"Saiatu pantaila gehiago erabiltzen leihoen koadro txikiak kokatzeko "
+"pantailaren aspektu-erlaziora egokituz, eta haiek taldekatu muga-koadroa "
+"txikiagotzeko. Ezarpen hau kokapen naturalaren estrategiarekin soilik "
+"aplikatzen da."
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11
msgid "Place window captions on top"
@@ -91,7 +118,10 @@ msgid ""
"If true, place window captions on top the respective thumbnail, overriding "
"shell default of placing it at the bottom. Changing this setting requires "
"restarting the shell to have any effect."
-msgstr "TRUE (egia) bada, leihoen epigrafeak dagokien koadro txikien gainean jarriko ditu, Shell-aren lehenespena (behean jartzearena) gainidatziz. Ezarpen hau aldatzeko eta aplikatzeko Shell berrabiarazi behar da."
+msgstr ""
+"TRUE (egia) bada, leihoen epigrafeak dagokien koadro txikien gainean jarriko "
+"ditu, Shell-aren lehenespena (behean jartzearena) gainidatziz. Ezarpen hau "
+"aldatzeko eta aplikatzeko Shell berrabiarazi behar da."
#: extensions/places-menu/extension.js:89
#: extensions/places-menu/extension.js:93
@@ -145,7 +175,7 @@ msgstr "Itxi"
msgid "Unminimize"
msgstr "Leheneratu"
-#: extensions/window-list/extension.js:118
+#: extensions/window-list/extension.js:118 Settings.ui.h:53
msgid "Minimize"
msgstr "Minimizatu"
@@ -189,7 +219,10 @@ msgstr "Noiz elkartu leihoak"
msgid ""
"Decides when to group windows from the same application on the window list. "
"Possible values are “never”, “auto” and “always”."
-msgstr "Aplikazio bereko leihoak leihoen zerrendan noiz elkartuko diren erabakitzen du. Balio erabilgarriak: “never“ (inoiz ere ez), “auto“ (automatikoa) eta “always“ (beti)."
+msgstr ""
+"Aplikazio bereko leihoak leihoen zerrendan noiz elkartuko diren erabakitzen "
+"du. Balio erabilgarriak: “never“ (inoiz ere ez), “auto“ (automatikoa) eta "
+"“always“ (beti)."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
#: extensions/window-list/prefs.js:100
@@ -198,7 +231,8 @@ msgstr "Erakutsi laneko area guztietako leihoak"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
msgid "Whether to show windows from all workspaces or only the current one."
-msgstr "Laneko area guztietako leihoak edo uneko areakoak soilik erakutsiko diren."
+msgstr ""
+"Laneko area guztietako leihoak edo uneko areakoak soilik erakutsiko diren."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27
msgid "Show the window list on all monitors"
@@ -208,7 +242,9 @@ msgstr "Erakutsi leihoen zerrenda pantaila guztietan"
msgid ""
"Whether to show the window list on all connected monitors or only on the "
"primary one."
-msgstr "Leihoen zerrenda konektatutako pantaila guztietan edo soilik pantaila nagusian erakutsiko den."
+msgstr ""
+"Leihoen zerrenda konektatutako pantaila guztietan edo soilik pantaila "
+"nagusian erakutsiko den."
#: extensions/window-list/prefs.js:29
msgid "Window Grouping"
@@ -248,6 +284,528 @@ msgstr "%d. laneko area"
msgid "Add Workspace"
msgstr "Gehitu laneko area"
+#: prefs.js:310 Settings.ui.h:26
+msgid "Left"
+msgstr "Ezkerrean"
+
+#: prefs.js:309 Settings.ui.h:29
+msgid "Right"
+msgstr "Eskuinean"
+
+#: prefs.js:268
+msgid "Primary monitor"
+msgstr "Monitore nagusia"
+
+#: prefs.js:277 prefs.js:284
+msgid "Secondary monitor "
+msgstr "Bigarren monitorea "
+
+#: prefs.js:360
+msgid "Intelligent autohide customization"
+msgstr "Ezkutatze adimentsuaren pertsonalizazioa"
+
+#: prefs.js:367 prefs.js:560 prefs.js:616
+msgid "Reset to defaults"
+msgstr "Berrezarri balio lehenetsiak"
+
+#: prefs.js:553
+msgid "Show dock and application numbers"
+msgstr "Erakutsi atrakea eta aplikazioen zenbakiak"
+
+#: prefs.js:609
+msgid "Customize middle-click behavior"
+msgstr "Pertsonalizatu erdiko klikaren portaera"
+
+#: prefs.js:692
+msgid "Customize running indicators"
+msgstr "Pertsonalizatu martxan egotearen adierazleak"
+
+#: prefs.js:804 Settings.ui.h:75
+msgid "Customize opacity"
+msgstr "Pertsonalizatu opakutasuna"
+
+#: appIcons.js:792
+msgid "All Windows"
+msgstr "Leiho guztiak"
+
+#. Translators: %s is "Settings", which is automatically translated. You
+#. can also translate the full message if this fits better your language.
+#: appIcons.js:1119
+#, javascript-format
+msgid "Dash to Dock %s"
+msgstr "Dash to Dock %s"
+
+#: locations.js:65
+msgid "Trash"
+msgstr "Zakarrontzia"
+
+#: locations.js:74
+msgid "Empty Trash"
+msgstr "Hustu zakarrontzia"
+
+#: locations.js:189
+msgid "Mount"
+msgstr "Muntatu"
+
+#: locations.js:232
+msgid "Eject"
+msgstr "Egotzi"
+
+#: locations.js:237
+msgid "Unmount"
+msgstr "Desmuntatu"
+
+#: Settings.ui.h:1
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Minimizatzea hautatuz gero, klik bikoitzak aplikazioaren leiho guztiak "
+"minimizatzen ditu."
+
+#: Settings.ui.h:2
+msgid "Shift+Click action"
+msgstr "Maius+Klik ekintza"
+
+#: Settings.ui.h:3
+msgid "Raise window"
+msgstr "Goratu leihoa"
+
+#: Settings.ui.h:4
+msgid "Minimize window"
+msgstr "Minimizatu leihoa"
+
+#: Settings.ui.h:5
+msgid "Launch new instance"
+msgstr "Abiarazi instantzia berria"
+
+#: Settings.ui.h:6
+msgid "Cycle through windows"
+msgstr "Txandakatu leihoak"
+
+#: Settings.ui.h:7
+msgid "Minimize or overview"
+msgstr "Minimizatu edo ikuspegi orokorra"
+
+#: Settings.ui.h:8
+msgid "Show window previews"
+msgstr "Erakutsi leihoen aurrebistak"
+
+#: Settings.ui.h:9
+msgid "Minimize or show previews"
+msgstr "Minimizatu edo erakutsi aurrebistak"
+
+#: Settings.ui.h:10
+msgid "Focus or show previews"
+msgstr "Fokuratu edo erakutsi aurrebistak"
+
+#: Settings.ui.h:11
+msgid "Quit"
+msgstr "Irten"
+
+#: Settings.ui.h:12
+msgid "Behavior for Middle-Click."
+msgstr "Erdiko klikaren portaera"
+
+#: Settings.ui.h:13
+msgid "Middle-Click action"
+msgstr "Erdiko klikaren ekintza"
+
+#: Settings.ui.h:14
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Maius+Erdiko klikaren portaera"
+
+#: Settings.ui.h:15
+msgid "Shift+Middle-Click action"
+msgstr "Maius+Erdiko klikaren ekintza"
+
+#: Settings.ui.h:16
+msgid "Enable Unity7 like glossy backlit items"
+msgstr "Gaitu Unity7 erako atzeko argidun elementu distiratsuak"
+
+#: Settings.ui.h:17
+msgid "Apply glossy effect."
+msgstr "Aplikatu efektu distiratsua."
+
+#: Settings.ui.h:18
+msgid "Use dominant color"
+msgstr "Erabili kolore nagusia"
+
+#: Settings.ui.h:19
+msgid "Customize indicator style"
+msgstr "Pertsonalizatu adierazleen estiloa"
+
+#: Settings.ui.h:20
+msgid "Color"
+msgstr "Kolorea"
+
+#: Settings.ui.h:21
+msgid "Border color"
+msgstr "Ertzaren kolorea"
+
+#: Settings.ui.h:22
+msgid "Border width"
+msgstr "Ertzaren zabalera"
+
+#: Settings.ui.h:23
+msgid "Show the dock on"
+msgstr "Erakutsi atrakea hemen"
+
+#: Settings.ui.h:24
+msgid "Show on all monitors."
+msgstr "Erakutsi monitore guztietan."
+
+#: Settings.ui.h:25
+msgid "Position on screen"
+msgstr "Pantailako posizioa"
+
+#: Settings.ui.h:27
+msgid "Bottom"
+msgstr "Behean"
+
+#: Settings.ui.h:28
+msgid "Top"
+msgstr "Goian"
+
+#: Settings.ui.h:30
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"Ezkutatu atrakea uneko aplikazioaren leiho bat eragozten duenean. Ezarpen "
+"zehatzagoak erabilgarri daude."
+
+#: Settings.ui.h:31
+msgid "Intelligent autohide"
+msgstr "Ezkutatze adimentsua"
+
+#: Settings.ui.h:32
+msgid "Dock size limit"
+msgstr "Atrakearen tamaina-muga"
+
+#: Settings.ui.h:33
+msgid "Panel mode: extend to the screen edge"
+msgstr "Panel modua: hedatu pantailaren ertzetara"
+
+#: Settings.ui.h:34
+msgid "Icon size limit"
+msgstr "Ikonoen tamaina-muga"
+
+#: Settings.ui.h:35
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Ikono-tamaina finkoa: korritu beste ikonoak erakusteko"
+
+#: Settings.ui.h:36
+msgid "Position and size"
+msgstr "Posizioa eta tamaina"
+
+#: Settings.ui.h:37
+msgid "Show favorite applications"
+msgstr "Erakutsi gogoko aplikazioak"
+
+#: Settings.ui.h:38
+msgid "Show running applications"
+msgstr "Erakutsi martxan dauden aplikazioak"
+
+#: Settings.ui.h:39
+msgid "Isolate workspaces."
+msgstr "Isolatu laneako areak."
+
+#: Settings.ui.h:40
+msgid "Isolate monitors."
+msgstr "Isolatu monitoreak."
+
+#: Settings.ui.h:41
+msgid "Show open windows previews."
+msgstr "Erakutsi irekitako leihoen aurrebistak."
+
+#: Settings.ui.h:42
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Desgaituz gero, ezarpen hauek gnome-tweak-tool aplikazioan edo hedapenen "
+"webgunean daude erabilgarri."
+
+#: Settings.ui.h:43
+msgid "Show <i>Applications</i> icon"
+msgstr "Erakutsi <i>Aplikazioak</i> ikonoa"
+
+#: Settings.ui.h:44
+msgid "Move the applications button at the beginning of the dock."
+msgstr "Eraman aplikazioen botoia atrakearen hasierara."
+
+#: Settings.ui.h:45
+msgid "Animate <i>Show Applications</i>."
+msgstr "Animatu <i>Erakutsi aplikazioak</i> ekintza."
+
+#: Settings.ui.h:46
+msgid "Show trash can"
+msgstr "Erakutsi zakarrontzia"
+
+#: Settings.ui.h:47
+msgid "Show mounted volumes and devices"
+msgstr "Erakutsi muntatutako bolumen eta gailuak"
+
+#: Settings.ui.h:48
+msgid "Launchers"
+msgstr "Abiarazleak"
+
+#: Settings.ui.h:49
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Gaitu Super+(0-9) aplikazioak aktibatzeko laster-tekla gisa. Maius eta Ktrl "
+"teklekin batera ere erabil daiteke."
+
+#: Settings.ui.h:50
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "Erabili laster-teklak aplikazioak aktibatzeko"
+
+#: Settings.ui.h:51
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Martxan dagoen aplikazio baten ikonoak klik egitean duen portaera."
+
+#: Settings.ui.h:52
+msgid "Click action"
+msgstr "Klik ekintza"
+
+#: Settings.ui.h:54
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Aplikazio baten ikonoaren gainean sagua korritzean duen portaera."
+
+#: Settings.ui.h:55
+msgid "Scroll action"
+msgstr "Korritze-ekintza"
+
+#: Settings.ui.h:56
+msgid "Do nothing"
+msgstr "Ez egin ezer"
+
+#: Settings.ui.h:57
+msgid "Switch workspace"
+msgstr "Aldatu laneko areaz"
+
+#: Settings.ui.h:58
+msgid "Behavior"
+msgstr "Portaera"
+
+#: Settings.ui.h:59
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Atrakea GNOMEren gai lehenetsiarekin integratzeko ezarritako pertsonalizazio "
+"txikiak. Honen ordez aukera zehatzak gaitu daitezke jarraian."
+
+#: Settings.ui.h:60
+msgid "Use built-in theme"
+msgstr "Erabili integrazio gaia"
+
+#: Settings.ui.h:61
+msgid "Save space reducing padding and border radius."
+msgstr "Hartu leku gutxiago betegarria eta ertzen erradioa txikituz."
+
+#: Settings.ui.h:62
+msgid "Shrink the dash"
+msgstr "Txikiagotu abiarazle-panela"
+
+#: Settings.ui.h:63
+msgid "Customize windows counter indicators"
+msgstr "Pertsonalizatu leiho kopuruen adierazleak"
+
+#: Settings.ui.h:64
+msgid "Default"
+msgstr "Lehenetsia"
+
+#: Settings.ui.h:65
+msgid "Dots"
+msgstr "Puntuak"
+
+#: Settings.ui.h:66
+msgid "Squares"
+msgstr "Laukiak"
+
+#: Settings.ui.h:67
+msgid "Dashes"
+msgstr "Marrak"
+
+#: Settings.ui.h:68
+msgid "Segmented"
+msgstr "Zatikatua"
+
+#: Settings.ui.h:69
+msgid "Solid"
+msgstr "Solidoa"
+
+#: Settings.ui.h:70
+msgid "Ciliora"
+msgstr "Ciliora"
+
+#: Settings.ui.h:71
+msgid "Metro"
+msgstr "Metro"
+
+#: Settings.ui.h:72
+msgid "Set the background color for the dash."
+msgstr "Ezarri abiarazle-panelaren atzeko planoko kolorea"
+
+#: Settings.ui.h:73
+msgid "Customize the dash color"
+msgstr "Personalizatu abiarazle-panelaren kolorea"
+
+#: Settings.ui.h:74
+msgid "Tune the dash background opacity."
+msgstr "Doitu abiarazle-panelaren atzeko planoaren opakutasuna."
+
+#: Settings.ui.h:76
+msgid "Fixed"
+msgstr "Finkoa"
+
+#: Settings.ui.h:77
+msgid "Dynamic"
+msgstr "Dinamikoa"
+
+#: Settings.ui.h:78
+msgid "Opacity"
+msgstr "Opakutasuna"
+
+#: Settings.ui.h:79
+msgid "Force straight corner\n"
+msgstr "Behartu erpin zuzena\n"
+
+#: Settings.ui.h:80
+msgid "Appearance"
+msgstr "Itxura"
+
+#: Settings.ui.h:81
+msgid "version: "
+msgstr "bertsioa: "
+
+#: Settings.ui.h:82
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Abiarazle-panela ikuspegi orokorretik ateratzen du, atrake bihurtuz"
+
+#: Settings.ui.h:83
+msgid "Created by"
+msgstr "Sortzaileak"
+
+#: Settings.ui.h:84
+msgid "Webpage"
+msgstr "Webgunea"
+
+#: Settings.ui.h:85
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">Programa honek ez du inolako bermerik.\n"
+"Xehetasun gehiagorako, ikusi <a href=\"https://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.html\">GNUren Lizentzia Publiko Orokorra, 2. bertsioa edo "
+"berriagoa</a></span>"
+
+#: Settings.ui.h:87
+msgid "About"
+msgstr "Honi buruz"
+
+#: Settings.ui.h:88
+msgid "Customize minimum and maximum opacity values"
+msgstr "Pertsonalizatu opakutasun minimo eta maximoa"
+
+#: Settings.ui.h:89
+msgid "Minimum opacity"
+msgstr "Opakutasun minimoa"
+
+#: Settings.ui.h:90
+msgid "Maximum opacity"
+msgstr "Opakutasun maximoa"
+
+#: Settings.ui.h:91
+msgid "Number overlay"
+msgstr "Gainjarritako zenbakiak"
+
+#: Settings.ui.h:92
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"Erakutsi une batez laster-teklei dagozkien aplikazio-zenbakiak ikonoen "
+"gainean."
+
+#: Settings.ui.h:93
+msgid "Show the dock if it is hidden"
+msgstr "Erakutsi atrakea ezkutatua badago"
+
+#: Settings.ui.h:94
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Ezkutatze automatikoa erabiltzean, laster-tekla sakatuz atrakea une baterako "
+"azalduko da."
+
+#: Settings.ui.h:95
+msgid "Shortcut for the options above"
+msgstr "Goiko aukeretarako laster-teklak"
+
+#: Settings.ui.h:96
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Sintaxia: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:97
+msgid "Hide timeout (s)"
+msgstr "Ezkutatzeko denbora-muga (s)"
+
+#: Settings.ui.h:98
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Erakutsi atrakea sagua pantailaren ertzera eramatean."
+
+#: Settings.ui.h:99
+msgid "Autohide"
+msgstr "Ezkutatze automatikoa"
+
+#: Settings.ui.h:100
+msgid "Push to show: require pressure to show the dock"
+msgstr "Bultzatu erakusteko: presio pixka bat egin behar da atrakea erakusteko"
+
+#: Settings.ui.h:101
+msgid "Enable in fullscreen mode"
+msgstr "Gaitu pantaila osoko moduan"
+
+#: Settings.ui.h:102
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Erakutsi atrakea aplikazioaren leihoak eragozten ez dituenean."
+
+#: Settings.ui.h:103
+msgid "Dodge windows"
+msgstr "Saihestu leihoak"
+
+#: Settings.ui.h:104
+msgid "All windows"
+msgstr "Leiho guztiak"
+
+#: Settings.ui.h:105
+msgid "Only focused application's windows"
+msgstr "Fokuratutako aplikazioen leihoetan soilik"
+
+#: Settings.ui.h:106
+msgid "Only maximized windows"
+msgstr "Maximizatutako leihoetan soilik"
+
+#: Settings.ui.h:107
+msgid "Animation duration (s)"
+msgstr "Animazioaren iraupena (s)"
+
+#: Settings.ui.h:108
+msgid "Show timeout (s)"
+msgstr "Erakusteko denbora-muga (s)"
+
+#: Settings.ui.h:109
+msgid "Pressure threshold"
+msgstr "Presio-atalasea"
+
#~ msgid "Application"
#~ msgstr "Aplikazioa"
@@ -391,12 +949,6 @@ msgstr "Gehitu laneko area"
#~ msgid "Normal"
#~ msgstr "Normala"
-#~ msgid "Left"
-#~ msgstr "Ezkerrean"
-
-#~ msgid "Right"
-#~ msgstr "Eskuinean"
-
#~ msgid "Upside-down"
#~ msgstr "Buruz behera"
diff --git a/po/fr.po b/po/fr.po
index ffa70d96..b1849159 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -1,3 +1,4 @@
+# #-#-#-#-# 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.
@@ -5,8 +6,16 @@
# Alain Lojewski <allomervan@gmail.com>, 2012-2013.
# Charles Monzat <charles.monzat@numericable.fr>, 2018.
#
+# #-#-#-#-# fr.po (Dash to Dock) #-#-#-#-#
+# 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 <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
msgid ""
msgstr ""
+"#-#-#-#-# 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"
@@ -19,6 +28,18 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"#-#-#-#-# fr.po (Dash to Dock) #-#-#-#-#\n"
+"Project-Id-Version: Dash to Dock\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2019-12-07 16:40+0900\n"
+"PO-Revision-Date: 2019-12-07 16:52+0900\n"
+"Last-Translator: Julien Humbert <julroy67@gmail.com>\n"
+"Language-Team: Jean-Baptiste Le Cz <jb.lecoz@gmail.com>\n"
+"Language: fr\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"
@@ -154,9 +175,14 @@ msgstr "Fermer"
msgid "Unminimize"
msgstr "Restaurer"
-#: extensions/window-list/extension.js:118
+#: extensions/window-list/extension.js:118 Settings.ui.h:52
+#, fuzzy
msgid "Minimize"
-msgstr "Réduire"
+msgstr ""
+"#-#-#-#-# fr.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"Réduire\n"
+"#-#-#-#-# fr.po (Dash to Dock) #-#-#-#-#\n"
+"Minimiser la fenêtre"
#: extensions/window-list/extension.js:125
msgid "Unmaximize"
@@ -264,5 +290,512 @@ msgstr "Espace de travail %d"
msgid "Add Workspace"
msgstr "Ajouter un espace de travail"
+#: prefs.js:268
+msgid "Primary monitor"
+msgstr "Moniteur principal"
+
+#: prefs.js:277 prefs.js:284
+msgid "Secondary monitor "
+msgstr "Moniteur secondaire "
+
+#: prefs.js:309 Settings.ui.h:28
+msgid "Right"
+msgstr "Droite"
+
+#: prefs.js:310 Settings.ui.h:25
+msgid "Left"
+msgstr "Gauche"
+
+#: prefs.js:360
+msgid "Intelligent autohide customization"
+msgstr "Personnalisation du masquage automatique"
+
+#: prefs.js:367 prefs.js:560 prefs.js:616
+msgid "Reset to defaults"
+msgstr "Restaurer la configuration par défaut"
+
+#: prefs.js:553
+msgid "Show dock and application numbers"
+msgstr "Afficher le dock et le numéro dapplication"
+
+#: prefs.js:609
+msgid "Customize middle-click behavior"
+msgstr "Personnaliser le comportement du clic milieu"
+
+#: prefs.js:692
+msgid "Customize running indicators"
+msgstr "Régler les indicateurs de fenêtres"
+
+#: prefs.js:804 Settings.ui.h:74
+msgid "Customize opacity"
+msgstr "Régler lopacité du dock"
+
+#: appIcons.js:810
+msgid "All Windows"
+msgstr "Toutes les fenêtres"
+
+#. Translators: %s is "Settings", which is automatically translated. You
+#. can also translate the full message if this fits better your language.
+#: appIcons.js:1127
+#, javascript-format
+msgid "Dash to Dock %s"
+msgstr "Dash to Dock %s"
+
+#: Settings.ui.h:1
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Quand réglé sur Minimiser, double-cliquer minimise toutes les fenêtres de "
+"lapplication."
+
+#: Settings.ui.h:2
+msgid "Shift+Click action"
+msgstr "Action Maj+Clic"
+
+#: Settings.ui.h:3
+msgid "Raise window"
+msgstr "Faire apparaître la fenêtre"
+
+#: Settings.ui.h:4
+msgid "Minimize window"
+msgstr "Minimiser la fenêtre"
+
+#: Settings.ui.h:5
+msgid "Launch new instance"
+msgstr "Lancer une nouvelle fenêtre"
+
+#: Settings.ui.h:6
+msgid "Cycle through windows"
+msgstr "Cycler sur les fenêtres"
+
+#: Settings.ui.h:7
+msgid "Minimize or overview"
+msgstr "Minimiser ou lancer lexposé"
+
+#: Settings.ui.h:8
+msgid "Show window previews"
+msgstr "Afficher des aperçus de fenêtres"
+
+#: Settings.ui.h:9
+msgid "Minimize or show previews"
+msgstr "Minimiser ou afficher laperçu des fenêtres"
+
+#: Settings.ui.h:10
+msgid "Focus or show previews"
+msgstr "Activer ou afficher laperçu des fenêtres"
+
+#: Settings.ui.h:11
+msgid "Quit"
+msgstr "Quitter"
+
+#: Settings.ui.h:12
+msgid "Behavior for Middle-Click."
+msgstr "Comportement pour le clic milieu."
+
+#: Settings.ui.h:13
+msgid "Middle-Click action"
+msgstr "Action du clic milieu"
+
+#: Settings.ui.h:14
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Comportement pour Maj+Clic milieu."
+
+#: Settings.ui.h:15
+msgid "Shift+Middle-Click action"
+msgstr "Action de Maj+Clic milieu"
+
+#: Settings.ui.h:16
+msgid "Enable Unity7 like glossy backlit items"
+msgstr "Activer un fond brillant à la Unity 7"
+
+#: Settings.ui.h:17
+msgid "Use dominant color"
+msgstr "Utiliser la couleur dominante"
+
+#: Settings.ui.h:18
+msgid "Customize indicator style"
+msgstr "Régler le style des indicateurs"
+
+#: Settings.ui.h:19
+msgid "Color"
+msgstr "Couleur"
+
+#: Settings.ui.h:20
+msgid "Border color"
+msgstr "Couleur de la bordure"
+
+#: Settings.ui.h:21
+msgid "Border width"
+msgstr "Épaisseur de la bordure"
+
+#: Settings.ui.h:22
+msgid "Show the dock on"
+msgstr "Afficher le dock sur le"
+
+#: Settings.ui.h:23
+msgid "Show on all monitors."
+msgstr "Afficher sur tous les écrans."
+
+#: Settings.ui.h:24
+msgid "Position on screen"
+msgstr "Position sur lécran"
+
+#: Settings.ui.h:26
+msgid "Bottom"
+msgstr "Bas"
+
+#: Settings.ui.h:27
+msgid "Top"
+msgstr "Haut"
+
+#: Settings.ui.h:29
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"Cache le dock quand il gêne lapplication principale. Dautres paramètres "
+"plus spécifiques sont disponibles."
+
+#: Settings.ui.h:30
+msgid "Intelligent autohide"
+msgstr "Masquage intelligent"
+
+#: Settings.ui.h:31
+msgid "Dock size limit"
+msgstr "Taille maximum du dock"
+
+#: Settings.ui.h:32
+msgid "Panel mode: extend to the screen edge"
+msgstr "Mode barre : étendre aux bords de lécran"
+
+#: Settings.ui.h:33
+msgid "Icon size limit"
+msgstr "Taille maximum des icônes"
+
+#: Settings.ui.h:34
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Taille des icônes fixe : faire défiler pour voir les autres icônes"
+
+#: Settings.ui.h:35
+msgid "Position and size"
+msgstr "Position et taille"
+
+#: Settings.ui.h:36
+msgid "Show favorite applications"
+msgstr "Afficher les applications favorites"
+
+#: Settings.ui.h:37
+msgid "Show running applications"
+msgstr "Afficher les applications en cours"
+
+#: Settings.ui.h:38
+msgid "Isolate workspaces."
+msgstr "Isoler les espaces de travail."
+
+#: Settings.ui.h:39
+msgid "Isolate monitors."
+msgstr "Isoler les moniteurs."
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "Afficher des aperçus de fenêtres."
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Si désactivés, ces paramètres sont accessibles via gnome-tweak-tool ou le "
+"site dextension GNOME."
+
+#: Settings.ui.h:42
+msgid "Show <i>Applications</i> icon"
+msgstr "Afficher le raccourci <i>Afficher les Applications</i>"
+
+#: 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
+msgid "Animate <i>Show Applications</i>."
+msgstr "Animer le raccourci <i>Afficher les Applications</i>."
+
+#: Settings.ui.h:45
+msgid "Show trash can"
+msgstr "Afficher la corbeille"
+
+#: Settings.ui.h:46
+msgid "Show mounted volumes and devices"
+msgstr "Afficher les appareils et volumes montés"
+
+#: Settings.ui.h:47
+msgid "Launchers"
+msgstr "Lanceurs"
+
+#: Settings.ui.h:48
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Activer Super+(0-9) comme raccourcis pour activer les applications. On peut "
+"lutiliser aussi avec Maj et Ctrl."
+
+#: Settings.ui.h:49
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "Utiliser des raccourcis clavier pour activer les applications"
+
+#: Settings.ui.h:50
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Comportement du clic sur licône dune application ouverte."
+
+#: Settings.ui.h:51
+msgid "Click action"
+msgstr "Action du clic"
+
+#: Settings.ui.h:53
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Comportement lors du défilement sur licône dune application."
+
+#: Settings.ui.h:54
+msgid "Scroll action"
+msgstr "Action du défilement"
+
+#: Settings.ui.h:55
+msgid "Do nothing"
+msgstr "Ne rien faire"
+
+#: Settings.ui.h:56
+msgid "Switch workspace"
+msgstr "Changer despace de travail"
+
+#: Settings.ui.h:57
+msgid "Behavior"
+msgstr "Comportement"
+
+#: Settings.ui.h:58
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Assortir le dock avec le thème par défaut. Sinon, vous pouvez personnaliser "
+"quelques paramètres ci-dessous."
+
+#: Settings.ui.h:59
+msgid "Use built-in theme"
+msgstr "Utiliser le thème par défaut"
+
+#: Settings.ui.h:60
+msgid "Save space reducing padding and border radius."
+msgstr "Réduire la taille des marges pour gagner de la place."
+
+#: Settings.ui.h:61
+msgid "Shrink the dash"
+msgstr "Réduire les marges"
+
+#: Settings.ui.h:62
+msgid "Customize windows counter indicators"
+msgstr "Personnaliser lindicateur du compteur de fenêtres"
+
+#: Settings.ui.h:63
+msgid "Default"
+msgstr "Défaut"
+
+#: Settings.ui.h:64
+msgid "Dots"
+msgstr "Points"
+
+#: Settings.ui.h:65
+msgid "Squares"
+msgstr "Carrés"
+
+#: Settings.ui.h:66
+msgid "Dashes"
+msgstr "Tirets"
+
+#: Settings.ui.h:67
+msgid "Segmented"
+msgstr "Segments"
+
+#: Settings.ui.h:68
+msgid "Solid"
+msgstr "Solides"
+
+#: Settings.ui.h:69
+msgid "Ciliora"
+msgstr "Ciliora"
+
+#: Settings.ui.h:70
+msgid "Metro"
+msgstr "Métro"
+
+#: Settings.ui.h:71
+msgid "Set the background color for the dash."
+msgstr "Choisir la couleur de fond du dock."
+
+#: Settings.ui.h:72
+msgid "Customize the dash color"
+msgstr "Changer la couleur du dock"
+
+#: Settings.ui.h:73
+msgid "Tune the dash background opacity."
+msgstr "Régler lopacité en fond du dock."
+
+#: Settings.ui.h:75
+msgid "Fixed"
+msgstr "Fixe"
+
+#: Settings.ui.h:76
+msgid "Dynamic"
+msgstr "Dynamique"
+
+#: Settings.ui.h:77
+msgid "Opacity"
+msgstr "Opacité"
+
+#: Settings.ui.h:78
+msgid "Force straight corner\n"
+msgstr "Forcer des coins droits\n"
+
+#: Settings.ui.h:80
+msgid "Appearance"
+msgstr "Apparence"
+
+#: Settings.ui.h:81
+msgid "version: "
+msgstr "Version : "
+
+#: Settings.ui.h:82
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Place le dash hors de laperçu des fenêtres, le transformant en dock"
+
+#: Settings.ui.h:83
+msgid "Created by"
+msgstr "Conçu par"
+
+#: Settings.ui.h:84
+msgid "Webpage"
+msgstr "Site web"
+
+#: Settings.ui.h:85
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">Ce programme est distribué SANS AUCUNE GARANTIE.\n"
+"Consultez la <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">Licence Générale Publique GNU version 2 ou plus récente</a> pour plus "
+"dinformations.</span>"
+
+#: Settings.ui.h:87
+msgid "About"
+msgstr "À propos"
+
+#: Settings.ui.h:88
+msgid "Customize minimum and maximum opacity values"
+msgstr "Personnaliser les valeurs minimum et maximum de lopacité"
+
+#: Settings.ui.h:89
+msgid "Minimum opacity"
+msgstr "Opacité minimum"
+
+#: Settings.ui.h:90
+msgid "Maximum opacity"
+msgstr "Opacité maximum"
+
+#: Settings.ui.h:91
+msgid "Number overlay"
+msgstr "Numéro dapplication"
+
+#: Settings.ui.h:92
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"Afficher temporairement les numéros dapplication sur les icônes, "
+"correspondant au raccourci clavier."
+
+#: Settings.ui.h:93
+msgid "Show the dock if it is hidden"
+msgstr "Afficher le dock sil est caché"
+
+#: Settings.ui.h:94
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Si le masquage automatique est actif, le dock apparaîtra temporairement lors "
+"de lutilisation du raccourci."
+
+#: Settings.ui.h:95
+msgid "Shortcut for the options above"
+msgstr "Raccourci pour les options dessus"
+
+#: Settings.ui.h:96
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Syntaxe : <Maj>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:97
+msgid "Hide timeout (s)"
+msgstr "Délai de masquage (s)"
+
+#: Settings.ui.h:98
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Afficher le dock en survolant le bord de lécran."
+
+#: Settings.ui.h:99
+msgid "Autohide"
+msgstr "Masquage automatique"
+
+#: Settings.ui.h:100
+msgid "Push to show: require pressure to show the dock"
+msgstr "Pousser pour Afficher : requiert une pression pour afficher le dock"
+
+#: Settings.ui.h:101
+msgid "Enable in fullscreen mode"
+msgstr "Activer en mode plein-écran"
+
+#: Settings.ui.h:102
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Afficher le dock quand il ne gêne pas les fenêtres."
+
+#: Settings.ui.h:103
+msgid "Dodge windows"
+msgstr "Masquage automatique intelligent"
+
+#: Settings.ui.h:104
+msgid "All windows"
+msgstr "Toutes les fenêtres"
+
+#: Settings.ui.h:105
+msgid "Only focused application's windows"
+msgstr "Seulement la fenêtre de lapplication active"
+
+#: Settings.ui.h:106
+msgid "Only maximized windows"
+msgstr "Seulement les fenêtres maximisées"
+
+#: Settings.ui.h:107
+msgid "Animation duration (s)"
+msgstr "Durée de lanimation (s)"
+
+#: Settings.ui.h:108
+msgid "Show timeout (s)"
+msgstr "Délai dapparition (s)"
+
+#: Settings.ui.h:109
+msgid "Pressure threshold"
+msgstr "Seuil de pression"
+
#~ 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 lapplication."
+
+#~ msgid "0.000"
+#~ msgstr "0.000"
diff --git a/po/gl.po b/po/gl.po
index c94dae98..f2d40ad6 100644
--- a/po/gl.po
+++ b/po/gl.po
@@ -1,14 +1,22 @@
+# #-#-#-#-# 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.
#
# Fran Diéguez <frandieguez@gnome.org>, 2011.
# Fran Dieguez <frandieguez@gnome.org>, 2011-2020, 2021.
+# #-#-#-#-# gl.po #-#-#-#-#
+# Dash to Dock galician translation.
+# This file is distributed under the same license as the Dash to Dock package.
+# Xosé M. Lamas <correo@xmgz.eu>, 2018.
+#
+#, fuzzy
msgid ""
msgstr ""
+"#-#-#-#-# 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/is"
-"sues\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
+"issues\n"
"POT-Creation-Date: 2020-10-17 20:14+0000\n"
"PO-Revision-Date: 2021-02-24 20:41+0100\n"
"Last-Translator: Fran Diéguez <frandieguez@gnome.org>\n"
@@ -20,6 +28,19 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"X-Generator: Gtranslator 3.38.0\n"
"X-Project-Style: gnome\n"
+"#-#-#-#-# gl.po #-#-#-#-#\n"
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2018-03-30 11:27-0400\n"
+"PO-Revision-Date: 2018-03-30 16:42-0500\n"
+"Last-Translator: Xosé M. Lamas <correo@xmgz.eu>\n"
+"Language-Team: \n"
+"Language: gl\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
msgid "GNOME Classic"
@@ -82,8 +103,7 @@ msgid ""
"aspect ratio, and consolidating them further to reduce the bounding box. "
"This setting applies only with the natural placement strategy."
msgstr ""
-"Tente usar mais pantalla para dispor as miniaturas das xanelas adaptándose"
-" á "
+"Tente usar mais pantalla para dispor as miniaturas das xanelas adaptándose á "
"taxa de aspecto da pantalla e consolidalas para reducir a caixa envolvente. "
"Esta configuración aplícase só para a estratexia de disposición natural."
@@ -153,7 +173,7 @@ msgstr "Pechar"
msgid "Unminimize"
msgstr "Restabelecer"
-#: extensions/window-list/extension.js:118
+#: extensions/window-list/extension.js:118 Settings.ui.h:50
msgid "Minimize"
msgstr "Minimizar"
@@ -262,6 +282,421 @@ msgstr "Espazos de traballo %d"
msgid "Add Workspace"
msgstr "Engadir área de traballo"
+#: prefs.js:113
+msgid "Primary monitor"
+msgstr "Monitor principal"
+
+#: prefs.js:122 prefs.js:129
+msgid "Secondary monitor "
+msgstr "Monitor secundario"
+
+#: prefs.js:154 Settings.ui.h:29
+msgid "Right"
+msgstr "Dereita"
+
+#: prefs.js:155 Settings.ui.h:26
+msgid "Left"
+msgstr "Esquerda"
+
+#: prefs.js:205
+msgid "Intelligent autohide customization"
+msgstr "Personalización de agochamento intelixente"
+
+#: prefs.js:212 prefs.js:393 prefs.js:450
+msgid "Reset to defaults"
+msgstr "Restablecer aos valores por omisión"
+
+#: prefs.js:386
+msgid "Show dock and application numbers"
+msgstr "Mostrar dock e números do aplicativo"
+
+#: prefs.js:443
+msgid "Customize middle-click behavior"
+msgstr "Personalizar comportamento do botón central"
+
+#: prefs.js:514
+msgid "Customize running indicators"
+msgstr "Personalizar indicadores en execución"
+
+#: appIcons.js:804
+msgid "All Windows"
+msgstr "Todas as ventás"
+
+#: Settings.ui.h:1
+msgid "Customize indicator style"
+msgstr "Personalizar estilo do indicador"
+
+#: Settings.ui.h:2
+msgid "Color"
+msgstr "Cor"
+
+#: Settings.ui.h:3
+msgid "Border color"
+msgstr "Cor do borde"
+
+#: Settings.ui.h:4
+msgid "Border width"
+msgstr "Ancho do borde"
+
+#: Settings.ui.h:5
+msgid "Number overlay"
+msgstr "Número na vista extendida"
+
+#: Settings.ui.h:6
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"Mostrar brevemente o número de aplicativo sobre a icona que corresponda ao "
+"atallo."
+
+#: Settings.ui.h:7
+msgid "Show the dock if it is hidden"
+msgstr "Mostrar o dock si está agochado"
+
+#: Settings.ui.h:8
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Si se activa o agochamento automático, o dock aparecerá brevemente ao "
+"utilizar o atallo."
+
+#: Settings.ui.h:9
+msgid "Shortcut for the options above"
+msgstr "Atallo para os axustes de arriba"
+
+#: Settings.ui.h:10
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Sintaxe: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:11
+msgid "Hide timeout (s)"
+msgstr "Tempo en agocharse (s)"
+
+#: Settings.ui.h:12
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Cando se establece minimizar, facendo duplo click minimiza todas as ventás "
+"do aplicativo."
+
+#: Settings.ui.h:13
+msgid "Shift+Click action"
+msgstr "Acción de Maiús + pulsación"
+
+#: Settings.ui.h:14
+msgid "Raise window"
+msgstr "Elevar ventá"
+
+#: Settings.ui.h:15
+msgid "Minimize window"
+msgstr "Minimizar ventá"
+
+#: Settings.ui.h:16
+msgid "Launch new instance"
+msgstr "Iniciar unha nova instancia"
+
+#: Settings.ui.h:17
+msgid "Cycle through windows"
+msgstr "Alternar entre ventás"
+
+#: Settings.ui.h:18
+msgid "Quit"
+msgstr "Saír"
+
+#: Settings.ui.h:19
+msgid "Behavior for Middle-Click."
+msgstr "Comportamento do botón central"
+
+#: Settings.ui.h:20
+msgid "Middle-Click action"
+msgstr "Acción do botón central"
+
+#: Settings.ui.h:21
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Comportamento de Maiús + botón central"
+
+#: Settings.ui.h:22
+msgid "Shift+Middle-Click action"
+msgstr "Acción de Maiús + botón central"
+
+#: Settings.ui.h:23
+msgid "Show the dock on"
+msgstr "Mostrar o dock en"
+
+#: Settings.ui.h:24
+msgid "Show on all monitors."
+msgstr "Mostrar en todos os monitores."
+
+#: Settings.ui.h:25
+msgid "Position on screen"
+msgstr "Posición na pantalla"
+
+#: Settings.ui.h:27
+msgid "Bottom"
+msgstr "Inferior"
+
+#: Settings.ui.h:28
+msgid "Top"
+msgstr "Superior"
+
+#: Settings.ui.h:30
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"Agochar o dock cando obstrúe a ventá do aplicativo actual. Dispoñibles máis "
+"opcións."
+
+#: Settings.ui.h:31
+msgid "Intelligent autohide"
+msgstr "Agochamento automático intelixente"
+
+#: Settings.ui.h:32
+msgid "Dock size limit"
+msgstr "Tamaño máximo do dock"
+
+#: Settings.ui.h:33
+msgid "Panel mode: extend to the screen edge"
+msgstr "Modo panel: extender ate os bordes da pantalla"
+
+#: Settings.ui.h:34
+msgid "Icon size limit"
+msgstr "Tamaño máximo das iconas"
+
+#: Settings.ui.h:35
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Tamaño fixo das iconas: desprazarse para mostrar outros"
+
+#: Settings.ui.h:36
+msgid "Position and size"
+msgstr "Posición e tamaño"
+
+#: Settings.ui.h:37
+msgid "Show favorite applications"
+msgstr "Mostrar aplicativos favoritos"
+
+#: Settings.ui.h:38
+msgid "Show running applications"
+msgstr "Mostrar aplicativos en execución"
+
+#: Settings.ui.h:39
+msgid "Isolate workspaces."
+msgstr "Illar os espazos de traballo."
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "Mostrar vista rápida de ventás."
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+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
+msgid "Show <i>Applications</i> icon"
+msgstr "Mostrar a icona <i>Aplicativos</i>"
+
+#: 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
+msgid "Animate <i>Show Applications</i>."
+msgstr "Animar <i>Mostrar aplicativos</i>"
+
+#: Settings.ui.h:45
+msgid "Launchers"
+msgstr "Lanzadores"
+
+#: Settings.ui.h:46
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Habilitar Súper+(0-9) como atallos para activar aplicativos. Tamén puede ser "
+"utilizado 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
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Comportamiento ao pulsar na icona de un aplicativo en execución."
+
+#: Settings.ui.h:49
+msgid "Click action"
+msgstr "Acción de pulsación"
+
+#: Settings.ui.h:51
+msgid "Minimize or overview"
+msgstr "Minimizar ou vista de actividades"
+
+#: Settings.ui.h:52
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Comportamiento ao utilizar a roda sobre a icona de un aplicativo."
+
+#: Settings.ui.h:53
+msgid "Scroll action"
+msgstr "Acción de desprazamento"
+
+#: Settings.ui.h:54
+msgid "Do nothing"
+msgstr "Non facer nada"
+
+#: Settings.ui.h:55
+msgid "Switch workspace"
+msgstr "Cambiar de espazo de traballo."
+
+#: Settings.ui.h:56
+msgid "Behavior"
+msgstr "Comportamento"
+
+#: Settings.ui.h:57
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Utilizar o decorado predeterminado de GNOME. De xeito alternativo, poden "
+"habilitarse certos axustes aquí abaixo."
+
+#: Settings.ui.h:58
+msgid "Use built-in theme"
+msgstr "Utilizar o decorado incorporado"
+
+#: Settings.ui.h:59
+msgid "Save space reducing padding and border radius."
+msgstr "Reducir as marxes para gañar espazo."
+
+#: Settings.ui.h:60
+msgid "Shrink the dash"
+msgstr "Comprimir o taboleiro"
+
+#: Settings.ui.h:61
+msgid "Show a dot for each windows of the application."
+msgstr "Mostrar un punto por cada ventá do aplicativo."
+
+#: Settings.ui.h:62
+msgid "Show windows counter indicators"
+msgstr "Mostrar contador de ventás"
+
+#: Settings.ui.h:63
+msgid "Set the background color for the dash."
+msgstr "Escoller a cor de fondo do taboleiro."
+
+#: Settings.ui.h:64
+msgid "Customize the dash color"
+msgstr "Personalizar a cor do dock"
+
+#: Settings.ui.h:65
+msgid "Tune the dash background opacity."
+msgstr "Axustar a opacidade do fondo."
+
+#: Settings.ui.h:66
+msgid "Customize opacity"
+msgstr "Personalizar opacidade"
+
+#: Settings.ui.h:67
+msgid "Opacity"
+msgstr "Opacidade"
+
+#: Settings.ui.h:68
+msgid "Force straight corner\n"
+msgstr "Forzar esquinas rectas\n"
+
+#: Settings.ui.h:70
+msgid "Appearance"
+msgstr "Aparencia"
+
+#: Settings.ui.h:71
+msgid "version: "
+msgstr "versión: "
+
+#: Settings.ui.h:72
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Move o panel da vista de actividades transformándoo nun dock"
+
+#: Settings.ui.h:73
+msgid "Created by"
+msgstr "Creado por"
+
+#: Settings.ui.h:74
+msgid "Webpage"
+msgstr "Sitio web"
+
+#: Settings.ui.h:75
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">Este programa ven SIN GARANTÍA ALGUNHA.\n"
+"Consulte a <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">Licenza Pública Xeral de GNU, versión 2 ou posterior</a> para obter máis "
+"detalles.</span>"
+
+#: Settings.ui.h:77
+msgid "About"
+msgstr "Sobre o"
+
+#: Settings.ui.h:78
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Mostrar o dock ao pasar o punteiro sobre o borde da pantalla."
+
+#: Settings.ui.h:79
+msgid "Autohide"
+msgstr "Agochar automáticamente"
+
+#: Settings.ui.h:80
+msgid "Push to show: require pressure to show the dock"
+msgstr "Empurrar para mostrasr: require facer presión para mostrar o dock"
+
+#: Settings.ui.h:81
+msgid "Enable in fullscreen mode"
+msgstr "Activar en modo de pantalla completa"
+
+#: Settings.ui.h:82
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Mostrar o dock cando non cubra outras ventás de aplicativos."
+
+#: Settings.ui.h:83
+msgid "Dodge windows"
+msgstr "Evitar as ventás"
+
+#: Settings.ui.h:84
+msgid "All windows"
+msgstr "Todas as ventás"
+
+#: Settings.ui.h:85
+msgid "Only focused application's windows"
+msgstr "Só as ventás do aplicativo activo"
+
+#: Settings.ui.h:86
+msgid "Only maximized windows"
+msgstr "Só as ventás maximizadas"
+
+#: Settings.ui.h:87
+msgid "Animation duration (s)"
+msgstr "Duración da animación (s)"
+
+#: Settings.ui.h:88
+msgid "0.000"
+msgstr "0.000"
+
+#: Settings.ui.h:89
+msgid "Show timeout (s)"
+msgstr "Tempo de aparición"
+
+#: Settings.ui.h:90
+msgid "Pressure threshold"
+msgstr "Límite de presión"
+
#~ msgid "Application"
#~ msgstr "Aplicación"
diff --git a/po/hu.po b/po/hu.po
index fb9d8ccd..8be4d93d 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -1,3 +1,4 @@
+# #-#-#-#-# 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.
@@ -5,8 +6,16 @@
# Biró Balázs <arch.scar at gmail dot com>, 2011.
# Gabor Kelemen <kelemeng at gnome dot hu>, 2011, 2012, 2013.
# Balázs Úr <ur.balazs at fsf dot hu>, 2013, 2014, 2017, 2019.
+# #-#-#-#-# hu.po (dash-to-dock master) #-#-#-#-#
+# Hungarian translation for dash-to-dock.
+# Copyright (C) 2017 Free Software Foundation, Inc.
+# This file is distributed under the same license as the dash-to-dock package.
+#
+# Balázs Úr <urbalazs@gmail.com>, 2017.
+#, fuzzy
msgid ""
msgstr ""
+"#-#-#-#-# 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"
@@ -20,6 +29,19 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.4.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"#-#-#-#-# hu.po (dash-to-dock master) #-#-#-#-#\n"
+"Project-Id-Version: dash-to-dock master\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-06-04 12:35+0100\n"
+"PO-Revision-Date: 2017-04-10 22:02+0100\n"
+"Last-Translator: Balázs Úr <urbalazs@gmail.com>\n"
+"Language-Team: Hungarian <openscope@googlegroups.com>\n"
+"Language: hu\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 2.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"
@@ -153,7 +175,7 @@ msgstr "Bezárás"
msgid "Unminimize"
msgstr "Minimalizálás megszüntetése"
-#: extensions/window-list/extension.js:118
+#: extensions/window-list/extension.js:118 Settings.ui.h:50
msgid "Minimize"
msgstr "Minimalizálás"
@@ -263,6 +285,423 @@ msgstr "%d. munkaterület"
msgid "Add Workspace"
msgstr "Munkaterület hozzáadása"
+#: prefs.js:113
+msgid "Primary monitor"
+msgstr "Elsődleges kijelző"
+
+#: prefs.js:122 prefs.js:129
+msgid "Secondary monitor "
+msgstr "Másodlagos kijelző"
+
+#: prefs.js:154 Settings.ui.h:29
+msgid "Right"
+msgstr "Jobb"
+
+#: prefs.js:155 Settings.ui.h:26
+msgid "Left"
+msgstr "Bal"
+
+#: prefs.js:205
+msgid "Intelligent autohide customization"
+msgstr "Intelligens automatikus elrejtés személyre szabása"
+
+#: prefs.js:212 prefs.js:393 prefs.js:450
+msgid "Reset to defaults"
+msgstr "Visszaállítás az alapértékekre"
+
+#: prefs.js:386
+msgid "Show dock and application numbers"
+msgstr "A dokk és az alkalmazás számainak megjelenítése"
+
+#: prefs.js:443
+msgid "Customize middle-click behavior"
+msgstr "Középső kattintás viselkedésének személyre szabása"
+
+#: prefs.js:514
+msgid "Customize running indicators"
+msgstr "Futásjelzők személyre szabása"
+
+#: appIcons.js:804
+msgid "All Windows"
+msgstr "Összes Ablak"
+
+#: Settings.ui.h:1
+msgid "Customize indicator style"
+msgstr "Jelző stílusának személyre szabása"
+
+#: Settings.ui.h:2
+msgid "Color"
+msgstr "Szín"
+
+#: Settings.ui.h:3
+msgid "Border color"
+msgstr "Szegély színe"
+
+#: Settings.ui.h:4
+msgid "Border width"
+msgstr "Szegély szélessége"
+
+#: Settings.ui.h:5
+msgid "Number overlay"
+msgstr "Szám rátét"
+
+#: Settings.ui.h:6
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"Az alkalmazás számainak átmeneti megjelenítése az ikonok fölött a "
+"gyorsbillentyűnek megfelelően."
+
+#: Settings.ui.h:7
+msgid "Show the dock if it is hidden"
+msgstr "A dokk megjelenítése, ha el van rejtve"
+
+#: Settings.ui.h:8
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Az automatikus elrejtés használatakor a dokk meg fog jelenni egy rövid ideig "
+"a gyorsbillentyű megnyomásakor."
+
+#: Settings.ui.h:9
+msgid "Shortcut for the options above"
+msgstr "Gyorsbillentyűk a fenti beállításokhoz"
+
+#: Settings.ui.h:10
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Szintaxis: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:11
+msgid "Hide timeout (s)"
+msgstr "Elrejtési időkorlát (mp)"
+
+#: Settings.ui.h:12
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+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
+msgid "Shift+Click action"
+msgstr "Shift + kattintás művelet"
+
+#: Settings.ui.h:14
+msgid "Raise window"
+msgstr "Ablak előre hozása"
+
+#: Settings.ui.h:15
+msgid "Minimize window"
+msgstr "Ablak minimalizálása"
+
+#: Settings.ui.h:16
+msgid "Launch new instance"
+msgstr "Új példány indítása"
+
+#: Settings.ui.h:17
+msgid "Cycle through windows"
+msgstr "Ablakok körbeléptetése"
+
+#: Settings.ui.h:18
+msgid "Quit"
+msgstr "Kilépés"
+
+#: Settings.ui.h:19
+msgid "Behavior for Middle-Click."
+msgstr "A középső kattintás viselkedése."
+
+#: Settings.ui.h:20
+msgid "Middle-Click action"
+msgstr "Középső kattintás művelet"
+
+#: Settings.ui.h:21
+msgid "Behavior for Shift+Middle-Click."
+msgstr "A Shift + középső kattintás viselkedése."
+
+#: Settings.ui.h:22
+msgid "Shift+Middle-Click action"
+msgstr "Shift + középső kattintás művelet"
+
+#: Settings.ui.h:23
+msgid "Show the dock on"
+msgstr "A dokk megjelenítése"
+
+#: Settings.ui.h:24
+#, fuzzy
+msgid "Show on all monitors."
+msgstr "Másodlagos kijelző"
+
+#: Settings.ui.h:25
+msgid "Position on screen"
+msgstr "Elhelyezkedés a képernyőn"
+
+#: Settings.ui.h:27
+msgid "Bottom"
+msgstr "Lent"
+
+#: Settings.ui.h:28
+msgid "Top"
+msgstr "Fent"
+
+#: Settings.ui.h:30
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"A dokk elrejtése, amikor az aktuális alkalmazás ablakát akadályozza. További "
+"finombeállítások is elérhetők."
+
+#: Settings.ui.h:31
+msgid "Intelligent autohide"
+msgstr "Intelligens automatikus elrejtés"
+
+#: Settings.ui.h:32
+msgid "Dock size limit"
+msgstr "Dokk méretkorlátja"
+
+#: Settings.ui.h:33
+msgid "Panel mode: extend to the screen edge"
+msgstr "Panel mód: kiterjesztés a képernyő széléig"
+
+#: Settings.ui.h:34
+msgid "Icon size limit"
+msgstr "Ikon méretkorlátja"
+
+#: Settings.ui.h:35
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Rögzített ikonméret: görgetés egyéb ikonok felfedéséhez"
+
+#: Settings.ui.h:36
+msgid "Position and size"
+msgstr "Elhelyezkedés és méret"
+
+#: Settings.ui.h:37
+msgid "Show favorite applications"
+msgstr "Kedvenc alkalmazások megjelenítése"
+
+#: Settings.ui.h:38
+msgid "Show running applications"
+msgstr "Futó alkalmazások megjelenítése"
+
+#: Settings.ui.h:39
+msgid "Isolate workspaces."
+msgstr "Munkaterületek elkülönítése."
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "Nyitott ablakok előnézeteinek megjelenítése."
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+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
+msgid "Show <i>Applications</i> icon"
+msgstr "<i>Alkalmazások</i> ikon megjelenítése"
+
+#: Settings.ui.h:43
+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
+msgid "Animate <i>Show Applications</i>."
+msgstr "<i>Alkalmazások megjelenítése</i> animálása."
+
+#: Settings.ui.h:45
+msgid "Launchers"
+msgstr "Indítok"
+
+#: Settings.ui.h:46
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Szuper + (0-9) engedélyezése gyorsbillentyűként az alkalmazások "
+"aktiválásához. Használható a Shift és a Ctrl billentyűkkel együtt is."
+
+#: Settings.ui.h:47
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "Gyorsbillentyűk használata az alkalmazások aktiválásához"
+
+#: Settings.ui.h:48
+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
+msgid "Click action"
+msgstr "Kattintás művelet"
+
+#: Settings.ui.h:51
+#, fuzzy
+msgid "Minimize or overview"
+msgstr "Ablak minimalizálása"
+
+#: Settings.ui.h:52
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Viselkedés egy alkalmazás ikonján való görgetéskor."
+
+#: Settings.ui.h:53
+msgid "Scroll action"
+msgstr "Görgetési művelet"
+
+#: Settings.ui.h:54
+msgid "Do nothing"
+msgstr "Ne tegyen semmit"
+
+#: Settings.ui.h:55
+msgid "Switch workspace"
+msgstr "Munkaterület váltása"
+
+#: Settings.ui.h:56
+msgid "Behavior"
+msgstr "Viselkedés"
+
+#: Settings.ui.h:57
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Néhány személyre szabás célja, hogy integrálja a dokkot az alapértelmezett "
+"GNOME témába. Alternatív esetben bizonyos beállítások engedélyezhetők lent."
+
+#: Settings.ui.h:58
+msgid "Use built-in theme"
+msgstr "Beépített téma használata"
+
+#: Settings.ui.h:59
+msgid "Save space reducing padding and border radius."
+msgstr "Helymegtakarítás a kitöltés és a szegély sugarának csökkentésével."
+
+#: Settings.ui.h:60
+msgid "Shrink the dash"
+msgstr "A dash zsugorítása"
+
+#: Settings.ui.h:61
+msgid "Show a dot for each windows of the application."
+msgstr "Egy pont megjelenítése az alkalmazás minden ablakánál."
+
+#: Settings.ui.h:62
+msgid "Show windows counter indicators"
+msgstr "Ablakszámlálók jelzőinek megjelenítése"
+
+#: Settings.ui.h:63
+msgid "Set the background color for the dash."
+msgstr "A dash háttérszínének beállítása."
+
+#: Settings.ui.h:64
+msgid "Customize the dash color"
+msgstr "A dash színének személyre szabása"
+
+#: Settings.ui.h:65
+msgid "Tune the dash background opacity."
+msgstr "A dash háttér átlátszatlanságának finomhangolása."
+
+#: Settings.ui.h:66
+msgid "Customize opacity"
+msgstr "Átlátszatlanság személyre szabása"
+
+#: Settings.ui.h:67
+msgid "Opacity"
+msgstr "Átlátszatlanság"
+
+#: Settings.ui.h:68
+msgid "Force straight corner\n"
+msgstr "Egyenes sarok kényszerítése\n"
+
+#: Settings.ui.h:70
+msgid "Appearance"
+msgstr "Megjelenés"
+
+#: Settings.ui.h:71
+msgid "version: "
+msgstr "verzió: "
+
+#: Settings.ui.h:72
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Áthelyezi a dasht az áttekintőn kívülre egy dokká alakítva azt"
+
+#: Settings.ui.h:73
+msgid "Created by"
+msgstr "Létrehozta"
+
+#: Settings.ui.h:74
+msgid "Webpage"
+msgstr "Weboldal"
+
+#: Settings.ui.h:75
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">Ehhez a programhoz SEMMILYEN GARANCIA NEM JÁR.\n"
+"Nézze meg a <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html "
+"\">GNU General Public License 2. vagy későbbi verzióját</a> a részletekért.</"
+"span>"
+
+#: Settings.ui.h:77
+msgid "About"
+msgstr "Névjegy"
+
+#: Settings.ui.h:78
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "A dokk megjelenítése a képernyő szélére történő egér rámutatással."
+
+#: Settings.ui.h:79
+msgid "Autohide"
+msgstr "Automatikus elrejtés"
+
+#: Settings.ui.h:80
+msgid "Push to show: require pressure to show the dock"
+msgstr "Nyomás a megjelenítéshez: nyomást igényel a dokk megjelenítéséhez"
+
+#: Settings.ui.h:81
+msgid "Enable in fullscreen mode"
+msgstr "Engedélyezés teljes képernyős módban"
+
+#: Settings.ui.h:82
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "A dokk megjelenítése, amikor nem akadályozza az alkalmazás ablakait."
+
+#: Settings.ui.h:83
+msgid "Dodge windows"
+msgstr "Ablakok kikerülése"
+
+#: Settings.ui.h:84
+msgid "All windows"
+msgstr "Összes ablak"
+
+#: Settings.ui.h:85
+msgid "Only focused application's windows"
+msgstr "Csak a kijelölt alkalmazások ablakai"
+
+#: Settings.ui.h:86
+msgid "Only maximized windows"
+msgstr "Csak a maximalizált ablakok"
+
+#: Settings.ui.h:87
+msgid "Animation duration (s)"
+msgstr "Animáció időtartama (mp)"
+
+#: Settings.ui.h:88
+msgid "0.000"
+msgstr "0,000"
+
+#: Settings.ui.h:89
+msgid "Show timeout (s)"
+msgstr "Megjelenítési időkorlát (mp)"
+
+#: Settings.ui.h:90
+msgid "Pressure threshold"
+msgstr "Nyomás küszöbszintje"
+
#~ msgid "Application"
#~ msgstr "Alkalmazás"
diff --git a/po/id.po b/po/id.po
index a67d729d..af7463f3 100644
--- a/po/id.po
+++ b/po/id.po
@@ -1,3 +1,4 @@
+# #-#-#-#-# id.po (gnome-shell-extensions master) #-#-#-#-#
# Indonesian translation for gnome-shell-extensions.
# Copyright (C) 2012 gnome-shell-extensions's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-shell-extensions package.
@@ -5,8 +6,16 @@
# Andika Triwidada <andika@gmail.com>, 2012, 2013.
# Dirgita <dirgitadevina@yahoo.co.id>, 2012.
# Kukuh Syafaat <kukuhsyafaat@gnome.org>, 2017, 2019, 2020.
+# #-#-#-#-# id.po (Dash-to-Dock) #-#-#-#-#
+# 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 <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
msgid ""
msgstr ""
+"#-#-#-#-# id.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"
@@ -21,6 +30,19 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Generator: Poedit 2.3.1\n"
+"#-#-#-#-# id.po (Dash-to-Dock) #-#-#-#-#\n"
+"Project-Id-Version: Dash-to-Dock\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-06-04 12:35+0100\n"
+"PO-Revision-Date: 2017-10-02 11:25+0700\n"
+"Last-Translator: Mahyuddin <yudi.al@gmail.com>\n"
+"Language-Team: Mahyuddin <yudi.al@gmail.com>\n"
+"Language: id\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 1.8.11\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -154,7 +176,7 @@ msgstr "Tutup"
msgid "Unminimize"
msgstr "Tak minimalkan"
-#: extensions/window-list/extension.js:118
+#: extensions/window-list/extension.js:118 Settings.ui.h:50
msgid "Minimize"
msgstr "Minimalkan"
@@ -263,6 +285,423 @@ msgstr "Ruang Kerja %d"
msgid "Add Workspace"
msgstr "Tambah Ruang Kerja"
+#: prefs.js:113
+msgid "Primary monitor"
+msgstr "Monitor primer"
+
+#: prefs.js:122 prefs.js:129
+msgid "Secondary monitor "
+msgstr "Monitor sekunder"
+
+#: prefs.js:154 Settings.ui.h:29
+msgid "Right"
+msgstr "Kanan"
+
+#: prefs.js:155 Settings.ui.h:26
+msgid "Left"
+msgstr "Kiri"
+
+#: prefs.js:205
+msgid "Intelligent autohide customization"
+msgstr "Kustomisasi autohide yang cerdas"
+
+#: prefs.js:212 prefs.js:393 prefs.js:450
+msgid "Reset to defaults"
+msgstr "Setel ulang ke bawaan"
+
+#: prefs.js:386
+msgid "Show dock and application numbers"
+msgstr "Tampilkan dock dan nomor aplikasi"
+
+#: prefs.js:443
+msgid "Customize middle-click behavior"
+msgstr "Sesuaikan perilaku klik menengah"
+
+#: prefs.js:514
+msgid "Customize running indicators"
+msgstr "Sesuaikan indikator yang sedang berjalan"
+
+#: appIcons.js:804
+msgid "All Windows"
+msgstr "Semua Jendela"
+
+#: Settings.ui.h:1
+msgid "Customize indicator style"
+msgstr "Sesuaikan gaya indikator"
+
+#: Settings.ui.h:2
+msgid "Color"
+msgstr "Warna"
+
+#: Settings.ui.h:3
+msgid "Border color"
+msgstr "Warna border"
+
+#: Settings.ui.h:4
+msgid "Border width"
+msgstr "Lebar border"
+
+#: Settings.ui.h:5
+msgid "Number overlay"
+msgstr "Nomor overlay"
+
+#: Settings.ui.h:6
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"Untuk sementara menunjukkan nomor aplikasi di atas ikon, sesuai dengan "
+"pintasan."
+
+#: Settings.ui.h:7
+msgid "Show the dock if it is hidden"
+msgstr "Tunjukkan dock jika tersembunyi"
+
+#: Settings.ui.h:8
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Jika menggunakan autohide, dock akan muncul dalam waktu singkat saat memicu "
+"pintasan."
+
+#: Settings.ui.h:9
+msgid "Shortcut for the options above"
+msgstr "Pintasan untuk opsi di atas"
+
+#: Settings.ui.h:10
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Sintaks: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:11
+msgid "Hide timeout (s)"
+msgstr "Sembunyikan batas waktu (s)"
+
+#: Settings.ui.h:12
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Bila disetel untuk meminimalkan, klik ganda meminimalkan semua jendela "
+"aplikasi."
+
+#: Settings.ui.h:13
+msgid "Shift+Click action"
+msgstr "Tindakan Shift+Klik"
+
+#: Settings.ui.h:14
+msgid "Raise window"
+msgstr "Menaikkan jendela"
+
+#: Settings.ui.h:15
+msgid "Minimize window"
+msgstr "Minimalkan jendela"
+
+#: Settings.ui.h:16
+msgid "Launch new instance"
+msgstr "Luncurkan contoh baru"
+
+#: Settings.ui.h:17
+msgid "Cycle through windows"
+msgstr "Siklus melalui jendela"
+
+#: Settings.ui.h:18
+msgid "Quit"
+msgstr "Berhenti"
+
+#: Settings.ui.h:19
+msgid "Behavior for Middle-Click."
+msgstr "Perilaku untuk Klik-Tengah."
+
+#: Settings.ui.h:20
+msgid "Middle-Click action"
+msgstr "Tindakan Klik-Tengah"
+
+#: Settings.ui.h:21
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Perilaku untuk Shift+Klik-Tengah."
+
+#: Settings.ui.h:22
+msgid "Shift+Middle-Click action"
+msgstr "Tindakan Shift+Klik-Tengah"
+
+#: Settings.ui.h:23
+msgid "Show the dock on"
+msgstr "Tunjukkan dock pada"
+
+#: Settings.ui.h:24
+msgid "Show on all monitors."
+msgstr "Tunjukkan pada semua monitor."
+
+#: Settings.ui.h:25
+msgid "Position on screen"
+msgstr "Posisi pada layar"
+
+#: Settings.ui.h:27
+msgid "Bottom"
+msgstr "Bawah"
+
+#: Settings.ui.h:28
+msgid "Top"
+msgstr "Atas"
+
+#: Settings.ui.h:30
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"Sembunyikan dock saat menghalangi jendela aplikasi saat ini. Setelan yang "
+"lebih halus juga tersedia."
+
+#: Settings.ui.h:31
+msgid "Intelligent autohide"
+msgstr "Autohide cerdas"
+
+#: Settings.ui.h:32
+msgid "Dock size limit"
+msgstr "Batas ukuran dock"
+
+#: Settings.ui.h:33
+msgid "Panel mode: extend to the screen edge"
+msgstr "Mode panel: meluas ke tepi layar"
+
+#: Settings.ui.h:34
+msgid "Icon size limit"
+msgstr "Batas ukuran ikon"
+
+#: Settings.ui.h:35
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Ukuran ikon tetap: gulir untuk menampilkan ikon lain"
+
+#: Settings.ui.h:36
+msgid "Position and size"
+msgstr "Posisi dan ukuran"
+
+#: Settings.ui.h:37
+msgid "Show favorite applications"
+msgstr "Tampilkan aplikasi favorit"
+
+#: Settings.ui.h:38
+msgid "Show running applications"
+msgstr "Tampilkan aplikasi yang sedang berjalan"
+
+#: Settings.ui.h:39
+msgid "Isolate workspaces."
+msgstr "Isolasi ruang kerja."
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "Tampilkan pratinjau windows yang terbuka."
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Jika dinonaktifkan, setelan ini dapat diakses dari gnome-tweak-tool atau "
+"situs ekstensi."
+
+#: Settings.ui.h:42
+msgid "Show <i>Applications</i> icon"
+msgstr "Tampilkan ikon <i>Aplikasi</ i>"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr "Pindahkan tombol aplikasi di awal dock."
+
+#: Settings.ui.h:44
+msgid "Animate <i>Show Applications</i>."
+msgstr "Animasi <i>Tampilkan Aplikasi</ i>."
+
+#: Settings.ui.h:45
+msgid "Launchers"
+msgstr "Peluncur"
+
+#: Settings.ui.h:46
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Aktifkan Super+(0-9) sebagai cara pintas untuk mengaktifkan aplikasi. Ini "
+"juga bisa digunakan bersamaan dengan Shift dan Ctrl."
+
+#: Settings.ui.h:47
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "Gunakan pintasan papan tik untuk mengaktifkan aplikasi"
+
+#: Settings.ui.h:48
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Perilaku saat mengklik ikon aplikasi yang sedang berjalan."
+
+#: Settings.ui.h:49
+msgid "Click action"
+msgstr "Klik tindakan"
+
+#: Settings.ui.h:51
+msgid "Minimize or overview"
+msgstr "Minimalkan atau ikhtisar"
+
+#: Settings.ui.h:52
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Perilaku saat menggulir pada ikon aplikasi."
+
+#: Settings.ui.h:53
+msgid "Scroll action"
+msgstr "Gulir tindakan"
+
+#: Settings.ui.h:54
+msgid "Do nothing"
+msgstr "Tidak melakukan apapun"
+
+#: Settings.ui.h:55
+msgid "Switch workspace"
+msgstr "Beralih ruang kerja"
+
+#: Settings.ui.h:56
+msgid "Behavior"
+msgstr "Perilaku"
+
+#: Settings.ui.h:57
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Beberapa penyesuaian dimaksudkan untuk mengintegrasikan dock dengan tema "
+"GNOME bawaan. Sebagai alternatif, pilihan spesifik dapat diaktifkan di bawah "
+"ini."
+
+#: Settings.ui.h:58
+msgid "Use built-in theme"
+msgstr "Gunakan tema bawaan"
+
+#: Settings.ui.h:59
+msgid "Save space reducing padding and border radius."
+msgstr "Hemat ruang padding mengurangi dan radius border."
+
+#: Settings.ui.h:60
+msgid "Shrink the dash"
+msgstr "Penyusutan dash"
+
+#: Settings.ui.h:61
+msgid "Show a dot for each windows of the application."
+msgstr "Tampilkan titik untuk setiap jendela aplikasi."
+
+#: Settings.ui.h:62
+msgid "Show windows counter indicators"
+msgstr "Tampilkan indikator counter jendela"
+
+#: Settings.ui.h:63
+msgid "Set the background color for the dash."
+msgstr "Atur warna latar belakang untuk dash."
+
+#: Settings.ui.h:64
+msgid "Customize the dash color"
+msgstr "Sesuaikan warna dash."
+
+#: Settings.ui.h:65
+msgid "Tune the dash background opacity."
+msgstr "Cocokkan opacity latar belakang."
+
+#: Settings.ui.h:66
+msgid "Customize opacity"
+msgstr "Menyesuaikan opacity"
+
+#: Settings.ui.h:67
+msgid "Opacity"
+msgstr "Opacity"
+
+#: Settings.ui.h:68
+msgid "Force straight corner\n"
+msgstr "Paksa sudut lurus\n"
+
+#: Settings.ui.h:70
+msgid "Appearance"
+msgstr "Penampilan"
+
+#: Settings.ui.h:71
+msgid "version: "
+msgstr "versi: "
+
+#: Settings.ui.h:72
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Memindahkan dash keluar dari ikhtisar yang mengubahnya di dock"
+
+#: Settings.ui.h:73
+msgid "Created by"
+msgstr "Dibuat oleh"
+
+#: Settings.ui.h:74
+msgid "Webpage"
+msgstr "Halaman web"
+
+#: Settings.ui.h:75
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size = \"small\">Program ini hadir dengan TIDAK ADA JAMINAN TIDAK "
+"BENAR.\n"
+"Lihat <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html\"> "
+"GNU General Public License, versi 2 atau yang lebih baru </a> untuk "
+"detailnya. </ Span>"
+
+#: Settings.ui.h:77
+msgid "About"
+msgstr "Tentang"
+
+#: Settings.ui.h:78
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Tunjukkan dock dengan mouse hover di tepi layar."
+
+#: Settings.ui.h:79
+msgid "Autohide"
+msgstr "Autohide"
+
+#: Settings.ui.h:80
+msgid "Push to show: require pressure to show the dock"
+msgstr "Tekan untuk tampilkan: butuh tekanan untuk menunjukkan dock"
+
+#: Settings.ui.h:81
+msgid "Enable in fullscreen mode"
+msgstr "Aktifkan dalam mode layar penuh"
+
+#: Settings.ui.h:82
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Tunjukkan dokk bila tidak menghalangi jendela aplikasi."
+
+#: Settings.ui.h:83
+msgid "Dodge windows"
+msgstr "Dodge jendela"
+
+#: Settings.ui.h:84
+msgid "All windows"
+msgstr "Semua jendela"
+
+#: Settings.ui.h:85
+msgid "Only focused application's windows"
+msgstr "Hanya fokus aplikasi jendela"
+
+#: Settings.ui.h:86
+msgid "Only maximized windows"
+msgstr "Hanya jendela yang maksimal"
+
+#: Settings.ui.h:87
+msgid "Animation duration (s)"
+msgstr "Durasi animasi (s)"
+
+#: Settings.ui.h:88
+msgid "0.000"
+msgstr "0.000"
+
+#: Settings.ui.h:89
+msgid "Show timeout (s)"
+msgstr "Tampilkan batas waktu (s)"
+
+#: Settings.ui.h:90
+msgid "Pressure threshold"
+msgstr "Ambang tekanan"
+
#~ msgid "Application"
#~ msgstr "Aplikasi"
@@ -350,3 +789,13 @@ msgstr "Tambah Ruang Kerja"
#~ msgid "Memory"
#~ msgstr "Memori"
+
+#~ msgid ""
+#~ "With fixed icon size, only the edge of the dock and the <i>Show "
+#~ "Applications</i> icon are active."
+#~ msgstr ""
+#~ "Con la dimensione fissa delle icone, solo il bordo della dock e l'icona "
+#~ "<i> Mostra Applicazioni</i> sono attive."
+
+#~ msgid "Switch workspace by scrolling on the dock"
+#~ msgstr "Cambia spazio di lavoro scorrendo sulla dock"
diff --git a/po/it.po b/po/it.po
index 57124ad2..4b425925 100644
--- a/po/it.po
+++ b/po/it.po
@@ -1,3 +1,4 @@
+# #-#-#-#-# 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.
@@ -6,8 +7,16 @@
# Milo Casagrande <milo@milo.name>, 2013, 2014, 2015, 2017, 2019, 2020.
# Gianvito Cavasoli <gianvito@gmx.it>, 2017.
#
+# #-#-#-#-# it.po (Dash-to-Dock) #-#-#-#-#
+# Dash-to-Dock Italian translation.
+# Copyright (C) 2018 the Dash-to-Dock copyright holder.
+# This file is distributed under the same license as the Dash-to-Dock package.
+# Milo Casagrande <milo@milo.name>, 2018
+#
+#, fuzzy
msgid ""
msgstr ""
+"#-#-#-#-# 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"
@@ -21,6 +30,17 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 2.4.1\n"
+"#-#-#-#-# it.po (Dash-to-Dock) #-#-#-#-#\n"
+"Project-Id-Version: Dash-to-Dock\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2018-04-03 17:18+0200\n"
+"PO-Revision-Date: 2018-04-04 10:13+0200\n"
+"Last-Translator: Milo Casagrande <milo@milo.name>\n"
+"Language-Team: Italian <micxgx@gmail.com>\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -154,7 +174,7 @@ msgstr "Chiudi"
msgid "Unminimize"
msgstr "Deminimizza"
-#: extensions/window-list/extension.js:118
+#: extensions/window-list/extension.js:118 Settings.ui.h:49
msgid "Minimize"
msgstr "Minimizza"
@@ -262,3 +282,497 @@ msgstr "Spazio di lavoro %d"
#: extensions/workspace-indicator/prefs.js:218
msgid "Add Workspace"
msgstr "Aggiungi spazio di lavoro"
+
+#: prefs.js:140
+msgid "Primary monitor"
+msgstr "Monitor primario"
+
+#: prefs.js:149 prefs.js:156
+msgid "Secondary monitor "
+msgstr "Monitor secondario "
+
+#: prefs.js:181 Settings.ui.h:27
+msgid "Right"
+msgstr "Destra"
+
+#: prefs.js:182 Settings.ui.h:24
+msgid "Left"
+msgstr "Sinistra"
+
+#: prefs.js:232
+msgid "Intelligent autohide customization"
+msgstr "Personalizzazione nascondimento automatico intelligente"
+
+#: prefs.js:239 prefs.js:424 prefs.js:481
+msgid "Reset to defaults"
+msgstr "Ripristina a predefinito"
+
+#: prefs.js:417
+msgid "Show dock and application numbers"
+msgstr "Mostra applicazioni in esecuzione"
+
+#: prefs.js:474
+msgid "Customize middle-click behavior"
+msgstr "Personalizza comportamento clic centrale"
+
+#: prefs.js:557
+msgid "Customize running indicators"
+msgstr "Personalizza indicatori in esecuzione"
+
+#: prefs.js:671 Settings.ui.h:71
+msgid "Customize opacity"
+msgstr "Personalizza opacità"
+
+#: appIcons.js:785
+msgid "All Windows"
+msgstr "Tutte le finestre"
+
+#. Translators: %s is "Settings", which is automatically translated. You
+#. can also translate the full message if this fits better your language.
+#: appIcons.js:1091
+#, javascript-format
+msgid "Dash to Dock %s"
+msgstr "%s di «Dash to Dock»"
+
+#: Settings.ui.h:1
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Quando impostato su minimizza, un doppio clic minimizza tutte le finestre "
+"dell'applicazione"
+
+#: Settings.ui.h:2
+msgid "Shift+Click action"
+msgstr "Azione Maiusc+Clic"
+
+#: Settings.ui.h:3
+msgid "Raise window"
+msgstr "Solleva finestra"
+
+#: Settings.ui.h:4
+msgid "Minimize window"
+msgstr "Minimizza finestra"
+
+#: Settings.ui.h:5
+msgid "Launch new instance"
+msgstr "Lancia nuova istanza"
+
+#: Settings.ui.h:6
+msgid "Cycle through windows"
+msgstr "Passa attraverso le finestre"
+
+#: Settings.ui.h:7
+msgid "Minimize or overview"
+msgstr "Minimizza o mostra attività"
+
+#: Settings.ui.h:8
+msgid "Show window previews"
+msgstr "Mostra anteprime finestra"
+
+#: Settings.ui.h:9
+msgid "Minimize or show previews"
+msgstr "Minimizza o mostra anteprime"
+
+#: Settings.ui.h:10
+msgid "Quit"
+msgstr "Chiudi"
+
+#: Settings.ui.h:11
+msgid "Behavior for Middle-Click."
+msgstr "Comportamento del clic-centrale"
+
+#: Settings.ui.h:12
+msgid "Middle-Click action"
+msgstr "Azione clic-centrale"
+
+#: Settings.ui.h:13
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Comportamento per Maiusc+Clic-centrale"
+
+#: Settings.ui.h:14
+msgid "Shift+Middle-Click action"
+msgstr "Azione Maiusc+Clic-centrale"
+
+#: Settings.ui.h:15
+msgid "Enable Unity7 like glossy backlit items"
+msgstr "Abilitare elementi lucidi retroilluminati come Unity7"
+
+#: Settings.ui.h:16
+msgid "Use dominant color"
+msgstr "Usare colore dominante"
+
+#: Settings.ui.h:17
+msgid "Customize indicator style"
+msgstr "Personalizza stile indicatori"
+
+#: Settings.ui.h:18
+msgid "Color"
+msgstr "Colore"
+
+#: Settings.ui.h:19
+msgid "Border color"
+msgstr "Colore bordo"
+
+#: Settings.ui.h:20
+msgid "Border width"
+msgstr "Larghezza bordo"
+
+#: Settings.ui.h:21
+msgid "Show the dock on"
+msgstr "Mostra dock su"
+
+#: Settings.ui.h:22
+msgid "Show on all monitors."
+msgstr "Mostra su tutti gli schermi"
+
+#: Settings.ui.h:23
+msgid "Position on screen"
+msgstr "Posizione sullo schermo"
+
+#: Settings.ui.h:25
+msgid "Bottom"
+msgstr "Basso"
+
+#: Settings.ui.h:26
+msgid "Top"
+msgstr "Alto"
+
+#: Settings.ui.h:28
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"Nasconde la dock quando questa ostruisce una finestra dell'applicazione "
+"corrente. Sono disponibili maggiori impostazioni."
+
+#: Settings.ui.h:29
+msgid "Intelligent autohide"
+msgstr "Nascondi automaticamente intelligente"
+
+#: Settings.ui.h:30
+msgid "Dock size limit"
+msgstr "Limite dimensione dock"
+
+#: Settings.ui.h:31
+msgid "Panel mode: extend to the screen edge"
+msgstr "Modalità pannello: si estende fino al bordo dello schermo"
+
+#: Settings.ui.h:32
+msgid "Icon size limit"
+msgstr "Limite dimensione icone"
+
+#: Settings.ui.h:33
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Dimensione icona fissa: scorrere per rivelare le altre icone"
+
+#: Settings.ui.h:34
+msgid "Position and size"
+msgstr "Posizione e dimensione"
+
+#: Settings.ui.h:35
+msgid "Show favorite applications"
+msgstr "Mostra applicazioni preferite"
+
+#: Settings.ui.h:36
+msgid "Show running applications"
+msgstr "Mostra applicazioni in esecuzione"
+
+#: Settings.ui.h:37
+msgid "Isolate workspaces."
+msgstr "Isola spazi di lavoro"
+
+#: Settings.ui.h:38
+msgid "Isolate monitors."
+msgstr "Isola gli schermi"
+
+#: Settings.ui.h:39
+msgid "Show open windows previews."
+msgstr "Mostra anteprime delle finestre aperte"
+
+#: Settings.ui.h:40
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Se disabilitate, queste impostazioni sono accessibili da gnome-tweak-tool o "
+"dal sito web delle estensioni."
+
+#: Settings.ui.h:41
+msgid "Show <i>Applications</i> icon"
+msgstr "Mostra icona <i>Applicazioni</i>"
+
+#: Settings.ui.h:42
+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
+msgid "Animate <i>Show Applications</i>."
+msgstr "Anima <i>Mostra applicazioni</i>"
+
+#: Settings.ui.h:44
+msgid "Launchers"
+msgstr "Icone applicazioni"
+
+#: Settings.ui.h:45
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Attiva Super+(0-9) come scorciatoie per attivare le applicazioni, funziona "
+"anche con Maiusc 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
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr ""
+"Comportamento quando si fa clic sull'icona di una applicazione in esecuzione."
+
+#: Settings.ui.h:48
+msgid "Click action"
+msgstr "Azione clic"
+
+#: Settings.ui.h:50
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr ""
+"Comportamento quando si scorre sull'icona di una applicazione in esecuzione"
+
+#: Settings.ui.h:51
+msgid "Scroll action"
+msgstr "Azione scorrimento"
+
+#: Settings.ui.h:52
+msgid "Do nothing"
+msgstr "Non fare nulla"
+
+#: Settings.ui.h:53
+msgid "Switch workspace"
+msgstr "Cambia spazio di lavoro"
+
+#: Settings.ui.h:54
+msgid "Behavior"
+msgstr "Comportamento"
+
+#: Settings.ui.h:55
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Poche personalizzazioni significative per integrare la dock con il tema "
+"predefinito di GNOME. In alternativa, delle opzioni specifiche possono "
+"essere abilitate qui sotto."
+
+#: Settings.ui.h:56
+msgid "Use built-in theme"
+msgstr "Usa tema integrato"
+
+#: Settings.ui.h:57
+msgid "Save space reducing padding and border radius."
+msgstr "Salva spazio riducendo il margine e il raggio dei bordi"
+
+#: Settings.ui.h:58
+msgid "Shrink the dash"
+msgstr "Riduci la dash"
+
+#: Settings.ui.h:59
+msgid "Customize windows counter indicators"
+msgstr "Personalizza indicatori conteggio finestre"
+
+#: Settings.ui.h:60
+msgid "Default"
+msgstr "Predefinito"
+
+#: Settings.ui.h:61
+msgid "Dots"
+msgstr "Puntini"
+
+#: Settings.ui.h:62
+msgid "Squares"
+msgstr "Quadrati"
+
+#: Settings.ui.h:63
+msgid "Dashes"
+msgstr "Trattini"
+
+#: Settings.ui.h:64
+msgid "Segmented"
+msgstr "Segmenti"
+
+#: Settings.ui.h:65
+msgid "Solid"
+msgstr "Solido"
+
+#: Settings.ui.h:66
+msgid "Ciliora"
+msgstr "Ciliora"
+
+#: Settings.ui.h:67
+msgid "Metro"
+msgstr "Metro"
+
+#: Settings.ui.h:68
+msgid "Set the background color for the dash."
+msgstr "Imposta il colore di sfondo della dash"
+
+#: Settings.ui.h:69
+msgid "Customize the dash color"
+msgstr "Personalizza il colore della dash"
+
+#: Settings.ui.h:70
+msgid "Tune the dash background opacity."
+msgstr "Personalizza l'opacità dello sfondo della dash"
+
+#: Settings.ui.h:72
+msgid "Fixed"
+msgstr "Fisso"
+
+#: Settings.ui.h:73
+msgid "Adaptive"
+msgstr "Adattivo"
+
+#: Settings.ui.h:74
+msgid "Dynamic"
+msgstr "Dinamico"
+
+#: Settings.ui.h:75
+msgid "Opacity"
+msgstr "Opacità"
+
+#: Settings.ui.h:76
+msgid "Force straight corner\n"
+msgstr "Forza angoli squadrati\n"
+
+#: Settings.ui.h:78
+msgid "Appearance"
+msgstr "Aspetto"
+
+#: Settings.ui.h:79
+msgid "version: "
+msgstr "versione: "
+
+#: Settings.ui.h:80
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Sposta la dash fuori dalla panoramica trasformandola in una dock"
+
+#: Settings.ui.h:81
+msgid "Created by"
+msgstr "Creata da"
+
+#: Settings.ui.h:82
+msgid "Webpage"
+msgstr "Sito web"
+
+#: Settings.ui.h:83
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">Questo programma viene fornito senza ALCUNA GARANZIA.\n"
+"Per maggiori informazioni, consultare la <a href=\"https://www.gnu.org/"
+"licenses/old-licenses/gpl-2.0.html\">GNU General Public License, versione 2 "
+"o successiva</a>.<span>"
+
+#: Settings.ui.h:85
+msgid "About"
+msgstr "Informazioni"
+
+#: Settings.ui.h:86
+msgid "Customize minimum and maximum opacity values"
+msgstr "Personalizza i valori minimo e massimo dell'opacità"
+
+#: Settings.ui.h:87
+msgid "Minimum opacity"
+msgstr "Opacità minima"
+
+#: Settings.ui.h:88
+msgid "Maximum opacity"
+msgstr "Opacità massima"
+
+#: Settings.ui.h:89
+msgid "Number overlay"
+msgstr "Indicatore numerico in sovraimpressione"
+
+#: Settings.ui.h:90
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"Mostra brevemente il numero corrispondente alla scorciatoia sull'icona "
+"dell'applicazione."
+
+#: Settings.ui.h:91
+msgid "Show the dock if it is hidden"
+msgstr "Mostra dock se nascosta"
+
+#: Settings.ui.h:92
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"In modalità «Nascondi automaticamente intelligente», la dock viene mostrata "
+"per un istante quando la scorciatoia è attivata"
+
+#: Settings.ui.h:93
+msgid "Shortcut for the options above"
+msgstr "Scorciatoia"
+
+#: Settings.ui.h:94
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Formato: <Maiusc>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:95
+msgid "Hide timeout (s)"
+msgstr "Timeout nascondimento (s)"
+
+#: Settings.ui.h:96
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Mostra la dock passando con il mouse sul bordo dello schermo"
+
+#: Settings.ui.h:97
+msgid "Autohide"
+msgstr "Nascondi automaticamente"
+
+#: Settings.ui.h:98
+msgid "Push to show: require pressure to show the dock"
+msgstr "Premere per vedere: richiede una pressione per mostrare la dock"
+
+#: Settings.ui.h:99
+msgid "Enable in fullscreen mode"
+msgstr "Abilita in modalità a schermo intero"
+
+#: Settings.ui.h:100
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr ""
+"Mostra la dock quando questa non ostruisce le finestre dell'applicazione"
+
+#: Settings.ui.h:101
+msgid "Dodge windows"
+msgstr "Schive finestre"
+
+#: Settings.ui.h:102
+msgid "All windows"
+msgstr "Tutte le finestre"
+
+#: Settings.ui.h:103
+msgid "Only focused application's windows"
+msgstr "Solo le finestre delle applicazione col focus"
+
+#: Settings.ui.h:104
+msgid "Only maximized windows"
+msgstr "Solo le finestre massimizzate"
+
+#: Settings.ui.h:105
+msgid "Animation duration (s)"
+msgstr "Durata animazione (s)"
+
+#: Settings.ui.h:106
+msgid "Show timeout (s)"
+msgstr "Timeout rivelazione (s)"
+
+#: Settings.ui.h:107
+msgid "Pressure threshold"
+msgstr "Soglia pressione"
diff --git a/po/ja.po b/po/ja.po
index 56ef3286..30b84200 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -1,3 +1,4 @@
+# #-#-#-#-# 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.
@@ -8,8 +9,19 @@
# Hajime Taira <htaira@redhat.com>, 2014, 2015.
# sicklylife <translation@sicklylife.jp>, 2019-2020.
#
+# #-#-#-#-# ja.po (dash-to-dock master) #-#-#-#-#
+# Dash to Dock master ja.po
+# Copyright (C) 2013-2017, 2019-2020 THE dash-to-dock'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the dash-to-dock package.
+# Jiro Matsuzawa <jmatsuzawa@gnome.org>, 2013.
+# Debonne Hooties <debonne.hooties@gmail.com>, 2014-2017.
+# sicklylife <translation@sicklylife.jp>, 2019-2020.
+# Ryo Nakano <ryonakaknock3@gmail.com>, 2019.
+#
+#, fuzzy
msgid ""
msgstr ""
+"#-#-#-#-# 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"
@@ -22,6 +34,18 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
+"#-#-#-#-# ja.po (dash-to-dock master) #-#-#-#-#\n"
+"Project-Id-Version: dash-to-dock master\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-06-14 23:00+0900\n"
+"PO-Revision-Date: 2020-06-15 07:30+0900\n"
+"Last-Translator: sicklylife <translation@sicklylife.jp>\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"
@@ -156,9 +180,14 @@ msgstr "閉じる"
msgid "Unminimize"
msgstr "最小化解除"
-#: extensions/window-list/extension.js:118
+#: extensions/window-list/extension.js:118 Settings.ui.h:52
+#, fuzzy
msgid "Minimize"
-msgstr "最小化"
+msgstr ""
+"#-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"最小化\n"
+"#-#-#-#-# ja.po (dash-to-dock master) #-#-#-#-#\n"
+"ウィンドウの最小化"
#: extensions/window-list/extension.js:125
msgid "Unmaximize"
@@ -265,6 +294,581 @@ msgstr "ワークスペース %d"
msgid "Add Workspace"
msgstr "ワークスペースを追加"
+#: prefs.js:310 Settings.ui.h:25
+#, fuzzy
+msgid "Left"
+msgstr ""
+"#-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"左回り\n"
+"#-#-#-#-# ja.po (dash-to-dock master) #-#-#-#-#\n"
+"左"
+
+#: prefs.js:309 Settings.ui.h:28
+#, fuzzy
+msgid "Right"
+msgstr ""
+"#-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"右回り\n"
+"#-#-#-#-# ja.po (dash-to-dock master) #-#-#-#-#\n"
+"右"
+
+#: appIcons.js:808
+#, fuzzy
+msgid "New Window"
+msgstr ""
+"#-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"新しいウィンドウで開く\n"
+"#-#-#-#-# ja.po (dash-to-dock master) #-#-#-#-#\n"
+"新しいウィンドウ"
+
+#: appIcons.js:851
+msgid "Remove from Favorites"
+msgstr "お気に入りから削除"
+
+#: appIcons.js:797
+msgid "All Windows"
+msgstr "ウィンドウプレビューの表示"
+
+#: appIcons.js:823
+msgid "Launch using Dedicated Graphics Card"
+msgstr "専用のグラフィックカードを使用して起動"
+
+#: appIcons.js:857
+msgid "Add to Favorites"
+msgstr "お気に入りに追加"
+
+#: appIcons.js:868
+msgid "Show Details"
+msgstr "詳細を表示"
+
+# ここの翻訳は GNOME Shell の訳が優先される様子
+#: appIcons.js:896 appIcons.js:914 Settings.ui.h:11
+msgid "Quit"
+msgstr "終了"
+
+# ここの「Quit」は GNOME Shell の訳に合わせた方が良さげ
+#: appIcons.js:916
+#, javascript-format
+msgid "Quit %d Windows"
+msgstr "%d 個のウィンドウを終了"
+
+#. Translators: %s is "Settings", which is automatically translated. You
+#. can also translate the full message if this fits better your language.
+#: appIcons.js:1134
+#, javascript-format
+msgid "Dash to Dock %s"
+msgstr "Dash to Dock の%s"
+
+#: appIcons.js:1134
+msgid "Settings"
+msgstr "設定"
+
+#: docking.js:1188
+msgid "Dash"
+msgstr "Dash"
+
+#: locations.js:65
+msgid "Trash"
+msgstr "ゴミ箱"
+
+#: locations.js:74
+msgid "Empty Trash"
+msgstr "ゴミ箱を空にする"
+
+#: locations.js:192
+msgid "Mount"
+msgstr "マウント"
+
+#: locations.js:235
+msgid "Eject"
+msgstr "取り出す"
+
+#: locations.js:240
+msgid "Unmount"
+msgstr "アンマウント"
+
+#: prefs.js:268
+msgid "Primary monitor"
+msgstr "プライマリーモニター"
+
+#: prefs.js:277 prefs.js:284
+msgid "Secondary monitor "
+msgstr "セカンダリーモニター"
+
+#: prefs.js:360
+msgid "Intelligent autohide customization"
+msgstr "インテリジェント表示の設定"
+
+#: prefs.js:367 prefs.js:560 prefs.js:616
+msgid "Reset to defaults"
+msgstr "既定値にリセット"
+
+#: prefs.js:553
+msgid "Show dock and application numbers"
+msgstr "ドック表示とアプリケーション番号"
+
+#: prefs.js:609
+msgid "Customize middle-click behavior"
+msgstr "中ボタンクリック時のアクション"
+
+#: prefs.js:692
+msgid "Customize running indicators"
+msgstr "インジケーターの表示設定"
+
+#: prefs.js:804 Settings.ui.h:74
+msgid "Customize opacity"
+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 "Minimize or overview"
+msgstr "ウィンドウの最小化またはオーバービュー"
+
+#: Settings.ui.h:8
+msgid "Show window previews"
+msgstr "ウィンドウのプレビュー表示"
+
+#: Settings.ui.h:9
+msgid "Minimize or show previews"
+msgstr "ウィンドウの最小化またはプレビュー表示"
+
+#: Settings.ui.h:10
+msgid "Focus or show previews"
+msgstr "フォーカスまたはプレビュー表示"
+
+#: Settings.ui.h:12
+msgid "Behavior for Middle-Click."
+msgstr "中ボタンをクリックしたときの動作を設定します。"
+
+#: Settings.ui.h:13
+msgid "Middle-Click action"
+msgstr "中ボタンクリック時のアクション"
+
+#: Settings.ui.h:14
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Shift を押しながら中ボタンをクリックしたときの動作を設定します。"
+
+#: Settings.ui.h:15
+msgid "Shift+Middle-Click action"
+msgstr "Shift + 中ボタンクリック時のアクション"
+
+#: Settings.ui.h:16
+msgid "Enable Unity7 like glossy backlit items"
+msgstr "Unity7 のような色付きのアイテム背景"
+
+#: Settings.ui.h:17
+msgid "Use dominant color"
+msgstr "ドミナントカラーを使用"
+
+#: Settings.ui.h:18
+msgid "Customize indicator style"
+msgstr "表示スタイルの設定"
+
+#: Settings.ui.h:19
+msgid "Color"
+msgstr "ボディ色"
+
+#: Settings.ui.h:20
+msgid "Border color"
+msgstr "縁取り色"
+
+#: Settings.ui.h:21
+msgid "Border width"
+msgstr "縁取り幅"
+
+#: Settings.ui.h:22
+msgid "Show the dock on"
+msgstr "ドックを表示するモニター"
+
+#: Settings.ui.h:23
+msgid "Show on all monitors."
+msgstr "すべてのモニターで表示"
+
+#: Settings.ui.h:24
+msgid "Position on screen"
+msgstr "表示位置"
+
+#: Settings.ui.h:26
+msgid "Bottom"
+msgstr "下"
+
+#: Settings.ui.h:27
+msgid "Top"
+msgstr "上"
+
+#: Settings.ui.h:29
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"開いているウィンドウの邪魔にならないようドックの表示/非表示を自動的に切り替え"
+"ます。より洗練された表示設定も可能です。"
+
+#: Settings.ui.h:30
+msgid "Intelligent autohide"
+msgstr "インテリジェント表示"
+
+#: Settings.ui.h:31
+msgid "Dock size limit"
+msgstr "ドックサイズの上限"
+
+#: Settings.ui.h:32
+msgid "Panel mode: extend to the screen edge"
+msgstr "パネルモード (画面の端までドックを拡張)"
+
+#: Settings.ui.h:33
+msgid "Icon size limit"
+msgstr "アイコンサイズの上限"
+
+#: Settings.ui.h:34
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "アイコンサイズの固定 (隠れたアイコンはスクロールで表示)"
+
+#: Settings.ui.h:35
+msgid "Position and size"
+msgstr "位置とサイズ"
+
+#: Settings.ui.h:36
+msgid "Show favorite applications"
+msgstr "お気に入りアプリケーションの表示"
+
+#: Settings.ui.h:37
+msgid "Show running applications"
+msgstr "実行中アプリケーションの表示"
+
+#: Settings.ui.h:38
+msgid "Isolate workspaces."
+msgstr "現在のワークスペースのみ表示"
+
+#: Settings.ui.h:39
+msgid "Isolate monitors."
+msgstr "現在のモニターのみ表示"
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "ウィンドウのプレビューを右クリックで表示可能にする"
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"オフにしたときは gnome-tweak-tool または拡張機能ウェブサイトを経由してこの設"
+"定ダイアログにアクセスします。"
+
+#: Settings.ui.h:42
+msgid "Show <i>Applications</i> icon"
+msgstr "[アプリケーションを表示する] アイコンの表示"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr "ドックの先頭 (最上段または左端) に表示"
+
+#: Settings.ui.h:44
+msgid "Animate <i>Show Applications</i>."
+msgstr "アニメーションしながらアプリケーション一覧を表示"
+
+#: Settings.ui.h:45
+msgid "Show trash can"
+msgstr "ゴミ箱を表示"
+
+#: Settings.ui.h:46
+msgid "Show mounted volumes and devices"
+msgstr "マウントしたボリュームとデバイスを表示"
+
+#: Settings.ui.h:47
+msgid "Launchers"
+msgstr "ランチャー"
+
+#: Settings.ui.h:48
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Super キーと番号 (0-9) を同時に押すことでアプリケーションのアクティブ化を可能"
+"にします。\n"
+"Shift キーまたは Ctrl キーを Super キーとともに押しても機能します。"
+
+#: Settings.ui.h:49
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "アプリのアクティブ化にキーボードショートカットを使用"
+
+#: Settings.ui.h:50
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "実行中アプリケーションのアイコンをクリックしたときの動作を設定します。"
+
+#: Settings.ui.h:51
+msgid "Click action"
+msgstr "クリック時のアクション"
+
+#: Settings.ui.h:53
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr ""
+"実行中アプリケーションのアイコン上でスクロールしたときの動作を設定します。"
+
+#: Settings.ui.h:54
+msgid "Scroll action"
+msgstr "スクロール時のアクション"
+
+#: Settings.ui.h:55
+msgid "Do nothing"
+msgstr "何もしない"
+
+#: Settings.ui.h:56
+msgid "Switch workspace"
+msgstr "ワークスペースの切り替え"
+
+#: Settings.ui.h:57
+msgid "Behavior"
+msgstr "動作"
+
+#: Settings.ui.h:58
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"この設定がオンのときは、お使いの GNOME テーマとの調和を図るためカスタマイズは"
+"無効になります。オフのときには以下のカスタマイズが可能です。"
+
+#: Settings.ui.h:59
+msgid "Use built-in theme"
+msgstr "ビルトインテーマの使用"
+
+#: Settings.ui.h:60
+msgid "Save space reducing padding and border radius."
+msgstr "境界線の太さとパディングを減らして表示域を小さくします。"
+
+#: Settings.ui.h:61
+msgid "Shrink the dash"
+msgstr "Dash の縮小表示"
+
+#: Settings.ui.h:62
+msgid "Customize windows counter indicators"
+msgstr "ウィンドウ数インジケーターの設定"
+
+#: Settings.ui.h:63
+msgid "Default"
+msgstr "デフォルト"
+
+#: Settings.ui.h:64
+msgid "Dots"
+msgstr ""
+
+#: Settings.ui.h:65
+msgid "Squares"
+msgstr ""
+
+#: Settings.ui.h:66
+msgid "Dashes"
+msgstr ""
+
+#: Settings.ui.h:67
+msgid "Segmented"
+msgstr ""
+
+#: Settings.ui.h:68
+msgid "Solid"
+msgstr ""
+
+#: Settings.ui.h:69
+msgid "Ciliora"
+msgstr ""
+
+#: Settings.ui.h:70
+msgid "Metro"
+msgstr ""
+
+#: Settings.ui.h:71
+msgid "Set the background color for the dash."
+msgstr "Dash の背景色を設定します"
+
+#: Settings.ui.h:72
+msgid "Customize the dash color"
+msgstr "Dash 背景色の設定"
+
+#: Settings.ui.h:73
+msgid "Tune the dash background opacity."
+msgstr "Dash 背景の不透明度を調整します。"
+
+#: Settings.ui.h:75
+msgid "Fixed"
+msgstr "固定"
+
+#: Settings.ui.h:76
+msgid "Dynamic"
+msgstr "動的"
+
+#: Settings.ui.h:77
+msgid "Opacity"
+msgstr "不透明度"
+
+#: Settings.ui.h:78
+msgid "Force straight corner"
+msgstr "角を丸めない"
+
+#: Settings.ui.h:79
+msgid "Appearance"
+msgstr "外観"
+
+#: Settings.ui.h:80
+msgid "version: "
+msgstr "バージョン: "
+
+#: Settings.ui.h:81
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr ""
+"Dash をドック化してアクティビティ画面以外でも Dash 操作を可能にします。"
+
+#: Settings.ui.h:82
+msgid "Created by"
+msgstr "作者:"
+
+#: Settings.ui.h:83
+msgid "Webpage"
+msgstr "ウェブページ"
+
+#: Settings.ui.h:84
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">このプログラムに<b>保証は一切ありません</b>。\n"
+"詳しくは <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">GNU 一般公衆ライセンス (GPL) バージョン 2</a> またはそれ以降のバージョンを"
+"ご覧ください。</span>"
+
+#: Settings.ui.h:86
+msgid "About"
+msgstr "情報"
+
+#: Settings.ui.h:87
+msgid "Customize minimum and maximum opacity values"
+msgstr "不透明度の最小値と最大値の設定"
+
+#: Settings.ui.h:88
+msgid "Minimum opacity"
+msgstr "最小不透明度"
+
+#: Settings.ui.h:89
+msgid "Maximum opacity"
+msgstr "最大不透明度"
+
+#: Settings.ui.h:90
+msgid "Number overlay"
+msgstr "番号の表示"
+
+#: Settings.ui.h:91
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"ショートカットキーが押されたときに、アイコン上にアプリケーション番号を一時的"
+"に表示します。"
+
+#: Settings.ui.h:92
+msgid "Show the dock if it is hidden"
+msgstr "ドックが非表示なら一時的に表示"
+
+#: Settings.ui.h:93
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"ドックが表示されていない状態のとき、ショーカットキーで一時的にドックを表示し"
+"ます。"
+
+#: Settings.ui.h:94
+msgid "Shortcut for the options above"
+msgstr "上記設定のためのショートカットキー"
+
+#: Settings.ui.h:95
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "表記法: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:96
+msgid "Hide timeout (s)"
+msgstr "非表示までのタイムアウト (秒)"
+
+#: Settings.ui.h:97
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr ""
+"ドックを表示したいとき、ポインターを画面端に移動するとドックが表示されます。"
+
+#: Settings.ui.h:98
+msgid "Autohide"
+msgstr "オンデマンド表示"
+
+#: Settings.ui.h:99
+msgid "Push to show: require pressure to show the dock"
+msgstr ""
+"押し込んで表示 (画面外にポインターを移動するようにマウスを動かして表示)"
+
+#: Settings.ui.h:100
+msgid "Enable in fullscreen mode"
+msgstr "フルスクリーンモード時でも表示"
+
+#: Settings.ui.h:101
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr ""
+"ドックを常に表示しますが、アプリケーションウィンドウと重なるときは表示しませ"
+"ん。"
+
+#: Settings.ui.h:102
+msgid "Dodge windows"
+msgstr "ウィンドウ重なり防止"
+
+#: Settings.ui.h:103
+msgid "All windows"
+msgstr "すべてのウィンドウが対象"
+
+#: Settings.ui.h:104
+msgid "Only focused application's windows"
+msgstr "フォーカスされたアプリケーションのウィンドウが対象"
+
+#: Settings.ui.h:105
+msgid "Only maximized windows"
+msgstr "最大化されたウィンドウが対象"
+
+#: Settings.ui.h:106
+msgid "Animation duration (s)"
+msgstr "アニメーション表示時間 (秒)"
+
+#: Settings.ui.h:107
+msgid "Show timeout (s)"
+msgstr "表示までのタイムアウト (秒)"
+
+#: Settings.ui.h:108
+msgid "Pressure threshold"
+msgstr "押し込み量 (ピクセル)"
+
#~ msgid "Application"
#~ msgstr "アプリケーション"
@@ -360,12 +964,6 @@ msgstr "ワークスペースを追加"
#~ msgid "Normal"
#~ msgstr "標準"
-#~ msgid "Left"
-#~ msgstr "左回り"
-
-#~ msgid "Right"
-#~ msgstr "右回り"
-
#~ msgid "Upside-down"
#~ msgstr "逆さま"
@@ -414,12 +1012,6 @@ msgstr "ワークスペースを追加"
#~ msgid "Drag here to add favorites"
#~ msgstr "ドラッグでお気に入りに追加"
-#~ msgid "New Window"
-#~ msgstr "新しいウィンドウで開く"
-
-#~ msgid "Remove from Favorites"
-#~ msgstr "お気に入りから削除"
-
#~ msgid "Icon size"
#~ msgstr "アイコンのサイズ"
diff --git a/po/nb.po b/po/nb.po
index 66114ec1..bc0f0833 100644
--- a/po/nb.po
+++ b/po/nb.po
@@ -1,12 +1,22 @@
+# #-#-#-#-# nb.po (gnome-shell-extensions 3.26.x) #-#-#-#-#
# Norwegian bokmål translation of gnome-shell-extensions.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# Kjartan Maraas <kmaraas@gnome.org>, 2011-2017.
#
+# #-#-#-#-# nb.po (Dash-to-Dock) #-#-#-#-#
+# Norwegian Bokmål translation for Dash to Dock.
+# Copyright (C) 2018 Michele
+# This file is distributed under the same license as the dash-to-dock package.
+# Harald H. <harald@fsfe.org>, 2018.
+#
+#, fuzzy
msgid ""
msgstr ""
+"#-#-#-#-# nb.po (gnome-shell-extensions 3.26.x) #-#-#-#-#\n"
"Project-Id-Version: gnome-shell-extensions 3.26.x\n"
-"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=extensions\n"
+"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
+"shell&keywords=I18N+L10N&component=extensions\n"
"POT-Creation-Date: 2017-10-04 18:03+0000\n"
"PO-Revision-Date: 2017-11-06 13:40+0100\n"
"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
@@ -16,6 +26,19 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.5.4\n"
+"#-#-#-#-# nb.po (Dash-to-Dock) #-#-#-#-#\n"
+"Project-Id-Version: Dash-to-Dock\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2018-02-28 09:47+0100\n"
+"PO-Revision-Date: 2018-03-02 11:02+0100\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 1.8.7.1\n"
+"Last-Translator: Harald H. <harald@fsfe.org>\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Language: nb\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -257,7 +280,7 @@ msgstr "Lukk"
msgid "Unminimize"
msgstr "Gjenopprett"
-#: extensions/window-list/extension.js:130
+#: extensions/window-list/extension.js:130 Settings.ui.h:48
msgid "Minimize"
msgstr "Minimer"
@@ -354,3 +377,485 @@ msgstr "Navn"
#, javascript-format
msgid "Workspace %d"
msgstr "Arbeidsområde %d"
+
+#: prefs.js:131
+msgid "Primary monitor"
+msgstr "Primærskjerm"
+
+#: prefs.js:140 prefs.js:147
+msgid "Secondary monitor "
+msgstr "Sekundærskjerm"
+
+#: prefs.js:172 Settings.ui.h:26
+msgid "Right"
+msgstr "Høyre"
+
+#: prefs.js:173 Settings.ui.h:23
+msgid "Left"
+msgstr "Venstre"
+
+#: prefs.js:223
+msgid "Intelligent autohide customization"
+msgstr "Tilpass intelligent autoskjul"
+
+#: prefs.js:230 prefs.js:415 prefs.js:472
+msgid "Reset to defaults"
+msgstr "Tilbakestill til standard"
+
+#: prefs.js:408
+msgid "Show dock and application numbers"
+msgstr "Vis dokk og programnumre"
+
+#: prefs.js:465
+msgid "Customize middle-click behavior"
+msgstr "Tilpass oppførsel for mellomklikk"
+
+#: prefs.js:548
+msgid "Customize running indicators"
+msgstr "Tilpass kjørende indikatorer"
+
+#: prefs.js:662 Settings.ui.h:70
+msgid "Customize opacity"
+msgstr "Tilpass gjennomsiktighet"
+
+#: appIcons.js:763
+msgid "All Windows"
+msgstr "Alle vinduer"
+
+#. Translators: %s is "Settings", which is automatically translated. You
+#. can also translate the full message if this fits better your language.
+#: appIcons.js:1069
+#, javascript-format
+msgid "Dash to Dock %s"
+msgstr "Dash to Dock %s"
+
+#: Settings.ui.h:1
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Når satt til minimer vil dobbeltklikking minimere alle åpne instanser av "
+"programmet."
+
+#: Settings.ui.h:2
+msgid "Shift+Click action"
+msgstr "Handling for Shift + klikk"
+
+#: Settings.ui.h:3
+msgid "Raise window"
+msgstr "Fremhev vindu"
+
+#: Settings.ui.h:4
+msgid "Minimize window"
+msgstr "Minimer vindu"
+
+#: Settings.ui.h:5
+msgid "Launch new instance"
+msgstr "Åpne ny instans"
+
+#: Settings.ui.h:6
+msgid "Cycle through windows"
+msgstr "Veksle mellom vinduer"
+
+#: Settings.ui.h:7
+msgid "Minimize or overview"
+msgstr "Minimer eller oversikt"
+
+#: Settings.ui.h:8
+msgid "Show window previews"
+msgstr "Vis forhåndsvisning"
+
+#: Settings.ui.h:9
+msgid "Quit"
+msgstr "Avslutt"
+
+#: Settings.ui.h:10
+msgid "Behavior for Middle-Click."
+msgstr "Oppførsel for mellomklikk."
+
+#: Settings.ui.h:11
+msgid "Middle-Click action"
+msgstr "Mellomklikk"
+
+#: Settings.ui.h:12
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Oppførsel for Shift + mellomklikk."
+
+#: Settings.ui.h:13
+msgid "Shift+Middle-Click action"
+msgstr "Shift + mellomklikk"
+
+#: Settings.ui.h:14
+msgid "Enable Unity7 like glossy backlit items"
+msgstr "Aktiver Unity7-lignende bakgrunnsglans"
+
+#: Settings.ui.h:15
+msgid "Use dominant color"
+msgstr "Bruk dominerende farge"
+
+#: Settings.ui.h:16
+msgid "Customize indicator style"
+msgstr "Tilpass indikatorstil"
+
+#: Settings.ui.h:17
+msgid "Color"
+msgstr "Farge"
+
+#: Settings.ui.h:18
+msgid "Border color"
+msgstr "Kantfarge"
+
+#: Settings.ui.h:19
+msgid "Border width"
+msgstr "Kantbredde"
+
+#: Settings.ui.h:20
+msgid "Show the dock on"
+msgstr "Vis dokken på"
+
+#: Settings.ui.h:21
+msgid "Show on all monitors."
+msgstr "Vis på alle skjermer."
+
+#: Settings.ui.h:22
+msgid "Position on screen"
+msgstr "Skjermposisjon"
+
+#: Settings.ui.h:24
+msgid "Bottom"
+msgstr "Bunn"
+
+#: Settings.ui.h:25
+msgid "Top"
+msgstr "Topp"
+
+#: Settings.ui.h:27
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"Skjul dokken når den forstyrrer et aktivt programvindu. Flere innstillinger "
+"er tilgjengelig."
+
+#: Settings.ui.h:28
+msgid "Intelligent autohide"
+msgstr "Intelligent autoskjul"
+
+#: Settings.ui.h:29
+msgid "Dock size limit"
+msgstr "Maks dokkstørrelse"
+
+#: Settings.ui.h:30
+msgid "Panel mode: extend to the screen edge"
+msgstr "Panelmodus: strekker seg til skjermkanten"
+
+#: Settings.ui.h:31
+msgid "Icon size limit"
+msgstr "Ikonstørrelse"
+
+#: Settings.ui.h:32
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Fast ikonstørrelse: rull for vise andre ikoner"
+
+#: Settings.ui.h:33
+msgid "Position and size"
+msgstr "Posisjon og størrelse"
+
+#: Settings.ui.h:34
+msgid "Show favorite applications"
+msgstr "Vis favorittprogrammer"
+
+#: Settings.ui.h:35
+msgid "Show running applications"
+msgstr "Vis kjørende programmer"
+
+#: Settings.ui.h:36
+msgid "Isolate workspaces."
+msgstr "Isoler arbeidsområder."
+
+#: Settings.ui.h:37
+msgid "Isolate monitors."
+msgstr "Isoler skjermer."
+
+#: Settings.ui.h:38
+msgid "Show open windows previews."
+msgstr "Vis forhåndsvisning av åpne vinduer."
+
+#: Settings.ui.h:39
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Om deaktivert er disse innstillingene tilgjengelig i gnome-tweak-tool eller "
+"på nettsiden for utvidelser."
+
+#: Settings.ui.h:40
+msgid "Show <i>Applications</i> icon"
+msgstr "Vis <i>programmer</i> ikon"
+
+#: Settings.ui.h:41
+msgid "Move the applications button at the beginning of the dock."
+msgstr "Flytt programmer-knappen til starten av dokken."
+
+#: Settings.ui.h:42
+msgid "Animate <i>Show Applications</i>."
+msgstr "Animere <i>Vis programmer</i>."
+
+#: Settings.ui.h:43
+msgid "Launchers"
+msgstr "Utløsere"
+
+#: Settings.ui.h:44
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Bruk Super+(0-9) som snarvei for å aktivere apper. Den kan også brukes i "
+"kombinasjon med Shift og Ctrl."
+
+#: Settings.ui.h:45
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "Bruk tastatursnarveier for å åpne apper"
+
+#: Settings.ui.h:46
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Oppførsel når du klikker på ikonet for et åpent program."
+
+#: Settings.ui.h:47
+msgid "Click action"
+msgstr "Klikkhandling"
+
+#: Settings.ui.h:49
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Oppførsel ved rulling over et programikon."
+
+#: Settings.ui.h:50
+msgid "Scroll action"
+msgstr "Rullehandling"
+
+#: Settings.ui.h:51
+msgid "Do nothing"
+msgstr "Ikke gjør noe"
+
+#: Settings.ui.h:52
+msgid "Switch workspace"
+msgstr "Bytt arbeidsområde"
+
+#: Settings.ui.h:53
+msgid "Behavior"
+msgstr "Oppførsel"
+
+#: Settings.ui.h:54
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Enkelte tilpasninger som forsøker å integrere dokken med det standard GNOME-"
+"temaet. Alternativt kan bestemte valg aktiveres nedenfor."
+
+#: Settings.ui.h:55
+msgid "Use built-in theme"
+msgstr "Bruk innebygget tema"
+
+#: Settings.ui.h:56
+msgid "Save space reducing padding and border radius."
+msgstr "Spar plass ved å redusere utfylling og kant-radius."
+
+#: Settings.ui.h:57
+msgid "Shrink the dash"
+msgstr "Krymp dash"
+
+#: Settings.ui.h:58
+msgid "Customize windows counter indicators"
+msgstr "Tilpass vinduenes nummer-indikatorer"
+
+#: Settings.ui.h:59
+msgid "Default"
+msgstr "Standard"
+
+#: Settings.ui.h:60
+msgid "Dots"
+msgstr "Prikker"
+
+#: Settings.ui.h:61
+msgid "Squares"
+msgstr "Firkanter"
+
+#: Settings.ui.h:62
+msgid "Dashes"
+msgstr "Streker"
+
+#: Settings.ui.h:63
+msgid "Segmented"
+msgstr "Segmentert"
+
+#: Settings.ui.h:64
+msgid "Solid"
+msgstr "Solid"
+
+#: Settings.ui.h:65
+msgid "Ciliora"
+msgstr "Ciliora"
+
+#: Settings.ui.h:66
+msgid "Metro"
+msgstr "Metro"
+
+#: Settings.ui.h:67
+msgid "Set the background color for the dash."
+msgstr "Avgjør bakgrunnsfargen."
+
+#: Settings.ui.h:68
+msgid "Customize the dash color"
+msgstr "Tilpass fargen"
+
+#: Settings.ui.h:69
+msgid "Tune the dash background opacity."
+msgstr "Justere bakgrunnens gjennomsiktighet."
+
+#: Settings.ui.h:71
+msgid "Fixed"
+msgstr "Fast"
+
+#: Settings.ui.h:72
+msgid "Adaptive"
+msgstr "Adaptiv"
+
+#: Settings.ui.h:73
+msgid "Dynamic"
+msgstr "Dynamisk"
+
+#: Settings.ui.h:74
+msgid "Opacity"
+msgstr "Gjennomsiktighet"
+
+#: Settings.ui.h:75
+msgid "Force straight corner\n"
+msgstr "Tving rette hjørner\n"
+
+#: Settings.ui.h:77
+msgid "Appearance"
+msgstr "Utseende"
+
+#: Settings.ui.h:78
+msgid "version: "
+msgstr "versjon: "
+
+#: Settings.ui.h:79
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Flytter dash ut av oversikten og omformer den til en dokk"
+
+#: Settings.ui.h:80
+msgid "Created by"
+msgstr "Laget av"
+
+#: Settings.ui.h:81
+msgid "Webpage"
+msgstr "Nettside"
+
+#: Settings.ui.h:82
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">Dette programmet leveres med ABSOLUTT INGEN GARANTI.\n"
+"Se <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html\">GNU "
+"General Public License, versjon 2 eller senere</a> for detaljer.</span>"
+
+#: Settings.ui.h:84
+msgid "About"
+msgstr "Om"
+
+#: Settings.ui.h:85
+msgid "Customize minimum and maximum opacity values"
+msgstr "Tilpass verdier for minimum og maks gjennomsiktighet"
+
+#: Settings.ui.h:86
+msgid "Minimum opacity"
+msgstr "Minimum gjennomsiktighet"
+
+#: Settings.ui.h:87
+msgid "Maximum opacity"
+msgstr "Maksimum gjennomsiktighet"
+
+#: Settings.ui.h:88
+msgid "Number overlay"
+msgstr "Nummerert overlag"
+
+#: Settings.ui.h:89
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr "Midlertidig vis programnummer over ikoner, som svarer til snarveien."
+
+#: Settings.ui.h:90
+msgid "Show the dock if it is hidden"
+msgstr "Vis dokken om den er skjult"
+
+#: Settings.ui.h:91
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Om autoskjul er i bruk vil dokken vises en kort stund når snarveien utløses."
+
+#: Settings.ui.h:92
+msgid "Shortcut for the options above"
+msgstr "Snarvei for valgene ovenfor"
+
+#: Settings.ui.h:93
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Syntaks: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:94
+msgid "Hide timeout (s)"
+msgstr "Skjuleperiode (s)"
+
+#: Settings.ui.h:95
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Vis dokken når musepekeren holdes langs skjermkanten."
+
+#: Settings.ui.h:96
+msgid "Autohide"
+msgstr "Autoskjul"
+
+#: Settings.ui.h:97
+msgid "Push to show: require pressure to show the dock"
+msgstr "Dytt for å vise: krev et økt trykk for å vise dokken"
+
+#: Settings.ui.h:98
+msgid "Enable in fullscreen mode"
+msgstr "Aktiver i fullskjermmodus"
+
+#: Settings.ui.h:99
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Vis dokken når den ikke forstyrrer programvinduer."
+
+#: Settings.ui.h:100
+msgid "Dodge windows"
+msgstr "Smett unna vinduer"
+
+#: Settings.ui.h:101
+msgid "All windows"
+msgstr "Alle vinduer"
+
+#: Settings.ui.h:102
+msgid "Only focused application's windows"
+msgstr "Kun fokuserte programvinduer"
+
+#: Settings.ui.h:103
+msgid "Only maximized windows"
+msgstr "Kun maksimerte programvinduer"
+
+#: Settings.ui.h:104
+msgid "Animation duration (s)"
+msgstr "Animasjonsvarighet (s)"
+
+#: Settings.ui.h:105
+msgid "Show timeout (s)"
+msgstr "Visningslengde (s)"
+
+#: Settings.ui.h:106
+msgid "Pressure threshold"
+msgstr "Trykkterskel"
diff --git a/po/nl.po b/po/nl.po
index 51589f9d..6a1ee07c 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -1,11 +1,23 @@
+# #-#-#-#-# nl.po (gnome-shell-extensions master) #-#-#-#-#
# Dutch 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.
# Reinout van Schouwen <reinouts@gnome.org>, 2013, 2014.
# Nathan Follens <nthn@unseen.is>, 2015-2017, 2019-2020.
# Hannie Dumoleyn <hannie@ubuntu-nl.org>, 2015.
+# #-#-#-#-# nl.po (Dash to Dock) #-#-#-#-#
+# Translation for de
+# Copyright (C) 2014 Michele
+# This file is distributed under the same license as the dash-to-dock package.
+#
+# Morris Jobke <hey@morrisjobke.de>, 2014.
+# Jonatan Zeidler <jonatan_zeidler@hotmail.de>, 2012.
+# jonius <jonatan_zeidler@gmx.de>, 2012.
+# Heimen Stoffels <vistausss@outlook.com>, 2015, 2019.
+#, fuzzy
msgid ""
msgstr ""
+"#-#-#-#-# nl.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"
@@ -20,6 +32,19 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 2.4.1\n"
"X-Project-Style: gnome\n"
+"#-#-#-#-# nl.po (Dash to Dock) #-#-#-#-#\n"
+"Project-Id-Version: Dash to Dock\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2019-10-10 20:27+0200\n"
+"PO-Revision-Date: 2019-10-10 20:46+0200\n"
+"Last-Translator: Heimen Stoffels <vistausss@outlook.com>\n"
+"Language-Team: Dutch <kde-i18n-doc@kde.org>\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 19.11.70\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"
@@ -154,7 +179,7 @@ msgstr "Sluiten"
msgid "Unminimize"
msgstr "Zichtbaar maken"
-#: extensions/window-list/extension.js:118
+#: extensions/window-list/extension.js:118 Settings.ui.h:52
msgid "Minimize"
msgstr "Minimaliseren"
@@ -264,6 +289,510 @@ msgstr "Werkblad %d"
msgid "Add Workspace"
msgstr "Werkblad toevoegen"
+#: prefs.js:264
+msgid "Primary monitor"
+msgstr "Primair beeldscherm"
+
+#: prefs.js:273 prefs.js:280
+msgid "Secondary monitor "
+msgstr "Secundair beeldscherm"
+
+#: prefs.js:305 Settings.ui.h:28
+msgid "Right"
+msgstr "Rechts"
+
+#: prefs.js:306 Settings.ui.h:25
+msgid "Left"
+msgstr "Links"
+
+#: prefs.js:356
+msgid "Intelligent autohide customization"
+msgstr "Voorkeuren voor slim verbergen"
+
+#: prefs.js:363 prefs.js:556 prefs.js:612
+msgid "Reset to defaults"
+msgstr "Standaardwaarden"
+
+#: prefs.js:549
+msgid "Show dock and application numbers"
+msgstr "Dock en programmanummers tonen"
+
+#: prefs.js:605
+msgid "Customize middle-click behavior"
+msgstr "Middelste muisknop-gedrag aanpassen"
+
+#: prefs.js:688
+msgid "Customize running indicators"
+msgstr "Indicatoren van draaiende programma's aanpassen"
+
+#: prefs.js:800 Settings.ui.h:74
+msgid "Customize opacity"
+msgstr "Doorzichtigheid aanpassen"
+
+#: appIcons.js:809
+msgid "All Windows"
+msgstr "Alle vensters"
+
+#. Translators: %s is "Settings", which is automatically translated. You
+#. can also translate the full message if this fits better your language.
+#: appIcons.js:1126
+#, javascript-format
+msgid "Dash to Dock %s"
+msgstr "Dash to Dock %s"
+
+#: Settings.ui.h:1
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Als je gekozen hebt voor minimaliseren, dan zorgt dubbelklikken ervoor dat "
+"alle vensters van het huidige programma worden geminimaliseerd."
+
+#: Settings.ui.h:2
+msgid "Shift+Click action"
+msgstr "Shift+klikken-actie"
+
+#: Settings.ui.h:3
+msgid "Raise window"
+msgstr "Venster naar voren halen"
+
+#: Settings.ui.h:4
+msgid "Minimize window"
+msgstr "Venster minimalisren"
+
+#: Settings.ui.h:5
+msgid "Launch new instance"
+msgstr "Nieuw proces openen"
+
+#: Settings.ui.h:6
+msgid "Cycle through windows"
+msgstr "Schakelen tussen vensters"
+
+#: Settings.ui.h:7
+msgid "Minimize or overview"
+msgstr "Minimaliseren of activiteitenoverzicht"
+
+#: Settings.ui.h:8
+msgid "Show window previews"
+msgstr "Venstervoorbeelden tonen"
+
+#: Settings.ui.h:9
+msgid "Minimize or show previews"
+msgstr "Minimaliseren of voorbeelden tonen"
+
+#: Settings.ui.h:10
+msgid "Focus or show previews"
+msgstr "Focussen of voorbeelden tonen"
+
+#: Settings.ui.h:11
+msgid "Quit"
+msgstr "Afsluiten"
+
+#: Settings.ui.h:12
+msgid "Behavior for Middle-Click."
+msgstr "Wat er gebeurt bij middelklikken."
+
+#: Settings.ui.h:13
+msgid "Middle-Click action"
+msgstr "Middelklikactie"
+
+#: Settings.ui.h:14
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Wat er gebeurt bij Shift+middelklikken."
+
+#: Settings.ui.h:15
+msgid "Shift+Middle-Click action"
+msgstr "Shift+middelklik-actie"
+
+#: Settings.ui.h:16
+msgid "Enable Unity7 like glossy backlit items"
+msgstr "Unity7-achtige itemachtergrond gebruiken"
+
+#: Settings.ui.h:17
+msgid "Use dominant color"
+msgstr "Dominante kleur gebruiken"
+
+#: Settings.ui.h:18
+msgid "Customize indicator style"
+msgstr "Indicatorstijl aanpassen"
+
+#: Settings.ui.h:19
+msgid "Color"
+msgstr "Kleur"
+
+#: Settings.ui.h:20
+msgid "Border color"
+msgstr "Randkleur"
+
+#: Settings.ui.h:21
+msgid "Border width"
+msgstr "Randbreedte"
+
+#: Settings.ui.h:22
+msgid "Show the dock on"
+msgstr "Dock tonen op"
+
+#: Settings.ui.h:23
+msgid "Show on all monitors."
+msgstr "Tonen op alle beeldschermen."
+
+#: Settings.ui.h:24
+msgid "Position on screen"
+msgstr "Positie op het scherm"
+
+#: Settings.ui.h:26
+msgid "Bottom"
+msgstr "Onderaan"
+
+#: Settings.ui.h:27
+msgid "Top"
+msgstr "Bovenaan"
+
+#: Settings.ui.h:29
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"Verberg het dock als het een venster van het huidige programma in de weg "
+"zit. Er zijn uitgebreide instellingen hiervoor beschikbaar."
+
+#: Settings.ui.h:30
+msgid "Intelligent autohide"
+msgstr "Slim verbergen"
+
+#: Settings.ui.h:31
+msgid "Dock size limit"
+msgstr "Maximale dockgrootte"
+
+#: Settings.ui.h:32
+msgid "Panel mode: extend to the screen edge"
+msgstr "Paneelmodus: uitrekken tot aan de schermrand"
+
+#: Settings.ui.h:33
+msgid "Icon size limit"
+msgstr "Maximale pictogramgrootte"
+
+#: Settings.ui.h:34
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr ""
+"Vastgezette pictogramgrootte: scroll om meer pictogrammen weer te geven"
+
+#: Settings.ui.h:35
+msgid "Position and size"
+msgstr "Positie en grootte"
+
+#: Settings.ui.h:36
+msgid "Show favorite applications"
+msgstr "Favoriete programma's tonen"
+
+#: Settings.ui.h:37
+msgid "Show running applications"
+msgstr "Geopende programma's tonen"
+
+#: Settings.ui.h:38
+msgid "Isolate workspaces."
+msgstr "Werkbladen isoleren."
+
+#: Settings.ui.h:39
+msgid "Isolate monitors."
+msgstr "Beeldschermen isoleren."
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "Voorbeelden van geopende vensters tonen."
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Als je dit uitschakelt, dan zijn deze instellingen toegankelijk via gnome-"
+"tweaks of de extensiesite."
+
+#: Settings.ui.h:42
+msgid "Show <i>Applications</i> icon"
+msgstr "Pictogram voor <i>Alle programma's</i> tonen"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr "Verplaatst de 'Alle programma's'-knop naar het begin van het dock."
+
+#: Settings.ui.h:44
+msgid "Animate <i>Show Applications</i>."
+msgstr "Animatie na klikken op <i>Alle programma's tonen</i>."
+
+#: Settings.ui.h:45
+msgid "Show trash can"
+msgstr "Prullenbak tonen"
+
+#: Settings.ui.h:46
+msgid "Show mounted volumes and devices"
+msgstr "Aangekoppelde schijven en apparaten tonen"
+
+#: Settings.ui.h:47
+msgid "Launchers"
+msgstr "Starters"
+
+#: Settings.ui.h:48
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Gebruik Super+(0-9) om programma's te openen en focussen. Kan ook worden "
+"gebruikt met Shift en Ctrl."
+
+#: Settings.ui.h:49
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "Sneltoetsen gebruiken om programma's te openen/focussen"
+
+#: Settings.ui.h:50
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr ""
+"Wat er gebeurt bij het klikken op het pictogram van een geopend programma."
+
+#: Settings.ui.h:51
+msgid "Click action"
+msgstr "Klikactie"
+
+#: Settings.ui.h:53
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr ""
+"Wat er gebeurt bij het scrollen op het pictogram van een geopend programma."
+
+#: Settings.ui.h:54
+msgid "Scroll action"
+msgstr "Scrollactie"
+
+#: Settings.ui.h:55
+msgid "Do nothing"
+msgstr "Niets doen"
+
+#: Settings.ui.h:56
+msgid "Switch workspace"
+msgstr "Van werkblad wisselen"
+
+#: Settings.ui.h:57
+msgid "Behavior"
+msgstr "Gedrag"
+
+#: Settings.ui.h:58
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Enkele aanpassingen, bedoeld om het dock te integreren met het standaard "
+"GNOME-thema. In plaats daarvan kun je hieronder specifieke opties "
+"inschakelen."
+
+#: Settings.ui.h:59
+msgid "Use built-in theme"
+msgstr "Ingebouwd thema gebruiken"
+
+#: Settings.ui.h:60
+msgid "Save space reducing padding and border radius."
+msgstr "Bespaar ruimte door de straal van de dikte en rand te verkleinen."
+
+#: Settings.ui.h:61
+msgid "Shrink the dash"
+msgstr "Snelstarter verkleinen"
+
+#: Settings.ui.h:62
+msgid "Customize windows counter indicators"
+msgstr "Vensterindicatoren aanpassen"
+
+#: Settings.ui.h:63
+msgid "Default"
+msgstr "Standaard"
+
+#: Settings.ui.h:64
+msgid "Dots"
+msgstr "Stipjes"
+
+#: Settings.ui.h:65
+msgid "Squares"
+msgstr "Vierkantjes"
+
+#: Settings.ui.h:66
+msgid "Dashes"
+msgstr "Streepjes"
+
+#: Settings.ui.h:67
+msgid "Segmented"
+msgstr "Gesegmenteerd"
+
+#: Settings.ui.h:68
+msgid "Solid"
+msgstr "Vast"
+
+#: Settings.ui.h:69
+msgid "Ciliora"
+msgstr "Ciliora"
+
+#: Settings.ui.h:70
+msgid "Metro"
+msgstr "Metro"
+
+#: Settings.ui.h:71
+msgid "Set the background color for the dash."
+msgstr "Stel de achtergrondkleur in van de snelstarter."
+
+#: Settings.ui.h:72
+msgid "Customize the dash color"
+msgstr "Snelstarterkleur aanpassen"
+
+#: Settings.ui.h:73
+msgid "Tune the dash background opacity."
+msgstr "Pas de doorzichtigheid van de snelstarterachtergrond aan."
+
+#: Settings.ui.h:75
+msgid "Fixed"
+msgstr "Vooringesteld"
+
+#: Settings.ui.h:76
+msgid "Dynamic"
+msgstr "Dynamisch"
+
+#: Settings.ui.h:77
+msgid "Opacity"
+msgstr "Doorzichtigheid"
+
+#: Settings.ui.h:78
+msgid "Force straight corner\n"
+msgstr "Rechte hoek afdwingen\n"
+
+#: Settings.ui.h:80
+msgid "Appearance"
+msgstr "Uiterlijk"
+
+#: Settings.ui.h:81
+msgid "version: "
+msgstr "versie: "
+
+#: Settings.ui.h:82
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr ""
+"Toont de snelstarter buiten het activiteitenoverzicht zodat het een dock "
+"wordt"
+
+#: Settings.ui.h:83
+msgid "Created by"
+msgstr "Gemaakt door"
+
+#: Settings.ui.h:84
+msgid "Webpage"
+msgstr "Website"
+
+#: Settings.ui.h:85
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">Dit programma wordt geleverd ZONDER ENIGE GARANTIE.\n"
+"Lees de <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">GNU General Public License, versie 2 of nieuwer</a>, voor meer informatie."
+"</span>"
+
+#: Settings.ui.h:87
+msgid "About"
+msgstr "Over"
+
+#: Settings.ui.h:88
+msgid "Customize minimum and maximum opacity values"
+msgstr "Minimum- en maximumwaarden van doorzichtigheid aanpassen"
+
+#: Settings.ui.h:89
+msgid "Minimum opacity"
+msgstr "Minimale doorzichtigheid"
+
+#: Settings.ui.h:90
+msgid "Maximum opacity"
+msgstr "Maximale doorzichtigheid"
+
+#: Settings.ui.h:91
+msgid "Number overlay"
+msgstr "Nummers tonen"
+
+#: Settings.ui.h:92
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"Toon tijdelijk de programmanummers, behorende bij de sneltoets, op de "
+"pictogrammen."
+
+#: Settings.ui.h:93
+msgid "Show the dock if it is hidden"
+msgstr "Dock tonen indien verborgen"
+
+#: Settings.ui.h:94
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Als je automatisch verbergen gebruikt, dan wordt het dock, middels de "
+"sneltoets, korte tijd getoond."
+
+#: Settings.ui.h:95
+msgid "Shortcut for the options above"
+msgstr "Sneltoets voor bovenstaande opties"
+
+#: Settings.ui.h:96
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:97
+msgid "Hide timeout (s)"
+msgstr "Verberginterval (s)"
+
+#: Settings.ui.h:98
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Dock tonen door de muiscursor op de schermrand te plaatsen."
+
+#: Settings.ui.h:99
+msgid "Autohide"
+msgstr "Automatisch verbergen"
+
+#: Settings.ui.h:100
+msgid "Push to show: require pressure to show the dock"
+msgstr "Tonen middels druk: druk toepassen om het dock te tonen"
+
+#: Settings.ui.h:101
+msgid "Enable in fullscreen mode"
+msgstr "Inschakelen in beeldvullende modus"
+
+#: Settings.ui.h:102
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Toon het dock als het geen programmavensters in de weg zit."
+
+#: Settings.ui.h:103
+msgid "Dodge windows"
+msgstr "Vensters ontwijken"
+
+#: Settings.ui.h:104
+msgid "All windows"
+msgstr "Alle vensters"
+
+#: Settings.ui.h:105
+msgid "Only focused application's windows"
+msgstr "Alleen gefocuste programmavensters"
+
+#: Settings.ui.h:106
+msgid "Only maximized windows"
+msgstr "Alleen gemaximaliseerde vensters"
+
+#: Settings.ui.h:107
+msgid "Animation duration (s)"
+msgstr "Animatieduur (s)"
+
+#: Settings.ui.h:108
+msgid "Show timeout (s)"
+msgstr "Weergave-interval (s)"
+
+#: Settings.ui.h:109
+msgid "Pressure threshold"
+msgstr "Drukwaarde"
+
#~ msgid "Application"
#~ msgstr "Toepassing"
@@ -357,3 +886,135 @@ msgstr "Werkblad toevoegen"
#~ msgid "Memory"
#~ msgstr "Geheugen"
+
+#~ msgid "Show a dot for each windows of the application."
+#~ msgstr "Toon een stip voor elk geopend venster."
+
+#~ msgid "0.000"
+#~ msgstr "0.000"
+
+#, fuzzy
+#~ msgid ""
+#~ "With fixed icon size, only the edge of the dock and the <i>Show "
+#~ "Applications</i> icon are active."
+#~ msgstr ""
+#~ "Het gebied nabij de schermrand en de <i>Applicaties weergeven</i>-knop "
+#~ "zijn actief."
+
+#~ msgid "Switch workspace by scrolling on the dock"
+#~ msgstr "Van werkblad wisselen door te scrollen op het dock"
+
+#~ msgid "Only consider windows of the focused application"
+#~ msgstr "Alleen vensters van de huidige gefocuste applicatie overwegen"
+
+#~ msgid "Main Settings"
+#~ msgstr "Grundeinstellungen"
+
+#~ msgid "Dock Position"
+#~ msgstr "Dock-Position"
+
+#~ msgid "Dock is fixed and always visible"
+#~ msgstr "Das Dock hat eine feste Position und ist immer sichtbar"
+
+#~ msgid "Show delay [ms]"
+#~ msgstr "Einblendeverzögerung [ms]"
+
+#~ msgid "Hide delay [ms]"
+#~ msgstr "Ausblendeverzögerung [ms]"
+
+#~ msgid "Application based intellihide"
+#~ msgstr "Anwendungsbasiertes intelligentes Verstecken"
+
+#~ msgid "Show the dock on following monitor (if attached)"
+#~ msgstr "Zeige Dock auf folgendem Monitor (falls angeschlossen)"
+
+#~ 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"
+
+#~ msgid "Expand (experimental and buggy)"
+#~ msgstr "Komplette Höhe (experimentell und fehlerbehaftet)"
+
+#~ msgid "Maximum icon size"
+#~ msgstr "Maximale Symbolgröße"
+
+#~ msgid "16"
+#~ msgstr "16"
+
+#~ msgid "24"
+#~ msgstr "24"
+
+#~ msgid "32"
+#~ msgstr "32"
+
+#~ msgid "48"
+#~ msgstr "48"
+
+#~ msgid "64"
+#~ msgstr "64"
+
+#~ msgid "Optional features"
+#~ msgstr "Optionale Funktionen"
+
+#~ msgid "Deadtime between each workspace switching [ms]"
+#~ msgstr "Stillstandszeit zwischen Arbeitsflächenwechsel [ms]"
+
+#~ msgid "Only a 1px wide area close to the screen edge is active"
+#~ msgstr "Nur einen 1 Pixel-breiten Bereich am Rand nutzen"
+
+#~ msgid "All the area of the dock is active"
+#~ msgstr "Den gesamten Bereich des Docks nutzen"
+
+#~ msgid "Customize actions on mouse click"
+#~ msgstr "Aktion bei Mausklick anpassen"
+
+#~ msgid "Action on clicking on running app"
+#~ msgstr "Aktion beim Klicken auf eine laufende Anwendung"
+
+#~ msgid "Minimize window on shift+click (double click for all app windows)"
+#~ msgstr ""
+#~ "Fenster mit Shift+Klick minimieren (Doppelklick für alle Fenster der "
+#~ "Anwendung)"
+
+#~ msgid "Appearence and Themes"
+#~ msgstr "Erscheinungsbild und Themen"
+
+#~ msgid ""
+#~ "A customized theme is built in the extension. This is meant to work with "
+#~ "the default Adwaita theme: the dash is shrunk to save space, its "
+#~ "background transparency reduced, and custom indicators for the number of "
+#~ "windows of each application are added."
+#~ msgstr ""
+#~ "Ein angepasstes Thema ist in dieser Erweiterung enthalten. Es ist für das "
+#~ "Vorgabe-Adwaita-Thema gedacht: Das Dash ist schmaler, um Platz zu sparen, "
+#~ "die Hintergrundtransparenz ist reduziert und für jede Anwendung wird ein "
+#~ "Indikator für die Anzahl der Fenster eingefügt."
+
+#~ msgid ""
+#~ "Alternatively, for a better integration with custom themes, each "
+#~ "customization can be applied indipendently"
+#~ msgstr ""
+#~ "Alternativ können für eine bessere Integration Anpassungen vorgenommen "
+#~ "werden"
+
+#~ msgid "Shrink the dash size by reducing padding"
+#~ msgstr "Das Dash schmaler machen durch Verkleinern des Abstands zum Rand"
+
+#~ msgid "Apply custom theme (work only with the default Adwaita theme)"
+#~ msgstr ""
+#~ "Benutzerdefiniertes Theme verwenden (funktioniert nur mit dem Standard-"
+#~ "Adwaita-Theme)"
diff --git a/po/pl.po b/po/pl.po
index bcfe2d6a..a97366b6 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -1,11 +1,22 @@
+# #-#-#-#-# 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.
# Piotr Drąg <piotrdrag@gmail.com>, 2011-2020.
# Aviary.pl <community-poland@mozilla.org>, 2011-2020.
#
+# #-#-#-#-# pl.po (55) #-#-#-#-#
+# Polish translation for dash-to-dock GNOME Shell extension
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the dash-to-dock package.
+#
+#
+# Piotr Sokół <psokol.l10n@gmail.com>, 2012, 2013, 2015, 2016, 2017.
+#
+#, fuzzy
msgid ""
msgstr ""
+"#-#-#-#-# 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"
@@ -19,6 +30,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 (55) #-#-#-#-#\n"
+"Project-Id-Version: 55\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2019-10-10 10:10+0200\n"
+"PO-Revision-Date: 2019-10-10 10:31+0200\n"
+"Last-Translator: Piotr Sokół <psokol.l10n@gmail.com>\n"
+"Language-Team: polski <>\n"
+"Language: pl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2;\n"
+"X-Generator: Poedit 2.2.3\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -152,9 +177,14 @@ msgstr "Zamknij"
msgid "Unminimize"
msgstr "Cofnij minimalizację"
-#: extensions/window-list/extension.js:118
+#: extensions/window-list/extension.js:118 Settings.ui.h:52
+#, fuzzy
msgid "Minimize"
-msgstr "Zminimalizuj"
+msgstr ""
+"#-#-#-#-# pl.po (gnome-shell-extensions) #-#-#-#-#\n"
+"Zminimalizuj\n"
+"#-#-#-#-# pl.po (55) #-#-#-#-#\n"
+"Zminimalizowanie okna"
#: extensions/window-list/extension.js:125
msgid "Unmaximize"
@@ -259,3 +289,534 @@ msgstr "%d. obszar roboczy"
#: extensions/workspace-indicator/prefs.js:218
msgid "Add Workspace"
msgstr "Dodaj obszar roboczy"
+
+#: prefs.js:264
+msgid "Primary monitor"
+msgstr "Podstawowy"
+
+#: prefs.js:273 prefs.js:280
+msgid "Secondary monitor "
+msgstr "Drugorzędny "
+
+#: prefs.js:305 Settings.ui.h:28
+msgid "Right"
+msgstr "Po prawej"
+
+#: prefs.js:306 Settings.ui.h:25
+msgid "Left"
+msgstr "Po lewej"
+
+#: prefs.js:356
+msgid "Intelligent autohide customization"
+msgstr "Dostosowanie automatycznego ukrywania"
+
+#: prefs.js:363 prefs.js:556 prefs.js:612
+msgid "Reset to defaults"
+msgstr "Przywróć domyślne"
+
+#: prefs.js:549
+msgid "Show dock and application numbers"
+msgstr "Wyświetlanie doku i numerów programów"
+
+#: prefs.js:605
+msgid "Customize middle-click behavior"
+msgstr "Dostosowanie działania przycisków myszy"
+
+#: prefs.js:688
+msgid "Customize running indicators"
+msgstr "Dostosowanie wskaźników okien"
+
+#: prefs.js:800 Settings.ui.h:74
+msgid "Customize opacity"
+msgstr "Dostosowanie nieprzejrzystości"
+
+#: appIcons.js:809
+msgid "All Windows"
+msgstr "Wszystkie okna"
+
+#. Translators: %s is "Settings", which is automatically translated. You
+#. can also translate the full message if this fits better your language.
+#: appIcons.js:1126
+#, javascript-format
+msgid "Dash to Dock %s"
+msgstr "%s Dash to Dock"
+
+#: locations.js:65
+msgid "Trash"
+msgstr "Kosz"
+
+#: locations.js:74
+msgid "Empty Trash"
+msgstr "Pusty kosz"
+
+#: locations.js:182
+msgid "Mount"
+msgstr "Zamontuj"
+
+#: locations.js:225
+msgid "Eject"
+msgstr "Wysuń"
+
+#: locations.js:230
+msgid "Unmount"
+msgstr "Odmontuj"
+
+#: Settings.ui.h:1
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Wybranie zminimalizowania okna, umożliwia minimalizowanie wszystkich okien "
+"programu dwukrotnym kliknięciem"
+
+#: Settings.ui.h:2
+msgid "Shift+Click action"
+msgstr "Kliknięcia lewym przyciskiem + Shift"
+
+#: Settings.ui.h:3
+msgid "Raise window"
+msgstr "Przywrócenie okna"
+
+#: Settings.ui.h:4
+msgid "Minimize window"
+msgstr "Zminimalizowanie okna"
+
+#: Settings.ui.h:5
+msgid "Launch new instance"
+msgstr "Otwarcie nowego okna"
+
+#: Settings.ui.h:6
+msgid "Cycle through windows"
+msgstr "Przełączenie pomiędzy oknami"
+
+#: Settings.ui.h:7
+msgid "Minimize or overview"
+msgstr "Zminimalizowanie lub ekran podglądu"
+
+#: Settings.ui.h:8
+msgid "Show window previews"
+msgstr "Wyświetlenie podglądu okien"
+
+#: Settings.ui.h:9
+#, fuzzy
+#| msgid "Minimize or overview"
+msgid "Minimize or show previews"
+msgstr "Zminimalizowanie lub ekran podglądu"
+
+#: Settings.ui.h:10
+#, fuzzy
+#| msgid "Show window previews"
+msgid "Focus or show previews"
+msgstr "Wyświetlenie podglądu okien"
+
+#: Settings.ui.h:11
+msgid "Quit"
+msgstr "Zakończenie działania"
+
+#: Settings.ui.h:12
+msgid "Behavior for Middle-Click."
+msgstr "Konfiguruje działanie kliknięcia środkowym przyciskiem myszy"
+
+#: Settings.ui.h:13
+msgid "Middle-Click action"
+msgstr "Kliknięcie środkowym przyciskiem"
+
+#: Settings.ui.h:14
+msgid "Behavior for Shift+Middle-Click."
+msgstr ""
+"Konfiguruje działanie kliknięcia środkowym przyciskiem myszy z przytrzymanym "
+"klawiszem Shift"
+
+#: Settings.ui.h:15
+msgid "Shift+Middle-Click action"
+msgstr "Kliknięcie środkowym przyciskiem + Shift"
+
+#: Settings.ui.h:16
+msgid "Enable Unity7 like glossy backlit items"
+msgstr "Podświetlenie elementów w stylu Unity7"
+
+#: Settings.ui.h:17
+msgid "Use dominant color"
+msgstr "Użyj dominującego koloru"
+
+#: Settings.ui.h:18
+msgid "Customize indicator style"
+msgstr "Dostosowanie stylu wskaźników"
+
+#: Settings.ui.h:19
+msgid "Color"
+msgstr "Kolor"
+
+#: Settings.ui.h:20
+msgid "Border color"
+msgstr "Kolor obramowania"
+
+#: Settings.ui.h:21
+msgid "Border width"
+msgstr "Szerokość obramowania"
+
+#: Settings.ui.h:22
+msgid "Show the dock on"
+msgstr "Ekran wyświetlania doku"
+
+#: Settings.ui.h:23
+msgid "Show on all monitors."
+msgstr "Na wszystkich ekranach"
+
+#: Settings.ui.h:24
+msgid "Position on screen"
+msgstr "Położenie na ekranie"
+
+#: Settings.ui.h:26
+msgid "Bottom"
+msgstr "Na dole"
+
+#: Settings.ui.h:27
+msgid "Top"
+msgstr "U góry"
+
+#: Settings.ui.h:29
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"Ukrywa dok jeśli zakrywa okno bieżącego programu. Dostępnych jest więcej "
+"szczegółowych opcji."
+
+#: Settings.ui.h:30
+msgid "Intelligent autohide"
+msgstr "Inteligentne ukrywanie"
+
+#: Settings.ui.h:31
+msgid "Dock size limit"
+msgstr "Ograniczenie rozmiaru doku"
+
+#: Settings.ui.h:32
+msgid "Panel mode: extend to the screen edge"
+msgstr "Tryb panelu: rozciągnięcie do krawędzi ekranu"
+
+#: Settings.ui.h:33
+msgid "Icon size limit"
+msgstr "Ograniczenie rozmiaru ikon"
+
+#: Settings.ui.h:34
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Ustalony rozmiar ikon: odsłanianie ikon przewijaniem"
+
+#: Settings.ui.h:35
+msgid "Position and size"
+msgstr "Położenie i rozmiar"
+
+#: Settings.ui.h:36
+msgid "Show favorite applications"
+msgstr "Ulubione programy"
+
+#: Settings.ui.h:37
+msgid "Show running applications"
+msgstr "Uruchomione programy"
+
+#: Settings.ui.h:38
+msgid "Isolate workspaces."
+msgstr "Izolowanie obszarów roboczych"
+
+#: Settings.ui.h:39
+msgid "Isolate monitors."
+msgstr "Izolowanie ekranów"
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "Podgląd otwartych okien"
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+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
+msgid "Show <i>Applications</i> icon"
+msgstr "Przycisk <i>Wyświetl programy</i>"
+
+#: 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
+msgid "Animate <i>Show Applications</i>."
+msgstr "Animowanie przycisku <i>Wyświetl programy</i>"
+
+#: Settings.ui.h:45
+msgid "Show trash can"
+msgstr "Pokaż kosz na śmieci"
+
+#: Settings.ui.h:46
+msgid "Show mounted volumes and devices"
+msgstr "Pokaż zamontowane woluminy oraz urządzenia"
+
+#: Settings.ui.h:47
+msgid "Launchers"
+msgstr "Aktywatory"
+
+#: Settings.ui.h:48
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Używa skrótu Super+(0-9) do uruchomienia aktywatorów. Można użyć z "
+"modyfikatorem Shift lub Ctrl."
+
+#: Settings.ui.h:49
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "Uruchamianie aktywatorów skrótami klawiszowymi"
+
+#: Settings.ui.h:50
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Określa działanie kliknięcia ikony uruchomionego programu"
+
+#: Settings.ui.h:51
+msgid "Click action"
+msgstr "Działanie kliknięcia"
+
+#: Settings.ui.h:53
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Określa działanie przewijania kółkiem ikony programu"
+
+#: Settings.ui.h:54
+msgid "Scroll action"
+msgstr "Działanie przewijania"
+
+#: Settings.ui.h:55
+msgid "Do nothing"
+msgstr "Brak"
+
+#: Settings.ui.h:56
+msgid "Switch workspace"
+msgstr "Przełączenie obszaru roboczego"
+
+#: Settings.ui.h:57
+msgid "Behavior"
+msgstr "Zachowanie"
+
+#: Settings.ui.h:58
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Integruje dok z domyślnym stylem GNOME przy użyciu kilku ustawień. "
+"Opcjonalnie ustawienia te można określić poniżej."
+
+#: Settings.ui.h:59
+msgid "Use built-in theme"
+msgstr "Użycie zintegrowanego stylu"
+
+#: Settings.ui.h:60
+msgid "Save space reducing padding and border radius."
+msgstr ""
+"Zmniejsza zajmowaną powierzchnię redukując\n"
+"odległość od krawędzi i jej zaokrąglenie"
+
+#: Settings.ui.h:61
+msgid "Shrink the dash"
+msgstr "Zmniejszenie kokpitu"
+
+#: Settings.ui.h:62
+#, fuzzy
+#| msgid "Show windows counter indicators"
+msgid "Customize windows counter indicators"
+msgstr "Wskaźniki ilości okien"
+
+#: Settings.ui.h:63
+msgid "Default"
+msgstr "Domyślnie"
+
+#: Settings.ui.h:64
+msgid "Dots"
+msgstr "Kropki"
+
+#: Settings.ui.h:65
+msgid "Squares"
+msgstr "Kwadraty"
+
+#: Settings.ui.h:66
+msgid "Dashes"
+msgstr "Kreski"
+
+#: Settings.ui.h:67
+msgid "Segmented"
+msgstr "Posegmentowane"
+
+#: Settings.ui.h:68
+msgid "Solid"
+msgstr "Nieprzerywane"
+
+#: Settings.ui.h:69
+msgid "Ciliora"
+msgstr ""
+
+#: Settings.ui.h:70
+msgid "Metro"
+msgstr ""
+
+#: Settings.ui.h:71
+msgid "Set the background color for the dash."
+msgstr "Ustala wybrany kolor tła kokpitu"
+
+#: Settings.ui.h:72
+msgid "Customize the dash color"
+msgstr "Kolor kokpitu"
+
+#: Settings.ui.h:73
+msgid "Tune the dash background opacity."
+msgstr "Modyfikuje zaciemnienie tła kokpitu"
+
+#: Settings.ui.h:75
+msgid "Fixed"
+msgstr "Ustalona"
+
+#: Settings.ui.h:76
+msgid "Dynamic"
+msgstr "Dynamiczna"
+
+#: Settings.ui.h:77
+msgid "Opacity"
+msgstr "Nieprzejrzystość"
+
+#: Settings.ui.h:78
+msgid "Force straight corner\n"
+msgstr "Kąty proste narożników\n"
+
+#: Settings.ui.h:80
+msgid "Appearance"
+msgstr "Wygląd"
+
+#: Settings.ui.h:81
+msgid "version: "
+msgstr "wersja: "
+
+#: Settings.ui.h:82
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Przemieszcza kokpit z widoku podglądu do doku"
+
+#: Settings.ui.h:83
+msgid "Created by"
+msgstr "Stworzony przez"
+
+#: Settings.ui.h:84
+msgid "Webpage"
+msgstr "Strona internetowa"
+
+#: Settings.ui.h:85
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">Niniejszy program rozpowszechniany jest bez "
+"jakiejkolwiek gwarancji.\n"
+"Więcej informacji: <a href=\"https://www.gnu.org/licenses/old-licenses/"
+"gpl-2.0.html\">Powszechna licencja publiczna GNU, wersja 2 lub późniejsza</"
+"a>.</span>"
+
+#: Settings.ui.h:87
+msgid "About"
+msgstr "O programie"
+
+#: Settings.ui.h:88
+msgid "Customize minimum and maximum opacity values"
+msgstr "Dostosowanie minimalnej i maksymalnej wartości nieprzejrzystości"
+
+#: Settings.ui.h:89
+msgid "Minimum opacity"
+msgstr "Minimalna nieprzejrzystość"
+
+#: Settings.ui.h:90
+msgid "Maximum opacity"
+msgstr "Maksymalna nieprzejrzystość"
+
+#: Settings.ui.h:91
+msgid "Number overlay"
+msgstr "Nakładka z numerem"
+
+#: Settings.ui.h:92
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr "Wyświetla chwilowo na ikonach numery programów powiązane ze skrótami"
+
+#: Settings.ui.h:93
+msgid "Show the dock if it is hidden"
+msgstr "Wyświetlenie ukrytego doku"
+
+#: Settings.ui.h:94
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr "Wyświetla chwilowo dok po wciśnięciu skrótu klawiszowego"
+
+#: Settings.ui.h:95
+msgid "Shortcut for the options above"
+msgstr "Skrót klawiszowy dla powyższych poleceń"
+
+#: Settings.ui.h:96
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Składnia: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:97
+msgid "Hide timeout (s)"
+msgstr "Czas ukrywania (s)"
+
+#: Settings.ui.h:98
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Wyświetla dok po przemieszczeniu wskaźnika myszy do krawędzi ekranu"
+
+#: Settings.ui.h:99
+msgid "Autohide"
+msgstr "Automatyczne ukrywanie"
+
+#: Settings.ui.h:100
+msgid "Push to show: require pressure to show the dock"
+msgstr "Wymagany nacisk do wyświetlenia doku"
+
+#: Settings.ui.h:101
+msgid "Enable in fullscreen mode"
+msgstr "Wyświetlanie na pełnym ekranie"
+
+#: Settings.ui.h:102
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Wyświetla dok jeśli nie zakrywa okien programu"
+
+#: Settings.ui.h:103
+msgid "Dodge windows"
+msgstr "Ukrywanie przed oknami"
+
+#: Settings.ui.h:104
+msgid "All windows"
+msgstr "Wszystkie okna"
+
+#: Settings.ui.h:105
+msgid "Only focused application's windows"
+msgstr "Tylko aktywne okna programu"
+
+#: Settings.ui.h:106
+msgid "Only maximized windows"
+msgstr "Tylko zmaksymalizowane okna"
+
+#: Settings.ui.h:107
+msgid "Animation duration (s)"
+msgstr "Czas animacji (s)"
+
+#: Settings.ui.h:108
+msgid "Show timeout (s)"
+msgstr "Czas wyświetlania (s)"
+
+#: Settings.ui.h:109
+msgid "Pressure threshold"
+msgstr "Próg nacisku"
+
+#~ msgid "Show a dot for each windows of the application."
+#~ msgstr "Wyświetla kropkę dla każdego okna programu"
+
+#~ msgid "Adaptive"
+#~ msgstr "Adaptacyjna"
diff --git a/po/pt.po b/po/pt.po
index 87270e01..99d446f9 100644
--- a/po/pt.po
+++ b/po/pt.po
@@ -1,3 +1,4 @@
+# #-#-#-#-# pt.po (3.14) #-#-#-#-#
# gnome-shell-extensions' Portuguese translation.
# Copyright © 2011 gnome-shell-extensions
# This file is distributed under the same license as the gnome-shell-extensions package.
@@ -10,8 +11,16 @@
# Hugo Carvalho <hugokarvalho@hotmail.com>, 2021.
# Juliano de Souza Camargo <julianosc@protonmail.com>, 2021.
#
+# #-#-#-#-# pt.po (Dash to Dock) #-#-#-#-#
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Carlos Alberto Junior Spohr Poletto <carlos.spohr@gmail.com>, 2012.
+#
+#, fuzzy
msgid ""
msgstr ""
+"#-#-#-#-# pt.po (3.14) #-#-#-#-#\n"
"Project-Id-Version: 3.14\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n"
@@ -26,11 +35,18 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"X-Generator: Gtranslator 40.0\n"
"X-Project-Style: gnome\n"
-"X-DL-Team: pt\n"
-"X-DL-Module: gnome-shell-extensions\n"
-"X-DL-Branch: gnome-40\n"
-"X-DL-Domain: po\n"
-"X-DL-State: Translating\n"
+"#-#-#-#-# pt.po (Dash to Dock) #-#-#-#-#\n"
+"Project-Id-Version: Dash to Dock\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2019-03-06 01:57-0600\n"
+"PO-Revision-Date: 2019-03-06 03:55-0600\n"
+"Last-Translator: Adolfo Jayme Barrientos <fitojb@ubuntu.com>\n"
+"Language-Team: Carlos Alberto Junior Spohr Poletto <carlos.spohr@gmail>\n"
+"Language: pt\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"
#: data/gnome-classic.desktop.in:3
msgid "GNOME Classic"
@@ -164,7 +180,7 @@ msgstr "Fechar"
msgid "Unminimize"
msgstr "Desminimizar"
-#: extensions/window-list/extension.js:118
+#: extensions/window-list/extension.js:118 Settings.ui.h:50
msgid "Minimize"
msgstr "Minimizar"
@@ -272,6 +288,492 @@ msgstr "Área de trabalho %d"
msgid "Add Workspace"
msgstr "Adicionar área de trabalho"
+#: prefs.js:306 Settings.ui.h:25
+msgid "Left"
+msgstr "Esquerda"
+
+#: prefs.js:305 Settings.ui.h:28
+msgid "Right"
+msgstr "Direita"
+
+#: prefs.js:264
+msgid "Primary monitor"
+msgstr "Monitor primário"
+
+#: prefs.js:273 prefs.js:280
+msgid "Secondary monitor "
+msgstr "Monitor secundário "
+
+#: prefs.js:356
+msgid "Intelligent autohide customization"
+msgstr "Personalização do auto-hide inteligente"
+
+#: prefs.js:363 prefs.js:548 prefs.js:604
+msgid "Reset to defaults"
+msgstr "Repor padrão"
+
+#: prefs.js:541
+msgid "Show dock and application numbers"
+msgstr "Mostrar números das docks e aplicações"
+
+#: prefs.js:597
+msgid "Customize middle-click behavior"
+msgstr "Personalizar comportamento do clique do meio"
+
+#: prefs.js:680
+msgid "Customize running indicators"
+msgstr "Personalizar indicadores de execução"
+
+#: prefs.js:792 Settings.ui.h:72
+msgid "Customize opacity"
+msgstr "Personalizar opacidade"
+
+#: appIcons.js:790
+msgid "All Windows"
+msgstr "Todas as janelas"
+
+#. Translators: %s is "Settings", which is automatically translated. You
+#. can also translate the full message if this fits better your language.
+#: appIcons.js:1092
+#, javascript-format
+msgid "Dash to Dock %s"
+msgstr "%s do Dash to Dock"
+
+#: Settings.ui.h:1
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Quando definido para minimizar, duplo clique minimiza todas as janelas da "
+"aplicação."
+
+#: Settings.ui.h:2
+msgid "Shift+Click action"
+msgstr "Ação de Shift+Clique"
+
+#: Settings.ui.h:3
+msgid "Raise window"
+msgstr "Levantar janela"
+
+#: Settings.ui.h:4
+msgid "Minimize window"
+msgstr "Minimizar janela"
+
+#: Settings.ui.h:5
+msgid "Launch new instance"
+msgstr "Abrir nova janela"
+
+#: Settings.ui.h:6
+msgid "Cycle through windows"
+msgstr "Percorrer janelas"
+
+#: Settings.ui.h:7
+msgid "Minimize or overview"
+msgstr "Minimizar ou antever"
+
+#: Settings.ui.h:8
+msgid "Show window previews"
+msgstr "Mostrar antevisão das janelas abertas"
+
+#: Settings.ui.h:9
+msgid "Minimize or show previews"
+msgstr "Minimizar ou antever"
+
+#: Settings.ui.h:10
+msgid "Focus or show previews"
+msgstr "Focar ou antever"
+
+#: Settings.ui.h:11
+msgid "Quit"
+msgstr "Sair"
+
+#: Settings.ui.h:12
+msgid "Behavior for Middle-Click."
+msgstr "Comportamento do clique do meio."
+
+#: Settings.ui.h:13
+msgid "Middle-Click action"
+msgstr "Ação do clique do meio"
+
+#: Settings.ui.h:14
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Comportamento do Shift+Clique do meio."
+
+#: Settings.ui.h:15
+msgid "Shift+Middle-Click action"
+msgstr "Ação do Shift+Clique do meio"
+
+#: Settings.ui.h:16
+msgid "Enable Unity7 like glossy backlit items"
+msgstr "Usar efeito polido no fundo (estilo Unity7)"
+
+#: Settings.ui.h:17
+msgid "Use dominant color"
+msgstr "Usar cor dominante"
+
+#: Settings.ui.h:18
+msgid "Customize indicator style"
+msgstr "Personalizar indicadores"
+
+#: Settings.ui.h:19
+msgid "Color"
+msgstr "Cor"
+
+#: Settings.ui.h:20
+msgid "Border color"
+msgstr "Cor da borda"
+
+#: Settings.ui.h:21
+msgid "Border width"
+msgstr "Largura da borda"
+
+#: Settings.ui.h:22
+msgid "Show the dock on"
+msgstr "Mostrar a dock em"
+
+#: Settings.ui.h:23
+msgid "Show on all monitors."
+msgstr "Mostrar em todos os monitores."
+
+#: Settings.ui.h:24
+msgid "Position on screen"
+msgstr "Posição no ecrã"
+
+#: Settings.ui.h:26
+msgid "Bottom"
+msgstr "Em baixo"
+
+#: Settings.ui.h:27
+msgid "Top"
+msgstr "Em cima"
+
+#: Settings.ui.h:29
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"Esconder a dock quando obstrói uma janela da aplicação atual. Estão "
+"disponíveis opções mais detalhadas."
+
+#: Settings.ui.h:30
+msgid "Intelligent autohide"
+msgstr "Ocultação inteligente"
+
+#: Settings.ui.h:31
+msgid "Dock size limit"
+msgstr "Limite do tamanho da dock"
+
+#: Settings.ui.h:32
+msgid "Panel mode: extend to the screen edge"
+msgstr "Modo Painel: expandir até ao limite do ecrã"
+
+#: Settings.ui.h:33
+msgid "Icon size limit"
+msgstr "Limite do tamanho dos ícones"
+
+#: Settings.ui.h:34
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Tamanho fixo dos ícones: scroll para revelar outros ícones"
+
+#: Settings.ui.h:35
+msgid "Position and size"
+msgstr "Posição e dimensão"
+
+#: Settings.ui.h:36
+msgid "Show favorite applications"
+msgstr "Mostrar aplicações favoritas"
+
+#: Settings.ui.h:37
+msgid "Show running applications"
+msgstr "Mostrar aplicações em execução"
+
+#: Settings.ui.h:38
+msgid "Isolate workspaces."
+msgstr "Isolar áreas de trabalho."
+
+#: Settings.ui.h:39
+msgid "Isolate monitors."
+msgstr "Isolar monitores."
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "Mostrar antevisão das janelas abertas."
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Se desativadas, estas opções estão acessíveis através do gnome-tweak-tool ou "
+"no site das extensões."
+
+#: Settings.ui.h:42
+msgid "Show <i>Applications</i> icon"
+msgstr "Mostrar ícone das <i>Aplicações</i>"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr "Mover o botão das aplicações para o início da dock."
+
+#: Settings.ui.h:44
+msgid "Animate <i>Show Applications</i>."
+msgstr "Animar <i>Mostrar aplicações</i>."
+
+#: Settings.ui.h:45
+msgid "Launchers"
+msgstr "Lançadores"
+
+#: Settings.ui.h:46
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Usar Super+(0-9) como atalhos para as aplicações. Também pode ser usado com "
+"Shift e Ctrl."
+
+#: Settings.ui.h:47
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "Usar atalhos de teclado para aplicações"
+
+#: Settings.ui.h:48
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Comportamento do clique no ícone de uma aplicação em execução."
+
+#: Settings.ui.h:49
+msgid "Click action"
+msgstr "Ação do clique"
+
+#: Settings.ui.h:51
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Comportamento do scroll no ícone de uma aplicação."
+
+#: Settings.ui.h:52
+msgid "Scroll action"
+msgstr "Ação do scroll"
+
+#: Settings.ui.h:53
+msgid "Do nothing"
+msgstr "Não fazer nada"
+
+#: Settings.ui.h:54
+msgid "Switch workspace"
+msgstr "Alternar espaço de trabalho"
+
+#: Settings.ui.h:55
+msgid "Behavior"
+msgstr "Comportamento"
+
+#: Settings.ui.h:56
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Menos opções visando a integração da doca com o tema padrão do GNOME. "
+"Alternativamente, opções mais detalhadas podem ser ativadas abaixo."
+
+#: Settings.ui.h:57
+msgid "Use built-in theme"
+msgstr "Usar tema embutido"
+
+#: Settings.ui.h:58
+msgid "Save space reducing padding and border radius."
+msgstr "Poupar espaço reduzindo o preenchimento e as bordas."
+
+#: Settings.ui.h:59
+msgid "Shrink the dash"
+msgstr "Encolher a dock"
+
+#: Settings.ui.h:60
+msgid "Customize windows counter indicators"
+msgstr "Mostrar indicador com contagem de janelas"
+
+#: Settings.ui.h:61
+msgid "Default"
+msgstr "Padrão"
+
+#: Settings.ui.h:62
+msgid "Dots"
+msgstr "Pontos"
+
+#: Settings.ui.h:63
+msgid "Squares"
+msgstr "Quadrados"
+
+#: Settings.ui.h:64
+msgid "Dashes"
+msgstr "Linhas"
+
+#: Settings.ui.h:65
+msgid "Segmented"
+msgstr "Segmentado"
+
+#: Settings.ui.h:66
+msgid "Solid"
+msgstr "Sólido"
+
+#: Settings.ui.h:67
+msgid "Ciliora"
+msgstr "Ciliora"
+
+#: Settings.ui.h:68
+msgid "Metro"
+msgstr "Metro"
+
+#: Settings.ui.h:69
+msgid "Set the background color for the dash."
+msgstr "Definir a cor de fundo do painel."
+
+#: Settings.ui.h:70
+msgid "Customize the dash color"
+msgstr "Personalizar cor do painel"
+
+#: Settings.ui.h:71
+msgid "Tune the dash background opacity."
+msgstr "Afinar a cor de fundo do painel."
+
+#: Settings.ui.h:73
+msgid "Fixed"
+msgstr "Fixo"
+
+#: Settings.ui.h:74
+msgid "Dynamic"
+msgstr "Dinâmico"
+
+#: Settings.ui.h:75
+msgid "Opacity"
+msgstr "Opacidade"
+
+#: Settings.ui.h:76
+msgid "Force straight corner\n"
+msgstr "Forçar cantos retos\n"
+
+#: Settings.ui.h:78
+msgid "Appearance"
+msgstr "Aparência"
+
+#: Settings.ui.h:79
+msgid "version: "
+msgstr "versão: "
+
+#: Settings.ui.h:80
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Retira o painel da vista de Atividades, tornando-o numa dock"
+
+#: Settings.ui.h:81
+msgid "Created by"
+msgstr "Criado por"
+
+#: Settings.ui.h:82
+msgid "Webpage"
+msgstr "Página web"
+
+#: Settings.ui.h:83
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+
+#: Settings.ui.h:85
+msgid "About"
+msgstr "Sobre"
+
+#: Settings.ui.h:86
+msgid "Customize minimum and maximum opacity values"
+msgstr "Personalizar valor mínimo e máximo da opacidade"
+
+#: Settings.ui.h:87
+msgid "Minimum opacity"
+msgstr "Opacidade mínima"
+
+#: Settings.ui.h:88
+msgid "Maximum opacity"
+msgstr "Opacidade máxima"
+
+#: Settings.ui.h:89
+msgid "Number overlay"
+msgstr "Números sobrepostos"
+
+#: Settings.ui.h:90
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"Mostrar temporariamente o número das aplicações sobre os ícones, "
+"correspondendo os atalhos."
+
+#: Settings.ui.h:91
+msgid "Show the dock if it is hidden"
+msgstr "Mostrar a dock se estiver escondida"
+
+#: Settings.ui.h:92
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Se o auto-hide estiver ativo, a dock aparecerá temporariamente ao utilizar o "
+"atalho."
+
+#: Settings.ui.h:93
+msgid "Shortcut for the options above"
+msgstr "Atalho para as opções acima"
+
+#: Settings.ui.h:94
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Síntaxe: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:95
+msgid "Hide timeout (s)"
+msgstr "Tempo limite para esconder (s)"
+
+#: Settings.ui.h:96
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Mostrar a dock ao passar o rato na borda do ecrã."
+
+#: Settings.ui.h:97
+msgid "Autohide"
+msgstr "Ocultação inteligente"
+
+#: Settings.ui.h:98
+msgid "Push to show: require pressure to show the dock"
+msgstr "Pressionar para mostrar: requerer pressão para mostrar a doca"
+
+#: Settings.ui.h:99
+msgid "Enable in fullscreen mode"
+msgstr "Ativar no modo de ecrã inteiro"
+
+#: Settings.ui.h:100
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Mostrar a dock quando esta não obstrui as janelas."
+
+#: Settings.ui.h:101
+msgid "Dodge windows"
+msgstr "Esquivar as janelas"
+
+#: Settings.ui.h:102
+msgid "All windows"
+msgstr "Todas as janelas"
+
+#: Settings.ui.h:103
+msgid "Only focused application's windows"
+msgstr "Apenas janelas da aplicação focada"
+
+#: Settings.ui.h:104
+msgid "Only maximized windows"
+msgstr "Apenas janelas maximizadas"
+
+#: Settings.ui.h:105
+msgid "Animation duration (s)"
+msgstr "Tempo da animação (s)"
+
+#: Settings.ui.h:106
+msgid "Show timeout (s)"
+msgstr "Mostrar tempo limite (s)"
+
+#: Settings.ui.h:107
+msgid "Pressure threshold"
+msgstr "Limite de pressão"
+
#~ msgid "Attach modal dialog to the parent window"
#~ msgstr "Anexar diálogo modal à janela mãe"
@@ -391,12 +893,6 @@ msgstr "Adicionar área de trabalho"
#~ msgid "Normal"
#~ msgstr "Normal"
-#~ msgid "Left"
-#~ msgstr "Esquerda"
-
-#~ msgid "Right"
-#~ msgstr "Direita"
-
#~ msgid "Upside-down"
#~ msgstr "Invertido"
diff --git a/po/pt_BR.po b/po/pt_BR.po
index d1bd41bc..9dc0db84 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -1,3 +1,4 @@
+# #-#-#-#-# 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.
@@ -10,8 +11,17 @@
# Enrico Nicoletto <liverig@gmail.com>, 2013, 2014.
# Rafael Fontenelle <rafaelff@gnome.org>, 2013-2020.
#
+# #-#-#-#-# pt_BR.po (Dash to Dock) #-#-#-#-#
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Carlos Alberto Junior Spohr Poletto <carlos.spohr@gmail.com>, 2012.
+# Fábio Nogueira <fnogueira@gnome.org>, 2016.
+#
+#, fuzzy
msgid ""
msgstr ""
+"#-#-#-#-# 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"
@@ -26,6 +36,18 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
"X-Generator: Gtranslator 3.36.0\n"
"X-Project-Style: gnome\n"
+"#-#-#-#-# pt_BR.po (Dash to Dock) #-#-#-#-#\n"
+"Project-Id-Version: Dash to Dock\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2019-03-06 01:57-0600\n"
+"PO-Revision-Date: 2019-03-06 03:56-0600\n"
+"Last-Translator: Adolfo Jayme Barrientos <fitojb@ubuntu.com>\n"
+"Language-Team: Português do Brasil\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.2.1\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -160,7 +182,7 @@ msgstr "Fechar"
msgid "Unminimize"
msgstr "Desfazer janelas minimizadas"
-#: extensions/window-list/extension.js:118
+#: extensions/window-list/extension.js:118 Settings.ui.h:50
msgid "Minimize"
msgstr "Minimizar"
@@ -270,6 +292,495 @@ msgstr "Espaço de trabalho %d"
msgid "Add Workspace"
msgstr "Adicionar espaço de trabalho"
+#: prefs.js:306 Settings.ui.h:25
+msgid "Left"
+msgstr "Esquerda"
+
+#: prefs.js:305 Settings.ui.h:28
+msgid "Right"
+msgstr "Direita"
+
+#: prefs.js:264
+msgid "Primary monitor"
+msgstr "Monitor primário"
+
+#: prefs.js:273 prefs.js:280
+msgid "Secondary monitor "
+msgstr "Monitor secundário"
+
+#: prefs.js:356
+msgid "Intelligent autohide customization"
+msgstr "Configuração da ocultação inteligente"
+
+#: prefs.js:363 prefs.js:548 prefs.js:604
+msgid "Reset to defaults"
+msgstr "Restaurar o padrão"
+
+#: prefs.js:541
+msgid "Show dock and application numbers"
+msgstr "Exibir o dock e os números dos aplicativos"
+
+#: prefs.js:597
+msgid "Customize middle-click behavior"
+msgstr "Customizar o comportamento do clique do botão do meio"
+
+#: prefs.js:680
+msgid "Customize running indicators"
+msgstr "Customizar os indicadores de execução"
+
+#: prefs.js:792 Settings.ui.h:72
+msgid "Customize opacity"
+msgstr "Customizar opacidade"
+
+#: appIcons.js:790
+msgid "All Windows"
+msgstr "Todas as janelas"
+
+#. Translators: %s is "Settings", which is automatically translated. You
+#. can also translate the full message if this fits better your language.
+#: appIcons.js:1092
+#, javascript-format
+msgid "Dash to Dock %s"
+msgstr "%s do Dash to Dock"
+
+#: Settings.ui.h:1
+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"
+
+#: Settings.ui.h:2
+msgid "Shift+Click action"
+msgstr "Ação do Shift+Clique"
+
+#: Settings.ui.h:3
+msgid "Raise window"
+msgstr "Aumentar janela"
+
+#: Settings.ui.h:4
+msgid "Minimize window"
+msgstr "Minimizar janela"
+
+#: Settings.ui.h:5
+msgid "Launch new instance"
+msgstr "Iniciar nova instância"
+
+#: Settings.ui.h:6
+msgid "Cycle through windows"
+msgstr "Percorrer através das janelas"
+
+#: Settings.ui.h:7
+msgid "Minimize or overview"
+msgstr "Minimizar o visão geral"
+
+#: Settings.ui.h:8
+msgid "Show window previews"
+msgstr "Mostrar pré-visualizações das janelas"
+
+#: Settings.ui.h:9
+msgid "Minimize or show previews"
+msgstr "Minimizar o mostrar pré-visualizações"
+
+#: Settings.ui.h:10
+msgid "Focus or show previews"
+msgstr "Pôr em foco o pré-visualizar"
+
+#: Settings.ui.h:11
+msgid "Quit"
+msgstr "Sair"
+
+#: Settings.ui.h:12
+msgid "Behavior for Middle-Click."
+msgstr "Comportamento do Clique do botão do meio."
+
+#: Settings.ui.h:13
+msgid "Middle-Click action"
+msgstr "Ação do clique do botão do meio"
+
+#: Settings.ui.h:14
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Comportamento para Shift + Clique do botão do meio."
+
+#: Settings.ui.h:15
+msgid "Shift+Middle-Click action"
+msgstr "Ação do Shift+Clique do botão do meio"
+
+#: Settings.ui.h:16
+msgid "Enable Unity7 like glossy backlit items"
+msgstr "Ativar retroiluminação estilo Unity 7 dos elementos"
+
+#: Settings.ui.h:17
+msgid "Use dominant color"
+msgstr "Usar cor dominante"
+
+#: Settings.ui.h:18
+msgid "Customize indicator style"
+msgstr "Customizar o estilo do indicador"
+
+#: Settings.ui.h:19
+msgid "Color"
+msgstr "Cor"
+
+#: Settings.ui.h:20
+msgid "Border color"
+msgstr "Cor da borda"
+
+#: Settings.ui.h:21
+msgid "Border width"
+msgstr "Tamanho da borda"
+
+#: Settings.ui.h:22
+msgid "Show the dock on"
+msgstr "Exibir o dock"
+
+#: Settings.ui.h:23
+msgid "Show on all monitors."
+msgstr "Mostrar em todos os monitores."
+
+#: Settings.ui.h:24
+msgid "Position on screen"
+msgstr "Posição na tela"
+
+#: Settings.ui.h:26
+msgid "Bottom"
+msgstr "Embaixo"
+
+#: Settings.ui.h:27
+msgid "Top"
+msgstr "Em cima"
+
+#: Settings.ui.h:29
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"Ocultar o dock quando o mesmo sobrepor a janela do aplicativo em uso. "
+"Definições mais aperfeiçoadas estão disponíveis."
+
+#: Settings.ui.h:30
+msgid "Intelligent autohide"
+msgstr "Ocultação inteligente"
+
+#: Settings.ui.h:31
+msgid "Dock size limit"
+msgstr "Tamanho limite do dock"
+
+#: Settings.ui.h:32
+msgid "Panel mode: extend to the screen edge"
+msgstr "Modo do painel: estender até a borda da tela"
+
+#: Settings.ui.h:33
+msgid "Icon size limit"
+msgstr "Tamanho limite do ícone"
+
+#: Settings.ui.h:34
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Tamanho do ícone fixo: use o scroll do mouse para revelar outro ícone"
+
+#: Settings.ui.h:35
+msgid "Position and size"
+msgstr "Posição e tamanho"
+
+#: Settings.ui.h:36
+msgid "Show favorite applications"
+msgstr "Mostrar aplicativos favoritos"
+
+#: Settings.ui.h:37
+msgid "Show running applications"
+msgstr "Mostrar aplicativos em execução"
+
+#: Settings.ui.h:38
+msgid "Isolate workspaces."
+msgstr "Isolar espaços de trabalho."
+
+#: Settings.ui.h:39
+msgid "Isolate monitors."
+msgstr "Isolar monitores."
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "Mostrar pré-visualizações de janelas abertas."
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+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
+msgid "Show <i>Applications</i> icon"
+msgstr "Exibir ícone dos <i>Aplicativos</i>"
+
+#: 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
+msgid "Animate <i>Show Applications</i>."
+msgstr "<i>Mostrar aplicativos</i> com efeitos."
+
+#: Settings.ui.h:45
+msgid "Launchers"
+msgstr "Lançadores"
+
+#: Settings.ui.h:46
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Habilita tecla Super+(0-9) como atalhos para ativar aplicativos. Também 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
+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
+msgid "Click action"
+msgstr "Ação do clique"
+
+#: Settings.ui.h:51
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Comportamento ao rolar sobre o ícone de um aplicativo."
+
+#: Settings.ui.h:52
+msgid "Scroll action"
+msgstr "Ação da rolagem"
+
+#: Settings.ui.h:53
+msgid "Do nothing"
+msgstr "Não fazer nada"
+
+#: Settings.ui.h:54
+msgid "Switch workspace"
+msgstr "Alternar espaço de trabalho"
+
+#: Settings.ui.h:55
+msgid "Behavior"
+msgstr "Comportamento"
+
+#: Settings.ui.h:56
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Algumas personalizações se destinam a integrar o dock com o tema padrão do "
+"GNOME. Alternativamente, as opções específicas podem ser ativadas abaixo."
+
+#: Settings.ui.h:57
+msgid "Use built-in theme"
+msgstr "Usar o tema do sistema"
+
+#: Settings.ui.h:58
+msgid "Save space reducing padding and border radius."
+msgstr "Economizar espaço reduzindo preenchimento e a borda arredondada"
+
+#: Settings.ui.h:59
+msgid "Shrink the dash"
+msgstr "Encolher o dash"
+
+#: Settings.ui.h:60
+msgid "Customize windows counter indicators"
+msgstr "Customizar indicadores de contagem de janelas"
+
+#: Settings.ui.h:61
+msgid "Default"
+msgstr "Padrão"
+
+#: Settings.ui.h:62
+msgid "Dots"
+msgstr "Pontos"
+
+#: Settings.ui.h:63
+msgid "Squares"
+msgstr "Quadrados"
+
+#: Settings.ui.h:64
+msgid "Dashes"
+msgstr "Linhas"
+
+#: Settings.ui.h:65
+msgid "Segmented"
+msgstr "Segmentado"
+
+#: Settings.ui.h:66
+msgid "Solid"
+msgstr "Sólido"
+
+#: Settings.ui.h:67
+msgid "Ciliora"
+msgstr "Ciliora"
+
+#: Settings.ui.h:68
+msgid "Metro"
+msgstr "Metro"
+
+#: Settings.ui.h:69
+msgid "Set the background color for the dash."
+msgstr "Define a cor de fundo para o dash."
+
+#: Settings.ui.h:70
+msgid "Customize the dash color"
+msgstr "Customizar a cor do dash"
+
+#: Settings.ui.h:71
+msgid "Tune the dash background opacity."
+msgstr "Ajustar a opacidade do fundo do dash."
+
+#: Settings.ui.h:73
+msgid "Fixed"
+msgstr "Fixo"
+
+#: Settings.ui.h:74
+msgid "Dynamic"
+msgstr "Dinâmico"
+
+#: Settings.ui.h:75
+msgid "Opacity"
+msgstr "Opacidade"
+
+#: Settings.ui.h:76
+msgid "Force straight corner\n"
+msgstr "Forçar canto reto\n"
+
+#: Settings.ui.h:78
+msgid "Appearance"
+msgstr "Aparência"
+
+#: Settings.ui.h:79
+msgid "version: "
+msgstr "versão:"
+
+#: Settings.ui.h:80
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Mover o dash para fora da visão geral transformando-o em dock"
+
+#: Settings.ui.h:81
+msgid "Created by"
+msgstr "Criado por"
+
+#: Settings.ui.h:82
+msgid "Webpage"
+msgstr "Página Web"
+
+#: Settings.ui.h:83
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">Este programa é distribuido SEM QUALQUER GARANTIA.\n"
+"Veja em <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">GNU General Public License, versão 2 ou posterior</a> para maiores "
+"detalhes.</span>"
+
+#: Settings.ui.h:85
+msgid "About"
+msgstr "Sobre"
+
+#: Settings.ui.h:86
+msgid "Customize minimum and maximum opacity values"
+msgstr "Customizar os valores mínimo e máximo da opacidade"
+
+#: Settings.ui.h:87
+msgid "Minimum opacity"
+msgstr "Opacidade mínima"
+
+#: Settings.ui.h:88
+msgid "Maximum opacity"
+msgstr "Opacidade máxima"
+
+#: Settings.ui.h:89
+msgid "Number overlay"
+msgstr "Sobreposição de número"
+
+#: Settings.ui.h:90
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"Mostrar temporariamente os números dos aplicativos sobre os ícones, "
+"correspondentes ao atalho."
+
+#: Settings.ui.h:91
+msgid "Show the dock if it is hidden"
+msgstr "Exibir o dock se este estiver oculto"
+
+#: Settings.ui.h:92
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Se utilizar a ocultação, o dock será exibido por um curto período de tempo "
+"ao acionar o atalho."
+
+#: Settings.ui.h:93
+msgid "Shortcut for the options above"
+msgstr "Atalho para as opções acima"
+
+#: Settings.ui.h:94
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Sintaxe: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:95
+msgid "Hide timeout (s)"
+msgstr "Ocultar tempo limite [s]"
+
+#: Settings.ui.h:96
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Mostrar o dock quando o mouse pairar sobre a tela."
+
+#: Settings.ui.h:97
+msgid "Autohide"
+msgstr "Ocultação"
+
+#: Settings.ui.h:98
+msgid "Push to show: require pressure to show the dock"
+msgstr "Empurrar para mostrar: requer pressão para mostrar o dock"
+
+#: Settings.ui.h:99
+msgid "Enable in fullscreen mode"
+msgstr "Habilitar modo tela cheia"
+
+#: Settings.ui.h:100
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Mostrar o dock quando nenhum aplicativo sobrepor o mesmo."
+
+#: Settings.ui.h:101
+msgid "Dodge windows"
+msgstr "Esconder janela"
+
+#: Settings.ui.h:102
+msgid "All windows"
+msgstr "Todas as janelas"
+
+#: Settings.ui.h:103
+msgid "Only focused application's windows"
+msgstr "Apenas janelas de aplicativos em foco"
+
+#: Settings.ui.h:104
+msgid "Only maximized windows"
+msgstr "Somente janelas maximizadas"
+
+#: Settings.ui.h:105
+msgid "Animation duration (s)"
+msgstr "Tempo da animação [s]"
+
+#: Settings.ui.h:106
+msgid "Show timeout (s)"
+msgstr "Mostrar tempo limite [s]"
+
+#: Settings.ui.h:107
+msgid "Pressure threshold"
+msgstr "Limite de pressão"
+
#~ msgid "Application"
#~ msgstr "Aplicativo"
@@ -389,12 +900,6 @@ msgstr "Adicionar espaço de trabalho"
#~ msgid "Normal"
#~ msgstr "Normal"
-#~ msgid "Left"
-#~ msgstr "Esquerda"
-
-#~ msgid "Right"
-#~ msgstr "Direita"
-
#~ msgid "Upside-down"
#~ msgstr "De cabeça para baixo"
diff --git a/po/ru.po b/po/ru.po
index 8aedfbd6..de5dbbb5 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -1,11 +1,18 @@
+# #-#-#-#-# 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.
# Yuri Myasoedov <omerta13@yandex.ru>, 2011, 2012, 2013.
# Stas Solovey <whats_up@tut.by>, 2011, 2012, 2013, 2015, 2017.
#
+# #-#-#-#-# ru.po (dash-to-dock) #-#-#-#-#
+# Russian translation for dash-to-dock GNOME Shell extension
+# Ivan Komaritsyn <vantu5z@mail.ru>, 2015-2020.
+#
+#, fuzzy
msgid ""
msgstr ""
+"#-#-#-#-# 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"
@@ -20,6 +27,20 @@ msgstr ""
"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"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-01-31 14:36+0300\n"
+"PO-Revision-Date: 2020-01-31 14:40+0300\n"
+"Last-Translator: Ivan Komaritsyn <vantu5z@mail.ru>\n"
+"Language-Team: \n"
+"Language: ru\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
+"X-Generator: Gtranslator 2.91.7\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -154,9 +175,14 @@ msgstr "Закрыть"
msgid "Unminimize"
msgstr "Вернуть"
-#: extensions/window-list/extension.js:118
+#: extensions/window-list/extension.js:118 Settings.ui.h:52
+#, fuzzy
msgid "Minimize"
-msgstr "Свернуть"
+msgstr ""
+"#-#-#-#-# ru.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n"
+"Свернуть\n"
+"#-#-#-#-# ru.po (dash-to-dock) #-#-#-#-#\n"
+"Минимизировать"
#: extensions/window-list/extension.js:125
msgid "Unmaximize"
@@ -264,6 +290,509 @@ msgstr "Рабочая область %d"
msgid "Add Workspace"
msgstr "Добавить рабочую область"
+#: prefs.js:268
+msgid "Primary monitor"
+msgstr "Основной монитор"
+
+#: prefs.js:277 prefs.js:284
+msgid "Secondary monitor "
+msgstr "Дополнительный монитор"
+
+#: prefs.js:309 Settings.ui.h:28
+msgid "Right"
+msgstr "Справа"
+
+#: prefs.js:310 Settings.ui.h:25
+msgid "Left"
+msgstr "Слева"
+
+#: prefs.js:360
+msgid "Intelligent autohide customization"
+msgstr "Настройка автоскрытия"
+
+#: prefs.js:367 prefs.js:560 prefs.js:616
+msgid "Reset to defaults"
+msgstr "Сбросить настройки"
+
+#: prefs.js:553
+msgid "Show dock and application numbers"
+msgstr "Показывать количество запущенных приложений"
+
+#: prefs.js:609
+msgid "Customize middle-click behavior"
+msgstr "Настройка действий для средней кнопки мыши"
+
+#: prefs.js:692
+msgid "Customize running indicators"
+msgstr "Настройка индикаторов запуска"
+
+#: prefs.js:804 Settings.ui.h:74
+msgid "Customize opacity"
+msgstr "Настроить прозрачность"
+
+#: appIcons.js:810
+msgid "All Windows"
+msgstr "Все окна"
+
+#. Translators: %s is "Settings", which is automatically translated. You
+#. can also translate the full message if this fits better your language.
+#: appIcons.js:1127
+#, javascript-format
+msgid "Dash to Dock %s"
+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 "Minimize or overview"
+msgstr "Минимизация или обзор"
+
+#: Settings.ui.h:8
+msgid "Show window previews"
+msgstr "Показать миниатюры окон"
+
+#: Settings.ui.h:9
+msgid "Minimize or show previews"
+msgstr "Минимизация или показ миниатюр"
+
+#: Settings.ui.h:10
+msgid "Focus or show previews"
+msgstr "Минимизация или показ миниатюр"
+
+#: Settings.ui.h:11
+msgid "Quit"
+msgstr "Выйти"
+
+#: Settings.ui.h:12
+msgid "Behavior for Middle-Click."
+msgstr "Действие по нажатию средней кнопки мыши."
+
+#: Settings.ui.h:13
+msgid "Middle-Click action"
+msgstr "Действие по Middle-Click"
+
+#: Settings.ui.h:14
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Действие по нажатию Shift + средняя кнопка мыши."
+
+#: Settings.ui.h:15
+msgid "Shift+Middle-Click action"
+msgstr "Действие по Shift+Middle-Click"
+
+#: Settings.ui.h:16
+msgid "Enable Unity7 like glossy backlit items"
+msgstr "Включить подсветку элементов как в Unity7"
+
+#: Settings.ui.h:17
+msgid "Use dominant color"
+msgstr "Использовать доминирующий цвет"
+
+#: Settings.ui.h:18
+msgid "Customize indicator style"
+msgstr "Настроить стиль индикатора"
+
+#: Settings.ui.h:19
+msgid "Color"
+msgstr "Цвет"
+
+#: Settings.ui.h:20
+msgid "Border color"
+msgstr "Цвет границы"
+
+#: Settings.ui.h:21
+msgid "Border width"
+msgstr "Ширина границы"
+
+#: Settings.ui.h:22
+msgid "Show the dock on"
+msgstr "Показывать Док на"
+
+#: Settings.ui.h:23
+msgid "Show on all monitors."
+msgstr "Показывать на всех мониторах."
+
+#: Settings.ui.h:24
+msgid "Position on screen"
+msgstr "Расположение на экране"
+
+#: Settings.ui.h:26
+msgid "Bottom"
+msgstr "Снизу"
+
+#: Settings.ui.h:27
+msgid "Top"
+msgstr "Сверху"
+
+#: Settings.ui.h:29
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"Скрывать Док, если он перекрывается окном активного приложения. Доступны "
+"дополнительные настройки."
+
+#: Settings.ui.h:30
+msgid "Intelligent autohide"
+msgstr "Интеллектуальное скрытие"
+
+#: Settings.ui.h:31
+msgid "Dock size limit"
+msgstr "Ограничение размера Дока"
+
+#: Settings.ui.h:32
+msgid "Panel mode: extend to the screen edge"
+msgstr "Режим панели: Док растянут по всей стороне экрана"
+
+#: Settings.ui.h:33
+msgid "Icon size limit"
+msgstr "Ограничение размера иконок"
+
+#: Settings.ui.h:34
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr ""
+"Фиксированный размер иконок: используйте прокрутку для доступа к нужному "
+"приложению"
+
+#: Settings.ui.h:35
+msgid "Position and size"
+msgstr "Положение и размер"
+
+#: Settings.ui.h:36
+msgid "Show favorite applications"
+msgstr "Показывать избранные приложения"
+
+#: Settings.ui.h:37
+msgid "Show running applications"
+msgstr "Показывать запущенные приложения"
+
+#: Settings.ui.h:38
+msgid "Isolate workspaces."
+msgstr "Для текущего рабочего стола."
+
+#: Settings.ui.h:39
+msgid "Isolate monitors."
+msgstr "Изолировать мониторы."
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "Показывать миниатюры открытых окон."
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Если отключено, то эти настройки доступны в gnome-tweak-tool или через сайт "
+"дополнений."
+
+#: Settings.ui.h:42
+msgid "Show <i>Applications</i> icon"
+msgstr "Показывать иконку <i>«Приложения»</i>"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr "Расположить кнопку «Приложения» с другой стороны Дока."
+
+#: Settings.ui.h:44
+msgid "Animate <i>Show Applications</i>."
+msgstr "Анимация при показе <i>«Приложений»</i>"
+
+#: Settings.ui.h:45
+msgid "Show trash can"
+msgstr "Показывать корзину"
+
+#: Settings.ui.h:46
+msgid "Show mounted volumes and devices"
+msgstr "Показывать примонтированные разделы и устройства"
+
+#: Settings.ui.h:47
+msgid "Launchers"
+msgstr "Команды"
+
+#: Settings.ui.h:48
+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:49
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "Использовать сочетания клавиш для выбора приложений"
+
+#: Settings.ui.h:50
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Поведение при нажатии на иконку запущенного приложения."
+
+#: Settings.ui.h:51
+msgid "Click action"
+msgstr "Действие по нажатию"
+
+#: Settings.ui.h:53
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Поведение при прокрутке на иконке приложения."
+
+#: Settings.ui.h:54
+msgid "Scroll action"
+msgstr "Действие при прокрутке"
+
+#: Settings.ui.h:55
+msgid "Do nothing"
+msgstr "Ничего не делать"
+
+#: Settings.ui.h:56
+msgid "Switch workspace"
+msgstr "Переключить рабочий стол"
+
+#: Settings.ui.h:57
+msgid "Behavior"
+msgstr "Поведение"
+
+#: Settings.ui.h:58
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Сбалансированные настройки для интеграции Дока с темой Gnome по умолчанию. "
+"Ниже можно установить настройки вручную."
+
+#: Settings.ui.h:59
+msgid "Use built-in theme"
+msgstr "Использовать встроенную тему"
+
+#: Settings.ui.h:60
+msgid "Save space reducing padding and border radius."
+msgstr ""
+"Экономия рабочего пространства за счёт уменьшения промежутков и "
+"использования скругленных углов."
+
+#: Settings.ui.h:61
+msgid "Shrink the dash"
+msgstr "Сжать Док"
+
+#: Settings.ui.h:62
+msgid "Customize windows counter indicators"
+msgstr "Настроить индикаторы количества окон"
+
+#: Settings.ui.h:63
+msgid "Default"
+msgstr "По умолчанию"
+
+#: Settings.ui.h:64
+msgid "Dots"
+msgstr "Точки"
+
+#: Settings.ui.h:65
+msgid "Squares"
+msgstr "Квадраты"
+
+#: Settings.ui.h:66
+msgid "Dashes"
+msgstr "Линии"
+
+#: Settings.ui.h:67
+msgid "Segmented"
+msgstr "Сегменты"
+
+#: Settings.ui.h:68
+msgid "Solid"
+msgstr "Слитно"
+
+#: Settings.ui.h:69
+msgid "Ciliora"
+msgstr ""
+
+#: Settings.ui.h:70
+msgid "Metro"
+msgstr "Метро"
+
+#: Settings.ui.h:71
+msgid "Set the background color for the dash."
+msgstr "Вобор цвета фона для панели."
+
+#: Settings.ui.h:72
+msgid "Customize the dash color"
+msgstr "Настроить цвет Дока"
+
+#: Settings.ui.h:73
+msgid "Tune the dash background opacity."
+msgstr "Настройка прозрачности фона Дока."
+
+#: Settings.ui.h:75
+msgid "Fixed"
+msgstr "Постоянная"
+
+#: Settings.ui.h:76
+msgid "Dynamic"
+msgstr "Динамическая"
+
+#: Settings.ui.h:77
+msgid "Opacity"
+msgstr "Непрозрачность"
+
+#: Settings.ui.h:78
+msgid "Force straight corner\n"
+msgstr "Не скруглять углы\n"
+
+#: Settings.ui.h:80
+msgid "Appearance"
+msgstr "Внешний вид"
+
+#: Settings.ui.h:81
+msgid "version: "
+msgstr "версия: "
+
+#: Settings.ui.h:82
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Показывает панель из режима «Обзор» в виде дока"
+
+#: Settings.ui.h:83
+msgid "Created by"
+msgstr "Автор"
+
+#: Settings.ui.h:84
+msgid "Webpage"
+msgstr "Домашняя страница"
+
+#: Settings.ui.h:85
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">Эта программа распространяется БЕЗ КАКИХ ЛИБО "
+"ГАРАНТИЙ.\n"
+"Смотри <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">GNU General Public License, версия 2 или позднее</a> для информации.</"
+"span>"
+
+#: Settings.ui.h:87
+msgid "About"
+msgstr "О дополнении"
+
+#: Settings.ui.h:88
+msgid "Customize minimum and maximum opacity values"
+msgstr "Настройка минимального и максимального значения прозрачности"
+
+#: Settings.ui.h:89
+msgid "Minimum opacity"
+msgstr "Минимальная прозрачность"
+
+#: Settings.ui.h:90
+msgid "Maximum opacity"
+msgstr "Максимальная прозрачность"
+
+#: Settings.ui.h:91
+msgid "Number overlay"
+msgstr "Отображение номера"
+
+#: Settings.ui.h:92
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"Временно показывать номера приложений рядом с иконками, при нажатии "
+"сочетания клавиш."
+
+#: Settings.ui.h:93
+msgid "Show the dock if it is hidden"
+msgstr "Показать Док, если он скрыт"
+
+#: Settings.ui.h:94
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Если используется автоматическое скрытие, то Док кратковреммено появится при "
+"обработке сочетания клавиш."
+
+#: Settings.ui.h:95
+msgid "Shortcut for the options above"
+msgstr "Сочетания клавиш для указанных параметров"
+
+#: Settings.ui.h:96
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Синтаксис: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:97
+msgid "Hide timeout (s)"
+msgstr "Задержка скрытия (сек.)"
+
+#: Settings.ui.h:98
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Показывать Док при подведении мыши к стороне экрана."
+
+#: Settings.ui.h:99
+msgid "Autohide"
+msgstr "Автоматическое скрытие"
+
+#: Settings.ui.h:100
+msgid "Push to show: require pressure to show the dock"
+msgstr "Давление для появления: требуется давление для открытия Дока"
+
+#: Settings.ui.h:101
+msgid "Enable in fullscreen mode"
+msgstr "Включить для полноэкранного режима"
+
+#: Settings.ui.h:102
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Скрывать Док, когда он перекрыт окнами приложений"
+
+#: Settings.ui.h:103
+msgid "Dodge windows"
+msgstr "Перекрытие окнами"
+
+#: Settings.ui.h:104
+msgid "All windows"
+msgstr "Все окна"
+
+#: Settings.ui.h:105
+msgid "Only focused application's windows"
+msgstr "Только активное окно приложения"
+
+#: Settings.ui.h:106
+msgid "Only maximized windows"
+msgstr "Только развёрнутые окна"
+
+#: Settings.ui.h:107
+msgid "Animation duration (s)"
+msgstr "Время анимации (сек.)"
+
+#: Settings.ui.h:108
+msgid "Show timeout (s)"
+msgstr "Задержка открытия (сек.)"
+
+#: Settings.ui.h:109
+msgid "Pressure threshold"
+msgstr "Порог давления"
+
#~ msgid "Attach modal dialog to the parent window"
#~ msgstr "Прикреплять модальное диалоговое окно к родительскому окну"
@@ -355,3 +884,104 @@ msgstr "Добавить рабочую область"
#~ 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 <i>Show "
+#~ "Applications</i> icon are active."
+#~ msgstr ""
+#~ "При фиксированном размере иконок приложений активна только область иконки "
+#~ "<i>«Приложения»</i> и край дока."
+
+#~ 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 "Максимальный размер иконки"
+
+#~ msgid "Optional features"
+#~ msgstr "Дополнительные функции"
+
+#~ msgid "Deadtime between each workspace switching [ms]"
+#~ msgstr "Задержка между каждым переключением [мс]"
+
+#~ msgid "Only a 1px wide area close to the screen edge is active"
+#~ msgstr "Активная область - 1 пиксель от края экрана"
+
+#~ msgid "All the area of the dock is active"
+#~ msgstr "Активен весь Док"
+
+#~ msgid "Customize actions on mouse click"
+#~ msgstr "Настроить действия по нажатию мыши"
+
+#~ msgid "Action on clicking on running app"
+#~ msgstr "Действие по нажатию на иконку запущенного приложения"
+
+#~ msgid "Minimize window on shift+click (double click for all app windows)"
+#~ msgstr ""
+#~ "Минимизировать окно при shift+click (двойное нажатие скрывает все окна "
+#~ "приложений)"
+
+#~ msgid "Make message tray insensitive to mouse events"
+#~ msgstr "Сделать область сообщений нечувствительной к мыши"
+
+#~ msgid "Appearence and Themes"
+#~ msgstr "Внешний вид и Темы"
+
+#~ msgid ""
+#~ "A customized theme is built in the extension. This is meant to work with "
+#~ "the default Adwaita theme: the dash is shrunk to save space, its "
+#~ "background transparency reduced, and custom indicators for the number of "
+#~ "windows of each application are added."
+#~ msgstr ""
+#~ "Тема встроена в расширение. Она оптимизирована для темы Adwaita по "
+#~ "умолчанию: Док уменьшен, чтобы сохранить пространство; прозрачность фона "
+#~ "снижена; включены индикаторы количества окон для каждого приложения."
+
+#~ msgid ""
+#~ "Alternatively, for a better integration with custom themes, each "
+#~ "customization can be applied indipendently"
+#~ msgstr ""
+#~ "Для большей интеграции с пользовательской темой, каждый параметр можно "
+#~ "настроить независимо"
+
+#~ msgid "Shrink the dash size by reducing padding"
+#~ msgstr "Уменьшить Док за счёт промежутков"
diff --git a/po/sk.po b/po/sk.po
index d352e15a..e8330d08 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -1,11 +1,20 @@
+# #-#-#-#-# sk.po (gnome-shell-extensions) #-#-#-#-#
# Slovak translation for gnome-shell-extensions.
# Copyright (C) 2012-2013 Free Software Foundation, Inc.
# This file is distributed under the same license as the gnome-shell-extensions package.
# Pavol Klačanský <pavol@klacansky.com>, 2012.
# Dušan Kazik <prescott66@gmail.com>, 2012, 2013.
#
+# #-#-#-#-# sk.po #-#-#-#-#
+# Slovak translation of dash-to-dock.
+# Copyright (C) 2016 Dušan Kazik
+# This file is distributed under the same license as the PACKAGE package.
+# Dušan Kazik <prescott66@gmail.com>, 2015, 2016.
+#
+#, fuzzy
msgid ""
msgstr ""
+"#-#-#-#-# sk.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"
@@ -19,6 +28,19 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n"
"X-Generator: Poedit 2.4.1\n"
+"#-#-#-#-# sk.po #-#-#-#-#\n"
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-06-04 12:35+0100\n"
+"PO-Revision-Date: 2016-07-15 12:48+0200\n"
+"Last-Translator: Dušan Kazik <prescott66@gmail.com>\n"
+"Language-Team: \n"
+"Language: sk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -169,8 +191,9 @@ msgstr "Zavrieť"
msgid "Unminimize"
msgstr "Odminimalizovať"
+# #-#-#-#-# sk.po (gnome-shell-extensions) #-#-#-#-#
# label
-#: extensions/window-list/extension.js:118
+#: extensions/window-list/extension.js:118 Settings.ui.h:50
msgid "Minimize"
msgstr "Minimalizovať"
@@ -291,6 +314,427 @@ msgstr "Pracovný priestor č. %d"
msgid "Add Workspace"
msgstr "Pridať pracovný priestor"
+#: prefs.js:113
+msgid "Primary monitor"
+msgstr "Hlavnom monitore"
+
+#: prefs.js:122 prefs.js:129
+msgid "Secondary monitor "
+msgstr "Vedľajšom monitore"
+
+#: prefs.js:154 Settings.ui.h:29
+msgid "Right"
+msgstr "Vpravo"
+
+#: prefs.js:155 Settings.ui.h:26
+msgid "Left"
+msgstr "Vľavo"
+
+#: prefs.js:205
+msgid "Intelligent autohide customization"
+msgstr "Prispôsobenie inteligentného automatického skrývania"
+
+#: prefs.js:212 prefs.js:393 prefs.js:450
+msgid "Reset to defaults"
+msgstr "Obnoviť pôvodné"
+
+#: prefs.js:386
+#, fuzzy
+msgid "Show dock and application numbers"
+msgstr "Zobraziť spustené aplikácie"
+
+#: prefs.js:443
+#, fuzzy
+msgid "Customize middle-click behavior"
+msgstr "Prispôsobenie štýlu indikátorov"
+
+#: prefs.js:514
+msgid "Customize running indicators"
+msgstr "Prispôsobenie "
+
+#: appIcons.js:804
+msgid "All Windows"
+msgstr "Všetky okná"
+
+#: Settings.ui.h:1
+msgid "Customize indicator style"
+msgstr "Prispôsobenie štýlu indikátorov"
+
+#: Settings.ui.h:2
+msgid "Color"
+msgstr "Farba"
+
+#: Settings.ui.h:3
+msgid "Border color"
+msgstr "Farba okraja"
+
+#: Settings.ui.h:4
+msgid "Border width"
+msgstr "Šírka okraja"
+
+#: Settings.ui.h:5
+msgid "Number overlay"
+msgstr ""
+
+#: Settings.ui.h:6
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+
+#: Settings.ui.h:7
+#, fuzzy
+msgid "Show the dock if it is hidden"
+msgstr "Zobraziť dok na"
+
+#: Settings.ui.h:8
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+
+#: Settings.ui.h:9
+msgid "Shortcut for the options above"
+msgstr ""
+
+#: Settings.ui.h:10
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr ""
+
+#: Settings.ui.h:11
+msgid "Hide timeout (s)"
+msgstr "Časový limit na skrytie (s)"
+
+#: Settings.ui.h:12
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Keď je nastavené na minimalizovanie, dvojklik minimalizuje všetky okná "
+"aplikácie."
+
+#: Settings.ui.h:13
+msgid "Shift+Click action"
+msgstr "Akcia Shift+Kliknutie"
+
+#: Settings.ui.h:14
+#, fuzzy
+msgid "Raise window"
+msgstr "Minimalizovať okno"
+
+#: Settings.ui.h:15
+msgid "Minimize window"
+msgstr "Minimalizovať okno"
+
+#: Settings.ui.h:16
+msgid "Launch new instance"
+msgstr "Spustiť novú inštanciu"
+
+#: Settings.ui.h:17
+msgid "Cycle through windows"
+msgstr "Striedať okná"
+
+#: Settings.ui.h:18
+msgid "Quit"
+msgstr ""
+
+#: Settings.ui.h:19
+msgid "Behavior for Middle-Click."
+msgstr ""
+
+#: Settings.ui.h:20
+#, fuzzy
+msgid "Middle-Click action"
+msgstr "Akcia po kliknutí"
+
+#: Settings.ui.h:21
+msgid "Behavior for Shift+Middle-Click."
+msgstr ""
+
+#: Settings.ui.h:22
+#, fuzzy
+msgid "Shift+Middle-Click action"
+msgstr "Akcia Shift+Kliknutie"
+
+#: Settings.ui.h:23
+msgid "Show the dock on"
+msgstr "Zobraziť dok na"
+
+#: Settings.ui.h:24
+#, fuzzy
+msgid "Show on all monitors."
+msgstr "Vedľajšom monitore"
+
+#: Settings.ui.h:25
+msgid "Position on screen"
+msgstr "Pozícia na obrazovke"
+
+#: Settings.ui.h:27
+msgid "Bottom"
+msgstr "Na spodku"
+
+#: Settings.ui.h:28
+msgid "Top"
+msgstr "Na vrchu"
+
+#: Settings.ui.h:30
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"Skryť dok, keď zasahuje do okna aktuálnej aplikácie. Sú dostupné "
+"podrobnejšie nastavenia."
+
+#: Settings.ui.h:31
+msgid "Intelligent autohide"
+msgstr "Inteligentné automatické skrývanie"
+
+#: Settings.ui.h:32
+msgid "Dock size limit"
+msgstr "Limit veľkosti doku"
+
+#: Settings.ui.h:33
+msgid "Panel mode: extend to the screen edge"
+msgstr "Režim panelu: roztiahnutie k hranám obrazovky"
+
+#: Settings.ui.h:34
+msgid "Icon size limit"
+msgstr "Limit veľkosti ikôn"
+
+#: Settings.ui.h:35
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Pevná veľkosť ikôn: rolovaním odhalíte ostatné ikony"
+
+#: Settings.ui.h:36
+msgid "Position and size"
+msgstr "Pozícia a veľkosť"
+
+#: Settings.ui.h:37
+msgid "Show favorite applications"
+msgstr "Zobraziť obľúbené aplikácie"
+
+#: Settings.ui.h:38
+msgid "Show running applications"
+msgstr "Zobraziť spustené aplikácie"
+
+#: Settings.ui.h:39
+msgid "Isolate workspaces."
+msgstr "Oddelené pracovné priestory."
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr ""
+
+#: Settings.ui.h:41
+#, fuzzy
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Ak je voľba zakázaná, nastavenia sú dostupné z nástroja na vyladenie "
+"nastavení prostredia Gnome alebo webovej stránky rozšírenia."
+
+#: Settings.ui.h:42
+msgid "Show <i>Applications</i> icon"
+msgstr "Zobraziť ikonu <i>Aplikácie</i>"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr "Premiestni tlačidlo aplikácií na začiatok doku."
+
+#: Settings.ui.h:44
+msgid "Animate <i>Show Applications</i>."
+msgstr "Animovať položku <i>Zobraziť aplikácie</i>."
+
+#: Settings.ui.h:45
+msgid "Launchers"
+msgstr ""
+
+#: Settings.ui.h:46
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+
+#: Settings.ui.h:47
+msgid "Use keyboard shortcuts to activate apps"
+msgstr ""
+
+#: Settings.ui.h:48
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Správanie pri kliknutí na ikonu spustenej aplikácie."
+
+#: Settings.ui.h:49
+msgid "Click action"
+msgstr "Akcia po kliknutí"
+
+#: Settings.ui.h:51
+#, fuzzy
+msgid "Minimize or overview"
+msgstr "Minimalizovať okno"
+
+#: Settings.ui.h:52
+#, fuzzy
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Správanie pri kliknutí na ikonu spustenej aplikácie."
+
+#: Settings.ui.h:53
+#, fuzzy
+msgid "Scroll action"
+msgstr "Akcia po kliknutí"
+
+#: Settings.ui.h:54
+msgid "Do nothing"
+msgstr "Nevykonať nič"
+
+#: Settings.ui.h:55
+#, fuzzy
+msgid "Switch workspace"
+msgstr "Oddelené pracovné priestory."
+
+#: Settings.ui.h:56
+msgid "Behavior"
+msgstr "Správanie"
+
+#: Settings.ui.h:57
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Niekoľko úprav na integrovanie doku s predvolenou témou prostredia GNOME. "
+"Alternatívne môžu byť povolené špecifické voľby nižšie."
+
+#: Settings.ui.h:58
+msgid "Use built-in theme"
+msgstr "Použiť zabudovanú tému"
+
+#: Settings.ui.h:59
+msgid "Save space reducing padding and border radius."
+msgstr "Ušetrí miesto zmenšením rádiusu odsadenia a okrajov."
+
+#: Settings.ui.h:60
+msgid "Shrink the dash"
+msgstr "Zmenšiť panel"
+
+#: Settings.ui.h:61
+msgid "Show a dot for each windows of the application."
+msgstr "Zobrazí bodku za každé okno aplikácie."
+
+#: Settings.ui.h:62
+msgid "Show windows counter indicators"
+msgstr "Zobraziť indikátory počítadiel okien"
+
+#: Settings.ui.h:63
+msgid "Set the background color for the dash."
+msgstr "Nastaví farbu pozadia panelu."
+
+#: Settings.ui.h:64
+msgid "Customize the dash color"
+msgstr "Prispôsobenie farby panelu"
+
+#: Settings.ui.h:65
+msgid "Tune the dash background opacity."
+msgstr "Vyladí krytie pozadia panelu."
+
+#: Settings.ui.h:66
+msgid "Customize opacity"
+msgstr "Prispôsobenie krytia"
+
+#: Settings.ui.h:67
+msgid "Opacity"
+msgstr "Krytie"
+
+#: Settings.ui.h:68
+msgid "Force straight corner\n"
+msgstr ""
+
+#: Settings.ui.h:70
+msgid "Appearance"
+msgstr "Vzhľad"
+
+#: Settings.ui.h:71
+msgid "version: "
+msgstr "Verzia: c"
+
+#: Settings.ui.h:72
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Presunie panel z prehľadu transformovaním do doku"
+
+#: Settings.ui.h:73
+msgid "Created by"
+msgstr "Vytvoril"
+
+#: Settings.ui.h:74
+msgid "Webpage"
+msgstr "Webová stránka"
+
+#: Settings.ui.h:75
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">Tento program je ABSOLÚTNE BEZ ZÁRUKY.\n"
+"Pre viac podrobností si pozrite <a href=\"https://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.html\">Licenciu GNU General Public, verzie 2 alebo novšiu</"
+"a>.</span>"
+
+#: Settings.ui.h:77
+msgid "About"
+msgstr "O rozšírení"
+
+#: Settings.ui.h:78
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Zobrazí dok prejdením myši na hranu obrazovky."
+
+#: Settings.ui.h:79
+msgid "Autohide"
+msgstr "Automatické skrytie"
+
+#: Settings.ui.h:80
+msgid "Push to show: require pressure to show the dock"
+msgstr "Zobraziť stlačením: vyžaduje tlak na zobrazenie doku"
+
+#: Settings.ui.h:81
+msgid "Enable in fullscreen mode"
+msgstr "Povoliť v režime na celú obrazovku"
+
+#: Settings.ui.h:82
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Zobrazí dok, keď nebude zasahovať do okien aplikácií."
+
+#: Settings.ui.h:83
+msgid "Dodge windows"
+msgstr "Vyhýbať sa oknám"
+
+#: Settings.ui.h:84
+msgid "All windows"
+msgstr "Všetky okná"
+
+#: Settings.ui.h:85
+msgid "Only focused application's windows"
+msgstr "Iba zamerané okná aplikácií"
+
+#: Settings.ui.h:86
+msgid "Only maximized windows"
+msgstr "Iba maximalizované okná"
+
+#: Settings.ui.h:87
+msgid "Animation duration (s)"
+msgstr "Trvanie animácie (s)"
+
+#: Settings.ui.h:88
+msgid "0.000"
+msgstr "0.000"
+
+#: Settings.ui.h:89
+msgid "Show timeout (s)"
+msgstr "Zobraziť časový limit (s)"
+
+#: Settings.ui.h:90
+msgid "Pressure threshold"
+msgstr "Medza tlaku"
+
# TreeViewColumn
#~ msgid "Application"
#~ msgstr "Aplikácia"
@@ -406,3 +850,13 @@ msgstr "Pridať pracovný priestor"
# RadioButton label
#~ msgid "Window management and application launching"
#~ msgstr "Správca okien a spúšťanie aplikácií"
+
+#~ msgid ""
+#~ "With fixed icon size, only the edge of the dock and the <i>Show "
+#~ "Applications</i> icon are active."
+#~ msgstr ""
+#~ "S pevnou veľkosťou ikon je aktívna iba hrana doku a ikona <i>Zobraziť "
+#~ "aplikácie</i>."
+
+#~ msgid "Switch workspace by scrolling on the dock"
+#~ msgstr "Prepínať pracovné priestory rolovaním na doku"
diff --git a/po/sr.po b/po/sr.po
index dba6f9ff..92ab6945 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -1,3 +1,4 @@
+# #-#-#-#-# sr.po (gnome-shell-extensions master) #-#-#-#-#
# Serbian translation for gnome-shell-extensions.
# Courtesy of Prevod.org team (http://prevod.org/) -- 2012—2017.
# This file is distributed under the same license as the gnome-shell-extensions package.
@@ -5,8 +6,16 @@
# Мирослав Николић <miroslavnikolic@rocketmail.com>, 2012—2017.
# Марко М. Костић <marko.m.kostic@gmail.com>, 2020.
#
+# #-#-#-#-# sr.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 <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
msgid ""
msgstr ""
+"#-#-#-#-# sr.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"
@@ -22,6 +31,20 @@ msgstr ""
"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2\n"
"X-Project-Style: gnome\n"
"X-Generator: Gtranslator 3.36.0\n"
+"#-#-#-#-# sr.po #-#-#-#-#\n"
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-09-16 13:45+0200\n"
+"PO-Revision-Date: 2017-09-20 18:59+0200\n"
+"Last-Translator: Слободан Терзић <Xabre@archlinux.info>\n"
+"Language-Team: \n"
+"Language: sr\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=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"
@@ -155,9 +178,14 @@ msgstr "Затвори"
msgid "Unminimize"
msgstr "Поништи умањење"
-#: extensions/window-list/extension.js:118
+#: extensions/window-list/extension.js:118 Settings.ui.h:53
+#, fuzzy
msgid "Minimize"
-msgstr "Умањи"
+msgstr ""
+"#-#-#-#-# sr.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"Умањи\n"
+"#-#-#-#-# sr.po #-#-#-#-#\n"
+"минимизуј"
#: extensions/window-list/extension.js:125
msgid "Unmaximize"
@@ -264,6 +292,435 @@ msgstr "%d. радни простор"
msgid "Add Workspace"
msgstr "Додај радни простор"
+#: prefs.js:113
+msgid "Primary monitor"
+msgstr "примарном монитору"
+
+#: prefs.js:122 prefs.js:129
+msgid "Secondary monitor "
+msgstr "секундарном монитору"
+
+#: prefs.js:154 Settings.ui.h:31
+msgid "Right"
+msgstr "десно"
+
+#: prefs.js:155 Settings.ui.h:28
+msgid "Left"
+msgstr "лево"
+
+#: prefs.js:205
+msgid "Intelligent autohide customization"
+msgstr "Поставке интелигентног аутоматског сакривања"
+
+#: prefs.js:212 prefs.js:397 prefs.js:454
+msgid "Reset to defaults"
+msgstr "Поврати основно"
+
+#: prefs.js:390
+msgid "Show dock and application numbers"
+msgstr "Прикажи док и бројеве програма"
+
+#: prefs.js:447
+msgid "Customize middle-click behavior"
+msgstr "Прилагоћавање понашања средњег клика"
+
+#: prefs.js:518
+msgid "Customize running indicators"
+msgstr "Прилагођавање индикатора покренутих"
+
+#: appIcons.js:1144
+msgid "All Windows"
+msgstr "Сви прозори"
+
+#. Translators: %s is "Settings", which is automatically translated. You
+#. can also translate the full message if this fits better your language.
+#: appIcons.js:1450
+#, javascript-format
+msgid "Dash to Dock %s"
+msgstr "%s плоче/панела"
+
+#: Settings.ui.h:1
+msgid "Customize indicator style"
+msgstr "Прилагоћавање стила индикатора"
+
+#: Settings.ui.h:2
+msgid "Color"
+msgstr "Боја"
+
+#: Settings.ui.h:3
+msgid "Border color"
+msgstr "Боја ивице"
+
+#: Settings.ui.h:4
+msgid "Border width"
+msgstr "Ширина ивице"
+
+#: Settings.ui.h:5
+msgid "Number overlay"
+msgstr "Бројне налепнице"
+
+#: Settings.ui.h:6
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"Привремено прикажи бројеве програма изнад иконица, према припадајућој "
+"пречици."
+
+#: Settings.ui.h:7
+msgid "Show the dock if it is hidden"
+msgstr "Прикажи док уколико је сакривен"
+
+#: Settings.ui.h:8
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Уколико се користи аутоматско сакривање, док ће се приказати на тренутак при "
+"окидању пречице."
+
+#: Settings.ui.h:9
+msgid "Shortcut for the options above"
+msgstr "Пречица за горе наведене опције"
+
+#: Settings.ui.h:10
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Синтакса: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:11
+msgid "Hide timeout (s)"
+msgstr "Застој скривања"
+
+#: Settings.ui.h:12
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Кад је постављено на минимизовање, дупли клик минимизује све прозоре "
+"програма."
+
+#: Settings.ui.h:13
+msgid "Shift+Click action"
+msgstr "Радња шифт+клика"
+
+#: Settings.ui.h:14
+msgid "Raise window"
+msgstr "издигни прозор"
+
+#: Settings.ui.h:15
+msgid "Minimize window"
+msgstr "минимизуј прозор"
+
+#: Settings.ui.h:16
+msgid "Launch new instance"
+msgstr "покрени нови примерак"
+
+#: Settings.ui.h:17
+msgid "Cycle through windows"
+msgstr "кружење кроз прозоре"
+
+#: Settings.ui.h:18
+msgid "Minimize or overview"
+msgstr "минимиуј или преглед"
+
+#: Settings.ui.h:19
+msgid "Show window previews"
+msgstr "прикажи сличице прозора"
+
+#: Settings.ui.h:20
+msgid "Quit"
+msgstr "напусти"
+
+#: Settings.ui.h:21
+msgid "Behavior for Middle-Click."
+msgstr "Понашање средњег клика."
+
+#: Settings.ui.h:22
+msgid "Middle-Click action"
+msgstr "Радња средњег клика"
+
+#: Settings.ui.h:23
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Пoнашање шифт+средњег клика."
+
+#: Settings.ui.h:24
+msgid "Shift+Middle-Click action"
+msgstr "Радња шифт+средњегклика"
+
+#: Settings.ui.h:25
+msgid "Show the dock on"
+msgstr "Прикажи док на"
+
+#: Settings.ui.h:26
+msgid "Show on all monitors."
+msgstr "Прикажи на свим мониторима."
+
+#: Settings.ui.h:27
+msgid "Position on screen"
+msgstr "Позиција на екрану"
+
+#: Settings.ui.h:29
+msgid "Bottom"
+msgstr "дно"
+
+#: Settings.ui.h:30
+msgid "Top"
+msgstr "врх"
+
+#: Settings.ui.h:32
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"Сакриј док када је на путу прозора тренутног програма. Доступне су финије "
+"поставке."
+
+#: Settings.ui.h:33
+msgid "Intelligent autohide"
+msgstr "Интелигентно аутоматско сакривање"
+
+#: Settings.ui.h:34
+msgid "Dock size limit"
+msgstr "Ограничење величине дока"
+
+#: Settings.ui.h:35
+msgid "Panel mode: extend to the screen edge"
+msgstr "Режим панела: проширен до ивица екрана"
+
+#: Settings.ui.h:36
+msgid "Icon size limit"
+msgstr "Ограничење величине иконица"
+
+#: Settings.ui.h:37
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Устаљена величина иконица: клизајте за друге иконе"
+
+#: Settings.ui.h:38
+msgid "Position and size"
+msgstr "Позиција и величина"
+
+#: Settings.ui.h:39
+msgid "Show favorite applications"
+msgstr "Приказ омиљених програма"
+
+#: Settings.ui.h:40
+msgid "Show running applications"
+msgstr "Приказ покренутих програма"
+
+#: Settings.ui.h:41
+msgid "Isolate workspaces."
+msgstr "Изолуј радне просторе."
+
+#: Settings.ui.h:42
+msgid "Isolate monitors."
+msgstr "Изолуј мониторе."
+
+#: Settings.ui.h:43
+msgid "Show open windows previews."
+msgstr "Прикажи сличице отворених прозора."
+
+#: Settings.ui.h:44
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Уколико је онемогућено, ове поставке су доступне кроз алатку за лицкање или "
+"веб сајт проширења."
+
+#: Settings.ui.h:45
+msgid "Show <i>Applications</i> icon"
+msgstr "Приказ иконице <i>Прикажи програме</i>"
+
+#: Settings.ui.h:46
+msgid "Move the applications button at the beginning of the dock."
+msgstr "Помери дугме програма на почетак дока."
+
+#: Settings.ui.h:47
+msgid "Animate <i>Show Applications</i>."
+msgstr "Анимирај приказ програма."
+
+#: Settings.ui.h:48
+msgid "Launchers"
+msgstr "Покретачи"
+
+#: Settings.ui.h:49
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Укључује Супер+(0-9) као пречице за активацију програма. Такође је могуће "
+"користити уз shift и ctrl."
+
+#: Settings.ui.h:50
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "Активирај програме пречицама тастатуре"
+
+#: Settings.ui.h:51
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Понашање при клику на покренути програм."
+
+#: Settings.ui.h:52
+msgid "Click action"
+msgstr "Радња клика"
+
+#: Settings.ui.h:54
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Понашање при клизању на иконицу покренутог програма."
+
+#: Settings.ui.h:55
+msgid "Scroll action"
+msgstr "Радња клизања на иконицу"
+
+#: Settings.ui.h:56
+msgid "Do nothing"
+msgstr "ништа"
+
+#: Settings.ui.h:57
+msgid "Switch workspace"
+msgstr "пребаци радни простор"
+
+#: Settings.ui.h:58
+msgid "Behavior"
+msgstr "Понашање"
+
+#: Settings.ui.h:59
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Неколико поставки намењених уграђивању дока у основну тему Гнома. "
+"Алтернативно, посебне поставке се могу уредити испод."
+
+#: Settings.ui.h:60
+msgid "Use built-in theme"
+msgstr "Користи уграђену тему"
+
+#: Settings.ui.h:61
+msgid "Save space reducing padding and border radius."
+msgstr "Чува простор сужавањем попуне и опсега ивица."
+
+#: Settings.ui.h:62
+msgid "Shrink the dash"
+msgstr "Скупи плочу"
+
+#: Settings.ui.h:63
+msgid "Show a dot for each windows of the application."
+msgstr "Приказује тачку за сваки прозор програма."
+
+#: Settings.ui.h:64
+msgid "Show windows counter indicators"
+msgstr "Приказ индикаторa бројача прозора."
+
+#: Settings.ui.h:65
+msgid "Set the background color for the dash."
+msgstr "Постави позадинску боју плоче."
+
+#: Settings.ui.h:66
+msgid "Customize the dash color"
+msgstr "Прилагоди боју плоче"
+
+#: Settings.ui.h:67
+msgid "Tune the dash background opacity."
+msgstr "Прилагоди прозирност позадине плоче."
+
+#: Settings.ui.h:68
+msgid "Customize opacity"
+msgstr "Прилагоћавање прозирности"
+
+#: Settings.ui.h:69
+msgid "Opacity"
+msgstr "Прозирност"
+
+#: Settings.ui.h:70
+msgid "Enable Unity7 like glossy backlit items"
+msgstr "Укључи позадинске ефекте попут Unity7"
+
+#: Settings.ui.h:71
+msgid "Force straight corner\n"
+msgstr "Наметни равне углове\n"
+
+#: Settings.ui.h:73
+msgid "Appearance"
+msgstr "Изглед"
+
+#: Settings.ui.h:74
+msgid "version: "
+msgstr "верзија: "
+
+#: Settings.ui.h:75
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Помера плочу из глобалног приказа, претварајући је у док"
+
+#: Settings.ui.h:76
+msgid "Created by"
+msgstr "Направи"
+
+#: Settings.ui.h:77
+msgid "Webpage"
+msgstr "Веб страница"
+
+#: Settings.ui.h:78
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">Овај програм се доставља БЕЗ ИКАКВИХ ГАРАНЦИЈА.\n"
+"Погледајте <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">ГНУову Општу Јавну лиценцу, верзија 2 или каснија</a>, за детаље.</span>"
+
+#: Settings.ui.h:80
+msgid "About"
+msgstr "О програму"
+
+#: Settings.ui.h:81
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Прикажи док прелазом миша пеко ивице екрана."
+
+#: Settings.ui.h:82
+msgid "Autohide"
+msgstr "Аутоматско сакривање"
+
+#: Settings.ui.h:83
+msgid "Push to show: require pressure to show the dock"
+msgstr "Приказ притиском: захтева притисак за приказ дока"
+
+#: Settings.ui.h:84
+msgid "Enable in fullscreen mode"
+msgstr "Омогући у целоекранском режиму"
+
+#: Settings.ui.h:85
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Приказује док када није на путу прозорима програма."
+
+#: Settings.ui.h:86
+msgid "Dodge windows"
+msgstr "Избегавање розора"
+
+#: Settings.ui.h:87
+msgid "All windows"
+msgstr "Сви прозори"
+
+#: Settings.ui.h:88
+msgid "Only focused application's windows"
+msgstr "Само прозор фокусираног програма"
+
+#: Settings.ui.h:89
+msgid "Only maximized windows"
+msgstr "Само максимизовани прозори"
+
+#: Settings.ui.h:90
+msgid "Animation duration (s)"
+msgstr "Трајање(а) анимације"
+
+#: Settings.ui.h:91
+msgid "Show timeout (s)"
+msgstr "Застој приказивања"
+
+#: Settings.ui.h:92
+msgid "Pressure threshold"
+msgstr "Праг притиска"
+
#~ msgid "Application"
#~ msgstr "Програм"
@@ -356,3 +813,20 @@ msgstr "Додај радни простор"
#~ msgid "Window management and application launching"
#~ msgstr "Управљање прозорима и покретање програма"
+
+#~ msgid "0.000"
+#~ msgstr "0,000"
+
+#, fuzzy
+#~ msgid ""
+#~ "With fixed icon size, only the edge of the dock and the <i>Show "
+#~ "Applications</i> icon are active."
+#~ msgstr ""
+#~ "Ако се иконе преклапају на доку, приказује се само икона <i>Прикажи "
+#~ "програме</i>."
+
+#~ msgid "Switch workspace by scrolling on the dock"
+#~ msgstr "Промена радног простора клизањем по доку"
+
+#~ msgid "Only consider windows of the focused application"
+#~ msgstr "Разматрај само прозор фокусираног програма"
diff --git a/po/sr@latin.po b/po/sr@latin.po
index 92dae13d..1a7e0f10 100644
--- a/po/sr@latin.po
+++ b/po/sr@latin.po
@@ -1,10 +1,19 @@
+# #-#-#-#-# sr@latin.po (gnome-shell-extensions master) #-#-#-#-#
# Serbian translation for gnome-shell-extensions.
# Courtesy of Prevod.org team (http://prevod.org/) -- 2012—2017.
# This file is distributed under the same license as the gnome-shell-extensions package.
# Miloš Popović <gpopac@gmail.com>, 2012.
# Miroslav Nikolić <miroslavnikolic@rocketmail.com>, 2012—2017.
+# #-#-#-#-# sr@latin.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 <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
msgid ""
msgstr ""
+"#-#-#-#-# sr@latin.po (gnome-shell-extensions master) #-#-#-#-#\n"
"Project-Id-Version: gnome-shell-extensions master\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=extensions\n"
@@ -16,9 +25,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-Project-Style: gnome\n"
+"#-#-#-#-# sr@latin.po #-#-#-#-#\n"
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-09-16 13:45+0200\n"
+"PO-Revision-Date: 2017-09-20 18:56+0200\n"
+"Last-Translator: Slobodan Terzić <Xabre@archlinux.info>\n"
+"Language-Team: \n"
+"Language: sr@latin\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=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"
@@ -39,7 +62,8 @@ msgstr "Prikačinje prozorče roditeljskom prozoru"
msgid ""
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
msgstr ""
-"Ovaj ključ prevazilazi ključ u „org.gnome.mutter“ kada pokreće Gnomovu školjku."
+"Ovaj ključ prevazilazi ključ u „org.gnome.mutter“ kada pokreće Gnomovu "
+"školjku."
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:16
msgid "Arrangement of buttons on the titlebar"
@@ -50,8 +74,8 @@ msgid ""
"This key overrides the key in org.gnome.desktop.wm.preferences when running "
"GNOME Shell."
msgstr ""
-"Ovaj ključ prevazilazi ključ u „org.gnome.desktop.wm.preferences“ kada pokreće "
-"Gnomovu školjku."
+"Ovaj ključ prevazilazi ključ u „org.gnome.desktop.wm.preferences“ kada "
+"pokreće Gnomovu školjku."
#: data/org.gnome.shell.extensions.classic-overrides.gschema.xml:24
msgid "Enable edge tiling when dropping windows on screen edges"
@@ -259,9 +283,14 @@ msgstr "Zatvori"
msgid "Unminimize"
msgstr "Poništi umanjenje"
-#: extensions/window-list/extension.js:130
+#: extensions/window-list/extension.js:130 Settings.ui.h:53
+#, fuzzy
msgid "Minimize"
-msgstr "Umanji"
+msgstr ""
+"#-#-#-#-# sr@latin.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"Umanji\n"
+"#-#-#-#-# sr@latin.po #-#-#-#-#\n"
+"minimizuj"
#: extensions/window-list/extension.js:136
msgid "Unmaximize"
@@ -358,6 +387,435 @@ msgstr "Naziv"
msgid "Workspace %d"
msgstr "%d. radni prostor"
+#: prefs.js:113
+msgid "Primary monitor"
+msgstr "primarnom monitoru"
+
+#: prefs.js:122 prefs.js:129
+msgid "Secondary monitor "
+msgstr "sekundarnom monitoru"
+
+#: prefs.js:154 Settings.ui.h:31
+msgid "Right"
+msgstr "desno"
+
+#: prefs.js:155 Settings.ui.h:28
+msgid "Left"
+msgstr "levo"
+
+#: prefs.js:205
+msgid "Intelligent autohide customization"
+msgstr "Postavke inteligentnog automatskog sakrivanja"
+
+#: prefs.js:212 prefs.js:397 prefs.js:454
+msgid "Reset to defaults"
+msgstr "Povrati osnovno"
+
+#: prefs.js:390
+msgid "Show dock and application numbers"
+msgstr "Prikaži dok i brojeve programa"
+
+#: prefs.js:447
+msgid "Customize middle-click behavior"
+msgstr "Prilagoćavanje ponašanja srednjeg klika"
+
+#: prefs.js:518
+msgid "Customize running indicators"
+msgstr "Prilagođavanje indikatora pokrenutih"
+
+#: appIcons.js:1144
+msgid "All Windows"
+msgstr "Svi prozori"
+
+#. Translators: %s is "Settings", which is automatically translated. You
+#. can also translate the full message if this fits better your language.
+#: appIcons.js:1450
+#, javascript-format
+msgid "Dash to Dock %s"
+msgstr "%s ploče/panela"
+
+#: Settings.ui.h:1
+msgid "Customize indicator style"
+msgstr "Prilagoćavanje stila indikatora"
+
+#: Settings.ui.h:2
+msgid "Color"
+msgstr "Boja"
+
+#: Settings.ui.h:3
+msgid "Border color"
+msgstr "Boja ivice"
+
+#: Settings.ui.h:4
+msgid "Border width"
+msgstr "Širina ivice"
+
+#: Settings.ui.h:5
+msgid "Number overlay"
+msgstr "Brojne nalepnice"
+
+#: Settings.ui.h:6
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"Privremeno prikaži brojeve programa iznad ikonica, prema pripadajućoj "
+"prečici."
+
+#: Settings.ui.h:7
+msgid "Show the dock if it is hidden"
+msgstr "Prikaži dok ukoliko je sakriven"
+
+#: Settings.ui.h:8
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Ukoliko se koristi automatsko sakrivanje, dok će se prikazati na trenutak "
+"pri okidanju prečice."
+
+#: Settings.ui.h:9
+msgid "Shortcut for the options above"
+msgstr "Prečica za gore navedene opcije"
+
+#: Settings.ui.h:10
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Sintaksa: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:11
+msgid "Hide timeout (s)"
+msgstr "Zastoj skrivanja"
+
+#: Settings.ui.h:12
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Kad je postavljeno na minimizovanje, dupli klik minimizuje sve prozore "
+"programa."
+
+#: Settings.ui.h:13
+msgid "Shift+Click action"
+msgstr "Radnja šift+klika"
+
+#: Settings.ui.h:14
+msgid "Raise window"
+msgstr "izdigni prozor"
+
+#: Settings.ui.h:15
+msgid "Minimize window"
+msgstr "minimizuj prozor"
+
+#: Settings.ui.h:16
+msgid "Launch new instance"
+msgstr "pokreni novi primerak"
+
+#: Settings.ui.h:17
+msgid "Cycle through windows"
+msgstr "kruženje kroz prozore"
+
+#: Settings.ui.h:18
+msgid "Minimize or overview"
+msgstr "minimiuj ili pregled"
+
+#: Settings.ui.h:19
+msgid "Show window previews"
+msgstr "prikaži sličice prozora"
+
+#: Settings.ui.h:20
+msgid "Quit"
+msgstr "napusti"
+
+#: Settings.ui.h:21
+msgid "Behavior for Middle-Click."
+msgstr "Ponašanje srednjeg klika."
+
+#: Settings.ui.h:22
+msgid "Middle-Click action"
+msgstr "Radnja srednjeg klika"
+
+#: Settings.ui.h:23
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Ponašanje šift+srednjeg klika."
+
+#: Settings.ui.h:24
+msgid "Shift+Middle-Click action"
+msgstr "Radnja šift+srednjegklika"
+
+#: Settings.ui.h:25
+msgid "Show the dock on"
+msgstr "Prikaži dok na"
+
+#: Settings.ui.h:26
+msgid "Show on all monitors."
+msgstr "Prikaži na svim monitorima."
+
+#: Settings.ui.h:27
+msgid "Position on screen"
+msgstr "Pozicija na ekranu"
+
+#: Settings.ui.h:29
+msgid "Bottom"
+msgstr "dno"
+
+#: Settings.ui.h:30
+msgid "Top"
+msgstr "vrh"
+
+#: Settings.ui.h:32
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"Sakrij dok kada je na putu prozora trenutnog programa. Dostupne su finije "
+"postavke."
+
+#: Settings.ui.h:33
+msgid "Intelligent autohide"
+msgstr "Inteligentno automatsko sakrivanje"
+
+#: Settings.ui.h:34
+msgid "Dock size limit"
+msgstr "Ograničenje veličine doka"
+
+#: Settings.ui.h:35
+msgid "Panel mode: extend to the screen edge"
+msgstr "Režim panela: proširen do ivica ekrana"
+
+#: Settings.ui.h:36
+msgid "Icon size limit"
+msgstr "Ograničenje veličine ikonica"
+
+#: Settings.ui.h:37
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Ustaljena veličina ikonica: klizajte za druge ikone"
+
+#: Settings.ui.h:38
+msgid "Position and size"
+msgstr "Pozicija i veličina"
+
+#: Settings.ui.h:39
+msgid "Show favorite applications"
+msgstr "Prikaz omiljenih programa"
+
+#: Settings.ui.h:40
+msgid "Show running applications"
+msgstr "Prikaz pokrenutih programa"
+
+#: Settings.ui.h:41
+msgid "Isolate workspaces."
+msgstr "Izoluj radne prostore."
+
+#: Settings.ui.h:42
+msgid "Isolate monitors."
+msgstr "Izoluj monitore."
+
+#: Settings.ui.h:43
+msgid "Show open windows previews."
+msgstr "Prikaži sličice otvorenih prozora."
+
+#: Settings.ui.h:44
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Ukoliko je onemogućeno, ove postavke su dostupne kroz alatku za lickanje ili "
+"veb sajt proširenja."
+
+#: Settings.ui.h:45
+msgid "Show <i>Applications</i> icon"
+msgstr "Prikaz ikonice <i>Prikaži programe</i>"
+
+#: Settings.ui.h:46
+msgid "Move the applications button at the beginning of the dock."
+msgstr "Pomeri dugme programa na početak doka."
+
+#: Settings.ui.h:47
+msgid "Animate <i>Show Applications</i>."
+msgstr "Animiraj prikaz programa."
+
+#: Settings.ui.h:48
+msgid "Launchers"
+msgstr "Pokretači"
+
+#: Settings.ui.h:49
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Uključuje Super+(0-9) kao prečice za aktivaciju programa. Takođe je moguće "
+"koristiti uz shift i ctrl."
+
+#: Settings.ui.h:50
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "Aktiviraj programe prečicama tastature"
+
+#: Settings.ui.h:51
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Ponašanje pri kliku na pokrenuti program."
+
+#: Settings.ui.h:52
+msgid "Click action"
+msgstr "Radnja klika"
+
+#: Settings.ui.h:54
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Ponašanje pri klizanju na ikonicu pokrenutog programa."
+
+#: Settings.ui.h:55
+msgid "Scroll action"
+msgstr "Radnja klizanja na ikonicu"
+
+#: Settings.ui.h:56
+msgid "Do nothing"
+msgstr "ništa"
+
+#: Settings.ui.h:57
+msgid "Switch workspace"
+msgstr "prebaci radni prostor"
+
+#: Settings.ui.h:58
+msgid "Behavior"
+msgstr "Ponašanje"
+
+#: Settings.ui.h:59
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Nekoliko postavki namenjenih ugrađivanju doka u osnovnu temu Gnoma. "
+"Alternativno, posebne postavke se mogu urediti ispod."
+
+#: Settings.ui.h:60
+msgid "Use built-in theme"
+msgstr "Koristi ugrađenu temu"
+
+#: Settings.ui.h:61
+msgid "Save space reducing padding and border radius."
+msgstr "Čuva prostor sužavanjem popune i opsega ivica."
+
+#: Settings.ui.h:62
+msgid "Shrink the dash"
+msgstr "Skupi ploču"
+
+#: Settings.ui.h:63
+msgid "Show a dot for each windows of the application."
+msgstr "Prikazuje tačku za svaki prozor programa."
+
+#: Settings.ui.h:64
+msgid "Show windows counter indicators"
+msgstr "Prikaz indikatora brojača prozora."
+
+#: Settings.ui.h:65
+msgid "Set the background color for the dash."
+msgstr "Postavi pozadinsku boju ploče."
+
+#: Settings.ui.h:66
+msgid "Customize the dash color"
+msgstr "Prilagodi boju ploče"
+
+#: Settings.ui.h:67
+msgid "Tune the dash background opacity."
+msgstr "Prilagodi prozirnost pozadine ploče."
+
+#: Settings.ui.h:68
+msgid "Customize opacity"
+msgstr "Prilagoćavanje prozirnosti"
+
+#: Settings.ui.h:69
+msgid "Opacity"
+msgstr "Prozirnost"
+
+#: Settings.ui.h:70
+msgid "Enable Unity7 like glossy backlit items"
+msgstr "Uključi pozadinske efekte poput Unity7"
+
+#: Settings.ui.h:71
+msgid "Force straight corner\n"
+msgstr "Nametni ravne uglove\n"
+
+#: Settings.ui.h:73
+msgid "Appearance"
+msgstr "Izgled"
+
+#: Settings.ui.h:74
+msgid "version: "
+msgstr "verzija: "
+
+#: Settings.ui.h:75
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Pomera ploču iz globalnog prikaza, pretvarajući je u dok"
+
+#: Settings.ui.h:76
+msgid "Created by"
+msgstr "Napravi"
+
+#: Settings.ui.h:77
+msgid "Webpage"
+msgstr "Veb stranica"
+
+#: Settings.ui.h:78
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">Ovaj program se dostavlja BEZ IKAKVIH GARANCIJA.\n"
+"Pogledajte <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
+"\">GNUovu Opštu Javnu licencu, verzija 2 ili kasnija</a>, za detalje.</span>"
+
+#: Settings.ui.h:80
+msgid "About"
+msgstr "O programu"
+
+#: Settings.ui.h:81
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Prikaži dok prelazom miša peko ivice ekrana."
+
+#: Settings.ui.h:82
+msgid "Autohide"
+msgstr "Automatsko sakrivanje"
+
+#: Settings.ui.h:83
+msgid "Push to show: require pressure to show the dock"
+msgstr "Prikaz pritiskom: zahteva pritisak za prikaz doka"
+
+#: Settings.ui.h:84
+msgid "Enable in fullscreen mode"
+msgstr "Omogući u celoekranskom režimu"
+
+#: Settings.ui.h:85
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Prikazuje dok kada nije na putu prozorima programa."
+
+#: Settings.ui.h:86
+msgid "Dodge windows"
+msgstr "Izbegavanje rozora"
+
+#: Settings.ui.h:87
+msgid "All windows"
+msgstr "Svi prozori"
+
+#: Settings.ui.h:88
+msgid "Only focused application's windows"
+msgstr "Samo prozor fokusiranog programa"
+
+#: Settings.ui.h:89
+msgid "Only maximized windows"
+msgstr "Samo maksimizovani prozori"
+
+#: Settings.ui.h:90
+msgid "Animation duration (s)"
+msgstr "Trajanje(a) animacije"
+
+#: Settings.ui.h:91
+msgid "Show timeout (s)"
+msgstr "Zastoj prikazivanja"
+
+#: Settings.ui.h:92
+msgid "Pressure threshold"
+msgstr "Prag pritiska"
+
#~ msgid "CPU"
#~ msgstr "Procesor"
@@ -369,3 +827,20 @@ msgstr "%d. radni prostor"
#~ msgid "Window management and application launching"
#~ msgstr "Upravljanje prozorima i pokretanje programa"
+
+#~ msgid "0.000"
+#~ msgstr "0,000"
+
+#, fuzzy
+#~ msgid ""
+#~ "With fixed icon size, only the edge of the dock and the <i>Show "
+#~ "Applications</i> icon are active."
+#~ msgstr ""
+#~ "Ako se ikone preklapaju na doku, prikazuje se samo ikona <i>Prikaži "
+#~ "programe</i>."
+
+#~ msgid "Switch workspace by scrolling on the dock"
+#~ msgstr "Promena radnog prostora klizanjem po doku"
+
+#~ msgid "Only consider windows of the focused application"
+#~ msgstr "Razmatraj samo prozor fokusiranog programa"
diff --git a/po/sv.po b/po/sv.po
index 989074aa..2ca88c58 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -1,3 +1,4 @@
+# #-#-#-#-# 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.
@@ -5,8 +6,17 @@
# Mattias Eriksson <snaggen@gmail.com>, 2014.
# Anders Jonsson <anders.jonsson@norsjovallen.se>, 2015, 2017, 2019, 2020, 2021.
#
+# #-#-#-#-# sv.po #-#-#-#-#
+# Swedish translation for dash-to-dock.
+# Copyright © 2020 dash-to-dock's COPYRIGHT HOLDER
+# This file is distributed under the same license as the dash-to-dock package.
+# Anders Jonsson <anders.jonsson@norsjovallen.se>, 2016.
+# Morgan Antonsson <morgan.antonsson@gmail.com>, 2020.
+#
+#, fuzzy
msgid ""
msgstr ""
+"#-#-#-#-# 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"
@@ -19,6 +29,18 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.4.2\n"
+"#-#-#-#-# sv.po #-#-#-#-#\n"
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-08-03 19:27+0200\n"
+"PO-Revision-Date: 2020-08-03 19:41+0200\n"
+"Last-Translator: Morgan Antonsson <morgan.antonsson@gmail.com>\n"
+"Language-Team: \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.3\n"
#: data/gnome-classic.desktop.in:3
msgid "GNOME Classic"
@@ -152,7 +174,7 @@ msgstr "Stäng"
msgid "Unminimize"
msgstr "Avminimera"
-#: extensions/window-list/extension.js:118
+#: extensions/window-list/extension.js:118 Settings.ui.h:52
msgid "Minimize"
msgstr "Minimera"
@@ -259,3 +281,525 @@ msgstr "Arbetsyta %d"
#: extensions/workspace-indicator/prefs.js:218
msgid "Add Workspace"
msgstr "Lägg till arbetsyta"
+
+#: prefs.js:268
+msgid "Primary monitor"
+msgstr "Primär skärm"
+
+#: prefs.js:277 prefs.js:284
+msgid "Secondary monitor "
+msgstr "Sekundär skärm "
+
+#: prefs.js:309 Settings.ui.h:28
+msgid "Right"
+msgstr "Höger"
+
+#: prefs.js:310 Settings.ui.h:25
+msgid "Left"
+msgstr "Vänster"
+
+#: prefs.js:360
+msgid "Intelligent autohide customization"
+msgstr "Anpassning av intelligent automatiskt döljande"
+
+#: prefs.js:367 prefs.js:560 prefs.js:616
+msgid "Reset to defaults"
+msgstr "Återställ till standardvärden"
+
+#: prefs.js:553
+msgid "Show dock and application numbers"
+msgstr "Visa docka och programnummer"
+
+#: prefs.js:609
+msgid "Customize middle-click behavior"
+msgstr "Anpassa mellanklicksbeteende"
+
+#: prefs.js:692
+msgid "Customize running indicators"
+msgstr "Anpassa körningsindikatorer"
+
+#: prefs.js:804 Settings.ui.h:74
+msgid "Customize opacity"
+msgstr "Anpassa opacitet"
+
+#: appIcons.js:797
+msgid "All Windows"
+msgstr "Alla fönster"
+
+#: appIcons.js:916
+#, javascript-format
+msgid "Quit %d Windows"
+msgstr "Stäng %d fönster"
+
+#. Translators: %s is "Settings", which is automatically translated. You
+#. can also translate the full message if this fits better your language.
+#: appIcons.js:1134
+#, javascript-format
+msgid "Dash to Dock %s"
+msgstr "%s för Dash to Dock"
+
+#: locations.js:80
+msgid "Trash"
+msgstr "Papperskorg"
+
+#: locations.js:89
+msgid "Empty Trash"
+msgstr "Töm papperskorgen"
+
+#: locations.js:207
+msgid "Mount"
+msgstr "Montera"
+
+#: locations.js:250
+msgid "Eject"
+msgstr "Mata ut"
+
+#: locations.js:255
+msgid "Unmount"
+msgstr "Avmontera"
+
+#: Settings.ui.h:1
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Då inställd till minimera så minimerar dubbelklick alla fönster för "
+"programmet."
+
+#: Settings.ui.h:2
+msgid "Shift+Click action"
+msgstr "Skift+klick-åtgärd"
+
+#: Settings.ui.h:3
+msgid "Raise window"
+msgstr "Höj fönster"
+
+#: Settings.ui.h:4
+msgid "Minimize window"
+msgstr "Minimera fönster"
+
+#: Settings.ui.h:5
+msgid "Launch new instance"
+msgstr "Starta ny instans"
+
+#: Settings.ui.h:6
+msgid "Cycle through windows"
+msgstr "Växla mellan fönster"
+
+#: Settings.ui.h:7
+msgid "Minimize or overview"
+msgstr "Minimera eller visa översikt"
+
+#: Settings.ui.h:8
+msgid "Show window previews"
+msgstr "Visa förhandsgranskningar av fönster"
+
+#: Settings.ui.h:9
+msgid "Minimize or show previews"
+msgstr "Minimera eller visa förhandsgranskningar"
+
+#: Settings.ui.h:10
+msgid "Focus or show previews"
+msgstr "Fokusera eller visa förhandsgranskningar"
+
+#: Settings.ui.h:11
+msgid "Quit"
+msgstr "Avsluta"
+
+#: Settings.ui.h:12
+msgid "Behavior for Middle-Click."
+msgstr "Beteende för mellanklick."
+
+#: Settings.ui.h:13
+msgid "Middle-Click action"
+msgstr "Åtgärd för mellanklick"
+
+#: Settings.ui.h:14
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Beteende för skift+mellanklick."
+
+#: Settings.ui.h:15
+msgid "Shift+Middle-Click action"
+msgstr "Åtgärd för skift+mellanklick"
+
+#: Settings.ui.h:16
+msgid "Enable Unity7 like glossy backlit items"
+msgstr "Aktivera bakgrundsbelysta blanka knappar"
+
+#: Settings.ui.h:17
+msgid "Use dominant color"
+msgstr "Använd dominerande färg"
+
+#: Settings.ui.h:18
+msgid "Customize indicator style"
+msgstr "Anpassa indikatorstil"
+
+#: Settings.ui.h:19
+msgid "Color"
+msgstr "Färg"
+
+#: Settings.ui.h:20
+msgid "Border color"
+msgstr "Kantfärg"
+
+#: Settings.ui.h:21
+msgid "Border width"
+msgstr "Kantbredd"
+
+#: Settings.ui.h:22
+msgid "Show the dock on"
+msgstr "Visa dockan på"
+
+#: Settings.ui.h:23
+msgid "Show on all monitors."
+msgstr "Visa på alla skärmar."
+
+#: Settings.ui.h:24
+msgid "Position on screen"
+msgstr "Position på skärmen"
+
+#: Settings.ui.h:26
+msgid "Bottom"
+msgstr "Nederkant"
+
+#: Settings.ui.h:27
+msgid "Top"
+msgstr "Överkant"
+
+#: Settings.ui.h:29
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"Dölj dockan då den är i vägen för ett fönster för det aktuella programmet. "
+"Mer förfinade inställningar finns tillgängliga."
+
+#: Settings.ui.h:30
+msgid "Intelligent autohide"
+msgstr "Intelligent automatiskt döljande"
+
+#: Settings.ui.h:31
+msgid "Dock size limit"
+msgstr "Storleksgräns för docka"
+
+#: Settings.ui.h:32
+msgid "Panel mode: extend to the screen edge"
+msgstr "Panelläge: sträck ut till skärmkanten"
+
+#: Settings.ui.h:33
+msgid "Icon size limit"
+msgstr "Storleksgräns för ikoner"
+
+#: Settings.ui.h:34
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Fast ikonstorlek: rulla för att visa dolda ikoner"
+
+#: Settings.ui.h:35
+msgid "Position and size"
+msgstr "Position och storlek"
+
+#: Settings.ui.h:36
+msgid "Show favorite applications"
+msgstr "Visa favoritprogram"
+
+#: Settings.ui.h:37
+msgid "Show running applications"
+msgstr "Visa körande program"
+
+#: Settings.ui.h:38
+msgid "Isolate workspaces."
+msgstr "Visa endast arbetsytans fönster."
+
+#: Settings.ui.h:39
+msgid "Isolate monitors."
+msgstr "Visa endast skärmens fönster."
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "Visa förhandsgranskningar av öppna fönster."
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Om inaktiverad är dessa inställningar tillgängliga från justeringsverktyg "
+"eller webbplatsen för utökningar."
+
+#: Settings.ui.h:42
+msgid "Show <i>Applications</i> icon"
+msgstr "Visa <i>Program</i>-ikon"
+
+#: 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
+msgid "Animate <i>Show Applications</i>."
+msgstr "Animera <i>Visa program</i>."
+
+#: Settings.ui.h:45
+msgid "Show trash can"
+msgstr "Visa papperskorgen"
+
+#: Settings.ui.h:46
+msgid "Show mounted volumes and devices"
+msgstr "Visa monterade volymer och enheter"
+
+#: Settings.ui.h:47
+msgid "Launchers"
+msgstr "Programstartare"
+
+#: Settings.ui.h:48
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"Använd Super+(0-9) som tangentbordsgenvägar för att aktivera program. De kan "
+"även användas tillsammans med skift- och ctrl-tangenterna."
+
+#: 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
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Beteende då ikonen för ett körande program klickas."
+
+#: Settings.ui.h:51
+msgid "Click action"
+msgstr "Klickåtgärd"
+
+#: Settings.ui.h:53
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Beteende vid rullning över programikon."
+
+#: Settings.ui.h:54
+msgid "Scroll action"
+msgstr "Rullåtgärd"
+
+#: Settings.ui.h:55
+msgid "Do nothing"
+msgstr "Gör ingenting"
+
+#: Settings.ui.h:56
+msgid "Switch workspace"
+msgstr "Byt arbetsyta"
+
+#: Settings.ui.h:57
+msgid "Behavior"
+msgstr "Beteende"
+
+#: Settings.ui.h:58
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Några anpassningar för att integrera dockan med GNOME:s standardtema. "
+"Alternativt kan specifika alternativ aktiveras nedan."
+
+#: Settings.ui.h:59
+msgid "Use built-in theme"
+msgstr "Använd inbyggt tema"
+
+#: Settings.ui.h:60
+msgid "Save space reducing padding and border radius."
+msgstr "Spara utrymme genom att minska utfyllnad och kantradie."
+
+#: Settings.ui.h:61
+msgid "Shrink the dash"
+msgstr "Krymp snabbstartspanelen"
+
+#: Settings.ui.h:62
+msgid "Customize windows counter indicators"
+msgstr "Anpassa räknare för öppna fönster"
+
+#: Settings.ui.h:63
+msgid "Default"
+msgstr "Standard"
+
+#: Settings.ui.h:64
+msgid "Dots"
+msgstr "Prickar"
+
+#: Settings.ui.h:65
+msgid "Squares"
+msgstr "Kvadrater"
+
+#: Settings.ui.h:66
+msgid "Dashes"
+msgstr "Streck"
+
+#: Settings.ui.h:67
+msgid "Segmented"
+msgstr "Segment"
+
+#: Settings.ui.h:68
+msgid "Solid"
+msgstr "Solid"
+
+#: Settings.ui.h:69
+msgid "Ciliora"
+msgstr "Ciliora"
+
+#: Settings.ui.h:70
+msgid "Metro"
+msgstr "Metro"
+
+#: Settings.ui.h:71
+msgid "Set the background color for the dash."
+msgstr "Ställ in bakgrundsfärg för snabbstartspanelen."
+
+#: Settings.ui.h:72
+msgid "Customize the dash color"
+msgstr "Anpassa färgen för snabbstartspanelen"
+
+#: Settings.ui.h:73
+msgid "Tune the dash background opacity."
+msgstr "Justera opacitet för bakgrunden till snabbstartspanelen."
+
+#: Settings.ui.h:75
+msgid "Fixed"
+msgstr "Fast"
+
+#: Settings.ui.h:76
+msgid "Dynamic"
+msgstr "Dynamisk"
+
+#: Settings.ui.h:77
+msgid "Opacity"
+msgstr "Opacitet"
+
+#: Settings.ui.h:78
+msgid "Force straight corner"
+msgstr "Tvinga räta hörn"
+
+#: Settings.ui.h:79
+msgid "Appearance"
+msgstr "Utseende"
+
+#: Settings.ui.h:80
+msgid "version: "
+msgstr "version: "
+
+#: Settings.ui.h:81
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr ""
+"Flyttar snabbstartspanelen från översiktsvyn och förvandlar den till en docka"
+
+#: Settings.ui.h:82
+msgid "Created by"
+msgstr "Skapat av"
+
+#: Settings.ui.h:83
+msgid "Webpage"
+msgstr "Webbsida"
+
+#: Settings.ui.h:84
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">Detta program kommer HELT UTAN GARANTI.\n"
+"Se <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html\">GNU "
+"General Public License, version 2 eller senare</a> för detaljer.</span>"
+
+#: Settings.ui.h:86
+msgid "About"
+msgstr "Om"
+
+#: Settings.ui.h:87
+msgid "Customize minimum and maximum opacity values"
+msgstr "Anpassa minsta och högsta värden för opacitet"
+
+#: Settings.ui.h:88
+msgid "Minimum opacity"
+msgstr "Minsta opacitet"
+
+#: Settings.ui.h:89
+msgid "Maximum opacity"
+msgstr "Högsta opacitet"
+
+#: Settings.ui.h:90
+msgid "Number overlay"
+msgstr "Nummermarkeringar"
+
+#: Settings.ui.h:91
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"Visa tillfälligt programmens tangentbordsgenvägsnummer ovanpå dess ikoner."
+
+#: Settings.ui.h:92
+msgid "Show the dock if it is hidden"
+msgstr "Visa dockan om den är dold"
+
+#: Settings.ui.h:93
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Om automatiskt döljande är aktiverat kommer dockan att synas tillfälligt när "
+"tangentbordsgenvägen triggas."
+
+#: Settings.ui.h:94
+msgid "Shortcut for the options above"
+msgstr "Tangentbordsgenväg för alternativen ovan"
+
+#: Settings.ui.h:95
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Syntax: <Skift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:96
+msgid "Hide timeout (s)"
+msgstr "Tidsgräns för att dölja (s)"
+
+#: Settings.ui.h:97
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Visa dockan genom att flytta muspekaren till skärmkanten."
+
+#: Settings.ui.h:98
+msgid "Autohide"
+msgstr "Dölj automatiskt"
+
+#: Settings.ui.h:99
+msgid "Push to show: require pressure to show the dock"
+msgstr "Tryck för att visa: kräv tryck för att visa dockan"
+
+#: Settings.ui.h:100
+msgid "Enable in fullscreen mode"
+msgstr "Aktivera i helskärmsläge"
+
+#: Settings.ui.h:101
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Visa dockan då den inte är i vägen för programfönster."
+
+#: Settings.ui.h:102
+msgid "Dodge windows"
+msgstr "Undvik fönster"
+
+#: Settings.ui.h:103
+msgid "All windows"
+msgstr "Alla fönster"
+
+#: Settings.ui.h:104
+msgid "Only focused application's windows"
+msgstr "Endast fokuserade programs fönster"
+
+#: Settings.ui.h:105
+msgid "Only maximized windows"
+msgstr "Endast maximerade fönster"
+
+#: Settings.ui.h:106
+msgid "Animation duration (s)"
+msgstr "Animationens varaktighet (s)"
+
+#: Settings.ui.h:107
+msgid "Show timeout (s)"
+msgstr "Tidsgräns för att visa (s)"
+
+#: Settings.ui.h:108
+msgid "Pressure threshold"
+msgstr "Tröskelvärde för tryck"
diff --git a/po/tr.po b/po/tr.po
index 0a5f7459..38bbc7b6 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -1,3 +1,4 @@
+# #-#-#-#-# 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.
@@ -9,8 +10,23 @@
# Sabri Ünal <libreajans@gmail.com>, 2014, 2019.
# Emin Tufan Çetin <etcetin@gmail.com>, 2019, 2020.
#
+# #-#-#-#-# tr.po (dash-to-dock master) #-#-#-#-#
+# Turkish translation for dash-to-dock GNOME shell extension.
+# Copyright (C) 2015-2019, dash-to-dock'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the dash-to-dock package.
+#
+# Mustafa Akgün <mustafa.akgun@gmail.com>, 2015.
+# Çağatay Yiğit Şahin <cyigitsahin@outlook.com>, 2016.
+# Serdar Sağlam <teknomobil@yandex.com>, 2018, 2019.
+# Sabri Ünal <libreajans@gmail.com>, 2019.
+#
+# Note for all turkish translators:
+# Lütfen GNOME Shell çevirileri ile uyumlu çevirmeye gayret edelim.
+#
+#, fuzzy
msgid ""
msgstr ""
+"#-#-#-#-# 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"
@@ -24,6 +40,19 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 2.2.3\n"
+"#-#-#-#-# tr.po (dash-to-dock master) #-#-#-#-#\n"
+"Project-Id-Version: dash-to-dock master\n"
+"Report-Msgid-Bugs-To: https://github.com/micheleg/dash-to-dock\n"
+"POT-Creation-Date: 2019-10-13 08:54+0300\n"
+"PO-Revision-Date: 2019-11-11 17:21+0300\n"
+"Last-Translator: Sabri Ünal <libreajans@gmail.com>\n"
+"Language-Team: \n"
+"Language: tr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Poedit 2.0.6\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -158,9 +187,14 @@ msgstr "Kapat"
msgid "Unminimize"
msgstr "Önceki duruma getir"
-#: extensions/window-list/extension.js:118
+#: extensions/window-list/extension.js:118 Settings.ui.h:52
+#, fuzzy
msgid "Minimize"
-msgstr "Simge durumuna küçült"
+msgstr ""
+"#-#-#-#-# tr.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"Simge durumuna küçült\n"
+"#-#-#-#-# tr.po (dash-to-dock master) #-#-#-#-#\n"
+"Küçült"
#: extensions/window-list/extension.js:125
msgid "Unmaximize"
@@ -268,6 +302,519 @@ msgstr "Çalışma Alanı %d"
msgid "Add Workspace"
msgstr "Çalışma Alanı Ekle"
+#: prefs.js:264
+msgid "Primary monitor"
+msgstr "Ana ekran"
+
+#: prefs.js:273 prefs.js:280
+msgid "Secondary monitor "
+msgstr "İkincil ekran "
+
+#: prefs.js:305 Settings.ui.h:28
+msgid "Right"
+msgstr "Sağ"
+
+#: prefs.js:306 Settings.ui.h:25
+msgid "Left"
+msgstr "Sol"
+
+#: prefs.js:356
+msgid "Intelligent autohide customization"
+msgstr "Akıllı otomatik gizleme özelleştirmeleri"
+
+#: prefs.js:363 prefs.js:556 prefs.js:612
+msgid "Reset to defaults"
+msgstr "Varsayılan ayarlara 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
+msgid "Customize middle-click behavior"
+msgstr "Orta tık davranışını özelleştir"
+
+#: prefs.js:688
+msgid "Customize running indicators"
+msgstr "Çalışan göstergeleri özelleştir"
+
+#: prefs.js:800 Settings.ui.h:74
+msgid "Customize opacity"
+msgstr "Matlığı özelleştir"
+
+#: appIcons.js:809
+msgid "All Windows"
+msgstr "Tüm Pencereler"
+
+# %s değişkeni Ayarlar olarak çevrildiği için, bir ı harfi ekleyerek Türkçeye uyumlu hale getiriyoruz.
+#. Translators: %s is "Settings", which is automatically translated. You
+#. can also translate the full message if this fits better your language.
+#: appIcons.js:1126
+#, javascript-format
+msgid "Dash to Dock %s"
+msgstr "Dash to Dock %sı"
+
+#: Settings.ui.h:1
+msgid ""
+"When set to minimize, double clicking minimizes all the windows of the "
+"application."
+msgstr ""
+"Küçültmeye ayarlandığında, çift tıklamak uygulamanın tüm pencerelerini "
+"küçültür."
+
+#: Settings.ui.h:2
+msgid "Shift+Click action"
+msgstr "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
+msgid "Minimize window"
+msgstr "Pencereyi küçült"
+
+#: Settings.ui.h:5
+msgid "Launch new instance"
+msgstr "Yeni uygulama örneği başlat"
+
+#: Settings.ui.h:6
+msgid "Cycle through windows"
+msgstr "Pencere döngüsü"
+
+#: Settings.ui.h:7
+msgid "Minimize or overview"
+msgstr "Küçült yada genel bakış"
+
+#: Settings.ui.h:8
+msgid "Show window previews"
+msgstr "Pencere önizlemelerini göster"
+
+#: Settings.ui.h:9
+msgid "Minimize or show previews"
+msgstr "Küçült yada önizlemeleri göster"
+
+#: Settings.ui.h:10
+msgid "Focus or show previews"
+msgstr "Odaklan veya önizlemeleri göster"
+
+#: Settings.ui.h:11
+msgid "Quit"
+msgstr "Çık"
+
+#: Settings.ui.h:12
+msgid "Behavior for Middle-Click."
+msgstr "Orta Tıklama davranışı."
+
+#: Settings.ui.h:13
+msgid "Middle-Click action"
+msgstr "Orta Tıklama eylemi"
+
+#: Settings.ui.h:14
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Shift + Orta Tıklama davranışı."
+
+#: Settings.ui.h:15
+msgid "Shift+Middle-Click action"
+msgstr "Shift + Orta Tıklama eylemi"
+
+# glossy backlit için serbest çeviri yapıldı
+#: Settings.ui.h:16
+msgid "Enable Unity7 like glossy backlit items"
+msgstr "Unity7 tipi parlak öğeleri etkinleştir"
+
+#: Settings.ui.h:17
+msgid "Use dominant color"
+msgstr "Baskın rengi kullan"
+
+#: Settings.ui.h:18
+msgid "Customize indicator style"
+msgstr "Gösterge biçemini özelleştir"
+
+#: Settings.ui.h:19
+msgid "Color"
+msgstr "Renk"
+
+#: Settings.ui.h:20
+msgid "Border color"
+msgstr "Kenarlık rengi"
+
+#: Settings.ui.h:21
+msgid "Border width"
+msgstr "Kenarlık genişliği"
+
+#: Settings.ui.h:22
+msgid "Show the dock on"
+msgstr "Rıhtım'ı göster"
+
+#: Settings.ui.h:23
+msgid "Show on all monitors."
+msgstr "Tüm ekranlarda göster."
+
+#: Settings.ui.h:24
+msgid "Position on screen"
+msgstr "Ekrandaki konumu"
+
+#: Settings.ui.h:26
+msgid "Bottom"
+msgstr "Alt"
+
+#: Settings.ui.h:27
+msgid "Top"
+msgstr "Üst"
+
+#: Settings.ui.h:29
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"Geçerli uygulamanın penceresini engellediğinde rıhtımı gizle. Daha detaylı "
+"ayarlar mevcuttur."
+
+#: Settings.ui.h:30
+msgid "Intelligent autohide"
+msgstr "Akıllı gizleme"
+
+# son limit cümlesi kasten çevrilmedi
+#: Settings.ui.h:31
+msgid "Dock size limit"
+msgstr "Rıhtım boyutu"
+
+#: Settings.ui.h:32
+msgid "Panel mode: extend to the screen edge"
+msgstr "Panel kipi: Ekran köşelerine genişlet"
+
+# son limit cümlesi kasten çevrilmedi
+#: Settings.ui.h:33
+msgid "Icon size limit"
+msgstr "Simge boyutu"
+
+#: Settings.ui.h:34
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "Sabit simge boyutu: Diğer simgeleri görmek için kaydır"
+
+#: Settings.ui.h:35
+msgid "Position and size"
+msgstr "Konum ve boyut"
+
+#: Settings.ui.h:36
+msgid "Show favorite applications"
+msgstr "Sık kullanılan uygulamaları göster"
+
+#: Settings.ui.h:37
+msgid "Show running applications"
+msgstr "Çalışan uygulamaları göster"
+
+#: Settings.ui.h:38
+msgid "Isolate workspaces."
+msgstr "Çalışma alanlarını ayır."
+
+#: Settings.ui.h:39
+msgid "Isolate monitors."
+msgstr "Ekranları ayır."
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "Açık pencere önizlemelerini göster."
+
+# Anlamlı ve açıklayıcı olması için ilave değerler eklendi
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr ""
+"Eğer kapatılmışsa, bu ayarlara GNOME İnce Ayarlar (gnome-tweak-tool) "
+"uygulamasından veya GNOME eklentileri (https://extensions.gnome.org) "
+"sitesinden ulaşılabilir."
+
+#: Settings.ui.h:42
+msgid "Show <i>Applications</i> icon"
+msgstr "<i>Uygulamalar</i> simgesini göster"
+
+#: 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
+msgid "Animate <i>Show Applications</i>."
+msgstr "<i>Uygulamalar</i> açılırken canlandırma göster."
+
+#: Settings.ui.h:45
+msgid "Show trash can"
+msgstr "Çöp kutusunu göster"
+
+#: Settings.ui.h:46
+msgid "Show mounted volumes and devices"
+msgstr "Bağlı birimleri ve aygıtları göster"
+
+#: Settings.ui.h:47
+msgid "Launchers"
+msgstr "Başlatıcılar"
+
+#: Settings.ui.h:48
+msgid ""
+"Enable Super+(0-9) as shortcuts to activate apps. It can also be used "
+"together with Shift and Ctrl."
+msgstr ""
+"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."
+
+#: 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
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "Çalışan bir uygulamanın simgesine tıklandığındaki davranışı."
+
+#: Settings.ui.h:51
+msgid "Click action"
+msgstr "Tıklama eylemi"
+
+#: Settings.ui.h:53
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "Bir uygulamanın simgesini kaydırdığınızdaki davranışı."
+
+#: Settings.ui.h:54
+msgid "Scroll action"
+msgstr "Kaydırma eylemi"
+
+#: Settings.ui.h:55
+msgid "Do nothing"
+msgstr "Hiçbir şey yapma"
+
+#: Settings.ui.h:56
+msgid "Switch workspace"
+msgstr "Çalışma alanını değiştir"
+
+#: Settings.ui.h:57
+msgid "Behavior"
+msgstr "Davranış"
+
+# Çeviri yapmak yerine, Türkçe'de anlamlı, konuma uyumlu özgün metin oluşturuldu.
+#: Settings.ui.h:58
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"Sistemde bulunan etkin GNOME teması kullanılır ve rıhtım ona göre "
+"şekillenir. Özelleştirmek isterseniz bu menüyü kapatın."
+
+#: Settings.ui.h:59
+msgid "Use built-in theme"
+msgstr "Yerleşik temayı kullan"
+
+#: Settings.ui.h:60
+msgid "Save space reducing padding and border radius."
+msgstr "Dolgu ve kenarlığı azaltarak yer kazan."
+
+# Shrink için genelde küçült çevirisini kullanıyoruz ama,
+# anlamlı ve eylemle uyumlu olduğu için daralt çevirisi kullanıldı
+#: Settings.ui.h:61
+msgid "Shrink the dash"
+msgstr "Paneli daralt"
+
+#: Settings.ui.h:62
+msgid "Customize windows counter indicators"
+msgstr "Pencere sayı göstergelerini özelleştir"
+
+#: Settings.ui.h:63
+msgid "Default"
+msgstr "Varsayılan"
+
+#: Settings.ui.h:64
+msgid "Dots"
+msgstr "Noktalar"
+
+#: Settings.ui.h:65
+msgid "Squares"
+msgstr "Kareler"
+
+#: Settings.ui.h:66
+msgid "Dashes"
+msgstr "Tireler"
+
+#: Settings.ui.h:67
+msgid "Segmented"
+msgstr "Segmentler"
+
+#: Settings.ui.h:68
+msgid "Solid"
+msgstr "Kalın çizgi"
+
+#: Settings.ui.h:69
+msgid "Ciliora"
+msgstr "Nokta ve çizgi"
+
+#: Settings.ui.h:70
+msgid "Metro"
+msgstr "Metro"
+
+#: Settings.ui.h:71
+msgid "Set the background color for the dash."
+msgstr "Panel arkaplan rengini ayarla."
+
+#: Settings.ui.h:72
+msgid "Customize the dash color"
+msgstr "Panel rengini özelleştir"
+
+#: Settings.ui.h:73
+msgid "Tune the dash background opacity."
+msgstr "Panel arkaplan matlığını ayarla."
+
+#: Settings.ui.h:75
+msgid "Fixed"
+msgstr "Sabit"
+
+#: Settings.ui.h:76
+msgid "Dynamic"
+msgstr "Dinamik"
+
+#: Settings.ui.h:77
+msgid "Opacity"
+msgstr "Matlık"
+
+# Daha anlaşılır olması için serbest çeviri yapıldı
+#: Settings.ui.h:78
+msgid "Force straight corner\n"
+msgstr "Köşeleri düzleştir\n"
+
+#: Settings.ui.h:80
+msgid "Appearance"
+msgstr "Görünüm"
+
+#: Settings.ui.h:81
+msgid "version: "
+msgstr "sürüm: "
+
+#: Settings.ui.h:82
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "Paneli genel görünümden taşır ve rıhtıma dönüştürür"
+
+# Çeviri anlamlı olması için : eklendi
+#: Settings.ui.h:83
+msgid "Created by"
+msgstr "Oluşturan:"
+
+#: Settings.ui.h:84
+msgid "Webpage"
+msgstr "Web sitesi"
+
+#: Settings.ui.h:85
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">Bu program kesinlikle hiçbir garanti vermiyor..\n"
+"Ayrıntılar için <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0."
+"html\">GNU Genel Kamu Lisansı, sürüm 2 veya üstü</a> bağlantısına bakın</"
+"span>"
+
+#: Settings.ui.h:87
+msgid "About"
+msgstr "Hakkında"
+
+# minimum and maximum değerleri çevrilmedi
+#: Settings.ui.h:88
+msgid "Customize minimum and maximum opacity values"
+msgstr "Matlık değerlerini özelleştir"
+
+#: Settings.ui.h:89
+msgid "Minimum opacity"
+msgstr "Asgari matlık"
+
+#: Settings.ui.h:90
+msgid "Maximum opacity"
+msgstr "Azami matlık"
+
+#: Settings.ui.h:91
+msgid "Number overlay"
+msgstr "Sayı yerleşimi"
+
+#: Settings.ui.h:92
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr ""
+"Uygulama numaralarını, karşılık gelen simgelere göre geçici olarak göster "
+"kısayol."
+
+#: Settings.ui.h:93
+msgid "Show the dock if it is hidden"
+msgstr "Gizlenmişse rıhtım'ı göster"
+
+#: Settings.ui.h:94
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr ""
+"Otomatik gizleme kullanıyorsanız, kısayol tetiklendiğinde rıhtım kısa bir "
+"süre için görünür."
+
+#: Settings.ui.h:95
+msgid "Shortcut for the options above"
+msgstr "Yukarıdaki seçenekler için kısayol"
+
+#: Settings.ui.h:96
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Sözdizimi: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:97
+msgid "Hide timeout (s)"
+msgstr "Gizleme zaman aşımı (s)"
+
+#: Settings.ui.h:98
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "Fare ekran köşeleri üzerindeyken rıhtım'ı göster."
+
+#: Settings.ui.h:99
+msgid "Autohide"
+msgstr "Otomatik gizle"
+
+# Anlaşılması kolay olsun diye, pressure burada etki olarak çevrilmiştir
+#: Settings.ui.h:100
+msgid "Push to show: require pressure to show the dock"
+msgstr "Göstermek için it: Rıhtım'ın gösterilmesi için etki gerekir"
+
+#: Settings.ui.h:101
+msgid "Enable in fullscreen mode"
+msgstr "Tam ekran kipinde etkinleştir"
+
+#: Settings.ui.h:102
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "Uygulama penceresine engel olmadığında rıhtımı göster."
+
+#: Settings.ui.h:103
+msgid "Dodge windows"
+msgstr "Pencelereleri atlat"
+
+#: Settings.ui.h:104
+msgid "All windows"
+msgstr "Tüm pencereler"
+
+#: Settings.ui.h:105
+msgid "Only focused application's windows"
+msgstr "Sadece odaklanılan uygulamanın pencereleri"
+
+#: Settings.ui.h:106
+msgid "Only maximized windows"
+msgstr "Sadece büyütülen pencereler"
+
+#: Settings.ui.h:107
+msgid "Animation duration (s)"
+msgstr "Canlandırma süresi (s)"
+
+#: Settings.ui.h:108
+msgid "Show timeout (s)"
+msgstr "Gösterim zaman aşımı (s)"
+
+# Anlaşılması kolay olsun diye, pressure burada etki olarak çevrilmiştir
+#: Settings.ui.h:109
+msgid "Pressure threshold"
+msgstr "Etki eşiği"
+
#~ msgid "Application"
#~ msgstr "Uygulama"
@@ -353,3 +900,6 @@ msgstr "Çalışma Alanı Ekle"
#~ msgid "Memory"
#~ msgstr "Bellek"
+
+#~ msgid "Adaptive"
+#~ msgstr "Uyarlanır"
diff --git a/po/zh_CN.po b/po/zh_CN.po
index feb1bff9..338e86ed 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -1,3 +1,4 @@
+# #-#-#-#-# 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.
@@ -8,8 +9,18 @@
# Mingcong Bai <jeffbai@aosc.xyz>, 2017.
# Dingzhong Chen <wsxy162@gmail.com>, 2019.
#
+# #-#-#-#-# zh_CN.po (Dash to Dock) #-#-#-#-#
+# Simplified Chinese translation of dash-to-dock
+# Copyright (C) 2013 tuhaihe
+# This file is distributed under the same license as the dash-to-dock package.
+# tuhaihe <1132321739qq@gmail.com>, 2013.
+# 绿色圣光 <lishaohui.qd@163.com>, 2015, 2016, 2017.
+# zhmars <1403122061@qq.com>, 2019, 2020.
+#
+#, fuzzy
msgid ""
msgstr ""
+"#-#-#-#-# 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"
@@ -23,6 +34,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 Dock) #-#-#-#-#\n"
+"Project-Id-Version: Dash to Dock\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-03-23 15:33+0800\n"
+"PO-Revision-Date: 2017-08-03 22:49+0800\n"
+"Last-Translator: zhmars <1403122061@qq.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: Gtranslator 2.91.7\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -152,7 +176,7 @@ msgstr "关闭"
msgid "Unminimize"
msgstr "取消最小化"
-#: extensions/window-list/extension.js:118
+#: extensions/window-list/extension.js:118 Settings.ui.h:52
msgid "Minimize"
msgstr "最小化"
@@ -257,6 +281,523 @@ msgstr "工作区 %d"
msgid "Add Workspace"
msgstr "添加工作区"
+#: prefs.js:310 Settings.ui.h:25
+#, fuzzy
+msgid "Left"
+msgstr ""
+"#-#-#-#-# zh_CN.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"左\n"
+"#-#-#-#-# zh_CN.po (Dash to Dock) #-#-#-#-#\n"
+"左侧"
+
+#: prefs.js:309 Settings.ui.h:28
+#, fuzzy
+msgid "Right"
+msgstr ""
+"#-#-#-#-# zh_CN.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"右\n"
+"#-#-#-#-# zh_CN.po (Dash to Dock) #-#-#-#-#\n"
+"右侧"
+
+#: prefs.js:268
+msgid "Primary monitor"
+msgstr "主显示器"
+
+#: prefs.js:277 prefs.js:284
+msgid "Secondary monitor "
+msgstr "副显示器"
+
+#: prefs.js:360
+msgid "Intelligent autohide customization"
+msgstr "智能自动隐藏自定义"
+
+#: prefs.js:367 prefs.js:560 prefs.js:616
+msgid "Reset to defaults"
+msgstr "重置为默认值"
+
+#: prefs.js:553
+msgid "Show dock and application numbers"
+msgstr "显示 Dock 和应用程序编号"
+
+#: prefs.js:609
+msgid "Customize middle-click behavior"
+msgstr "自定义中键点击行为"
+
+#: prefs.js:692
+msgid "Customize running indicators"
+msgstr "自定义“运行中”指示器"
+
+#: prefs.js:804 Settings.ui.h:74
+msgid "Customize opacity"
+msgstr "自定义不透明度"
+
+#: appIcons.js:810
+msgid "All Windows"
+msgstr "所有窗口"
+
+#. Translators: %s is "Settings", which is automatically translated. You
+#. can also translate the full message if this fits better your language.
+#: appIcons.js:1125
+#, javascript-format
+msgid "Dash to Dock %s"
+msgstr "Dash to Dock %s"
+
+#: locations.js:65
+msgid "Trash"
+msgstr "回收站"
+
+#: locations.js:74
+msgid "Empty Trash"
+msgstr "清空回收站"
+
+#: locations.js:189
+msgid "Mount"
+msgstr "挂载"
+
+#: locations.js:232
+msgid "Eject"
+msgstr "弹出"
+
+#: locations.js:237
+msgid "Unmount"
+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 "Minimize or overview"
+msgstr "最小化或概览"
+
+#: Settings.ui.h:8
+msgid "Show window previews"
+msgstr "显示打开窗口预览"
+
+#: Settings.ui.h:9
+msgid "Minimize or show previews"
+msgstr "最小化或显示预览"
+
+#: Settings.ui.h:10
+msgid "Focus or show previews"
+msgstr "聚焦或显示预览"
+
+#: Settings.ui.h:11
+msgid "Quit"
+msgstr "退出"
+
+#: Settings.ui.h:12
+msgid "Behavior for Middle-Click."
+msgstr "中键点击的行为。"
+
+#: Settings.ui.h:13
+msgid "Middle-Click action"
+msgstr "中键点击动作"
+
+#: Settings.ui.h:14
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Shift+中键点击的行为。"
+
+#: Settings.ui.h:15
+msgid "Shift+Middle-Click action"
+msgstr "Shift+中键点击动作"
+
+#: Settings.ui.h:16
+msgid "Enable Unity7 like glossy backlit items"
+msgstr "启用类似 Unity 7 的高亮阴影"
+
+#: Settings.ui.h:17
+msgid "Use dominant color"
+msgstr "使用主色调"
+
+#: Settings.ui.h:18
+msgid "Customize indicator style"
+msgstr "自定义指示器样式"
+
+#: Settings.ui.h:19
+msgid "Color"
+msgstr "颜色"
+
+#: Settings.ui.h:20
+msgid "Border color"
+msgstr "边框颜色"
+
+#: Settings.ui.h:21
+msgid "Border width"
+msgstr "边框宽度"
+
+#: Settings.ui.h:22
+msgid "Show the dock on"
+msgstr "显示 Dock 于"
+
+#: Settings.ui.h:23
+msgid "Show on all monitors."
+msgstr "所有显示器上都显示"
+
+#: Settings.ui.h:24
+msgid "Position on screen"
+msgstr "屏幕中的位置"
+
+#: Settings.ui.h:26
+msgid "Bottom"
+msgstr "底部"
+
+#: Settings.ui.h:27
+msgid "Top"
+msgstr "顶部"
+
+#: Settings.ui.h:29
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr ""
+"当 Dock 会挡住当前应用程序的某个窗口时,将其隐藏。点击右侧设置按钮可以设置更"
+"多细节。"
+
+#: Settings.ui.h:30
+msgid "Intelligent autohide"
+msgstr "智能隐藏"
+
+#: Settings.ui.h:31
+msgid "Dock size limit"
+msgstr "Dock 大小限制"
+
+#: Settings.ui.h:32
+msgid "Panel mode: extend to the screen edge"
+msgstr "面板模式:延伸到屏幕边缘"
+
+#: Settings.ui.h:33
+msgid "Icon size limit"
+msgstr "图标大小限制"
+
+#: Settings.ui.h:34
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "固定图标大小:滚动显示其它图标"
+
+#: Settings.ui.h:35
+msgid "Position and size"
+msgstr "位置和大小"
+
+#: Settings.ui.h:36
+msgid "Show favorite applications"
+msgstr "显示收藏的应用程序"
+
+#: Settings.ui.h:37
+msgid "Show running applications"
+msgstr "显示正在运行的应用程序"
+
+#: Settings.ui.h:38
+msgid "Isolate workspaces."
+msgstr "隔离工作区"
+
+#: Settings.ui.h:39
+msgid "Isolate monitors."
+msgstr "隔离显示器"
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "显示打开窗口预览"
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr "禁用之后,可以通过 gnome-tweak-tool 或者扩展网站来访问这些设置。"
+
+#: Settings.ui.h:42
+msgid "Show <i>Applications</i> icon"
+msgstr "显示 <i>应用程序</i> 图标"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr "将应用程序图标移至 Dock 的起始位置"
+
+#: Settings.ui.h:44
+msgid "Animate <i>Show Applications</i>."
+msgstr "动画方式 <i>显示应用程序</i>"
+
+#: Settings.ui.h:45
+msgid "Show trash can"
+msgstr "显示回收站"
+
+#: Settings.ui.h:46
+msgid "Show mounted volumes and devices"
+msgstr "显示挂载卷和设备"
+
+#: Settings.ui.h:47
+msgid "Launchers"
+msgstr "启动器"
+
+#: Settings.ui.h:48
+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:49
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "使用键盘快捷键激活应用"
+
+#: Settings.ui.h:50
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "点击一个正在运行的应用程序图标时的行为。"
+
+#: Settings.ui.h:51
+msgid "Click action"
+msgstr "点击动作"
+
+#: Settings.ui.h:53
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "在一个应用程序图标上滚动时的行为。"
+
+#: Settings.ui.h:54
+msgid "Scroll action"
+msgstr "滚动动作"
+
+#: Settings.ui.h:55
+msgid "Do nothing"
+msgstr "无动作"
+
+#: Settings.ui.h:56
+msgid "Switch workspace"
+msgstr "切换工作区"
+
+#: Settings.ui.h:57
+msgid "Behavior"
+msgstr "行为"
+
+#: Settings.ui.h:58
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"几个自定义项可以将 Dock 整合到默认 GNOME 主题中。或者,也可以启动下面的几个特"
+"殊选项。"
+
+#: Settings.ui.h:59
+msgid "Use built-in theme"
+msgstr "使用内置主题"
+
+#: Settings.ui.h:60
+msgid "Save space reducing padding and border radius."
+msgstr "减小填充和边框半径以节省空间。"
+
+#: Settings.ui.h:61
+msgid "Shrink the dash"
+msgstr "收缩 Dash"
+
+#: Settings.ui.h:62
+msgid "Customize windows counter indicators"
+msgstr "显示窗口个数指示器"
+
+#: Settings.ui.h:63
+msgid "Default"
+msgstr "默认"
+
+#: Settings.ui.h:64
+msgid "Dots"
+msgstr "圆点"
+
+#: Settings.ui.h:65
+msgid "Squares"
+msgstr "正方形"
+
+#: Settings.ui.h:66
+msgid "Dashes"
+msgstr "破折号"
+
+#: Settings.ui.h:67
+msgid "Segmented"
+msgstr "分段"
+
+#: Settings.ui.h:68
+msgid "Solid"
+msgstr ""
+
+#: Settings.ui.h:69
+msgid "Ciliora"
+msgstr ""
+
+#: Settings.ui.h:70
+msgid "Metro"
+msgstr ""
+
+#: Settings.ui.h:71
+msgid "Set the background color for the dash."
+msgstr "设置 Dash 的背景颜色。"
+
+#: Settings.ui.h:72
+msgid "Customize the dash color"
+msgstr "自定义 Dash 颜色"
+
+#: Settings.ui.h:73
+msgid "Tune the dash background opacity."
+msgstr "调整 Dash 的背景不透明度。"
+
+#: Settings.ui.h:75
+msgid "Fixed"
+msgstr "固定"
+
+#: Settings.ui.h:76
+msgid "Dynamic"
+msgstr "动态"
+
+#: Settings.ui.h:77
+msgid "Opacity"
+msgstr "不透明度"
+
+#: Settings.ui.h:78
+msgid "Force straight corner"
+msgstr "强制边框直角"
+
+#: Settings.ui.h:79
+msgid "Appearance"
+msgstr "外观"
+
+#: Settings.ui.h:80
+msgid "version: "
+msgstr "版本:"
+
+#: Settings.ui.h:81
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "让 Dash 跳出概览之外,转化为一个 Dock"
+
+#: Settings.ui.h:82
+msgid "Created by"
+msgstr "作者:"
+
+#: Settings.ui.h:83
+msgid "Webpage"
+msgstr "网站主页"
+
+#: Settings.ui.h:84
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">本程序不提供任何担保。\n"
+"参见 <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html\">GNU "
+"通用公共许可证,第二版或更高版本</a>以了解更多细节。</span>"
+
+#: Settings.ui.h:86
+msgid "About"
+msgstr "关于"
+
+#: Settings.ui.h:87
+msgid "Customize minimum and maximum opacity values"
+msgstr "自定义窗口最小化和最大化时 Dock 的不透明度"
+
+#: Settings.ui.h:88
+msgid "Minimum opacity"
+msgstr "最小化不透明度"
+
+#: Settings.ui.h:89
+msgid "Maximum opacity"
+msgstr "最大化不透明度"
+
+#: Settings.ui.h:90
+msgid "Number overlay"
+msgstr "编号覆盖"
+
+#: Settings.ui.h:91
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr "临时显示与快捷键对应的图标上的应用程序编号。"
+
+#: Settings.ui.h:92
+msgid "Show the dock if it is hidden"
+msgstr "若 Dock 已隐藏,将其显示"
+
+#: Settings.ui.h:93
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr "如果使用了自动隐藏Dock 将在触发快捷键时短暂显示。"
+
+#: Settings.ui.h:94
+msgid "Shortcut for the options above"
+msgstr "以上选项的快捷键"
+
+#: Settings.ui.h:95
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "语法:<Shift><Ctrl><Alt><Super>"
+
+#: Settings.ui.h:96
+msgid "Hide timeout (s)"
+msgstr "隐藏超时时间(秒)"
+
+#: Settings.ui.h:97
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "鼠标移至屏幕边缘时显示 Dock。"
+
+#: Settings.ui.h:98
+msgid "Autohide"
+msgstr "自动隐藏"
+
+#: Settings.ui.h:99
+msgid "Push to show: require pressure to show the dock"
+msgstr "推压以显示:需要一定压力来显示 Dock"
+
+#: Settings.ui.h:100
+msgid "Enable in fullscreen mode"
+msgstr "在全屏模式下启用"
+
+#: Settings.ui.h:101
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "在不妨碍应用程序窗口时,显示 Dock。"
+
+#: Settings.ui.h:102
+msgid "Dodge windows"
+msgstr "避开窗口"
+
+#: Settings.ui.h:103
+msgid "All windows"
+msgstr "所有窗口"
+
+#: Settings.ui.h:104
+msgid "Only focused application's windows"
+msgstr "仅焦点程序窗口"
+
+#: Settings.ui.h:105
+msgid "Only maximized windows"
+msgstr "仅最大化窗口"
+
+#: Settings.ui.h:106
+msgid "Animation duration (s)"
+msgstr "动画持续时间(秒)"
+
+#: Settings.ui.h:107
+msgid "Show timeout (s)"
+msgstr "显示超时时间(秒)"
+
+#: Settings.ui.h:108
+msgid "Pressure threshold"
+msgstr "压力阈值"
+
#~ msgid "Application"
#~ msgstr "应用程序"
@@ -367,12 +908,6 @@ msgstr "添加工作区"
#~ msgid "Normal"
#~ msgstr "正常"
-#~ msgid "Left"
-#~ msgstr "左"
-
-#~ msgid "Right"
-#~ msgstr "右"
-
#~ msgid "Upside-down"
#~ msgstr "上下翻转"
@@ -551,3 +1086,97 @@ msgstr "添加工作区"
#~ msgid "Busy"
#~ msgstr "忙碌"
+
+#~ msgid "Show a dot for each windows of the application."
+#~ msgstr "为应用程序的每个窗口显示一个点。"
+
+#~ msgid "0.000"
+#~ msgstr "0.000"
+
+#~ msgid ""
+#~ "With fixed icon size, only the edge of the dock and the <i>Show "
+#~ "Applications</i> icon are active."
+#~ msgstr ""
+#~ "如果固定了图标大小,只有 dock 边缘和“<i>显示应用程序</i>”图标会激活该功"
+#~ "能。"
+
+#~ msgid "Switch workspace by scrolling on the dock"
+#~ msgstr "通过滚动 dock 来切换工作区"
+
+#~ msgid "Main Settings"
+#~ msgstr "主设置"
+
+#~ msgid "Dock is fixed and always visible"
+#~ msgstr "Dock 固定且总是可见"
+
+#~ 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 "Dock 将在如下显示器显示(如果已连接)"
+
+#~ msgid "Primary (default)"
+#~ msgstr "主显示器(默认)"
+
+#~ msgid "1"
+#~ msgstr "1"
+
+#~ msgid "2"
+#~ msgstr "2"
+
+#~ msgid "3"
+#~ msgstr "3"
+
+#~ msgid "4"
+#~ msgstr "4"
+
+#~ msgid "Max height"
+#~ msgstr "最大高度"
+
+#~ msgid "Expand (experimental and buggy)"
+#~ msgstr "全部展开(实验阶段且存在问题)"
+
+#~ msgid "Maximum icon size"
+#~ msgstr "最大图标尺寸"
+
+#~ msgid "16"
+#~ msgstr "16"
+
+#~ msgid "24"
+#~ msgstr "24"
+
+#~ msgid "32"
+#~ msgstr "32"
+
+#~ msgid "48"
+#~ msgstr "48"
+
+#~ msgid "64"
+#~ msgstr "64"
+
+#~ msgid "Optional features"
+#~ msgstr "可选功能"
+
+#~ msgid "Only a 1px wide area close to the screen edge is active"
+#~ msgstr "仅当靠近屏幕边缘1像素宽区域时启用"
+
+#~ msgid "All the area of the dock is active"
+#~ msgstr "Dock 全部区域时启用"
+
+#~ msgid "Customize actions on mouse click"
+#~ msgstr "自定义鼠标点击动作"
+
+#~ msgid "Action on clicking on running app"
+#~ msgstr "点击正在运行程序的动作"
+
+#~ msgid "Minimize window on shift+click (double click for all app windows)"
+#~ msgstr "当按下“Shift+单击”(双击适用于全部程序窗口)时最小化窗口"
+
+#~ msgid "Only when in autohide"
+#~ msgstr "仅当自动隐藏时"
diff --git a/po/zh_TW.po b/po/zh_TW.po
index 6a40e212..14e60ccb 100644
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -1,11 +1,20 @@
+# #-#-#-#-# 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.
#
# Cheng-Chia Tseng <pswo10680@gmail.com>, 2011.
# pan93412 <pan93412@gmail.com>, 2019.
+# #-#-#-#-# zh_TW.po (Dash to Dock) #-#-#-#-#
+# Traditional Chinese translation of dash-to-dock
+# Copyright (C) 2013 micheleg
+# This file is distributed under the same license as the dash-to-dock package.
+# Cheng-Chia Tseng <pswo10680@gmail.com>, 2017
+#
+#, fuzzy
msgid ""
msgstr ""
+"#-#-#-#-# 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"
@@ -19,6 +28,19 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.4.1\n"
"Plural-Forms: nplurals=1; plural=0;\n"
+"#-#-#-#-# zh_TW.po (Dash to Dock) #-#-#-#-#\n"
+"Project-Id-Version: Dash to Dock\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-05-23 23:49+0800\n"
+"PO-Revision-Date: 2020-05-24 00:08+0800\n"
+"Last-Translator: Yi-Jyun Pan <pan93412@gmail.com>\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.3.1\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
#: data/gnome-classic.desktop.in:3
msgid "GNOME Classic"
@@ -149,7 +171,7 @@ msgstr "關閉"
msgid "Unminimize"
msgstr "取消最小化"
-#: extensions/window-list/extension.js:118
+#: extensions/window-list/extension.js:118 Settings.ui.h:52
msgid "Minimize"
msgstr "最小化"
@@ -253,6 +275,526 @@ msgstr "工作區 %d"
msgid "Add Workspace"
msgstr "新增工作區"
+#: prefs.js:310 Settings.ui.h:25
+#, fuzzy
+msgid "Left"
+msgstr ""
+"#-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n"
+"左\n"
+"#-#-#-#-# zh_TW.po (Dash to Dock) #-#-#-#-#\n"
+"左側"
+
+#: prefs.js:309 Settings.ui.h:28
+#, fuzzy
+msgid "Right"
+msgstr ""
+"#-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n"
+"右\n"
+"#-#-#-#-# zh_TW.po (Dash to Dock) #-#-#-#-#\n"
+"右側"
+
+#: prefs.js:268
+msgid "Primary monitor"
+msgstr "主螢幕"
+
+#: prefs.js:277 prefs.js:284
+msgid "Secondary monitor "
+msgstr "次螢幕 "
+
+#: prefs.js:360
+msgid "Intelligent autohide customization"
+msgstr "自訂智慧型自動隱藏"
+
+#: prefs.js:367 prefs.js:560 prefs.js:616
+msgid "Reset to defaults"
+msgstr "重設回預設值"
+
+#: prefs.js:553
+msgid "Show dock and application numbers"
+msgstr "顯示 Dock 和應用程式數量"
+
+#: prefs.js:609
+msgid "Customize middle-click behavior"
+msgstr "自訂滑鼠中鍵行為"
+
+#: prefs.js:692
+msgid "Customize running indicators"
+msgstr "自訂執行中指示器"
+
+#: prefs.js:804 Settings.ui.h:74
+msgid "Customize opacity"
+msgstr "自訂不透明度"
+
+#: appIcons.js:797
+msgid "All Windows"
+msgstr "所有視窗"
+
+#: appIcons.js:916
+#, javascript-format
+msgid "Quit %d Windows"
+msgstr "結束 %d 個視窗"
+
+#. Translators: %s is "Settings", which is automatically translated. You
+#. can also translate the full message if this fits better your language.
+#: appIcons.js:1134
+#, javascript-format
+msgid "Dash to Dock %s"
+msgstr "Dash to Dock %s"
+
+#: locations.js:65
+msgid "Trash"
+msgstr "垃圾桶"
+
+#: locations.js:74
+msgid "Empty Trash"
+msgstr "清空垃圾桶"
+
+#: locations.js:192
+msgid "Mount"
+msgstr "掛載"
+
+#: locations.js:235
+msgid "Eject"
+msgstr "退出"
+
+#: locations.js:240
+msgid "Unmount"
+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 "Minimize or overview"
+msgstr "最小化或概覽"
+
+#: Settings.ui.h:8
+msgid "Show window previews"
+msgstr "顯示視窗預覽"
+
+#: Settings.ui.h:9
+msgid "Minimize or show previews"
+msgstr "最小化或顯示預覽"
+
+#: Settings.ui.h:10
+msgid "Focus or show previews"
+msgstr "聚焦或顯示預覽"
+
+#: Settings.ui.h:11
+msgid "Quit"
+msgstr "結束"
+
+#: Settings.ui.h:12
+msgid "Behavior for Middle-Click."
+msgstr "滑鼠中鍵的行為。"
+
+#: Settings.ui.h:13
+msgid "Middle-Click action"
+msgstr "滑鼠中鍵動作"
+
+#: Settings.ui.h:14
+msgid "Behavior for Shift+Middle-Click."
+msgstr "Shift+滑鼠中鍵的行為。"
+
+#: Settings.ui.h:15
+msgid "Shift+Middle-Click action"
+msgstr "Shift+滑鼠中鍵動作"
+
+#: Settings.ui.h:16
+msgid "Enable Unity7 like glossy backlit items"
+msgstr "啟用 Unity7 類平滑背光項目"
+
+#: Settings.ui.h:17
+msgid "Use dominant color"
+msgstr "使用主色調"
+
+#: Settings.ui.h:18
+msgid "Customize indicator style"
+msgstr "自訂指示器樣式"
+
+#: Settings.ui.h:19
+msgid "Color"
+msgstr "色彩"
+
+#: Settings.ui.h:20
+msgid "Border color"
+msgstr "邊框色彩"
+
+#: Settings.ui.h:21
+msgid "Border width"
+msgstr "邊框寬度"
+
+#: Settings.ui.h:22
+msgid "Show the dock on"
+msgstr "Dock 顯示於"
+
+#: Settings.ui.h:23
+msgid "Show on all monitors."
+msgstr "在所有顯示器顯示。"
+
+#: Settings.ui.h:24
+msgid "Position on screen"
+msgstr "螢幕上的位置"
+
+#: Settings.ui.h:26
+msgid "Bottom"
+msgstr "下面"
+
+#: Settings.ui.h:27
+msgid "Top"
+msgstr "上面"
+
+#: Settings.ui.h:29
+msgid ""
+"Hide the dock when it obstructs a window of the current application. More "
+"refined settings are available."
+msgstr "當 Dock 遮到目前應用程式的視窗時隱藏。可調整更多細部設定。"
+
+#: Settings.ui.h:30
+msgid "Intelligent autohide"
+msgstr "智慧型自動隱藏"
+
+#: Settings.ui.h:31
+msgid "Dock size limit"
+msgstr "Dock 大小限制"
+
+#: Settings.ui.h:32
+msgid "Panel mode: extend to the screen edge"
+msgstr "面板模式:延伸到螢幕邊緣"
+
+#: Settings.ui.h:33
+msgid "Icon size limit"
+msgstr "圖示大小限制"
+
+#: Settings.ui.h:34
+msgid "Fixed icon size: scroll to reveal other icons"
+msgstr "固定圖示大小:捲動滑鼠以揭開其他圖示"
+
+#: Settings.ui.h:35
+msgid "Position and size"
+msgstr "位置與大小"
+
+#: Settings.ui.h:36
+msgid "Show favorite applications"
+msgstr "顯示喜愛的應用程式"
+
+#: Settings.ui.h:37
+msgid "Show running applications"
+msgstr "顯示執行中應用程式"
+
+#: Settings.ui.h:38
+msgid "Isolate workspaces."
+msgstr "獨立工作區。"
+
+#: Settings.ui.h:39
+msgid "Isolate monitors."
+msgstr "獨立顯示器。"
+
+#: Settings.ui.h:40
+msgid "Show open windows previews."
+msgstr "顯示開啟視窗的預覽。"
+
+#: Settings.ui.h:41
+msgid ""
+"If disabled, these settings are accessible from gnome-tweak-tool or the "
+"extension website."
+msgstr "若停用,這些設定值可從 gnome-tweak-tool 或擴充套件網站存取。"
+
+#: Settings.ui.h:42
+msgid "Show <i>Applications</i> icon"
+msgstr "顯示 <i>應用程式</i> 圖示"
+
+#: Settings.ui.h:43
+msgid "Move the applications button at the beginning of the dock."
+msgstr "將應用程式按鈕移動到 Dock 開頭。"
+
+#: Settings.ui.h:44
+msgid "Animate <i>Show Applications</i>."
+msgstr "讓 <i>顯示應用程式</i> 有動畫。"
+
+#: Settings.ui.h:45
+msgid "Show trash can"
+msgstr "顯示垃圾桶"
+
+#: Settings.ui.h:46
+msgid "Show mounted volumes and devices"
+msgstr "顯示掛載儲存區和裝置"
+
+#: Settings.ui.h:47
+msgid "Launchers"
+msgstr "啟動器"
+
+#: Settings.ui.h:48
+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 使用。"
+
+#: Settings.ui.h:49
+msgid "Use keyboard shortcuts to activate apps"
+msgstr "使用鍵盤快捷鍵啟用 App"
+
+#: Settings.ui.h:50
+msgid "Behaviour when clicking on the icon of a running application."
+msgstr "點按執行中應用程式圖示時的行為。"
+
+#: Settings.ui.h:51
+msgid "Click action"
+msgstr "點按動作"
+
+#: Settings.ui.h:53
+msgid "Behaviour when scrolling on the icon of an application."
+msgstr "捲動應用程式圖示時的行為。"
+
+#: Settings.ui.h:54
+msgid "Scroll action"
+msgstr "捲動動作"
+
+#: Settings.ui.h:55
+msgid "Do nothing"
+msgstr "什麼都不做"
+
+#: Settings.ui.h:56
+msgid "Switch workspace"
+msgstr "切換工作區"
+
+#: Settings.ui.h:57
+msgid "Behavior"
+msgstr "行為"
+
+#: Settings.ui.h:58
+msgid ""
+"Few customizations meant to integrate the dock with the default GNOME theme. "
+"Alternatively, specific options can be enabled below."
+msgstr ""
+"不自訂即代表將 Dock 與預設 GNOME 主題整合。或者可以啟用下方的特定選項。"
+
+#: Settings.ui.h:59
+msgid "Use built-in theme"
+msgstr "使用內建主題"
+
+#: Settings.ui.h:60
+msgid "Save space reducing padding and border radius."
+msgstr "透過縮小邊框間距及邊框半徑來節省空間。"
+
+#: Settings.ui.h:61
+msgid "Shrink the dash"
+msgstr "縮小 Dash"
+
+#: Settings.ui.h:62
+msgid "Customize windows counter indicators"
+msgstr "自訂視窗計數器的指示器"
+
+#: Settings.ui.h:63
+msgid "Default"
+msgstr "預設"
+
+#: Settings.ui.h:64
+msgid "Dots"
+msgstr "圓點"
+
+#: Settings.ui.h:65
+msgid "Squares"
+msgstr "方框"
+
+#: Settings.ui.h:66
+msgid "Dashes"
+msgstr "小槓線"
+
+#: Settings.ui.h:67
+msgid "Segmented"
+msgstr "長段線"
+
+#: Settings.ui.h:68
+msgid "Solid"
+msgstr "實心"
+
+#: Settings.ui.h:69
+msgid "Ciliora"
+msgstr "Ciliora"
+
+#: Settings.ui.h:70
+msgid "Metro"
+msgstr "現代"
+
+#: Settings.ui.h:71
+msgid "Set the background color for the dash."
+msgstr "設定 Dash 的背景色彩。"
+
+#: Settings.ui.h:72
+msgid "Customize the dash color"
+msgstr "自訂 Dash 色彩"
+
+#: Settings.ui.h:73
+msgid "Tune the dash background opacity."
+msgstr "調整 Dash 的背景不透明度。"
+
+#: Settings.ui.h:75
+msgid "Fixed"
+msgstr "固定"
+
+#: Settings.ui.h:76
+msgid "Dynamic"
+msgstr "動態"
+
+#: Settings.ui.h:77
+msgid "Opacity"
+msgstr "不透明"
+
+#: Settings.ui.h:78
+msgid "Force straight corner"
+msgstr "強制邊緣直角"
+
+#: Settings.ui.h:79
+msgid "Appearance"
+msgstr "外觀"
+
+#: Settings.ui.h:80
+msgid "version: "
+msgstr "版本:"
+
+#: Settings.ui.h:81
+msgid "Moves the dash out of the overview transforming it in a dock"
+msgstr "將 Dash 移出概覽轉變成 Dock"
+
+#: Settings.ui.h:82
+msgid "Created by"
+msgstr "作者"
+
+#: Settings.ui.h:83
+msgid "Webpage"
+msgstr "網頁"
+
+#: Settings.ui.h:84
+msgid ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">本程式「絕無任何擔保」。\n"
+"請見 <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html\">GNU "
+"通用公眾授權第 2 版,或後續版本</a> 深入瞭解更多細節。</span>"
+
+#: Settings.ui.h:86
+msgid "About"
+msgstr "關於"
+
+#: Settings.ui.h:87
+msgid "Customize minimum and maximum opacity values"
+msgstr "自訂最低與最高不透明值"
+
+#: Settings.ui.h:88
+msgid "Minimum opacity"
+msgstr "最小化不透明度"
+
+#: Settings.ui.h:89
+msgid "Maximum opacity"
+msgstr "最大化不透明度"
+
+#: Settings.ui.h:90
+msgid "Number overlay"
+msgstr "數字覆層"
+
+#: Settings.ui.h:91
+msgid ""
+"Temporarily show the application numbers over the icons, corresponding to "
+"the shortcut."
+msgstr "暫時在圖示上顯示應用程式數量,對應到快捷鍵。"
+
+#: Settings.ui.h:92
+msgid "Show the dock if it is hidden"
+msgstr "若隱藏時顯示 Dock"
+
+#: Settings.ui.h:93
+msgid ""
+"If using autohide, the dock will appear for a short time when triggering the "
+"shortcut."
+msgstr "若使用自動隱藏,則觸發快捷鍵時 Dock 會出現一段時間。"
+
+#: Settings.ui.h:94
+msgid "Shortcut for the options above"
+msgstr "上述選項的快捷鍵"
+
+#: Settings.ui.h:95
+msgid "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "語法:<Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: Settings.ui.h:96
+msgid "Hide timeout (s)"
+msgstr "隱藏等候時間"
+
+#: Settings.ui.h:97
+msgid "Show the dock by mouse hover on the screen edge."
+msgstr "滑鼠停駐在螢幕邊緣時顯示 Dock。"
+
+#: Settings.ui.h:98
+msgid "Autohide"
+msgstr "自動隱藏"
+
+#: Settings.ui.h:99
+msgid "Push to show: require pressure to show the dock"
+msgstr "推擠才顯示:需要一些壓力才會顯示 Dock"
+
+#: Settings.ui.h:100
+msgid "Enable in fullscreen mode"
+msgstr "在全螢幕模式啟用"
+
+#: Settings.ui.h:101
+msgid "Show the dock when it doesn't obstruct application windows."
+msgstr "在 Dock 不會遮到應用程式視窗時顯示。"
+
+#: Settings.ui.h:102
+msgid "Dodge windows"
+msgstr "躲避視窗"
+
+#: Settings.ui.h:103
+msgid "All windows"
+msgstr "所有視窗"
+
+#: Settings.ui.h:104
+msgid "Only focused application's windows"
+msgstr "僅聚焦中的應用程式視窗"
+
+#: Settings.ui.h:105
+msgid "Only maximized windows"
+msgstr "僅最大化的視窗"
+
+#: Settings.ui.h:106
+msgid "Animation duration (s)"
+msgstr "動畫時間長度"
+
+#: Settings.ui.h:107
+msgid "Show timeout (s)"
+msgstr "顯示等候秒數"
+
+#: Settings.ui.h:108
+msgid "Pressure threshold"
+msgstr "壓力閾值"
+
#~ msgid "Application"
#~ msgstr "應用程式"
@@ -348,12 +890,6 @@ msgstr "新增工作區"
#~ msgid "Normal"
#~ msgstr "一般"
-#~ msgid "Left"
-#~ msgstr "左"
-
-#~ msgid "Right"
-#~ msgstr "右"
-
#~ msgid "Upside-down"
#~ msgstr "上下顛倒"
@@ -594,3 +1130,12 @@ msgstr "新增工作區"
#~ msgid "Busy"
#~ msgstr "忙碌"
+
+#~ msgid "Adaptive"
+#~ msgstr "自適應"
+
+#~ msgid "Show a dot for each windows of the application."
+#~ msgstr "為應用程式的每個視窗顯示圓點。"
+
+#~ msgid "0.000"
+#~ msgstr "0.000"
--
2.41.0
From 6cad2aac52022030bcbbf03066fc08937f6d177f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
Date: Wed, 20 May 2015 18:55:47 +0200
Subject: [PATCH 3/8] Add panel-favorites extension
---
extensions/panel-favorites/extension.js | 257 ++++++++++++++++++++
extensions/panel-favorites/meson.build | 5 +
extensions/panel-favorites/metadata.json.in | 10 +
extensions/panel-favorites/stylesheet.css | 14 ++
meson.build | 1 +
5 files changed, 287 insertions(+)
create mode 100644 extensions/panel-favorites/extension.js
create mode 100644 extensions/panel-favorites/meson.build
create mode 100644 extensions/panel-favorites/metadata.json.in
create mode 100644 extensions/panel-favorites/stylesheet.css
diff --git a/extensions/panel-favorites/extension.js b/extensions/panel-favorites/extension.js
new file mode 100644
index 00000000..15da32da
--- /dev/null
+++ b/extensions/panel-favorites/extension.js
@@ -0,0 +1,257 @@
+// Copyright (C) 2011-2013 R M Yorston
+// Licence: GPLv2+
+
+const Clutter = imports.gi.Clutter;
+const Gio = imports.gi.Gio;
+const GLib = imports.gi.GLib;
+const Lang = imports.lang;
+const Shell = imports.gi.Shell;
+const Signals = imports.signals;
+const St = imports.gi.St;
+
+const AppFavorites = imports.ui.appFavorites;
+const Main = imports.ui.main;
+const Panel = imports.ui.panel;
+
+const PANEL_LAUNCHER_LABEL_SHOW_TIME = 150;
+const PANEL_LAUNCHER_LABEL_HIDE_TIME = 100;
+const PANEL_LAUNCHER_HOVER_TIMEOUT = 300;
+
+const PanelLauncher =
+class PanelLauncher {
+ constructor(app) {
+ this.actor = new St.Button({ style_class: 'panel-button',
+ reactive: true });
+ this.iconSize = 24;
+ let icon = app.create_icon_texture(this.iconSize);
+ this.actor.set_child(icon);
+ this.actor._delegate = this;
+ let text = app.get_name();
+ if ( app.get_description() ) {
+ text += '\n' + app.get_description();
+ }
+
+ this.label = new St.Label({ style_class: 'panel-launcher-label'});
+ this.label.set_text(text);
+ Main.layoutManager.addChrome(this.label);
+ this.label.hide();
+ this.actor.label_actor = this.label;
+
+ this._app = app;
+ this.actor.connect('clicked', () => this._app.open_new_window(-1));
+ this.actor.connect('notify::hover', this._onHoverChanged.bind(this));
+ this.actor.opacity = 207;
+
+ this.actor.connect('notify::allocation', () => this._alloc());
+ }
+
+ _onHoverChanged(actor) {
+ actor.opacity = actor.hover ? 255 : 207;
+ }
+
+ _alloc() {
+ let size = this.actor.allocation.y2 - this.actor.allocation.y1 - 3;
+ if ( size >= 24 && size != this.iconSize ) {
+ this.actor.get_child().destroy();
+ this.iconSize = size;
+ let icon = this._app.create_icon_texture(this.iconSize);
+ this.actor.set_child(icon);
+ }
+ }
+
+ showLabel() {
+ this.label.opacity = 0;
+ this.label.show();
+
+ let [stageX, stageY] = this.actor.get_transformed_position();
+
+ let itemHeight = this.actor.allocation.y2 - this.actor.allocation.y1;
+ let itemWidth = this.actor.allocation.x2 - this.actor.allocation.x1;
+ let labelWidth = this.label.get_width();
+
+ let node = this.label.get_theme_node();
+ let yOffset = node.get_length('-y-offset');
+
+ let y = stageY + itemHeight + yOffset;
+ let x = Math.floor(stageX + itemWidth/2 - labelWidth/2);
+
+ let parent = this.label.get_parent();
+ let parentWidth = parent.allocation.x2 - parent.allocation.x1;
+
+ if ( Clutter.get_default_text_direction() == Clutter.TextDirection.LTR ) {
+ // stop long tooltips falling off the right of the screen
+ x = Math.min(x, parentWidth-labelWidth-6);
+ // but whatever happens don't let them fall of the left
+ x = Math.max(x, 6);
+ }
+ else {
+ x = Math.max(x, 6);
+ x = Math.min(x, parentWidth-labelWidth-6);
+ }
+
+ this.label.set_position(x, y);
+ this.label.ease({
+ opacity: 255,
+ duration: PANEL_LAUNCHER_LABEL_SHOW_TIME,
+ mode: Clutter.AnimationMode.EASE_OUT_QUAD,
+ });
+ }
+
+ hideLabel() {
+ this.label.opacity = 255;
+ this.label.ease({
+ opacity: 0,
+ duration: PANEL_LAUNCHER_LABEL_HIDE_TIME,
+ mode: Clutter.AnimationMode.EASE_OUT_QUAD,
+ onComplete: () => this.label.hide(),
+ });
+ }
+
+ destroy() {
+ this.label.destroy();
+ this.actor.destroy();
+ }
+};
+
+const PanelFavorites =
+class PanelFavorites {
+ constructor() {
+ this._showLabelTimeoutId = 0;
+ this._resetHoverTimeoutId = 0;
+ this._labelShowing = false;
+
+ this.actor = new St.BoxLayout({ name: 'panelFavorites',
+ x_expand: true, y_expand: true,
+ style_class: 'panel-favorites' });
+ this._display();
+
+ this.container = new St.Bin({ child: this.actor });
+
+ this.actor.connect('destroy', this._onDestroy.bind(this));
+ this._installChangedId = Shell.AppSystem.get_default().connect('installed-changed', this._redisplay.bind(this));
+ this._changedId = AppFavorites.getAppFavorites().connect('changed', this._redisplay.bind(this));
+ }
+
+ _redisplay() {
+ for ( let i=0; i<this._buttons.length; ++i ) {
+ this._buttons[i].destroy();
+ }
+
+ this._display();
+ }
+
+ _display() {
+ let launchers = global.settings.get_strv(AppFavorites.getAppFavorites().FAVORITE_APPS_KEY);
+
+ this._buttons = [];
+ let j = 0;
+ for ( let i=0; i<launchers.length; ++i ) {
+ let app = Shell.AppSystem.get_default().lookup_app(launchers[i]);
+
+ if ( app == null ) {
+ continue;
+ }
+
+ let launcher = new PanelLauncher(app);
+ this.actor.add(launcher.actor);
+ launcher.actor.connect('notify::hover',
+ () => this._onHover(launcher));
+ this._buttons[j] = launcher;
+ ++j;
+ }
+ }
+
+ // this routine stolen from dash.js
+ _onHover(launcher) {
+ if ( launcher.actor.hover ) {
+ if (this._showLabelTimeoutId == 0) {
+ let timeout = this._labelShowing ?
+ 0 : PANEL_LAUNCHER_HOVER_TIMEOUT;
+ this._showLabelTimeoutId = GLib.timeout_add(
+ GLib.PRIORITY_DEFAULT,
+ timeout,
+ () => {
+ this._labelShowing = true;
+ launcher.showLabel();
+ this._showLabelTimeoutId = 0;
+ return GLib.SOURCE_REMOVE;
+ });
+ if (this._resetHoverTimeoutId > 0) {
+ GLib.source_remove(this._resetHoverTimeoutId);
+ this._resetHoverTimeoutId = 0;
+ }
+ }
+ } else {
+ if (this._showLabelTimeoutId > 0) {
+ GLib.source_remove(this._showLabelTimeoutId);
+ this._showLabelTimeoutId = 0;
+ }
+ launcher.hideLabel();
+ if (this._labelShowing) {
+ this._resetHoverTimeoutId = GLib.timeout_add(
+ GLib.PRIORITY_DEFAULT,
+ PANEL_LAUNCHER_HOVER_TIMEOUT,
+ () => {
+ this._labelShowing = false;
+ this._resetHoverTimeoutId = 0;
+ return GLib.SOURCE_REMOVE;
+ });
+ }
+ }
+ }
+
+ _onDestroy() {
+ if ( this._installChangedId != 0 ) {
+ Shell.AppSystem.get_default().disconnect(this._installChangedId);
+ this._installChangedId = 0;
+ }
+
+ if ( this._changedId != 0 ) {
+ AppFavorites.getAppFavorites().disconnect(this._changedId);
+ this._changedId = 0;
+ }
+ }
+};
+Signals.addSignalMethods(PanelFavorites.prototype);
+
+let myAddToStatusArea;
+let panelFavorites;
+
+function enable() {
+ Panel.Panel.prototype.myAddToStatusArea = myAddToStatusArea;
+
+ // place panel to left of app menu, or failing that at right end of box
+ let siblings = Main.panel._leftBox.get_children();
+ let appMenu = Main.panel.statusArea['appMenu'];
+ let pos = appMenu ? siblings.indexOf(appMenu.container) : siblings.length;
+
+ panelFavorites = new PanelFavorites();
+ Main.panel.myAddToStatusArea('panel-favorites', panelFavorites,
+ pos, 'left');
+}
+
+function disable() {
+ delete Panel.Panel.prototype.myAddToStatusArea;
+
+ panelFavorites.actor.destroy();
+ panelFavorites.emit('destroy');
+ panelFavorites = null;
+}
+
+function init() {
+ myAddToStatusArea = function(role, indicator, position, box) {
+ if (this.statusArea[role])
+ throw new Error('Extension point conflict: there is already a status indicator for role ' + role);
+
+ position = position || 0;
+ let boxes = {
+ left: this._leftBox,
+ center: this._centerBox,
+ right: this._rightBox
+ };
+ let boxContainer = boxes[box] || this._rightBox;
+ this.statusArea[role] = indicator;
+ this._addToPanelBox(role, indicator, position, boxContainer);
+ return indicator;
+ };
+}
diff --git a/extensions/panel-favorites/meson.build b/extensions/panel-favorites/meson.build
new file mode 100644
index 00000000..48504f63
--- /dev/null
+++ b/extensions/panel-favorites/meson.build
@@ -0,0 +1,5 @@
+extension_data += configure_file(
+ input: metadata_name + '.in',
+ output: metadata_name,
+ configuration: metadata_conf
+)
diff --git a/extensions/panel-favorites/metadata.json.in b/extensions/panel-favorites/metadata.json.in
new file mode 100644
index 00000000..037f2813
--- /dev/null
+++ b/extensions/panel-favorites/metadata.json.in
@@ -0,0 +1,10 @@
+{
+"extension-id": "@extension_id@",
+"uuid": "@uuid@",
+"settings-schema": "@gschemaname@",
+"gettext-domain": "@gettext_domain@",
+"name": "Frippery Panel Favorites",
+"description": "Add launchers for Favorites to the panel",
+"shell-version": [ "@shell_current@" ],
+"url": "http://intgat.tigress.co.uk/rmy/extensions/index.html"
+}
diff --git a/extensions/panel-favorites/stylesheet.css b/extensions/panel-favorites/stylesheet.css
new file mode 100644
index 00000000..120adacb
--- /dev/null
+++ b/extensions/panel-favorites/stylesheet.css
@@ -0,0 +1,14 @@
+.panel-favorites {
+ spacing: 6px;
+}
+
+.panel-launcher-label {
+ border-radius: 7px;
+ padding: 4px 12px;
+ background-color: rgba(0,0,0,0.9);
+ color: white;
+ text-align: center;
+ font-size: 9pt;
+ font-weight: bold;
+ -y-offset: 6px;
+}
diff --git a/meson.build b/meson.build
index e3d94918..12706001 100644
--- a/meson.build
+++ b/meson.build
@@ -46,6 +46,7 @@ all_extensions += [
'auto-move-windows',
'dash-to-dock',
'native-window-placement',
+ 'panel-favorites',
'top-icons',
'user-theme'
]
--
2.41.0
From dbd3ebbb2d3cf380f2c0a13f13618fedfd8bbad4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
Date: Fri, 4 Mar 2016 17:07:21 +0100
Subject: [PATCH 4/8] Add updates-dialog extension
---
extensions/updates-dialog/extension.js | 504 ++++++++++++++++++
extensions/updates-dialog/meson.build | 7 +
extensions/updates-dialog/metadata.json.in | 10 +
...hell.extensions.updates-dialog.gschema.xml | 30 ++
extensions/updates-dialog/stylesheet.css | 1 +
meson.build | 1 +
po/POTFILES.in | 2 +
7 files changed, 555 insertions(+)
create mode 100644 extensions/updates-dialog/extension.js
create mode 100644 extensions/updates-dialog/meson.build
create mode 100644 extensions/updates-dialog/metadata.json.in
create mode 100644 extensions/updates-dialog/org.gnome.shell.extensions.updates-dialog.gschema.xml
create mode 100644 extensions/updates-dialog/stylesheet.css
diff --git a/extensions/updates-dialog/extension.js b/extensions/updates-dialog/extension.js
new file mode 100644
index 00000000..9fd9b33d
--- /dev/null
+++ b/extensions/updates-dialog/extension.js
@@ -0,0 +1,504 @@
+/*
+ * Copyright (c) 2015 Red Hat, Inc.
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+
+/* exported enable disable */
+
+const { Clutter, Gio, GLib, GObject, PackageKitGlib: PkgKit, Pango, Polkit, St } = imports.gi;
+const Signals = imports.signals;
+
+const EndSessionDialog = imports.ui.endSessionDialog;
+const ModalDialog = imports.ui.modalDialog;
+
+const ExtensionUtils = imports.misc.extensionUtils;
+const Me = ExtensionUtils.getCurrentExtension();
+
+const PkIface = '<node> \
+<interface name="org.freedesktop.PackageKit"> \
+ <method name="CreateTransaction"> \
+ <arg type="o" name="object_path" direction="out"/> \
+ </method> \
+ <signal name="UpdatesChanged"/> \
+</interface> \
+</node>';
+
+const PkOfflineIface = '<node> \
+<interface name="org.freedesktop.PackageKit.Offline"> \
+ <property name="UpdatePrepared" type="b" access="read"/> \
+ <property name="TriggerAction" type="s" access="read"/> \
+ <method name="Trigger"> \
+ <arg type="s" name="action" direction="in"/> \
+ </method> \
+ <method name="Cancel"/> \
+</interface> \
+</node>';
+
+const PkTransactionIface = '<node> \
+<interface name="org.freedesktop.PackageKit.Transaction"> \
+ <method name="SetHints"> \
+ <arg type="as" name="hints" direction="in"/> \
+ </method> \
+ <method name="GetUpdates"> \
+ <arg type="t" name="filter" direction="in"/> \
+ </method> \
+ <method name="UpdatePackages"> \
+ <arg type="t" name="transaction_flags" direction="in"/> \
+ <arg type="as" name="package_ids" direction="in"/> \
+ </method> \
+ <signal name="Package"> \
+ <arg type="u" name="info" direction="out"/> \
+ <arg type="s" name="package_id" direction="out"/> \
+ <arg type="s" name="summary" direction="out"/> \
+ </signal> \
+ <signal name="Finished"> \
+ <arg type="u" name="exit" direction="out"/> \
+ <arg type="u" name="runtime" direction="out"/> \
+ </signal> \
+</interface> \
+</node>';
+
+const LoginManagerIface = '<node> \
+<interface name="org.freedesktop.login1.Manager"> \
+<method name="Reboot"> \
+ <arg type="b" direction="in"/> \
+</method> \
+<method name="CanReboot"> \
+ <arg type="s" direction="out"/> \
+</method> \
+</interface> \
+</node>';
+
+const PkProxy = Gio.DBusProxy.makeProxyWrapper(PkIface);
+const PkOfflineProxy = Gio.DBusProxy.makeProxyWrapper(PkOfflineIface);
+const PkTransactionProxy = Gio.DBusProxy.makeProxyWrapper(PkTransactionIface);
+const LoginManagerProxy = Gio.DBusProxy.makeProxyWrapper(LoginManagerIface);
+
+let pkProxy = null;
+let pkOfflineProxy = null;
+let loginManagerProxy = null;
+let updatesDialog = null;
+let extensionSettings = null;
+let cancellable = null;
+
+let updatesCheckInProgress = false;
+let updatesCheckRequested = false;
+let securityUpdates = [];
+
+function getDetailText(period) {
+ let text = _('Important security updates need to be installed.\n');
+ if (period < 60) {
+ text += ngettext(
+ 'You can close this dialog and get %d minute to finish your work.',
+ 'You can close this dialog and get %d minutes to finish your work.',
+ period)
+ .format(period);
+ } else {
+ text += ngettext(
+ 'You can close this dialog and get %d hour to finish your work.',
+ 'You can close this dialog and get %d hours to finish your work.',
+ Math.floor(period / 60))
+ .format(Math.floor(period / 60));
+ }
+ return text;
+}
+
+const UpdatesDialog = GObject.registerClass({
+ Signals: { 'done': {} },
+}, class extends ModalDialog.ModalDialog {
+ _init(settings) {
+ super._init({
+ styleClass: 'end-session-dialog',
+ destroyOnClose: false
+ });
+
+ this._gracePeriod = settings.get_uint('grace-period');
+ this._gracePeriod = Math.min(Math.max(10, this._gracePeriod), 24 * 60);
+ this._lastWarningPeriod = settings.get_uint('last-warning-period');
+ this._lastWarningPeriod = Math.min(
+ Math.max(1, this._lastWarningPeriod),
+ this._gracePeriod - 1);
+ this._lastWarnings = settings.get_uint('last-warnings');
+ this._lastWarnings = Math.min(
+ Math.max(1, this._lastWarnings),
+ Math.floor((this._gracePeriod - 1) / this._lastWarningPeriod));
+
+ let messageLayout = new St.BoxLayout({
+ vertical: true,
+ style_class: 'end-session-dialog-layout'
+ });
+ this.contentLayout.add(messageLayout, {
+ x_fill: true,
+ y_fill: true,
+ y_expand: true
+ });
+
+ let subjectLabel = new St.Label({
+ style_class: 'end-session-dialog-subject',
+ style: 'padding-bottom: 1em;',
+ text: _('Important security updates')
+ });
+ messageLayout.add(subjectLabel, {
+ x_fill: false,
+ y_fill: false,
+ x_align: St.Align.START,
+ y_align: St.Align.START
+ });
+
+ this._detailLabel = new St.Label({
+ style_class: 'end-session-dialog-description',
+ style: 'padding-bottom: 0em;',
+ text: getDetailText(this._gracePeriod)
+ });
+ this._detailLabel.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
+ this._detailLabel.clutter_text.line_wrap = true;
+
+ messageLayout.add(this._detailLabel, {
+ y_fill: true,
+ y_align: St.Align.START
+ });
+
+ let buttons = [{
+ action: this.close.bind(this),
+ label: _('Close'),
+ key: Clutter.Escape
+ }, {
+ action: this._done.bind(this),
+ label: _('Restart &amp; Install')
+ }];
+
+ this.setButtons(buttons);
+
+ this._openTimeoutId = 0;
+ this.connect('destroy', this._clearOpenTimeout.bind(this));
+
+ this._startTimer();
+ }
+
+ _clearOpenTimeout() {
+ if (this._openTimeoutId > 0) {
+ GLib.source_remove(this._openTimeoutId);
+ this._openTimeoutId = 0;
+ }
+ }
+
+ tryOpen() {
+ if (this._openTimeoutId > 0 || this.open())
+ return;
+
+ this._openTimeoutId = GLib.timeout_add_seconds(
+ GLib.PRIORITY_DEFAULT, 1, () => {
+ if (!this.open())
+ return GLib.SOURCE_CONTINUE;
+
+ this._clearOpenTimeout();
+ return GLib.SOURCE_REMOVE;
+ });
+ }
+
+ _startTimer() {
+ this._secondsLeft = this._gracePeriod * 60;
+
+ this._timerId = GLib.timeout_add_seconds(
+ GLib.PRIORITY_DEFAULT, 1, () => {
+ this._secondsLeft -= 1;
+ let minutesLeft = this._secondsLeft / 60;
+ let periodLeft = Math.floor(minutesLeft);
+
+ if (this._secondsLeft == 60 ||
+ (periodLeft > 0 && periodLeft <= this._lastWarningPeriod * this._lastWarnings &&
+ minutesLeft % this._lastWarningPeriod == 0)) {
+ this.tryOpen();
+ this._detailLabel.text = getDetailText(periodLeft);
+ }
+
+ if (this._secondsLeft > 0) {
+ if (this._secondsLeft < 60) {
+ let seconds = EndSessionDialog._roundSecondsToInterval(
+ this._gracePeriod * 60, this._secondsLeft, 10);
+ this._detailLabel.text =
+ _('Important security updates need to be installed now.\n') +
+ ngettext(
+ 'This computer will restart in %d second.',
+ 'This computer will restart in %d seconds.',
+ seconds).format(seconds);
+ }
+ return GLib.SOURCE_CONTINUE;
+ }
+
+ this._done();
+ return GLib.SOURCE_REMOVE;
+ });
+ this.connect('destroy', () => {
+ if (this._timerId > 0) {
+ GLib.source_remove(this._timerId);
+ this._timerId = 0;
+ }
+ });
+ }
+
+ _done() {
+ this.emit('done');
+ this.destroy();
+ }
+
+ getState() {
+ return [this._gracePeriod, this._lastWarningPeriod, this._lastWarnings, this._secondsLeft];
+ }
+
+ setState(state) {
+ [this._gracePeriod, this._lastWarningPeriod, this._lastWarnings, this._secondsLeft] = state;
+ }
+});
+
+function showDialog() {
+ if (updatesDialog)
+ return;
+
+ updatesDialog = new UpdatesDialog(extensionSettings);
+ updatesDialog.tryOpen();
+ updatesDialog.connect('destroy', () => updatesDialog = null);
+ updatesDialog.connect('done', () => {
+ if (pkOfflineProxy.TriggerAction == 'power-off' ||
+ pkOfflineProxy.TriggerAction == 'reboot') {
+ loginManagerProxy.RebootRemote(false);
+ } else {
+ pkOfflineProxy.TriggerRemote('reboot', (result, error) => {
+ if (!error)
+ loginManagerProxy.RebootRemote(false);
+ else
+ log('Failed to trigger offline update: %s'.format(error.message));
+ });
+ }
+ });
+}
+
+function cancelDialog(save) {
+ if (!updatesDialog)
+ return;
+
+ if (save) {
+ let state = GLib.Variant.new('(uuuu)', updatesDialog.getState());
+ global.set_runtime_state(Me.uuid, state);
+ }
+ updatesDialog.destroy();
+}
+
+function restoreExistingState() {
+ let state = global.get_runtime_state('(uuuu)', Me.uuid);
+ if (state === null)
+ return false;
+
+ global.set_runtime_state(Me.uuid, null);
+ showDialog();
+ updatesDialog.setState(state.deep_unpack());
+ return true;
+}
+
+function syncState() {
+ if (!pkOfflineProxy || !loginManagerProxy)
+ return;
+
+ if (restoreExistingState())
+ return;
+
+ if (!updatesCheckInProgress &&
+ securityUpdates.length > 0 &&
+ pkOfflineProxy.UpdatePrepared)
+ showDialog();
+ else
+ cancelDialog();
+}
+
+function doPkTransaction(callback) {
+ if (!pkProxy)
+ return;
+
+ pkProxy.CreateTransactionRemote((result, error) => {
+ if (error) {
+ log('Error creating PackageKit transaction: %s'.format(error.message));
+ checkUpdatesDone();
+ return;
+ }
+
+ new PkTransactionProxy(Gio.DBus.system,
+ 'org.freedesktop.PackageKit',
+ String(result),
+ (proxy, error) => {
+ if (!error) {
+ proxy.SetHintsRemote(
+ ['background=true', 'interactive=false'],
+ (result, error) => {
+ if (error) {
+ log('Error connecting to PackageKit: %s'.format(error.message));
+ checkUpdatesDone();
+ return;
+ }
+ callback(proxy);
+ });
+ } else {
+ log('Error connecting to PackageKit: %s'.format(error.message));
+ }
+ });
+ });
+}
+
+function pkUpdatePackages(proxy) {
+ proxy.connectSignal('Finished', (p, e, params) => {
+ let [exit, runtime_] = params;
+
+ if (exit == PkgKit.ExitEnum.CANCELLED_PRIORITY) {
+ // try again
+ checkUpdates();
+ } else if (exit != PkgKit.ExitEnum.SUCCESS) {
+ log('UpdatePackages failed: %s'.format(PkgKit.ExitEnum.to_string(exit)));
+ }
+
+ checkUpdatesDone();
+ });
+ proxy.UpdatePackagesRemote(1 << PkgKit.TransactionFlagEnum.ONLY_DOWNLOAD, securityUpdates);
+}
+
+function pkGetUpdates(proxy) {
+ proxy.connectSignal('Package', (p, e, params) => {
+ let [info, packageId, summary_] = params;
+
+ if (info == PkgKit.InfoEnum.SECURITY)
+ securityUpdates.push(packageId);
+ });
+ proxy.connectSignal('Finished', (p, e, params) => {
+ let [exit, runtime_] = params;
+
+ if (exit == PkgKit.ExitEnum.SUCCESS) {
+ if (securityUpdates.length > 0) {
+ doPkTransaction(pkUpdatePackages);
+ return;
+ }
+ } else if (exit == PkgKit.ExitEnum.CANCELLED_PRIORITY) {
+ // try again
+ checkUpdates();
+ } else {
+ log('GetUpdates failed: %s'.format(PkgKit.ExitEnum.to_string(exit)));
+ }
+
+ checkUpdatesDone();
+ });
+ proxy.GetUpdatesRemote(0);
+}
+
+function checkUpdatesDone() {
+ updatesCheckInProgress = false;
+ if (updatesCheckRequested) {
+ updatesCheckRequested = false;
+ checkUpdates();
+ } else {
+ syncState();
+ }
+}
+
+function checkUpdates() {
+ if (updatesCheckInProgress) {
+ updatesCheckRequested = true;
+ return;
+ }
+ updatesCheckInProgress = true;
+ securityUpdates = [];
+ doPkTransaction(pkGetUpdates);
+}
+
+function initSystemProxies() {
+ new PkProxy(Gio.DBus.system,
+ 'org.freedesktop.PackageKit',
+ '/org/freedesktop/PackageKit',
+ (proxy, error) => {
+ if (!error) {
+ pkProxy = proxy;
+ let id = pkProxy.connectSignal('UpdatesChanged', checkUpdates);
+ pkProxy._signalId = id;
+ checkUpdates();
+ } else {
+ log('Error connecting to PackageKit: %s'.format(error.message));
+ }
+ },
+ cancellable);
+ new PkOfflineProxy(Gio.DBus.system,
+ 'org.freedesktop.PackageKit',
+ '/org/freedesktop/PackageKit',
+ (proxy, error) => {
+ if (!error) {
+ pkOfflineProxy = proxy;
+ let id = pkOfflineProxy.connect('g-properties-changed', syncState);
+ pkOfflineProxy._signalId = id;
+ syncState();
+ } else {
+ log('Error connecting to PackageKit: %s'.format(error.message));
+ }
+ },
+ cancellable);
+ new LoginManagerProxy(Gio.DBus.system,
+ 'org.freedesktop.login1',
+ '/org/freedesktop/login1',
+ (proxy, error) => {
+ if (!error) {
+ proxy.CanRebootRemote(cancellable, (result, error) => {
+ if (!error && result == 'yes') {
+ loginManagerProxy = proxy;
+ syncState();
+ } else {
+ log('Reboot is not available');
+ }
+ });
+ } else {
+ log('Error connecting to Login manager: %s'.format(error.message));
+ }
+ },
+ cancellable);
+}
+
+function enable() {
+ cancellable = new Gio.Cancellable();
+ extensionSettings = ExtensionUtils.getSettings();
+ Polkit.Permission.new('org.freedesktop.packagekit.trigger-offline-update',
+ null,
+ cancellable,
+ (p, result) => {
+ try {
+ let permission = Polkit.Permission.new_finish(result);
+ if (permission && permission.allowed)
+ initSystemProxies();
+ else
+ throw (new Error('not allowed'));
+ } catch (e) {
+ log('No permission to trigger offline updates: %s'.format(e.toString()));
+ }
+ });
+}
+
+function disable() {
+ cancelDialog(true);
+ cancellable.cancel();
+ cancellable = null;
+ extensionSettings = null;
+ updatesDialog = null;
+ loginManagerProxy = null;
+ if (pkOfflineProxy) {
+ pkOfflineProxy.disconnect(pkOfflineProxy._signalId);
+ pkOfflineProxy = null;
+ }
+ if (pkProxy) {
+ pkProxy.disconnectSignal(pkProxy._signalId);
+ pkProxy = null;
+ }
+}
diff --git a/extensions/updates-dialog/meson.build b/extensions/updates-dialog/meson.build
new file mode 100644
index 00000000..585c02da
--- /dev/null
+++ b/extensions/updates-dialog/meson.build
@@ -0,0 +1,7 @@
+extension_data += configure_file(
+ input: metadata_name + '.in',
+ output: metadata_name,
+ configuration: metadata_conf
+)
+
+extension_schemas += files(metadata_conf.get('gschemaname') + '.gschema.xml')
diff --git a/extensions/updates-dialog/metadata.json.in b/extensions/updates-dialog/metadata.json.in
new file mode 100644
index 00000000..9946abb5
--- /dev/null
+++ b/extensions/updates-dialog/metadata.json.in
@@ -0,0 +1,10 @@
+{
+"extension-id": "@extension_id@",
+"uuid": "@uuid@",
+"settings-schema": "@gschemaname@",
+"gettext-domain": "@gettext_domain@",
+"name": "Updates Dialog",
+"description": "Shows a modal dialog when there are software updates.",
+"shell-version": [ "@shell_current@" ],
+"url": "http://rtcm.fedorapeople.org/updates-dialog"
+}
diff --git a/extensions/updates-dialog/org.gnome.shell.extensions.updates-dialog.gschema.xml b/extensions/updates-dialog/org.gnome.shell.extensions.updates-dialog.gschema.xml
new file mode 100644
index 00000000..c08d33c4
--- /dev/null
+++ b/extensions/updates-dialog/org.gnome.shell.extensions.updates-dialog.gschema.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schemalist>
+ <schema path="/org/gnome/shell/extensions/updates-dialog/"
+ id="org.gnome.shell.extensions.updates-dialog">
+ <key name="grace-period" type="u">
+ <default>300</default>
+ <summary>Grace period in minutes</summary>
+ <description>
+ When the grace period is over, the computer will automatically
+ reboot and install security updates.
+ </description>
+ </key>
+ <key name="last-warning-period" type="u">
+ <default>10</default>
+ <summary>Last warning dialog period</summary>
+ <description>
+ A last warning dialog is displayed this many minutes before
+ the automatic reboot.
+ </description>
+ </key>
+ <key name="last-warnings" type="u">
+ <default>1</default>
+ <summary>Number of last warning dialogs</summary>
+ <description>
+ How many warning dialogs are displayed. Each is displayed at
+ 'last-warning-period' minute intervals.
+ </description>
+ </key>
+ </schema>
+</schemalist>
diff --git a/extensions/updates-dialog/stylesheet.css b/extensions/updates-dialog/stylesheet.css
new file mode 100644
index 00000000..25134b65
--- /dev/null
+++ b/extensions/updates-dialog/stylesheet.css
@@ -0,0 +1 @@
+/* This extensions requires no special styling */
diff --git a/meson.build b/meson.build
index 12706001..c609ae52 100644
--- a/meson.build
+++ b/meson.build
@@ -48,6 +48,7 @@ all_extensions += [
'native-window-placement',
'panel-favorites',
'top-icons',
+ 'updates-dialog',
'user-theme'
]
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 0ed12762..10b1d517 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -9,6 +9,8 @@ extensions/native-window-placement/org.gnome.shell.extensions.native-window-plac
extensions/places-menu/extension.js
extensions/places-menu/placeDisplay.js
extensions/screenshot-window-sizer/org.gnome.shell.extensions.screenshot-window-sizer.gschema.xml
+extensions/updates-dialog/extension.js
+extensions/updates-dialog/org.gnome.shell.extensions.updates-dialog.gschema.xml
extensions/user-theme/org.gnome.shell.extensions.user-theme.gschema.xml
extensions/window-list/extension.js
extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml
--
2.41.0
From 5de33c69acd297659ac3182e85f0fe32771dd75e Mon Sep 17 00:00:00 2001
From: Carlos Soriano <csoriano@gnome.org>
Date: Mon, 13 Aug 2018 17:28:41 +0200
Subject: [PATCH 5/8] Add desktop icons extension
---
.../desktop-icons/createFolderDialog.js | 165 +++
extensions/desktop-icons/createThumbnail.js | 35 +
extensions/desktop-icons/dbusUtils.js | 127 +++
extensions/desktop-icons/desktopGrid.js | 782 ++++++++++++++
extensions/desktop-icons/desktopIconsUtil.js | 164 +++
extensions/desktop-icons/desktopManager.js | 856 ++++++++++++++++
extensions/desktop-icons/extension.js | 75 ++
extensions/desktop-icons/fileItem.js | 961 ++++++++++++++++++
extensions/desktop-icons/meson.build | 20 +
extensions/desktop-icons/metadata.json.in | 11 +
extensions/desktop-icons/po/LINGUAS | 33 +
extensions/desktop-icons/po/POTFILES.in | 6 +
extensions/desktop-icons/po/ca.po | 218 ++++
extensions/desktop-icons/po/cs.po | 235 +++++
extensions/desktop-icons/po/da.po | 226 ++++
extensions/desktop-icons/po/de.po | 232 +++++
extensions/desktop-icons/po/el.po | 190 ++++
extensions/desktop-icons/po/en_GB.po | 194 ++++
extensions/desktop-icons/po/es.po | 257 +++++
extensions/desktop-icons/po/eu.po | 192 ++++
extensions/desktop-icons/po/fa.po | 187 ++++
extensions/desktop-icons/po/fi.po | 231 +++++
extensions/desktop-icons/po/fr.po | 225 ++++
extensions/desktop-icons/po/fur.po | 227 +++++
extensions/desktop-icons/po/hr.po | 228 +++++
extensions/desktop-icons/po/hu.po | 228 +++++
extensions/desktop-icons/po/id.po | 222 ++++
extensions/desktop-icons/po/it.po | 189 ++++
extensions/desktop-icons/po/ja.po | 221 ++++
extensions/desktop-icons/po/kab.po | 222 ++++
extensions/desktop-icons/po/ko.po | 223 ++++
extensions/desktop-icons/po/meson.build | 1 +
extensions/desktop-icons/po/nl.po | 228 +++++
extensions/desktop-icons/po/oc.po | 221 ++++
extensions/desktop-icons/po/pl.po | 223 ++++
extensions/desktop-icons/po/pt.po | 222 ++++
extensions/desktop-icons/po/pt_BR.po | 235 +++++
extensions/desktop-icons/po/ro.po | 223 ++++
extensions/desktop-icons/po/ru.po | 197 ++++
extensions/desktop-icons/po/sk.po | 222 ++++
extensions/desktop-icons/po/sl.po | 227 +++++
extensions/desktop-icons/po/sr.po | 220 ++++
extensions/desktop-icons/po/sv.po | 239 +++++
extensions/desktop-icons/po/tr.po | 231 +++++
extensions/desktop-icons/po/uk.po | 223 ++++
extensions/desktop-icons/po/zh_CN.po | 228 +++++
extensions/desktop-icons/po/zh_TW.po | 220 ++++
extensions/desktop-icons/prefs.js | 161 +++
extensions/desktop-icons/schemas/meson.build | 6 +
...shell.extensions.desktop-icons.gschema.xml | 30 +
extensions/desktop-icons/stylesheet.css | 42 +
extensions/desktop-icons/templateManager.js | 104 ++
meson.build | 1 +
po/ca.po | 223 +++-
po/cs.po | 235 ++++-
po/da.po | 225 +++-
po/de.po | 243 ++++-
po/el.po | 206 +++-
po/en_GB.po | 206 +++-
po/es.po | 280 ++++-
po/eu.po | 192 +++-
po/fa.po | 266 ++++-
po/fi.po | 247 ++++-
po/fr.po | 229 ++++-
po/fur.po | 238 ++++-
po/hr.po | 233 ++++-
po/hu.po | 224 +++-
po/id.po | 226 +++-
po/it.po | 191 ++++
po/ja.po | 233 ++++-
po/kab.po | 227 ++++-
po/ko.po | 228 ++++-
po/nl.po | 224 +++-
po/oc.po | 233 ++++-
po/pl.po | 222 +++-
po/pt.po | 237 ++++-
po/pt_BR.po | 260 ++++-
po/ro.po | 220 +++-
po/ru.po | 199 ++++
po/sk.po | 220 +++-
po/sl.po | 234 ++++-
po/sr.po | 232 ++++-
po/sv.po | 239 ++++-
po/tr.po | 234 ++++-
po/uk.po | 247 ++++-
po/zh_CN.po | 229 ++++-
po/zh_TW.po | 241 ++++-
87 files changed, 18670 insertions(+), 239 deletions(-)
create mode 100644 extensions/desktop-icons/createFolderDialog.js
create mode 100755 extensions/desktop-icons/createThumbnail.js
create mode 100644 extensions/desktop-icons/dbusUtils.js
create mode 100644 extensions/desktop-icons/desktopGrid.js
create mode 100644 extensions/desktop-icons/desktopIconsUtil.js
create mode 100644 extensions/desktop-icons/desktopManager.js
create mode 100644 extensions/desktop-icons/extension.js
create mode 100644 extensions/desktop-icons/fileItem.js
create mode 100644 extensions/desktop-icons/meson.build
create mode 100644 extensions/desktop-icons/metadata.json.in
create mode 100644 extensions/desktop-icons/po/LINGUAS
create mode 100644 extensions/desktop-icons/po/POTFILES.in
create mode 100644 extensions/desktop-icons/po/ca.po
create mode 100644 extensions/desktop-icons/po/cs.po
create mode 100644 extensions/desktop-icons/po/da.po
create mode 100644 extensions/desktop-icons/po/de.po
create mode 100644 extensions/desktop-icons/po/el.po
create mode 100644 extensions/desktop-icons/po/en_GB.po
create mode 100644 extensions/desktop-icons/po/es.po
create mode 100644 extensions/desktop-icons/po/eu.po
create mode 100644 extensions/desktop-icons/po/fa.po
create mode 100644 extensions/desktop-icons/po/fi.po
create mode 100644 extensions/desktop-icons/po/fr.po
create mode 100644 extensions/desktop-icons/po/fur.po
create mode 100644 extensions/desktop-icons/po/hr.po
create mode 100644 extensions/desktop-icons/po/hu.po
create mode 100644 extensions/desktop-icons/po/id.po
create mode 100644 extensions/desktop-icons/po/it.po
create mode 100644 extensions/desktop-icons/po/ja.po
create mode 100644 extensions/desktop-icons/po/kab.po
create mode 100644 extensions/desktop-icons/po/ko.po
create mode 100644 extensions/desktop-icons/po/meson.build
create mode 100644 extensions/desktop-icons/po/nl.po
create mode 100644 extensions/desktop-icons/po/oc.po
create mode 100644 extensions/desktop-icons/po/pl.po
create mode 100644 extensions/desktop-icons/po/pt.po
create mode 100644 extensions/desktop-icons/po/pt_BR.po
create mode 100644 extensions/desktop-icons/po/ro.po
create mode 100644 extensions/desktop-icons/po/ru.po
create mode 100644 extensions/desktop-icons/po/sk.po
create mode 100644 extensions/desktop-icons/po/sl.po
create mode 100644 extensions/desktop-icons/po/sr.po
create mode 100644 extensions/desktop-icons/po/sv.po
create mode 100644 extensions/desktop-icons/po/tr.po
create mode 100644 extensions/desktop-icons/po/uk.po
create mode 100644 extensions/desktop-icons/po/zh_CN.po
create mode 100644 extensions/desktop-icons/po/zh_TW.po
create mode 100644 extensions/desktop-icons/prefs.js
create mode 100644 extensions/desktop-icons/schemas/meson.build
create mode 100644 extensions/desktop-icons/schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml
create mode 100644 extensions/desktop-icons/stylesheet.css
create mode 100644 extensions/desktop-icons/templateManager.js
diff --git a/extensions/desktop-icons/createFolderDialog.js b/extensions/desktop-icons/createFolderDialog.js
new file mode 100644
index 00000000..027e4c6a
--- /dev/null
+++ b/extensions/desktop-icons/createFolderDialog.js
@@ -0,0 +1,165 @@
+/* Desktop Icons GNOME Shell extension
+ *
+ * Copyright (C) 2019 Andrea Azzaronea <andrea.azzarone@canonical.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+const { Clutter, GObject, GLib, Gio, Pango, St } = imports.gi;
+
+const Signals = imports.signals;
+
+const Dialog = imports.ui.dialog;
+const Gettext = imports.gettext.domain('gnome-shell-extensions');
+const ModalDialog = imports.ui.modalDialog;
+const ShellEntry = imports.ui.shellEntry;
+
+const ExtensionUtils = imports.misc.extensionUtils;
+const Me = ExtensionUtils.getCurrentExtension();
+const DesktopIconsUtil = Me.imports.desktopIconsUtil;
+const Extension = Me.imports.extension;
+const Config = imports.misc.config;
+
+const _ = Gettext.gettext;
+
+const DIALOG_GROW_TIME = 100;
+
+var CreateFolderDialog = GObject.registerClass({
+ GTypeName: 'DesktopIcons_CreateFolderDialog',
+ Signals: { 'response': { param_types: [GObject.TYPE_STRING] } }
+}, class CreateFolderDialog extends ModalDialog.ModalDialog {
+ _init() {
+ super._init({ styleClass: 'create-folder-dialog' });
+
+ let dialogContent = new Dialog.MessageDialogContent({
+ title: _('New folder name'),
+ });
+ this.contentLayout.add_child(dialogContent);
+
+ this._entry = new St.Entry({ style_class: 'create-folder-dialog-entry',
+ can_focus: true });
+ ShellEntry.addContextMenu(this._entry);
+ this._entry.clutter_text.connect('activate', this._onEntryActivate.bind(this));
+ this._entry.clutter_text.connect('text-changed', this._onTextChanged.bind(this));
+
+ this.setInitialKeyFocus(this._entry.clutter_text);
+
+ dialogContent.add(this._entry);
+
+ this._errorBox = new St.BoxLayout({ vertical: true });
+ dialogContent.add_child(this._errorBox);
+
+ this._errorMessage = new St.Label({
+ style_class: 'create-folder-dialog-error-label',
+ y_expand: false,
+ x_expand: false,
+ });
+ this._errorMessage.clutter_text.line_wrap = true;
+ this._errorBox.add_child(this._errorMessage);
+
+ this._createButton = this.addButton({ action: this._onCreateButton.bind(this),
+ label: _('Create') });
+ this.addButton({ action: this.close.bind(this),
+ label: _('Cancel'),
+ key: Clutter.KEY_Escape });
+ this._onTextChanged();
+ }
+
+ _showError(message) {
+ this._errorMessage.set_text(message);
+
+ if (!this._errorBox.visible) {
+ let [errorBoxMinHeight, errorBoxNaturalHeight] = this._errorBox.get_preferred_height(-1);
+ let parentActor = this._errorBox.get_parent();
+
+ parentActor.remove_all_transitions();
+ parentActor.ease_property(
+ 'height', parentActor.height + errorBoxNaturalHeight, {
+ duration: DIALOG_GROW_TIME,
+ mode: Clutter.AnimationMode.EASE_OUT_QUAD,
+ onComplete: () => {
+ parentActor.set_height(-1);
+ this._errorBox.show();
+ }
+ });
+ }
+ }
+
+ _hideError() {
+ if (this._errorBox.visible) {
+ let [errorBoxMinHeight, errorBoxNaturalHeight] = this._errorBox.get_preferred_height(-1);
+ let parentActor = this._errorBox.get_parent();
+
+ parentActor.remove_all_transitions();
+ parentActor.ease_property(
+ 'height', parentActor.height - errorBoxNaturalHeight, {
+ duration: DIALOG_GROW_TIME,
+ mode: Clutter.AnimationMode.EASE_OUT_QUAD,
+ onComplete: () => {
+ parentActor.set_height(-1);
+ this._errorBox.hide();
+ this._errorMessage.set_text('');
+ }
+ });
+ }
+ }
+
+ _onCreateButton() {
+ this._onEntryActivate();
+ }
+
+ _onEntryActivate() {
+ if (!this._createButton.reactive)
+ return;
+
+ this.emit('response', this._entry.get_text());
+ this.close();
+ }
+
+ _onTextChanged() {
+ let text = this._entry.get_text();
+ let is_valid = true;
+
+ let found_name = false;
+ for(let name of Extension.desktopManager.getDesktopFileNames()) {
+ if (name === text) {
+ found_name = true;
+ break;
+ }
+ }
+
+ if (text.trim().length == 0) {
+ is_valid = false;
+ this._hideError();
+ } else if (text.includes('/')) {
+ is_valid = false;
+ this._showError(_('Folder names cannot contain “/”.'));
+ } else if (text === '.') {
+ is_valid = false;
+ this._showError(_('A folder cannot be called “.”.'));
+ } else if (text === '..') {
+ is_valid = false;
+ this._showError(_('A folder cannot be called “..”.'));
+ } else if (text.startsWith('.')) {
+ this._showError(_('Folders with “.” at the beginning of their name are hidden.'));
+ } else if (found_name) {
+ this._showError(_('There is already a file or folder with that name.'));
+ is_valid = false;
+ } else {
+ this._hideError();
+ }
+
+ this._createButton.reactive = is_valid;
+ }
+});
diff --git a/extensions/desktop-icons/createThumbnail.js b/extensions/desktop-icons/createThumbnail.js
new file mode 100755
index 00000000..212f6b79
--- /dev/null
+++ b/extensions/desktop-icons/createThumbnail.js
@@ -0,0 +1,35 @@
+#!/usr/bin/gjs
+
+/* Desktop Icons GNOME Shell extension
+ *
+ * Copyright (C) 2018 Sergio Costas <rastersoft@gmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+const GnomeDesktop = imports.gi.GnomeDesktop;
+const Gio = imports.gi.Gio;
+
+let thumbnailFactory = GnomeDesktop.DesktopThumbnailFactory.new(GnomeDesktop.DesktopThumbnailSize.LARGE);
+
+let file = Gio.File.new_for_path(ARGV[0]);
+let fileUri = file.get_uri();
+
+let fileInfo = file.query_info('standard::content-type,time::modified', Gio.FileQueryInfoFlags.NONE, null);
+let modifiedTime = fileInfo.get_attribute_uint64('time::modified');
+let thumbnailPixbuf = thumbnailFactory.generate_thumbnail(fileUri, fileInfo.get_content_type());
+if (thumbnailPixbuf == null)
+ thumbnailFactory.create_failed_thumbnail(fileUri, modifiedTime);
+else
+ thumbnailFactory.save_thumbnail(thumbnailPixbuf, fileUri, modifiedTime);
diff --git a/extensions/desktop-icons/dbusUtils.js b/extensions/desktop-icons/dbusUtils.js
new file mode 100644
index 00000000..b2bca421
--- /dev/null
+++ b/extensions/desktop-icons/dbusUtils.js
@@ -0,0 +1,127 @@
+const Gio = imports.gi.Gio;
+const GLib = imports.gi.GLib;
+var NautilusFileOperationsProxy;
+var FreeDesktopFileManagerProxy;
+var GnomeNautilusPreviewerProxy;
+
+const NautilusFileOperationsInterface = `<node>
+<interface name='org.gnome.Nautilus.FileOperations'>
+ <method name='CopyURIs'>
+ <arg name='URIs' type='as' direction='in'/>
+ <arg name='Destination' type='s' direction='in'/>
+ </method>
+ <method name='MoveURIs'>
+ <arg name='URIs' type='as' direction='in'/>
+ <arg name='Destination' type='s' direction='in'/>
+ </method>
+ <method name='EmptyTrash'>
+ </method>
+ <method name='TrashFiles'>
+ <arg name='URIs' type='as' direction='in'/>
+ </method>
+ <method name='CreateFolder'>
+ <arg name='URI' type='s' direction='in'/>
+ </method>
+ <method name='RenameFile'>
+ <arg name='URI' type='s' direction='in'/>
+ <arg name='NewName' type='s' direction='in'/>
+ </method>
+ <method name='Undo'>
+ </method>
+ <method name='Redo'>
+ </method>
+ <property name='UndoStatus' type='i' access='read'/>
+</interface>
+</node>`;
+
+const NautilusFileOperationsProxyInterface = Gio.DBusProxy.makeProxyWrapper(NautilusFileOperationsInterface);
+
+const FreeDesktopFileManagerInterface = `<node>
+<interface name='org.freedesktop.FileManager1'>
+ <method name='ShowItems'>
+ <arg name='URIs' type='as' direction='in'/>
+ <arg name='StartupId' type='s' direction='in'/>
+ </method>
+ <method name='ShowItemProperties'>
+ <arg name='URIs' type='as' direction='in'/>
+ <arg name='StartupId' type='s' direction='in'/>
+ </method>
+</interface>
+</node>`;
+
+const FreeDesktopFileManagerProxyInterface = Gio.DBusProxy.makeProxyWrapper(FreeDesktopFileManagerInterface);
+
+const GnomeNautilusPreviewerInterface = `<node>
+<interface name='org.gnome.NautilusPreviewer'>
+ <method name='ShowFile'>
+ <arg name='FileUri' type='s' direction='in'/>
+ <arg name='ParentXid' type='i' direction='in'/>
+ <arg name='CloseIfShown' type='b' direction='in'/>
+ </method>
+</interface>
+</node>`;
+
+const GnomeNautilusPreviewerProxyInterface = Gio.DBusProxy.makeProxyWrapper(GnomeNautilusPreviewerInterface);
+
+function init() {
+ NautilusFileOperationsProxy = new NautilusFileOperationsProxyInterface(
+ Gio.DBus.session,
+ 'org.gnome.Nautilus',
+ '/org/gnome/Nautilus',
+ (proxy, error) => {
+ if (error) {
+ log('Error connecting to Nautilus');
+ }
+ }
+ );
+
+ FreeDesktopFileManagerProxy = new FreeDesktopFileManagerProxyInterface(
+ Gio.DBus.session,
+ 'org.freedesktop.FileManager1',
+ '/org/freedesktop/FileManager1',
+ (proxy, error) => {
+ if (error) {
+ log('Error connecting to Nautilus');
+ }
+ }
+ );
+
+ GnomeNautilusPreviewerProxy = new GnomeNautilusPreviewerProxyInterface(
+ Gio.DBus.session,
+ 'org.gnome.NautilusPreviewer',
+ '/org/gnome/NautilusPreviewer',
+ (proxy, error) => {
+ if (error) {
+ log('Error connecting to Nautilus Previewer');
+ }
+ }
+ );
+}
+
+function openFileWithOtherApplication(filePath) {
+ let fdList = new Gio.UnixFDList();
+ let channel = GLib.IOChannel.new_file(filePath, "r");
+ fdList.append(channel.unix_get_fd());
+ channel.set_close_on_unref(true);
+ let builder = GLib.VariantBuilder.new(GLib.VariantType.new("a{sv}"));
+ let options = builder.end();
+ let parameters = GLib.Variant.new_tuple([GLib.Variant.new_string("0"),
+ GLib.Variant.new_handle(0),
+ options]);
+ Gio.bus_get(Gio.BusType.SESSION, null,
+ (source, result) => {
+ let dbus_connection = Gio.bus_get_finish(result);
+ dbus_connection.call_with_unix_fd_list("org.freedesktop.portal.Desktop",
+ "/org/freedesktop/portal/desktop",
+ "org.freedesktop.portal.OpenURI",
+ "OpenFile",
+ parameters,
+ GLib.VariantType.new("o"),
+ Gio.DBusCallFlags.NONE,
+ -1,
+ fdList,
+ null,
+ null);
+ }
+ );
+}
diff --git a/extensions/desktop-icons/desktopGrid.js b/extensions/desktop-icons/desktopGrid.js
new file mode 100644
index 00000000..002803c7
--- /dev/null
+++ b/extensions/desktop-icons/desktopGrid.js
@@ -0,0 +1,782 @@
+/* Desktop Icons GNOME Shell extension
+ *
+ * Copyright (C) 2017 Carlos Soriano <csoriano@redhat.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+const Gtk = imports.gi.Gtk;
+const Clutter = imports.gi.Clutter;
+const St = imports.gi.St;
+const Gio = imports.gi.Gio;
+const GLib = imports.gi.GLib;
+const GObject = imports.gi.GObject;
+const Shell = imports.gi.Shell;
+
+const Layout = imports.ui.layout;
+const Main = imports.ui.main;
+const BoxPointer = imports.ui.boxpointer;
+const PopupMenu = imports.ui.popupMenu;
+const GrabHelper = imports.ui.grabHelper;
+const Config = imports.misc.config;
+
+const ExtensionUtils = imports.misc.extensionUtils;
+const Me = ExtensionUtils.getCurrentExtension();
+const CreateFolderDialog = Me.imports.createFolderDialog;
+const Extension = Me.imports.extension;
+const FileItem = Me.imports.fileItem;
+const Prefs = Me.imports.prefs;
+const DBusUtils = Me.imports.dbusUtils;
+const DesktopIconsUtil = Me.imports.desktopIconsUtil;
+const Util = imports.misc.util;
+
+const Clipboard = St.Clipboard.get_default();
+const CLIPBOARD_TYPE = St.ClipboardType.CLIPBOARD;
+const Gettext = imports.gettext.domain('gnome-shell-extensions');
+
+const _ = Gettext.gettext;
+
+
+/* From NautilusFileUndoManagerState */
+var UndoStatus = {
+ NONE: 0,
+ UNDO: 1,
+ REDO: 2,
+};
+
+var StoredCoordinates = {
+ PRESERVE: 0,
+ OVERWRITE:1,
+ ASSIGN:2,
+};
+
+var Placeholder = GObject.registerClass({
+ GTypeName: 'DesktopIcons_Placeholder',
+}, class Placeholder extends St.Bin {
+});
+
+var DesktopGrid = GObject.registerClass({
+ GTypeName: 'DesktopIcons_DesktopGrid',
+}, class DesktopGrid extends St.Widget {
+ _init(bgManager) {
+ this._bgManager = bgManager;
+
+ this._fileItemHandlers = new Map();
+ this._fileItems = [];
+
+ this.layout = new Clutter.GridLayout({
+ orientation: Clutter.Orientation.VERTICAL,
+ column_homogeneous: true,
+ row_homogeneous: true
+ });
+
+ this._actorLayout = new Clutter.BinLayout({
+ x_align: Clutter.BinAlignment.FIXED,
+ y_align: Clutter.BinAlignment.FIXED
+ });
+
+ super._init({
+ layout_manager: this._actorLayout
+ });
+ this._delegate = this;
+
+ this.connect('style-changed', () => {
+ if (this.isFirst)
+ Extension.desktopManager.scheduleReLayoutChildren();
+ });
+
+ this._grid = new St.Widget({
+ name: 'DesktopGrid',
+ layout_manager: this.layout,
+ reactive: true,
+ x_expand: true,
+ y_expand: true,
+ can_focus: true,
+ opacity: 255
+ });
+ this.add_child(this._grid);
+
+ this._menuManager = new PopupMenu.PopupMenuManager(this);
+
+ this._bgManager._container.add_child(this);
+
+ let monitorIndex = bgManager._monitorIndex;
+ this._monitorConstraint = new Layout.MonitorConstraint({
+ index: monitorIndex,
+ work_area: true
+ });
+ this.add_constraint(this._monitorConstraint);
+
+ this._addDesktopBackgroundMenu();
+
+ this._bgDestroyedId = bgManager.backgroundActor.connect('destroy',
+ () => this._backgroundDestroyed());
+
+ this._grid.connect('button-press-event', (actor, event) => this._onPressButton(actor, event));
+
+ this._grid.connect('key-press-event', this._onKeyPress.bind(this));
+
+ this._grid.connect('notify::allocation', () => Extension.desktopManager.scheduleReLayoutChildren());
+
+ let themeNodeBase = this.get_theme_node();
+ let themeContext = St.ThemeContext.get_for_stage(global.stage);
+ let themeNode = St.ThemeNode.new(themeContext, null,
+ themeNodeBase.get_theme(), themeNodeBase.get_element_type(),
+ null, "file-item", null, "fake-id {}");
+ this._extra_width = themeNode.get_margin(St.Side.LEFT) +
+ themeNode.get_margin(St.Side.RIGHT) +
+ themeNode.get_border_width(St.Side.LEFT) +
+ themeNode.get_border_width(St.Side.RIGHT) +
+ themeNode.get_horizontal_padding();
+ this._extra_height = themeNode.get_margin(St.Side.TOP) +
+ themeNode.get_margin(St.Side.BOTTOM) +
+ themeNode.get_border_width(St.Side.TOP) +
+ themeNode.get_border_width(St.Side.BOTTOM) +
+ themeNode.get_vertical_padding();
+
+ this.connect('destroy', () => this._onDestroy());
+ }
+
+ _onKeyPress(actor, event) {
+ if (global.stage.get_key_focus() != actor)
+ return Clutter.EVENT_PROPAGATE;
+
+ let symbol = event.get_key_symbol();
+ let isCtrl = (event.get_state() & Clutter.ModifierType.CONTROL_MASK) != 0;
+ let isShift = (event.get_state() & Clutter.ModifierType.SHIFT_MASK) != 0;
+
+ if (isCtrl && isShift && [Clutter.KEY_Z, Clutter.KEY_z].indexOf(symbol) > -1) {
+ this._doRedo();
+ return Clutter.EVENT_STOP;
+ }
+ else if (isCtrl && [Clutter.KEY_Z, Clutter.KEY_z].indexOf(symbol) > -1) {
+ this._doUndo();
+ return Clutter.EVENT_STOP;
+ }
+ else if (isCtrl && [Clutter.KEY_C, Clutter.KEY_c].indexOf(symbol) > -1) {
+ Extension.desktopManager.doCopy();
+ return Clutter.EVENT_STOP;
+ }
+ else if (isCtrl && [Clutter.KEY_X, Clutter.KEY_x].indexOf(symbol) > -1) {
+ Extension.desktopManager.doCut();
+ return Clutter.EVENT_STOP;
+ }
+ else if (isCtrl && [Clutter.KEY_V, Clutter.KEY_v].indexOf(symbol) > -1) {
+ this._doPaste();
+ return Clutter.EVENT_STOP;
+ }
+ else if (symbol == Clutter.KEY_Return) {
+ Extension.desktopManager.doOpen();
+ return Clutter.EVENT_STOP;
+ }
+ else if (symbol == Clutter.KEY_Delete) {
+ Extension.desktopManager.doTrash();
+ return Clutter.EVENT_STOP;
+ } else if (symbol == Clutter.KEY_F2) {
+ // Support renaming other grids file items.
+ Extension.desktopManager.doRename();
+ return Clutter.EVENT_STOP;
+ } else if (symbol == Clutter.KEY_space) {
+ Extension.desktopManager.doPreview();
+ return Clutter.EVENT_STOP;
+ }
+ return Clutter.EVENT_PROPAGATE;
+ }
+
+ _backgroundDestroyed() {
+ this._bgDestroyedId = 0;
+ if (this._bgManager == null)
+ return;
+
+ if (this._bgManager._backgroundSource) {
+ this._bgDestroyedId = this._bgManager.backgroundActor.connect('destroy',
+ () => this._backgroundDestroyed());
+ } else {
+ this.destroy();
+ }
+ }
+
+ _onDestroy() {
+ if (this._bgDestroyedId && this._bgManager.backgroundActor)
+ this._bgManager.backgroundActor.disconnect(this._bgDestroyedId);
+ this._bgDestroyedId = 0;
+ this._bgManager = null;
+ this._menuManager = null;
+ }
+
+ _onNewFolderClicked() {
+
+ let dialog = new CreateFolderDialog.CreateFolderDialog();
+
+ dialog.connect('response', (dialog, name) => {
+ let dir = DesktopIconsUtil.getDesktopDir().get_child(name);
+ DBusUtils.NautilusFileOperationsProxy.CreateFolderRemote(dir.get_uri(),
+ (result, error) => {
+ if (error)
+ throw new Error('Error creating new folder: ' + error.message);
+ }
+ );
+ });
+
+ dialog.open();
+ }
+
+ _parseClipboardText(text) {
+ if (text === null)
+ return [false, false, null];
+
+ let lines = text.split('\n');
+ let [mime, action, ...files] = lines;
+
+ if (mime != 'x-special/nautilus-clipboard')
+ return [false, false, null];
+
+ if (!(['copy', 'cut'].includes(action)))
+ return [false, false, null];
+ let isCut = action == 'cut';
+
+ /* Last line is empty due to the split */
+ if (files.length <= 1)
+ return [false, false, null];
+ /* Remove last line */
+ files.pop();
+
+ return [true, isCut, files];
+ }
+
+ _doPaste() {
+ Clipboard.get_text(CLIPBOARD_TYPE,
+ (clipboard, text) => {
+ let [valid, is_cut, files] = this._parseClipboardText(text);
+ if (!valid)
+ return;
+
+ let desktopDir = `${DesktopIconsUtil.getDesktopDir().get_uri()}`;
+ if (is_cut) {
+ DBusUtils.NautilusFileOperationsProxy.MoveURIsRemote(files, desktopDir,
+ (result, error) => {
+ if (error)
+ throw new Error('Error moving files: ' + error.message);
+ }
+ );
+ } else {
+ DBusUtils.NautilusFileOperationsProxy.CopyURIsRemote(files, desktopDir,
+ (result, error) => {
+ if (error)
+ throw new Error('Error copying files: ' + error.message);
+ }
+ );
+ }
+ }
+ );
+ }
+
+ _onPasteClicked() {
+ this._doPaste();
+ }
+
+ _doUndo() {
+ DBusUtils.NautilusFileOperationsProxy.UndoRemote(
+ (result, error) => {
+ if (error)
+ throw new Error('Error performing undo: ' + error.message);
+ }
+ );
+ }
+
+ _onUndoClicked() {
+ this._doUndo();
+ }
+
+ _doRedo() {
+ DBusUtils.NautilusFileOperationsProxy.RedoRemote(
+ (result, error) => {
+ if (error)
+ throw new Error('Error performing redo: ' + error.message);
+ }
+ );
+ }
+
+ _onRedoClicked() {
+ this._doRedo();
+ }
+
+ _onOpenDesktopInFilesClicked() {
+ Gio.AppInfo.launch_default_for_uri_async(DesktopIconsUtil.getDesktopDir().get_uri(),
+ null, null,
+ (source, result) => {
+ try {
+ Gio.AppInfo.launch_default_for_uri_finish(result);
+ } catch (e) {
+ log('Error opening Desktop in Files: ' + e.message);
+ }
+ }
+ );
+ }
+
+ _onOpenTerminalClicked() {
+ let desktopPath = DesktopIconsUtil.getDesktopDir().get_path();
+ DesktopIconsUtil.launchTerminal(desktopPath);
+ }
+
+ _syncUndoRedo() {
+ this._undoMenuItem.visible = DBusUtils.NautilusFileOperationsProxy.UndoStatus == UndoStatus.UNDO;
+ this._redoMenuItem.visible = DBusUtils.NautilusFileOperationsProxy.UndoStatus == UndoStatus.REDO;
+ }
+
+ _undoStatusChanged(proxy, properties, test) {
+ if ('UndoStatus' in properties.deep_unpack())
+ this._syncUndoRedo();
+ }
+
+ _createDesktopBackgroundMenu() {
+ let menu = new PopupMenu.PopupMenu(Main.layoutManager.dummyCursor,
+ 0, St.Side.TOP);
+ menu.addAction(_("New Folder"), () => this._onNewFolderClicked());
+ this._submenu = new PopupMenu.PopupSubMenuMenuItem(_("New Document"), false);
+ menu.addMenuItem(this._submenu);
+ menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
+ this._pasteMenuItem = menu.addAction(_("Paste"), () => this._onPasteClicked());
+ this._undoMenuItem = menu.addAction(_("Undo"), () => this._onUndoClicked());
+ this._redoMenuItem = menu.addAction(_("Redo"), () => this._onRedoClicked());
+ menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
+ menu.addAction(_("Show Desktop in Files"), () => this._onOpenDesktopInFilesClicked());
+ menu.addAction(_("Open in Terminal"), () => this._onOpenTerminalClicked());
+ menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
+ menu.addSettingsAction(_("Change Background…"), 'gnome-background-panel.desktop');
+ menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
+ menu.addSettingsAction(_("Display Settings"), 'gnome-display-panel.desktop');
+ menu.addSettingsAction(_("Settings"), 'gnome-control-center.desktop');
+
+ menu.actor.add_style_class_name('background-menu');
+
+ Main.layoutManager.uiGroup.add_child(menu.actor);
+ menu.actor.hide();
+
+ menu._propertiesChangedId = DBusUtils.NautilusFileOperationsProxy.connect('g-properties-changed',
+ this._undoStatusChanged.bind(this));
+ this._syncUndoRedo();
+
+ menu.connect('destroy',
+ () => DBusUtils.NautilusFileOperationsProxy.disconnect(menu._propertiesChangedId));
+ menu.connect('open-state-changed',
+ (popupm, isOpen) => {
+ if (isOpen) {
+ Clipboard.get_text(CLIPBOARD_TYPE,
+ (clipBoard, text) => {
+ let [valid, is_cut, files] = this._parseClipboardText(text);
+ this._pasteMenuItem.setSensitive(valid);
+ }
+ );
+ }
+ }
+ );
+ this._pasteMenuItem.setSensitive(false);
+
+ return menu;
+ }
+
+ _openMenu(x, y) {
+ Main.layoutManager.setDummyCursorGeometry(x, y, 0, 0);
+ this._submenu.menu.removeAll();
+ let templates = Extension.templateManager.getTemplates();
+ if (templates.length == 0) {
+ this._submenu.hide();
+ } else {
+ for(let template of templates) {
+ this._submenu.menu.addAction(template["name"], () => {this._newDocument(template)}, template["icon"]);
+ }
+ this._submenu.show();
+ }
+ this._desktopBackgroundMenu.open(BoxPointer.PopupAnimation.NONE);
+ /* Since the handler is in the press event it needs to ignore the release event
+ * to not immediately close the menu on release
+ */
+ this._menuManager.ignoreRelease();
+ }
+
+ _newDocument(template) {
+ let file = Extension.templateManager.getTemplateFile(template["file"]);
+ if (file == null)
+ return;
+ let counter = 0;
+ let finalName = `${template["name"]}${template["extension"]}`;
+ let destination;
+ do {
+ if (counter != 0) {
+ finalName = `${template["name"]} ${counter}${template["extension"]}`
+ }
+ destination = Gio.File.new_for_path(
+ GLib.build_filenamev([GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_DESKTOP),
+ finalName])
+ );
+ counter++;
+ } while(destination.query_exists(null));
+ file.copy_async(destination, Gio.FileCopyFlags.NONE, GLib.PRIORITY_DEFAULT, null, null, (source, result) => {
+ try {
+ source.copy_finish(result);
+ } catch(e) {
+ log(`Failed to create template ${e.message}`);
+ }
+ });
+ }
+
+ _addFileItemTo(fileItem, column, row, coordinatesAction) {
+ let placeholder = this.layout.get_child_at(column, row);
+ placeholder.child = fileItem;
+ this._fileItems.push(fileItem);
+ let fileItemHandler = {};
+ fileItemHandler.selectedId = fileItem.connect('selected',
+ this._onFileItemSelected.bind(this));
+ fileItemHandler.renameId = fileItem.connect('rename-clicked',
+ this._onRenameClicked.bind(this));
+ fileItemHandler.destroyId = fileItem.connect('destroy', () => {
+ this._fileItemHandlers.delete(fileItem);
+ });
+ this._fileItemHandlers.set(fileItem, fileItemHandler);
+
+ /* If this file is new in the Desktop and hasn't yet
+ * fixed coordinates, store the new possition to ensure
+ * that the next time it will be shown in the same possition.
+ * Also store the new possition if it has been moved by the user,
+ * and not triggered by a screen change.
+ */
+ if ((fileItem.savedCoordinates == null) || (coordinatesAction == StoredCoordinates.OVERWRITE)) {
+ let [fileX, fileY] = placeholder.get_transformed_position();
+ fileItem.savedCoordinates = [Math.round(fileX), Math.round(fileY)];
+ }
+ }
+
+ addFileItemCloseTo(fileItem, x, y, coordinatesAction) {
+ let [column, row] = this._getEmptyPlaceClosestTo(x, y, coordinatesAction);
+ fileItem.set_margins(this._extra_width, this._extra_height);
+ this._addFileItemTo(fileItem, column, row, coordinatesAction);
+ }
+
+ _getEmptyPlaceClosestTo(x, y, coordinatesAction) {
+
+ let [actorX, actorY] = this._grid.get_transformed_position();
+ let actorWidth = this._grid.allocation.x2 - this._grid.allocation.x1;
+ let actorHeight = this._grid.allocation.y2 - this._grid.allocation.y1;
+ let placeX = Math.round((x - actorX) * this._columns / actorWidth);
+ let placeY = Math.round((y - actorY) * this._rows / actorHeight);
+
+ placeX = DesktopIconsUtil.clamp(placeX, 0, this._columns - 1);
+ placeY = DesktopIconsUtil.clamp(placeY, 0, this._rows - 1);
+ if (this.layout.get_child_at(placeX, placeY).child == null)
+ return [placeX, placeY];
+ let found = false;
+ let resColumn = null;
+ let resRow = null;
+ let minDistance = Infinity;
+ for (let column = 0; column < this._columns; column++) {
+ for (let row = 0; row < this._rows; row++) {
+ let placeholder = this.layout.get_child_at(column, row);
+ if (placeholder.child != null)
+ continue;
+
+ let [proposedX, proposedY] = placeholder.get_transformed_position();
+ if (coordinatesAction == StoredCoordinates.ASSIGN)
+ return [column, row];
+ let distance = DesktopIconsUtil.distanceBetweenPoints(proposedX, proposedY, x, y);
+ if (distance < minDistance) {
+ found = true;
+ minDistance = distance;
+ resColumn = column;
+ resRow = row;
+ }
+ }
+ }
+
+ if (!found)
+ throw new Error(`Not enough place at monitor ${this._bgManager._monitorIndex}`);
+
+ return [resColumn, resRow];
+ }
+
+ removeFileItem(fileItem) {
+ let index = this._fileItems.indexOf(fileItem);
+ if (index > -1)
+ this._fileItems.splice(index, 1);
+ else
+ throw new Error('Error removing children from container');
+
+ let [column, row] = this._getPosOfFileItem(fileItem);
+ let placeholder = this.layout.get_child_at(column, row);
+ placeholder.child = null;
+ let fileItemHandler = this._fileItemHandlers.get(fileItem);
+ Object.values(fileItemHandler).forEach(id => fileItem.disconnect(id));
+ this._fileItemHandlers.delete(fileItem);
+ }
+
+ _fillPlaceholders() {
+ this._rows = this._getMaxRows();
+ this._columns = this._getMaxColumns();
+ for (let column = 0; column < this._columns; column++) {
+ for (let row = 0; row < this._rows; row++) {
+ this.layout.attach(new Placeholder(), column, row, 1, 1);
+ }
+ }
+ }
+
+ usingNewAllocationAPI() {
+ return (this.get_fixed_position !== undefined);
+ }
+
+ reset() {
+ let tmpFileItemsCopy = this._fileItems.slice();
+ for (let fileItem of tmpFileItemsCopy)
+ this.removeFileItem(fileItem);
+ this._grid.remove_all_children();
+
+ this._fillPlaceholders();
+
+ if (this.usingNewAllocationAPI())
+ this.allocate_preferred_size(0, 0);
+ }
+
+ _onStageMotion(actor, event) {
+ if (this._drawingRubberBand) {
+ let [x, y] = event.get_coords();
+ this._updateRubberBand(x, y);
+ this._selectFromRubberband(x, y);
+ }
+ return Clutter.EVENT_PROPAGATE;
+ }
+
+ _onPressButton(actor, event) {
+ let button = event.get_button();
+ let [x, y] = event.get_coords();
+
+ this._grid.grab_key_focus();
+
+ if (button == 1) {
+ let shiftPressed = !!(event.get_state() & Clutter.ModifierType.SHIFT_MASK);
+ let controlPressed = !!(event.get_state() & Clutter.ModifierType.CONTROL_MASK);
+ if (!shiftPressed && !controlPressed)
+ Extension.desktopManager.clearSelection();
+ let [gridX, gridY] = this._grid.get_transformed_position();
+ Extension.desktopManager.startRubberBand(x, y, gridX, gridY);
+ return Clutter.EVENT_STOP;
+ }
+
+ if (button == 3) {
+ this._openMenu(x, y);
+
+ return Clutter.EVENT_STOP;
+ }
+
+ return Clutter.EVENT_PROPAGATE;
+ }
+
+ _addDesktopBackgroundMenu() {
+ this._desktopBackgroundMenu = this._createDesktopBackgroundMenu();
+ this._menuManager.addMenu(this._desktopBackgroundMenu);
+
+ this.connect('destroy', () => {
+ this._desktopBackgroundMenu.destroy();
+ this._desktopBackgroundMenu = null;
+ });
+ }
+
+ _getMaxColumns() {
+ let gridWidth = this._grid.allocation.x2 - this._grid.allocation.x1;
+ let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
+ let desiredWidth = Prefs.getDesiredWidth(scaleFactor, this._extra_width);
+ return Math.floor(gridWidth / desiredWidth);
+ }
+
+ _getMaxRows() {
+ let gridHeight = this._grid.allocation.y2 - this._grid.allocation.y1;
+ let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
+ let desiredHeight = Prefs.getDesiredHeight(scaleFactor, this._extra_height);
+ return Math.floor(gridHeight / desiredHeight);
+ }
+
+ acceptDrop(source, actor, x, y, time) {
+ /* Coordinates are relative to the grid, we want to transform them to
+ * absolute coordinates to work across monitors */
+ let [gridX, gridY] = this.get_transformed_position();
+ let [absoluteX, absoluteY] = [x + gridX, y + gridY];
+ return Extension.desktopManager.acceptDrop(absoluteX, absoluteY);
+ }
+
+ _getPosOfFileItem(itemToFind) {
+ if (itemToFind == null)
+ throw new Error('Error at _getPosOfFileItem: child cannot be null');
+
+ let found = false;
+ let column = 0;
+ let row = 0;
+ for (column = 0; column < this._columns; column++) {
+ for (row = 0; row < this._rows; row++) {
+ let item = this.layout.get_child_at(column, row);
+ if (item.child && item.child.file.equal(itemToFind.file)) {
+ found = true;
+ break;
+ }
+ }
+
+ if (found)
+ break;
+ }
+
+ if (!found)
+ throw new Error('Position of file item was not found');
+
+ return [column, row];
+ }
+
+ _onFileItemSelected(fileItem, keepCurrentSelection, rubberBandSelection, addToSelection) {
+ this._grid.grab_key_focus();
+ }
+
+ _onRenameClicked(fileItem) {
+ if (fileItem.menu && fileItem.menu.isOpen) {
+ let id = fileItem.menu.connect('menu-closed', () => {
+ fileItem.menu.disconnect(id);
+ this.doRename(fileItem);
+ });
+ } else {
+ this.doRename(fileItem);
+ }
+ }
+
+ doRename(fileItem) {
+ let renamePopup = new RenamePopup(fileItem);
+ this._menuManager.addMenu(renamePopup);
+ this._menuManager.ignoreRelease();
+
+ renamePopup.connect('menu-closed', () => renamePopup.destroy());
+ renamePopup.open();
+ }
+});
+
+var RenamePopupMenuItem = GObject.registerClass(
+class RenamePopupMenuItem extends PopupMenu.PopupBaseMenuItem {
+ _init(fileItem) {
+ super._init({
+ style_class: 'rename-popup-item',
+ reactive: false,
+ });
+
+ if (PopupMenu.Ornament.HIDDEN !== undefined)
+ this.setOrnament(PopupMenu.Ornament.HIDDEN);
+ else /* Support version prior 3.34.1 */
+ this._ornamentLabel.visible = false;
+
+ this._fileItem = fileItem;
+
+ // Entry
+ this._entry = new St.Entry({
+ x_expand: true,
+ width: 200,
+ });
+ this.add_child(this._entry);
+
+ this._entry.clutter_text.connect(
+ 'notify::text', this._validate.bind(this));
+ this._entry.clutter_text.connect(
+ 'activate', this._onRenameAccepted.bind(this));
+
+ // Rename button
+ this._button = new St.Button({
+ style_class: 'button',
+ reactive: true,
+ button_mask: St.ButtonMask.ONE | St.ButtonMask.TWO,
+ can_focus: true,
+ label: _('Rename'),
+ });
+ this.add_child(this._button);
+ this._button.connect('clicked', this._onRenameAccepted.bind(this));
+ }
+
+ vfunc_map() {
+ this._entry.text = this._fileItem.displayName;
+ this._entry.clutter_text.set_selection(0, -1);
+ super.vfunc_map();
+ }
+
+ vfunc_key_focus_in() {
+ super.vfunc_key_focus_in();
+ this._entry.clutter_text.grab_key_focus();
+ }
+
+ _isValidFolderName() {
+ let newName = this._entry.text.trim();
+
+ return newName.length > 0 && newName.indexOf('/') === -1 &&
+ newName != this._fileItem.displayName;
+ }
+
+ _validate() {
+ this._button.reactive = this._isValidFolderName();
+ }
+
+ _onRenameAccepted() {
+ if (!this._isValidFolderName())
+ return;
+
+ DBusUtils.NautilusFileOperationsProxy.RenameFileRemote(
+ this._fileItem.file.get_uri(),
+ this._entry.text.trim(),
+ (result, error) => {
+ if (error)
+ throw new Error('Error renaming file: ' + error.message);
+ }
+ );
+
+ this.activate(Clutter.get_current_event());
+ }
+});
+
+var RenamePopup = class RenameFolderMenu extends PopupMenu.PopupMenu {
+ constructor(fileItem) {
+ super(fileItem, 0.5, St.Side.TOP);
+ this.actor.add_style_class_name('rename-popup');
+
+ // We want to keep the item hovered while the menu is up
+ this.blockSourceEvents = true;
+
+ let menuItem = new RenamePopupMenuItem(fileItem);
+ this.addMenuItem(menuItem);
+
+ if (this.focusActor !== undefined) {
+ // Focus the text entry on menu pop-up, works starting 3.34.1
+ this.focusActor = menuItem;
+ } else {
+ this.connect('open-state-changed', (_menu, state) => {
+ if (state)
+ this._openId = GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
+ delete this._openId;
+ menuItem.grab_key_focus()
+ });
+ else if (this._openId)
+ GLib.source_remove(this._openId);
+ });
+ }
+
+ // Chain our visibility and lifecycle to that of the fileItem source
+ this._fileItemMappedId = fileItem.connect('notify::mapped', () => {
+ if (!fileItem.mapped)
+ this.close();
+ });
+ fileItem.connect('destroy', () => {
+ fileItem.disconnect(this._fileItemMappedId);
+ this.destroy();
+ });
+
+ Main.uiGroup.add_actor(this.actor);
+ }
+};
diff --git a/extensions/desktop-icons/desktopIconsUtil.js b/extensions/desktop-icons/desktopIconsUtil.js
new file mode 100644
index 00000000..696c945e
--- /dev/null
+++ b/extensions/desktop-icons/desktopIconsUtil.js
@@ -0,0 +1,164 @@
+/* Desktop Icons GNOME Shell extension
+ *
+ * Copyright (C) 2017 Carlos Soriano <csoriano@redhat.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+const Gtk = imports.gi.Gtk;
+const Gio = imports.gi.Gio;
+const GLib = imports.gi.GLib;
+const ExtensionUtils = imports.misc.extensionUtils;
+const Me = ExtensionUtils.getCurrentExtension();
+const Prefs = Me.imports.prefs;
+const Main = imports.ui.main;
+const ShellMountOperation = imports.ui.shellMountOperation;
+
+const TERMINAL_SCHEMA = 'org.gnome.desktop.default-applications.terminal';
+const EXEC_KEY = 'exec';
+
+var DEFAULT_ATTRIBUTES = 'metadata::*,standard::*,access::*,time::modified,unix::mode';
+
+function getDesktopDir() {
+ let desktopPath = GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_DESKTOP);
+ return Gio.File.new_for_commandline_arg(desktopPath);
+}
+
+function clamp(value, min, max) {
+ return Math.max(Math.min(value, max), min);
+};
+
+function launchTerminal(workdir) {
+ let terminalSettings = new Gio.Settings({ schema_id: TERMINAL_SCHEMA });
+ let exec = terminalSettings.get_string(EXEC_KEY);
+ let argv = [exec, `--working-directory=${workdir}`];
+
+ /* The following code has been extracted from GNOME Shell's
+ * source code in Misc.Util.trySpawn function and modified to
+ * set the working directory.
+ *
+ * https://gitlab.gnome.org/GNOME/gnome-shell/blob/gnome-3-30/js/misc/util.js
+ */
+
+ var success, pid;
+ try {
+ [success, pid] = GLib.spawn_async(workdir, argv, null,
+ GLib.SpawnFlags.SEARCH_PATH | GLib.SpawnFlags.DO_NOT_REAP_CHILD,
+ null);
+ } catch (err) {
+ /* Rewrite the error in case of ENOENT */
+ if (err.matches(GLib.SpawnError, GLib.SpawnError.NOENT)) {
+ throw new GLib.SpawnError({ code: GLib.SpawnError.NOENT,
+ message: _("Command not found") });
+ } else if (err instanceof GLib.Error) {
+ // The exception from gjs contains an error string like:
+ // Error invoking GLib.spawn_command_line_async: Failed to
+ // execute child process "foo" (No such file or directory)
+ // We are only interested in the part in the parentheses. (And
+ // we can't pattern match the text, since it gets localized.)
+ let message = err.message.replace(/.*\((.+)\)/, '$1');
+ throw new (err.constructor)({ code: err.code,
+ message: message });
+ } else {
+ throw err;
+ }
+ }
+ // Dummy child watch; we don't want to double-fork internally
+ // because then we lose the parent-child relationship, which
+ // can break polkit. See https://bugzilla.redhat.com//show_bug.cgi?id=819275
+ GLib.child_watch_add(GLib.PRIORITY_DEFAULT, pid, () => {});
+}
+
+function distanceBetweenPoints(x, y, x2, y2) {
+ return (Math.pow(x - x2, 2) + Math.pow(y - y2, 2));
+}
+
+function getExtraFolders() {
+ let extraFolders = new Array();
+ if (Prefs.settings.get_boolean('show-home')) {
+ extraFolders.push([Gio.File.new_for_commandline_arg(GLib.get_home_dir()), Prefs.FileType.USER_DIRECTORY_HOME]);
+ }
+ if (Prefs.settings.get_boolean('show-trash')) {
+ extraFolders.push([Gio.File.new_for_uri('trash:///'), Prefs.FileType.USER_DIRECTORY_TRASH]);
+ }
+ return extraFolders;
+}
+
+function getFileExtensionOffset(filename, isDirectory) {
+ let offset = filename.length;
+
+ if (!isDirectory) {
+ let doubleExtensions = ['.gz', '.bz2', '.sit', '.Z', '.bz', '.xz'];
+ for (let extension of doubleExtensions) {
+ if (filename.endsWith(extension)) {
+ offset -= extension.length;
+ filename = filename.substring(0, offset);
+ break;
+ }
+ }
+ let lastDot = filename.lastIndexOf('.');
+ if (lastDot > 0)
+ offset = lastDot;
+ }
+ return offset;
+}
+
+function getGtkClassBackgroundColor(classname, state) {
+ let widget = new Gtk.WidgetPath();
+ widget.append_type(Gtk.Widget);
+
+ let context = new Gtk.StyleContext();
+ context.set_path(widget);
+ context.add_class(classname);
+ return context.get_background_color(state);
+}
+
+// Reference the extension org.gnome.shell.extensions.drive-menu
+function eject(mount) {
+ let unmountArgs = [
+ Gio.MountUnmountFlags.NONE,
+ (new ShellMountOperation.ShellMountOperation(mount)).mountOp,
+ null, // Gio.Cancellable
+ ];
+
+ if (mount.can_eject()) {
+ mount.eject_with_operation(...unmountArgs,
+ _ejectFinish.bind(mount));
+ } else {
+ mount.unmount_with_operation(...unmountArgs,
+ _unmountFinish.bind(mount));
+ }
+}
+
+function _unmountFinish(mount, result) {
+ try {
+ mount.unmount_with_operation_finish(result);
+ } catch (e) {
+ this._reportFailure(e);
+ }
+}
+
+function _ejectFinish(mount, result) {
+ try {
+ mount.eject_with_operation_finish(result);
+ } catch (e) {
+ this._reportFailure(e);
+ }
+}
+
+function _reportFailure(exception) {
+ // TRANSLATORS: %s is the filesystem name
+ let msg = _('Ejecting drive “%s” failed:').format(this.mount.get_name());
+ Main.notifyError(msg, exception.message);
+}
diff --git a/extensions/desktop-icons/desktopManager.js b/extensions/desktop-icons/desktopManager.js
new file mode 100644
index 00000000..1aad8c67
--- /dev/null
+++ b/extensions/desktop-icons/desktopManager.js
@@ -0,0 +1,856 @@
+/* Desktop Icons GNOME Shell extension
+ *
+ * Copyright (C) 2017 Carlos Soriano <csoriano@redhat.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+const Gtk = imports.gi.Gtk;
+const Clutter = imports.gi.Clutter;
+const GObject = imports.gi.GObject;
+const Gio = imports.gi.Gio;
+const GLib = imports.gi.GLib;
+const St = imports.gi.St;
+const Mainloop = imports.mainloop;
+const Meta = imports.gi.Meta;
+
+const Animation = imports.ui.animation;
+const Background = imports.ui.background;
+const DND = imports.ui.dnd;
+const Main = imports.ui.main;
+const GrabHelper = imports.ui.grabHelper;
+
+const ExtensionUtils = imports.misc.extensionUtils;
+const Me = ExtensionUtils.getCurrentExtension();
+const Extension = Me.imports.extension;
+const DesktopGrid = Me.imports.desktopGrid;
+const FileItem = Me.imports.fileItem;
+const Prefs = Me.imports.prefs;
+const DBusUtils = Me.imports.dbusUtils;
+const DesktopIconsUtil = Me.imports.desktopIconsUtil;
+
+const { loadInterfaceXML } = imports.misc.fileUtils;
+
+const Clipboard = St.Clipboard.get_default();
+const CLIPBOARD_TYPE = St.ClipboardType.CLIPBOARD;
+
+var S_IWOTH = 0x00002;
+
+function getDpy() {
+ return global.screen || global.display;
+}
+
+function findMonitorIndexForPos(x, y) {
+ return getDpy().get_monitor_index_for_rect(new Meta.Rectangle({x, y}));
+}
+
+
+var DesktopManager = GObject.registerClass({
+ Properties: {
+ 'writable-by-others': GObject.ParamSpec.boolean(
+ 'writable-by-others',
+ 'WritableByOthers',
+ 'Whether the desktop\'s directory can be written by others (o+w unix permission)',
+ GObject.ParamFlags.READABLE,
+ false
+ )
+ }
+}, class DesktopManager extends GObject.Object {
+ _init(params) {
+ super._init(params);
+
+ this._layoutChildrenId = 0;
+ this._deleteChildrenId = 0;
+ this._monitorDesktopDir = null;
+ this._desktopMonitorCancellable = null;
+ this._desktopGrids = {};
+ this._fileItemHandlers = new Map();
+ this._fileItems = new Map();
+ this._dragCancelled = false;
+ this._queryFileInfoCancellable = null;
+ this._unixMode = null;
+ this._writableByOthers = null;
+ this._discreteGpuAvailable = false;
+
+ this._monitorsChangedId = Main.layoutManager.connect('monitors-changed', () => this._recreateDesktopIcons());
+ this._rubberBand = new St.Widget({ style_class: 'rubber-band' });
+ this._rubberBand.hide();
+ Main.layoutManager._backgroundGroup.add_child(this._rubberBand);
+ this._grabHelper = new GrabHelper.GrabHelper(global.stage);
+
+ this._mountMonitor = Gio.VolumeMonitor.get();
+ this._mountAddedId = this._mountMonitor.connect('mount-added', (monitor, mount) => {
+ this._recreateDesktopIcons(); });
+ this._mountRemovedId = this._mountMonitor.connect('mount-removed', (monitor, mount) => {
+ this._recreateDesktopIcons(); });
+
+ this._addDesktopIcons();
+ this._monitorDesktopFolder();
+
+ this.settingsId = Prefs.settings.connect('changed', () => this._recreateDesktopIcons());
+ this.gtkSettingsId = Prefs.gtkSettings.connect('changed', (obj, key) => {
+ if (key == 'show-hidden')
+ this._recreateDesktopIcons();
+ });
+ this.nautilusSettingsId = Prefs.nautilusSettings.connect('changed', (obj, key) => {
+ if (key == 'show-image-thumbnails')
+ this._recreateDesktopIcons();
+ });
+
+ this._selection = new Set();
+ this._currentSelection = new Set();
+ this._inDrag = false;
+ this._dragXStart = Number.POSITIVE_INFINITY;
+ this._dragYStart = Number.POSITIVE_INFINITY;
+
+ this._switcherooNotifyId = global.connect('notify::switcheroo-control',
+ () => this._updateDiscreteGpuAvailable());
+ this._updateDiscreteGpuAvailable();
+ }
+
+ _updateDiscreteGpuAvailable() {
+ this._switcherooProxy = global.get_switcheroo_control();
+ if (this._switcherooProxy) {
+ let prop = this._switcherooProxy.get_cached_property('HasDualGpu');
+ this._discreteGpuAvailable = prop ? prop.unpack() : false;
+ } else {
+ this._discreteGpuAvailable = false;
+ }
+ }
+
+ startRubberBand(x, y) {
+ this._rubberBandInitialX = x;
+ this._rubberBandInitialY = y;
+ this._initRubberBandColor();
+ this._updateRubberBand(x, y);
+ this._rubberBand.show();
+ this._grabHelper.grab({ actor: global.stage });
+ Extension.lockActivitiesButton = true;
+ this._stageReleaseEventId = global.stage.connect('button-release-event', (actor, event) => {
+ this.endRubberBand();
+ });
+ this._rubberBandId = global.stage.connect('motion-event', (actor, event) => {
+ /* In some cases, when the user starts a rubberband selection and ends it
+ * (by releasing the left button) over a window instead of doing it over
+ * the desktop, the stage doesn't receive the "button-release" event.
+ * This happens currently with, at least, Dash to Dock extension, but
+ * it probably also happens with other applications or extensions.
+ * To fix this, we also end the rubberband selection if we detect mouse
+ * motion in the stage without the left button pressed during a
+ * rubberband selection.
+ * */
+ let button = event.get_state();
+ if (!(button & Clutter.ModifierType.BUTTON1_MASK)) {
+ this.endRubberBand();
+ return;
+ }
+ [x, y] = event.get_coords();
+ this._updateRubberBand(x, y);
+ let x0, y0, x1, y1;
+ if (x >= this._rubberBandInitialX) {
+ x0 = this._rubberBandInitialX;
+ x1 = x;
+ } else {
+ x1 = this._rubberBandInitialX;
+ x0 = x;
+ }
+ if (y >= this._rubberBandInitialY) {
+ y0 = this._rubberBandInitialY;
+ y1 = y;
+ } else {
+ y1 = this._rubberBandInitialY;
+ y0 = y;
+ }
+ for (let [fileUri, fileItem] of this._fileItems) {
+ fileItem.emit('selected', true, true,
+ fileItem.intersectsWith(x0, y0, x1 - x0, y1 - y0));
+ }
+ });
+ }
+
+ endRubberBand() {
+ this._rubberBand.hide();
+ Extension.lockActivitiesButton = false;
+ this._grabHelper.ungrab();
+ global.stage.disconnect(this._rubberBandId);
+ global.stage.disconnect(this._stageReleaseEventId);
+ this._rubberBandId = 0;
+ this._stageReleaseEventId = 0;
+
+ this._selection = new Set([...this._selection, ...this._currentSelection]);
+ this._currentSelection.clear();
+ }
+
+ _updateRubberBand(currentX, currentY) {
+ let x = this._rubberBandInitialX < currentX ? this._rubberBandInitialX
+ : currentX;
+ let y = this._rubberBandInitialY < currentY ? this._rubberBandInitialY
+ : currentY;
+ let width = Math.abs(this._rubberBandInitialX - currentX);
+ let height = Math.abs(this._rubberBandInitialY - currentY);
+ /* TODO: Convert to gobject.set for 3.30 */
+ this._rubberBand.set_position(x, y);
+ this._rubberBand.set_size(width, height);
+ }
+
+ _recreateDesktopIcons() {
+ this.clearSelection();
+ this._destroyDesktopIcons();
+ this._addDesktopIcons();
+ }
+
+ _addDesktopIcons() {
+ let first_element = true;
+ forEachBackgroundManager(bgManager => {
+ let newGrid = new DesktopGrid.DesktopGrid(bgManager);
+ newGrid.connect('destroy', (actor) => {
+ // if a grid loses its actor, remove it from the grid list
+ for (let grid in this._desktopGrids)
+ if (this._desktopGrids[grid] == actor) {
+ delete this._desktopGrids[grid];
+ break;
+ }
+ });
+ newGrid.isFirst = first_element;
+ first_element = false;
+ this._desktopGrids[bgManager._monitorIndex] = newGrid;
+ });
+
+ this._scanFiles();
+ }
+
+ _destroyDesktopIcons() {
+ Object.values(this._desktopGrids).forEach(grid => grid.destroy());
+ this._desktopGrids = {};
+ }
+
+ /**
+ * Initialize rubberband color from the GTK rubberband class
+ * */
+ _initRubberBandColor() {
+ let rgba = DesktopIconsUtil.getGtkClassBackgroundColor('rubberband', Gtk.StateFlags.NORMAL);
+ let background_color =
+ 'rgba(' + rgba.red * 255 + ', ' + rgba.green * 255 + ', ' + rgba.blue * 255 + ', 0.4)';
+ this._rubberBand.set_style('background-color: ' + background_color);
+ }
+
+ async _scanFiles() {
+ for (let [fileItem, fileItemHandler] of this._fileItemHandlers)
+ Object.values(fileItemHandler).forEach(id => fileItem.disconnect(id));
+
+ this._fileItemHandlers = new Map();
+
+ if (!this._unixMode) {
+ let desktopDir = DesktopIconsUtil.getDesktopDir();
+ let fileInfo = desktopDir.query_info(Gio.FILE_ATTRIBUTE_UNIX_MODE,
+ Gio.FileQueryInfoFlags.NONE,
+ null);
+ this._unixMode = fileInfo.get_attribute_uint32(Gio.FILE_ATTRIBUTE_UNIX_MODE);
+ this._setWritableByOthers((this._unixMode & S_IWOTH) != 0);
+ }
+
+ try {
+ let items = [];
+ for (let item of await this._enumerateDesktop())
+ items.push(item);
+ for (let item of this._getMounts())
+ items.push(item);
+
+ let tmpFileItems = new Map();
+ for (let [file, info, extra] of items) {
+ let fileItem = new FileItem.FileItem(file, info, extra);
+ tmpFileItems.set(fileItem.file.get_uri(), fileItem);
+ let fileItemHandler = {}
+ fileItemHandler.selectedId = fileItem.connect('selected',
+ this._onFileItemSelected.bind(this));
+ fileItemHandler.destroyId = fileItem.connect('destroy', () => {
+ this._fileItemHandlers.delete(fileItem);
+ });
+ this._fileItemHandlers.set(fileItem, fileItemHandler);
+ }
+ this._fileItems = tmpFileItems;
+ } catch (e) {
+ if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
+ log(`Error loading desktop files ${e.message}`, logError(e));
+ return;
+ }
+
+ this.scheduleReLayoutChildren();
+ }
+
+ getDesktopFileNames () {
+ let fileList = [];
+ for (let [uri, item] of this._fileItems) {
+ fileList.push(item.fileName);
+ }
+ return fileList;
+ }
+
+ _enumerateDesktop() {
+ return new Promise((resolve, reject) => {
+ if (this._desktopEnumerateCancellable)
+ this._desktopEnumerateCancellable.cancel();
+
+ this._desktopEnumerateCancellable = new Gio.Cancellable();
+
+ let desktopDir = DesktopIconsUtil.getDesktopDir();
+ desktopDir.enumerate_children_async(DesktopIconsUtil.DEFAULT_ATTRIBUTES,
+ Gio.FileQueryInfoFlags.NONE,
+ GLib.PRIORITY_DEFAULT,
+ this._desktopEnumerateCancellable,
+ (source, result) => {
+ try {
+ let fileEnum = source.enumerate_children_finish(result);
+ let resultGenerator = function *() {
+ let info;
+ for (let [newFolder, extras] of DesktopIconsUtil.getExtraFolders()) {
+ yield [newFolder, newFolder.query_info(DesktopIconsUtil.DEFAULT_ATTRIBUTES, Gio.FileQueryInfoFlags.NONE, this._desktopEnumerateCancellable), extras];
+ }
+ while ((info = fileEnum.next_file(null)))
+ yield [fileEnum.get_child(info), info, Prefs.FileType.NONE];
+ }.bind(this);
+ resolve(resultGenerator());
+ } catch (e) {
+ reject(e);
+ }
+ });
+ });
+ }
+
+ _monitorDesktopFolder() {
+ if (this._monitorDesktopDir) {
+ this._monitorDesktopDir.cancel();
+ this._monitorDesktopDir = null;
+ }
+
+ let desktopDir = DesktopIconsUtil.getDesktopDir();
+ this._monitorDesktopDir = desktopDir.monitor_directory(Gio.FileMonitorFlags.WATCH_MOVES, null);
+ this._monitorDesktopDir.set_rate_limit(1000);
+ this._monitorDesktopDir.connect('changed', (obj, file, otherFile, eventType) => this._updateDesktopIfChanged(file, otherFile, eventType));
+ }
+
+ _getMounts() {
+ let files = [];
+ if (!Prefs.settings.get_boolean('show-mount'))
+ return files;
+
+ this._mountMonitor.get_mounts().forEach( mount => {
+ if (this._isNetworkMount(mount))
+ return;
+
+ let file = mount.get_root();
+ let info = file.query_info(DesktopIconsUtil.DEFAULT_ATTRIBUTES,
+ Gio.FileQueryInfoFlags.NONE,
+ null);
+ files.push([file, info, Prefs.FileType.MOUNT_DISK]);
+ });
+
+ return files;
+ }
+
+ _isNetworkMount(mount) {
+ let volume = mount.get_volume();
+ if (!volume)
+ return true;
+
+ return volume.get_identifier('class') == 'network';
+ }
+
+ checkIfSpecialFilesAreSelected() {
+ for (let fileItem of this._selection) {
+ if (fileItem.isSpecial)
+ return true;
+ }
+ return false;
+ }
+
+ getNumberOfSelectedItems() {
+ return this._selection.size;
+ }
+
+ get writableByOthers() {
+ return this._writableByOthers;
+ }
+
+ _setWritableByOthers(value) {
+ if (value == this._writableByOthers)
+ return;
+
+ this._writableByOthers = value
+ this.notify('writable-by-others');
+ }
+
+ get discreteGpuAvailable() {
+ return this._discreteGpuAvailable;
+ }
+
+ get switcherooProxyGPUs() {
+ if (!this._switcherooProxy) {
+ log('Could not apply discrete GPU environment, switcheroo-control not available');
+ return null;
+ }
+ let prop = this._switcherooProxy.get_cached_property("GPUs");
+ return prop ? prop.unpack() : null;
+ }
+
+ _updateDesktopIfChanged (file, otherFile, eventType) {
+ let {
+ DELETED, MOVED_IN, MOVED_OUT, CREATED, RENAMED, CHANGES_DONE_HINT, ATTRIBUTE_CHANGED
+ } = Gio.FileMonitorEvent;
+
+ let fileUri = file.get_uri();
+ let fileItem = this._fileItems.get(fileUri);
+ switch(eventType) {
+ case RENAMED:
+ this._fileItems.delete(fileUri);
+ this._fileItems.set(otherFile.get_uri(), fileItem);
+ fileItem.onFileRenamed(otherFile);
+ return;
+ case CHANGES_DONE_HINT:
+ case ATTRIBUTE_CHANGED:
+ /* a file changed, rather than the desktop itself */
+ let desktopDir = DesktopIconsUtil.getDesktopDir();
+ if (fileItem && file.get_uri() != desktopDir.get_uri()) {
+ fileItem.onAttributeChanged();
+ return;
+ }
+
+ if (this._queryFileInfoCancellable)
+ this._queryFileInfoCancellable.cancel();
+
+ file.query_info_async(Gio.FILE_ATTRIBUTE_UNIX_MODE,
+ Gio.FileQueryInfoFlags.NONE,
+ GLib.PRIORITY_DEFAULT,
+ this._queryFileInfoCancellable,
+ (source, result) => {
+ try {
+ let info = source.query_info_finish(result);
+ this._queryFileInfoCancellable = null;
+
+ this._unixMode = info.get_attribute_uint32(Gio.FILE_ATTRIBUTE_UNIX_MODE);
+ this._setWritableByOthers((this._unixMode & S_IWOTH) != 0);
+
+ if (this._writableByOthers)
+ log(`desktop-icons: Desktop is writable by others - will not allow launching any desktop files`);
+ } catch(error) {
+ if (!error.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
+ global.log('Error getting desktop unix mode: ' + error);
+ }
+ });
+
+ return;
+ }
+
+ // Only get a subset of events we are interested in.
+ // Note that CREATED will emit a CHANGES_DONE_HINT
+ if (![DELETED, MOVED_IN, MOVED_OUT, CREATED].includes(eventType))
+ return;
+
+ this._recreateDesktopIcons();
+ }
+
+ _setupDnD() {
+ this._draggableContainer = new St.Widget({
+ visible: true,
+ width: 1,
+ height: 1,
+ x: 0,
+ y: 0,
+ style_class: 'draggable'
+ });
+ this._draggableContainer._delegate = this;
+ this._draggable = DND.makeDraggable(this._draggableContainer,
+ {
+ manualMode: true,
+ dragActorOpacity: 100
+ });
+
+ this._draggable.connect('drag-cancelled', () => this._onDragCancelled());
+ this._draggable.connect('drag-end', () => this._onDragEnd());
+
+ this._draggable._dragActorDropped = event => this._dragActorDropped(event);
+ }
+
+ dragStart() {
+ if (this._inDrag) {
+ return;
+ }
+
+ this._setupDnD();
+ let event = Clutter.get_current_event();
+ let [x, y] = event.get_coords();
+ [this._dragXStart, this._dragYStart] = event.get_coords();
+ this._inDrag = true;
+
+ for (let fileItem of this._selection) {
+ let clone = new Clutter.Clone({
+ source: fileItem,
+ reactive: false
+ });
+ clone.x = fileItem.get_transformed_position()[0];
+ clone.y = fileItem.get_transformed_position()[1];
+ this._draggableContainer.add_child(clone);
+ }
+
+ Main.layoutManager.uiGroup.add_child(this._draggableContainer);
+
+ if (this._draggableContainer.get_fixed_position !== undefined)
+ this._draggableContainer.allocate_preferred_size(0, 0);
+
+ this._draggable.startDrag(x, y, global.get_current_time(), event.get_event_sequence());
+ }
+
+ _onDragCancelled() {
+ let event = Clutter.get_current_event();
+ let [x, y] = event.get_coords();
+ this._dragCancelled = true;
+ }
+
+ _onDragEnd() {
+ this._inDrag = false;
+ Main.layoutManager.uiGroup.remove_child(this._draggableContainer);
+ }
+
+ _dragActorDropped(event) {
+ let [dropX, dropY] = event.get_coords();
+ let target = this._draggable._dragActor.get_stage().get_actor_at_pos(Clutter.PickMode.ALL,
+ dropX, dropY);
+
+ // We call observers only once per motion with the innermost
+ // target actor. If necessary, the observer can walk the
+ // parent itself.
+ let dropEvent = {
+ dropActor: this._draggable._dragActor,
+ targetActor: target,
+ clutterEvent: event
+ };
+ for (let dragMonitor of DND.dragMonitors) {
+ let dropFunc = dragMonitor.dragDrop;
+ if (dropFunc)
+ switch (dropFunc(dropEvent)) {
+ case DragDropResult.FAILURE:
+ case DragDropResult.SUCCESS:
+ return true;
+ case DragDropResult.CONTINUE:
+ continue;
+ }
+ }
+
+ // At this point it is too late to cancel a drag by destroying
+ // the actor, the fate of which is decided by acceptDrop and its
+ // side-effects
+ this._draggable._dragCancellable = false;
+
+ let destroyActor = false;
+ while (target) {
+ if (target._delegate && target._delegate.acceptDrop) {
+ let [r, targX, targY] = target.transform_stage_point(dropX, dropY);
+ if (target._delegate.acceptDrop(this._draggable.actor._delegate,
+ this._draggable._dragActor,
+ targX,
+ targY,
+ event.get_time())) {
+ // If it accepted the drop without taking the actor,
+ // handle it ourselves.
+ if (this._draggable._dragActor.get_parent() == Main.uiGroup) {
+ if (this._draggable._restoreOnSuccess) {
+ this._draggable._restoreDragActor(event.get_time());
+ return true;
+ }
+ else {
+ // We need this in order to make sure drag-end is fired
+ destroyActor = true;
+ }
+ }
+
+ this._draggable._dragInProgress = false;
+ getDpy().set_cursor(Meta.Cursor.DEFAULT);
+ this._draggable.emit('drag-end', event.get_time(), true);
+ if (destroyActor) {
+ this._draggable._dragActor.destroy();
+ }
+ this._draggable._dragComplete();
+
+ return true;
+ }
+ }
+ target = target.get_parent();
+ }
+
+ this._draggable._cancelDrag(event.get_time());
+
+ return true;
+ }
+
+ acceptDrop(xEnd, yEnd) {
+ let savedCoordinates = new Map();
+ let [xDiff, yDiff] = [xEnd - this._dragXStart, yEnd - this._dragYStart];
+ /* Remove all items before dropping new ones, so we can freely reposition
+ * them.
+ */
+ for (let item of this._selection) {
+ let [itemX, itemY] = item.get_transformed_position();
+ let monitorIndex = findMonitorIndexForPos(itemX, itemY);
+ savedCoordinates.set(item, [itemX, itemY]);
+ this._desktopGrids[monitorIndex].removeFileItem(item);
+ }
+
+ for (let item of this._selection) {
+ let [itemX, itemY] = savedCoordinates.get(item);
+ /* Set the new ideal position where the item drop should happen */
+ let newFileX = Math.round(xDiff + itemX);
+ let newFileY = Math.round(yDiff + itemY);
+ let monitorIndex = findMonitorIndexForPos(newFileX, newFileY);
+ this._desktopGrids[monitorIndex].addFileItemCloseTo(item, newFileX, newFileY, DesktopGrid.StoredCoordinates.OVERWRITE);
+ }
+
+ return true;
+ }
+
+ selectionDropOnFileItem (fileItemDestination) {
+ if (!fileItemDestination.isDirectory)
+ return false;
+
+ let droppedUris = [];
+ for (let fileItem of this._selection) {
+ if (fileItem.isSpecial)
+ return false;
+ if (fileItemDestination.file.get_uri() == fileItem.file.get_uri())
+ return false;
+ droppedUris.push(fileItem.file.get_uri());
+ }
+
+ if (droppedUris.length == 0)
+ return true;
+
+ DBusUtils.NautilusFileOperationsProxy.MoveURIsRemote(droppedUris,
+ fileItemDestination.file.get_uri(),
+ (result, error) => {
+ if (error)
+ throw new Error('Error moving files: ' + error.message);
+ }
+ );
+ for (let fileItem of this._selection) {
+ fileItem.state = FileItem.State.GONE;
+ }
+
+ this._recreateDesktopIcons();
+
+ return true;
+ }
+
+ _resetGridsAndScheduleLayout() {
+ this._deleteChildrenId = 0;
+
+ Object.values(this._desktopGrids).forEach((grid) => grid.reset());
+
+ if (!this._layoutChildrenId)
+ this._layoutChildrenId = GLib.idle_add(GLib.PRIORITY_LOW, () => this._layoutChildren());
+
+ return GLib.SOURCE_REMOVE;
+ }
+
+ scheduleReLayoutChildren() {
+ if (this._deleteChildrenId != 0)
+ return;
+
+ if (this._layoutChildrenId != 0) {
+ GLib.source_remove(this._layoutChildrenId);
+ this._layoutChildrenId = 0;
+ }
+
+
+ this._deleteChildrenId = GLib.idle_add(GLib.PRIORITY_LOW, () => this._resetGridsAndScheduleLayout());
+ }
+
+ _addFileItemCloseTo(item) {
+ let coordinates;
+ let x = 0;
+ let y = 0;
+ let coordinatesAction = DesktopGrid.StoredCoordinates.ASSIGN;
+ if (item.savedCoordinates != null) {
+ [x, y] = item.savedCoordinates;
+ coordinatesAction = DesktopGrid.StoredCoordinates.PRESERVE;
+ }
+ let monitorIndex = findMonitorIndexForPos(x, y);
+ let desktopGrid = this._desktopGrids[monitorIndex];
+ try {
+ desktopGrid.addFileItemCloseTo(item, x, y, coordinatesAction);
+ } catch (e) {
+ log(`Error adding children to desktop: ${e.message}`);
+ }
+ }
+
+ _layoutChildren() {
+ let showHidden = Prefs.gtkSettings.get_boolean('show-hidden');
+ /*
+ * Paint the icons in two passes:
+ * * first pass paints those that have their coordinates defined in the metadata
+ * * second pass paints those new files that still don't have their definitive coordinates
+ */
+ for (let [fileUri, fileItem] of this._fileItems) {
+ if (fileItem.savedCoordinates == null)
+ continue;
+ if (fileItem.state != FileItem.State.NORMAL)
+ continue;
+ if (!showHidden && fileItem.isHidden)
+ continue;
+ this._addFileItemCloseTo(fileItem);
+ }
+
+ for (let [fileUri, fileItem] of this._fileItems) {
+ if (fileItem.savedCoordinates !== null)
+ continue;
+ if (fileItem.state != FileItem.State.NORMAL)
+ continue;
+ if (!showHidden && fileItem.isHidden)
+ continue;
+ this._addFileItemCloseTo(fileItem);
+ }
+
+ this._layoutChildrenId = 0;
+ return GLib.SOURCE_REMOVE;
+ }
+
+ doRename() {
+ if (this._selection.size != 1)
+ return;
+
+ let item = [...this._selection][0];
+ if (item.canRename())
+ item.doRename();
+ }
+
+ doPreview() {
+ if (this._selection.size == 0)
+ return;
+
+ let item = [...this._selection][0];
+ DBusUtils.GnomeNautilusPreviewProxy.ShowFileRemote(item.file.get_uri(), 0, false);
+ }
+
+ doOpen() {
+ for (let fileItem of this._selection)
+ fileItem.doOpen();
+ }
+
+ doTrash() {
+ DBusUtils.NautilusFileOperationsProxy.TrashFilesRemote([...this._selection].map((x) => { return x.file.get_uri(); }),
+ (source, error) => {
+ if (error)
+ throw new Error('Error trashing files on the desktop: ' + error.message);
+ }
+ );
+ }
+
+ doEmptyTrash() {
+ DBusUtils.NautilusFileOperationsProxy.EmptyTrashRemote( (source, error) => {
+ if (error)
+ throw new Error('Error trashing files on the desktop: ' + error.message);
+ });
+ }
+
+ _onFileItemSelected(fileItem, keepCurrentSelection, rubberBandSelection, addToSelection) {
+
+ if (!keepCurrentSelection && !this._inDrag)
+ this.clearSelection();
+
+ let selection = keepCurrentSelection && rubberBandSelection ? this._currentSelection : this._selection;
+ if (addToSelection)
+ selection.add(fileItem);
+ else
+ selection.delete(fileItem);
+
+ for (let [fileUri, fileItem] of this._fileItems)
+ fileItem.isSelected = this._currentSelection.has(fileItem) || this._selection.has(fileItem);
+ }
+
+ clearSelection() {
+ for (let [fileUri, fileItem] of this._fileItems)
+ fileItem.isSelected = false;
+ this._selection = new Set();
+ this._currentSelection = new Set();
+ }
+
+ _getClipboardText(isCopy) {
+ let action = isCopy ? 'copy' : 'cut';
+ let text = `x-special/nautilus-clipboard\n${action}\n${
+ [...this._selection].map(s => s.file.get_uri()).join('\n')
+ }\n`;
+
+ return text;
+ }
+
+ doCopy() {
+ Clipboard.set_text(CLIPBOARD_TYPE, this._getClipboardText(true));
+ }
+
+ doCut() {
+ Clipboard.set_text(CLIPBOARD_TYPE, this._getClipboardText(false));
+ }
+
+ destroy() {
+ if (this._monitorDesktopDir)
+ this._monitorDesktopDir.cancel();
+ this._monitorDesktopDir = null;
+
+ if (this._mountAddedId)
+ this._mountMonitor.disconnect(this._mountAddedId);
+ this._mountAddedId = 0;
+ if (this._mountRemovedId)
+ this._mountMonitor.disconnect(this._mountRemovedId);
+ this._mountRemovedId = 0;
+
+ if (this.settingsId)
+ Prefs.settings.disconnect(this.settingsId);
+ this.settingsId = 0;
+ if (this.gtkSettingsId)
+ Prefs.gtkSettings.disconnect(this.gtkSettingsId);
+ this.gtkSettingsId = 0;
+ if (this.nautilusSettingsId)
+ Prefs.nautilusSettings.disconnect(this.nautilusSettingsId);
+ this.nautilusSettingsId = 0;
+
+ if (this._layoutChildrenId)
+ GLib.source_remove(this._layoutChildrenId);
+ this._layoutChildrenId = 0;
+
+ if (this._deleteChildrenId)
+ GLib.source_remove(this._deleteChildrenId);
+ this._deleteChildrenId = 0;
+
+ if (this._monitorsChangedId)
+ Main.layoutManager.disconnect(this._monitorsChangedId);
+ this._monitorsChangedId = 0;
+ if (this._stageReleaseEventId)
+ global.stage.disconnect(this._stageReleaseEventId);
+ this._stageReleaseEventId = 0;
+
+ if (this._rubberBandId)
+ global.stage.disconnect(this._rubberBandId);
+ this._rubberBandId = 0;
+
+ this._rubberBand.destroy();
+
+ if (this._queryFileInfoCancellable)
+ this._queryFileInfoCancellable.cancel();
+
+ Object.values(this._desktopGrids).forEach(grid => grid.destroy());
+ this._desktopGrids = {}
+ }
+});
+
+function forEachBackgroundManager(func) {
+ Main.layoutManager._bgManagers.forEach(func);
+}
diff --git a/extensions/desktop-icons/extension.js b/extensions/desktop-icons/extension.js
new file mode 100644
index 00000000..be3e59d1
--- /dev/null
+++ b/extensions/desktop-icons/extension.js
@@ -0,0 +1,75 @@
+/* Desktop Icons GNOME Shell extension
+ *
+ * Copyright (C) 2017 Carlos Soriano <csoriano@redhat.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+const Main = imports.ui.main;
+
+const ExtensionUtils = imports.misc.extensionUtils;
+const Me = ExtensionUtils.getCurrentExtension();
+const Prefs = Me.imports.prefs;
+const { DesktopManager } = Me.imports.desktopManager;
+const { TemplateManager } = Me.imports.templateManager;
+const DBusUtils = Me.imports.dbusUtils;
+
+var desktopManager = null;
+var templateManager = null;
+var addBackgroundMenuOrig = null;
+var _startupPreparedId;
+var lockActivitiesButton = false;
+
+var oldShouldToggleByCornerOrButtonFunction = null;
+
+function init() {
+ addBackgroundMenuOrig = Main.layoutManager._addBackgroundMenu;
+
+ Prefs.initTranslations();
+}
+
+function newShouldToggleByCornerOrButton() {
+ if (lockActivitiesButton)
+ return false;
+ else
+ return oldShouldToggleByCornerOrButtonFunction.bind(Main.overview);
+}
+
+function enable() {
+ // register a new function to allow to lock the Activities button when doing a rubberband selection
+ oldShouldToggleByCornerOrButtonFunction = Main.overview.shouldToggleByCornerOrButton;
+ Main.overview.shouldToggleByCornerOrButton = newShouldToggleByCornerOrButton;
+ // wait until the startup process has ended
+ if (Main.layoutManager._startingUp)
+ _startupPreparedId = Main.layoutManager.connect('startup-complete', () => innerEnable(true));
+ else
+ innerEnable(false);
+}
+
+function innerEnable(disconnectSignal) {
+ if (disconnectSignal)
+ Main.layoutManager.disconnect(_startupPreparedId);
+ DBusUtils.init();
+ Prefs.init();
+ Main.layoutManager._addBackgroundMenu = function() {};
+ desktopManager = new DesktopManager();
+ templateManager = new TemplateManager();
+}
+
+function disable() {
+ desktopManager.destroy();
+ templateManager.destroy();
+ Main.layoutManager._addBackgroundMenu = addBackgroundMenuOrig;
+ Main.overview.shouldToggleByCornerOrButton = oldShouldToggleByCornerOrButtonFunction;
+}
diff --git a/extensions/desktop-icons/fileItem.js b/extensions/desktop-icons/fileItem.js
new file mode 100644
index 00000000..9987e7fe
--- /dev/null
+++ b/extensions/desktop-icons/fileItem.js
@@ -0,0 +1,961 @@
+/* Desktop Icons GNOME Shell extension
+ *
+ * Copyright (C) 2017 Carlos Soriano <csoriano@redhat.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+const Gtk = imports.gi.Gtk;
+const Clutter = imports.gi.Clutter;
+const Gio = imports.gi.Gio;
+const GLib = imports.gi.GLib;
+const GObject = imports.gi.GObject;
+const St = imports.gi.St;
+const Pango = imports.gi.Pango;
+const Meta = imports.gi.Meta;
+const GdkPixbuf = imports.gi.GdkPixbuf;
+const Cogl = imports.gi.Cogl;
+const GnomeDesktop = imports.gi.GnomeDesktop;
+
+const Mainloop = imports.mainloop;
+
+const Config = imports.misc.config;
+const Background = imports.ui.background;
+const Main = imports.ui.main;
+const PopupMenu = imports.ui.popupMenu;
+const Util = imports.misc.util;
+
+const ExtensionUtils = imports.misc.extensionUtils;
+const Me = ExtensionUtils.getCurrentExtension();
+const Extension = Me.imports.extension;
+const Prefs = Me.imports.prefs;
+const DBusUtils = Me.imports.dbusUtils;
+const DesktopIconsUtil = Me.imports.desktopIconsUtil;
+
+const Gettext = imports.gettext.domain('gnome-shell-extensions');
+
+const _ = Gettext.gettext;
+
+const DRAG_TRESHOLD = 8;
+
+var S_IXUSR = 0o00100;
+var S_IWOTH = 0o00002;
+
+var State = {
+ NORMAL: 0,
+ GONE: 1,
+};
+
+var FileItem = GObject.registerClass({
+ GTypeName: 'DesktopIcons_FileItem',
+ Signals: {
+ 'rename-clicked': {},
+ 'selected': {
+ param_types: [GObject.TYPE_BOOLEAN, GObject.TYPE_BOOLEAN, GObject.TYPE_BOOLEAN]
+ }
+ }
+}, class FileItem extends St.Bin {
+ _init(file, fileInfo, fileExtra) {
+ super._init({ visible: true });
+
+ this._fileExtra = fileExtra;
+ this._loadThumbnailDataCancellable = null;
+ this._thumbnailScriptWatch = 0;
+ this._setMetadataCancellable = null;
+ this._queryFileInfoCancellable = null;
+ this._isSpecial = this._fileExtra != Prefs.FileType.NONE;
+ this._lastClickTime = 0;
+ this._lastClickButton = 0;
+ this._clickCount = 0;
+
+ this._file = file;
+ this._mount = null;
+ if (this._fileExtra == Prefs.FileType.MOUNT_DISK)
+ this._mount = this._file.find_enclosing_mount(null);
+
+ this._savedCoordinates = null;
+ let savedCoordinates = fileInfo.get_attribute_as_string('metadata::nautilus-icon-position');
+ if (savedCoordinates != null)
+ this._savedCoordinates = savedCoordinates.split(',').map(x => Number(x));
+
+ this._state = State.NORMAL;
+
+ try {
+ this.set_fill(true, true);
+ } catch(error) {}
+ let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
+ this._delegate = this;
+ this.connect('destroy', () => this._onDestroy());
+
+ this._container = new St.BoxLayout({ reactive: true,
+ track_hover: true,
+ can_focus: true,
+ style_class: 'file-item',
+ x_expand: true,
+ y_expand: true,
+ x_align: Clutter.ActorAlign.FILL,
+ vertical: true });
+ this.set_child(this._container);
+ this._icon = new St.Bin();
+ this._icon.set_height(Prefs.get_icon_size() * scaleFactor);
+ this._iconAllocationIdleId = 0;
+ this._iconAllocationId = this._icon.connect("notify::allocation", () => {
+ if (this._iconAllocationIdleId)
+ GLib.source_remove(this._iconAllocationIdleId);
+ this._iconAllocationIdleId = GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
+ GLib.source_remove(this._iconAllocationIdleId);
+ this._iconAllocationIdleId = 0;
+ this._updateIcon();
+ return GLib.SOURCE_REMOVE;
+ });
+ });
+
+ this._iconContainer = new St.Bin({ visible: true });
+ this._iconContainer.child = this._icon;
+ this._container.add_child(this._iconContainer);
+
+ this._label = new St.Label({
+ style_class: 'name-label'
+ });
+
+ this._container.add_child(this._label);
+ let clutterText = this._label.get_clutter_text();
+ /* TODO: Convert to gobject.set for 3.30 */
+ clutterText.set_line_wrap(true);
+ clutterText.set_line_wrap_mode(Pango.WrapMode.WORD_CHAR);
+ clutterText.set_ellipsize(Pango.EllipsizeMode.END);
+
+ this._container.connect('button-press-event', (actor, event) => this._onPressButton(actor, event));
+ this._container.connect('motion-event', (actor, event) => this._onMotion(actor, event));
+ this._container.connect('leave-event', (actor, event) => this._onLeave(actor, event));
+ this._container.connect('enter-event', (actor, event) => this._onEnter(actor, event));
+ this._container.connect('button-release-event', (actor, event) => this._onReleaseButton(actor, event));
+
+ /* Set the metadata and update relevant UI */
+ this._updateMetadataFromFileInfo(fileInfo);
+
+ this._menuManager = null;
+ this._menu = null;
+ this._updateIcon();
+
+ this._isSelected = false;
+ this._primaryButtonPressed = false;
+ if (this._attributeCanExecute && !this._isValidDesktopFile)
+ this._execLine = this.file.get_path();
+ if (fileExtra == Prefs.FileType.USER_DIRECTORY_TRASH) {
+ // if this icon is the trash, monitor the state of the directory to update the icon
+ this._trashChanged = false;
+ this._queryTrashInfoCancellable = null;
+ this._scheduleTrashRefreshId = 0;
+ this._monitorTrashDir = this._file.monitor_directory(Gio.FileMonitorFlags.WATCH_MOVES, null);
+ this._monitorTrashId = this._monitorTrashDir.connect('changed', (obj, file, otherFile, eventType) => {
+ switch(eventType) {
+ case Gio.FileMonitorEvent.DELETED:
+ case Gio.FileMonitorEvent.MOVED_OUT:
+ case Gio.FileMonitorEvent.CREATED:
+ case Gio.FileMonitorEvent.MOVED_IN:
+ if (this._queryTrashInfoCancellable || this._scheduleTrashRefreshId) {
+ if (this._scheduleTrashRefreshId)
+ GLib.source_remove(this._scheduleTrashRefreshId);
+ this._scheduleTrashRefreshId = Mainloop.timeout_add(200, () => this._refreshTrashIcon());
+ } else {
+ this._refreshTrashIcon();
+ }
+ break;
+ }
+ });
+ }
+
+ this._writebleByOthersId = Extension.desktopManager.connect('notify::writable-by-others', () => {
+ if (!this._isValidDesktopFile)
+ return;
+ this._refreshMetadataAsync(true);
+ });
+ }
+
+ set_margins(width, height) {
+ let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
+ this.set_width(Prefs.getDesiredWidth(scaleFactor, width));
+ this.set_height(Prefs.getDesiredHeight(scaleFactor, height));
+ }
+
+ onAttributeChanged() {
+ this._refreshMetadataAsync(this._isDesktopFile);
+ }
+
+ _onDestroy() {
+ /* Regular file data */
+ if (this._setMetadataCancellable)
+ this._setMetadataCancellable.cancel();
+ if (this._queryFileInfoCancellable)
+ this._queryFileInfoCancellable.cancel();
+
+ Extension.desktopManager.disconnect(this._writebleByOthersId);
+
+ /* Thumbnailing */
+ if (this._thumbnailScriptWatch)
+ GLib.source_remove(this._thumbnailScriptWatch);
+ if (this._loadThumbnailDataCancellable)
+ this._loadThumbnailDataCancellable.cancel();
+
+ /* Desktop file */
+ if (this._monitorDesktopFileId) {
+ this._monitorDesktopFile.disconnect(this._monitorDesktopFileId);
+ this._monitorDesktopFile.cancel();
+ }
+
+ /* Trash */
+ if (this._monitorTrashDir) {
+ this._monitorTrashDir.disconnect(this._monitorTrashId);
+ this._monitorTrashDir.cancel();
+ }
+ if (this._queryTrashInfoCancellable)
+ this._queryTrashInfoCancellable.cancel();
+ if (this._scheduleTrashRefreshId)
+ GLib.source_remove(this._scheduleTrashRefreshId);
+
+ /* Icon */
+ this._icon.disconnect(this._iconAllocationId);
+ if (this._iconAllocationIdleId)
+ GLib.source_remove(this._iconAllocationIdleId);
+
+ /* Menu */
+ this._removeMenu();
+ }
+
+ _refreshMetadataAsync(rebuild) {
+ if (this._queryFileInfoCancellable)
+ this._queryFileInfoCancellable.cancel();
+ this._queryFileInfoCancellable = new Gio.Cancellable();
+ this._file.query_info_async(DesktopIconsUtil.DEFAULT_ATTRIBUTES,
+ Gio.FileQueryInfoFlags.NONE,
+ GLib.PRIORITY_DEFAULT,
+ this._queryFileInfoCancellable,
+ (source, result) => {
+ try {
+ let newFileInfo = source.query_info_finish(result);
+ this._queryFileInfoCancellable = null;
+ this._updateMetadataFromFileInfo(newFileInfo);
+ if (rebuild)
+ this._recreateMenu();
+ this._updateIcon();
+ } catch(error) {
+ if (!error.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
+ global.log("Error getting the file info: " + error);
+ }
+ });
+ }
+
+ _updateMetadataFromFileInfo(fileInfo) {
+ this._fileInfo = fileInfo;
+
+ let oldLabelText = this._label.text;
+
+ this._displayName = fileInfo.get_attribute_as_string('standard::display-name');
+ this._attributeCanExecute = fileInfo.get_attribute_boolean('access::can-execute');
+ this._unixmode = fileInfo.get_attribute_uint32('unix::mode');
+ this._writableByOthers = (this._unixmode & S_IWOTH) != 0;
+ this._trusted = fileInfo.get_attribute_as_string('metadata::trusted') == 'true';
+ this._attributeContentType = fileInfo.get_content_type();
+ this._isDesktopFile = this._attributeContentType == 'application/x-desktop';
+
+ if (this._isDesktopFile && this._writableByOthers)
+ log(`desktop-icons: File ${this._displayName} is writable by others - will not allow launching`);
+
+ if (this._isDesktopFile) {
+ this._desktopFile = Gio.DesktopAppInfo.new_from_filename(this._file.get_path());
+ if (!this._desktopFile) {
+ log(`Couldnt parse ${this._displayName} as a desktop file, will treat it as a regular file.`);
+ this._isValidDesktopFile = false;
+ } else {
+ this._isValidDesktopFile = true;
+ }
+ } else {
+ this._isValidDesktopFile = false;
+ }
+
+ if (this.displayName != oldLabelText) {
+ this._label.text = this.displayName;
+ }
+
+ this._fileType = fileInfo.get_file_type();
+ this._isDirectory = this._fileType == Gio.FileType.DIRECTORY;
+ this._isSpecial = this._fileExtra != Prefs.FileType.NONE;
+ this._isHidden = fileInfo.get_is_hidden() | fileInfo.get_is_backup();
+ this._isSymlink = fileInfo.get_is_symlink();
+ this._modifiedTime = this._fileInfo.get_attribute_uint64("time::modified");
+ /*
+ * This is a glib trick to detect broken symlinks. If a file is a symlink, the filetype
+ * points to the final file, unless it is broken; thus if the file type is SYMBOLIC_LINK,
+ * it must be a broken link.
+ * https://developer.gnome.org/gio/stable/GFile.html#g-file-query-info
+ */
+ this._isBrokenSymlink = this._isSymlink && this._fileType == Gio.FileType.SYMBOLIC_LINK;
+ }
+
+ onFileRenamed(file) {
+ this._file = file;
+ this._refreshMetadataAsync(false);
+ }
+
+ _updateIcon() {
+ if (this._fileExtra == Prefs.FileType.USER_DIRECTORY_TRASH) {
+ this._icon.child = this._createEmblemedStIcon(this._fileInfo.get_icon(), null);
+ return;
+ }
+ if (this._fileExtra == Prefs.FileType.MOUNT_DISK) {
+ this._icon.child = this._createEmblemedStIcon(this._mount.get_icon(), null);
+ return;
+ }
+
+ let thumbnailFactory = GnomeDesktop.DesktopThumbnailFactory.new(GnomeDesktop.DesktopThumbnailSize.LARGE);
+ if ((Prefs.nautilusSettings.get_string('show-image-thumbnails') != 'never') &&
+ (thumbnailFactory.can_thumbnail(this._file.get_uri(),
+ this._attributeContentType,
+ this._modifiedTime))) {
+ let thumbnail = thumbnailFactory.lookup(this._file.get_uri(), this._modifiedTime);
+ if (thumbnail == null) {
+ if (!thumbnailFactory.has_valid_failed_thumbnail(this._file.get_uri(),
+ this._modifiedTime)) {
+ let argv = [];
+ argv.push(GLib.build_filenamev([ExtensionUtils.getCurrentExtension().path,
+ 'createThumbnail.js']));
+ argv.push(this._file.get_path());
+ let [success, pid] = GLib.spawn_async(null, argv, null,
+ GLib.SpawnFlags.SEARCH_PATH | GLib.SpawnFlags.DO_NOT_REAP_CHILD, null);
+ if (this._thumbnailScriptWatch)
+ GLib.source_remove(this._thumbnailScriptWatch);
+ this._thumbnailScriptWatch = GLib.child_watch_add(GLib.PRIORITY_DEFAULT,
+ pid,
+ (pid, exitCode) => {
+ this._thumbnailScriptWatch = 0;
+ if (exitCode == 0)
+ this._updateIcon();
+ else
+ global.log('Failed to generate thumbnail for ' + this._filePath);
+ GLib.spawn_close_pid(pid);
+ return false;
+ }
+ );
+ }
+ } else {
+ if (this._loadThumbnailDataCancellable)
+ this._loadThumbnailDataCancellable.cancel();
+ this._loadThumbnailDataCancellable = new Gio.Cancellable();
+ let thumbnailFile = Gio.File.new_for_path(thumbnail);
+ thumbnailFile.load_bytes_async(this._loadThumbnailDataCancellable,
+ (source, result) => {
+ try {
+ this._loadThumbnailDataCancellable = null;
+ let [thumbnailData, etag_out] = source.load_bytes_finish(result);
+ let thumbnailStream = Gio.MemoryInputStream.new_from_bytes(thumbnailData);
+ let thumbnailPixbuf = GdkPixbuf.Pixbuf.new_from_stream(thumbnailStream, null);
+
+ if (thumbnailPixbuf != null) {
+ let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
+ let thumbnailImage = new Clutter.Image();
+ thumbnailImage.set_data(thumbnailPixbuf.get_pixels(),
+ thumbnailPixbuf.has_alpha ? Cogl.PixelFormat.RGBA_8888 : Cogl.PixelFormat.RGB_888,
+ thumbnailPixbuf.width,
+ thumbnailPixbuf.height,
+ thumbnailPixbuf.rowstride
+ );
+ let icon = new Clutter.Actor();
+ icon.set_content(thumbnailImage);
+ let containerWidth = (this._icon.allocation.x2 - this._icon.allocation.x1) * scaleFactor;
+ let containerHeight = Prefs.get_icon_size() * scaleFactor;
+ let containerAspectRatio = containerWidth / containerHeight;
+ let iconAspectRatio = thumbnailPixbuf.width / thumbnailPixbuf.height;
+ if (containerAspectRatio > iconAspectRatio) {
+ let iconWidth = containerHeight * iconAspectRatio;
+ icon.set_size(iconWidth, containerHeight);
+ let margin = (containerWidth - iconWidth) / 2;
+ icon.margin_left = Math.ceil(margin);
+ icon.margin_right = Math.floor(margin);
+ } else {
+ let iconHeight = containerWidth / iconAspectRatio;
+ icon.set_size(containerWidth, iconHeight);
+ let margin = (containerHeight - iconHeight) / 2;
+ icon.margin_top = Math.ceil(margin);
+ icon.margin_bottom = Math.floor(margin);
+ }
+ this._icon.child = icon;
+ }
+ } catch (error) {
+ if (!error.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) {
+ global.log('Error while loading thumbnail: ' + error);
+ this._icon.child = this._createEmblemedStIcon(this._fileInfo.get_icon(), null);
+ }
+ }
+ }
+ );
+ }
+ }
+
+ if (this._isBrokenSymlink) {
+ this._icon.child = this._createEmblemedStIcon(null, 'text-x-generic');
+ } else {
+ if (this.trustedDesktopFile && this._desktopFile.has_key('Icon'))
+ this._icon.child = this._createEmblemedStIcon(null, this._desktopFile.get_string('Icon'));
+ else
+ this._icon.child = this._createEmblemedStIcon(this._fileInfo.get_icon(), null);
+ }
+ }
+
+ _refreshTrashIcon() {
+ if (this._queryTrashInfoCancellable)
+ this._queryTrashInfoCancellable.cancel();
+ this._queryTrashInfoCancellable = new Gio.Cancellable();
+
+ this._file.query_info_async(DesktopIconsUtil.DEFAULT_ATTRIBUTES,
+ Gio.FileQueryInfoFlags.NONE,
+ GLib.PRIORITY_DEFAULT,
+ this._queryTrashInfoCancellable,
+ (source, result) => {
+ try {
+ this._fileInfo = source.query_info_finish(result);
+ this._queryTrashInfoCancellable = null;
+ this._updateIcon();
+ } catch(error) {
+ if (!error.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
+ global.log('Error getting the number of files in the trash: ' + error);
+ }
+ });
+
+ this._scheduleTrashRefreshId = 0;
+ return false;
+ }
+
+ get file() {
+ return this._file;
+ }
+
+ get isHidden() {
+ return this._isHidden;
+ }
+
+ _createEmblemedStIcon(icon, iconName) {
+ if (icon == null) {
+ if (GLib.path_is_absolute(iconName)) {
+ let iconFile = Gio.File.new_for_commandline_arg(iconName);
+ icon = new Gio.FileIcon({ file: iconFile });
+ } else {
+ icon = Gio.ThemedIcon.new_with_default_fallbacks(iconName);
+ }
+ }
+ let itemIcon = Gio.EmblemedIcon.new(icon, null);
+
+ if (this._isSymlink) {
+ if (this._isBrokenSymlink)
+ itemIcon.add_emblem(Gio.Emblem.new(Gio.ThemedIcon.new('emblem-unreadable')));
+ else
+ itemIcon.add_emblem(Gio.Emblem.new(Gio.ThemedIcon.new('emblem-symbolic-link')));
+ } else if (this.trustedDesktopFile) {
+ itemIcon.add_emblem(Gio.Emblem.new(Gio.ThemedIcon.new('emblem-symbolic-link')));
+ }
+
+ return new St.Icon({ gicon: itemIcon,
+ icon_size: Prefs.get_icon_size()
+ });
+ }
+
+ doRename() {
+ if (!this.canRename()) {
+ log (`Error: ${this.file.get_uri()} cannot be renamed`);
+ return;
+ }
+
+ this.emit('rename-clicked');
+ }
+
+ _doOpenContext(context) {
+ if (this._isBrokenSymlink) {
+ log(`Error: Cant open ${this.file.get_uri()} because it is a broken symlink.`);
+ return;
+ }
+
+ if (this.trustedDesktopFile) {
+ this._desktopFile.launch_uris_as_manager([], context, GLib.SpawnFlags.SEARCH_PATH, null, null);
+ return;
+ }
+
+ if (this._attributeCanExecute &&
+ !this._isDirectory &&
+ !this._isValidDesktopFile &&
+ Gio.content_type_can_be_executable(this._attributeContentType)) {
+ if (this._execLine)
+ Util.spawnCommandLine(this._execLine);
+ return;
+ }
+
+ Gio.AppInfo.launch_default_for_uri_async(this.file.get_uri(),
+ null, null,
+ (source, result) => {
+ try {
+ Gio.AppInfo.launch_default_for_uri_finish(result);
+ } catch (e) {
+ log('Error opening file ' + this.file.get_uri() + ': ' + e.message);
+ }
+ }
+ );
+ }
+
+ doOpen() {
+ this._doOpenContext(null);
+ }
+
+ _doDiscreteGpu() {
+ let gpus = Extension.desktopManager.switcherooProxyGPUs;
+ if (!gpus) {
+ log('Could not apply discrete GPU environment, no GPUs in list');
+ }
+
+ for (let gpu in gpus) {
+ if (!gpus[gpu])
+ continue;
+
+ let default_variant = gpus[gpu].lookup_value('Default', null);
+ if (!default_variant || default_variant.get_boolean())
+ continue;
+
+ let env = gpus[gpu].lookup_value('Environment', null);
+ if (!env)
+ continue;
+
+ let env_s = env.get_strv();
+ let context = new Gio.AppLaunchContext;
+ for (let i = 0; i < env_s.length; i=i+2) {
+ context.setenv(env_s[i], env_s[i+1]);
+ }
+ this._doOpenContext(context);
+ return;
+ }
+ log('Could not find discrete GPU data in switcheroo-control');
+ }
+
+ _onCopyClicked() {
+ Extension.desktopManager.doCopy();
+ }
+
+ _onCutClicked() {
+ Extension.desktopManager.doCut();
+ }
+
+ _onShowInFilesClicked() {
+
+ DBusUtils.FreeDesktopFileManagerProxy.ShowItemsRemote([this.file.get_uri()], '',
+ (result, error) => {
+ if (error)
+ log('Error showing file on desktop: ' + error.message);
+ }
+ );
+ }
+
+ _onPropertiesClicked() {
+
+ DBusUtils.FreeDesktopFileManagerProxy.ShowItemPropertiesRemote([this.file.get_uri()], '',
+ (result, error) => {
+ if (error)
+ log('Error showing properties: ' + error.message);
+ }
+ );
+ }
+
+ _onMoveToTrashClicked() {
+ Extension.desktopManager.doTrash();
+ }
+
+ _onEmptyTrashClicked() {
+ Extension.desktopManager.doEmptyTrash();
+ }
+
+ _onEjectClicked() {
+ DesktopIconsUtil.eject(this._mount);
+ }
+
+ get _allowLaunchingText() {
+ if (this.trustedDesktopFile)
+ return _("Dont Allow Launching");
+
+ return _("Allow Launching");
+ }
+
+ get metadataTrusted() {
+ return this._trusted;
+ }
+
+ set metadataTrusted(value) {
+ this._trusted = value;
+
+ let info = new Gio.FileInfo();
+ info.set_attribute_string('metadata::trusted',
+ value ? 'true' : 'false');
+ this._file.set_attributes_async(info,
+ Gio.FileQueryInfoFlags.NONE,
+ GLib.PRIORITY_LOW,
+ null,
+ (source, result) => {
+ try {
+ source.set_attributes_finish(result);
+ this._refreshMetadataAsync(true);
+ } catch(e) {
+ log(`Failed to set metadata::trusted: ${e.message}`);
+ }
+ });
+ }
+
+ _onAllowDisallowLaunchingClicked() {
+ this.metadataTrusted = !this.trustedDesktopFile;
+
+ /*
+ * we're marking as trusted, make the file executable too. note that we
+ * do not ever remove the executable bit, since we don't know who set
+ * it.
+ */
+ if (this.metadataTrusted && !this._attributeCanExecute) {
+ let info = new Gio.FileInfo();
+ let newUnixMode = this._unixmode | S_IXUSR;
+ info.set_attribute_uint32(Gio.FILE_ATTRIBUTE_UNIX_MODE, newUnixMode);
+ this._file.set_attributes_async(info,
+ Gio.FileQueryInfoFlags.NONE,
+ GLib.PRIORITY_LOW,
+ null,
+ (source, result) => {
+ try {
+ source.set_attributes_finish (result);
+ } catch(e) {
+ log(`Failed to set unix mode: ${e.message}`);
+ }
+ });
+ }
+ }
+
+ canRename() {
+ return !this.trustedDesktopFile && this._fileExtra == Prefs.FileType.NONE;
+ }
+
+ _doOpenWith() {
+ DBusUtils.openFileWithOtherApplication(this.file.get_path());
+ }
+
+ _getSelectionStyle() {
+ let rgba = DesktopIconsUtil.getGtkClassBackgroundColor('view', Gtk.StateFlags.SELECTED);
+ let background_color =
+ 'rgba(' + rgba.red * 255 + ', ' + rgba.green * 255 + ', ' + rgba.blue * 255 + ', 0.6)';
+ let border_color =
+ 'rgba(' + rgba.red * 255 + ', ' + rgba.green * 255 + ', ' + rgba.blue * 255 + ', 0.8)';
+
+ return 'background-color: ' + background_color + ';' +
+ 'border-color: ' + border_color + ';';
+ }
+
+ get menu() {
+ return this._menu;
+ }
+
+ _removeMenu() {
+ if (this._menu != null) {
+ if (this._menuManager != null)
+ this._menuManager.removeMenu(this._menu);
+
+ Main.layoutManager.uiGroup.remove_child(this._menu.actor);
+ this._menu.destroy();
+ this._menu = null;
+ }
+
+ this._menuManager = null;
+ }
+
+ _recreateMenu() {
+ this._removeMenu();
+ this._menuManager = new PopupMenu.PopupMenuManager(this);
+ let side = St.Side.LEFT;
+ if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
+ side = St.Side.RIGHT;
+ this._menu = new PopupMenu.PopupMenu(this, 0.5, side);
+ this._menu.addAction(_('Open'), () => this.doOpen());
+ switch (this._fileExtra) {
+ case Prefs.FileType.NONE:
+ if (!this._isDirectory) {
+ this._actionOpenWith = this._menu.addAction(_('Open With Other Application'), () => this._doOpenWith());
+ if (Extension.desktopManager.discreteGpuAvailable && this.trustedDesktopFile)
+ this._menu.addAction(_('Launch using Dedicated Graphics Card'), () => this._doDiscreteGpu());
+ } else {
+ this._actionOpenWith = null;
+ }
+ this._menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
+ this._actionCut = this._menu.addAction(_('Cut'), () => this._onCutClicked());
+ this._actionCopy = this._menu.addAction(_('Copy'), () => this._onCopyClicked());
+ if (this.canRename())
+ this._menu.addAction(_('Rename…'), () => this.doRename());
+ this._actionTrash = this._menu.addAction(_('Move to Trash'), () => this._onMoveToTrashClicked());
+ if (this._isValidDesktopFile && !Extension.desktopManager.writableByOthers && !this._writableByOthers) {
+ this._menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
+ this._allowLaunchingMenuItem = this._menu.addAction(this._allowLaunchingText,
+ () => this._onAllowDisallowLaunchingClicked());
+
+ }
+ break;
+ case Prefs.FileType.USER_DIRECTORY_TRASH:
+ this._menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
+ this._menu.addAction(_('Empty Trash'), () => this._onEmptyTrashClicked());
+ break;
+ case Prefs.FileType.MOUNT_DISK:
+ this._menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
+ this._menu.addAction(_('Eject'), () => this._onEjectClicked());
+ break;
+ default:
+ break;
+ }
+ this._menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
+ this._menu.addAction(_('Properties'), () => this._onPropertiesClicked());
+ this._menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
+ this._menu.addAction(_('Show in Files'), () => this._onShowInFilesClicked());
+ if (this._isDirectory && this.file.get_path() != null)
+ this._actionOpenInTerminal = this._menu.addAction(_('Open in Terminal'), () => this._onOpenTerminalClicked());
+
+ this._menuManager.addMenu(this._menu);
+
+ Main.layoutManager.uiGroup.add_child(this._menu.actor);
+ this._menu.actor.hide();
+ }
+
+ _ensureMenu() {
+ if (this._menu == null)
+ this._recreateMenu();
+
+ return this._menu;
+ }
+
+ _onOpenTerminalClicked () {
+ DesktopIconsUtil.launchTerminal(this.file.get_path());
+ }
+
+ _updateClickState(event) {
+ let settings = Clutter.Settings.get_default();
+ if ((event.get_button() == this._lastClickButton) &&
+ ((event.get_time() - this._lastClickTime) < settings.double_click_time))
+ this._clickCount++;
+ else
+ this._clickCount = 1;
+
+ this._lastClickTime = event.get_time();
+ this._lastClickButton = event.get_button();
+ }
+
+ _getClickCount() {
+ return this._clickCount;
+ }
+
+ _onPressButton(actor, event) {
+ this._updateClickState(event);
+ let button = event.get_button();
+ if (button == 3) {
+ if (!this.isSelected)
+ this.emit('selected', false, false, true);
+ this._ensureMenu().toggle();
+ if (this._actionOpenWith) {
+ let allowOpenWith = (Extension.desktopManager.getNumberOfSelectedItems() == 1);
+ this._actionOpenWith.setSensitive(allowOpenWith);
+ }
+ let specialFilesSelected = Extension.desktopManager.checkIfSpecialFilesAreSelected();
+ if (this._actionCut)
+ this._actionCut.setSensitive(!specialFilesSelected);
+ if (this._actionCopy)
+ this._actionCopy.setSensitive(!specialFilesSelected);
+ if (this._actionTrash)
+ this._actionTrash.setSensitive(!specialFilesSelected);
+ return Clutter.EVENT_STOP;
+ } else if (button == 1) {
+ if (this._getClickCount() == 1) {
+ let [x, y] = event.get_coords();
+ this._primaryButtonPressed = true;
+ this._buttonPressInitialX = x;
+ this._buttonPressInitialY = y;
+ let shiftPressed = !!(event.get_state() & Clutter.ModifierType.SHIFT_MASK);
+ let controlPressed = !!(event.get_state() & Clutter.ModifierType.CONTROL_MASK);
+ if (controlPressed || shiftPressed) {
+ this.emit('selected', true, false, !this._isSelected);
+ } else {
+ if (!this._isSelected)
+ this.emit('selected', false, false, true);
+ }
+ }
+ return Clutter.EVENT_STOP;
+ }
+
+ return Clutter.EVENT_PROPAGATE;
+ }
+
+ _onEnter(actor, event) {
+ if (Prefs.CLICK_POLICY_SINGLE)
+ global.display.set_cursor(Meta.Cursor.POINTING_HAND);
+ else
+ global.display.set_cursor(Meta.Cursor.DEFAULT);
+ }
+
+ _onLeave(actor, event) {
+ this._primaryButtonPressed = false;
+ if (Prefs.CLICK_POLICY_SINGLE)
+ global.display.set_cursor(Meta.Cursor.DEFAULT);
+ }
+
+ _onMotion(actor, event) {
+ let [x, y] = event.get_coords();
+ if (this._primaryButtonPressed) {
+ let xDiff = x - this._buttonPressInitialX;
+ let yDiff = y - this._buttonPressInitialY;
+ let distance = Math.sqrt(Math.pow(xDiff, 2) + Math.pow(yDiff, 2));
+ if (distance > DRAG_TRESHOLD) {
+ // Don't need to track anymore this if we start drag, and also
+ // avoids reentrance here
+ this._primaryButtonPressed = false;
+ let event = Clutter.get_current_event();
+ let [x, y] = event.get_coords();
+ Extension.desktopManager.dragStart();
+ }
+ }
+
+ return Clutter.EVENT_PROPAGATE;
+ }
+
+ _onReleaseButton(actor, event) {
+ let button = event.get_button();
+ if (button == 1) {
+ // primaryButtonPressed is TRUE only if the user has pressed the button
+ // over an icon, and if (s)he has not started a drag&drop operation
+ if (this._primaryButtonPressed) {
+ this._primaryButtonPressed = false;
+ let shiftPressed = !!(event.get_state() & Clutter.ModifierType.SHIFT_MASK);
+ let controlPressed = !!(event.get_state() & Clutter.ModifierType.CONTROL_MASK);
+ if (!controlPressed && !shiftPressed)
+ this.emit('selected', false, false, true);
+ if ((this._getClickCount() == 1) && Prefs.CLICK_POLICY_SINGLE && !shiftPressed && !controlPressed)
+ this.doOpen();
+ return Clutter.EVENT_STOP;
+ }
+ if ((this._getClickCount() == 2) && (!Prefs.CLICK_POLICY_SINGLE))
+ this.doOpen();
+ }
+ return Clutter.EVENT_PROPAGATE;
+ }
+
+ get savedCoordinates() {
+ return this._savedCoordinates;
+ }
+
+ _onSetMetadataFileFinished(source, result) {
+ try {
+ let [success, info] = source.set_attributes_finish(result);
+ } catch (error) {
+ if (!error.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
+ log(`Error setting metadata to desktop files ${error}`);
+ }
+ }
+
+ set savedCoordinates(pos) {
+ if (this._setMetadataCancellable)
+ this._setMetadataCancellable.cancel();
+
+ this._setMetadataCancellable = new Gio.Cancellable();
+ this._savedCoordinates = [pos[0], pos[1]];
+ let info = new Gio.FileInfo();
+ info.set_attribute_string('metadata::nautilus-icon-position',
+ `${pos[0]},${pos[1]}`);
+ this.file.set_attributes_async(info,
+ Gio.FileQueryInfoFlags.NONE,
+ GLib.PRIORITY_DEFAULT,
+ this._setMetadataCancellable,
+ (source, result) => {
+ this._setMetadataCancellable = null;
+ this._onSetMetadataFileFinished(source, result);
+ }
+ );
+ }
+
+ intersectsWith(argX, argY, argWidth, argHeight) {
+ let rect = new Meta.Rectangle({ x: argX, y: argY, width: argWidth, height: argHeight });
+ let [containerX, containerY] = this._container.get_transformed_position();
+ let boundingBox = new Meta.Rectangle({ x: containerX,
+ y: containerY,
+ width: this._container.allocation.x2 - this._container.allocation.x1,
+ height: this._container.allocation.y2 - this._container.allocation.y1 });
+ let [intersects, _] = rect.intersect(boundingBox);
+
+ return intersects;
+ }
+
+ set isSelected(isSelected) {
+ isSelected = !!isSelected;
+ if (isSelected == this._isSelected)
+ return;
+
+ if (isSelected) {
+ this._container.set_style(this._getSelectionStyle());
+ } else {
+ this._container.set_style('background-color: transparent');
+ this._container.set_style('border-color: transparent');
+ }
+
+ this._isSelected = isSelected;
+ }
+
+ get isSelected() {
+ return this._isSelected;
+ }
+
+ get isSpecial() {
+ return this._isSpecial;
+ }
+
+ get state() {
+ return this._state;
+ }
+
+ set state(state) {
+ if (state == this._state)
+ return;
+
+ this._state = state;
+ }
+
+ get isDirectory() {
+ return this._isDirectory;
+ }
+
+ get trustedDesktopFile() {
+ return this._isValidDesktopFile &&
+ this._attributeCanExecute &&
+ this.metadataTrusted &&
+ !Extension.desktopManager.writableByOthers &&
+ !this._writableByOthers;
+ }
+
+ get fileName() {
+ return this._fileInfo.get_name();
+ }
+
+ get displayName() {
+ if (this._fileExtra == Prefs.FileType.USER_DIRECTORY_HOME)
+ return _("Home");
+ if (this.trustedDesktopFile)
+ return this._desktopFile.get_name();
+
+ return this._displayName || null;
+ }
+
+ acceptDrop() {
+ return Extension.desktopManager.selectionDropOnFileItem(this);
+ }
+});
diff --git a/extensions/desktop-icons/meson.build b/extensions/desktop-icons/meson.build
new file mode 100644
index 00000000..8e691426
--- /dev/null
+++ b/extensions/desktop-icons/meson.build
@@ -0,0 +1,20 @@
+extension_data += configure_file(
+ input: metadata_name + '.in',
+ output: metadata_name,
+ configuration: metadata_conf
+)
+
+extension_schemas += files(join_paths('schemas', metadata_conf.get('gschemaname') + '.gschema.xml'))
+
+extension_sources += files(
+ 'createFolderDialog.js',
+ 'createThumbnail.js',
+ 'dbusUtils.js',
+ 'desktopGrid.js',
+ 'desktopIconsUtil.js',
+ 'desktopManager.js',
+ 'extension.js',
+ 'fileItem.js',
+ 'prefs.js',
+ 'templateManager.js'
+)
diff --git a/extensions/desktop-icons/metadata.json.in b/extensions/desktop-icons/metadata.json.in
new file mode 100644
index 00000000..78cabf08
--- /dev/null
+++ b/extensions/desktop-icons/metadata.json.in
@@ -0,0 +1,11 @@
+{
+"extension-id": "@extension_id@",
+"uuid": "@uuid@",
+"settings-schema": "@gschemaname@",
+"gettext-domain": "@gettext_domain@",
+"name": "Desktop Icons",
+"description": "Provide desktop icons support for classic mode",
+"original-authors": [ "csoriano@redhat.com" ],
+"shell-version": [ "@shell_current@" ],
+"url": "@url@"
+}
diff --git a/extensions/desktop-icons/po/LINGUAS b/extensions/desktop-icons/po/LINGUAS
new file mode 100644
index 00000000..3ca08422
--- /dev/null
+++ b/extensions/desktop-icons/po/LINGUAS
@@ -0,0 +1,33 @@
+ca
+cs
+da
+de
+el
+en_GB
+es
+eu
+fa
+fi
+fr
+fur
+hr
+hu
+id
+it
+ja
+kab
+nl
+oc
+pl
+pt
+pt_BR
+ro
+ru
+sk
+sl
+sr
+sv
+tr
+uk
+zh_CN
+zh_TW
diff --git a/extensions/desktop-icons/po/POTFILES.in b/extensions/desktop-icons/po/POTFILES.in
new file mode 100644
index 00000000..d9adb218
--- /dev/null
+++ b/extensions/desktop-icons/po/POTFILES.in
@@ -0,0 +1,6 @@
+createFolderDialog.js
+prefs.js
+desktopGrid.js
+desktopIconsUtil.js
+fileItem.js
+schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml
\ No newline at end of file
diff --git a/extensions/desktop-icons/po/ca.po b/extensions/desktop-icons/po/ca.po
new file mode 100644
index 00000000..28152696
--- /dev/null
+++ b/extensions/desktop-icons/po/ca.po
@@ -0,0 +1,218 @@
+# This file is distributed under the same license as the PACKAGE package.
+# Jordi Mas i Hernandez <jmas@softcatala.org>, 2019-2020
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 1.0\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-icons/issues\n"
+"POT-Creation-Date: 2020-05-26 20:08+0000\n"
+"PO-Revision-Date: 2019-07-22 10:24+0200\n"
+"Last-Translator: Jordi Mas <jmas@softcatala.org>\n"
+"Language-Team: Catalan <info@softcatala.org>\n"
+"Language: ca\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"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Nom de la carpeta nova"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Crea"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Cancel·la"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Els noms de carpetes no poden contenir «/»."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Una carpeta no es pot anomenar «.»."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Una carpeta no es pot anomenar «..»."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Les carpetes amb un «.» a l'inici del seu nom s'amaguen."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Ja existeix un fitxer o carpeta amb aquest nom."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Mida de les icones d'escriptori"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Petita"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Estàndard"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Gran"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Mostra la carpeta personal a l'escriptori"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Mostra la icona de la paperera a l'escriptori"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Mostra les unitats muntades a l'escriptori"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Carpeta nova"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Document nou"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Enganxa"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Desfés"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Refés"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Mostra l'escriptori al Fitxers"
+
+#: desktopGrid.js:355 fileItem.js:721
+msgid "Open in Terminal"
+msgstr "Obre al Terminal"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Canvia el fons de l'escriptori…"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Paràmetres de la pantalla"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Paràmetres"
+
+#: desktopGrid.js:692
+msgid "Rename"
+msgstr "Canvia el nom"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "No s'ha trobat l'ordre"
+
+#. TRANSLATORS: %s is the filesystem name
+#: desktopIconsUtil.js:162
+#, javascript-format
+msgid "Ejecting drive “%s” failed:"
+msgstr "Ha fallat l'expulsió de la unitat «%s»:"
+
+#: fileItem.js:584
+msgid "Dont Allow Launching"
+msgstr "No permetis que s'iniciï"
+
+#: fileItem.js:586
+msgid "Allow Launching"
+msgstr "Permet que s'iniciï"
+
+#: fileItem.js:682
+msgid "Open"
+msgstr "Obre"
+
+#: fileItem.js:686
+msgid "Open With Other Application"
+msgstr "Obre amb una altra aplicació"
+
+#: fileItem.js:688
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Llança usant la targeta gràfica dedicada"
+
+#: fileItem.js:693
+msgid "Cut"
+msgstr "Retalla"
+
+#: fileItem.js:694
+msgid "Copy"
+msgstr "Copia"
+
+#: fileItem.js:696
+msgid "Rename…"
+msgstr "Canvia el nom…"
+
+#: fileItem.js:697
+msgid "Move to Trash"
+msgstr "Mou a la paperera"
+
+#: fileItem.js:707
+msgid "Empty Trash"
+msgstr "Buida la paperera"
+
+#: fileItem.js:711
+msgid "Eject"
+msgstr "Expulsa"
+
+#: fileItem.js:717
+msgid "Properties"
+msgstr "Propietats"
+
+#: fileItem.js:719
+msgid "Show in Files"
+msgstr "Mostra al Fitxers"
+
+#: fileItem.js:925
+msgid "Home"
+msgstr "Inici"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Mida d'icona"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Estableix la mida per les icones de l'escriptori."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Mostra la carpeta personal"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Mostra la carpeta personal a l'escriptori."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Mostra la icona de la paperera"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Mostra la icona de la paperera a l'escriptori."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Mostra les unitats muntades"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Mostra la icona de la paperera a l'escriptori."
diff --git a/extensions/desktop-icons/po/cs.po b/extensions/desktop-icons/po/cs.po
new file mode 100644
index 00000000..5acfe16a
--- /dev/null
+++ b/extensions/desktop-icons/po/cs.po
@@ -0,0 +1,235 @@
+# Czech translation for desktop-icons.
+# Copyright (C) 2018 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Marek Černocký <marek@manet.cz>, 2018.
+# Milan Zink <zeten30@gmail.com>, 2018.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-05-26 20:08+0000\n"
+"PO-Revision-Date: 2020-06-16 14:22+0200\n"
+"Last-Translator: Daniel Rusek <mail@asciiwolf.com>\n"
+"Language-Team: Czech <zeten30@gmail.com>\n"
+"Language: cs\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+"X-Generator: Poedit 2.3.1\n"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Název nové složky"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Vytvořit"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Názvy složek nesmí obsahovat „/“."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Složka se nemůže jmenovat „.“."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Složka se nemůže jmenovat „..“."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Složky s „.“ na začátku jejich názvu jsou skryty."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Soubor nebo složka s tímto názvem již existuje."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Velikost ikon na pracovní ploše"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "malé"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "standardní"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "velké"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Zobrazovat osobní složku na pracovní ploše"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Zobrazovat ikonu koše na pracovní ploše"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Zobrazovat připojené svazky na pracovní ploše"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Nová složka"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Nový dokument"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Vložit"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Zpět"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Znovu"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Zobrazit plochu v Souborech"
+
+#: desktopGrid.js:355 fileItem.js:721
+msgid "Open in Terminal"
+msgstr "Otevřít v terminálu"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Změnit pozadí…"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Nastavení zobrazení"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Nastavení"
+
+#: desktopGrid.js:692
+msgid "Rename"
+msgstr "Přejmenovat"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Příkaz nebyl nalezen"
+
+#. TRANSLATORS: %s is the filesystem name
+#: desktopIconsUtil.js:162
+#, javascript-format
+msgid "Ejecting drive “%s” failed:"
+msgstr "Vysunutí svazku „%s“ selhalo:"
+
+#: fileItem.js:584
+msgid "Dont Allow Launching"
+msgstr "Nepovolit spouštění"
+
+#: fileItem.js:586
+msgid "Allow Launching"
+msgstr "Povolit spouštění"
+
+#: fileItem.js:682
+msgid "Open"
+msgstr "Otevřít"
+
+#: fileItem.js:686
+msgid "Open With Other Application"
+msgstr "Otevřít pomocí jiné aplikace"
+
+#: fileItem.js:688
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Spustit pomocí vyhrazené grafické karty"
+
+#: fileItem.js:693
+msgid "Cut"
+msgstr "Vyjmout"
+
+#: fileItem.js:694
+msgid "Copy"
+msgstr "Kopírovat"
+
+#: fileItem.js:696
+msgid "Rename…"
+msgstr "Přejmenovat…"
+
+#: fileItem.js:697
+msgid "Move to Trash"
+msgstr "Přesunout do koše"
+
+#: fileItem.js:707
+msgid "Empty Trash"
+msgstr "Vyprázdnit koš"
+
+#: fileItem.js:711
+msgid "Eject"
+msgstr "Vysunout"
+
+#: fileItem.js:717
+msgid "Properties"
+msgstr "Vlastnosti"
+
+#: fileItem.js:719
+msgid "Show in Files"
+msgstr "Zobrazit v Souborech"
+
+#: fileItem.js:925
+msgid "Home"
+msgstr "Domů"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Velikost ikon"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Nastavit velikost pro ikony na pracovní ploše."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Zobrazovat osobní složku"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Zobrazovat osobní složku na pracovní ploše."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Zobrazovat koš"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Zobrazovat ikonu koše na pracovní ploše."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Zobrazovat připojené svazky"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Zobrazovat připojené svazky na pracovní ploše."
+
+#~ msgid "Enter file name…"
+#~ msgstr "Zadejte název souboru…"
+
+#~ msgid "OK"
+#~ msgstr "Budiž"
+
+#~ msgid "Huge"
+#~ msgstr "obrovské"
+
+#~ msgid "Ok"
+#~ msgstr "Ok"
diff --git a/extensions/desktop-icons/po/da.po b/extensions/desktop-icons/po/da.po
new file mode 100644
index 00000000..ff533680
--- /dev/null
+++ b/extensions/desktop-icons/po/da.po
@@ -0,0 +1,226 @@
+# Danish translation for desktop-icons.
+# Copyright (C) 2018 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Alan Mortensen <alanmortensen.am@gmail.com>, 2018.
+# scootergrisen, 2020.
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions"
+"/desktop-icons/issues\n"
+"POT-Creation-Date: 2020-05-26 20:08+0000\n"
+"PO-Revision-Date: 2020-10-10 00:00+0200\n"
+"Last-Translator: scootergrisen\n"
+"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
+"Language: da\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Nyt mappenavn"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Opret"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Annullér"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Mappenavne må ikke indeholde “/”."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "En mappe må ikke kaldes “.”."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "En mappe må ikke kaldes “..”."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Mapper med “.” i begyndelsen af deres navn er skjulte."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Der findes allerede en fil eller mappe med det navn."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Størrelsen på skrivebordsikoner"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Små"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Standard"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Store"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Vis den personlige mappe på skrivebordet"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Vis papirkurvsikonet på skrivebordet"
+
+#: prefs.js:106
+#| msgid "Show the trash icon in the desktop"
+msgid "Show mounted drives in the desktop"
+msgstr "Vis monterede drev på skrivebordet"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Ny mappe"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Nyt dokument"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Indsæt"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Fortryd"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Omgør"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Vis skrivebordet i Filer"
+
+#: desktopGrid.js:355 fileItem.js:721
+msgid "Open in Terminal"
+msgstr "Åbn i terminal"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Skift baggrund …"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Skærmindstillinger"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Indstillinger"
+
+#: desktopGrid.js:692
+msgid "Rename"
+msgstr "Omdøb"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Kommando ikke fundet"
+
+#. TRANSLATORS: %s is the filesystem name
+#: desktopIconsUtil.js:162
+#, javascript-format
+msgid "Ejecting drive “%s” failed:"
+msgstr "Udskubning af drevet “%s” mislykkedes:"
+
+#: fileItem.js:584
+msgid "Dont Allow Launching"
+msgstr "Tillad ikke opstart"
+
+#: fileItem.js:586
+msgid "Allow Launching"
+msgstr "Tillad opstart"
+
+#: fileItem.js:682
+msgid "Open"
+msgstr "Åbn"
+
+#: fileItem.js:686
+msgid "Open With Other Application"
+msgstr "Åbn med et andet program"
+
+# scootergrisen: tjek oversættelsen af "Dedicated"
+#: fileItem.js:688
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Start med dedikeret grafikkort"
+
+#: fileItem.js:693
+msgid "Cut"
+msgstr "Klip"
+
+#: fileItem.js:694
+msgid "Copy"
+msgstr "Kopiér"
+
+#: fileItem.js:696
+msgid "Rename…"
+msgstr "Omdøb …"
+
+#: fileItem.js:697
+msgid "Move to Trash"
+msgstr "Flyt til papirkurven"
+
+#: fileItem.js:707
+msgid "Empty Trash"
+msgstr "Tøm papirkurven"
+
+#: fileItem.js:711
+msgid "Eject"
+msgstr "Skub ud"
+
+#: fileItem.js:717
+msgid "Properties"
+msgstr "Egenskaber"
+
+#: fileItem.js:719
+msgid "Show in Files"
+msgstr "Vis i Filer"
+
+#: fileItem.js:925
+msgid "Home"
+msgstr "Hjem"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Ikonstørrelse"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Angiv størrelsen på skrivebordsikoner."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Vis personlig mappe"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Vis den personlige mappe på skrivebordet."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Vis papirkurvsikon"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Vis papirkurvsikonet på skrivebordet."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+#| msgid "Show in Files"
+msgid "Show mounted drives"
+msgstr "Vis monterede drev"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+#| msgid "Show the trash icon in the desktop."
+msgid "Show mounted drives in the desktop."
+msgstr "Vis monterede drev på skrivebordet."
diff --git a/extensions/desktop-icons/po/de.po b/extensions/desktop-icons/po/de.po
new file mode 100644
index 00000000..8f2f4cbc
--- /dev/null
+++ b/extensions/desktop-icons/po/de.po
@@ -0,0 +1,232 @@
+# German translation for desktop-icons.
+# Copyright (C) 2018 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Mario Blättermann <mario.blaettermann@gmail.com>, 2018.
+# rugk <rugk+i18n@posteo.de>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-08-16 14:44+0000\n"
+"PO-Revision-Date: 2020-08-26 22:46+0200\n"
+"Last-Translator: Christian Kirbach <christian.kirbach@gmail.com>\n"
+"Language-Team: German <gnome-de@gnome.org>\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 2.3.1\n"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Neuer Ordner"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Erstellen"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Abbrechen"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Ordnernamen dürfen kein »/« enthalten."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Ein Ordner darf nicht ».« genannt werden."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Ein Ordner darf nicht »..« genannt werden."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Ordner mit ».« am Anfang sind verborgen."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Es gibt bereits eine Datei oder einen Ordner mit diesem Namen."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Größe der Arbeitsflächensymbole"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Klein"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Standard"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Groß"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Den persönlichen Ordner auf der Arbeitsfläche anzeigen"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Papierkorb-Symbol auf der Arbeitsfläche anzeigen"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Eingebundene Laufwerke auf der Arbeitsfläche anzeigen"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Neuer Ordner"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Neues Dokument"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Einfügen"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Rückgängig"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Wiederholen"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Schreibtisch in Dateien anzeigen"
+
+#: desktopGrid.js:355 fileItem.js:723
+msgid "Open in Terminal"
+msgstr "Im Terminal öffnen"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Hintergrund ändern …"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Anzeigeeinstellungen"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Einstellungen"
+
+#: desktopGrid.js:699
+msgid "Rename"
+msgstr "Umbenennen"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Befehl nicht gefunden"
+
+#. TRANSLATORS: %s is the filesystem name
+#: desktopIconsUtil.js:162
+#, javascript-format
+msgid "Ejecting drive “%s” failed:"
+msgstr "Auswerfen des Laufwerks »%s« fehlgeschlagen:"
+
+#: fileItem.js:586
+msgid "Dont Allow Launching"
+msgstr "Start nicht erlauben"
+
+#: fileItem.js:588
+msgid "Allow Launching"
+msgstr "Start erlauben"
+
+#: fileItem.js:684
+msgid "Open"
+msgstr "Öffnen"
+
+#: fileItem.js:688
+msgid "Open With Other Application"
+msgstr "Mit anderer Anwendung öffnen"
+
+#: fileItem.js:690
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Start mit dedizierter Grafikkarte"
+
+#: fileItem.js:695
+msgid "Cut"
+msgstr "Ausschneiden"
+
+#: fileItem.js:696
+msgid "Copy"
+msgstr "Kopieren"
+
+#: fileItem.js:698
+msgid "Rename…"
+msgstr "Umbenennen …"
+
+#: fileItem.js:699
+msgid "Move to Trash"
+msgstr "In den Papierkorb verschieben"
+
+#: fileItem.js:709
+msgid "Empty Trash"
+msgstr "Papierkorb leeren"
+
+#: fileItem.js:713
+msgid "Eject"
+msgstr "Auswerfen"
+
+#: fileItem.js:719
+msgid "Properties"
+msgstr "Eigenschaften"
+
+#: fileItem.js:721
+msgid "Show in Files"
+msgstr "In Dateiverwaltung anzeigen"
+
+#: fileItem.js:927
+msgid "Home"
+msgstr "Startseite"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Symbolgröße"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Die Größe der Arbeitsflächensymbole festlegen."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Persönlichen Ordner anzeigen"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Den persönlichen Ordner auf der Arbeitsfläche anzeigen."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Papierkorb-Symbol anzeigen"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Das Papierkorb-Symbol auf der Arbeitsfläche anzeigen."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Eingebundene Laufwerke anzeigen"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Eingebundene Laufwerke auf der Arbeitsfläche anzeigen."
+
+#~ msgid "Enter file name…"
+#~ msgstr "Dateinamen eingeben …"
+
+#~ msgid "OK"
+#~ msgstr "OK"
+
+#~ msgid "Huge"
+#~ msgstr "Riesig"
diff --git a/extensions/desktop-icons/po/el.po b/extensions/desktop-icons/po/el.po
new file mode 100644
index 00000000..302aea80
--- /dev/null
+++ b/extensions/desktop-icons/po/el.po
@@ -0,0 +1,190 @@
+# Greek translation for desktop-icons.
+# Copyright (C) 2019 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Emmanouil I. Kapernaros <manolis@kapcom.gr>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-04-05 21:12+0200\n"
+"PO-Revision-Date: 2019-10-30 23:18+0200\n"
+"Last-Translator: Emmanouil I. Kapernaros <manolis@kapcom.gr>\n"
+"Language-Team: Greek, Modern (1453-) <gnome-el-list@gnome.org>\n"
+"Language: el\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"X-Generator: Gtranslator 3.34.0\n"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Όνομα νέου φακέλου"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Δημιουργία"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Ακύρωση"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Τα ονόματα φακέλων δεν μπορούν να περιέχουν “/”."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Ο φάκελος δεν μπορεί να ονομάζεται “.”."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Ο φάκελος δεν μπορεί να ονομάζεται “..”."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Οι φάκελοι με “.” στην αρχή του ονόματος τους είναι κρυφοί"
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Υπάρχει ήδη ένας φάκελος ή αρχείο με αυτό το όνομα"
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Μέγεθος για τα εικονίδια επιφάνειας εργασίας"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "Μικρό"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "Κανονικό"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "Μεγάλο"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Εμφάνιση του προσωπικού φακέλου στην επιφάνεια εργασίας"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Εμφάνιση του εικονίδιου απορριμάτων στην επιφάνεια εργασίας"
+
+#: desktopGrid.js:343
+msgid "New Folder"
+msgstr "Νέος Φάκελος"
+
+#: desktopGrid.js:345
+msgid "Paste"
+msgstr "Επικόλληση"
+
+#: desktopGrid.js:346
+msgid "Undo"
+msgstr "Αναίρεση"
+
+#: desktopGrid.js:347
+msgid "Redo"
+msgstr "Επανάληψη"
+
+#: desktopGrid.js:349
+msgid "Show Desktop in Files"
+msgstr "Εμφάνιση Επιφάνειας εργασίας στα Αρχεία"
+
+#: desktopGrid.js:350 fileItem.js:651
+msgid "Open in Terminal"
+msgstr "Άνοιγμα στο Τερματικό"
+
+#: desktopGrid.js:352
+msgid "Change Background…"
+msgstr "Αλλαγή Φόντου"
+
+#: desktopGrid.js:354
+msgid "Display Settings"
+msgstr "Ρυθμίσεις Οθόνης"
+
+#: desktopGrid.js:355
+msgid "Settings"
+msgstr "Ρυθμίσεις"
+
+#: desktopGrid.js:653
+msgid "Rename"
+msgstr "Μετονομασία"
+
+#: desktopIconsUtil.js:61
+msgid "Command not found"
+msgstr "Η εντολή δεν βρέθηκε"
+
+#: fileItem.js:521
+msgid "Dont Allow Launching"
+msgstr "Μην Επιτρέψεις Εκτέλεση"
+
+#: fileItem.js:523
+msgid "Allow Launching"
+msgstr "Επέτρεψε Εκτέλεση"
+
+#: fileItem.js:619
+msgid "Open"
+msgstr "Άνοιγμα"
+
+#: fileItem.js:623
+msgid "Open With Other Application"
+msgstr "Άνοιγμα Με Άλλη Εφαρμογή"
+
+#: fileItem.js:627
+msgid "Cut"
+msgstr "Αποκοπή"
+
+#: fileItem.js:628
+msgid "Copy"
+msgstr "Αντιγραφή"
+
+#: fileItem.js:630
+msgid "Rename…"
+msgstr "Μετονομασία"
+
+#: fileItem.js:631
+msgid "Move to Trash"
+msgstr "Μετακίνηση στα Απορρίματα"
+
+#: fileItem.js:641
+msgid "Empty Trash"
+msgstr "Άδειασμα Απορριμάτων"
+
+#: fileItem.js:647
+msgid "Properties"
+msgstr "Ιδιότητες"
+
+#: fileItem.js:649
+msgid "Show in Files"
+msgstr "Εμφάνιση στα Αρχεία"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Μέγεθος εικονιδίου"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Ορισμός μεγέθους για τα εικονίδια της επιφάνειας εργασίας"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Εμφάνιση προσωπικού φακέλου"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Εμφάνιση του προσωπικού φακέλου στην επιφάνεια εργασίας"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Εμφάνιση του εικονιδίου απορριμμάτων"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Εμφάνιση του εικονιδίου απορριμμάτων στην επιφάνεια εργασίας"
+
+#~ msgid "Enter file name…"
+#~ msgstr "Εισάγετε όνομα αρχείου..."
diff --git a/extensions/desktop-icons/po/en_GB.po b/extensions/desktop-icons/po/en_GB.po
new file mode 100644
index 00000000..d30b74db
--- /dev/null
+++ b/extensions/desktop-icons/po/en_GB.po
@@ -0,0 +1,194 @@
+# British English translation for desktop-icons.
+# Copyright (C) 2019 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Zander Brown <zbrown@gnome.org>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-04-05 21:12+0200\n"
+"PO-Revision-Date: 2019-08-23 21:48+0100\n"
+"Last-Translator: Zander Brown <zbrown@gnome.org>\n"
+"Language-Team: English - United Kingdom <en_GB@li.org>\n"
+"Language: en_GB\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Gtranslator 3.32.1\n"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "New folder name"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Create"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Cancel"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Folder names cannot contain “/”."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "A folder cannot be called “.”."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "A folder cannot be called “..”."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Folders with “.” at the beginning of their name are hidden."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "There is already a file or folder with that name."
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Size for the desktop icons"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "Small"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "Standard"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "Large"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Show the personal folder on the desktop"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Show the wastebasket icon on the desktop"
+
+#: desktopGrid.js:343
+msgid "New Folder"
+msgstr "New Folder"
+
+#: desktopGrid.js:345
+msgid "Paste"
+msgstr "Paste"
+
+#: desktopGrid.js:346
+msgid "Undo"
+msgstr "Undo"
+
+#: desktopGrid.js:347
+msgid "Redo"
+msgstr "Redo"
+
+#: desktopGrid.js:349
+msgid "Show Desktop in Files"
+msgstr "Show Desktop in Files"
+
+#: desktopGrid.js:350 fileItem.js:651
+msgid "Open in Terminal"
+msgstr "Open in Terminal"
+
+#: desktopGrid.js:352
+msgid "Change Background…"
+msgstr "Change Background…"
+
+#: desktopGrid.js:354
+msgid "Display Settings"
+msgstr "Display Settings"
+
+#: desktopGrid.js:355
+msgid "Settings"
+msgstr "Settings"
+
+#: desktopGrid.js:653
+#, fuzzy
+msgid "Rename"
+msgstr "Rename…"
+
+#: desktopIconsUtil.js:61
+msgid "Command not found"
+msgstr "Command not found"
+
+#: fileItem.js:521
+msgid "Dont Allow Launching"
+msgstr "Dont Allow Launching"
+
+#: fileItem.js:523
+msgid "Allow Launching"
+msgstr "Allow Launching"
+
+#: fileItem.js:619
+msgid "Open"
+msgstr "Open"
+
+#: fileItem.js:623
+msgid "Open With Other Application"
+msgstr "Open With Other Application"
+
+#: fileItem.js:627
+msgid "Cut"
+msgstr "Cut"
+
+#: fileItem.js:628
+msgid "Copy"
+msgstr "Copy"
+
+#: fileItem.js:630
+msgid "Rename…"
+msgstr "Rename…"
+
+#: fileItem.js:631
+msgid "Move to Trash"
+msgstr "Move to Wastebasket"
+
+#: fileItem.js:641
+msgid "Empty Trash"
+msgstr "Empty Wastebasket"
+
+#: fileItem.js:647
+msgid "Properties"
+msgstr "Properties"
+
+#: fileItem.js:649
+msgid "Show in Files"
+msgstr "Show in Files"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Icon size"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Set the size for the desktop icons."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Show personal folder"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Show the personal folder on the desktop."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Show wastebasket icon"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Show the trash icon on the desktop."
+
+#~ msgid "Enter file name…"
+#~ msgstr "Enter file name…"
+
+#~ msgid "OK"
+#~ msgstr "OK"
diff --git a/extensions/desktop-icons/po/es.po b/extensions/desktop-icons/po/es.po
new file mode 100644
index 00000000..86ea1522
--- /dev/null
+++ b/extensions/desktop-icons/po/es.po
@@ -0,0 +1,257 @@
+# 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 <EMAIL@ADDRESS>, YEAR.
+# Sergio Costas <rastersoft@gmail.com>, 2018.
+# Daniel Mustieles <daniel.mustieles@gmail.com>, 2018-2020.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: 1.0\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-05-26 20:08+0000\n"
+"PO-Revision-Date: 2020-09-23 09:43+0200\n"
+"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
+"Language-Team: Spanish - Spain <gnome-es-list@gnome.org>\n"
+"Language: es_ES\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Gtranslator 3.38.0\n"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Nombre de la nueva carpeta"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Crear"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Los nombres de carpetas no pueden contener «/»."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Una carpeta no se puede llamar «.»."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Una carpeta no se puede llamar «..»."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Las carpetas cuyo nombre empieza por «.» están ocultas."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Ya hay un archivo o carpeta con ese nombre."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Tamaño de los iconos del escritorio"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Pequeño"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Estándar"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Grande"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Mostrar la carpeta personal en el escritorio"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Mostrar la papelera en el escritorio"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Mostrar unidades montadas en el escritorio"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Nueva carpeta"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Nuevo documento"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Pegar"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Deshacer"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Rehacer"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Mostrar el escritorio en Archivos"
+
+#: desktopGrid.js:355 fileItem.js:721
+msgid "Open in Terminal"
+msgstr "Abrir en una terminal"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Cambiar el fondo..."
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Configuración de pantalla"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Configuración"
+
+#: desktopGrid.js:692
+msgid "Rename"
+msgstr "Renombrar"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Comando no encontrado"
+
+#. TRANSLATORS: %s is the filesystem name
+#: desktopIconsUtil.js:162
+#, javascript-format
+msgid "Ejecting drive “%s” failed:"
+msgstr "Falló al expulsar la unidad «%s»:"
+
+#: fileItem.js:584
+msgid "Dont Allow Launching"
+msgstr "No permitir lanzar"
+
+#: fileItem.js:586
+msgid "Allow Launching"
+msgstr "Permitir lanzar"
+
+#: fileItem.js:682
+msgid "Open"
+msgstr "Abrir"
+
+#: fileItem.js:686
+msgid "Open With Other Application"
+msgstr "Abrir con otra aplicación"
+
+#: fileItem.js:688
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Lanza usando la tarjeta gráfica dedicada"
+
+#: fileItem.js:693
+msgid "Cut"
+msgstr "Cortar"
+
+#: fileItem.js:694
+msgid "Copy"
+msgstr "Copiar"
+
+#: fileItem.js:696
+msgid "Rename…"
+msgstr "Renombrar…"
+
+#: fileItem.js:697
+msgid "Move to Trash"
+msgstr "Mover a la papelera"
+
+#: fileItem.js:707
+msgid "Empty Trash"
+msgstr "Vaciar la papelera"
+
+#: fileItem.js:711
+msgid "Eject"
+msgstr "Expulsar"
+
+#: fileItem.js:717
+msgid "Properties"
+msgstr "Propiedades"
+
+#: fileItem.js:719
+msgid "Show in Files"
+msgstr "Mostrar en Files"
+
+#: fileItem.js:925
+msgid "Home"
+msgstr "Carpeta personal"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Tamaño de los iconos"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Establece el tamaño de los iconos del escritorio."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Mostrar la carpeta personal"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Mostrar la carpeta personal en el escritorio."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Mostrar la papelera"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Mostrar la papelera en el escritorio."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Mostrar unidades montadas"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Mostrar unidades montadas en el escritorio."
+
+#~ msgid "Enter file name…"
+#~ msgstr "Introduzca el nombre del archivo…"
+
+#~ msgid "OK"
+#~ msgstr "Aceptar"
+
+#~ msgid "Huge"
+#~ msgstr "Inmenso"
+
+#~ msgid "Ok"
+#~ msgstr "Aceptar"
+
+#~ msgid "huge"
+#~ msgstr "inmenso"
+
+#~ msgid "Maximum width for the icons and filename."
+#~ msgstr "Ancho máximo de los iconos y el nombre de fichero."
+
+#~ msgid "Shows the Documents folder in the desktop."
+#~ msgstr "Muestra la carpeta Documentos en el escritorio."
+
+#~ msgid "Shows the Downloads folder in the desktop."
+#~ msgstr "Muestra la carpeta Descargas en el escritorio."
+
+#~ msgid "Shows the Music folder in the desktop."
+#~ msgstr "Muestra la carpeta Música en el escritorio."
+
+#~ msgid "Shows the Pictures folder in the desktop."
+#~ msgstr "Muestra la carpeta Imágenes en el escritorio."
+
+#~ msgid "Shows the Videos folder in the desktop."
+#~ msgstr "Muestra la carpeta Vídeos en el escritorio."
diff --git a/extensions/desktop-icons/po/eu.po b/extensions/desktop-icons/po/eu.po
new file mode 100644
index 00000000..d662e0d3
--- /dev/null
+++ b/extensions/desktop-icons/po/eu.po
@@ -0,0 +1,192 @@
+# Basque translation for desktop-icons.
+# Copyright (C) 2019 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Asier Sarasua Garmendia <asier.sarasua@gmail.com>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-04-05 21:12+0200\n"
+"PO-Revision-Date: 2019-09-15 10:00+0100\n"
+"Last-Translator: Asier Sarasua Garmendia <asier.sarasua@gmail.com>\n"
+"Language-Team: Basque <librezale@librezale.eus>\n"
+"Language: eu\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Karpetaren izen berria"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Sorrera"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Utzi"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Karpeta-izenak ezin du '/' karaktererik eduki."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Karpeta ezin da '.' gisa deitu."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Karpeta ezin da '..' gisa deitu."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Izenaren hasieran \".\" duten karpetak ezkutuan daude."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Badago izen hori duen fitxategi edo karpeta bat."
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Mahaigaineko ikonoen tamaina"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "Txikia"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "Arrunta"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "Handia"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Erakutsi karpeta pertsonala mahaigainean"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Erakutsi zakarrontziaren ikonoa mahaigainean"
+
+#: desktopGrid.js:343
+msgid "New Folder"
+msgstr "Karpeta berria"
+
+#: desktopGrid.js:345
+msgid "Paste"
+msgstr "Itsatsi"
+
+#: desktopGrid.js:346
+msgid "Undo"
+msgstr "Desegin"
+
+#: desktopGrid.js:347
+msgid "Redo"
+msgstr "Berregin"
+
+#: desktopGrid.js:349
+msgid "Show Desktop in Files"
+msgstr "Erakutsi mahaigaina Fitxategiak aplikazioan"
+
+#: desktopGrid.js:350 fileItem.js:651
+msgid "Open in Terminal"
+msgstr "Ireki terminalean"
+
+#: desktopGrid.js:352
+msgid "Change Background…"
+msgstr "Aldatu atzeko planoa…"
+
+#: desktopGrid.js:354
+msgid "Display Settings"
+msgstr "Pantailaren ezarpenak"
+
+#: desktopGrid.js:355
+msgid "Settings"
+msgstr "Ezarpenak"
+
+#: desktopGrid.js:653
+#, fuzzy
+msgid "Rename"
+msgstr "Aldatu izena…"
+
+#: desktopIconsUtil.js:61
+msgid "Command not found"
+msgstr "Ez da komandoa aurkitu"
+
+#: fileItem.js:521
+msgid "Dont Allow Launching"
+msgstr "Ez baimendu abiaraztea"
+
+#: fileItem.js:523
+msgid "Allow Launching"
+msgstr "Baimendu abiaraztea"
+
+#: fileItem.js:619
+msgid "Open"
+msgstr "Ireki"
+
+#: fileItem.js:623
+msgid "Open With Other Application"
+msgstr "Ireki beste aplikazio batekin"
+
+#: fileItem.js:627
+msgid "Cut"
+msgstr "Ebaki"
+
+#: fileItem.js:628
+msgid "Copy"
+msgstr "Kopiatu"
+
+#: fileItem.js:630
+msgid "Rename…"
+msgstr "Aldatu izena…"
+
+#: fileItem.js:631
+msgid "Move to Trash"
+msgstr "Bota zakarrontzira"
+
+#: fileItem.js:641
+msgid "Empty Trash"
+msgstr "Hustu zakarrontzia"
+
+#: fileItem.js:647
+msgid "Properties"
+msgstr "Propietateak"
+
+#: fileItem.js:649
+msgid "Show in Files"
+msgstr "Erakutsi Fitxategiak aplikazioan"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Ikonoaren tamaina"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Ezarri mahaigaineko ikonoen tamaina."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Erakutsi karpeta pertsonala"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Erakutsi karpeta pertsonala mahaigainean."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Erakutsi zakarrontziaren ikonoa"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Erakutsi zakarrontziaren ikonoa mahaigainean."
+
+#~ msgid "Enter file name…"
+#~ msgstr "Sartu fitxategi-izena…"
+
+#~ msgid "OK"
+#~ msgstr "Ados"
diff --git a/extensions/desktop-icons/po/fa.po b/extensions/desktop-icons/po/fa.po
new file mode 100644
index 00000000..4538923e
--- /dev/null
+++ b/extensions/desktop-icons/po/fa.po
@@ -0,0 +1,187 @@
+# Persian translation for desktop-icons.
+# Copyright (C) 2020 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Danial Behzadi <dani.behzi@ubuntu.com>, 2020.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-04-06 14:18+0000\n"
+"PO-Revision-Date: 2020-04-06 18:21+0000\n"
+"Language-Team: Persian <fa@li.org>\n"
+"Language: fa\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Last-Translator: \n"
+"X-Generator: Poedit 2.3\n"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "نام شاخهٔ جدید"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "ایجاد"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "لغو"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "نام شاخه‌ها نمی‌تواند شامل \"/\" شود."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "یک شاخه را نمی‌توان «.» نامگذاری کرد."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "یک شاخه را نمی‌توان «..» نامگذاری کرد."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "شاخه‌هایی با «.» در ابتدای نامشان، مخفیند."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "پرونده یا شاخه‌ای با همان نام موجود است."
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "اندازه برای نقشک‌های میزکار"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "کوچک"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "استاندارد"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "بزرگ"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "نمایش شاخهٔ شخصی در میزکار"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "نمایش نقشک زباله‌دان در میزکار"
+
+#: desktopGrid.js:343
+msgid "New Folder"
+msgstr "شاخه جدید"
+
+#: desktopGrid.js:345
+msgid "Paste"
+msgstr "چسباندن"
+
+#: desktopGrid.js:346
+msgid "Undo"
+msgstr "برگردان"
+
+#: desktopGrid.js:347
+msgid "Redo"
+msgstr "انجام دوباره"
+
+#: desktopGrid.js:349
+msgid "Show Desktop in Files"
+msgstr "نمایش میزکار در پرونده‌ها"
+
+#: desktopGrid.js:350 fileItem.js:651
+msgid "Open in Terminal"
+msgstr "گشودن در پایانه"
+
+#: desktopGrid.js:352
+msgid "Change Background…"
+msgstr "تغییر پس‌زمینه…"
+
+#: desktopGrid.js:354
+msgid "Display Settings"
+msgstr "تنظیمات نمایشگر"
+
+#: desktopGrid.js:355
+msgid "Settings"
+msgstr "تنظیمات"
+
+#: desktopGrid.js:653
+msgid "Rename"
+msgstr "تغییر نام"
+
+#: desktopIconsUtil.js:61
+msgid "Command not found"
+msgstr "فرمان پیدا نشد"
+
+#: fileItem.js:521
+msgid "Dont Allow Launching"
+msgstr "اجازه ندادن به اجرا"
+
+#: fileItem.js:523
+msgid "Allow Launching"
+msgstr "اجازهٔ اجرا"
+
+#: fileItem.js:619
+msgid "Open"
+msgstr "گشودن"
+
+#: fileItem.js:623
+msgid "Open With Other Application"
+msgstr "گشودن با برنامه‌ای دیگر"
+
+#: fileItem.js:627
+msgid "Cut"
+msgstr "برش"
+
+#: fileItem.js:628
+msgid "Copy"
+msgstr "رونوشت"
+
+#: fileItem.js:630
+msgid "Rename…"
+msgstr "تغییر نام…"
+
+#: fileItem.js:631
+msgid "Move to Trash"
+msgstr "انداختن در زباله‌دان"
+
+#: fileItem.js:641
+msgid "Empty Trash"
+msgstr "خالی کردن زباله‌دان"
+
+#: fileItem.js:647
+msgid "Properties"
+msgstr "ویژگی‌ها"
+
+#: fileItem.js:649
+msgid "Show in Files"
+msgstr "نمایش در پرونده‌ها"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "اندازهٔ نقشک"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "تنظیم اندازه برای نقشک‌های میزکار."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "نمایش شاخهٔ شخصی"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "نمایش شاخهٔ شخصی در میزکار."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "نمایش نقشک زباله‌دان"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "نمایش نقشک زباله‌دان در میزکار."
diff --git a/extensions/desktop-icons/po/fi.po b/extensions/desktop-icons/po/fi.po
new file mode 100644
index 00000000..f2b451db
--- /dev/null
+++ b/extensions/desktop-icons/po/fi.po
@@ -0,0 +1,231 @@
+# Finnish translation for desktop-icons.
+# Copyright (C) 2018 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Jiri Grönroos <jiri.gronroos@iki.fi>, 2018.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-05-26 20:08+0000\n"
+"PO-Revision-Date: 2020-08-16 17:43+0300\n"
+"Last-Translator: Jiri Grönroos <jiri.gronroos+l10n@iki.fi>\n"
+"Language-Team: Finnish <lokalisointi-lista@googlegroups.com>\n"
+"Language: fi\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 2.4.1\n"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Uusi kansion nimi"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Luo"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Peru"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Kansion nimi ei voi sisältää merkkiä “/”."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Kansion nimi ei voi olla “.”."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Kansion nimi ei voi olla “..”."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Kansiot, joiden nimi alkaa merkillä “.”, ovat piilotettuja."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Nimi on jo toisen tiedoston tai kansion käytössä."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Työpöydän kuvakkeiden koko"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Pieni"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Normaali"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Suuri"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Näytä kotikansio työpöydällä"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Näytä roskakorin kuvake työpöydällä"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Näytä liitetyt asemat työpöydällä"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Uusi kansio"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Uusi asiakirja"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Liitä"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Kumoa"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Tee uudeleen"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Näytä työpöytä tiedostonhallinnassa"
+
+#: desktopGrid.js:355 fileItem.js:721
+msgid "Open in Terminal"
+msgstr "Avaa päätteessä"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Vaihda taustakuva…"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Näytön asetukset"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Asetukset"
+
+#: desktopGrid.js:692
+msgid "Rename"
+msgstr "Nimeä uudelleen"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Komentoa ei löydy"
+
+#. TRANSLATORS: %s is the filesystem name
+#: desktopIconsUtil.js:162
+#, javascript-format
+msgid "Ejecting drive “%s” failed:"
+msgstr "Aseman “%s” avaaminen epäonnistui:"
+
+#: fileItem.js:584
+msgid "Dont Allow Launching"
+msgstr "Älä salli käynnistämistä"
+
+#: fileItem.js:586
+msgid "Allow Launching"
+msgstr "Salli käynnistäminen"
+
+#: fileItem.js:682
+msgid "Open"
+msgstr "Avaa"
+
+#: fileItem.js:686
+msgid "Open With Other Application"
+msgstr "Avaa toisella sovelluksella"
+
+#: fileItem.js:688
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Käynnistä käyttäen erillistä näytönohjainta"
+
+#: fileItem.js:693
+msgid "Cut"
+msgstr "Leikkaa"
+
+#: fileItem.js:694
+msgid "Copy"
+msgstr "Kopioi"
+
+#: fileItem.js:696
+msgid "Rename…"
+msgstr "Nimeä uudelleen…"
+
+#: fileItem.js:697
+msgid "Move to Trash"
+msgstr "Siirrä roskakoriin"
+
+#: fileItem.js:707
+msgid "Empty Trash"
+msgstr "Tyhjennä roskakori"
+
+#: fileItem.js:711
+msgid "Eject"
+msgstr "Poista asemasta"
+
+#: fileItem.js:717
+msgid "Properties"
+msgstr "Ominaisuudet"
+
+#: fileItem.js:719
+msgid "Show in Files"
+msgstr "Näytä tiedostonhallinnassa"
+
+#: fileItem.js:925
+msgid "Home"
+msgstr "Koti"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Kuvakekoko"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Aseta työpöytäkuvakkeiden koko."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Näytä kotikansio"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Näytä kotikansio työpöydällä."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Näytä roskakorin kuvake"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Näytä roskakorin kuvake työpöydällä."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Näytä liitetyt asemat"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Näytä liitetyt asemat työpöydällä."
+
+#~ msgid "Enter file name…"
+#~ msgstr "Anna tiedostonimi…"
+
+#~ msgid "OK"
+#~ msgstr "OK"
+
+#~ msgid "Huge"
+#~ msgstr "Valtava"
diff --git a/extensions/desktop-icons/po/fr.po b/extensions/desktop-icons/po/fr.po
new file mode 100644
index 00000000..3c5958d5
--- /dev/null
+++ b/extensions/desktop-icons/po/fr.po
@@ -0,0 +1,225 @@
+# French translation for desktop-icons.
+# Copyright (C) 2018-2020 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# ghentdebian <ghent.debian@gmail.com>, 2018.
+# Charles Monzat <charles.monzat@numericable.fr>, 2018.
+# Claude Paroz <claude@2xlibre.net>, 2020.
+# Sylvestris <sylvestris@tutanota.com>, 2020.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-08-25 19:35+0000\n"
+"PO-Revision-Date: 2020-09-20 10:54+0200\n"
+"Last-Translator: Sylvestris <sylvestris@tutanota.com>\n"
+"Language-Team: GNOME French Team <gnomefr@traduc.org>\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: Gtranslator 3.36.0\n"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Nouveau nom de dossier"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Créer"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Annuler"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Les noms de dossiers ne peuvent pas contenir « / »."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Un dossier ne peut pas être nommé « . »."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Un dossier ne peut pas être nommé « .. »."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Les dossiers dont le nom commence par « . » sont masqués."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Il existe déjà un fichier ou dossier ayant ce nom."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Taille des icônes du bureau"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Petite"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Normale"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Grande"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Montrer le dossier personnel sur le bureau"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Montrer la corbeille sur le bureau"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Montrer les disques montés sur le bureau"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Nouveau dossier"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Nouveau document"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Coller"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Annuler"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Rétablir"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Afficher le bureau dans Fichiers"
+
+#: desktopGrid.js:355 fileItem.js:723
+msgid "Open in Terminal"
+msgstr "Ouvrir dans un terminal"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Changer larrière-plan…"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Configuration daffichage"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Paramètres"
+
+#: desktopGrid.js:699
+msgid "Rename"
+msgstr "Renommer"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Commande introuvable"
+
+#. TRANSLATORS: %s is the filesystem name
+#: desktopIconsUtil.js:162
+#, javascript-format
+msgid "Ejecting drive “%s” failed:"
+msgstr "Échec de léjection du disque « %s » :"
+
+#: fileItem.js:586
+msgid "Dont Allow Launching"
+msgstr "Ne pas autoriser le lancement"
+
+#: fileItem.js:588
+msgid "Allow Launching"
+msgstr "Autoriser le lancement"
+
+#: fileItem.js:684
+msgid "Open"
+msgstr "Ouvrir"
+
+#: fileItem.js:688
+msgid "Open With Other Application"
+msgstr "Ouvrir avec une autre application"
+
+#: fileItem.js:690
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Lancer en utilisant une carte graphique dédiée"
+
+#: fileItem.js:695
+msgid "Cut"
+msgstr "Couper"
+
+#: fileItem.js:696
+msgid "Copy"
+msgstr "Copier"
+
+#: fileItem.js:698
+msgid "Rename…"
+msgstr "Renommer…"
+
+#: fileItem.js:699
+msgid "Move to Trash"
+msgstr "Mettre à la corbeille"
+
+#: fileItem.js:709
+msgid "Empty Trash"
+msgstr "Vider la corbeille"
+
+#: fileItem.js:713
+msgid "Eject"
+msgstr "Éjecter"
+
+#: fileItem.js:719
+msgid "Properties"
+msgstr "Propriétés"
+
+#: fileItem.js:721
+msgid "Show in Files"
+msgstr "Montrer dans Fichiers"
+
+#: fileItem.js:927
+msgid "Home"
+msgstr "Dossier personnel"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Taille dicônes"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Définir la taille des icônes du bureau."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Montrer le dossier personnel"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Montrer le dossier personnel sur le bureau."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Montrer licône de la corbeille"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Montrer la corbeille sur le bureau."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Montrer les disques montés"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Montrer les disques montés sur le bureau."
diff --git a/extensions/desktop-icons/po/fur.po b/extensions/desktop-icons/po/fur.po
new file mode 100644
index 00000000..58bcb4e4
--- /dev/null
+++ b/extensions/desktop-icons/po/fur.po
@@ -0,0 +1,227 @@
+# Friulian translation for desktop-icons.
+# Copyright (C) 2019 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Fabio Tomat <f.t.public@gmail.com>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-05-26 20:08+0000\n"
+"PO-Revision-Date: 2020-09-08 10:04+0200\n"
+"Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n"
+"Language-Team: Friulian <fur@li.org>\n"
+"Language: fur\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.4.1\n"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Gnûf non de cartele"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Cree"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Anule"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "I nons des cartelis no puedin contignî il caratar “/”."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Une cartele no pues jessi clamade “.”."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Une cartele no pues jessi clamade “..”."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Lis cartelis cul “.” al inizi dal lôr non a son platadis."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Un file o une cartele cul stes non e esist za."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Dimension pes iconis dal scritori"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Piçule"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Standard"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Largje"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Mostre la cartele personâl intal scritori"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Mostre la icone de scovacere intal scritori"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Mostre lis unitâts montadis tal scritori"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Gnove cartele"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Gnûf document"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Tache"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Anule"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Torne fâ"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Mostre Scritori in File"
+
+#: desktopGrid.js:355 fileItem.js:721
+msgid "Open in Terminal"
+msgstr "Vierç in Terminâl"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Cambie sfont…"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Impostazions visôr"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Impostazions"
+
+#: desktopGrid.js:692
+msgid "Rename"
+msgstr "Cambie non"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Comant no cjatât"
+
+#. TRANSLATORS: %s is the filesystem name
+#: desktopIconsUtil.js:162
+#, javascript-format
+msgid "Ejecting drive “%s” failed:"
+msgstr "No si è rivâts a parâ fûr la unitât “%s”:"
+
+#: fileItem.js:584
+msgid "Dont Allow Launching"
+msgstr "No sta permeti inviament"
+
+#: fileItem.js:586
+msgid "Allow Launching"
+msgstr "Permet inviament"
+
+#: fileItem.js:682
+msgid "Open"
+msgstr "Vierç"
+
+#: fileItem.js:686
+msgid "Open With Other Application"
+msgstr "Vierç cuntune altre aplicazion"
+
+#: fileItem.js:688
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Invie doprant une schede grafiche dedicade"
+
+#: fileItem.js:693
+msgid "Cut"
+msgstr "Taie"
+
+#: fileItem.js:694
+msgid "Copy"
+msgstr "Copie"
+
+#: fileItem.js:696
+msgid "Rename…"
+msgstr "Cambie non…"
+
+#: fileItem.js:697
+msgid "Move to Trash"
+msgstr "Sposte te scovacere"
+
+#: fileItem.js:707
+msgid "Empty Trash"
+msgstr "Disvuede scovacere"
+
+#: fileItem.js:711
+msgid "Eject"
+msgstr "Pare fûr"
+
+#: fileItem.js:717
+msgid "Properties"
+msgstr "Propietâts"
+
+#: fileItem.js:719
+msgid "Show in Files"
+msgstr "Mostre in File"
+
+#: fileItem.js:925
+msgid "Home"
+msgstr "Home"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Dimension icone"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Stabilìs la dimension pes iconis dal scritori."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Mostre cartele personâl"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Mostre la cartele personâl intal scritori."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Mostre la icone de scovacere"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Mostre la icone de scovacere intal scritori."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Mostre unitâts montadis"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Mostre lis unitâts montadis intal scritori."
+
+#~ msgid "Enter file name…"
+#~ msgstr "Inserìs il non dal file…"
+
+#~ msgid "OK"
+#~ msgstr "Va ben"
diff --git a/extensions/desktop-icons/po/hr.po b/extensions/desktop-icons/po/hr.po
new file mode 100644
index 00000000..11cd25f7
--- /dev/null
+++ b/extensions/desktop-icons/po/hr.po
@@ -0,0 +1,228 @@
+# Croatian translation for gnome-shell-extension-desktop-icons
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the gnome-shell-extension-desktop-icons package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gnome-shell-extension-desktop-icons\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-05-26 20:08+0000\n"
+"PO-Revision-Date: 2020-09-10 17:48+0200\n"
+"Last-Translator: gogo <trebelnik2@gmail.com>\n"
+"Language-Team: Croatian <hr@li.org>\n"
+"Language: hr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2019-03-27 09:36+0000\n"
+"X-Generator: Poedit 2.3\n"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Naziv nove mape"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Stvori"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Odustani"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Naziv mape ne može sadržavati “/”."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Mapa se ne može nazvati “.”."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Mapa se ne može nazvati “..”."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Mape koje sadrže “.” na početku njihovih naziva su skrivene."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Već postoji datoteka ili mapa s tim nazivom."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Veličina ikona radne površine"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Male"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Standardne"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Velike"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Prikaži osobnu mapu na radnoj površini"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Prikaži mapu smeća na radnoj površini"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Prikaži montirane uređaje na radnoj površini"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Nova mapa"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Novi dokument"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Zalijepi"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Poništi"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Ponovi"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Prikaži radnu površinu u Datotekama"
+
+#: desktopGrid.js:355 fileItem.js:721
+msgid "Open in Terminal"
+msgstr "Otvori u Terminalu"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Promijeni pozadinu…"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Postavke zaslona"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Postavke"
+
+#: desktopGrid.js:692
+msgid "Rename"
+msgstr "Preimenuj"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Naredba nije pronađena"
+
+#. TRANSLATORS: %s is the filesystem name
+#: desktopIconsUtil.js:162
+#, javascript-format
+msgid "Ejecting drive “%s” failed:"
+msgstr "Neuspjelo izbacivanje “%s” uređaja:"
+
+#: fileItem.js:584
+msgid "Dont Allow Launching"
+msgstr "Ne dopuštaj pokretanje"
+
+#: fileItem.js:586
+msgid "Allow Launching"
+msgstr "Dopusti pokretanje"
+
+#: fileItem.js:682
+msgid "Open"
+msgstr "Otvori"
+
+#: fileItem.js:686
+msgid "Open With Other Application"
+msgstr "Otvori s drugom aplikacijom"
+
+#: fileItem.js:688
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Pokreni pomoću namjenske grafičke kartice"
+
+#: fileItem.js:693
+msgid "Cut"
+msgstr "Izreži"
+
+#: fileItem.js:694
+msgid "Copy"
+msgstr "Kopiraj"
+
+#: fileItem.js:696
+msgid "Rename…"
+msgstr "Preimenuj…"
+
+#: fileItem.js:697
+msgid "Move to Trash"
+msgstr "Premjesti u smeće"
+
+#: fileItem.js:707
+msgid "Empty Trash"
+msgstr "Isprazni smeće"
+
+#: fileItem.js:711
+msgid "Eject"
+msgstr "Izbaci"
+
+#: fileItem.js:717
+msgid "Properties"
+msgstr "Svojstva"
+
+#: fileItem.js:719
+msgid "Show in Files"
+msgstr "Prikaži u Datotekama"
+
+#: fileItem.js:925
+msgid "Home"
+msgstr "Osobna mapa"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Veličina ikona"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Postavi veličinu ikona radne površine."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Prikaži osobnu mapu"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Prikaži osobnu mapu na radnoj površini."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Prikaži ikonu smeća"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Prikaži ikonu smeća na radnoj površini."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Prikaži montirane uređaje"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Prikaži montirane uređaje na radnoj površini."
+
+#~ msgid "Enter file name…"
+#~ msgstr "Upiši naziv datoteke…"
+
+#~ msgid "OK"
+#~ msgstr "U redu"
diff --git a/extensions/desktop-icons/po/hu.po b/extensions/desktop-icons/po/hu.po
new file mode 100644
index 00000000..dead2ac5
--- /dev/null
+++ b/extensions/desktop-icons/po/hu.po
@@ -0,0 +1,228 @@
+# Hungarian translation for desktop-icons.
+# Copyright (C) 2019, 2020 The Free Software Foundation, inc.
+# This file is distributed under the same license as the desktop-icons package.
+#
+# Balázs Úr <ur.balazs at fsf dot hu>, 2019, 2020.
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-i"
+"cons/issues\n"
+"POT-Creation-Date: 2020-05-26 20:08+0000\n"
+"PO-Revision-Date: 2020-09-12 14:46+0200\n"
+"Last-Translator: Balázs Úr <ur.balazs at fsf dot hu>\n"
+"Language-Team: Hungarian <gnome-hu-list at gnome dot org>\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 19.12.3\n"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Új mappa neve"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Létrehozás"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Mégse"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "A mappanevek nem tartalmazhatnak „/” karaktert."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Egy mappának nem lehet „.” a neve."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Egy mappának nem lehet „..” a neve."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "A „.” karakterrel kezdődő nevű mappák rejtettek."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Már van egy fájl vagy mappa azzal a névvel."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Az asztali ikonok mérete"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Kicsi"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Szabványos"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Nagy"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "A személyes mappa megjelenítése az asztalon"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "A kuka ikon megjelenítése az asztalon"
+
+#: prefs.js:106
+#| msgid "Show the trash icon in the desktop"
+msgid "Show mounted drives in the desktop"
+msgstr "Csatolt meghajtók megjelenítése az asztalon"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Új mappa"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Új dokumentum"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Beillesztés"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Visszavonás"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Újra"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Asztal megjelenítése a Fájlokban"
+
+#: desktopGrid.js:355 fileItem.js:721
+msgid "Open in Terminal"
+msgstr "Megnyitás terminálban"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Háttér megváltoztatása…"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Megjelenítés beállításai"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Beállítások"
+
+#: desktopGrid.js:692
+msgid "Rename"
+msgstr "Átnevezés"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "A parancs nem található"
+
+#. TRANSLATORS: %s is the filesystem name
+#: desktopIconsUtil.js:162
+#, javascript-format
+msgid "Ejecting drive “%s” failed:"
+msgstr "A(z) „%s” meghajtó kiadása nem sikerült:"
+
+#: fileItem.js:584
+msgid "Dont Allow Launching"
+msgstr "Ne engedélyezzen indítást"
+
+#: fileItem.js:586
+msgid "Allow Launching"
+msgstr "Indítás engedélyezése"
+
+#: fileItem.js:682
+msgid "Open"
+msgstr "Megnyitás"
+
+#: fileItem.js:686
+msgid "Open With Other Application"
+msgstr "Megnyitás egyéb alkalmazással"
+
+#: fileItem.js:688
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Futtatás dedikált videokártya használatával"
+
+#: fileItem.js:693
+msgid "Cut"
+msgstr "Kivágás"
+
+#: fileItem.js:694
+msgid "Copy"
+msgstr "Másolás"
+
+#: fileItem.js:696
+msgid "Rename…"
+msgstr "Átnevezés…"
+
+#: fileItem.js:697
+msgid "Move to Trash"
+msgstr "Áthelyezés a Kukába"
+
+#: fileItem.js:707
+msgid "Empty Trash"
+msgstr "Kuka ürítése"
+
+#: fileItem.js:711
+msgid "Eject"
+msgstr "Kiadás"
+
+#: fileItem.js:717
+msgid "Properties"
+msgstr "Tulajdonságok"
+
+#: fileItem.js:719
+msgid "Show in Files"
+msgstr "Megjelenítés a Fájlokban"
+
+#: fileItem.js:925
+msgid "Home"
+msgstr "Saját mappa"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Ikonméret"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Az asztali ikonok méretének beállítása."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Személyes mappa megjelenítése"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "A személyes mappa megjelenítése az asztalon."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Kuka ikon megjelenítése"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "A kuka ikon megjelenítése az asztalon."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+#| msgid "Show in Files"
+msgid "Show mounted drives"
+msgstr "Csatolt meghajtók megjelenítése"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+#| msgid "Show the trash icon in the desktop."
+msgid "Show mounted drives in the desktop."
+msgstr "Csatolt meghajtók megjelenítése az asztalon."
+
+#~ msgid "Enter file name…"
+#~ msgstr "Adjon meg egy fájlnevet…"
diff --git a/extensions/desktop-icons/po/id.po b/extensions/desktop-icons/po/id.po
new file mode 100644
index 00000000..04eb8551
--- /dev/null
+++ b/extensions/desktop-icons/po/id.po
@@ -0,0 +1,222 @@
+# Indonesian translation for desktop-icons.
+# Copyright (C) 2018 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Kukuh Syafaat <kukuhsyafaat@gnome.org>, 2018-2020.
+# Andika Triwidada <andika@gmail.com>, 2020.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-05-26 20:08+0000\n"
+"PO-Revision-Date: 2020-06-06 16:30+0700\n"
+"Last-Translator: Andika Triwidada <andika@gmail.com>\n"
+"Language-Team: Indonesian <gnome-l10n-id@googlegroups.com>\n"
+"Language: id\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.3.1\n"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Nama folder baru"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Buat"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Batal"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Nama folder tak boleh memuat \"/\"."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Sebuah folder tak bisa dinamai \".\"."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Sebuah folder tak bisa dinamai \"..\"."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Folder dengan \".\" di awal nama mereka disembunyikan."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Folder dengan nama itu sudah ada."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Ukuran untuk ikon destop"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Kecil"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Standar"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Besar"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Tampilkan folder pribadi di destop"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Tampilkan ikon tong sampah di destop"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Tampilkan kandar yang dikaitkan di destop"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Folder Baru"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Dokumen Baru"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Tempel"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Tak Jadi"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Jadi Lagi"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Tampilkan Destop pada Berkas"
+
+#: desktopGrid.js:355 fileItem.js:721
+msgid "Open in Terminal"
+msgstr "Buka dalam Terminal"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Ubah Latar Belakang…"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Pengaturan Tampilan"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Pengaturan"
+
+#: desktopGrid.js:692
+msgid "Rename"
+msgstr "Ganti Nama"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Perintah tidak ditemukan"
+
+#. TRANSLATORS: %s is the filesystem name
+#: desktopIconsUtil.js:162
+#, javascript-format
+msgid "Ejecting drive “%s” failed:"
+msgstr "Mengeluarkan kandar \"%s\" gagal:"
+
+#: fileItem.js:584
+msgid "Dont Allow Launching"
+msgstr "Jangan Izinkan Peluncuran"
+
+#: fileItem.js:586
+msgid "Allow Launching"
+msgstr "Izinkan Peluncuran"
+
+#: fileItem.js:682
+msgid "Open"
+msgstr "Buka"
+
+#: fileItem.js:686
+msgid "Open With Other Application"
+msgstr "Buka Dengan Aplikasi Lain"
+
+#: fileItem.js:688
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Luncurkan menggunakan Kartu Grafis Terdedikasi"
+
+#: fileItem.js:693
+msgid "Cut"
+msgstr "Potong"
+
+#: fileItem.js:694
+msgid "Copy"
+msgstr "Salin"
+
+#: fileItem.js:696
+msgid "Rename…"
+msgstr "Ganti Nama…"
+
+#: fileItem.js:697
+msgid "Move to Trash"
+msgstr "Pindahkan ke Tong Sampah"
+
+#: fileItem.js:707
+msgid "Empty Trash"
+msgstr "Kosongkan Tong Sampah"
+
+#: fileItem.js:711
+msgid "Eject"
+msgstr "Keluarkan"
+
+#: fileItem.js:717
+msgid "Properties"
+msgstr "Properti"
+
+#: fileItem.js:719
+msgid "Show in Files"
+msgstr "Tampilkan pada Berkas"
+
+#: fileItem.js:925
+msgid "Home"
+msgstr "Rumah"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Ukuran ikon"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Set ukuran untuk ikon destop."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Tampilkan folder pribadi"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Tampilkan folder pribadi di destop."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Tampilkan ikon tong sampah"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Tampilkan ikon tong sampah di destop."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Tampilkan kandar yang dikaitkan"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Tampilkan kandar yang dikaitkan di destop."
diff --git a/extensions/desktop-icons/po/it.po b/extensions/desktop-icons/po/it.po
new file mode 100644
index 00000000..bd3eb249
--- /dev/null
+++ b/extensions/desktop-icons/po/it.po
@@ -0,0 +1,189 @@
+# Italian translation for desktop-icons.
+# Copyright (C) 2019, 2020 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Massimo Branchini <max.bra.gtalk@gmail.com>, 2019.
+# Milo Casagrande <milo@milo.name>, 2019, 2020.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-04-05 19:13+0000\n"
+"PO-Revision-Date: 2020-04-07 09:36+0200\n"
+"Last-Translator: Milo Casagrande <milo@milo.name>\n"
+"Language-Team: Italian <tp@lists.linux.it>\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 2.2.4\n"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Nuova cartella"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Crea"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Annulla"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "I nomi di cartelle non possono contenere il carattere «/»"
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Una cartella non può essere chiamata «.»."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Una cartella non può essere chiamata «..»."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Cartelle il cui nome inizia con «.» sono nascoste."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Esiste già un file o una cartella con quel nome."
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Dimensione delle icone della scrivania"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "Piccola"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "Normale"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "Grande"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Mostra la cartella personale sulla scrivania"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Mostra il cestino sulla scrivania"
+
+#: desktopGrid.js:343
+msgid "New Folder"
+msgstr "Nuova cartella"
+
+#: desktopGrid.js:345
+msgid "Paste"
+msgstr "Incolla"
+
+#: desktopGrid.js:346
+msgid "Undo"
+msgstr "Annulla"
+
+#: desktopGrid.js:347
+msgid "Redo"
+msgstr "Ripeti"
+
+#: desktopGrid.js:349
+msgid "Show Desktop in Files"
+msgstr "Mostra la scrivania in File"
+
+#: desktopGrid.js:350 fileItem.js:651
+msgid "Open in Terminal"
+msgstr "Apri in Terminale"
+
+#: desktopGrid.js:352
+msgid "Change Background…"
+msgstr "Cambia lo sfondo…"
+
+#: desktopGrid.js:354
+msgid "Display Settings"
+msgstr "Impostazioni dello schermo"
+
+#: desktopGrid.js:355
+msgid "Settings"
+msgstr "Impostazioni"
+
+#: desktopGrid.js:653
+msgid "Rename"
+msgstr "Rinomina"
+
+#: desktopIconsUtil.js:61
+msgid "Command not found"
+msgstr "Comando non trovato"
+
+#: fileItem.js:521
+msgid "Dont Allow Launching"
+msgstr "Non permettere l'esecuzione"
+
+#: fileItem.js:523
+msgid "Allow Launching"
+msgstr "Permetti l'esecuzione"
+
+#: fileItem.js:619
+msgid "Open"
+msgstr "Apri"
+
+#: fileItem.js:623
+msgid "Open With Other Application"
+msgstr "Apri con altra applicazione"
+
+#: fileItem.js:627
+msgid "Cut"
+msgstr "Taglia"
+
+#: fileItem.js:628
+msgid "Copy"
+msgstr "Copia"
+
+#: fileItem.js:630
+msgid "Rename…"
+msgstr "Rinomina…"
+
+#: fileItem.js:631
+msgid "Move to Trash"
+msgstr "Sposta nel cestino"
+
+#: fileItem.js:641
+msgid "Empty Trash"
+msgstr "Svuota il cestino"
+
+#: fileItem.js:647
+msgid "Properties"
+msgstr "Proprietà"
+
+#: fileItem.js:649
+msgid "Show in Files"
+msgstr "Mostra in File"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Dimensione dell'icona"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Imposta la grandezza delle icone della scrivania."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Mostra la cartella personale"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Mostra la cartella personale sulla scrivania."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+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."
diff --git a/extensions/desktop-icons/po/ja.po b/extensions/desktop-icons/po/ja.po
new file mode 100644
index 00000000..71d9f539
--- /dev/null
+++ b/extensions/desktop-icons/po/ja.po
@@ -0,0 +1,221 @@
+# Japanese translation for desktop-icons.
+# Copyright (C) 2019-2020 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# sicklylife <translation@sicklylife.jp>, 2019-2020.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-05-26 20:08+0000\n"
+"PO-Revision-Date: 2020-05-30 00:00+0900\n"
+"Last-Translator: sicklylife <translation@sicklylife.jp>\n"
+"Language-Team: Japanese <gnome-translation@gnome.gr.jp>\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"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "新しいフォルダー名"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "作成"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "キャンセル"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "“/”はフォルダー名に含められません。"
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "“.”という名前はフォルダーに付けられません。"
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "“..”という名前はフォルダーに付けられません。"
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "“.”で始まるフォルダーは隠しフォルダーになります。"
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "その名前のファイルかフォルダーがすでに存在します。"
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "デスクトップアイコンのサイズ"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "小さい"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "標準"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "大きい"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "ホームフォルダーをデスクトップに表示する"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "ゴミ箱をデスクトップに表示する"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "マウントしたドライブをデスクトップに表示する"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "新しいフォルダー"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "新しいドキュメント"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "貼り付け"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "元に戻す"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "やり直す"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "“ファイル”でデスクトップを表示"
+
+#: desktopGrid.js:355 fileItem.js:721
+msgid "Open in Terminal"
+msgstr "端末で開く"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "背景を変更…"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "ディスプレイの設定"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "設定"
+
+#: desktopGrid.js:692
+msgid "Rename"
+msgstr "名前を変更"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "コマンドが見つかりませんでした"
+
+#. TRANSLATORS: %s is the filesystem name
+#: desktopIconsUtil.js:162
+#, javascript-format
+msgid "Ejecting drive “%s” failed:"
+msgstr "“%s”の取り出しに失敗しました:"
+
+#: fileItem.js:584
+msgid "Dont Allow Launching"
+msgstr "起動を許可しない"
+
+#: fileItem.js:586
+msgid "Allow Launching"
+msgstr "起動を許可する"
+
+#: fileItem.js:682
+msgid "Open"
+msgstr "開く"
+
+#: fileItem.js:686
+msgid "Open With Other Application"
+msgstr "別のアプリケーションで開く"
+
+#: fileItem.js:688
+msgid "Launch using Dedicated Graphics Card"
+msgstr "専用のグラフィックカードを使用して起動"
+
+#: fileItem.js:693
+msgid "Cut"
+msgstr "切り取り"
+
+#: fileItem.js:694
+msgid "Copy"
+msgstr "コピー"
+
+#: fileItem.js:696
+msgid "Rename…"
+msgstr "名前を変更…"
+
+#: fileItem.js:697
+msgid "Move to Trash"
+msgstr "ゴミ箱へ移動する"
+
+#: fileItem.js:707
+msgid "Empty Trash"
+msgstr "ゴミ箱を空にする"
+
+#: fileItem.js:711
+msgid "Eject"
+msgstr "取り出す"
+
+#: fileItem.js:717
+msgid "Properties"
+msgstr "プロパティ"
+
+#: fileItem.js:719
+msgid "Show in Files"
+msgstr "“ファイル”で表示"
+
+#: fileItem.js:925
+msgid "Home"
+msgstr "ホーム"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "アイコンサイズ"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "デスクトップのアイコンサイズを設定します。"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "ホームフォルダーを表示する"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "デスクトップにホームフォルダーを表示します。"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "ゴミ箱アイコンを表示する"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "デスクトップにゴミ箱のアイコンを表示します。"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "マウントしたドライブを表示する"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "デスクトップにマウントしたドライブを表示します。"
diff --git a/extensions/desktop-icons/po/kab.po b/extensions/desktop-icons/po/kab.po
new file mode 100644
index 00000000..232728ae
--- /dev/null
+++ b/extensions/desktop-icons/po/kab.po
@@ -0,0 +1,222 @@
+# 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 <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2021-03-28 17:45+0000\n"
+"PO-Revision-Date: 2021-04-03 21:21+0100\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.4.2\n"
+"Last-Translator: Slimane Selyan Amiri <selyan.kab@protonmail.com>\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Language: kab\n"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Isem n ukaram amaynut"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "Rnu"
+
+#: createFolderDialog.js:74
+msgid "Cancel"
+msgstr "Sefsex"
+
+#: createFolderDialog.js:147
+msgid "Folder names cannot contain “/”."
+msgstr "Isem n ukaram ur izmir ara ad igber “/”."
+
+#: createFolderDialog.js:150
+msgid "A folder cannot be called “.”."
+msgstr "Isem n ukaram ur izmir ara ad yili “.”."
+
+#: createFolderDialog.js:153
+msgid "A folder cannot be called “..”."
+msgstr "Isem n ukaram ur izmir ara ad yili “..”."
+
+#: createFolderDialog.js:155
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Ikaramen s “.” di tazwara n yisem-nsen ttwafren."
+
+#: createFolderDialog.js:157
+msgid "There is already a file or folder with that name."
+msgstr "Akaram s yisem-agi yella yakan."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Tuɣzi n tegnitin n tnarit"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Meẓẓi"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Anaway"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Meqqer"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Sken akaram udmawan deg tnarit"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Sken tignit n tqecwalt deg tnarit"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Sken iḍebsiyen irekben deg tnarit"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Akaram amaynut"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Isemli amaynut"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Senṭeḍ"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Err-d"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Uɣal"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Sken-d tanarit deg ifuyla"
+
+#: desktopGrid.js:355 fileItem.js:726
+msgid "Open in Terminal"
+msgstr "Ldi deg unneftaɣ"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Beddel agilal…"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Iɣewwaren n uskan"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Iɣewwaṛen"
+
+#: desktopGrid.js:699
+msgid "Rename"
+msgstr "Beddel isem"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Ulac taladna"
+
+#. TRANSLATORS: %s is the filesystem name
+#: desktopIconsUtil.js:162
+#, javascript-format
+msgid "Ejecting drive “%s” failed:"
+msgstr "Aḍegger n uḍebsi “%s” ur yeddi ara:"
+
+#: fileItem.js:589
+msgid "Dont Allow Launching"
+msgstr "Ur sirig ara asenker"
+
+#: fileItem.js:591
+msgid "Allow Launching"
+msgstr "Sireg asenker"
+
+#: fileItem.js:687
+msgid "Open"
+msgstr "Ldi"
+
+#: fileItem.js:691
+msgid "Open With Other Application"
+msgstr "Ldi s usnas-nniḍen"
+
+#: fileItem.js:693
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Sker s useqdec n tkarḍa tudlift ittwaHerzen"
+
+#: fileItem.js:698
+msgid "Cut"
+msgstr "Gzem"
+
+#: fileItem.js:699
+msgid "Copy"
+msgstr "Nɣel"
+
+#: fileItem.js:701
+msgid "Rename…"
+msgstr "Snifel isem…"
+
+#: fileItem.js:702
+msgid "Move to Trash"
+msgstr "Smutti ɣer tqecwalt"
+
+#: fileItem.js:712
+msgid "Empty Trash"
+msgstr "Ḍeggeṛ iḍumman"
+
+#: fileItem.js:716
+msgid "Eject"
+msgstr "Ḍeqqer-d"
+
+#: fileItem.js:722
+msgid "Properties"
+msgstr "Tulmisin"
+
+#: fileItem.js:724
+msgid "Show in Files"
+msgstr "Sken deg ifulay"
+
+#: fileItem.js:951
+msgid "Home"
+msgstr "Asnubeg"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Tuɣzi n tignit"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Sbadu tuɣzi n tegnitin n tnarit."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Sken akaram udmawan"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Sken akaram udmawan deg tnarit."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Sken tignit n tqecwalt"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Sken tignit n tqecwalt deg tnarit."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Sken iḍebsiyen irekben"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Sken iḍebsiyen irekben deg tnarit."
diff --git a/extensions/desktop-icons/po/ko.po b/extensions/desktop-icons/po/ko.po
new file mode 100644
index 00000000..da87e2b1
--- /dev/null
+++ b/extensions/desktop-icons/po/ko.po
@@ -0,0 +1,223 @@
+# Korean translation for desktop-icons.
+# Copyright (C) 2021 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+# Kuroe Hanako <kmj10727@gmail.com>, 2021.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2021-03-17 02:05+0000\n"
+"PO-Revision-Date: 2021-03-28 13:11+0900\n"
+"Last-Translator: Kuroe Hanako <kmj10727@gmail.com>\n"
+"Language-Team: Korean <kmj10727@gmail.com>\n"
+"Language: ko\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"X-Generator: Gtranslator 3.36.0\n"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "새 폴더 이름"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "만들기"
+
+#: createFolderDialog.js:74
+msgid "Cancel"
+msgstr "취소"
+
+#: createFolderDialog.js:147
+msgid "Folder names cannot contain “/”."
+msgstr "폴더 이름에는 \"/\"가 들어갈 수 없습니다."
+
+#: createFolderDialog.js:150
+msgid "A folder cannot be called “.”."
+msgstr "폴더 이름은 \".\"이 될 수 없습니다."
+
+#: createFolderDialog.js:153
+msgid "A folder cannot be called “..”."
+msgstr "폴더 이름은 \"..\"이 될 수 없습니다."
+
+#: createFolderDialog.js:155
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "폴더 이름이 \".\"으로 시작하면 폴더가 숨겨집니다."
+
+#: createFolderDialog.js:157
+msgid "There is already a file or folder with that name."
+msgstr "같은 이름의 폴더가 이미 있습니다."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "바탕 화면 아이콘 크기"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "작게"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "보통"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "크게"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "사용자 폴더를 바탕 화면에 표시"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "휴지통 아이콘을 바탕 화면에 표시"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "마운트된 드라이브를 바탕 화면에 표시"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "새 폴더"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "새 문서"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "붙여넣기"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "실행 취소"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "다시 실행"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "파일에서 바탕 화면 보기"
+
+#: desktopGrid.js:355 fileItem.js:726
+msgid "Open in Terminal"
+msgstr "터미널에서 열기"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "배경 바꾸기…"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "디스플레이 설정"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "설정"
+
+#: desktopGrid.js:699
+msgid "Rename"
+msgstr "이름 바꾸기"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "명령을 찾을 수 없음"
+
+#. TRANSLATORS: %s is the filesystem name
+#: desktopIconsUtil.js:162
+#, javascript-format
+msgid "Ejecting drive “%s” failed:"
+msgstr "\"%s\" 드라이브를 꺼내는 데 실패했습니다:"
+
+#: fileItem.js:589
+msgid "Dont Allow Launching"
+msgstr "실행 허용하지 않음"
+
+#: fileItem.js:591
+msgid "Allow Launching"
+msgstr "실행 허용"
+
+#: fileItem.js:687
+msgid "Open"
+msgstr "열기"
+
+#: fileItem.js:691
+msgid "Open With Other Application"
+msgstr "다른 프로그램으로 열기"
+
+#: fileItem.js:693
+msgid "Launch using Dedicated Graphics Card"
+msgstr "전용 그래픽 카드로 실행"
+
+#: fileItem.js:698
+msgid "Cut"
+msgstr "잘라내기"
+
+#: fileItem.js:699
+msgid "Copy"
+msgstr "복사"
+
+#: fileItem.js:701
+msgid "Rename…"
+msgstr "이름 바꾸기…"
+
+#: fileItem.js:702
+msgid "Move to Trash"
+msgstr "휴지통에 버리기"
+
+#: fileItem.js:712
+msgid "Empty Trash"
+msgstr "휴지통 비우기"
+
+#: fileItem.js:716
+msgid "Eject"
+msgstr "꺼내기"
+
+#: fileItem.js:722
+msgid "Properties"
+msgstr "속성"
+
+#: fileItem.js:724
+msgid "Show in Files"
+msgstr "파일에서 보기"
+
+#: fileItem.js:951
+msgid "Home"
+msgstr "홈"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "아이콘 크기"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "바탕 화면의 아이콘 크기를 설정합니다."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "사용자 폴더 표시"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "바탕 화면에 사용자 폴더를 표시합니다."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "휴지통 아이콘 표시"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "바탕 화면에 휴지통 아이콘을 표시합니다."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "마운트된 드라이브 표시"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "바탕 화면에 마운트된 드라이브를 표시합니다."
diff --git a/extensions/desktop-icons/po/meson.build b/extensions/desktop-icons/po/meson.build
new file mode 100644
index 00000000..b2e9e422
--- /dev/null
+++ b/extensions/desktop-icons/po/meson.build
@@ -0,0 +1 @@
+i18n.gettext (meson.project_name (), preset: 'glib')
diff --git a/extensions/desktop-icons/po/nl.po b/extensions/desktop-icons/po/nl.po
new file mode 100644
index 00000000..86deae6f
--- /dev/null
+++ b/extensions/desktop-icons/po/nl.po
@@ -0,0 +1,228 @@
+# Dutch translation for desktop-icons.
+# Copyright (C) 2019 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Nathan Follens <nthn@unseen.is>, 2019-2020.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-05-26 20:08+0000\n"
+"PO-Revision-Date: 2020-08-25 21:34+0200\n"
+"Last-Translator: Nathan Follens <nthn@unseen.is>\n"
+"Language-Team: Dutch <gnome-nl-list@gnome.org>\n"
+"Language: nl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 2.4.1\n"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Nieuwe mapnaam"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Aanmaken"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Mapnamen kunnen geen / bevatten."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Een map kan niet . worden genoemd."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Een map kan niet .. worden genoemd."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Mappen waarvan de naam begint met . zijn verborgen."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Er bestaat al een bestand of map met die naam."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Grootte van bureaubladpictogrammen"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Klein"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Standaard"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Groot"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Toon de persoonlijke map op het bureaublad"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Toon het prullenbakpictogram op het bureaublad"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Gekoppelde volumes tonen op het bureaublad"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Nieuwe map"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Nieuw document"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Plakken"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Ongedaan maken"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Opnieuw"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Bureaublad tonen in Bestanden"
+
+#: desktopGrid.js:355 fileItem.js:721
+msgid "Open in Terminal"
+msgstr "Openen in terminalvenster"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Achtergrond aanpassen…"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Scherminstellingen"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Instellingen"
+
+#: desktopGrid.js:692
+msgid "Rename"
+msgstr "Hernoemen"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Opdracht niet gevonden"
+
+#. TRANSLATORS: %s is the filesystem name
+#: desktopIconsUtil.js:162
+#, javascript-format
+msgid "Ejecting drive “%s” failed:"
+msgstr "Uitwerpen van station %s mislukt:"
+
+#: fileItem.js:584
+msgid "Dont Allow Launching"
+msgstr "Toepassingen starten niet toestaan"
+
+#: fileItem.js:586
+msgid "Allow Launching"
+msgstr "Toepassingen starten toestaan"
+
+#: fileItem.js:682
+msgid "Open"
+msgstr "Openen"
+
+#: fileItem.js:686
+msgid "Open With Other Application"
+msgstr "Met andere toepassing openen"
+
+#: fileItem.js:688
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Met grafische kaart opstarten"
+
+#: fileItem.js:693
+msgid "Cut"
+msgstr "Knippen"
+
+#: fileItem.js:694
+msgid "Copy"
+msgstr "Kopiëren"
+
+#: fileItem.js:696
+msgid "Rename…"
+msgstr "Hernoemen…"
+
+#: fileItem.js:697
+msgid "Move to Trash"
+msgstr "Verplaatsen naar prullenbak"
+
+#: fileItem.js:707
+msgid "Empty Trash"
+msgstr "Prullenbak legen"
+
+#: fileItem.js:711
+msgid "Eject"
+msgstr "Uitwerpen"
+
+#: fileItem.js:717
+msgid "Properties"
+msgstr "Eigenschappen"
+
+#: fileItem.js:719
+msgid "Show in Files"
+msgstr "Tonen in Bestanden"
+
+#: fileItem.js:925
+msgid "Home"
+msgstr "Persoonlijke map"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Pictogramgrootte"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Stel de grootte van de bureaubladpictogrammen in."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Persoonlijke map tonen"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Toon de persoonlijke map op het bureaublad."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Prullenbakpictogram tonen"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Toon het prullenbakpictogram op het bureaublad."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Gekoppelde volumes tonen"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Gekoppelde volumes tonen op het bureaublad."
+
+#~ msgid "Enter file name…"
+#~ msgstr "Voer bestandsnaam in…"
+
+#~ msgid "OK"
+#~ msgstr "Oké"
diff --git a/extensions/desktop-icons/po/oc.po b/extensions/desktop-icons/po/oc.po
new file mode 100644
index 00000000..9be20f48
--- /dev/null
+++ b/extensions/desktop-icons/po/oc.po
@@ -0,0 +1,221 @@
+# 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 <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2021-03-28 17:45+0000\n"
+"PO-Revision-Date: 2021-04-02 20:01+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.4.2\n"
+"Last-Translator: Quentin PAGÈS\n"
+"Language: oc\n"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Nom de dossièr novèl"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "Crear"
+
+#: createFolderDialog.js:74
+msgid "Cancel"
+msgstr "Anullar"
+
+#: createFolderDialog.js:147
+msgid "Folder names cannot contain “/”."
+msgstr "Los noms de dossièrs pòdon pas conténer « / »."
+
+#: createFolderDialog.js:150
+msgid "A folder cannot be called “.”."
+msgstr "Impossible d'apelar un dossièr « . »."
+
+#: createFolderDialog.js:153
+msgid "A folder cannot be called “..”."
+msgstr "Impossible d'apelar un dossièr « .. »."
+
+#: createFolderDialog.js:155
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Los dossièrs amb un « . » a la debuta de lor nom son amagats"
+
+#: createFolderDialog.js:157
+msgid "There is already a file or folder with that name."
+msgstr "Un fichièr o un dossièr amb aqueste nom existís ja."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Talha de las icònas burèu"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Pichon"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Estandard"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Grand"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Mostrar lo dorsièr personal pel burèu"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Mostrar l'icòna de l'escobilhièr pel burèu"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Mostrar los volums montats pel burèu"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Dossièr novèl"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Document novèl"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Pegar"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Restablir"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Restablir"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Mostrar lo burèu dins Fichièrs"
+
+#: desktopGrid.js:355 fileItem.js:726
+msgid "Open in Terminal"
+msgstr "Dobrir dins un terminal"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Modificar lo rèireplan…"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Paramètres d'afichatge"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Paramètres"
+
+#: desktopGrid.js:699
+msgid "Rename"
+msgstr "Renomenar"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Comanda pas trobada"
+
+#. TRANSLATORS: %s is the filesystem name
+#: desktopIconsUtil.js:162
+#, javascript-format
+msgid "Ejecting drive “%s” failed:"
+msgstr "L'ejeccion del disc « %s » a fracassat :"
+
+#: fileItem.js:589
+msgid "Dont Allow Launching"
+msgstr "Permetre pas l'aviada"
+
+#: fileItem.js:591
+msgid "Allow Launching"
+msgstr "Permetre l'aviada"
+
+#: fileItem.js:687
+msgid "Open"
+msgstr "Dobrir"
+
+#: fileItem.js:691
+msgid "Open With Other Application"
+msgstr "Dobrir amb una autra aplicacion"
+
+#: fileItem.js:693
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Aviar en utilizant la carta grafica dedicada"
+
+#: fileItem.js:698
+msgid "Cut"
+msgstr "Talhar"
+
+#: fileItem.js:699
+msgid "Copy"
+msgstr "Copiar"
+
+#: fileItem.js:701
+msgid "Rename…"
+msgstr "Renomenar…"
+
+#: fileItem.js:702
+msgid "Move to Trash"
+msgstr "Desplaçar a l_escobilhièr"
+
+#: fileItem.js:712
+msgid "Empty Trash"
+msgstr "Voidar lescobilhièr"
+
+#: fileItem.js:716
+msgid "Eject"
+msgstr "Ejectar"
+
+#: fileItem.js:722
+msgid "Properties"
+msgstr "Proprietats"
+
+#: fileItem.js:724
+msgid "Show in Files"
+msgstr "Mostrar dins Fichièrs"
+
+#: fileItem.js:951
+msgid "Home"
+msgstr "Repertòri personal"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Talha de l'icòna"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Definir la talha de las icònas burèu."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Mostrar lo dorsièr personal"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Mostrar lo dorsièr personal pel burèu."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Mostrar l'icòna de l'escobilhièr"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Mostrar l'icòna de l'escobilhièr pel burèu."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Mostrar los lectors montats"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Mostrar los lector montats pel burèu."
diff --git a/extensions/desktop-icons/po/pl.po b/extensions/desktop-icons/po/pl.po
new file mode 100644
index 00000000..feffa267
--- /dev/null
+++ b/extensions/desktop-icons/po/pl.po
@@ -0,0 +1,223 @@
+# Polish translation for desktop-icons.
+# Copyright © 2018-2020 the desktop-icons authors.
+# This file is distributed under the same license as the desktop-icons package.
+# Piotr Drąg <piotrdrag@gmail.com>, 2018-2020.
+# Aviary.pl <community-poland@mozilla.org>, 2018-2020.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-05-26 20:08+0000\n"
+"PO-Revision-Date: 2020-05-31 14:15+0200\n"
+"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
+"Language-Team: Polish <community-poland@mozilla.org>\n"
+"Language: pl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2);\n"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Nazwa nowego katalogu"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Utwórz"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Anuluj"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Nazwy katalogów nie mogą zawierać znaku „/”."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Katalog nie może mieć nazwy „.”."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Katalog nie może mieć nazwy „..”."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Katalogi z „.” na początku nazwy są ukryte."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Plik lub katalog o tej nazwie już istnieje."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Rozmiar ikon na pulpicie"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Mały"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Standardowy"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Duży"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Katalog domowy na pulpicie"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Kosz na pulpicie"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Zamontowane napędy na pulpicie"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Nowy katalog"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Nowy dokument"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Wklej"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Cofnij"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Ponów"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Wyświetl pulpit w menedżerze plików"
+
+#: desktopGrid.js:355 fileItem.js:721
+msgid "Open in Terminal"
+msgstr "Otwórz w terminalu"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Zmień tło…"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Ustawienia ekranu"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Ustawienia"
+
+#: desktopGrid.js:692
+msgid "Rename"
+msgstr "Zmień nazwę"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Nie odnaleziono polecenia"
+
+#. TRANSLATORS: %s is the filesystem name
+#: desktopIconsUtil.js:162
+#, javascript-format
+msgid "Ejecting drive “%s” failed:"
+msgstr "Wysunięcie napędu „%s” się nie powiodło:"
+
+#: fileItem.js:584
+msgid "Dont Allow Launching"
+msgstr "Nie zezwalaj na uruchamianie"
+
+#: fileItem.js:586
+msgid "Allow Launching"
+msgstr "Zezwól na uruchamianie"
+
+#: fileItem.js:682
+msgid "Open"
+msgstr "Otwórz"
+
+#: fileItem.js:686
+msgid "Open With Other Application"
+msgstr "Otwórz za pomocą innego programu"
+
+#: fileItem.js:688
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Uruchom za pomocą dedykowanej karty graficznej"
+
+#: fileItem.js:693
+msgid "Cut"
+msgstr "Wytnij"
+
+#: fileItem.js:694
+msgid "Copy"
+msgstr "Skopiuj"
+
+#: fileItem.js:696
+msgid "Rename…"
+msgstr "Zmień nazwę…"
+
+#: fileItem.js:697
+msgid "Move to Trash"
+msgstr "Przenieś do kosza"
+
+#: fileItem.js:707
+msgid "Empty Trash"
+msgstr "Opróżnij kosz"
+
+#: fileItem.js:711
+msgid "Eject"
+msgstr "Wysuń"
+
+#: fileItem.js:717
+msgid "Properties"
+msgstr "Właściwości"
+
+#: fileItem.js:719
+msgid "Show in Files"
+msgstr "Wyświetl w menedżerze plików"
+
+#: fileItem.js:925
+msgid "Home"
+msgstr "Katalog domowy"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Rozmiar ikon"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Ustawia rozmiar ikon na pulpicie."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Katalog domowy"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Wyświetla katalog domowy na pulpicie."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Kosz"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Wyświetla kosz na pulpicie."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Zamontowane napędy"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Wyświetla zamontowane napędy na pulpicie."
diff --git a/extensions/desktop-icons/po/pt.po b/extensions/desktop-icons/po/pt.po
new file mode 100644
index 00000000..3faf722f
--- /dev/null
+++ b/extensions/desktop-icons/po/pt.po
@@ -0,0 +1,222 @@
+# Portuguese translation for desktop-icons.
+# Copyright (C) 2021 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Hugo Carvalho <hugokarvalho@hotmail.com>, 2021.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2021-02-03 06:55+0000\n"
+"PO-Revision-Date: 2021-02-24 20:34+0000\n"
+"Language-Team: Portuguese <pt@li.org>\n"
+"Language: pt\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"
+"Last-Translator: Hugo Carvalho <hugokarvalho@hotmail.com>\n"
+"X-Generator: Poedit 2.4.1\n"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Novo nome de pasta"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "Criar"
+
+#: createFolderDialog.js:74
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: createFolderDialog.js:147
+msgid "Folder names cannot contain “/”."
+msgstr "Nomes de pastas não podem conter “/”."
+
+#: createFolderDialog.js:150
+msgid "A folder cannot be called “.”."
+msgstr "Uma pasta não pode ser chamada de “.”."
+
+#: createFolderDialog.js:153
+msgid "A folder cannot be called “..”."
+msgstr "Uma pasta não pode ser chamada de “..”."
+
+#: createFolderDialog.js:155
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Pastas com “.” no começo de seus nomes são ocultas."
+
+#: createFolderDialog.js:157
+msgid "There is already a file or folder with that name."
+msgstr "Já existe um ficheiro ou uma pasta com esse nome."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Tamanho para os ícones do ambiente de trabalho"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Pequeno"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Padrão"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Grande"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Mostrar a pasta pessoal no ambiente de trabalho"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Mostrar o ícone do lixo no ambiente de trabalho"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Mostrar as unidades montadas na área de trabalho"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Nova pasta"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Novo documento"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Colar"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Anular"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Refazer"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Mostrar o ambiente de trabalho em Ficheiros"
+
+#: desktopGrid.js:355 fileItem.js:726
+msgid "Open in Terminal"
+msgstr "Abrir no Terminal"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Alterar o fundo…"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Definições de ecrã"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Definições"
+
+#: desktopGrid.js:699
+msgid "Rename"
+msgstr "Renomear"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Comando não encontrado"
+
+#. TRANSLATORS: %s is the filesystem name
+#: desktopIconsUtil.js:162
+#, javascript-format
+msgid "Ejecting drive “%s” failed:"
+msgstr "A ejeção da unidade “%s” falhou:"
+
+#: fileItem.js:589
+msgid "Dont Allow Launching"
+msgstr "Não permitir iniciar"
+
+#: fileItem.js:591
+msgid "Allow Launching"
+msgstr "Permitir iniciar"
+
+#: fileItem.js:687
+msgid "Open"
+msgstr "Abrir"
+
+#: fileItem.js:691
+msgid "Open With Other Application"
+msgstr "Abrir com outra aplicação"
+
+#: fileItem.js:693
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Iniciar utilizando a placa gráfica dedicada"
+
+#: fileItem.js:698
+msgid "Cut"
+msgstr "Cortar"
+
+#: fileItem.js:699
+msgid "Copy"
+msgstr "Copiar"
+
+#: fileItem.js:701
+msgid "Rename…"
+msgstr "Renomear…"
+
+#: fileItem.js:702
+msgid "Move to Trash"
+msgstr "Mover para o lixo"
+
+#: fileItem.js:712
+msgid "Empty Trash"
+msgstr "Esvaziar lixo"
+
+#: fileItem.js:716
+msgid "Eject"
+msgstr "Ejetar"
+
+#: fileItem.js:722
+msgid "Properties"
+msgstr "Propriedades"
+
+#: fileItem.js:724
+msgid "Show in Files"
+msgstr "Mostrar no Ficheiros"
+
+#: fileItem.js:951
+msgid "Home"
+msgstr "Início"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Tamanho do ícone"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Define o tamanho para os ícones do ambiente de trabalho."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Mostrar pasta pessoal"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Mostra a pasta pessoal no ambiente de trabalho."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Mostrar ícone do lixo"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Mostra o ícone do lixo no ambiente de trabalho."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Mostrar unidades montadas"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Mostra as unidades montadas no ambiente de trabalho."
diff --git a/extensions/desktop-icons/po/pt_BR.po b/extensions/desktop-icons/po/pt_BR.po
new file mode 100644
index 00000000..e8bf0940
--- /dev/null
+++ b/extensions/desktop-icons/po/pt_BR.po
@@ -0,0 +1,235 @@
+# Brazilian Portuguese translation for desktop-icons.
+# Copyright (C) 2020 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Enrico Nicoletto <liverig@gmail.com>, 2018.
+# Rafael Fontenelle <rafaelff@gnome.org>, 2018-2020.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-05-26 20:08+0000\n"
+"PO-Revision-Date: 2020-05-28 18:35-0300\n"
+"Last-Translator: Rafael Fontenelle <rafaelff@gnome.org>\n"
+"Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n"
+"Language: pt_BR\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1)\n"
+"X-Generator: Gtranslator 3.36.0\n"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Nome da nova pasta"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Criar"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Nomes de pastas não podem conter “/”."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Uma pasta não pode ser chamada “.”."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Uma pasta não pode ser chamada “..”."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Pastas com “.” no começo de seus nomes são ocultas."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Já existe um arquivo ou uma pasta com esse nome."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Tamanho para os ícones da área de trabalho"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Pequeno"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Padrão"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Grande"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Mostrar a pasta pessoal na área de trabalho"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Mostrar o ícone da lixeira na área de trabalho"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Mostrar as unidades montadas na área de trabalho"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Nova pasta"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Novo documento"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Colar"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Desfazer"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Refazer"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Mostrar a área de trabalho no Arquivos"
+
+#: desktopGrid.js:355 fileItem.js:721
+msgid "Open in Terminal"
+msgstr "Abrir no terminal"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Alterar plano de fundo…"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Configurações de exibição"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Configurações"
+
+#: desktopGrid.js:692
+msgid "Rename"
+msgstr "Renomear"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Comando não encontrado"
+
+#. TRANSLATORS: %s is the filesystem name
+#: desktopIconsUtil.js:162
+#, javascript-format
+msgid "Ejecting drive “%s” failed:"
+msgstr "A ejeção a unidade “%s” falhou:"
+
+#: fileItem.js:584
+msgid "Dont Allow Launching"
+msgstr "Não permitir iniciar"
+
+#: fileItem.js:586
+msgid "Allow Launching"
+msgstr "Permitir iniciar"
+
+#: fileItem.js:682
+msgid "Open"
+msgstr "Abrir"
+
+#: fileItem.js:686
+msgid "Open With Other Application"
+msgstr "Abrir com outro aplicativo"
+
+#: fileItem.js:688
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Iniciar usando placa gráfica dedicada"
+
+#: fileItem.js:693
+msgid "Cut"
+msgstr "Recortar"
+
+#: fileItem.js:694
+msgid "Copy"
+msgstr "Copiar"
+
+#: fileItem.js:696
+msgid "Rename…"
+msgstr "Renomear…"
+
+#: fileItem.js:697
+msgid "Move to Trash"
+msgstr "Mover para a lixeira"
+
+#: fileItem.js:707
+msgid "Empty Trash"
+msgstr "Esvaziar lixeira"
+
+#: fileItem.js:711
+msgid "Eject"
+msgstr "Ejetar"
+
+#: fileItem.js:717
+msgid "Properties"
+msgstr "Propriedades"
+
+#: fileItem.js:719
+msgid "Show in Files"
+msgstr "Mostrar no Arquivos"
+
+#: fileItem.js:925
+msgid "Home"
+msgstr "Home"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Tamanho do ícone"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Define o tamanho para os ícones da área de trabalho."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Mostrar pasta pessoal"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Mostra a pasta pessoal na área de trabalho."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Mostrar ícone da lixeira"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Mostra o ícone da lixeira na área de trabalho."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Mostrar unidades montadas"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Mostra as unidades montadas na área de trabalho."
+
+#~ msgid "Enter file name…"
+#~ msgstr "Insira um nome de arquivo…"
+
+#~ msgid "OK"
+#~ msgstr "OK"
+
+#~ msgid "Huge"
+#~ msgstr "Enorme"
+
+#~ msgid "Ok"
+#~ msgstr "Ok"
diff --git a/extensions/desktop-icons/po/ro.po b/extensions/desktop-icons/po/ro.po
new file mode 100644
index 00000000..b290b89d
--- /dev/null
+++ b/extensions/desktop-icons/po/ro.po
@@ -0,0 +1,223 @@
+# Romanian translation for desktop-icons.
+# Copyright (C) 2020 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Florentina Mușat <emryslokadottir@gmail.com>, 2020.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-05-26 20:08+0000\n"
+"PO-Revision-Date: 2020-06-06 12:24+0300\n"
+"Last-Translator: Florentina Mușat <emryslokadottir [at] gmail [dot] com>\n"
+"Language-Team: Romanian <gnomero-list@lists.sourceforge.net>\n"
+"Language: ro\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
+"20)) ? 1 : 2);;\n"
+"X-Generator: Poedit 2.3.1\n"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Nume nou de fișier"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Creează"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Anulează"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Numele dosarelor nu pot conține „/”."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Un dosar nu poate fi numit „.”."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Un dosar nu poate fi numit „..”."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Dosarele cu „.” la începutul numelui sunt ascunse."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Există deja un fișier sau doar cu acel nume."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Dimensiunea pentru iconițele desktopului"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Mic"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Standard"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Mare"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Arată dosarul personal pe desktop"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Arată iconița gunoiului pe desktop"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Arată dispozitivele montate pe desktop"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Dosar nou"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Document nou"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Lipește"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Refă"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Repetă"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Aratată Desktopul în Fișiere"
+
+#: desktopGrid.js:355 fileItem.js:721
+msgid "Open in Terminal"
+msgstr "Deschide în Terminal"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Schimbă fundalul…"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Configurări afișaj"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Configurări"
+
+#: desktopGrid.js:692
+msgid "Rename"
+msgstr "Redenumește"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Comanda nu a fost găsită"
+
+#. TRANSLATORS: %s is the filesystem name
+#: desktopIconsUtil.js:162
+#, javascript-format
+msgid "Ejecting drive “%s” failed:"
+msgstr "Scoaterea unității „%s” a eșuat:"
+
+#: fileItem.js:584
+msgid "Dont Allow Launching"
+msgstr "Nu permite lansarea"
+
+#: fileItem.js:586
+msgid "Allow Launching"
+msgstr "Permite lansarea"
+
+#: fileItem.js:682
+msgid "Open"
+msgstr "Deschide"
+
+#: fileItem.js:686
+msgid "Open With Other Application"
+msgstr "Deschide cu altă aplicație"
+
+#: fileItem.js:688
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Lansează folosind placa grafică dedicată"
+
+#: fileItem.js:693
+msgid "Cut"
+msgstr "Taie"
+
+#: fileItem.js:694
+msgid "Copy"
+msgstr "Copiază"
+
+#: fileItem.js:696
+msgid "Rename…"
+msgstr "Redenumește…"
+
+#: fileItem.js:697
+msgid "Move to Trash"
+msgstr "Mută la gunoi"
+
+#: fileItem.js:707
+msgid "Empty Trash"
+msgstr "Golește gunoiul"
+
+#: fileItem.js:711
+msgid "Eject"
+msgstr "Ejectează"
+
+#: fileItem.js:717
+msgid "Properties"
+msgstr "Proprietăți"
+
+#: fileItem.js:719
+msgid "Show in Files"
+msgstr "Arată în Fișiere"
+
+#: fileItem.js:925
+msgid "Home"
+msgstr "Acasă"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Dimensiune iconiță"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Stabilește dimensiunea pentru iconițele desktopului."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Arată dosarul personal"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Arată dosarul personal pe desktop."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Arată iconița gunoiului"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Arată iconița gunoiului pe deskop."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Arată dispozitivele montate"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Arată dispozitivele montate pe desktop."
diff --git a/extensions/desktop-icons/po/ru.po b/extensions/desktop-icons/po/ru.po
new file mode 100644
index 00000000..a373301c
--- /dev/null
+++ b/extensions/desktop-icons/po/ru.po
@@ -0,0 +1,197 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Eaglers <eaglersdeveloper@gmail.com>, 2018.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-04-05 21:12+0200\n"
+"PO-Revision-Date: 2020-04-06 22:29+0300\n"
+"Last-Translator: Stas Solovey <whats_up@tut.by>\n"
+"Language-Team: Russian <gnome-cyr@gnome.org>\n"
+"Language: ru\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Poedit 2.3\n"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Имя новой папки"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Создать"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Отмена"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Имена папок не могут содержать «/»."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Папка не может быть названа как «.»."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Папка не может быть названа как «..»."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Папки с точкой «.» в начале их имени скрываются."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Файл или папка с таким именем уже существует."
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Размер значков"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "Маленький"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "Стандартный"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "Большой"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Показывать домашнюю папку на рабочем столе"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Показывать «Корзину» на рабочем столе"
+
+#: desktopGrid.js:343
+msgid "New Folder"
+msgstr "Создать папку"
+
+#: desktopGrid.js:345
+msgid "Paste"
+msgstr "Вставить"
+
+#: desktopGrid.js:346
+msgid "Undo"
+msgstr "Отменить"
+
+#: desktopGrid.js:347
+msgid "Redo"
+msgstr "Повторить"
+
+#: desktopGrid.js:349
+msgid "Show Desktop in Files"
+msgstr "Показывать папку «Рабочий стол» в приложении «Файлы»"
+
+#: desktopGrid.js:350 fileItem.js:651
+msgid "Open in Terminal"
+msgstr "Открыть в терминале"
+
+#: desktopGrid.js:352
+msgid "Change Background…"
+msgstr "Изменить фон…"
+
+#: desktopGrid.js:354
+msgid "Display Settings"
+msgstr "Настройки дисплея"
+
+#: desktopGrid.js:355
+msgid "Settings"
+msgstr "Параметры"
+
+#: desktopGrid.js:653
+msgid "Rename"
+msgstr "Переименовать"
+
+#: desktopIconsUtil.js:61
+msgid "Command not found"
+msgstr "Команда не найдена"
+
+#: fileItem.js:521
+msgid "Dont Allow Launching"
+msgstr "Запретить запуск"
+
+#: fileItem.js:523
+msgid "Allow Launching"
+msgstr "Разрешить запуск"
+
+#: fileItem.js:619
+msgid "Open"
+msgstr "Открыть"
+
+#: fileItem.js:623
+msgid "Open With Other Application"
+msgstr "Открыть в другом приложении"
+
+#: fileItem.js:627
+msgid "Cut"
+msgstr "Вырезать"
+
+#: fileItem.js:628
+msgid "Copy"
+msgstr "Вставить"
+
+#: fileItem.js:630
+msgid "Rename…"
+msgstr "Переименовать…"
+
+#: fileItem.js:631
+msgid "Move to Trash"
+msgstr "Переместить в корзину"
+
+#: fileItem.js:641
+msgid "Empty Trash"
+msgstr "Очистить корзину"
+
+#: fileItem.js:647
+msgid "Properties"
+msgstr "Свойства"
+
+#: fileItem.js:649
+msgid "Show in Files"
+msgstr "Показать в «Файлах»"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Размер значков"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Установить размер значков рабочего стола."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Показывать домашнюю папку"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Показывать значок домашней папки на рабочем столе."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Показывать значок корзины"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Показывать значок корзины на рабочем столе."
+
+#~ msgid "Huge"
+#~ msgstr "Огромный"
+
+#~ msgid "Enter file name…"
+#~ msgstr "Ввести имя файла…"
+
+#~ msgid "Ok"
+#~ msgstr "ОК"
diff --git a/extensions/desktop-icons/po/sk.po b/extensions/desktop-icons/po/sk.po
new file mode 100644
index 00000000..a67f40cb
--- /dev/null
+++ b/extensions/desktop-icons/po/sk.po
@@ -0,0 +1,222 @@
+# Slovak translation for desktop-icons.
+# Copyright (C) 2020 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Dušan Kazik <prescott66@gmail.com>, 2020.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-09-05 22:22+0000\n"
+"PO-Revision-Date: 2020-09-06 18:40+0200\n"
+"Language-Team: Slovak <gnome-sk-list@gnome.org>\n"
+"Language: sk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n"
+"Last-Translator: Dušan Kazik <prescott66@gmail.com>\n"
+"X-Generator: Poedit 2.4.1\n"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Nový názov priečinka"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Vytvoriť"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Zrušiť"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Názvy priečinkov nemôžu obsahovať znak „/“."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Priečinok nemôže byť nazvaný „.“."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Priečinok nemôže byť nazvaný „..“."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Priečinky s názvami začínajúcimi znakom „.“ sú skryté."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Súbor alebo priečinok s týmto názvom už existuje."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Veľkosť ikon pracovnej plochy"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Malé"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Štandardné"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Veľké"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Zobraziť osobný priečinok na pracovnej ploche"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Zobraziť ikonu Koša na pracovnej ploche"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Zobraziť pripojené jednotky na pracovnej ploche"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Nový priečinok"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Nový dokument"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Vložiť"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Vráti späť"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Opakovať vrátené"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Zobraziť Plochu v aplikácii Súbory"
+
+#: desktopGrid.js:355 fileItem.js:723
+msgid "Open in Terminal"
+msgstr "Otvoriť v termináli"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Zmeniť pozadie…"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Nastavenia displejov"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Nastavenia"
+
+#: desktopGrid.js:699
+msgid "Rename"
+msgstr "Premenovanie"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Príkaz sa nenašiel"
+
+#. TRANSLATORS: %s is the filesystem name
+#: desktopIconsUtil.js:162
+#, javascript-format
+msgid "Ejecting drive “%s” failed:"
+msgstr "Zlyhalo vysúvanie jednotky „%s“:"
+
+#: fileItem.js:586
+msgid "Dont Allow Launching"
+msgstr "Neumožniť spúšťanie"
+
+#: fileItem.js:588
+msgid "Allow Launching"
+msgstr "Umožniť spúšťanie"
+
+#: fileItem.js:684
+msgid "Open"
+msgstr "Otvorené"
+
+#: fileItem.js:688
+msgid "Open With Other Application"
+msgstr "Otvoriť inou aplikáciou"
+
+#: fileItem.js:690
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Spustiť pomocou vyhradenej grafickej karty"
+
+#: fileItem.js:695
+msgid "Cut"
+msgstr "Vystrihnúť"
+
+#: fileItem.js:696
+msgid "Copy"
+msgstr "Skopíruje"
+
+#: fileItem.js:698
+msgid "Rename…"
+msgstr "Premenovať…"
+
+#: fileItem.js:699
+msgid "Move to Trash"
+msgstr "Presunúť do Koša"
+
+#: fileItem.js:709
+msgid "Empty Trash"
+msgstr "Vyprázdniť Kôš"
+
+#: fileItem.js:713
+msgid "Eject"
+msgstr "Vysunúť"
+
+#: fileItem.js:719
+msgid "Properties"
+msgstr "Vlastnosti"
+
+#: fileItem.js:721
+msgid "Show in Files"
+msgstr "Zobraziť v aplikácii Súbory"
+
+#: fileItem.js:927
+msgid "Home"
+msgstr "Domov"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Veľkosť ikon"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Nastaví veľkosť ikon na pracovnej ploche."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Zobraziť osobný priečinok"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Zobrazí osobný priečinok na pracovnej ploche."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Zobraziť ikonu Koša"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Zobrazí ikonu Koša na pracovnej ploche."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Zobraziť pripojené jednotky"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Zobrazí pripojené jednotky na pracovnej ploche."
diff --git a/extensions/desktop-icons/po/sl.po b/extensions/desktop-icons/po/sl.po
new file mode 100644
index 00000000..d8584147
--- /dev/null
+++ b/extensions/desktop-icons/po/sl.po
@@ -0,0 +1,227 @@
+# Slovenian translations for desktop-icons.
+# Copyright (C) 2018 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the atomix package.
+#
+# Matej Urbančič <mateju@svn.gnome.org>, + 2018.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-08-28 03:11+0000\n"
+"PO-Revision-Date: 2020-09-03 21:58+0200\n"
+"Last-Translator: \n"
+"Language-Team: Slovenian <gnome-si@googlegroups.com>\n"
+"Language: sl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n"
+"%100==4 ? 3 : 0);\n"
+"X-Generator: Poedit 2.3\n"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Ime nove mape"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Ustvari"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Prekliči"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Ime mape ne sme vsebovati poševnice » / «."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Mapa ne sme biti poimenovana » . «."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Mapa ne sme biti poimenovana » .. «."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Mape, katerih ime se začne s piko » . «, so skrite mape."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Mapa oziroma datoteka z enakim imenom že obstaja."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Velikost ikon namizja"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Majhne"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Običajne"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Velike"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Pokaži osebno mapo na namizju"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Pokaži smeti na namizju"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Pokaži priklopljene nosilce na namizju"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Nova mapa"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Nov dokument"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Prilepi"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Razveljavi"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Ponovno uveljavi"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Odpri Namizje v upravljalniku datotek"
+
+#: desktopGrid.js:355 fileItem.js:723
+msgid "Open in Terminal"
+msgstr "Odpri v terminalu"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Spremeni ozadje …"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Nastavitve zaslona"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Nastavitve"
+
+#: desktopGrid.js:699
+msgid "Rename"
+msgstr "Preimenuj"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Ukaza ni mogoče najti"
+
+#. TRANSLATORS: %s is the filesystem name
+#: desktopIconsUtil.js:162
+#, javascript-format
+msgid "Ejecting drive “%s” failed:"
+msgstr "Izmetavanje pogona »%s« je spodletelo:"
+
+#: fileItem.js:586
+msgid "Dont Allow Launching"
+msgstr "Ne dovoli zaganjanja"
+
+#: fileItem.js:588
+msgid "Allow Launching"
+msgstr "Dovoli zaganjanje"
+
+#: fileItem.js:684
+msgid "Open"
+msgstr "Odpri"
+
+#: fileItem.js:688
+msgid "Open With Other Application"
+msgstr "Odpri z drugim programom …"
+
+#: fileItem.js:690
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Zaženi z uporabo določene grafične kartice"
+
+#: fileItem.js:695
+msgid "Cut"
+msgstr "Izreži"
+
+#: fileItem.js:696
+msgid "Copy"
+msgstr "Kopiraj"
+
+#: fileItem.js:698
+msgid "Rename…"
+msgstr "Preimenuj …"
+
+#: fileItem.js:699
+msgid "Move to Trash"
+msgstr "Premakni v smeti"
+
+#: fileItem.js:709
+msgid "Empty Trash"
+msgstr "Izprazni smeti"
+
+#: fileItem.js:713
+msgid "Eject"
+msgstr "Izvrzi"
+
+#: fileItem.js:719
+msgid "Properties"
+msgstr "Lastnosti"
+
+#: fileItem.js:721
+msgid "Show in Files"
+msgstr "Pokaži v upravljalniku datotek"
+
+#: fileItem.js:927
+msgid "Home"
+msgstr "Na začetek"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Velikost ikon"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Nastavitev velikosti ikon na namizju."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Pokaži osebno mapo"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Pokaže ikono osebne mape na namizju."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Pokaži ikono smeti"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Pokaže ikono smeti na namizju."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Pokaži priklopljene nosilce"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Pokaži priklopljene nosilce na namizju."
+
+#~ msgid "Huge"
+#~ msgstr "Velikanske"
diff --git a/extensions/desktop-icons/po/sr.po b/extensions/desktop-icons/po/sr.po
new file mode 100644
index 00000000..82aeafc2
--- /dev/null
+++ b/extensions/desktop-icons/po/sr.po
@@ -0,0 +1,220 @@
+# Serbian translation for desktop-icons.
+# Copyright © 2021 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Мирослав Николић <miroslavnikolic@rocketmail.com>, 2021.
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/"
+"desktop-icons/issues\n"
+"POT-Creation-Date: 2021-01-27 22:42+0000\n"
+"PO-Revision-Date: 2021-02-02 07:23+0200\n"
+"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
+"Language-Team: српски <gnome-sr@googlegroups.org>\n"
+"Language: sr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Назив нове фасцикле"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "Направи"
+
+#: createFolderDialog.js:74
+msgid "Cancel"
+msgstr "Откажи"
+
+#: createFolderDialog.js:147
+msgid "Folder names cannot contain “/”."
+msgstr "Називи фасцикли не могу да садрже /."
+
+#: createFolderDialog.js:150
+msgid "A folder cannot be called “.”."
+msgstr "Фасцикла се не може звати „.“."
+
+#: createFolderDialog.js:153
+msgid "A folder cannot be called “..”."
+msgstr "Фасцикла се не може звати „..“."
+
+#: createFolderDialog.js:155
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Фасцикле са . на почетку назива су скривене."
+
+#: createFolderDialog.js:157
+msgid "There is already a file or folder with that name."
+msgstr "Већ постоји датотека или фасцикла са тим називом."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Величина за иконице радне површи"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Мала"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Обична"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Велика"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Прикажи личну фасциклу на радној површи"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Прикажи иконицу смећа на радној површи"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Прикажи прикачене уређаје на радној површи"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Нова фасцикла"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Нови документ"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Убаци"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Поништи"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Врати"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Прикажи радну површ у датотекама"
+
+#: desktopGrid.js:355 fileItem.js:726
+msgid "Open in Terminal"
+msgstr "Отвори у терминалу"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Измени позадину…"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Прикажи поставке"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Поставке"
+
+#: desktopGrid.js:699
+msgid "Rename"
+msgstr "Преименуј"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Нема такве наредбе"
+
+#. TRANSLATORS: %s is the filesystem name
+#: desktopIconsUtil.js:162
+#, javascript-format
+msgid "Ejecting drive “%s” failed:"
+msgstr "Избацивање уређаја „%s“ није успело:"
+
+#: fileItem.js:589
+msgid "Dont Allow Launching"
+msgstr "Не дозволи покретање"
+
+#: fileItem.js:591
+msgid "Allow Launching"
+msgstr "Дозволи покретање"
+
+#: fileItem.js:687
+msgid "Open"
+msgstr "Отвори"
+
+#: fileItem.js:691
+msgid "Open With Other Application"
+msgstr "Отвори другим програмом"
+
+#: fileItem.js:693
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Покрени користећи намењену графичку картицу"
+
+#: fileItem.js:698
+msgid "Cut"
+msgstr "Исеци"
+
+#: fileItem.js:699
+msgid "Copy"
+msgstr "Умножи"
+
+#: fileItem.js:701
+msgid "Rename…"
+msgstr "Преименуј…"
+
+#: fileItem.js:702
+msgid "Move to Trash"
+msgstr "Премести у смеће"
+
+#: fileItem.js:712
+msgid "Empty Trash"
+msgstr "Испразни смеће"
+
+#: fileItem.js:716
+msgid "Eject"
+msgstr "Избаци"
+
+#: fileItem.js:722
+msgid "Properties"
+msgstr "Својства"
+
+#: fileItem.js:724
+msgid "Show in Files"
+msgstr "Прикажи у Датотекама"
+
+#: fileItem.js:951
+msgid "Home"
+msgstr "Полазна"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Величина иконице"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Поставља величину за иконице радне површи."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Приказ личне фасцикле"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Приказује личну фасциклу на радној површи."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Приказ иконице смећа"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Приказује иконицу смећа на радној површи."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Приказ прикачених уређаја"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Приказује прикачене уређаје на радној површи."
diff --git a/extensions/desktop-icons/po/sv.po b/extensions/desktop-icons/po/sv.po
new file mode 100644
index 00000000..52461365
--- /dev/null
+++ b/extensions/desktop-icons/po/sv.po
@@ -0,0 +1,239 @@
+# Swedish translation for desktop-icons.
+# Copyright © 2018-2020 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Anders Jonsson <anders.jonsson@norsjovallen.se>, 2018, 2019, 2020.
+# Josef Andersson <l10nl18nsweja@gmail.com>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-05-26 20:08+0000\n"
+"PO-Revision-Date: 2020-05-27 01:14+0200\n"
+"Last-Translator: Anders Jonsson <anders.jonsson@norsjovallen.se>\n"
+"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
+"Language: sv\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 2.3.1\n"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Nytt mappnamn"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Skapa"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Mappnamn kan inte innehålla ”/”."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "En mapp kan inte kallas ”.”."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "En mapp kan inte kallas ”..”."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Mappar med ”.” i början på sitt namn är dolda."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Det finns redan en fil eller mapp med det namnet."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Storlek för skrivbordsikonerna"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Liten"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Standard"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Stor"
+
+# TODO: *ON* the desktop?
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Visa den personliga mappen på skrivbordet"
+
+# TODO: *ON* the desktop?
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Visa papperskorgsikonen på skrivbordet"
+
+# TODO: *ON* the desktop?
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Visa monterade enheter på skrivbordet"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Ny mapp"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Nytt dokument"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Klistra in"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Ångra"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Gör om"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Visa skrivbord i Filer"
+
+#: desktopGrid.js:355 fileItem.js:721
+msgid "Open in Terminal"
+msgstr "Öppna i terminal"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Ändra bakgrund…"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Visningsinställningar"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Inställningar"
+
+#: desktopGrid.js:692
+msgid "Rename"
+msgstr "Byt namn"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Kommandot hittades inte"
+
+#. TRANSLATORS: %s is the filesystem name
+#: desktopIconsUtil.js:162
+#, javascript-format
+msgid "Ejecting drive “%s” failed:"
+msgstr "Utmatning av enhet ”%s” misslyckades:"
+
+#: fileItem.js:584
+msgid "Dont Allow Launching"
+msgstr "Tillåt ej programstart"
+
+#: fileItem.js:586
+msgid "Allow Launching"
+msgstr "Tillåt programstart"
+
+#: fileItem.js:682
+msgid "Open"
+msgstr "Öppna"
+
+#: fileItem.js:686
+msgid "Open With Other Application"
+msgstr "Öppna med annat program"
+
+#: fileItem.js:688
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Kör med diskret grafikkort"
+
+#: fileItem.js:693
+msgid "Cut"
+msgstr "Klipp ut"
+
+#: fileItem.js:694
+msgid "Copy"
+msgstr "Kopiera"
+
+#: fileItem.js:696
+msgid "Rename…"
+msgstr "Byt namn…"
+
+#: fileItem.js:697
+msgid "Move to Trash"
+msgstr "Flytta till papperskorgen"
+
+#: fileItem.js:707
+msgid "Empty Trash"
+msgstr "Töm papperskorgen"
+
+#: fileItem.js:711
+msgid "Eject"
+msgstr "Mata ut"
+
+#: fileItem.js:717
+msgid "Properties"
+msgstr "Egenskaper"
+
+#: fileItem.js:719
+msgid "Show in Files"
+msgstr "Visa i Filer"
+
+#: fileItem.js:925
+msgid "Home"
+msgstr "Hem"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Ikonstorlek"
+
+# TODO: *ON* the desktop?
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Ställ in storleken för skrivbordsikonerna."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Visa personlig mapp"
+
+# TODO: *ON* the desktop?
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Visa den personliga mappen på skrivbordet."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Visa papperskorgsikon"
+
+# TODO: *ON* the desktop?
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Visa papperskorgsikonen på skrivbordet."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Visa monterade enheter"
+
+# TODO: *ON* the desktop?
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Visa monterade enheter på skrivbordet."
+
+#~ msgid "Enter file name…"
+#~ msgstr "Ange filnamn…"
+
+#~ msgid "OK"
+#~ msgstr "OK"
+
+#~ msgid "Huge"
+#~ msgstr "Enorm"
diff --git a/extensions/desktop-icons/po/tr.po b/extensions/desktop-icons/po/tr.po
new file mode 100644
index 00000000..cd2a4f13
--- /dev/null
+++ b/extensions/desktop-icons/po/tr.po
@@ -0,0 +1,231 @@
+# Turkish translation for desktop-icons.
+# Copyright (C) 2000-2019 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+#
+# Sabri Ünal <libreajans@gmail.com>, 2019.
+# Serdar Sağlam <teknomobil@yandex.com>, 2019
+# Emin Tufan Çetin <etcetin@gmail.com>, 2019, 2020.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-05-26 20:08+0000\n"
+"PO-Revision-Date: 2020-09-06 01:02+0300\n"
+"Last-Translator: Emin Tufan Çetin <etcetin@gmail.com>\n"
+"Language-Team: Türkçe <gnome-turk@gnome.org>\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.0.6\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Yeni klasör adı"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Oluştur"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "İptal"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Klasör adları “/” içeremez."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Klasör “.” olarak adlandırılamaz."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Klasör “..” olarak adlandırılamaz."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Adının başında “.” bulunan klasörler gizlenir."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Bu adda dosya veya klasör var."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Masaüstü simgeleri boyutu"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Küçük"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Standart"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Büyük"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Kişisel klasörü masaüstünde göster"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Çöp kutusunu masaüstünde göster"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Bağlı sürücüleri masaüstünde göster"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Yeni Klasör"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Yeni Belge"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Yapıştır"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Geri Al"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Yinele"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Masaüstünü Dosyalarʼda Göster"
+
+#: desktopGrid.js:355 fileItem.js:721
+msgid "Open in Terminal"
+msgstr "Uçbirimde Aç"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Arka Planı Değiştir…"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Görüntü Ayarları"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Ayarlar"
+
+#: desktopGrid.js:692
+msgid "Rename"
+msgstr "Yeniden Adlandır"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Komut bulunamadı"
+
+#. TRANSLATORS: %s is the filesystem name
+#: desktopIconsUtil.js:162
+#, javascript-format
+msgid "Ejecting drive “%s” failed:"
+msgstr "“%s” sürücüsü çıkarılamadı:"
+
+#: fileItem.js:584
+msgid "Dont Allow Launching"
+msgstr "Başlatmaya İzin Verme"
+
+#: fileItem.js:586
+msgid "Allow Launching"
+msgstr "Başlatmaya İzin Ver"
+
+#: fileItem.js:682
+msgid "Open"
+msgstr "Aç"
+
+#: fileItem.js:686
+msgid "Open With Other Application"
+msgstr "Başka Uygulamayla Aç"
+
+#: fileItem.js:688
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Ayrık Ekran Kartıyla Başlat"
+
+#: fileItem.js:693
+msgid "Cut"
+msgstr "Kes"
+
+#: fileItem.js:694
+msgid "Copy"
+msgstr "Kopyala"
+
+#: fileItem.js:696
+msgid "Rename…"
+msgstr "Yeniden Adlandır…"
+
+#: fileItem.js:697
+msgid "Move to Trash"
+msgstr "Çöpe Taşı"
+
+#: fileItem.js:707
+msgid "Empty Trash"
+msgstr "Çöpü Boşalt"
+
+#: fileItem.js:711
+msgid "Eject"
+msgstr "Çıkar"
+
+#: fileItem.js:717
+msgid "Properties"
+msgstr "Özellikler"
+
+#: fileItem.js:719
+msgid "Show in Files"
+msgstr "Dosyalarʼda Göster"
+
+#: fileItem.js:925
+msgid "Home"
+msgstr "Ev"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Simge boyutu"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Masaüstü simgelerinin boyutunu ayarla."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Kişisel klasörü göster"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Kişisel klasörü masaüstünde göster."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Çöp kutusunu göster"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Çöp kutusu simgesini masaüstünde göster."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Bağlı sürücüleri göster"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Bağlı sürücüleri masaüstünde göster."
+
+#~ msgid "Enter file name…"
+#~ msgstr "Dosya adını gir…"
+
+#~ msgid "OK"
+#~ msgstr "Tamam"
diff --git a/extensions/desktop-icons/po/uk.po b/extensions/desktop-icons/po/uk.po
new file mode 100644
index 00000000..df37099a
--- /dev/null
+++ b/extensions/desktop-icons/po/uk.po
@@ -0,0 +1,223 @@
+# Ukrainian translation for desktop-icons.
+# Copyright (C) 2020 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+#
+# Yuri Chornoivan <yurchor@ukr.net>, 2020.
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-i"
+"cons/issues\n"
+"POT-Creation-Date: 2020-05-26 20:08+0000\n"
+"PO-Revision-Date: 2020-05-27 11:46+0300\n"
+"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
+"Language-Team: Ukrainian <trans-uk@lists.fedoraproject.org>\n"
+"Language: uk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n"
+"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"X-Generator: Lokalize 20.07.70\n"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Назва нової теки"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Створити"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Скасувати"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Назви теки не можуть містити «/»."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Теку не можна називати як «.»."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Теку не можна називати як «..»."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Теки, назви яких починаються із символу «.», є прихованими."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Файл або тека із такою назвою вже існують."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Розмір піктограм на стільниці"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Малий"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Стандартний"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Великий"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Показувати особисту теку на стільниці"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Показувати піктограму смітника на стільниці"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Показувати змонтовані диски на стільниці"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Нова тека"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Новий документ"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Вставити"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Скасувати"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Повторити"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Показувати «Стільницю» у «Файлах»"
+
+#: desktopGrid.js:355 fileItem.js:721
+msgid "Open in Terminal"
+msgstr "Відкрити у терміналі"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Змінити тло…"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Параметри екрана"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Параметри"
+
+#: desktopGrid.js:692
+msgid "Rename"
+msgstr "Перейменувати"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Команди не знайдено"
+
+#. TRANSLATORS: %s is the filesystem name
+#: desktopIconsUtil.js:162
+#, javascript-format
+msgid "Ejecting drive “%s” failed:"
+msgstr "Не вдалося виштовхнути пристрій «%s»:"
+
+#: fileItem.js:584
+msgid "Dont Allow Launching"
+msgstr "Не дозволяти запуск"
+
+#: fileItem.js:586
+msgid "Allow Launching"
+msgstr "Дозволяти запуск"
+
+#: fileItem.js:682
+msgid "Open"
+msgstr "Відкрити"
+
+#: fileItem.js:686
+msgid "Open With Other Application"
+msgstr "Відкрити за допомогою іншої програми"
+
+#: fileItem.js:688
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Запустити через відповідну графічну плату"
+
+#: fileItem.js:693
+msgid "Cut"
+msgstr "Вирізати"
+
+#: fileItem.js:694
+msgid "Copy"
+msgstr "Копіювати"
+
+#: fileItem.js:696
+msgid "Rename…"
+msgstr "Перейменувати…"
+
+#: fileItem.js:697
+msgid "Move to Trash"
+msgstr "Пересунути до смітника"
+
+#: fileItem.js:707
+msgid "Empty Trash"
+msgstr "Спорожнити смітник"
+
+#: fileItem.js:711
+msgid "Eject"
+msgstr "Виштовхнути"
+
+#: fileItem.js:717
+msgid "Properties"
+msgstr "Властивості"
+
+#: fileItem.js:719
+msgid "Show in Files"
+msgstr "Показувати у «Файлах»"
+
+#: fileItem.js:925
+msgid "Home"
+msgstr "Домівка"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Розмір піктограм"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Встановити розмір піктограм на стільниці."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Показувати особисту теку"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Показувати особисту теку на стільниці."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Показувати піктограму смітника"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Показувати піктограму смітника на стільниці."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Показувати змонтовані диски"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Показувати змонтовані диски на стільниці."
diff --git a/extensions/desktop-icons/po/zh_CN.po b/extensions/desktop-icons/po/zh_CN.po
new file mode 100644
index 00000000..8f2bea44
--- /dev/null
+++ b/extensions/desktop-icons/po/zh_CN.po
@@ -0,0 +1,228 @@
+# Chinese (China) translation for desktop-icons.
+# Copyright (C) 2019 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Dingzhong Chen <wsxy162@gmail.com>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-05-26 20:08+0000\n"
+"PO-Revision-Date: 2020-06-23 21:51-0400\n"
+"Last-Translator: Boyuan Yang <073plan@gmail.com>\n"
+"Language-Team: Chinese (China) <i18n-zh@googlegroups.com>\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 2.3.1\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "新文件夹名称"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "创建"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "取消"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "文件夹名称不能包含“/”。"
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "文件夹不能命名为“.”。"
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "文件夹不能命名为“..”。"
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "名称以“.”开头的文件夹将被隐藏。"
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "相同名称的文件夹已存在。"
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "桌面图标大小"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "小"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "标准"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "大"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "在桌面上显示个人文件夹"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "在桌面上显示回收站图标"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "在桌面上显示已挂载的驱动器"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "新建文件夹"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "新建文档"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "粘贴"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "撤消"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "恢复"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "在文件管理器中显示桌面"
+
+#: desktopGrid.js:355 fileItem.js:721
+msgid "Open in Terminal"
+msgstr "在终端中打开"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "更换壁纸…"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "显示设置"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "设置"
+
+#: desktopGrid.js:692
+msgid "Rename"
+msgstr "重命名"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "命令未找到"
+
+#. TRANSLATORS: %s is the filesystem name
+#: desktopIconsUtil.js:162
+#, javascript-format
+msgid "Ejecting drive “%s” failed:"
+msgstr "弹出驱动器“%s”失败"
+
+#: fileItem.js:584
+msgid "Dont Allow Launching"
+msgstr "不允许启动"
+
+#: fileItem.js:586
+msgid "Allow Launching"
+msgstr "允许启动"
+
+#: fileItem.js:682
+msgid "Open"
+msgstr "打开"
+
+#: fileItem.js:686
+msgid "Open With Other Application"
+msgstr "用其他应用程序打开"
+
+#: fileItem.js:688
+msgid "Launch using Dedicated Graphics Card"
+msgstr "使用独立显卡启动"
+
+#: fileItem.js:693
+msgid "Cut"
+msgstr "剪除"
+
+#: fileItem.js:694
+msgid "Copy"
+msgstr "复制"
+
+#: fileItem.js:696
+msgid "Rename…"
+msgstr "重命名…"
+
+#: fileItem.js:697
+msgid "Move to Trash"
+msgstr "移到回收站"
+
+#: fileItem.js:707
+msgid "Empty Trash"
+msgstr "清空回收站"
+
+#: fileItem.js:711
+msgid "Eject"
+msgstr "弹出"
+
+#: fileItem.js:717
+msgid "Properties"
+msgstr "属性"
+
+#: fileItem.js:719
+msgid "Show in Files"
+msgstr "在文件管理器中显示"
+
+#: fileItem.js:925
+msgid "Home"
+msgstr "主文件夹"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "图标大小"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "设定桌面图标的大小。"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "显示个人文件夹"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "在桌面上显示个人文件夹。"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "显示回收站图标"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "在桌面上显示回收站图标。"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "显示已挂载的驱动器"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "在桌面上显示已挂载的驱动器。"
+
+#~ msgid "Enter file name…"
+#~ msgstr "输入文件名…"
+
+#~ msgid "OK"
+#~ msgstr "确定"
diff --git a/extensions/desktop-icons/po/zh_TW.po b/extensions/desktop-icons/po/zh_TW.po
new file mode 100644
index 00000000..16fadc48
--- /dev/null
+++ b/extensions/desktop-icons/po/zh_TW.po
@@ -0,0 +1,220 @@
+# Chinese (Taiwan) translation for desktop-icons.
+# Copyright (C) 2018 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Yi-Jyun Pan <pan93412@gmail.com>, 2018.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-05-14 18:46+0000\n"
+"PO-Revision-Date: 2020-05-25 01:21+0800\n"
+"Last-Translator: Yi-Jyun Pan <pan93412@gmail.com>\n"
+"Language-Team: Chinese (Taiwan) <chinese-l10n@googlegroups.com>\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.3.1\n"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "新資料夾名稱"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "建立"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "取消"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "資料夾名稱不能有「/」。"
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "資料夾的名稱不能是「.」。"
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "資料夾的名稱不能是「..」。"
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "會隱藏名稱開頭是「.」的資料夾。"
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "已經有同名的檔案或資料夾。"
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "桌面圖示的大小"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "小圖示"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "標準大小圖示"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "大圖示"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "在桌面顯示個人資料夾"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "在桌面顯示垃圾桶圖示"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "在桌面顯示掛載裝置"
+
+#: desktopGrid.js:343
+msgid "New Folder"
+msgstr "新增資料夾"
+
+#: desktopGrid.js:345
+msgid "Paste"
+msgstr "貼上"
+
+#: desktopGrid.js:346
+msgid "Undo"
+msgstr "復原"
+
+#: desktopGrid.js:347
+msgid "Redo"
+msgstr "重做"
+
+#: desktopGrid.js:349
+msgid "Show Desktop in Files"
+msgstr "在《檔案》中顯示桌面"
+
+#: desktopGrid.js:350 fileItem.js:702
+msgid "Open in Terminal"
+msgstr "在終端器開啟"
+
+#: desktopGrid.js:352
+msgid "Change Background…"
+msgstr "變更背景圖片…"
+
+#: desktopGrid.js:354
+msgid "Display Settings"
+msgstr "顯示設定"
+
+#: desktopGrid.js:355
+msgid "Settings"
+msgstr "設定"
+
+#: desktopGrid.js:653
+msgid "Rename"
+msgstr "重新命名"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "找不到命令"
+
+#. TRANSLATORS: %s is the filesystem name
+#: desktopIconsUtil.js:162
+#, javascript-format
+msgid "Ejecting drive “%s” failed:"
+msgstr "退出「%s」裝置失敗"
+
+#: fileItem.js:565
+msgid "Dont Allow Launching"
+msgstr "不允許啟動"
+
+#: fileItem.js:567
+msgid "Allow Launching"
+msgstr "允許啟動"
+
+#: fileItem.js:663
+msgid "Open"
+msgstr "開啟"
+
+#: fileItem.js:667
+msgid "Open With Other Application"
+msgstr "以其他應用程式開啟"
+
+#: fileItem.js:669
+msgid "Launch using Dedicated Graphics Card"
+msgstr "使用獨立圖形卡啟動"
+
+#: fileItem.js:674
+msgid "Cut"
+msgstr "剪下"
+
+#: fileItem.js:675
+msgid "Copy"
+msgstr "複製"
+
+#: fileItem.js:677
+msgid "Rename…"
+msgstr "重新命名…"
+
+#: fileItem.js:678
+msgid "Move to Trash"
+msgstr "移動到垃圾桶"
+
+#: fileItem.js:688
+msgid "Empty Trash"
+msgstr "清空垃圾桶"
+
+#: fileItem.js:692
+msgid "Eject"
+msgstr "退出"
+
+#: fileItem.js:698
+msgid "Properties"
+msgstr "屬性"
+
+#: fileItem.js:700
+msgid "Show in Files"
+msgstr "在《檔案》中顯示"
+
+#: fileItem.js:906
+msgid "Home"
+msgstr "首頁"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "圖示大小"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "設定桌面圖示的大小。"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "顯示個人資料夾"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "在桌面顯示個人資料夾。"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "顯示垃圾桶圖示"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "在桌面顯示垃圾桶圖示。"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "顯示掛載裝置"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "在桌面顯示掛載裝置。"
+
+#~ msgid "Huge"
+#~ msgstr "巨大圖示"
diff --git a/extensions/desktop-icons/prefs.js b/extensions/desktop-icons/prefs.js
new file mode 100644
index 00000000..890bcdb4
--- /dev/null
+++ b/extensions/desktop-icons/prefs.js
@@ -0,0 +1,161 @@
+
+/* Desktop Icons GNOME Shell extension
+ *
+ * Copyright (C) 2017 Carlos Soriano <csoriano@redhat.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+const Gtk = imports.gi.Gtk;
+const GObject = imports.gi.GObject;
+const Gio = imports.gi.Gio;
+const GioSSS = Gio.SettingsSchemaSource;
+const ExtensionUtils = imports.misc.extensionUtils;
+const Gettext = imports.gettext;
+
+const Config = imports.misc.config;
+
+var _ = Gettext.domain('gnome-shell-extensions').gettext;
+
+const SCHEMA_NAUTILUS = 'org.gnome.nautilus.preferences';
+const SCHEMA_GTK = 'org.gtk.Settings.FileChooser';
+const SCHEMA = 'org.gnome.shell.extensions.desktop-icons';
+
+const ICON_SIZE = { 'small': 48, 'standard': 64, 'large': 96 };
+const ICON_WIDTH = { 'small': 108, 'standard': 116, 'large': 116 };
+const ICON_HEIGHT = { 'small': 86, 'standard': 102, 'large': 134 };
+
+var FileType = {
+ NONE: null,
+ USER_DIRECTORY_HOME: 'show-home',
+ USER_DIRECTORY_TRASH: 'show-trash',
+ MOUNT_DISK: 'mount-disk',
+}
+
+var nautilusSettings;
+var gtkSettings;
+var settings;
+// This is already in Nautilus settings, so it should not be made tweakable here
+var CLICK_POLICY_SINGLE = false;
+
+function initTranslations() {
+ let extension = ExtensionUtils.getCurrentExtension();
+
+ let localedir = extension.dir.get_child('locale');
+ if (localedir.query_exists(null))
+ Gettext.bindtextdomain('gnome-shell-extensions', localedir.get_path());
+ else
+ Gettext.bindtextdomain('gnome-shell-extensions', Config.LOCALEDIR);
+}
+
+function init() {
+ let schemaSource = GioSSS.get_default();
+ let schemaGtk = schemaSource.lookup(SCHEMA_GTK, true);
+ gtkSettings = new Gio.Settings({ settings_schema: schemaGtk });
+ let schemaObj = schemaSource.lookup(SCHEMA_NAUTILUS, true);
+ if (!schemaObj) {
+ nautilusSettings = null;
+ } else {
+ nautilusSettings = new Gio.Settings({ settings_schema: schemaObj });;
+ nautilusSettings.connect('changed', _onNautilusSettingsChanged);
+ _onNautilusSettingsChanged();
+ }
+ settings = get_schema(SCHEMA);
+}
+
+function get_schema(schema) {
+ let extension = ExtensionUtils.getCurrentExtension();
+
+ // 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 });
+}
+
+function buildPrefsWidget() {
+ initTranslations();
+ let frame = new Gtk.Box({ orientation: Gtk.Orientation.VERTICAL, border_width: 10, spacing: 10 });
+
+ frame.add(buildSelector('icon-size', _("Size for the desktop icons"), { 'small': _("Small"), 'standard': _("Standard"), 'large': _("Large") }));
+ frame.add(buildSwitcher('show-home', _("Show the personal folder in the desktop")));
+ frame.add(buildSwitcher('show-trash', _("Show the trash icon in the desktop")));
+ frame.add(buildSwitcher('show-mount', _("Show mounted drives in the desktop")));
+ frame.show_all();
+ return frame;
+}
+
+function buildSwitcher(key, labelText) {
+ let hbox = new Gtk.Box({ orientation: Gtk.Orientation.HORIZONTAL, spacing: 10 });
+ let label = new Gtk.Label({ label: labelText, xalign: 0 });
+ let switcher = new Gtk.Switch({ active: settings.get_boolean(key) });
+ settings.bind(key, switcher, 'active', 3);
+ hbox.pack_start(label, true, true, 0);
+ hbox.add(switcher);
+ return hbox;
+}
+
+function buildSelector(key, labelText, elements) {
+ let listStore = new Gtk.ListStore();
+ listStore.set_column_types ([GObject.TYPE_STRING, GObject.TYPE_STRING]);
+ let schemaKey = settings.settings_schema.get_key(key);
+ let values = schemaKey.get_range().get_child_value(1).get_child_value(0).get_strv();
+ for (let val of values) {
+ let iter = listStore.append();
+ let visibleText = val;
+ if (visibleText in elements)
+ visibleText = elements[visibleText];
+ listStore.set (iter, [0, 1], [visibleText, val]);
+ }
+ let hbox = new Gtk.Box({ orientation: Gtk.Orientation.HORIZONTAL, spacing: 10 });
+ let label = new Gtk.Label({ label: labelText, xalign: 0 });
+ let combo = new Gtk.ComboBox({model: listStore});
+ let rendererText = new Gtk.CellRendererText();
+ combo.pack_start (rendererText, false);
+ combo.add_attribute (rendererText, 'text', 0);
+ combo.set_id_column(1);
+ settings.bind(key, combo, 'active-id', 3);
+ hbox.pack_start(label, true, true, 0);
+ hbox.add(combo);
+ return hbox;
+}
+
+function _onNautilusSettingsChanged() {
+ CLICK_POLICY_SINGLE = nautilusSettings.get_string('click-policy') == 'single';
+}
+
+function get_icon_size() {
+ // this one doesn't need scaling because Gnome Shell automagically scales the icons
+ return ICON_SIZE[settings.get_string('icon-size')];
+}
+
+function getDesiredWidth(scale_factor, margin) {
+ return (ICON_WIDTH[settings.get_string('icon-size')] + margin) * scale_factor;
+}
+
+function getDesiredHeight(scale_factor, margin) {
+ return (ICON_HEIGHT[settings.get_string('icon-size')] + margin) * scale_factor;
+}
diff --git a/extensions/desktop-icons/schemas/meson.build b/extensions/desktop-icons/schemas/meson.build
new file mode 100644
index 00000000..2b179165
--- /dev/null
+++ b/extensions/desktop-icons/schemas/meson.build
@@ -0,0 +1,6 @@
+gnome.compile_schemas()
+
+install_data(
+ 'org.gnome.shell.extensions.desktop-icons.gschema.xml',
+ install_dir : schema_dir
+)
diff --git a/extensions/desktop-icons/schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml b/extensions/desktop-icons/schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml
new file mode 100644
index 00000000..de126b5b
--- /dev/null
+++ b/extensions/desktop-icons/schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schemalist gettext-domain="desktop-icons">
+ <enum id="org.gnome.shell.extension.desktop-icons.ZoomLevel">
+ <value value="0" nick="small"/>
+ <value value="1" nick="standard"/>
+ <value value="2" nick="large"/>
+ </enum>
+ <schema path="/org/gnome/shell/extensions/desktop-icons/" id="org.gnome.shell.extensions.desktop-icons">
+ <key name="icon-size" enum="org.gnome.shell.extension.desktop-icons.ZoomLevel">
+ <default>'standard'</default>
+ <summary>Icon size</summary>
+ <description>Set the size for the desktop icons.</description>
+ </key>
+ <key type="b" name="show-home">
+ <default>true</default>
+ <summary>Show personal folder</summary>
+ <description>Show the personal folder in the desktop.</description>
+ </key>
+ <key type="b" name="show-trash">
+ <default>true</default>
+ <summary>Show trash icon</summary>
+ <description>Show the trash icon in the desktop.</description>
+ </key>
+ <key type="b" name="show-mount">
+ <default>true</default>
+ <summary>Show mounted drives</summary>
+ <description>Show mounted drives in the desktop.</description>
+ </key>
+ </schema>
+</schemalist>
diff --git a/extensions/desktop-icons/stylesheet.css b/extensions/desktop-icons/stylesheet.css
new file mode 100644
index 00000000..61b4ce86
--- /dev/null
+++ b/extensions/desktop-icons/stylesheet.css
@@ -0,0 +1,42 @@
+.file-item {
+ padding: 4px;
+ border: 1px;
+ margin: 1px;
+}
+
+.file-item:hover {
+ background-color: rgba(238, 238, 238, 0.2);
+}
+
+.name-label {
+ text-shadow: 1px 1px black;
+ color: white;
+ text-align: center;
+}
+
+.draggable {
+ background-color: red;
+}
+
+.rename-popup {
+ min-width: 300px;
+ margin: 6px;
+}
+
+.rename-popup .rename-popup-item {
+ spacing: 6px;
+}
+.rename-popup .rename-popup-item:ltr,
+.rename-popup .rename-popup-item:rtl {
+ padding: 0, 12px;
+}
+
+.create-folder-dialog-entry {
+ width: 20em;
+ margin-bottom: 6px;
+}
+
+.create-folder-dialog-error-box {
+ padding-top: 16px;
+ spacing: 6px;
+}
diff --git a/extensions/desktop-icons/templateManager.js b/extensions/desktop-icons/templateManager.js
new file mode 100644
index 00000000..a468f4ab
--- /dev/null
+++ b/extensions/desktop-icons/templateManager.js
@@ -0,0 +1,104 @@
+/* DING: Desktop Icons New Generation for GNOME Shell
+ *
+ * Copyright (C) 2020 Sergio Costas (rastersoft@gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, version 3 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+const Gio = imports.gi.Gio;
+const GLib = imports.gi.GLib;
+
+const ExtensionUtils = imports.misc.extensionUtils;
+const Me = ExtensionUtils.getCurrentExtension();
+const DesktopIconsUtil = Me.imports.desktopIconsUtil;
+
+var TemplateManager = class {
+
+ constructor() {
+ this._templates = [];
+ this._templatesEnumerateCancellable = null;
+ this._templateDir = GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_TEMPLATES);
+ if (this._templateDir == GLib.get_home_dir())
+ this._templateDir = null;
+ this.updated = true;
+ if (this._templateDir != null) {
+ this._templateGFile = Gio.File.new_for_path(this._templateDir);
+ this._monitor = this._templateGFile.monitor_directory(Gio.FileMonitorFlags.NONE, null);
+ this._monitorId = this._monitor.connect("changed", () => {
+ this._refreshTemplates();
+ });
+ this._refreshTemplates();
+ } else {
+ this._templateGFile = null;
+ this._monitorId = null;
+ }
+ }
+
+ destroy() {
+ if (this._monitorId)
+ this._monitor.disconnect(this._monitorId);
+ this._monitorId = null;
+ }
+
+ getTemplates() {
+ let templates = [];
+ for(let template of this._templates) {
+ let data = {};
+ data["icon"] = template.get_icon();
+ let name = template.get_name();
+ let offset = DesktopIconsUtil.getFileExtensionOffset(name, false);
+ data["name"] = name.substring(0, offset);
+ data["extension"] = name.substring(offset);
+ data["file"] = name;
+ templates.push(data);
+ }
+ this.updated = false;
+ return templates;
+ }
+
+ _refreshTemplates() {
+ if (this._templatesEnumerateCancellable)
+ this._templatesEnumerateCancellable.cancel();
+ this._templatesEnumerateCancellable = new Gio.Cancellable();
+ this._templateGFile.enumerate_children_async(
+ DesktopIconsUtil.DEFAULT_ATTRIBUTES,
+ Gio.FileQueryInfoFlags.NONE,
+ GLib.PRIORITY_DEFAULT,
+ this._templatesEnumerateCancellable,
+ (source, result) => {
+ try {
+ let fileEnum = source.enumerate_children_finish(result);
+ this._templates = [];
+ let info;
+ while ((info = fileEnum.next_file(null))) {
+ if (info.get_file_type() != Gio.FileType.DIRECTORY)
+ this._templates.push(info);
+ }
+ this.updated = true;
+ } catch(e) {
+ global.log(`Exception while reading templates ${e}`);
+ }
+ }
+ );
+ }
+
+ getTemplateFile(name) {
+ if (this._templateGFile == null)
+ return null;
+ let template = Gio.File.new_for_path(GLib.build_filenamev([this._templateDir, name]));
+ if (template.query_exists(null))
+ return template;
+ else
+ return null;
+ }
+}
diff --git a/meson.build b/meson.build
index c609ae52..b83f0795 100644
--- a/meson.build
+++ b/meson.build
@@ -28,6 +28,7 @@ uuid_suffix = '@gnome-shell-extensions.gcampax.github.com'
classic_extensions = [
'apps-menu',
+ 'desktop-icons',
'places-menu',
'launch-new-instance',
'window-list'
diff --git a/po/ca.po b/po/ca.po
index d17003f9..8e21b717 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -1,11 +1,18 @@
+# #-#-#-#-# ca.po (gnome-shell-extensions) #-#-#-#-#
# Catalan 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.
# Jordi Mas i Hernandez <jmas@softcatala.org>, 2011.
# Gil Forcada <gilforcada@guifi.net>, 2012, 2013, 2014.
#
+# #-#-#-#-# ca.po (1.0) #-#-#-#-#
+# This file is distributed under the same license as the PACKAGE package.
+# Jordi Mas i Hernandez <jmas@softcatala.org>, 2019-2020
+#
+#, fuzzy
msgid ""
msgstr ""
+"#-#-#-#-# ca.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"
@@ -18,6 +25,19 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"#-#-#-#-# ca.po (1.0) #-#-#-#-#\n"
+"Project-Id-Version: 1.0\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-05-26 20:08+0000\n"
+"PO-Revision-Date: 2019-07-22 10:24+0200\n"
+"Last-Translator: Jordi Mas <jmas@softcatala.org>\n"
+"Language-Team: Catalan <info@softcatala.org>\n"
+"Language: ca\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"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -58,7 +78,7 @@ msgstr "Afegeix una regla"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
-#: extensions/places-menu/placeDisplay.js:233
+#: extensions/places-menu/placeDisplay.js:233 desktopIconsUtil.js:162
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "Ha fallat l'expulsió de la unitat «%s»:"
@@ -81,10 +101,10 @@ msgid ""
"aspect ratio, and consolidating them further to reduce the bounding box. "
"This setting applies only with the natural placement strategy."
msgstr ""
-"Intenta utilitzar més espai de la pantalla per a posicionar les miniatures de "
-"les finestres adaptant-les a la ràtio d'aspecte de la pantalla, consolidant-"
-"les més per a reduir la caixa que les envolta. Aquest paràmetre de "
-"configuració només s'aplica a l'estratègia de posicionament de finestres "
+"Intenta utilitzar més espai de la pantalla per a posicionar les miniatures "
+"de les finestres adaptant-les a la ràtio d'aspecte de la pantalla, "
+"consolidant-les més per a reduir la caixa que les envolta. Aquest paràmetre "
+"de configuració només s'aplica a l'estratègia de posicionament de finestres "
"natural."
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11
@@ -122,7 +142,7 @@ msgstr "No s'ha pogut muntar el volum «%s»"
msgid "Computer"
msgstr "Ordinador"
-#: extensions/places-menu/placeDisplay.js:359
+#: extensions/places-menu/placeDisplay.js:359 fileItem.js:925
msgid "Home"
msgstr "Inici"
@@ -264,3 +284,194 @@ msgstr "Espai de treball %d"
msgid "Add Workspace"
msgstr "Afegeix un espai de treball"
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Nom de la carpeta nova"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Crea"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Cancel·la"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Els noms de carpetes no poden contenir «/»."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Una carpeta no es pot anomenar «.»."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Una carpeta no es pot anomenar «..»."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Les carpetes amb un «.» a l'inici del seu nom s'amaguen."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Ja existeix un fitxer o carpeta amb aquest nom."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Mida de les icones d'escriptori"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Petita"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Estàndard"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Gran"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Mostra la carpeta personal a l'escriptori"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Mostra la icona de la paperera a l'escriptori"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Mostra les unitats muntades a l'escriptori"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Carpeta nova"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Document nou"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Enganxa"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Desfés"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Refés"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Mostra l'escriptori al Fitxers"
+
+#: desktopGrid.js:355 fileItem.js:721
+msgid "Open in Terminal"
+msgstr "Obre al Terminal"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Canvia el fons de l'escriptori…"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Paràmetres de la pantalla"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Paràmetres"
+
+#: desktopGrid.js:692
+msgid "Rename"
+msgstr "Canvia el nom"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "No s'ha trobat l'ordre"
+
+#: fileItem.js:584
+msgid "Dont Allow Launching"
+msgstr "No permetis que s'iniciï"
+
+#: fileItem.js:586
+msgid "Allow Launching"
+msgstr "Permet que s'iniciï"
+
+#: fileItem.js:682
+msgid "Open"
+msgstr "Obre"
+
+#: fileItem.js:686
+msgid "Open With Other Application"
+msgstr "Obre amb una altra aplicació"
+
+#: fileItem.js:688
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Llança usant la targeta gràfica dedicada"
+
+#: fileItem.js:693
+msgid "Cut"
+msgstr "Retalla"
+
+#: fileItem.js:694
+msgid "Copy"
+msgstr "Copia"
+
+#: fileItem.js:696
+msgid "Rename…"
+msgstr "Canvia el nom…"
+
+#: fileItem.js:697
+msgid "Move to Trash"
+msgstr "Mou a la paperera"
+
+#: fileItem.js:707
+msgid "Empty Trash"
+msgstr "Buida la paperera"
+
+#: fileItem.js:711
+msgid "Eject"
+msgstr "Expulsa"
+
+#: fileItem.js:717
+msgid "Properties"
+msgstr "Propietats"
+
+#: fileItem.js:719
+msgid "Show in Files"
+msgstr "Mostra al Fitxers"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Mida d'icona"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Estableix la mida per les icones de l'escriptori."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Mostra la carpeta personal"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Mostra la carpeta personal a l'escriptori."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Mostra la icona de la paperera"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Mostra la icona de la paperera a l'escriptori."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Mostra les unitats muntades"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Mostra la icona de la paperera a l'escriptori."
diff --git a/po/cs.po b/po/cs.po
index 572b3787..f0d57b72 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -1,4 +1,5 @@
# #-#-#-#-# 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.
@@ -11,10 +12,18 @@
# This file is distributed under the same license as the dash-to-dock package.
# Jiří Doubravský <jiri.doubravsky@gmail.com>, 2015.
#
+# #-#-#-#-# cs.po (desktop-icons master) #-#-#-#-#
+# Czech translation for desktop-icons.
+# Copyright (C) 2018 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Marek Černocký <marek@manet.cz>, 2018.
+# Milan Zink <zeten30@gmail.com>, 2018.
+#
#, fuzzy
msgid ""
msgstr ""
"#-#-#-#-# 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"
@@ -41,6 +50,20 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.3\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+"#-#-#-#-# cs.po (desktop-icons master) #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-05-26 20:08+0000\n"
+"PO-Revision-Date: 2020-06-16 14:22+0200\n"
+"Last-Translator: Daniel Rusek <mail@asciiwolf.com>\n"
+"Language-Team: Czech <zeten30@gmail.com>\n"
+"Language: cs\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+"X-Generator: Poedit 2.3.1\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -80,10 +103,14 @@ msgstr "Přidat pravidlo"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
-#: extensions/places-menu/placeDisplay.js:233
-#, javascript-format
+#: extensions/places-menu/placeDisplay.js:233 desktopIconsUtil.js:162
+#, fuzzy, javascript-format
msgid "Ejecting drive “%s” failed:"
-msgstr "Vysunutí disku „%s“ selhalo:"
+msgstr ""
+"#-#-#-#-# cs.po (gnome-shell-extensions) #-#-#-#-#\n"
+"Vysunutí disku „%s“ selhalo:\n"
+"#-#-#-#-# cs.po (desktop-icons master) #-#-#-#-#\n"
+"Vysunutí svazku „%s“ selhalo:"
#: extensions/drive-menu/extension.js:128
msgid "Removable devices"
@@ -141,7 +168,7 @@ msgstr "Selhalo připojení svazku pro „%s“"
msgid "Computer"
msgstr "Počítač"
-#: extensions/places-menu/placeDisplay.js:359
+#: extensions/places-menu/placeDisplay.js:359 fileItem.js:925
msgid "Home"
msgstr "Domů"
@@ -340,7 +367,7 @@ msgstr "%s Dash to Docku"
msgid "Trash"
msgstr "Koš"
-#: locations.js:74
+#: locations.js:74 fileItem.js:707
msgid "Empty Trash"
msgstr "Vyprázdnit koš"
@@ -348,7 +375,7 @@ msgstr "Vyprázdnit koš"
msgid "Mount"
msgstr "Připojit"
-#: locations.js:235
+#: locations.js:235 fileItem.js:711
msgid "Eject"
msgstr "Vysunout"
@@ -800,6 +827,190 @@ msgstr "Prodleva při zobrazení (s)"
msgid "Pressure threshold"
msgstr "Míra tlaku (px)"
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Název nové složky"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Vytvořit"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Názvy složek nesmí obsahovat „/“."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Složka se nemůže jmenovat „.“."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Složka se nemůže jmenovat „..“."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Složky s „.“ na začátku jejich názvu jsou skryty."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Soubor nebo složka s tímto názvem již existuje."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Velikost ikon na pracovní ploše"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "malé"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "standardní"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "velké"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Zobrazovat osobní složku na pracovní ploše"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Zobrazovat ikonu koše na pracovní ploše"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Zobrazovat připojené svazky na pracovní ploše"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Nová složka"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Nový dokument"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Vložit"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Zpět"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Znovu"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Zobrazit plochu v Souborech"
+
+#: desktopGrid.js:355 fileItem.js:721
+msgid "Open in Terminal"
+msgstr "Otevřít v terminálu"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Změnit pozadí…"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Nastavení zobrazení"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Nastavení"
+
+#: desktopGrid.js:692
+msgid "Rename"
+msgstr "Přejmenovat"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Příkaz nebyl nalezen"
+
+#: fileItem.js:584
+msgid "Dont Allow Launching"
+msgstr "Nepovolit spouštění"
+
+#: fileItem.js:586
+msgid "Allow Launching"
+msgstr "Povolit spouštění"
+
+#: fileItem.js:682
+msgid "Open"
+msgstr "Otevřít"
+
+#: fileItem.js:686
+msgid "Open With Other Application"
+msgstr "Otevřít pomocí jiné aplikace"
+
+#: fileItem.js:688
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Spustit pomocí vyhrazené grafické karty"
+
+#: fileItem.js:693
+msgid "Cut"
+msgstr "Vyjmout"
+
+#: fileItem.js:694
+msgid "Copy"
+msgstr "Kopírovat"
+
+#: fileItem.js:696
+msgid "Rename…"
+msgstr "Přejmenovat…"
+
+#: fileItem.js:697
+msgid "Move to Trash"
+msgstr "Přesunout do koše"
+
+#: fileItem.js:717
+msgid "Properties"
+msgstr "Vlastnosti"
+
+#: fileItem.js:719
+msgid "Show in Files"
+msgstr "Zobrazit v Souborech"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Velikost ikon"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Nastavit velikost pro ikony na pracovní ploše."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Zobrazovat osobní složku"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Zobrazovat osobní složku na pracovní ploše."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Zobrazovat koš"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Zobrazovat ikonu koše na pracovní ploše."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Zobrazovat připojené svazky"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Zobrazovat připojené svazky na pracovní ploše."
+
#~ msgid "Show a dot for each windows of the application."
#~ msgstr "Zobrazit u ikon tečku indikující každé otevřené okno aplikace"
@@ -808,3 +1019,15 @@ msgstr "Míra tlaku (px)"
#~ msgid "Adaptive"
#~ msgstr "Adaptivní"
+
+#~ msgid "Enter file name…"
+#~ msgstr "Zadejte název souboru…"
+
+#~ msgid "OK"
+#~ msgstr "Budiž"
+
+#~ msgid "Huge"
+#~ msgstr "obrovské"
+
+#~ msgid "Ok"
+#~ msgstr "Ok"
diff --git a/po/da.po b/po/da.po
index bc592f02..4bd6d2fe 100644
--- a/po/da.po
+++ b/po/da.po
@@ -1,3 +1,4 @@
+# #-#-#-#-# da.po (gnome-shell-extensions master) #-#-#-#-#
# Danish translation for gnome-shell-extensions.
# Copyright (C) 2011-2017 gnome-shell-extensions's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-shell-extensions package.
@@ -6,8 +7,16 @@
# Ask Hjorth Larsen <asklarsen@gmail.com>, 2015, 2017.
# Joe Hansen <joedalton2@yahoo.dk>, 2017.
#
+# #-#-#-#-# da.po (desktop-icons master) #-#-#-#-#
+# Danish translation for desktop-icons.
+# Copyright (C) 2018 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Alan Mortensen <alanmortensen.am@gmail.com>, 2018.
+# scootergrisen, 2020.
+#, fuzzy
msgid ""
msgstr ""
+"#-#-#-#-# da.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"
@@ -21,6 +30,19 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 2.3\n"
+"#-#-#-#-# da.po (desktop-icons master) #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-05-26 20:08+0000\n"
+"PO-Revision-Date: 2020-10-10 00:00+0200\n"
+"Last-Translator: scootergrisen\n"
+"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
+"Language: da\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -58,9 +80,12 @@ msgstr "Regler for arbejdsområde"
msgid "Add Rule"
msgstr "Tilføj regel"
+#. #-#-#-#-# da.po (gnome-shell-extensions master) #-#-#-#-#
#. TRANSLATORS: %s is the filesystem name
+#. #-#-#-#-# da.po (desktop-icons master) #-#-#-#-#
+#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
-#: extensions/places-menu/placeDisplay.js:233
+#: extensions/places-menu/placeDisplay.js:233 desktopIconsUtil.js:162
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "Udskubning af drevet “%s” mislykkedes:"
@@ -123,7 +148,7 @@ msgstr "Kunne ikke montere diskenhed for “%s”"
msgid "Computer"
msgstr "Computer"
-#: extensions/places-menu/placeDisplay.js:359
+#: extensions/places-menu/placeDisplay.js:359 fileItem.js:925
msgid "Home"
msgstr "Hjem"
@@ -263,6 +288,202 @@ msgstr "Arbejdsområde %d"
msgid "Add Workspace"
msgstr "Tilføj arbejdsområde"
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Nyt mappenavn"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Opret"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Annullér"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Mappenavne må ikke indeholde “/”."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "En mappe må ikke kaldes “.”."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "En mappe må ikke kaldes “..”."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Mapper med “.” i begyndelsen af deres navn er skjulte."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Der findes allerede en fil eller mappe med det navn."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Størrelsen på skrivebordsikoner"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Små"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Standard"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Store"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Vis den personlige mappe på skrivebordet"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Vis papirkurvsikonet på skrivebordet"
+
+#: prefs.js:106
+#| msgid "Show the trash icon in the desktop"
+msgid "Show mounted drives in the desktop"
+msgstr "Vis monterede drev på skrivebordet"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Ny mappe"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Nyt dokument"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Indsæt"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Fortryd"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Omgør"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Vis skrivebordet i Filer"
+
+#: desktopGrid.js:355 fileItem.js:721
+msgid "Open in Terminal"
+msgstr "Åbn i terminal"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Skift baggrund …"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Skærmindstillinger"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Indstillinger"
+
+#: desktopGrid.js:692
+msgid "Rename"
+msgstr "Omdøb"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Kommando ikke fundet"
+
+#: fileItem.js:584
+msgid "Dont Allow Launching"
+msgstr "Tillad ikke opstart"
+
+#: fileItem.js:586
+msgid "Allow Launching"
+msgstr "Tillad opstart"
+
+#: fileItem.js:682
+msgid "Open"
+msgstr "Åbn"
+
+#: fileItem.js:686
+msgid "Open With Other Application"
+msgstr "Åbn med et andet program"
+
+# scootergrisen: tjek oversættelsen af "Dedicated"
+#: fileItem.js:688
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Start med dedikeret grafikkort"
+
+#: fileItem.js:693
+msgid "Cut"
+msgstr "Klip"
+
+#: fileItem.js:694
+msgid "Copy"
+msgstr "Kopiér"
+
+#: fileItem.js:696
+msgid "Rename…"
+msgstr "Omdøb …"
+
+#: fileItem.js:697
+msgid "Move to Trash"
+msgstr "Flyt til papirkurven"
+
+#: fileItem.js:707
+msgid "Empty Trash"
+msgstr "Tøm papirkurven"
+
+#: fileItem.js:711
+msgid "Eject"
+msgstr "Skub ud"
+
+#: fileItem.js:717
+msgid "Properties"
+msgstr "Egenskaber"
+
+#: fileItem.js:719
+msgid "Show in Files"
+msgstr "Vis i Filer"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Ikonstørrelse"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Angiv størrelsen på skrivebordsikoner."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Vis personlig mappe"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Vis den personlige mappe på skrivebordet."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Vis papirkurvsikon"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Vis papirkurvsikonet på skrivebordet."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+#| msgid "Show in Files"
+msgid "Show mounted drives"
+msgstr "Vis monterede drev"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+#| msgid "Show the trash icon in the desktop."
+msgid "Show mounted drives in the desktop."
+msgstr "Vis monterede drev på skrivebordet."
+
#~ msgid "Application"
#~ msgstr "Program"
diff --git a/po/de.po b/po/de.po
index 30119a76..e8246586 100644
--- a/po/de.po
+++ b/po/de.po
@@ -1,4 +1,5 @@
# #-#-#-#-# 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.
@@ -17,10 +18,18 @@
# Jonatan Zeidler <jonatan_zeidler@hotmail.de>, 2012
# jonius <jonatan_zeidler@gmx.de>, 2012
#
+# #-#-#-#-# de.po (desktop-icons master) #-#-#-#-#
+# German translation for desktop-icons.
+# Copyright (C) 2018 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Mario Blättermann <mario.blaettermann@gmail.com>, 2018.
+# rugk <rugk+i18n@posteo.de>, 2019.
+#
#, fuzzy
msgid ""
msgstr ""
"#-#-#-#-# 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"
@@ -46,6 +55,20 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.0.4\n"
+"#-#-#-#-# de.po (desktop-icons master) #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-08-16 14:44+0000\n"
+"PO-Revision-Date: 2020-08-26 22:46+0200\n"
+"Last-Translator: Christian Kirbach <christian.kirbach@gmail.com>\n"
+"Language-Team: German <gnome-de@gnome.org>\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 2.3.1\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -86,10 +109,14 @@ msgstr "Regel hinzufügen"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
-#: extensions/places-menu/placeDisplay.js:233
-#, javascript-format
+#: extensions/places-menu/placeDisplay.js:233 desktopIconsUtil.js:162
+#, fuzzy, javascript-format
msgid "Ejecting drive “%s” failed:"
-msgstr "Auswerfen von Laufwerk »%s« schlug fehl:"
+msgstr ""
+"#-#-#-#-# de.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"Auswerfen von Laufwerk »%s« schlug fehl:\n"
+"#-#-#-#-# de.po (desktop-icons master) #-#-#-#-#\n"
+"Auswerfen des Laufwerks »%s« fehlgeschlagen:"
#: extensions/drive-menu/extension.js:128
msgid "Removable devices"
@@ -149,9 +176,14 @@ msgstr "Datenträger für »%s« konnte nicht eingebunden werden"
msgid "Computer"
msgstr "Rechner"
-#: extensions/places-menu/placeDisplay.js:359
+#: extensions/places-menu/placeDisplay.js:359 fileItem.js:927
+#, fuzzy
msgid "Home"
-msgstr "Persönlicher Ordner"
+msgstr ""
+"#-#-#-#-# de.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"Persönlicher Ordner\n"
+"#-#-#-#-# de.po (desktop-icons master) #-#-#-#-#\n"
+"Startseite"
#: extensions/places-menu/placeDisplay.js:404
msgid "Browse Network"
@@ -729,6 +761,198 @@ msgstr "Stoßschwellwert"
msgid "Isolate monitors."
msgstr "Isoliere Monitore."
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Neuer Ordner"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Erstellen"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Abbrechen"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Ordnernamen dürfen kein »/« enthalten."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Ein Ordner darf nicht ».« genannt werden."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Ein Ordner darf nicht »..« genannt werden."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Ordner mit ».« am Anfang sind verborgen."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Es gibt bereits eine Datei oder einen Ordner mit diesem Namen."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Größe der Arbeitsflächensymbole"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Klein"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Standard"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Groß"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Den persönlichen Ordner auf der Arbeitsfläche anzeigen"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Papierkorb-Symbol auf der Arbeitsfläche anzeigen"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Eingebundene Laufwerke auf der Arbeitsfläche anzeigen"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Neuer Ordner"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Neues Dokument"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Einfügen"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Rückgängig"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Wiederholen"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Schreibtisch in Dateien anzeigen"
+
+#: desktopGrid.js:355 fileItem.js:723
+msgid "Open in Terminal"
+msgstr "Im Terminal öffnen"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Hintergrund ändern …"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Anzeigeeinstellungen"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Einstellungen"
+
+#: desktopGrid.js:699
+msgid "Rename"
+msgstr "Umbenennen"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Befehl nicht gefunden"
+
+#: fileItem.js:586
+msgid "Dont Allow Launching"
+msgstr "Start nicht erlauben"
+
+#: fileItem.js:588
+msgid "Allow Launching"
+msgstr "Start erlauben"
+
+#: fileItem.js:684
+msgid "Open"
+msgstr "Öffnen"
+
+#: fileItem.js:688
+msgid "Open With Other Application"
+msgstr "Mit anderer Anwendung öffnen"
+
+#: fileItem.js:690
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Start mit dedizierter Grafikkarte"
+
+#: fileItem.js:695
+msgid "Cut"
+msgstr "Ausschneiden"
+
+#: fileItem.js:696
+msgid "Copy"
+msgstr "Kopieren"
+
+#: fileItem.js:698
+msgid "Rename…"
+msgstr "Umbenennen …"
+
+#: fileItem.js:699
+msgid "Move to Trash"
+msgstr "In den Papierkorb verschieben"
+
+#: fileItem.js:709
+msgid "Empty Trash"
+msgstr "Papierkorb leeren"
+
+#: fileItem.js:713
+msgid "Eject"
+msgstr "Auswerfen"
+
+#: fileItem.js:719
+msgid "Properties"
+msgstr "Eigenschaften"
+
+#: fileItem.js:721
+msgid "Show in Files"
+msgstr "In Dateiverwaltung anzeigen"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Symbolgröße"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Die Größe der Arbeitsflächensymbole festlegen."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Persönlichen Ordner anzeigen"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Den persönlichen Ordner auf der Arbeitsfläche anzeigen."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Papierkorb-Symbol anzeigen"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Das Papierkorb-Symbol auf der Arbeitsfläche anzeigen."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Eingebundene Laufwerke anzeigen"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Eingebundene Laufwerke auf der Arbeitsfläche anzeigen."
+
#~ msgid "Application"
#~ msgstr "Anwendung"
@@ -939,3 +1163,12 @@ msgstr "Isoliere Monitore."
#~ msgstr ""
#~ "Benutzerdefiniertes Theme verwenden (funktioniert nur mit dem Standard-"
#~ "Adwaita-Theme)"
+
+#~ msgid "Enter file name…"
+#~ msgstr "Dateinamen eingeben …"
+
+#~ msgid "OK"
+#~ msgstr "OK"
+
+#~ msgid "Huge"
+#~ msgstr "Riesig"
diff --git a/po/el.po b/po/el.po
index bd0a7a5f..fde56dd9 100644
--- a/po/el.po
+++ b/po/el.po
@@ -1,4 +1,5 @@
# #-#-#-#-# el.po (gnome-shell-extensions master) #-#-#-#-#
+# #-#-#-#-# el.po (gnome-shell-extensions master) #-#-#-#-#
# Greek 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,10 +17,17 @@
# Δημήτριος-Ρωμανός Ησαΐας <dirosissaias@cosmotemail.gr>, 2017.
# Vangelis Skarmoutsos <skarmoutsosv@gmail.com>, 2017.
#
+# #-#-#-#-# el.po (desktop-icons master) #-#-#-#-#
+# Greek translation for desktop-icons.
+# Copyright (C) 2019 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Emmanouil I. Kapernaros <manolis@kapcom.gr>, 2019.
+#
#, fuzzy
msgid ""
msgstr ""
"#-#-#-#-# el.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"#-#-#-#-# el.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"
@@ -47,6 +55,19 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.0.3\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"#-#-#-#-# el.po (desktop-icons master) #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-04-05 21:12+0200\n"
+"PO-Revision-Date: 2019-10-30 23:18+0200\n"
+"Last-Translator: Emmanouil I. Kapernaros <manolis@kapcom.gr>\n"
+"Language-Team: Greek, Modern (1453-) <gnome-el-list@gnome.org>\n"
+"Language: el\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"X-Generator: Gtranslator 3.34.0\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -711,6 +732,179 @@ msgstr "Χρονικό όριο εμφάνισης"
msgid "Pressure threshold"
msgstr "Ελάχιστη πίεση"
+#: desktopGrid.js:354
+#, fuzzy
+msgid "Display Settings"
+msgstr ""
+"#-#-#-#-# el.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"Ρυθμίσεις οθόνης\n"
+"#-#-#-#-# el.po (desktop-icons master) #-#-#-#-#\n"
+"Ρυθμίσεις Οθόνης"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Μέγεθος εικονιδίου"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Ακύρωση"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Όνομα νέου φακέλου"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Δημιουργία"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Τα ονόματα φακέλων δεν μπορούν να περιέχουν “/”."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Ο φάκελος δεν μπορεί να ονομάζεται “.”."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Ο φάκελος δεν μπορεί να ονομάζεται “..”."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Οι φάκελοι με “.” στην αρχή του ονόματος τους είναι κρυφοί"
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Υπάρχει ήδη ένας φάκελος ή αρχείο με αυτό το όνομα"
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Μέγεθος για τα εικονίδια επιφάνειας εργασίας"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "Μικρό"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "Κανονικό"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "Μεγάλο"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Εμφάνιση του προσωπικού φακέλου στην επιφάνεια εργασίας"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Εμφάνιση του εικονίδιου απορριμάτων στην επιφάνεια εργασίας"
+
+#: desktopGrid.js:343
+msgid "New Folder"
+msgstr "Νέος Φάκελος"
+
+#: desktopGrid.js:345
+msgid "Paste"
+msgstr "Επικόλληση"
+
+#: desktopGrid.js:346
+msgid "Undo"
+msgstr "Αναίρεση"
+
+#: desktopGrid.js:347
+msgid "Redo"
+msgstr "Επανάληψη"
+
+#: desktopGrid.js:349
+msgid "Show Desktop in Files"
+msgstr "Εμφάνιση Επιφάνειας εργασίας στα Αρχεία"
+
+#: desktopGrid.js:350 fileItem.js:651
+msgid "Open in Terminal"
+msgstr "Άνοιγμα στο Τερματικό"
+
+#: desktopGrid.js:352
+msgid "Change Background…"
+msgstr "Αλλαγή Φόντου"
+
+#: desktopGrid.js:355
+msgid "Settings"
+msgstr "Ρυθμίσεις"
+
+#: desktopGrid.js:653
+msgid "Rename"
+msgstr "Μετονομασία"
+
+#: desktopIconsUtil.js:61
+msgid "Command not found"
+msgstr "Η εντολή δεν βρέθηκε"
+
+#: fileItem.js:521
+msgid "Dont Allow Launching"
+msgstr "Μην Επιτρέψεις Εκτέλεση"
+
+#: fileItem.js:523
+msgid "Allow Launching"
+msgstr "Επέτρεψε Εκτέλεση"
+
+#: fileItem.js:619
+msgid "Open"
+msgstr "Άνοιγμα"
+
+#: fileItem.js:623
+msgid "Open With Other Application"
+msgstr "Άνοιγμα Με Άλλη Εφαρμογή"
+
+#: fileItem.js:627
+msgid "Cut"
+msgstr "Αποκοπή"
+
+#: fileItem.js:628
+msgid "Copy"
+msgstr "Αντιγραφή"
+
+#: fileItem.js:630
+msgid "Rename…"
+msgstr "Μετονομασία"
+
+#: fileItem.js:631
+msgid "Move to Trash"
+msgstr "Μετακίνηση στα Απορρίματα"
+
+#: fileItem.js:641
+msgid "Empty Trash"
+msgstr "Άδειασμα Απορριμάτων"
+
+#: fileItem.js:647
+msgid "Properties"
+msgstr "Ιδιότητες"
+
+#: fileItem.js:649
+msgid "Show in Files"
+msgstr "Εμφάνιση στα Αρχεία"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Ορισμός μεγέθους για τα εικονίδια της επιφάνειας εργασίας"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Εμφάνιση προσωπικού φακέλου"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Εμφάνιση του προσωπικού φακέλου στην επιφάνεια εργασίας"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Εμφάνιση του εικονιδίου απορριμμάτων"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Εμφάνιση του εικονιδίου απορριμμάτων στην επιφάνεια εργασίας"
+
#~ msgid "Application"
#~ msgstr "Εφαρμογή"
@@ -838,9 +1032,6 @@ msgstr "Ελάχιστη πίεση"
#~ msgid "Display"
#~ msgstr "Οθόνη"
-#~ msgid "Display Settings"
-#~ msgstr "Ρυθμίσεις οθόνης"
-
#~ msgid "The application icon mode."
#~ msgstr "Η λειτουργία εικονιδίου της εφαρμογής"
@@ -876,9 +1067,6 @@ msgstr "Ελάχιστη πίεση"
#~ "Ρυθμίζει τη θέση του υποδοχέα στην οθόνη. Επιτρεπόμενες τιμές είναι right "
#~ "(«δεξιά») ή right («αριστερά»)"
-#~ msgid "Icon size"
-#~ msgstr "Μέγεθος εικονιδίου"
-
#~ msgid "Sets icon size of the dock."
#~ msgstr "Ρυθμίζει το μέγεθος εικόνας του υποδοχέα."
@@ -1066,9 +1254,6 @@ msgstr "Ελάχιστη πίεση"
#~ msgid "Alt Tab Behaviour"
#~ msgstr "Συμπεριφορά Alt Tab"
-#~ msgid "Cancel"
-#~ msgstr "Ακύρωση"
-
#~ msgid "Ask the user for a default behaviour if true."
#~ msgstr "Ρωτήστε τον χρήστη για μια προεπιλεγμένη συμπεριφορα εαν αληθεύει."
@@ -1087,3 +1272,6 @@ msgstr "Ελάχιστη πίεση"
#~ msgid "Window placement strategy"
#~ msgstr "Στρατηγική τοποθέτησης παραθύρου"
+
+#~ msgid "Enter file name…"
+#~ msgstr "Εισάγετε όνομα αρχείου..."
diff --git a/po/en_GB.po b/po/en_GB.po
index 81ca1146..e98f70dd 100644
--- a/po/en_GB.po
+++ b/po/en_GB.po
@@ -1,3 +1,4 @@
+# #-#-#-#-# en_GB.po (gnome-shell-extensions) #-#-#-#-#
# British English translation of 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.
@@ -6,8 +7,16 @@
# Philip Withnall <philip@tecnocode.co.uk>, 2014.
# Zander Brown <zbrown@gnome.org>, 2019-2020.
#
+# #-#-#-#-# en_GB.po (desktop-icons master) #-#-#-#-#
+# British English translation for desktop-icons.
+# Copyright (C) 2019 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Zander Brown <zbrown@gnome.org>, 2019.
+#
+#, fuzzy
msgid ""
msgstr ""
+"#-#-#-#-# en_GB.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"
@@ -22,6 +31,19 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Gtranslator 3.36.0\n"
"X-Project-Style: gnome\n"
+"#-#-#-#-# en_GB.po (desktop-icons master) #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-04-05 21:12+0200\n"
+"PO-Revision-Date: 2019-08-23 21:48+0100\n"
+"Last-Translator: Zander Brown <zbrown@gnome.org>\n"
+"Language-Team: English - United Kingdom <en_GB@li.org>\n"
+"Language: en_GB\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Gtranslator 3.32.1\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -263,6 +285,175 @@ msgstr "Workspace %d"
msgid "Add Workspace"
msgstr "Add Workspace"
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Icon size"
+
+#: desktopGrid.js:354
+msgid "Display Settings"
+msgstr "Display Settings"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Cancel"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "New folder name"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Create"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Folder names cannot contain “/”."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "A folder cannot be called “.”."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "A folder cannot be called “..”."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Folders with “.” at the beginning of their name are hidden."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "There is already a file or folder with that name."
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Size for the desktop icons"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "Small"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "Standard"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "Large"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Show the personal folder on the desktop"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Show the wastebasket icon on the desktop"
+
+#: desktopGrid.js:343
+msgid "New Folder"
+msgstr "New Folder"
+
+#: desktopGrid.js:345
+msgid "Paste"
+msgstr "Paste"
+
+#: desktopGrid.js:346
+msgid "Undo"
+msgstr "Undo"
+
+#: desktopGrid.js:347
+msgid "Redo"
+msgstr "Redo"
+
+#: desktopGrid.js:349
+msgid "Show Desktop in Files"
+msgstr "Show Desktop in Files"
+
+#: desktopGrid.js:350 fileItem.js:651
+msgid "Open in Terminal"
+msgstr "Open in Terminal"
+
+#: desktopGrid.js:352
+msgid "Change Background…"
+msgstr "Change Background…"
+
+#: desktopGrid.js:355
+msgid "Settings"
+msgstr "Settings"
+
+#: desktopGrid.js:653
+#, fuzzy
+msgid "Rename"
+msgstr "Rename…"
+
+#: desktopIconsUtil.js:61
+msgid "Command not found"
+msgstr "Command not found"
+
+#: fileItem.js:521
+msgid "Dont Allow Launching"
+msgstr "Dont Allow Launching"
+
+#: fileItem.js:523
+msgid "Allow Launching"
+msgstr "Allow Launching"
+
+#: fileItem.js:619
+msgid "Open"
+msgstr "Open"
+
+#: fileItem.js:623
+msgid "Open With Other Application"
+msgstr "Open With Other Application"
+
+#: fileItem.js:627
+msgid "Cut"
+msgstr "Cut"
+
+#: fileItem.js:628
+msgid "Copy"
+msgstr "Copy"
+
+#: fileItem.js:630
+msgid "Rename…"
+msgstr "Rename…"
+
+#: fileItem.js:631
+msgid "Move to Trash"
+msgstr "Move to Wastebasket"
+
+#: fileItem.js:641
+msgid "Empty Trash"
+msgstr "Empty Wastebasket"
+
+#: fileItem.js:647
+msgid "Properties"
+msgstr "Properties"
+
+#: fileItem.js:649
+msgid "Show in Files"
+msgstr "Show in Files"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Set the size for the desktop icons."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Show personal folder"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Show the personal folder on the desktop."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Show wastebasket icon"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Show the trash icon on the desktop."
+
#~ msgid "Application"
#~ msgstr "Application"
@@ -413,9 +604,6 @@ msgstr "Add Workspace"
#~ "Sets the position of the dock in the screen. Allowed values are 'right' "
#~ "or 'left'"
-#~ msgid "Icon size"
-#~ msgstr "Icon size"
-
#~ msgid "Sets icon size of the dock."
#~ msgstr "Sets icon size of the dock."
@@ -487,9 +675,6 @@ msgstr "Add Workspace"
#~ msgid "Display"
#~ msgstr "Display"
-#~ msgid "Display Settings"
-#~ msgstr "Display Settings"
-
#~ msgid "Do Not Disturb"
#~ msgstr "Do Not Disturb"
@@ -561,9 +746,6 @@ msgstr "Add Workspace"
#~ msgid "Native"
#~ msgstr "Native"
-#~ msgid "Cancel"
-#~ msgstr "Cancel"
-
#~ msgid "Ask the user for a default behaviour if true."
#~ msgstr "Ask the user for a default behaviour if true."
@@ -594,3 +776,9 @@ msgstr "Add Workspace"
#~ msgid "Configure display settings..."
#~ msgstr "Configure display settings…"
+
+#~ msgid "Enter file name…"
+#~ msgstr "Enter file name…"
+
+#~ msgid "OK"
+#~ msgstr "OK"
diff --git a/po/es.po b/po/es.po
index eaafe99e..8d638f09 100644
--- a/po/es.po
+++ b/po/es.po
@@ -1,4 +1,5 @@
# #-#-#-#-# 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.
@@ -12,10 +13,19 @@
# This file is distributed under the same license as the Dash to Dock package.
# Hugo Olabera <hugolabe@gmail.com>, 2015.
#
+# #-#-#-#-# es.po (1.0) #-#-#-#-#
+# 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 <EMAIL@ADDRESS>, YEAR.
+# Sergio Costas <rastersoft@gmail.com>, 2018.
+# Daniel Mustieles <daniel.mustieles@gmail.com>, 2018-2020.
+#
#, fuzzy
msgid ""
msgstr ""
"#-#-#-#-# 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"
@@ -42,6 +52,20 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.3\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"#-#-#-#-# es.po (1.0) #-#-#-#-#\n"
+"Project-Id-Version: 1.0\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-05-26 20:08+0000\n"
+"PO-Revision-Date: 2020-09-23 09:43+0200\n"
+"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
+"Language-Team: Spanish - Spain <gnome-es-list@gnome.org>\n"
+"Language: es_ES\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Gtranslator 3.38.0\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -82,10 +106,14 @@ msgstr "Añadir regla"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
-#: extensions/places-menu/placeDisplay.js:233
-#, javascript-format
+#: extensions/places-menu/placeDisplay.js:233 desktopIconsUtil.js:162
+#, fuzzy, javascript-format
msgid "Ejecting drive “%s” failed:"
-msgstr "Falló al expulsar el dispositivo «%s»:"
+msgstr ""
+"#-#-#-#-# es.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"Falló al expulsar el dispositivo «%s»:\n"
+"#-#-#-#-# es.po (1.0) #-#-#-#-#\n"
+"Falló al expulsar la unidad «%s»:"
#: extensions/drive-menu/extension.js:128
msgid "Removable devices"
@@ -144,7 +172,7 @@ msgstr "Falló al montar el volumen para «%s»"
msgid "Computer"
msgstr "Equipo"
-#: extensions/places-menu/placeDisplay.js:359
+#: extensions/places-menu/placeDisplay.js:359 fileItem.js:925
msgid "Home"
msgstr "Carpeta personal"
@@ -784,6 +812,208 @@ msgstr "Mostrar el icono Papelera"
msgid "Show mounted volumes and devices"
msgstr "Mostrar los dispositivos montados"
+#: desktopGrid.js:359
+#, fuzzy
+msgid "Display Settings"
+msgstr ""
+"#-#-#-#-# es.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"Configuración de pantalla\n"
+"#-#-#-#-# es.po (1.0) #-#-#-#-#\n"
+"Configuración de pantalla"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+#, fuzzy
+msgid "Icon size"
+msgstr ""
+"#-#-#-#-# es.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"Tamaño del icono\n"
+"#-#-#-#-# es.po (1.0) #-#-#-#-#\n"
+"Tamaño de los iconos"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Nombre de la nueva carpeta"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Crear"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Los nombres de carpetas no pueden contener «/»."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Una carpeta no se puede llamar «.»."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Una carpeta no se puede llamar «..»."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Las carpetas cuyo nombre empieza por «.» están ocultas."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Ya hay un archivo o carpeta con ese nombre."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Tamaño de los iconos del escritorio"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Pequeño"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Estándar"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Grande"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Mostrar la carpeta personal en el escritorio"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Mostrar la papelera en el escritorio"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Mostrar unidades montadas en el escritorio"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Nueva carpeta"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Nuevo documento"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Pegar"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Deshacer"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Rehacer"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Mostrar el escritorio en Archivos"
+
+#: desktopGrid.js:355 fileItem.js:721
+msgid "Open in Terminal"
+msgstr "Abrir en una terminal"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Cambiar el fondo..."
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Configuración"
+
+#: desktopGrid.js:692
+msgid "Rename"
+msgstr "Renombrar"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Comando no encontrado"
+
+#: fileItem.js:584
+msgid "Dont Allow Launching"
+msgstr "No permitir lanzar"
+
+#: fileItem.js:586
+msgid "Allow Launching"
+msgstr "Permitir lanzar"
+
+#: fileItem.js:682
+msgid "Open"
+msgstr "Abrir"
+
+#: fileItem.js:686
+msgid "Open With Other Application"
+msgstr "Abrir con otra aplicación"
+
+#: fileItem.js:688
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Lanza usando la tarjeta gráfica dedicada"
+
+#: fileItem.js:693
+msgid "Cut"
+msgstr "Cortar"
+
+#: fileItem.js:694
+msgid "Copy"
+msgstr "Copiar"
+
+#: fileItem.js:696
+msgid "Rename…"
+msgstr "Renombrar…"
+
+#: fileItem.js:697
+msgid "Move to Trash"
+msgstr "Mover a la papelera"
+
+#: fileItem.js:707
+msgid "Empty Trash"
+msgstr "Vaciar la papelera"
+
+#: fileItem.js:711
+msgid "Eject"
+msgstr "Expulsar"
+
+#: fileItem.js:717
+msgid "Properties"
+msgstr "Propiedades"
+
+#: fileItem.js:719
+msgid "Show in Files"
+msgstr "Mostrar en Files"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Establece el tamaño de los iconos del escritorio."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Mostrar la carpeta personal"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Mostrar la carpeta personal en el escritorio."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Mostrar la papelera"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Mostrar la papelera en el escritorio."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Mostrar unidades montadas"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Mostrar unidades montadas en el escritorio."
+
#~ msgid "Application"
#~ msgstr "Aplicación"
@@ -913,9 +1143,6 @@ msgstr "Mostrar los dispositivos montados"
#~ msgid "Display"
#~ msgstr "Pantalla"
-#~ msgid "Display Settings"
-#~ msgstr "Configuración de pantalla"
-
#~ msgid "File System"
#~ msgstr "Sistema de archivos"
@@ -963,9 +1190,6 @@ msgstr "Mostrar los dispositivos montados"
#~ "Configura la posición del tablero en la pantalla. Los valores permitidos "
#~ "son «right» (derecha) o «left» (izquierda)"
-#~ msgid "Icon size"
-#~ msgstr "Tamaño del icono"
-
#~ msgid "Sets icon size of the dock."
#~ msgstr "Configura el tamaño de los íconos del tablero."
@@ -1136,9 +1360,6 @@ msgstr "Mostrar los dispositivos montados"
#~ msgid "Alt Tab Behaviour"
#~ msgstr "Comportamiento de Alt+Tab"
-#~ msgid "Cancel"
-#~ msgstr "Cancelar"
-
#~ msgid "Notifications"
#~ msgstr "Notificaciones"
@@ -1172,3 +1393,36 @@ msgstr "Mostrar los dispositivos montados"
#~ msgid "Busy"
#~ msgstr "Ocupado"
+
+#~ msgid "Enter file name…"
+#~ msgstr "Introduzca el nombre del archivo…"
+
+#~ msgid "OK"
+#~ msgstr "Aceptar"
+
+#~ msgid "Huge"
+#~ msgstr "Inmenso"
+
+#~ msgid "Ok"
+#~ msgstr "Aceptar"
+
+#~ msgid "huge"
+#~ msgstr "inmenso"
+
+#~ msgid "Maximum width for the icons and filename."
+#~ msgstr "Ancho máximo de los iconos y el nombre de fichero."
+
+#~ msgid "Shows the Documents folder in the desktop."
+#~ msgstr "Muestra la carpeta Documentos en el escritorio."
+
+#~ msgid "Shows the Downloads folder in the desktop."
+#~ msgstr "Muestra la carpeta Descargas en el escritorio."
+
+#~ msgid "Shows the Music folder in the desktop."
+#~ msgstr "Muestra la carpeta Música en el escritorio."
+
+#~ msgid "Shows the Pictures folder in the desktop."
+#~ msgstr "Muestra la carpeta Imágenes en el escritorio."
+
+#~ msgid "Shows the Videos folder in the desktop."
+#~ msgstr "Muestra la carpeta Vídeos en el escritorio."
diff --git a/po/eu.po b/po/eu.po
index f3e26694..a006a082 100644
--- a/po/eu.po
+++ b/po/eu.po
@@ -1,4 +1,5 @@
# #-#-#-#-# eu.po (gnome-shell-extensions master) #-#-#-#-#
+# #-#-#-#-# eu.po (gnome-shell-extensions master) #-#-#-#-#
# Basque 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.
@@ -13,10 +14,17 @@
# This file is distributed under the same license as the Dash to Dock package.
# Ibai Oihanguren Sala <ibai@oihanguren.com>, 2020.
#
+# #-#-#-#-# eu.po (desktop-icons master) #-#-#-#-#
+# Basque translation for desktop-icons.
+# Copyright (C) 2019 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Asier Sarasua Garmendia <asier.sarasua@gmail.com>, 2019.
+#
#, fuzzy
msgid ""
msgstr ""
"#-#-#-#-# eu.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"#-#-#-#-# eu.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"
@@ -42,6 +50,17 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"#-#-#-#-# eu.po (desktop-icons master) #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-04-05 21:12+0200\n"
+"PO-Revision-Date: 2019-09-15 10:00+0100\n"
+"Last-Translator: Asier Sarasua Garmendia <asier.sarasua@gmail.com>\n"
+"Language-Team: Basque <librezale@librezale.eus>\n"
+"Language: eu\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -339,7 +358,7 @@ msgstr "Dash to Dock %s"
msgid "Trash"
msgstr "Zakarrontzia"
-#: locations.js:74
+#: locations.js:74 fileItem.js:641
msgid "Empty Trash"
msgstr "Hustu zakarrontzia"
@@ -806,6 +825,171 @@ msgstr "Erakusteko denbora-muga (s)"
msgid "Pressure threshold"
msgstr "Presio-atalasea"
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Karpetaren izen berria"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Sorrera"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Utzi"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Karpeta-izenak ezin du '/' karaktererik eduki."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Karpeta ezin da '.' gisa deitu."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Karpeta ezin da '..' gisa deitu."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Izenaren hasieran \".\" duten karpetak ezkutuan daude."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Badago izen hori duen fitxategi edo karpeta bat."
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Mahaigaineko ikonoen tamaina"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "Txikia"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "Arrunta"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "Handia"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Erakutsi karpeta pertsonala mahaigainean"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Erakutsi zakarrontziaren ikonoa mahaigainean"
+
+#: desktopGrid.js:343
+msgid "New Folder"
+msgstr "Karpeta berria"
+
+#: desktopGrid.js:345
+msgid "Paste"
+msgstr "Itsatsi"
+
+#: desktopGrid.js:346
+msgid "Undo"
+msgstr "Desegin"
+
+#: desktopGrid.js:347
+msgid "Redo"
+msgstr "Berregin"
+
+#: desktopGrid.js:349
+msgid "Show Desktop in Files"
+msgstr "Erakutsi mahaigaina Fitxategiak aplikazioan"
+
+#: desktopGrid.js:350 fileItem.js:651
+msgid "Open in Terminal"
+msgstr "Ireki terminalean"
+
+#: desktopGrid.js:352
+msgid "Change Background…"
+msgstr "Aldatu atzeko planoa…"
+
+#: desktopGrid.js:354
+msgid "Display Settings"
+msgstr "Pantailaren ezarpenak"
+
+#: desktopGrid.js:355
+msgid "Settings"
+msgstr "Ezarpenak"
+
+#: desktopGrid.js:653
+#, fuzzy
+msgid "Rename"
+msgstr "Aldatu izena…"
+
+#: desktopIconsUtil.js:61
+msgid "Command not found"
+msgstr "Ez da komandoa aurkitu"
+
+#: fileItem.js:521
+msgid "Dont Allow Launching"
+msgstr "Ez baimendu abiaraztea"
+
+#: fileItem.js:523
+msgid "Allow Launching"
+msgstr "Baimendu abiaraztea"
+
+#: fileItem.js:619
+msgid "Open"
+msgstr "Ireki"
+
+#: fileItem.js:623
+msgid "Open With Other Application"
+msgstr "Ireki beste aplikazio batekin"
+
+#: fileItem.js:627
+msgid "Cut"
+msgstr "Ebaki"
+
+#: fileItem.js:628
+msgid "Copy"
+msgstr "Kopiatu"
+
+#: fileItem.js:630
+msgid "Rename…"
+msgstr "Aldatu izena…"
+
+#: fileItem.js:631
+msgid "Move to Trash"
+msgstr "Bota zakarrontzira"
+
+#: fileItem.js:647
+msgid "Properties"
+msgstr "Propietateak"
+
+#: fileItem.js:649
+msgid "Show in Files"
+msgstr "Erakutsi Fitxategiak aplikazioan"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Ikonoaren tamaina"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Ezarri mahaigaineko ikonoen tamaina."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Erakutsi karpeta pertsonala"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Erakutsi karpeta pertsonala mahaigainean."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Erakutsi zakarrontziaren ikonoa"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Erakutsi zakarrontziaren ikonoa mahaigainean."
+
#~ msgid "Application"
#~ msgstr "Aplikazioa"
@@ -960,3 +1144,9 @@ msgstr "Presio-atalasea"
#~ msgid "Busy"
#~ msgstr "Lanpetuta"
+
+#~ msgid "Enter file name…"
+#~ msgstr "Sartu fitxategi-izena…"
+
+#~ msgid "OK"
+#~ msgstr "Ados"
diff --git a/po/fa.po b/po/fa.po
index a896e085..f36354ef 100644
--- a/po/fa.po
+++ b/po/fa.po
@@ -1,11 +1,20 @@
+# #-#-#-#-# fa.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#
# Persian translation for gnome-shell-extensions.
# Copyright (C) 2011 Iranian Free Software Users Group (IFSUG.org) translation team.
# This file is distributed under the same license as the gnome-shell-extensions package.
# Arash Mousavi <mousavi.arash@gmail.com>, 2011-2017.
# Danial Behzadi <dani.behzi@ubuntu.com>, 2018-2020.
#
+# #-#-#-#-# fa.po (desktop-icons master) #-#-#-#-#
+# Persian translation for desktop-icons.
+# Copyright (C) 2020 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Danial Behzadi <dani.behzi@ubuntu.com>, 2020.
+#
+#, fuzzy
msgid ""
msgstr ""
+"#-#-#-#-# fa.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"
@@ -20,6 +29,19 @@ msgstr ""
"X-Poedit-SourceCharset: utf-8\n"
"X-Generator: Poedit 2.3\n"
"Plural-Forms: nplurals=1; plural=0;\n"
+"#-#-#-#-# fa.po (desktop-icons master) #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-04-06 14:18+0000\n"
+"PO-Revision-Date: 2020-04-06 18:21+0000\n"
+"Language-Team: Persian <fa@li.org>\n"
+"Language: fa\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Last-Translator: \n"
+"X-Generator: Poedit 2.3\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -46,8 +68,8 @@ msgid ""
"A list of strings, each containing an application id (desktop file name), "
"followed by a colon and the workspace number"
msgstr ""
-"فهرستی از رشته‌ها، هرکدام حاوی شناسه‌ی یک برنامه (نام پرونده رومیزی)، در ادامه‌ی یک "
-"ویرگول و شماره‌ی فضای کاری"
+"فهرستی از رشته‌ها، هرکدام حاوی شناسه‌ی یک برنامه (نام پرونده رومیزی)، در "
+"ادامه‌ی یک ویرگول و شماره‌ی فضای کاری"
#: extensions/auto-move-windows/prefs.js:35
msgid "Workspace Rules"
@@ -79,12 +101,12 @@ msgstr "استفاده از صفحه بیشتر برای پنجره"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:6
msgid ""
"Try to use more screen for placing window thumbnails by adapting to screen "
-"aspect ratio, and consolidating them further to reduce the bounding box. This "
-"setting applies only with the natural placement strategy."
+"aspect ratio, and consolidating them further to reduce the bounding box. "
+"This setting applies only with the natural placement strategy."
msgstr ""
"Try to use more screen for placing window thumbnails by adapting to screen "
-"aspect ratio, and consolidating them further to reduce the bounding box. This "
-"setting applies only with the natural placement strategy."
+"aspect ratio, and consolidating them further to reduce the bounding box. "
+"This setting applies only with the natural placement strategy."
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:11
msgid "Place window captions on top"
@@ -92,15 +114,16 @@ msgstr "قراردادن عنوان پنجره در بالا"
#: extensions/native-window-placement/org.gnome.shell.extensions.native-window-placement.gschema.xml:12
msgid ""
-"If true, place window captions on top the respective thumbnail, overriding shell "
-"default of placing it at the bottom. Changing this setting requires restarting "
-"the shell to have any effect."
+"If true, place window captions on top the respective thumbnail, overriding "
+"shell default of placing it at the bottom. Changing this setting requires "
+"restarting the shell to have any effect."
msgstr ""
-"اگر بر روی درست باشد، عنوان پنجره را بالای تصویر آن قرار می‌دهد، که حالت پیش‌فرض "
-"شل در پایین را تغییر می‌دهد. تغییر این گزینه، نیاز به راه‌اندازی مجدد شل دارد تا "
-"تاثیر بگذارد."
+"اگر بر روی درست باشد، عنوان پنجره را بالای تصویر آن قرار می‌دهد، که حالت "
+"پیش‌فرض شل در پایین را تغییر می‌دهد. تغییر این گزینه، نیاز به راه‌اندازی مجدد "
+"شل دارد تا تاثیر بگذارد."
-#: extensions/places-menu/extension.js:89 extensions/places-menu/extension.js:93
+#: extensions/places-menu/extension.js:89
+#: extensions/places-menu/extension.js:93
msgid "Places"
msgstr "مکان‌ها"
@@ -196,8 +219,8 @@ msgid ""
"Decides when to group windows from the same application on the window list. "
"Possible values are “never”, “auto” and “always”."
msgstr ""
-"تصمیم می‌گیرد چه زمانی پنجره‌های یک برنامه در فهرست پنجره‌ها گروه شوند. مقدارهای "
-"ممکن عبارتند از «never»، «auto» و «always»."
+"تصمیم می‌گیرد چه زمانی پنجره‌های یک برنامه در فهرست پنجره‌ها گروه شوند. "
+"مقدارهای ممکن عبارتند از «never»، «auto» و «always»."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:20
#: extensions/window-list/prefs.js:100
@@ -206,7 +229,8 @@ msgstr "نمایش پنجره‌ها از تمام فضاهای کاری"
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:21
msgid "Whether to show windows from all workspaces or only the current one."
-msgstr "این که پنجره‌ها از تمام فضاهای کاری نمایش داده شود یا فقط فضای کاری فعلی."
+msgstr ""
+"این که پنجره‌ها از تمام فضاهای کاری نمایش داده شود یا فقط فضای کاری فعلی."
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:27
msgid "Show the window list on all monitors"
@@ -214,11 +238,11 @@ msgstr "نمایش فهرست پنجره‌ها در تمام نمایشگرها
#: extensions/window-list/org.gnome.shell.extensions.window-list.gschema.xml:28
msgid ""
-"Whether to show the window list on all connected monitors or only on the primary "
-"one."
+"Whether to show the window list on all connected monitors or only on the "
+"primary one."
msgstr ""
-"اینکه آیا فهرست پنجره‌ها در تمام نمایشگرهای متصل نمایش داده شود یا فقط در نمایشگر "
-"اصلی."
+"اینکه آیا فهرست پنجره‌ها در تمام نمایشگرهای متصل نمایش داده شود یا فقط در "
+"نمایشگر اصلی."
#: extensions/window-list/prefs.js:29
msgid "Window Grouping"
@@ -258,6 +282,179 @@ msgstr "فضای کاری %Id"
msgid "Add Workspace"
msgstr "افزودن فضای‌کاری"
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+#, fuzzy
+msgid "Icon size"
+msgstr ""
+"#-#-#-#-# fa.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n"
+"اندازه شمایل\n"
+"#-#-#-#-# fa.po (desktop-icons master) #-#-#-#-#\n"
+"اندازهٔ نقشک"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "نام شاخهٔ جدید"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "ایجاد"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "لغو"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "نام شاخه‌ها نمی‌تواند شامل \"/\" شود."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "یک شاخه را نمی‌توان «.» نامگذاری کرد."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "یک شاخه را نمی‌توان «..» نامگذاری کرد."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "شاخه‌هایی با «.» در ابتدای نامشان، مخفیند."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "پرونده یا شاخه‌ای با همان نام موجود است."
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "اندازه برای نقشک‌های میزکار"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "کوچک"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "استاندارد"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "بزرگ"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "نمایش شاخهٔ شخصی در میزکار"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "نمایش نقشک زباله‌دان در میزکار"
+
+#: desktopGrid.js:343
+msgid "New Folder"
+msgstr "شاخه جدید"
+
+#: desktopGrid.js:345
+msgid "Paste"
+msgstr "چسباندن"
+
+#: desktopGrid.js:346
+msgid "Undo"
+msgstr "برگردان"
+
+#: desktopGrid.js:347
+msgid "Redo"
+msgstr "انجام دوباره"
+
+#: desktopGrid.js:349
+msgid "Show Desktop in Files"
+msgstr "نمایش میزکار در پرونده‌ها"
+
+#: desktopGrid.js:350 fileItem.js:651
+msgid "Open in Terminal"
+msgstr "گشودن در پایانه"
+
+#: desktopGrid.js:352
+msgid "Change Background…"
+msgstr "تغییر پس‌زمینه…"
+
+#: desktopGrid.js:354
+msgid "Display Settings"
+msgstr "تنظیمات نمایشگر"
+
+#: desktopGrid.js:355
+msgid "Settings"
+msgstr "تنظیمات"
+
+#: desktopGrid.js:653
+msgid "Rename"
+msgstr "تغییر نام"
+
+#: desktopIconsUtil.js:61
+msgid "Command not found"
+msgstr "فرمان پیدا نشد"
+
+#: fileItem.js:521
+msgid "Dont Allow Launching"
+msgstr "اجازه ندادن به اجرا"
+
+#: fileItem.js:523
+msgid "Allow Launching"
+msgstr "اجازهٔ اجرا"
+
+#: fileItem.js:619
+msgid "Open"
+msgstr "گشودن"
+
+#: fileItem.js:623
+msgid "Open With Other Application"
+msgstr "گشودن با برنامه‌ای دیگر"
+
+#: fileItem.js:627
+msgid "Cut"
+msgstr "برش"
+
+#: fileItem.js:628
+msgid "Copy"
+msgstr "رونوشت"
+
+#: fileItem.js:630
+msgid "Rename…"
+msgstr "تغییر نام…"
+
+#: fileItem.js:631
+msgid "Move to Trash"
+msgstr "انداختن در زباله‌دان"
+
+#: fileItem.js:641
+msgid "Empty Trash"
+msgstr "خالی کردن زباله‌دان"
+
+#: fileItem.js:647
+msgid "Properties"
+msgstr "ویژگی‌ها"
+
+#: fileItem.js:649
+msgid "Show in Files"
+msgstr "نمایش در پرونده‌ها"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "تنظیم اندازه برای نقشک‌های میزکار."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "نمایش شاخهٔ شخصی"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "نمایش شاخهٔ شخصی در میزکار."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "نمایش نقشک زباله‌دان"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "نمایش نقشک زباله‌دان در میزکار."
+
#~ msgid "Application"
#~ msgstr "برنامه"
@@ -276,7 +473,8 @@ msgstr "افزودن فضای‌کاری"
#~ msgid "Attach modal dialog to the parent window"
#~ msgstr "اتصال محاوره modal به پنجره والد"
-#~ msgid "This key overrides the key in org.gnome.mutter when running GNOME Shell."
+#~ msgid ""
+#~ "This key overrides the key in org.gnome.mutter when running GNOME Shell."
#~ msgstr ""
#~ "این کلید، کلید org.gnome.mutter را در هنگام اجرای گنوم‌شل بازنویسی می‌کند."
@@ -284,8 +482,8 @@ msgstr "افزودن فضای‌کاری"
#~ msgstr "چینش دکمه‌ها در نوار عنوان"
#~ msgid ""
-#~ "This key overrides the key in org.gnome.desktop.wm.preferences when running "
-#~ "GNOME Shell."
+#~ "This key overrides the key in org.gnome.desktop.wm.preferences when "
+#~ "running GNOME Shell."
#~ msgstr ""
#~ "این کلید، کلید org.gnome.desktop.wm.preferences را در هنگام اجرای گنوم‌شل "
#~ "بازنویسی می‌کند."
@@ -299,7 +497,8 @@ msgstr "افزودن فضای‌کاری"
#~ msgid "Delay focus changes in mouse mode until the pointer stops moving"
#~ msgstr ""
-#~ "به تاخیر انداختن تغییر تمرکز در حالت موشی تا زمانی که نشانگر از حرکت باز ایستد"
+#~ "به تاخیر انداختن تغییر تمرکز در حالت موشی تا زمانی که نشانگر از حرکت باز "
+#~ "ایستد"
#~ msgid "Thumbnail only"
#~ msgstr "تنها تصویر بندانگشتی"
@@ -323,18 +522,18 @@ msgstr "افزودن فضای‌کاری"
#~ msgstr "متن خوش‌آمدِ جایگزین."
#~ msgid ""
-#~ "If not empty, it contains the text that will be shown when clicking on the "
-#~ "panel."
+#~ "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"
+#~ "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 its possible to customize the greeting message."
#~ msgstr ""
#~ "هدف مثال نمایش چگونگی ساخت افزونه‌های خوش‌رفتار برای پوسته است، پس خودش "
@@ -370,8 +569,8 @@ msgstr "افزودن فضای‌کاری"
#~ msgstr "انتقالِ انتخاب فعلی به بالا قبل از بستن پنجره واشو"
#~ msgid ""
-#~ "The Alternate Tab can be used in different modes, that affect the way windows "
-#~ "are chosen and presented."
+#~ "The Alternate Tab can be used in different modes, that affect the way "
+#~ "windows are chosen and presented."
#~ msgstr ""
#~ "«جای‌گزین Tab» می‌تواند در حالت‌های مختلفی استفاده شود، که در نحوه باز شدن و "
#~ "انتخاب پنجره‌ها تاثیر می‌گذارد."
@@ -397,9 +596,6 @@ msgstr "افزودن فضای‌کاری"
#~ msgid "Remove from Favorites"
#~ msgstr "حذف از علاقه‌مندی‌ها"
-#~ msgid "Icon size"
-#~ msgstr "اندازه شمایل"
-
#~ msgid "Enable/disable autohide"
#~ msgstr "فعال/غیرفعال کردن مخفی‌سازی خودکار"
diff --git a/po/fi.po b/po/fi.po
index e5ab20ef..aec2626b 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -1,3 +1,4 @@
+# #-#-#-#-# fi.po (gnome-shell-extensions) #-#-#-#-#
# Finnish translation of gnome-shell-extensions.
# Copyright (C) 2011 Ville-Pekka Vainio
# This file is distributed under the same license as the gnome-shell-extensions package.
@@ -7,8 +8,16 @@
# Ville-Pekka Vainio <vpvainio@iki.fi>, 2011.
# Jiri Grönroos <jiri.gronroos+l10n@iki.fi>, 2012, 2013, 2014, 2015, 2017.
#
+# #-#-#-#-# fi.po (desktop-icons master) #-#-#-#-#
+# Finnish translation for desktop-icons.
+# Copyright (C) 2018 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Jiri Grönroos <jiri.gronroos@iki.fi>, 2018.
+#
+#, fuzzy
msgid ""
msgstr ""
+"#-#-#-#-# fi.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"
@@ -24,6 +33,20 @@ msgstr ""
"X-Generator: Poedit 2.0.6\n"
"X-Project-Style: gnome\n"
"X-POT-Import-Date: 2012-03-05 15:06:12+0000\n"
+"#-#-#-#-# fi.po (desktop-icons master) #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-05-26 20:08+0000\n"
+"PO-Revision-Date: 2020-08-16 17:43+0300\n"
+"Last-Translator: Jiri Grönroos <jiri.gronroos+l10n@iki.fi>\n"
+"Language-Team: Finnish <lokalisointi-lista@googlegroups.com>\n"
+"Language: fi\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 2.4.1\n"
#: data/gnome-classic.desktop.in:3
msgid "GNOME Classic"
@@ -63,10 +86,14 @@ msgstr "Lisää sääntö"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
-#: extensions/places-menu/placeDisplay.js:233
-#, javascript-format
+#: extensions/places-menu/placeDisplay.js:233 desktopIconsUtil.js:162
+#, fuzzy, javascript-format
msgid "Ejecting drive “%s” failed:"
-msgstr "Aseman “%s” irrottaminen epäonnistui:"
+msgstr ""
+"#-#-#-#-# fi.po (gnome-shell-extensions) #-#-#-#-#\n"
+"Aseman “%s” irrottaminen epäonnistui:\n"
+"#-#-#-#-# fi.po (desktop-icons master) #-#-#-#-#\n"
+"Aseman “%s” avaaminen epäonnistui:"
#: extensions/drive-menu/extension.js:128
msgid "Removable devices"
@@ -124,7 +151,7 @@ msgstr "Taltion “%s” liittäminen epäonnistui"
msgid "Computer"
msgstr "Tietokone"
-#: extensions/places-menu/placeDisplay.js:359
+#: extensions/places-menu/placeDisplay.js:359 fileItem.js:925
msgid "Home"
msgstr "Koti"
@@ -266,6 +293,203 @@ msgstr "Työtila %d"
msgid "Add Workspace"
msgstr "Lisää työtila"
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Näytön asetukset"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+#, fuzzy
+msgid "Icon size"
+msgstr ""
+"#-#-#-#-# fi.po (gnome-shell-extensions) #-#-#-#-#\n"
+"Kuvakkeiden koko\n"
+"#-#-#-#-# fi.po (desktop-icons master) #-#-#-#-#\n"
+"Kuvakekoko"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Uusi kansion nimi"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Luo"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Peru"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Kansion nimi ei voi sisältää merkkiä “/”."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Kansion nimi ei voi olla “.”."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Kansion nimi ei voi olla “..”."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Kansiot, joiden nimi alkaa merkillä “.”, ovat piilotettuja."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Nimi on jo toisen tiedoston tai kansion käytössä."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Työpöydän kuvakkeiden koko"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Pieni"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Normaali"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Suuri"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Näytä kotikansio työpöydällä"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Näytä roskakorin kuvake työpöydällä"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Näytä liitetyt asemat työpöydällä"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Uusi kansio"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Uusi asiakirja"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Liitä"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Kumoa"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Tee uudeleen"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Näytä työpöytä tiedostonhallinnassa"
+
+#: desktopGrid.js:355 fileItem.js:721
+msgid "Open in Terminal"
+msgstr "Avaa päätteessä"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Vaihda taustakuva…"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Asetukset"
+
+#: desktopGrid.js:692
+msgid "Rename"
+msgstr "Nimeä uudelleen"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Komentoa ei löydy"
+
+#: fileItem.js:584
+msgid "Dont Allow Launching"
+msgstr "Älä salli käynnistämistä"
+
+#: fileItem.js:586
+msgid "Allow Launching"
+msgstr "Salli käynnistäminen"
+
+#: fileItem.js:682
+msgid "Open"
+msgstr "Avaa"
+
+#: fileItem.js:686
+msgid "Open With Other Application"
+msgstr "Avaa toisella sovelluksella"
+
+#: fileItem.js:688
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Käynnistä käyttäen erillistä näytönohjainta"
+
+#: fileItem.js:693
+msgid "Cut"
+msgstr "Leikkaa"
+
+#: fileItem.js:694
+msgid "Copy"
+msgstr "Kopioi"
+
+#: fileItem.js:696
+msgid "Rename…"
+msgstr "Nimeä uudelleen…"
+
+#: fileItem.js:697
+msgid "Move to Trash"
+msgstr "Siirrä roskakoriin"
+
+#: fileItem.js:707
+msgid "Empty Trash"
+msgstr "Tyhjennä roskakori"
+
+#: fileItem.js:711
+msgid "Eject"
+msgstr "Poista asemasta"
+
+#: fileItem.js:717
+msgid "Properties"
+msgstr "Ominaisuudet"
+
+#: fileItem.js:719
+msgid "Show in Files"
+msgstr "Näytä tiedostonhallinnassa"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Aseta työpöytäkuvakkeiden koko."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Näytä kotikansio"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Näytä kotikansio työpöydällä."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Näytä roskakorin kuvake"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Näytä roskakorin kuvake työpöydällä."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Näytä liitetyt asemat"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Näytä liitetyt asemat työpöydällä."
+
#~ msgid "Application"
#~ msgstr "Sovellus"
@@ -357,9 +581,6 @@ msgstr "Lisää työtila"
#~ msgid "Display"
#~ msgstr "Näyttö"
-#~ msgid "Display Settings"
-#~ msgstr "Näytön asetukset"
-
#~ msgid "Drag here to add favorites"
#~ msgstr "Raahaa tähän lisätäksesi suosikkeihin"
@@ -381,9 +602,6 @@ msgstr "Lisää työtila"
#~ msgstr ""
#~ "Asettaa telakan sijainnin näytöllä. Sallitut arvot ovat 'right' tai 'left'"
-#~ msgid "Icon size"
-#~ msgstr "Kuvakkeiden koko"
-
#~ msgid "Sets icon size of the dock."
#~ msgstr "Asettaa telakan kuvakkeiden koon."
@@ -428,3 +646,12 @@ msgstr "Lisää työtila"
#~ msgid "Workspace & Icons"
#~ msgstr "Työtila ja kuvakkeet"
+
+#~ msgid "Enter file name…"
+#~ msgstr "Anna tiedostonimi…"
+
+#~ msgid "OK"
+#~ msgstr "OK"
+
+#~ msgid "Huge"
+#~ msgstr "Valtava"
diff --git a/po/fr.po b/po/fr.po
index b1849159..d525a5a8 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -1,4 +1,5 @@
# #-#-#-#-# 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.
@@ -12,10 +13,20 @@
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
+# #-#-#-#-# fr.po (desktop-icons master) #-#-#-#-#
+# French translation for desktop-icons.
+# Copyright (C) 2018-2020 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# ghentdebian <ghent.debian@gmail.com>, 2018.
+# Charles Monzat <charles.monzat@numericable.fr>, 2018.
+# Claude Paroz <claude@2xlibre.net>, 2020.
+# Sylvestris <sylvestris@tutanota.com>, 2020.
+#
#, fuzzy
msgid ""
msgstr ""
"#-#-#-#-# 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"
@@ -40,6 +51,20 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.2.4\n"
+"#-#-#-#-# fr.po (desktop-icons master) #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-08-25 19:35+0000\n"
+"PO-Revision-Date: 2020-09-20 10:54+0200\n"
+"Last-Translator: Sylvestris <sylvestris@tutanota.com>\n"
+"Language-Team: GNOME French Team <gnomefr@traduc.org>\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: Gtranslator 3.36.0\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -80,10 +105,14 @@ msgstr "Ajouter une règle"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
-#: extensions/places-menu/placeDisplay.js:233
-#, javascript-format
+#: extensions/places-menu/placeDisplay.js:233 desktopIconsUtil.js:162
+#, fuzzy, javascript-format
msgid "Ejecting drive “%s” failed:"
-msgstr "Léjection du disque « %s » a échoué :"
+msgstr ""
+"#-#-#-#-# fr.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"Léjection du disque « %s » a échoué :\n"
+"#-#-#-#-# fr.po (desktop-icons master) #-#-#-#-#\n"
+"Échec de léjection du disque « %s » :"
#: extensions/drive-menu/extension.js:128
msgid "Removable devices"
@@ -143,7 +172,7 @@ msgstr "Impossible de monter le volume « %s »"
msgid "Computer"
msgstr "Ordinateur"
-#: extensions/places-menu/placeDisplay.js:359
+#: extensions/places-menu/placeDisplay.js:359 fileItem.js:927
msgid "Home"
msgstr "Dossier personnel"
@@ -788,6 +817,198 @@ msgstr "Délai dapparition (s)"
msgid "Pressure threshold"
msgstr "Seuil de pression"
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Nouveau nom de dossier"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Créer"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Annuler"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Les noms de dossiers ne peuvent pas contenir « / »."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Un dossier ne peut pas être nommé « . »."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Un dossier ne peut pas être nommé « .. »."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Les dossiers dont le nom commence par « . » sont masqués."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Il existe déjà un fichier ou dossier ayant ce nom."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Taille des icônes du bureau"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Petite"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Normale"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Grande"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Montrer le dossier personnel sur le bureau"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Montrer la corbeille sur le bureau"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Montrer les disques montés sur le bureau"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Nouveau dossier"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Nouveau document"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Coller"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Annuler"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Rétablir"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Afficher le bureau dans Fichiers"
+
+#: desktopGrid.js:355 fileItem.js:723
+msgid "Open in Terminal"
+msgstr "Ouvrir dans un terminal"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Changer larrière-plan…"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Configuration daffichage"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Paramètres"
+
+#: desktopGrid.js:699
+msgid "Rename"
+msgstr "Renommer"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Commande introuvable"
+
+#: fileItem.js:586
+msgid "Dont Allow Launching"
+msgstr "Ne pas autoriser le lancement"
+
+#: fileItem.js:588
+msgid "Allow Launching"
+msgstr "Autoriser le lancement"
+
+#: fileItem.js:684
+msgid "Open"
+msgstr "Ouvrir"
+
+#: fileItem.js:688
+msgid "Open With Other Application"
+msgstr "Ouvrir avec une autre application"
+
+#: fileItem.js:690
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Lancer en utilisant une carte graphique dédiée"
+
+#: fileItem.js:695
+msgid "Cut"
+msgstr "Couper"
+
+#: fileItem.js:696
+msgid "Copy"
+msgstr "Copier"
+
+#: fileItem.js:698
+msgid "Rename…"
+msgstr "Renommer…"
+
+#: fileItem.js:699
+msgid "Move to Trash"
+msgstr "Mettre à la corbeille"
+
+#: fileItem.js:709
+msgid "Empty Trash"
+msgstr "Vider la corbeille"
+
+#: fileItem.js:713
+msgid "Eject"
+msgstr "Éjecter"
+
+#: fileItem.js:719
+msgid "Properties"
+msgstr "Propriétés"
+
+#: fileItem.js:721
+msgid "Show in Files"
+msgstr "Montrer dans Fichiers"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Taille dicônes"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Définir la taille des icônes du bureau."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Montrer le dossier personnel"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Montrer le dossier personnel sur le bureau."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Montrer licône de la corbeille"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Montrer la corbeille sur le bureau."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Montrer les disques montés"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+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"
diff --git a/po/fur.po b/po/fur.po
index c3a071c3..d1fdf148 100644
--- a/po/fur.po
+++ b/po/fur.po
@@ -1,10 +1,19 @@
+# #-#-#-#-# fur.po (gnome-shell-extensions master) #-#-#-#-#
# Friulian 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.
# Fabio Tomat <f.t.public@gmail.com>, 2013.
#
+# #-#-#-#-# fur.po (desktop-icons master) #-#-#-#-#
+# Friulian translation for desktop-icons.
+# Copyright (C) 2019 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Fabio Tomat <f.t.public@gmail.com>, 2019.
+#
+#, fuzzy
msgid ""
msgstr ""
+"#-#-#-#-# fur.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.4.1\n"
+"#-#-#-#-# fur.po (desktop-icons master) #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-05-26 20:08+0000\n"
+"PO-Revision-Date: 2020-09-08 10:04+0200\n"
+"Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n"
+"Language-Team: Friulian <fur@li.org>\n"
+"Language: fur\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.4.1\n"
#: data/gnome-classic.desktop.in:3
msgid "GNOME Classic"
@@ -56,10 +78,14 @@ msgstr "Zonte regule"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
-#: extensions/places-menu/placeDisplay.js:233
-#, javascript-format
+#: extensions/places-menu/placeDisplay.js:233 desktopIconsUtil.js:162
+#, fuzzy, javascript-format
msgid "Ejecting drive “%s” failed:"
-msgstr "No si è rivâts a parâ fûr la unitât “%s”»:"
+msgstr ""
+"#-#-#-#-# fur.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"No si è rivâts a parâ fûr la unitât “%s”»:\n"
+"#-#-#-#-# fur.po (desktop-icons master) #-#-#-#-#\n"
+"No si è rivâts a parâ fûr la unitât “%s”:"
#: extensions/drive-menu/extension.js:128
msgid "Removable devices"
@@ -118,7 +144,7 @@ msgstr "No si è rivâts a montâ il volum par “%s”"
msgid "Computer"
msgstr "Computer"
-#: extensions/places-menu/placeDisplay.js:359
+#: extensions/places-menu/placeDisplay.js:359 fileItem.js:925
msgid "Home"
msgstr "Home"
@@ -258,6 +284,203 @@ msgstr "Spazi di lavôr %d"
msgid "Add Workspace"
msgstr "Zonte spazi di lavôr"
+#: desktopGrid.js:359
+#, fuzzy
+msgid "Display Settings"
+msgstr ""
+"#-#-#-#-# fur.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"Impostazions Visôr\n"
+"#-#-#-#-# fur.po (desktop-icons master) #-#-#-#-#\n"
+"Impostazions visôr"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Gnûf non de cartele"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Cree"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Anule"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "I nons des cartelis no puedin contignî il caratar “/”."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Une cartele no pues jessi clamade “.”."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Une cartele no pues jessi clamade “..”."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Lis cartelis cul “.” al inizi dal lôr non a son platadis."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Un file o une cartele cul stes non e esist za."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Dimension pes iconis dal scritori"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Piçule"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Standard"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Largje"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Mostre la cartele personâl intal scritori"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Mostre la icone de scovacere intal scritori"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Mostre lis unitâts montadis tal scritori"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Gnove cartele"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Gnûf document"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Tache"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Anule"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Torne fâ"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Mostre Scritori in File"
+
+#: desktopGrid.js:355 fileItem.js:721
+msgid "Open in Terminal"
+msgstr "Vierç in Terminâl"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Cambie sfont…"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Impostazions"
+
+#: desktopGrid.js:692
+msgid "Rename"
+msgstr "Cambie non"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Comant no cjatât"
+
+#: fileItem.js:584
+msgid "Dont Allow Launching"
+msgstr "No sta permeti inviament"
+
+#: fileItem.js:586
+msgid "Allow Launching"
+msgstr "Permet inviament"
+
+#: fileItem.js:682
+msgid "Open"
+msgstr "Vierç"
+
+#: fileItem.js:686
+msgid "Open With Other Application"
+msgstr "Vierç cuntune altre aplicazion"
+
+#: fileItem.js:688
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Invie doprant une schede grafiche dedicade"
+
+#: fileItem.js:693
+msgid "Cut"
+msgstr "Taie"
+
+#: fileItem.js:694
+msgid "Copy"
+msgstr "Copie"
+
+#: fileItem.js:696
+msgid "Rename…"
+msgstr "Cambie non…"
+
+#: fileItem.js:697
+msgid "Move to Trash"
+msgstr "Sposte te scovacere"
+
+#: fileItem.js:707
+msgid "Empty Trash"
+msgstr "Disvuede scovacere"
+
+#: fileItem.js:711
+msgid "Eject"
+msgstr "Pare fûr"
+
+#: fileItem.js:717
+msgid "Properties"
+msgstr "Propietâts"
+
+#: fileItem.js:719
+msgid "Show in Files"
+msgstr "Mostre in File"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Dimension icone"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Stabilìs la dimension pes iconis dal scritori."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Mostre cartele personâl"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Mostre la cartele personâl intal scritori."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Mostre la icone de scovacere"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Mostre la icone de scovacere intal scritori."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Mostre unitâts montadis"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Mostre lis unitâts montadis intal scritori."
+
#~ msgid "Application"
#~ msgstr "Aplicazion"
@@ -368,5 +591,8 @@ msgstr "Zonte spazi di lavôr"
#~ msgid "Display"
#~ msgstr "Visôr"
-#~ msgid "Display Settings"
-#~ msgstr "Impostazions Visôr"
+#~ msgid "Enter file name…"
+#~ msgstr "Inserìs il non dal file…"
+
+#~ msgid "OK"
+#~ msgstr "Va ben"
diff --git a/po/hr.po b/po/hr.po
index 6accc6e0..c35afb01 100644
--- a/po/hr.po
+++ b/po/hr.po
@@ -1,10 +1,19 @@
+# #-#-#-#-# hr.po (gnome-shell-extensions master) #-#-#-#-#
# Croatian translation for gnome-shell-extensions.
# Copyright (C) 2017 gnome-shell-extensions's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-shell-extensions package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
+# #-#-#-#-# hr.po (gnome-shell-extension-desktop-icons) #-#-#-#-#
+# Croatian translation for gnome-shell-extension-desktop-icons
+# Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019
+# This file is distributed under the same license as the gnome-shell-extension-desktop-icons package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
+#
+#, fuzzy
msgid ""
msgstr ""
+"#-#-#-#-# hr.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"
@@ -19,6 +28,20 @@ msgstr ""
"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"
+"#-#-#-#-# hr.po (gnome-shell-extension-desktop-icons) #-#-#-#-#\n"
+"Project-Id-Version: gnome-shell-extension-desktop-icons\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-05-26 20:08+0000\n"
+"PO-Revision-Date: 2020-09-10 17:48+0200\n"
+"Last-Translator: gogo <trebelnik2@gmail.com>\n"
+"Language-Team: Croatian <hr@li.org>\n"
+"Language: hr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2019-03-27 09:36+0000\n"
+"X-Generator: Poedit 2.3\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -58,10 +81,14 @@ msgstr "Dodaj pravilo"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
-#: extensions/places-menu/placeDisplay.js:233
-#, javascript-format
+#: extensions/places-menu/placeDisplay.js:233 desktopIconsUtil.js:162
+#, fuzzy, javascript-format
msgid "Ejecting drive “%s” failed:"
-msgstr "Izbacivanje uređaja “%s” neuspjelo:"
+msgstr ""
+"#-#-#-#-# hr.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"Izbacivanje uređaja “%s” neuspjelo:\n"
+"#-#-#-#-# hr.po (gnome-shell-extension-desktop-icons) #-#-#-#-#\n"
+"Neuspjelo izbacivanje “%s” uređaja:"
#: extensions/drive-menu/extension.js:128
msgid "Removable devices"
@@ -120,7 +147,7 @@ msgstr "Neuspješno montiranje uređaja “%s”"
msgid "Computer"
msgstr "Računalo"
-#: extensions/places-menu/placeDisplay.js:359
+#: extensions/places-menu/placeDisplay.js:359 fileItem.js:925
msgid "Home"
msgstr "Osobna mapa"
@@ -260,6 +287,198 @@ msgstr "Radni prostor %d"
msgid "Add Workspace"
msgstr "Dodaj radni prostor"
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Naziv nove mape"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Stvori"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Odustani"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Naziv mape ne može sadržavati “/”."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Mapa se ne može nazvati “.”."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Mapa se ne može nazvati “..”."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Mape koje sadrže “.” na početku njihovih naziva su skrivene."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Već postoji datoteka ili mapa s tim nazivom."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Veličina ikona radne površine"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Male"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Standardne"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Velike"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Prikaži osobnu mapu na radnoj površini"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Prikaži mapu smeća na radnoj površini"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Prikaži montirane uređaje na radnoj površini"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Nova mapa"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Novi dokument"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Zalijepi"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Poništi"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Ponovi"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Prikaži radnu površinu u Datotekama"
+
+#: desktopGrid.js:355 fileItem.js:721
+msgid "Open in Terminal"
+msgstr "Otvori u Terminalu"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Promijeni pozadinu…"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Postavke zaslona"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Postavke"
+
+#: desktopGrid.js:692
+msgid "Rename"
+msgstr "Preimenuj"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Naredba nije pronađena"
+
+#: fileItem.js:584
+msgid "Dont Allow Launching"
+msgstr "Ne dopuštaj pokretanje"
+
+#: fileItem.js:586
+msgid "Allow Launching"
+msgstr "Dopusti pokretanje"
+
+#: fileItem.js:682
+msgid "Open"
+msgstr "Otvori"
+
+#: fileItem.js:686
+msgid "Open With Other Application"
+msgstr "Otvori s drugom aplikacijom"
+
+#: fileItem.js:688
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Pokreni pomoću namjenske grafičke kartice"
+
+#: fileItem.js:693
+msgid "Cut"
+msgstr "Izreži"
+
+#: fileItem.js:694
+msgid "Copy"
+msgstr "Kopiraj"
+
+#: fileItem.js:696
+msgid "Rename…"
+msgstr "Preimenuj…"
+
+#: fileItem.js:697
+msgid "Move to Trash"
+msgstr "Premjesti u smeće"
+
+#: fileItem.js:707
+msgid "Empty Trash"
+msgstr "Isprazni smeće"
+
+#: fileItem.js:711
+msgid "Eject"
+msgstr "Izbaci"
+
+#: fileItem.js:717
+msgid "Properties"
+msgstr "Svojstva"
+
+#: fileItem.js:719
+msgid "Show in Files"
+msgstr "Prikaži u Datotekama"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Veličina ikona"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Postavi veličinu ikona radne površine."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Prikaži osobnu mapu"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Prikaži osobnu mapu na radnoj površini."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Prikaži ikonu smeća"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Prikaži ikonu smeća na radnoj površini."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Prikaži montirane uređaje"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Prikaži montirane uređaje na radnoj površini."
+
#~ msgid "Application"
#~ msgstr "Aplikacija"
@@ -340,3 +559,9 @@ msgstr "Dodaj radni prostor"
#~ "Cilj primjera je prikazati kako izgraditi proširenje koje se dobro ponaša "
#~ "u ljusci i kao takvo ima ograničenu funkcionalnost.\n"
#~ "Unatoč tome još uvijek je moguće promijeniti poruku pozdrava."
+
+#~ msgid "Enter file name…"
+#~ msgstr "Upiši naziv datoteke…"
+
+#~ msgid "OK"
+#~ msgstr "U redu"
diff --git a/po/hu.po b/po/hu.po
index 8be4d93d..60305081 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -1,4 +1,5 @@
# #-#-#-#-# 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.
@@ -12,10 +13,17 @@
# This file is distributed under the same license as the dash-to-dock package.
#
# Balázs Úr <urbalazs@gmail.com>, 2017.
+# #-#-#-#-# hu.po (desktop-icons master) #-#-#-#-#
+# Hungarian translation for desktop-icons.
+# Copyright (C) 2019, 2020 The Free Software Foundation, inc.
+# This file is distributed under the same license as the desktop-icons package.
+#
+# Balázs Úr <ur.balazs at fsf dot hu>, 2019, 2020.
#, fuzzy
msgid ""
msgstr ""
"#-#-#-#-# 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"
@@ -42,6 +50,20 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Lokalize 2.0\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"#-#-#-#-# hu.po (desktop-icons master) #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-05-26 20:08+0000\n"
+"PO-Revision-Date: 2020-09-12 14:46+0200\n"
+"Last-Translator: Balázs Úr <ur.balazs at fsf dot hu>\n"
+"Language-Team: Hungarian <gnome-hu-list at gnome dot org>\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 19.12.3\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -81,7 +103,7 @@ msgstr "Szabály hozzáadása"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
-#: extensions/places-menu/placeDisplay.js:233
+#: extensions/places-menu/placeDisplay.js:233 desktopIconsUtil.js:162
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "A(z) „%s” meghajtó kiadása nem sikerült:"
@@ -143,7 +165,7 @@ msgstr "Nem sikerült a kötet csatolása ennél: „%s”"
msgid "Computer"
msgstr "Számítógép"
-#: extensions/places-menu/placeDisplay.js:359
+#: extensions/places-menu/placeDisplay.js:359 fileItem.js:925
msgid "Home"
msgstr "Saját mappa"
@@ -702,6 +724,201 @@ msgstr "Megjelenítési időkorlát (mp)"
msgid "Pressure threshold"
msgstr "Nyomás küszöbszintje"
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Új mappa neve"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Létrehozás"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Mégse"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "A mappanevek nem tartalmazhatnak „/” karaktert."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Egy mappának nem lehet „.” a neve."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Egy mappának nem lehet „..” a neve."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "A „.” karakterrel kezdődő nevű mappák rejtettek."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Már van egy fájl vagy mappa azzal a névvel."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Az asztali ikonok mérete"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Kicsi"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Szabványos"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Nagy"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "A személyes mappa megjelenítése az asztalon"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "A kuka ikon megjelenítése az asztalon"
+
+#: prefs.js:106
+#| msgid "Show the trash icon in the desktop"
+msgid "Show mounted drives in the desktop"
+msgstr "Csatolt meghajtók megjelenítése az asztalon"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Új mappa"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Új dokumentum"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Beillesztés"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Visszavonás"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Újra"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Asztal megjelenítése a Fájlokban"
+
+#: desktopGrid.js:355 fileItem.js:721
+msgid "Open in Terminal"
+msgstr "Megnyitás terminálban"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Háttér megváltoztatása…"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Megjelenítés beállításai"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Beállítások"
+
+#: desktopGrid.js:692
+msgid "Rename"
+msgstr "Átnevezés"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "A parancs nem található"
+
+#: fileItem.js:584
+msgid "Dont Allow Launching"
+msgstr "Ne engedélyezzen indítást"
+
+#: fileItem.js:586
+msgid "Allow Launching"
+msgstr "Indítás engedélyezése"
+
+#: fileItem.js:682
+msgid "Open"
+msgstr "Megnyitás"
+
+#: fileItem.js:686
+msgid "Open With Other Application"
+msgstr "Megnyitás egyéb alkalmazással"
+
+#: fileItem.js:688
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Futtatás dedikált videokártya használatával"
+
+#: fileItem.js:693
+msgid "Cut"
+msgstr "Kivágás"
+
+#: fileItem.js:694
+msgid "Copy"
+msgstr "Másolás"
+
+#: fileItem.js:696
+msgid "Rename…"
+msgstr "Átnevezés…"
+
+#: fileItem.js:697
+msgid "Move to Trash"
+msgstr "Áthelyezés a Kukába"
+
+#: fileItem.js:707
+msgid "Empty Trash"
+msgstr "Kuka ürítése"
+
+#: fileItem.js:711
+msgid "Eject"
+msgstr "Kiadás"
+
+#: fileItem.js:717
+msgid "Properties"
+msgstr "Tulajdonságok"
+
+#: fileItem.js:719
+msgid "Show in Files"
+msgstr "Megjelenítés a Fájlokban"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Ikonméret"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Az asztali ikonok méretének beállítása."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Személyes mappa megjelenítése"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "A személyes mappa megjelenítése az asztalon."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Kuka ikon megjelenítése"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "A kuka ikon megjelenítése az asztalon."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+#| msgid "Show in Files"
+msgid "Show mounted drives"
+msgstr "Csatolt meghajtók megjelenítése"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+#| msgid "Show the trash icon in the desktop."
+msgid "Show mounted drives in the desktop."
+msgstr "Csatolt meghajtók megjelenítése az asztalon."
+
#~ msgid "Application"
#~ msgstr "Alkalmazás"
@@ -713,3 +930,6 @@ msgstr "Nyomás küszöbszintje"
#~ msgid "Name"
#~ msgstr "Név"
+
+#~ msgid "Enter file name…"
+#~ msgstr "Adjon meg egy fájlnevet…"
diff --git a/po/id.po b/po/id.po
index af7463f3..22268582 100644
--- a/po/id.po
+++ b/po/id.po
@@ -1,4 +1,5 @@
# #-#-#-#-# id.po (gnome-shell-extensions master) #-#-#-#-#
+# #-#-#-#-# id.po (gnome-shell-extensions master) #-#-#-#-#
# Indonesian translation for gnome-shell-extensions.
# Copyright (C) 2012 gnome-shell-extensions's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-shell-extensions package.
@@ -12,10 +13,18 @@
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
+# #-#-#-#-# id.po (desktop-icons master) #-#-#-#-#
+# Indonesian translation for desktop-icons.
+# Copyright (C) 2018 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Kukuh Syafaat <kukuhsyafaat@gnome.org>, 2018-2020.
+# Andika Triwidada <andika@gmail.com>, 2020.
+#
#, fuzzy
msgid ""
msgstr ""
"#-#-#-#-# id.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"#-#-#-#-# id.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"
@@ -43,6 +52,19 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 1.8.11\n"
+"#-#-#-#-# id.po (desktop-icons master) #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-05-26 20:08+0000\n"
+"PO-Revision-Date: 2020-06-06 16:30+0700\n"
+"Last-Translator: Andika Triwidada <andika@gmail.com>\n"
+"Language-Team: Indonesian <gnome-l10n-id@googlegroups.com>\n"
+"Language: id\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.3.1\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -82,10 +104,14 @@ msgstr "Tambah Aturan"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
-#: extensions/places-menu/placeDisplay.js:233
-#, javascript-format
+#: extensions/places-menu/placeDisplay.js:233 desktopIconsUtil.js:162
+#, fuzzy, javascript-format
msgid "Ejecting drive “%s” failed:"
-msgstr "Saat mengeluarkan drive \"%s\" gagal:"
+msgstr ""
+"#-#-#-#-# id.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"Saat mengeluarkan drive \"%s\" gagal:\n"
+"#-#-#-#-# id.po (desktop-icons master) #-#-#-#-#\n"
+"Mengeluarkan kandar \"%s\" gagal:"
#: extensions/drive-menu/extension.js:128
msgid "Removable devices"
@@ -144,7 +170,7 @@ msgstr "Gagal mengaitkan volume untuk \"%s\""
msgid "Computer"
msgstr "Komputer"
-#: extensions/places-menu/placeDisplay.js:359
+#: extensions/places-menu/placeDisplay.js:359 fileItem.js:925
msgid "Home"
msgstr "Rumah"
@@ -702,6 +728,198 @@ msgstr "Tampilkan batas waktu (s)"
msgid "Pressure threshold"
msgstr "Ambang tekanan"
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Nama folder baru"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Buat"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Batal"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Nama folder tak boleh memuat \"/\"."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Sebuah folder tak bisa dinamai \".\"."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Sebuah folder tak bisa dinamai \"..\"."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Folder dengan \".\" di awal nama mereka disembunyikan."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Folder dengan nama itu sudah ada."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Ukuran untuk ikon destop"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Kecil"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Standar"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Besar"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Tampilkan folder pribadi di destop"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Tampilkan ikon tong sampah di destop"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Tampilkan kandar yang dikaitkan di destop"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Folder Baru"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Dokumen Baru"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Tempel"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Tak Jadi"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Jadi Lagi"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Tampilkan Destop pada Berkas"
+
+#: desktopGrid.js:355 fileItem.js:721
+msgid "Open in Terminal"
+msgstr "Buka dalam Terminal"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Ubah Latar Belakang…"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Pengaturan Tampilan"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Pengaturan"
+
+#: desktopGrid.js:692
+msgid "Rename"
+msgstr "Ganti Nama"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Perintah tidak ditemukan"
+
+#: fileItem.js:584
+msgid "Dont Allow Launching"
+msgstr "Jangan Izinkan Peluncuran"
+
+#: fileItem.js:586
+msgid "Allow Launching"
+msgstr "Izinkan Peluncuran"
+
+#: fileItem.js:682
+msgid "Open"
+msgstr "Buka"
+
+#: fileItem.js:686
+msgid "Open With Other Application"
+msgstr "Buka Dengan Aplikasi Lain"
+
+#: fileItem.js:688
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Luncurkan menggunakan Kartu Grafis Terdedikasi"
+
+#: fileItem.js:693
+msgid "Cut"
+msgstr "Potong"
+
+#: fileItem.js:694
+msgid "Copy"
+msgstr "Salin"
+
+#: fileItem.js:696
+msgid "Rename…"
+msgstr "Ganti Nama…"
+
+#: fileItem.js:697
+msgid "Move to Trash"
+msgstr "Pindahkan ke Tong Sampah"
+
+#: fileItem.js:707
+msgid "Empty Trash"
+msgstr "Kosongkan Tong Sampah"
+
+#: fileItem.js:711
+msgid "Eject"
+msgstr "Keluarkan"
+
+#: fileItem.js:717
+msgid "Properties"
+msgstr "Properti"
+
+#: fileItem.js:719
+msgid "Show in Files"
+msgstr "Tampilkan pada Berkas"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Ukuran ikon"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Set ukuran untuk ikon destop."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Tampilkan folder pribadi"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Tampilkan folder pribadi di destop."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Tampilkan ikon tong sampah"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Tampilkan ikon tong sampah di destop."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Tampilkan kandar yang dikaitkan"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Tampilkan kandar yang dikaitkan di destop."
+
#~ msgid "Application"
#~ msgstr "Aplikasi"
diff --git a/po/it.po b/po/it.po
index 4b425925..2b24e1b1 100644
--- a/po/it.po
+++ b/po/it.po
@@ -1,4 +1,5 @@
# #-#-#-#-# 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.
@@ -13,10 +14,18 @@
# This file is distributed under the same license as the Dash-to-Dock package.
# Milo Casagrande <milo@milo.name>, 2018
#
+# #-#-#-#-# it.po (desktop-icons master) #-#-#-#-#
+# Italian translation for desktop-icons.
+# Copyright (C) 2019, 2020 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Massimo Branchini <max.bra.gtalk@gmail.com>, 2019.
+# Milo Casagrande <milo@milo.name>, 2019, 2020.
+#
#, fuzzy
msgid ""
msgstr ""
"#-#-#-#-# 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"
@@ -41,6 +50,20 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"#-#-#-#-# it.po (desktop-icons master) #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-04-05 19:13+0000\n"
+"PO-Revision-Date: 2020-04-07 09:36+0200\n"
+"Last-Translator: Milo Casagrande <milo@milo.name>\n"
+"Language-Team: Italian <tp@lists.linux.it>\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 2.2.4\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -776,3 +799,171 @@ msgstr "Timeout rivelazione (s)"
#: Settings.ui.h:107
msgid "Pressure threshold"
msgstr "Soglia pressione"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Nuova cartella"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Crea"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Annulla"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "I nomi di cartelle non possono contenere il carattere «/»"
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Una cartella non può essere chiamata «.»."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Una cartella non può essere chiamata «..»."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Cartelle il cui nome inizia con «.» sono nascoste."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Esiste già un file o una cartella con quel nome."
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Dimensione delle icone della scrivania"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "Piccola"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "Normale"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "Grande"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Mostra la cartella personale sulla scrivania"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Mostra il cestino sulla scrivania"
+
+#: desktopGrid.js:343
+msgid "New Folder"
+msgstr "Nuova cartella"
+
+#: desktopGrid.js:345
+msgid "Paste"
+msgstr "Incolla"
+
+#: desktopGrid.js:346
+msgid "Undo"
+msgstr "Annulla"
+
+#: desktopGrid.js:347
+msgid "Redo"
+msgstr "Ripeti"
+
+#: desktopGrid.js:349
+msgid "Show Desktop in Files"
+msgstr "Mostra la scrivania in File"
+
+#: desktopGrid.js:350 fileItem.js:651
+msgid "Open in Terminal"
+msgstr "Apri in Terminale"
+
+#: desktopGrid.js:352
+msgid "Change Background…"
+msgstr "Cambia lo sfondo…"
+
+#: desktopGrid.js:354
+msgid "Display Settings"
+msgstr "Impostazioni dello schermo"
+
+#: desktopGrid.js:355
+msgid "Settings"
+msgstr "Impostazioni"
+
+#: desktopGrid.js:653
+msgid "Rename"
+msgstr "Rinomina"
+
+#: desktopIconsUtil.js:61
+msgid "Command not found"
+msgstr "Comando non trovato"
+
+#: fileItem.js:521
+msgid "Dont Allow Launching"
+msgstr "Non permettere l'esecuzione"
+
+#: fileItem.js:523
+msgid "Allow Launching"
+msgstr "Permetti l'esecuzione"
+
+#: fileItem.js:619
+msgid "Open"
+msgstr "Apri"
+
+#: fileItem.js:623
+msgid "Open With Other Application"
+msgstr "Apri con altra applicazione"
+
+#: fileItem.js:627
+msgid "Cut"
+msgstr "Taglia"
+
+#: fileItem.js:628
+msgid "Copy"
+msgstr "Copia"
+
+#: fileItem.js:630
+msgid "Rename…"
+msgstr "Rinomina…"
+
+#: fileItem.js:631
+msgid "Move to Trash"
+msgstr "Sposta nel cestino"
+
+#: fileItem.js:641
+msgid "Empty Trash"
+msgstr "Svuota il cestino"
+
+#: fileItem.js:647
+msgid "Properties"
+msgstr "Proprietà"
+
+#: fileItem.js:649
+msgid "Show in Files"
+msgstr "Mostra in File"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Dimensione dell'icona"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Imposta la grandezza delle icone della scrivania."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Mostra la cartella personale"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Mostra la cartella personale sulla scrivania."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+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."
diff --git a/po/ja.po b/po/ja.po
index 30b84200..8eb77253 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -1,4 +1,5 @@
# #-#-#-#-# 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.
@@ -18,10 +19,17 @@
# sicklylife <translation@sicklylife.jp>, 2019-2020.
# Ryo Nakano <ryonakaknock3@gmail.com>, 2019.
#
+# #-#-#-#-# ja.po (desktop-icons master) #-#-#-#-#
+# Japanese translation for desktop-icons.
+# Copyright (C) 2019-2020 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# sicklylife <translation@sicklylife.jp>, 2019-2020.
+#
#, fuzzy
msgid ""
msgstr ""
"#-#-#-#-# 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"
@@ -46,6 +54,19 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
+"#-#-#-#-# ja.po (desktop-icons master) #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-05-26 20:08+0000\n"
+"PO-Revision-Date: 2020-05-30 00:00+0900\n"
+"Last-Translator: sicklylife <translation@sicklylife.jp>\n"
+"Language-Team: Japanese <gnome-translation@gnome.gr.jp>\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"
@@ -85,10 +106,14 @@ msgstr "ルールを追加"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
-#: extensions/places-menu/placeDisplay.js:233
-#, javascript-format
+#: extensions/places-menu/placeDisplay.js:233 desktopIconsUtil.js:162
+#, fuzzy, javascript-format
msgid "Ejecting drive “%s” failed:"
-msgstr "ドライブ“%s”の取り出しに失敗しました:"
+msgstr ""
+"#-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"ドライブ“%s”の取り出しに失敗しました:\n"
+"#-#-#-#-# ja.po (desktop-icons master) #-#-#-#-#\n"
+"“%s”の取り出しに失敗しました:"
#: extensions/drive-menu/extension.js:128
msgid "Removable devices"
@@ -148,7 +173,7 @@ msgstr "“%s”のマウントに失敗しました"
msgid "Computer"
msgstr "コンピューター"
-#: extensions/places-menu/placeDisplay.js:359
+#: extensions/places-menu/placeDisplay.js:359 fileItem.js:925
msgid "Home"
msgstr "ホーム"
@@ -329,7 +354,7 @@ msgstr "お気に入りから削除"
msgid "All Windows"
msgstr "ウィンドウプレビューの表示"
-#: appIcons.js:823
+#: appIcons.js:823 fileItem.js:688
msgid "Launch using Dedicated Graphics Card"
msgstr "専用のグラフィックカードを使用して起動"
@@ -359,7 +384,7 @@ msgstr "%d 個のウィンドウを終了"
msgid "Dash to Dock %s"
msgstr "Dash to Dock の%s"
-#: appIcons.js:1134
+#: appIcons.js:1134 desktopGrid.js:360
msgid "Settings"
msgstr "設定"
@@ -371,7 +396,7 @@ msgstr "Dash"
msgid "Trash"
msgstr "ゴミ箱"
-#: locations.js:74
+#: locations.js:74 fileItem.js:707
msgid "Empty Trash"
msgstr "ゴミ箱を空にする"
@@ -379,7 +404,7 @@ msgstr "ゴミ箱を空にする"
msgid "Mount"
msgstr "マウント"
-#: locations.js:235
+#: locations.js:235 fileItem.js:711
msgid "Eject"
msgstr "取り出す"
@@ -869,6 +894,192 @@ msgstr "表示までのタイムアウト (秒)"
msgid "Pressure threshold"
msgstr "押し込み量 (ピクセル)"
+#: desktopGrid.js:359
+#, fuzzy
+msgid "Display Settings"
+msgstr ""
+"#-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"ディスプレイ設定\n"
+"#-#-#-#-# ja.po (desktop-icons master) #-#-#-#-#\n"
+"ディスプレイの設定"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+#, fuzzy
+msgid "Icon size"
+msgstr ""
+"#-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"アイコンのサイズ\n"
+"#-#-#-#-# ja.po (desktop-icons master) #-#-#-#-#\n"
+"アイコンサイズ"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "新しいフォルダー名"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "作成"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "キャンセル"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "“/”はフォルダー名に含められません。"
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "“.”という名前はフォルダーに付けられません。"
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "“..”という名前はフォルダーに付けられません。"
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "“.”で始まるフォルダーは隠しフォルダーになります。"
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "その名前のファイルかフォルダーがすでに存在します。"
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "デスクトップアイコンのサイズ"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "小さい"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "標準"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "大きい"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "ホームフォルダーをデスクトップに表示する"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "ゴミ箱をデスクトップに表示する"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "マウントしたドライブをデスクトップに表示する"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "新しいフォルダー"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "新しいドキュメント"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "貼り付け"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "元に戻す"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "やり直す"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "“ファイル”でデスクトップを表示"
+
+#: desktopGrid.js:355 fileItem.js:721
+msgid "Open in Terminal"
+msgstr "端末で開く"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "背景を変更…"
+
+#: desktopGrid.js:692
+msgid "Rename"
+msgstr "名前を変更"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "コマンドが見つかりませんでした"
+
+#: fileItem.js:584
+msgid "Dont Allow Launching"
+msgstr "起動を許可しない"
+
+#: fileItem.js:586
+msgid "Allow Launching"
+msgstr "起動を許可する"
+
+#: fileItem.js:682
+msgid "Open"
+msgstr "開く"
+
+#: fileItem.js:686
+msgid "Open With Other Application"
+msgstr "別のアプリケーションで開く"
+
+#: fileItem.js:693
+msgid "Cut"
+msgstr "切り取り"
+
+#: fileItem.js:694
+msgid "Copy"
+msgstr "コピー"
+
+#: fileItem.js:696
+msgid "Rename…"
+msgstr "名前を変更…"
+
+#: fileItem.js:697
+msgid "Move to Trash"
+msgstr "ゴミ箱へ移動する"
+
+#: fileItem.js:717
+msgid "Properties"
+msgstr "プロパティ"
+
+#: fileItem.js:719
+msgid "Show in Files"
+msgstr "“ファイル”で表示"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "デスクトップのアイコンサイズを設定します。"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "ホームフォルダーを表示する"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "デスクトップにホームフォルダーを表示します。"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "ゴミ箱アイコンを表示する"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "デスクトップにゴミ箱のアイコンを表示します。"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "マウントしたドライブを表示する"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "デスクトップにマウントしたドライブを表示します。"
+
#~ msgid "Application"
#~ msgstr "アプリケーション"
@@ -970,9 +1181,6 @@ msgstr "押し込み量 (ピクセル)"
#~ msgid "Display"
#~ msgstr "ディスプレイ"
-#~ msgid "Display Settings"
-#~ msgstr "ディスプレイ設定"
-
#~ msgid "Suspend"
#~ msgstr "サスペンド"
@@ -1012,9 +1220,6 @@ msgstr "押し込み量 (ピクセル)"
#~ msgid "Drag here to add favorites"
#~ msgstr "ドラッグでお気に入りに追加"
-#~ msgid "Icon size"
-#~ msgstr "アイコンのサイズ"
-
#~ msgid "Position of the dock"
#~ msgstr "ドックの位置"
diff --git a/po/kab.po b/po/kab.po
index bc98151d..5184aac5 100644
--- a/po/kab.po
+++ b/po/kab.po
@@ -3,8 +3,10 @@
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
+#, fuzzy
msgid ""
msgstr ""
+"#-#-#-#-# kab.po #-#-#-#-#\n"
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n"
@@ -18,6 +20,20 @@ msgstr ""
"Last-Translator: Yacine Bouklif <yacinebouklif@gmail.com>\n"
"Language-Team: \n"
"X-Generator: Poedit 2.4.1\n"
+"#-#-#-#-# kab.po #-#-#-#-#\n"
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2021-03-28 17:45+0000\n"
+"PO-Revision-Date: 2021-04-03 21:21+0100\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.4.2\n"
+"Last-Translator: Slimane Selyan Amiri <selyan.kab@protonmail.com>\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Language: kab\n"
#: data/gnome-classic.desktop.in:3
msgid "GNOME Classic"
@@ -57,10 +73,14 @@ msgstr "Rnu alugen"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
-#: extensions/places-menu/placeDisplay.js:233
-#, javascript-format
+#: extensions/places-menu/placeDisplay.js:233 desktopIconsUtil.js:162
+#, fuzzy, javascript-format
msgid "Ejecting drive “%s” failed:"
-msgstr "Aḍeqqer n uḍebsi “%s” ur yeddi ara:"
+msgstr ""
+"#-#-#-#-# kab.po #-#-#-#-#\n"
+"Aḍeqqer n uḍebsi “%s” ur yeddi ara:\n"
+"#-#-#-#-# kab.po #-#-#-#-#\n"
+"Aḍegger n uḍebsi “%s” ur yeddi ara:"
#: extensions/drive-menu/extension.js:128
msgid "Removable devices"
@@ -112,9 +132,14 @@ msgstr "Aserkeb n ubleɣ “%s” ur yeddi ara"
msgid "Computer"
msgstr "Aselkim"
-#: extensions/places-menu/placeDisplay.js:359
+#: extensions/places-menu/placeDisplay.js:359 fileItem.js:951
+#, fuzzy
msgid "Home"
-msgstr "Asebter agejdan"
+msgstr ""
+"#-#-#-#-# kab.po #-#-#-#-#\n"
+"Asebter agejdan\n"
+"#-#-#-#-# kab.po #-#-#-#-#\n"
+"Asnubeg"
#: extensions/places-menu/placeDisplay.js:404
msgid "Browse Network"
@@ -252,3 +277,195 @@ msgstr "Tallunt n umahil %d"
#: extensions/workspace-indicator/prefs.js:218
msgid "Add Workspace"
msgstr "Rnu tallunt n umahil"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Isem n ukaram amaynut"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "Rnu"
+
+#: createFolderDialog.js:74
+msgid "Cancel"
+msgstr "Sefsex"
+
+#: createFolderDialog.js:147
+msgid "Folder names cannot contain “/”."
+msgstr "Isem n ukaram ur izmir ara ad igber “/”."
+
+#: createFolderDialog.js:150
+msgid "A folder cannot be called “.”."
+msgstr "Isem n ukaram ur izmir ara ad yili “.”."
+
+#: createFolderDialog.js:153
+msgid "A folder cannot be called “..”."
+msgstr "Isem n ukaram ur izmir ara ad yili “..”."
+
+#: createFolderDialog.js:155
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Ikaramen s “.” di tazwara n yisem-nsen ttwafren."
+
+#: createFolderDialog.js:157
+msgid "There is already a file or folder with that name."
+msgstr "Akaram s yisem-agi yella yakan."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Tuɣzi n tegnitin n tnarit"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Meẓẓi"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Anaway"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Meqqer"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Sken akaram udmawan deg tnarit"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Sken tignit n tqecwalt deg tnarit"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Sken iḍebsiyen irekben deg tnarit"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Akaram amaynut"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Isemli amaynut"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Senṭeḍ"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Err-d"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Uɣal"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Sken-d tanarit deg ifuyla"
+
+#: desktopGrid.js:355 fileItem.js:726
+msgid "Open in Terminal"
+msgstr "Ldi deg unneftaɣ"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Beddel agilal…"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Iɣewwaren n uskan"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Iɣewwaṛen"
+
+#: desktopGrid.js:699
+msgid "Rename"
+msgstr "Beddel isem"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Ulac taladna"
+
+#: fileItem.js:589
+msgid "Dont Allow Launching"
+msgstr "Ur sirig ara asenker"
+
+#: fileItem.js:591
+msgid "Allow Launching"
+msgstr "Sireg asenker"
+
+#: fileItem.js:687
+msgid "Open"
+msgstr "Ldi"
+
+#: fileItem.js:691
+msgid "Open With Other Application"
+msgstr "Ldi s usnas-nniḍen"
+
+#: fileItem.js:693
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Sker s useqdec n tkarḍa tudlift ittwaHerzen"
+
+#: fileItem.js:698
+msgid "Cut"
+msgstr "Gzem"
+
+#: fileItem.js:699
+msgid "Copy"
+msgstr "Nɣel"
+
+#: fileItem.js:701
+msgid "Rename…"
+msgstr "Snifel isem…"
+
+#: fileItem.js:702
+msgid "Move to Trash"
+msgstr "Smutti ɣer tqecwalt"
+
+#: fileItem.js:712
+msgid "Empty Trash"
+msgstr "Ḍeggeṛ iḍumman"
+
+#: fileItem.js:716
+msgid "Eject"
+msgstr "Ḍeqqer-d"
+
+#: fileItem.js:722
+msgid "Properties"
+msgstr "Tulmisin"
+
+#: fileItem.js:724
+msgid "Show in Files"
+msgstr "Sken deg ifulay"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Tuɣzi n tignit"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Sbadu tuɣzi n tegnitin n tnarit."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Sken akaram udmawan"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Sken akaram udmawan deg tnarit."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Sken tignit n tqecwalt"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Sken tignit n tqecwalt deg tnarit."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Sken iḍebsiyen irekben"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Sken iḍebsiyen irekben deg tnarit."
diff --git a/po/ko.po b/po/ko.po
index aeb5010c..e7926e95 100644
--- a/po/ko.po
+++ b/po/ko.po
@@ -1,3 +1,4 @@
+# #-#-#-#-# ko.po (gnome-shell-extensions) #-#-#-#-#
# Korean translation for gnome-shell-extensions.
# Copyright (C) 2012 gnome-shell-extensions's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-shell-extensions package.
@@ -5,8 +6,17 @@
# Seong-ho Cho <darkcircle.0426@gmail.com>, 2012.
# Changwoo Ryu <cwryu@debian.org>, 2013-2015, 2017, 2019-2020.
#
+# #-#-#-#-# ko.po (desktop-icons master) #-#-#-#-#
+# Korean translation for desktop-icons.
+# Copyright (C) 2021 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+# Kuroe Hanako <kmj10727@gmail.com>, 2021.
+#
+#, fuzzy
msgid ""
msgstr ""
+"#-#-#-#-# ko.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"
@@ -19,6 +29,20 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
+"#-#-#-#-# ko.po (desktop-icons master) #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2021-03-17 02:05+0000\n"
+"PO-Revision-Date: 2021-03-28 13:11+0900\n"
+"Last-Translator: Kuroe Hanako <kmj10727@gmail.com>\n"
+"Language-Team: Korean <kmj10727@gmail.com>\n"
+"Language: ko\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"X-Generator: Gtranslator 3.36.0\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -58,10 +82,14 @@ msgstr "규칙 추가"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
-#: extensions/places-menu/placeDisplay.js:233
-#, javascript-format
+#: extensions/places-menu/placeDisplay.js:233 desktopIconsUtil.js:162
+#, fuzzy, javascript-format
msgid "Ejecting drive “%s” failed:"
-msgstr "“%s” 드라이브를 빼는데 실패했습니다:"
+msgstr ""
+"#-#-#-#-# ko.po (gnome-shell-extensions) #-#-#-#-#\n"
+"“%s” 드라이브를 빼는데 실패했습니다:\n"
+"#-#-#-#-# ko.po (desktop-icons master) #-#-#-#-#\n"
+"\"%s\" 드라이브를 꺼내는 데 실패했습니다:"
#: extensions/drive-menu/extension.js:128
msgid "Removable devices"
@@ -119,7 +147,7 @@ msgstr "“%s” 볼륨 마운트에 실패했습니다"
msgid "Computer"
msgstr "컴퓨터"
-#: extensions/places-menu/placeDisplay.js:359
+#: extensions/places-menu/placeDisplay.js:359 fileItem.js:951
msgid "Home"
msgstr "홈"
@@ -258,6 +286,198 @@ msgstr "작업 공간 %d"
msgid "Add Workspace"
msgstr "작업 공간 추가"
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "새 폴더 이름"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "만들기"
+
+#: createFolderDialog.js:74
+msgid "Cancel"
+msgstr "취소"
+
+#: createFolderDialog.js:147
+msgid "Folder names cannot contain “/”."
+msgstr "폴더 이름에는 \"/\"가 들어갈 수 없습니다."
+
+#: createFolderDialog.js:150
+msgid "A folder cannot be called “.”."
+msgstr "폴더 이름은 \".\"이 될 수 없습니다."
+
+#: createFolderDialog.js:153
+msgid "A folder cannot be called “..”."
+msgstr "폴더 이름은 \"..\"이 될 수 없습니다."
+
+#: createFolderDialog.js:155
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "폴더 이름이 \".\"으로 시작하면 폴더가 숨겨집니다."
+
+#: createFolderDialog.js:157
+msgid "There is already a file or folder with that name."
+msgstr "같은 이름의 폴더가 이미 있습니다."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "바탕 화면 아이콘 크기"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "작게"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "보통"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "크게"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "사용자 폴더를 바탕 화면에 표시"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "휴지통 아이콘을 바탕 화면에 표시"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "마운트된 드라이브를 바탕 화면에 표시"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "새 폴더"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "새 문서"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "붙여넣기"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "실행 취소"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "다시 실행"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "파일에서 바탕 화면 보기"
+
+#: desktopGrid.js:355 fileItem.js:726
+msgid "Open in Terminal"
+msgstr "터미널에서 열기"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "배경 바꾸기…"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "디스플레이 설정"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "설정"
+
+#: desktopGrid.js:699
+msgid "Rename"
+msgstr "이름 바꾸기"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "명령을 찾을 수 없음"
+
+#: fileItem.js:589
+msgid "Dont Allow Launching"
+msgstr "실행 허용하지 않음"
+
+#: fileItem.js:591
+msgid "Allow Launching"
+msgstr "실행 허용"
+
+#: fileItem.js:687
+msgid "Open"
+msgstr "열기"
+
+#: fileItem.js:691
+msgid "Open With Other Application"
+msgstr "다른 프로그램으로 열기"
+
+#: fileItem.js:693
+msgid "Launch using Dedicated Graphics Card"
+msgstr "전용 그래픽 카드로 실행"
+
+#: fileItem.js:698
+msgid "Cut"
+msgstr "잘라내기"
+
+#: fileItem.js:699
+msgid "Copy"
+msgstr "복사"
+
+#: fileItem.js:701
+msgid "Rename…"
+msgstr "이름 바꾸기…"
+
+#: fileItem.js:702
+msgid "Move to Trash"
+msgstr "휴지통에 버리기"
+
+#: fileItem.js:712
+msgid "Empty Trash"
+msgstr "휴지통 비우기"
+
+#: fileItem.js:716
+msgid "Eject"
+msgstr "꺼내기"
+
+#: fileItem.js:722
+msgid "Properties"
+msgstr "속성"
+
+#: fileItem.js:724
+msgid "Show in Files"
+msgstr "파일에서 보기"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "아이콘 크기"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "바탕 화면의 아이콘 크기를 설정합니다."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "사용자 폴더 표시"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "바탕 화면에 사용자 폴더를 표시합니다."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "휴지통 아이콘 표시"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "바탕 화면에 휴지통 아이콘을 표시합니다."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "마운트된 드라이브 표시"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "바탕 화면에 마운트된 드라이브를 표시합니다."
+
#~ msgid "Application"
#~ msgstr "프로그램"
diff --git a/po/nl.po b/po/nl.po
index 6a1ee07c..b1d2aed2 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -1,4 +1,5 @@
# #-#-#-#-# nl.po (gnome-shell-extensions master) #-#-#-#-#
+# #-#-#-#-# nl.po (gnome-shell-extensions master) #-#-#-#-#
# Dutch 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.
@@ -14,10 +15,17 @@
# Jonatan Zeidler <jonatan_zeidler@hotmail.de>, 2012.
# jonius <jonatan_zeidler@gmx.de>, 2012.
# Heimen Stoffels <vistausss@outlook.com>, 2015, 2019.
+# #-#-#-#-# nl.po (desktop-icons master) #-#-#-#-#
+# Dutch translation for desktop-icons.
+# Copyright (C) 2019 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Nathan Follens <nthn@unseen.is>, 2019-2020.
+#
#, fuzzy
msgid ""
msgstr ""
"#-#-#-#-# nl.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"#-#-#-#-# nl.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"
@@ -45,6 +53,20 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Lokalize 19.11.70\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"#-#-#-#-# nl.po (desktop-icons master) #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-05-26 20:08+0000\n"
+"PO-Revision-Date: 2020-08-25 21:34+0200\n"
+"Last-Translator: Nathan Follens <nthn@unseen.is>\n"
+"Language-Team: Dutch <gnome-nl-list@gnome.org>\n"
+"Language: nl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 2.4.1\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -84,7 +106,7 @@ msgstr "Regel toevoegen"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
-#: extensions/places-menu/placeDisplay.js:233
+#: extensions/places-menu/placeDisplay.js:233 desktopIconsUtil.js:162
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "Uitwerpen van station %s mislukt:"
@@ -147,7 +169,7 @@ msgstr "Koppelen van volume mislukt voor %s"
msgid "Computer"
msgstr "Computer"
-#: extensions/places-menu/placeDisplay.js:359
+#: extensions/places-menu/placeDisplay.js:359 fileItem.js:925
msgid "Home"
msgstr "Persoonlijke map"
@@ -793,6 +815,198 @@ msgstr "Weergave-interval (s)"
msgid "Pressure threshold"
msgstr "Drukwaarde"
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Nieuwe mapnaam"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Aanmaken"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Mapnamen kunnen geen / bevatten."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Een map kan niet . worden genoemd."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Een map kan niet .. worden genoemd."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Mappen waarvan de naam begint met . zijn verborgen."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Er bestaat al een bestand of map met die naam."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Grootte van bureaubladpictogrammen"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Klein"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Standaard"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Groot"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Toon de persoonlijke map op het bureaublad"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Toon het prullenbakpictogram op het bureaublad"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Gekoppelde volumes tonen op het bureaublad"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Nieuwe map"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Nieuw document"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Plakken"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Ongedaan maken"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Opnieuw"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Bureaublad tonen in Bestanden"
+
+#: desktopGrid.js:355 fileItem.js:721
+msgid "Open in Terminal"
+msgstr "Openen in terminalvenster"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Achtergrond aanpassen…"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Scherminstellingen"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Instellingen"
+
+#: desktopGrid.js:692
+msgid "Rename"
+msgstr "Hernoemen"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Opdracht niet gevonden"
+
+#: fileItem.js:584
+msgid "Dont Allow Launching"
+msgstr "Toepassingen starten niet toestaan"
+
+#: fileItem.js:586
+msgid "Allow Launching"
+msgstr "Toepassingen starten toestaan"
+
+#: fileItem.js:682
+msgid "Open"
+msgstr "Openen"
+
+#: fileItem.js:686
+msgid "Open With Other Application"
+msgstr "Met andere toepassing openen"
+
+#: fileItem.js:688
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Met grafische kaart opstarten"
+
+#: fileItem.js:693
+msgid "Cut"
+msgstr "Knippen"
+
+#: fileItem.js:694
+msgid "Copy"
+msgstr "Kopiëren"
+
+#: fileItem.js:696
+msgid "Rename…"
+msgstr "Hernoemen…"
+
+#: fileItem.js:697
+msgid "Move to Trash"
+msgstr "Verplaatsen naar prullenbak"
+
+#: fileItem.js:707
+msgid "Empty Trash"
+msgstr "Prullenbak legen"
+
+#: fileItem.js:711
+msgid "Eject"
+msgstr "Uitwerpen"
+
+#: fileItem.js:717
+msgid "Properties"
+msgstr "Eigenschappen"
+
+#: fileItem.js:719
+msgid "Show in Files"
+msgstr "Tonen in Bestanden"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Pictogramgrootte"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Stel de grootte van de bureaubladpictogrammen in."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Persoonlijke map tonen"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Toon de persoonlijke map op het bureaublad."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Prullenbakpictogram tonen"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Toon het prullenbakpictogram op het bureaublad."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Gekoppelde volumes tonen"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Gekoppelde volumes tonen op het bureaublad."
+
#~ msgid "Application"
#~ msgstr "Toepassing"
@@ -1018,3 +1232,9 @@ msgstr "Drukwaarde"
#~ msgstr ""
#~ "Benutzerdefiniertes Theme verwenden (funktioniert nur mit dem Standard-"
#~ "Adwaita-Theme)"
+
+#~ msgid "Enter file name…"
+#~ msgstr "Voer bestandsnaam in…"
+
+#~ msgid "OK"
+#~ msgstr "Oké"
diff --git a/po/oc.po b/po/oc.po
index 1798ace8..4e1bd637 100644
--- a/po/oc.po
+++ b/po/oc.po
@@ -1,10 +1,19 @@
+# #-#-#-#-# oc.po (gnome-shell-extensions master) #-#-#-#-#
# Occitan 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.
# Cédric Valmary (Tot en òc) <cvalmary@yahoo.fr>, 2015.
# Cédric Valmary (totenoc.eu) <cvalmary@yahoo.fr>, 2016.
+# #-#-#-#-# oc.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 <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
msgid ""
msgstr ""
+"#-#-#-#-# oc.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"
@@ -19,6 +28,19 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Poedit 2.4.3\n"
"X-Project-Style: gnome\n"
+"#-#-#-#-# oc.po #-#-#-#-#\n"
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2021-03-28 17:45+0000\n"
+"PO-Revision-Date: 2021-04-02 20:01+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.4.2\n"
+"Last-Translator: Quentin PAGÈS\n"
+"Language: oc\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -59,7 +81,7 @@ msgstr "Apondre una règla"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
-#: extensions/places-menu/placeDisplay.js:233
+#: extensions/places-menu/placeDisplay.js:233 desktopIconsUtil.js:162
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "L'ejeccion del disc « %s » a fracassat :"
@@ -121,9 +143,14 @@ msgstr "Fracàs del montatge del volum per « %s »"
msgid "Computer"
msgstr "Ordenador"
-#: extensions/places-menu/placeDisplay.js:359
+#: extensions/places-menu/placeDisplay.js:359 fileItem.js:951
+#, fuzzy
msgid "Home"
-msgstr "Dorsièr personal"
+msgstr ""
+"#-#-#-#-# oc.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"Dorsièr personal\n"
+"#-#-#-#-# oc.po #-#-#-#-#\n"
+"Repertòri personal"
#: extensions/places-menu/placeDisplay.js:404
msgid "Browse Network"
@@ -263,6 +290,203 @@ msgstr "Espaci de trabalh %d"
msgid "Add Workspace"
msgstr "Apondre un espaci de trabalh"
+#: desktopGrid.js:359
+#, fuzzy
+msgid "Display Settings"
+msgstr ""
+"#-#-#-#-# oc.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"Afichar los paramètres\n"
+"#-#-#-#-# oc.po #-#-#-#-#\n"
+"Paramètres d'afichatge"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Nom de dossièr novèl"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "Crear"
+
+#: createFolderDialog.js:74
+msgid "Cancel"
+msgstr "Anullar"
+
+#: createFolderDialog.js:147
+msgid "Folder names cannot contain “/”."
+msgstr "Los noms de dossièrs pòdon pas conténer « / »."
+
+#: createFolderDialog.js:150
+msgid "A folder cannot be called “.”."
+msgstr "Impossible d'apelar un dossièr « . »."
+
+#: createFolderDialog.js:153
+msgid "A folder cannot be called “..”."
+msgstr "Impossible d'apelar un dossièr « .. »."
+
+#: createFolderDialog.js:155
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Los dossièrs amb un « . » a la debuta de lor nom son amagats"
+
+#: createFolderDialog.js:157
+msgid "There is already a file or folder with that name."
+msgstr "Un fichièr o un dossièr amb aqueste nom existís ja."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Talha de las icònas burèu"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Pichon"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Estandard"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Grand"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Mostrar lo dorsièr personal pel burèu"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Mostrar l'icòna de l'escobilhièr pel burèu"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Mostrar los volums montats pel burèu"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Dossièr novèl"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Document novèl"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Pegar"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Restablir"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Restablir"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Mostrar lo burèu dins Fichièrs"
+
+#: desktopGrid.js:355 fileItem.js:726
+msgid "Open in Terminal"
+msgstr "Dobrir dins un terminal"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Modificar lo rèireplan…"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Paramètres"
+
+#: desktopGrid.js:699
+msgid "Rename"
+msgstr "Renomenar"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Comanda pas trobada"
+
+#: fileItem.js:589
+msgid "Dont Allow Launching"
+msgstr "Permetre pas l'aviada"
+
+#: fileItem.js:591
+msgid "Allow Launching"
+msgstr "Permetre l'aviada"
+
+#: fileItem.js:687
+msgid "Open"
+msgstr "Dobrir"
+
+#: fileItem.js:691
+msgid "Open With Other Application"
+msgstr "Dobrir amb una autra aplicacion"
+
+#: fileItem.js:693
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Aviar en utilizant la carta grafica dedicada"
+
+#: fileItem.js:698
+msgid "Cut"
+msgstr "Talhar"
+
+#: fileItem.js:699
+msgid "Copy"
+msgstr "Copiar"
+
+#: fileItem.js:701
+msgid "Rename…"
+msgstr "Renomenar…"
+
+#: fileItem.js:702
+msgid "Move to Trash"
+msgstr "Desplaçar a l_escobilhièr"
+
+#: fileItem.js:712
+msgid "Empty Trash"
+msgstr "Voidar lescobilhièr"
+
+#: fileItem.js:716
+msgid "Eject"
+msgstr "Ejectar"
+
+#: fileItem.js:722
+msgid "Properties"
+msgstr "Proprietats"
+
+#: fileItem.js:724
+msgid "Show in Files"
+msgstr "Mostrar dins Fichièrs"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Talha de l'icòna"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Definir la talha de las icònas burèu."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Mostrar lo dorsièr personal"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Mostrar lo dorsièr personal pel burèu."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Mostrar l'icòna de l'escobilhièr"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Mostrar l'icòna de l'escobilhièr pel burèu."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Mostrar los lectors montats"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Mostrar los lector montats pel burèu."
+
#~ msgid "Attach modal dialog to the parent window"
#~ msgstr "Estacar las bóstias de dialòg modalas a lor fenèstra parenta"
@@ -403,6 +627,3 @@ msgstr "Apondre un espaci de trabalh"
#~ msgid "Display"
#~ msgstr "Afichar"
-
-#~ msgid "Display Settings"
-#~ msgstr "Afichar los paramètres"
diff --git a/po/pl.po b/po/pl.po
index a97366b6..7b26d43f 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -1,4 +1,5 @@
# #-#-#-#-# 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.
@@ -13,10 +14,18 @@
#
# Piotr Sokół <psokol.l10n@gmail.com>, 2012, 2013, 2015, 2016, 2017.
#
+# #-#-#-#-# pl.po (desktop-icons) #-#-#-#-#
+# Polish translation for desktop-icons.
+# Copyright © 2018-2020 the desktop-icons authors.
+# This file is distributed under the same license as the desktop-icons package.
+# Piotr Drąg <piotrdrag@gmail.com>, 2018-2020.
+# Aviary.pl <community-poland@mozilla.org>, 2018-2020.
+#
#, fuzzy
msgid ""
msgstr ""
"#-#-#-#-# 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"
@@ -44,6 +53,20 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2;\n"
"X-Generator: Poedit 2.2.3\n"
+"#-#-#-#-# pl.po (desktop-icons) #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-05-26 20:08+0000\n"
+"PO-Revision-Date: 2020-05-31 14:15+0200\n"
+"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
+"Language-Team: Polish <community-poland@mozilla.org>\n"
+"Language: pl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2);\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -83,7 +106,7 @@ msgstr "Dodaj regułę"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
-#: extensions/places-menu/placeDisplay.js:233
+#: extensions/places-menu/placeDisplay.js:233 desktopIconsUtil.js:162
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "Wysunięcie napędu „%s” się nie powiodło:"
@@ -145,7 +168,7 @@ msgstr "Zamontowanie woluminu dla „%s” się nie powiodło"
msgid "Computer"
msgstr "Komputer"
-#: extensions/places-menu/placeDisplay.js:359
+#: extensions/places-menu/placeDisplay.js:359 fileItem.js:925
msgid "Home"
msgstr "Katalog domowy"
@@ -345,15 +368,20 @@ msgstr "%s Dash to Dock"
msgid "Trash"
msgstr "Kosz"
-#: locations.js:74
+#: locations.js:74 fileItem.js:707
+#, fuzzy
msgid "Empty Trash"
-msgstr "Pusty kosz"
+msgstr ""
+"#-#-#-#-# pl.po (gnome-shell-extensions) #-#-#-#-#\n"
+"Pusty kosz\n"
+"#-#-#-#-# pl.po (desktop-icons) #-#-#-#-#\n"
+"Opróżnij kosz"
#: locations.js:182
msgid "Mount"
msgstr "Zamontuj"
-#: locations.js:225
+#: locations.js:225 fileItem.js:711
msgid "Eject"
msgstr "Wysuń"
@@ -815,6 +843,190 @@ msgstr "Czas wyświetlania (s)"
msgid "Pressure threshold"
msgstr "Próg nacisku"
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Nazwa nowego katalogu"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Utwórz"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Anuluj"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Nazwy katalogów nie mogą zawierać znaku „/”."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Katalog nie może mieć nazwy „.”."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Katalog nie może mieć nazwy „..”."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Katalogi z „.” na początku nazwy są ukryte."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Plik lub katalog o tej nazwie już istnieje."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Rozmiar ikon na pulpicie"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Mały"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Standardowy"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Duży"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Katalog domowy na pulpicie"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Kosz na pulpicie"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Zamontowane napędy na pulpicie"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Nowy katalog"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Nowy dokument"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Wklej"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Cofnij"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Ponów"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Wyświetl pulpit w menedżerze plików"
+
+#: desktopGrid.js:355 fileItem.js:721
+msgid "Open in Terminal"
+msgstr "Otwórz w terminalu"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Zmień tło…"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Ustawienia ekranu"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Ustawienia"
+
+#: desktopGrid.js:692
+msgid "Rename"
+msgstr "Zmień nazwę"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Nie odnaleziono polecenia"
+
+#: fileItem.js:584
+msgid "Dont Allow Launching"
+msgstr "Nie zezwalaj na uruchamianie"
+
+#: fileItem.js:586
+msgid "Allow Launching"
+msgstr "Zezwól na uruchamianie"
+
+#: fileItem.js:682
+msgid "Open"
+msgstr "Otwórz"
+
+#: fileItem.js:686
+msgid "Open With Other Application"
+msgstr "Otwórz za pomocą innego programu"
+
+#: fileItem.js:688
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Uruchom za pomocą dedykowanej karty graficznej"
+
+#: fileItem.js:693
+msgid "Cut"
+msgstr "Wytnij"
+
+#: fileItem.js:694
+msgid "Copy"
+msgstr "Skopiuj"
+
+#: fileItem.js:696
+msgid "Rename…"
+msgstr "Zmień nazwę…"
+
+#: fileItem.js:697
+msgid "Move to Trash"
+msgstr "Przenieś do kosza"
+
+#: fileItem.js:717
+msgid "Properties"
+msgstr "Właściwości"
+
+#: fileItem.js:719
+msgid "Show in Files"
+msgstr "Wyświetl w menedżerze plików"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Rozmiar ikon"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Ustawia rozmiar ikon na pulpicie."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Katalog domowy"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Wyświetla katalog domowy na pulpicie."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Kosz"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Wyświetla kosz na pulpicie."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Zamontowane napędy"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Wyświetla zamontowane napędy na pulpicie."
+
#~ msgid "Show a dot for each windows of the application."
#~ msgstr "Wyświetla kropkę dla każdego okna programu"
diff --git a/po/pt.po b/po/pt.po
index 99d446f9..0ae7be05 100644
--- a/po/pt.po
+++ b/po/pt.po
@@ -1,4 +1,5 @@
# #-#-#-#-# pt.po (3.14) #-#-#-#-#
+# #-#-#-#-# pt.po (3.14) #-#-#-#-#
# gnome-shell-extensions' Portuguese translation.
# Copyright © 2011 gnome-shell-extensions
# This file is distributed under the same license as the gnome-shell-extensions package.
@@ -17,10 +18,17 @@
# This file is distributed under the same license as the PACKAGE package.
# Carlos Alberto Junior Spohr Poletto <carlos.spohr@gmail.com>, 2012.
#
+# #-#-#-#-# pt.po (desktop-icons master) #-#-#-#-#
+# Portuguese translation for desktop-icons.
+# Copyright (C) 2021 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Hugo Carvalho <hugokarvalho@hotmail.com>, 2021.
+#
#, fuzzy
msgid ""
msgstr ""
"#-#-#-#-# pt.po (3.14) #-#-#-#-#\n"
+"#-#-#-#-# pt.po (3.14) #-#-#-#-#\n"
"Project-Id-Version: 3.14\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n"
@@ -47,6 +55,20 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.2.1\n"
+"#-#-#-#-# pt.po (desktop-icons master) #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2021-02-03 06:55+0000\n"
+"PO-Revision-Date: 2021-02-24 20:34+0000\n"
+"Language-Team: Portuguese <pt@li.org>\n"
+"Language: pt\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"
+"Last-Translator: Hugo Carvalho <hugokarvalho@hotmail.com>\n"
+"X-Generator: Poedit 2.4.1\n"
#: data/gnome-classic.desktop.in:3
msgid "GNOME Classic"
@@ -89,7 +111,11 @@ msgstr "Adicionar regra"
#: extensions/places-menu/placeDisplay.js:233
#, javascript-format
msgid "Ejecting drive “%s” failed:"
-msgstr "Falha ao ejetar a unidade '%s':"
+msgstr ""
+"#-#-#-#-# pt.po (3.14) #-#-#-#-#\n"
+"Falha ao ejetar a unidade '%s':\n"
+"#-#-#-#-# pt.po (desktop-icons master) #-#-#-#-#\n"
+"A ejeção da unidade “%s” falhou:"
#: extensions/drive-menu/extension.js:128
msgid "Removable devices"
@@ -148,9 +174,14 @@ msgstr "Falha ao montar unidade para “%s”"
msgid "Computer"
msgstr "Computador"
-#: extensions/places-menu/placeDisplay.js:359
+#: extensions/places-menu/placeDisplay.js:359 fileItem.js:951
+#, fuzzy
msgid "Home"
-msgstr "Pasta pessoal"
+msgstr ""
+"#-#-#-#-# pt.po (3.14) #-#-#-#-#\n"
+"Pasta pessoal\n"
+"#-#-#-#-# pt.po (desktop-icons master) #-#-#-#-#\n"
+"Início"
#: extensions/places-menu/placeDisplay.js:404
msgid "Browse Network"
@@ -774,6 +805,203 @@ msgstr "Mostrar tempo limite (s)"
msgid "Pressure threshold"
msgstr "Limite de pressão"
+#: desktopGrid.js:359
+#, fuzzy
+msgid "Display Settings"
+msgstr ""
+"#-#-#-#-# pt.po (3.14) #-#-#-#-#\n"
+"Definições de Visualização\n"
+"#-#-#-#-# pt.po (desktop-icons master) #-#-#-#-#\n"
+"Definições de ecrã"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Novo nome de pasta"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "Criar"
+
+#: createFolderDialog.js:74
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: createFolderDialog.js:147
+msgid "Folder names cannot contain “/”."
+msgstr "Nomes de pastas não podem conter “/”."
+
+#: createFolderDialog.js:150
+msgid "A folder cannot be called “.”."
+msgstr "Uma pasta não pode ser chamada de “.”."
+
+#: createFolderDialog.js:153
+msgid "A folder cannot be called “..”."
+msgstr "Uma pasta não pode ser chamada de “..”."
+
+#: createFolderDialog.js:155
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Pastas com “.” no começo de seus nomes são ocultas."
+
+#: createFolderDialog.js:157
+msgid "There is already a file or folder with that name."
+msgstr "Já existe um ficheiro ou uma pasta com esse nome."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Tamanho para os ícones do ambiente de trabalho"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Pequeno"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Padrão"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Grande"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Mostrar a pasta pessoal no ambiente de trabalho"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Mostrar o ícone do lixo no ambiente de trabalho"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Mostrar as unidades montadas na área de trabalho"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Nova pasta"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Novo documento"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Colar"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Anular"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Refazer"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Mostrar o ambiente de trabalho em Ficheiros"
+
+#: desktopGrid.js:355 fileItem.js:726
+msgid "Open in Terminal"
+msgstr "Abrir no Terminal"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Alterar o fundo…"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Definições"
+
+#: desktopGrid.js:699
+msgid "Rename"
+msgstr "Renomear"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Comando não encontrado"
+
+#: fileItem.js:589
+msgid "Dont Allow Launching"
+msgstr "Não permitir iniciar"
+
+#: fileItem.js:591
+msgid "Allow Launching"
+msgstr "Permitir iniciar"
+
+#: fileItem.js:687
+msgid "Open"
+msgstr "Abrir"
+
+#: fileItem.js:691
+msgid "Open With Other Application"
+msgstr "Abrir com outra aplicação"
+
+#: fileItem.js:693
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Iniciar utilizando a placa gráfica dedicada"
+
+#: fileItem.js:698
+msgid "Cut"
+msgstr "Cortar"
+
+#: fileItem.js:699
+msgid "Copy"
+msgstr "Copiar"
+
+#: fileItem.js:701
+msgid "Rename…"
+msgstr "Renomear…"
+
+#: fileItem.js:702
+msgid "Move to Trash"
+msgstr "Mover para o lixo"
+
+#: fileItem.js:712
+msgid "Empty Trash"
+msgstr "Esvaziar lixo"
+
+#: fileItem.js:716
+msgid "Eject"
+msgstr "Ejetar"
+
+#: fileItem.js:722
+msgid "Properties"
+msgstr "Propriedades"
+
+#: fileItem.js:724
+msgid "Show in Files"
+msgstr "Mostrar no Ficheiros"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Tamanho do ícone"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Define o tamanho para os ícones do ambiente de trabalho."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Mostrar pasta pessoal"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Mostra a pasta pessoal no ambiente de trabalho."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Mostrar ícone do lixo"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Mostra o ícone do lixo no ambiente de trabalho."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Mostrar unidades montadas"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Mostra as unidades montadas no ambiente de trabalho."
+
#~ msgid "Attach modal dialog to the parent window"
#~ msgstr "Anexar diálogo modal à janela mãe"
@@ -898,6 +1126,3 @@ msgstr "Limite de pressão"
#~ msgid "Display"
#~ msgstr "Apresentar"
-
-#~ msgid "Display Settings"
-#~ msgstr "Definições de Visualização"
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 9dc0db84..16117cec 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -1,4 +1,5 @@
# #-#-#-#-# 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.
@@ -18,10 +19,18 @@
# Carlos Alberto Junior Spohr Poletto <carlos.spohr@gmail.com>, 2012.
# Fábio Nogueira <fnogueira@gnome.org>, 2016.
#
+# #-#-#-#-# pt_BR.po (desktop-icons master) #-#-#-#-#
+# Brazilian Portuguese translation for desktop-icons.
+# Copyright (C) 2020 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Enrico Nicoletto <liverig@gmail.com>, 2018.
+# Rafael Fontenelle <rafaelff@gnome.org>, 2018-2020.
+#
#, fuzzy
msgid ""
msgstr ""
"#-#-#-#-# 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"
@@ -48,6 +57,20 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.2.1\n"
+"#-#-#-#-# pt_BR.po (desktop-icons master) #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-05-26 20:08+0000\n"
+"PO-Revision-Date: 2020-05-28 18:35-0300\n"
+"Last-Translator: Rafael Fontenelle <rafaelff@gnome.org>\n"
+"Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n"
+"Language: pt_BR\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1)\n"
+"X-Generator: Gtranslator 3.36.0\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -88,10 +111,14 @@ msgstr "Adicionar regra"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
-#: extensions/places-menu/placeDisplay.js:233
-#, javascript-format
+#: extensions/places-menu/placeDisplay.js:233 desktopIconsUtil.js:162
+#, fuzzy, javascript-format
msgid "Ejecting drive “%s” failed:"
-msgstr "Falha ao ejetar a unidade “%s”:"
+msgstr ""
+"#-#-#-#-# pt_BR.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"Falha ao ejetar a unidade “%s”:\n"
+"#-#-#-#-# pt_BR.po (desktop-icons master) #-#-#-#-#\n"
+"A ejeção a unidade “%s” falhou:"
#: extensions/drive-menu/extension.js:128
msgid "Removable devices"
@@ -150,9 +177,14 @@ msgstr "Falha ao montar volume para “%s”"
msgid "Computer"
msgstr "Computador"
-#: extensions/places-menu/placeDisplay.js:359
+#: extensions/places-menu/placeDisplay.js:359 fileItem.js:925
+#, fuzzy
msgid "Home"
-msgstr "Pasta pessoal"
+msgstr ""
+"#-#-#-#-# pt_BR.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"Pasta pessoal\n"
+"#-#-#-#-# pt_BR.po (desktop-icons master) #-#-#-#-#\n"
+"Home"
#: extensions/places-menu/placeDisplay.js:404
msgid "Browse Network"
@@ -781,6 +813,203 @@ msgstr "Mostrar tempo limite [s]"
msgid "Pressure threshold"
msgstr "Limite de pressão"
+#: desktopGrid.js:359
+#, fuzzy
+msgid "Display Settings"
+msgstr ""
+"#-#-#-#-# pt_BR.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"Configurações de tela\n"
+"#-#-#-#-# pt_BR.po (desktop-icons master) #-#-#-#-#\n"
+"Configurações de exibição"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Tamanho do ícone"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Nome da nova pasta"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Criar"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Nomes de pastas não podem conter “/”."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Uma pasta não pode ser chamada “.”."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Uma pasta não pode ser chamada “..”."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Pastas com “.” no começo de seus nomes são ocultas."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Já existe um arquivo ou uma pasta com esse nome."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Tamanho para os ícones da área de trabalho"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Pequeno"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Padrão"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Grande"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Mostrar a pasta pessoal na área de trabalho"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Mostrar o ícone da lixeira na área de trabalho"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Mostrar as unidades montadas na área de trabalho"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Nova pasta"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Novo documento"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Colar"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Desfazer"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Refazer"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Mostrar a área de trabalho no Arquivos"
+
+#: desktopGrid.js:355 fileItem.js:721
+msgid "Open in Terminal"
+msgstr "Abrir no terminal"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Alterar plano de fundo…"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Configurações"
+
+#: desktopGrid.js:692
+msgid "Rename"
+msgstr "Renomear"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Comando não encontrado"
+
+#: fileItem.js:584
+msgid "Dont Allow Launching"
+msgstr "Não permitir iniciar"
+
+#: fileItem.js:586
+msgid "Allow Launching"
+msgstr "Permitir iniciar"
+
+#: fileItem.js:682
+msgid "Open"
+msgstr "Abrir"
+
+#: fileItem.js:686
+msgid "Open With Other Application"
+msgstr "Abrir com outro aplicativo"
+
+#: fileItem.js:688
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Iniciar usando placa gráfica dedicada"
+
+#: fileItem.js:693
+msgid "Cut"
+msgstr "Recortar"
+
+#: fileItem.js:694
+msgid "Copy"
+msgstr "Copiar"
+
+#: fileItem.js:696
+msgid "Rename…"
+msgstr "Renomear…"
+
+#: fileItem.js:697
+msgid "Move to Trash"
+msgstr "Mover para a lixeira"
+
+#: fileItem.js:707
+msgid "Empty Trash"
+msgstr "Esvaziar lixeira"
+
+#: fileItem.js:711
+msgid "Eject"
+msgstr "Ejetar"
+
+#: fileItem.js:717
+msgid "Properties"
+msgstr "Propriedades"
+
+#: fileItem.js:719
+msgid "Show in Files"
+msgstr "Mostrar no Arquivos"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Define o tamanho para os ícones da área de trabalho."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Mostrar pasta pessoal"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Mostra a pasta pessoal na área de trabalho."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Mostrar ícone da lixeira"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Mostra o ícone da lixeira na área de trabalho."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Mostrar unidades montadas"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Mostra as unidades montadas na área de trabalho."
+
#~ msgid "Application"
#~ msgstr "Aplicativo"
@@ -906,9 +1135,6 @@ msgstr "Limite de pressão"
#~ msgid "Display"
#~ msgstr "Tela"
-#~ msgid "Display Settings"
-#~ msgstr "Configurações de tela"
-
#~ msgid "The application icon mode."
#~ msgstr "O modo de ícone do aplicativo."
@@ -943,9 +1169,6 @@ msgstr "Limite de pressão"
#~ "Define a posição do dock na tela. Os valores permitidos são \"right\" ou "
#~ "\"left\""
-#~ msgid "Icon size"
-#~ msgstr "Tamanho do ícone"
-
#~ msgid "Sets icon size of the dock."
#~ msgstr "Define o tamanho do ícone do dock."
@@ -1105,9 +1328,6 @@ msgstr "Limite de pressão"
#~ msgid "Alt Tab Behaviour"
#~ msgstr "Comportamento do Alt Tab"
-#~ msgid "Cancel"
-#~ msgstr "Cancelar"
-
#~ msgid "Ask the user for a default behaviour if true."
#~ msgstr "Pergunte ao usuário por um comportamento padrão se marcado."
@@ -1131,3 +1351,15 @@ msgstr "Limite de pressão"
#~ msgid "Log Out..."
#~ msgstr "Encerrar sessão..."
+
+#~ msgid "Enter file name…"
+#~ msgstr "Insira um nome de arquivo…"
+
+#~ msgid "OK"
+#~ msgstr "OK"
+
+#~ msgid "Huge"
+#~ msgstr "Enorme"
+
+#~ msgid "Ok"
+#~ msgstr "Ok"
diff --git a/po/ro.po b/po/ro.po
index 26edf85e..6378ac71 100644
--- a/po/ro.po
+++ b/po/ro.po
@@ -1,10 +1,19 @@
+# #-#-#-#-# ro.po (gnome-shell-extensions master) #-#-#-#-#
# Romanian translation for gnome-shell-extensions.
# Copyright (C) 2014 gnome-shell-extensions's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-shell-extensions package.
# Bogdan Mințoi <mintoi.bogdan@gmail.com>, 2014.
# Daniel Șerbănescu <daniel [at] serbanescu [dot] dk>, 2014, 2015, 2018.
+# #-#-#-#-# ro.po (desktop-icons master) #-#-#-#-#
+# Romanian translation for desktop-icons.
+# Copyright (C) 2020 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Florentina Mușat <emryslokadottir@gmail.com>, 2020.
+#
+#, fuzzy
msgid ""
msgstr ""
+"#-#-#-#-# ro.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"
@@ -21,6 +30,21 @@ msgstr ""
"20)) ? 1 : 2);;\n"
"X-Generator: Poedit 2.3\n"
"X-Project-Style: gnome\n"
+"#-#-#-#-# ro.po (desktop-icons master) #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-05-26 20:08+0000\n"
+"PO-Revision-Date: 2020-06-06 12:24+0300\n"
+"Last-Translator: Florentina Mușat <emryslokadottir [at] gmail [dot] com>\n"
+"Language-Team: Romanian <gnomero-list@lists.sourceforge.net>\n"
+"Language: ro\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
+"20)) ? 1 : 2);;\n"
+"X-Generator: Poedit 2.3.1\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -61,7 +85,7 @@ msgstr "Adaugă o regulă"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
-#: extensions/places-menu/placeDisplay.js:233
+#: extensions/places-menu/placeDisplay.js:233 desktopIconsUtil.js:162
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "Scoaterea unității „%s” a eșuat:"
@@ -124,7 +148,7 @@ msgstr "Eșec la montarea volumului pentru „%s”"
msgid "Computer"
msgstr "Calculator"
-#: extensions/places-menu/placeDisplay.js:359
+#: extensions/places-menu/placeDisplay.js:359 fileItem.js:925
msgid "Home"
msgstr "Acasă"
@@ -265,6 +289,198 @@ msgstr "Spațiu de lucru %d"
msgid "Add Workspace"
msgstr "Adaugă un spațiu de lucru"
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Nume nou de fișier"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Creează"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Anulează"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Numele dosarelor nu pot conține „/”."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Un dosar nu poate fi numit „.”."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Un dosar nu poate fi numit „..”."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Dosarele cu „.” la începutul numelui sunt ascunse."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Există deja un fișier sau doar cu acel nume."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Dimensiunea pentru iconițele desktopului"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Mic"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Standard"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Mare"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Arată dosarul personal pe desktop"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Arată iconița gunoiului pe desktop"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Arată dispozitivele montate pe desktop"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Dosar nou"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Document nou"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Lipește"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Refă"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Repetă"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Aratată Desktopul în Fișiere"
+
+#: desktopGrid.js:355 fileItem.js:721
+msgid "Open in Terminal"
+msgstr "Deschide în Terminal"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Schimbă fundalul…"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Configurări afișaj"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Configurări"
+
+#: desktopGrid.js:692
+msgid "Rename"
+msgstr "Redenumește"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Comanda nu a fost găsită"
+
+#: fileItem.js:584
+msgid "Dont Allow Launching"
+msgstr "Nu permite lansarea"
+
+#: fileItem.js:586
+msgid "Allow Launching"
+msgstr "Permite lansarea"
+
+#: fileItem.js:682
+msgid "Open"
+msgstr "Deschide"
+
+#: fileItem.js:686
+msgid "Open With Other Application"
+msgstr "Deschide cu altă aplicație"
+
+#: fileItem.js:688
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Lansează folosind placa grafică dedicată"
+
+#: fileItem.js:693
+msgid "Cut"
+msgstr "Taie"
+
+#: fileItem.js:694
+msgid "Copy"
+msgstr "Copiază"
+
+#: fileItem.js:696
+msgid "Rename…"
+msgstr "Redenumește…"
+
+#: fileItem.js:697
+msgid "Move to Trash"
+msgstr "Mută la gunoi"
+
+#: fileItem.js:707
+msgid "Empty Trash"
+msgstr "Golește gunoiul"
+
+#: fileItem.js:711
+msgid "Eject"
+msgstr "Ejectează"
+
+#: fileItem.js:717
+msgid "Properties"
+msgstr "Proprietăți"
+
+#: fileItem.js:719
+msgid "Show in Files"
+msgstr "Arată în Fișiere"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Dimensiune iconiță"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Stabilește dimensiunea pentru iconițele desktopului."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Arată dosarul personal"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Arată dosarul personal pe desktop."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Arată iconița gunoiului"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Arată iconița gunoiului pe deskop."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Arată dispozitivele montate"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Arată dispozitivele montate pe desktop."
+
#~ msgid "Application"
#~ msgstr "Aplicație"
diff --git a/po/ru.po b/po/ru.po
index de5dbbb5..360d636f 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -1,4 +1,5 @@
# #-#-#-#-# 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.
@@ -9,10 +10,17 @@
# Russian translation for dash-to-dock GNOME Shell extension
# Ivan Komaritsyn <vantu5z@mail.ru>, 2015-2020.
#
+# #-#-#-#-# ru.po #-#-#-#-#
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Eaglers <eaglersdeveloper@gmail.com>, 2018.
+#
#, fuzzy
msgid ""
msgstr ""
"#-#-#-#-# 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"
@@ -41,6 +49,20 @@ msgstr ""
"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"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-04-05 21:12+0200\n"
+"PO-Revision-Date: 2020-04-06 22:29+0300\n"
+"Last-Translator: Stas Solovey <whats_up@tut.by>\n"
+"Language-Team: Russian <gnome-cyr@gnome.org>\n"
+"Language: ru\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Poedit 2.3\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -793,6 +815,174 @@ msgstr "Задержка открытия (сек.)"
msgid "Pressure threshold"
msgstr "Порог давления"
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Имя новой папки"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Создать"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Отмена"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Имена папок не могут содержать «/»."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Папка не может быть названа как «.»."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Папка не может быть названа как «..»."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Папки с точкой «.» в начале их имени скрываются."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Файл или папка с таким именем уже существует."
+
+#: prefs.js:102
+msgid "Size for the desktop icons"
+msgstr "Размер значков"
+
+#: prefs.js:102
+msgid "Small"
+msgstr "Маленький"
+
+#: prefs.js:102
+msgid "Standard"
+msgstr "Стандартный"
+
+#: prefs.js:102
+msgid "Large"
+msgstr "Большой"
+
+#: prefs.js:103
+msgid "Show the personal folder in the desktop"
+msgstr "Показывать домашнюю папку на рабочем столе"
+
+#: prefs.js:104
+msgid "Show the trash icon in the desktop"
+msgstr "Показывать «Корзину» на рабочем столе"
+
+#: desktopGrid.js:343
+msgid "New Folder"
+msgstr "Создать папку"
+
+#: desktopGrid.js:345
+msgid "Paste"
+msgstr "Вставить"
+
+#: desktopGrid.js:346
+msgid "Undo"
+msgstr "Отменить"
+
+#: desktopGrid.js:347
+msgid "Redo"
+msgstr "Повторить"
+
+#: desktopGrid.js:349
+msgid "Show Desktop in Files"
+msgstr "Показывать папку «Рабочий стол» в приложении «Файлы»"
+
+#: desktopGrid.js:350 fileItem.js:651
+msgid "Open in Terminal"
+msgstr "Открыть в терминале"
+
+#: desktopGrid.js:352
+msgid "Change Background…"
+msgstr "Изменить фон…"
+
+#: desktopGrid.js:354
+msgid "Display Settings"
+msgstr "Настройки дисплея"
+
+#: desktopGrid.js:355
+msgid "Settings"
+msgstr "Параметры"
+
+#: desktopGrid.js:653
+msgid "Rename"
+msgstr "Переименовать"
+
+#: desktopIconsUtil.js:61
+msgid "Command not found"
+msgstr "Команда не найдена"
+
+#: fileItem.js:521
+msgid "Dont Allow Launching"
+msgstr "Запретить запуск"
+
+#: fileItem.js:523
+msgid "Allow Launching"
+msgstr "Разрешить запуск"
+
+#: fileItem.js:619
+msgid "Open"
+msgstr "Открыть"
+
+#: fileItem.js:623
+msgid "Open With Other Application"
+msgstr "Открыть в другом приложении"
+
+#: fileItem.js:627
+msgid "Cut"
+msgstr "Вырезать"
+
+#: fileItem.js:628
+msgid "Copy"
+msgstr "Вставить"
+
+#: fileItem.js:630
+msgid "Rename…"
+msgstr "Переименовать…"
+
+#: fileItem.js:631
+msgid "Move to Trash"
+msgstr "Переместить в корзину"
+
+#: fileItem.js:641
+msgid "Empty Trash"
+msgstr "Очистить корзину"
+
+#: fileItem.js:647
+msgid "Properties"
+msgstr "Свойства"
+
+#: fileItem.js:649
+msgid "Show in Files"
+msgstr "Показать в «Файлах»"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Размер значков"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Установить размер значков рабочего стола."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Показывать домашнюю папку"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Показывать значок домашней папки на рабочем столе."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Показывать значок корзины"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Показывать значок корзины на рабочем столе."
+
#~ msgid "Attach modal dialog to the parent window"
#~ msgstr "Прикреплять модальное диалоговое окно к родительскому окну"
@@ -985,3 +1175,12 @@ msgstr "Порог давления"
#~ msgid "Shrink the dash size by reducing padding"
#~ msgstr "Уменьшить Док за счёт промежутков"
+
+#~ msgid "Huge"
+#~ msgstr "Огромный"
+
+#~ msgid "Enter file name…"
+#~ msgstr "Ввести имя файла…"
+
+#~ msgid "Ok"
+#~ msgstr "ОК"
diff --git a/po/sk.po b/po/sk.po
index e8330d08..4c6c91b4 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -1,4 +1,5 @@
# #-#-#-#-# sk.po (gnome-shell-extensions) #-#-#-#-#
+# #-#-#-#-# sk.po (gnome-shell-extensions) #-#-#-#-#
# Slovak translation for gnome-shell-extensions.
# Copyright (C) 2012-2013 Free Software Foundation, Inc.
# This file is distributed under the same license as the gnome-shell-extensions package.
@@ -11,10 +12,17 @@
# This file is distributed under the same license as the PACKAGE package.
# Dušan Kazik <prescott66@gmail.com>, 2015, 2016.
#
+# #-#-#-#-# sk.po (desktop-icons master) #-#-#-#-#
+# Slovak translation for desktop-icons.
+# Copyright (C) 2020 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Dušan Kazik <prescott66@gmail.com>, 2020.
+#
#, fuzzy
msgid ""
msgstr ""
"#-#-#-#-# sk.po (gnome-shell-extensions) #-#-#-#-#\n"
+"#-#-#-#-# sk.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"
@@ -41,6 +49,20 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.8.7.1\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+"#-#-#-#-# sk.po (desktop-icons master) #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-09-05 22:22+0000\n"
+"PO-Revision-Date: 2020-09-06 18:40+0200\n"
+"Language-Team: Slovak <gnome-sk-list@gnome.org>\n"
+"Language: sk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n"
+"Last-Translator: Dušan Kazik <prescott66@gmail.com>\n"
+"X-Generator: Poedit 2.4.1\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -83,10 +105,11 @@ msgstr "Pravidlá pracovného priestoru"
msgid "Add Rule"
msgstr "Pridať pravidlo"
+# #-#-#-#-# sk.po (gnome-shell-extensions) #-#-#-#-#
# https://bugzilla.gnome.org/show_bug.cgi?id=687590
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
-#: extensions/places-menu/placeDisplay.js:233
+#: extensions/places-menu/placeDisplay.js:233 desktopIconsUtil.js:162
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "Zlyhalo vysúvanie jednotky „%s“:"
@@ -154,8 +177,9 @@ msgstr "Zlyhalo pripojenie zväzku pre „%s“"
msgid "Computer"
msgstr "Počítač"
+# #-#-#-#-# sk.po (gnome-shell-extensions) #-#-#-#-#
# Places
-#: extensions/places-menu/placeDisplay.js:359
+#: extensions/places-menu/placeDisplay.js:359 fileItem.js:927
msgid "Home"
msgstr "Domov"
@@ -735,6 +759,198 @@ msgstr "Zobraziť časový limit (s)"
msgid "Pressure threshold"
msgstr "Medza tlaku"
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Nový názov priečinka"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Vytvoriť"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Zrušiť"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Názvy priečinkov nemôžu obsahovať znak „/“."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Priečinok nemôže byť nazvaný „.“."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Priečinok nemôže byť nazvaný „..“."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Priečinky s názvami začínajúcimi znakom „.“ sú skryté."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Súbor alebo priečinok s týmto názvom už existuje."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Veľkosť ikon pracovnej plochy"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Malé"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Štandardné"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Veľké"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Zobraziť osobný priečinok na pracovnej ploche"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Zobraziť ikonu Koša na pracovnej ploche"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Zobraziť pripojené jednotky na pracovnej ploche"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Nový priečinok"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Nový dokument"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Vložiť"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Vráti späť"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Opakovať vrátené"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Zobraziť Plochu v aplikácii Súbory"
+
+#: desktopGrid.js:355 fileItem.js:723
+msgid "Open in Terminal"
+msgstr "Otvoriť v termináli"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Zmeniť pozadie…"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Nastavenia displejov"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Nastavenia"
+
+#: desktopGrid.js:699
+msgid "Rename"
+msgstr "Premenovanie"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Príkaz sa nenašiel"
+
+#: fileItem.js:586
+msgid "Dont Allow Launching"
+msgstr "Neumožniť spúšťanie"
+
+#: fileItem.js:588
+msgid "Allow Launching"
+msgstr "Umožniť spúšťanie"
+
+#: fileItem.js:684
+msgid "Open"
+msgstr "Otvorené"
+
+#: fileItem.js:688
+msgid "Open With Other Application"
+msgstr "Otvoriť inou aplikáciou"
+
+#: fileItem.js:690
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Spustiť pomocou vyhradenej grafickej karty"
+
+#: fileItem.js:695
+msgid "Cut"
+msgstr "Vystrihnúť"
+
+#: fileItem.js:696
+msgid "Copy"
+msgstr "Skopíruje"
+
+#: fileItem.js:698
+msgid "Rename…"
+msgstr "Premenovať…"
+
+#: fileItem.js:699
+msgid "Move to Trash"
+msgstr "Presunúť do Koša"
+
+#: fileItem.js:709
+msgid "Empty Trash"
+msgstr "Vyprázdniť Kôš"
+
+#: fileItem.js:713
+msgid "Eject"
+msgstr "Vysunúť"
+
+#: fileItem.js:719
+msgid "Properties"
+msgstr "Vlastnosti"
+
+#: fileItem.js:721
+msgid "Show in Files"
+msgstr "Zobraziť v aplikácii Súbory"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Veľkosť ikon"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Nastaví veľkosť ikon na pracovnej ploche."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Zobraziť osobný priečinok"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Zobrazí osobný priečinok na pracovnej ploche."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Zobraziť ikonu Koša"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Zobrazí ikonu Koša na pracovnej ploche."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Zobraziť pripojené jednotky"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Zobrazí pripojené jednotky na pracovnej ploche."
+
# TreeViewColumn
#~ msgid "Application"
#~ msgstr "Aplikácia"
diff --git a/po/sl.po b/po/sl.po
index 273c1606..0a3ee8e6 100644
--- a/po/sl.po
+++ b/po/sl.po
@@ -1,11 +1,21 @@
+# #-#-#-#-# sl.po (gnome-shell-extension-openweather 1.1) #-#-#-#-#
# Slovenian translation for gnome-shell-extension-openweather.
# Copyright (C) YEAR Jens Lody
# This file is distributed under the same license as the gnome-shell-extension-openweather package.
#
# Matej Urbančič <mateju@svn.gnome.org>, 20182020.
#
+# #-#-#-#-# sl.po (desktop-icons master) #-#-#-#-#
+# Slovenian translations for desktop-icons.
+# Copyright (C) 2018 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the atomix package.
+#
+# Matej Urbančič <mateju@svn.gnome.org>, + 2018.
+#
+#, fuzzy
msgid ""
msgstr ""
+"#-#-#-#-# sl.po (gnome-shell-extension-openweather 1.1) #-#-#-#-#\n"
"Project-Id-Version: gnome-shell-extension-openweather 1.1\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
"issues\n"
@@ -20,6 +30,21 @@ msgstr ""
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100>=3 && n"
"%100<=4 ? 2 : 3);\n"
"X-Generator: Poedit 2.3\n"
+"#-#-#-#-# sl.po (desktop-icons master) #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-08-28 03:11+0000\n"
+"PO-Revision-Date: 2020-09-03 21:58+0200\n"
+"Last-Translator: \n"
+"Language-Team: Slovenian <gnome-si@googlegroups.com>\n"
+"Language: sl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n"
+"%100==4 ? 3 : 0);\n"
+"X-Generator: Poedit 2.3\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -59,7 +84,7 @@ msgstr "Dodaj pravilo"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
-#: extensions/places-menu/placeDisplay.js:233
+#: extensions/places-menu/placeDisplay.js:233 desktopIconsUtil.js:162
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "Izmetavanje pogona »%s« je spodletelo:"
@@ -120,9 +145,14 @@ msgstr "Priklapljanje nosilca za »%s« je spodletelo"
msgid "Computer"
msgstr "Računalnik"
-#: extensions/places-menu/placeDisplay.js:359
+#: extensions/places-menu/placeDisplay.js:359 fileItem.js:927
+#, fuzzy
msgid "Home"
-msgstr "Home"
+msgstr ""
+"#-#-#-#-# sl.po (gnome-shell-extension-openweather 1.1) #-#-#-#-#\n"
+"Home\n"
+"#-#-#-#-# sl.po (desktop-icons master) #-#-#-#-#\n"
+"Na začetek"
#: extensions/places-menu/placeDisplay.js:404
msgid "Browse Network"
@@ -259,6 +289,198 @@ msgstr "Delovna površina %d"
msgid "Add Workspace"
msgstr "Dodaj delovno površino"
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Prekliči"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Ime nove mape"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Ustvari"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Ime mape ne sme vsebovati poševnice » / «."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Mapa ne sme biti poimenovana » . «."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Mapa ne sme biti poimenovana » .. «."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Mape, katerih ime se začne s piko » . «, so skrite mape."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Mapa oziroma datoteka z enakim imenom že obstaja."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Velikost ikon namizja"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Majhne"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Običajne"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Velike"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Pokaži osebno mapo na namizju"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Pokaži smeti na namizju"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Pokaži priklopljene nosilce na namizju"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Nova mapa"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Nov dokument"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Prilepi"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Razveljavi"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Ponovno uveljavi"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Odpri Namizje v upravljalniku datotek"
+
+#: desktopGrid.js:355 fileItem.js:723
+msgid "Open in Terminal"
+msgstr "Odpri v terminalu"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Spremeni ozadje …"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Nastavitve zaslona"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Nastavitve"
+
+#: desktopGrid.js:699
+msgid "Rename"
+msgstr "Preimenuj"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Ukaza ni mogoče najti"
+
+#: fileItem.js:586
+msgid "Dont Allow Launching"
+msgstr "Ne dovoli zaganjanja"
+
+#: fileItem.js:588
+msgid "Allow Launching"
+msgstr "Dovoli zaganjanje"
+
+#: fileItem.js:684
+msgid "Open"
+msgstr "Odpri"
+
+#: fileItem.js:688
+msgid "Open With Other Application"
+msgstr "Odpri z drugim programom …"
+
+#: fileItem.js:690
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Zaženi z uporabo določene grafične kartice"
+
+#: fileItem.js:695
+msgid "Cut"
+msgstr "Izreži"
+
+#: fileItem.js:696
+msgid "Copy"
+msgstr "Kopiraj"
+
+#: fileItem.js:698
+msgid "Rename…"
+msgstr "Preimenuj …"
+
+#: fileItem.js:699
+msgid "Move to Trash"
+msgstr "Premakni v smeti"
+
+#: fileItem.js:709
+msgid "Empty Trash"
+msgstr "Izprazni smeti"
+
+#: fileItem.js:713
+msgid "Eject"
+msgstr "Izvrzi"
+
+#: fileItem.js:719
+msgid "Properties"
+msgstr "Lastnosti"
+
+#: fileItem.js:721
+msgid "Show in Files"
+msgstr "Pokaži v upravljalniku datotek"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Velikost ikon"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Nastavitev velikosti ikon na namizju."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Pokaži osebno mapo"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Pokaže ikono osebne mape na namizju."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Pokaži ikono smeti"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Pokaže ikono smeti na namizju."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Pokaži priklopljene nosilce"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Pokaži priklopljene nosilce na namizju."
+
#~ msgid "Application"
#~ msgstr "Program "
@@ -707,9 +929,6 @@ msgstr "Dodaj delovno površino"
#~ msgid "Extensions default weather provider"
#~ msgstr "Privzeti ponudnik vremenskih podatkov"
-#~ msgid "Cancel"
-#~ msgstr "Prekliči"
-
#~ msgid "Save"
#~ msgstr "Shrani"
@@ -915,3 +1134,6 @@ msgstr "Dodaj delovno površino"
#~ msgid "Your personal AppKey from developer.mapquest.com"
#~ msgstr "Osebni programski ključ developer.mapquest.com"
+
+#~ msgid "Huge"
+#~ msgstr "Velikanske"
diff --git a/po/sr.po b/po/sr.po
index 92ab6945..d18451a4 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -1,4 +1,5 @@
# #-#-#-#-# sr.po (gnome-shell-extensions master) #-#-#-#-#
+# #-#-#-#-# sr.po (gnome-shell-extensions master) #-#-#-#-#
# Serbian translation for gnome-shell-extensions.
# Courtesy of Prevod.org team (http://prevod.org/) -- 2012—2017.
# This file is distributed under the same license as the gnome-shell-extensions package.
@@ -12,10 +13,16 @@
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
+# #-#-#-#-# sr.po (desktop-icons master) #-#-#-#-#
+# Serbian translation for desktop-icons.
+# Copyright © 2021 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Мирослав Николић <miroslavnikolic@rocketmail.com>, 2021.
#, fuzzy
msgid ""
msgstr ""
"#-#-#-#-# sr.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"#-#-#-#-# sr.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"
@@ -45,6 +52,20 @@ msgstr ""
"X-Generator: Poedit 2.0.3\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"
+"#-#-#-#-# sr.po (desktop-icons master) #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2021-01-27 22:42+0000\n"
+"PO-Revision-Date: 2021-02-02 07:23+0200\n"
+"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
+"Language-Team: српски <gnome-sr@googlegroups.org>\n"
+"Language: sr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : n"
+"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -85,10 +106,14 @@ msgstr "Додај правило"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
-#: extensions/places-menu/placeDisplay.js:233
-#, javascript-format
+#: extensions/places-menu/placeDisplay.js:233 desktopIconsUtil.js:162
+#, fuzzy, javascript-format
msgid "Ejecting drive “%s” failed:"
-msgstr "Нисам успео да избацим уређај „%s“:"
+msgstr ""
+"#-#-#-#-# sr.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"Нисам успео да избацим уређај „%s“:\n"
+"#-#-#-#-# sr.po (desktop-icons master) #-#-#-#-#\n"
+"Избацивање уређаја „%s“ није успело:"
#: extensions/drive-menu/extension.js:128
msgid "Removable devices"
@@ -146,9 +171,14 @@ msgstr "Нисам успео да прикачим волумен за „%s“
msgid "Computer"
msgstr "Рачунар"
-#: extensions/places-menu/placeDisplay.js:359
+#: extensions/places-menu/placeDisplay.js:359 fileItem.js:951
+#, fuzzy
msgid "Home"
-msgstr "Личнo"
+msgstr ""
+"#-#-#-#-# sr.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"Личнo\n"
+"#-#-#-#-# sr.po (desktop-icons master) #-#-#-#-#\n"
+"Полазна"
#: extensions/places-menu/placeDisplay.js:404
msgid "Browse Network"
@@ -721,6 +751,198 @@ msgstr "Застој приказивања"
msgid "Pressure threshold"
msgstr "Праг притиска"
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Назив нове фасцикле"
+
+#: createFolderDialog.js:72
+msgid "Create"
+msgstr "Направи"
+
+#: createFolderDialog.js:74
+msgid "Cancel"
+msgstr "Откажи"
+
+#: createFolderDialog.js:147
+msgid "Folder names cannot contain “/”."
+msgstr "Називи фасцикли не могу да садрже /."
+
+#: createFolderDialog.js:150
+msgid "A folder cannot be called “.”."
+msgstr "Фасцикла се не може звати „.“."
+
+#: createFolderDialog.js:153
+msgid "A folder cannot be called “..”."
+msgstr "Фасцикла се не може звати „..“."
+
+#: createFolderDialog.js:155
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Фасцикле са . на почетку назива су скривене."
+
+#: createFolderDialog.js:157
+msgid "There is already a file or folder with that name."
+msgstr "Већ постоји датотека или фасцикла са тим називом."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Величина за иконице радне површи"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Мала"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Обична"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Велика"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Прикажи личну фасциклу на радној површи"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Прикажи иконицу смећа на радној површи"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Прикажи прикачене уређаје на радној површи"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Нова фасцикла"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Нови документ"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Убаци"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Поништи"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Врати"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Прикажи радну површ у датотекама"
+
+#: desktopGrid.js:355 fileItem.js:726
+msgid "Open in Terminal"
+msgstr "Отвори у терминалу"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Измени позадину…"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Прикажи поставке"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Поставке"
+
+#: desktopGrid.js:699
+msgid "Rename"
+msgstr "Преименуј"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Нема такве наредбе"
+
+#: fileItem.js:589
+msgid "Dont Allow Launching"
+msgstr "Не дозволи покретање"
+
+#: fileItem.js:591
+msgid "Allow Launching"
+msgstr "Дозволи покретање"
+
+#: fileItem.js:687
+msgid "Open"
+msgstr "Отвори"
+
+#: fileItem.js:691
+msgid "Open With Other Application"
+msgstr "Отвори другим програмом"
+
+#: fileItem.js:693
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Покрени користећи намењену графичку картицу"
+
+#: fileItem.js:698
+msgid "Cut"
+msgstr "Исеци"
+
+#: fileItem.js:699
+msgid "Copy"
+msgstr "Умножи"
+
+#: fileItem.js:701
+msgid "Rename…"
+msgstr "Преименуј…"
+
+#: fileItem.js:702
+msgid "Move to Trash"
+msgstr "Премести у смеће"
+
+#: fileItem.js:712
+msgid "Empty Trash"
+msgstr "Испразни смеће"
+
+#: fileItem.js:716
+msgid "Eject"
+msgstr "Избаци"
+
+#: fileItem.js:722
+msgid "Properties"
+msgstr "Својства"
+
+#: fileItem.js:724
+msgid "Show in Files"
+msgstr "Прикажи у Датотекама"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Величина иконице"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Поставља величину за иконице радне површи."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Приказ личне фасцикле"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Приказује личну фасциклу на радној површи."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Приказ иконице смећа"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Приказује иконицу смећа на радној површи."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Приказ прикачених уређаја"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Приказује прикачене уређаје на радној површи."
+
#~ msgid "Application"
#~ msgstr "Програм"
diff --git a/po/sv.po b/po/sv.po
index 2ca88c58..dedabe1b 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -1,4 +1,5 @@
# #-#-#-#-# 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.
@@ -13,10 +14,18 @@
# Anders Jonsson <anders.jonsson@norsjovallen.se>, 2016.
# Morgan Antonsson <morgan.antonsson@gmail.com>, 2020.
#
+# #-#-#-#-# sv.po (desktop-icons master) #-#-#-#-#
+# Swedish translation for desktop-icons.
+# Copyright © 2018-2020 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Anders Jonsson <anders.jonsson@norsjovallen.se>, 2018, 2019, 2020.
+# Josef Andersson <l10nl18nsweja@gmail.com>, 2019.
+#
#, fuzzy
msgid ""
msgstr ""
"#-#-#-#-# 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"
@@ -41,6 +50,20 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.3\n"
+"#-#-#-#-# sv.po (desktop-icons master) #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-05-26 20:08+0000\n"
+"PO-Revision-Date: 2020-05-27 01:14+0200\n"
+"Last-Translator: Anders Jonsson <anders.jonsson@norsjovallen.se>\n"
+"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
+"Language: sv\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 2.3.1\n"
#: data/gnome-classic.desktop.in:3
msgid "GNOME Classic"
@@ -80,10 +103,14 @@ msgstr "Lägg till regel"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
-#: extensions/places-menu/placeDisplay.js:233
-#, javascript-format
+#: extensions/places-menu/placeDisplay.js:233 desktopIconsUtil.js:162
+#, fuzzy, javascript-format
msgid "Ejecting drive “%s” failed:"
-msgstr "Utmatning av disk ”%s” misslyckades:"
+msgstr ""
+"#-#-#-#-# sv.po (gnome-shell-extensions) #-#-#-#-#\n"
+"Utmatning av disk ”%s” misslyckades:\n"
+"#-#-#-#-# sv.po (desktop-icons master) #-#-#-#-#\n"
+"Utmatning av enhet ”%s” misslyckades:"
#: extensions/drive-menu/extension.js:128
msgid "Removable devices"
@@ -142,7 +169,7 @@ msgstr "Misslyckades med att montera volym för ”%s”"
msgid "Computer"
msgstr "Dator"
-#: extensions/places-menu/placeDisplay.js:359
+#: extensions/places-menu/placeDisplay.js:359 fileItem.js:925
msgid "Home"
msgstr "Hem"
@@ -342,7 +369,7 @@ msgstr "%s för Dash to Dock"
msgid "Trash"
msgstr "Papperskorg"
-#: locations.js:89
+#: locations.js:89 fileItem.js:707
msgid "Empty Trash"
msgstr "Töm papperskorgen"
@@ -350,7 +377,7 @@ msgstr "Töm papperskorgen"
msgid "Mount"
msgstr "Montera"
-#: locations.js:250
+#: locations.js:250 fileItem.js:711
msgid "Eject"
msgstr "Mata ut"
@@ -803,3 +830,203 @@ msgstr "Tidsgräns för att visa (s)"
#: Settings.ui.h:108
msgid "Pressure threshold"
msgstr "Tröskelvärde för tryck"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Nytt mappnamn"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Skapa"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Mappnamn kan inte innehålla ”/”."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "En mapp kan inte kallas ”.”."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "En mapp kan inte kallas ”..”."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Mappar med ”.” i början på sitt namn är dolda."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Det finns redan en fil eller mapp med det namnet."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Storlek för skrivbordsikonerna"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Liten"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Standard"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Stor"
+
+# TODO: *ON* the desktop?
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Visa den personliga mappen på skrivbordet"
+
+# TODO: *ON* the desktop?
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Visa papperskorgsikonen på skrivbordet"
+
+# TODO: *ON* the desktop?
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Visa monterade enheter på skrivbordet"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Ny mapp"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Nytt dokument"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Klistra in"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Ångra"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Gör om"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Visa skrivbord i Filer"
+
+#: desktopGrid.js:355 fileItem.js:721
+msgid "Open in Terminal"
+msgstr "Öppna i terminal"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Ändra bakgrund…"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Visningsinställningar"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Inställningar"
+
+#: desktopGrid.js:692
+msgid "Rename"
+msgstr "Byt namn"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Kommandot hittades inte"
+
+#: fileItem.js:584
+msgid "Dont Allow Launching"
+msgstr "Tillåt ej programstart"
+
+#: fileItem.js:586
+msgid "Allow Launching"
+msgstr "Tillåt programstart"
+
+#: fileItem.js:682
+msgid "Open"
+msgstr "Öppna"
+
+#: fileItem.js:686
+msgid "Open With Other Application"
+msgstr "Öppna med annat program"
+
+#: fileItem.js:688
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Kör med diskret grafikkort"
+
+#: fileItem.js:693
+msgid "Cut"
+msgstr "Klipp ut"
+
+#: fileItem.js:694
+msgid "Copy"
+msgstr "Kopiera"
+
+#: fileItem.js:696
+msgid "Rename…"
+msgstr "Byt namn…"
+
+#: fileItem.js:697
+msgid "Move to Trash"
+msgstr "Flytta till papperskorgen"
+
+#: fileItem.js:717
+msgid "Properties"
+msgstr "Egenskaper"
+
+#: fileItem.js:719
+msgid "Show in Files"
+msgstr "Visa i Filer"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Ikonstorlek"
+
+# TODO: *ON* the desktop?
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Ställ in storleken för skrivbordsikonerna."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Visa personlig mapp"
+
+# TODO: *ON* the desktop?
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Visa den personliga mappen på skrivbordet."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Visa papperskorgsikon"
+
+# TODO: *ON* the desktop?
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Visa papperskorgsikonen på skrivbordet."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Visa monterade enheter"
+
+# TODO: *ON* the desktop?
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Visa monterade enheter på skrivbordet."
+
+#~ msgid "Enter file name…"
+#~ msgstr "Ange filnamn…"
+
+#~ msgid "OK"
+#~ msgstr "OK"
+
+#~ msgid "Huge"
+#~ msgstr "Enorm"
diff --git a/po/tr.po b/po/tr.po
index 38bbc7b6..3870d35e 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -1,4 +1,5 @@
# #-#-#-#-# 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.
@@ -23,10 +24,20 @@
# Note for all turkish translators:
# Lütfen GNOME Shell çevirileri ile uyumlu çevirmeye gayret edelim.
#
+# #-#-#-#-# tr.po #-#-#-#-#
+# Turkish translation for desktop-icons.
+# Copyright (C) 2000-2019 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+#
+# Sabri Ünal <libreajans@gmail.com>, 2019.
+# Serdar Sağlam <teknomobil@yandex.com>, 2019
+# Emin Tufan Çetin <etcetin@gmail.com>, 2019, 2020.
+#
#, fuzzy
msgid ""
msgstr ""
"#-#-#-#-# 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"
@@ -53,6 +64,20 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 2.0.6\n"
+"#-#-#-#-# tr.po #-#-#-#-#\n"
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-05-26 20:08+0000\n"
+"PO-Revision-Date: 2020-09-06 01:02+0300\n"
+"Last-Translator: Emin Tufan Çetin <etcetin@gmail.com>\n"
+"Language-Team: Türkçe <gnome-turk@gnome.org>\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.0.6\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -92,7 +117,7 @@ msgstr "Kural Ekle"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
-#: extensions/places-menu/placeDisplay.js:233
+#: extensions/places-menu/placeDisplay.js:233 desktopIconsUtil.js:162
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "“%s” sürücüsü çıkarılamadı:"
@@ -155,9 +180,14 @@ msgstr "“%s” için birim bağlanamadı"
msgid "Computer"
msgstr "Bilgisayar"
-#: extensions/places-menu/placeDisplay.js:359
+#: extensions/places-menu/placeDisplay.js:359 fileItem.js:925
+#, fuzzy
msgid "Home"
-msgstr "Başlangıç"
+msgstr ""
+"#-#-#-#-# tr.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"Başlangıç\n"
+"#-#-#-#-# tr.po #-#-#-#-#\n"
+"Ev"
#: extensions/places-menu/placeDisplay.js:404
msgid "Browse Network"
@@ -815,6 +845,198 @@ msgstr "Gösterim zaman aşımı (s)"
msgid "Pressure threshold"
msgstr "Etki eşiği"
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Yeni klasör adı"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Oluştur"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "İptal"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Klasör adları “/” içeremez."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Klasör “.” olarak adlandırılamaz."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Klasör “..” olarak adlandırılamaz."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Adının başında “.” bulunan klasörler gizlenir."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Bu adda dosya veya klasör var."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Masaüstü simgeleri boyutu"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Küçük"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Standart"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Büyük"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Kişisel klasörü masaüstünde göster"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Çöp kutusunu masaüstünde göster"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Bağlı sürücüleri masaüstünde göster"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Yeni Klasör"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Yeni Belge"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Yapıştır"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Geri Al"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Yinele"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Masaüstünü Dosyalarʼda Göster"
+
+#: desktopGrid.js:355 fileItem.js:721
+msgid "Open in Terminal"
+msgstr "Uçbirimde Aç"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Arka Planı Değiştir…"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Görüntü Ayarları"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Ayarlar"
+
+#: desktopGrid.js:692
+msgid "Rename"
+msgstr "Yeniden Adlandır"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Komut bulunamadı"
+
+#: fileItem.js:584
+msgid "Dont Allow Launching"
+msgstr "Başlatmaya İzin Verme"
+
+#: fileItem.js:586
+msgid "Allow Launching"
+msgstr "Başlatmaya İzin Ver"
+
+#: fileItem.js:682
+msgid "Open"
+msgstr "Aç"
+
+#: fileItem.js:686
+msgid "Open With Other Application"
+msgstr "Başka Uygulamayla Aç"
+
+#: fileItem.js:688
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Ayrık Ekran Kartıyla Başlat"
+
+#: fileItem.js:693
+msgid "Cut"
+msgstr "Kes"
+
+#: fileItem.js:694
+msgid "Copy"
+msgstr "Kopyala"
+
+#: fileItem.js:696
+msgid "Rename…"
+msgstr "Yeniden Adlandır…"
+
+#: fileItem.js:697
+msgid "Move to Trash"
+msgstr "Çöpe Taşı"
+
+#: fileItem.js:707
+msgid "Empty Trash"
+msgstr "Çöpü Boşalt"
+
+#: fileItem.js:711
+msgid "Eject"
+msgstr "Çıkar"
+
+#: fileItem.js:717
+msgid "Properties"
+msgstr "Özellikler"
+
+#: fileItem.js:719
+msgid "Show in Files"
+msgstr "Dosyalarʼda Göster"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "Simge boyutu"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Masaüstü simgelerinin boyutunu ayarla."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Kişisel klasörü göster"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Kişisel klasörü masaüstünde göster."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Çöp kutusunu göster"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Çöp kutusu simgesini masaüstünde göster."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Bağlı sürücüleri göster"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Bağlı sürücüleri masaüstünde göster."
+
#~ msgid "Application"
#~ msgstr "Uygulama"
@@ -903,3 +1125,9 @@ msgstr "Etki eşiği"
#~ msgid "Adaptive"
#~ msgstr "Uyarlanır"
+
+#~ msgid "Enter file name…"
+#~ msgstr "Dosya adını gir…"
+
+#~ msgid "OK"
+#~ msgstr "Tamam"
diff --git a/po/uk.po b/po/uk.po
index f0b08466..a73dceec 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -1,3 +1,4 @@
+# #-#-#-#-# 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.
@@ -5,11 +6,19 @@
# Daniel Korostil <ted.korostiled@gmail.com>, 2013, 2014, 2015, 2017.
# vikaig <vikaig99@gmail.com>, 2019.
# Yuri Chornoivan <yurchor@ukr.net>, 2020.
+# #-#-#-#-# uk.po (desktop-icons master) #-#-#-#-#
+# Ukrainian translation for desktop-icons.
+# Copyright (C) 2020 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+#
+# Yuri Chornoivan <yurchor@ukr.net>, 2020.
+#, fuzzy
msgid ""
msgstr ""
+"#-#-#-#-# 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/is"
-"sues\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell-extensions/"
+"issues\n"
"POT-Creation-Date: 2020-05-03 17:53+0000\n"
"PO-Revision-Date: 2020-05-03 22:19+0300\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
@@ -18,10 +27,25 @@ 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"
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-05-26 20:08+0000\n"
+"PO-Revision-Date: 2020-05-27 11:46+0300\n"
+"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
+"Language-Team: Ukrainian <trans-uk@lists.fedoraproject.org>\n"
+"Language: uk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n"
+"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"X-Generator: Lokalize 20.07.70\n"
#: data/gnome-classic.desktop.in:3 data/gnome-classic.session.desktop.in:3
msgid "GNOME Classic"
@@ -62,10 +86,14 @@ msgstr "Додати правило"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
-#: extensions/places-menu/placeDisplay.js:233
-#, javascript-format
+#: extensions/places-menu/placeDisplay.js:233 desktopIconsUtil.js:162
+#, fuzzy, javascript-format
msgid "Ejecting drive “%s” failed:"
-msgstr "Не вдалося витягнути пристрій «%s»:"
+msgstr ""
+"#-#-#-#-# uk.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"Не вдалося витягнути пристрій «%s»:\n"
+"#-#-#-#-# uk.po (desktop-icons master) #-#-#-#-#\n"
+"Не вдалося виштовхнути пристрій «%s»:"
#: extensions/drive-menu/extension.js:128
msgid "Removable devices"
@@ -124,7 +152,7 @@ msgstr "Не вдалося змонтувати том до «%s»"
msgid "Computer"
msgstr "Комп'ютер"
-#: extensions/places-menu/placeDisplay.js:359
+#: extensions/places-menu/placeDisplay.js:359 fileItem.js:925
msgid "Home"
msgstr "Домівка"
@@ -263,6 +291,203 @@ msgstr "Робочий простір %d"
msgid "Add Workspace"
msgstr "Додати робочий простір"
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "Скасувати"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+#, fuzzy
+msgid "Icon size"
+msgstr ""
+"#-#-#-#-# uk.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"Розмір піктограми\n"
+"#-#-#-#-# uk.po (desktop-icons master) #-#-#-#-#\n"
+"Розмір піктограм"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "Назва нової теки"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "Створити"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "Назви теки не можуть містити «/»."
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "Теку не можна називати як «.»."
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "Теку не можна називати як «..»."
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "Теки, назви яких починаються із символу «.», є прихованими."
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "Файл або тека із такою назвою вже існують."
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "Розмір піктограм на стільниці"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "Малий"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "Стандартний"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "Великий"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "Показувати особисту теку на стільниці"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "Показувати піктограму смітника на стільниці"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "Показувати змонтовані диски на стільниці"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "Нова тека"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "Новий документ"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "Вставити"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "Скасувати"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "Повторити"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "Показувати «Стільницю» у «Файлах»"
+
+#: desktopGrid.js:355 fileItem.js:721
+msgid "Open in Terminal"
+msgstr "Відкрити у терміналі"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "Змінити тло…"
+
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "Параметри екрана"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "Параметри"
+
+#: desktopGrid.js:692
+msgid "Rename"
+msgstr "Перейменувати"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "Команди не знайдено"
+
+#: fileItem.js:584
+msgid "Dont Allow Launching"
+msgstr "Не дозволяти запуск"
+
+#: fileItem.js:586
+msgid "Allow Launching"
+msgstr "Дозволяти запуск"
+
+#: fileItem.js:682
+msgid "Open"
+msgstr "Відкрити"
+
+#: fileItem.js:686
+msgid "Open With Other Application"
+msgstr "Відкрити за допомогою іншої програми"
+
+#: fileItem.js:688
+msgid "Launch using Dedicated Graphics Card"
+msgstr "Запустити через відповідну графічну плату"
+
+#: fileItem.js:693
+msgid "Cut"
+msgstr "Вирізати"
+
+#: fileItem.js:694
+msgid "Copy"
+msgstr "Копіювати"
+
+#: fileItem.js:696
+msgid "Rename…"
+msgstr "Перейменувати…"
+
+#: fileItem.js:697
+msgid "Move to Trash"
+msgstr "Пересунути до смітника"
+
+#: fileItem.js:707
+msgid "Empty Trash"
+msgstr "Спорожнити смітник"
+
+#: fileItem.js:711
+msgid "Eject"
+msgstr "Виштовхнути"
+
+#: fileItem.js:717
+msgid "Properties"
+msgstr "Властивості"
+
+#: fileItem.js:719
+msgid "Show in Files"
+msgstr "Показувати у «Файлах»"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "Встановити розмір піктограм на стільниці."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "Показувати особисту теку"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "Показувати особисту теку на стільниці."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "Показувати піктограму смітника"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "Показувати піктограму смітника на стільниці."
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "Показувати змонтовані диски"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "Показувати змонтовані диски на стільниці."
+
#~ msgid "Application"
#~ msgstr "Програма"
@@ -436,9 +661,6 @@ msgstr "Додати робочий простір"
#~ msgid "Alt Tab Behaviour"
#~ msgstr "Режим Alt Tab"
-#~ msgid "Cancel"
-#~ msgstr "Скасувати"
-
#~ msgid "Ask the user for a default behaviour if true."
#~ msgstr "Якщо вибрано, запитувати користувача про типову поведінку."
@@ -473,9 +695,6 @@ msgstr "Додати робочий простір"
#~ msgid "Enable/disable autohide"
#~ msgstr "Увімкнути/вимкнути автоматичне приховування"
-#~ msgid "Icon size"
-#~ msgstr "Розмір піктограми"
-
#~ msgid "Position of the dock"
#~ msgstr "Розташування панелі"
diff --git a/po/zh_CN.po b/po/zh_CN.po
index 338e86ed..69e6fcbf 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -1,4 +1,5 @@
# #-#-#-#-# 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.
@@ -17,10 +18,17 @@
# 绿色圣光 <lishaohui.qd@163.com>, 2015, 2016, 2017.
# zhmars <1403122061@qq.com>, 2019, 2020.
#
+# #-#-#-#-# zh_CN.po (desktop-icons master) #-#-#-#-#
+# Chinese (China) translation for desktop-icons.
+# Copyright (C) 2019 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Dingzhong Chen <wsxy162@gmail.com>, 2019.
+#
#, fuzzy
msgid ""
msgstr ""
"#-#-#-#-# 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"
@@ -47,6 +55,20 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Gtranslator 2.91.7\n"
"Plural-Forms: nplurals=1; plural=0;\n"
+"#-#-#-#-# zh_CN.po (desktop-icons master) #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-05-26 20:08+0000\n"
+"PO-Revision-Date: 2020-06-23 21:51-0400\n"
+"Last-Translator: Boyuan Yang <073plan@gmail.com>\n"
+"Language-Team: Chinese (China) <i18n-zh@googlegroups.com>\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 2.3.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"
@@ -85,7 +107,7 @@ msgstr "添加规则"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
-#: extensions/places-menu/placeDisplay.js:233
+#: extensions/places-menu/placeDisplay.js:233 desktopIconsUtil.js:162
#, javascript-format
msgid "Ejecting drive “%s” failed:"
msgstr "弹出驱动器“%s”失败"
@@ -144,7 +166,7 @@ msgstr "无法为“%s”挂载卷"
msgid "Computer"
msgstr "计算机"
-#: extensions/places-menu/placeDisplay.js:359
+#: extensions/places-menu/placeDisplay.js:359 fileItem.js:925
msgid "Home"
msgstr "主文件夹"
@@ -346,7 +368,7 @@ msgstr "Dash to Dock %s"
msgid "Trash"
msgstr "回收站"
-#: locations.js:74
+#: locations.js:74 fileItem.js:707
msgid "Empty Trash"
msgstr "清空回收站"
@@ -354,7 +376,7 @@ msgstr "清空回收站"
msgid "Mount"
msgstr "挂载"
-#: locations.js:232
+#: locations.js:232 fileItem.js:711
msgid "Eject"
msgstr "弹出"
@@ -798,6 +820,190 @@ msgstr "显示超时时间(秒)"
msgid "Pressure threshold"
msgstr "压力阈值"
+#: desktopGrid.js:359
+msgid "Display Settings"
+msgstr "显示设置"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "图标大小"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "取消"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "新文件夹名称"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "创建"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "文件夹名称不能包含“/”。"
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "文件夹不能命名为“.”。"
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "文件夹不能命名为“..”。"
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "名称以“.”开头的文件夹将被隐藏。"
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "相同名称的文件夹已存在。"
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "桌面图标大小"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "小"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "标准"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "大"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "在桌面上显示个人文件夹"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "在桌面上显示回收站图标"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "在桌面上显示已挂载的驱动器"
+
+#: desktopGrid.js:346
+msgid "New Folder"
+msgstr "新建文件夹"
+
+#: desktopGrid.js:347
+msgid "New Document"
+msgstr "新建文档"
+
+#: desktopGrid.js:350
+msgid "Paste"
+msgstr "粘贴"
+
+#: desktopGrid.js:351
+msgid "Undo"
+msgstr "撤消"
+
+#: desktopGrid.js:352
+msgid "Redo"
+msgstr "恢复"
+
+#: desktopGrid.js:354
+msgid "Show Desktop in Files"
+msgstr "在文件管理器中显示桌面"
+
+#: desktopGrid.js:355 fileItem.js:721
+msgid "Open in Terminal"
+msgstr "在终端中打开"
+
+#: desktopGrid.js:357
+msgid "Change Background…"
+msgstr "更换壁纸…"
+
+#: desktopGrid.js:360
+msgid "Settings"
+msgstr "设置"
+
+#: desktopGrid.js:692
+msgid "Rename"
+msgstr "重命名"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "命令未找到"
+
+#: fileItem.js:584
+msgid "Dont Allow Launching"
+msgstr "不允许启动"
+
+#: fileItem.js:586
+msgid "Allow Launching"
+msgstr "允许启动"
+
+#: fileItem.js:682
+msgid "Open"
+msgstr "打开"
+
+#: fileItem.js:686
+msgid "Open With Other Application"
+msgstr "用其他应用程序打开"
+
+#: fileItem.js:688
+msgid "Launch using Dedicated Graphics Card"
+msgstr "使用独立显卡启动"
+
+#: fileItem.js:693
+msgid "Cut"
+msgstr "剪除"
+
+#: fileItem.js:694
+msgid "Copy"
+msgstr "复制"
+
+#: fileItem.js:696
+msgid "Rename…"
+msgstr "重命名…"
+
+#: fileItem.js:697
+msgid "Move to Trash"
+msgstr "移到回收站"
+
+#: fileItem.js:717
+msgid "Properties"
+msgstr "属性"
+
+#: fileItem.js:719
+msgid "Show in Files"
+msgstr "在文件管理器中显示"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "设定桌面图标的大小。"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "显示个人文件夹"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "在桌面上显示个人文件夹。"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "显示回收站图标"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "在桌面上显示回收站图标。"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "显示已挂载的驱动器"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "在桌面上显示已挂载的驱动器。"
+
#~ msgid "Application"
#~ msgstr "应用程序"
@@ -914,9 +1120,6 @@ msgstr "压力阈值"
#~ msgid "Display"
#~ msgstr "显示"
-#~ msgid "Display Settings"
-#~ msgstr "显示设置"
-
#~ msgid "The application icon mode."
#~ msgstr "应用程序图标模式。"
@@ -948,9 +1151,6 @@ msgstr "压力阈值"
#~ "or 'left'"
#~ msgstr "设置 Dock 在屏幕上的位置。允许的值有“右”或“左”。"
-#~ msgid "Icon size"
-#~ msgstr "图标大小"
-
#~ msgid "Sets icon size of the dock."
#~ msgstr "设置 Dock 上的图标大小。"
@@ -1069,9 +1269,6 @@ msgstr "压力阈值"
#~ msgid "Alt Tab Behaviour"
#~ msgstr "Alt Tab 行为"
-#~ msgid "Cancel"
-#~ msgstr "取消"
-
#~ msgid "Ask the user for a default behaviour if true."
#~ msgstr "如果设置为 true询问用户设置一个默认行为。"
@@ -1180,3 +1377,9 @@ msgstr "压力阈值"
#~ msgid "Only when in autohide"
#~ msgstr "仅当自动隐藏时"
+
+#~ msgid "Enter file name…"
+#~ msgstr "输入文件名…"
+
+#~ msgid "OK"
+#~ msgstr "确定"
diff --git a/po/zh_TW.po b/po/zh_TW.po
index 14e60ccb..4bdf7154 100644
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -1,4 +1,5 @@
# #-#-#-#-# 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.
@@ -11,10 +12,17 @@
# This file is distributed under the same license as the dash-to-dock package.
# Cheng-Chia Tseng <pswo10680@gmail.com>, 2017
#
+# #-#-#-#-# zh_TW.po (desktop-icons master) #-#-#-#-#
+# Chinese (Taiwan) translation for desktop-icons.
+# Copyright (C) 2018 desktop-icons's COPYRIGHT HOLDER
+# This file is distributed under the same license as the desktop-icons package.
+# Yi-Jyun Pan <pan93412@gmail.com>, 2018.
+#
#, fuzzy
msgid ""
msgstr ""
"#-#-#-#-# 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"
@@ -41,6 +49,19 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.3.1\n"
"Plural-Forms: nplurals=1; plural=0;\n"
+"#-#-#-#-# zh_TW.po (desktop-icons master) #-#-#-#-#\n"
+"Project-Id-Version: desktop-icons master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/World/ShellExtensions/desktop-"
+"icons/issues\n"
+"POT-Creation-Date: 2020-05-14 18:46+0000\n"
+"PO-Revision-Date: 2020-05-25 01:21+0800\n"
+"Last-Translator: Yi-Jyun Pan <pan93412@gmail.com>\n"
+"Language-Team: Chinese (Taiwan) <chinese-l10n@googlegroups.com>\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.3.1\n"
#: data/gnome-classic.desktop.in:3
msgid "GNOME Classic"
@@ -80,10 +101,14 @@ msgstr "加入規則"
#. TRANSLATORS: %s is the filesystem name
#: extensions/drive-menu/extension.js:112
-#: extensions/places-menu/placeDisplay.js:233
-#, javascript-format
+#: extensions/places-menu/placeDisplay.js:233 desktopIconsUtil.js:162
+#, fuzzy, javascript-format
msgid "Ejecting drive “%s” failed:"
-msgstr "裝置「%s」退出失敗"
+msgstr ""
+"#-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n"
+"裝置「%s」退出失敗\n"
+"#-#-#-#-# zh_TW.po (desktop-icons master) #-#-#-#-#\n"
+"退出「%s」裝置失敗"
#: extensions/drive-menu/extension.js:128
msgid "Removable devices"
@@ -139,9 +164,14 @@ msgstr "無法掛載儲存區「%s」"
msgid "Computer"
msgstr "電腦"
-#: extensions/places-menu/placeDisplay.js:359
+#: extensions/places-menu/placeDisplay.js:359 fileItem.js:906
+#, fuzzy
msgid "Home"
-msgstr "家目錄"
+msgstr ""
+"#-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n"
+"家目錄\n"
+"#-#-#-#-# zh_TW.po (desktop-icons master) #-#-#-#-#\n"
+"首頁"
#: extensions/places-menu/placeDisplay.js:404
msgid "Browse Network"
@@ -345,7 +375,7 @@ msgstr "Dash to Dock %s"
msgid "Trash"
msgstr "垃圾桶"
-#: locations.js:74
+#: locations.js:74 fileItem.js:688
msgid "Empty Trash"
msgstr "清空垃圾桶"
@@ -353,7 +383,7 @@ msgstr "清空垃圾桶"
msgid "Mount"
msgstr "掛載"
-#: locations.js:235
+#: locations.js:235 fileItem.js:692
msgid "Eject"
msgstr "退出"
@@ -795,6 +825,191 @@ msgstr "顯示等候秒數"
msgid "Pressure threshold"
msgstr "壓力閾值"
+#: desktopGrid.js:354
+#, fuzzy
+msgid "Display Settings"
+msgstr ""
+"#-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n"
+"顯示設定值\n"
+"#-#-#-#-# zh_TW.po (desktop-icons master) #-#-#-#-#\n"
+"顯示設定"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:11
+msgid "Icon size"
+msgstr "圖示大小"
+
+#: createFolderDialog.js:72
+msgid "Cancel"
+msgstr "取消"
+
+#: createFolderDialog.js:46
+msgid "New folder name"
+msgstr "新資料夾名稱"
+
+#: createFolderDialog.js:70
+msgid "Create"
+msgstr "建立"
+
+#: createFolderDialog.js:145
+msgid "Folder names cannot contain “/”."
+msgstr "資料夾名稱不能有「/」。"
+
+#: createFolderDialog.js:148
+msgid "A folder cannot be called “.”."
+msgstr "資料夾的名稱不能是「.」。"
+
+#: createFolderDialog.js:151
+msgid "A folder cannot be called “..”."
+msgstr "資料夾的名稱不能是「..」。"
+
+#: createFolderDialog.js:153
+msgid "Folders with “.” at the beginning of their name are hidden."
+msgstr "會隱藏名稱開頭是「.」的資料夾。"
+
+#: createFolderDialog.js:155
+msgid "There is already a file or folder with that name."
+msgstr "已經有同名的檔案或資料夾。"
+
+#: prefs.js:103
+msgid "Size for the desktop icons"
+msgstr "桌面圖示的大小"
+
+#: prefs.js:103
+msgid "Small"
+msgstr "小圖示"
+
+#: prefs.js:103
+msgid "Standard"
+msgstr "標準大小圖示"
+
+#: prefs.js:103
+msgid "Large"
+msgstr "大圖示"
+
+#: prefs.js:104
+msgid "Show the personal folder in the desktop"
+msgstr "在桌面顯示個人資料夾"
+
+#: prefs.js:105
+msgid "Show the trash icon in the desktop"
+msgstr "在桌面顯示垃圾桶圖示"
+
+#: prefs.js:106
+msgid "Show mounted drives in the desktop"
+msgstr "在桌面顯示掛載裝置"
+
+#: desktopGrid.js:343
+msgid "New Folder"
+msgstr "新增資料夾"
+
+#: desktopGrid.js:345
+msgid "Paste"
+msgstr "貼上"
+
+#: desktopGrid.js:346
+msgid "Undo"
+msgstr "復原"
+
+#: desktopGrid.js:347
+msgid "Redo"
+msgstr "重做"
+
+#: desktopGrid.js:349
+msgid "Show Desktop in Files"
+msgstr "在《檔案》中顯示桌面"
+
+#: desktopGrid.js:350 fileItem.js:702
+msgid "Open in Terminal"
+msgstr "在終端器開啟"
+
+#: desktopGrid.js:352
+msgid "Change Background…"
+msgstr "變更背景圖片…"
+
+#: desktopGrid.js:355
+msgid "Settings"
+msgstr "設定"
+
+#: desktopGrid.js:653
+msgid "Rename"
+msgstr "重新命名"
+
+#: desktopIconsUtil.js:63
+msgid "Command not found"
+msgstr "找不到命令"
+
+#: fileItem.js:565
+msgid "Dont Allow Launching"
+msgstr "不允許啟動"
+
+#: fileItem.js:567
+msgid "Allow Launching"
+msgstr "允許啟動"
+
+#: fileItem.js:663
+msgid "Open"
+msgstr "開啟"
+
+#: fileItem.js:667
+msgid "Open With Other Application"
+msgstr "以其他應用程式開啟"
+
+#: fileItem.js:669
+msgid "Launch using Dedicated Graphics Card"
+msgstr "使用獨立圖形卡啟動"
+
+#: fileItem.js:674
+msgid "Cut"
+msgstr "剪下"
+
+#: fileItem.js:675
+msgid "Copy"
+msgstr "複製"
+
+#: fileItem.js:677
+msgid "Rename…"
+msgstr "重新命名…"
+
+#: fileItem.js:678
+msgid "Move to Trash"
+msgstr "移動到垃圾桶"
+
+#: fileItem.js:698
+msgid "Properties"
+msgstr "屬性"
+
+#: fileItem.js:700
+msgid "Show in Files"
+msgstr "在《檔案》中顯示"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:12
+msgid "Set the size for the desktop icons."
+msgstr "設定桌面圖示的大小。"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:16
+msgid "Show personal folder"
+msgstr "顯示個人資料夾"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:17
+msgid "Show the personal folder in the desktop."
+msgstr "在桌面顯示個人資料夾。"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:21
+msgid "Show trash icon"
+msgstr "顯示垃圾桶圖示"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:22
+msgid "Show the trash icon in the desktop."
+msgstr "在桌面顯示垃圾桶圖示。"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:26
+msgid "Show mounted drives"
+msgstr "顯示掛載裝置"
+
+#: schemas/org.gnome.shell.extensions.desktop-icons.gschema.xml:27
+msgid "Show mounted drives in the desktop."
+msgstr "在桌面顯示掛載裝置。"
+
#~ msgid "Application"
#~ msgstr "應用程式"
@@ -896,9 +1111,6 @@ msgstr "壓力閾值"
#~ msgid "Display"
#~ msgstr "顯示"
-#~ msgid "Display Settings"
-#~ msgstr "顯示設定值"
-
#~ msgid "Suspend"
#~ msgstr "暫停"
@@ -1006,9 +1218,6 @@ msgstr "壓力閾值"
#~ msgid "Enable/disable autohide"
#~ msgstr "啟用/停用自動隱藏"
-#~ msgid "Icon size"
-#~ msgstr "圖示大小"
-
#~ msgid "Position of the dock"
#~ msgstr "Dock 的位置"
@@ -1105,9 +1314,6 @@ msgstr "壓力閾值"
#~ msgid "Alt Tab Behaviour"
#~ msgstr "Alt Tab 行為"
-#~ msgid "Cancel"
-#~ msgstr "取消"
-
#~ msgid "Ask the user for a default behaviour if true."
#~ msgstr "若為真,詢問使用者預設行為。"
@@ -1139,3 +1345,6 @@ msgstr "壓力閾值"
#~ msgid "0.000"
#~ msgstr "0.000"
+
+#~ msgid "Huge"
+#~ msgstr "巨大圖示"
--
2.41.0
From 8e23a9d2a5e2f6050bc3cfcebac71565ab5aa1e0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
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.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ 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.
+
+ <signature of Ty Coon>, 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 @@
+<p align="left">
+ <img src="/media/design/svg/D2P_logo.svg" width="620"/>
+</p>
+<p align="left">
+ <img src="/media/design/svg/GitHub_logo.svg" width="120" style="margin-left: 4px"/>
+ <a href="https://extensions.gnome.org/extension/1160/dash-to-panel/" >
+ <img src="/media/design/svg/Gnome_logo.svg" width="120px"/>
+ </a>
+</p>
+
+![](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|
+
+##
+
+<table>
+ <thead>
+ <tr>
+ <th colspan=2>Customizable running indicators</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td align="center">Metro</td>
+ <td align="center">Ciliora/Dashes</td>
+ </tr>
+ <tr>
+ <td align="center"><img src="media/design/png/metro.png"/></td>
+ <td align="center"><img src="media/design/png/ciliora-dashes.png"/></td>
+ </tr>
+ <tr>
+ <td align="center">Ciliora</td>
+ <td align="center">Squares/Segmented</td>
+ </tr>
+ <tr>
+ <td align="center"><img src="media/design/png/ciliora.png"/></td>
+ <td align="center"><img src="media/design/png/squares-segments.png"/></td>
+ </tr>
+ <tr>
+ <td align="center">Dashes</td>
+ <td align="center">Dots/Solid</td>
+ </tr>
+ <tr>
+ <td align="center"><img src="media/design/png/dashes.png"/></td>
+ <td align="center"><img src="media/design/png/dots-solid.png"/></td>
+ </tr>
+ <tr>
+ <td colspan=2 align="center">Set position, style, weight & color of running indicators to easily and quickly identify focused and unfocused applications</td>
+ </tr>
+ </tbody>
+</table>
+
+##
+
+|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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.36.0 -->
+<interface>
+ <requires lib="gtk" version="4.0"/>
+ <object class="GtkBox" id="animate_appicon_hover_options">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="hexpand">1</property>
+ <property name="vexpand">1</property>
+ <child>
+ <object class="GtkListBoxRow" id="animate_appicon_hover_options_type_listboxrow">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="activatable">False</property>
+ <child>
+ <object class="GtkBox" id="animate_appicon_hover_options_type_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="animate_appicon_hover_options_type_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Animation type</property>
+ <property name="xalign">0</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="animate_appicon_hover_options_type_combo">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="valign">center</property>
+ <items>
+ <item id="SIMPLE" translatable="yes">Simple</item>
+ <item id="RIPPLE" translatable="yes">Ripple</item>
+ <item id="PLANK" translatable="yes">Plank</item>
+ </items>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="animate_appicon_hover_options_params_listboxrow">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="activatable">False</property>
+ <child>
+ <object class="GtkGrid" id="animate_appicon_hover_options_params_grid">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="row_spacing">24</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="animate_appicon_hover_options_duration_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_end">12</property>
+ <property name="label" translatable="yes">Duration</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <property name="valign">end</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScale" id="animate_appicon_hover_options_duration_scale">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="valign">end</property>
+ <property name="hexpand">True</property>
+ <property name="adjustment">animate_appicon_hover_options_duration_adjustment</property>
+ <property name="round_digits">0</property>
+ <property name="digits">0</property>
+ <property name="value_pos">right</property>
+ <property name="draw_value">True</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="animate_appicon_hover_options_extent_rotation">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Rotation</property>
+ <property name="xalign">0</property>
+ <property name="valign">end</property>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScale" id="animate_appicon_hover_options_rotation_scale">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="valign">end</property>
+ <property name="hexpand">True</property>
+ <property name="adjustment">animate_appicon_hover_options_rotation_adjustment</property>
+ <property name="round_digits">0</property>
+ <property name="digits">0</property>
+ <property name="value_pos">right</property>
+ <property name="draw_value">True</property>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="animate_appicon_hover_options_travel_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Travel</property>
+ <property name="xalign">0</property>
+ <property name="valign">end</property>
+ <layout>
+ <property name="row">2</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScale" id="animate_appicon_hover_options_travel_scale">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="valign">end</property>
+ <property name="hexpand">True</property>
+ <property name="adjustment">animate_appicon_hover_options_travel_adjustment</property>
+ <property name="round_digits">0</property>
+ <property name="digits">0</property>
+ <property name="value_pos">right</property>
+ <property name="draw_value">True</property>
+ <layout>
+ <property name="row">2</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="animate_appicon_hover_options_zoom_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Zoom</property>
+ <property name="xalign">0</property>
+ <property name="valign">end</property>
+ <layout>
+ <property name="row">3</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScale" id="animate_appicon_hover_options_zoom_scale">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="valign">end</property>
+ <property name="hexpand">True</property>
+ <property name="adjustment">animate_appicon_hover_options_zoom_adjustment</property>
+ <property name="round_digits">0</property>
+ <property name="digits">0</property>
+ <property name="value_pos">right</property>
+ <property name="draw_value">True</property>
+ <layout>
+ <property name="row">3</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="animate_appicon_hover_options_convexity_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Convexity</property>
+ <property name="xalign">0</property>
+ <property name="valign">end</property>
+ <layout>
+ <property name="row">4</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScale" id="animate_appicon_hover_options_convexity_scale">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="valign">end</property>
+ <property name="hexpand">True</property>
+ <property name="adjustment">animate_appicon_hover_options_convexity_adjustment</property>
+ <property name="round_digits">1</property>
+ <property name="digits">1</property>
+ <property name="value_pos">right</property>
+ <property name="draw_value">True</property>
+ <layout>
+ <property name="row">4</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="animate_appicon_hover_options_extent_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Extent</property>
+ <property name="xalign">0</property>
+ <property name="valign">end</property>
+ <layout>
+ <property name="row">5</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScale" id="animate_appicon_hover_options_extent_scale">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="valign">end</property>
+ <property name="hexpand">True</property>
+ <property name="adjustment">animate_appicon_hover_options_extent_adjustment</property>
+ <property name="round_digits">0</property>
+ <property name="digits">0</property>
+ <property name="value_pos">right</property>
+ <property name="draw_value">True</property>
+ <layout>
+ <property name="row">5</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkAdjustment" id="panel_length_adjustment">
+ <property name="upper">100</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="animate_appicon_hover_options_duration_adjustment">
+ <property name="lower">0</property>
+ <property name="upper">300</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">5</property>
+ </object>
+ <object class="GtkAdjustment" id="animate_appicon_hover_options_rotation_adjustment">
+ <property name="lower">-30</property>
+ <property name="upper">30</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">5</property>
+ </object>
+ <object class="GtkAdjustment" id="animate_appicon_hover_options_travel_adjustment">
+ <property name="lower">0</property>
+ <property name="upper">100</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">5</property>
+ </object>
+ <object class="GtkAdjustment" id="animate_appicon_hover_options_zoom_adjustment">
+ <property name="lower">100</property>
+ <property name="upper">250</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">5</property>
+ </object>
+ <object class="GtkAdjustment" id="animate_appicon_hover_options_convexity_adjustment">
+ <property name="lower">0</property>
+ <property name="upper">3</property>
+ <property name="step_increment">0.1</property>
+ <property name="page_increment">1</property>
+ </object>
+ <object class="GtkAdjustment" id="animate_appicon_hover_options_extent_adjustment">
+ <property name="lower">1</property>
+ <property name="upper">10</property>
+ <property name="step_increment">0.1</property>
+ <property name="page_increment">1</property>
+ </object>
+ <object class="GtkAdjustment" id="appicon_margin_adjustment">
+ <property name="lower">0.33</property>
+ <property name="upper">1</property>
+ <property name="step_increment">0.01</property>
+ <property name="page_increment">0.1</property>
+ </object>
+ <object class="GtkAdjustment" id="appicon_padding_adjustment">
+ <property name="lower">0.33</property>
+ <property name="upper">1</property>
+ <property name="step_increment">0.01</property>
+ <property name="page_increment">0.1</property>
+ </object>
+ <object class="GtkBox" id="box_advanced_options">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="hexpand">1</property>
+ <property name="vexpand">1</property>
+ <child>
+ <object class="GtkFrame" id="frame_advanced_options">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <child>
+ <object class="GtkListBox" id="listbox_advanced_options">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="selection_mode">none</property>
+ <child>
+ <object class="GtkListBoxRow" id="listbox_advanced_nothing">
+ <property name="width_request">100</property>
+ <property name="height_request">80</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkLabel" id="advanced_nothing_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Nothing yet!</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkBox" id="box_middle_click_options">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="orientation">vertical</property>
+ <property name="hexpand">1</property>
+ <property name="vexpand">1</property>
+ <child>
+ <object class="GtkFrame" id="frame_middle_click_options">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <child>
+ <object class="GtkListBox" id="listbox_middle_click_options">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="selection_mode">none</property>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow11">
+ <property name="width_request">100</property>
+ <property name="height_request">80</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="buitin_theme7">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="builtin_theme_description4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">When set to minimize, double clicking minimizes all the windows of the application.</property>
+ <property name="wrap">True</property>
+ <property name="max_width_chars">40</property>
+ <property name="xalign">0</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="builtin_theme_label4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Shift+Click action</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="shift_click_action_combo">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="valign">center</property>
+ <items>
+ <item id="RAISE" translatable="yes">Raise windows</item>
+ <item id="MINIMIZE" translatable="yes">Minimize window</item>
+ <item id="LAUNCH" translatable="yes">Launch new instance</item>
+ <item id="CYCLE" translatable="yes">Cycle through windows</item>
+ <item id="CYCLE-MIN" translatable="yes">Cycle windows + minimize</item>
+ <item id="TOGGLE-SHOWPREVIEW" translatable="yes">Toggle single / Preview multiple</item>
+ <item id="TOGGLE-CYCLE" translatable="yes">Toggle single / Cycle multiple</item>
+ <item id="QUIT" translatable="yes">Quit</item>
+ </items>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ <property name="row-span">2</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_middle_click">
+ <property name="width_request">100</property>
+ <property name="height_request">80</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_middle_click">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="description_middle_click">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Behavior for Middle-Click.</property>
+ <property name="wrap">True</property>
+ <property name="max_width_chars">40</property>
+ <property name="xalign">0</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_middle_click">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Middle-Click action</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="middle_click_action_combo">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="valign">center</property>
+ <items>
+ <item id="RAISE" translatable="yes">Raise windows</item>
+ <item id="MINIMIZE" translatable="yes">Minimize window</item>
+ <item id="LAUNCH" translatable="yes">Launch new instance</item>
+ <item id="CYCLE" translatable="yes">Cycle through windows</item>
+ <item id="CYCLE-MIN" translatable="yes">Cycle windows + minimize</item>
+ <item id="TOGGLE-SHOWPREVIEW" translatable="yes">Toggle single / Preview multiple</item>
+ <item id="QUIT" translatable="yes">Quit</item>
+ </items>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ <property name="row-span">2</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_shift_middle_click">
+ <property name="width_request">100</property>
+ <property name="height_request">80</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_shift_middle_click">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="description_shift_middle_click">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Behavior for Shift+Middle-Click.</property>
+ <property name="wrap">True</property>
+ <property name="max_width_chars">40</property>
+ <property name="xalign">0</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_shift_middle_click">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Shift+Middle-Click action</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="shift_middle_click_action_combo">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="valign">center</property>
+ <items>
+ <item id="RAISE" translatable="yes">Raise windows</item>
+ <item id="MINIMIZE" translatable="yes">Minimize window</item>
+ <item id="LAUNCH" translatable="yes">Launch new instance</item>
+ <item id="CYCLE" translatable="yes">Cycle through windows</item>
+ <item id="CYCLE-MIN" translatable="yes">Cycle windows + minimize</item>
+ <item id="TOGGLE-SHOWPREVIEW" translatable="yes">Toggle single / Preview multiple</item>
+ <item id="QUIT" translatable="yes">Quit</item>
+ </items>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ <property name="row-span">2</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkBox" id="box_secondarymenu_options">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="hexpand">1</property>
+ <property name="vexpand">1</property>
+ <child>
+ <object class="GtkFrame" id="frame_secondarymenu_options">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <child>
+ <object class="GtkListBox" id="listbox_secondarymenu_options">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="selection_mode">none</property>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_secondarymenu_appmenu">
+ <property name="width_request">100</property>
+ <property name="height_request">80</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_secondarymenu_appmenu">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="valign">center</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="secondarymenu_appmenu_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Integrate &lt;i&gt;AppMenu&lt;/i&gt; items</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="secondarymenu_appmenu_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_secondarymenu_showdetails">
+ <property name="width_request">100</property>
+ <property name="height_request">80</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_secondarymenu_showdetails">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="valign">center</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="secondarymenu_showdetails_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">&lt;i&gt;Show Details&lt;/i&gt; menu item</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="secondarymenu_showdetails_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkAdjustment" id="dot_border_width_adjustment">
+ <property name="upper">10</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">5</property>
+ </object>
+ <object class="GtkAdjustment" id="dot_size_adjustment">
+ <property name="upper">5</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">5</property>
+ </object>
+ <object class="GtkAdjustment" id="enter_peek_mode_timeout_adjustment">
+ <property name="lower">50</property>
+ <property name="upper">9999</property>
+ <property name="step_increment">25</property>
+ <property name="page_increment">100</property>
+ </object>
+ <object class="GtkAdjustment" id="focus_highlight_opacity_adjustment">
+ <property name="lower">5</property>
+ <property name="upper">100</property>
+ <property name="step_increment">5</property>
+ <property name="page_increment">5</property>
+ </object>
+ <object class="GtkBox" id="box_dots_options">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="orientation">vertical</property>
+ <property name="hexpand">1</property>
+ <property name="vexpand">1</property>
+ <child>
+ <object class="GtkFrame" id="frame_dots_options">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="label_xalign">0</property>
+ <child>
+ <object class="GtkListBox" id="listbox_dots_options">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="selection_mode">none</property>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_focus_highlight">
+ <property name="width_request">100</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_focus_highlight">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="row_spacing">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="focus_highlight_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Highlight focused application</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="focus_highlight_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkGrid" id="grid_focus_highlight_options">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="row_spacing">8</property>
+ <child>
+ <object class="GtkLabel" id="focus_highlight_dominant_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Icon dominant color</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="focus_highlight_dominant_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="focus_highlight_color_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Custom color</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkColorButton" id="focus_highlight_color_colorbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="halign">end</property>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="focus_highlight_opacity_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Highlight opacity</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">2</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="focus_highlight_opacity_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="text">5</property>
+ <property name="adjustment">focus_highlight_opacity_adjustment</property>
+ <property name="value">5</property>
+ <layout>
+ <property name="row">2</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_dot_size">
+ <property name="width_request">100</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_dot_size">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="dot_size_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Indicator size (px)</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="dot_size_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="text">0</property>
+ <property name="adjustment">dot_size_adjustment</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_dot_dominant">
+ <property name="width_request">100</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_dot_dominant">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="dot_dominant_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Indicator color - Icon Dominant</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="dot_color_dominant_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_dot_color">
+ <property name="width_request">100</property>
+ <property name="height_request">80</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkBox" id="box_dot_color">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkBox" id="dot_color_override_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkLabel" id="dot_color_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Indicator color - Override Theme</property>
+ <property name="xalign">0</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="dot_color_override_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkGrid" id="grid_dot_color">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="row_spacing">4</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="dot_color_1_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">1 window open (or ungrouped)</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="dot_color_1_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">end</property>
+ <child>
+ <object class="GtkButton" id="dot_color_apply_all_button">
+ <property name="label" translatable="yes">Apply to all</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkColorButton" id="dot_color_1_colorbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="halign">end</property>
+ </object>
+ </child>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="dot_color_2_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">2 windows open</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="dot_color_3_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">3 windows open</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">2</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="dot_color_4_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">4+ windows open</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">3</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkColorButton" id="dot_color_2_colorbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="halign">end</property>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkColorButton" id="dot_color_3_colorbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="halign">end</property>
+ <layout>
+ <property name="row">2</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkColorButton" id="dot_color_4_colorbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="halign">end</property>
+ <layout>
+ <property name="row">3</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="dot_color_unfocused_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkBox" id="dot_color_unfocused_different_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <child>
+ <object class="GtkLabel" id="dot_color_unfocused_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Use different for unfocused</property>
+ <property name="xalign">0</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="dot_color_unfocused_different_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkGrid" id="grid_dot_color_unfocused">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="row_spacing">4</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="dot_color_unfocused_1_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">1 window open (or ungrouped)</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="dot_color_unfocused_1_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">end</property>
+ <child>
+ <object class="GtkButton" id="dot_color_unfocused_apply_all_button">
+ <property name="label" translatable="yes">Apply to all</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkColorButton" id="dot_color_unfocused_1_colorbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="halign">end</property>
+ </object>
+ </child>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="dot_color_unfocused_2_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">2 windows open</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkColorButton" id="dot_color_unfocused_2_colorbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="halign">end</property>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="dot_color_unfocused_3_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">3 windows open</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">2</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkColorButton" id="dot_color_unfocused_3_colorbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="halign">end</property>
+ <layout>
+ <property name="row">2</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="dot_color_unfocused_4_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">4+ windows open</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">3</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkColorButton" id="dot_color_unfocused_4_colorbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="halign">end</property>
+ <layout>
+ <property name="row">3</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkAdjustment" id="group_apps_label_font_size_adjustment">
+ <property name="lower">6</property>
+ <property name="upper">24</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">100</property>
+ </object>
+ <object class="GtkAdjustment" id="group_apps_label_max_width_adjustment">
+ <property name="upper">1000</property>
+ <property name="step_increment">10</property>
+ <property name="page_increment">100</property>
+ </object>
+ <object class="GtkBox" id="box_group_apps_options">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="hexpand">1</property>
+ <property name="vexpand">1</property>
+ <child>
+ <object class="GtkFrame" id="frame_group_apps_options">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <child>
+ <object class="GtkListBox" id="listbox_group_apps_options">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="selection_mode">none</property>
+ <child>
+ <object class="GtkListBoxRow" id="listbox_group_apps_label_font_size">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_group_apps_label_font_size">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkSpinButton" id="group_apps_label_font_size_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="width_chars">4</property>
+ <property name="text">0</property>
+ <property name="adjustment">group_apps_label_font_size_adjustment</property>
+ <property name="numeric">True</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="group_apps_label_font_size_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Font size (px) of the application titles (default is 14)</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listbox_group_apps_label_font_weight">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_group_apps_label_font_weight">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="group_apps_label_font_weight_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Font weight of application titles</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="group_apps_label_font_weight_combo">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="valign">center</property>
+ <items>
+ <item id="inherit" translatable="yes">inherit from theme</item>
+ <item id="normal" translatable="yes">normal</item>
+ <item id="lighter" translatable="yes">lighter</item>
+ <item id="bold" translatable="yes">bold</item>
+ <item id="bolder" translatable="yes">bolder</item>
+ </items>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listbox_group_apps_label_font_color">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_group_apps_label_font_color">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="group_apps_label_font_color_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Font color of the application titles</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkColorButton" id="group_apps_label_font_color_colorbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="halign">end</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listbox_group_apps_label_font_color_minimized">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_group_apps_label_font_color_minimized">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="group_apps_label_font_color_minimized_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Font color of the minimized application titles</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkColorButton" id="group_apps_label_font_color_minimized_colorbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="halign">end</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listbox_group_apps_label_max_width">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_group_apps_label_max_width">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="group_apps_label_max_width_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Maximum width (px) of the application titles (default is 160)</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="group_apps_label_max_width_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="width_chars">4</property>
+ <property name="text">0</property>
+ <property name="adjustment">group_apps_label_max_width_adjustment</property>
+ <property name="numeric">True</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listbox_group_apps_use_fixed_width">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_group_apps_use_fixed_width">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="group_apps_use_fixed_width_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Use a fixed width for the application titles</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="group_apps_use_fixed_width_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="group_apps_use_fixed_width_description">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">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.</property>
+ <property name="wrap">True</property>
+ <property name="max_width_chars">40</property>
+ <property name="xalign">0</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listbox_group_apps_underline_unfocused">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_group_apps_underline_unfocused">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="group_apps_underline_unfocused_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Display running indicators on unfocused applications</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="group_apps_underline_unfocused_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listbox_group_apps_use_launchers">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_group_apps_use_launchers">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="group_apps_use_launchers_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Use the favorite icons as application launchers</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="group_apps_use_launchers_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkAdjustment" id="intellihide_animation_time_adjustment">
+ <property name="lower">10</property>
+ <property name="upper">2000</property>
+ <property name="step_increment">10</property>
+ <property name="page_increment">100</property>
+ </object>
+ <object class="GtkAdjustment" id="intellihide_close_delay_adjustment">
+ <property name="lower">10</property>
+ <property name="upper">4000</property>
+ <property name="step_increment">10</property>
+ <property name="page_increment">100</property>
+ </object>
+ <object class="GtkAdjustment" id="intellihide_enable_hide_delay_adjustment">
+ <property name="upper">10000</property>
+ <property name="step_increment">10</property>
+ <property name="page_increment">100</property>
+ </object>
+ <object class="GtkAdjustment" id="intellihide_pressure_threshold_adjustment">
+ <property name="lower">1</property>
+ <property name="upper">9990</property>
+ <property name="step_increment">10</property>
+ <property name="page_increment">100</property>
+ </object>
+ <object class="GtkAdjustment" id="intellihide_pressure_time_adjustment">
+ <property name="lower">1</property>
+ <property name="upper">5000</property>
+ <property name="step_increment">10</property>
+ <property name="page_increment">100</property>
+ </object>
+ <object class="GtkBox" id="box_intellihide_options">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="hexpand">1</property>
+ <property name="vexpand">1</property>
+ <child>
+ <object class="GtkFrame" id="frame_intellihide_options">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <child>
+ <object class="GtkListBox" id="listbox_intellihide_options">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="selection_mode">none</property>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_intellihide_mode">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_intellihide_behaviour">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="row_spacing">12</property>
+ <property name="column_spacing">32</property>
+ <property name="row_homogeneous">True</property>
+ <child>
+ <object class="GtkLabel" id="intellihide_window_hide_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Only hide the panel when it is obstructed by windows </property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="intellihide_window_hide_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkGrid" id="intellihide_behaviour_options">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="row_spacing">4</property>
+ <child>
+ <object class="GtkLabel" id="intellihide_behaviour_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">The panel hides from</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="intellihide_behaviour_combo">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="valign">center</property>
+ <items>
+ <item id="ALL_WINDOWS" translatable="yes">All windows</item>
+ <item id="FOCUSED_WINDOWS" translatable="yes">Focused windows</item>
+ <item id="MAXIMIZED_WINDOWS" translatable="yes">Maximized windows</item>
+ </items>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_intellihide_pressure">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_intellihide_pressure">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="row_spacing">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="intellihide_use_pressure_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Require pressure at the edge of the screen to reveal the panel</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="intellihide_use_pressure_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkGrid" id="intellihide_use_pressure_options">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="row_spacing">4</property>
+ <child>
+ <object class="GtkLabel" id="intellihide_pressure_threshold_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Required pressure threshold (px)</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="intellihide_pressure_threshold_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="width_chars">4</property>
+ <property name="text">0</property>
+ <property name="adjustment">intellihide_pressure_threshold_adjustment</property>
+ <property name="numeric">True</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="intellihide_pressure_time_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Required pressure timeout (ms)</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="intellihide_pressure_time_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="width_chars">4</property>
+ <property name="text">0</property>
+ <property name="adjustment">intellihide_pressure_time_adjustment</property>
+ <property name="numeric">True</property>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_intellihide_show_in_fullscreen">
+ <property name="width_request">100</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_intellihide_show_in_fullscreen">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="row_spacing">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="intellihide_show_in_fullscreen_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Allow the panel to be revealed while in fullscreen mode</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="intellihide_show_in_fullscreen_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_intellihide_only_secondary">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_intellihide_only_secondary">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="row_spacing">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="intellihide_only_secondary_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Only hide secondary panels (requires multi-monitors option)</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="intellihide_only_secondary_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_intellihide_toggle">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_intellihide_toggle">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkEntry" id="intellihide_toggle_entry">
+ <property name="can_focus">True</property>
+ <property name="valign">center</property>
+ <property name="width_chars">12</property>
+ <property name="placeholder_text" translatable="yes">e.g. &lt;Super&gt;i</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ <property name="row-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="intellihide_toggle_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Keyboard shortcut to reveal and hold the panel</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="intellihide_toggle_description">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Syntax: &lt;Shift&gt;, &lt;Ctrl&gt;, &lt;Alt&gt;, &lt;Super&gt;</property>
+ <property name="wrap">True</property>
+ <property name="max_width_chars">40</property>
+ <property name="xalign">0</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_intellihide_animation_time">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_intellihide_animation_time">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="intellihide_animation_time_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Hide and reveal animation duration (ms)</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="intellihide_animation_time_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="width_chars">4</property>
+ <property name="text">0</property>
+ <property name="adjustment">intellihide_animation_time_adjustment</property>
+ <property name="numeric">True</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_intellihide_close_delay">
+ <property name="width_request">100</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_intellihide_close_delay">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="intellihide_close_delay_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Delay before hiding the panel (ms)</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="intellihide_close_delay_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="width_chars">4</property>
+ <property name="text">10</property>
+ <property name="adjustment">intellihide_close_delay_adjustment</property>
+ <property name="numeric">True</property>
+ <property name="value">10</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_intellihide_enable_start_delay">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_intellihide_enable_start_delay">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="row_spacing">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="intellihide_enable_start_delay_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Delay before enabling intellihide on start (ms)</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="intellihide_enable_start_delay_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="width_chars">4</property>
+ <property name="text">10</property>
+ <property name="adjustment">intellihide_enable_hide_delay_adjustment</property>
+ <property name="numeric">True</property>
+ <property name="value">10</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkAdjustment" id="leave_timeout_adjustment">
+ <property name="upper">9999</property>
+ <property name="step_increment">25</property>
+ <property name="page_increment">100</property>
+ </object>
+ <object class="GtkAdjustment" id="leftbox_padding_adjustment">
+ <property name="lower">0.33</property>
+ <property name="upper">1</property>
+ <property name="step_increment">0.01</property>
+ <property name="page_increment">0.1</property>
+ </object>
+ <object class="GtkAdjustment" id="leftbox_size_adjustment">
+ <property name="lower">0.33</property>
+ <property name="upper">1</property>
+ <property name="step_increment">0.01</property>
+ <property name="page_increment">0.1</property>
+ </object>
+ <object class="GtkAdjustment" id="panel_size_adjustment">
+ <property name="lower">0.33</property>
+ <property name="upper">1</property>
+ <property name="step_increment">0.01</property>
+ <property name="page_increment">0.1</property>
+ </object>
+ <object class="GtkAdjustment" id="peek_mode_opacity_adjustment">
+ <property name="upper">255</property>
+ <property name="step_increment">10</property>
+ <property name="page_increment">25</property>
+ </object>
+ <object class="GtkAdjustment" id="preview_animation_time_adjustment">
+ <property name="upper">1000</property>
+ <property name="step_increment">10</property>
+ <property name="page_increment">50</property>
+ </object>
+ <object class="GtkAdjustment" id="preview_height_adjustment">
+ <property name="lower">50</property>
+ <property name="upper">500</property>
+ <property name="step_increment">10</property>
+ <property name="page_increment">50</property>
+ </object>
+ <object class="GtkAdjustment" id="preview_opacity_adjustment">
+ <property name="upper">100</property>
+ <property name="step_increment">5</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="preview_padding_adjustment">
+ <property name="upper">50</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">5</property>
+ </object>
+ <object class="GtkAdjustment" id="preview_size_adjustment">
+ <property name="lower">100</property>
+ <property name="upper">800</property>
+ <property name="step_increment">10</property>
+ <property name="page_increment">50</property>
+ </object>
+ <object class="GtkAdjustment" id="preview_timeout_adjustment">
+ <property name="upper">9999</property>
+ <property name="step_increment">25</property>
+ <property name="page_increment">100</property>
+ </object>
+ <object class="GtkAdjustment" id="preview_title_font_size_adjustment">
+ <property name="lower">6</property>
+ <property name="upper">24</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">100</property>
+ </object>
+ <object class="GtkAdjustment" id="preview_custom_icon_size_adjustment">
+ <property name="lower">8</property>
+ <property name="upper">48</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">100</property>
+ </object>
+ <object class="GtkScrolledWindow" id="box_window_preview_options">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="min_content_width">460</property>
+ <property name="min_content_height">480</property>
+ <child>
+ <object class="GtkViewport" id="viewport_window_preview_options">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <property name="hscroll_policy">natural</property>
+ <property name="vscroll_policy">natural</property>
+ <child>
+ <object class="GtkListBox" id="listbox_window_preview_options">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="selection_mode">none</property>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_times">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_times">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="row_spacing">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkSpinButton" id="preview_timeout_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="width_chars">4</property>
+ <property name="text">0</property>
+ <property name="adjustment">preview_timeout_adjustment</property>
+ <property name="numeric">True</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="preview_timeout_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Time (ms) before showing (400 is default)</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="animation_time_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Animation time (ms)</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">2</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="animation_time_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="width_chars">4</property>
+ <property name="text">0</property>
+ <property name="adjustment">preview_animation_time_adjustment</property>
+ <property name="numeric">True</property>
+ <layout>
+ <property name="row">2</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="preview_hide_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkLabel" id="leave_timeout_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Time (ms) before hiding (100 is default)</property>
+ <property name="xalign">0</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="preview_immediate_click_button">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_top">4</property>
+ <child>
+ <object class="GtkLabel" id="preview_immediate_click_label">
+ <property name="name">4</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="margin_start">4</property>
+ <property name="label" translatable="yes">Immediate on application icon click</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="leave_timeout_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <property name="width_chars">4</property>
+ <property name="text">25</property>
+ <property name="adjustment">leave_timeout_adjustment</property>
+ <property name="numeric">True</property>
+ <property name="value">25</property>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listbox_preview_middle_click_close">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_preview_middle_click_close">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="preview_middle_click_close_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Middle click on the preview to close the window</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="preview_middle_click_close_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_sizes">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_sizes">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="row_spacing">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="preview_size_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Window previews preferred size (px)</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="preview_size_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="width_chars">4</property>
+ <property name="text">100</property>
+ <property name="adjustment">preview_size_adjustment</property>
+ <property name="numeric">True</property>
+ <property name="value">100</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="preview_aspect_ratio_y_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Window previews aspect ratio Y (height)</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">2</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="preview_padding_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Window previews padding (px)</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">3</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="preview_padding_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="width_chars">4</property>
+ <property name="text">50</property>
+ <property name="adjustment">preview_padding_adjustment</property>
+ <property name="numeric">True</property>
+ <property name="value">50</property>
+ <layout>
+ <property name="row">3</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">end</property>
+ <property name="spacing">2</property>
+ <property name="homogeneous">True</property>
+ <child>
+ <object class="GtkComboBoxText" id="preview_aspect_ratio_x_combo">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <items>
+ <item id="1" translatable="yes">1</item>
+ <item id="2" translatable="yes">2</item>
+ <item id="3" translatable="yes">3</item>
+ <item id="4" translatable="yes">4</item>
+ <item id="5" translatable="yes">5</item>
+ <item id="6" translatable="yes">6</item>
+ <item id="7" translatable="yes">7</item>
+ <item id="8" translatable="yes">8</item>
+ <item id="9" translatable="yes">9</item>
+ <item id="10" translatable="yes">10</item>
+ <item id="11" translatable="yes">11</item>
+ <item id="12" translatable="yes">12</item>
+ <item id="13" translatable="yes">13</item>
+ <item id="14" translatable="yes">14</item>
+ <item id="15" translatable="yes">15</item>
+ <item id="16" translatable="yes">16</item>
+ <item id="17" translatable="yes">17</item>
+ <item id="18" translatable="yes">18</item>
+ <item id="19" translatable="yes">19</item>
+ <item id="20" translatable="yes">20</item>
+ <item id="21" translatable="yes">21</item>
+ </items>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToggleButton" id="preview_aspect_ratio_x_fixed_togglebutton">
+ <property name="label" translatable="yes">Fixed</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="halign">end</property>
+ </object>
+ </child>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="preview_aspect_ratio_x_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Window previews aspect ratio X (width)</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">end</property>
+ <property name="spacing">2</property>
+ <property name="homogeneous">True</property>
+ <child>
+ <object class="GtkComboBoxText" id="preview_aspect_ratio_y_combo">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <items>
+ <item id="1" translatable="yes">1</item>
+ <item id="2" translatable="yes">2</item>
+ <item id="3" translatable="yes">3</item>
+ <item id="4" translatable="yes">4</item>
+ <item id="5" translatable="yes">5</item>
+ <item id="6" translatable="yes">6</item>
+ <item id="7" translatable="yes">7</item>
+ <item id="8" translatable="yes">8</item>
+ <item id="9" translatable="yes">9</item>
+ <item id="10" translatable="yes">10</item>
+ <item id="11" translatable="yes">11</item>
+ <item id="12" translatable="yes">12</item>
+ <item id="13" translatable="yes">13</item>
+ <item id="14" translatable="yes">14</item>
+ <item id="15" translatable="yes">15</item>
+ <item id="16" translatable="yes">16</item>
+ <item id="17" translatable="yes">17</item>
+ <item id="18" translatable="yes">18</item>
+ <item id="19" translatable="yes">19</item>
+ <item id="20" translatable="yes">20</item>
+ <item id="21" translatable="yes">21</item>
+ </items>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToggleButton" id="preview_aspect_ratio_y_fixed_togglebutton">
+ <property name="label" translatable="yes">Fixed</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="halign">end</property>
+ </object>
+ </child>
+ <layout>
+ <property name="row">2</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_preview_custom_opacity">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_preview_custom_opacity">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="preview_custom_opacity_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Use custom opacity for the previews background</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="preview_custom_opacity_description">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">If disabled, the previews background have the same opacity as the panel</property>
+ <property name="wrap">True</property>
+ <property name="max_width_chars">40</property>
+ <property name="xalign">0</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">8</property>
+ <child>
+ <object class="GtkSwitch" id="preview_custom_opacity_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="preview_custom_opacity_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <property name="text" translatable="yes">5</property>
+ <property name="adjustment">preview_opacity_adjustment</property>
+ <property name="value">5</property>
+ </object>
+ </child>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listbox_preview_title_position">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkBox" id="preview_title_position_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="preview_title_position_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Close button and header position</property>
+ <property name="xalign">0</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="preview_title_position_butttons_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">end</property>
+ <property name="spacing">32</property>
+ <child>
+ <object class="GtkToggleButton" id="preview_title_position_bottom_button">
+ <property name="label" translatable="yes">Bottom</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="active">True</property>
+ <signal name="toggled" handler="preview_title_position_bottom_button_toggled_cb" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToggleButton" id="preview_title_position_top_button">
+ <property name="label" translatable="yes">Top</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="group">preview_title_position_bottom_button</property>
+ <signal name="toggled" handler="preview_title_position_top_button_toggled_cb" swapped="no"/>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listbox_preview_show_title">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_preview_show_title">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="preview_show_title_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Display window preview headers</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="preview_show_title_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkGrid" id="grid_preview_custom_icon_size">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_top">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">8</property>
+ <child>
+ <object class="GtkSwitch" id="preview_custom_icon_size_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="preview_custom_icon_size_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="width_chars">4</property>
+ <property name="text">6</property>
+ <property name="adjustment">preview_custom_icon_size_adjustment</property>
+ <property name="numeric">True</property>
+ <property name="value">6</property>
+ </object>
+ </child>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="preview_custom_icon_size_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Icon size (px) of the window preview</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="preview_custom_icon_size_description">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">If disabled, the previews icon size will be based on headerbar size</property>
+ <property name="wrap">True</property>
+ <property name="max_width_chars">40</property>
+ <property name="xalign">0</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkGrid" id="grid_preview_title_size">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_top">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkSpinButton" id="preview_title_size_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="width_chars">4</property>
+ <property name="text">6</property>
+ <property name="adjustment">preview_title_font_size_adjustment</property>
+ <property name="numeric">True</property>
+ <property name="value">6</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="preview_title_size_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Font size (px) of the preview titles</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <layout>
+ <property name="row">2</property>
+ <property name="column">0</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkGrid" id="grid_preview_title_weight">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_top">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="grid_preview_title_weight_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Font weight of the preview titles</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="grid_preview_title_weight_combo">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <items>
+ <item id="inherit" translatable="yes">inherit from theme</item>
+ <item id="normal" translatable="yes">normal</item>
+ <item id="lighter" translatable="yes">lighter</item>
+ <item id="bold" translatable="yes">bold</item>
+ <item id="bolder" translatable="yes">bolder</item>
+ </items>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <layout>
+ <property name="row">3</property>
+ <property name="column">0</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkGrid" id="grid_preview_title_font_color">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_top">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="grid_preview_title_font_color_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Font color of the preview titles</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkColorButton" id="grid_preview_title_font_color_colorbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="halign">end</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <layout>
+ <property name="row">4</property>
+ <property name="column">0</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listbox_peek_mode">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="margin_bottom">6</property>
+ <child>
+ <object class="GtkGrid" id="grid_peek_mode">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="peek_mode_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Enable window peeking</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="peek_mode_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="peek_mode_description">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">When hovering over a window preview for some time, the window gets distinguished.</property>
+ <property name="wrap">True</property>
+ <property name="max_width_chars">40</property>
+ <property name="xalign">0</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkGrid" id="grid_enter_peek_mode_timeout">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_top">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="enter_peek_mode_timeout_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Enter window peeking mode timeout (ms)</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="enter_peek_mode_timeout_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="width_chars">4</property>
+ <property name="text" translatable="yes">50</property>
+ <property name="adjustment">enter_peek_mode_timeout_adjustment</property>
+ <property name="numeric">True</property>
+ <property name="value">50</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="enter_peek_mode_timeout_description">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Time of inactivity while hovering over a window preview needed to enter the window peeking mode.</property>
+ <property name="wrap">True</property>
+ <property name="max_width_chars">40</property>
+ <property name="xalign">0</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <layout>
+ <property name="row">2</property>
+ <property name="column">0</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkGrid" id="grid_peek_mode_opacity">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_top">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="peek_mode_opacity_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Window peeking mode opacity</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="peek_mode_opacity_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="width_chars">4</property>
+ <property name="text" translatable="yes">0</property>
+ <property name="adjustment">peek_mode_opacity_adjustment</property>
+ <property name="numeric">True</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="peek_mode_opacity_description">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">All windows except for the peeked one have their opacity set to the same value.</property>
+ <property name="wrap">True</property>
+ <property name="max_width_chars">40</property>
+ <property name="xalign">0</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <layout>
+ <property name="row">3</property>
+ <property name="column">0</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkAdjustment" id="scroll_icon_options_delay_adjustment">
+ <property name="upper">2000</property>
+ <property name="step_increment">10</property>
+ <property name="page_increment">50</property>
+ </object>
+ <object class="GtkBox" id="scroll_icon_options_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="hexpand">1</property>
+ <property name="vexpand">1</property>
+ <child>
+ <object class="GtkListBox" id="scroll_icon_options_listbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="selection_mode">none</property>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_scroll_icon_options_delay">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_scroll_icon_options_delay">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkSpinButton" id="scroll_icon_options_delay_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <property name="width_chars">4</property>
+ <property name="text">50</property>
+ <property name="adjustment">scroll_icon_options_delay_adjustment</property>
+ <property name="numeric">True</property>
+ <property name="value">50</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ <property name="row-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="scroll_icon_options_delay_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Delay between mouse scroll events (ms)</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="scroll_icon_options_delay_description">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Use this value to limit the number of captured mouse scroll events.</property>
+ <property name="wrap">True</property>
+ <property name="xalign">0</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkAdjustment" id="scroll_panel_options_delay_adjustment">
+ <property name="upper">2000</property>
+ <property name="step_increment">10</property>
+ <property name="page_increment">50</property>
+ </object>
+ <object class="GtkBox" id="scroll_panel_options_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="hexpand">1</property>
+ <property name="vexpand">1</property>
+ <child>
+ <object class="GtkListBox" id="scroll_panel_options_listbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="selection_mode">none</property>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_scroll_panel_options_delay">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_scroll_panel_options_delay">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkSpinButton" id="scroll_panel_options_delay_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <property name="width_chars">4</property>
+ <property name="text">50</property>
+ <property name="adjustment">scroll_panel_options_delay_adjustment</property>
+ <property name="numeric">True</property>
+ <property name="value">50</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ <property name="row-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="scroll_panel_options_delay_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Delay between mouse scroll events (ms)</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="scroll_panel_options_delay_description">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Use this value to limit the number of captured mouse scroll events.</property>
+ <property name="wrap">True</property>
+ <property name="xalign">0</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_scroll_panel_options_show_ws_popup">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_scroll_panel_options_show_ws_popup">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="scroll_panel_options_show_ws_popup_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Show popup when changing workspace</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="scroll_panel_options_show_ws_popup_description">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">This affects workspace popup when scrolling on the panel only.</property>
+ <property name="wrap">True</property>
+ <property name="xalign">0</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="scroll_panel_options_show_ws_popup_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ <property name="row-span">2</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkAdjustment" id="shortcut_time_adjustment">
+ <property name="upper">10000</property>
+ <property name="step_increment">250</property>
+ <property name="page_increment">1000</property>
+ </object>
+ <object class="GtkBox" id="box_overlay_shortcut">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="orientation">vertical</property>
+ <property name="hexpand">1</property>
+ <property name="vexpand">1</property>
+ <child>
+ <object class="GtkFrame" id="frame_overlay_show_dock">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <child>
+ <object class="GtkListBox" id="listbox_overlay_shortcut">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="selection_mode">none</property>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_hotkey_prefix">
+ <property name="width_request">100</property>
+ <property name="height_request">80</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_hotkey_prefix">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkComboBoxText" id="hotkey_prefix_combo">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="valign">center</property>
+ <items>
+ <item id="Super" translatable="yes">Super</item>
+ <item id="SuperAlt" translatable="yes">Super + Alt</item>
+ </items>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ <property name="row-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="hotkey_prefix_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Hotkeys prefix</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="hotkey_prefix_description">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Hotkeys will either be Super+Number or Super+Alt+Num</property>
+ <property name="wrap">True</property>
+ <property name="max_width_chars">40</property>
+ <property name="xalign">0</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_overlay_shortcut">
+ <property name="width_request">100</property>
+ <property name="height_request">80</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_overlay">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkComboBoxText" id="overlay_combo">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="valign">center</property>
+ <items>
+ <item id="NEVER" translatable="yes">Never</item>
+ <item id="TEMPORARILY" translatable="yes">Show temporarily</item>
+ <item id="ALWAYS" translatable="yes">Always visible</item>
+ </items>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ <property name="row-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="overlay_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Number overlay</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="overlay_description">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Temporarily show the application numbers over the icons when using the hotkeys.</property>
+ <property name="wrap">True</property>
+ <property name="max_width_chars">40</property>
+ <property name="xalign">0</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_timeout">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_timeout">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="hexpand">True</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkSpinButton" id="timeout_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="adjustment">shortcut_time_adjustment</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="shortcut_timeout_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Hide timeout (ms)</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_extra_shortcut">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_shortcut">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkEntry" id="shortcut_entry">
+ <property name="can_focus">True</property>
+ <property name="valign">center</property>
+ <property name="width_chars">12</property>
+ <property name="placeholder_text" translatable="yes">e.g. &lt;Super&gt;q</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ <property name="row-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="shortcut_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Shortcut to show the overlay for 2 seconds</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="shortcut_description">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Syntax: &lt;Shift&gt;, &lt;Ctrl&gt;, &lt;Alt&gt;, &lt;Super&gt;</property>
+ <property name="wrap">True</property>
+ <property name="max_width_chars">40</property>
+ <property name="xalign">0</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listbox_shortcut_preview">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_shortcut_preview">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="shortcut_preview_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Show window previews on hotkey</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="shortcut_preview_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ <property name="row-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="shortcut_preview_description">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Show previews when the application have multiple instances</property>
+ <property name="wrap">True</property>
+ <property name="max_width_chars">40</property>
+ <property name="xalign">0</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_shortcut_num_keys">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_shortcut_num_keys">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkComboBoxText" id="shortcut_num_keys_combo">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <items>
+ <item id="NUM_ROW" translatable="yes">Number row</item>
+ <item id="NUM_KEYPAD" translatable="yes">Numeric keypad</item>
+ <item id="BOTH" translatable="yes">Both</item>
+ </items>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ <property name="row-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="shortcut_num_keys_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Hotkeys are activated with</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="shortcut_num_keys_description">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Select which keyboard number keys are used to activate the hotkeys</property>
+ <property name="wrap">True</property>
+ <property name="max_width_chars">40</property>
+ <property name="xalign">0</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkAdjustment" id="show_applications_side_padding_adjustment">
+ <property name="upper">100</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkBox" id="show_applications_options">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="hexpand">1</property>
+ <property name="vexpand">1</property>
+ <child>
+ <object class="GtkListBoxRow" id="listbox_show_applications_icon_file">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="show_applications_icon_file_grid">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="row_spacing">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="show_applications_icon_file_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Current Show Applications icon</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImage" id="show_applications_current_icon_image">
+ <property name="width_request">32</property>
+ <property name="height_request">32</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">end</property>
+ <property name="icon_name">gtk-missing-image</property>
+ <property name="pixel_size">32</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="show_applications_icon_file_filebutton">
+ <property name="width_request">140</property>
+ <property name="visible">True</property>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="show_applications_custom_icon_file_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Custom Show Applications image icon</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_show_applications_side_padding">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_show_applications_side_padding">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="hexpand">True</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkSpinButton" id="show_applications_side_padding_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="text" translatable="yes">0</property>
+ <property name="adjustment">show_applications_side_padding_adjustment</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="show_applications_side_padding_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Show Applications icon side padding (px)</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_show_applications_esc_key">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_show_applications_esc_key">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkSwitch" id="show_applications_esc_key_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="show_applications_esc_key_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Override escape key and return to desktop</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkAdjustment" id="show_showdesktop_delay_adjustment">
+ <property name="upper">5000</property>
+ <property name="step_increment">10</property>
+ <property name="page_increment">100</property>
+ </object>
+ <object class="GtkAdjustment" id="show_showdesktop_time_adjustment">
+ <property name="upper">5000</property>
+ <property name="step_increment">10</property>
+ <property name="page_increment">100</property>
+ </object>
+ <object class="GtkAdjustment" id="show_showdesktop_width_adjustment">
+ <property name="lower">1</property>
+ <property name="upper">40</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkBox" id="box_show_showdesktop_options">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkListBox" id="listbox_show_showdesktop_options">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="selection_mode">none</property>
+ <property name="hexpand">1</property>
+ <property name="vexpand">1</property>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_show_showdesktop_width">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_show_showdesktop_width">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="row_spacing">4</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="show_showdesktop_width_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="show_showdesktop_width_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="width_chars">4</property>
+ <property name="text">1</property>
+ <property name="adjustment">show_showdesktop_width_adjustment</property>
+ <property name="numeric">True</property>
+ <property name="value">1</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="override_show_desktop_line_color_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Override Show Desktop line color</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="override_show_desktop_line_color_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">12</property>
+ <property name="halign">end</property>
+ <child>
+ <object class="GtkColorButton" id="override_show_desktop_line_color_colorbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="halign">end</property>
+ <property name="use_alpha">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="override_show_desktop_line_color_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ </object>
+ </child>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_show_showdesktop_hide">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_show_showdesktop_hide">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="row_spacing">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="show_showdesktop_hide_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Reveal the desktop when hovering the Show Desktop button</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="show_showdesktop_hide_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkGrid" id="grid_show_showdesktop_hide_options">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="row_spacing">4</property>
+ <child>
+ <object class="GtkLabel" id="show_showdesktop_delay_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Delay before revealing the desktop (ms)</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="show_showdesktop_delay_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="width_chars">4</property>
+ <property name="text">1</property>
+ <property name="adjustment">show_showdesktop_delay_adjustment</property>
+ <property name="numeric">True</property>
+ <property name="value">1</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="show_showdesktop_time_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Fade duration (ms)</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="show_showdesktop_time_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="width_chars">4</property>
+ <property name="text">1</property>
+ <property name="adjustment">show_showdesktop_time_adjustment</property>
+ <property name="numeric">True</property>
+ <property name="value">1</property>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkAdjustment" id="statusicon_padding_adjustment">
+ <property name="lower">0.33</property>
+ <property name="upper">1</property>
+ <property name="step_increment">0.01</property>
+ <property name="page_increment">0.1</property>
+ </object>
+ <object class="GtkAdjustment" id="trans_anim_time_adjustment">
+ <property name="upper">2000</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="trans_distance_adjustment">
+ <property name="upper">200</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="trans_gradient_opacity1_adjustment">
+ <property name="upper">100</property>
+ <property name="step_increment">5</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="trans_gradient_opacity2_adjustment">
+ <property name="upper">100</property>
+ <property name="step_increment">5</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="trans_opacity_adjustment">
+ <property name="upper">100</property>
+ <property name="step_increment">5</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="trans_opacity_min_adjustment">
+ <property name="upper">100</property>
+ <property name="step_increment">5</property>
+ <property name="page_increment">10</property>
+ </object>
+ <object class="GtkBox" id="box_dynamic_opacity_options">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="hexpand">1</property>
+ <property name="vexpand">1</property>
+ <child>
+ <object class="GtkListBox" id="trans_options_listbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="selection_mode">none</property>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_trans_options_window_type">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="trans_options_window_type_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="row_spacing">4</property>
+ <child>
+ <object class="GtkLabel" id="trans_options_window_type_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">The panel background opacity is affected by</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="trans_options_window_type_combo">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="valign">center</property>
+ <items>
+ <item id="ALL_WINDOWS" translatable="yes">All windows</item>
+ <item id="FOCUSED_WINDOWS" translatable="yes">Focused windows</item>
+ <item id="MAXIMIZED_WINDOWS" translatable="yes">Maximized windows</item>
+ </items>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_trans_options_distance">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_trans_options_distance">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkSpinButton" id="trans_options_distance_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="width_chars">4</property>
+ <property name="text">50</property>
+ <property name="adjustment">trans_distance_adjustment</property>
+ <property name="numeric">True</property>
+ <property name="value">50</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="trans_options_distance_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Change opacity when a window gets closer than (px)</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_trans_options_min_opacity">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkBox" id="trans_options_min_opacity_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <child>
+ <object class="GtkLabel" id="trans_options_min_opacity_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_end">12</property>
+ <property name="label" translatable="yes">Change opacity to (%)</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="trans_options_min_opacity_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="text" translatable="yes">0</property>
+ <property name="adjustment">trans_opacity_min_adjustment</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow_trans_options_anim_time">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="grid_trans_options_anim_time">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkSpinButton" id="trans_options_anim_time_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="width_chars">4</property>
+ <property name="text">50</property>
+ <property name="adjustment">trans_anim_time_adjustment</property>
+ <property name="numeric">True</property>
+ <property name="value">50</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="trans_options_anim_time_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Opacity change animation duration (ms)</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkAdjustment" id="tray_padding_adjustment">
+ <property name="lower">0.33</property>
+ <property name="upper">1</property>
+ <property name="step_increment">0.01</property>
+ <property name="page_increment">0.1</property>
+ </object>
+ <object class="GtkAdjustment" id="tray_size_adjustment">
+ <property name="lower">0.33</property>
+ <property name="upper">1</property>
+ <property name="step_increment">0.01</property>
+ <property name="page_increment">0.1</property>
+ </object>
+ <object class="GtkNotebook" id="settings_notebook">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkScrolledWindow" id="position">
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">24</property>
+ <property name="margin_end">24</property>
+ <property name="margin_top">24</property>
+ <property name="margin_bottom">24</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">24</property>
+ <child>
+ <object class="GtkFrame" id="multimon_frame">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <child>
+ <object class="GtkListBox" id="multimon_listbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="selection_mode">none</property>
+ <child>
+ <object class="GtkListBoxRow" id="multimon_primaty_row">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="multimon_primary_grid">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="row_spacing">32</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="multimon_primary_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Display the main panel on</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="multimon_primary_combo">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="multimon_multi_row">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="multimon_multi_grid">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="multimon_multi_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Display panels on all monitors</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="multimon_multi_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label_item">
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFrame" id="intellihide_frame">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <child>
+ <object class="GtkListBox" id="intellihide_listbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="selection_mode">none</property>
+ <child>
+ <object class="GtkListBoxRow" id="intellihide_row">
+ <property name="width_request">100</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="intellihide_grid">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="intellihide_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Panel Intellihide</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="intellihide_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkButton" id="intellihide_options_button">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <child>
+ <object class="GtkImage" id="image_intellihide_options">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">emblem-system-symbolic</property>
+ </object>
+ </child>
+ <style>
+ <class name="circular"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="intellihide_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ </object>
+ </child>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ <property name="row-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="intellihide_description">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Hide and reveal the panel according to preferences</property>
+ <property name="wrap">True</property>
+ <property name="max_width_chars">40</property>
+ <property name="xalign">0</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label_item">
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFrame" id="taskbar_display">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <child>
+ <object class="GtkBox" id="taskbar_display_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkGrid" id="taskbar_position_grid">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <child>
+ <object class="GtkLabel" id="taskbar_position_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Order and positions on monitor</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="taskbar_position_monitor_combo">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="taskbar_position_sync_button">
+ <property name="label" translatable="yes">Apply changes to all monitors</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_top">4</property>
+ <property name="margin_bottom">4</property>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFrame" id="panel_size_frame">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_top">6</property>
+ <property name="label_xalign">0</property>
+ <child>
+ <object class="GtkListBox" id="panel_size_listbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="selection_mode">none</property>
+ <child>
+ <object class="GtkListBoxRow" id="panel_size_listboxrow">
+ <property name="width_request">100</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="panel_size_grid">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_top">6</property>
+ <property name="margin_bottom">6</property>
+ <property name="row_spacing">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkScale" id="panel_size_scale">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="valign">baseline</property>
+ <property name="hexpand">True</property>
+ <property name="adjustment">panel_size_adjustment</property>
+ <property name="round_digits">0</property>
+ <property name="digits">0</property>
+ <property name="value_pos">right</property>
+ <property name="draw_value">True</property>
+ <signal name="value-changed" handler="panel_size_scale_value_changed_cb" swapped="no"/>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="panel_size_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Panel thickness&#10;(default is 48)</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="panel_length_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Panel length (%)&#10;(default is 100)</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">2</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScale" id="panel_length_scale">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="valign">baseline</property>
+ <property name="hexpand">True</property>
+ <property name="adjustment">panel_length_adjustment</property>
+ <property name="round_digits">0</property>
+ <property name="digits">0</property>
+ <property name="value_pos">right</property>
+ <property name="draw_value">True</property>
+ <layout>
+ <property name="row">2</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="panel_anchor_combo">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="valign">center</property>
+ <items>
+ <item id="START" translatable="yes">Start</item>
+ <item id="MIDDLE" translatable="yes">Middle</item>
+ <item id="END" translatable="yes">End</item>
+ </items>
+ <layout>
+ <property name="row">3</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="panel_anchor_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Anchor</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">3</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="panel_position_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Panel screen position</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="panel_position_butttons_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">32</property>
+ <child>
+ <object class="GtkToggleButton" id="position_bottom_button">
+ <property name="label" translatable="yes">Bottom</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <!-- <property name="xalign">0</property> -->
+ <property name="active">True</property>
+ <signal name="clicked" handler="position_bottom_button_clicked_cb" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToggleButton" id="position_top_button">
+ <property name="label" translatable="yes">Top</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <!-- <property name="xalign">0</property> -->
+ <property name="group">position_bottom_button</property>
+ <signal name="clicked" handler="position_top_button_clicked_cb" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToggleButton" id="position_left_button">
+ <property name="label" translatable="yes">Left</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <!-- <property name="xalign">0</property> -->
+ <property name="group">position_bottom_button</property>
+ <signal name="clicked" handler="position_left_button_clicked_cb" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToggleButton" id="position_right_button">
+ <property name="label" translatable="yes">Right</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <!-- <property name="xalign">0</property> -->
+ <property name="group">position_bottom_button</property>
+ <signal name="clicked" handler="position_right_button_clicked_cb" swapped="no"/>
+ </object>
+ </child><layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label_item">
+ <placeholder/>
+ </child>
+ <layout>
+ <property name="row">2</property>
+ <property name="column">0</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBox" id="taskbar_display_listbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_bottom">6</property>
+ <property name="selection_mode">none</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label_item">
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="position_tab">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Position</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="panel_style">
+ <child>
+ <object class="GtkBox" id="style">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">24</property>
+ <property name="margin_end">24</property>
+ <property name="margin_top">24</property>
+ <property name="margin_bottom">24</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">24</property>
+ <child>
+ <object class="GtkFrame">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <child>
+ <object class="GtkListBox" id="panel_style_listbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="selection_mode">none</property>
+ <child>
+ <object class="GtkListBoxRow" id="margin_listboxrow">
+ <property name="width_request">100</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="margins_grid">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">6</property>
+ <property name="margin_bottom">6</property>
+ <property name="row_spacing">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="appicon_margin_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">App Icon Margin&#10;(default is 8)</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScale" id="appicon_margin_scale">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="valign">baseline</property>
+ <property name="hexpand">True</property>
+ <property name="adjustment">appicon_margin_adjustment</property>
+ <property name="round_digits">0</property>
+ <property name="digits">0</property>
+ <property name="value_pos">right</property>
+ <property name="draw_value">True</property>
+ <signal name="value-changed" handler="appicon_margin_scale_value_changed_cb" swapped="no"/>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="appicon_padding_listboxrow">
+ <property name="width_request">100</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="appicon_padding_grid">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">6</property>
+ <property name="margin_bottom">6</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="appicon_padding_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">App Icon Padding&#10;(default is 4)</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScale" id="appicon_padding_scale">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="valign">baseline</property>
+ <property name="hexpand">True</property>
+ <property name="adjustment">appicon_padding_adjustment</property>
+ <property name="round_digits">0</property>
+ <property name="digits">0</property>
+ <property name="value_pos">right</property>
+ <property name="draw_value">True</property>
+ <signal name="value-changed" handler="appicon_padding_scale_value_changed_cb" swapped="no"/>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label_item">
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFrame" id="dots_display">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <child>
+ <object class="GtkListBox" id="dots_listbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="selection_mode">none</property>
+ <child>
+ <object class="GtkListBoxRow" id="dots_position_listboxrow">
+ <property name="width_request">100</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkBox" id="dots_position_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="dots_position_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Running indicator position</property>
+ <property name="xalign">0</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="dots_position_butttons_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">32</property>
+ <child>
+ <object class="GtkToggleButton" id="dots_bottom_button">
+ <property name="label" translatable="yes">Bottom</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="valign">center</property>
+ <property name="active">True</property>
+ <signal name="toggled" handler="dots_bottom_button_toggled_cb" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToggleButton" id="dots_top_button">
+ <property name="label" translatable="yes">Top</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="valign">center</property>
+ <property name="group">dots_bottom_button</property>
+ <signal name="toggled" handler="dots_top_button_toggled_cb" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToggleButton" id="dots_left_button">
+ <property name="label" translatable="yes">Left</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="valign">center</property>
+ <property name="group">dots_bottom_button</property>
+ <signal name="toggled" handler="dots_left_button_toggled_cb" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkToggleButton" id="dots_right_button">
+ <property name="label" translatable="yes">Right</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="valign">center</property>
+ <property name="group">dots_bottom_button</property>
+ <signal name="toggled" handler="dots_right_button_toggled_cb" swapped="no"/>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="dot_style_focused_listboxrow">
+ <property name="width_request">100</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkBox" id="dot_style_focuse_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="dot_style_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Running indicator style (Focused app)</property>
+ <property name="xalign">0</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="dot_style_focused_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkButton" id="dot_style_options_button">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="valign">center</property>
+ <child>
+ <object class="GtkImage" id="dot_style_image">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">emblem-system-symbolic</property>
+ </object>
+ </child>
+ <style>
+ <class name="circular"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="dot_style_focused_combo">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <items>
+ <item id="DOTS" translatable="yes">Dots</item>
+ <item id="SQUARES" translatable="yes">Squares</item>
+ <item id="DASHES" translatable="yes">Dashes</item>
+ <item id="SEGMENTED" translatable="yes">Segmented</item>
+ <item id="SOLID" translatable="yes">Solid</item>
+ <item id="CILIORA" translatable="yes">Ciliora</item>
+ <item id="METRO" translatable="yes">Metro</item>
+ </items>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="dot_style_unfocused_listboxrow">
+ <property name="width_request">100</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkBox" id="dot_style_unfocused_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="dot_style_unfocused_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Running indicator style (Unfocused apps)</property>
+ <property name="xalign">0</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="dot_style_unfocused_combo">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <items>
+ <item id="DOTS" translatable="yes">Dots</item>
+ <item id="SQUARES" translatable="yes">Squares</item>
+ <item id="DASHES" translatable="yes">Dashes</item>
+ <item id="SEGMENTED" translatable="yes">Segmented</item>
+ <item id="SOLID" translatable="yes">Solid</item>
+ <item id="CILIORA" translatable="yes">Ciliora</item>
+ <item id="METRO" translatable="yes">Metro</item>
+ </items>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label_item">
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFrame" id="dynamic_trans">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <child>
+ <object class="GtkListBox" id="dynamic_trans_listbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="selection_mode">none</property>
+ <child>
+ <object class="GtkListBoxRow" id="trans_bg_row">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="trans_bg_grid">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="trans_bg_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Override panel theme background color </property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="trans_bg_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkColorButton" id="trans_bg_color_colorbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="halign">end</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="trans_bg_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ </object>
+ </child>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="listbox_preview_show_title1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkBox" id="trans_opacity_main_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkGrid" id="trans_opacity_grid">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="trans_opacity_override_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Override panel theme background opacity</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="trans_opacity_override_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkGrid" id="trans_opacity_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_top">12</property>
+ <property name="row_spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="trans_opacity_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Panel background opacity (%)</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="trans_opacity_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <property name="text" translatable="yes">0</property>
+ <property name="adjustment">trans_opacity_adjustment</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkLabel" id="trans_dyn_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Dynamic background opacity</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="trans_dyn_description">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Change opacity when a window gets close to the panel</property>
+ <property name="wrap">True</property>
+ <property name="max_width_chars">40</property>
+ <property name="xalign">0</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ </child>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="trans_dyn_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkButton" id="trans_dyn_options_button">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <child>
+ <object class="GtkImage" id="image_trans_dyn_options">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">emblem-system-symbolic</property>
+ </object>
+ </child>
+ <style>
+ <class name="circular"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="trans_dyn_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ </object>
+ </child>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="trans_gradient_row">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="trans_gradient_grid">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="trans_gradient_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Override panel theme gradient </property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="trans_gradient_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkGrid" id="trans_gradient_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_top">12</property>
+ <property name="row_spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="trans_gradient_color1_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Gradient top color and opacity (%)</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="trans_gradient_color2_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Gradient bottom color and opacity (%)</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="trans_gradient_color1_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkColorButton" id="trans_gradient_color1_colorbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="trans_gradient_color1_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <property name="text" translatable="yes">0</property>
+ <property name="adjustment">trans_gradient_opacity1_adjustment</property>
+ </object>
+ </child>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="trans_gradient_color2_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkColorButton" id="trans_gradient_color2_colorbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="trans_gradient_color2_spinbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <property name="text" translatable="yes">0</property>
+ <property name="adjustment">trans_gradient_opacity2_adjustment</property>
+ </object>
+ </child>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label_item">
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFrame" id="anim_trans">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <child>
+ <object class="GtkListBox" id="anim_listbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="selection_mode">none</property>
+ <child>
+ <object class="GtkListBoxRow" id="anim_bg_row">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="anim_gradient_grid">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="animate_appicon_hover_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Animate hovering app icons</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">2</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="animate_appicon_hover_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkButton" id="animate_appicon_hover_button">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="valign">center</property>
+ <child>
+ <object class="GtkImage" id="animate_appicon_hover_options_image">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">emblem-system-symbolic</property>
+ </object>
+ </child>
+ <style>
+ <class name="circular"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="animate_appicon_hover_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ </object>
+ </child>
+ <layout>
+ <property name="row">2</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="style_tab">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Style</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="behaviour">
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">24</property>
+ <property name="margin_end">24</property>
+ <property name="margin_top">24</property>
+ <property name="margin_bottom">24</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">24</property>
+ <child>
+ <object class="GtkFrame" id="customize_theme1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <child>
+ <object class="GtkListBox" id="listbox9">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="selection_mode">none</property>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow7">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="shrink_dash1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkSwitch" id="show_favorite_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="show_favorite_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Show favorite applications</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="show_running_apps_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Show running applications</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">2</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="show_runnning_apps_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="row">2</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="multimon_multi_show_favorites_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="multimon_multi_show_favorites_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Show favorite applications on secondary panels</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="show_appmenu_row">
+ <property name="width_request">100</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="show_appmenu_grid">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkSwitch" id="show_appmenu_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ <property name="row-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="show_appmenu_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Show &lt;i&gt;AppMenu&lt;/i&gt; button</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="show_appmenu_description">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Top Bar &gt; Show App Menu must be enabled in Tweak Tool</property>
+ <property name="use_markup">True</property>
+ <property name="wrap">True</property>
+ <property name="xalign">0</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="show_hover">
+ <property name="width_request">100</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="show_hover_grid">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="row_spacing">4</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkBox" id="show_window_previews_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkButton" id="show_window_previews_button">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <child>
+ <object class="GtkImage" id="image_window_previews_options">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">emblem-system-symbolic</property>
+ </object>
+ </child>
+ <style>
+ <class name="circular"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="show_window_previews_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ </object>
+ </child>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="show_window_previews_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Show window previews on hover</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="show_tooltip_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="show_tooltip_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Show tooltip on hover</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="isolate_workspaces_row">
+ <property name="width_request">100</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="isolate_workspaces_grid">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkSwitch" id="isolate_workspaces_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="isolate_workspaces_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Isolate Workspaces</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="multimon_multi_isolate_monitor_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="multimon_multi_isolate_monitor_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Isolate monitors</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="clicktoexit_row">
+ <property name="width_request">100</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="clicktoexit_grid">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkSwitch" id="clicktoexit_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="clicktoexit_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Click empty space to close overview</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="hide_overview_on_startup_row">
+ <property name="width_request">100</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="hide_overview_on_startup_grid">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkSwitch" id="hide_overview_on_startup_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="hide_overview_on_startup_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Disable show overview on startup</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow" id="group_apps_row">
+ <property name="width_request">100</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="group_apps_grid">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="group_apps_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Ungroup applications</property>
+ <property name="use_markup">True</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="group_apps_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkButton" id="show_group_apps_options_button">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <child>
+ <object class="GtkImage" id="image_show_group_apps_options">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">emblem-system-symbolic</property>
+ </object>
+ </child>
+ <style>
+ <class name="circular"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="group_apps_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ </object>
+ </child>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label_item">
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="behaviour_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Behavior</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="action">
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">24</property>
+ <property name="margin_end">24</property>
+ <property name="margin_top">24</property>
+ <property name="margin_bottom">24</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">24</property>
+ <child>
+ <object class="GtkFrame" id="built_in_theme_frame3">
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <child>
+ <object class="GtkListBox" id="listbox6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="selection_mode">none</property>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow9">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="buitin_theme5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="builtin_theme_description5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Behaviour when clicking on the icon of a running application.</property>
+ <property name="wrap">True</property>
+ <property name="xalign">0</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="builtin_theme_label5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Click action</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="click_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkButton" id="middle_click_options_button">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="valign">center</property>
+ <child>
+ <object class="GtkImage" id="middle_click_image">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">emblem-system-symbolic</property>
+ </object>
+ </child>
+ <style>
+ <class name="circular"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="click_action_combo">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="valign">center</property>
+ <items>
+ <item id="CYCLE-MIN" translatable="yes">Cycle windows + minimize</item>
+ <item id="CYCLE" translatable="yes">Cycle through windows</item>
+ <item id="TOGGLE-SHOWPREVIEW" translatable="yes">Toggle single / Preview multiple</item>
+ <item id="MINIMIZE" translatable="yes">Toggle windows</item>
+ <item id="RAISE" translatable="yes">Raise windows</item>
+ <item id="LAUNCH" translatable="yes">Launch new instance</item>
+ </items>
+ </object>
+ </child>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ <property name="row-span">2</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label_item">
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFrame" id="scroll_action_frame">
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <child>
+ <object class="GtkGrid" id="scroll_action_grid">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="row_spacing">16</property>
+ <property name="column_spacing">6</property>
+ <child>
+ <object class="GtkBox" id="scroll_panel_description_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkLabel" id="scroll_panel_description_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Scroll panel action</property>
+ <property name="xalign">0</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="scroll_panel_description">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Behavior when mouse scrolling over the panel.</property>
+ <property name="wrap">True</property>
+ <property name="xalign">0</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ </child>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="scroll_icon_description_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkLabel" id="scroll_icon_description_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Scroll icon action</property>
+ <property name="xalign">0</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="scroll_icon_description">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Behavior when mouse scrolling over an application icon.</property>
+ <property name="wrap">True</property>
+ <property name="xalign">0</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ </child>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="scroll_panel_options_button">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <child>
+ <object class="GtkImage" id="scroll_panel_options_button_image">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">emblem-system-symbolic</property>
+ </object>
+ </child>
+ <style>
+ <class name="circular"/>
+ </style>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="scroll_panel_combo">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="valign">center</property>
+ <property name="hexpand">True</property>
+ <items>
+ <item id="NOTHING" translatable="yes">Do nothing</item>
+ <item id="SWITCH_WORKSPACE" translatable="yes">Switch workspace</item>
+ <item id="CYCLE_WINDOWS" translatable="yes">Cycle windows</item>
+ <item id="CHANGE_VOLUME" translatable="yes">Change volume</item>
+ </items>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="scroll_icon_combo">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="valign">center</property>
+ <property name="hexpand">True</property>
+ <items>
+ <item id="NOTHING" translatable="yes">Do nothing</item>
+ <item id="CYCLE_WINDOWS" translatable="yes">Cycle windows</item>
+ <item id="PASS_THROUGH" translatable="yes">Same as panel</item>
+ </items>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="scroll_icon_options_button">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <child>
+ <object class="GtkImage" id="scroll_icon_options_button_image">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">emblem-system-symbolic</property>
+ </object>
+ </child>
+ <style>
+ <class name="circular"/>
+ </style>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label_item">
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFrame" id="hot_keys_frame">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <child>
+ <object class="GtkListBox" id="hot_keys_listbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="selection_mode">none</property>
+ <child>
+ <object class="GtkListBoxRow" id="hot_keys_listboxrow">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="hot_keys_grid">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="hot_keys_description">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Enable Super+(0-9) as shortcuts to activate apps. It can also be used together with Shift and Ctrl.</property>
+ <property name="use_markup">True</property>
+ <property name="wrap">True</property>
+ <property name="xalign">0</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="hot_keys_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Use hotkeys to activate apps</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="overlay_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkButton" id="overlay_button">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <child>
+ <object class="GtkImage" id="image_overlay">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">emblem-system-symbolic</property>
+ </object>
+ </child>
+ <style>
+ <class name="circular"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="hot_keys_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ </object>
+ </child>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ <property name="row-span">2</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label_item">
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="action_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Action</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="fine-tune">
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">24</property>
+ <property name="margin_end">24</property>
+ <property name="margin_top">24</property>
+ <property name="margin_bottom">24</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">24</property>
+ <child>
+ <object class="GtkFrame" id="content_size_frame">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <child>
+ <object class="GtkListBox" id="listbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="selection_mode">none</property>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow1">
+ <property name="width_request">100</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="content_size_grid">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">6</property>
+ <property name="margin_bottom">6</property>
+ <property name="row_spacing">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="tray_size_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Tray Font Size&#10;(0 = theme default)</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScale" id="tray_size_scale">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="valign">baseline</property>
+ <property name="hexpand">True</property>
+ <property name="adjustment">tray_size_adjustment</property>
+ <property name="round_digits">0</property>
+ <property name="digits">0</property>
+ <property name="value_pos">right</property>
+ <property name="draw_value">True</property>
+ <signal name="value-changed" handler="tray_size_scale_value_changed_cb" swapped="no"/>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="leftbox_size_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">LeftBox Font Size&#10;(0 = theme default)</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScale" id="leftbox_size_scale">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="valign">baseline</property>
+ <property name="hexpand">True</property>
+ <property name="adjustment">leftbox_size_adjustment</property>
+ <property name="round_digits">0</property>
+ <property name="digits">0</property>
+ <property name="value_pos">right</property>
+ <property name="draw_value">True</property>
+ <signal name="value-changed" handler="leftbox_size_scale_value_changed_cb" swapped="no"/>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label_item">
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFrame" id="padding_size_frame">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <child>
+ <object class="GtkListBox" id="listbox3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="selection_mode">none</property>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow5">
+ <property name="width_request">100</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="padding_size_grid">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="row_spacing">12</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="tray_padding_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Tray Item Padding&#10;(-1 = theme default)</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScale" id="tray_padding_scale">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="valign">baseline</property>
+ <property name="hexpand">True</property>
+ <property name="adjustment">tray_padding_adjustment</property>
+ <property name="round_digits">0</property>
+ <property name="digits">0</property>
+ <property name="value_pos">right</property>
+ <property name="draw_value">True</property>
+ <signal name="value-changed" handler="tray_padding_scale_value_changed_cb" swapped="no"/>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="statusicon_padding_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Status Icon Padding&#10;(-1 = theme default)</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScale" id="statusicon_padding_scale">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="valign">baseline</property>
+ <property name="hexpand">True</property>
+ <property name="adjustment">statusicon_padding_adjustment</property>
+ <property name="round_digits">0</property>
+ <property name="digits">0</property>
+ <property name="value_pos">right</property>
+ <property name="draw_value">True</property>
+ <signal name="value-changed" handler="statusicon_padding_scale_value_changed_cb" swapped="no"/>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="leftbox_padding_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">LeftBox Padding&#10;(-1 = theme default)</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">2</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScale" id="leftbox_padding_scale">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="valign">baseline</property>
+ <property name="hexpand">True</property>
+ <property name="adjustment">leftbox_padding_adjustment</property>
+ <property name="round_digits">0</property>
+ <property name="digits">0</property>
+ <property name="value_pos">right</property>
+ <property name="draw_value">True</property>
+ <signal name="value-changed" handler="leftbox_padding_scale_value_changed_cb" swapped="no"/>
+ <layout>
+ <property name="row">2</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFrame" id="animation_frame">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <child>
+ <object class="GtkListBox" id="listbox4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="selection_mode">none</property>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow4">
+ <property name="width_request">100</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="content_size_grid1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="animate_app_switch_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Animate switching applications</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="animate_app_switch_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="animate_window_launch_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="animate_window_launch_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Animate launching new windows</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFrame" id="stockgs_frame">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <child>
+ <object class="GtkListBox" id="stockgs_listbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="selection_mode">none</property>
+ <child>
+ <object class="GtkListBoxRow" id="stockgs_listboxrow">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="stockgs_grid">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="stockgs_dash_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Keep original gnome-shell dash (overview)</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="stockgs_dash_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="stockgs_hotcorner_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Force Activities hot corner on primary monitor</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">3</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="stockgs_hotcorner_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="row">3</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="stockgs_panelbtn_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Activate panel menu buttons (e.g. date menu) on click only</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">2</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="stockgs_panelbtn_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="row">2</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="stockgs_top_panel_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Keep original gnome-shell top panel</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="stockgs_top_panel_switch">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label_item">
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFrame" id="drillins_frame">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <child>
+ <object class="GtkListBox" id="listbox5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="selection_mode">none</property>
+ <child>
+ <object class="GtkListBoxRow" id="listboxrow6">
+ <property name="width_request">100</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="content_size_grid2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="row_spacing">20</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="secondarymenu_options_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">App icon secondary (right-click) menu</property>
+ <property name="xalign">0</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="secondarymenu_options_button">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="valign">center</property>
+ <child>
+ <object class="GtkImage" id="secondarymenu_options_button_image">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">emblem-system-symbolic</property>
+ </object>
+ </child>
+ <style>
+ <class name="circular"/>
+ </style>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label_item">
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="button_advanced_options">
+ <property name="label" translatable="yes">Advanced Options</property>
+ <property name="visible">False</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="halign">start</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="finetune_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="valign">center</property>
+ <property name="label" translatable="yes">Fine-Tune</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="about">
+ <child>
+ <object class="GtkBox">
+ <property name="can_focus">False</property>
+ <property name="margin_start">24</property>
+ <property name="margin_end">24</property>
+ <property name="margin_top">24</property>
+ <property name="margin_bottom">24</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkLabel" id="extension_name">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label">&lt;b&gt;Dash-to-Panel&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="box1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">center</property>
+ <child>
+ <object class="GtkLabel" id="extension_version_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">end</property>
+ <property name="label" translatable="yes">version: </property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="extension_version">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label">...</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLinkButton" id="homepage_link">
+ <property name="label" translatable="yes">GitHub</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="halign">center</property>
+ <property name="uri">https://github.com/jderose9/dash-to-panel</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFrame" id="importexport_frame">
+ <property name="can_focus">False</property>
+ <property name="margin_top">20</property>
+ <property name="label_xalign">0</property>
+ <child>
+ <object class="GtkListBox" id="importexport_listbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="selection_mode">none</property>
+ <child>
+ <object class="GtkListBoxRow" id="importexport_listboxrow">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkGrid" id="importexport_grid">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">32</property>
+ <child>
+ <object class="GtkLabel" id="importexport_description">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_bottom">12</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes">Use the buttons below to create a settings file from your current preferences that can be imported on a different machine.</property>
+ <property name="wrap">True</property>
+ <property name="xalign">0</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ <layout>
+ <property name="row">1</property>
+ <property name="column">0</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="importexport_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Export and import settings</property>
+ <layout>
+ <property name="row">0</property>
+ <property name="column">0</property>
+ <property name="column-span">2</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="importexport_export_button">
+ <property name="label" translatable="yes">Export to file</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <layout>
+ <property name="row">2</property>
+ <property name="column">0</property>
+ </layout>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="importexport_import_button">
+ <property name="label" translatable="yes">Import from file</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <layout>
+ <property name="row">2</property>
+ <property name="column">1</property>
+ </layout>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label_item">
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="valign">end</property>
+ <property name="label" translatable="yes">&lt;span size="small"&gt;This program comes with ABSOLUTELY NO WARRANTY.&#10;See the &lt;a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"&gt;GNU General Public License, version 2 or later&lt;/a&gt; for details.&lt;/span&gt;</property>
+ <property name="use_markup">True</property>
+ <property name="justify">center</property>
+ <property name="wrap">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="about_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">About</property>
+ </object>
+ </child>
+ </object>
+</interface>
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 <http://www.gnu.org/licenses/>.
+ *
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ *
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ *
+ */
+
+
+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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 1">
+ <g fill="#000000">
+ <rect x="45" width="1" height="1" opacity="0.5"/>
+ <rect x="46" width="2" height="1" opacity="0.2"/>
+ </g>
+</svg>
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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1 48">
+ <g fill="#000000">
+ <rect y="45" width="1" height="1" opacity="0.5"/>
+ <rect y="46" width="1" height="2" opacity="0.2"/>
+ </g>
+</svg>
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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1 56">
+ <g fill="#000000">
+ <rect y="45" width="1" height="1" opacity="0.5"/>
+ <rect y="46" width="1" height="2" opacity="0.2"/>
+ </g>
+</svg>
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 <http://www.gnu.org/licenses/>.
+ */
+
+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 &gt; Titlebar Buttons &gt; Minimize &amp; 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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schemalist gettext-domain="gnome-shell-extensions">
+ <enum id='org.gnome.shell.extensions.dash-to-panel.dotStyle'>
+ <value value='0' nick='DOTS'/>
+ <value value='1' nick='SQUARES'/>
+ <value value='2' nick='DASHES'/>
+ <value value='3' nick='SEGMENTED'/>
+ <value value='4' nick='SOLID'/>
+ <value value='5' nick='CILIORA'/>
+ <value value='6' nick='METRO'/>
+ </enum>
+ <enum id='org.gnome.shell.extensions.dash-to-panel.clickAction'>
+ <value value='0' nick='RAISE'/>
+ <value value='1' nick='MINIMIZE'/>
+ <value value='2' nick='LAUNCH'/>
+ <value value='3' nick='CYCLE'/>
+ <value value='4' nick='CYCLE-MIN'/>
+ <value value='5' nick='QUIT'/>
+ <value value='6' nick='TOGGLE-SHOWPREVIEW'/>
+ <value value='7' nick='TOGGLE-CYCLE'/>
+ </enum>
+ <enum id='org.gnome.shell.extensions.dash-to-panel.scrollAction'>
+ <value value='0' nick='NOTHING'/>
+ <value value='1' nick='SWITCH_WORKSPACE'/>
+ <value value='2' nick='CYCLE_WINDOWS'/>
+ <value value='3' nick='PASS_THROUGH'/>
+ <value value='4' nick='CHANGE_VOLUME'/>
+ </enum>
+ <enum id='org.gnome.shell.extensions.dash-to-panel.hotkeyPrefix'>
+ <value value='0' nick='Super'/>
+ <value value='1' nick='SuperAlt'/>
+ </enum>
+ <enum id='org.gnome.shell.extensions.dash-to-panel.hotkeyOverlay'>
+ <value value='0' nick='NEVER'/>
+ <value value='1' nick='TEMPORARILY'/>
+ <value value='2' nick='ALWAYS'/>
+ </enum>
+ <enum id='org.gnome.shell.extensions.dash-to-panel.position'>
+ <value value='0' nick='BOTTOM'/>
+ <value value='1' nick='TOP'/>
+ <value value='2' nick='LEFT'/>
+ <value value='3' nick='RIGHT'/>
+ </enum>
+ <enum id='org.gnome.shell.extensions.dash-to-panel.proximityBehavior'>
+ <value value='0' nick='ALL_WINDOWS'/>
+ <value value='1' nick='FOCUSED_WINDOWS'/>
+ <value value='2' nick='MAXIMIZED_WINDOWS'/>
+ </enum>
+ <enum id='org.gnome.shell.extensions.dash-to-panel.fontWeight'>
+ <value value='0' nick='inherit'/>
+ <value value='1' nick='normal'/>
+ <value value='2' nick='lighter'/>
+ <value value='3' nick='bold'/>
+ <value value='4' nick='bolder'/>
+ </enum>
+ <enum id='org.gnome.shell.extensions.dash-to-panel.hotkeyNumberKeys'>
+ <value value='0' nick='NUM_ROW'/>
+ <value value='1' nick='NUM_KEYPAD'/>
+ <value value='2' nick='BOTH'/>
+ </enum>
+ <enum id='org.gnome.shell.extensions.dash-to-panel.appIconHoverAnimationType'>
+ <value value='0' nick='SIMPLE'/>
+ <value value='1' nick='RIPPLE'/>
+ <value value='2' nick='PLANK'/>
+ </enum>
+ <schema path="/org/gnome/shell/extensions/dash-to-panel/" id="org.gnome.shell.extensions.dash-to-panel">
+ <key name="panel-position" enum="org.gnome.shell.extensions.dash-to-panel.position">
+ <default>'BOTTOM'</default>
+ <summary>Panel position (Deprecated)</summary>
+ <description>Panel is shown on the Bottom or Top of the screen.</description>
+ </key>
+ <key name="panel-element-positions-monitors-sync" type="b">
+ <default>true</default>
+ <summary>Sync element positions</summary>
+ <description>Sync panel element positions on all monitors.</description>
+ </key>
+ <key name="panel-positions" type="s">
+ <default>'{}'</default>
+ <summary>Panel positions</summary>
+ <description>Panel positions (JSON).</description>
+ </key>
+ <key name="panel-element-positions" type="s">
+ <default>'{}'</default>
+ <summary>Panel element positions</summary>
+ <description>Panel element positions (JSON).</description>
+ </key>
+ <key type="s" name="panel-lengths">
+ <default>'{}'</default>
+ <summary>Percentages of screen edge for panel to span</summary>
+ <description>Length of the panels, in percent (JSON).</description>
+ </key>
+ <key type="s" name="panel-anchors">
+ <default>'{}'</default>
+ <summary>Positions along screen edge</summary>
+ <description>Where to show the panels if it is not the full length of the screen edge (JSON).</description>
+ </key>
+ <key type="s" name="panel-sizes">
+ <default>'{}'</default>
+ <summary>Panel sizes</summary>
+ <description>Sizes of panels, in pixels.</description>
+ </key>
+ <key type="i" name="panel-size">
+ <default>48</default>
+ <summary>Panel size (Deprecated)</summary>
+ <description>Set the size of the panel.</description>
+ </key>
+ <key type="b" name="desktop-line-use-custom-color">
+ <default>false</default>
+ <summary>Override Show Desktop line color</summary>
+ <description>Replace current Show Desktop button line color</description>
+ </key>
+ <key type="s" name="desktop-line-custom-color">
+ <default>"rgba(200,200,200,0.2)"</default>
+ <summary>Custom Show Desktop line color</summary>
+ <description>Custom Show Desktop button line color</description>
+ </key>
+ <key name="dot-position" enum="org.gnome.shell.extensions.dash-to-panel.position">
+ <default>'BOTTOM'</default>
+ <summary>Dot position</summary>
+ <description>Running indicators are shown on the Bottom or Top of the screen.</description>
+ </key>
+ <key name="dot-style-focused" enum="org.gnome.shell.extensions.dash-to-panel.dotStyle">
+ <default>'METRO'</default>
+ <summary>Style of the running indicator (focused)</summary>
+ <description>Style of the running indicator for the icon for the currently focused application</description>
+ </key>
+ <key name="dot-style-unfocused" enum="org.gnome.shell.extensions.dash-to-panel.dotStyle">
+ <default>'METRO'</default>
+ <summary>Style of the running indicator (unfocused)</summary>
+ <description>Style of the running indicator for the icon for applications which are not currently focused</description>
+ </key>
+ <key type="b" name="dot-color-dominant">
+ <default>false</default>
+ <summary>Running indicator dominant color</summary>
+ <description>Whether to use the app icon's dominant color for .app-well-running-dot</description>
+ </key>
+ <key type="b" name="dot-color-override">
+ <default>false</default>
+ <summary>Running indicator color override</summary>
+ <description>Whether to override the theme background color for .app-well-running-dot</description>
+ </key>
+ <key type="s" name="dot-color-1">
+ <default>"#5294e2"</default>
+ <summary>Color of running indicator (1 window)</summary>
+ <description>Customize the color of the running indicator when one window is running for that application</description>
+ </key>
+ <key type="s" name="dot-color-2">
+ <default>"#5294e2"</default>
+ <summary>Color of running indicator (2 windows)</summary>
+ <description>Customize the color of the running indicator when two windows are running for that application</description>
+ </key>
+ <key type="s" name="dot-color-3">
+ <default>"#5294e2"</default>
+ <summary>Color of running indicator (3 windows)</summary>
+ <description>Customize the color of the running indicator when three windows are running for that application</description>
+ </key>
+ <key type="s" name="dot-color-4">
+ <default>"#5294e2"</default>
+ <summary>Color of running indicator (4+ windows)</summary>
+ <description>Customize the color of the running indicator when four or more windows are running for that application</description>
+ </key>
+ <key type="b" name="dot-color-unfocused-different">
+ <default>false</default>
+ <summary>Unfocused color is different than focused</summary>
+ <description>Whether to apply a 2nd color scheme to the indicator when the app is not focused</description>
+ </key>
+ <key type="s" name="dot-color-unfocused-1">
+ <default>"#5294e2"</default>
+ <summary>Color of unfocused running indicator (1 window)</summary>
+ <description>Customize the color of the unfocused running indicator when one window is running for that application</description>
+ </key>
+ <key type="s" name="dot-color-unfocused-2">
+ <default>"#5294e2"</default>
+ <summary>Color of unfocused running indicator (2 windows)</summary>
+ <description>Customize the color of the unfocused running indicator when two windows are running for that application</description>
+ </key>
+ <key type="s" name="dot-color-unfocused-3">
+ <default>"#5294e2"</default>
+ <summary>Color of unfocused running indicator (3 windows)</summary>
+ <description>Customize the color of the unfocused running indicator when three windows are running for that application</description>
+ </key>
+ <key type="s" name="dot-color-unfocused-4">
+ <default>"#5294e2"</default>
+ <summary>Color of unfocused running indicator (4+ windows)</summary>
+ <description>Customize the color of the unfocused running indicator when four or more windows are running for that application</description>
+ </key>
+ <key type="i" name="dot-size">
+ <default>3</default>
+ <summary>Running indicator height</summary>
+ <description>Height of the running indicator line/diameter of window indicator dots</description>
+ </key>
+ <key type="b" name="focus-highlight">
+ <default>true</default>
+ <summary>Highlight icon of focused application</summary>
+ <description>Whether to highlight the background of the currently focused application's icon</description>
+ </key>
+ <key type="b" name="focus-highlight-dominant">
+ <default>false</default>
+ <summary>Highlight icon dominant color</summary>
+ <description>Base the active window highlight color on that application's icon</description>
+ </key>
+ <key type="s" name="focus-highlight-color">
+ <default>"#EEEEEE"</default>
+ <summary>Color of highlight of focused application</summary>
+ <description>Customize the color of the highlight of the focused application</description>
+ </key>
+ <key type="i" name="focus-highlight-opacity">
+ <default>25</default>
+ <summary>Opacity of highlight of focused application</summary>
+ <description>Customize the opacity of the highlight of the focused application</description>
+ </key>
+ <key type="b" name="stockgs-keep-dash">
+ <default>false</default>
+ <summary>Keep dash</summary>
+ <description>Whether to keep the stock gnome-shell dash while in overview</description>
+ </key>
+ <key type="b" name="stockgs-keep-top-panel">
+ <default>false</default>
+ <summary>Keep top panel</summary>
+ <description>Whether to keep the stock gnome-shell top panel</description>
+ </key>
+ <key type="b" name="stockgs-panelbtn-click-only">
+ <default>false</default>
+ <summary>Panel menu buttons require click</summary>
+ <description>Whether to activate the panel menu buttons on hover or on click</description>
+ </key>
+ <key type="b" name="stockgs-force-hotcorner">
+ <default>false</default>
+ <summary>Force hot corner</summary>
+ <description>Wheter to force having an Activities hot corner on the primary monitor</description>
+ </key>
+ <key type="b" name="taskbar-locked">
+ <default>false</default>
+ <summary>Lock the taskbar</summary>
+ <description>Specifies if the user can modify the taskbar</description>
+ </key>
+ <key type="b" name="trans-use-custom-bg">
+ <default>false</default>
+ <summary>Override theme background color</summary>
+ <description>Replace current theme background color for the panel</description>
+ </key>
+ <key type="s" name="trans-bg-color">
+ <default>"#000"</default>
+ <summary>Custom background color</summary>
+ <description>Custom background color for the panel</description>
+ </key>
+ <key type="b" name="trans-use-custom-opacity">
+ <default>false</default>
+ <summary>Custom background color</summary>
+ <description>Replace current theme background color for the panel</description>
+ </key>
+ <key type="b" name="trans-use-dynamic-opacity">
+ <default>false</default>
+ <summary>Dynamic opacity</summary>
+ <description>Enable dynamic opacity</description>
+ </key>
+ <key type="d" name="trans-panel-opacity">
+ <default>0.4</default>
+ <summary>Panel opacity</summary>
+ <description>Custom opacity for the panel</description>
+ </key>
+ <key name="trans-dynamic-behavior" enum="org.gnome.shell.extensions.dash-to-panel.proximityBehavior">
+ <default>'ALL_WINDOWS'</default>
+ <summary>Dynamic opacity behavior</summary>
+ <description>Dictates which window type affects the panel opacity</description>
+ </key>
+ <key type="i" name="trans-dynamic-distance">
+ <default>20</default>
+ <summary>Distance to change opacity</summary>
+ <description>The distance a window needs to be from the panel to change opacity</description>
+ </key>
+ <key type="d" name="trans-dynamic-anim-target">
+ <default>0.8</default>
+ <summary>Modified panel opacity</summary>
+ <description>Modified opacity for the panel when a window is near</description>
+ </key>
+ <key type="i" name="trans-dynamic-anim-time">
+ <default>300</default>
+ <summary>Opacity change duration</summary>
+ <description>The duration of the animation when the opacity changes</description>
+ </key>
+ <key type="b" name="trans-use-custom-gradient">
+ <default>false</default>
+ <summary>Custom gradient</summary>
+ <description>Replace current theme gradient for the panel</description>
+ </key>
+ <key type="s" name="trans-gradient-top-color">
+ <default>"#000"</default>
+ <summary>Custom gradient top color</summary>
+ <description>Custom gradient top color for the panel</description>
+ </key>
+ <key type="d" name="trans-gradient-top-opacity">
+ <default>0</default>
+ <summary>Custom gradient top opacity</summary>
+ <description>Custom gradient top opacity for the panel</description>
+ </key>
+ <key type="s" name="trans-gradient-bottom-color">
+ <default>"#000"</default>
+ <summary>Custom gradient bottom color</summary>
+ <description>Custom gradient bottom color for the panel</description>
+ </key>
+ <key type="d" name="trans-gradient-bottom-opacity">
+ <default>0.2</default>
+ <summary>Custom gradient bottom opacity</summary>
+ <description>Custom gradient bottom opacity for the panel</description>
+ </key>
+ <key type="b" name="intellihide">
+ <default>false</default>
+ <summary>Intellihide</summary>
+ <description>Whether to intelligently hide the panel</description>
+ </key>
+ <key type="b" name="intellihide-hide-from-windows">
+ <default>false</default>
+ <summary>Only hide from windows</summary>
+ <description>Dictates if the dash should only hide when in conflict with windows</description>
+ </key>
+ <key name="intellihide-behaviour" enum="org.gnome.shell.extensions.dash-to-panel.proximityBehavior">
+ <default>'FOCUSED_WINDOWS'</default>
+ <summary>Intellihide behaviour</summary>
+ <description>Dictates how to intelligently hide the panel</description>
+ </key>
+ <key type="b" name="intellihide-use-pressure">
+ <default>false</default>
+ <summary>Intellihide pressure</summary>
+ <description>To reveal the panel, pressure needs to be applied to the edege of the screen</description>
+ </key>
+ <key type="i" name="intellihide-pressure-threshold">
+ <default>100</default>
+ <summary>Intellihide pressure threshold</summary>
+ <description>The pressure needed to reveal the panel</description>
+ </key>
+ <key type="i" name="intellihide-pressure-time">
+ <default>1000</default>
+ <summary>Intellihide pressure time</summary>
+ <description>The numer of milliseconds that the pressure needs to be applied to reveal the panel</description>
+ </key>
+ <key type="b" name="intellihide-show-in-fullscreen">
+ <default>false</default>
+ <summary>Intellihide pressure</summary>
+ <description>Allow the panel to be revealed while an application is in fullscreen mode</description>
+ </key>
+ <key type="b" name="intellihide-only-secondary">
+ <default>false</default>
+ <summary>Intellihide only secondary</summary>
+ <description>Whether to only hide secondary panels</description>
+ </key>
+ <key type="i" name="intellihide-animation-time">
+ <default>200</default>
+ <summary>Intellihide animation time</summary>
+ <description>The animation time (ms) to hide and reveal the panel</description>
+ </key>
+ <key type="i" name="intellihide-close-delay">
+ <default>400</default>
+ <summary>Intellihide close delay</summary>
+ <description>The delay (ms) before hiding the panel</description>
+ </key>
+ <key type="s" name="intellihide-key-toggle-text">
+ <default>"&lt;Super&gt;i"</default>
+ <summary>Keybinding toggle intellihide</summary>
+ <description>Keybinding to reveal the panel while in intellihide mode</description>
+ </key>
+ <key type="as" name="intellihide-key-toggle">
+ <default><![CDATA[['<Super>i']]]></default>
+ <summary>Keybinding toggle intellihide</summary>
+ <description>Keybinding to reveal the panel while in intellihide mode</description>
+ </key>
+ <key type="i" name="intellihide-enable-start-delay">
+ <default>2000</default>
+ <summary>Intellihide enable start delay</summary>
+ <description>The delay before enabling intellihide on start</description>
+ </key>
+ <key type="s" name="show-apps-icon-file">
+ <default>""</default>
+ <summary>Custom Show Applications icon</summary>
+ <description>Customize the Show Applications icon</description>
+ </key>
+ <key type="i" name="show-apps-icon-side-padding">
+ <default>8</default>
+ <summary>Show Applications icon side padding</summary>
+ <description>Customize the Show Applications icon side padding</description>
+ </key>
+ <key type="b" name="show-apps-override-escape">
+ <default>true</default>
+ <summary>Override escape key</summary>
+ <description>Override the escape key to return to the desktop when entering the overview using the Show Applications button</description>
+ </key>
+ <key type="as" name="show-apps-button-context-menu-commands">
+ <default>[]</default>
+ <summary>Show Apps button context menu commands</summary>
+ <description>Commands to add to the Show Apps button right click menu</description>
+ </key>
+ <key type="as" name="show-apps-button-context-menu-titles">
+ <default>[]</default>
+ <summary>Show Apps button context menu titles</summary>
+ <description>Titles for commands added to Show Apps button right click menu</description>
+ </key>
+ <key type="as" name="panel-context-menu-commands">
+ <default>[]</default>
+ <summary>Panel context menu commands</summary>
+ <description>Commands to add to the panel right click menu</description>
+ </key>
+ <key type="as" name="panel-context-menu-titles">
+ <default>[]</default>
+ <summary>Panel context menu titles</summary>
+ <description>Titles for commands added to panel right click menu</description>
+ </key>
+ <key type="b" name="show-activities-button">
+ <default>false</default>
+ <summary>Show activities button</summary>
+ <description>Show activities button on the left hand side of the taskbar</description>
+ </key>
+ <key type="i" name="showdesktop-button-width">
+ <default>8</default>
+ <summary>Width of show Desktop button</summary>
+ <description>Customize the width of the show Desktop button</description>
+ </key>
+ <key type="b" name="show-showdesktop-hover">
+ <default>false</default>
+ <summary>Show desktop on hover</summary>
+ <description>Show the desktop on mouse hover</description>
+ </key>
+ <key type="i" name="show-showdesktop-delay">
+ <default>1000</default>
+ <summary>Delay show desktop</summary>
+ <description>Delay before showing the desktop</description>
+ </key>
+ <key type="i" name="show-showdesktop-time">
+ <default>300</default>
+ <summary>Show desktop animation time</summary>
+ <description>Window fade animation time when showing the destop</description>
+ </key>
+ <key type="b" name="show-appmenu">
+ <default>false</default>
+ <summary>Show appMenu button</summary>
+ <description>Show appMenu on the right hand side of the panel</description>
+ </key>
+ <key type="b" name="show-window-previews">
+ <default>true</default>
+ <summary>Show window preview</summary>
+ <description>Show preview of running window on hover of app icon</description>
+ </key>
+ <key type="b" name="show-tooltip">
+ <default>true</default>
+ <summary>Show tooltip</summary>
+ <description>Show tooltip on hover of app icon</description>
+ </key>
+ <key type="b" name="show-running-apps">
+ <default>true</default>
+ <summary>Show running apps</summary>
+ <description>Show or hide running application icons in the dash</description>
+ </key>
+ <key type="b" name="show-favorites">
+ <default>true</default>
+ <summary>Show favorites apps</summary>
+ <description>Show or hide favorite application icons in the dash</description>
+ </key>
+ <key type="i" name="show-window-previews-timeout">
+ <default>400</default>
+ <summary>Icon enter display time</summary>
+ <description>Amount of time after entering icon to wait before displaying window preview if icon is not clicked or mouse has not left.</description>
+ </key>
+ <key type="b" name="peek-mode">
+ <default>true</default>
+ <summary>Enable peek mode</summary>
+ <description>Peek a window upon hover for some time</description>
+ </key>
+ <key type="b" name="window-preview-show-title">
+ <default>true</default>
+ <summary>Display title in preview</summary>
+ <description>Display window title in preview</description>
+ </key>
+ <key type="b" name="window-preview-manual-styling">
+ <default>false</default>
+ <summary>Window previews manual styling</summary>
+ <description>This defines if the default window previews styling should be applied</description>
+ </key>
+ <key name="window-preview-title-position" enum="org.gnome.shell.extensions.dash-to-panel.position">
+ <default>'TOP'</default>
+ <summary>Title position</summary>
+ <description>Position of the window title, close button and icon in preview.</description>
+ </key>
+ <key type="s" name="window-preview-title-font-color">
+ <default>"#dddddd"</default>
+ <summary>Window previews title font color</summary>
+ <description>This defines the window preview titles font color.</description>
+ </key>
+ <key type="i" name="window-preview-title-font-size">
+ <default>14</default>
+ <summary>Window previews title font size</summary>
+ <description>This defines the window preview titles font size.</description>
+ </key>
+ <key type="b" name="window-preview-use-custom-icon-size">
+ <default>false</default>
+ <summary>Window previews use custom icon size</summary>
+ <description>Window previews use custom application icon size.</description>
+ </key>
+ <key type="i" name="window-preview-custom-icon-size">
+ <default>16</default>
+ <summary>Window previews custom icon size</summary>
+ <description>Window previews custom application icon size.</description>
+ </key>
+ <key type="i" name="window-preview-animation-time">
+ <default>260</default>
+ <summary>Window previews animation time</summary>
+ <description>This defines the window previews animation time.</description>
+ </key>
+ <key name="window-preview-title-font-weight" enum="org.gnome.shell.extensions.dash-to-panel.fontWeight">
+ <default>'inherit'</default>
+ <summary>Font weight of window preview titles</summary>
+ <description>This defines the font weight of window preview titles. Supported values: inherit (from theme), normal, lighter, bold and bolder.</description>
+ </key>
+ <key type="i" name="window-preview-size">
+ <default>240</default>
+ <summary>Window previews size</summary>
+ <description>Preferred window previews size</description>
+ </key>
+ <key type="b" name="window-preview-fixed-x">
+ <default>false</default>
+ <summary>Fixed aspect ratio X</summary>
+ <description>This defines if the window previews use a fixed aspect ratio X.</description>
+ </key>
+ <key type="b" name="window-preview-fixed-y">
+ <default>true</default>
+ <summary>Fixed aspect ratio Y</summary>
+ <description>This defines if the window previews use a fixed aspect ratio Y.</description>
+ </key>
+ <key type="i" name="window-preview-padding">
+ <default>8</default>
+ <summary>Window previews padding</summary>
+ <description>The padding of the window previews</description>
+ </key>
+ <key type="i" name="window-preview-aspect-ratio-x">
+ <default>16</default>
+ <summary>Aspect ratio X</summary>
+ <description>The window previews respected aspect ratio X.</description>
+ </key>
+ <key type="i" name="window-preview-aspect-ratio-y">
+ <default>9</default>
+ <summary>Aspect ratio Y</summary>
+ <description>The window previews respected aspect ratio Y.</description>
+ </key>
+ <key type="b" name="window-preview-hide-immediate-click">
+ <default>false</default>
+ <summary>Immediate hide on icon click</summary>
+ <description>The window previews immediately hide when an application icon is clicked.</description>
+ </key>
+ <key type="b" name="isolate-workspaces">
+ <default>false</default>
+ <summary>Provide workspace isolation</summary>
+ <description>Dash shows only windows from the current workspace</description>
+ </key>
+ <key type="b" name="overview-click-to-exit">
+ <default>false</default>
+ <summary>Close overview by clicking in empty space</summary>
+ <description>Close overview or app grid by clicking in empty space</description>
+ </key>
+ <key type="b" name="hide-overview-on-startup">
+ <default>false</default>
+ <summary>Hide overview on startup</summary>
+ <description>Hide overview on startup, which would be shown by default at gnome startup.</description>
+ </key>
+ <key type="b" name="group-apps">
+ <default>true</default>
+ <summary>Group applications</summary>
+ <description>Dash groups the application instances under the same icon</description>
+ </key>
+ <key type="i" name="group-apps-label-font-size">
+ <default>14</default>
+ <summary>Application title font size</summary>
+ <description>When the applications are ungrouped, this defines the application titles font size.</description>
+ </key>
+ <key name="group-apps-label-font-weight" enum="org.gnome.shell.extensions.dash-to-panel.fontWeight">
+ <default>'inherit'</default>
+ <summary>Font weight of application titles</summary>
+ <description>When the applications are ungrouped, this defines font weight of application titles. Supported values: inherit (from theme), normal, lighter, bold and bolder.</description>
+ </key>
+ <key type="s" name="group-apps-label-font-color">
+ <default>"#dddddd"</default>
+ <summary>Application title font color</summary>
+ <description>When the applications are ungrouped, this defines the application titles font color.</description>
+ </key>
+ <key type="s" name="group-apps-label-font-color-minimized">
+ <default>"#dddddd"</default>
+ <summary>Minimized application title font color</summary>
+ <description>When the applications are ungrouped, this defines the titles font color for minimized applications.</description>
+ </key>
+ <key type="i" name="group-apps-label-max-width">
+ <default>160</default>
+ <summary>Application title max width</summary>
+ <description>When the applications are ungrouped, this defines the application titles maximum width.</description>
+ </key>
+ <key type="b" name="group-apps-use-fixed-width">
+ <default>true</default>
+ <summary>Use a fixed width for the application titles</summary>
+ <description>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.</description>
+ </key>
+ <key type="b" name="group-apps-underline-unfocused">
+ <default>true</default>
+ <summary>Display running indicators on unfocused applications</summary>
+ <description>When the applications are ungrouped, this defines if running applications should display an indicator.</description>
+ </key>
+ <key type="b" name="group-apps-use-launchers">
+ <default>false</default>
+ <summary>Use favorite icons as application launchers</summary>
+ <description>When the applications are ungrouped, this defines if running applications stay separate from the favorite icons.</description>
+ </key>
+ <key type="i" name="primary-monitor">
+ <default>0</default>
+ <summary>Primary monitor index</summary>
+ <description>Specifies the index of the primary monitor.</description>
+ </key>
+ <key type="b" name="multi-monitors">
+ <default>true</default>
+ <summary>Display panels on all monitors</summary>
+ <description>Specifies if a panel is shown on every monitors</description>
+ </key>
+ <key type="ai" name="available-monitors">
+ <default>[]</default>
+ <summary>Available monitors</summary>
+ <description>Available gnome-shell (Mutter) monitors, internal use</description>
+ </key>
+ <key type="b" name="isolate-monitors">
+ <default>false</default>
+ <summary>Provide monitor isolation</summary>
+ <description>Dash shows only windows from the current monitor</description>
+ </key>
+ <key type="b" name="show-favorites-all-monitors">
+ <default>true</default>
+ <summary>Display the favorites on all monitors</summary>
+ <description>Specifies if every panel should display the favorite applications. If false, the favorite appplications are only displayed on the primary monitor.</description>
+ </key>
+ <key type="b" name="customize-click">
+ <default>true</default>
+ <summary>Customize click behaviour</summary>
+ <description>Customize action on various mouse events</description>
+ </key>
+ <key type="b" name="minimize-shift">
+ <default>true</default>
+ <summary>Minimize on shift+click</summary>
+ </key>
+ <key type="b" name="activate-single-window">
+ <default>true</default>
+ <summary>Activate only one window</summary>
+ </key>
+ <key name="click-action" enum="org.gnome.shell.extensions.dash-to-panel.clickAction">
+ <default>'CYCLE-MIN'</default>
+ <summary>Action when clicking on a running app</summary>
+ <description>Set the action that is executed when clicking on the icon of a running application</description>
+ </key>
+ <key name="shift-click-action" enum="org.gnome.shell.extensions.dash-to-panel.clickAction">
+ <default>'MINIMIZE'</default>
+ <summary>Action when shift+clicking on a running app</summary>
+ <description>Set the action that is executed when shift+clicking on the icon of a running application</description>
+ </key>
+ <key name="middle-click-action" enum="org.gnome.shell.extensions.dash-to-panel.clickAction">
+ <default>'LAUNCH'</default>
+ <summary>Action when clicking on a running app</summary>
+ <description>Set the action that is executed when middle-clicking on the icon of a running application</description>
+ </key>
+ <key name="shift-middle-click-action" enum="org.gnome.shell.extensions.dash-to-panel.clickAction">
+ <default>'LAUNCH'</default>
+ <summary>Action when clicking on a running app</summary>
+ <description>Set the action that is executed when shift+middle-clicking on the icon of a running application</description>
+ </key>
+ <key name="scroll-panel-action" enum="org.gnome.shell.extensions.dash-to-panel.scrollAction">
+ <default>'SWITCH_WORKSPACE'</default>
+ <summary>Action when scrolling over the panel</summary>
+ <description>Set the action that is executed when scrolling over the panel</description>
+ </key>
+ <key type="i" name="scroll-panel-delay">
+ <default>0</default>
+ <summary>Delay between panel mouse scroll events</summary>
+ <description>Set the minimum delay between panel mouse scroll events</description>
+ </key>
+ <key type="b" name="scroll-panel-show-ws-popup">
+ <default>true</default>
+ <summary>Show the workspace switch head-up when workspace is changed by scrolling on the panel</summary>
+ </key>
+ <key name="scroll-icon-action" enum="org.gnome.shell.extensions.dash-to-panel.scrollAction">
+ <default>'CYCLE_WINDOWS'</default>
+ <summary>Action when scrolling over a running app</summary>
+ <description>Set the action that is executed when scrolling over a running application</description>
+ </key>
+ <key type="i" name="scroll-icon-delay">
+ <default>0</default>
+ <summary>Delay between icon mouse scroll events</summary>
+ <description>Set the minimum delay between icon mouse scroll events</description>
+ </key>
+ <key type="i" name="leave-timeout">
+ <default>100</default>
+ <summary>Icon leave preview timeout</summary>
+ <description>Amount of time to leave preview windows open when the mouse has left the application's icon.</description>
+ </key>
+ <key type="i" name="enter-peek-mode-timeout">
+ <default>500</default>
+ <summary>Enter window peeking mode timeout</summary>
+ <description>Amount of time of inactivity to enter the window peeking mode when the mouse has entered a window preview.</description>
+ </key>
+ <key type="i" name="peek-mode-opacity">
+ <default>40</default>
+ <summary>Window peeking mode opacity</summary>
+ <description>All windows except for the peeked one have their opacity set to the same value.</description>
+ </key>
+ <key type="b" name="preview-middle-click-close">
+ <default>true</default>
+ <summary>Middle click preview to close window</summary>
+ <description>Middle click on the window preview to close that window</description>
+ </key>
+ <key type="b" name="preview-use-custom-opacity">
+ <default>true</default>
+ <summary>Window previews use custom opacity</summary>
+ <description>Window previews background use a different opacity from the panel</description>
+ </key>
+ <key type="i" name="preview-custom-opacity">
+ <default>80</default>
+ <summary>Window previews background opacity</summary>
+ <description>Window previews use this custom background opacity.</description>
+ </key>
+ <key type="i" name="tray-size">
+ <default>0</default>
+ <summary>Tray font size</summary>
+ <description>Set the size of the tray font. (0 for default)</description>
+ </key>
+ <key type="i" name="leftbox-size">
+ <default>0</default>
+ <summary>Leftbox font size</summary>
+ <description>Set the size of the leftBox font. (0 for default)</description>
+ </key>
+ <key type="i" name="appicon-margin">
+ <default>8</default>
+ <summary>App icon margin</summary>
+ <description>Set the margin for application icons in the embedded dash.</description>
+ </key>
+ <key type="i" name="appicon-padding">
+ <default>4</default>
+ <summary>App icon padding</summary>
+ <description>Set the padding for application icons in the embedded dash.</description>
+ </key>
+ <key type="i" name="tray-padding">
+ <default>-1</default>
+ <summary>Tray item padding</summary>
+ <description>Set the size of the tray padding. (-1 for default)</description>
+ </key>
+ <key type="i" name="leftbox-padding">
+ <default>-1</default>
+ <summary>Leftbox item padding</summary>
+ <description>Set the size of the leftBox padding. (-1 for default)</description>
+ </key>
+ <key type="i" name="status-icon-padding">
+ <default>-1</default>
+ <summary>Status icon padding</summary>
+ <description>Set the size of the aggregate (status) menu icon padding. (-1 for default)</description>
+ </key>
+ <key type="b" name="animate-app-switch">
+ <default>true</default>
+ <summary>Animate running indicator when open/closing/switching applications</summary>
+ </key>
+ <key type="b" name="animate-window-launch">
+ <default>true</default>
+ <summary>Animate when new window launched</summary>
+ </key>
+ <key type="b" name="animate-appicon-hover">
+ <default>false</default>
+ <summary>Animate app icon on hover</summary>
+ </key>
+ <key name="animate-appicon-hover-animation-type" enum="org.gnome.shell.extensions.dash-to-panel.appIconHoverAnimationType">
+ <default>'SIMPLE'</default>
+ <summary>App icon hover animation type</summary>
+ </key>
+ <key type="a{sd}" name="animate-appicon-hover-animation-convexity">
+ <default>{'RIPPLE':2,'PLANK':1}</default>
+ <summary>App icon hover animation curve convexity (1 is linear, more is convex, less is concave)</summary>
+ </key>
+ <key type="a{su}" name="animate-appicon-hover-animation-duration">
+ <default>{'SIMPLE':160,'RIPPLE':130,'PLANK':100}</default>
+ <summary>App icon hover animation duration in milliseconds</summary>
+ </key>
+ <key type="a{si}" name="animate-appicon-hover-animation-extent">
+ <default>{'RIPPLE':4,'PLANK':4}</default>
+ <summary>App icon hover animation extent (maximum number of animated icons)</summary>
+ </key>
+ <key type="a{si}" name="animate-appicon-hover-animation-rotation">
+ <default>{'SIMPLE':0,'RIPPLE':10,'PLANK':0}</default>
+ <summary>App icon hover animation rotation in degrees</summary>
+ </key>
+ <key type="a{sd}" name="animate-appicon-hover-animation-travel">
+ <default>{'SIMPLE':0.30,'RIPPLE':0.40,'PLANK':0}</default>
+ <summary>App icon hover animation travel translation in relation to the app icon size</summary>
+ </key>
+ <key type="a{sd}" name="animate-appicon-hover-animation-zoom">
+ <default>{'SIMPLE':1,'RIPPLE':1.25,'PLANK':2}</default>
+ <summary>App icon hover animation zoom scale in relation to the app icon size</summary>
+ </key>
+ <key type="b" name="secondarymenu-contains-appmenu">
+ <default>true</default>
+ <summary>Integrate items from the gnome appmenu into the right click menu</summary>
+ </key>
+ <key type="b" name="secondarymenu-contains-showdetails">
+ <default>false</default>
+ <summary>Display Show Details to open Gnome Software from right click menu</summary>
+ </key>
+ <key type="s" name="shortcut-text">
+ <default>"&lt;Super&gt;q"</default>
+ <summary>Keybinding to show the dock and the number overlay.</summary>
+ <description>Behavior depends on hotkeys-show-dock and hotkeys-overlay.</description>
+ </key>
+ <key type="as" name="shortcut">
+ <default><![CDATA[['<Super>q']]]></default>
+ <summary>Keybinding to show the dock and the number overlay.</summary>
+ <description>Behavior depends on hotkeys-show-dock and hotkeys-overlay.</description>
+ </key>
+ <key type="i" name="shortcut-timeout">
+ <default>2000</default>
+ <summary>Timeout to hide the dock, in seconds</summary>
+ <description>Sets the time duration before the dock is hidden again.</description>
+ </key>
+ <key type="i" name="overlay-timeout">
+ <default>750</default>
+ <summary>Timeout to hide the dock, in seconds</summary>
+ <description>Sets the time duration before the dock is hidden again.</description>
+ </key>
+ <key name="hotkeys-overlay-combo" enum="org.gnome.shell.extensions.dash-to-panel.hotkeyOverlay">
+ <default>'TEMPORARILY'</default>
+ <summary>Transitivity of the number overlay</summary>
+ <description>You can choose between NEVER, TEMPORARILY and ALWAYS.</description>
+ </key>
+ <key type="b" name="hot-keys">
+ <default>false</default>
+ <summary>Super Hot-Keys</summary>
+ <description>Launch and switch between dash items using Super+(0-9)</description>
+ </key>
+ <key name="hotkey-prefix-text" enum="org.gnome.shell.extensions.dash-to-panel.hotkeyPrefix">
+ <default>'Super'</default>
+ <summary>Prefix to use for hotkeys</summary>
+ <description>You can choose between Super or SuperAlt as the prefix for hotkeys.</description>
+ </key>
+ <key type="b" name="shortcut-previews">
+ <default>false</default>
+ <summary>Show window previews</summary>
+ <description>When multiple instances of the application are available, show their window previews</description>
+ </key>
+ <key name="shortcut-num-keys" enum="org.gnome.shell.extensions.dash-to-panel.hotkeyNumberKeys">
+ <default>'BOTH'</default>
+ <summary>Hotkeys number keys</summary>
+ <description>Which number keys are used for the hotkeys</description>
+ </key>
+ <key name="app-ctrl-hotkey-1" type="as">
+ <default><![CDATA[['<Ctrl><Super>1']]]></default>
+ <summary>Keybinding to launch 1st dash app</summary>
+ <description>
+ Keybinding to launch 1st app.
+ </description>
+ </key>
+ <key name="app-ctrl-hotkey-2" type="as">
+ <default><![CDATA[['<Ctrl><Super>2']]]></default>
+ <summary>Keybinding to launch 2nd dash app</summary>
+ <description>
+ Keybinding to launch 2nd app.
+ </description>
+ </key>
+ <key name="app-ctrl-hotkey-3" type="as">
+ <default><![CDATA[['<Ctrl><Super>3']]]></default>
+ <summary>Keybinding to launch 3rd dash app</summary>
+ <description>
+ Keybinding to launch 3rd app.
+ </description>
+ </key>
+ <key name="app-ctrl-hotkey-4" type="as">
+ <default><![CDATA[['<Ctrl><Super>4']]]></default>
+ <summary>Keybinding to launch 4th dash app</summary>
+ <description>
+ Keybinding to launch 4th app.
+ </description>
+ </key>
+ <key name="app-ctrl-hotkey-5" type="as">
+ <default><![CDATA[['<Ctrl><Super>5']]]></default>
+ <summary>Keybinding to launch 5th dash app</summary>
+ <description>
+ Keybinding to launch 5th app.
+ </description>
+ </key>
+ <key name="app-ctrl-hotkey-6" type="as">
+ <default><![CDATA[['<Ctrl><Super>6']]]></default>
+ <summary>Keybinding to launch 6th dash app</summary>
+ <description>
+ Keybinding to launch 6th app.
+ </description>
+ </key>
+ <key name="app-ctrl-hotkey-7" type="as">
+ <default><![CDATA[['<Ctrl><Super>7']]]></default>
+ <summary>Keybinding to launch 7th dash app</summary>
+ <description>
+ Keybinding to launch 7th app.
+ </description>
+ </key>
+ <key name="app-ctrl-hotkey-8" type="as">
+ <default><![CDATA[['<Ctrl><Super>8']]]></default>
+ <summary>Keybinding to launch 8th dash app</summary>
+ <description>
+ Keybinding to launch 8th app.
+ </description>
+ </key>
+ <key name="app-ctrl-hotkey-9" type="as">
+ <default><![CDATA[['<Ctrl><Super>9']]]></default>
+ <summary>Keybinding to launch 9th dash app</summary>
+ <description>
+ Keybinding to launch 9th app.
+ </description>
+ </key>
+ <key name="app-ctrl-hotkey-10" type="as">
+ <default><![CDATA[['<Ctrl><Super>0']]]></default>
+ <summary>Keybinding to launch 10th dash app</summary>
+ <description>
+ Keybinding to launch 10th app.
+ </description>
+ </key>
+ <key name="app-shift-hotkey-1" type="as">
+ <default><![CDATA[['<Shift><Super>1']]]></default>
+ <summary>Keybinding to trigger 1st dash app with shift behavior</summary>
+ <description>
+ Keybinding to trigger 1st app with shift behavior.
+ </description>
+ </key>
+ <key name="app-shift-hotkey-2" type="as">
+ <default><![CDATA[['<Shift><Super>2']]]></default>
+ <summary>Keybinding to trigger 2nd dash app with shift behavior</summary>
+ <description>
+ Keybinding to trigger 2nd app with shift behavior.
+ </description>
+ </key>
+ <key name="app-shift-hotkey-3" type="as">
+ <default><![CDATA[['<Shift><Super>3']]]></default>
+ <summary>Keybinding to trigger 3rd dash app with shift behavior</summary>
+ <description>
+ Keybinding to trigger 3rd app with shift behavior.
+ </description>
+ </key>
+ <key name="app-shift-hotkey-4" type="as">
+ <default><![CDATA[['<Shift><Super>4']]]></default>
+ <summary>Keybinding to trigger 4th dash app with shift behavior</summary>
+ <description>
+ Keybinding to trigger 4th app with shift behavior.
+ </description>
+ </key>
+ <key name="app-shift-hotkey-5" type="as">
+ <default><![CDATA[['<Shift><Super>5']]]></default>
+ <summary>Keybinding to trigger 5th dash app with shift behavior</summary>
+ <description>
+ Keybinding to trigger 5th app with shift behavior.
+ </description>
+ </key>
+ <key name="app-shift-hotkey-6" type="as">
+ <default><![CDATA[['<Shift><Super>6']]]></default>
+ <summary>Keybinding to trigger 6th dash app with shift behavior</summary>
+ <description>
+ Keybinding to trigger 6th app with shift behavior.
+ </description>
+ </key>
+ <key name="app-shift-hotkey-7" type="as">
+ <default><![CDATA[['<Shift><Super>7']]]></default>
+ <summary>Keybinding to trigger 7th dash app with shift behavior</summary>
+ <description>
+ Keybinding to trigger 7th app with shift behavior.
+ </description>
+ </key>
+ <key name="app-shift-hotkey-8" type="as">
+ <default><![CDATA[['<Shift><Super>8']]]></default>
+ <summary>Keybinding to trigger 8th dash app with shift behavior</summary>
+ <description>
+ Keybinding to trigger 8th app with shift behavior.
+ </description>
+ </key>
+ <key name="app-shift-hotkey-9" type="as">
+ <default><![CDATA[['<Shift><Super>9']]]></default>
+ <summary>Keybinding to trigger 9th dash app with shift behavior</summary>
+ <description>
+ Keybinding to trigger 9th app with shift behavior.
+ </description>
+ </key>
+ <key name="app-shift-hotkey-10" type="as">
+ <default><![CDATA[['<Shift><Super>0']]]></default>
+ <summary>Keybinding to trigger 10th dash app with shift behavior</summary>
+ <description>
+ Keybinding to trigger 10th app with shift behavior.
+ </description>
+ </key>
+ <key name="app-hotkey-1" type="as">
+ <default><![CDATA[['<Super>1']]]></default>
+ <summary>Keybinding to trigger 1st dash app</summary>
+ <description>
+ Keybinding to either show or launch the 1st application in the dash.
+ </description>
+ </key>
+ <key name="app-hotkey-2" type="as">
+ <default><![CDATA[['<Super>2']]]></default>
+ <summary>Keybinding to trigger 2nd dash app</summary>
+ <description>
+ Keybinding to either show or launch the 2nd application in the dash.
+ </description>
+ </key>
+ <key name="app-hotkey-3" type="as">
+ <default><![CDATA[['<Super>3']]]></default>
+ <summary>Keybinding to trigger 3rd dash app</summary>
+ <description>
+ Keybinding to either show or launch the 3rd application in the dash.
+ </description>
+ </key>
+ <key name="app-hotkey-4" type="as">
+ <default><![CDATA[['<Super>4']]]></default>
+ <summary>Keybinding to trigger 4th dash app</summary>
+ <description>
+ Keybinding to either show or launch the 4th application in the dash.
+ </description>
+ </key>
+ <key name="app-hotkey-5" type="as">
+ <default><![CDATA[['<Super>5']]]></default>
+ <summary>Keybinding to trigger 5th dash app</summary>
+ <description>
+ Keybinding to either show or launch the 5th application in the dash.
+ </description>
+ </key>
+ <key name="app-hotkey-6" type="as">
+ <default><![CDATA[['<Super>6']]]></default>
+ <summary>Keybinding to trigger 6th dash app</summary>
+ <description>
+ Keybinding to either show or launch the 6th application in the dash.
+ </description>
+ </key>
+ <key name="app-hotkey-7" type="as">
+ <default><![CDATA[['<Super>7']]]></default>
+ <summary>Keybinding to trigger 7th dash app</summary>
+ <description>
+ Keybinding to either show or launch the 7th application in the dash.
+ </description>
+ </key>
+ <key name="app-hotkey-8" type="as">
+ <default><![CDATA[['<Super>8']]]></default>
+ <summary>Keybinding to trigger 8th dash app</summary>
+ <description>
+ Keybinding to either show or launch the 8th application in the dash.
+ </description>
+ </key>
+ <key name="app-hotkey-9" type="as">
+ <default><![CDATA[['<Super>9']]]></default>
+ <summary>Keybinding to trigger 9th dash app</summary>
+ <description>
+ Keybinding to either show or launch the 9th application in the dash.
+ </description>
+ </key>
+ <key name="app-hotkey-10" type="as">
+ <default><![CDATA[['<Super>0']]]></default>
+ <summary>Keybinding to trigger 10th dash app</summary>
+ <description>
+ Keybinding to either show or launch the 10th application in the dash.
+ </description>
+ </key>
+ <key name="app-ctrl-hotkey-kp-1" type="as">
+ <default><![CDATA[['<Ctrl><Super>KP_1']]]></default>
+ <summary>Keybinding to launch 1st dash app</summary>
+ <description>
+ Keybinding to launch 1st app.
+ </description>
+ </key>
+ <key name="app-ctrl-hotkey-kp-2" type="as">
+ <default><![CDATA[['<Ctrl><Super>KP_2']]]></default>
+ <summary>Keybinding to launch 2nd dash app</summary>
+ <description>
+ Keybinding to launch 2nd app.
+ </description>
+ </key>
+ <key name="app-ctrl-hotkey-kp-3" type="as">
+ <default><![CDATA[['<Ctrl><Super>KP_3']]]></default>
+ <summary>Keybinding to launch 3rd dash app</summary>
+ <description>
+ Keybinding to launch 3rd app.
+ </description>
+ </key>
+ <key name="app-ctrl-hotkey-kp-4" type="as">
+ <default><![CDATA[['<Ctrl><Super>KP_4']]]></default>
+ <summary>Keybinding to launch 4th dash app</summary>
+ <description>
+ Keybinding to launch 4th app.
+ </description>
+ </key>
+ <key name="app-ctrl-hotkey-kp-5" type="as">
+ <default><![CDATA[['<Ctrl><Super>KP_5']]]></default>
+ <summary>Keybinding to launch 5th dash app</summary>
+ <description>
+ Keybinding to launch 5th app.
+ </description>
+ </key>
+ <key name="app-ctrl-hotkey-kp-6" type="as">
+ <default><![CDATA[['<Ctrl><Super>KP_6']]]></default>
+ <summary>Keybinding to launch 6th dash app</summary>
+ <description>
+ Keybinding to launch 6th app.
+ </description>
+ </key>
+ <key name="app-ctrl-hotkey-kp-7" type="as">
+ <default><![CDATA[['<Ctrl><Super>KP_7']]]></default>
+ <summary>Keybinding to launch 7th dash app</summary>
+ <description>
+ Keybinding to launch 7th app.
+ </description>
+ </key>
+ <key name="app-ctrl-hotkey-kp-8" type="as">
+ <default><![CDATA[['<Ctrl><Super>KP_8']]]></default>
+ <summary>Keybinding to launch 8th dash app</summary>
+ <description>
+ Keybinding to launch 8th app.
+ </description>
+ </key>
+ <key name="app-ctrl-hotkey-kp-9" type="as">
+ <default><![CDATA[['<Ctrl><Super>KP_9']]]></default>
+ <summary>Keybinding to launch 9th dash app</summary>
+ <description>
+ Keybinding to launch 9th app.
+ </description>
+ </key>
+ <key name="app-ctrl-hotkey-kp-10" type="as">
+ <default><![CDATA[['<Ctrl><Super>KP_0']]]></default>
+ <summary>Keybinding to launch 10th dash app</summary>
+ <description>
+ Keybinding to launch 10th app.
+ </description>
+ </key>
+ <key name="app-shift-hotkey-kp-1" type="as">
+ <default><![CDATA[['<Shift><Super>KP_1']]]></default>
+ <summary>Keybinding to trigger 1st dash app with shift behavior</summary>
+ <description>
+ Keybinding to trigger 1st app with shift behavior.
+ </description>
+ </key>
+ <key name="app-shift-hotkey-kp-2" type="as">
+ <default><![CDATA[['<Shift><Super>KP_2']]]></default>
+ <summary>Keybinding to trigger 2nd dash app with shift behavior</summary>
+ <description>
+ Keybinding to trigger 2nd app with shift behavior.
+ </description>
+ </key>
+ <key name="app-shift-hotkey-kp-3" type="as">
+ <default><![CDATA[['<Shift><Super>KP_3']]]></default>
+ <summary>Keybinding to trigger 3rd dash app with shift behavior</summary>
+ <description>
+ Keybinding to trigger 3rd app with shift behavior.
+ </description>
+ </key>
+ <key name="app-shift-hotkey-kp-4" type="as">
+ <default><![CDATA[['<Shift><Super>KP_4']]]></default>
+ <summary>Keybinding to trigger 4th dash app with shift behavior</summary>
+ <description>
+ Keybinding to trigger 4th app with shift behavior.
+ </description>
+ </key>
+ <key name="app-shift-hotkey-kp-5" type="as">
+ <default><![CDATA[['<Shift><Super>KP_5']]]></default>
+ <summary>Keybinding to trigger 5th dash app with shift behavior</summary>
+ <description>
+ Keybinding to trigger 5th app with shift behavior.
+ </description>
+ </key>
+ <key name="app-shift-hotkey-kp-6" type="as">
+ <default><![CDATA[['<Shift><Super>KP_6']]]></default>
+ <summary>Keybinding to trigger 6th dash app with shift behavior</summary>
+ <description>
+ Keybinding to trigger 6th app with shift behavior.
+ </description>
+ </key>
+ <key name="app-shift-hotkey-kp-7" type="as">
+ <default><![CDATA[['<Shift><Super>KP_7']]]></default>
+ <summary>Keybinding to trigger 7th dash app with shift behavior</summary>
+ <description>
+ Keybinding to trigger 7th app with shift behavior.
+ </description>
+ </key>
+ <key name="app-shift-hotkey-kp-8" type="as">
+ <default><![CDATA[['<Shift><Super>KP_8']]]></default>
+ <summary>Keybinding to trigger 8th dash app with shift behavior</summary>
+ <description>
+ Keybinding to trigger 8th app with shift behavior.
+ </description>
+ </key>
+ <key name="app-shift-hotkey-kp-9" type="as">
+ <default><![CDATA[['<Shift><Super>KP_9']]]></default>
+ <summary>Keybinding to trigger 9th dash app with shift behavior</summary>
+ <description>
+ Keybinding to trigger 9th app with shift behavior.
+ </description>
+ </key>
+ <key name="app-shift-hotkey-kp-10" type="as">
+ <default><![CDATA[['<Shift><Super>KP_0']]]></default>
+ <summary>Keybinding to trigger 10th dash app with shift behavior</summary>
+ <description>
+ Keybinding to trigger 10th app with shift behavior.
+ </description>
+ </key>
+ <key name="app-hotkey-kp-1" type="as">
+ <default><![CDATA[['<Super>KP_1']]]></default>
+ <summary>Keybinding to trigger 1st dash app</summary>
+ <description>
+ Keybinding to either show or launch the 1st application in the dash.
+ </description>
+ </key>
+ <key name="app-hotkey-kp-2" type="as">
+ <default><![CDATA[['<Super>KP_2']]]></default>
+ <summary>Keybinding to trigger 2nd dash app</summary>
+ <description>
+ Keybinding to either show or launch the 2nd application in the dash.
+ </description>
+ </key>
+ <key name="app-hotkey-kp-3" type="as">
+ <default><![CDATA[['<Super>KP_3']]]></default>
+ <summary>Keybinding to trigger 3rd dash app</summary>
+ <description>
+ Keybinding to either show or launch the 3rd application in the dash.
+ </description>
+ </key>
+ <key name="app-hotkey-kp-4" type="as">
+ <default><![CDATA[['<Super>KP_4']]]></default>
+ <summary>Keybinding to trigger 4th dash app</summary>
+ <description>
+ Keybinding to either show or launch the 4th application in the dash.
+ </description>
+ </key>
+ <key name="app-hotkey-kp-5" type="as">
+ <default><![CDATA[['<Super>KP_5']]]></default>
+ <summary>Keybinding to trigger 5th dash app</summary>
+ <description>
+ Keybinding to either show or launch the 5th application in the dash.
+ </description>
+ </key>
+ <key name="app-hotkey-kp-6" type="as">
+ <default><![CDATA[['<Super>KP_6']]]></default>
+ <summary>Keybinding to trigger 6th dash app</summary>
+ <description>
+ Keybinding to either show or launch the 6th application in the dash.
+ </description>
+ </key>
+ <key name="app-hotkey-kp-7" type="as">
+ <default><![CDATA[['<Super>KP_7']]]></default>
+ <summary>Keybinding to trigger 7th dash app</summary>
+ <description>
+ Keybinding to either show or launch the 7th application in the dash.
+ </description>
+ </key>
+ <key name="app-hotkey-kp-8" type="as">
+ <default><![CDATA[['<Super>KP_8']]]></default>
+ <summary>Keybinding to trigger 8th dash app</summary>
+ <description>
+ Keybinding to either show or launch the 8th application in the dash.
+ </description>
+ </key>
+ <key name="app-hotkey-kp-9" type="as">
+ <default><![CDATA[['<Super>KP_9']]]></default>
+ <summary>Keybinding to trigger 9th dash app</summary>
+ <description>
+ Keybinding to either show or launch the 9th application in the dash.
+ </description>
+ </key>
+ <key name="app-hotkey-kp-10" type="as">
+ <default><![CDATA[['<Super>KP_0']]]></default>
+ <summary>Keybinding to trigger 10th dash app</summary>
+ <description>
+ Keybinding to either show or launch the 10th application in the dash.
+ </description>
+ </key>
+ <key type="b" name="progress-show-bar">
+ <default>true</default>
+ <summary>Show progress bar on app icon</summary>
+ <description>Whether to show progress bar overlay on app icon, for supported applications.</description>
+ </key>
+ <key type="b" name="progress-show-count">
+ <default>true</default>
+ <summary>Show badge count on app icon</summary>
+ <description>Whether to show badge count overlay on app icon, for supported applications.</description>
+ </key>
+ </schema>
+</schemalist>
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 <http://www.gnu.org/licenses/>.
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ *
+ * 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<span size="xx-small">‧‧</span>\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 <http://www.gnu.org/licenses/>.
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+
+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 <http://www.gnu.org/licenses/>.
+ */
+
+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 <http://www.gnu.org/licenses/>.
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ *
+ *
+ * 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 = '<Super>';
+ else if (hotkeyPrefix == 'SuperAlt')
+ hotkeyPrefix = '<Super><Alt>';
+ let [, mods] = Gtk.accelerator_parse(hotkeyPrefix);
+ let [, shift_mods] = Gtk.accelerator_parse('<Shift>' + hotkeyPrefix);
+ let [, ctrl_mods] = Gtk.accelerator_parse('<Ctrl>' + 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 <Shift>
+ 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 <Control>
+ 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 <http://www.gnu.org/licenses/>.
+ *
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+
+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 <http://www.gnu.org/licenses/>.
+ *
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ *
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+
+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 <http://www.gnu.org/licenses/>.
+ *
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+
+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ý <marek@manet.cz>, 2018.
# Milan Zink <zeten30@gmail.com>, 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 <zeten30@gmail.com>, 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 <zeten30@gmail.com>\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 <i>Applications</i> 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 <i>Show Applications</i>."
-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 ""
"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
-"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>"
+"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>"
msgstr ""
+"#-#-#-#-# cs.po (gnome-shell-extensions) #-#-#-#-#\n"
"<span size=\"small\">Na tento program NEJSOU POSKYTOVÁNY ZÁRUKY.\n"
"Podrobněji viz <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0."
-"html\">GNU General Public License, verze 2 nebo pozdější</a>.</span>"
+"html\">GNU General Public License, verze 2 nebo pozdější</a>.</span>\n"
+"#-#-#-#-# cs.po #-#-#-#-#\n"
+"<span size=\"small\">Tento program je nabízen bez jakýchkoli záruk.\n"
+"Přečtěte si <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0."
+"html\">GNU General Public License, version 2 nebo novější verze</a>.</span>"
-#: 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: <Shift>, <Ctrl>, <Alt>, <Super>"
msgstr "Syntaxe: <Shift>, <Ctrl>, <Alt>, <Super>"
@@ -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 <i>aplikací</i>"
+
+#: 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 <i>AppMenu</i> items"
+msgstr "Zobrazit položky menu <i>aplikace</i>"
+
+#: Settings.ui.h:20
+msgid "<i>Show Details</i> menu item"
+msgstr "Zobrazit menu <i>Detail</i>"
+
+#: 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. <Super>i"
+msgstr "např. <Super>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. <Super>q"
+msgstr "např: <Super>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 <i>Activities</i> button"
+msgstr "Zobrazit tlačítko aktivit"
+
+#: Settings.ui.h:187
+msgid "Show <i>Desktop</i> button"
+msgstr "Zobrazit tlačítko plochy"
+
+#: Settings.ui.h:188
+msgid "Show <i>AppMenu</i> 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 <i>Gnome Tweak Tool</i>"
+
+#: 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 ""
+"<span weight=\"bold\" color=\"#B42B30\">Be aware, these official Dash to "
+"Panel releases might not be reviewed yet on extensions.gnome.org!</span> <a "
+"href=\"https://extensions.gnome.org/about/\">Read more</a>"
+msgstr ""
+"<span weight=\"bold\" color=\"#B42B30\">Pozor, nové verze nemusím být ještě "
+"schváleny na portálu extensions.gnome.org!</span> <a href=\"https://"
+"extensions.gnome.org/about/\">Dozvědět se víc</a>"
+
#~ 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 <mario.blaettermann@gmail.com>, 2018.
# rugk <rugk+i18n@posteo.de>, 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 <EMAIL@ADDRESS>, 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 <jonatan_zeidler@gmx.de>\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: <Shift>, <Ctrl>, <Alt>, <Super>"
-msgstr "Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr ""
+"#-#-#-#-# de.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"Syntax: <Shift>, <Ctrl>, <Alt>, <Super>\n"
+"#-#-#-#-# de.po #-#-#-#-#\n"
+"Syntax: <Umschalt>, <Strg>, <Alt>, <Super>"
#: 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 <i>Applications</i> icon"
-msgstr "Symbol <i>Anwendungen anzeigen</i> anzeigen"
+msgstr ""
+"#-#-#-#-# de.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"Symbol <i>Anwendungen anzeigen</i> anzeigen\n"
+"#-#-#-#-# de.po #-#-#-#-#\n"
+"<i>Anwendungen</i>-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 <i>Show Applications</i>."
-msgstr "Symbol <i>Anwendungen anzeigen</i> animieren"
+msgstr ""
+"#-#-#-#-# de.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"Symbol <i>Anwendungen anzeigen</i> animieren\n"
+"#-#-#-#-# de.po #-#-#-#-#\n"
+"Animation bei <i>Anwendungen einblenden</i>."
#: 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 ""
"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
-"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>"
+"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>"
msgstr ""
+"#-#-#-#-# de.po (gnome-shell-extensions master) #-#-#-#-#\n"
"<span size=\"small\">Für dieses Programm besteht KEINERLEI GARANTIE.\n"
" Details finden Sie in der <a href=\"https://www.gnu.org/licenses/old-"
"licenses/gpl-2.0.html\">GNU General Public License, Version 2 oder später</"
-"a>.</span>"
+"a>.</span>\n"
+"#-#-#-#-# de.po #-#-#-#-#\n"
+"<span size=\"small\">Für dieses Programm besteht KEINERLEI GARANTIE.\n"
+"Details unter <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0."
+"html\">GNU General Public License, version 2 or later</a></span>"
+# #-#-#-#-# 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 <i>AppMenu</i> items"
+msgstr "Integriere Einträge aus <i>Anwendungsmenü</i>"
+
+#: Settings.ui.h:20
+msgid "<i>Show Details</i> menu item"
+msgstr "<i>Details anzeigen</i>-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. <Super>i"
+msgstr "z.B. <Super>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. <Super>q"
+msgstr "z.B. <Super>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 <i>Activities</i> button"
+msgstr "<i>Aktivitäten</i>-Schaltfläche anzeigen"
+
+#: Settings.ui.h:187
+msgid "Show <i>Desktop</i> button"
+msgstr "<i>Schreibtisch</i>-Schaltfläche anzeigen"
+
+#: Settings.ui.h:188
+msgid "Show <i>AppMenu</i> button"
+msgstr "<i>Anwendungsmenü</i>-Schaltläche anzeigen"
+
+#: Settings.ui.h:189
+msgid "Top Bar > Show App Menu must be enabled in Tweak Tool"
+msgstr ""
+"<i>Obere Leiste > Anwendungsmenü anzeigen</i> 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 ""
+"<span weight=\"bold\" color=\"#B42B30\">Be aware, these official Dash to "
+"Panel releases might not be reviewed yet on extensions.gnome.org!</span> <a "
+"href=\"https://extensions.gnome.org/about/\">Read more</a>"
+msgstr ""
+"<span weight=\"bold\" color=\"#B42B30\">Achtung, diese offiziellen "
+"Veröffentlichungen von Dash to Panel sind möglicherweise noch nicht von "
+"extensions.gnome.org geprüft!</span> <a href=\"https://extensions.gnome.org/"
+"about/\">Weiterlesen</a>"
+
#~ 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 <rastersoft@gmail.com>, 2018.
# Daniel Mustieles <daniel.mustieles@gmail.com>, 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 <franglais125@gmail.com>, 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 <franglais125@gmail.com>\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 <i>Mostrar aplicaciones</i>"
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 ""
"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
-"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>"
+"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>"
msgstr ""
"<span size=\"small\">Este programa viene SIN NINGUNA GARANTÍA.\n"
-"Consulte la <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
-"\">Licencia Pública General de GNU, versión 2 o posterior</a> para obtener "
-"más detalles.</span>"
+"Consulte la <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0."
+"html\">Licencia Pública General de GNU, versión 2 o posterior</a> para "
+"obtener más detalles.</span>"
-#: 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: <Shift>, <Ctrl>, <Alt>, <Super>"
-msgstr "Sintaxis: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr ""
+"#-#-#-#-# es.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"Sintaxis: <Shift>, <Ctrl>, <Alt>, <Super>\n"
+"#-#-#-#-# es.po #-#-#-#-#\n"
+"Sintáxis: <Mayúsculas>, <Ctrl>, <Alt>, <Super>"
#: 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 <i>AppMenu</i> items"
+msgstr "Integrar los elementos del <i>Menú de aplicación</i>"
+
+#: Settings.ui:665
+msgid "<i>Show Details</i> menu item"
+msgstr "<i>Mostrar detalles</i> 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. <Super>i"
+msgstr "p.e. <Super>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. <Super>q"
+msgstr "p.e. <Súper>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 <i>Mostrar aplicaciones</i>"
+
+#: Settings.ui:3967
+msgid "Custom Show Applications image icon"
+msgstr "Icono <i>Mostrar aplicaciones</i> personalizado"
+
+#: Settings.ui:4013
+msgid "Show Applications icon side padding (px)"
+msgstr "Tamaño de relleno (px) de <i>Mostrar aplicaciones<i>"
+
+#: 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 <i>Mostrar Escritorio<i>"
+
+#: 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 <i>AppMenu</i> button"
+msgstr "Mostrar el botón <i>Menú de Aplicación</i>"
+
+#: 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 <claude@2xlibre.net>, 2020.
# Sylvestris <sylvestris@tutanota.com>, 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 <EMAIL@ADDRESS>, YEAR.
+# Laurent Tréguier <laurent@treguier.org>, 2019.
+# Charles Gagnon <charlesg99@outlook.com>, 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 <charlesg99@outlook.com>\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 dapplication"
-#: 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 "
-"lapplication."
+"lapplication.\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 laperçu des fenêtres"
msgid "Focus or show previews"
msgstr "Activer ou afficher laperç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 dextension GNOME."
#: Settings.ui.h:42
+#, fuzzy
msgid "Show <i>Applications</i> icon"
-msgstr "Afficher le raccourci <i>Afficher les Applications</i>"
+msgstr ""
+"#-#-#-#-# fr.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"Afficher le raccourci <i>Afficher les Applications</i>\n"
+"#-#-#-#-# fr.po (unnamed project) #-#-#-#-#\n"
+"Afficher l'icône <i>Applications</i>"
#: 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 <i>Show Applications</i>."
-msgstr "Animer le raccourci <i>Afficher les Applications</i>."
+msgstr ""
+"#-#-#-#-# fr.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"Animer le raccourci <i>Afficher les Applications</i>.\n"
+"#-#-#-#-# fr.po (unnamed project) #-#-#-#-#\n"
+"Animer <i>Afficher les applications</i>."
#: 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 "
-"lutiliser aussi avec Maj et Ctrl."
+"lutiliser 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 licône dune application ouverte."
+msgstr ""
+"#-#-#-#-# fr.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"Comportement du clic sur licône dune 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 licône dune 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 despace de travail"
+msgstr ""
+"#-#-#-#-# fr.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"Changer despace 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 lindicateur 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 lopacité 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 ""
"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
-"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>"
+"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>"
msgstr ""
+"#-#-#-#-# fr.po (gnome-shell-extensions master) #-#-#-#-#\n"
"<span size=\"small\">Ce programme est distribué SANS AUCUNE GARANTIE.\n"
-"Consultez la <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
-"\">Licence Générale Publique GNU version 2 ou plus récente</a> pour plus "
-"dinformations.</span>"
-
-#: Settings.ui.h:87
+"Consultez la <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0."
+"html\">Licence Générale Publique GNU version 2 ou plus récente</a> pour plus "
+"dinformations.</span>\n"
+"#-#-#-#-# fr.po (unnamed project) #-#-#-#-#\n"
+"<span size=\"small\">Ce programme est fourni SANS AUCUNE GARANTIE.\n"
+"Pour plus de détails, visitez la <a href=\"https://www.gnu.org/licenses/old-"
+"licenses/gpl-2.0.fr.html\">Licence publique générale GNU, version 2 ou "
+"ultérieure</a></span>"
+
+#: 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 dapplication"
+msgstr ""
+"#-#-#-#-# fr.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"Numéro dapplication\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: <Shift>, <Ctrl>, <Alt>, <Super>"
-msgstr "Syntaxe : <Maj>, <Ctrl>, <Alt>, <Super>"
+msgstr ""
+"#-#-#-#-# fr.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"Syntaxe : <Maj>, <Ctrl>, <Alt>, <Super>\n"
+"#-#-#-#-# fr.po (unnamed project) #-#-#-#-#\n"
+"Syntaxe: <Shift>, <Ctrl>, <Alt>, <Super>"
#: 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 lapplication."
+#: 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 <i>AppMenu</i> items"
+msgstr "Intégrer les actions du <i>Menu d'applications</i>"
+
+#: Settings.ui.h:16
+msgid "<i>Show Details</i> menu item"
+msgstr "Menu <i>Afficher les détails</i>"
+
+#: 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. <Super>i"
+msgstr "e.g. <Super>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. <Super>q"
+msgstr "e.g. <Super>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 <i>AppMenu</i> button"
+msgstr "Afficher le bouton <i>Menu d'Applications</i>"
+
+#: 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 ""
+"<span weight=\"bold\" color=\"#B42B30\">Be aware, these official Dash to "
+"Panel releases might not be reviewed yet on extensions.gnome.org!</span> <a "
+"href=\"https://extensions.gnome.org/about/\">Read more</a>"
+msgstr ""
+"<span weight=\"bold\" color=\"#B42B30\">Soyez avisé, ces versions "
+"officielles de Dash to Panel n'ont peut-être pas encore été approuvées sur "
+"extensions.gnome.org!</span> <a href=\"https://extensions.gnome.org/about/"
+"\">En savoir plus</a>"
+
+#~ 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 lapplication."
+
+#~ 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 <correo@xmgz.eu>, 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 <frandieguez@gnome.org>, 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 <frandieguez@gnome.org>\n"
+"Language-Team: Galician <Proxecto Trasno <proxecto@trasno.gal>>\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: <Shift>, <Ctrl>, <Alt>, <Super>"
-msgstr "Sintaxe: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr ""
+"#-#-#-#-# gl.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"Sintaxe: <Shift>, <Ctrl>, <Alt>, <Super>\n"
+"#-#-#-#-# gl.po (dash-to-panel) #-#-#-#-#\n"
+"Sintaxe: <Mayúsculas>, <Ctrl>, <Alt>, <Super>"
#: 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 <i>Applications</i> icon"
-msgstr "Mostrar a icona <i>Aplicativos</i>"
+msgstr ""
+"#-#-#-#-# gl.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"Mostrar a icona <i>Aplicativos</i>\n"
+"#-#-#-#-# gl.po (dash-to-panel) #-#-#-#-#\n"
+"Mostrar a icona de <i>Aplicacións</i>"
#: 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 <i>Show Applications</i>."
-msgstr "Animar <i>Mostrar aplicativos</i>"
+msgstr ""
+"#-#-#-#-# gl.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"Animar <i>Mostrar aplicativos</i>\n"
+"#-#-#-#-# gl.po (dash-to-panel) #-#-#-#-#\n"
+"Animar <i>Mostrar Aplicacións</i>"
#: 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 ""
"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
-"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>"
+"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>"
msgstr ""
+"#-#-#-#-# gl.po (gnome-shell-extensions master) #-#-#-#-#\n"
"<span size=\"small\">Este programa ven SIN GARANTÍA ALGUNHA.\n"
-"Consulte a <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
-"\">Licenza Pública Xeral de GNU, versión 2 ou posterior</a> para obter máis "
-"detalles.</span>"
-
-#: Settings.ui.h:77
+"Consulte a <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0."
+"html\">Licenza Pública Xeral de GNU, versión 2 ou posterior</a> para obter "
+"máis detalles.</span>\n"
+"#-#-#-#-# gl.po (dash-to-panel) #-#-#-#-#\n"
+"<span size=\"small\">Este programa ven SEN NINGUNHA GARANTÍA.\n"
+"Consulte a <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0."
+"html\">Licencia Pública General de GNU, versión 2 ou posterior</a> para "
+"obtener máis detalles.</span>"
+
+#: 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 <i>AppMenu</i> items"
+msgstr "Integrar os elementos do <i>Menú de aplicación</i>"
+
+#: Settings.ui.h:20
+msgid "<i>Show Details</i> menu item"
+msgstr "<i>Mostrar detalles</i> 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. <Super>i"
+msgstr "p.ex. <Super>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. <Super>q"
+msgstr "p.e. <Super>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 <i>Activities</i> button"
+msgstr "Mostrar o botón <i>Actividades</i>"
+
+#: Settings.ui.h:187
+msgid "Show <i>Desktop</i> button"
+msgstr "Mostrar o botón <i>Escritorio</i>"
+
+#: Settings.ui.h:188
+msgid "Show <i>AppMenu</i> button"
+msgstr "Mostrar o botón <i>Menú de Aplicación</i>"
+
+#: 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 ""
+"<span weight=\"bold\" color=\"#B42B30\">Be aware, these official Dash to "
+"Panel releases might not be reviewed yet on extensions.gnome.org!</span> <a "
+"href=\"https://extensions.gnome.org/about/\">Read more</a>"
+msgstr ""
+"<span weight=\"bold\" color=\"#B42B30\">¡Sé consciente de que estas versións "
+"oficiais de 'Dash to Panel' poderían non estar todavía revisadas en "
+"extensions.gnome.org!</span> <a href=\"https://extensions.gnome.org/about/"
+"\">Ler máis</a>"
+
#~ 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 <ur.balazs at fsf dot hu>, 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 <ur.balazs at fsf dot hu>, 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 <ur.balazs at fsf dot hu>\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: <Shift>, <Ctrl>, <Alt>, <Super>"
msgstr "Szintaxis: <Shift>, <Ctrl>, <Alt>, <Super>"
@@ -399,7 +424,7 @@ msgstr "Szintaxis: <Shift>, <Ctrl>, <Alt>, <Super>"
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 <i>Applications</i> icon"
msgstr "<i>Alkalmazások</i> ikon megjelenítése"
@@ -532,7 +558,7 @@ msgstr "<i>Alkalmazások</i> 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 <i>Show Applications</i>."
msgstr "<i>Alkalmazások megjelenítése</i> animálása."
@@ -540,7 +566,7 @@ msgstr "<i>Alkalmazások megjelenítése</i> 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 ""
"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
-"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>"
+"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>"
msgstr ""
"<span size=\"small\">Ehhez a programhoz SEMMILYEN GARANCIA NEM JÁR.\n"
"Nézze meg a <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html "
"\">GNU General Public License 2. vagy későbbi verzióját</a> a részletekért.</"
"span>"
-#: 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 <i>AppMenu</i> items"
+msgstr "<i>Alkalmazásmenü</i> elemeinek integrálása"
+
+#: Settings.ui.h:20
+msgid "<i>Show Details</i> menu item"
+msgstr "<i>Részletek megjelenítése</i> 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. <Super>i"
+msgstr "például <Super>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. <Super>q"
+msgstr "például <Super>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 <i>Activities</i> button"
+msgstr "<i>Tevékenységek</i> gomb megjelenítése"
+
+#: Settings.ui.h:187
+msgid "Show <i>Desktop</i> button"
+msgstr "<i>Asztal</i> gomb megjelenítése"
+
+#: Settings.ui.h:188
+msgid "Show <i>AppMenu</i> button"
+msgstr "<i>Alkalmazásmenü</i> 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 ""
+"<span weight=\"bold\" color=\"#B42B30\">Be aware, these official Dash to "
+"Panel releases might not be reviewed yet on extensions.gnome.org!</span> <a "
+"href=\"https://extensions.gnome.org/about/\">Read more</a>"
+msgstr ""
+"<span weight=\"bold\" color=\"#B42B30\">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!</span> <a href=\"https://extensions.gnome.org/"
+"about/\">Tudjon meg többet</a>"
+
#~ 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 <max.bra.gtalk@gmail.com>, 2019.
# Milo Casagrande <milo@milo.name>, 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 <enricobe@hotmail.com>, 2018.
+# Kowalski7cc <kowalski.7cc@gmail.com>, 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 <l3nn4rt@protonmail.com>\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 <i>Applicazioni</i>"
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 <i>Show Applications</i>."
-msgstr "Anima <i>Mostra applicazioni</i>"
+msgstr ""
+"#-#-#-#-# it.po (gnome-shell-extensions) #-#-#-#-#\n"
+"Anima <i>Mostra applicazioni</i>\n"
+"#-#-#-#-# it.po #-#-#-#-#\n"
+"Animazione <i>Mostra Applicazioni</i>."
#: 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 ""
"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
-"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>"
+"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>"
msgstr ""
+"#-#-#-#-# it.po (gnome-shell-extensions) #-#-#-#-#\n"
"<span size=\"small\">Questo programma viene fornito senza ALCUNA GARANZIA.\n"
"Per maggiori informazioni, consultare la <a href=\"https://www.gnu.org/"
"licenses/old-licenses/gpl-2.0.html\">GNU General Public License, versione 2 "
-"o successiva</a>.<span>"
-
-#: Settings.ui.h:85
+"o successiva</a>.<span>\n"
+"#-#-#-#-# it.po #-#-#-#-#\n"
+"<span size=\"small\">Questo programma è fornito SENZA NESSUNA GARANZIA.\n"
+"Vedere <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0."
+"html\">GNU General Public License, versione 2 o successive</a> per dettagli."
+"</span>"
+
+#: 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: <Shift>, <Ctrl>, <Alt>, <Super>"
-msgstr "Formato: <Maiusc>, <Ctrl>, <Alt>, <Super>"
+msgstr ""
+"#-#-#-#-# it.po (gnome-shell-extensions) #-#-#-#-#\n"
+"Formato: <Maiusc>, <Ctrl>, <Alt>, <Super>\n"
+"#-#-#-#-# it.po #-#-#-#-#\n"
+"Sintassi: <Shift>, <Ctrl>, <Alt>, <Super>"
#: 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 <i>AppMenu</i> items"
+msgstr "Integra elementi <i>AppMenu</i>"
+
+#: Settings.ui.h:16
+msgid "<i>Show Details</i> menu item"
+msgstr "Visualizza <i>Mostra Dettagli</i>"
+
+#: 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. <Super>i"
+msgstr "es. <Super>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. <Super>q"
+msgstr "es. <Super>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 <i>AppMenu</i> button"
+msgstr "Mostra pulsante <i>AppMenu</i>"
+
+#: 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 ""
+"<span weight=\"bold\" color=\"#B42B30\">Be aware, these official Dash to "
+"Panel releases might not be reviewed yet on extensions.gnome.org!</span> <a "
+"href=\"https://extensions.gnome.org/about/\">Read more</a>"
+msgstr ""
+"<span weight=\"bold\" color=\"#B42B30\">Attenzione, queste versioni "
+"ufficiali di Dash to Panel potrebbero non essere ancora esaminate su "
+"extensions.gnome.org!</span> <a href=\"https://extensions.gnome.org/about/"
+"\">Leggi di più</a>"
+
+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 <translation@sicklylife.jp>, 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 <yamada_strong_yamada_nice_64bit@yahoo.co.jp>, 2017-2018.
+# sicklylife <translation@sicklylife.jp>, 2018-2021.
+# Ryo Nakano <ryonakaknock3@gmail.com>, 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 <translation@sicklylife.jp>\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 <i>Applications</i> icon"
-msgstr "[アプリケーションを表示する] アイコンの表示"
+msgstr ""
+"#-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"[アプリケーションを表示する] アイコンの表示\n"
+"#-#-#-#-# ja.po #-#-#-#-#\n"
+"<b>アプリケーション</b>アイコンを表示"
#: 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 <i>Show Applications</i>."
-msgstr "アニメーションしながらアプリケーション一覧を表示"
+msgstr ""
+"#-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"アニメーションしながらアプリケーション一覧を表示\n"
+"#-#-#-#-# ja.po #-#-#-#-#\n"
+"<b>アプリケーションの表示</b>にアニメーションを使用"
#: 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 ""
"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
-"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>"
+"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>"
msgstr ""
+"#-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-#\n"
"<span size=\"small\">このプログラムに<b>保証は一切ありません</b>。\n"
-"詳しくは <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
-"\">GNU 一般公衆ライセンス (GPL) バージョン 2</a> またはそれ以降のバージョンを"
-"ご覧ください。</span>"
-
-#: Settings.ui.h:86
+"詳しくは <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0."
+"html\">GNU 一般公衆ライセンス (GPL) バージョン 2</a> またはそれ以降のバージョ"
+"ンをご覧ください。</span>\n"
+"#-#-#-#-# ja.po #-#-#-#-#\n"
+"<span size=\"small\">このプログラムは全くの無保証です。\n"
+"詳しくは <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0-"
+"translations.html\">GNU General Public License, version 2 またはそれ以降</a> "
+"をご確認ください。</span>"
+
+#: 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: <Shift>, <Ctrl>, <Alt>, <Super>"
-msgstr "表記法: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr ""
+"#-#-#-#-# ja.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"表記法: <Shift>, <Ctrl>, <Alt>, <Super>\n"
+"#-#-#-#-# ja.po #-#-#-#-#\n"
+"シンタックス: <Shift>、<Ctrl>、<Alt>、<Super>"
#: 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 <i>AppMenu</i> items"
+msgstr "<b>アプリケーションメニュー</b>の項目を統合"
+
+#: Settings.ui:383
+msgid "<i>Show Details</i> menu item"
+msgstr "<b>詳細を表示する</b>メニュー項目を表示"
+
+#: 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. <Super>i"
+msgstr "例: <Super>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. <Super>q"
+msgstr "例: <Super>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 <i>AppMenu</i> button"
+msgstr "<b>アプリケーションメニュー</b>ボタンを表示"
+
+#: 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 ""
+"<span weight=\"bold\" color=\"#B42B30\">Be aware, these official Dash to "
+"Panel releases might not be reviewed yet on extensions.gnome.org!</span> <a "
+"href=\"https://extensions.gnome.org/about/\">Read more</a>"
+msgstr ""
+"<span weight=\"bold\" color=\"#B42B30\">この機能でアップデートされる Dash to "
+"Panel は公式のものではありますが、まだ extensions.gnome.org でレビューされて"
+"いない可能性があることにご注意ください!</span> <a href=\"https://extensions."
+"gnome.org/about/\">詳細はこちら</a>"
+
+#: 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 <baurthefirst@gmail.com>, 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 <baurthefirst@gmail.com>, 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 <baurthefirst@gmail.com>\n"
+"Language-Team: Kazakh <kk_KZ@googlegroups.com>\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 <i>AppMenu</i> items"
+msgstr "<i>Қолданбалар мәзірі</i> нәрселерін интеграциялау"
+
+#: Settings.ui.h:14
+msgid "<i>Show Details</i> menu item"
+msgstr "<i>Ақпаратын көрсету</i> мәзір элементі"
+
+#: 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: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Синтаксисі: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: 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 <i>Applications</i> icon"
+msgstr "<i>Қолданбалар</i> таңбашасын көрсету"
+
+#: Settings.ui.h:87
+msgid "Animate <i>Show Applications</i>."
+msgstr "<i>Қолданбаларды көрсету</i> анимациясын іске қосу."
+
+#: Settings.ui.h:88
+msgid "Show <i>Activities</i> button"
+msgstr "<i>Көрініс</i> таңбашасын көрсету"
+
+#: Settings.ui.h:89
+msgid "Show <i>Desktop</i> button"
+msgstr "<i>Жұмыс үстелі</i> батырмасын көрсету"
+
+#: Settings.ui.h:90
+msgid "Show <i>AppMenu</i> button"
+msgstr "<i>Қолданбалар мәзірі</i> таңбашасын көрсету"
+
+#: 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 ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">Бұл бағдарлама ЕШҚАНДАЙ КЕПІЛДЕМЕСІЗ таратылады.\n"
+"Көбірек білу үшін <a href=\"https://www.gnu.org/licenses/old-licenses/"
+"gpl-2.0.html\">GNU General Public License, нұсқасы 2 немесе кейінірек</a> "
+"қараңыз.</span>"
+
+#: 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 <piotrdrag@gmail.com>, 2018-2020.
# Aviary.pl <community-poland@mozilla.org>, 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 <rylatgl@gmail.com>\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 <i>Applications</i> icon"
-msgstr "Przycisk <i>Wyświetl programy</i>"
+msgstr ""
+"#-#-#-#-# pl.po (gnome-shell-extensions) #-#-#-#-#\n"
+"Przycisk <i>Wyświetl programy</i>\n"
+"#-#-#-#-# pl.po (Dash to Panel) #-#-#-#-#\n"
+"Pokaż ikonę <i>Programy</i>"
#: 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 <i>Show Applications</i>."
-msgstr "Animowanie przycisku <i>Wyświetl programy</i>"
+msgstr ""
+"#-#-#-#-# pl.po (gnome-shell-extensions) #-#-#-#-#\n"
+"Animowanie przycisku <i>Wyświetl programy</i>\n"
+"#-#-#-#-# pl.po (Dash to Panel) #-#-#-#-#\n"
+"Animuj <i>pokazanie programów</i>."
#: 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 ""
"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
-"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>"
+"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>"
msgstr ""
+"#-#-#-#-# pl.po (gnome-shell-extensions) #-#-#-#-#\n"
"<span size=\"small\">Niniejszy program rozpowszechniany jest bez "
"jakiejkolwiek gwarancji.\n"
"Więcej informacji: <a href=\"https://www.gnu.org/licenses/old-licenses/"
"gpl-2.0.html\">Powszechna licencja publiczna GNU, wersja 2 lub późniejsza</"
-"a>.</span>"
-
-#: Settings.ui.h:87
+"a>.</span>\n"
+"#-#-#-#-# pl.po (Dash to Panel) #-#-#-#-#\n"
+"<span size=\"small\">Tego programu nie obejmuje ABSOLUTNIE ŻADNA GWARANCJA.\n"
+"Więcej informacji można znaleźć w licencji <a href=\"https://www.gnu.org/"
+"licenses/old-licenses/gpl-2.0.html\">GNU General Public License, wersja 2 "
+"lub nowsza</a>.</span>"
+
+#: 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: <Shift>, <Ctrl>, <Alt>, <Super>"
msgstr "Składnia: <Shift>, <Ctrl>, <Alt>, <Super>"
@@ -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 <i>Pokaż pulpit</i> (px)"
+
+#: prefs.js:230
+msgid "Show Desktop button width (px)"
+msgstr "Szerokość przycisku <i>Pokaż pulpit</i> (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 <i>AppMenu</i> items"
+msgstr "Zintegruj elementy <i>menu programów</i>"
+
+#: Settings.ui.h:20
+msgid "<i>Show Details</i> menu item"
+msgstr "<i>Wyświetl szczegóły</i>"
+
+#: 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. <Super>i"
+msgstr "np. <Super>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. <Super>q"
+msgstr "np. <Super>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 <i>Pokaż programy</i>"
+
+#: Settings.ui.h:133
+msgid "Select a Show Applications image icon"
+msgstr "Wybierz ikonę przycisku <i>Pokaż programy</i>"
+
+#: Settings.ui.h:134
+msgid "Custom Show Applications image icon"
+msgstr "Wybierz własną ikonę przycisku <i>Pokaż programy</i>"
+
+#: Settings.ui.h:135
+msgid "Show Applications icon side padding (px)"
+msgstr "Wewnętrzny margines przycisku <i>Pokaż programy</i> (px)"
+
+#: Settings.ui.h:136
+msgid "Reveal the desktop when hovering the Show Desktop button"
+msgstr "Pokaż pulpit po najechaniu na przycisk <i>Pokaż pulpit</i>"
+
+#: 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 <i>Activities</i> button"
+msgstr "Pokaż przycisk <i>Podgląd</i>"
+
+#: Settings.ui.h:187
+msgid "Show <i>Desktop</i> button"
+msgstr "Pokaż przycisk <i>Pulpit</i>"
+
+#: Settings.ui.h:188
+msgid "Show <i>AppMenu</i> button"
+msgstr "Pokaż przycisk <i>Menu programu</i>"
+
+#: 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 ""
+"<span weight=\"bold\" color=\"#B42B30\">Be aware, these official Dash to "
+"Panel releases might not be reviewed yet on extensions.gnome.org!</span> <a "
+"href=\"https://extensions.gnome.org/about/\">Read more</a>"
+msgstr ""
+"<span weight=\"bold\" color=\"#B42B30\">Bądź świadom, że te oficjalne "
+"wydania Dash to Panel mogły jeszcze nie przejść weryfikacji na extensions."
+"gnome.org! <a href=\"https://extensions.gnome.org/about/\">Więcej "
+"informacji</a>"
+
#~ 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 <liverig@gmail.com>, 2018.
# Rafael Fontenelle <rafaelff@gnome.org>, 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 <fnogueira@gnome.org>, 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 <fnogueira@gnome.org>\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 <i>Applications</i> icon"
-msgstr "Exibir ícone dos <i>Aplicativos</i>"
+msgstr ""
+"#-#-#-#-# pt_BR.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"Exibir ícone dos <i>Aplicativos</i>\n"
+"#-#-#-#-# pt_BR.po #-#-#-#-#\n"
+"Mostrar ícone <i>Aplicativos</i>"
#: 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 <i>Show Applications</i>."
-msgstr "<i>Mostrar aplicativos</i> com efeitos."
+msgstr ""
+"#-#-#-#-# pt_BR.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"<i>Mostrar aplicativos</i> com efeitos.\n"
+"#-#-#-#-# pt_BR.po #-#-#-#-#\n"
+"<i>Mostrar aplicativos</i> 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 ""
"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
-"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>"
+"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>"
msgstr ""
+"#-#-#-#-# pt_BR.po (gnome-shell-extensions master) #-#-#-#-#\n"
"<span size=\"small\">Este programa é distribuido SEM QUALQUER GARANTIA.\n"
-"Veja em <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
-"\">GNU General Public License, versão 2 ou posterior</a> para maiores "
+"Veja em <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0."
+"html\">GNU General Public License, versão 2 ou posterior</a> para maiores "
+"detalhes.</span>\n"
+"#-#-#-#-# pt_BR.po #-#-#-#-#\n"
+"<span size=\"small\">Este programa vem com ABSOLUTAMENTE NENHUMA GARANTIA.\n"
+"Veja a <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0."
+"html\">Licença Pública Geral GNU, versão 2 ou posterior</a> para maiores "
"detalhes.</span>"
-#: 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: <Shift>, <Ctrl>, <Alt>, <Super>"
msgstr "Sintaxe: <Shift>, <Ctrl>, <Alt>, <Super>"
@@ -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 <i>AppMenu</i> items"
+msgstr "Itens integrados ao <i>Menu de aplicativos</i>"
+
+#: Settings.ui.h:14
+msgid "<i>Show Details</i> menu item"
+msgstr "Item do menu <i>Exibir detalhes</i>"
+
+#: 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 <i>Activities</i> button"
+msgstr "Mostrar botão <i>Atividades</i>"
+
+#: Settings.ui.h:61
+msgid "Show <i>Desktop</i> button"
+msgstr "Mostrar botão <i>Área de trabalho</i>"
+
+#: Settings.ui.h:62
+msgid "Show <i>AppMenu</i> button"
+msgstr "Mostrar botão <i>Menu de aplicativos</i>"
+
+#: 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 <eaglersdeveloper@gmail.com>, 2018.
#
+# #-#-#-#-# ru.po #-#-#-#-#
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2017
+# This file is distributed under the same license as the PACKAGE package.
+# Alex Gluck <alexgluck@bk.ru>, 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 <vantu5z@mail.ru>\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 <i>Applications</i> icon"
-msgstr "Показывать иконку <i>«Приложения»</i>"
+msgstr ""
+"#-#-#-#-# ru.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n"
+"Показывать иконку <i>«Приложения»</i>\n"
+"#-#-#-#-# ru.po #-#-#-#-#\n"
+"Показывать иконку <i>Программы</i>"
#: 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 <i>Show Applications</i>."
-msgstr "Анимация при показе <i>«Приложений»</i>"
+msgstr ""
+"#-#-#-#-# ru.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n"
+"Анимация при показе <i>«Приложений»</i>\n"
+"#-#-#-#-# ru.po #-#-#-#-#\n"
+"Анимировать <i>Показ списка приложений</i>."
#: 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 ""
"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
-"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>"
+"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>"
msgstr ""
+"#-#-#-#-# ru.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n"
"<span size=\"small\">Эта программа распространяется БЕЗ КАКИХ ЛИБО "
"ГАРАНТИЙ.\n"
-"Смотри <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"
-"\">GNU General Public License, версия 2 или позднее</a> для информации.</"
-"span>"
+"Смотри <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0."
+"html\">GNU General Public License, версия 2 или позднее</a> для информации.</"
+"span>\n"
+"#-#-#-#-# ru.po #-#-#-#-#\n"
+"<span size=\"small\">Эта программа поставляется без каких-либо гарантий.\n"
+"Подробнее на <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0."
+"html\">GNU General Public License, version 2 or later</a></span>"
-#: 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: <Shift>, <Ctrl>, <Alt>, <Super>"
-msgstr "Синтаксис: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr ""
+"#-#-#-#-# ru.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n"
+"Синтаксис: <Shift>, <Ctrl>, <Alt>, <Super>\n"
+"#-#-#-#-# ru.po #-#-#-#-#\n"
+"Синтакс: <Shift>, <Ctrl>, <Alt>, <Super>"
#: 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 its 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 <i>Show "
-#~ "Applications</i> icon are active."
-#~ msgstr ""
-#~ "При фиксированном размере иконок приложений активна только область иконки "
-#~ "<i>«Приложения»</i> и край дока."
+#: 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 <i>AppMenu</i> items"
+msgstr "Интегрировать <i>Меню Приложения</i>"
+
+#: Settings.ui.h:16
+msgid "<i>Show Details</i> menu item"
+msgstr "Меню <i>Показать детали</i>"
+
+#: 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. <Super>i"
+msgstr "например, <Super>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. <Super>q"
+msgstr "например, <Super>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 <i>AppMenu</i> button"
+msgstr "Показывать кнопку <i>Меню приложения</i>"
+
+#: 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 ""
+"<span weight=\"bold\" color=\"#B42B30\">Be aware, these official Dash to "
+"Panel releases might not be reviewed yet on extensions.gnome.org!</span> <a "
+"href=\"https://extensions.gnome.org/about/\">Read more</a>"
+msgstr ""
+"<span weight=\"bold\" color=\"#B42B30\">Внимание! Хоть релизы и выходят "
+"официально, они могут быть еще выложены на extensions.gnome.org!</span> <a "
+"href=\"https://extensions.gnome.org/about/\">Прочитать</a>"
+
+#~ 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 its 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 <i>Show "
+#~ "Applications</i> icon are active."
+#~ msgstr ""
+#~ "При фиксированном размере иконок приложений активна только область иконки "
+#~ "<i>«Приложения»</i> и край дока."
+
+#~ 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 <anders.jonsson@norsjovallen.se>, 2018, 2019, 2020.
# Josef Andersson <l10nl18nsweja@gmail.com>, 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 <gleb@netkom.se>, 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 <gleb@netkom.se>\n"
+"Language-Team: Svenska grenen av Translation Project <tp-sv@listor.tp-sv."
+"se>\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 <i>Applications</i> icon"
-msgstr "Visa <i>Program</i>-ikon"
+msgstr ""
+"#-#-#-#-# sv.po (gnome-shell-extensions) #-#-#-#-#\n"
+"Visa <i>Program</i>-ikon\n"
+"#-#-#-#-# sv.po #-#-#-#-#\n"
+"Visa <i>Program</i> 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 <i>Show Applications</i>."
-msgstr "Animera <i>Visa program</i>."
+msgstr ""
+"#-#-#-#-# sv.po (gnome-shell-extensions) #-#-#-#-#\n"
+"Animera <i>Visa program</i>.\n"
+"#-#-#-#-# sv.po #-#-#-#-#\n"
+"Animera <i>Visa Program</i>."
#: 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 ""
"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
-"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>"
+"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>"
msgstr ""
+"#-#-#-#-# sv.po (gnome-shell-extensions) #-#-#-#-#\n"
"<span size=\"small\">Detta program kommer HELT UTAN GARANTI.\n"
"Se <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html\">GNU "
-"General Public License, version 2 eller senare</a> för detaljer.</span>"
+"General Public License, version 2 eller senare</a> för detaljer.</span>\n"
+"#-#-#-#-# sv.po #-#-#-#-#\n"
+"<span size=\"small\">Detta program kommer ABSOLUT UTAN NÅGON GARANTI.\n"
+"Se <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html\">GNU "
+"General Public Licens, version 2 eller senare</a> för detaljer.</span>"
-#: 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: <Shift>, <Ctrl>, <Alt>, <Super>"
-msgstr "Syntax: <Skift>, <Ctrl>, <Alt>, <Super>"
+msgstr ""
+"#-#-#-#-# sv.po (gnome-shell-extensions) #-#-#-#-#\n"
+"Syntax: <Skift>, <Ctrl>, <Alt>, <Super>\n"
+"#-#-#-#-# sv.po #-#-#-#-#\n"
+"Syntax: <Shift>, <Ctrl>, <Alt>, <Super>"
#: 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 <i>AppMenu</i> items"
+msgstr "Integrera <i>programmeny</i> objekt"
+
+#: Settings.ui.h:20
+msgid "<i>Show Details</i> menu item"
+msgstr "<i>Visa detaljer</i> 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. <Super>i"
+msgstr "t ex <Super>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. <Super>q"
+msgstr "t ex <Super>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 <i>Activities</i> button"
+msgstr "Visa <i>Aktiviteter</i> knappen"
+
+#: Settings.ui.h:187
+msgid "Show <i>Desktop</i> button"
+msgstr "Visa <i>Skrivbord</i> knappen"
+
+#: Settings.ui.h:188
+msgid "Show <i>AppMenu</i> button"
+msgstr "Visa <i>Program Meny</i> 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 ""
+"<span weight=\"bold\" color=\"#B42B30\">Be aware, these official Dash to "
+"Panel releases might not be reviewed yet on extensions.gnome.org!</span> <a "
+"href=\"https://extensions.gnome.org/about/\">Read more</a>"
+msgstr ""
+"<span weight=\"bold\" color=\"#B42B30\">Var medveten om att dessa officiella "
+"Dash to Panel utgåvor kan ännu vara icke recenserade på extensions.gnome.org!"
+"</span> <a href=\"https://extensions.gnome.org/about/\">Läs mer</a>"
+
#~ 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 <teknomobil@yandex.com>, 2019
# Emin Tufan Çetin <etcetin@gmail.com>, 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 <teknomobil@yandex.com>, 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 <teknomobil@yandex.com>\n"
+"Language-Team: Serdar Sağlam <teknomobil@yandex.com>\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 <i>Applications</i> icon"
-msgstr "<i>Uygulamalar</i> simgesini göster"
+msgstr ""
+"#-#-#-#-# tr.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"<i>Uygulamalar</i> simgesini göster\n"
+"#-#-#-#-# tr.po #-#-#-#-#\n"
+"Tüm Uygulamalar simgesi <i>Aktif</i>"
#: 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 <i>Show Applications</i>."
-msgstr "<i>Uygulamalar</i> açılırken canlandırma göster."
+msgstr ""
+"#-#-#-#-# tr.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"<i>Uygulamalar</i> açılırken canlandırma göster.\n"
+"#-#-#-#-# tr.po #-#-#-#-#\n"
+"Canlandırma <i>menü açılışlarında göster</i>."
#: 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 ""
"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
-"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>"
+"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>"
msgstr ""
+"#-#-#-#-# tr.po (gnome-shell-extensions master) #-#-#-#-#\n"
"<span size=\"small\">Bu program kesinlikle hiçbir garanti vermiyor..\n"
"Ayrıntılar için <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0."
"html\">GNU Genel Kamu Lisansı, sürüm 2 veya üstü</a> bağlantısına bakın</"
-"span>"
+"span>\n"
+"#-#-#-#-# tr.po #-#-#-#-#\n"
+"<span size=\"small\">Bu program KESİNLİKLE HİÇBİR GARANTİ vermez.\n"
+"Bakın <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html\">GNU "
+"Genel Kamu Lisansı, sürüm 2 veya üstü</a> detaylar için.</span>"
-#: 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: <Shift>, <Ctrl>, <Alt>, <Super>"
msgstr "Sözdizimi: <Shift>, <Ctrl>, <Alt>, <Super>"
@@ -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 <i>AppMenu</i> items"
+msgstr "Entegre <i>Program menüsü</i>"
+
+#: Settings.ui.h:20
+msgid "<i>Show Details</i> menu item"
+msgstr "Ayrıntıları Göster <i>menü seçeneği</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. <Super>i"
+msgstr "örneğin. <Super>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. <Super>q"
+msgstr "örneğin. <Super>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 <i>Activities</i> button"
+msgstr "Etkinlikler düğmesi <i>Aktif</i>"
+
+#: Settings.ui.h:187
+msgid "Show <i>Desktop</i> button"
+msgstr "Masaüstünü göster düğmesi <i>Aktif</i>"
+
+#: Settings.ui.h:188
+msgid "Show <i>AppMenu</i> button"
+msgstr "Uygulama menüleri düğmesi <i>Aktif</i>"
+
+#: 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 ""
+"<span weight=\"bold\" color=\"#B42B30\">Be aware, these official Dash to "
+"Panel releases might not be reviewed yet on extensions.gnome.org!</span> <a "
+"href=\"https://extensions.gnome.org/about/\">Read more</a>"
+msgstr ""
+"<span weight=\"bold\" color=\"#B42B30\">Unutmayın, Dash to Panel bültenleri "
+"extensions.gnome.org üstünde henüz hazır olmayabilir!</span> <a "
+"href=\"https://extensions.gnome.org/about/\">Devamını oku</a>"
+
#~ 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ıı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 <yurchor@ukr.net>, 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 <EMAIL@ADDRESS>, 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 <e-liss@tuta.io>\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 <i>AppMenu</i> items"
+msgstr "Вбудувати пункти <i>Меню</i>"
+
+#: Settings.ui.h:14
+msgid "<i>Show Details</i> menu item"
+msgstr "Пункт меню <i>Детальніше</i>"
+
+#: 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: <Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr "Синтаксис: <Shift>, <Ctrl>, <Alt>, <Super>"
+
+#: 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 <i>Applications</i> icon"
+msgstr "Піктограма <i>Всі Застосунки</i>"
+
+#: Settings.ui.h:59
+msgid "Animate <i>Show Applications</i>."
+msgstr "Анімувати <i>Всі Застосунки</i>."
+
+#: Settings.ui.h:60
+msgid "Show <i>Activities</i> button"
+msgstr "Показувати кнопку <i>Діяльність</i>"
+
+#: Settings.ui.h:61
+msgid "Show <i>Desktop</i> button"
+msgstr "Показувати кнопку <i>Стільниця</i>"
+
+#: Settings.ui.h:62
+msgid "Show <i>AppMenu</i> button"
+msgstr "Показувати кнопку <i>Застосунки</i>"
+
+#: 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 ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
+"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>"
+msgstr ""
+"<span size=\"small\">Автор програми не надає ЖОДНИХ ГАРАНТІЙ.\n"
+"Перегляньте <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0."
+"html\">GNU General Public License, version 2 or later</a>, щоб дізнатися "
+"більше.</span>"
+
+#: 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 <wsxy162@gmail.com>, 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) <debian-l10n-chinese@lists.debian.org>\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 <i>Applications</i> icon"
-msgstr "显示 <i>应用程序</i> 图标"
+msgstr ""
+"#-#-#-#-# zh_CN.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"显示 <i>应用程序</i> 图标\n"
+"#-#-#-#-# zh_CN.po (dash-to-panel 24) #-#-#-#-#\n"
+"显示<b>应用</b>图标"
#: Settings.ui.h:43
msgid "Move the applications button at the beginning of the dock."
msgstr "将应用程序图标移至 Dock 的起始位置"
#: Settings.ui.h:44
+#, fuzzy
msgid "Animate <i>Show Applications</i>."
-msgstr "动画方式 <i>显示应用程序</i>"
+msgstr ""
+"#-#-#-#-# zh_CN.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"动画方式 <i>显示应用程序</i>\n"
+"#-#-#-#-# zh_CN.po (dash-to-panel 24) #-#-#-#-#\n"
+"动画化<b>显示应用程序</b>。"
#: 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 ""
"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
-"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>"
+"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>"
msgstr ""
"<span size=\"small\">本程序不提供任何担保。\n"
"参见 <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html\">GNU "
"通用公共许可证,第二版或更高版本</a>以了解更多细节。</span>"
-#: 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: <Shift>, <Ctrl>, <Alt>, <Super>"
-msgstr "语法:<Shift><Ctrl><Alt><Super>"
+msgstr ""
+"#-#-#-#-# zh_CN.po (gnome-shell-extensions master) #-#-#-#-#\n"
+"语法:<Shift><Ctrl><Alt><Super>\n"
+"#-#-#-#-# zh_CN.po (dash-to-panel 24) #-#-#-#-#\n"
+"语法:<Shift>, <Ctrl>, <Alt>, <Super>"
#: 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 its 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 <i>AppMenu</i> items"
+msgstr "集成 <b>应用菜单</b> 项"
+
+#: Settings.ui.h:27
+msgid "<i>Show Details</i> menu item"
+msgstr "<b>显示细节</b> 菜单项"
+
+#: 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. <Super>i"
+msgstr "例如 <Super>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. <Super>q"
+msgstr "例如 <Super>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&#10;(default is 48)"
+msgstr "面板厚度&#10;(默认为 48"
+
+#: Settings.ui.h:165
+#, no-c-format
+msgid "Panel length (%)&#10;(default is 100)"
+msgstr "面板长度(%&#10;(默认为 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&#10;(default is 8)"
+msgstr "应用图标边缘空白&#10;(默认为 8"
+
+#: Settings.ui.h:175
+msgid "App Icon Padding&#10;(default is 4)"
+msgstr "应用图标边缘空白&#10;(默认为 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 <i>AppMenu</i> button"
+msgstr "显示 <b>应用菜单</b> 按钮"
+
+#: 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&#10;(0 = theme default)"
+msgstr "托盘字体大小&#10;0 = 主题默认)"
+
+#: Settings.ui.h:228
+msgid "LeftBox Font Size&#10;(0 = theme default)"
+msgstr "LeftBox 字体大小&#10;0 = 主题默认)"
+
+#: Settings.ui.h:229
+msgid "Tray Item Padding&#10;(-1 = theme default)"
+msgstr "托盘项边缘空白&#10;-1 = 主题默认)"
+
+#: Settings.ui.h:230
+msgid "Status Icon Padding&#10;(-1 = theme default)"
+msgstr "状态图标边缘空白&#10;-1 = 主题默认)"
+
+#: Settings.ui.h:231
+msgid "LeftBox Padding&#10;(-1 = theme default)"
+msgstr "LeftBox 边缘空白&#10;-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 ""
+"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.&#10;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>"
+msgstr ""
+"<span size=\"small\">本程序不提供任何担保。&#10;请查看 <a href=\"https://www."
+"gnu.org/licenses/old-licenses/gpl-2.0.html\">GNU 通用公共许可证,第二版或更新"
+"版本</a> 以了解详情。</span>"
+
+#~ 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 its 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 ""
+#~ "<span weight=\"bold\" color=\"#B42B30\">Be aware, these official Dash to "
+#~ "Panel releases might not be reviewed yet on extensions.gnome.org!</span> "
+#~ "<a href=\"https://extensions.gnome.org/about/\">Read more</a>"
+#~ msgstr ""
+#~ "<span weight=\"bold\" color=\"#B42B30\">请注意,这些官方发布的 Dash to "
+#~ "Panel 版本可能还没有通过 extensions.gnome.org 的审查!</span> <a "
+#~ "href=\"https://extensions.gnome.org/about/\">详细了解</a>"
+
+#~ 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 <pan93412@gmail.com>, 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 <origincoder@gmail.com>, 2019.
+# pan93412 <pan93412@gmail.com>, 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 <pan93412@gmail.com>\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 <i>Applications</i> icon"
-msgstr "顯示 <i>應用程式</i> 圖示"
+msgstr ""
+"#-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n"
+"顯示 <i>應用程式</i> 圖示\n"
+"#-#-#-#-# zh_TW.po (Dash To Panel) #-#-#-#-#\n"
+"顯示<i>應用程式</i>圖示"
#: 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 <i>Show Applications</i>."
-msgstr "讓 <i>顯示應用程式</i> 有動畫。"
+msgstr ""
+"#-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n"
+"讓 <i>顯示應用程式</i> 有動畫。\n"
+"#-#-#-#-# zh_TW.po (Dash To Panel) #-#-#-#-#\n"
+"動畫化<i>顯示應用程式</i>"
#: 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 ""
"<span size=\"small\">This program comes with ABSOLUTELY NO WARRANTY.\n"
-"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>"
+"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>"
msgstr ""
+"#-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n"
"<span size=\"small\">本程式「絕無任何擔保」。\n"
"請見 <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0.html\">GNU "
-"通用公眾授權第 2 版,或後續版本</a> 深入瞭解更多細節。</span>"
+"通用公眾授權第 2 版,或後續版本</a> 深入瞭解更多細節。</span>\n"
+"#-#-#-#-# zh_TW.po (Dash To Panel) #-#-#-#-#\n"
+"<span size=\"small\">本程式不提供任何擔保。\n"
+"請檢視 <a href=\"https://www.gnu.org/licenses/old-licenses/gpl-2.0."
+"html\">GNU 通用公共許可證 (GPL),第二版或更新版</a> 以瞭解詳情。</span>"
-#: 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: <Shift>, <Ctrl>, <Alt>, <Super>"
-msgstr "語法:<Shift>, <Ctrl>, <Alt>, <Super>"
+msgstr ""
+"#-#-#-#-# zh_TW.po (gnome-shell-extensions gnome-3-0) #-#-#-#-#\n"
+"語法:<Shift>, <Ctrl>, <Alt>, <Super>\n"
+"#-#-#-#-# zh_TW.po (Dash To Panel) #-#-#-#-#\n"
+"語法: <Shift>, <Ctrl>, <Alt>, <Super>"
#: 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 <i>AppMenu</i> items"
+msgstr "整合 <i>AppMenu</i> 項目"
+
+#: Settings.ui.h:20
+msgid "<i>Show Details</i> menu item"
+msgstr "<i>顯示詳細資料</i> 選單項目"
+
+#: 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. <Super>i"
+msgstr "例如 <Super>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. <Super>q"
+msgstr "例如 <Super>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 <i>Activities</i> button"
+msgstr "顯示<i>活動</i>按鈕"
+
+#: Settings.ui.h:188
+msgid "Show <i>Desktop</i> button"
+msgstr "顯示<i>桌面</i>按鈕"
+
+#: Settings.ui.h:189
+msgid "Show <i>AppMenu</i> button"
+msgstr "顯示<i>應用選單</i>按鈕"
+
+#: 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?= <fmuellner@gnome.org>
Date: Thu, 2 Dec 2021 19:39:50 +0100
Subject: [PATCH 7/8] Add classification-banner
---
extensions/classification-banner/adwShim.js | 202 ++++++++++++++++++
extensions/classification-banner/extension.js | 169 +++++++++++++++
extensions/classification-banner/meson.build | 8 +
.../classification-banner/metadata.json.in | 11 +
...tensions.classification-banner.gschema.xml | 29 +++
extensions/classification-banner/prefs.js | 197 +++++++++++++++++
.../classification-banner/stylesheet.css | 3 +
meson.build | 1 +
8 files changed, 620 insertions(+)
create mode 100644 extensions/classification-banner/adwShim.js
create mode 100644 extensions/classification-banner/extension.js
create mode 100644 extensions/classification-banner/meson.build
create mode 100644 extensions/classification-banner/metadata.json.in
create mode 100644 extensions/classification-banner/org.gnome.shell.extensions.classification-banner.gschema.xml
create mode 100644 extensions/classification-banner/prefs.js
create mode 100644 extensions/classification-banner/stylesheet.css
diff --git a/extensions/classification-banner/adwShim.js b/extensions/classification-banner/adwShim.js
new file mode 100644
index 00000000..46a8afca
--- /dev/null
+++ b/extensions/classification-banner/adwShim.js
@@ -0,0 +1,202 @@
+/* exported init PreferencesPage PreferencesGroup ActionRow ComboRow */
+const { Gio, GObject, Gtk } = imports.gi;
+
+function init() {
+}
+
+var PreferencesGroup = GObject.registerClass(
+class PreferencesGroup extends Gtk.Widget {
+ _init(params) {
+ super._init({
+ ...params,
+ layout_manager: new Gtk.BinLayout(),
+ });
+
+ this._listBox = new Gtk.ListBox({
+ css_classes: ['rich-list'],
+ show_separators: true,
+ selection_mode: Gtk.SelectionMode.NONE,
+ });
+
+ const frame = new Gtk.Frame({ child: this._listBox });
+ frame.set_parent(this);
+ }
+
+ add(child) {
+ this._listBox.append(child);
+ }
+});
+
+var PreferencesPage = GObject.registerClass(
+class PreferencesPage extends Gtk.Widget {
+ _init(params) {
+ super._init({
+ ...params,
+ layout_manager: new Gtk.BinLayout(),
+ });
+
+ const scrolledWindow = new Gtk.ScrolledWindow({
+ hscrollbar_policy: Gtk.PolicyType.NEVER,
+ });
+ scrolledWindow.set_parent(this);
+
+ this._box = new Gtk.Box({
+ orientation: Gtk.Orientation.VERTICAL,
+ halign: Gtk.Align.CENTER,
+ spacing: 24,
+ margin_top: 24,
+ margin_bottom: 24,
+ margin_start: 12,
+ margin_end: 12,
+ });
+ scrolledWindow.set_child(this._box);
+
+ const provider = new Gtk.CssProvider();
+ provider.load_from_data('* { min-width: 500px; }');
+ this._box.get_style_context().add_provider(provider,
+ Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION);
+ }
+
+ add(child) {
+ this._box.append(child);
+ }
+});
+
+var ActionRow = GObject.registerClass({
+ Properties: {
+ 'activatable-widget': GObject.ParamSpec.object(
+ 'activatable-widget', 'activatable-widget', 'activatable-widget',
+ GObject.ParamFlags.READWRITE,
+ Gtk.Widget),
+ 'title': GObject.ParamSpec.string(
+ 'title', 'title', 'title',
+ GObject.ParamFlags.READWRITE,
+ null),
+ },
+}, class ActionRow extends Gtk.ListBoxRow {
+ _init(params) {
+ super._init(params);
+
+ const box = new Gtk.Box({
+ spacing: 12,
+ });
+ this.set_child(box);
+
+ this._prefixes = new Gtk.Box({
+ spacing: 12,
+ visible: false,
+ });
+ box.append(this._prefixes);
+
+ this._title = new Gtk.Label({
+ css_classes: ['title'],
+ hexpand: true,
+ xalign: 0,
+ });
+ box.append(this._title);
+
+ this._suffixes = new Gtk.Box({
+ spacing: 12,
+ visible: false,
+ });
+ box.append(this._suffixes);
+
+ this.bind_property('title',
+ this._title, 'label',
+ GObject.BindingFlags.SYNC_CREATE);
+
+ this.connect('notify::parent', () => {
+ const parent = this.get_parent();
+ parent?.connect('row-activated', (list, row) => {
+ if (row === this)
+ this.activate();
+ });
+ });
+ }
+
+ vfunc_activate() {
+ this.activatable_widget?.mnemonic_activate(false);
+ }
+
+ activate() {
+ this.vfunc_activate();
+ }
+
+ add_prefix(child) {
+ this._prefixes.append(child);
+ this._prefixes.show();
+ }
+
+ add_suffix(child) {
+ this._suffixes.append(child);
+ this._suffixes.show();
+ }
+});
+
+var ComboRow = GObject.registerClass({
+ Properties: {
+ 'selected-item': GObject.ParamSpec.object(
+ 'selected-item', 'selected-item', 'selected-item',
+ GObject.ParamFlags.READABLE,
+ GObject.Object),
+ 'model': GObject.ParamSpec.object(
+ 'model', 'model', 'model',
+ GObject.ParamFlags.READWRITE,
+ Gio.ListModel),
+ 'list-factory': GObject.ParamSpec.object(
+ 'list-factory', 'list-factory', 'list-factory',
+ GObject.ParamFlags.READWRITE,
+ Gtk.ListItemFactory),
+ 'expression': Gtk.param_spec_expression(
+ 'expression', 'expression', 'expression',
+ GObject.ParamFlags.READWRITE),
+ },
+}, class ComboRow extends ActionRow {
+ _init(params) {
+ super._init({
+ ...params,
+ activatable: true,
+ });
+
+ const box = new Gtk.Box({
+ valign: Gtk.Align.CENTER,
+ });
+ box.append(new Gtk.Image({
+ icon_name: 'pan-down-symbolic',
+ }));
+ this.add_suffix(box);
+
+ this._popover = new Gtk.Popover();
+ this._popover.set_parent(box);
+
+ this._selection = new Gtk.SingleSelection();
+ this._selected = -1;
+
+ this._listView = new Gtk.ListView({
+ model: this._selection,
+ single_click_activate: true,
+ });
+ this._popover.set_child(this._listView);
+
+ this._listView.connect('activate', (view, pos) => {
+ this._selected = pos;
+ this.notify('selected-item');
+ this._popover.popdown();
+ });
+
+ this.bind_property('model',
+ this._selection, 'model',
+ GObject.BindingFlags.SYNC_CREATE);
+ this.bind_property('list-factory',
+ this._listView, 'factory',
+ GObject.BindingFlags.SYNC_CREATE);
+ }
+
+ get selected_item() {
+ return this._selection.selected_item;
+ }
+
+ vfunc_activate() {
+ this._popover.popup();
+ }
+});
diff --git a/extensions/classification-banner/extension.js b/extensions/classification-banner/extension.js
new file mode 100644
index 00000000..cc046e01
--- /dev/null
+++ b/extensions/classification-banner/extension.js
@@ -0,0 +1,169 @@
+/* extension.js
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+/* exported init */
+
+const { Clutter, Gio, GLib, GObject, St } = imports.gi;
+
+const ExtensionUtils = imports.misc.extensionUtils;
+const Layout = imports.ui.layout;
+const Main = imports.ui.main;
+
+const ClassificationBanner = GObject.registerClass(
+class ClassificationBanner extends Clutter.Actor {
+ _init(index) {
+ super._init({
+ layout_manager: new Clutter.BinLayout(),
+ constraints: new Layout.MonitorConstraint({
+ work_area: true,
+ index,
+ }),
+ });
+
+ this._settings = ExtensionUtils.getSettings();
+ this.connect('destroy', () => {
+ this._settings?.run_dispose();
+ this._settings = null;
+ });
+
+ this._topBanner = new St.BoxLayout({
+ style_class: 'classification-banner',
+ x_expand: true,
+ y_expand: true,
+ y_align: Clutter.ActorAlign.START,
+ });
+ this.add_child(this._topBanner);
+ this._settings.bind('top-banner',
+ this._topBanner, 'visible',
+ Gio.SettingsBindFlags.GET);
+
+ this._bottomBanner = new St.BoxLayout({
+ style_class: 'classification-banner',
+ x_expand: true,
+ y_expand: true,
+ y_align: Clutter.ActorAlign.END,
+ });
+ this.add_child(this._bottomBanner);
+ this._settings.bind('bottom-banner',
+ this._bottomBanner, 'visible',
+ Gio.SettingsBindFlags.GET);
+
+ for (const banner of [this._topBanner, this._bottomBanner]) {
+ const label = new St.Label({
+ style_class: 'classification-message',
+ x_align: Clutter.ActorAlign.CENTER,
+ x_expand: true,
+ });
+ banner.add_child(label);
+
+ this._settings.bind('message',
+ label, 'text',
+ Gio.SettingsBindFlags.GET);
+ }
+
+ const hostLabel = new St.Label({
+ style_class: 'classification-system-info',
+ text: GLib.get_host_name(),
+ });
+ this._topBanner.insert_child_at_index(hostLabel, 0);
+ this._settings.bind('system-info',
+ hostLabel, 'visible',
+ Gio.SettingsBindFlags.GET);
+
+ const userLabel = new St.Label({
+ style_class: 'classification-system-info',
+ text: GLib.get_user_name(),
+ });
+ this._topBanner.add_child(userLabel);
+ this._settings.bind('system-info',
+ userLabel, 'visible',
+ Gio.SettingsBindFlags.GET);
+
+ this._settings.connect('changed::color',
+ () => this._updateStyles());
+ this._settings.connect('changed::background-color',
+ () => this._updateStyles());
+ this._updateStyles();
+ }
+
+ _getColorSetting(key) {
+ const str = this._settings.get_string(key);
+ const [valid, color] = Clutter.Color.from_string(str);
+ if (!valid)
+ return '';
+ const { red, green, blue, alpha } = color;
+ return `${key}: rgba(${red},${green},${blue},${alpha / 255});`;
+ }
+
+ _updateStyles() {
+ const bgStyle = this._getColorSetting('background-color');
+ const fgStyle = this._getColorSetting('color');
+ const style = `${bgStyle}${fgStyle}`;
+ this._topBanner.set({ style });
+ this._bottomBanner.set({ style });
+ }
+});
+
+class Extension {
+ constructor() {
+ this._banners = [];
+ }
+
+ _updateMonitors() {
+ const { monitors, panelBox, primaryIndex } = Main.layoutManager;
+ if (monitors.length !== this._banners.length) {
+ this._clearBanners();
+
+ for (let i = 0; i < monitors.length; i++) {
+ const banner = new ClassificationBanner(i);
+ Main.uiGroup.add_child(banner);
+ this._banners.push(banner);
+ }
+ }
+
+ const primaryBanner = this._banners[primaryIndex];
+ if (primaryBanner)
+ Main.uiGroup.set_child_below_sibling(primaryBanner, panelBox);
+ }
+
+ _clearBanners() {
+ this._banners.forEach(b => b.destroy());
+ this._banners = [];
+ }
+
+ enable() {
+ this._monitorsChangedId = Main.layoutManager.connect('monitors-changed',
+ () => this._updateMonitors());
+ this._updateMonitors();
+ }
+
+ disable() {
+ if (this._monitorsChangedId) {
+ Main.layoutManager.disconnect(this._monitorsChangedId);
+ delete this._monitorsChangedId;
+ }
+ this._clearBanners();
+ }
+}
+
+/**
+ * @returns {Extension} - the extension's state object
+ */
+function init() {
+ return new Extension();
+}
diff --git a/extensions/classification-banner/meson.build b/extensions/classification-banner/meson.build
new file mode 100644
index 00000000..b027381d
--- /dev/null
+++ b/extensions/classification-banner/meson.build
@@ -0,0 +1,8 @@
+extension_data += configure_file(
+ input: metadata_name + '.in',
+ output: metadata_name,
+ configuration: metadata_conf
+)
+
+extension_sources += files('adwShim.js', 'prefs.js')
+extension_schemas += files(metadata_conf.get('gschemaname') + '.gschema.xml')
diff --git a/extensions/classification-banner/metadata.json.in b/extensions/classification-banner/metadata.json.in
new file mode 100644
index 00000000..f93b1a2d
--- /dev/null
+++ b/extensions/classification-banner/metadata.json.in
@@ -0,0 +1,11 @@
+{
+"extension-id": "@extension_id@",
+"uuid": "@uuid@",
+"settings-schema": "@gschemaname@",
+"gettext-domain": "@gettext_domain@",
+"name": "Classification Banner",
+"description": "Display classification level banner",
+"shell-version": [ "@shell_current@" ],
+"session-modes": [ "gdm", "unlock-dialog", "user" ],
+"url": "@url@"
+}
diff --git a/extensions/classification-banner/org.gnome.shell.extensions.classification-banner.gschema.xml b/extensions/classification-banner/org.gnome.shell.extensions.classification-banner.gschema.xml
new file mode 100644
index 00000000..0314ef60
--- /dev/null
+++ b/extensions/classification-banner/org.gnome.shell.extensions.classification-banner.gschema.xml
@@ -0,0 +1,29 @@
+<schemalist gettext-domain="gnome-shell-extensions">
+ <schema id="org.gnome.shell.extensions.classification-banner"
+ path="/org/gnome/shell/extensions/classification-banner/">
+ <key name="top-banner" type="b">
+ <default>true</default>
+ <summary>Show a banner at the top</summary>
+ </key>
+ <key name="bottom-banner" type="b">
+ <default>true</default>
+ <summary>Show a banner at the bottom</summary>
+ </key>
+ <key name="message" type="s">
+ <default>"UNCLASSIFIED"</default>
+ <summary>classification message</summary>
+ </key>
+ <key name="color" type="s">
+ <default>"#fff"</default>
+ <summary>text color</summary>
+ </key>
+ <key name="background-color" type="s">
+ <default>"rgba(0,122,51,0.75)"</default>
+ <summary>background color</summary>
+ </key>
+ <key name="system-info" type="b">
+ <default>false</default>
+ <summary>Include system info in top banner</summary>
+ </key>
+ </schema>
+</schemalist>
diff --git a/extensions/classification-banner/prefs.js b/extensions/classification-banner/prefs.js
new file mode 100644
index 00000000..a5dd8af1
--- /dev/null
+++ b/extensions/classification-banner/prefs.js
@@ -0,0 +1,197 @@
+/* exported init buildPrefsWidget */
+const { Gdk, Gio, GObject, Gtk } = imports.gi;
+
+const ExtensionUtils = imports.misc.extensionUtils;
+const Gettext = imports.gettext.domain('gnome-shell-extensions');
+const _ = Gettext.gettext;
+
+const Me = ExtensionUtils.getCurrentExtension();
+const Adw = Me.imports.adwShim;
+
+let settings = null;
+
+const GenericPrefs = GObject.registerClass(
+class GenericPrefs extends Adw.PreferencesGroup {
+ _init() {
+ super._init();
+
+ this._actionGroup = new Gio.SimpleActionGroup();
+ this.insert_action_group('options', this._actionGroup);
+
+ this._actionGroup.add_action(settings.create_action('top-banner'));
+ this._actionGroup.add_action(settings.create_action('bottom-banner'));
+ this._actionGroup.add_action(settings.create_action('system-info'));
+
+ this.add(this._createSettingsRow('Top banner', 'top-banner'));
+ this.add(this._createSettingsRow('Bottom banner', 'bottom-banner'));
+ this.add(this._createSettingsRow('System info', 'system-info'));
+ }
+
+ _createSettingsRow(title, key) {
+ const activatableWidget = new Gtk.Switch({
+ valign: Gtk.Align.CENTER,
+ action_name: `options.${key}`,
+ });
+ const row = new Adw.ActionRow({
+ activatableWidget,
+ title,
+ });
+ row.add_prefix(activatableWidget);
+
+ return row;
+ }
+});
+
+const BannerPreset = GObject.registerClass({
+ Properties: {
+ 'message': GObject.ParamSpec.string(
+ 'message', 'message', 'message',
+ GObject.ParamFlags.READWRITE,
+ null),
+ 'color': GObject.ParamSpec.string(
+ 'color', 'color', 'color',
+ GObject.ParamFlags.READWRITE,
+ null),
+ 'background-color': GObject.ParamSpec.string(
+ 'background-color', 'background-color', 'background-color',
+ GObject.ParamFlags.READWRITE,
+ null),
+ },
+}, class BannerPreset extends GObject.Object {});
+
+const AppearancePrefs = GObject.registerClass(
+class AppearancePrefs extends Adw.PreferencesGroup {
+ _init() {
+ super._init();
+
+ const model = new Gio.ListStore({ item_type: BannerPreset.$gtype });
+ model.append(new BannerPreset({
+ message: 'UNCLASSIFIED',
+ color: '#fff',
+ background_color: 'rgba(0, 122, 51, 0.75)',
+ }));
+ model.append(new BannerPreset({
+ message: 'CONFIDENTIAL',
+ color: '#fff',
+ background_color: 'rgba(0, 51, 160, 0.75)',
+ }));
+ model.append(new BannerPreset({
+ message: 'SECRET',
+ color: '#fff',
+ background_color: 'rgba(200, 16, 46, 0.75)',
+ }));
+ model.append(new BannerPreset({
+ message: 'TOP SECRET',
+ color: '#fff',
+ background_color: 'rgba(255, 103, 31, 0.75)',
+ }));
+ model.append(new BannerPreset({
+ message: 'TOP SECRET//SCI',
+ color: '#000',
+ background_color: 'rgba(247, 234, 72, 0.75)',
+ }));
+
+ let row, activatableWidget;
+ row = this._createPresetsRow(model);
+ row.connect('notify::selected-item', comboRow => {
+ const { message, color, backgroundColor } = comboRow.selected_item;
+ settings.set_string('message', message);
+ settings.set_string('color', color);
+ settings.set_string('background-color', backgroundColor);
+ });
+ this.add(row);
+
+ activatableWidget = new Gtk.Entry({
+ valign: Gtk.Align.CENTER,
+ });
+ settings.bind('message',
+ activatableWidget, 'text',
+ Gio.SettingsBindFlags.DEFAULT);
+ row = new Adw.ActionRow({ title: _('Message'), activatableWidget });
+ row.add_suffix(activatableWidget);
+ this.add(row);
+
+ activatableWidget = this._createColorButton('background-color', {
+ use_alpha: true,
+ });
+ row = new Adw.ActionRow({ title: _('Background color'), activatableWidget });
+ row.add_suffix(activatableWidget);
+ this.add(row);
+
+ activatableWidget = this._createColorButton('color');
+ row = new Adw.ActionRow({ title: _('Text color'), activatableWidget });
+ row.add_suffix(activatableWidget);
+ this.add(row);
+ }
+
+ _createPresetsRow(model) {
+ const listFactory = new Gtk.SignalListItemFactory();
+ listFactory.connect('setup',
+ (f, item) => item.set_child(new Gtk.Label()));
+ listFactory.connect('bind', (f, listItem) => {
+ const { child, item } = listItem;
+
+ const provider = new Gtk.CssProvider();
+ provider.load_from_data(`* {
+ border-radius: 99px;
+ padding: 6px;
+ color: ${item.color};
+ background-color: ${item.background_color};
+ }`);
+ child.get_style_context().add_provider(provider,
+ Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION);
+ child.label = item.message;
+ });
+
+ return new Adw.ComboRow({
+ title: _('Presets'),
+ model,
+ listFactory,
+ expression: Gtk.ConstantExpression.new_for_value(''),
+ });
+ }
+
+ _createColorButton(key, params = {}) {
+ const rgba = new Gdk.RGBA();
+ rgba.parse(settings.get_string(key));
+
+ const button = new Gtk.ColorButton({
+ ...params,
+ rgba,
+ valign: Gtk.Align.CENTER,
+ });
+ settings.connect(`changed::${key}`, () => {
+ const newRgba = new Gdk.RGBA();
+ newRgba.parse(settings.get_string(key));
+ if (!newRgba.equal(button.rgba))
+ button.set({ rgba: newRgba });
+ });
+ button.connect('notify::rgba',
+ () => settings.set_string(key, button.rgba.to_string()));
+ return button;
+ }
+});
+
+const ClassificationPrefs = GObject.registerClass(
+class ClassificationPrefs extends Adw.PreferencesPage {
+ _init() {
+ super._init();
+
+ this.add(new AppearancePrefs());
+ this.add(new GenericPrefs());
+ }
+});
+
+/** */
+function init() {
+ Adw.init();
+ ExtensionUtils.initTranslations();
+ settings = ExtensionUtils.getSettings();
+}
+
+/**
+ * @returns {Gtk.Widget} - the prefs widget
+ */
+function buildPrefsWidget() {
+ return new ClassificationPrefs();
+}
diff --git a/extensions/classification-banner/stylesheet.css b/extensions/classification-banner/stylesheet.css
new file mode 100644
index 00000000..fb6a697e
--- /dev/null
+++ b/extensions/classification-banner/stylesheet.css
@@ -0,0 +1,3 @@
+.classification-system-info { padding: 0 24px; }
+.classification-message { font-weight: bold; }
+.classification-banner { font-size: 0.9em; }
diff --git a/meson.build b/meson.build
index b3212c34..c73261f7 100644
--- a/meson.build
+++ b/meson.build
@@ -45,6 +45,7 @@ default_extensions += [
all_extensions = default_extensions
all_extensions += [
'auto-move-windows',
+ 'classification-banner',
'dash-to-dock',
'dash-to-panel',
'native-window-placement',
--
2.41.0
From 55f40c6c9c3fffe27dab3490412e1a7268393814 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
Date: Thu, 12 Jan 2023 19:43:52 +0100
Subject: [PATCH 8/8] Add custom-menu extension
---
extensions/custom-menu/config.js | 484 ++++++++++++++++++++++++
extensions/custom-menu/extension.js | 217 +++++++++++
extensions/custom-menu/meson.build | 7 +
extensions/custom-menu/metadata.json.in | 10 +
extensions/custom-menu/stylesheet.css | 1 +
meson.build | 1 +
6 files changed, 720 insertions(+)
create mode 100644 extensions/custom-menu/config.js
create mode 100644 extensions/custom-menu/extension.js
create mode 100644 extensions/custom-menu/meson.build
create mode 100644 extensions/custom-menu/metadata.json.in
create mode 100644 extensions/custom-menu/stylesheet.css
diff --git a/extensions/custom-menu/config.js b/extensions/custom-menu/config.js
new file mode 100644
index 00000000..652c0223
--- /dev/null
+++ b/extensions/custom-menu/config.js
@@ -0,0 +1,484 @@
+const Gio = imports.gi.Gio;
+const GLib = imports.gi.GLib;
+const Json = imports.gi.Json;
+const Lang = imports.lang;
+const Main = imports.ui.main;
+const PopupMenu = imports.ui.popupMenu;
+const ByteArray = imports.byteArray;
+
+const Me = imports.misc.extensionUtils.getCurrentExtension();
+const getLogger = Me.imports.extension.getLogger;
+
+const Entry = new Lang.Class({
+ Name: 'Entry',
+ Abstract: true,
+
+ _init: function(prop) {
+ this.type = prop.type;
+ this.title = prop.title || "";
+
+ this.__vars = prop.__vars || [];
+ this.updateEnv(prop);
+ },
+
+ setTitle: function(text) {
+ this.item.label.get_clutter_text().set_text(text);
+ },
+
+ updateEnv: function(prop) {
+ this.__env = {}
+ if(!this.__vars) return;
+
+ for(let i in this.__vars) {
+ let v = this.__vars[i];
+ this.__env[v] = prop[v] ? String(prop[v]) : "";
+ }
+ },
+
+ // the pulse function should be read as "a pulse arrives"
+ pulse: function() { },
+
+ _try_destroy: function() {
+ try {
+ if(this.item && this.item.destroy)
+ this.item.destroy();
+ } catch(e) { /* Ignore all errors during destory*/ }
+ },
+});
+
+const DerivedEntry = new Lang.Class({
+ Name: 'DerivedEntry',
+
+ _init: function(prop) {
+ if(!prop.base)
+ throw new Error("Base entry not specified in type definition.");
+
+ this.base = prop.base;
+ this.vars = prop.vars || [];
+
+ delete prop.base;
+ delete prop.vars;
+
+ this.prop = prop;
+ },
+
+ createInstance: function(addit_prop) {
+ let cls = type_map[this.base];
+ if(!cls) throw new Error("Bad base class.");
+ if(cls.createInstance) throw new Error("Not allowed to derive from dervied types");
+
+ for(let rp in this.prop)
+ addit_prop[rp] = this.prop[rp];
+ addit_prop.__vars = this.vars;
+
+ let instance = new cls(addit_prop);
+
+ return instance;
+ },
+});
+
+/*
+ * callback: function (stdout, stderr, exit_status) { }
+ */
+let __pipeOpenQueue = [];
+let __pipeExecTimer = null;
+
+function pipeOpen(cmdline, env, callback) {
+ let param = [cmdline, env, callback]
+ __pipeOpenQueue.push(param);
+ if(__pipeExecTimer === null) {
+ __pipeExecTimer = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 50,
+ function() {
+ let param = __pipeOpenQueue.shift();
+ if(param === undefined) {
+ __pipeExecTimer = null;
+ return false;
+ }
+ if(realPipeOpen) realPipeOpen(param[0], param[1], param[2]);
+ return true;
+ });
+
+ }
+}
+
+function realPipeOpen(cmdline, env, callback) {
+ let user_cb = callback;
+ let proc;
+
+ function wait_cb(_, _res) {
+ let stdout_pipe = proc.get_stdout_pipe();
+ let stderr_pipe = proc.get_stderr_pipe();
+
+ let stdout_content;
+ let stderr_content;
+
+ // Only the first GLib.MAXINT16 characters are fetched for optimization.
+ stdout_pipe.read_bytes_async(GLib.MAXINT16, 0, null, function(osrc, ores) {
+ stdout_content = ByteArray.toString(stdout_pipe.read_bytes_finish(ores).get_data());
+ stdout_pipe.close(null);
+
+ stderr_pipe.read_bytes_async(GLib.MAXINT16, 0, null, function(esrc, eres) {
+ stderr_content = ByteArray.toString(stderr_pipe.read_bytes_finish(eres).get_data());
+ stderr_pipe.close(null);
+
+ user_cb(stdout_content, stderr_content, proc.get_exit_status());
+ });
+ });
+ }
+
+ if(user_cb) {
+ let _pipedLauncher = new Gio.SubprocessLauncher({
+ flags:
+ Gio.SubprocessFlags.STDERR_PIPE |
+ Gio.SubprocessFlags.STDOUT_PIPE
+ });
+ for(let key in env) {
+ _pipedLauncher.setenv(key, env[key], true);
+ }
+ proc = _pipedLauncher.spawnv(['bash', '-c', cmdline]);
+ proc.wait_async(null, wait_cb);
+ } else {
+ // Detached launcher is used to spawn commands that we are not concerned
+ // about its result.
+ let _detacLauncher = new Gio.SubprocessLauncher();
+ for(let key in env) {
+ _detacLauncher.setenv(key, env[key], true);
+ }
+ proc = _detacLauncher.spawnv(['bash', '-c', cmdline]);
+ }
+
+ getLogger().info("Spawned " + cmdline);
+
+ // log(`Spawning ${cmdline}`); TODO: BEN
+ return proc.get_identifier();
+}
+
+function _generalSpawn(command, env, title) {
+ title = title || "Process";
+ pipeOpen(command, env, function(stdout, stderr, exit_status) {
+ if(exit_status != 0) {
+ log
+ getLogger().warning(stderr);
+ getLogger().notify("proc", title +
+ " exited with status " + exit_status, stderr);
+ }
+ });
+}
+
+function quoteShellArg(arg) {
+ arg = arg.replace(/'/g, "'\"'\"'");
+ return "'" + arg + "'";
+}
+
+// This cache is used to reduce detector cost. Each time creating an item, it
+// check if the result of this detector is cached, which prevent the togglers
+// from running detector on each creation. This is useful especially in search
+// mode.
+let _toggler_state_cache = { };
+
+const TogglerEntry = new Lang.Class({
+ Name: 'TogglerEntry',
+ Extends: Entry,
+
+ _init: function(prop) {
+ this.parent(prop);
+
+ this.command_on = prop.command_on || "";
+ this.command_off = prop.command_off || "";
+ this.detector = prop.detector || "";
+ this.auto_on = prop.auto_on || false;
+ this.notify_when = prop.notify_when || [];
+ // if the switch is manually turned off, auto_on is disabled.
+ this._manually_switched_off = false;
+ this.pulse(); // load initial state
+ },
+
+ createItem: function() {
+ this._try_destroy();
+ this.item = new PopupMenu.PopupSwitchMenuItem(this.title, false);
+ this.item.label.get_clutter_text().set_use_markup(true);
+ this.item.connect('toggled', Lang.bind(this, this._onManuallyToggled));
+ this._loadState();
+ return this.item;
+ },
+
+ _onManuallyToggled: function(_, state) {
+ // when switched on again, this flag will get cleared.
+ this._manually_switched_off = !state;
+ this._storeState(state);
+ this._onToggled(state);
+ },
+
+ _onToggled: function(state) {
+ if(state)
+ _generalSpawn(this.command_on, this.__env, this.title);
+ else
+ _generalSpawn(this.command_off, this.__env, this.title);
+ },
+
+ _detect: function(callback) {
+ // abort detecting if detector is an empty string
+ if(!this.detector)
+ return;
+
+ pipeOpen(this.detector, this.__env, function(out) {
+ out = String(out);
+ callback(!Boolean(out.match(/^\s*$/)));
+ });
+ },
+
+ compareState: function(new_state) {
+ // compare the new state with cached state
+ // notify when state is different
+ let old_state = _toggler_state_cache[this.detector];
+ if(old_state === undefined) return;
+ if(old_state == new_state) return;
+
+ if(this.notify_when.indexOf(new_state ? "on" : "off") >= 0) {
+ let not_str = this.title + (new_state ? " started." : " stopped.");
+ if(!new_state && this.auto_on)
+ not_str += " Attempt to restart it now.";
+ getLogger().notify("state", not_str);
+ }
+ },
+
+ _storeState: function(state) {
+ let hash = JSON.stringify({ env: this.__env, detector: this.detector });
+ _toggler_state_cache[hash] = state;
+ },
+
+ _loadState: function() {
+ let hash = JSON.stringify({ env: this.__env, detector: this.detector });
+ let state = _toggler_state_cache[hash];
+ if(state !== undefined)
+ this.item.setToggleState(state); // doesn't emit 'toggled'
+ },
+
+ pulse: function() {
+ this._detect(Lang.bind(this, function(state) {
+ this.compareState(state);
+
+ this._storeState(state);
+ this._loadState();
+ //global.log(this.title + ': ' + this._manually_switched_off);
+
+ if(!state && !this._manually_switched_off && this.auto_on)
+ // do not call setToggleState here, because command_on may fail
+ this._onToggled(this.item, true);
+ }));
+ },
+
+ perform: function() {
+ this.item.toggle();
+ },
+});
+
+const LauncherEntry = new Lang.Class({
+ Name: 'LauncherEntry',
+ Extends: Entry,
+
+ _init: function(prop) {
+ this.parent(prop);
+
+ this.command = prop.command || "";
+ },
+
+ createItem: function() {
+ this._try_destroy();
+
+ this.item = new PopupMenu.PopupMenuItem(this.title);
+ this.item.label.get_clutter_text().set_use_markup(true);
+ this.item.connect('activate', Lang.bind(this, this._onClicked));
+
+ return this.item;
+ },
+
+ _onClicked: function(_) {
+ _generalSpawn(this.command, this.__env, this.title);
+ },
+
+ perform: function() {
+ this.item.emit('activate');
+ },
+});
+
+const SubMenuEntry = new Lang.Class({
+ Name: 'SubMenuEntry',
+ Extends: Entry,
+
+ _init: function(prop) {
+ this.parent(prop)
+
+ if(prop.entries == undefined)
+ throw new Error("Expected entries provided in submenu entry.");
+
+ this.entries = [];
+
+ for(let i in prop.entries) {
+ let entry_prop = prop.entries[i];
+ let entry = createEntry(entry_prop);
+ this.entries.push(entry);
+ }
+ },
+
+ createItem: function() {
+ this._try_destroy();
+
+ this.item = new PopupMenu.PopupSubMenuMenuItem(this.title);
+ this.item.label.get_clutter_text().set_use_markup(true);
+ for(let i in this.entries) {
+ let entry = this.entries[i];
+ this.item.menu.addMenuItem(entry.createItem());
+ }
+
+ return this.item;
+ },
+
+ pulse: function() {
+ for(let i in this.entries) {
+ let entry = this.entries[i];
+ entry.pulse();
+ }
+ }
+});
+
+const SeparatorEntry = new Lang.Class({
+ Name: 'SeparatorEntry',
+ Extends: Entry,
+
+ _init: function(prop) { },
+
+ createItem: function() {
+ this._try_destroy();
+
+ this.item = new PopupMenu.PopupSeparatorMenuItem(this.title);
+ this.item.label.get_clutter_text().set_use_markup(true);
+
+ return this.item;
+ },
+});
+
+let type_map = {};
+
+////////////////////////////////////////////////////////////////////////////////
+// Config Loader loads config from JSON file.
+
+// convert Json Nodes (GLib based) to native javascript value.
+function convertJson(node) {
+ if(node.get_node_type() == Json.NodeType.VALUE)
+ return node.get_value();
+ if(node.get_node_type() == Json.NodeType.OBJECT) {
+ let obj = {}
+ node.get_object().foreach_member(function(_, k, v_n) {
+ obj[k] = convertJson(v_n);
+ });
+ return obj;
+ }
+ if(node.get_node_type() == Json.NodeType.ARRAY) {
+ let arr = []
+ node.get_array().foreach_element(function(_, i, elem) {
+ arr.push(convertJson(elem));
+ });
+ return arr;
+ }
+ return null;
+}
+
+//
+function createEntry(entry_prop) {
+ if(!entry_prop.type)
+ throw new Error("No type specified in entry.");
+
+ let cls = type_map[entry_prop.type];
+ if(!cls)
+ throw new Error("Incorrect type '" + entry_prop.type + "'");
+ else if(cls.createInstance)
+ return cls.createInstance(entry_prop);
+
+ return new cls(entry_prop);
+}
+
+var Loader = new Lang.Class({
+ Name: 'ConfigLoader',
+
+ _init: function(filename) {
+ if(filename)
+ this.loadConfig(filename);
+ },
+
+ loadConfig: function(filename) {
+ // reset type_map everytime load the config
+ type_map = {
+ launcher: LauncherEntry,
+ toggler: TogglerEntry,
+ submenu: SubMenuEntry,
+ separator: SeparatorEntry
+ };
+
+ type_map.systemd = new DerivedEntry({
+ base: 'toggler',
+ vars: ['unit'],
+ command_on: "pkexec systemctl start ${unit}",
+ command_off: "pkexec systemctl stop ${unit}",
+ detector: "systemctl status ${unit} | grep Active:\\\\s\\*activ[ei]",
+ });
+
+ type_map.tmux = new DerivedEntry({
+ base: 'toggler',
+ vars: ['command', 'session'],
+ command_on: 'tmux new -d -s ${session} bash -c "${command}"',
+ command_off: 'tmux kill-session -t ${session}',
+ detector: 'tmux has -t "${session}" 2>/dev/null && echo yes',
+ });
+
+ /*
+ * Refer to README file for detailed config file format.
+ */
+ this.entries = []; // CAUTION: remove all entries.
+
+ let config_parser = new Json.Parser();
+ config_parser.load_from_file(filename);
+
+ let conf = convertJson(config_parser.get_root());
+ if (conf.entries == undefined)
+ throw new Error("Key 'entries' not found.");
+ if (conf.deftype) {
+ for (let tname in conf.deftype) {
+ if (type_map[tname])
+ throw new Error("Type \""+tname+"\" duplicated.");
+ type_map[tname] = new DerivedEntry(conf.deftype[tname]);
+ }
+ }
+
+ for (let conf_i in conf.entries) {
+ let entry_prop = conf.entries[conf_i];
+ this.entries.push(createEntry(entry_prop));
+ }
+ },
+
+
+ saveDefaultConfig: function(filename) {
+ // Write default config
+ const PERMISSIONS_MODE = 0o640;
+ const jsonString = JSON.stringify({
+ "_homepage_": "https://github.com/andreabenini/gnome-plugin.custom-menu-panel",
+ "_examples_": "https://github.com/andreabenini/gnome-plugin.custom-menu-panel/tree/main/examples",
+ "entries": [ {
+ "type": "launcher",
+ "title": "Edit menu",
+ "command": "gedit $HOME/.entries.json"
+ } ]
+ }, null, 4);
+ let fileConfig = Gio.File.new_for_path(filename);
+ if (GLib.mkdir_with_parents(fileConfig.get_parent().get_path(), PERMISSIONS_MODE) === 0) {
+ fileConfig.replace_contents(jsonString, null, false, Gio.FileCreateFlags.REPLACE_DESTINATION, null);
+ }
+ // Try to load newly saved file
+ try {
+ this.loadConfig(filename);
+ } catch(e) {
+ Main.notify(_('Cannot create and load file: '+filename));
+ }
+ }, /**/
+
+});
diff --git a/extensions/custom-menu/extension.js b/extensions/custom-menu/extension.js
new file mode 100644
index 00000000..9f3e3ce8
--- /dev/null
+++ b/extensions/custom-menu/extension.js
@@ -0,0 +1,217 @@
+/* extension.js
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
+/**
+ * @author Ben
+ * @see https://github.com/andreabenini/gnome-plugin.custom-menu-panel
+ */
+
+/* exported init */
+
+const GETTEXT_DOMAIN = 'custom-menu-panel';
+const CONFIGURATION_FILE = '/.entries.json';
+
+const { GObject, St } = imports.gi;
+
+const Gettext = imports.gettext.domain(GETTEXT_DOMAIN);
+const _ = Gettext.gettext;
+
+const ExtensionUtils = imports.misc.extensionUtils;
+const Lang = imports.lang;
+const GLib = imports.gi.GLib;
+const Gio = imports.gi.Gio;
+const BackgroundMenu = imports.ui.backgroundMenu;
+const Main = imports.ui.main;
+const PanelMenu = imports.ui.panelMenu;
+const PopupMenu = imports.ui.popupMenu;
+
+const Me = imports.misc.extensionUtils.getCurrentExtension();
+const Config = Me.imports.config
+
+const LOGGER_INFO = 0;
+const LOGGER_WARNING = 1;
+const LOGGER_ERROR = 2;
+
+const { BackgroundMenu: OriginalBackgroundMenu } = BackgroundMenu;
+
+
+class CustomMenu extends PopupMenu.PopupMenu {
+ constructor(sourceActor) {
+ super(sourceActor, 0.0, St.Side.TOP, 0);
+
+ this._loadSetup();
+ }
+
+ /**
+ * LOAD Program settings from .entries.json file
+ */
+ _loadSetup() {
+ this.removeAll();
+ // Loading configuration from file
+ this.configLoader = new Config.Loader();
+ try {
+ this.configLoader.loadConfig(GLib.get_home_dir() + CONFIGURATION_FILE); // $HOME/.entries.json
+ } catch(e) {
+ this.configLoader.saveDefaultConfig(GLib.get_home_dir() + CONFIGURATION_FILE); // create default entries
+ }
+ // Build the menu
+ let i = 0;
+ for (let i in this.configLoader.entries) {
+ let item = this.configLoader.entries[i].createItem();
+ this.addMenuItem(item);
+ }
+ } /**/
+}
+
+class CustomBackgroundMenu extends CustomMenu {
+ constructor(layoutManager) {
+ super(layoutManager.dummyCursor);
+
+ this.actor.add_style_class_name('background-menu');
+
+ layoutManager.uiGroup.add_actor(this.actor);
+ this.actor.hide();
+
+ this.connect('open-state-changed', (menu, open) => {
+ if (open)
+ this._updateMaxHeight();
+ });
+ }
+
+ _updateMaxHeight() {
+ const monitor = Main.layoutManager.findMonitorForActor(this.actor);
+ const workArea = Main.layoutManager.getWorkAreaForMonitor(monitor.index);
+ const {scaleFactor} = St.ThemeContext.get_for_stage(global.stage);
+ const vMargins = this.actor.margin_top + this.actor.margin_bottom;
+ const {y: offsetY} = this.sourceActor;
+
+ const maxHeight = Math.round((monitor.height - offsetY - vMargins) / scaleFactor);
+ this.actor.style = `max-height: ${maxHeight}px;`;
+ }
+}
+
+const Indicator = GObject.registerClass(
+ class Indicator extends PanelMenu.Button {
+ _init() {
+ super._init(0.0, _('Custom Menu Panel Indicator'), true);
+ this.add_child(new St.Icon({
+ icon_name: 'view-list-bullet-symbolic',
+ style_class: 'system-status-icon',
+ }));
+
+ this.setMenu(new CustomMenu(this));
+ }
+ }
+);
+
+
+const Logger = new Lang.Class({
+ Name: 'Logger',
+
+ _init: function(log_file) {
+ this._log_file = log_file;
+ // initailize log_backend
+ if(!log_file)
+ this._initEmptyLog();
+ else if(log_file == "gnome-shell")
+ this._initGnomeLog();
+ else
+ this._initFileLog();
+
+ this.level = LOGGER_WARNING;
+
+ this.info = function(t) {
+ if(this.level <= LOGGER_INFO) this.log(t)
+ };
+ this.warning = function(t) {
+ if(this.level <= LOGGER_WARNING) this.log(t)
+ };
+ this.error = function(t) {
+ if(this.level <= LOGGER_ERROR) this.log(t);
+ };
+ },
+
+ _initEmptyLog: function() {
+ this.log = function(_) { };
+ },
+
+ _initGnomeLog: function() {
+ this.log = function(s) {
+ global.log("custom-menu-panel> " + s);
+ };
+ },
+
+ _initFileLog: function() {
+ this.log = function(s) {
+ // all operations are synchronous: any needs to optimize?
+ if(!this._output_file || !this._output_file.query_exists(null) ||
+ !this._fstream || this._fstream.is_closed()) {
+
+ this._output_file = Gio.File.new_for_path(this._log_file);
+ this._fstream = this._output_file.append_to(
+ Gio.FileCreateFlags.NONE, null);
+
+ if(!this._fstream instanceof Gio.FileIOStream) {
+ this._initGnomeLog();
+ this.log("IOError: Failed to append to " + this._log_file +
+ " [Gio.IOErrorEnum:" + this._fstream + "]");
+ return;
+ }
+ }
+
+ this._fstream.write(String(new Date())+" "+s+"\n", null);
+ this._fstream.flush(null);
+ }
+ },
+
+ notify: function(t, str, details) {
+ this.ncond = this.ncond || ['proc', 'ext', 'state'];
+ if(this.ncond.indexOf(t) < 0) return;
+ Main.notify(str, details || "");
+ },
+});
+
+// lazy-evaluation
+let logger = null;
+function getLogger() {
+ if(logger === null)
+ logger = new Logger("gnome-shell");
+ return logger;
+}
+
+class Extension {
+ constructor(uuid) {
+ this._uuid = uuid;
+
+ ExtensionUtils.initTranslations(GETTEXT_DOMAIN);
+ }
+
+ enable() {
+ BackgroundMenu.BackgroundMenu = CustomBackgroundMenu;
+ Main.layoutManager._updateBackgrounds();
+ }
+
+ disable() {
+ BackgroundMenu.BackgroundMenu = OriginalBackgroundMenu;
+ Main.layoutManager._updateBackgrounds();
+ }
+}
+
+function init(meta) {
+ return new Extension(meta.uuid);
+}
diff --git a/extensions/custom-menu/meson.build b/extensions/custom-menu/meson.build
new file mode 100644
index 00000000..92450963
--- /dev/null
+++ b/extensions/custom-menu/meson.build
@@ -0,0 +1,7 @@
+extension_data += configure_file(
+ input: metadata_name + '.in',
+ output: metadata_name,
+ configuration: metadata_conf
+)
+
+extension_sources += files('config.js')
diff --git a/extensions/custom-menu/metadata.json.in b/extensions/custom-menu/metadata.json.in
new file mode 100644
index 00000000..054f639b
--- /dev/null
+++ b/extensions/custom-menu/metadata.json.in
@@ -0,0 +1,10 @@
+{
+"extension-id": "@extension_id@",
+"uuid": "@uuid@",
+"settings-schema": "@gschemaname@",
+"gettext-domain": "@gettext_domain@",
+"name": "Custom menu",
+"description": "Quick custom menu for launching your favorite applications",
+"shell-version": [ "@shell_current@" ],
+"url": "@url@"
+}
diff --git a/extensions/custom-menu/stylesheet.css b/extensions/custom-menu/stylesheet.css
new file mode 100644
index 00000000..25134b65
--- /dev/null
+++ b/extensions/custom-menu/stylesheet.css
@@ -0,0 +1 @@
+/* This extensions requires no special styling */
diff --git a/meson.build b/meson.build
index c73261f7..fa9e622a 100644
--- a/meson.build
+++ b/meson.build
@@ -46,6 +46,7 @@ all_extensions = default_extensions
all_extensions += [
'auto-move-windows',
'classification-banner',
+ 'custom-menu',
'dash-to-dock',
'dash-to-panel',
'native-window-placement',
--
2.41.0