Xscreensaver – хорошая прога и во многом отвечает требованиям, но у нее есть одна дурацкая особенность – запаролевать экран при пробуждении из спящего режима. А спросонья тыкать негнущимися пальцами, не помня какой язык ты вчера оставил на клавиатуре или случайно нажал Caps Lock, не особенно и приятно. Где эту фичу отключить, я не нашел. Наверное, она вкомпелированна прямо в двоичный код.
Однако на Линуксе скринсейвер не особо и нужен, поскольку Xorg располагает встроенным скринсейвером, который просто выключает экран командой
xset s blank ; sleep 1 ; xset s activate
Для автоматического выключения экрана остается только задать время неактивности юзера, например 10 минут.
Для этого мы установим прогу xprintidle, которая в миллисекундах и считывает время простоя пользователя. 1 минута = 60000 миллисекунд.
sudo apt-get install xprintidle
А дальше я написал на Python простой скрипт
screensaver.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#!/usr/bin/python # -*- coding: utf-8 -*- #--------------------------- #inactivity = 60000 # 1 min #inactivity = 300000 # 5 min inactivity = 600000 # 10 min # 1 min = 60000 milliseconds #--------------------------- import subprocess idletime = subprocess.Popen( 'xprintidle', stdout=subprocess.PIPE ).communicate()[0] if int(idletime) >= inactivity: print 'Screen OFF!' subprocess.call(["xset", "s", "blank"]) subprocess.call(["sleep", "1"]) subprocess.call(["xset", "s", "activate"]) else: print 'Idle', str(idletime).replace('\n',''), 'msec' |
10 минут простоя пользователя откомментированы на линии 7. Вы можете задать свое время.
Теперь поместим файл screensaver.py в папку /opt, дадим ему разрешение x и сделаем для него кронджоб на запуск каждую минуту
chmod a+x /opt/screensaver.py crontab -e */1 * * * * DISPLAY=:0 /opt/screensaver.py
Инжой!