aboutsummaryrefslogtreecommitdiff
path: root/.config/ags/widget/bar/buttons/Workspaces.ts
diff options
context:
space:
mode:
authorsrdusr <trevorgray@srdusr.com>2024-06-13 13:11:05 +0200
committersrdusr <trevorgray@srdusr.com>2024-06-13 13:11:05 +0200
commitd0fbb19623e4fb6097e1ff3ee49c6a76a0928d0e (patch)
tree937531ddf423d3935c6e20c8a9227e39ce782241 /.config/ags/widget/bar/buttons/Workspaces.ts
parent4ccbe0270c25ecab492508b5b0209ae53b9c35bd (diff)
downloaddotfiles-d0fbb19623e4fb6097e1ff3ee49c6a76a0928d0e.tar.gz
dotfiles-d0fbb19623e4fb6097e1ff3ee49c6a76a0928d0e.zip
Add ags
Diffstat (limited to '.config/ags/widget/bar/buttons/Workspaces.ts')
-rw-r--r--.config/ags/widget/bar/buttons/Workspaces.ts38
1 files changed, 38 insertions, 0 deletions
diff --git a/.config/ags/widget/bar/buttons/Workspaces.ts b/.config/ags/widget/bar/buttons/Workspaces.ts
new file mode 100644
index 0000000..982ba13
--- /dev/null
+++ b/.config/ags/widget/bar/buttons/Workspaces.ts
@@ -0,0 +1,38 @@
+import PanelButton from "../PanelButton"
+import options from "options"
+import { sh, range } from "lib/utils"
+
+const hyprland = await Service.import("hyprland")
+const { workspaces } = options.bar.workspaces
+
+const dispatch = (arg: string | number) => {
+ sh(`hyprctl dispatch workspace ${arg}`)
+}
+
+const Workspaces = (ws: number) => 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.bind().as(Workspaces),
+})