Files
blog.zlinux.ru/content/articles/disable-screensaver-fullscreen/index.md

109 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
+++
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 отдыхает, когда ты смотришь видео — а не мешает! 😄