This commit is contained in:
Bloxx12 2025-04-22 21:10:49 +02:00
commit 7da7b506f9
5 changed files with 120 additions and 50 deletions

View file

@ -4,7 +4,7 @@ import AstalTray from "gi://AstalTray?version=0.1"
export default function Systray() {
const tray = AstalTray.get_default()
return <box cssClasses={["SysTray"]} >
return <box cssClasses={["Systray"]} >
{
bind(tray, "items").as(items => items.map(item => (
<menubutton

View file

@ -1,11 +1,15 @@
import { GLib, Variable, } from "astal"
import { App, Gtk, Gdk } from "astal/gtk4";
export default function Time({ }) {
const time = Variable<string>("").poll(1000, () => GLib.DateTime.new_now_local().format("%H:%M")!)
return <label
cssName="Time"
onDestroy={() => time.drop()}
label={time()} />
label={time()}
/>
}

View file

@ -1,5 +1,39 @@
import Hyprland from "gi://AstalHyprland"
import { bind, } from "astal"
import { bind, Variable } from "astal"
import { Gtk } from "astal/gtk4"
function WorkspaceButton(ws: Hyprland.Workspace) {
const hypr = Hyprland.get_default()
const classNames = Variable.derive(
[bind(hypr, "focusedWorkspace"), bind(hypr, "clients")],
(fws, _) => {
const classes = []
const active = fws.id == ws.id
active && classes.push("active")
const occupied = hypr.get_workspace(ws.id)?.get_clients()?.length > 0;
occupied && classes.push("occupied");
return classes;
})
const classes = classNames()
return (
<button
cssClasses={classes}
onDestroy={() => classNames.drop()}
// visible={classes.as(cn => cn.includes("occupied") || cn.includes("active"))}
valign={Gtk.Align.CENTER}
halign={Gtk.Align.CENTER}
onClicked={() => ws.focus()}>
</button>
)
}
export default function Workspaces() {
const hypr = Hyprland.get_default()
@ -10,15 +44,11 @@ export default function Workspaces() {
.filter(ws => !(ws.id >= -99 && ws.id < -2))
.sort((a, b) => a.id - b.id)
.map((ws) => (
<button
onClicked={() => ws.focus()}
cssClasses={bind(hypr, "focusedWorkspace").as((active) =>
ws === active ? ["focused"] : [],
)}
>
{ws.id}
</button>
WorkspaceButton(ws)
)),
)}
</box >
}