71 lines
2.1 KiB
TypeScript
71 lines
2.1 KiB
TypeScript
import { App, Astal, Gdk, Gtk } from "astal/gtk4";
|
|
import Hyprland from "./modules/Hyprland";
|
|
import Calendar from "./modules/Calendar";
|
|
import QuickView from "./modules/QuickView";
|
|
import SystemInfo from "./modules/SystemInfo";
|
|
import { CenterBox } from "astal/gtk4/widget";
|
|
|
|
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}
|
|
start_widget={
|
|
<box
|
|
hexpand
|
|
halign={Gtk.Align.START}
|
|
>
|
|
<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 => {
|
|
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,
|
|
};
|