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}
 | |
|                     startWidget={
 | |
|                         <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,
 | |
| };
 |