3

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

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

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

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

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

2 回答 2

2

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

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

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

于 2010-01-22T18:18:39.703 回答
1

语境

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

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

实际答案

  1. Settings | Edit Current Profile... | Appearance
  2. 为您希望具有特殊背景的每个目录定义新的配色方案,例如 myprofile1、myprofile2、mystandard
  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"

于 2020-04-18T17:58:36.087 回答