Нотатка про те, як згори екрану вигулькує чорне напівпрозоре вікно з білими літерками, в ньому ти можеш бути Master of the Universe (звісно, у міру володіння bash-fu чи іншими тантричними мистецтвами). Ага, як у Quake (і, напевно, багатьох інших цяцьках) — така штука, тиснеш тильду (~), і тобі вигулькує віконце, де можна написати /quit (ну чи щось інше, якщо є час і настрій).
Власне, сама тема особливої нотатки не потребує, бо подібного барахла купа: tilda, yakuake, yeahconsole тощо. Нотатка про те, як у те чорне віконце запхнути усі інші термінали, що грішним ділом запускаються по ходу роботи.
Проблема
Ну бо сидиш працюєш, твоє приховане термінальне віконце гріє своєю невидимою присутністю душу, місця у таскбарі (смужці запущених задач) не займає, при Alt+Tab не показується, — одним словом, веде себе чемно, на очі без потреби не вилазить. Аж тут раптом вкрай щось треба запустити у терміналі, і на тобі! — нове вікно, шмат таскбару захоплено, якийсь непотрібний неспокій на душі, все тобі муляє. І найгірше, що є звичка забирати термінальне вікно з очей зручною комбінацією клавіш. От тільки комбінація пов’язана не з усіма вікнами, а з твоїм чемненьким, і тому її натискання робить не очікуване („зникни з очей, непрошена чорна гидото!“), а рівно навпаки (поряд з чорною гидотою з’являється чорне і слухняне „квейкове“ віконечко).
Єдиною програмою з розряду емуляторів терміналу, що вміє замість нового вікна відкривати закладки у вже запущеному (подібно до сучасних браузерів), виявився roxterm. Як зробити будь-який термінал «квейковим“, підгледів тут. Трішки роботи напилком, і маю елегантне рішення — усе, що запускається у терміналі, запускається у новій вкладці чемного схованого віконця.
Ось скромне намагання показати, як працює:
Рецепт
Частина перша — усі термінали запускаються у нових вкладках у одному вікні:
- Встановити roxterm
apt-get install roxterm - Зробити скриптик, який би запускав roxterm у новій закладці з усіма переданими йому параметрами. Текст такий:
#!/bin/bash ARGS="$@" EXEC="/usr/bin/roxterm" $EXEC --tab $ARGS
- Зберегти скриптик під зручною назвою у зручному місці, дати право на виконання (якщо зручне місце десь поза домашньою текою, то треба su/sudo). У мене він /usr/local/bin/roxtab.
- Додати /usr/local/bin/roxtab у перелік альтернатив для x-terminal-emulator і вибрати його, як альтернативу:
# update-alternatives --install /usr/bin/x-terminal-emulator x-terminal-emulator /usr/local/bin/roxtab 25
(переостанній параметр — це повний шлях до того скрипта, який додаємо, останній — пріоритет)
# update-alternatives --config x-terminal-emulator
(і далі вибрати /usr/local/bin/roxtab зі списку) - У своєму стільничному середовищі вказати, що у якості емулятора термінала має бути x-terminal-emulator (у різних DE робиться по-різному, проте зазвичай знаходиться серед налаштувань DE, у мене в xfce4-settings-manager)
Частина друга — зробити підготований у першій частині термінал „квейковим“.
Задля „квейкості“ можна використати вищевказане рішення, або трохи підправлене, як подано нижче:
- Встановити xdotool
# apt-get install xdotool - Створити скрипт з таким вмістом:
#!/bin/sh PID=`pidof roxterm` if [ `pidof roxterm` ] ; then export TermWID=`xdotool search --all -pid $PID -name "@"` export ActiveWindow=`xdotool getwindowfocus` if [ "$ActiveWindow" = "$TermWID" ] ; then xdotool windowminimize $TermWID else xdotool windowactivate $TermWID fi else roxtab fi
Зберегти його десь у $PATH. У мене він ~/bin/quaketerm.
Власне, скрипт перевіряє, чи уже запущено термінал, і коли так, то чи є його вікно активним, а відтак або запускає, або активує чи ховає. - Назначити клавіші для виклику скрипта. Це можна зробити або засобами стільничного середовища (у мене на XFCE xfce4-keyboard-settings, вкладка Application Shortcuts), або незалежно від середовища за допомогою xbindkeys.
- Забрати декорації вікна та кнопку/іконку на таскбарі. Для цього поставити devilspie (і за бажанням GUI до нього — gdevilspie)
# apt-get install devilspie gdevilspie
Створити файл ~/.devilspie/terminal.ds з таким вмістом:
( if ( begin ( is ( window_class ) "ROXTerm" ) ( is ( application_name ) "ROXTerm" ) ) ( begin ( undecorate ) ( focus ) ( skip_pager ) ( skip_tasklist ) ( stick ) ( geometry "1000x500+140+0" ) ( println "match" ) ) )
Запустити devilspie (або перезавантажитись/перелогінитись)
- (Необов’язково) налаштувати зовнішній вигляд терміналу на свій смак.

Січ 20, 2012 @ 18:55:53
Колись давно тоже похоже собі зробив, але на urxvt.
http://goo.gl/YgHOo
Січ 20, 2012 @ 23:51:35
Прикольно, дякую за посилання.
Січ 23, 2012 @ 17:08:08
чьорд, як же ж складно… втім сенсі, що ну його к бісу все це повторювать на кожній машинці, де я зазвичай просто роблю sudo aptitude install tilda mc… першою командою =/ але ідея цікава.
Січ 23, 2012 @ 17:32:25
з тільдою (і багатьма іншими терміналами на libvt для GTK+ 2.x) сталась у XFCE4 така неприємна штучка, що клавіша Meta (Alt) не працює. І всьобе-нічиво́, а от Midnight Commander якось неприємно без Meta (хоча можна замість Meta використовувати Esc).
Сьогодні ввечері (чи десь найближчим часом) спробую все це бєзобразіє загорнути у один *.deb-пакет, якщо цікаво.
Січ 23, 2012 @ 17:43:12
Ілюстрація в тему:
http://shop.altlinux.ru/published/publicdata/SHOPALTDB/attachments/SC/products_pictures/for_builders1.png