From 5b3b5d0730ce009fd51c50c5c8cc8d5651d86149 Mon Sep 17 00:00:00 2001 From: lew Date: Thu, 30 Oct 2025 22:28:05 +0000 Subject: [PATCH] Add .config/fish/config.fish Add .config/fish/functions/cd.fish Add .config/fish/functions/compress.fish Add .config/fish/functions/dcim.fish Add .config/fish/functions/decompress.fish Add .config/fish/functions/ff.fish Add .config/fish/functions/fish_greeting.fish Add .config/fish/functions/ls.fish Add .config/fish/functions/lsa.fish Add .config/fish/functions/lt.fish Add .config/fish/functions/lta.fish Add .config/fish/functions/open.fish Add .config/fish/functions/repo.fish Add .config/fish/user-dirs.fish --- private_dot_config/fish/config.fish | 47 +++++++++++++++++++ private_dot_config/fish/functions/cd.fish | 12 +++++ .../fish/functions/compress.fish | 3 ++ private_dot_config/fish/functions/dcim.fish | 9 ++++ .../fish/functions/decompress.fish | 3 ++ private_dot_config/fish/functions/ff.fish | 3 ++ .../fish/functions/fish_greeting.fish | 3 ++ private_dot_config/fish/functions/ls.fish | 3 ++ private_dot_config/fish/functions/lsa.fish | 3 ++ private_dot_config/fish/functions/lt.fish | 3 ++ private_dot_config/fish/functions/lta.fish | 3 ++ private_dot_config/fish/functions/open.fish | 3 ++ private_dot_config/fish/functions/repo.fish | 11 +++++ private_dot_config/fish/user-dirs.fish | 8 ++++ 14 files changed, 114 insertions(+) create mode 100644 private_dot_config/fish/config.fish create mode 100644 private_dot_config/fish/functions/cd.fish create mode 100644 private_dot_config/fish/functions/compress.fish create mode 100644 private_dot_config/fish/functions/dcim.fish create mode 100644 private_dot_config/fish/functions/decompress.fish create mode 100644 private_dot_config/fish/functions/ff.fish create mode 100644 private_dot_config/fish/functions/fish_greeting.fish create mode 100644 private_dot_config/fish/functions/ls.fish create mode 100644 private_dot_config/fish/functions/lsa.fish create mode 100644 private_dot_config/fish/functions/lt.fish create mode 100644 private_dot_config/fish/functions/lta.fish create mode 100644 private_dot_config/fish/functions/open.fish create mode 100644 private_dot_config/fish/functions/repo.fish create mode 100644 private_dot_config/fish/user-dirs.fish diff --git a/private_dot_config/fish/config.fish b/private_dot_config/fish/config.fish new file mode 100644 index 0000000..feaa73d --- /dev/null +++ b/private_dot_config/fish/config.fish @@ -0,0 +1,47 @@ +set -x PATH $HOME/.local/bin $PATH +set -x PATH $HOME/.cargo/bin $PATH + +if status is-interactive + if test -z "$TMUX" + if type -q tmux + tmux attach-session -t default 2>/dev/null; or tmux new-session -s default + end + end +end + +if type -q starship + starship init fish | source +end + +if type -q zoxide + zoxide init fish | source +end + +set -x BAT_THEME ansi + +if test -f "$HOME/.config/fish/user-dirs.fish" + source "$HOME/.config/fish/user-dirs.fish" +end + +if test -d "$HOME/.config/fish/" + alias fishconf="cd $HOME/.config/fish" +end + +alias dcim="cd ~/dcim" +alias docs="cd $XDG_DOCUMENTS_DIR; or cd ~/Documents" +alias notes="cd $XDG_DOCUMENTS_DIR/lib; or cd ~/Documents/lib; ls" +alias dl="cd $XDG_DOWNLOAD_DIR; or cd ~/Downloads" +alias dt="cd $XDG_DESKTOP_DIR; or cd ~/Desktop" +alias music="cd $XDG_MUSIC_DIR; or cd ~/Music" +alias pics="cd $XDG_PICTURES_DIR; or cd ~/Pictures" +alias vids="cd $XDG_VIDEOS_DIR; or cd ~/Videos" + +abbr -a -- .. 'cd ..' +abbr -a -- ... 'cd ../..' +abbr -a -- .... 'cd ../../..' +abbr -a -- ..... 'cd ../../../..' + +function last_history_item + echo $history[1] +end +abbr -a !! --position anywhere --function last_history_item diff --git a/private_dot_config/fish/functions/cd.fish b/private_dot_config/fish/functions/cd.fish new file mode 100644 index 0000000..e261dcd --- /dev/null +++ b/private_dot_config/fish/functions/cd.fish @@ -0,0 +1,12 @@ +function cd + if test (count $argv) -eq 0 + builtin cd ~ + else if test -d $argv[1] + builtin cd $argv[1] + else + z $argv + and printf "\U000F17A9 " + pwd + or echo "Error: Directory not found" + end +end diff --git a/private_dot_config/fish/functions/compress.fish b/private_dot_config/fish/functions/compress.fish new file mode 100644 index 0000000..fd878c9 --- /dev/null +++ b/private_dot_config/fish/functions/compress.fish @@ -0,0 +1,3 @@ +function compress + tar -cfz "$argv[1].tar.gz" "$argv[1]"; +end diff --git a/private_dot_config/fish/functions/dcim.fish b/private_dot_config/fish/functions/dcim.fish new file mode 100644 index 0000000..10ad2f1 --- /dev/null +++ b/private_dot_config/fish/functions/dcim.fish @@ -0,0 +1,9 @@ +function dcim + if test -d $XDG_DCIM_DIR + cd $XDG_DCIM_DIR + else if test -d ~/dcim + cd ~/dcim + else + echo "no dcim dir found" + end +end diff --git a/private_dot_config/fish/functions/decompress.fish b/private_dot_config/fish/functions/decompress.fish new file mode 100644 index 0000000..03b0237 --- /dev/null +++ b/private_dot_config/fish/functions/decompress.fish @@ -0,0 +1,3 @@ +function decompress --wraps='tar -xzf' --description 'alias decompress=tar -xzf' + tar -xzf $argv +end diff --git a/private_dot_config/fish/functions/ff.fish b/private_dot_config/fish/functions/ff.fish new file mode 100644 index 0000000..b098b79 --- /dev/null +++ b/private_dot_config/fish/functions/ff.fish @@ -0,0 +1,3 @@ +function ff --wraps="fzf --preview 'bat --style=numbers --color=always {}'" --wraps="fzf --preview 'bat --style=numbers --color=always{}'" --description "alias ff=fzf --preview 'bat --style=numbers --color=always {}'" + fzf --preview 'bat --style=numbers --color=always {}' $argv +end diff --git a/private_dot_config/fish/functions/fish_greeting.fish b/private_dot_config/fish/functions/fish_greeting.fish new file mode 100644 index 0000000..d159172 --- /dev/null +++ b/private_dot_config/fish/functions/fish_greeting.fish @@ -0,0 +1,3 @@ +function fish_greeting + echo "fsh🐟"; +end diff --git a/private_dot_config/fish/functions/ls.fish b/private_dot_config/fish/functions/ls.fish new file mode 100644 index 0000000..e3a8748 --- /dev/null +++ b/private_dot_config/fish/functions/ls.fish @@ -0,0 +1,3 @@ +function ls --wraps='eza -lh --group-directories-first --icons=auto --git' --description 'alias ls=eza -lh --group-directories-first --icons=auto --git' + eza -lh --group-directories-first --icons=auto --git $argv +end diff --git a/private_dot_config/fish/functions/lsa.fish b/private_dot_config/fish/functions/lsa.fish new file mode 100644 index 0000000..8875ad3 --- /dev/null +++ b/private_dot_config/fish/functions/lsa.fish @@ -0,0 +1,3 @@ +function lsa --wraps='ls -a' --description 'alias lsa=ls -a' + ls -a $argv +end diff --git a/private_dot_config/fish/functions/lt.fish b/private_dot_config/fish/functions/lt.fish new file mode 100644 index 0000000..ade8f31 --- /dev/null +++ b/private_dot_config/fish/functions/lt.fish @@ -0,0 +1,3 @@ +function lt --wraps='eza --tree --level=2 --long --icons --git' --description 'alias lt=eza --tree --level=2 --long --icons --git' + eza --tree --level=2 --long --icons --git $argv +end diff --git a/private_dot_config/fish/functions/lta.fish b/private_dot_config/fish/functions/lta.fish new file mode 100644 index 0000000..115544d --- /dev/null +++ b/private_dot_config/fish/functions/lta.fish @@ -0,0 +1,3 @@ +function lta --wraps='lt -a' --description 'alias lta=lt -a' + lt -a $argv +end diff --git a/private_dot_config/fish/functions/open.fish b/private_dot_config/fish/functions/open.fish new file mode 100644 index 0000000..f6552ca --- /dev/null +++ b/private_dot_config/fish/functions/open.fish @@ -0,0 +1,3 @@ +function open + xdg-open $argv >/dev/null 2>&1 &; +end diff --git a/private_dot_config/fish/functions/repo.fish b/private_dot_config/fish/functions/repo.fish new file mode 100644 index 0000000..5d3e57c --- /dev/null +++ b/private_dot_config/fish/functions/repo.fish @@ -0,0 +1,11 @@ +function repo + if test (count $argv) -ge 1 + set SRC_DIRECTORY $argv[1] + else + set SRC_DIRECTORY $HOME/src + end + set repo (find $SRC_DIRECTORY -mindepth 1 -maxdepth 3 -type d -exec test -d "{}/.git" \; -print \ + | fzf --preview "bash -c '[ -f {}/README.md ] && bat --style=plain --color=always {}/README.md || echo \"No README\"; echo; git -C {} status --short --branch'" --preview-window=up:60%) + or return + cd $repo +end diff --git a/private_dot_config/fish/user-dirs.fish b/private_dot_config/fish/user-dirs.fish new file mode 100644 index 0000000..d8fd115 --- /dev/null +++ b/private_dot_config/fish/user-dirs.fish @@ -0,0 +1,8 @@ +set -Ux XDG_DESKTOP_DIR "$HOME/desktop" +set -Ux XDG_DOWNLOAD_DIR "$HOME/downloads" +set -Ux XDG_TEMPLATES_DIR "$HOME/dcim/templates" +set -Ux XDG_PUBLICSHARE_DIR "$HOME/dcim/public" +set -Ux XDG_DOCUMENTS_DIR "$HOME/dcim/documents" +set -Ux XDG_MUSIC_DIR "$HOME/dcim/music" +set -Ux XDG_PICTURES_DIR "$HOME/dcim/pictures" +set -Ux XDG_VIDEOS_DIR "$HOME/dcim/videos"