Могу ли я изменить переменную цветовую схему терминала на моем cwd?

Само собой разумеется, например, когда I cd Desktop ответ является номинальным в дополнение к термину, изменяющему цветовую палитру, от палитры, назначенной ~, к одному, присвоенному ~/Desktop

0
задан 1 May 2017 в 06:59

3 ответа

Вы могли бы изменить [color] цветовые настройки $PROMPT_COMMAND, но изменили бы цветовую схему в каждом окне терминала, а не только на текущем.

Для 14.04, поместите ниже в свой [ f4]. Прежде чем продолжить, вы можете создать резервную копию текущих настроек gconf.

_terminal_colors(){
    local dir="/apps/gnome-terminal/profiles/$TERMINAL_PROFILE"

    local bg_default="#30300A0A2424"
    local bg_xterm="#147A147A147A"
    local bg

    local fg_default="#FFFFFFFFFFFF"
    local fg_xterm="#EEEEEEEEECEC"
    local fg

    local palette_default="#2E2E34343636:#CCCC00000000:#4E4E9A9A0606:#C4C4A0A00000:#34346565A4A4:#757550507B7B:#060698209A9A:#D3D3D7D7CFCF:#555557575353:#EFEF29292929:#8A8AE2E23434:#FCFCE9E94F4F:#72729F9FCFCF:#ADAD7F7FA8A8:#3434E2E2E2E2:#EEEEEEEEECEC"
    local palette_xterm="#000000000000:#CDCB00000000:#0000CDCB0000:#CDCBCDCB0000:#1E1A908FFFFF:#CDCB0000CDCB:#0000CDCBCDCB:#E5E2E5E2E5E2:#4CCC4CCC4CCC:#FFFF00000000:#0000FFFF0000:#FFFFFFFF0000:#46458281B4AE:#FFFF0000FFFF:#0000FFFFFFFF:#FFFFFFFFFFFF"
    local palette

    if [[ $PWD == ~/Desktop ||
          $PWD == ~/Desktop/* ]]
    then
        palette="$palette_xterm"
        bg="$bg_xterm"
        fg="$fg_xterm"
    else
        palette="$palette_default"
        bg="$bg_default"
        fg="$fg_default"
    fi

    gconftool-2 --set "$dir/palette" --type=string "$palette"
    gconftool-2 --set "$dir/background_color" --type=string "$bg"
    gconftool-2 --set "$dir/foreground_color" --type=string "$fg"
}

TERMINAL_PROFILE="" # Your profile here.
PROMPT_COMMAND="_terminal_colors"

Для 16.04 и новее вам нужно будет адаптировать команды к использованию dconf вместо gconftool-2.

Упрощенное решение

Итак, учитывая сложность вышеизложенного, я думаю, что просто установить цвет pwd в командной строке PS1. Это передовое и обратное совместимое и, возможно, кросс-платформенное:

_PROMPT_pwd_color(){
    if [[ $PWD == ~/Desktop ||
          $PWD == ~/Desktop/* ]]
    then
        printf "\e[1;31m" # Red
    else
        printf "\e[1;32m" # Green
    fi
}

PS1='${debian_chroot:+($debian_chroot)}\[\e[1;32m\]\u@\h\[\e[m\]:\[$(_PROMPT_pwd_color)\]\w\[\e[m\]\n\$ '
2
ответ дан 22 May 2018 в 23:03
  • 1
    Закройте, но, как вы сказали, «это изменит цветовую схему в каждом окне терминала, а не только в текущем.» и я хотел бы быстро дифференцировать между несколькими терминальными окнами. +1 для усилий, тем не менее! – kpie 10 May 2017 в 19:51

Вы могли бы изменить [color] цветовые настройки $PROMPT_COMMAND, но изменили бы цветовую схему в каждом окне терминала, а не только на текущем.

Для 14.04, поместите ниже в свой ~/.bashrc. Прежде чем продолжить, вы можете создать резервную копию текущих настроек gconf.

_terminal_colors(){ local dir="/apps/gnome-terminal/profiles/$TERMINAL_PROFILE" local bg_default="#30300A0A2424" local bg_xterm="#147A147A147A" local bg local fg_default="#FFFFFFFFFFFF" local fg_xterm="#EEEEEEEEECEC" local fg local palette_default="#2E2E34343636:#CCCC00000000:#4E4E9A9A0606:#C4C4A0A00000:#34346565A4A4:#757550507B7B:#060698209A9A:#D3D3D7D7CFCF:#555557575353:#EFEF29292929:#8A8AE2E23434:#FCFCE9E94F4F:#72729F9FCFCF:#ADAD7F7FA8A8:#3434E2E2E2E2:#EEEEEEEEECEC" local palette_xterm="#000000000000:#CDCB00000000:#0000CDCB0000:#CDCBCDCB0000:#1E1A908FFFFF:#CDCB0000CDCB:#0000CDCBCDCB:#E5E2E5E2E5E2:#4CCC4CCC4CCC:#FFFF00000000:#0000FFFF0000:#FFFFFFFF0000:#46458281B4AE:#FFFF0000FFFF:#0000FFFFFFFF:#FFFFFFFFFFFF" local palette if [[ $PWD == ~/Desktop || $PWD == ~/Desktop/* ]] then palette="$palette_xterm" bg="$bg_xterm" fg="$fg_xterm" else palette="$palette_default" bg="$bg_default" fg="$fg_default" fi gconftool-2 --set "$dir/palette" --type=string "$palette" gconftool-2 --set "$dir/background_color" --type=string "$bg" gconftool-2 --set "$dir/foreground_color" --type=string "$fg" } TERMINAL_PROFILE="" # Your profile here. PROMPT_COMMAND="_terminal_colors"

Для 16.04 и новее вам нужно будет адаптировать команды к использованию dconf вместо gconftool-2.

Упрощенное решение

Итак, учитывая сложность вышеизложенного, я думаю, что просто установить цвет pwd в командной строке PS1. Это передовое и обратное совместимое и, возможно, кросс-платформенное:

_PROMPT_pwd_color(){ if [[ $PWD == ~/Desktop || $PWD == ~/Desktop/* ]] then printf "\e[1;31m" # Red else printf "\e[1;32m" # Green fi } PS1='${debian_chroot:+($debian_chroot)}\[\e[1;32m\]\u@\h\[\e[m\]:\[$(_PROMPT_pwd_color)\]\w\[\e[m\]\n\$ '
2
ответ дан 18 July 2018 в 14:00

Вы могли бы изменить [color] цветовые настройки $PROMPT_COMMAND, но изменили бы цветовую схему в каждом окне терминала, а не только на текущем.

Для 14.04, поместите ниже в свой ~/.bashrc. Прежде чем продолжить, вы можете создать резервную копию текущих настроек gconf.

_terminal_colors(){ local dir="/apps/gnome-terminal/profiles/$TERMINAL_PROFILE" local bg_default="#30300A0A2424" local bg_xterm="#147A147A147A" local bg local fg_default="#FFFFFFFFFFFF" local fg_xterm="#EEEEEEEEECEC" local fg local palette_default="#2E2E34343636:#CCCC00000000:#4E4E9A9A0606:#C4C4A0A00000:#34346565A4A4:#757550507B7B:#060698209A9A:#D3D3D7D7CFCF:#555557575353:#EFEF29292929:#8A8AE2E23434:#FCFCE9E94F4F:#72729F9FCFCF:#ADAD7F7FA8A8:#3434E2E2E2E2:#EEEEEEEEECEC" local palette_xterm="#000000000000:#CDCB00000000:#0000CDCB0000:#CDCBCDCB0000:#1E1A908FFFFF:#CDCB0000CDCB:#0000CDCBCDCB:#E5E2E5E2E5E2:#4CCC4CCC4CCC:#FFFF00000000:#0000FFFF0000:#FFFFFFFF0000:#46458281B4AE:#FFFF0000FFFF:#0000FFFFFFFF:#FFFFFFFFFFFF" local palette if [[ $PWD == ~/Desktop || $PWD == ~/Desktop/* ]] then palette="$palette_xterm" bg="$bg_xterm" fg="$fg_xterm" else palette="$palette_default" bg="$bg_default" fg="$fg_default" fi gconftool-2 --set "$dir/palette" --type=string "$palette" gconftool-2 --set "$dir/background_color" --type=string "$bg" gconftool-2 --set "$dir/foreground_color" --type=string "$fg" } TERMINAL_PROFILE="" # Your profile here. PROMPT_COMMAND="_terminal_colors"

Для 16.04 и новее вам нужно будет адаптировать команды к использованию dconf вместо gconftool-2.

Упрощенное решение

Итак, учитывая сложность вышеизложенного, я думаю, что просто установить цвет pwd в командной строке PS1. Это передовое и обратное совместимое и, возможно, кросс-платформенное:

_PROMPT_pwd_color(){ if [[ $PWD == ~/Desktop || $PWD == ~/Desktop/* ]] then printf "\e[1;31m" # Red else printf "\e[1;32m" # Green fi } PS1='${debian_chroot:+($debian_chroot)}\[\e[1;32m\]\u@\h\[\e[m\]:\[$(_PROMPT_pwd_color)\]\w\[\e[m\]\n\$ '
2
ответ дан 24 July 2018 в 20:18
  • 1
    Закройте, но, как вы сказали, «это изменит цветовую схему в каждом окне терминала, а не только в текущем.» и я хотел бы быстро дифференцировать между несколькими терминальными окнами. +1 для усилий, тем не менее! – kpie 10 May 2017 в 19:51

Другие вопросы по тегам:

Похожие вопросы: