aboutsummaryrefslogtreecommitdiffstats
path: root/dashboard.lua
diff options
context:
space:
mode:
Diffstat (limited to 'dashboard.lua')
-rw-r--r--dashboard.lua17
1 files changed, 17 insertions, 0 deletions
diff --git a/dashboard.lua b/dashboard.lua
index 18ddf80..1db0b6e 100644
--- a/dashboard.lua
+++ b/dashboard.lua
@@ -168,6 +168,17 @@ local function draw(cr, sw, sh, colors)
end
end
+-- Draw rate follows visibility. The dashboard lives on a special workspace
+-- and is hidden most of the time, so it idles at the config's update_interval
+-- (2s) and draws at VISIBLE_INTERVAL while shown, which is what makes the wheel
+-- scroll live: conky has no way for Lua to request a single redraw.
+--
+-- Shown and hidden are the pointer entering and leaving the window, which
+-- Hyprland sends on every toggle of the workspace. The pointer is on the
+-- focused monitor, where the special workspace opens, so enter follows show.
+local VISIBLE_INTERVAL = 0.1
+local hidden_interval = nil
+
-- Pointer events, handed to the widget whose cell is under the pointer, if it
-- defines mouse(event, rect). Coordinates are window-relative, and the window
-- is the whole surface, so they index the same grid the draw uses.
@@ -175,6 +186,12 @@ end
-- Wrapped like the draw: a fault here must not take conky down. Returning true
-- tells conky the event was consumed.
function conky_mouse(event)
+ if event.type == 'mouse_enter' or event.type == 'mouse_leave' then
+ hidden_interval = hidden_interval or conky_info.update_interval
+ conky_set_update_interval(event.type == 'mouse_enter'
+ and VISIBLE_INTERVAL or hidden_interval)
+ return false
+ end
if conky_window == nil then return false end
local sw, sh = conky_window.width, conky_window.height
for _, entry in ipairs(layout) do