119 lines
4 KiB
TypeScript
119 lines
4 KiB
TypeScript
import { execAsync } from 'astal';
|
|
import { App } from 'astal/gtk3';
|
|
|
|
import style from '../style/main.scss';
|
|
|
|
import AppLauncher from '../widgets/applauncher';
|
|
import AudioWindow from '../widgets/audio/wim';
|
|
import Bar from '../widgets/bar/wim';
|
|
import BgLayer from '../widgets/bg-layer';
|
|
import BluetoothWindow from '../widgets/bluetooth/wim';
|
|
import Calendar from '../widgets/date/wim';
|
|
import Clipboard from '../widgets/clipboard';
|
|
import Corners from '../widgets/corners';
|
|
import IconBrowser from '../widgets/icon-browser';
|
|
import NetworkWindow from '../widgets/network/wim';
|
|
import { NotifPopups, NotifCenter } from '../widgets/notifs/wim';
|
|
import OnScreenDisplay from '../widgets/on-screen-display';
|
|
import OnScreenKeyboard from '../widgets/on-screen-keyboard';
|
|
import PowerMenu from '../widgets/powermenu';
|
|
import Screenshot from '../widgets/screenshot';
|
|
|
|
import { closeAll, perMonitor } from '../lib';
|
|
import Brightness from '../services/brightness';
|
|
import MonitorClicks from '../services/monitor-clicks';
|
|
import Tablet from '../services/tablet';
|
|
|
|
|
|
export default () => {
|
|
App.start({
|
|
css: style,
|
|
|
|
requestHandler(request, respond) {
|
|
if (request.startsWith('open')) {
|
|
App.get_window(request.replace('open ', ''))?.set_visible(true);
|
|
respond('window opened');
|
|
}
|
|
else if (request.startsWith('closeAll')) {
|
|
closeAll();
|
|
respond('closed all windows');
|
|
}
|
|
else if (request.startsWith('fetchCapsState')) {
|
|
Brightness.get_default().fetchCapsState();
|
|
respond('fetched caps_lock state');
|
|
}
|
|
else if (request.startsWith('Brightness.screen')) {
|
|
Brightness.get_default().screen += parseFloat(request.replace('Brightness.screen ', ''));
|
|
respond('screen brightness changed');
|
|
}
|
|
else if (request.startsWith('popup')) {
|
|
popup_osd(request.replace('popup ', ''));
|
|
respond('osd popped up');
|
|
}
|
|
|
|
else if (request.startsWith('show-osk')) {
|
|
const tablet = Tablet.get_default();
|
|
|
|
if (tablet.currentMode === 'tablet') {
|
|
if (tablet.oskState) {
|
|
respond('osk state was unchanged');
|
|
}
|
|
else {
|
|
tablet.oskState = true;
|
|
tablet.oskAutoChanged = true;
|
|
respond('osk was shown');
|
|
}
|
|
}
|
|
else {
|
|
respond('osk state was unchanged');
|
|
}
|
|
}
|
|
|
|
else if (request.startsWith('hide-osk')) {
|
|
const tablet = Tablet.get_default();
|
|
|
|
if (tablet.currentMode === 'tablet') {
|
|
if (tablet.oskState && tablet.oskAutoChanged) {
|
|
tablet.oskState = false;
|
|
tablet.oskAutoChanged = true;
|
|
respond('osd was hidden');
|
|
}
|
|
else {
|
|
respond('osk state was unchanged');
|
|
}
|
|
}
|
|
else {
|
|
respond('osk state was unchanged');
|
|
}
|
|
}
|
|
},
|
|
|
|
main: () => {
|
|
execAsync('hyprpaper').catch(() => { /**/ });
|
|
|
|
perMonitor((monitor) => BgLayer(monitor, true));
|
|
|
|
AppLauncher();
|
|
AudioWindow();
|
|
Bar();
|
|
BluetoothWindow();
|
|
Calendar();
|
|
Clipboard();
|
|
Corners();
|
|
IconBrowser();
|
|
NetworkWindow();
|
|
NotifPopups();
|
|
NotifCenter();
|
|
OnScreenDisplay();
|
|
OnScreenKeyboard();
|
|
PowerMenu();
|
|
Screenshot();
|
|
|
|
Brightness.get_default({
|
|
kbd: 'tpacpi::kbd_backlight',
|
|
caps: 'input1::capslock',
|
|
});
|
|
MonitorClicks.get_default();
|
|
},
|
|
});
|
|
};
|