import App from 'resource:///com/github/Aylur/ags/app.js'; import Hyprland from 'resource:///com/github/Aylur/ags/service/hyprland.js'; import Bluetooth from 'resource:///com/github/Aylur/ags/service/bluetooth.js'; import { execAsync, readFileAsync, timeout } from 'resource:///com/github/Aylur/ags/utils.js'; const { get_home_dir } = imports.gi.GLib; import Brightness from '../services/brightness.js'; import Pointers from '../services/pointers.js'; import Tablet from '../services/tablet.js'; import TouchGestures from '../services/touch-gestures.js'; import closeAll from './misc/closer.js'; export default () => { globalThis.Brightness = Brightness; globalThis.Pointers = Pointers; globalThis.Tablet = Tablet; globalThis.closeAll = closeAll; // Persist Bluetooth state const bluetoothFile = `${get_home_dir()}/.cache/ags/.bluetooth`; const stateCmd = () => ['bash', '-c', `echo ${Bluetooth.enabled} > ${bluetoothFile}`]; const monitorState = () => { Bluetooth.connect('notify::enabled', () => { execAsync(stateCmd()).catch(print); }); }; // On launch readFileAsync(bluetoothFile).then((content) => { Bluetooth.enabled = JSON.parse(content); timeout(1000, () => { monitorState(); }); }).catch(() => { execAsync(stateCmd()).then(() => { monitorState(); }).catch(print); }); TouchGestures.addGesture({ name: 'openAppLauncher', gesture: 'UD', edge: 'T', command: () => App.openWindow('applauncher'), }); TouchGestures.addGesture({ name: 'oskOn', gesture: 'DU', edge: 'B', command: 'busctl call --user sm.puri.OSK0 /sm/puri/OSK0 sm.puri.OSK0 ' + 'SetVisible b true', }); TouchGestures.addGesture({ name: 'oskOff', gesture: 'UD', edge: 'B', command: 'busctl call --user sm.puri.OSK0 /sm/puri/OSK0 sm.puri.OSK0 ' + 'SetVisible b false', }); TouchGestures.addGesture({ name: 'swipeSpotify1', gesture: 'LR', edge: 'L', command: () => Hyprland.sendMessage( 'dispatch togglespecialworkspace spot', ), }); TouchGestures.addGesture({ name: 'swipeSpotify2', gesture: 'RL', edge: 'L', command: () => Hyprland.sendMessage( 'dispatch togglespecialworkspace spot', ), }); };