random-scripts/eww/eww-hypr-active-window-listener

25 lines
732 B
Bash
Executable File

#!/usr/bin/env zsh
function get-titles-for-monitors {
jq -c --null-input \
--argjson 'monitors' "$(hyprctl -j monitors)" \
--argjson 'workspaces' "$(hyprctl -j workspaces)" \
'[$monitors.[].activeWorkspace.id as $active |
$workspaces.[] | select(.id | IN($active))] |
map({(.monitor): (if .lastwindowtitle == "" then "hyprland" else .lastwindowtitle end)}) | add'
}
function handle {
case "${1}" in
activewindow\>\>*|openwindow*|closewindow*)
get-titles-for-monitors
;;
esac
}
get-titles-for-monitors
socat -U - "unix-connect:/tmp/hypr/${HYPRLAND_INSTANCE_SIGNATURE}/.socket2.sock" |
while read line; do
handle "${line}"
done