Compare commits

..

90 Commits

Author SHA1 Message Date
eea38195a1 Плагин https://github.com/unixorn/git-extra-commands 2025-06-28 09:15:11 +03:00
c7bb09d5bc zinit 3.14.0 2025-04-17 13:44:31 +03:00
0ab8f29d9e Версия fzf 2025-02-06 10:12:43 +03:00
ffb71f5600 Адрес загрузки плагинов для fzf 2025-02-06 10:10:38 +03:00
ee02aea5a7 Номер версии fzf 2025-02-06 10:07:57 +03:00
1df17fc702 Обработка номера версии fzf 2025-02-06 10:05:12 +03:00
62670c583c Загрузка плагинов для установленной версии fzf 2025-02-06 09:56:51 +03:00
faa5c5a550 fzf 2024-07-25 08:44:54 +03:00
4d8052da4b Плагин для редактирования истории команд 2024-07-04 11:53:35 +03:00
bb4f1bbb53 Правка работы с fzf 2024-07-04 10:36:03 +03:00
44111962f2 zinit 3.13.1 2024-01-29 15:15:38 +03:00
9c38804a6a zinit 3.12.1 2023-11-20 16:02:19 +03:00
6562cc7774 zinit 3.12.0 2023-09-08 06:05:48 +03:00
d8eb4a6049 Установка шрифто 2023-06-07 17:43:34 +03:00
0246176d38 zinit 3.11.0 2023-06-07 16:46:04 +03:00
6d35685e33 Восстановлен файл 2023-05-31 19:32:58 +03:00
312733c575 Merge branch 'master' of git.246060.ru:config/zsh 2023-05-31 19:30:41 +03:00
a7e2a48581 Обновление $ZDOTDIR 2023-05-12 23:58:28 +03:00
442480e151 При наличии gdu запускать вместо ncdu 2023-05-12 23:43:28 +03:00
b25739c78b Установка пакета со шрифтом Iosevka Prog Nerd 2023-05-08 11:34:57 +03:00
88efc82376 ycal 2023-05-06 19:15:33 +03:00
9e58e8e04f При наличии bat использовать его в качестве пейджера 2023-04-28 14:25:46 +03:00
c0c1920574 Замена wget на curl 2023-04-17 13:17:02 +03:00
842b64bfe1 Исправлено обновление конфигурации 2023-04-17 08:07:42 +03:00
484a4b943f Установка curl 2023-04-16 23:11:07 +03:00
a288ff89ed Убран алиас на dotdrop 2023-04-16 22:12:04 +03:00
48902750b9 Путь к репозиторию 2023-04-16 22:11:23 +03:00
ce3d65d15b Скрипт для быстрой установки 2023-04-16 22:02:09 +03:00
ab88a647c0 Использование определённой версии zinit 2023-04-16 21:47:11 +03:00
0d440310bd OMZL::functions 2023-04-05 21:39:35 +03:00
566cca7844 Поддержка xterm 2022-12-27 14:30:50 +03:00
188e40834e Возможность пользовательской настройки p10k 2022-12-27 14:21:01 +03:00
3819c3ee74 Виджет для завершения процессов 2022-12-23 16:44:39 +03:00
8364968e2f Использование fd для поиска файлов 2022-12-23 16:44:02 +03:00
b1ab03e165 Отключены плагины, приводящие к нестабильной работе 2022-12-23 15:11:23 +03:00
020da06b8a Рефакторинг 2022-12-23 11:39:49 +03:00
01f900a450 Отключен виджет (не работает в Orel) 2022-12-23 09:58:40 +03:00
dd91f10bb4 Запуск виджетов, если командная строка пуста 2022-12-22 21:58:01 +03:00
0943137da8 Правка параметров для агентов 2022-12-22 21:56:13 +03:00
5e593ade5e Быстрый переход к проектам 2022-12-22 21:55:30 +03:00
2b8ea8a194 zsh-navigation-tools 2022-12-22 21:49:25 +03:00
edf4ef872c Подбор запуска history-search-multi-word 2022-12-21 14:03:17 +03:00
9730fc1f5c Подбор запуска history-search-multi-word 2022-12-21 14:01:45 +03:00
9aa3dec349 Подбор запуска history-search-multi-word 2022-12-21 13:58:17 +03:00
834a086fbc Другой вариант запуска history-search-multi-word 2022-12-21 13:46:19 +03:00
c7b2bbb92f Проба оптимизации автодополнения 2022-12-21 13:40:59 +03:00
a545d3be52 Пример использования keychain только для ssh-agent 2022-12-21 10:50:42 +03:00
9dc78aa73d Проверка наличия программ 2022-12-21 10:25:12 +03:00
ebbc50dc4c Переменная SHORT_HOST 2022-12-21 10:08:09 +03:00
75c47072f9 Условия для загрузки плагинов 2022-12-21 09:42:47 +03:00
41cc096839 Проверка возможности работы плагинов 2022-12-20 18:05:16 +03:00
33eb5a63e1 Исправлена загрузка шрифтов 2022-12-20 16:32:36 +03:00
505bccc687 Убран автоматический запуск gpg-agent 2022-12-20 15:12:24 +03:00
8321fb3a86 Документация 2022-12-20 13:10:53 +03:00
1be479ca64 Команда для git 2022-12-20 13:01:36 +03:00
43a6deb60c Подключена библиотека git 2022-12-20 11:29:43 +03:00
3df25cc280 Псевдонимы 2022-12-19 19:10:18 +03:00
bc176b9f3a Подавление вывода при загрузке 2022-12-19 16:49:42 +03:00
d7f8f98895 Правка пути 2022-12-19 16:09:18 +03:00
addc2bbc65 Установка шрифтов 2022-12-19 16:05:31 +03:00
8d6f4d0a0c Использование Eget 2022-12-19 11:58:27 +03:00
345d23e0dc Установка программ выполняется с помощью zyedidia/eget 2022-12-19 11:22:18 +03:00
a20d17eb8b Клавиша для запуска navi 2022-12-19 06:47:20 +03:00
df7bc41b32 Правка синтаксиса 2022-12-19 06:46:56 +03:00
e09e731101 Правка замечаний shellcheck 2022-12-18 18:58:00 +03:00
a8f767c95d Мелкие правки 2022-12-18 17:39:40 +03:00
0d1192758c Git Extras 2022-12-18 12:37:32 +03:00
311c596fca Navi 2022-12-18 12:17:48 +03:00
193684d640 Правка для работы MC в сессии SSH 2022-12-18 12:02:02 +03:00
fb5782101b Оптимизация 2022-12-18 11:51:02 +03:00
5773b855f3 Настройка дополнения 2022-12-18 05:13:48 +03:00
19280ec6fc Удаление файлов 2022-12-17 19:30:17 +03:00
6b44017c88 Переход на использование zinit 2022-12-17 19:17:36 +03:00
723cf0b917 update 2022-10-14 19:51:41 +03:00
4514bed79d update 2022-10-14 19:50:16 +03:00
fc40d816f9 Убрана лишняя печать 2022-09-13 11:53:06 +03:00
785476f0b2 Файл с функциями, выполняющими правки настроек сторонних программ 2022-09-13 11:49:56 +03:00
b61cbee31d Документация 2022-09-13 11:17:20 +03:00
bb3ea52f23 Синтаксическая ошибка 2022-09-13 11:16:09 +03:00
3877f9aacc Чистка 2022-09-13 11:14:58 +03:00
120501c27a lazygit 2022-09-13 11:02:08 +03:00
b40c45ed19 Обновление документации 2022-09-08 12:10:01 +03:00
eeaa1d8b55 Дополнительные команды 2022-09-08 12:06:19 +03:00
d0292e504b Отключен плагин подсветки синтаксиса 2022-09-08 12:04:13 +03:00
3239797775 Использование fzf из устанавливаемого плагина 2022-09-08 12:02:31 +03:00
16c0331040 Уменьшен размер истории ввода команд 2022-09-08 12:02:01 +03:00
e6831d7126 Отказ от автоматической настройки для терминала kitty 2022-09-08 12:00:37 +03:00
227ba485f2 Обновление поддержки kitty 2022-07-05 10:54:44 +03:00
bf2bee47e4 Чтение настроек zsh после обновления 2022-07-04 20:49:47 +03:00
a091c15045 Правила для уведомлений 2022-06-22 15:45:57 +03:00
28 changed files with 2513 additions and 523 deletions

1
.gitignore vendored
View File

@ -1,6 +1,7 @@
*.post.zsh *.post.zsh
*.pre.zsh *.pre.zsh
*.user.zsh *.user.zsh
.zshenv.user
.zcalc_history .zcalc_history
.zcompdump* .zcompdump*
*.zwc *.zwc

1652
.p10k.8colors.zsh Normal file

File diff suppressed because it is too large Load Diff

368
.p10k.zsh

File diff suppressed because it is too large Load Diff

73
.zshenv
View File

@ -1,11 +1,82 @@
# shellcheck shell=bash
# vim: ft=sh
# Запрет чтения настроек из системного каталога /etc # Запрет чтения настроек из системного каталога /etc
unsetopt GLOBAL_RCS unsetopt GLOBAL_RCS
# Базовые каталоги # PATH {{{
# Ruby
if command -v ruby >/dev/null && command -v gem >/dev/null; then
path=("$(ruby -r rubygems -e 'puts Gem.user_dir')/bin" $path)
fi
# Поиск в домашнем каталоге
path=("$HOME/bin" "$HOME/.local/bin" $path)
# Удалить дубликаты в массиве
typeset -aU path
# }}}
# Базовые каталоги {{{
export XDG_CONFIG_HOME="$HOME/.config" export XDG_CONFIG_HOME="$HOME/.config"
export XDG_CACHE_HOME="$HOME/.cache" export XDG_CACHE_HOME="$HOME/.cache"
export XDG_DATA_HOME="$HOME/.local/share" export XDG_DATA_HOME="$HOME/.local/share"
export XDG_STATE_HOME="$HOME/.local/state"
# }}}
export ZSH_CACHE_DIR="$XDG_CACHE_HOME/zsh" export ZSH_CACHE_DIR="$XDG_CACHE_HOME/zsh"
export ZSH_COMPDUMP="$ZSH_CACHE_DIR/zcompdump-${HOST/.*/}-$ZSH_VERSION" export ZSH_COMPDUMP="$ZSH_CACHE_DIR/zcompdump-${HOST/.*/}-$ZSH_VERSION"
typeset -g POWERLEVEL9K_INSTANT_PROMPT=off
# Короткое имя компьютера, обязательно нужно для ssh-agent.
# Часто используется в OhMyZsh.
export SHORT_HOST="${SHORT_HOST:-${(%):-%m}}"
# Отключаем некоторые плагины, если запуск в качестве подоболочки mc
# Bug: https://midnight-commander.org/ticket/4253
[ "$(ps -p $PPID -o cmd=)" = "mc" ] && ZSH_MC_SUBSHELL=1
# GnuPG
export GNUPGHOME="$XDG_CONFIG_HOME/gnupg"
# askpass # {{{
if [[ -n ${DISPLAY+set} ]]; then
if command -v /usr/lib/openssh/gnome-ssh-askpass >/dev/null 2>&1; then
# Gnome
export SSH_ASKPASS=/usr/lib/openssh/gnome-ssh-askpass
elif command -v /usr/bin/lxqt-openssh-askpass >/dev/null 2>&1; then
# LxQt
export SSH_ASKPASS=/usr/bin/lxqt-openssh-askpass
elif command -v /usr/bin/ssh-askpass >/dev/null 2>&1; then
# X11
export SSH_ASKPASS=/usr/bin/ssh-askpass
fi
fi
# }}}
if command -v bat >/dev/null; then
export PAGER=bat
export MANPAGER="sh -c 'col -bx | bat -l man -p'"
fi
# Uncrustify
export UNCRUSTIFY_CONFIG="${XDG_CONFIG_HOME}/uncrustify/uncrustify.cfg"
[ ! -r "${UNCRUSTIFY_CONFIG}" ] && unset UNCRUSTIFY_CONFIG
# Intel OneAPI #{{{
if [[ -n ${ENABLE_INTEL_STUDIO+set} ]]; then
#export COMPILERVARS_ARCHITECTURE=intel64
#export COMPILERVARS_PLATFORM=linux
INTEL_VARS=( /opt/intel/oneapi/advisor/latest/advixe-vars.sh
/opt/intel/oneapi/compiler/latest/env/vars.sh
/opt/intel/oneapi/vtune/latest/vtune-vars.sh )
for f in "${INTEL_VARS[@]}"; do
if [ -r "$f" ]; then source "$f" >/dev/null; fi
done
fi
# }}}
[ -r "$ZDOTDIR/.zshenv.user" ] && source "$ZDOTDIR/.zshenv.user"

33
.zshrc
View File

@ -1,30 +1,31 @@
# shellcheck shell=bash
# vim: ft=sh
# Profiling start # Profiling start
# zmodload zsh/zprof # zmodload zsh/zprof
for S in \ for S in \
05-start \ 05-start \
15-env \ 15-options \
25-history \ 25-history \
35-options \ 42-zinit \
42-zcomet \ 45-plugins \
45-prompt \
48-plugins \
55-agents \ 55-agents \
65-scripts \ 62-scripts \
75-aliases \ 68-aliases \
85-completion \ 72-widgets \
78-keybindings \
82-completion \
88-prompt \
95-finish 95-finish
do do
N="${S//[0-9\-]/}" N="${S//[0-9\-]/}"
[ -e "$ZDOTDIR/$S.pre.zsh" ] && source "$ZDOTDIR/$S.pre.zsh" if [[ -r "$ZDOTDIR/$S.pre.zsh" ]]; then source "$ZDOTDIR/$S.pre.zsh"; fi
[ -e "$ZDOTDIR/$S.zsh" ] && source "$ZDOTDIR/$S.zsh" if [[ -r "$ZDOTDIR/$S.zsh" ]]; then source "$ZDOTDIR/$S.zsh"; fi
[ -e "$ZDOTDIR/$S.user.zsh" ] && source "$ZDOTDIR/$S.user.zsh" if [[ -r "$ZDOTDIR/$S.user.zsh" ]]; then source "$ZDOTDIR/$S.user.zsh"; fi
[ -e "$ZDOTDIR/$N.user.zsh" ] && source "$ZDOTDIR/$N.user.zsh" if [[ -r "$ZDOTDIR/$N.user.zsh" ]]; then source "$ZDOTDIR/$N.user.zsh"; fi
[ -e "$ZDOTDIR/$S.post.zsh" ] && source "$ZDOTDIR/$S.post.zsh" if [[ -r "$ZDOTDIR/$S.post.zsh" ]]; then source "$ZDOTDIR/$S.post.zsh"; fi
done done
# To customize prompt, run `p10k configure` or edit ~/.config/zsh/.p10k.zsh.
[[ ! -f "${ZDOTDIR}/.p10k.zsh" ]] || source "${ZDOTDIR}/.p10k.zsh"
# zprof # zprof

View File

@ -1 +1,12 @@
# shellcheck shell=bash
# vim: ft=sh
# Enable Powerlevel10k instant prompt.
# Should stay close to the top of ~/.config/zsh/.zshrc.
# Initialization code that may require console input
# (password prompts, [y/n] confirmations, etc.)
# must go above this block; everything else may go below.
if [ -r "${XDG_CACHE_HOME}/p10k-instant-prompt-${(%):-%n}.zsh" ]; then
source "${XDG_CACHE_HOME}/p10k-instant-prompt-${(%):-%n}.zsh"
fi

View File

@ -1,55 +0,0 @@
# PATH
if [[ -d "$HOME/.gem/ruby" ]]; then
PATH="$(find $HOME/.gem/ruby -maxdepth 2 -name bin -type d | sort -r | tr '\n' ':')$PATH"
fi
for P in \
"$HOME/bin" \
"$HOME/.local/bin"
do
if [[ -d "${P}" ]]; then
export PATH="${P}:${PATH}"
fi
done
# Отключаем некоторые плагины, если запуск в качестве подоболочки mc
# Bug: https://midnight-commander.org/ticket/4253
#if ps $PPID | grep mc; then
# export ZSH_MC_WORKAROUND=1
#fi
# Удалить дубликаты в PATH
typeset -U PATH
export GNUPGHOME="$XDG_CONFIG_HOME/gnupg"
export SVDIR="$HOME/sv"
# ASKPASS
if [ ! -z ${DISPLAY+x} ]; then
if command -v /usr/lib/openssh/gnome-ssh-askpass 2>&1 >/dev/null; then
export SSH_ASKPASS=/usr/lib/openssh/gnome-ssh-askpass
elif command -v /usr/bin/lxqt-openssh-askpass 2>&1 >/dev/null; then
export SSH_ASKPASS=/usr/bin/lxqt-openssh-askpass
elif command -v /usr/bin/ssh-askpass 2>&1 >/dev/null; then
export SSH_ASKPASS=/usr/bin/ssh-askpass
fi
fi
# Настройка uncrustify
UNCRUSTIFY_CONFIG="${XDG_CONFIG_HOME}/uncrustify/default.cfg"
[ -e "${UNCRUSTIFY_CONFIG}" ] && export UNCRUSTIFY_CONFIG
# Настройка Intel Studio
if [ ! -z ${ENABLE_INTEL_STUDIO+x} ]; then
#export COMPILERVARS_ARCHITECTURE=intel64
#export COMPILERVARS_PLATFORM=linux
#/opt/intel/bin/iccvars.sh
INTEL_VARS=( /opt/intel/advisor/advixe-vars.sh
/opt/intel/inspector/inspxe-vars.sh
/opt/intel/vtune_profiler/vtune-vars.sh )
for f in ${INTEL_VARS[*]}; do
[ -e "$f" ] && source "$f" > /dev/null
done
fi

View File

@ -1,3 +1,6 @@
# shellcheck shell=bash
# vim: ft=sh
setopt AUTO_PUSHD # Push the current directory visited on the stack. setopt AUTO_PUSHD # Push the current directory visited on the stack.
setopt PUSHD_IGNORE_DUPS # Do not store duplicates in the stack. setopt PUSHD_IGNORE_DUPS # Do not store duplicates in the stack.
setopt PUSHD_SILENT # Do not print the directory stack after pushd or popd. setopt PUSHD_SILENT # Do not print the directory stack after pushd or popd.
@ -9,18 +12,19 @@ zmodload zsh/terminfo
autoload -Uz edit-command-line autoload -Uz edit-command-line
zle -N edit-command-line zle -N edit-command-line
#bindkey -M vicmd v edit-command-line
autoload -Uz select-word-style autoload -Uz select-word-style
select-word-style shell select-word-style shell
if is-at-least 5.1; then if [ -z ${DISABLE_MAGIC_FUNCTIONS+set} ]; then
autoload -Uz bracketed-paste-magic if is-at-least 5.1; then
zle -N bracketed-paste bracketed-paste-magic autoload -Uz bracketed-paste-magic
zle -N bracketed-paste bracketed-paste-magic
fi
autoload -Uz url-quote-magic
zle -N self-insert url-quote-magic
fi fi
autoload -Uz url-quote-magic
zle -N self-insert url-quote-magic
# Подсветка вывода основных команд # Подсветка вывода основных команд
[[ -r /etc/grc.zsh ]] && source /etc/grc.zsh if [[ -r /etc/grc.zsh ]]; then source /etc/grc.zsh; fi

View File

@ -1,6 +1,9 @@
# shellcheck shell=bash
# vim: ft=sh
HISTFILE="$ZSH_CACHE_DIR/history" HISTFILE="$ZSH_CACHE_DIR/history"
HISTSIZE=10000000 HISTSIZE=600000
SAVEHIST=10000000 SAVEHIST=500000
HISTDUP=erase HISTDUP=erase
[ ! -d "$ZSH_CACHE_DIR" ] && mkdir -p "$ZSH_CACHE_DIR" [ ! -d "$ZSH_CACHE_DIR" ] && mkdir -p "$ZSH_CACHE_DIR"

View File

@ -1,13 +0,0 @@
export ZCOMET_DIR="${ZSH_CACHE_DIR}/zcomet"
zstyle ':zcomet:*' home-dir "${ZCOMET_DIR}"
zstyle ':zcomet:*' repos-dir "${ZCOMET_DIR}/repos"
zstyle ':zcomet:*' snippets-dir "${ZCOMET_DIR}/snippets"
zstyle ':zcomet:compinit' dump-file "${ZSH_COMPDUMP}"
#
if [[ ! -f "${ZCOMET_DIR}/bin/zcomet.zsh" ]]; then
command git clone --depth=1 https://github.com/agkozak/zcomet.git "${ZCOMET_DIR}/bin"
fi
source "${ZCOMET_DIR}/bin/zcomet.zsh"

27
42-zinit.zsh Normal file
View File

@ -0,0 +1,27 @@
# shellcheck shell=bash
# vim: ft=sh
declare -A ZINIT
ZINIT[VERSION]="3.14.0"
ZINIT[HOME_DIR]="$ZSH_CACHE_DIR/zinit-${ZINIT[VERSION]}"
ZINIT[PLUGINS_DIR]="$ZSH_CACHE_DIR/plugins"
ZINIT[SNIPPETS_DIR]="$ZSH_CACHE_DIR/snippets"
ZINIT[ZCOMPDUMP_PATH]="$ZSH_CACHE_DIR/zcompdump"
ZPFX="$ZSH_CACHE_DIR/polaris"
if [ ! -d "${ZINIT[HOME_DIR]}" ]; then
curl -sL "https://github.com/zdharma-continuum/zinit/archive/refs/tags/v${ZINIT[VERSION]}.tar.gz" | tar zxf - -C "$ZSH_CACHE_DIR"
sed -i 's/.*zinit-self-update -q//' "${ZINIT[HOME_DIR]}/zinit-autoload.zsh"
zcompile "${ZINIT[HOME_DIR]}/zinit.zsh"
fi
source "${ZINIT[HOME_DIR]}/zinit.zsh"
autoload -Uz _zinit
(( ${+_comps} )) && _comps[zinit]=_zinit
# Расширение zinit для загрузки файлов
zinit light zdharma-continuum/z-a-patch-dl
# Расширение zinit для запуска программ и скриптов, расположенных вне $PATH
zinit light zdharma-continuum/z-a-bin-gem-node

103
45-plugins.zsh Normal file
View File

@ -0,0 +1,103 @@
# shellcheck shell=bash
# vim: ft=sh
zinit light willghatch/zsh-saneopt
zinit light mafredri/zsh-async
export ZSHZ_CASE=smart
export ZSHZ_DATA="${ZSH_CACHE_DIR}/z"
zinit ice lucid wait'0' depth'1'
zinit light agkozak/zsh-z
zinit snippet OMZP::pj
if [[ "$(id -u)" != "0" ]] && [[ -n "${DISPLAY+set}" ]]; then
zstyle ':notify:*' expire-time 5000
zstyle ':notify:*' command-complete-timeout 20
zstyle ':notify:*' enable-on-ssh yes
zinit light marzocchi/zsh-notify
fi
zinit snippet OMZL::functions.zsh
zinit snippet OMZL::clipboard.zsh
zinit snippet OMZL::key-bindings.zsh
zinit snippet OMZL::termsupport.zsh
zinit light marlonrichert/zsh-hist
if [ -x /usr/lib/command-not-found ]; then
zinit snippet OMZP::command-not-found
fi
zinit snippet OMZP::common-aliases
zinit snippet OMZP::debian
zinit snippet OMZP::isodate
if command -v mosh > /dev/null 2>&1; then
zinit snippet OMZP::mosh
fi
if command -v nmap > /dev/null 2>&1; then
zinit snippet OMZP::nmap
fi
if command -v pre-commit > /dev/null 2>&1; then
zinit snippet OMZP::pre-commit
fi
if command -v rsync > /dev/null 2>&1; then
zinit snippet OMZP::rsync
fi
zinit snippet OMZP::vscode
zinit snippet OMZP::web-search
if command -v git-lfs > /dev/null 2>&1; then
zinit light brymck/print-alias
fi
if command -v fzf > /dev/null 2>&1; then
FZF_DEFAULT_OPTS='--height 60% --layout=reverse --border'
if command -v fd > /dev/null 2>&1; then
FZF_DEFAULT_COMMAND="fd --type f"
FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
FZF_ALT_C_COMMAND="fd --type d"
fi
FZF_VERSION="$(fzf --version | sed -r 's/([0-9]+\.[0-9]+).*/\1/' )"
zinit ice lucid wait'0' mv"completion.zsh -> _fzf" pick"_fzf" as"completion"
if is-at-least "0.54" "$FZF_VERSION"; then
zinit snippet "https://raw.githubusercontent.com/junegunn/fzf/refs/tags/v${FZF_VERSION}.0/shell/completion.zsh"
zinit snippet "https://raw.githubusercontent.com/junegunn/fzf/refs/tags/v${FZF_VERSION}.0/shell/key-bindings.zsh"
else
zinit snippet "https://raw.githubusercontent.com/junegunn/fzf/refs/tags/${FZF_VERSION}.0/shell/completion.zsh"
zinit snippet "https://raw.githubusercontent.com/junegunn/fzf/refs/tags/${FZF_VERSION}.0/shell/key-bindings.zsh"
fi
fi
if command -v git > /dev/null 2>&1; then
GIT_AUTO_FETCH_INTERVAL=3600
zinit snippet OMZL::git.zsh
zinit snippet OMZP::git
zinit snippet OMZP::git-extras
zinit snippet OMZP::github
[ -z ${SSH_CONNECTION+set} ] && zinit snippet OMZP::git-auto-fetch
zinit light unixorn/git-extra-commands
fi
if command -v psql > /dev/null 2>&1; then
zinit snippet OMZP::postgres
fi
if command -v sudo > /dev/null 2>&1; then
zinit snippet OMZP::sudo
fi
if command -v systemctl > /dev/null 2>&1; then
zinit snippet OMZP::systemd
fi
if command -v vim > /dev/null 2>&1; then
zinit snippet OMZP::vim-interaction
fi
if command -v tmux > /dev/null 2>&1; then
zstyle ':prezto:module:tmux:auto-start' local 'no'
zstyle ':prezto:module:tmux:auto-start' remote 'no'
zstyle ':prezto:module:tmux:session' name "$(hostname)"
zinit ice pick'init.zsh'
zinit light laggardkernel/zsh-tmux
zinit light amyreese/zsh-titles
fi
if command -v kitty > /dev/null 2>&1; then
zinit light redxtech/zsh-kitty
fi

View File

@ -1,12 +0,0 @@
if is-at-least 5.3; then
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
fi
if [[ ! -f "${ZCOMET_DIR}/prompt/powerlevel10k/powerlevel10k.zsh-theme" ]]; then
command git clone --depth=1 https://github.com/romkatv/powerlevel10k.git "${ZCOMET_DIR}/prompt/powerlevel10k"
fi
source "${ZCOMET_DIR}/prompt/powerlevel10k/powerlevel10k.zsh-theme"
else
zcomet load agkozak/agkozak-zsh-prompt
fi

View File

@ -1,67 +0,0 @@
zcomet trigger zhooks agkozak/zhooks
zcomet load willghatch/zsh-saneopt
zcomet load mafredri/zsh-async
zcomet load romkatv/zsh-defer
export ZSHZ_CASE=smart
export ZSHZ_DATA="${ZSH_CACHE_DIR}/z"
zcomet load agkozak/zsh-z
if [[ "$DISPLAY" != '' ]] && command -v xdotool > /dev/null 2>&1 && command -v wmctrl > /dev/null 2>&1; then
zstyle ':notify:*' expire-time 5000
zstyle ':notify:*' command-complete-timeout 20
zstyle ':notify:*' enable-on-ssh yes
zcomet load marzocchi/zsh-notify
fi
if command -v peco > /dev/null 2>&1; then
zcomet load jimeh/zsh-peco-history
fi
zcomet load ohmyzsh lib key-bindings.zsh
zcomet load ohmyzsh plugins/autojump
zcomet load ohmyzsh plugins/command-not-found
zcomet load ohmyzsh plugins/common-aliases
zcomet load ohmyzsh plugins/debian
zcomet load ohmyzsh plugins/isodate
zcomet load ohmyzsh plugins/nmap
zcomet load ohmyzsh plugins/rsync
zcomet load ohmyzsh plugins/web-search
zcomet load brymck/print-alias
if command -v fzf > /dev/null 2>&1; then
zcomet load junegunn/fzf shell completion.zsh key-bindings.zsh
(( ${+commands[fzf]} )) || ~[fzf]/install --bin
fi
if command -v git > /dev/null 2>&1; then
GIT_AUTO_FETCH_INTERVAL=3600
zcomet load ohmyzsh plugins/git
zcomet load ohmyzsh plugins/gitfast
[ -z "$SSH_CONNECTION" ] && zcomet load ohmyzsh plugins/git-auto-fetch
zcomet load ohmyzsh plugins/git-extras
zcomet load ohmyzsh plugins/github
zcomet load paulirish/git-open
fi
if command -v psql > /dev/null 2>&1; then
zcomet load ohmyzsh plugins/postgres
fi
if command -v sudo > /dev/null 2>&1; then
zcomet load ohmyzsh plugins/sudo
fi
if command -v systemctl > /dev/null 2>&1; then
zcomet load ohmyzsh plugins/systemd
fi
if command -v vim > /dev/null 2>&1; then
zcomet load ohmyzsh plugins/vim-interaction
fi
if command -v tmux > /dev/null 2>&1; then
zstyle ':prezto:module:tmux:auto-start' local 'no'
zstyle ':prezto:module:tmux:auto-start' remote 'no'
zstyle ':prezto:module:tmux:session' name "$(hostname)"
zsh-defer zcomet load laggardkernel/zsh-tmux
zcomet snippet https://github.com/jreese/zsh-titles/blob/master/titles.plugin.zsh
fi
if command -v kitty > /dev/null 2>&1; then
zcomet load redxtech/zsh-kitty
fi

View File

@ -1,22 +1,40 @@
# shellcheck shell=bash
# vim: ft=sh
# Copy this file to 55-agents.user.zsh and modify to your needs # Copy this file to 55-agents.user.zsh and modify to your needs
## # SSH agent #{{{
# SSH agent # if command -v ssh-agent >/dev/null 2>&1; then
## # zstyle :omz:plugins:ssh-agent agent-forwarding on
# zstyle :omz:plugins:ssh-agent agent-forwarding on # zstyle :omz:plugins:ssh-agent identities id_rsa
# zstyle :omz:plugins:ssh-agent identities id_rsa # zstyle :omz:plugins:ssh-agent lifetime 10h
# zstyle :omz:plugins:ssh-agent lifetime 10h # zinit snippet OMZP::ssh-agent
# zcomet load ohmyzsh plugins/ssh-agent # fi
#}}}
## # GPG agent #{{{
# GPG agent # if command -v gpg-agent >/dev/null 2>&1; then
## # zinit snippet OMZP::gpg-agent
# zcomet load ohmyzsh plugins/gpg-agent # if command -v gpg-conf >/dev/null 2>&1; then
# gpgconf --create-socketdir
# fi
# fi
#}}}
## # Keychain #{{{
# Keychain # if command -v keychain >/dev/null 2>&1; then
## # zstyle :omz:plugins:keychain identities id_rsa 01234567
# 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 options --quiet --inherit local-once --noask --nocolor --quick # zstyle :omz:plugins:keychain agents gpg,ssh
# zstyle :omz:plugins:keychain agents gpg,ssh # zinit snippet OMZP::keychain
# zsh-defer zcomet load ohmyzsh plugins/keychain # fi
#}}}
# Keychain: вариант только для ssh-agent #{{{
# if command -v keychain >/dev/null 2>&1; then
# zstyle :omz:plugins:keychain identities id_rsa
# zstyle :omz:plugins:keychain options --quiet --inherit any-once --noask --nocolor
# zstyle :omz:plugins:keychain agents ssh
# zinit snippet OMZP::keychain
# fi
#}}}

View File

@ -1,9 +1,15 @@
# Обновление конфигурации zsh, менджера zcomet и плагинов # shellcheck shell=bash
# vim: ft=sh
# Обновление конфигурации zsh, менеджера zinit и плагинов
zu() { zu() {
git -C ~/.config/zsh pull && zcomet self-update && zcomet update git -C $ZDOTDIR rev-parse 2>/dev/null && git -C $ZDOTDIR pull
if [[ -f "${ZCOMET_DIR}/prompt/powerlevel10k/powerlevel10k.zsh-theme" ]]; then zinit update --parallel --all
command git -C "${ZCOMET_DIR}/prompt/powerlevel10k" pull exec zsh
fi }
gpsr() {
git push -u "$1" "$(git branch --show-current)"
} }
ch() { ch() {
@ -70,7 +76,7 @@ psgrep() {
# Kills any process that matches a regexp passed to it # Kills any process that matches a regexp passed to it
killit() { killit() {
ps aux | grep -v "grep" | grep "$@" | awk '{print $2}' | xargs sudo kill ps aux | grep -v grep | grep "$@" | awk '{print $2}' | xargs sudo kill
} }
# gather external ip address # gather external ip address
@ -88,19 +94,3 @@ getip() {
fi fi
} }
# Настройка mc для работы в терминале kitty
# Необходимо закрыть все экземпляры mc для текущего пользователя
# При вызове функции с параметром -f текущие настройки клавиш
# для работы mc в терминале kitty будут перезаписаны
mc-kitty-add() {
local mc_cfg="${HOME}/.config/mc/ini"
local mc_term="${ZDOTDIR}/terminfo/mc-kitty.ini"
[[ "x$1" == "x-f" ]] && sed -i '/\[terminal:xterm-kitty\]/,/^$/{d}' "${mc_cfg}"
if [ -w "${mc_cfg}" -a -r "${mc_term}" ]; then
if ! grep -qF "[terminal:xterm-kitty]" "${mc_cfg}" ; then
cat "${mc_term}" >> "${mc_cfg}"
fi
fi
}

95
68-aliases.zsh Normal file
View File

@ -0,0 +1,95 @@
# shellcheck shell=bash
# vim: ft=sh
# zmv
alias zcp='zmv -C'
alias zln='zmv -L'
# shellcheck disable=SC2154
alias path='print -l $path'
alias mkdir='mkdir -pv'
# APT
alias aptu='sudo apt-get update'
alias aptn='sudo apt-get update && sudo apt-get dist-upgrade'
alias apti='sudo apt-get install'
alias aptp='sudo apt-get purge'
alias aptr='sudo apt-get remove'
alias aptc='sudo apt-get --purge autoremove && sudo apt-get clean'
alias aptk='sudo apt-key add'
alias apts='apt-cache show'
aptf() {
[ -z "$1" ] && return 1
if [ -z "$2" ]; then
apt-cache search "$1"
else
apt-cache search "$1" | grep "$2"
fi
}
alias lzg='lazygit'
alias lzd='lazydocker'
alias tldr='tealdeer'
# Youtube
if command -v yt-dlp > /dev/null 2>&1; then
alias ydlbest="yt-dlp --merge-output-format mkv -f 'bestvideo+bestaudio'"
alias ydlaudio="yt-dlp -f bestaudio"
alias ydl="yt-dlp --merge-output-format mkv"
alias youtube-dl="yt-dlp"
fi
# feh
command -v feh > /dev/null 2>&1 && alias feh="feh --cache-size 256 --version-sort --sort filename --image-bg black"
# Замена шрифта у заголовка окна в i3 при использовании ssh или mosh
if [ -n "${DISPLAY+set}" ] ; then
if command -v i3-msg >/dev/null 2>&1 ; then
i3-mosh () {
i3-msg -q title_format "<span foreground='#AAAAFF' font-weight='bold'>%title</span>"
mosh "$@"
i3-msg -q title_format "%title"
}
alias mosh=i3-mosh
i3-ssh () {
i3-msg -q title_format "<span foreground='#AAAAFF' font-weight='bold'>%title</span>"
ssh "$@"
i3-msg -q title_format "%title"
}
alias ssh=i3-ssh
fi
fi
# git
alias gpa="git remote | xargs -L1 git push --all"
alias gu="git pull"
alias gur="git pull --recurse-submodules"
alias gsui="git submodule update --recursive --init"
alias gsur="git submodule update --recursive --init --remote"
alias ycal="ncal $(date +%Y)"
# gdu вместо ncdu
command -v gdu > /dev/null 2>&1 && alias ncdu=gdu
# Фильтры (H,T,G,L определены в common-aliases)
alias -g N1='1>/dev/null'
alias -g N2='2>/dev/null'
alias -g NN='&>/dev/null'
alias -g S='| sort'
alias -g SU='| sort -u'
alias -g S0='| sort -z'
alias -g SU0='| sort -u -z'
alias -g X='| xargs'
alias -g X0='| xargs -0'
alias -g XS='| sort | xargs'
alias -g XS0='| sort -z | xargs -0'
alias -g Z='| fzf'
# shellcheck disable=SC1073,SC1064,SC1072
audio-join() ffmpeg -i "concat:${(j:|:)@[2,-1]}" -acodec copy $1

48
72-widgets.zsh Normal file
View File

@ -0,0 +1,48 @@
# shellcheck shell=bash
# vim: ft=sh
# Navi
if command -v navi > /dev/null 2>&1; then
zinit snippet https://github.com/denisidoro/navi/blob/master/shell/navi.plugin.zsh
function magic-ctrl-g {
if ! (( $#BUFFER )) && [[ "$CONTEXT" == start ]]; then _navi_widget; fi
}
zle -N magic-ctrl-g
bindkey '^G' magic-ctrl-g
fi
# FZF #{{{
if command -v fzf > /dev/null 2>&1; then
function magic-ctrl-f {
if ! (( $#BUFFER )) && [[ "$CONTEXT" == start ]]; then fzf-file-widget; fi
}
zle -N magic-ctrl-f
bindkey '^F' magic-ctrl-f
fi
#}}}
ZSH_FZF_PASTE_KEY=enter
ZSH_FZF_EXEC_KEY=ctrl-r
fzf-kill-proc-by-list() {
local cmd=$([ "$UID" != '0' ] && echo "ps -f -u $UID" || echo 'ps -ef')
local res=$(${=cmd} \
| FZF_DEFAULT_OPTS="${FZF_DEFAULT_OPTS}
--no-sort
--reverse
--bind=\"${ZSH_FZF_PASTE_KEY}:execute@echo kill -9 \$(echo {} | awk '{print \$2}')@+abort\"
--bind=\"${ZSH_FZF_EXEC_KEY}:execute@kill -9 \$(echo {} | awk '{print \$2}')@+abort\"
" $(__fzfcmd))
if [[ -n "$res" ]]; then
LBUFFER=${LBUFFER}$res
zle redisplay
else
zle reset-prompt
fi
}
if command -v fzf > /dev/null 2>&1; then
zle -N fzf-kill-proc-by-list
bindkey '^Z' fzf-kill-proc-by-list
fi

View File

@ -1,61 +0,0 @@
# Dotdrop
alias dotdrop="$HOME/etc/dotdrop.sh" --cfg="$HOME/etc/config.yaml"
# zmv
alias zcp='zmv -C'
alias zln='zmv -L'
alias path='print -l $path'
alias mkdir='mkdir -pv'
# APT
alias aptu='sudo apt-get update'
alias aptn='sudo apt-get update && sudo apt-get dist-upgrade'
alias apti='sudo apt-get install'
alias aptp='sudo apt-get purge'
alias aptr='sudo apt-get remove'
alias aptc='sudo apt-get --purge autoremove'
alias aptk='sudo apt-key add'
alias apts='apt-cache show'
aptf() {
[ -z $1 ] && return 1
if [ -z $2 ]; then
apt-cache search $1
else
apt-cache search $1 | grep $2
fi
}
# Youtube
YDL="$HOME/bin/youtube-dl"
[ ! -x "$YDL" ] && YDL="$(which youtube-dl)"
if [ -x "$YDL" ]; then
alias ydlbest="youtube-dl --merge-output-format mkv -f 'bestvideo+bestaudio'"
alias ydl="youtube-dl --merge-output-format mkv"
fi
# feh
alias feh="feh --cache-size 256 --version-sort --sort filename --image-bg black"
# git
alias gpa="git remote | xargs -L1 git push --all"
alias gu="git pull"
alias gur="git pull --recurse-submodules"
alias gsui="git submodule update --recursive --init"
alias gsur="git submodule update --recursive --init --remote"
# Фильтры (H,T,G,L определены в common-aliases)
alias -g NN='&>/dev/null'
alias -g S='| sort'
alias -g SU='| sort -u'
alias -g S0='| sort -z'
alias -g SU0='| sort -u -z'
alias -g X='| xargs'
alias -g X0='| xargs -0'
alias -g XS='| sort | xargs'
alias -g XS0='| sort -z | xargs -0'

6
78-keybindings.zsh Normal file
View File

@ -0,0 +1,6 @@
# shellcheck shell=bash
# vim: ft=sh
# [Esc] [Esc]
bindkey '\e\e' send-break

View File

@ -1,7 +1,11 @@
# shellcheck shell=bash
# vim: ft=sh
# Speed up autocomplete, force prefix mapping # Speed up autocomplete, force prefix mapping
zstyle ':completion:*' accept-exact '*(N)' zstyle ':completion:*' accept-exact '*(N)'
zstyle ':completion:*' use-cache on zstyle ':completion:*' use-cache on
zstyle ':completion:*' cache-path $ZSH_CACHE_DIR zstyle ':completion:*' cache-path "$ZSH_CACHE_DIR"
zstyle ':completion:*' menu select
zstyle ':completion:*:processes' command 'ps -ax' zstyle ':completion:*:processes' command 'ps -ax'
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;32' zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;32'
@ -23,10 +27,27 @@ zstyle ':completion:*:(ssh|scp|rsync):*:hosts-host' ignored-patterns '*.*' loo
zstyle ':completion:*:(ssh|scp|rsync):*:hosts-domain' ignored-patterns '<->.<->.<->.<->' '^*.*' '*@*' zstyle ':completion:*:(ssh|scp|rsync):*:hosts-domain' ignored-patterns '<->.<->.<->.<->' '^*.*' '*@*'
zstyle ':completion:*:(ssh|scp|rsync):*:hosts-ipaddr' ignored-patterns '^<->.<->.<->.<->' '127.0.0.<->' zstyle ':completion:*:(ssh|scp|rsync):*:hosts-ipaddr' ignored-patterns '^<->.<->.<->.<->' '127.0.0.<->'
zcomet load zsh-users/zsh-completions # marlonrichert/zsh-autocomplete
# Вызов в этом месте и в таком порядке zinit wait'0' lucid light-mode depth'1' for \
zsh-defer zcomet load zsh-users/zsh-autosuggestions atinit"ZINIT[COMPINIT_OPTS]=-C; zicompinit; zicdreplay" \
zsh-defer zcomet load zsh-users/zsh-syntax-highlighting zdharma-continuum/fast-syntax-highlighting \
zsh-defer zcomet load zsh-users/zsh-history-substring-search blockf \
zsh-users/zsh-completions \
atload"!_zsh_autosuggest_start" \
zsh-users/zsh-autosuggestions
zinit wait'0' lucid light-mode depth'1' for \
atload"bindkey '^[[A' history-substring-search-up; \
bindkey '^[[B' history-substring-search-down" \
zsh-users/zsh-history-substring-search
#[ "$(lsb_release -c -s)" = "orel" ] && ZSH_HISTORY_SEARCH_MULTI_WORD_MODE=1
#[ -n "${SSH_CONNECTION}" ] && ZSH_HISTORY_SEARCH_MULTI_WORD_MODE=2
#zstyle ':history-search-multi-word' page-size "$((LINES/2))"
#zstyle ':plugin:history-search-multi-word' clear-on-cancel 'yes'
#zinit ice if'[[ -z ${ZSH_HISTORY_SEARCH_MULTI_WORD_MODE+set} ]]' \
# wait'0' lucid light-mode depth'1' for \
# atload"bindkey '^K' history-search-multi-word"
#zinit light zdharma-continuum/history-search-multi-word

20
88-prompt.zsh Normal file
View File

@ -0,0 +1,20 @@
# shellcheck shell=bash
# vim: ft=sh
if is-at-least 5.3; then
zinit ice depth"1" # git clone depth
zinit light romkatv/powerlevel10k
# To customize prompt, run `p10k configure` or edit ~/.config/zsh/.p10k.zsh.
if [[ -r "$ZDOTDIR/.p10k.user.zsh" ]]; then
source "$ZDOTDIR/.p10k.user.zsh"
else
if [[ "$TERM" = "xterm" ]]; then
[[ -r "$ZDOTDIR/.p10k.8colors.zsh" ]] && source "$ZDOTDIR/.p10k.8colors.zsh"
else
[[ -r "$ZDOTDIR/.p10k.zsh" ]] && source "$ZDOTDIR/.p10k.zsh"
fi
fi
else
zinit light agkozak/agkozak-zsh-prompt
fi

View File

@ -1,11 +1,3 @@
zcomet compinit # shellcheck shell=bash
# vim: ft=sh
# Обеспечение совместимости с терминалом kitty
# По возможности следует установить пакет kitty-terminfo
if ! infocmp "xterm-kitty" > /dev/null 2>&1 ; then
mkdir -p "${HOME}/.terminfo/x"
cp -ap "${ZDOTDIR}/terminfo/xterm-kitty" "${HOME}/.terminfo/x"
echo "Terminal description for xterm-kitty was installed."
echo "Close terminal and start again."
fi

165
README.md
View File

@ -1,36 +1,48 @@
# Быстрая установка
```sh
sudo apt-get install curl
sh -c "$(curl -fsSL https://git.246060.ru/config/zsh/raw/branch/master/install.sh)"
```
# Установка # Установка
Установка оболочки [`Zsh`](https://www.zsh.org): Установить оболочку [Zsh](https://www.zsh.org) и git:
```sh ```sh
sudo apt-get install git zsh sudo apt-get install git zsh curl
``` ```
Установка желательных пакетов: На системах, где нет пакета Zsh или есть только старая версия, можно установить статически
скомпилированную версию программы командой:
```sh ```sh
sudo apt-get install autojump fzf grc grepcidr keychain peco wmctrl xdotool sh -c "$(curl -fsSL https://raw.githubusercontent.com/romkatv/zsh-bin/master/install)"
``` ```
Клонирование репозитория в каталог `~/.config/zsh`: Установить рекомендуемые пакеты:
```sh ```sh
git clone https://git.246060.ru/f1x1t/zshrc ~/.config/zsh 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/config/zsh ~/.config/zsh
``` ```
# Базовая настройка # Базовая настройка
С правами суперпользователя открыть файл `/etc/zsh/zshenv` Создать файл `$HOME/.zshenv` со следующим содержимым:
в редакторе командой
```sh ```sh
sudo ${EDITOR:-mcedit} /etc/zsh/zshenv # Загрузка конфигурации из каталога $ZDOTDIR
``` export ZDOTDIR=$HOME/.config/zsh
source $ZDOTDIR/.zshenv
и добавить строку
```sh
[[ -z "$ZDOTDIR" ]] && export ZDOTDIR="$HOME/.config/zsh"
``` ```
Установить интерпретатор Zsh по умолчанию для пользователя `username`. Установить интерпретатор Zsh по умолчанию для пользователя `username`.
@ -39,6 +51,14 @@ sudo ${EDITOR:-mcedit} /etc/zsh/zshenv
sudo usermod -s /usr/bin/zsh username sudo usermod -s /usr/bin/zsh username
``` ```
# Установка шрифтов
```sh
wget -A ".deb" -c -q -np -nd -r -l 1 https://deb.246060.ru/bin/fonts/pool/main/f/fonts-iosevka-prog/
wget -A ".deb" -c -q -np -nd -r -l 1 https://deb.246060.ru/bin/fonts/pool/main/f/fonts-iosevka-prog-nerd/
sudo dpkg -i fonts*deb
```
# Настройка агентов # Настройка агентов
Существует несколько вариантов настройки агентов для SSH и/или GPG. Существует несколько вариантов настройки агентов для SSH и/или GPG.
@ -48,12 +68,50 @@ sudo usermod -s /usr/bin/zsh username
cp ~/.config/zsh/55-agents.zsh ~/.config/zsh/55-agents.user.zsh cp ~/.config/zsh/55-agents.zsh ~/.config/zsh/55-agents.user.zsh
``` ```
## Настройка GPG агента ## Настройка SSH агента
Установить необходимые пакеты:
```sh
sudo apt install openssh-client
```
Раскомментировать в файле ` ~/.config/zsh/55-agents.user.zsh` строки: Раскомментировать в файле ` ~/.config/zsh/55-agents.user.zsh` строки:
```sh ```sh
# zcomet load ohmyzsh plugins/gpg-agent # 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`: Пример файла настройки GPG агента `~/.config/gnupg/gpg-agent.conf`:
@ -69,27 +127,8 @@ pinentry-program /usr/bin/pinentry-qt
``` ```
Чтобы включить в GPG агенте поддержку SSH, нужно раскомментировать Чтобы включить в GPG агенте поддержку SSH, нужно раскомментировать
последнюю строку. последнюю строку и отредактировать файл `~/.ssh/config`, как это описано
в разделе настройки SSH.
## Настройка SSH агента
Раскомментировать в файле ` ~/.config/zsh/55-agents.user.zsh` строки:
```sh
# zstyle :omz:plugins:ssh-agent agent-forwarding on
# zstyle :omz:plugins:ssh-agent identities id_rsa
# zstyle :omz:plugins:ssh-agent lifetime 10h
# zcomet load ohmyzsh plugins/ssh-agent
```
Добавить в конец файла `~/.ssh/config` правило для разрешения агенту сохранять ключи:
```text
Host *
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
```
## Настройка Keychain ## Настройка Keychain
@ -102,13 +141,21 @@ Host *
use-ssh-agent use-ssh-agent
``` ```
Установить необходимые пакеты:
```sh
sudo apt install keychain openssh-client gpg-agent gpgconf
```
Раскомментировать в файле ` ~/.config/zsh/55-agents.user.zsh` строки: Раскомментировать в файле ` ~/.config/zsh/55-agents.user.zsh` строки:
```sh ```sh
# zstyle :omz:plugins:keychain identities id_rsa 01234567 # if command -v keychain >/dev/null 2>&1; then
# zstyle :omz:plugins:keychain options --quiet --inherit local-once --noask --nocolor --quick # zstyle :omz:plugins:keychain identities id_rsa 01234567
# zstyle :omz:plugins:keychain agents gpg,ssh # zstyle :omz:plugins:keychain options --quiet --inherit any-once --noask --nocolor --absolute --dir ~/.cache/keychain
# zcomet load ohmyzsh plugins/keychain # zstyle :omz:plugins:keychain agents gpg,ssh
# zinit snippet OMZP::keychain
# fi
``` ```
Отредактировать файлы настроек для агента GPG и SSH, как это описано в разделах выше. Отредактировать файлы настроек для агента GPG и SSH, как это описано в разделах выше.
@ -117,19 +164,43 @@ use-ssh-agent
## Инициализация ## Инициализация
После редактирования файлов настройки запустить `zsh`. Автоматически будет загружен После редактирования файлов настройки запустить `zsh`. Автоматически будет загружен
менеджер [zcomet](https://github.com/agkozak/zcomet) и необходимые плагины. менеджер [zinit](https://github.com/zdharma-continuum/zinit) и необходимые плагины.
## Обновление ## Обновление
Обновление `zcomet`: Обновление `zinit` и плагинов:
```sh ```sh
zcomet self-update zu
```` ````
Обновление плагинов: ## Устранение проблем
Для решения некоторых проблем необходимо загрузить файл с дополнительными
командами в терминале:
```sh ```sh
zcomet update source $HOME/.config/zsh/fixes.zsh
```
Если в системе установлена программа `fzf` версии ниже `0.53.0`, то может
не работать поиск по истории, файлам и автодополнение. Исправление:
```
fix-update-fzf
```
Для обеспечения поддержки терминала `kitty` на системах, где недоступно
его описание, можно выполнить команду:
```sh
fix-kitty-terminal-support
```
Для исправления работы файлового менеджера Midnight Commander в терминале
`kitty`, можно выполнить команду:
```sh
fix-mc-kitty-support -f
``` ```

32
fixes.zsh Normal file
View File

@ -0,0 +1,32 @@
#!/bin/bash
# Установка файла описания терминала kitty на системы,
# где отсутствует пакет kitty-terminfo
fix-kitty-terminal-support() {
mkdir -p $HOME/.terminfo/x
curl -fsSL https://github.com/kovidgoyal/kitty/raw/master/terminfo/x/xterm-kitty > $HOME/.terminfo/x/xterm-kitty
}
# Настройка mc для работы в терминале kitty
# Необходимо закрыть все экземпляры mc для текущего пользователя
# При вызове функции с параметром -f текущие настройки клавиш
# для работы mc в терминале kitty будут перезаписаны
fix-mc-kitty-support() {
local cfg="${HOME}/.config/mc/ini"
[[ "$1" == "-f" ]] && sed -i '/\[terminal:xterm-kitty\]/,/^$/{d}' "${cfg}"
if [ -w "${cfg}" ]; then
if ! grep -qF "[terminal:xterm-kitty]" "${cfg}" ; then
echo >> "${cfg}"
echo "[terminal:xterm-kitty]" >> "${cfg}"
echo "copy=xterm" >> "${cfg}"
fi
fi
}
# Новые версии плагинов для поиска используют функционал fzf версии 0.54.1.
fix-update-fzf() {
mkdir -p $HOME/bin
wget -O- https://github.com/junegunn/fzf/releases/download/v0.54.1/fzf-0.54.1-linux_amd64.tar.gz | tar -zxf - -C $HOME/bin
}

20
install.sh Normal file
View File

@ -0,0 +1,20 @@
#!/bin/sh
set -e
sudo apt-get install git zsh curl wget
git clone https://git.246060.ru/config/zsh $HOME/.config/zsh
cat <<EOF > $HOME/.zshenv
# Загрузка конфигурации из каталога \$ZDOTDIR
export ZDOTDIR=\$HOME/.config/zsh
source \$ZDOTDIR/.zshenv
EOF
sudo usermod -s $(which zsh) $(whoami)
TEMP="${XDG_RUNTIME_DIR:-/tmp}"
wget -P "$TEMP" -c -r -nd --no-parent -A "fonts-iosevka-prog-nerd_*_all.deb" https://deb.246060.ru/bin/fonts/pool/main/f/fonts-iosevka-prog-nerd/
sudo dpkg -i "$TEMP"/fonts-iosevka-prog-nerd_*_all.deb
rm -f "$TEMP"/fonts-iosevka-prog-nerd_*_all.deb

View File

@ -1,16 +0,0 @@
[terminal:xterm-kitty]
f11=\\e[1\;2P
f12=\\e[1\;2Q
f13=\\e[1\;2R
f14=\\e[1\;2S
f15=\\e[15\;2~
f16=\\e[17\;2~
f17=\\e[18\;2~
f18=\\e[19\;2~
f19=\\e[20\;2~
f20=\\e[21\;2~
complete=\\e^i
backtab=\\e[Z
backspace=

Binary file not shown.