.dotfiles/.local/share/gnome-shell/extensions/caffeine@patapon.info/prefs.js

85 lines
3.3 KiB
JavaScript
Raw Normal View History

/*
This file is part of Caffeine (gnome-shell-extension-caffeine).
Caffeine 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.
Caffeine 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 Caffeine.
If not, see <https://www.gnu.org/licenses/>.
Copyright 2022 Pakaoraki
// From https://gitlab.com/skrewball/openweather/-/blob/master/src/prefs.js
*/
/* exported CaffeinePrefs */
'use strict';
import Gtk from 'gi://Gtk';
import Gdk from 'gi://Gdk';
// Import preferences pages
import * as GeneralPrefs from './preferences/generalPage.js';
import * as DisplayPrefs from './preferences/displayPage.js';
import * as AppsPrefs from './preferences/appsPage.js';
import { ExtensionPreferences } from 'resource:///org/gnome/Shell/Extensions/js/extensions/prefs.js';
const SettingsKey = {
INHIBIT_APPS: 'inhibit-apps',
SHOW_INDICATOR: 'show-indicator',
SHOW_NOTIFICATIONS: 'show-notifications',
SHOW_TIMER: 'show-timer',
DURATION_TIMER_INDEX: 'duration-timer',
FULLSCREEN: 'enable-fullscreen',
RESTORE: 'restore-state',
NIGHT_LIGHT: 'nightlight-control',
TOGGLE_SHORTCUT: 'toggle-shortcut',
DEFAULT_WIDTH: 'prefs-default-width',
DEFAULT_HEIGHT: 'prefs-default-height',
SCREEN_BLANK: 'screen-blank',
TRIGGER_APPS_MODE: 'trigger-apps-mode',
INDICATOR_POSITION: 'indicator-position',
INDICATOR_INDEX: 'indicator-position-index',
INDICATOR_POS_MAX: 'indicator-position-max'
};
export default class CaffeinePrefs extends ExtensionPreferences {
fillPreferencesWindow(window) {
let iconTheme = Gtk.IconTheme.get_for_display(Gdk.Display.get_default());
if (!iconTheme.get_search_path().includes(this.path + '/icons')) {
iconTheme.add_search_path(this.path + '/icons');
}
const settings = this.getSettings();
const generalPage = new GeneralPrefs.GeneralPage(settings, SettingsKey);
const displayPage = new DisplayPrefs.DisplayPage(settings, SettingsKey);
const appsPage = new AppsPrefs.AppsPage(settings, SettingsKey);
let prefsWidth = settings.get_int(SettingsKey.DEFAULT_WIDTH);
let prefsHeight = settings.get_int(SettingsKey.DEFAULT_HEIGHT);
window.set_default_size(prefsWidth, prefsHeight);
window.set_search_enabled(true);
window.add(generalPage);
window.add(displayPage);
window.add(appsPage);
window.connect('close-request', () => {
let currentWidth = window.default_width;
let currentHeight = window.default_height;
// Remember user window size adjustments.
if (currentWidth !== prefsWidth || currentHeight !== prefsHeight) {
settings.set_int(SettingsKey.DEFAULT_WIDTH, currentWidth);
settings.set_int(SettingsKey.DEFAULT_HEIGHT, currentHeight);
}
window.destroy();
});
}
}