Riced fish shell
This commit is contained in:
parent
c3393207d6
commit
edefaa32fd
1 changed files with 222 additions and 2 deletions
|
|
@ -1,3 +1,223 @@
|
||||||
if status is-interactive
|
|
||||||
# Commands to run in interactive sessions can go here
|
|
||||||
|
# ╔══════════════════════════════════════════════════════════╗
|
||||||
|
# ║ Fish Shell Configuration ║
|
||||||
|
# ║ Elegant · Fast · Distrobox-ready ║
|
||||||
|
# ╚══════════════════════════════════════════════════════════╝
|
||||||
|
|
||||||
|
# ── Environment ───────────────────────────────────────────
|
||||||
|
set -gx EDITOR nvim
|
||||||
|
set -gx VISUAL nvim
|
||||||
|
set -gx TERM xterm-256color
|
||||||
|
|
||||||
|
# Disable greeting
|
||||||
|
set fish_greeting ""
|
||||||
|
set -Ue fish_key_bindings
|
||||||
|
|
||||||
|
# ── Prompt ────────────────────────────────────────────────
|
||||||
|
# Install Starship first: curl -sS https://starship.rs/install.sh | sh
|
||||||
|
# If you have starship, uncomment the next line and remove the function below:
|
||||||
|
# starship init fish | source
|
||||||
|
|
||||||
|
function fish_prompt
|
||||||
|
set -l last_status $status
|
||||||
|
set -l cwd (basename (prompt_pwd))
|
||||||
|
set -l git_branch ""
|
||||||
|
|
||||||
|
# Git branch
|
||||||
|
if type -q git
|
||||||
|
set -l branch (git branch --show-current 2>/dev/null)
|
||||||
|
if test -n "$branch"
|
||||||
|
set git_branch " on ($branch)"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# Distrobox indicator
|
||||||
|
set -l box_indicator ""
|
||||||
|
if set -q DISTROBOX_ENTER_PATH
|
||||||
|
set box_indicator "[box] "
|
||||||
|
else if set -q CONTAINER_ID
|
||||||
|
set box_indicator "[box] "
|
||||||
|
end
|
||||||
|
|
||||||
|
# Status indicator
|
||||||
|
set -l status_color (set_color green)
|
||||||
|
set -l arrow "❯"
|
||||||
|
if test $last_status -ne 0
|
||||||
|
set status_color (set_color red)
|
||||||
|
end
|
||||||
|
|
||||||
|
# Draw prompt
|
||||||
|
echo -n (set_color cyan)"$box_indicator"
|
||||||
|
echo -n (set_color blue --bold)"$cwd"
|
||||||
|
echo -n (set_color magenta)"$git_branch"
|
||||||
|
echo -n " $status_color$arrow "(set_color normal)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function fish_right_prompt
|
||||||
|
set -l now (date "+%H:%M")
|
||||||
|
echo -n (set_color brblack)"$now "(set_color normal)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
# ── Colors ────────────────────────────────────────────────
|
||||||
|
set fish_color_command cyan
|
||||||
|
set fish_color_param white
|
||||||
|
set fish_color_error red --bold
|
||||||
|
set fish_color_comment brblack
|
||||||
|
set fish_color_quote yellow
|
||||||
|
set fish_color_autosuggestion brblack
|
||||||
|
set fish_color_operator magenta
|
||||||
|
set fish_color_escape brmagenta
|
||||||
|
set fish_pager_color_selected_background --background=brblack
|
||||||
|
|
||||||
|
|
||||||
|
# ── Distrobox Shortcuts ───────────────────────────────────
|
||||||
|
|
||||||
|
# Enter a container (fuzzy select if no arg)
|
||||||
|
function dbe
|
||||||
|
if test (count $argv) -eq 0
|
||||||
|
set -l box (distrobox list --no-color | tail -n +2 | awk '{print $3}' | fzf --prompt="Enter container: ")
|
||||||
|
if test -n "$box"
|
||||||
|
distrobox enter $box
|
||||||
|
end
|
||||||
|
else
|
||||||
|
distrobox enter $argv[1]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# Create a new container
|
||||||
|
function dbc
|
||||||
|
if test (count $argv) -lt 2
|
||||||
|
echo "Usage: dbc <name> <image>"
|
||||||
|
echo ""
|
||||||
|
echo "Common images:"
|
||||||
|
echo " arch → quay.io/toolbx/arch-toolbox:latest"
|
||||||
|
echo " alpine → quay.io/toolbx-images/alpine-toolbox:3.20"
|
||||||
|
echo " ubuntu → quay.io/toolbx-images/ubuntu-toolbox:22.04"
|
||||||
|
echo " fedora → quay.io/toolbx-images/fedora-toolbox:40"
|
||||||
|
echo " bazzite → ghcr.io/ublue-os/bazzite-arch:latest"
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
distrobox create --name $argv[1] --image $argv[2]
|
||||||
|
end
|
||||||
|
|
||||||
|
# Quick create with preset images
|
||||||
|
function dbc-arch
|
||||||
|
distrobox create --name $argv[1] --image quay.io/toolbx/arch-toolbox:latest
|
||||||
|
end
|
||||||
|
|
||||||
|
function dbc-alpine
|
||||||
|
distrobox create --name $argv[1] --image quay.io/toolbx-images/alpine-toolbox:3.20
|
||||||
|
end
|
||||||
|
|
||||||
|
function dbc-ubuntu
|
||||||
|
distrobox create --name $argv[1] --image quay.io/toolbx-images/ubuntu-toolbox:22.04
|
||||||
|
end
|
||||||
|
|
||||||
|
function dbc-bazzite
|
||||||
|
distrobox create --name $argv[1] --image ghcr.io/ublue-os/bazzite-arch:latest
|
||||||
|
end
|
||||||
|
|
||||||
|
# List containers
|
||||||
|
function dbl
|
||||||
|
distrobox list
|
||||||
|
end
|
||||||
|
|
||||||
|
# Remove a container
|
||||||
|
function dbr
|
||||||
|
if test (count $argv) -eq 0
|
||||||
|
set -l box (distrobox list --no-color | tail -n +2 | awk '{print $3}' | fzf --prompt="Remove container: ")
|
||||||
|
if test -n "$box"
|
||||||
|
read -l -P "Remove '$box'? [y/N] " confirm
|
||||||
|
if test "$confirm" = y
|
||||||
|
distrobox rm $box
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
distrobox rm $argv[1]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# Stop a container
|
||||||
|
function dbs
|
||||||
|
distrobox stop $argv[1]
|
||||||
|
end
|
||||||
|
|
||||||
|
# Export an app from current container
|
||||||
|
function dbx
|
||||||
|
distrobox-export --app $argv[1]
|
||||||
|
end
|
||||||
|
|
||||||
|
# Export a binary from current container
|
||||||
|
function dbxb
|
||||||
|
distrobox-export --bin $argv[1] --export-path ~/.local/bin
|
||||||
|
end
|
||||||
|
|
||||||
|
# Backup a container
|
||||||
|
function db-backup
|
||||||
|
if test (count $argv) -lt 2
|
||||||
|
echo "Usage: db-backup <container-name> <output-file.tar>"
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
echo "Committing container $argv[1]..."
|
||||||
|
podman commit $argv[1] $argv[1]-backup
|
||||||
|
echo "Saving to $argv[2]..."
|
||||||
|
podman save $argv[1]-backup -o $argv[2]
|
||||||
|
echo "✓ Backup saved to $argv[2]"
|
||||||
|
end
|
||||||
|
|
||||||
|
# Restore a container from backup
|
||||||
|
function db-restore
|
||||||
|
if test (count $argv) -lt 2
|
||||||
|
echo "Usage: db-restore <backup.tar> <new-container-name>"
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
echo "Loading image from $argv[1]..."
|
||||||
|
podman load -i $argv[1]
|
||||||
|
distrobox create --name $argv[2] --image (podman images --format "{{.Repository}}" | head -1)
|
||||||
|
echo "✓ Container $argv[2] restored"
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
# ── General Aliases ───────────────────────────────────────
|
||||||
|
alias ll="ls -lah --color=auto"
|
||||||
|
alias la="ls -A --color=auto"
|
||||||
|
alias ..="cd .."
|
||||||
|
alias ...="cd ../.."
|
||||||
|
alias grep="grep --color=auto"
|
||||||
|
alias cp="cp -iv"
|
||||||
|
alias mv="mv -iv"
|
||||||
|
alias rm="rm -iv"
|
||||||
|
alias mkdir="mkdir -pv"
|
||||||
|
alias df="df -h"
|
||||||
|
alias du="du -sh"
|
||||||
|
alias free="free -h"
|
||||||
|
alias reload="source ~/.config/fish/config.fish && echo '✓ Config reloaded'"
|
||||||
|
|
||||||
|
# Editor shortcuts
|
||||||
|
alias v="$EDITOR"
|
||||||
|
alias vi="$EDITOR"
|
||||||
|
|
||||||
|
# System
|
||||||
|
alias sysup="flatpak update && echo '✓ Done'"
|
||||||
|
|
||||||
|
|
||||||
|
# ── Keybindings ───────────────────────────────────────────
|
||||||
|
# Ctrl+E → enter a distrobox container
|
||||||
|
bind \ce 'dbe; commandline -f repaint'
|
||||||
|
|
||||||
|
# Ctrl+L → clear screen (default, but explicit)
|
||||||
|
bind \cl 'clear; commandline -f repaint'
|
||||||
|
|
||||||
|
|
||||||
|
# ── PATH ──────────────────────────────────────────────────
|
||||||
|
fish_add_path ~/.local/bin
|
||||||
|
fish_add_path ~/.cargo/bin
|
||||||
|
|
||||||
|
|
||||||
|
# ── Zoxide (smart cd) — install: brew/apk install zoxide ──
|
||||||
|
# zoxide init fish | source
|
||||||
|
|
||||||
|
# ── fzf keybindings — install fzf for fuzzy finding ───────
|
||||||
|
# fzf --fish | source
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue