time

xatk: удобное переключение окон

Я уже как то писал, что мне нравиться переключать языки по хоткеям, которые назначены для каждого языка свои. В интернетах есть утилита xatk которая позволяет проделывать тоже самое но для запущенных приложений.

Сегодня Slava поправил последний баг, который мешал мне гармонично пользоваться утилитой.

xatk позволяет активировать окна по определенным хоткеям, например, если запущенно много окон то не удобно alt-tab'ом листать до нужного. Значительно удобнее нажать alt+c и переключится на Chromium или нажать alt+v и активировать gvim, причем, приложение может находиться на другом рабочем столе, xatk сам переключит на нужный рабочий стол. Также xatk умеет группировать окна по заголовкам или классам, например, можно переключаться между всеми запущенным Chromium по alt+c или, добавив уточняющую букву (назначается автоматически), переключиться на конкретное окно, имхо, дико удобно. Это если вкратце, более подробно читайте у автора.

xatk написан на python и требует для своей работы python-xlib.

Установим python-xlib под Ubuntu

sudo apt-get install python-xlib

Скачаем последнюю версию xatk

hg clone https://code.google.com/p/xatk/

Сгенерируем начальные настройки

./xatk.py -p > ~/.xatkrc

Большинство настроечных параметров детально прокомментированы, отдельно хочу отметить, что xatk сам назначает клавишу для приложений и если долго не запускать приложение, то эта буква будет переназначена другому приложению. Но есть возможность жестко задать букву для приложения, для этого надо в раздел [RULES] (файл ~/.xatkrc) добавить примерно такую запись

class.chromium-browser = !c

Добавим xatk в автозагрузку (после логина пользователя), для этого создадим текстовый файл в ~/.config/autostart/xatk.desktop

[Desktop Entry]
Type=Application
Exec=/home/proft/scripts/xatk/xatk.py
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[en_US]=xatk
Name=xatk
Comment[en_US]=
Comment=

Альтернативой более общего предназначения является утилита wmctrl, которая позволяет активировать определенное приложение, а в случаи отсутствия нужного приложения его можно запустить

wmctrl -a gvim || gvim

Если заголовок окна сложный или меняется в зависимости от ситуации, то можно обратится к окну приложения с помощью его идентификатора, предварительно зная класс окна. Для получения идентификатора окна я использую простую функцию на bash, которая в качестве аргумента принимает класс окна, а возвращает идентификатор окна.

Класс окна можно узнать с помощью

wmctrl -xl

Пример активация окна запущенного приложения или запуск приложения

get_wid_by_class() {
    echo `wmctrl -xl | grep $1 | awk '{print $1}'`
}

wid=$(get_wid_by_class 'Terminator')
wmctrl -i -a $wid || terminator --geometry 1350x900

Дополнительное чтиво

blog comments powered by Disqus