diff --git a/nixosModules/ags/config/app.ts b/nixosModules/ags/config/app.ts index ac690a4c..20af41a4 100644 --- a/nixosModules/ags/config/app.ts +++ b/nixosModules/ags/config/app.ts @@ -2,8 +2,23 @@ // TODO: quick-settings // TODO: music player stuff // TODO: on-screen-keyboard +// TODO: see if I can bundle each config separately with nix -import GLib from 'gi://GLib'; +import { programArgs } from 'system'; + +import binto from './configurations/binto'; +import wim from './configurations/wim'; + +import greeter from './configurations/greeter'; +import lock from './configurations/lock'; -(await import(`./configurations/${GLib.getenv('CONF')}.ts`)).default(); +switch (programArgs[0]) { + case 'binto': binto(); break; + + case 'wim': wim(); break; + + case 'greeter': greeter(); break; + + case 'lock': lock(); break; +} diff --git a/nixosModules/ags/config/configurations/binto.ts b/nixosModules/ags/config/configurations/binto.ts index db27ec3d..8bb571c7 100644 --- a/nixosModules/ags/config/configurations/binto.ts +++ b/nixosModules/ags/config/configurations/binto.ts @@ -1,25 +1,25 @@ -export default async() => { - const { execAsync } = await import('astal'); - const { App } = await import('astal/gtk3'); +import { execAsync } from 'astal'; +import { App } from 'astal/gtk3'; - const style = (await import('../style/main.scss')).default; +import style from '../style/main.scss'; - const AppLauncher = (await import('../widgets/applauncher/main')).default; - const Bar = (await import('../widgets/bar/binto')).default; - const BgLayer = (await import('../widgets/bg-layer/main')).default; - const Calendar = (await import('../widgets/date/binto')).default; - const Clipboard = (await import('../widgets/clipboard/main')).default; - const { NotifPopups, NotifCenter } = await import('../widgets/notifs/binto'); - const OSD = (await import('../widgets/osd/main')).default; - const PowerMenu = (await import('../widgets/powermenu/main')).default; - const Screenshot = (await import('../widgets/screenshot/main')).default; +import AppLauncher from '../widgets/applauncher/main'; +import Bar from '../widgets/bar/binto'; +import BgLayer from '../widgets/bg-layer/main'; +import Calendar from '../widgets/date/binto'; +import Clipboard from '../widgets/clipboard/main'; +import { NotifPopups, NotifCenter } from '../widgets/notifs/binto'; +import OSD from '../widgets/osd/main'; +import PowerMenu from '../widgets/powermenu/main'; +import Screenshot from '../widgets/screenshot/main'; - const { closeAll, perMonitor } = await import('../lib'); - const Brightness = (await import('../services/brightness')).default; - const GSR = (await import('../services/gpu-screen-recorder')).default; - const MonitorClicks = (await import('../services/monitor-clicks')).default; +import { closeAll, perMonitor } from '../lib'; +import Brightness from '../services/brightness'; +import GSR from '../services/gpu-screen-recorder'; +import MonitorClicks from '../services/monitor-clicks'; +export default () => { App.start({ css: style, @@ -61,9 +61,8 @@ export default async() => { PowerMenu(); Screenshot(); - Brightness.initService({ - caps: 'input2::capslock', - }); + Brightness.initService({ caps: 'input2::capslock' }); + GSR.initService(); new MonitorClicks(); }, }); diff --git a/nixosModules/ags/config/configurations/greeter.ts b/nixosModules/ags/config/configurations/greeter.ts index 3403d29b..ad2517eb 100644 --- a/nixosModules/ags/config/configurations/greeter.ts +++ b/nixosModules/ags/config/configurations/greeter.ts @@ -1,12 +1,12 @@ -export default async() => { - const { execAsync } = await import('astal'); - const { App } = await import('astal/gtk3'); +import { execAsync } from 'astal'; +import { App } from 'astal/gtk3'; - const Greeter = (await import('../widgets/greeter/main')).default; +import Greeter from '../widgets/greeter/main'; - const style = (await import('../style/greeter.scss')).default; +import style from '../style/greeter.scss'; +export default () => { App.start({ css: style, instanceName: 'greeter', diff --git a/nixosModules/ags/config/configurations/lock.ts b/nixosModules/ags/config/configurations/lock.ts index a551efb4..55d56145 100644 --- a/nixosModules/ags/config/configurations/lock.ts +++ b/nixosModules/ags/config/configurations/lock.ts @@ -1,11 +1,11 @@ -export default async() => { - const { App } = await import('astal/gtk3'); +import { App } from 'astal/gtk3'; - const Lockscreen = (await import('../widgets/lockscreen/main')).default; +import Lockscreen from '../widgets/lockscreen/main'; - const style = (await import('../style/lock.scss')).default; +import style from '../style/lock.scss'; +export default () => { App.start({ css: style, instanceName: 'lock', diff --git a/nixosModules/ags/config/configurations/wim.ts b/nixosModules/ags/config/configurations/wim.ts index 2f0aceb3..692f586b 100644 --- a/nixosModules/ags/config/configurations/wim.ts +++ b/nixosModules/ags/config/configurations/wim.ts @@ -1,26 +1,26 @@ -export default async() => { - const { execAsync } = await import('astal'); - const { App } = await import('astal/gtk3'); +import { execAsync } from 'astal'; +import { App } from 'astal/gtk3'; - const style = (await import('../style/main.scss')).default; +import style from '../style/main.scss'; - const AppLauncher = (await import('../widgets/applauncher/main')).default; - const Bar = (await import('../widgets/bar/wim')).default; - const BgLayer = (await import('../widgets/bg-layer/main')).default; - const Calendar = (await import('../widgets/date/wim')).default; - const Clipboard = (await import('../widgets/clipboard/main')).default; - const Corners = (await import('../widgets/corners/main')).default; - const IconBrowser = (await import('../widgets/icon-browser/main')).default; - const { NotifPopups, NotifCenter } = await import('../widgets/notifs/wim'); - const OSD = (await import('../widgets/osd/main')).default; - const PowerMenu = (await import('../widgets/powermenu/main')).default; - const Screenshot = (await import('../widgets/screenshot/main')).default; +import AppLauncher from '../widgets/applauncher/main'; +import Bar from '../widgets/bar/wim'; +import BgLayer from '../widgets/bg-layer/main'; +import Calendar from '../widgets/date/wim'; +import Clipboard from '../widgets/clipboard/main'; +import Corners from '../widgets/corners/main'; +import IconBrowser from '../widgets/icon-browser/main'; +import { NotifPopups, NotifCenter } from '../widgets/notifs/wim'; +import OSD from '../widgets/osd/main'; +import PowerMenu from '../widgets/powermenu/main'; +import Screenshot from '../widgets/screenshot/main'; - const { closeAll, perMonitor } = await import('../lib'); - const Brightness = (await import('../services/brightness')).default; - const MonitorClicks = (await import('../services/monitor-clicks')).default; +import { closeAll, perMonitor } from '../lib'; +import Brightness from '../services/brightness'; +import MonitorClicks from '../services/monitor-clicks'; +export default () => { App.start({ css: style, diff --git a/nixosModules/ags/config/services/gpu-screen-recorder.ts b/nixosModules/ags/config/services/gpu-screen-recorder.ts index 8509b07a..5e01ab1c 100644 --- a/nixosModules/ags/config/services/gpu-screen-recorder.ts +++ b/nixosModules/ags/config/services/gpu-screen-recorder.ts @@ -75,25 +75,28 @@ const notifySend = ({ class GSR extends GObject.Object { private _lastNotifID: number | undefined; - constructor() { - super(); + public initService() { + try { + subprocess( + ['gsr-start'], + (path) => { + if (!this._lastNotifID) { + console.error('[GSR] ID of warning notif not found'); - subprocess( - ['gsr-start'], - (path) => { - if (!this._lastNotifID) { - console.error('[GSR] ID of warning notif not found'); - - setTimeout(() => { + setTimeout(() => { + this._onSaved(path); + }, 1000); + } + else { this._onSaved(path); - }, 1000); - } - else { - this._onSaved(path); - } - }, - () => { /**/ }, - ); + } + }, + () => { /**/ }, + ); + } + catch (_e) { + console.error('Missing dependency for gpu-screen-recorder'); + } } public saveReplay() { diff --git a/nixosModules/ags/config/widgets/greeter/main.tsx b/nixosModules/ags/config/widgets/greeter/main.tsx index fbb5af64..668cd050 100644 --- a/nixosModules/ags/config/widgets/greeter/main.tsx +++ b/nixosModules/ags/config/widgets/greeter/main.tsx @@ -4,92 +4,84 @@ import { App, Astal, Gtk, Widget } from 'astal/gtk3'; import AstalGreet from 'gi://AstalGreet'; -const DEFAULT_NAME = 'matt'; -const PARSED_INDEX = { - name: 0, - uid: 2, - gid: 3, - desc: 4, - home: 5, - shell: 6, -}; +export default () => { + const DEFAULT_NAME = 'matt'; + const PARSED_INDEX = { + name: 0, + uid: 2, + gid: 3, + desc: 4, + home: 5, + shell: 6, + }; -const parsePasswd = (fileContent: string) => { - const splitUsers = fileContent.split('\n'); - const parsedUsers = splitUsers.map((u) => { - const user = u.split(':'); + const parsePasswd = (fileContent: string) => { + const splitUsers = fileContent.split('\n'); + const parsedUsers = splitUsers.map((u) => { + const user = u.split(':'); - return { - name: user[PARSED_INDEX.name], - uid: Number(user[PARSED_INDEX.uid]), - gid: Number(user[PARSED_INDEX.gid]), - desc: user[PARSED_INDEX.desc], - home: user[PARSED_INDEX.home], - shell: user[PARSED_INDEX.shell], - }; + return { + name: user[PARSED_INDEX.name], + uid: Number(user[PARSED_INDEX.uid]), + gid: Number(user[PARSED_INDEX.gid]), + desc: user[PARSED_INDEX.desc], + home: user[PARSED_INDEX.home], + shell: user[PARSED_INDEX.shell], + }; + }); + + // Filter out system users, nixbld users and nobody + return parsedUsers.filter((u) => { + return u.uid >= 1000 && + !u.name.includes('nixbld') && + u.name !== 'nobody'; + }); + }; + + const users = parsePasswd(readFile('/etc/passwd')); + + const dropdown = new Gtk.ComboBoxText(); + + dropdown.show_all(); + + users.forEach((u) => { + dropdown.append(null, u.name); }); - // Filter out system users, nixbld users and nobody - return parsedUsers.filter((u) => { - return u.uid >= 1000 && - !u.name.includes('nixbld') && - u.name !== 'nobody'; - }); -}; + const response =