ilzoff: weird fish (Default)

Делаем сами 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, ваш браузер тоже получит такой тайтл. И тогда уже он будет прятаться по хоткею, а не консоль =)

Profile

ilzoff: weird fish (Default)
ilzoff

March 2012

S M T W T F S
    123
45678910
11121314151617
18192021222324
252627282930 31

Style Credit

Syndicate

RSS Atom
Page generated Sep. 25th, 2017 08:30 pm
Powered by Dreamwidth Studios

Expand Cut Tags

No cut tags

Page Summary