01.12.2009Делаем quake-like консоль в любом DE на базе XServer (KDE, GNOME, XFCE, ...)
Недавно
Почесав репу, я написал свой способ организовать вывод консоли по F12, который подходит для любого Desktop Environment, работающего на «иксах», а значит почти любого.
- Устанавливаем три пакета: xdotool, xbindkeys, xbindkeys-config. На убунте это так:
sudo apt-get install xdotool xbindkeys xbindkeys-config
Выбираем свою консоль, которой мы хотим управлять по горячей клавише. И настраиваем для неё уникальное слово, которое будет выводиться в заголовке окна. Я выбрал konsole. И настроил так, чтобы в заголовке окна всегда было «qk : ». Этот пункт будет разным для всех :)
Сердце гайда — скрипт, использующий xdotool для управления нашим окном. Я как фанат руби, все скрипты на нём и пишу. Вот это лежит у меня в $HOME/.quake-console/quake-console:
#!/usr/bin/ruby
PROG_NAME = "konsole"
WIN_NAME = "qk : "
win_id = `xdotool search "#{WIN_NAME}" 2> /dev/null`.split("\n").select{ |l| l =~ /^\d+$/ }.first
if win_id.nil?
system "#{PROG_NAME} &"
else
if `xdotool search --onlyvisible "#{WIN_NAME}"`.include? win_id
if `xdotool getactivewindow`.chomp.strip == win_id
system "xdotool windowunmap #{win_id}"
else
system "xdotool windowraise #{win_id} && xdotool windowfocus #{win_id} && xdotool windowmove #{win_id} 0 0"
end
else
system "xdotool windowmap #{win_id} && xdotool windowfocus #{win_id} && xdotool windowmove #{win_id} 0 0"
end
end
Как видно, если окна с «qk : » в заголовке нет, то запускается моя выбранная консоль. Если оно есть, но не сверху и не в фокусе, то выводим его на верх и в фокус, если оно в фокусе, то прячем, а если спрятано, то показываем и выводим в фокус.
- Теперь запускаем xbindkeys, который как раз нужен для привязки горячих клавиш, и конфигурируем его:
xbindkeys --defaults > $HOME/.xbindkeysrc
xbindkeys
xbindkeys-conifg
Используя интуитивно-понятный графический интерфейс, настраиваем нужную нам клавишу F12 на запуск нашего скрипта, который мы предварительно сделали запускаемым.
- Наслаждение