[gnome] Update extensions for version 48
This commit is contained in:
@ -3,9 +3,11 @@
|
||||
import Adw from 'gi://Adw';
|
||||
import Gtk from 'gi://Gtk';
|
||||
import Gdk from 'gi://Gdk';
|
||||
import GLib from 'gi://GLib';
|
||||
|
||||
import { ExtensionPreferences, gettext as _ } from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js';
|
||||
|
||||
import * as Config from 'resource:///org/gnome/Shell/Extensions/js/misc/config.js'
|
||||
const [major, minor] = Config.PACKAGE_VERSION.split('.').map(s => Number(s));
|
||||
|
||||
export default class GjsOskPreferences extends ExtensionPreferences {
|
||||
fillPreferencesWindow(window) {
|
||||
@ -25,18 +27,41 @@ export default class GjsOskPreferences extends ExtensionPreferences {
|
||||
});
|
||||
page1.add(behaviorGroup);
|
||||
|
||||
const layoutRow = new Adw.ActionRow({
|
||||
const layoutRow = new Adw.ExpanderRow({
|
||||
title: _('Layout')
|
||||
});
|
||||
behaviorGroup.add(layoutRow);
|
||||
|
||||
let layoutList = ["Full Sized International", "Full Sized US", "Tenkeyless International", "Tenkeyless US", "Compact International", "Compact US", "Split International", "Split US"];
|
||||
let layoutDrop = Gtk.DropDown.new_from_strings(layoutList);
|
||||
layoutDrop.valign = Gtk.Align.CENTER;
|
||||
layoutDrop.selected = settings.get_int("layout");
|
||||
const layoutLandscapeRow = new Adw.ActionRow({
|
||||
title: _('Landscape Layout')
|
||||
});
|
||||
layoutRow.add_row(layoutLandscapeRow);
|
||||
|
||||
layoutRow.add_suffix(layoutDrop);
|
||||
layoutRow.activatable_widget = layoutDrop;
|
||||
let layouts;
|
||||
let [okL, contentsL] = GLib.file_get_contents(this.path + '/physicalLayouts.json');
|
||||
if (okL) {
|
||||
layouts = JSON.parse(contentsL);
|
||||
}
|
||||
|
||||
let layoutList = Object.keys(layouts);
|
||||
let layoutLandscapeDrop = Gtk.DropDown.new_from_strings(layoutList);
|
||||
layoutLandscapeDrop.valign = Gtk.Align.CENTER;
|
||||
layoutLandscapeDrop.selected = settings.get_int("layout-landscape");
|
||||
|
||||
layoutLandscapeRow.add_suffix(layoutLandscapeDrop);
|
||||
layoutLandscapeRow.activatable_widget = layoutLandscapeDrop;
|
||||
|
||||
const layoutPortraitRow = new Adw.ActionRow({
|
||||
title: _('Portrait Layout')
|
||||
});
|
||||
layoutRow.add_row(layoutPortraitRow);
|
||||
|
||||
let layoutPortraitDrop = Gtk.DropDown.new_from_strings(layoutList);
|
||||
layoutPortraitDrop.valign = Gtk.Align.CENTER;
|
||||
layoutPortraitDrop.selected = settings.get_int("layout-portrait");
|
||||
|
||||
layoutPortraitRow.add_suffix(layoutPortraitDrop);
|
||||
layoutPortraitRow.activatable_widget = layoutPortraitDrop;
|
||||
|
||||
const enableDragRow = new Adw.ActionRow({
|
||||
title: _('Enable Dragging')
|
||||
@ -132,6 +157,49 @@ export default class GjsOskPreferences extends ExtensionPreferences {
|
||||
landscapeSizing.add_row(lW);
|
||||
landscapeSizing.add_row(lH);
|
||||
|
||||
const defaultMonitor = new Adw.ActionRow({
|
||||
title: _('Default Monitor')
|
||||
})
|
||||
behaviorGroup.add(defaultMonitor);
|
||||
|
||||
let monitors = [];
|
||||
|
||||
const display = Gdk.Display.get_default();
|
||||
if (display && "get_monitors" in display) {
|
||||
const monitorsAvailable = display.get_monitors();
|
||||
|
||||
for (let idx = 0; idx < monitorsAvailable.get_n_items(); idx++) {
|
||||
const monitor = monitorsAvailable.get_item(idx);
|
||||
monitors.push(monitor);
|
||||
}
|
||||
}
|
||||
let monitorDrop = Gtk.DropDown.new_from_strings(monitors.map(m => m.get_model()))
|
||||
monitorDrop.valign = Gtk.Align.CENTER;
|
||||
let currentMonitorMap = {};
|
||||
let currentMonitors;
|
||||
if (settings.get_string("default-monitor").includes(";")) {
|
||||
currentMonitors = settings.get_string("default-monitor").split(";")
|
||||
} else {
|
||||
currentMonitors = [("1:" + monitors[0].get_connector())]
|
||||
}
|
||||
|
||||
for (var i of currentMonitors) {
|
||||
let tmp = i.split(":");
|
||||
currentMonitorMap[tmp[0]] = tmp[1] + "";
|
||||
}
|
||||
if (!Object.keys(currentMonitorMap).includes(monitors.length + "")) {
|
||||
let allConfigs = Object.keys(currentMonitorMap).map(Number.parseInt).sort();
|
||||
currentMonitorMap[monitors.length + ""] = allConfigs[allConfigs.length - 1];
|
||||
}
|
||||
let index = monitors.map(m => { return m.get_connector() }).indexOf(currentMonitorMap[monitors.length + ""]);
|
||||
if (index == -1) {
|
||||
index = 0
|
||||
}
|
||||
monitorDrop.selected = index;
|
||||
|
||||
defaultMonitor.add_suffix(monitorDrop);
|
||||
defaultMonitor.activatable_widget = monitorDrop;
|
||||
|
||||
const defaultPosition = new Adw.ActionRow({
|
||||
title: _('Default Position')
|
||||
});
|
||||
@ -203,6 +271,23 @@ export default class GjsOskPreferences extends ExtensionPreferences {
|
||||
darkCol.add_suffix(colorButton_d);
|
||||
darkCol.activatable_widget = colorButton_d;
|
||||
|
||||
const systemAccCol = new Adw.ActionRow({
|
||||
title: _("Use System Accent Color")
|
||||
})
|
||||
colorRow.add_row(systemAccCol)
|
||||
|
||||
const systemAccColEnabled = new Gtk.Switch({
|
||||
active: settings.get_boolean("system-accent-col"),
|
||||
valign: Gtk.Align.CENTER
|
||||
})
|
||||
|
||||
systemAccCol.add_suffix(systemAccColEnabled)
|
||||
systemAccCol.activatable_widget = systemAccColEnabled
|
||||
|
||||
systemAccCol.set_sensitive(major >= 47)
|
||||
lightCol.set_sensitive(!settings.get_boolean("system-accent-col"));
|
||||
darkCol.set_sensitive(!settings.get_boolean("system-accent-col"));
|
||||
|
||||
let fontSize = new Adw.ActionRow({
|
||||
title: _('Font Size (px)')
|
||||
});
|
||||
@ -211,7 +296,7 @@ export default class GjsOskPreferences extends ExtensionPreferences {
|
||||
let numChanger_font = Gtk.SpinButton.new_with_range(0, 100, 1);
|
||||
numChanger_font.value = settings.get_int('font-size-px');
|
||||
numChanger_font.valign = Gtk.Align.CENTER;
|
||||
|
||||
|
||||
fontSize.add_suffix(numChanger_font);
|
||||
fontSize.activatable_widget = numChanger_font;
|
||||
|
||||
@ -239,6 +324,17 @@ export default class GjsOskPreferences extends ExtensionPreferences {
|
||||
borderSpacing.add_suffix(numChanger_bord);
|
||||
borderSpacing.activatable_widget = numChanger_bord;
|
||||
|
||||
let outerSpacing = new Adw.ActionRow({
|
||||
title: _('Outer Spacing (px)')
|
||||
});
|
||||
appearanceGroup.add(outerSpacing);
|
||||
|
||||
let numChanger_outer = Gtk.SpinButton.new_with_range(0, 30, 1);
|
||||
numChanger_outer.value = settings.get_int('outer-spacing-px');
|
||||
numChanger_outer.valign = Gtk.Align.CENTER;
|
||||
outerSpacing.add_suffix(numChanger_outer);
|
||||
outerSpacing.activatable_widget = numChanger_outer;
|
||||
|
||||
let snapSpacing = new Adw.ActionRow({
|
||||
title: _('Drag snap spacing (px)')
|
||||
});
|
||||
@ -309,7 +405,7 @@ export default class GjsOskPreferences extends ExtensionPreferences {
|
||||
context.add_class("title-1");
|
||||
|
||||
let another_label = new Gtk.Label({
|
||||
label: _("Autorelease ") + `fab8e97`
|
||||
label: _("Autorelease ") + `776e35f`
|
||||
});
|
||||
|
||||
let links_pref_group = new Adw.PreferencesGroup();
|
||||
@ -348,8 +444,9 @@ export default class GjsOskPreferences extends ExtensionPreferences {
|
||||
page2.add(links_pref_group);
|
||||
|
||||
window.add(page2);
|
||||
|
||||
settings.bind("layout", layoutDrop, "selected", 0);
|
||||
|
||||
settings.bind("layout-landscape", layoutLandscapeDrop, "selected", 0);
|
||||
settings.bind("layout-portrait", layoutPortraitDrop, "selected", 0);
|
||||
settings.bind("enable-drag", dragEnableDT, "active", 0);
|
||||
settings.bind("enable-tap-gesture", dragOpt, "selected", 0);
|
||||
settings.bind("indicator-enabled", indEnabled, "active", 0);
|
||||
@ -372,14 +469,29 @@ export default class GjsOskPreferences extends ExtensionPreferences {
|
||||
settings.bind("font-size-px", numChanger_font, "value", 0);
|
||||
settings.bind("font-bold", fontBoldEnabled, "active", 0)
|
||||
settings.bind("border-spacing-px", numChanger_bord, "value", 0);
|
||||
settings.bind("outer-spacing-px", numChanger_outer, "value", 0);
|
||||
settings.bind("snap-spacing-px", numChanger_snap, "value", 0)
|
||||
settings.bind("round-key-corners", roundKeyCDT, "active", 0);
|
||||
settings.bind("play-sound", soundPlayDT, "active", 0);
|
||||
settings.bind("show-icons", showIconDT, "active", 0)
|
||||
settings.bind("default-snap", snapDrop, "selected", 0);
|
||||
monitorDrop.connect("notify::selected", () => {
|
||||
currentMonitorMap[monitors.length + ""] = monitors.map(m => { return m.get_connector() })[monitorDrop.selected];
|
||||
let representation = [];
|
||||
for (var k of Object.keys(currentMonitorMap)) {
|
||||
representation.push(k + ":" + currentMonitorMap[k])
|
||||
}
|
||||
settings.set_string("default-monitor", representation.join(";"))
|
||||
})
|
||||
systemAccColEnabled.connect("state-set", () => {
|
||||
settings.set_boolean("system-accent-col", systemAccColEnabled.active)
|
||||
lightCol.set_sensitive(!settings.get_boolean("system-accent-col"));
|
||||
darkCol.set_sensitive(!settings.get_boolean("system-accent-col"));
|
||||
})
|
||||
|
||||
window.connect("close-request", () => {
|
||||
settings.set_int("layout", layoutDrop.selected);
|
||||
settings.set_int("layout-landscape", layoutLandscapeDrop.selected);
|
||||
settings.set_int("layout-portrait", layoutPortraitDrop.selected);
|
||||
settings.set_boolean("enable-drag", dragEnableDT.active);
|
||||
settings.set_int("enable-tap-gesture", dragOpt.selected);
|
||||
settings.set_boolean("indicator-enabled", indEnabled.active);
|
||||
@ -398,11 +510,19 @@ export default class GjsOskPreferences extends ExtensionPreferences {
|
||||
settings.set_int("font-size-px", numChanger_font.value);
|
||||
settings.set_boolean("font-bold", fontBoldEnabled.active)
|
||||
settings.set_int("border-spacing-px", numChanger_bord.value);
|
||||
settings.set_int("outer-spacing-px", numChanger_outer.value);
|
||||
settings.set_int("snap-spacing-px", numChanger_snap.value)
|
||||
settings.set_boolean("round-key-corners", roundKeyCDT.active);
|
||||
settings.set_boolean("play-sound", soundPlayDT.active);
|
||||
settings.set_boolean("show-icons", showIconDT.active)
|
||||
settings.set_int("default-snap", snapDrop.selected);
|
||||
currentMonitorMap[monitors.length + ""] = monitors.map(m => { return m.get_connector() })[monitorDrop.selected];
|
||||
let representation = [];
|
||||
for (var k of Object.keys(currentMonitorMap)) {
|
||||
representation.push(k + ":" + currentMonitorMap[k])
|
||||
}
|
||||
settings.set_string("default-monitor", representation.join(";"))
|
||||
settings.set_boolean("system-accent-col", systemAccColEnabled.active)
|
||||
})
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user