Нотатка про те, як згори екрану вигулькує чорне напівпрозоре вікно з білими літерками, в ньому ти можеш бути Master of the Universe (звісно, у міру володіння bash-fu чи іншими тантричними мистецтвами). Ага, як у Quake (і, напевно, багатьох інших цяцьках) — така штука, тиснеш тильду (~), і тобі вигулькує віконце, де можна написати /quit (ну чи щось інше, якщо є час і настрій).
Власне, сама тема особливої нотатки не потребує, бо подібного барахла купа: tilda, yakuake, yeahconsole тощо. Нотатка про те, як у те чорне віконце запхнути усі інші термінали, що грішним ділом запускаються по ходу роботи.
Проблема
Ну бо сидиш працюєш, твоє приховане термінальне віконце гріє своєю невидимою присутністю душу, місця у таскбарі (смужці запущених задач) не займає, при Alt+Tab не показується, — одним словом, веде себе чемно, на очі без потреби не вилазить. Аж тут раптом вкрай щось треба запустити у терміналі, і на тобі! — нове вікно, шмат таскбару захоплено, якийсь непотрібний неспокій на душі, все тобі муляє. І найгірше, що є звичка забирати термінальне вікно з очей зручною комбінацією клавіш. От тільки комбінація пов’язана не з усіма вікнами, а з твоїм чемненьким, і тому її натискання робить усе очікуване („зникни з очей, непрошена чорна гидото!“), а рівно навпаки (поряд з чорною гидотою з’являється чорне і слухняне „квейкове“ віконечко).
Єдиною програмою з розряду емуляторів терміналу, що вміє замість нового вікна відкривати закладки у вже запущеному (подібно до сучасних браузерів), виявився roxterm. Як зробити будь-який термінал «квейковим“, підгледів тут. Трішки роботи напилком, і маю елегантне рішення — усе, що запускається у терміналі, запускається у новій вкладці чемного схованого віконця.
Ось скромне намагання показати, як працює:
Рецепт
Частина перша — усі термінали запускаються у нових вкладках у одному вікні:
- Встановити roxterm
apt-get install roxterm
- Зробити скриптик, який би запускав roxterm у новій закладці з усіма переданими йому параметрами. Текст такий:
[sourcecode language="bash"]
#!/bin/bash
ARGS="$@"
EXEC="/usr/bin/roxterm"
$EXEC --tab $ARGS
[/sourcecode] - Зберегти скриптик під зручною назвою у зручному місці, дати право на виконання (якщо зручне місце десь поза домашньою текою, то треба 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
- Створити скрипт з таким вмістом:
[sourcecode language="bash"]
#!/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
[/sourcecode]Зберегти його десь у $PATH. У мене він ~/bin/quaketerm.
Власне, скрипт перевіряє, чи уже запущено термінал, і коли так, то чи є його вікно активним, а відтак або запускає, або активує чи ховає. - Назначити клавіші для виклику скрипта. Це можна зробити або засобами стільничного середовища (у мене на XFCE xfce4-keyboard-settings, вкладка Application Shortcuts), або незалежно від середовища за допомогою xbindkeys.
- Забрати декорації вікна та кнопку/іконку на таскбарі. Для цього поставити devilspie (і за бажанням GUI до нього — gdevilspie)
# apt-get install devilspie gdevilspie
Створити файл ~/.devilspie/terminal.ds з таким вмістом:
[sourcecode language="bash"]
( if
( begin
( is ( window_class ) "ROXTerm" )
( is ( application_name ) "ROXTerm" )
)
( begin
( undecorate )
( focus )
( skip_pager )
( skip_tasklist )
( stick )
( geometry "1000x500+140+0" )
( println "match" )
)
)
[/sourcecode]Запустити devilspie (або перезавантажитись/перелогінитись)
- (Необов’язково) налаштувати зовнішній вигляд терміналу на свій смак.
Немає коментарів:
Дописати коментар