const { Gdk, Gtk } = imports.gi; import App from 'resource:///com/github/Aylur/ags/app.js' import Variable from 'resource:///com/github/Aylur/ags/variable.js'; import Mpris from 'resource:///com/github/Aylur/ags/service/mpris.js'; import * as Utils from 'resource:///com/github/Aylur/ags/utils.js'; const { exec, execAsync } = Utils; Gtk.IconTheme.get_default().append_search_path(`${App.configDir}/assets/icons`); // Global vars for external control (through keybinds) export const showMusicControls = Variable(false, {}) export const showColorScheme = Variable(false, {}) globalThis['openMusicControls'] = showMusicControls; globalThis['openColorScheme'] = showColorScheme; globalThis['mpris'] = Mpris; // Mode switching export const currentShellMode = Variable('normal', {}) // normal, focus globalThis['currentMode'] = currentShellMode; globalThis['cycleMode'] = () => { if (currentShellMode.value === 'normal') { currentShellMode.value = 'focus'; } else if (currentShellMode.value === 'focus') { currentShellMode.value = 'nothing'; } else { currentShellMode.value = 'normal'; } } // Window controls const range = (length, start = 1) => Array.from({ length }, (_, i) => i + start); globalThis['toggleWindowOnAllMonitors'] = (name) => { range(Gdk.Display.get_default()?.get_n_monitors() || 1, 0).forEach(id => { App.toggleWindow(`${name}${id}`); }); } globalThis['closeWindowOnAllMonitors'] = (name) => { range(Gdk.Display.get_default()?.get_n_monitors() || 1, 0).forEach(id => { App.closeWindow(`${name}${id}`); }); } globalThis['openWindowOnAllMonitors'] = (name) => { range(Gdk.Display.get_default()?.get_n_monitors() || 1, 0).forEach(id => { App.openWindow(`${name}${id}`); }); } globalThis['closeEverything'] = () => { const numMonitors = Gdk.Display.get_default()?.get_n_monitors() || 1; for (let i = 0; i < numMonitors; i++) { App.closeWindow(`cheatsheet${i}`); App.closeWindow(`session${i}`); } App.closeWindow('sideleft'); App.closeWindow('sideright'); App.closeWindow('overview'); };