Автоматически изменяем заголовок эмулятора терминала на последнюю введённую команду
Не знаю как у остальных, но у меня часто бывает так, что открыто очень много эмуляторов терминала и на панели задач примерно такая картина (кликабельно):
Разумеется, в каждом эмуляторе терминала открыто что-то нужное, но разобраться в этой куче без названий довольно трудно. Поэтому решил я сделать так, чтобы в заголовке терминала, выводилась последняя введённая команда. Всё оказалось довольно просто, и делается штатными средствами bash\zsh. Например, для zsh всё что нужно было, так это добавить в конфиг:
if [ "$SHELL" = '/bin/zsh' ]; then case $TERM in rxvt|*term|linux) preexec () { print -Pn "\e]0;$1\a" };; esac; fi
И, возможно, немного поменять настройки эмулятора терминала. Например, у меня в xfce4-terminal надо было в настройках значение "Dynamically-set title
" поставить в "Replace initial title
" ну и конечно, проверить переменную $TERM
:
После этих небольших манипуляций, становится заметно удобнее работать:
Если используемый Вами shell - bash, то в \~/.bashrc необходимо добавить:
case "$TERM" in
xterm*|rxvt*)
trap 'echo -e "\e]0;$BASH_COMMAND\007"' DEBUG
;;
*)
;;
esac
На этом в общем-то всё. Единственное, я бы хотел ещё поделиться небольшим скриптом, которым я часто пользуюсь. Скрипт позволяет менять заголовок текущего окна на произвольный, введённый пользователем. Это тоже бывает довольно часто полезно. Для работы скрипта необходим wmctrl
и zenity
. Если у Вас их нет, то рекомендую поставить. Довольно полезные утилиты.
Назвать это полноценным скриптом довольно трудно, но всё же:
#!/bin/sh
TITLE=$(zenity --entry --title="Changing window title" --text="New window title:")
if [ ! $TITLE ]
then
exit 0;
else
wmctrl -r :ACTIVE: -T "$TITLE"
fi