Pull to refresh

Выключение монитора горячей клавишей

Reading time3 min
Views18K
Original author: howtogeek.com


Жаль, что возможность обычным способом выключать монитор горячей клавишей сломалась в одной из предыдуших версиях Убунту. Простенький симпатичный скрипт может вернуть этот нужный функционал (предположительно обладателям ноутбуков) за несколько несложных телодвижений.

Как, наверное, многие знают, старый способ выключения монитора через использование команды xset:

xset dpms force off

Вообще существует несколько вариаций на сию тему, но по крайней мере начинай от Ubuntu Karmic (9.10), эта возможность была сломана. Некоторые системные вызовы, по-видимому, не очень хорошо справляются с этой командой, вызывая пробуждение экрана приблизительно через минуту. Это, конечно, вызывало неудобства некоторое время, пока я не нашел для себя способа, заслуживающего на использование. На убунтуфорумах предлагалось использовать данную команду в цикле, что, естественно, повышало показатели использования процессора, а другие способы не были столь элегантными. Но благодаря пользователю nxmehta, было найдено решение — а именно использовать Python для достижения цели. Скрипт, который был написан работает по крайней мере на релизах от Karmic по Natty.

Для начала, вы должны установить, кроме самого питона пакет python-xlib. Для этого достаточно в терминале выполнить команду:

sudo apt-get install python python-xlib

Следующее, что нужно сделать — это открыть текстовый редактор (например, gedit) и скопипастить следующий код:

  1. #!/usr/bin/python
  2.  
  3.     import time
  4.     import subprocess
  5.     from Xlib import X
  6.     from Xlib.display import Display
  7.  
  8.     display = Display(':0')
  9.     root = display.screen().root
  10.     root.grab_pointer(True,
  11.             X.ButtonPressMask | X.ButtonReleaseMask | X.PointerMotionMask,
  12.             X.GrabModeAsync, X.GrabModeAsync, 0, 0, X.CurrentTime)
  13.     root.grab_keyboard(True,
  14.             X.GrabModeAsync, X.GrabModeAsync, X.CurrentTime)
  15.  
  16.     subprocess.call('xset dpms force off'.split())
  17.     p = subprocess.Popen('gnome-screensaver-command -i'.split())
  18.     time.sleep(1)
  19.  
  20.     while True:
  21.         print display.next_event()
  22.         p.terminate()
  23.         break
* This source code was highlighted with Source Code Highlighter.


Что он делает — я думаю, останавливаться не стоит из-за его простоты.


Сохраните ваш файл где-нибудь, дав нужное название. У меня выработалась привычка для исполняемых скриптов использовать папку bin, которая хранится в моей домашней папке. Кстати, скрипты в этой папке будут «видны» без указывания абсолютного пути. Все благодаря нехитрым строкам в файле ~/.profile:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi

Итак, файл ~/bin/screen_off.py занял место возле других моих скриптов.

Следующий шаг — сделать его исполняемым. Можете это сделать быстрым chmod +x ~/bin/screen_off.py, но если вы пока не умеете пользоваться консолью (что зря), то можете воспользоваться графической частью оболочки:
Правокликните на файле и выберите пункт Свойства (Properties):

На вкладке Права (Permissions) и установите галочку Позволить выполнение файла как программы «Allow executing file as program».

Теперь вы можете назначить любое клавиатурное сокращение этому скрипту. Я выбрал Caps Lock, но если у вас кривые пальцы предпочтение использовать другую клавишу — без проблем. В моем случае мне нужно вначале деактивировать использование этой клавиши. Это можно сделать через меню Клавиатура > Раскладки > Параметры раскладки (Keyboard > Layouts > Options):

Вот здесь и можно ее отключить, отыскав и выбрав пункт «Поведение клавиши Caps Lock» (Caps Lock behavior) и снять соответственную галочку.

Впрочем все это тоже можно без труда сделать, не прибегая графической оболочки через gconftool-2, как, например, у меня:
$ # Отключить Caps Lock
$ xmodmap -e "remove lock = Caps_Lock"
$ # Сделать биндинг на свой скрипт:
$ gconftool-2 -a /desktop/gnome/keybindings/custom0
binding = VoidSymbol
action = /home/your_username/bin/screen_off.py
name = Screen_Off


Наконец, чтобы назначить скрипт клавише, откройте диалог Комбинации клавиш клавиатуры, (Keyboard Shortcuts).

Нажмите Добавить, дайте любое имя клавиатурному сокращению, и команду — путь к созданному файлу. Нажмите Применить и потом щелкните на поле Комбинация клавиш, после чего нажмите нужную клавишу-сокращение. Если вы деактивировали Caps Lock, вы увидите текст «VoidSymbol».

Все! Жмите! Надеюсь, этот способ пригодится для того, чтобы немножко сэкономить батарею вашего ноута.
Tags:
Hubs:
+32
Comments30

Articles

Change theme settings