如何根据当前目录在 Konsole 中以编程方式更改颜色?

问题描述 投票:0回答:2

我目前使用基于我正在工作的目录的配色方案。我手动打开 Konsole shell,然后 cd 进入目录并进入“设置”并更改配色方案。

我想做的是让 Konsole 根据我所在的目录自动设置其前景色和背景色。基本上,如果我位于 /home/me/src/java 下面的任何子目录中,那么我想使用文本例如,白色,背景蓝色。 例如,如果我位于 /home/me/src/documentation 下面,我想要文本黑色,背景白色。 我希望当我调用“cd”命令时,以编程方式自动发生颜色变化。

这可能吗? 如果是这样,您能给我一些指导吗?

我认为我需要能够做几件事:

  • 能够检测 shell 进程 (bash) 正在哪个 Konsole 中运行。
  • 能够告诉 Konsole(可能通过 API 调用)动态更改配色方案。
linux shell kde-plasma konsole
2个回答
3
投票

为了帮助您入门,这里提供了有关使用 D-Bus 编写 Konsole 脚本的一些信息。

您没有说明您正在使用哪个 shell,但如果是 Bash,您可能需要使用

$PROMPT_COMMAND
变量,该变量保存每次发出 $PS1 提示符时要执行的命令。 Z shell 有类似的功能,但可能更强大一些(请参阅
man zshmisc
了解
chpwd
precmd
)。

否则,您也许可以使用 xterm 转义序列


3
投票

背景

实际上,Konsole 支持他们所谓的配置文件。配置文件是一组设置(不仅仅是背景),您可以在

Settings | Manage Profiles
及其周围手动定义。

此外,还有一个名为

konsoleprofile
的命令行实用程序,它允许以编程方式更改配置文件。

实际答案

  1. 前往
    Settings | Edit Current Profile... | Appearance
  2. 为您想要为其设置特殊背景的每个目录定义新的配色方案,例如我的个人资料1、我的个人资料2、我的标准
  3. 确保您可以手动调用
    konsoleprofile ColorScheme=myprofile1
    konsoleprofile ColorScheme=standard
  4. 将对
    konsoleprofile
    的呼叫插入您的
    $PROMPT_COMMAND
    ,例如将其添加到您的
    .bashrc
PROMPT_COMMAND='[[ "$PWD" = /home/me/src/java* ]] && konsoleprofile ColorScheme=myprofile1 || konsoleprofile ColorScheme=mystandard'";$PROMPT_COMMAND"

© www.soinside.com 2019 - 2024. All rights reserved.