86 lines
2.2 KiB
TypeScript
86 lines
2.2 KiB
TypeScript
import {
|
|
App, Astal, Gdk, Gtk
|
|
} from 'astal/gtk4';
|
|
import Calendar from './modules/Calendar';
|
|
import {
|
|
CenterBox
|
|
} from 'astal/gtk4/widget';
|
|
import Hyprland from './modules/Hyprland';
|
|
import QuickView from './modules/QuickView';
|
|
import SystemInfo from './modules/SystemInfo';
|
|
|
|
const Bar = ( {
|
|
gdkmonitor, name
|
|
}: {
|
|
'gdkmonitor': Gdk.Monitor,
|
|
'name': string
|
|
} ) => {
|
|
const {
|
|
TOP, LEFT, RIGHT
|
|
} = Astal.WindowAnchor;
|
|
|
|
return (
|
|
<window
|
|
gdkmonitor={gdkmonitor}
|
|
cssClasses={[ 'Bar' ]}
|
|
name={name}
|
|
namespace={'bar'}
|
|
exclusivity={Astal.Exclusivity.EXCLUSIVE}
|
|
anchor={TOP | LEFT | RIGHT}
|
|
visible
|
|
application={App}
|
|
child={
|
|
<CenterBox
|
|
orientation={Gtk.Orientation.HORIZONTAL}
|
|
startWidget={
|
|
<box
|
|
hexpand
|
|
halign={Gtk.Align.START}
|
|
>
|
|
<Hyprland.ModeStatus />
|
|
<Calendar.Time />
|
|
<SystemInfo.SystemInfo />
|
|
<Hyprland.Workspace />
|
|
</box>
|
|
}
|
|
centerWidget={<Hyprland.ActiveWindow />}
|
|
endWidget={
|
|
<box
|
|
hexpand
|
|
halign={Gtk.Align.END}
|
|
cssClasses={[ 'BarRight' ]}
|
|
>
|
|
<Hyprland.SysTray />
|
|
<QuickView.QuickView />
|
|
</box>
|
|
}
|
|
></CenterBox>
|
|
}
|
|
></window>
|
|
);
|
|
};
|
|
|
|
const cliHandler = ( args: string[] ): string => {
|
|
console.debug( args );
|
|
|
|
return 'Not implemented';
|
|
};
|
|
|
|
const BarLauncher = ( monitor: Gdk.Monitor ) => {
|
|
const windowName = `bar-${ monitor.get_connector() }`;
|
|
|
|
const createBar = () => {
|
|
return <Bar gdkmonitor={monitor} name={windowName}></Bar>;
|
|
};
|
|
|
|
// Actually start the bar
|
|
createBar();
|
|
|
|
return windowName;
|
|
};
|
|
|
|
export default {
|
|
BarLauncher,
|
|
cliHandler,
|
|
};
|