Автоматически изменяем заголовок эмулятора терминала на последнюю введённую команду

Не знаю как у остальных, но у меня часто бывает так, что открыто очень много эмуляторов терминала и на панели задач примерно такая картина (кликабельно):

Разумеется, в каждом эмуляторе терминала открыто что-то нужное, но разобраться в этой куче без названий довольно трудно. Поэтому решил я сделать так, чтобы в заголовке терминала, выводилась последняя введённая команда. Всё оказалось довольно просто, и делается штатными средствами 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


Понравилась статья? Поделись с друзьями!




Комментарии на этом сайте требуют включенного Javascript в вашем браузере. Вероятно, ваш браузер не поддерживает Javascript, или он был отключен по каким-то причинам. Если вы хотите прокомментировать пост, или просто почитать комментарии, то пожалуйста, включите Javascript или попробуйте открыть эту страницу другим браузером.