zsh/README.md

193 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Установка
Установить оболочку [Zsh](https://www.zsh.org) и git:
```sh
sudo apt-get install git zsh
```
На системах, где нет пакета Zsh или есть только старая версия, можно установить статически
скомпилированную версию программы командой:
```sh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/romkatv/zsh-bin/master/install)"
```
Установить рекомендуемые пакеты:
```sh
sudo apt-get install command-not-found grc grepcidr kitty-terminfo wmctrl xdotool
```
Установить дополнительные программы по [инструкции](https://git.246060.ru/config/eget/).
Клонировать репозиторий с настройками Zsh в каталог `~/.config/zsh`:
```sh
git clone https://git.246060.ru/f1x1t/zshrc ~/.config/zsh
```
# Базовая настройка
Создать файл `$HOME/.zshenv` со следующим содержимым:
```sh
# Загрузка конфигурации из каталога $ZDOTDIR
export ZDOTDIR=$HOME/.config/zsh
source $ZDOTDIR/.zshenv
```
Установить интерпретатор Zsh по умолчанию для пользователя `username`.
```sh
sudo usermod -s /usr/bin/zsh username
```
# Установка шрифтов
```sh
mkdir -p ~/.local/share/fonts
curl -fSL -o "$HOME/.local/share/fonts/Anonymice Nerd Font Complete.ttf" https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/AnonymousPro/complete/Anonymice%20Nerd%20Font%20Complete.ttf
curl -fSL -o "$HOME/.local/share/fonts/Anonymice Nerd Font Complete Mono.ttf" https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/AnonymousPro/complete/Anonymice%20Nerd%20Font%20Complete%20Mono.ttf
```
# Настройка агентов
Существует несколько вариантов настройки агентов для SSH и/или GPG.
Для любого из вариантов следует скопировать шаблонный файл для настроек:
```sh
cp ~/.config/zsh/55-agents.zsh ~/.config/zsh/55-agents.user.zsh
```
## Настройка SSH агента
Установить необходимые пакеты:
```sh
sudo apt install openssh-client
```
Раскомментировать в файле ` ~/.config/zsh/55-agents.user.zsh` строки:
```sh
# if command -v ssh-agent >/dev/null 2>&1; then
# zstyle :omz:plugins:ssh-agent agent-forwarding on
# zstyle :omz:plugins:ssh-agent identities id_rsa
# zstyle :omz:plugins:ssh-agent lifetime 10h
# zinit snippet OMZP::ssh-agent
# fi
```
Добавить в конец файла `~/.ssh/config` правило для разрешения агенту сохранять ключи:
```text
Host *
AddKeysToAgent yes
```
## Настройка GPG агента
Установить необходимые пакеты:
```sh
sudo apt install openssh-client gpg-agent gpgconf
```
Раскомментировать в файле ` ~/.config/zsh/55-agents.user.zsh` строки:
```sh
# if command -v gpg-agent >/dev/null 2>&1; then
# zinit snippet OMZP::gpg-agent
# if command -v gpg-conf >/dev/null 2>&1; then
# gpgconf --create-socketdir
# fi
# fi
```
Пример файла настройки GPG агента `~/.config/gnupg/gpg-agent.conf`:
```text
default-cache-ttl 36000
max-cache-ttl 999999
enable-putty-support
default-cache-ttl-ssh 36000
allow-loopback-pinentry
pinentry-program /usr/bin/pinentry-qt
# enable-ssh-support
```
Чтобы включить в GPG агенте поддержку SSH, нужно раскомментировать
последнюю строку и отредактировать файл `~/.ssh/config`, как это описано
в разделе настройки SSH.
## Настройка Keychain
Программа Keychain позволит использовать агенты GPG и SSH между входами в систему.
Для её работы необходимо отключить в системе все автоматические запуски агентов,
например в файле `/etc/X11/Xsession.options` удалить строку:
```sh
use-ssh-agent
```
Установить необходимые пакеты:
```sh
sudo apt install keychain openssh-client gpg-agent gpgconf
```
Раскомментировать в файле ` ~/.config/zsh/55-agents.user.zsh` строки:
```sh
# if command -v keychain >/dev/null 2>&1; then
# zstyle :omz:plugins:keychain identities id_rsa 01234567
# zstyle :omz:plugins:keychain options --quiet --inherit any-once --noask --nocolor --absolute --dir ~/.cache/keychain
# zstyle :omz:plugins:keychain agents gpg,ssh
# zinit snippet OMZP::keychain
# fi
```
Отредактировать файлы настроек для агента GPG и SSH, как это описано в разделах выше.
## Инициализация
После редактирования файлов настройки запустить `zsh`. Автоматически будет загружен
менеджер [zinit](https://github.com/zdharma-continuum/zinit) и необходимые плагины.
## Обновление
Обновление `zinit` и плагинов:
```sh
zu
````
## Устранение проблем
Для решения некоторых проблем необходимо загрузить файл с дополнительными
командами в терминале:
```sh
source $HOME/.config/zsh/fixes.zsh
```
Для обеспечения поддержки терминала `kitty` на системах, где недоступно
его описание, можно выполнить команду:
```sh
fix-kitty-terminal-support
```
Для исправления работы файлового менеджера Midnight Commander в терминале
`kitty`, можно выполнить команду:
```sh
fix-mc-kitty-support -f
```