main
1# Boox (osaka) Termux zsh config — lightweight for e-ink
2
3# Prompt — matching homelab style, simplified for e-ink
4_shorten_path() {
5 local p="$1" max="${2:-50}"
6 (( ${#p} <= max )) && { echo "$p"; return; }
7 local parts=("${(@s:/:)p}")
8 local len=${#parts[@]}
9 local i
10 for (( i=1; i <= len - 2; i++ )); do
11 (( ${#p} <= max )) && break
12 (( ${#parts[$i]} <= 2 )) && continue
13 if [[ "${parts[$i]}" == .* ]]; then
14 parts[$i]=".${parts[$i]:1:1}"
15 else
16 parts[$i]="${parts[$i]:0:1}"
17 fi
18 p="${(j:/:)parts}"
19 done
20 echo "$p"
21}
22
23_prompt_dir() {
24 local dir="${PWD/#$HOME/~}"
25 if (( ${#dir} > 50 )); then
26 dir=$(_shorten_path "$dir" 50)
27 fi
28 echo "$dir"
29}
30
31_prompt_git_branch() {
32 local branch
33 branch=$(git symbolic-ref --short HEAD 2>/dev/null)
34 [[ -n $branch ]] && echo " $branch"
35}
36
37setopt PROMPT_SUBST
38export PROMPT='$HOST:$(_prompt_dir)$(_prompt_git_branch) %(!.#.$) '
39
40# History
41HISTFILE=~/.zsh_history
42HISTSIZE=5000
43SAVEHIST=5000
44setopt SHARE_HISTORY
45setopt HIST_IGNORE_DUPS
46setopt HIST_IGNORE_SPACE
47
48# Completion
49autoload -Uz compinit && compinit -C
50zstyle ':completion:*' menu select
51
52# Key bindings
53bindkey -e
54bindkey '^[[A' up-line-or-search
55bindkey '^[[B' down-line-or-search
56
57# === Aliases ===
58
59# Homelab SSH shortcuts
60alias athena='ssh athena.vpn'
61alias demeter='ssh demeter.vpn'
62alias rhea='ssh rhea.vpn'
63alias aion='ssh aion.vpn'
64alias kerkouane='ssh kerkouane.vpn'
65alias shikoku='ssh shikoku.vpn'
66alias nagoya='ssh nagoya.vpn'
67alias kyushu='ssh kyushu.vpn'
68alias aomi='ssh aomi.vpn'
69alias sakhalin='ssh sakhalin.vpn'
70alias okinawa='ssh okinawa.vpn'
71alias wakasu='ssh wakasu.vpn'
72
73# Identity
74export USER="vincent"
75export HOST="osaka"
76
77# PATH
78export PATH="$HOME/bin:$PATH"
79
80# General
81alias ll='ls -la'
82alias la='ls -A'
83alias l='ls -CF'
84alias ..='cd ..'
85alias ...='cd ../..'
86
87# Git
88alias gs='git status'
89alias gl='git log --oneline -20'
90alias gp='git pull --ff-only'
91
92# Sync config from repo
93alias osaka-sync='~/src/home/android/osaka/sync.sh'
94
95# Quick access
96alias home='cd ~/src/home'
97alias org='cd ~/storage/shared/Org'