[Hyprland + Noctalia] I made a work-hours tracker for my bar: one-click check in, overtime balance, and it asks about absences
Hi everyone! I've been running Noctalia on Hyprland for a while, and I wrote a small widget for it to keep track of my working hours. Just so there's no confusion: it's a Noctalia widget, not a Hyprland plugin, so there's nothing to install with hyprpm. If you're on CachyOS's Hyprland edition like me, you likely already have Noctalia.
I recently joined a tiny startup, and unlike my previous job there's no tooling for this kind of thing, so I built something to help me organize my own time. Shift turns my weekly hours into a daily target, shows my day in the bar, and keeps my overtime balance with public holidays and days off, so I always know where I stand and can plan my week. When I come back from a break or a meeting, it asks whether that time was work instead of guessing. Everything stays in local JSON files, with no account and no telemetry.
A few Hyprland bits
A keybind to check in and out:
hl.bind("SUPER + F9", hl.dsp.exec_cmd("noctalia msg plugin hbollon/shift:core all toggle"))
Already running hypridle? Set Idle detection to External in Shift's settings and feed it your idle events, no swayidle needed:
listener {
timeout = 300
on-timeout = noctalia msg plugin hbollon/shift:core all signal idle
on-resume = noctalia msg plugin hbollon/shift:core all signal active
}
Using hyprlock? Shift detects locks through logind's LockedHint, which Noctalia's lock screen sets but hyprlock doesn't yet (hyprlock#907). You can wrap it so Shift knows:
general {
lock_cmd = pidof hyprlock || (noctalia msg plugin hbollon/shift:core all signal lock; hyprlock; noctalia msg plugin hbollon/shift:core all signal unlock)
}
Install: Noctalia Settings → Plugins → search "Shift" (needs Noctalia 5.2+).
Repo and user guide: hbollon/shift
It's not a project or client tracker (no tags, no billing): it's about managing your own time and keeping an eye on your overtime.
Feedback and bug reports are very welcome!
15 points
Mentions
[Hyprland + Noctalia] I made a work-hours tracker for my bar: one-click check in, overtime balance, and it asks about absences Hi everyone! I've been running Noctalia on Hyprland for a while, and I wrote a small widget for it to keep track of my working hours. Just so there's no confusion: it's a Noctalia widget, not a Hyprland plugin, so there's nothing to install with hyprpm. If you're on CachyOS's Hyprland edition like me, you likely already have Noctalia. I recently joined a tiny startup, and unlike my previous job there's no tooling for this kind of thing, so I built something to help me organize my own time. Shift turns my weekly hours into a daily target, shows my day in the bar, and keeps my overtime balance with public holidays and days off, so I always know where I stand and can plan my week. When I come back from a break or a meeting, it asks whether that time was work instead of guessing. Everything stays in local JSON files, with no account and no telemetry. A few Hyprland bits A keybind to check in and out: hl.bind("SUPER + F9", hl.dsp.exec_cmd("noctalia msg plugin hbollon/shift:core all toggle")) Already running hypridle? Set Idle detection to External in Shift's settings and feed it your idle events, no swayidle needed: listener { timeout = 300 on-timeout = noctalia msg plugin hbollon/shift:core all signal idle on-resume = noctalia msg plugin hbollon/shift:core all signal active } Using hyprlock? Shift detects locks through logind's LockedHint, which Noctalia's lock screen sets but hyprlock doesn't yet (hyprlock#907). You can wrap it so Shift knows: general { lock_cmd = pidof hyprlock || (noctalia msg plugin hbollon/shift:core all signal lock; hyprlock; noctalia msg plugin hbollon/shift:core all signal unlock) } Install: Noctalia Settings → Plugins → search "Shift" (needs Noctalia 5.2+). Repo and user guide: hbollon/shift It's not a project or client tracker (no tags, no billing): it's about managing your own time and keeping an eye on your overtime. Feedback and bug reports are very welcome!
Why is it so hard to have battery status and power menu in screenlockers? Hi everyone, I've noticed that screen lockers like [swaylock][1], [swaylock-effects][2], and [hyprlock][3] don't have built-in support for displaying battery percentage, let alone a power menu. I managed to show the battery info in hyprlock using a custom shell script that reads /sys/class/power_supply/BAT0/capacity and /sys/class/power_supply/BAT0/status. On the other hand, desktop environments like GNOME include these out of the box. I'm curious. Do you like battery info and power controls on your lock screen? Also, why are these features missing in most of the lockers? Would love to hear your thoughts! [1]: swaywm/swaylock [2]: mortie/swaylock-effects [3]: hyprwm/hyprlock