Изменить заголовок вкладки консоли из командной строки и сделать его постоянным?
Как я могу изменить заголовок вкладки 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.
- Вы можете изменить название актива, набрав
wmctrl -r :ACTIVE: -N "New Title 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)