четверг, 1 ноября 2012 г.

Строка приглашения shell со шрифтами из Powerline

Случайно наткнулся в github на проект powerline-bash, в котором, как я понимаю, предпринята попытка перенести модель статусной строки из плагина для vim Powerline в строку приглашения shell (shell prompt). Идея интересная, однако использование цветных бэкграундов для шрифта противопоказано в моей псевдопрозрачной консоли: результат, скорее всего, будет выглядеть убого. Однако мысль о том, чтобы использовать символы стрелок из шрифта Powerline в строке приглашения, показалась мне перспективной. За сим я решил воплотить ее в жизнь. Результат представлен на картинке.


Полые и закрашенные угловые стрелки  на картинке - это и есть дополнительные символы из Powerline. Полой стрелке соответствует символ Unicode 2b81, закрашенной - 2b80. О том, как установить шрифт Powerline (хотя это совсем не шрифт, а просто дополнительные символы в вашем любимом шрифте, и термин шрифт Powerline - неверная, но удобная замена), я рассказывал здесь. Специально для пользователей Fedora, которые используют шрифты из репозитория Infinality и собирают шрифт Powerline с помощью fontpatcher, хочу напомнить: используйте не стандартный пакет fontforge, а fontforge-infinality!

После установки шрифта добавляем в .bashrc строки
case $COLORTERM in
    gnome*|mate*|konsole*)
        TERM=xterm-256color
        ;;
esac

[ -n "$XTERM_SHELL" ] && COLORTERM=xterm-256color

function proml
{
    case $COLORTERM in
        gnome*|mate*|konsole*)
            local PROMPTLINE="\[\033[38;5;167m\]\$(date +%d/%m/%y\ %H:%M)⮁⮁ \
\[\033[38;5;173m\]\u@\[\033[38;5;140m\]\h⮁⮁\[\033[38;5;173m\] \W \[\033[0m\] "
            local PROMPTLINE2='\[\033[38;5;196m\]⮀\[\033[0m\] '
            ;;
        xterm*)
            local PROMPTLINE="\[\033[38;5;167m\](\$(date +%d/%m/%y\ %H:%M))\
\[\033[38;5;173m\][\u@\[\033[38;5;140m\]\h\[\033[38;5;173m\] \W]$\[\033[0m\] "
            local PROMPTLINE2='\[\033[38;5;196m\]>\[\033[0m\] '
            ;;
        *)
            local PROMPTLINE="(\$(date +%d/%m/%y\ %H:%M))[\u@\h \W]$ "
            local PROMPTLINE2=''
            ;;
    esac
    PS1=$PROMPTLINE
    PS2=$PROMPTLINE2
}

proml
unset proml
В данном коде присутствуют символы Unicode 2b80 и 2b81. Если вы еще не установили шрифт Powerline, то они, скорее всего, не будут похожи на стрелки на вашем экране, а вероятно будут заменены вопросительными знаками или какими-нибудь кракозябрами. Кстати, если вам придется вставлять юникодные символы в vim, то делается это очень просто: в режиме ввода набираем Ctrl-V, затем u, а затем соответствующее символу значение (например 2b80).

Теперь вводим в командной строке
. ~/.bashrc
и наслаждаемся результатом.

Комментариев нет:

Отправить комментарий