Изменение цвета фона konsole при выполнении команды sudo
Опубликовано 26.11.2007
В продолжение темы konsole + dcop.
В konsole есть механизм сохранения сессий (или сеансов, кому как нравится). Сразу после установки имеется несколько предопределённых сеансов: shell, midnight commander, root shell, root midnight commander. Они отличаются друг от друга, во-первых, командой, выполняющейся при запуске (sudo -s, mc или sudo mc), во-вторых, жёлтым цветом фона рутовой консоли — чтобы root не зевал и не написал случайно что-нибудь деструктивное.
Изменение цвета фона рутовой консоли — хорошая идея, однако переключаться в рутовую консоль путём вызова соответствующего сеанса (пусть даже с помощью горячих клавиш) не всегда удобно. Гораздо чаще используется команда sudo. Было бы неплохо менять цвет консоли и при её вызове.
С помощью dcop реализовать это очень просто:
#!/bin/bash
test -z "$KONSOLE_DCOP_SESSION" || dcop $KONSOLE_DCOP_SESSION setSchema BlackOnLightYellow.schema
sudo $*
test -z "$KONSOLE_DCOP_SESSION" || dcop $KONSOLE_DCOP_SESSION setSchema LightPicture.schema
Вместо LightPicture.schema нужно написать свою любимую схему konsole. Скрипт можно сохранить под любым названием (например, sudo.sh) в каталог ~/bin, а в .bashrc назначить alias для sudo:
alias sudo='~/bin/sudo.sh $*'
Теперь при запуске sudo с любыми параметрами (sudo -s, sudo whoami и т.д.) консоль будет менять цвет фона на жёлтый на время выполнения.
P.S. поздновато я DCOP’ом начал проникаться — в KDE4 его заменит D-BUS.
А вот как нечто подбное делается в xterm:
alias sudo=’xtermcontrol –fg=green3; sudo $*; xtermcontrol –fg=gainsboro’