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'