Минималистичная конфигурация терминала с возможностью тонкой настройки



Книга Минималистичная конфигурация терминала с возможностью тонкой настройки

Мой терминал настроен очень минималистично. Это просто черный ящик, который сообщает мне полезную информацию. Основное удобство в том, что каждый его аспект имеет собственный файл конфигурации  —  даже сам эмулятор терминала. 


В этой статье я опишу настройку, которую оценят минималисты.


Содержание 


· Настройка оболочки: zsh
· Настройка терминала: alacritty
· Настройка мультиплексора: tmux
· Заключение


1. Настройка оболочки: zsh


Не так давно я перешел на zsh только потому, что теперь он используется в macOS по умолчанию. Мне очень понравилось то, насколько легко сделать красивое и информативное диалоговое окно с помощью Oh My Zsh.


Установка Oh My Zsh


Для установки вставьте в терминал следующий код:


sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

По завершению будет создан файл конфигурации ~/.zshrc.


В этом файле есть множество настроек, которые можно активировать и отключать. Их мы здесь рассматривать не станем, так как они выходят за тему статьи.


В своем файле я сделал следующие изменения:


# Путь к месту установки oh-my-zsh
export ZSH="/Users/gloege/.oh-my-zsh"

# Тема zsh: https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
ZSH_THEME="agnoster"

# Плагины omz
plugins=(web-search transfer osx tmux git)

# Открыть tmux при запуске, необходим плагин tmux
ZSH_TMUX_AUTOSTART=true

# oh-my-zsh.sh берет все файлы *.zsh из $ZSH_CUSTOM/custom
# - Я включаю: aliases.zsh, functions.zsh, prompt.zsh, ect.
source $ZSH/oh-my-zsh.sh

# prompt.zsh аугментирует диалоговое окно agnoster, удаляет #[email protected]
# должен запускаться в конце .zshrc
. ${ZSH_CUSTOM}/prompt.zsh

Эта конфигурация вносит следующие изменения.


  • Устанавливает ZSH_THEME как agnoster.
  • Загружает плагины, включенные с Oh My Zsh.
  • Автоматически запускает tmux.

Каждое из этих изменений описывается ниже.


Тема Oh My Zsh


Смена ZSH_THEME приведет к полному изменению внешнего вида диалогового окна. На выбор представлено огромное число разных тем. Можете посмотреть их на GitHub.


Я использую тему agnoster с удаленным [email protected] Для этого приходится изменить prompt_context():


# Удаляет [email protected] из диалогового окна agnoster
prompt_context() {
if [[ "$USER" != "$DEFAULT_USER" || -n "$SSH_CLIENT" ]]; then
prompt_segment black default "%(!.%{%F{yellow}%}.)"
fi
}

Чтобы сработало, этот код должен находиться в конце .zshrc.


Плагины Zsh


Oh My Zsh содержит кучу всяких плагинов для расширения терминала. Одна из их функций  —  предоставление полезных сокращений для часто используемых команд. Не все плагины загружаются по умолчанию, так как не все требуются для каждой конфигурации, а загрузка их чрезмерного количества просто излишне замедлит запуск.


Лично я загружаю следующие.


  • git → предоставляет полезные сокращения команд git.
  • transfer → упрощает использование transfer.sh.
  • tmux → позволяет tmux автоматически запускаться при открытии терминала.
  • osx → удобные сокращения команд.
  • web-search → позволяет использовать предпочтительный поисковый движок из командной строки, открывая его в браузере. Я им пользуюсь нечасто.

Автозапуск tmux


Плагин tmux предоставляет способ автозапуска tmux через добавление в .zshrc следующей строки:


# Открывает tmux при запуске, требует плагин tmux
ZSH_TMUX_AUTOSTART=true

2. Настройка терминала: alacritty


Alacritty  —  это эмулятор терминала с GPU-ускорением, который отличается высокой скоростью, портативностью и удобством настройки. На момент написания alacritty находится на бета-стадии. Хотя за время использования я особых багов в нем не встречал.


Установка


На macOS можете установить его с помощью homebrew.


brew install alacritty

Здесь находятся инструкции для других операционных систем.


Developer not verified


Если возникает сообщение об ошибке “Developer not verified”, перейдите в /Applications, кликните правой кнопкой alacritty.app, а затем левой по open.


Файл конфигурации


Alacritty допускает очень широкую настройку, чем выгодно отличается от популярного эмулятора терминала iTerm2.


По умолчанию alacritty не создает этот файл. В macOS программа сначала ищет файл конфигурации в ~/.config/alacritty/alacritty.yml.


За вас она этот файл не создает, но ищет таковой по следующим путям:


  1. $XDG_CONFIG_HOME/alacritty/alacritty.yml;
  2. $XDG_CONFIG_HOME/alacritty.yml;
  3. $HOME/.config/alacritty/alacritty.yml;
  4. $HOME/.alacritty.yml.

В Windows файл конфигурации должен располагаться в:


%APPDATA%\alacritty\alacritty.yml

Вот мой файл alacritty.yml с комментариями:


#
# Изменен 2021-06-28
#

env:
# Это значение используется для установки переменной среды `$TERM`
# для каждого экземпляра Alacritty. Если он отсутствует,
# alacritty проверяет локальную базу данных terminfo и использует
# `alacritty` в случае его доступности, в противном случае #задействуется `xterm- 256color`.
TERM: xterm-256color

window:
# Равномерно распределяет дополнительные отступы вокруг #содержимого терминала.
padding:
x: 10
y: 10
# Удаляет кнопки
decorations: none
# Открывает в полный экран
startup_mode: SimpleFullscreen
# Dimensions, если не SimpleFullscreen
dimensions:
columns: 140
lines: 38

# Делает фон немного прозрачным
background_opacity: 0.92

cursor:
# Block Underline или Beam
style: Block

font:
normal:
# При использовании темы zsh с powerline должен быть установлен #шрифт powerline
family: Source Code Pro for Powerline
# Размер шрифта
size: 17

# Улучшенная отрисовка шрифта для mac
use_thin_strokes: true

# Цвета (Hyper)
colors:
# Цвета по умолчанию
primary:
background: '#000000'
foreground: '#ffffff'
cursor:
text: '#F81CE5'
cursor: '#ffffff'

# Нормальные цвета
normal:
black: '#000000'
red: '#fe0100'
green: '#00a600'
yellow: '#feff00'
blue: '#0066ff'
magenta: '#cc00ff'
cyan: '#00ffff'
white: '#d0d0d0'

# Яркие цвета
bright:
black: '#808080'
red: '#fe0100'
green: '#00d900'
yellow: '#feff00'
blue: '#0066ff'
magenta: '#cc00ff'
cyan: '#00ffff'
white: '#FFFFFF'

selection:
# Эта строка содержит все символы, используемые в качестве #разделителей для "semantic words" в Alacritty.
semantic_escape_chars: ",│`|:\"' ()[]{}<>\t"

# Когда true, выбранный текст будет скопирован в основной буфер #обмена
save_to_clipboard: true

# Login shell с аргументами
shell:
program: /bin/zsh
args:
- --login

# Директория запуска, unset или None для домашней директории
working_directory: None

Здесь мы затронули самую малость из всех доступных настроек alacritty. Со всеми ними можно ознакомиться на GitHub.


Из основного я меняю цветовую схему и шрифт.


Изменение цветовой схемы


Список доступных цветовых схем можно найти на GitHub. Просто измените часть конфигурации на предпочтительные настройки.


Изменение семейства шрифтов


Если вы используете тему zsh с powerlines, например agnoster, то вам потребуется шрифт powerline. Я предпочитаю Source Code Pro for Powerline.


Шрифты Powerline


Для установки следуйте инструкциям с GitHub.


3. Настройка мультиплексора: tmux


Мультиплексор важен при использовании alacritty, поскольку терминал не допускает применения вкладок, и вы даже не сможете открыть другое окно, не добавив привязку клавиши в файле конфигурации. Это вынуждает меня работать с множеством открытых окон, не имея панели вкладок, напоминающей браузер.


В случае с мультиплексорами есть два варианта: screen и tmux. Я склоняюсь к последнему. Однако некоторые из его начальных настроек, на мой взгляд, дурацкие.


Файл конфигурации tmux должен находиться здесь: ~/.tmux.conf.


Можете создать пустой файл, если такой еще не существует.


​​touch​​ ​​~/.tmux.conf

Вот моя конфигурация .tmux.conf с комментариями:


#
# На основе файлов конфигурации Хэма Вокке и milosz:
# https://www.hamvocke.com/blog/a-guide-to-customizing-your-tmux-conf/
# https://sleeplessbeastie.eu/2016/08/22/how-to-create-basic-tmux-setup/
#
# Последнее обновление: 2021-06-28
#

# Переназначение привязки клавиш с 'Ctrl-b' на 'Ctrl-a'
unbind C-b
set-option -g prefix C-a
bind-key C-a send-prefix

# Установка типа терминала по умолчанию
set -g default-terminal "screen-256color"

# Извлечение конфигурации через C-a + r
bind-key r source-file ~/.tmux.conf \; display-message "~/.tmux.conf reloaded"

# Открыть конфигурацию через C-a затем shift+M
bind-key M split-window -h "vim ~/.tmux.conf"

# Активация режима с мышью (>tmux 2.1)
# кликабельные окна, панели, при этом размер панелей можно менять
set -g mouse on

# Начало отсчета окон и панелей с 1
set -g base-index 1
set-window-option -g pane-base-index 1

# Не переименовывать окна автоматически
set-option -g allow-rename off

# Разделить панели вертикально с помощью |
# Разделить панели горизонтально с помощью -
bind | split-window -h
bind - split-window -v
unbind '"'
unbind %

# Выбор панелей в стиле Vim
bind h select-pane -L
bind l select-pane -R
bind k select-pane -U
bind j select-pane -D

# Переключение панелей с помощью Alt-стрелка без приставки
# M - это мета-клавиша, в macOS обычно alt
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D

# Shift стрелка для смены окон
bind -n S-Left previous-window
bind -n S-Right next-window

# Отключить все звуки колокольчика
set -g visual-activity off
set -g visual-bell off
set -g visual-silence off
setw -g monitor-activity off
set -g bell-action none

# Панель состояния
# цвета xterm : https://jonasjacek.github.io/colors/
# формат strftime : https://devhints.io/datetime
set -g status-position bottom
set -g status-style 'bg=colour235 fg=colour255'
set -g status-left " "
set -g status-right "#[bg=colour235,fg=colour255] %a %b %e #[bg=colour235,fg=colour255] %H:%M:%S "
set -g status-right-length 50
set -g status-left-length 50

# Цвета панелей
set -g pane-border-style 'bg=default fg=colour19'
set -g pane-active-border-style 'bg=default fg=colour172'

# Стилизация сообщений
set -g message-style 'fg=colour255 bg=colour62'

tmux допускает очень много настроек.


Caps lock → control


В tmux клавишу Control мы используем часто. Она расположена в неудобном месте, поэтому я переназначил ее на Caps Lock. В MacOS это делается так.


  1. Открыть “System Preferences”.
  2. Кликнуть “Keyboard”.
  3. Кликнуть “Modifier Keys…” в правом нижнем углу.
  4. С помощью выпадающего окна переназначить “caps lock” на “control”.

Заключение


Эта конфигурация:


  • минималистична;
  • эстетически привлекательна;
  • информативна, так как предоставляет всю необходимую информацию о состоянии;
  • поддается настройке через файлы конфигурации.

Надеюсь, что на основе этого вы сможете самостоятельно освоить простую и минималистичную настройку терминала.


1004   0  

Comments

    Ничего не найдено.