diff --git a/content/articles/disable-screensaver-fullscreen/index.md b/content/articles/disable-screensaver-fullscreen/index.md new file mode 100644 index 0000000..da63bdb --- /dev/null +++ b/content/articles/disable-screensaver-fullscreen/index.md @@ -0,0 +1,108 @@ ++++ +title = "Блокируем скринсейвер в полноэкранном режиме браузера Vivaldi" +date = 2025-10-31 +description = "Если при просмотре видео в полноэкранном режиме в Vivaldi (или любом другом браузере) скринсейвер всё равно включается, то в этой статье вы узнаете как это исправить" + +[taxonomies] +tags = ["xscreensaver", "wmctrl", "xprop", "X11", "vivaldi", "browser"] + +[extra] +quick_navigation_buttons = true +toc = false +mermaid = false +social_media_card = "social_cards/disable-screensaver-fullscreen.png" ++++ + +Иногда во время просмотра видео или презентации в браузере активируется `xscreensaver` — экран блокируется, несмотря на то, что пользователь фактически «активен». + +Чтобы этого не происходило, можно написать небольшой bash-скрипт, который будет следить за окном браузера и отключать скринсейвер, когда он в полноэкранном режиме. + +## 💾 Установка необходимых пакетов + +```bash +sudo pacman -S wmctrl xorg-xprop +``` + +## 🔧 Скрипт + +Создаём файл `/usr/local/bin/disable_screensaver_fullscreen.sh` и вставляем следующее содержимое: + +```bash +#!/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 +``` + +Сделаем скрипт исполняемым: + +```bash +chmod +x /usr/local/bin/disable_screensaver_fullscreen.sh +``` + +## 🚀 Автозапуск при старте системы + +Создайте файл: +`~/.config/autostart/block-screensaver-vivaldi.desktop` + +```ini +[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` строчку + +```bash +/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 отдыхает, когда ты смотришь видео — а не мешает! 😄 diff --git a/content/articles/disable-screensaver-fullscreen/social_cards/disable-screensaver-fullscreen.png b/content/articles/disable-screensaver-fullscreen/social_cards/disable-screensaver-fullscreen.png new file mode 100644 index 0000000..d64c663 Binary files /dev/null and b/content/articles/disable-screensaver-fullscreen/social_cards/disable-screensaver-fullscreen.png differ diff --git a/content/articles/disable-screensaver-fullscreen/social_cards/index.webp b/content/articles/disable-screensaver-fullscreen/social_cards/index.webp new file mode 100644 index 0000000..4a9fc7e Binary files /dev/null and b/content/articles/disable-screensaver-fullscreen/social_cards/index.webp differ