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

q5lcpyga  于 2022-12-23  发布在  Shell
关注(0)|答案(7)|浏览(137)

如何更改konsole标签标题?默认情况下,它被设置为%u : %n,所以它总是自动更改。
我可以设置为:

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

但是一旦你在控制台中运行了一些东西,它就会变回%u : %n.当然,我可以将它设置为%w来告诉它将标题设置为“Window Title set by shell”,但是稍后(如果我没有显式地设置它),它就会是空的.(每个新的标签页都会是空的,除非我设置了它.)
问题是如何使它持久化(或者如何通过命令行切换配置文件)?我可以创建另一个配置文件,其中的标题格式设置为%w,在设置我的自定义标题之前,切换到该配置文件。

编辑:我想我已经找到答案了
qdbus org.kde.konsole $KONSOLE_DBUS_SESSION集合表格标题格式0“”qdbus org.kde.konsole $KONSOLE_DBUS_SESSION集合标题0“我的标题”

fnatzsnv

fnatzsnv1#

您可能需要使用以下变体:
第一个月

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

vsikbqxv2#

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

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

11dmarpk3#

第一个月
有关更多选项,请尝试konsole --list-profile-properties

rdrgkggo

rdrgkggo4#

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

  • 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

您还可以使用此函数将echo解决方案的选项卡标题动态设置为%w

    • 注**

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

fcy6dtqo

fcy6dtqo5#

Stefan Beckerthis answer的改进。这个脚本接受多个单词作为标题。你可以用它来改变远程和本地标题。没有参数,它设置为默认标题。我称它为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
rkttyhzu

rkttyhzu6#

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窗口设置标题感到高兴,然后我看到了蒂姆的评论。这对我来说是一个很大的进步。谢谢你,蒂姆!!
但这并没有让我达到我想达到的目标。
我想超越在给定的命令行示例中键入,因为我的记忆力很差,从现在起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回声-ne "30;”
以及
别名DT回声-ne "\033]30"%d\$Z\007\”
请注意,我必须使用环境变量“Z”来使别名“variable”。虽然不太优雅,但在很大程度上满足了我的要求。因此,在更改了.cshrc并在窗口shell中获取了.cshrc文件之后,我这样做

set Z=Example
    T

or

    set Z=Example2
    DT

然后我得到了我的标题集。当我换到另一个任务时,我将Z改为新名称,并再次运行我的别名“T”或“DT”。

fzwojiic

fzwojiic7#

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

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

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

相关问题