27 lines
1.1 KiB
Bash
Executable File
27 lines
1.1 KiB
Bash
Executable File
#!/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
|