Как программно изменить цвета в Konsole на основе текущего каталога?

В настоящее время я использую цветовую схему в зависимости от того, в каком каталоге я работаю. Я вручную открываю оболочку Konsole, а затем перехожу в каталог, захожу в «Настройки» и меняю цветовую схему.

Я хотел бы, чтобы Konsole автоматически устанавливала цвета переднего плана и фона в зависимости от того, в каком каталоге я нахожусь. В основном, если я нахожусь в каком-либо подкаталоге ниже /home/me/src/java, тогда я хотел бы использовать текст белый , синий фон, например. Если я ниже /home/me/src/documentation, я хочу, чтобы текст был черным, а фон белым, например. Я хотел бы, чтобы изменение цвета происходило автоматически, программно, когда я вызываю команду "cd".

Это возможно? Если да, то не могли бы вы подсказать мне, как это сделать?

Как я это вижу, мне нужно будет сделать несколько вещей:

  • Уметь определять, в какой консоли запущен процесс оболочки (bash).
  • Уметь сообщать Konsole, возможно, через вызов API, чтобы изменить цветовую схему на лету.

person rayd09    schedule 22.01.2010    source источник
comment
Если это связано с программированием для API, то это проблема программирования.   -  person rayd09    schedule 22.01.2010


Ответы (2)


Для начала вот небольшая информация об использовании D-Bus для сценариев Konsole.

Вы не говорите, какую оболочку вы используете, но если это Bash, вы можете использовать переменную $PROMPT_COMMAND, которая содержит команду, которая будет выполняться каждый раз, когда выдается приглашение $PS1. Оболочка Z имеет аналогичные средства, но, вероятно, немного более мощные (см. man zshmisc для chpwd и precmd).

В противном случае вы можете использовать экранированные последовательности xterm.

person Dennis Williamson    schedule 22.01.2010

Контекст

На самом деле, Konsole поддерживает то, что они профилируют. Профиль - это группа настроек (не только фона), которую можно вручную определить под Settings | Manage Profiles и около.

Кроме того, существует утилита командной строки под названием konsoleprofile, которая позволяет программно изменять профили.

Фактический ответ

  1. Go to Settings | Edit Current Profile... | Appearance
  2. Определите новую цветовую схему для каждого из каталогов, для которых вы хотите иметь специальный фон, например. мойпрофиль1, мойпрофиль2, мойстандартный
  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"

person Grzegorz Oledzki    schedule 18.04.2020