bla
This commit is contained in:
parent
2c9ff9db2f
commit
7da7b506f9
5 changed files with 120 additions and 50 deletions
|
@ -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
|
||||
|
|
|
@ -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()}
|
||||
/>
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -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 >
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue