Compare commits

...

11 Commits

Author SHA1 Message Date
673db9e2cc p10k update 2026-04-29 22:41:28 +08:00
4040adc7b2 vscode macos shell 2026-04-22 12:17:51 +08:00
95deaa4fda Merge branch 'master' of git.axenov.dev:anthony/dotfiles 2026-04-04 19:58:46 +08:00
d9c91162f5 .profile java_home 2026-04-04 19:58:38 +08:00
d64708126b docker-ips misc 2026-04-04 19:51:34 +08:00
110df8e08b Merge branch 'master' of git.axenov.dev:anthony/dotfiles 2026-04-04 19:47:36 +08:00
4b4e3ac97c vscode misc 2026-04-04 19:41:54 +08:00
a3914f5474 fix xcompose 2026-04-04 19:39:33 +08:00
4a1a5abb96 shell for mac 2026-03-26 10:57:56 +08:00
f4f2db7de1 gitconfig update 2026-03-26 00:22:48 +08:00
1705e95a43 p10k update 2026-03-26 00:22:35 +08:00
10 changed files with 207 additions and 92 deletions

2
.gitignore vendored
View File

@@ -1,3 +1,4 @@
.DS_Store
*.backup
*.bak
*.log
@@ -5,3 +6,4 @@
*.tmp
*.tmp*
*.vscdb
.DS_Store

View File

@@ -1,3 +1,7 @@
[user]
name = Anthony Axenov
email = anthonyaxenov@gmail.com
signingKey = F7CCD4EC
[core]
editor = nano
autocrlf = input
@@ -25,3 +29,4 @@
path = ~/.git_aliases.local
[include]
path = ~/.gitconfig.local ; use this file to store other personal settings and aliases

View File

@@ -34,8 +34,8 @@ alias ll='ls -palFh --color=auto'
alias mkdir='mkdir -pv'
alias where='whereis' # zsh builtin
alias ps='ps auxf'
alias psg='ps aux | grep -v grep | grep -i -e VSZ -e'
# alias ps='ps auxf'
# alias psg='ps aux | grep -v grep | grep -i -e VSZ -e'
alias wine='LANG=ru_RU.utf8 wine'
alias wine64='LANG=ru_RU.utf8 wine64'

View File

@@ -1,8 +1,8 @@
# Generated by Powerlevel10k configuration wizard on 2025-04-10 at 13:49 +08.
# Generated by Powerlevel10k configuration wizard on 2026-04-29 at 22:33 +08.
# Based on romkatv/powerlevel10k/config/p10k-rainbow.zsh, checksum 24045.
# Wizard options: nerdfont-complete + powerline, small icons, rainbow, unicode,
# 24h time, angled separators, sharp heads, flat tails, 2 lines, dotted, no frame,
# lightest-ornaments, sparse, many icons, concise, instant_prompt=verbose.
# 24h time, round separators, round heads, round tails, 2 lines, solid, no frame,
# darkest-ornaments, sparse, many icons, concise, instant_prompt=verbose.
# Type `p10k configure` to generate another config.
#
# Config for Powerlevel10k with powerline prompt style with colorful background.
@@ -10,7 +10,7 @@
#
# Tip: Looking for a nice color? Here's a one-liner to print colormap.
#
# for i in {0..255}; do print -Pn "%K{$i} %k%F{$i}${(l:3::0:)i}%f " ${${(M)$((i%6)):#3}:+$'\n'}; done
# for i in {0..255}; do print -Pn "%K{$i} %k%F{$i}${(l:3::0:)i}%f " ${${(M)$((i%6)):#3}:+$'\n'}; done
# Temporarily change options.
'builtin' 'local' '-a' 'p10k_config_opts'
@@ -32,7 +32,7 @@
# The list of segments shown on the left. Fill it with the most important segments.
typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(
# =========================[ Line #1 ]=========================
# os_icon # os identifier
os_icon # os identifier
dir # current directory
vcs # git status
# =========================[ Line #2 ]=========================
@@ -53,11 +53,11 @@
# asdf # asdf version manager (https://github.com/asdf-vm/asdf)
virtualenv # python virtual environment (https://docs.python.org/3/library/venv.html)
anaconda # conda environment (https://conda.io/)
# pyenv # python environment (https://github.com/pyenv/pyenv)
pyenv # python environment (https://github.com/pyenv/pyenv)
goenv # go environment (https://github.com/syndbg/goenv)
# nodenv # node.js version from nodenv (https://github.com/nodenv/nodenv)
# nvm # node.js version from nvm (https://github.com/nvm-sh/nvm)
# nodeenv # node.js environment (https://github.com/ekalinin/nodeenv)
nodenv # node.js version from nodenv (https://github.com/nodenv/nodenv)
nvm # node.js version from nvm (https://github.com/nvm-sh/nvm)
nodeenv # node.js environment (https://github.com/ekalinin/nodeenv)
# node_version # node.js version
# go_version # go version (https://golang.org)
# rust_version # rustc version (https://www.rust-lang.org)
@@ -88,24 +88,26 @@
context # user@hostname
# nordvpn # nordvpn connection status, linux only (https://nordvpn.com/)
# ranger # ranger shell (https://github.com/ranger/ranger)
# yazi # yazi shell (https://github.com/sxyazi/yazi)
# nnn # nnn shell (https://github.com/jarun/nnn)
# lf # lf shell (https://github.com/gokcehan/lf)
# xplr # xplr shell (https://github.com/sayanarijit/xplr)
vim_shell # vim shell indicator (:sh)
# vim_shell # vim shell indicator (:sh)
midnight_commander # midnight commander shell (https://midnight-commander.org/)
# nix_shell # nix shell (https://nixos.org/nixos/nix-pills/developing-with-nix-shell.html)
# chezmoi_shell # chezmoi shell (https://www.chezmoi.io/)
# vi_mode # vi mode (you don't need this if you've enabled prompt_char)
# vpn_ip # virtual private network indicator
# load # CPU load
# disk_usage # disk usage
# ram # free RAM
# swap # used swap
todo # todo items (https://github.com/todotxt/todo.txt-cli)
# todo # todo items (https://github.com/todotxt/todo.txt-cli)
# timewarrior # timewarrior tracking status (https://timewarrior.net/)
# taskwarrior # taskwarrior task count (https://taskwarrior.org/)
time # current time
# =========================[ Line #2 ]=========================
# newline
# status # exit code of the last command
newline
# ip # ip address and bandwidth usage for a specified network interface
# public_ip # public IP address
# proxy # system-wide http/https/ftp proxy
@@ -150,13 +152,13 @@
# '─'. The last two make it easier to see the alignment between left and right prompt and to
# separate prompt from command output. You might want to set POWERLEVEL9K_PROMPT_ADD_NEWLINE=false
# for more compact prompt if using this option.
typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR='·'
typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR=''
typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_BACKGROUND=
typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_GAP_BACKGROUND=
if [[ $POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR != ' ' ]]; then
# The color of the filler. You'll probably want to match the color of POWERLEVEL9K_MULTILINE
# ornaments defined above.
typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_FOREGROUND=244
typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_FOREGROUND=238
# Start filler from the edge of the screen if there are no left segments on the first line.
typeset -g POWERLEVEL9K_EMPTY_LINE_LEFT_PROMPT_FIRST_SEGMENT_END_SYMBOL='%{%}'
# End filler on the edge of the screen if there are no right segments on the first line.
@@ -164,21 +166,21 @@
fi
# Separator between same-color segments on the left.
typeset -g POWERLEVEL9K_LEFT_SUBSEGMENT_SEPARATOR='\uE0B1'
typeset -g POWERLEVEL9K_LEFT_SUBSEGMENT_SEPARATOR='\uE0B5'
# Separator between same-color segments on the right.
typeset -g POWERLEVEL9K_RIGHT_SUBSEGMENT_SEPARATOR='\uE0B3'
typeset -g POWERLEVEL9K_RIGHT_SUBSEGMENT_SEPARATOR='\uE0B7'
# Separator between different-color segments on the left.
typeset -g POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR='\uE0B0'
typeset -g POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR='\uE0B4'
# Separator between different-color segments on the right.
typeset -g POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR='\uE0B2'
typeset -g POWERLEVEL9K_RIGHT_SEGMENT_SEPARATOR='\uE0B6'
# The right end of left prompt.
typeset -g POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL='\uE0B0'
typeset -g POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL='\uE0B4'
# The left end of right prompt.
typeset -g POWERLEVEL9K_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='\uE0B2'
typeset -g POWERLEVEL9K_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='\uE0B6'
# The left end of left prompt.
typeset -g POWERLEVEL9K_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL=''
typeset -g POWERLEVEL9K_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL='\uE0B6'
# The right end of right prompt.
typeset -g POWERLEVEL9K_RIGHT_PROMPT_LAST_SEGMENT_END_SYMBOL=''
typeset -g POWERLEVEL9K_RIGHT_PROMPT_LAST_SEGMENT_END_SYMBOL='\uE0B4'
# Left prompt terminator for lines without any segments.
typeset -g POWERLEVEL9K_EMPTY_LINE_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL=
@@ -504,21 +506,21 @@
# Status on success. No content, just an icon. No need to show it if prompt_char is enabled as
# it will signify success by turning green.
typeset -g POWERLEVEL9K_STATUS_OK=true
typeset -g POWERLEVEL9K_STATUS_OK_VISUAL_IDENTIFIER_EXPANSION=''
typeset -g POWERLEVEL9K_STATUS_OK_VISUAL_IDENTIFIER_EXPANSION='0'
typeset -g POWERLEVEL9K_STATUS_OK_FOREGROUND=2
typeset -g POWERLEVEL9K_STATUS_OK_BACKGROUND=22
# Status when some part of a pipe command fails but the overall exit status is zero. It may look
# like this: 1|0.
typeset -g POWERLEVEL9K_STATUS_OK_PIPE=true
typeset -g POWERLEVEL9K_STATUS_OK_PIPE_VISUAL_IDENTIFIER_EXPANSION=''
typeset -g POWERLEVEL9K_STATUS_OK_PIPE_VISUAL_IDENTIFIER_EXPANSION='0'
typeset -g POWERLEVEL9K_STATUS_OK_PIPE_FOREGROUND=2
typeset -g POWERLEVEL9K_STATUS_OK_PIPE_BACKGROUND=0
typeset -g POWERLEVEL9K_STATUS_OK_PIPE_BACKGROUND=22
# Status when it's just an error code (e.g., '1'). No need to show it if prompt_char is enabled as
# it will signify error by turning red.
typeset -g POWERLEVEL9K_STATUS_ERROR=true
typeset -g POWERLEVEL9K_STATUS_ERROR_VISUAL_IDENTIFIER_EXPANSION=''
typeset -g POWERLEVEL9K_STATUS_ERROR_VISUAL_IDENTIFIER_EXPANSION=''
typeset -g POWERLEVEL9K_STATUS_ERROR_FOREGROUND=3
typeset -g POWERLEVEL9K_STATUS_ERROR_BACKGROUND=1
@@ -526,7 +528,7 @@
typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL=true
# Use terse signal names: "INT" instead of "SIGINT(2)".
typeset -g POWERLEVEL9K_STATUS_VERBOSE_SIGNAME=false
typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_VISUAL_IDENTIFIER_EXPANSION=''
typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_VISUAL_IDENTIFIER_EXPANSION=''
typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_FOREGROUND=3
typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_BACKGROUND=1

View File

@@ -16,41 +16,81 @@ fi
### AAA ##########################################
isMac() { uname -s | grep -q "Darwin"; }
isLinux() { uname -s | grep -q "Linux"; }
addPath() { [ -d "$1" ] && export PATH="$1:$PATH"; }
safeSource() { [ -s "$1" ] && source "$1" 2>/dev/null || true; }
export EDITOR="nano"
# export JAVA_HOME="/usr/lib/jvm/java-21-openjdk-amd64"
export JAVA_HOME="/usr/lib/jvm/java-17-openjdk-amd64"
export PATH="$JAVA_HOME/bin/:$PATH"
export PATH="$PATH:/opt/nvim/bin/"
export PATH="$PATH:$HOME/.local/bin/"
export PATH="$PATH:$HOME/.local/share/JetBrains/Toolbox/scripts/"
if hash composer >/dev/null; then
composer_home=$(composer config -g home 2>/dev/null)
export PATH="$PATH:$composer_home/vendor/bin"
fi
# phpbrew
# export PHPBREW_SET_PROMPT=1
# export PHPBREW_RC_ENABLE=1
# [ -f $HOME/.phpbrew/bashrc ] && source $HOME/.phpbrew/bashrc
# golang
export PATH="$PATH:/usr/local/go/bin"
export NVM_DIR="$HOME/.nvm"
export GOPATH="$HOME/.go"
# rust cargo
[ -f "$HOME/.cargo/env" ] && source "$HOME/.cargo/env"
### MacBook section
if isMac; then
# brew software
if [ -d "/opt/homebrew/bin/" ]; then
# brew itself
eval "$(/opt/homebrew/bin/brew shellenv zsh)"
addPath "/opt/homebrew/bin/"
# nvm
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && source "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && source "$NVM_DIR/bash_completion" # This loads nvm bash_completion
# java
export JAVA_HOME="/Library/Java/JavaVirtualMachines/openjdk-17.jdk/Contents/Home"
# The next line updates PATH for Yandex Cloud CLI.
[ -f "$HOME/yandex-cloud/path.bash.inc" ] && source "$HOME/yandex-cloud/path.bash.inc"
# nvm (not nvim!)
safeSource "/opt/homebrew/opt/nvm/nvm.sh" # This loads nvm
safeSource "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm" # This loads nvm bash_completion
fi
# The next line enables shell command completion for yc.
[ -f "$HOME/yandex-cloud/completion.zsh.inc" ] && source "$HOME/yandex-cloud/completion.zsh.inc"
# jbtoolbox
addPath "$HOME/Library/Application Support/JetBrains/Toolbox/scripts"
# misc
[[ -f "$HOME/.profile.local" ]] && source "$HOME/.profile.local"
# orbstack
safeSource "$HOME/.orbstack/shell/init.zsh"
fi
### MacBook section end
### Ubuntu section
if isLinux; then
# golang
export PATH="$PATH:/usr/local/go/bin"
# java
# export JAVA_HOME="/usr/lib/jvm/java-21-openjdk-amd64"
export JAVA_HOME="/usr/lib/jvm/java-17-openjdk-amd64"
# nvim (not nvm!)
[ -d "/opt/nvim/bin/" ] && export PATH="$PATH:/opt/nvim/bin/"
# rust cargo
[ -f "$HOME/.cargo/env" ] && source "$HOME/.cargo/env"
# nvm (not nvim!)
safeSource "$NVM_DIR/nvm.sh" # This loads nvm
safeSource "$NVM_DIR/bash_completion" # This loads nvm bash_completion
if hash composer >/dev/null; then
composer_home=$(composer config -g home 2>/dev/null)
export PATH="$PATH:$composer_home/vendor/bin"
fi
# phpbrew
# export PHPBREW_SET_PROMPT=1
# export PHPBREW_RC_ENABLE=1
# [ -f $HOME/.phpbrew/bashrc ] && source $HOME/.phpbrew/bashrc
# The next line updates PATH for Yandex Cloud CLI.
safeSource "$HOME/yandex-cloud/path.bash.inc"
# The next line enables shell command completion for yc.
safeSource "$HOME/yandex-cloud/completion.zsh.inc"
# jbtoolbox
if [ -d "$HOME/.local/share/JetBrains/Toolbox/scripts/" ]; then
export PATH="$PATH:$HOME/.local/share/JetBrains/Toolbox/scripts/"
fi
fi
### Ubuntu section end
addPath "$JAVA_HOME/bin/"
safeSource "$HOME/.profile.local"

View File

@@ -6,13 +6,13 @@ if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]
fi
# If you come from bash you might have to change your $PATH.
# export PATH=$HOME/bin:/usr/local/bin:$PATH
# export PATH=$HOME/bin:$HOME/.local/bin:/usr/local/bin:$PATH
# Path to your oh-my-zsh installation.
# Path to your Oh My Zsh installation.
export ZSH="$HOME/.oh-my-zsh"
# Set name of the theme to load --- if set to "random", it will
# load a random theme each time oh-my-zsh is loaded, in which case,
# load a random theme each time Oh My Zsh is loaded, in which case,
# to know which specific one was loaded, run: echo $RANDOM_THEME
# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
ZSH_THEME="powerlevel10k/powerlevel10k"
@@ -77,13 +77,43 @@ ZSH_THEME="powerlevel10k/powerlevel10k"
# Custom plugins may be added to $ZSH_CUSTOM/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(git docker docker-compose composer zsh-autosuggestions zsh-syntax-highlighting laravel)
plugins=(git docker docker-compose composer zsh-autosuggestions zsh-syntax-highlighting)
source $ZSH/oh-my-zsh.sh
# User configuration
# export MANPATH="/usr/local/man:$MANPATH"
# You may need to manually set your language environment
# export LANG=en_US.UTF-8
# Preferred editor for local and remote sessions
# if [[ -n $SSH_CONNECTION ]]; then
# export EDITOR='vim'
# else
# export EDITOR='nvim'
# fi
# Compilation flags
# export ARCHFLAGS="-arch $(uname -m)"
# Set personal aliases, overriding those provided by Oh My Zsh libs,
# plugins, and themes. Aliases can be placed here, though Oh My Zsh
# users are encouraged to define aliases within a top-level file in
# the $ZSH_CUSTOM folder, with .zsh extension. Examples:
# - $ZSH_CUSTOM/aliases.zsh
# - $ZSH_CUSTOM/macos.zsh
# For a full list of active aliases, run `alias`.
#
# Example aliases
# alias zshconfig="mate ~/.zshrc"
# alias ohmyzsh="mate ~/.oh-my-zsh"
# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
[[ -f ~/.p10k.zsh ]] && source ~/.p10k.zsh
### AAA
[[ -f ~/.bash_aliases ]] && source ~/.bash_aliases
# [[ -f ~/.bashrc.local ]] && source ~/.bashrc.local
[[ -f ~/.profile ]] && source ~/.profile

40
shell/README.md Normal file
View File

@@ -0,0 +1,40 @@
## Краткое описание файлов
- `.bashrc` — bash для интерактивного non-login: история, prompt, aliases, completion.
- `.zshrc` — zsh для интерактивного shell: плагины, тема, инициализация окружения.
- `.profile` — общие login-настройки: PATH, переменные, platform-specific config.
- `.bash_aliases` — набор пользовательских aliases для удобной навигации и команд.
- `.p10k.zsh` — конфигурация темы Powerlevel10k.
## Иерархия загрузки
```
ИНТЕРАКТИВНЫЙ ШЕЛЛ
├── bash
│ ├── .bashrc
│ │ ├── .bash_aliases
│ │ └── .profile
│ └── .profile
└── zsh
├── .zshrc
│ ├── .bash_aliases
│ ├── .profile
│ └── .p10k.zsh
└── .profile
```
## Загрузка по типам shell
```
LOGIN SHELL
├── bash: ~/.bash_profile → ~/.bash_login → ~/.profile
└── zsh: ~/.zprofile → ~/.zshrc
INTERACTIVE NON-LOGIN
├── bash: ~/.bashrc
└── zsh: ~/.zshrc
NON-INTERACTIVE
└── конфиги не загружаются автоматически
```

View File

@@ -1,27 +1,24 @@
#!/usr/bin/env bash
set -eo pipefail
# TODO not ready yet
exit
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
cat <<EOF
Usage: $(basename "$0") [-h] [name]
if [ "$1" ]; then
if [ "$1" = "-a" ]; then
docker ps -aq \
| xargs -n 1 docker inspect --format '{{.Name}}{{range .NetworkSettings.Networks}} {{.IPAddress}}{{end}}' \
| sed -e 's#^/##' \
| column -t
elif [ "$1" = "-c" ]; then
docker compose ps -q \
| xargs -n 1 docker inspect --format '{{.Name}}{{range .NetworkSettings.Networks}} {{.IPAddress}}{{end}}' \
| sed -e 's#^/##' \
| column -t
else
docker inspect --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' "$1"
docker port "$1"
fi
else
docker ps -q \
| xargs -n 1 docker inspect --format '{{.Name}}{{range .NetworkSettings.Networks}} {{.IPAddress}}{{end}}' \
| sed -e 's#^/##' \
| column -t
Display IP addresses of Docker containers.
Options:
-h, --help Show this help message
Arguments:
name Container name to show specific IP
EOF
exit 0
fi
if [[ -n "$1" ]]; then
docker ps -a --format "{{.ID}} {{.Names}} {{.Ports}}" --filter name="$1"
else
docker ps -a --format "{{.ID}} {{.Names}} {{.Ports}}"
fi

View File

@@ -5,7 +5,6 @@
"workbench.colorTheme": "Atom One Dark",
"workbench.preferredDarkColorTheme": "Atom One Dark",
"workbench.iconTheme": "material-icon-theme",
// "workbench.tree.indent": 10,
"workbench.tree.renderIndentGuides": "always",
"workbench.view.alwaysShowHeaderActions": true,
@@ -138,7 +137,7 @@
// terminal
//----------------------------------------------------------------
"terminal.integrated.fontFamily": "JetBrainsMono Nerd Font, MesloLGS NF, Ubuntu Mono",
"terminal.integrated.fontFamily": "\"JetBrainsMono Nerd Font\", \"MesloLGS NF\", Ubuntu Mono",
"terminal.integrated.fontSize": 13,
"terminal.integrated.cursorStyle": "line",
"terminal.integrated.defaultProfile.linux": "zsh",
@@ -322,5 +321,6 @@
"git show"
],
"kilo-code.deniedCommands": [],
"chat.disableAIFeatures": true
"chat.disableAIFeatures": true,
"terminal.external.osxExec": "zsh"
}

View File

@@ -1,5 +1,4 @@
include "%L"
include "/usr/local/share/keyd/keyd.compose"
<Multi_key> <s> <h> <r> <u> <g> : "¯\\_(ツ)_/¯"
<Multi_key> <Cyrillic_ha> <Cyrillic_ze> : "¯\\_(ツ)_/¯" # хз