#!/bin/bash NIRI_SOCKET=$(find "$XDG_RUNTIME_DIR" -maxdepth 1 -name "niri*.sock" | head -n 1) # Проверяем, был ли сокет найден и является ли он действительно файлом сокета if [ -z "$NIRI_SOCKET" ] || [ ! -S "$NIRI_SOCKET" ]; then echo '{"text": "Niri socket not found"}' # Выходим, чтобы Waybar не перезапускал скрипт каждую секунду sleep 5 exit 1 fi # Используем socat для подписки на события socat -u UNIX-CONNECT:"$NIRI_SOCKET" - | while read -r line; do # Запрашиваем состояние при каждом событии TITLE=$(echo 'get-state' | socat - UNIX-CONNECT:"$NIRI_SOCKET" | jq -r ' .outputs[] | .workspaces[] | .columns[] | .windows[] | select(.focused) | .title ') # Обрезаем заголовок, если он слишком длинный if [ ${#TITLE} -gt 50 ]; then TITLE="$(echo "$TITLE" | cut -c 1-50)..." fi # Выводим в формате JSON для Waybar echo "{\"text\": \"$TITLE\", \"tooltip\": \"$TITLE\"}" done