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,
 | |
| };
 |