This commit is contained in:
xsghetti 2024-04-11 00:21:35 -04:00
parent 1f8cb3c145
commit 610604e80f
253 changed files with 27055 additions and 44 deletions

View file

@ -0,0 +1,38 @@
import PanelButton from "../PanelButton.js"
import options from "../../../options.js"
import { sh, range } from "../../../lib/utils.js"
const hyprland = await Service.import("hyprland")
const { workspaces } = options.bar.workspaces
const dispatch = (arg) => {
sh(`hyprctl dispatch workspace ${arg}`)
}
const Workspaces = (ws) => Widget.Box({
children: range(ws || 20).map(i => Widget.Label({
attribute: i,
vpack: "center",
label: `${i}`,
setup: self => self.hook(hyprland, () => {
self.toggleClassName("active", hyprland.active.workspace.id === i)
self.toggleClassName("occupied", (hyprland.getWorkspace(i)?.windows || 0) > 0)
}),
})),
setup: box => {
if (ws === 0) {
box.hook(hyprland.active.workspace, () => box.children.map(btn => {
btn.visible = hyprland.workspaces.some(ws => ws.id === btn.attribute)
}))
}
},
})
export default () => PanelButton({
window: "overview",
class_name: "workspaces",
on_scroll_up: () => dispatch("m+1"),
on_scroll_down: () => dispatch("m-1"),
on_clicked: () => App.toggleWindow("overview"),
child: Workspaces(workspaces),
})