diff options
| author | Danilo M. <danix@danix.xyz> | 2026-09-16 20:02:23 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-09-16 20:02:23 +0200 |
| commit | b21deb0c6bfeca1c1af33875d55e7c26c62d0bba (patch) | |
| tree | d0eacb859f76f3da5c00cdeff96a2754a10acac9 | |
| parent | 0526541133e1d4cc2c4b7f291897734b120e7ebc (diff) | |
| download | conky-theme-udt-b21deb0c6bfeca1c1af33875d55e7c26c62d0bba.tar.gz conky-theme-udt-b21deb0c6bfeca1c1af33875d55e7c26c62d0bba.zip | |
feat: add Hyprland placement rules and toggle
A Lua section, not a .conf fragment: the live Hyprland config is
hyprland.lua requiring sections/, with rules declared through the hl
helper API.
Pins conky-dash to its own special:dash workspace, fullscreen, no
border, no focus, and binds SUPER+S. Not SUPER+D, which keybindings.lua
already binds to the unnamed special workspace, and that workspace
already hosts the btop scratchpad.
no_focus matters because the dashboard starts with the session:
without it, it steals focus at login and can be tabbed to like an app.
autostart.lua already launches a bare conky, so the README says to
change that line rather than add one, which would run two instances.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
| -rw-r--r-- | hypr/README.md | 39 | ||||
| -rw-r--r-- | hypr/dashboard.lua | 58 |
2 files changed, 97 insertions, 0 deletions
diff --git a/hypr/README.md b/hypr/README.md new file mode 100644 index 0000000..90a5f4d --- /dev/null +++ b/hypr/README.md @@ -0,0 +1,39 @@ +# Hyprland integration + +`dashboard.lua` is a section for the Lua-based Hyprland config in +`~/.config/hypr/`. It is not sourced automatically; wire it in once: + + ln -s ~/Programming/GIT/conky-theme-udt/hypr/dashboard.lua \ + ~/.config/hypr/sections/dashboard.lua + +and add to `~/.config/hypr/hyprland.lua`: + + require("sections.dashboard") + +## One change to make by hand + +`sections/autostart.lua` runs `hl.exec_cmd("conky")`, which starts the old +desktop-layer conky. The dashboard replaces it, so change that line to: + + hl.exec_cmd("conky -c ~/.config/conky/conky.conf") + +Leaving both would run two conky instances. + +## Bindings + +`SUPER+S` toggles the dashboard. `SUPER+D` is already taken by the unnamed +special workspace, and that workspace also hosts the btop scratchpad, which is +why the dashboard uses its own `special:dash`. + +The bind is written with a literal `"SUPER"` rather than `hl.mainMod`: +`keybindings.lua` declares `mainMod` as a file-local, so it is not visible to +other sections. + +## Rule keys + +`workspace`, `float`, `border_size` and `rounding` are all used by existing +rules in `sections/look_and_feel.lua` and `sections/workspaces.lua`, so their +spelling is confirmed. `fullscreen` and `no_focus` are not used anywhere else +in this config; if the Lua runtime ignores them, the dashboard still lands on +`special:dash` and can be sized with +`size = "(monitor_w) (monitor_h)"` instead. diff --git a/hypr/dashboard.lua b/hypr/dashboard.lua new file mode 100644 index 0000000..344585a --- /dev/null +++ b/hypr/dashboard.lua @@ -0,0 +1,58 @@ +-- Conky Lua dashboard: window placement and toggle. +-- +-- Copy or symlink into ~/.config/hypr/sections/ and add to hyprland.lua: +-- require("sections.dashboard") +-- +-- The dashboard is a normal toplevel, not a desktop-layer surface, which is +-- what lets a window rule put it on a workspace at all. + +-- Its own named special workspace: the unnamed `special` already hosts the +-- btop scratchpad. +local WS = "special:dash" + +hl.window_rule({ + name = "dash-workspace", + match = { class = "conky-dash" }, + workspace = WS, +}) +hl.window_rule({ + name = "dash-float", + match = { class = "conky-dash" }, + float = true, +}) +-- `fullscreen` is not used by any other rule in this config, so unlike the +-- keys above it is unverified against real usage here; if Hyprland's Lua +-- runtime ignores it, the dashboard still lands on special:dash and can be +-- sized with `size = "(monitor_w) (monitor_h)"` instead. +hl.window_rule({ + name = "dash-fullscreen", + match = { class = "conky-dash" }, + fullscreen = true, +}) +hl.window_rule({ + name = "dash-no-border", + match = { class = "conky-dash" }, + border_size = 0, +}) +hl.window_rule({ + name = "dash-no-rounding", + match = { class = "conky-dash" }, + rounding = 0, +}) +-- It is a dashboard, not a window: never let it take focus or be tabbed to. +-- This matters because it starts with the session, so without it the dashboard +-- would steal focus at login. `no_focus` is also unverified against real usage +-- in this config, same caveat as `fullscreen` above. +hl.window_rule({ + name = "dash-no-focus", + match = { class = "conky-dash" }, + no_focus = true, +}) + +-- SUPER+S, not SUPER+D: keybindings.lua already binds D to the unnamed special +-- workspace. +-- +-- Literal "SUPER", not hl.mainMod: mainMod is a file-local in +-- keybindings.lua (`local mainMod = "SUPER"`), not exported on hl, so +-- hl.mainMod is nil here. +hl.bind("SUPER + s", hl.dsp.workspace.toggle_special("dash")) |
