колись я вже грався в прикрашання командного рядка bash, і результату мені вистачає. але нещодавно я встановлював свіжий реліз manjaro на черговий домашній ноутбук, побачив гарненьке оформлення терміналу і зацікавився. виявилося, що новий manjaro використовує powerline (із темою powerlevel10k та додатковим шрифтом, які мені не потрібні), і його досить просто налаштувати собі для bash/zsh/fish (є непогана, хоч і не вичерпна підказка на readthedocs.io).
встановлення
встановлюємо powerline (на прикладі arch/manjaro):
pacman -S powerline
## або, якщо встановлено «обгортку» pamac:
pamac install powerline
перевіряємо, куди встановилося:
ls -l /usr/share/powerline/
lrwxrwxrwx 1 root root 52 гру 2 19:51 bindings -> /usr/lib/python3.10/site-packages/powerline/bindings
отже, налаштування, кольорові схеми й теми треба шукати в /usr/lib/python3.10/site-package/powerline/config_files/
― це знадобиться згодом.
bash
щоби прикрасити bash, треба додати декілька рядків до ~/.bashrc
, десь наприкінці файлу:
## Launch powerline for bash
powerline-daemon -q
POWERLINE_BASH_CONTINUATION=1
POWERLINE_BASH_SELECT=1
. /usr/share/powerline/bindings/bash/powerline.sh
…і перезавантажити конфігурацію bash:
source ~/.bashrc
zsh
майже те саме, що для bash, але достатньо двох рядків наприкінці файлу ~/.zshrc
:
# Launch powerline for zsh
powerline-daemon -q
. /usr/share/powerline/bindings/zsh/powerline.zsh
…і перезавантажити профіль:
source ~/.zshrc
fish
не користувався рибкою до цього часу, але спробую, тож чому не налаштувати одразу гарненьке запрошення? два рядки до файлу ~/.config/fish/config.fish
:
if status is-interactive
# Launch powerline for fish
powerline-daemon -q
set fish_function_path $fish_function_path "/usr/share/powerline/bindings/fish"
powerline-setup
end
vim
це ще не все: від початку, powerline задумано як покращувач статусного рядка vim, тож чому не налаштувати й це? вікі arch, як завше, дуже детальна і точна. для початку — знадобиться сам vim (з коробки в manjaro йде, здається, лише vi?) і пакунок powerline-vim:
pacman -S vim powerline-vim
## або, якщо встановлено pamac
pamac install vim powerline-vim
до файлу ~/.vimrc
також треба додати один рядочок:
set laststatus=2
готово, можна насолоджуватися?
не зовсім: кудись пропала підсвітка синтаксису. повертається двома додатковими рядками у тому ж таки ~/.vimrc
:
filetype plugin indent on
syntax on
set laststatus=2
tmux
ну, як вже гуляти, то на повну ногу — лишився tmux (для тих, хто в темі термінальних мультиплексорів); для нього знадобиться створити (якщо немає) файл ~/.tmux.conf
і додати один рядок:
source /usr/share/powerline/bindings/tmux/powerline.conf
але в налаштуваннях tmux за замовчуванням вилізе дві проблеми: втрата кольорів в консольних додатках, і базові налаштування оболонки користувача (bash у більшости випадків, я хочу поміняти на fish), лікуються двома додатковими рядками в тому ж файлі:
set -g default-terminal xterm-256color
set -g default-shell /bin/fish
налаштування
на етапі встановлення я згадав, що всі налаштування powerline (включно з кольорами й моделями) знаходяться (принаймні на arch linux і похідних) в теці /usr/lib/python3.10/site-package/powerline/config_files/
. лізти туди руками — непрофесійно, тож робимо собі копію там, куди powerline прийде шукати локальні налаштування:
mkdir -p ~/.config/powerline/
sudo cp -r /usr/lib/python3.10/site-package/powerline/config_files/* ~/.config/powerline/
sudo chown -r $USER:$USER ~/.config/powerline
основні налаштування — у файлі ~/.config/powerline/config.json
. нввіщо копіювати все, якщо можна було б забрати лише config.json, і згодом копіювати лише потрібне для модифікації кольорів та моделей? коротко: для простоти.
кольори
найпростіше, що можна налаштувати — вибрати іншу колірну палітру; в комплекті йде дві: default
та (темна) solarized
; щоби поміняти, достатньо виправити всі "colorscheme": "default"
у файлі config.json
на "colorscheme": "solarized"
(або не всі — а лише для консолі (shell), чи для редактора (vim) тощо.
не забути перезавантажити демона, щоби застосувати зміни:
powerline-daemon --replace
насправді ж реалізація палітри solarized для powerline мені категорично не подобається: надто лізе в очі яскравим тлом і часто недостатньо контрастна для читання. default
трохи краща, але і в ній хочеться щось поміняти. можливо, проблема ще й у тому, що кольори powerline накладаються на модифіковану палітру maia, що її використовує konsole.
мабуть, треба зробити свою колірну схему на основі materia dark (стандартна для нового manjaro), але то розвага на інший день.
модель
модель (theme) визначає компонування запрошення: які елементи відображати, в якому порядку, і якими символами їх розділяти. про символи: стандартно, powerline використовує додаткові символи, яких немає в таблиці unicode, і тому вимагає модифікованих шрифтів. це не завжди зручно: в linux шрифти встановлюються разом із основним пакунком, але у wsl2 буде проблема; її можна вирішити, завантаживши модифікований шрифт безпосередньо для windows, або ж змінити модель з powerline
на unicode
або навіть àscii
, додавши один рядок "default_top_theme"
до файлу ~/.config/powerline/config.json
:
"common": {
"term_truecolor": false,
"default_top_theme": "unicode"
},
знову доведеться перезапустити демона:
powerline-daemon --replace
остання невеличка зміна — хочу прибрати непотрібні uptime, навантаження процесора, дату й час зі статусного рядка tmux, щоби звільнити місце для термінальних вкладок; для цього досить видалити декілька рядків з моделі tmux, у файлі ~/.config/powerline/themes/tmux/default.json
.
на цім, мабуть, все. коментуйте.