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 shikoku='ssh shikoku.vpn'
65alias nagoya='ssh nagoya.vpn'
66alias kyushu='ssh kyushu.vpn'
67alias aomi='ssh aomi.vpn'
68alias sakhalin='ssh sakhalin.vpn'
69alias okinawa='ssh okinawa.vpn'
70alias wakasu='ssh wakasu.vpn'
71
72# Identity
73export USER="vincent"
74export HOST="osaka"
75
76# PATH
77export PATH="$HOME/bin:$PATH"
78
79# General
80alias ll='ls -la'
81alias la='ls -A'
82alias l='ls -CF'
83alias ..='cd ..'
84alias ...='cd ../..'
85
86# Git
87alias gs='git status'
88alias gl='git log --oneline -20'
89alias gp='git pull --ff-only'
90
91# Sync config from repo
92alias osaka-sync='~/src/home/android/osaka/sync.sh'
93
94# Quick access
95alias home='cd ~/src/home'
96alias org='cd ~/storage/shared/Org'