[gnome] Move to Grimble tiling manager
This commit is contained in:
@ -0,0 +1,83 @@
|
||||
import {Combo, Shortcut} from '../common.js';
|
||||
import {loadConfiguration, saveConfiguration} from '../utils.js';
|
||||
import GLib from 'gi://GLib';
|
||||
export default class ComboRowHandler {
|
||||
_combos;
|
||||
_windowManager;
|
||||
constructor(windowManager, extension) {
|
||||
this._windowManager = windowManager;
|
||||
this._combos = Combo.getCombo();
|
||||
this._combos.forEach(({key}) => {
|
||||
extension._settings?.connect(`changed::${key}`, () => this._onComboChanged(key, extension));
|
||||
});
|
||||
}
|
||||
|
||||
_onComboChanged(key, extension) {
|
||||
const shortcuts = Shortcut.getShortcuts();
|
||||
switch (key) {
|
||||
case 'keybinding-config':
|
||||
if (extension.metadata && extension._settings?.get_string('keybinding-config')) {
|
||||
let conf = extension._settings?.get_string('keybinding-config');
|
||||
if (conf === 'i3') {
|
||||
loadConfiguration(`${extension.path}/configs/i3.json`, c => {
|
||||
if (extension._settings) {
|
||||
for (const p of shortcuts) {
|
||||
if (c[p])
|
||||
extension._settings.set_strv(p, [c[p]]);
|
||||
|
||||
else
|
||||
extension._settings.set_strv(p, []);
|
||||
}
|
||||
}
|
||||
}, () => { });
|
||||
} else if (conf === 'Grimble') {
|
||||
loadConfiguration(`${extension.path}/configs/grimble.json`, c => {
|
||||
if (extension._settings) {
|
||||
for (const p of shortcuts) {
|
||||
if (c[p])
|
||||
extension._settings.set_strv(p, [c[p]]);
|
||||
|
||||
else
|
||||
extension._settings.set_strv(p, []);
|
||||
}
|
||||
}
|
||||
}, () => { });
|
||||
} else if (conf === 'None') {
|
||||
loadConfiguration(`${extension.path}/configs/default.json`, c => {
|
||||
if (extension._settings) {
|
||||
for (const p of shortcuts) {
|
||||
if (c[p])
|
||||
extension._settings.set_strv(p, [c[p]]);
|
||||
|
||||
else
|
||||
extension._settings.set_strv(p, []);
|
||||
}
|
||||
}
|
||||
}, () => { });
|
||||
} else if (conf === 'Custom') {
|
||||
const userPath = GLib.get_user_config_dir();
|
||||
let o = {};
|
||||
for (const p of shortcuts)
|
||||
o[p] = extension._settings.get_strv(p) ?? [];
|
||||
|
||||
loadConfiguration(`${userPath}/grimble/config/custom.json`, c => {
|
||||
if (extension._settings) {
|
||||
for (const p of shortcuts) {
|
||||
if (c[p])
|
||||
extension._settings.set_strv(p, c[p]);
|
||||
|
||||
else
|
||||
extension._settings.set_strv(p, []);
|
||||
}
|
||||
}
|
||||
}, () => {
|
||||
saveConfiguration('custom.json', o);
|
||||
});
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user