~kris/dots

srice

ref: 2dc7c2f7e39f562e3603676ef50c2df0a4723c19 srice/.config/fish/config.fish -rw-r--r-- 8.2 KiB
2dc7c2f7 — Kris Yotam update nvim plan9 theme, add hosts file, misc updates 6 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
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
# ────────────────────────────────────────
# Fish Shell Configuration
# Author: Kris Yotam <krisyotam@gmail.com>
# ────────────────────────────────────────

# ─── Terminal Size Fix ─────────────────
# Force fish to detect actual terminal dimensions on startup
# Fixes prompt width issues with st + starship
if status is-interactive
    set -g fish_handle_reflow 1
    # Use Ctrl+K as interrupt (kill) since st uses Ctrl+C for copy
    stty intr \ck
end

# ─── PATH ───────────────────────────────
# Add ~/.local/bin and subdirectories to PATH
for dir in ~/.local/bin/**/
    set -gx PATH $PATH $dir
end
set -gx PATH $PATH ~/.local/bin $HOME/bin

# Doom Emacs binary path
fish_add_path $HOME/.config/emacs/bin

# Plan 9 from User Space (appended so plan9 tools don't override GNU coreutils)
set -gx PLAN9 /usr/lib/plan9
# Remove plan9 from anywhere in PATH, then re-add at the end
while set -l idx (contains -i -- $PLAN9/bin $PATH)
    set -e PATH[$idx]
end
set -gx PATH $PATH $PLAN9/bin

# ─── Default Programs ───────────────────
set -gx EDITOR nvim
set -gx VISUAL nvim
set -gx TERMINAL st
set -gx TERMINAL_PROG st
set -gx BROWSER librewolf

# ─── XDG Base Directories ───────────────
set -gx XDG_CONFIG_HOME $HOME/.config
set -gx XDG_DATA_HOME $HOME/.local/share
set -gx XDG_CACHE_HOME $HOME/.cache

# ─── XDG Cleanup ────────────────────────
set -gx XINITRC $XDG_CONFIG_HOME/x11/xinitrc
set -gx NOTMUCH_CONFIG $XDG_CONFIG_HOME/notmuch-config
set -gx GTK2_RC_FILES $XDG_CONFIG_HOME/gtk-2.0/gtkrc-2.0
set -gx WGETRC $XDG_CONFIG_HOME/wget/wgetrc
set -gx WINEPREFIX $XDG_DATA_HOME/wineprefixes/default
set -gx KODI_DATA $XDG_DATA_HOME/kodi
set -gx PASSWORD_STORE_DIR $XDG_DATA_HOME/password-store
set -gx ANDROID_SDK_HOME $XDG_CONFIG_HOME/android
set -gx CARGO_HOME $XDG_DATA_HOME/cargo
set -gx GOPATH $XDG_DATA_HOME/go
set -gx GOMODCACHE $XDG_CACHE_HOME/go/mod
set -gx ANSIBLE_CONFIG $XDG_CONFIG_HOME/ansible/ansible.cfg
set -gx UNISON $XDG_DATA_HOME/unison
set -gx MBSYNCRC $XDG_CONFIG_HOME/mbsync/config
set -gx ELECTRUMDIR $XDG_DATA_HOME/electrum
set -gx PYTHONSTARTUP $XDG_CONFIG_HOME/python/pythonrc
set -gx SQLITE_HISTORY $XDG_DATA_HOME/sqlite_history

# ─── nnn File Manager ──────────────────
set -gx NNN_OPTS "adeHQ"                   # a=auto FIFO, d=detail, e=text in $EDITOR, H=show hidden, Q=quit on cd
set -gx NNN_PLUG "p:preview-tui;f:fzcd;o:fzopen;i:imgview;z:autojump"
set -gx NNN_FIFO "/tmp/nnn.fifo"
set -gx NNN_OPENER "$HOME/.config/nnn/plugins/nuke"
set -gx NNN_BMS "d:~/Documents;D:~/Downloads;c:~/.config;p:~/dev;h:~;w:~/content"
set -gx NNN_TRASH 1                        # use trash-cli
set -gx NNN_PREVIEWIMGPROG "ueberzug"      # image previews via ueberzugpp

# ─── Program Settings ───────────────────
set -gx DICS /usr/share/stardict/dic/
set -gx SUDO_ASKPASS $HOME/.local/bin/dmenupass
set -gx FZF_DEFAULT_OPTS "--layout=reverse --height 40%"
set -gx LESS R
set -gx LESSOPEN "| /usr/bin/highlight -O ansi %s 2>/dev/null"
set -gx QT_QPA_PLATFORMTHEME gtk2
set -gx MOZ_USE_XINPUT2 1
set -gx AWT_TOOLKIT "MToolkit wmname LG3D"
set -gx _JAVA_AWT_WM_NONREPARENTING 1

# ─── Less Colors ────────────────────────
set -gx LESS_TERMCAP_mb (printf '\e[1;31m')
set -gx LESS_TERMCAP_md (printf '\e[1;36m')
set -gx LESS_TERMCAP_me (printf '\e[0m')
set -gx LESS_TERMCAP_so (printf '\e[01;44;33m')
set -gx LESS_TERMCAP_se (printf '\e[0m')
set -gx LESS_TERMCAP_us (printf '\e[1;32m')
set -gx LESS_TERMCAP_ue (printf '\e[0m')

# ─── Disable Greeting ─────────────────
set -g fish_greeting

# ─── Vi Mode ────────────────────────────
fish_vi_key_bindings

# ─── Keybindings ────────────────────────
bind \co 'nnncd; commandline -f repaint'
bind \cf 'cd (dirname (fzf)); commandline -f repaint'
bind \ce edit_command_buffer

# Also bind for insert mode
bind -M insert \co 'nnncd; commandline -f repaint'
bind -M insert \cf 'cd (dirname (fzf)); commandline -f repaint'
bind -M insert \ce edit_command_buffer

# ─── Abbreviations (Aliases) ────────────
# Core utilities
abbr -a vim nvim
abbr -a cp "cp -iv"
abbr -a mv "mv -iv"
abbr -a rm "rm -vI"
abbr -a mkd "mkdir -pv"
abbr -a grep "grep --color=auto"
abbr -a diff "diff --color=auto"

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

# Shortcuts
abbr -a ka killall
abbr -a g git
abbr -a e $EDITOR
abbr -a v $EDITOR
abbr -a p pacman
abbr -a z zathura
abbr -a lf nnncd
abbr -a bin "nnn ~/.local/bin"

# System commands
abbr -a logout "pkill -KILL -u krisyotam"
abbr -a lock slock
abbr -a shutdown "sudo shutdown now"
abbr -a restart "sudo systemctl reboot"

# Audio devices
abbr -a hs65 "pactl set-default-sink alsa_output.usb-Corsair_Corsair_HS65_SURROUND-00.analog-stereo"
abbr -a airpods "pactl set-default-sink bluez_output.20_15_82_D9_F9_CC.1"

# Applications
# irc is now a script wrapping catgirl — see ~/.local/bin/irc
abbr -a browser "$BROWSER &"
abbr -a rss "sfeed_curses ~/.sfeed/feeds/*"
abbr -a hn "hakuneko-desktop &"
abbr -a torrent rtorrent

# Flatpak Applications (long commands need aliases)
abbr -a discord "flatpak run com.discordapp.Discord &"
abbr -a notesnook "flatpak run com.notesnook.Notesnook &"
abbr -a novelwriter "flatpak run io.novelwriter.novelWriter &"
abbr -a symbol-editor "flatpak run org.kde.SymbolEditor &"
abbr -a steam "flatpak run com.valvesoftware.Steam"
abbr -a vscode "flatpak run com.visualstudio.code &"
abbr -a anki "flatpak run net.ankiweb.Anki &"
abbr -a tropy "flatpak run org.tropy.Tropy &"

# AppImage Applications
abbr -a hayase "$HOME/.local/bin/appimages/hayase &"

# Terminal UI tools
abbr -a mutt neomutt
abbr -a lg lazygit
abbr -a ld lazydocker
abbr -a ytdl yt-dlp
abbr -a top btop
abbr -a ff fastfetch
abbr -a htop btop

# Claude Code
abbr -a claude "claude --dangerously-skip-permissions"

# Sophia virtual assistant
alias sophia='cd ~/dev/sophia && ./sophia'

# Application aliases
function zed; command zeditor $argv &; disown; end
function warp; command warp-terminal $argv &; disown; end
function mouse; command mouseless $argv &; disown; end

# Git abbreviations
abbr -a ga "git add"
abbr -a gc "git commit"
abbr -a gp "git push"
abbr -a gl "git pull"
abbr -a gs "git status"
abbr -a gd "git diff"
abbr -a gco "git checkout"
abbr -a gb "git branch"
abbr -a glog "git log --oneline --graph"

# Sudo shortcuts
abbr -a sv "sudo nvim"
abbr -a sp "sudo pacman"

# Edit configuration files
abbr -a fishrc "$EDITOR ~/.config/fish/config.fish"
abbr -a nvimrc "$EDITOR ~/.config/nvim/init.lua"
abbr -a snippets "$EDITOR ~/.local/share/karbs/snippets"

# ─── Maritime Monitoring (Monarch Suite) ────
abbr -a sst sea-surface-temperature-anomaly
abbr -a seismic subsea-seismic-monitor
abbr -a ohc ocean-heat-content-index
abbr -a maritime maritime-charts
abbr -a kpi kaiju-probability-index

# ─── Zoxide (smarter cd) ───────────────
if type -q zoxide
    zoxide init fish | source
end

# ─── Direnv (per-directory env vars) ────
if type -q direnv
    direnv hook fish | source
end

# ─── Prompt ────────────────────────────
# Prompt is defined in ~/.config/fish/functions/fish_prompt.fish
# If you want starship instead, uncomment the line below:
# starship init fish | source

# ─── Start X on tty1 ────────────────────
if test (tty) = /dev/tty1; and not pgrep -x Xorg > /dev/null
    exec startx $XINITRC
end