"Умные" горячие клавиши fluxbox/xterm
Иногда просто горячих клавиш для запуска приложений недостаточно....
Представим себе, что у вас открыто куча окон на куче рабочих столов и вы вдруг обнаруживаете, что в вашем icq-клиенте, конечно же micq, вам пришло сообщение. Каковы ваши действия?
Чтобы сэкономить время и нервы, предлагается на ту же горячую клавишу запуска повесить обработчик, который при наличие запущенной программы просто вызовет соответствующее окно. Делать будем с помощью wmctrl на примере fluxbox.
$ vi .fluxbox/keys
Mod4 i :ExecCommand if wmctrl -l | grep micq; then wmctrl -R micq; else xterm -T micq -e micq; fi
где
- Mod4 i - соответствующая горячая клавиша
- if wmctrl -l | grep micq // в выводе списка всех окон проверяется есть ли нужно
- then wmctrl -R micq // вызываем это окно
- else xterm -T micq -e micq // иначе, запускаем приложение
Делаем reload config и наслаждаемся результатом.
- Добавить комментарий
- 581 просмотр
Страница для печати

как дополнение скриптик:
========================================
#!/usr/bin/perl
my $search = shift @ARGV;
my $cmd = shift @ARGV || $search;
if ( qx/wmctrl -l | grep -i $search/ ) {
qx/wmctrl -R $search/;
} else {
qx/$cmd/;
}
========================================
назовем его wmctrlrun и положим в ~/bin, где ~/bin прописан в PATH ;)
таким образом:
wmctrlrun firefox запустит firefox, если он еще не запущен, или перескочит на него :)
неплохой совет, но он плавно вытекает из оффициального мануала по флюксу. но все равно полезный )
у нас наверное маны разные.. можете показать цитату? Ж:-)
--
Signature invent in progress 23% #.........
А можно сделать, чтоб если окно активно, то по тому же хоткею и пряталось?
Список окон можно получить с помощью программки wmctrl. Я, правда, делал не чтобы пряталось, а чтобы не запускалось второй раз. Т.е. что-то типа raise. В описании клавиш запускаете `wmctrlrun firefox`, а сам скрипт выгладит так:
#!/usr/bin/perl my $search = shift @ARGV; my $cmd = shift @ARGV || $search; if ( qx/wmctrl -l | grep -i ^$search/ ) { qx/wmctrl -a $search/; } else { qx/$cmd/; }Почитайте man wmctrl - там много опций полезных.