Блокируем скринсейвер в полноэкранном режиме браузера Vivaldi

Иногда во время просмотра видео или презентации в браузере активируется xscreensaver — экран блокируется, несмотря на то, что пользователь фактически «активен».

Чтобы этого не происходило, можно написать небольшой bash-скрипт, который будет следить за окном браузера и отключать скринсейвер, когда он в полноэкранном режиме.

💾 Установка необходимых пакетов

sudo pacman -S wmctrl xorg-xprop

🔧 Скрипт

Создаём файл /usr/local/bin/disable_screensaver_fullscreen.sh и вставляем следующее содержимое:

#!/bin/bash

XSCREENSAVER_CMD="xscreensaver-command"
CHECK_INTERVAL=30

# Функция для деактивации скринсейвера (вызывается постоянно, пока Vivaldi в полноэкранном режиме)
deactivate_screensaver() {
#  echo "Vivaldi в полноэкранном режиме. Отключаем скринсейвер."
  "$XSCREENSAVER_CMD" -deactivate >/dev/null 2>&1
}

echo "Мониторинг полноэкранного режима Vivaldi запущен (только деактивация скринсейвера)."

while true; do
  VIVALDI_WINDOW_ID=$(wmctrl -l -x | grep "vivaldi-stable.Vivaldi" | awk '{print $1}' | head -n 1)

  if [ -n "$VIVALDI_WINDOW_ID" ]; then # Проверяем, что Vivaldi запущен
    # Vivaldi запущен, проверяем полноэкранный режим
    if xprop -id "$VIVALDI_WINDOW_ID" _NET_WM_STATE | grep -q "_NET_WM_STATE_FULLSCREEN"; then
      deactivate_screensaver # Vivaldi в полноэкранном режиме: деактивируем
    fi
  fi

  sleep "$CHECK_INTERVAL"
done

Сделаем скрипт исполняемым:

chmod +x /usr/local/bin/disable_screensaver_fullscreen.sh

🚀 Автозапуск при старте системы

Создайте файл: ~/.config/autostart/block-screensaver-vivaldi.desktop

[Desktop Entry]
Type=Application
Name=Block Screensaver in Vivaldi Fullscreen
Exec=/usr/local/bin/block-screensaver-vivaldi.sh
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true

В bspwm достаточно добавить в ~/.config/bspwm/bspwm.conf строчку

/usr/local/bin/vivaldi-stop-screensaver.sh &

🧠 Как это работает

Скрипт каждые 30 секунд:

  • Проверяет, запущен ли браузер Vivaldi.
  • Если окно в состоянии fullscreen, выполняет xscreensaver-command -deactivate, тем самым сбрасывая таймер бездействия.

Такой подход не мешает обычной работе скринсейвера, а только предотвращает его запуск во время полноэкранного просмотра видео.

  • Нагрузка: sleep 30 → менее 0.1% CPU.
  • Безопасность: только чтение X11, не требует root.
  • Логи: раскомментируйте echo в функции для отладки.

🧩 Совместимость

Скрипт можно адаптировать под:

  • Chromium / Brave / Chrome — заменив vivaldi-stable.Vivaldi на chromium.Chromium или соответствующее имя.
  • Firefox — используйте Navigator.Firefox.

✅ Вывод

Простой, но эффективный способ избавить себя от внезапного включения заставки во время фильмов, YouTube и стримов. Пусть xscreensaver отдыхает, когда ты смотришь видео — а не мешает! 😄