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

Shu*_*man 10 shell kde konsole qdbus

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

我可以设置它:

qdbus org.kde.konsole $KONSOLE_DBUS_SESSION setTitle 1 "My Title"
Run Code Online (Sandbox Code Playgroud)

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

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

在此输入图像描述

在此输入图像描述

编辑:我想我找到了答案

qdbus org.kde.konsole $ KONSOLE_DBUS_SESSION setTabTitleFormat 0""qdbus org.kde.konsole $ KONSOLE_DBUS_SESSION setTitle 0"My Title"

Tim*_*Tim 18

您可能需要使用此变体:

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

$ konsole -v
Qt: 4.8.6
KDE Development Platform: 4.13.3
Konsole: 2.13.2
Run Code Online (Sandbox Code Playgroud)


fal*_*lko 10

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

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

echo -ne "\033]2;test change title\007" 
Run Code Online (Sandbox Code Playgroud)

  • 哦,echo命令工作,但我首先需要将标签标题格式设置为%w(由shell设置的窗口标题) (2认同)

Ste*_*ker 7

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

  • 由于将服务名称硬编码为 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
}
Run Code Online (Sandbox Code Playgroud)

示例 1:设置本地和远程选项卡格式

$ set-konsole-tab-title test
Run Code Online (Sandbox Code Playgroud)

示例 2:保持远程选项卡格式不变

$ set-konsole-tab-title-type test
Run Code Online (Sandbox Code Playgroud)

示例 3:保持本地选项卡格式不变

$ set-konsole-tab-title-type test 1
Run Code Online (Sandbox Code Playgroud)

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

笔记

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


Jos*_*ner 6

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

有关更多选项,请尝试konsole --list-profile-properties

  • 这将打开一个新窗口,而不是更改当前选项卡的标题(版本17.12.3)。 (3认同)

Ron*_*rer 5

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
Run Code Online (Sandbox Code Playgroud)

更改两个标题:

setTitle "My Local Title" "My Remote Title" 
Run Code Online (Sandbox Code Playgroud)

仅更改本地标题:

setTitle "My Local Title" 
Run Code Online (Sandbox Code Playgroud)

仅更改远程标题:

setTitle "" "My Remote Title" 
Run Code Online (Sandbox Code Playgroud)

更改为默认值:

setTitle
Run Code Online (Sandbox Code Playgroud)