Делаем сами quake-like консоль

Делаем сами quake-like консоль в Openbox

В линуксе уже есть tilda и yakuake, но они gnome и kde зависимы. Есть yeahconsole, которая является оболочкой для xterm или urxvt, но она глючная. Поэтому мы в нашей рубрике "оч.умелые ручки" сделаем quake-like консоль сами.

1. Так как нам нужны табы, ставим urxvt, это такой эмулятор теминала для "иксов", замена xterm.

Ubuntu: sudo apt-get install rxvt-unicode   
archlinux: sudo pacman -S rxvt-unicode

2. Так как нам нужно, чтобы терминал не выглядел как окно, находился вверху и по центру, чтобы его не было на панели задач, прописываем в файле ~/.config/openbox/rc.xml следующее:

<application class="URxvt">   
  <position>   
     <x>center</x>   
     <y>top</y>   
  </position>   
  <skip_taskbar>yes</skip_taskbar>   
  <desktop>all</desktop>   
  <focus>yes</focus>   
  <decor>no</decor>   
  <layer>above</layer>   
</application>

3. Теперь включим табы, отключим скроллер, зададим размер и сдеаем так, чтобы кнопки HOME и END работали как положено. Пропишем в ~/.Xdefaults

URxvt.perl-ext-common: default,tabbed   
URxvt*internalBorder: 4   
URxvt*keysym.0xFF50:    \033[1~   
URxvt*keysym.0xFF57:    \033[4~   
URxvt*scrollBar_right: false   
URxvt*scrollBar: false   
URxvt*borderLess: false   
URxvt*geometry:150x30

4. Терминал уже нас устраивает, можно его запустить и порадоваться. Осталось сделать так, чтобы он появлялся и прятался при нажатии хоткея. Наверное, есть разные способы сделать это. Один из них с помощью консольной утилиты wmctrl, которая может управлять окнами.

Ubuntu: sudo apt-get install wmctrl   
archlinux: sudo pacman -S wmctrl

5. Теперь создаем скрипт, который будет проверять, запущена ли наша квейк-консоль и заускать ее или прятать/показывать. Скрипт такой (1):

#! /bin/bash   
WINTITLE="quake-urxvt"   
PROGNAME="urxvt"   
if [ `wmctrl -xl | grep -c "$WINTITLE"` != 0 ]   
  then   
    wmctrl -x -r "$WINTITLE" -b toggle,hidden   
  else   
    $PROGNAME -name "$WINTITLE" &   
  fi   
exit 0   

Или такой (2) (установите xdotool):

#!/bin/bash   

wmname="quake-urxvt"   


function map {   
  xdotool windowmap "$wid"   
  xdotool windowfocus "$wid"   
}   

function unmap {   
  xdotool windowunmap "$wid"   
}   

function toggle {   
  is_mapped=$(xdotool search --onlyvisible --name $wmname 2> /dev/null)   
    
  if [[ -z $is_mapped ]]; then   
    map   
  else   
    unmap   
  fi   
}   
wid=$(xdotool search -name $wmname 2> /dev/null)   

if [[ -z $wid ]]; then   
  urxvt -name "$wmname" & 
else   
  toggle   
fi

Теперь делаем его executable:

chmod +x /путь/ко/скрипту

6. И вешаем на хоткей, для чего вставлям в соответствующее место в файле ~/.config/openbox/rc.xml кусок:

<keybind key="F12">   
   <action name="Execute">   
      <command>/путь/ко/скрипту</command>   
   </action>   
</keybind>

Вроде всё. Новая вкладка: Shift-Down. Перемещатся по вкладкам: Shift-Right, Shift-Left. Перемещать вкладки: Ctrl-Right, Ctrl-Left. Закрыть вклалку: Ctrl-D.

Есть один баг: Мы манипулируем окном по его имени, которое мы сами ему задали. В данном случае "quake-urxvt". Если, например, вы набрали в гугле quake-urxvt, ваш браузер тоже получит такой тайтл. И тогда уже он будет прятаться по хоткею, а не консоль =)

Теги: безумие, linux
source: livejournal
26 ноября 2009