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

时间:2010-01-22 17:31:48

标签: linux shell kde konsole

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

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

这可能吗?如果是这样,你能为我提供一些方向吗?

我看到它的方式我需要做几件事:

  • 能够检测正在运行shell进程(bash)的Konsole。
  • 能够通过API调用告诉Konsole,可以动态更改配色方案。

2 个答案:

答案 0 :(得分:2)

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

你没有说你正在使用哪个shell,但是如果它是Bash你可能想要使用$PROMPT_COMMAND变量来保存每次发出$ PS1提示时执行的命令。 Z shell具有类似的功能,可能更强大一些(man zshmiscchpwd precmd)。

否则,您可以使用xterm escape sequences

答案 1 :(得分:1)

上下文

实际上,Konsole支持他们的个人资料。配置文件是一组设置(不仅是背景),您可以在Settings | Manage Profiles及其附近进行手动定义。

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

实际答案

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