summaryrefslogtreecommitdiff
path: root/raveos-theme/gnome/theme-data/extensions/installed/dash-to-dock@micxgx.gmail.com/prefs.js
diff options
context:
space:
mode:
authorAlexanderCurl <alexc@alexc.hu>2026-04-18 17:46:06 +0100
committerAlexanderCurl <alexc@alexc.hu>2026-04-18 17:46:06 +0100
commit70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69 (patch)
treeab1123d4067c1b086dd6faa7ee4ea643236b565a /raveos-theme/gnome/theme-data/extensions/installed/dash-to-dock@micxgx.gmail.com/prefs.js
parent5d94c0a7d44a2255b81815a52a7056a94a39842d (diff)
downloadRaveOS-PKGBUILD-70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69.tar.gz
RaveOS-PKGBUILD-70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69.zip
Replaced file structures for themes in the correct format
Diffstat (limited to 'raveos-theme/gnome/theme-data/extensions/installed/dash-to-dock@micxgx.gmail.com/prefs.js')
-rw-r--r--raveos-theme/gnome/theme-data/extensions/installed/dash-to-dock@micxgx.gmail.com/prefs.js1168
1 files changed, 0 insertions, 1168 deletions
diff --git a/raveos-theme/gnome/theme-data/extensions/installed/dash-to-dock@micxgx.gmail.com/prefs.js b/raveos-theme/gnome/theme-data/extensions/installed/dash-to-dock@micxgx.gmail.com/prefs.js
deleted file mode 100644
index fae0b99..0000000
--- a/raveos-theme/gnome/theme-data/extensions/installed/dash-to-dock@micxgx.gmail.com/prefs.js
+++ /dev/null
@@ -1,1168 +0,0 @@
-// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-
-import GLib from 'gi://GLib';
-import GObject from 'gi://GObject';
-import Gdk from 'gi://Gdk';
-import Gio from 'gi://Gio';
-import Gtk from 'gi://Gtk';
-
-import {
- ExtensionPreferences,
-
- // Use __ () and N__() for the extension gettext domain, and reuse
- // the shell domain with the default _() and N_()
- gettext as __,
-} from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js';
-
-const SCALE_UPDATE_TIMEOUT = 500;
-const DEFAULT_ICONS_SIZES = [128, 96, 64, 48, 32, 24, 16];
-
-const TransparencyMode = Object.freeze({
- DEFAULT: 0,
- FIXED: 1,
- DYNAMIC: 3,
-});
-
-const RunningIndicatorStyle = Object.freeze({
- DEFAULT: 0,
- DOTS: 1,
- SQUARES: 2,
- DASHES: 3,
- SEGMENTED: 4,
- SOLID: 5,
- CILIORA: 6,
- METRO: 7,
-});
-
-const MonitorsConfig = GObject.registerClass({
- Signals: {
- 'updated': {},
- },
-}, class MonitorsConfig extends GObject.Object {
- static get XML_INTERFACE() {
- return '<node>\
- <interface name="org.gnome.Mutter.DisplayConfig">\
- <method name="GetCurrentState">\
- <arg name="serial" direction="out" type="u" />\
- <arg name="monitors" direction="out" type="a((ssss)a(siiddada{sv})a{sv})" />\
- <arg name="logical_monitors" direction="out" type="a(iiduba(ssss)a{sv})" />\
- <arg name="properties" direction="out" type="a{sv}" />\
- </method>\
- <signal name="MonitorsChanged" />\
- </interface>\
- </node>';
- }
-
- static get ProxyWrapper() {
- return Gio.DBusProxy.makeProxyWrapper(MonitorsConfig.XML_INTERFACE);
- }
-
- constructor() {
- super();
-
- this._monitorsConfigProxy = new MonitorsConfig.ProxyWrapper(
- Gio.DBus.session,
- 'org.gnome.Mutter.DisplayConfig',
- '/org/gnome/Mutter/DisplayConfig'
- );
-
- // Connecting to a D-Bus signal
- this._monitorsConfigProxy.connectSignal('MonitorsChanged',
- () => this._updateResources());
-
- this._primaryMonitor = null;
- this._monitors = [];
- this._logicalMonitors = [];
-
- this._updateResources();
- }
-
- _updateResources() {
- this._monitorsConfigProxy.GetCurrentStateRemote((resources, err) => {
- if (err) {
- logError(err);
- return;
- }
-
- const [serial_, monitors, logicalMonitors] = resources;
- let index = 0;
- for (const monitor of monitors) {
- const [monitorSpecs, modes_, props] = monitor;
- const [connector, vendor, product, serial] = monitorSpecs;
- this._monitors.push({
- index: index++,
- active: false,
- connector, vendor, product, serial,
- displayName: props['display-name'].unpack(),
- });
- }
-
- for (const logicalMonitor of logicalMonitors) {
- const [x_, y_, scale_, transform_, isPrimary, monitorsSpecs] =
- logicalMonitor;
-
- // We only care about the first one really
- for (const monitorSpecs of monitorsSpecs) {
- const [connector, vendor, product, serial] = monitorSpecs;
- const monitor = this._monitors.find(m =>
- m.connector === connector && m.vendor === vendor &&
- m.product === product && m.serial === serial);
-
- if (monitor) {
- monitor.active = true;
- monitor.isPrimary = isPrimary;
- if (monitor.isPrimary)
- this._primaryMonitor = monitor;
- break;
- }
- }
- }
-
- const activeMonitors = this._monitors.filter(m => m.active);
- if (activeMonitors.length > 1 && logicalMonitors.length === 1) {
- // We're in cloning mode, so let's just activate the primary monitor
- this._monitors.forEach(m => (m.active = false));
- this._primaryMonitor.active = true;
- }
-
- this._updateMonitorsIndexes();
- this.emit('updated');
- });
- }
-
- _updateMonitorsIndexes() {
- // This function ensures that we follow the old Gdk indexing strategy
- // for monitors, it can be removed when we don't care about breaking
- // old user configurations or external apps configuring this extension
- // such as ubuntu's gnome-control-center.
- const {index: primaryMonitorIndex} = this._primaryMonitor;
- for (const monitor of this._monitors) {
- let {index} = monitor;
- // The The dock uses the Gdk index for monitors, where the primary monitor
- // always has index 0, so let's follow what dash-to-dock does in docking.js
- // (as part of _createDocks), but using inverted math
- index -= primaryMonitorIndex;
-
- if (index < 0)
- index += this._monitors.length;
-
- monitor.index = index;
- }
- }
-
- get primaryMonitor() {
- return this._primaryMonitor;
- }
-
- get monitors() {
- return this._monitors;
- }
-});
-
-/**
- * @param settings
- */
-function setShortcut(settings) {
- const shortcutText = settings.get_string('shortcut-text');
- const [success, key, mods] = Gtk.accelerator_parse(shortcutText);
-
- if (success && Gtk.accelerator_valid(key, mods)) {
- const shortcut = Gtk.accelerator_name(key, mods);
- settings.set_strv('shortcut', [shortcut]);
- } else {
- settings.set_strv('shortcut', []);
- }
-}
-
-const DockSettings = GObject.registerClass({
- Implements: [Gtk.BuilderScope],
-}, class DashToDockSettings extends GObject.Object {
- _init(extensionPreferences) {
- super._init();
-
- this._extensionPreferences = extensionPreferences;
- this._settings = extensionPreferences.getSettings(
- 'org.gnome.shell.extensions.dash-to-dock');
- this._appSwitcherSettings = new Gio.Settings({schema_id: 'org.gnome.shell.app-switcher'});
- 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(
- extensionPreferences.metadata['gettext-domain']);
- this._builder.add_from_file(`${extensionPreferences.path}/Settings.ui`);
-
- this.widget = this._builder.get_object('settings_notebook');
-
- // Set a reasonable initial window height
- this.widget.connect('realize', () => {
- const rootWindow = this.widget.get_root();
- rootWindow.set_default_size(-1, 850);
- rootWindow.connect('close-request', () => this._onWindowsClosed());
- });
-
- // Timeout to delay the update of the settings
- this._dock_size_timeout = 0;
- this._icon_size_timeout = 0;
- this._opacity_timeout = 0;
-
- this._monitorsConfig = new MonitorsConfig();
- this._bindSettings();
- }
-
- _onWindowsClosed() {
- if (this._dock_size_timeout) {
- GLib.source_remove(this._dock_size_timeout);
- delete this._dock_size_timeout;
- }
-
- if (this._icon_size_timeout) {
- GLib.source_remove(this._icon_size_timeout);
- delete this._icon_size_timeout;
- }
-
- if (this._opacity_timeout) {
- GLib.source_remove(this._opacity_timeout);
- delete this._opacity_timeout;
- }
- }
-
- 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) {
- if (!this._monitors?.length || this._updatingSettings)
- return;
-
- const preferredMonitor = this._monitors[combo.get_active()].connector;
-
- this._updatingSettings = true;
- this._settings.set_string('preferred-monitor-by-connector', preferredMonitor);
- this._settings.set_int('preferred-monitor', -2);
- this._updatingSettings = false;
- }
-
- 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);
- this._dock_size_timeout = GLib.timeout_add(
- GLib.PRIORITY_DEFAULT, SCALE_UPDATE_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, () => {
- this._settings.set_int('dash-max-icon-size', scale.get_value());
- this._icon_size_timeout = 0;
- return GLib.SOURCE_REMOVE;
- });
- }
-
- preview_size_scale_format_value_cb(scale, value) {
- return value === 0 ? 'auto' : value;
- }
-
- preview_size_scale_value_changed_cb(scale) {
- this._settings.set_double('preview-size-scale', scale.get_value());
- }
-
- 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);
- }
-
- always_on_top_radio_button_toggled_cb(button) {
- if (button.get_active())
- this._settings.set_enum('intellihide-mode', 3);
- }
-
- _updateMonitorsSettings() {
- // Monitor options
- const preferredMonitor = this._settings.get_int('preferred-monitor');
- const preferredMonitorByConnector = this._settings.get_string('preferred-monitor-by-connector');
- const dockMonitorCombo = this._builder.get_object('dock_monitor_combo');
-
- this._monitors = [];
- dockMonitorCombo.remove_all();
- let primaryIndex = -1;
-
- // Add connected monitors
- for (const monitor of this._monitorsConfig.monitors) {
- if (!monitor.active && monitor.index !== preferredMonitor)
- continue;
-
- if (monitor.isPrimary) {
- dockMonitorCombo.append_text(
- /* Translators: This will be followed by Display Name - Connector. */
- `${__('Primary monitor: ') + monitor.displayName} - ${
- monitor.connector}`);
- primaryIndex = this._monitors.length;
- } else {
- dockMonitorCombo.append_text(
- /* Translators: Followed by monitor index, Display Name - Connector. */
- `${__('Secondary monitor ') + (monitor.index + 1)} - ${
- monitor.displayName} - ${monitor.connector}`);
- }
-
- this._monitors.push(monitor);
-
- if (monitor.index === preferredMonitor ||
- (preferredMonitor === -2 && preferredMonitorByConnector === monitor.connector))
- dockMonitorCombo.set_active(this._monitors.length - 1);
- }
-
- if (dockMonitorCombo.get_active() < 0 && primaryIndex >= 0)
- dockMonitorCombo.set_active(primaryIndex);
- }
-
- _bindSettings() {
- // Position and size panel
-
- this._updateMonitorsSettings();
- this._monitorsConfig.connect('updated',
- () => this._updateMonitorsSettings());
- this._settings.connect('changed::preferred-monitor',
- () => this._updateMonitorsSettings());
- this._settings.connect('changed::preferred-monitor-by-connector',
- () => this._updateMonitorsSettings());
-
- // Position option
- const 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('show-dock-urgent-notify',
- this._builder.get_object('show_dock_urgent_notify_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', () => {
- const 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);
-
- const 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
-
- const 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'),
- this._builder.get_object('always_on_top_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('autohide',
- this._builder.get_object('show_dock_urgent_notify_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', (_, id) => {
- if (id === 1) {
- // restore default settings for the relevant keys
- const keys = ['intellihide', 'autohide', 'intellihide-mode',
- 'autohide-in-fullscreen', 'show-dock-urgent-notify',
- '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();
- }
- });
-
- dialog.present();
- });
-
- // size options
- const dockSizeScale = this._builder.get_object('dock_size_scale');
- dockSizeScale.set_value(this._settings.get_double('height-fraction'));
- dockSizeScale.add_mark(0.9, Gtk.PositionType.TOP, null);
- dockSizeScale.set_format_value_func((_, value) => {
- return `${Math.round(value * 100)} %`;
- });
- const iconSizeScale = this._builder.get_object('icon_size_scale');
- iconSizeScale.set_range(8, DEFAULT_ICONS_SIZES[0]);
- iconSizeScale.set_value(this._settings.get_int('dash-max-icon-size'));
- DEFAULT_ICONS_SIZES.forEach(val => {
- iconSizeScale.add_mark(val, Gtk.PositionType.TOP, val.toString());
- });
- iconSizeScale.set_format_value_func((_, value) => {
- return `${value} px`;
- });
- this._builder.get_object('preview_size_scale').set_value(
- this._settings.get_double('preview-size-scale'));
-
- // Corrent for rtl languages
- if (this._rtl) {
- // Flip value position: this is not done automatically
- dockSizeScale.set_value_pos(Gtk.PositionType.LEFT);
- iconSizeScale.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
- iconSizeScale.set_flippable(false);
- iconSizeScale.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);
- this._settings.bind('always-center-icons',
- this._builder.get_object('dock_center_icons_check'),
- 'active',
- Gio.SettingsBindFlags.DEFAULT);
- this._settings.bind('extend-height',
- this._builder.get_object('dock_center_icons_check'),
- 'sensitive',
- Gio.SettingsBindFlags.DEFAULT);
-
- this._settings.bind('multi-monitor',
- this._builder.get_object('dock_monitor_combo'),
- 'sensitive',
- Gio.SettingsBindFlags.INVERT_BOOLEAN);
-
-
- // Apps panel
-
- this._settings.bind('show-running',
- this._builder.get_object('show_running_switch'),
- 'active',
- Gio.SettingsBindFlags.DEFAULT);
- const applicationButtonIsolationButton =
- this._builder.get_object('application_button_isolation_button');
- this._settings.bind('isolate-workspaces',
- applicationButtonIsolationButton,
- 'active',
- Gio.SettingsBindFlags.DEFAULT);
- applicationButtonIsolationButton.connect(
- 'notify::sensitive', check => {
- if (check.sensitive) {
- [check.label] = check.label.split('\n');
- } else {
- check.label += `\n${
- __('Managed by GNOME Multitasking\'s Application Switching setting.')}`;
- }
- });
- this._appSwitcherSettings.bind('current-workspace-only',
- applicationButtonIsolationButton,
- 'sensitive',
- Gio.SettingsBindFlags.INVERT_BOOLEAN |
- Gio.SettingsBindFlags.SYNC_CREATE);
- this._settings.bind('workspace-agnostic-urgent-windows',
- this._builder.get_object('application_button_urgent_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-mounts-only-mounted',
- this._builder.get_object('show_only_mounted_devices_check'),
- 'active',
- Gio.SettingsBindFlags.DEFAULT);
- this._settings.bind('show-mounts-network',
- this._builder.get_object('show_network_volumes_check'),
- 'active',
- Gio.SettingsBindFlags.DEFAULT);
- this._settings.bind('isolate-locations',
- this._builder.get_object('isolate_locations_switch'),
- 'active',
- Gio.SettingsBindFlags.DEFAULT);
- const isolateLocationsBindings = ['show_trash_switch', 'show_mounts_switch'];
- const updateIsolateLocations = () => {
- this._builder.get_object('isolate_locations_row').sensitive =
- isolateLocationsBindings.some(s => this._builder.get_object(s).active);
- };
- updateIsolateLocations();
- isolateLocationsBindings.forEach(s => this._builder.get_object(s).connect(
- 'notify::active', () => updateIsolateLocations()));
- this._settings.bind('dance-urgent-applications',
- this._builder.get_object('wiggle_urgent_applications_switch'),
- 'active',
- Gio.SettingsBindFlags.DEFAULT);
- this._settings.bind('hide-tooltip',
- this._builder.get_object('hide_tooltip_switch'),
- 'active',
- Gio.SettingsBindFlags.DEFAULT);
- this._settings.bind('show-icons-emblems',
- this._builder.get_object('show_icons_emblems_switch'),
- 'active',
- Gio.SettingsBindFlags.DEFAULT);
- const notificationsCounterCheck = this._builder.get_object(
- 'notifications_counter_check');
- this._settings.bind('show-icons-notifications-counter',
- notificationsCounterCheck,
- 'active',
- Gio.SettingsBindFlags.DEFAULT);
- this._settings.bind('show-icons-emblems',
- notificationsCounterCheck,
- 'sensitive',
- Gio.SettingsBindFlags.GET);
-
- const applicationsOverrideCounter =
- this._builder.get_object('applications_override_counter');
- this._settings.bind('application-counter-overrides-notifications',
- applicationsOverrideCounter,
- 'active',
- Gio.SettingsBindFlags.DEFAULT);
- notificationsCounterCheck.bind_property('active',
- applicationsOverrideCounter, 'sensitive',
- GObject.BindingFlags.SYNC_CREATE);
- this._settings.connect('changed::show-icons-emblems', () => {
- if (this._settings.get_boolean('show-icons-emblems'))
- applicationsOverrideCounter.sensitive = notificationsCounterCheck.active;
- else
- applicationsOverrideCounter.sensitive = false;
- });
- 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('show-show-apps-button',
- this._builder.get_object('application_button_animation_button'),
- 'sensitive',
- Gio.SettingsBindFlags.DEFAULT);
- this._settings.bind('show-apps-always-in-the-edge',
- this._builder.get_object('show_apps_always_in_the_edge'),
- 'active',
- Gio.SettingsBindFlags.DEFAULT);
- this._settings.bind('show-show-apps-button',
- this._builder.get_object('show_apps_always_in_the_edge'),
- 'sensitive',
- Gio.SettingsBindFlags.DEFAULT);
- this._settings.bind('scroll-to-focused-application',
- this._builder.get_object('scroll_to_icon_switch'),
- 'active',
- 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', () => {
- const 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);
-
- const 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', (_, id) => {
- if (id === 1) {
- // restore default settings for the relevant keys
- const 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();
- }
- });
-
- dialog.present();
- });
-
- // Create dialog for middle-click options
- this._builder.get_object('middle_click_options_button').connect('clicked', () => {
- const 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);
-
- const 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', (_, id) => {
- if (id === 1) {
- // restore default settings for the relevant keys
- const 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();
- }
- });
-
- 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', () => {
- const dialog = new Gtk.Dialog({
- title: __('Customize running indicators'),
- transient_for: this.widget.get_root(),
- use_header_bar: true,
- modal: true,
- });
-
- const 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);
-
- const 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 => {
- const 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 => {
- const 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', () => {
- // remove the settings box so it doesn't get destroyed;
- dialog.get_content_area().remove(box);
- dialog.destroy();
- });
-
- 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);
-
- const 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 => {
- const 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 customOpacityScale = this._builder.get_object('custom_opacity_scale');
- customOpacityScale.set_value(this._settings.get_double('background-opacity'));
- customOpacityScale.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', () => {
- const dialog = new Gtk.Dialog({
- title: __('Customize opacity'),
- transient_for: this.widget.get_root(),
- use_header_bar: true,
- modal: true,
- });
-
- const 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 minAlphaScale = this._builder.get_object('min_alpha_scale');
- const maxAlphaScale = this._builder.get_object('max_alpha_scale');
- minAlphaScale.set_value(
- this._settings.get_double('min-alpha')
- );
- minAlphaScale.set_format_value_func((_, value) => {
- return `${Math.round(value * 100)} %`;
- });
- maxAlphaScale.set_format_value_func((_, value) => {
- return `${Math.round(value * 100)} %`;
- });
-
- maxAlphaScale.set_value(
- this._settings.get_double('max-alpha')
- );
-
- dialog.connect('response', () => {
- // remove the settings box so it doesn't get destroyed;
- dialog.get_content_area().remove(box);
- dialog.destroy();
- });
-
- dialog.present();
- });
-
-
- this._settings.bind('unity-backlit-items',
- this._builder.get_object('unity_backlit_items_switch'),
- 'active', Gio.SettingsBindFlags.DEFAULT
- );
- this._settings.bind('apply-glossy-effect',
- this._builder.get_object('apply_gloss_effect_checkbutton'),
- 'active', Gio.SettingsBindFlags.DEFAULT
- );
- this._settings.bind('unity-backlit-items',
- this._builder.get_object('apply_gloss_effect_checkbutton'),
- 'sensitive',
- Gio.SettingsBindFlags.DEFAULT
- );
-
- this._settings.bind('force-straight-corner',
- this._builder.get_object('force_straight_corner_switch'),
- 'active', Gio.SettingsBindFlags.DEFAULT);
-
- this._settings.bind('disable-overview-on-startup',
- this._builder.get_object('show_overview_on_startup_switch'),
- 'active', Gio.SettingsBindFlags.INVERT_BOOLEAN);
-
- // About Panel
-
- this._builder.get_object('extension_version').set_label(
- `${this._extensionPreferences.metadata.version}`);
- }
-});
-
-export default class DockPreferences extends ExtensionPreferences {
- getPreferencesWidget() {
- const settings = new DockSettings(this);
- const {widget} = settings;
- return widget;
- }
-}