如何根据当前目录在 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
了解chpwd
和precmd
)。
否则,您也许可以使用xterm escape sequences。
【讨论】:
【参考方案2】:上下文
实际上,Konsole 支持他们的配置文件。配置文件是一组设置(不仅是背景),您可以在 Settings | Manage Profiles
和周围手动定义。
此外,还有一个名为 konsoleprofile
的命令行实用程序,它允许以编程方式更改配置文件。
实际答案
-
转到
Settings | Edit Current Profile... | Appearance
为您希望为其设置特殊背景的每个目录定义新的配色方案,例如myprofile1, myprofile2, mystandard
确保您可以手动拨打konsoleprofile ColorScheme=myprofile1
、konsoleprofile ColorScheme=standard
等。
将对konsoleprofile
的调用插入到您的$PROMPT_COMMAND
,例如将此添加到您的.bashrc
:
PROMPT_COMMAND='[[ "$PWD" = /home/me/src/java* ]] && konsoleprofile ColorScheme=myprofile1 || konsoleprofile ColorScheme=mystandard'";$PROMPT_COMMAND"
【讨论】:
以上是关于如何根据当前目录在 Konsole 中以编程方式更改颜色?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Spring 中以编程方式获取当前的活动/默认环境配置文件?
如何在 Swift 中以编程方式更改 UIButton 状态
如何在 Windows 8.1 中以编程方式更改当前的 Windows 主题?