Изменить заголовок вкладки консоли из командной строки и сделать его постоянным?

Как я могу изменить заголовок вкладки konsole? По умолчанию установлено %u : %n, поэтому он всегда меняется автоматически.

Я могу установить это с:

qdbus org.kde.konsole $KONSOLE_DBUS_SESSION setTitle 1 "My Title"

Но как только вы запустите что-то в консоли, оно снова изменится на %u : %n, Конечно. Я могу установить это %w чтобы сказать ему, чтобы установить заголовок на "Заголовок окна, установленный оболочкой", но позже (если я не установлю его явно), он будет пустым. (Каждая новая вкладка будет пустой, если я ее не установлю.)

Вопрос в том, как сделать его постоянным (или как переключать профиль через командную строку)? Я могу сделать другой профиль, в котором установлен формат заголовка %wи, прежде чем установить свой пользовательский заголовок, переключитесь на этот профиль.

редактировать: я думаю, что нашел ответ

qdbus org.kde.konsole $KONSOLE_DBUS_SESSION setTabTitleFormat 0 "" qdbus org.kde.konsole $KONSOLE_DBUS_SESSION setTitle 0 "Мой заголовок"

8 ответов

Вам может понадобиться использовать этот вариант:

echo -ne "\033]30;test change title\007"

$ konsole -v
Qt: 4.8.6
KDE Development Platform: 4.13.3
Konsole: 2.13.2

Konsole -> Настройки -> Настроить Konsole ...

Включите опцию "Показать заголовок окна на заголовке" и запустите в консоли:

echo -ne "\033]2;test change title\007" 

konsole -p tabtitle='some title: %w'

Для большего количества вариантов попробуйте konsole --list-profile-properties,

Размещать собственное решение этого старого вопроса, потому что

  • Решение OP не работает на более новых (?) Системах KDE из-за жесткого кодирования имени службы в org.kde.konsole
  • ответы основаны на echo требуется постоянное изменение настроек консоли

Прочитав главу "Консоль сценариев" в документации по консоли, я написал эти функции bash, которые можно добавить в $HOME/.bashrc:

set-konsole-tab-title-type ()
{
    local _title=$1
    local _type=${2:-0}
    [[ -z "${_title}" ]]               && return 1
    [[ -z "${KONSOLE_DBUS_SERVICE}" ]] && return 1
    [[ -z "${KONSOLE_DBUS_SESSION}" ]] && return 1
    qdbus >/dev/null "${KONSOLE_DBUS_SERVICE}" "${KONSOLE_DBUS_SESSION}" setTabTitleFormat "${_type}" "${_title}"
}
set-konsole-tab-title ()
{
    set-konsole-tab-title-type $1 && set-konsole-tab-title-type $1 1
}

Пример 1: установка локальных и удаленных форматов вкладок

$ set-konsole-tab-title test

Пример 2: оставить формат удаленной вкладки без изменений

$ set-konsole-tab-title-type test

Пример 3: оставить локальный формат вкладок без изменений

$ set-konsole-tab-title-type test 1

Вы также можете использовать эту функцию, чтобы динамически установить заголовок вкладки %w для echo решения.

Улучшение этого ответа со стороны Stefan Becker . Этот сценарий допускает использование нескольких слов для названия. Вы можете использовать его для изменения как удаленных, так и локальных заголовков. Без параметров задается заголовок по умолчанию. Я назвал это setTitle

      #!/bin/bash
titleLocal=${1:-%d : %n}
titleRemote=${2:-(%u) %H}

set-konsole-tab-title-type()
{
    local _title="$1"
    local _type=${2:-0}
    [[ -z "${_title}" ]]               && return 1
    [[ -z "${KONSOLE_DBUS_SERVICE}" ]] && return 1
    [[ -z "${KONSOLE_DBUS_SESSION}" ]] && return 1
    qdbus >/dev/null "${KONSOLE_DBUS_SERVICE}" "${KONSOLE_DBUS_SESSION}" setTabTitleFormat "${_type}" "${_title}"
}

set-konsole-tab-title-type "$titleLocal" && set-konsole-tab-title-type "$titleRemote" 1

Измените оба названия:

      setTitle "My Local Title" "My Remote Title" 

Измените только местное название:

      setTitle "My Local Title" 

Изменить только удаленный заголовок:

      setTitle "" "My Remote Title" 

Изменить на значения по умолчанию:

      setTitle

Сначала установите wmctrl, если его нет в вашей системе. Он предназначен для взаимодействия с X Window Manager, совместимым с EWMH/NetWM.

  1. Вы можете изменить название актива, набрав
          wmctrl -r :ACTIVE: -N "New Title 1"

в активном. Название сохраняется до тех пор, пока вы не закроете файл .

  1. Вы также можете изменить заголовок за пределами активногоKonsole. Сначала перечислите все ваши окна, введите:
          wmctrl -l
    ... lines deleted ...
    0x05c00007  0 myMachine New Title
    ... lines deleted ...

Или, если вам также нужны pid, окно x,y,w,h и WM_CLASS, введите:

          wmctrl -l -p -G -x
    ... lines deleted ...
    x05c00007  0 2706379 360  106  1760 877  konsole.konsole  myMachine New Title
    ... lines deleted ...

Затем найдите идентификатор целевого окна (= первый столбец) и введите в любой терминал:

      `wmctrl -i -r 0x05c00007 -N "New Title 2"`

Предупреждение: если вы хотите проанализировать выводwmctrl -l -p -G -xобратите внимание, что содержимое столбца WM_CLASS может содержать пробелы. Например, виртуальный бокс дает:VirtualBox Machine.VirtualBox Machine

You may need to use this variant:

`echo -ne "\033]30;test change title\007"`


    $ konsole -v
    Qt: 4.8.6
    KDE Development Platform: 4.13.3
    Konsole: 2.13.2

Я никогда не был доволен настройкой заголовка для консольных окон, потом увидел комментарий Тима. Это было большим улучшением для меня. Спасибо, Тим!!

Но это не совсем привело меня туда, где я хотел быть.

Я хотел выйти за рамки ввода в данном примере командной строки, потому что у меня ужасная память, и через 3 недели я не буду помнить последовательность символов варианта.

Я хотел создать псевдоним, который позволил бы мне сделать следующее:

define an alias 'T' for my shell (tcsh in my case) so that I can enter:

    T titleName

and another alias 'DT' so that I can enter:

    DT titleName

Псевдоним "T" меняет заголовок окна на "titleName", а псевдоним "DT" меняет заголовок окна на "%d titleName", где% d - имя каталога.

Это заняло некоторые эксперименты. Стоит отметить, что я сделал плохой первый шаг, пытаясь сначала отредактировать свой.cshrc. Я не мог заставить работать экранирование с обратной косой чертой, не будучи уверенным, когда происходит экранирование: при чтении файла.cshrc или при запуске псевдонима. После нескольких минут разочарования я попытался сначала определить псевдоним, символ за символом:

a) add a new character to the alias
b) echo the current alias by enter 'alias T' to verify the csh interpretation
c) add backslashes as needed
d) verify again.

Это сработало, и я получил псевдоним на работу через минуту или две. Когда псевдонимы заработали, я просто скопировал и вставил их в мой файл.cshrc, и оба псевдонима сработали. Мои рабочие псевдонимы:

псевдоним T echo -ne \"\033]30\;\$Z\007\"

а также

псевдоним DT echo -ne \"\033]30\;\%d\ \$Z\007\"

Обратите внимание, что мне пришлось использовать переменную окружения "Z", чтобы сделать псевдонимы "переменными". Не слишком элегантно, но это во многом меня устраивает. Поэтому после изменения моего.cshrc и поиска файла.cshrc в оконной оболочке я делаю это

    set Z=Example
    T

or

    set Z=Example2
    DT

и я получаю свой титульный набор. Когда я переключаюсь на другую задачу, я меняю Z на новое имя и снова запускаю свой псевдоним 'T' или 'DT'.

Чтобы установить заголовок "MyTitle" на новой вкладке, правильный синтаксис:

konsole --new-tab -p "RemoteTabTitleFormat=MyTitle" ...

(проверено на Konsole версии 17.12.3, SO Kubuntu 18.04)

Другие вопросы по тегам