【问题标题】:How to change colors programmatically in Konsole based on current directory?如何根据当前目录在 Konsole 中以编程方式更改颜色?
【发布时间】: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 的编程,那么这是一个编程问题。

标签: linux shell kde konsole


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    上下文

    实际上,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"
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-03
      • 1970-01-01
      • 1970-01-01
      • 2011-02-04
      • 1970-01-01
      • 1970-01-01
      • 2015-12-06
      相关资源
      最近更新 更多