~kris/dots

srice

ref: 3bdfd3e0c26b75a939850355c30bee6fa9cc9abd srice/.mkshrc -rw-r--r-- 4.3 KiB
3bdfd3e0 — Kris Yotam sync: lock down plan9 theme, wallpapers, nvim configs 3 months ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
#!/bin/mksh
# Interactive mksh configuration
# Source login profile if not already loaded
[ -z "$EDITOR" ] && . "$HOME/.profile"

# Vi mode
set -o vi

# Prompt: user@host:dir >
PS1='$(print -n "\033[34m")${USER}$(print -n "\033[0m")@$(print -n "\033[35m")$(hostname -s)$(print -n "\033[0m"):$(print -n "\033[36m")${PWD/#$HOME/\~}$(print -n "\033[0m") > '

# History
HISTFILE="$HOME/.mksh_history"
HISTSIZE=10000

# Core utilities
alias cp='cp -iv'
alias mv='mv -iv'
alias rm='rm -vI'
alias mkd='mkdir -pv'
alias grep='grep --color=auto'
alias diff='diff --color=auto'

# Modern CLI replacements
alias ls='eza --icons --group-directories-first'
alias ll='eza -la --icons --group-directories-first'
alias la='eza -a --icons --group-directories-first'
alias lt='eza --tree --icons --group-directories-first'
alias cat='bat --paging=never'

# Shortcuts
alias ka='killall'
alias g='git'
alias e='$EDITOR'
alias v='$EDITOR'
alias p='pacman'
alias z='zathura'
alias bin='nnn ~/.local/bin'

# System
alias logout='pkill -KILL -u krisyotam'
alias lock='slock'
alias shutdown='sudo shutdown now'
alias restart='sudo reboot'

# Terminal UI
alias mutt='neomutt'
alias top='btop'
alias htop='btop'
alias vim='nvim'

# Nvim profiles
alias write='NVIM_APPNAME=write nvim'
alias code='NVIM_APPNAME=code nvim'

# Corpus directories
alias content='cd $HOME/.corpus/content'
alias til='cd $HOME/.corpus/til'
alias sb='cd $HOME/.corpus/slipbox'

# Tome shortcuts
alias tc='tome -nnn -create'
alias te='tome -nnn -edit'
alias td='tome -nnn -data'

# Claude Code
alias claude='claude --dangerously-skip-permissions'

# Git
alias ga='git add'
alias gc='git commit'
alias gp='git push'
alias gl='git pull'
alias gs='git status'
alias gd='git diff'
alias gco='git checkout'
alias gb='git branch'
alias glog='git log --oneline --graph'

# Sudo
alias sv='sudo nvim'
alias sp='sudo pacman'

# Edit configs
alias mkshrc='$EDITOR ~/.mkshrc'
alias nvimrc='$EDITOR ~/.config/nvim/init.lua'

# Applications
alias browser='$BROWSER &'
alias rss='sfeed_curses ~/.sfeed/feeds/*'
alias torrent='rtorrent'

# Maritime Monitoring (Monarch Suite)
alias ssta='sea-surface-temperature-anomaly'
alias ohci='ocean-heat-content-index'
alias ssm='subsea-seismic-monitor'
alias svm='supervolcano-monitor'
alias kpi='kaiju-probability-index'
alias mc='maritime-charts'

# Application launchers (backgrounded)
alias warp='warp-terminal >/dev/null 2>&1 &'
alias mouse='mouseless >/dev/null 2>&1 &'

# Fastfetch
alias ff='fastfetch'

# --- Functions ---

# nnn with cd on exit
n() {
	if [ -n "$NNNLVL" ] && [ "$NNNLVL" -ge 1 ]; then
		echo "nnn is already running"
		return
	fi
	NNN_TMPFILE="${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.lastd"
	export NNN_TMPFILE
	nnn -Q "$@"
	if [ -f "$NNN_TMPFILE" ]; then
		. "$NNN_TMPFILE"
		rm -f "$NNN_TMPFILE"
	fi
}

# Script editor -- pick and edit scripts in ~/.local/bin
se() {
	choice=$(find ~/.local/bin -mindepth 1 -printf '%P\n' | fzf)
	[ -n "$choice" ] && [ -f "$HOME/.local/bin/$choice" ] && $EDITOR "$HOME/.local/bin/$choice"
}

# feedsync -- sync kris.opml into sfeedrc
feedsync() {
	opml="$HOME/dev/krisyotam.com/public/kris.opml"
	if [ ! -f "$opml" ]; then
		echo "feedsync: $opml not found" >&2
		return 1
	fi
	sfeed_opml_import <"$opml" >"$HOME/.sfeed/sfeedrc"
	echo "sfeedrc updated from kris.opml"
}

# Launch Google Earth Pro (detached)
earth() {
	setsid google-earth-pro >/dev/null 2>&1 &
}

# Zoxide (smarter cd)
command -v zoxide >/dev/null 2>&1 && eval "$(zoxide init posix --hook prompt)"

# Direnv
command -v direnv >/dev/null 2>&1 && eval "$(direnv hook ksh)"

# History logging (encrypted with SQLCipher)
_kh_db="$HOME/.local/share/history/history.db"
_kh_key_file="$HOME/.local/share/history/.key"

_kh_log() {
	typeset cmd="$1" exit_code="$2" pwd_path="$PWD"
	[ -z "$cmd" ] && return
	case "$cmd" in history*) return ;; esac
	[ -f "$_kh_key_file" ] || return
	[ -f "$_kh_db" ] || return
	typeset escaped_cmd=$(print -r -- "$cmd" | sed "s/'/''/g")
	typeset escaped_pwd=$(print -r -- "$pwd_path" | sed "s/'/''/g")
	typeset key=$(cat "$_kh_key_file")
	(sqlcipher "$_kh_db" "PRAGMA key = '$key'; INSERT INTO terminal_history (command, exit_code, pwd, shell) VALUES ('$escaped_cmd', $exit_code, '$escaped_pwd', 'mksh');" &) >/dev/null 2>&1
}

# PS4 trap to capture commands for history logging
_kh_last_cmd=""
trap '_kh_last_cmd=$(fc -ln -1 2>/dev/null | sed "s/^[[:space:]]*//")' DEBUG
PROMPT_COMMAND='_kh_log "$_kh_last_cmd" "$?"'