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

Posted

技术标签:

【中文标题】如何根据当前目录在 Konsole 中以编程方式更改颜色?【英文标题】:How to change colors programmatically in Konsole based on current directory? 【发布时间】:2011-01-08 07:36:00 【问题描述】:

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

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

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

在我看来,我需要能够做几件事:

能够检测 shell 进程 (bash) 正在哪个 Konsole 中运行。 能够告诉 Konsole(可能通过 API 调用)即时更改配色方案。

【问题讨论】:

如果这涉及到我对 API 的编程,那么这是一个编程问题。 【参考方案1】:

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

您没有说您使用的是哪个 shell,但如果是 Bash,您可能希望使用 $PROMPT_COMMAND 变量,该变量包含每次发出 $PS1 提示时要执行的命令。 Z shell 有一个类似的功能,可能更强大一些(请参阅man zshmisc 了解chpwdprecmd)。

否则,您也许可以使用xterm escape sequences。

【讨论】:

【参考方案2】:

上下文

实际上,Konsole 支持他们的配置文件。配置文件是一组设置(不仅是背景),您可以在 Settings | Manage Profiles 和周围手动定义。

此外,还有一个名为 konsoleprofile 的命令行实用程序,它允许以编程方式更改配置文件。

实际答案

    转到Settings | Edit Current Profile... | Appearance 为您希望为其设置特殊背景的每个目录定义新的配色方案,例如myprofile1, myprofile2, mystandard 确保您可以手动拨打konsoleprofile ColorScheme=myprofile1konsoleprofile ColorScheme=standard等。 将对konsoleprofile 的调用插入到您的$PROMPT_COMMAND,例如将此添加到您的.bashrc
PROMPT_COMMAND='[[ "$PWD" = /home/me/src/java* ]] && konsoleprofile ColorScheme=myprofile1 || konsoleprofile ColorScheme=mystandard'";$PROMPT_COMMAND"

【讨论】:

以上是关于如何根据当前目录在 Konsole 中以编程方式更改颜色?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring 中以编程方式获取当前的活动/默认环境配置文件?

如何获取 konsole kpart 的当前目录

如何在 Swift 中以编程方式更改 UIButton 状态

如何在 Windows 8.1 中以编程方式更改当前的 Windows 主题?

如何在 C# 中以编程方式将 Windows 服务的启动类型更改为禁用

如何在 iOS 6 中以编程方式获取设备的当前方向?