ilzoff: weird fish (Default)
[personal profile] ilzoff

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

From:
Anonymous( )Anonymous This account has disabled anonymous posting.
OpenID( )OpenID You can comment on this post while signed in with an account from many other sites, once you have confirmed your email address. Sign in using OpenID.
User
Account name:
Password:
If you don't have an account you can create one now.
Subject:
HTML doesn't work in the subject.

Message:

 
Notice: This account is set to log the IP addresses of everyone who comments.
Links will be displayed as unclickable URLs to help prevent spam.

Profile

ilzoff: weird fish (Default)
ilzoff

March 2012

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

Style Credit

Page generated Oct. 23rd, 2017 12:34 am
Powered by Dreamwidth Studios

Expand Cut Tags

No cut tags