# Установка Установить оболочку [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 autojump command-not-found grc grepcidr kitty-terminfo wmctrl xdotool ``` Установить дополнительные программы по [инструкции](https://git.246060.ru/f1x1t/eget-config/). Клонировать репозиторий с настройками 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 ```