import { App, Astal, Gdk, Gtk } from 'astal/gtk4'; import { Variable } from 'astal'; import Kompass from 'gi://Kompass'; import { Box, Calendar, CenterBox, Label, MenuButton, Popover, Window } from './subclasses'; const { EXCLUSIVE } = Astal.Exclusivity; const { TOP, LEFT, RIGHT } = Astal.WindowAnchor; const { CENTER } = Gtk.Align; const time = Variable(0); setInterval(() => { time.set(time.get() + 1); }, 1000); export default () => { const styledBox = ( <Box css={time().as((t) => `* { background: red; min-height: 10px; min-width: ${t}px; }`)} /> ) as Box; return ( <Window visible cssClasses={['Bar']} exclusivity={EXCLUSIVE} anchor={TOP | LEFT | RIGHT} application={App} > <CenterBox cssName="centerbox"> <Kompass.Tray cursor={Gdk.Cursor.new_from_name('pointer', null)} /> {styledBox} <MenuButton cursor={Gdk.Cursor.new_from_name('pointer', null)} hexpand halign={CENTER} > <Label label={time().as(String)} /> <Popover> <Calendar /> </Popover> </MenuButton> </CenterBox> </Window> ); };