|
Screensaver |
|---|
|
Мне надоело, что мой монитор постоянно выключается, поэтому я отключил энергосбережение простым добавлением xset -dpms в .xinirc. После этого мне сразу захотелось поставить себе скринсейвер, анимацию, которая будет проигрываться на компьютере во время моего отсутствия. Мне хотелось, чтобы она пропадала при любом действии с моей стороны. У меня нет нужды прятать компьютер за паролем каждую минуту моего отсутствия. Итак, что же нужно для реализации скринсейвера? Нужна программа, которая будет запускать анимацию и программа, которая будет её закрывать. В качестве первой у меня стоит xss, хотя xautolock тоже может выполнить эту задачу. В качестве второй необходим небольшой скрипт. Для проигрывания анимации я использую mpv, поэтому запускаю его, сохраняя pid для последующего убийства. После этого запускаю xinput в режиме отлова действий, после чего pip'ом перенаправляю его вывод в read. Он завершится после первой строки(то-есть как только xinput словит хоть одно действие), убив заодно и xinput. Следующей строчкой я просто убиваю mpv с помощью kill. По итогу скрипт для скринсейвера получился вот такой: #!/bin/sh mpv INSERTPATH2VIDEO --loop --no-audio --no-osc --fullscreen & lockpid=$! xinput test-xi2 --root | read kill $lockpidmpv: --loop для зацикливания анимации; --no-audio для отключения звука; --no-osc для отключения интерфейса; --fullscreen для полноэкранного режима. xinput: --root для того, чтобы он брал события из root-окна, иначе он создаёт отдельное окно, в котором и отслеживает действия. После этого остаётся только добавить в .xinitrc строчки, которые заставят анимацию автоматически запускаться. ... xset s 90 xss INSERTPATH2SCRIPT & ... Да, конечно, можно было бы использовать xscreensaver, но Qt-приложение для скринсейвера - это слишком. Мой компьютер не помойка. Надеюсь, что помог этим текстом кому-нибудь. Спасибо за то, что уделили внимание моему тексту. P.S. Иногда mpv открывается прозрачным, чтобы избежать этого следует добавить задержку между запуском mpv и xinput. |