从命令行更改konsole选项卡标题并使其持久化?

时间:2013-11-11 02:06:34

标签: shell kde konsole qdbus

如何更改konsole标签标题?默认情况下,它设置为%u : %n,因此它会自动更改。

我可以用:

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

但是,只要您在控制台中运行某些内容,它就会更改回%u : %n。当然。我可以将它设置为%w以告诉它将标题设置为“由shell设置的窗口标题”,但稍后(如果我没有明确设置它),它将为空。 (除非我设置它,否则每个新选项卡都将为空。)

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

enter image description here

enter image description here

编辑:我想我找到了答案

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

7 个答案:

答案 0 :(得分:16)

您可能需要使用此变体:

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

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

答案 1 :(得分:10)

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

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

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

答案 2 :(得分:6)

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

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

答案 3 :(得分:2)

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

  • 由于服务名称被硬编码为org.kde.konsole,因此OP解决方案在较新的(?)KDE系统上不起作用
  • 基于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 >/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

答案 4 :(得分:1)

this answer 改进了 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

答案 5 :(得分:-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'来创建别名'variable'。不太优雅,但它在很大程度上让我满意。所以在更改了我的.cshrc并在窗口shell中获取.cshrc文件后,我就这样做了

    set Z=Example
    T

or

    set Z=Example2
    DT

我得到了我的标题集。当我更改为其他任务时,我将Z更改为新名称并再次运行别名“T”或“DT”。

答案 6 :(得分:-3)

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

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

(在Konsole版本17.12.3,S.O。Kubuntu 18.04上测试)