diff --git a/multi-monitors-add-on@spin83/extension.js b/multi-monitors-add-on@spin83/extension.js index 846d173..e1928e9 100644 --- a/multi-monitors-add-on@spin83/extension.js +++ b/multi-monitors-add-on@spin83/extension.js @@ -36,7 +36,7 @@ const MUTTER_SCHEMA = 'org.gnome.mutter'; const WORKSPACES_ONLY_ON_PRIMARY_ID = 'workspaces-only-on-primary'; const SHOW_INDICATOR_ID = 'show-indicator'; -const SHOW_THUMBNAILS_SLIDER_ID = 'show-thumbnails-slider'; +const THUMBNAILS_SLIDER_POSITION_ID = 'thumbnails-slider-position'; function copyClass (s, d) { // global.log(s.name +" > "+ d.name); @@ -94,57 +94,57 @@ class MultiMonitorsAddOn { } _showThumbnailsSlider() { - if (this._settings.get_boolean(SHOW_THUMBNAILS_SLIDER_ID)) { - if(this._ov_settings.get_boolean(WORKSPACES_ONLY_ON_PRIMARY_ID)) - this._ov_settings.set_boolean(WORKSPACES_ONLY_ON_PRIMARY_ID, false); - if(this._mu_settings.get_boolean(WORKSPACES_ONLY_ON_PRIMARY_ID)) - this._mu_settings.set_boolean(WORKSPACES_ONLY_ON_PRIMARY_ID, false); + if (this._settings.get_string(THUMBNAILS_SLIDER_POSITION_ID) === 'none') { + this._hideThumbnailsSlider(); + return; + } - if (Main.mmOverview) - return; + if(this._ov_settings.get_boolean(WORKSPACES_ONLY_ON_PRIMARY_ID)) + this._ov_settings.set_boolean(WORKSPACES_ONLY_ON_PRIMARY_ID, false); + if(this._mu_settings.get_boolean(WORKSPACES_ONLY_ON_PRIMARY_ID)) + this._mu_settings.set_boolean(WORKSPACES_ONLY_ON_PRIMARY_ID, false); - Main.mmOverview = []; - for (let idx = 0; idx < Main.layoutManager.monitors.length; idx++) { - if (idx != Main.layoutManager.primaryIndex) { - Main.mmOverview[idx] = new MMOverview.MultiMonitorsOverview(idx); - } - } + if (Main.mmOverview) + return; - this.syncWorkspacesActualGeometry = Main.overview.viewSelector._workspacesDisplay._syncWorkspacesActualGeometry; - Main.overview.viewSelector._workspacesDisplay._syncWorkspacesActualGeometry = function() { - if (this._inWindowFade) - return; + Main.mmOverview = []; + for (let idx = 0; idx < Main.layoutManager.monitors.length; idx++) { + if (idx != Main.layoutManager.primaryIndex) { + Main.mmOverview[idx] = new MMOverview.MultiMonitorsOverview(idx); + } + } - const primaryView = this._getPrimaryView(); - if (primaryView) { - primaryView.ease({ - ...this._actualGeometry, - duration: Main.overview.animationInProgress ? ANIMATION_TIME : 0, - mode: Clutter.AnimationMode.EASE_OUT_QUAD, - }); - } + this.syncWorkspacesActualGeometry = Main.overview.viewSelector._workspacesDisplay._syncWorkspacesActualGeometry; + Main.overview.viewSelector._workspacesDisplay._syncWorkspacesActualGeometry = function() { + if (this._inWindowFade) + return; - for (let idx = 0; idx < Main.mmOverview.length; idx++) { - if (!Main.mmOverview[idx]) - continue; - if (!Main.mmOverview[idx]._overview) - continue; - const mmView = Main.mmOverview[idx]._overview._controls._workspacesViews; - if (!mmView) - continue; + const primaryView = this._getPrimaryView(); + if (primaryView) { + primaryView.ease({ + ...this._actualGeometry, + duration: Main.overview.animationInProgress ? ANIMATION_TIME : 0, + mode: Clutter.AnimationMode.EASE_OUT_QUAD, + }); + } - const mmGeometry = Main.mmOverview[idx].getWorkspacesActualGeometry(); - mmView.ease({ - ...mmGeometry, - duration: Main.overview.animationInProgress ? ANIMATION_TIME : 0, - mode: Clutter.AnimationMode.EASE_OUT_QUAD, - }); - } - } - } - else { - this._hideThumbnailsSlider(); - } + for (let idx = 0; idx < Main.mmOverview.length; idx++) { + if (!Main.mmOverview[idx]) + continue; + if (!Main.mmOverview[idx]._overview) + continue; + const mmView = Main.mmOverview[idx]._overview._controls._workspacesViews; + if (!mmView) + continue; + + const mmGeometry = Main.mmOverview[idx].getWorkspacesActualGeometry(); + mmView.ease({ + ...mmGeometry, + duration: Main.overview.animationInProgress ? ANIMATION_TIME : 0, + mode: Clutter.AnimationMode.EASE_OUT_QUAD, + }); + } + } } _hideThumbnailsSlider() { @@ -173,10 +173,9 @@ class MultiMonitorsAddOn { } _switchOffThumbnails() { - if(this._ov_settings.get_boolean(WORKSPACES_ONLY_ON_PRIMARY_ID)) - this._settings.set_boolean(SHOW_THUMBNAILS_SLIDER_ID, false); - if(this._mu_settings.get_boolean(WORKSPACES_ONLY_ON_PRIMARY_ID)) - this._settings.set_boolean(SHOW_THUMBNAILS_SLIDER_ID, false); + if (this._ov_settings.get_boolean(WORKSPACES_ONLY_ON_PRIMARY_ID) || this._mu_settings.get_boolean(WORKSPACES_ONLY_ON_PRIMARY_ID)) { + this._settings.set_string(THUMBNAILS_SLIDER_POSITION_ID, 'none'); + } } enable(version) { @@ -199,7 +198,7 @@ class MultiMonitorsAddOn { this._showPanelId = this._settings.connect('changed::'+MMLayout.SHOW_PANEL_ID, Main.mmLayoutManager.showPanel.bind(Main.mmLayoutManager)); Main.mmLayoutManager.showPanel(); - this._showThumbnailsSliderId = this._settings.connect('changed::'+SHOW_THUMBNAILS_SLIDER_ID, this._showThumbnailsSlider.bind(this)); + this._thumbnailsSliderPositionId = this._settings.connect('changed::'+THUMBNAILS_SLIDER_POSITION_ID, this._showThumbnailsSlider.bind(this)); this._relayoutId = Main.layoutManager.connect('monitors-changed', this._relayout.bind(this)); this._relayout(); } @@ -210,7 +209,7 @@ class MultiMonitorsAddOn { this._mu_settings.disconnect(this._switchOffThumbnailsMuId); this._settings.disconnect(this._showPanelId); - this._settings.disconnect(this._showThumbnailsSliderId); + this._settings.disconnect(this._thumbnailsSliderPositionId); this._settings.disconnect(this._showIndicatorId); diff --git a/multi-monitors-add-on@spin83/locale/de/LC_MESSAGES/multi-monitors-add-on.mo b/multi-monitors-add-on@spin83/locale/de/LC_MESSAGES/multi-monitors-add-on.mo index 06bc3bf..ce5795c 100644 Binary files a/multi-monitors-add-on@spin83/locale/de/LC_MESSAGES/multi-monitors-add-on.mo and b/multi-monitors-add-on@spin83/locale/de/LC_MESSAGES/multi-monitors-add-on.mo differ diff --git a/multi-monitors-add-on@spin83/locale/de/LC_MESSAGES/multi-monitors-add-on.po b/multi-monitors-add-on@spin83/locale/de/LC_MESSAGES/multi-monitors-add-on.po index bdd140f..0691ac2 100644 --- a/multi-monitors-add-on@spin83/locale/de/LC_MESSAGES/multi-monitors-add-on.po +++ b/multi-monitors-add-on@spin83/locale/de/LC_MESSAGES/multi-monitors-add-on.po @@ -65,10 +65,6 @@ msgstr "Anwendungsmenü auf zusätzlichen Monitoren anzeigen" msgid "Show DateTime-Button on additional monitors." msgstr "Datum-Zeit auf zusätzlichen Monitoren anzeigen." -#: prefs.js:68 -msgid "Show Thumbnails-Slider on left side of additional monitors." -msgstr "Arbeitsflächenübersicht bei zusätzlichen Monitoren links anzeigen" - #: prefs.js:71 msgid "Enable hot corners." msgstr "" diff --git a/multi-monitors-add-on@spin83/locale/es/LC_MESSAGES/multi-monitors-add-on.mo b/multi-monitors-add-on@spin83/locale/es/LC_MESSAGES/multi-monitors-add-on.mo index 7c1a07d..0cd6a92 100644 Binary files a/multi-monitors-add-on@spin83/locale/es/LC_MESSAGES/multi-monitors-add-on.mo and b/multi-monitors-add-on@spin83/locale/es/LC_MESSAGES/multi-monitors-add-on.mo differ diff --git a/multi-monitors-add-on@spin83/locale/es/LC_MESSAGES/multi-monitors-add-on.po b/multi-monitors-add-on@spin83/locale/es/LC_MESSAGES/multi-monitors-add-on.po index 2c2fec4..6c51dca 100644 --- a/multi-monitors-add-on@spin83/locale/es/LC_MESSAGES/multi-monitors-add-on.po +++ b/multi-monitors-add-on@spin83/locale/es/LC_MESSAGES/multi-monitors-add-on.po @@ -63,11 +63,6 @@ msgstr "Mostrar el menú de aplicaciones en los monitores adicionales." msgid "Show DateTime-Button on additional monitors." msgstr "Mostrar la fecha en los monitores adicionales." -#: prefs.js:68 -msgid "Show Thumbnails-Slider on left side of additional monitors." -msgstr "" -"Mostrar las miniaturas en el lado izquierdo de los monitores adicionales." - #: prefs.js:71 msgid "Enable hot corners." msgstr "" diff --git a/multi-monitors-add-on@spin83/locale/fr/LC_MESSAGES/multi-monitors-add-on.mo b/multi-monitors-add-on@spin83/locale/fr/LC_MESSAGES/multi-monitors-add-on.mo index fd94225..2aefbb2 100644 Binary files a/multi-monitors-add-on@spin83/locale/fr/LC_MESSAGES/multi-monitors-add-on.mo and b/multi-monitors-add-on@spin83/locale/fr/LC_MESSAGES/multi-monitors-add-on.mo differ diff --git a/multi-monitors-add-on@spin83/locale/fr/LC_MESSAGES/multi-monitors-add-on.po b/multi-monitors-add-on@spin83/locale/fr/LC_MESSAGES/multi-monitors-add-on.po index 754ddb7..3b207cc 100644 --- a/multi-monitors-add-on@spin83/locale/fr/LC_MESSAGES/multi-monitors-add-on.po +++ b/multi-monitors-add-on@spin83/locale/fr/LC_MESSAGES/multi-monitors-add-on.po @@ -66,12 +66,6 @@ msgstr "Afficher le bouton du menu Applications sur les moniteurs secondaires" msgid "Show DateTime-Button on additional monitors." msgstr "Afficher le bouton Date-Heure sur les moniteurs secondaires." -#: prefs.js:68 -msgid "Show Thumbnails-Slider on left side of additional monitors." -msgstr "" -"Afficher le dock listant les espaces de travail, sur la gauche pour les " -"moniteurs secondaires" - #: prefs.js:71 msgid "Enable hot corners." msgstr "" diff --git a/multi-monitors-add-on@spin83/locale/it/LC_MESSAGES/multi-monitors-add-on.mo b/multi-monitors-add-on@spin83/locale/it/LC_MESSAGES/multi-monitors-add-on.mo index 3197abd..14040b3 100644 Binary files a/multi-monitors-add-on@spin83/locale/it/LC_MESSAGES/multi-monitors-add-on.mo and b/multi-monitors-add-on@spin83/locale/it/LC_MESSAGES/multi-monitors-add-on.mo differ diff --git a/multi-monitors-add-on@spin83/locale/it/LC_MESSAGES/multi-monitors-add-on.po b/multi-monitors-add-on@spin83/locale/it/LC_MESSAGES/multi-monitors-add-on.po index c986484..fd41a90 100644 --- a/multi-monitors-add-on@spin83/locale/it/LC_MESSAGES/multi-monitors-add-on.po +++ b/multi-monitors-add-on@spin83/locale/it/LC_MESSAGES/multi-monitors-add-on.po @@ -65,11 +65,6 @@ msgstr "Visualizza il pulsante del menu Applicazioni sui monitor secondari." msgid "Show DateTime-Button on additional monitors." msgstr "Mostra il Bottone Data/Ora sui monitor secondari." -#: prefs.js:68 -msgid "Show Thumbnails-Slider on left side of additional monitors." -msgstr "Visualizza lo slider delle anteprime a sul lato sinistro per i monitor " -"secondari." - #: prefs.js:71 msgid "Enable hot corners." msgstr "" diff --git a/multi-monitors-add-on@spin83/locale/pl/LC_MESSAGES/multi-monitors-add-on.mo b/multi-monitors-add-on@spin83/locale/pl/LC_MESSAGES/multi-monitors-add-on.mo index d173793..84f0f8e 100644 Binary files a/multi-monitors-add-on@spin83/locale/pl/LC_MESSAGES/multi-monitors-add-on.mo and b/multi-monitors-add-on@spin83/locale/pl/LC_MESSAGES/multi-monitors-add-on.mo differ diff --git a/multi-monitors-add-on@spin83/locale/pl/LC_MESSAGES/multi-monitors-add-on.po b/multi-monitors-add-on@spin83/locale/pl/LC_MESSAGES/multi-monitors-add-on.po index 30e6712..80116d8 100644 --- a/multi-monitors-add-on@spin83/locale/pl/LC_MESSAGES/multi-monitors-add-on.po +++ b/multi-monitors-add-on@spin83/locale/pl/LC_MESSAGES/multi-monitors-add-on.po @@ -66,10 +66,6 @@ msgstr "Wyświetl przycisk aplikacji na dodatkowych monitorach." msgid "Show DateTime-Button on additional monitors." msgstr "Wyświetl przycisk daty i czasu na dodatkowych monitorach." -#: prefs.js:68 -msgid "Show Thumbnails-Slider on left side of additional monitors." -msgstr "Wyświetl pasek miniatur po lewej stronie dla dodatkowych monitorów." - #: prefs.js:71 msgid "Enable hot corners." msgstr "Włączenie podglądu po najechaniu rogu ekranu." diff --git a/multi-monitors-add-on@spin83/locale/pt_BR/LC_MESSAGES/multi-monitors-add-on.mo b/multi-monitors-add-on@spin83/locale/pt_BR/LC_MESSAGES/multi-monitors-add-on.mo index 78d4c47..beae2e9 100644 Binary files a/multi-monitors-add-on@spin83/locale/pt_BR/LC_MESSAGES/multi-monitors-add-on.mo and b/multi-monitors-add-on@spin83/locale/pt_BR/LC_MESSAGES/multi-monitors-add-on.mo differ diff --git a/multi-monitors-add-on@spin83/locale/pt_BR/LC_MESSAGES/multi-monitors-add-on.po b/multi-monitors-add-on@spin83/locale/pt_BR/LC_MESSAGES/multi-monitors-add-on.po index 7184098..94c370c 100644 --- a/multi-monitors-add-on@spin83/locale/pt_BR/LC_MESSAGES/multi-monitors-add-on.po +++ b/multi-monitors-add-on@spin83/locale/pt_BR/LC_MESSAGES/multi-monitors-add-on.po @@ -39,11 +39,6 @@ msgstr "Mostrar botão de Atividades em monitores adicionais" msgid "Show AppMenu-Button on additional monitors." msgstr "Mostrar botão de menu de aplicativos em monitores adicionais" -#: prefs.js:66 -msgid "Show Thumbnails-Slider on left side of additional monitors." -msgstr "" -"Mostrar controle deslizante de miniaturas à esquerda de monitores adicionais" - #: prefs.js:67 msgid "Show DateTime-Button on additional monitors." msgstr "Mostrar o botão de data e hora em monitores adicionais" diff --git a/multi-monitors-add-on@spin83/mmoverview.js b/multi-monitors-add-on@spin83/mmoverview.js index 4d00d66..fb0e1a9 100644 --- a/multi-monitors-add-on@spin83/mmoverview.js +++ b/multi-monitors-add-on@spin83/mmoverview.js @@ -32,7 +32,7 @@ const CE = ExtensionUtils.getCurrentExtension(); const MultiMonitors = CE.imports.extension; const Convenience = CE.imports.convenience; -const THUMBNAILS_ON_LEFT_SIDE_ID = 'thumbnails-on-left-side'; +const THUMBNAILS_SLIDER_POSITION_ID = 'thumbnails-slider-position'; var MultiMonitorsWorkspaceThumbnail = (() => { let MultiMonitorsWorkspaceThumbnail = class MultiMonitorsWorkspaceThumbnail extends St.Widget { @@ -362,6 +362,7 @@ class MultiMonitorsControlsManager extends St.Widget { this._spacer_height = 0; this._fixGeometry = 0; this._visible = false; + this._primaryMonitorOnTheLeft = Main.layoutManager.monitors[index].x > Main.layoutManager.primaryMonitor.x; let layout = new OverviewControls.ControlsLayout(); super._init({ @@ -389,9 +390,9 @@ class MultiMonitorsControlsManager extends St.Widget { this._group.add_actor(this._thumbnailsSlider); this._settings = Convenience.getSettings(); - this._thumbnailsOnLeftSideId = this._settings.connect('changed::'+THUMBNAILS_ON_LEFT_SIDE_ID, - this._thumbnailsOnLeftSide.bind(this)); - this._thumbnailsOnLeftSide(); + this._thumbnailsSelectSideId = this._settings.connect('changed::'+THUMBNAILS_SLIDER_POSITION_ID, + this._thumbnailsSelectSide.bind(this)); + this._thumbnailsSelectSide(); this._thumbnailsSlider.slideOut(); this._thumbnailsBox._updatePorthole(); @@ -402,14 +403,17 @@ class MultiMonitorsControlsManager extends St.Widget { _onDestroy() { Main.overview.viewSelector.disconnect(this._pageChangedId); Main.overview.viewSelector.disconnect(this._pageEmptyId); - this._settings.disconnect(this._thumbnailsOnLeftSideId); + this._settings.disconnect(this._thumbnailsSelectSideId); } - _thumbnailsOnLeftSide() { + _thumbnailsSelectSide() { let thumbnailsSlider; thumbnailsSlider = this._thumbnailsSlider; - if (this._settings.get_boolean(THUMBNAILS_ON_LEFT_SIDE_ID)) { + let sett = this._settings.get_string(THUMBNAILS_SLIDER_POSITION_ID); + let onLeftSide = sett === 'left' || (sett === 'auto' && this._primaryMonitorOnTheLeft); + + if (onLeftSide) { let first = this._group.get_first_child(); if (first != thumbnailsSlider) { this._thumbnailsSlider.layout.slideDirection = OverviewControls.SlideDirection.LEFT; diff --git a/multi-monitors-add-on@spin83/prefs.js b/multi-monitors-add-on@spin83/prefs.js index c2e280c..a8d1b58 100644 --- a/multi-monitors-add-on@spin83/prefs.js +++ b/multi-monitors-add-on@spin83/prefs.js @@ -32,11 +32,10 @@ const Convenience = MultiMonitors.imports.convenience; const SHOW_INDICATOR_ID = 'show-indicator'; const SHOW_PANEL_ID = 'show-panel'; -const SHOW_THUMBNAILS_SLIDER_ID = 'show-thumbnails-slider'; const SHOW_ACTIVITIES_ID = 'show-activities'; const SHOW_APP_MENU_ID = 'show-app-menu'; const SHOW_DATE_TIME_ID = 'show-date-time'; -const THUMBNAILS_ON_LEFT_SIDE_ID = 'thumbnails-on-left-side'; +const THUMBNAILS_SLIDER_POSITION_ID = 'thumbnails-slider-position'; const AVAILABLE_INDICATORS_ID = 'available-indicators'; const TRANSFER_INDICATORS_ID = 'transfer-indicators'; const ENABLE_HOT_CORNERS = 'enable-hot-corners'; @@ -63,11 +62,15 @@ class MultiMonitorsPrefsWidget extends Gtk.Grid { this._addBooleanSwitch(_('Show Multi Monitors indicator on Top Panel.'), SHOW_INDICATOR_ID); this._addBooleanSwitch(_('Show Panel on additional monitors.'), SHOW_PANEL_ID); - this._addBooleanSwitch(_('Show Thumbnails-Slider on additional monitors.'), SHOW_THUMBNAILS_SLIDER_ID); this._addBooleanSwitch(_('Show Activities-Button on additional monitors.'), SHOW_ACTIVITIES_ID); this._addBooleanSwitch(_('Show AppMenu-Button on additional monitors.'), SHOW_APP_MENU_ID); this._addBooleanSwitch(_('Show DateTime-Button on additional monitors.'), SHOW_DATE_TIME_ID); - this._addBooleanSwitch(_('Show Thumbnails-Slider on left side of additional monitors.'), THUMBNAILS_ON_LEFT_SIDE_ID); + this._addComboBoxSwitch(_('Show Thumbnails-Slider on additional monitors.'), THUMBNAILS_SLIDER_POSITION_ID, { + none: _('No'), + right: _('On the right'), + left: _('On the left'), + auto: _('Auto') + }); this._addSettingsBooleanSwitch(_('Enable hot corners.'), this._desktopSettings, ENABLE_HOT_CORNERS); this._store = new Gtk.ListStore(); @@ -227,6 +230,27 @@ class MultiMonitorsPrefsWidget extends Gtk.Grid { } } + _addComboBoxSwitch(label, schema_id, options) { + this._addSettingsComboBoxSwitch(label, this._settings, schema_id, options) + } + + _addSettingsComboBoxSwitch(label, settings, schema_id, options) { + let gHBox = new Gtk.HBox({margin: 10, spacing: 20, hexpand: true}); + let gLabel = new Gtk.Label({label: _(label), halign: Gtk.Align.START}); + gHBox.add(gLabel); + + let gCBox = new Gtk.ComboBoxText({halign: Gtk.Align.END}); + Object.entries(options).forEach(function(entry) { + const [key, val] = entry; + gCBox.append(key, val); + }); + gHBox.add(gCBox); + + this.add(gHBox); + + settings.bind(schema_id, gCBox, 'active-id', Gio.SettingsBindFlags.DEFAULT); + } + _addBooleanSwitch(label, schema_id) { this._addSettingsBooleanSwitch(label, this._settings, schema_id); } diff --git a/multi-monitors-add-on@spin83/schemas/gschemas.compiled b/multi-monitors-add-on@spin83/schemas/gschemas.compiled index 2a49abb..5a9e945 100644 Binary files a/multi-monitors-add-on@spin83/schemas/gschemas.compiled and b/multi-monitors-add-on@spin83/schemas/gschemas.compiled differ diff --git a/multi-monitors-add-on@spin83/schemas/org.gnome.shell.extensions.multi-monitors-add-on.gschema.xml b/multi-monitors-add-on@spin83/schemas/org.gnome.shell.extensions.multi-monitors-add-on.gschema.xml index 99726b3..4a42a23 100644 --- a/multi-monitors-add-on@spin83/schemas/org.gnome.shell.extensions.multi-monitors-add-on.gschema.xml +++ b/multi-monitors-add-on@spin83/schemas/org.gnome.shell.extensions.multi-monitors-add-on.gschema.xml @@ -12,12 +12,6 @@ Show Panel on additional monitors. Add or remove Panel from additional monitors. - - - true - Show Thumbnails-Slider on additional monitors. - Add or remove Thumbnails-Slider from additional monitors. - true @@ -36,11 +30,17 @@ Show DateTime-Button on additional monitors. Change visibility of DateTime-Button on additional monitors. - - - true - Show Thumbnails-Slider on left side of additional monitors. - Toggle position of Thumbnails-Slider from right to left on additional monitors. + + + + + + + + + 'auto' + Show Thumbnails-Slider on additional monitors. + Select position of Thumbnails-Slider on additional monitors.