fish shell - Отображение текущей команды в заголовке окна экрана

Я хочу, чтобы текущая команда отображалась в заголовке экрана (или tmux).

Я пробовал следующие настройки, но это не работает.

Как я могу заставить его работать?

.screenrc

shelltitle "$ |fish"
shell /usr/local/bin/fish

.config/fish/config.fish

set -x PS1 '\033k\033\\[\u@\h \W]\$ '

person Shonosuke    schedule 22.07.2014    source источник


Ответы (4)


Для версии fish 2.1.0 вам нужно только отредактировать ~/.config/fish/functions/fish_title.fish.

function fish_title
    hostname
end

Для версии 1.23.1 это не работает. Если каталоги не существуют, сначала создайте их:

mkdir -p ~/.config/fish/functions/

person Mr. Morris    schedule 11.02.2015

Что сработало для меня в .config/fish/functions/fish_title.fish :

function fish_title
    # this one sets the X terminal window title
    # argv[1] has the full command line
    echo (hostname): (pwd): $argv[1]

    switch "$TERM"
    case 'screen*'

      # prepend hostname to screen(1) title only if on ssh
      if set -q SSH_CLIENT
        set maybehost (hostname):
      else
        set maybehost ""
      end

      # inside the function fish_title(), we need to
      # force stdout to reach the terminal
      #
      # (status current-command) gives only the command name
      echo -ne "\\ek"$maybehost(status current-command)"\\e\\" > /dev/tty
    end
end
person melissa_boiko    schedule 12.08.2020
comment
Действительно, последний >/dev/tty очень важен для экрана GNU. Я обнаружил, что другие ответы потерпели неудачу в этот момент. - person tueda; 09.11.2020

Я думаю, вы ищете fish_title. См. документацию здесь.

Вы можете сделать что-то вроде этого:

function fish_title
    echo $_ ' '
    pwd
end
funcsave fish_title

(Обратите внимание, что вы просто запускаете это по приглашению - не помещайте его в файл конфигурации).

person ridiculous_fish    schedule 22.07.2014
comment
Я добавил тот же ответ и удалил его. Пользователь хочет обновить заголовок экрана, а не заголовок терминала. - person glenn jackman; 23.07.2014

Спасибо за ваши ответы. Наконец-то это сработало!

.screenrc

shelltitle "$ |fish"
shell /usr/local/bin/fish

.config/fish/config.fish

function fish_prompt
    echo -ne '\033k'
    echo -ne $argv
    echo -ne '\033\\'
    echo -ne '$ '
end
person Shonosuke    schedule 08.08.2014