Utilities for the Hyprland Wayland compositor.
  • C 41.7%
  • Tcl 30%
  • Makefile 11.2%
  • C++ 10.4%
  • Shell 6.7%
Find a file
ika 782b5574a3 Add BSD 3-Clause license
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-24 13:01:46 +01:00
urgency-plugin urgency-plugin: add Makefile with timestamped install 2026-03-24 09:36:27 +01:00
CLAUDE.md Add event-driven urgency-watch to replace polling urgency.tcl 2026-03-24 12:55:40 +01:00
LICENSE Add BSD 3-Clause license 2026-03-24 13:01:46 +01:00
Makefile Add README and root Makefile 2026-03-24 13:00:46 +01:00
README.md Add README and root Makefile 2026-03-24 13:00:46 +01:00
rename-workspace.tcl Add Hyprland utility scripts 2026-03-23 14:33:34 +01:00
send-key.tcl Add Hyprland utility scripts 2026-03-23 14:33:34 +01:00
urgency-watch.c Add event-driven urgency-watch to replace polling urgency.tcl 2026-03-24 12:55:40 +01:00
urgency.sh Add Hyprland utility scripts 2026-03-23 14:33:34 +01:00

hyprutil

Utilities for the Hyprland Wayland compositor.

urgency-watch

Event-driven XWayland urgency monitor. Reacts instantly when any XWayland window sets the WM_HINTS urgency bit and forwards it to Hyprland via the seturgent dispatcher (provided by urgency-plugin).

Dependencies: libX11, jq, hyprctl

make
./urgency-watch &

urgency-plugin

Hyprland plugin that adds the seturgent dispatcher. It marks a window as urgent, emits the urgent>>addr IPC event on socket2 (consumed by Waybar's hyprland/workspaces module), and fires the internal EventBus event.

make install   # builds and hot-loads urgency-<epoch>.so into Hyprland

The timestamped filename is required because Hyprland caches dlopen handles by path — reloading the same filename would run stale code.

Usage:

hyprctl dispatch seturgent "address:0xADDR"

Other scripts

File Description
urgency.sh Legacy polling script (superseded by urgency-watch)
rename-workspace.tcl Tk dialog to rename the active workspace
send-key.tcl Send key events to the active window (XWayland or native Wayland)
event.sh Stream raw Hyprland socket2 events to stdout (debug helper)

Urgency flow

urgency-watch  →  hyprctl dispatch seturgent  →  urgency-plugin
    (Xlib)                                          (C++ .so)
                                                       │
                                               socket2 urgent>>addr
                                                       │
                                                    Waybar
                                          #workspaces button.urgent

Build

make          # urgency-watch + urgency-plugin/urgency.so
make install  # also installs plugin into ~/.config/hypr/plugins/
make clean