14

如何更改 konsole 选项卡标题?默认情况下,它设置为%u : %n,因此它总是自动更改。

我可以设置它:

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

但是,一旦您在控制台中运行某些东西,它就会变回%u : %n. 当然。我可以将其设置%w为告诉它将标题设置为“由 shell 设置的窗口标题”,但稍后(如果我没有明确设置它),它将为空。(除非我设置它,否则每个新标签都是空的。)

问题是如何使其持久化(或如何通过命令行切换配置文件)?我可以制作另一个标题格式设置为 的配置文件%w,然后在设置自定义标题之前切换到该配置文件。

在此处输入图像描述

在此处输入图像描述

编辑:我想我找到了答案

qdbus org.kde.konsole $KONSOLE_DBUS_SESSION setTabTitleFormat 0 "" qdbus org.kde.konsole $KONSOLE_DBUS_SESSION setTitle 0 "我的标题"

4

7 回答 7

20

您可能需要使用此变体:

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

$ konsole -v
Qt: 4.8.6
KDE Development Platform: 4.13.3
Konsole: 2.13.2
于 2014-08-07T05:51:42.620 回答
16

Konsole -> 设置 -> 配置 Konsole ...

启用选项“在标题栏上显示窗口标题”,然后在控制台中运行:

echo -ne "\033]2;test change title\007" 
于 2014-01-27T11:49:37.923 回答
12

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

如需更多选择,请尝试konsole --list-profile-properties.

于 2015-12-03T14:11:40.140 回答
8

发布我自己对这个老问题的解决方案,因为

  • OP 解决方案不适用于较新的(?)KDE 系统,因为服务名称硬编码为org.kde.konsole
  • 基于echo要求永久更改 konsole 设置的答案

在阅读了konsole 文档中的Scripting Konsole章节后,我编写了这些 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-qt5 >/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

您还可以使用此功能%wecho解决方案动态设置选项卡标题。

笔记

上面的代码假设 KDE Plasma/Qt5。对于 KDE4/Qt4,您需要替换qdbus-qt5qdbus

于 2019-01-11T07:54:25.080 回答
2

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
于 2021-04-19T12:26:06.723 回答
-1
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

我从不喜欢为 konsole windows 设置标题,然后我看到了 Tim 的评论。这对我来说是一个很大的进步。谢谢你,蒂姆!!

但这并没有把我带到我想去的地方。

我想超越输入给定的命令行示例,因为我的记忆力很差,从现在起 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”。

于 2018-01-03T15:48:02.860 回答
-3

要在新选项卡上设置标题“MyTitle”,正确的语法是:

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

(在 Konsole 版本 17.12.3、SO Kubuntu 18.04 上测试)

于 2018-11-10T15:56:22.183 回答