Add base gnome extensions
This commit is contained in:
137
gnome/.local/share/extensions/Vitals@CoreCoding.com/prefs.js
Normal file
137
gnome/.local/share/extensions/Vitals@CoreCoding.com/prefs.js
Normal file
@ -0,0 +1,137 @@
|
||||
import Adw from 'gi://Adw';
|
||||
import Gio from 'gi://Gio';
|
||||
import GObject from 'gi://GObject';
|
||||
import Gtk from 'gi://Gtk';
|
||||
import {ExtensionPreferences, gettext as _} from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js';
|
||||
|
||||
/*
|
||||
if (sensor == 'show-storage' && this._settings.get_boolean(sensor)) {
|
||||
|
||||
let val = true;
|
||||
|
||||
try {
|
||||
let GTop = imports.gi.GTop;
|
||||
} catch (e) {
|
||||
val = false;
|
||||
}
|
||||
|
||||
let now = new Date().getTime();
|
||||
this._notify("Vitals", "Please run sudo apt install gir1.2-gtop-2.0", 'folder-symbolic');
|
||||
|
||||
}
|
||||
*/
|
||||
|
||||
const Settings = new GObject.Class({
|
||||
Name: 'Vitals.Settings',
|
||||
|
||||
_init: function(extensionObject, params) {
|
||||
this._extensionObject = extensionObject
|
||||
this.parent(params);
|
||||
|
||||
this._settings = extensionObject.getSettings();
|
||||
|
||||
this.builder = new Gtk.Builder();
|
||||
this.builder.set_translation_domain(this._extensionObject.metadata['gettext-domain']);
|
||||
this.builder.add_from_file(this._extensionObject.path + '/prefs.ui');
|
||||
this.widget = this.builder.get_object('prefs-container');
|
||||
|
||||
this._bind_settings();
|
||||
},
|
||||
|
||||
// Bind the gtk window to the schema settings
|
||||
_bind_settings: function() {
|
||||
let widget;
|
||||
|
||||
// process sensor toggles
|
||||
let sensors = [ 'show-temperature', 'show-voltage', 'show-fan',
|
||||
'show-memory', 'show-processor', 'show-system',
|
||||
'show-network', 'show-storage', 'use-higher-precision',
|
||||
'alphabetize', 'hide-zeros', 'include-public-ip',
|
||||
'show-battery', 'fixed-widths', 'hide-icons',
|
||||
'menu-centered', 'include-static-info' ];
|
||||
|
||||
for (let key in sensors) {
|
||||
let sensor = sensors[key];
|
||||
|
||||
widget = this.builder.get_object(sensor);
|
||||
widget.set_active(this._settings.get_boolean(sensor));
|
||||
widget.connect('state-set', (_, val) => {
|
||||
this._settings.set_boolean(sensor, val);
|
||||
});
|
||||
}
|
||||
|
||||
// process individual drop down sensor preferences
|
||||
sensors = [ 'position-in-panel', 'unit', 'network-speed-format', 'memory-measurement', 'storage-measurement', 'battery-slot' ];
|
||||
for (let key in sensors) {
|
||||
let sensor = sensors[key];
|
||||
|
||||
widget = this.builder.get_object(sensor);
|
||||
widget.set_active(this._settings.get_int(sensor));
|
||||
widget.connect('changed', (widget) => {
|
||||
this._settings.set_int(sensor, widget.get_active());
|
||||
});
|
||||
}
|
||||
|
||||
this._settings.bind('update-time', this.builder.get_object('update-time'), 'value', Gio.SettingsBindFlags.DEFAULT);
|
||||
|
||||
// process individual text entry sensor preferences
|
||||
sensors = [ 'storage-path', 'monitor-cmd' ];
|
||||
for (let key in sensors) {
|
||||
let sensor = sensors[key];
|
||||
|
||||
widget = this.builder.get_object(sensor);
|
||||
widget.set_text(this._settings.get_string(sensor));
|
||||
|
||||
widget.connect('changed', (widget) => {
|
||||
let text = widget.get_text();
|
||||
if (!text) text = widget.get_placeholder_text();
|
||||
this._settings.set_string(sensor, text);
|
||||
});
|
||||
}
|
||||
|
||||
// makes individual sensor preference boxes appear
|
||||
sensors = [ 'temperature', 'network', 'storage', 'memory', 'battery', 'system', 'processor' ];
|
||||
for (let key in sensors) {
|
||||
let sensor = sensors[key];
|
||||
|
||||
// create dialog for intelligent autohide advanced settings
|
||||
this.builder.get_object(sensor + '-prefs').connect('clicked', () => {
|
||||
let transientObj = this.widget.get_root();
|
||||
let title = sensor.charAt(0).toUpperCase() + sensor.slice(1);
|
||||
let dialog = new Gtk.Dialog({ title: _(title) + ' ' + _('Preferences'),
|
||||
transient_for: transientObj,
|
||||
use_header_bar: false,
|
||||
modal: true });
|
||||
|
||||
let box = this.builder.get_object(sensor + '_prefs');
|
||||
dialog.get_content_area().append(box);
|
||||
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.show();
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
export default class VitalsPrefs extends ExtensionPreferences {
|
||||
fillPreferencesWindow(window) {
|
||||
window._settings = this.getSettings();
|
||||
|
||||
let settings = new Settings(this);
|
||||
let widget = settings.widget;
|
||||
|
||||
const page = new Adw.PreferencesPage();
|
||||
const group = new Adw.PreferencesGroup({});
|
||||
group.add(widget);
|
||||
page.add(group);
|
||||
window.add(page);
|
||||
window.set_default_size(widget.width, widget.height);
|
||||
widget.show();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user