dotfiles

My dotfiles and configs
git clone https://git.dasho.dev/dotfiles.git
Log | Files | Refs | README

commit 245267811fcf9dbb1c89d44dd8ab0cdb55fd3672
parent 86e4d39a37da6ad3503ea11df7b2d32a34cb2f68
Author: Dasho <git@dasho.dev>
Date:   Sun,  8 Feb 2026 04:40:08 +0000

🧹 chore(cli): Add  yazi  config to dotfiles

Diffstat:
MBrewfile | 37++++++++++++++++++++++++++++++++++---
MJustfile | 3+++
Mbin/bootstrap | 2++
Mbin/wizard | 3+++
Mbrew/leaves.txt | 21+++++++++++++++------
Mconfig/git/config | 7+++++++
Aconfig/yazi/yazi.toml | 241+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mzsh/zshrc | 20+++++++++++++-------
8 files changed, 318 insertions(+), 16 deletions(-)

diff --git a/Brewfile b/Brewfile @@ -2,14 +2,22 @@ tap "antoniorodr/lexy" tap "charmbracelet/tap" tap "danielgatis/imgcat" tap "steipete/tap" +# Simple, modern, secure file encryption +brew "age" # Clone of cat(1) with syntax highlighting and Git integration brew "bat" +# Analyzes ELF binaries +brew "binsider" # Draw boxes around text brew "boxes" # GNU compiler collection brew "gcc" # Resource monitor. C++ version and continuation of bashtop and bpytop brew "btop" +# Multi-shell multi-command argument completer +brew "carapace" +# Hacker News in your terminal +brew "circumflex" # Statistics utility to count lines of code brew "cloc" # Securely send things from one computer to another @@ -20,6 +28,8 @@ brew "direnv" brew "exiftool" # Modern, maintained replacement for ls brew "eza" +# Play, record, convert, and stream select audio and video codecs +brew "ffmpeg" # Command-line fuzzy finder written in Go brew "fzf" # Open-source, cross-platform JavaScript runtime environment @@ -28,6 +38,8 @@ brew "node" brew "gemini-cli" # GitHub command-line tool brew "gh" +# Syntax-highlighting pager for git and diff output +brew "git-delta" # Render markdown on the CLI brew "glow" # Open source programming language to build simple/reliable/efficient software @@ -40,6 +52,8 @@ brew "himalaya" brew "imagemagick" # Modular IRC client brew "irssi" +# Lightweight and flexible command-line JSON processor +brew "jq" # Handy way to save and run project-specific commands brew "just" # Rainbows and unicorns in your console! @@ -48,24 +62,36 @@ brew "lolcat" brew "magic-wormhole" # CLI tool for saving complete web pages as a single HTML file brew "monolith" +# Interactive cheatsheet tool for the command-line +brew "navi" # Fast, highly customisable system info script brew "neofetch" # Ambitious Vim-fork focused on extensibility and agility brew "neovim" +# Modern shell for the GitHub era +brew "nushell" # General-purpose speech recognition model brew "openai-whisper" # Search tool like grep and The Silver Searcher brew "ripgrep" # AI coding agent, built for the terminal brew "opencode" +# Swiss-army knife of markup format conversion +brew "pandoc" # Password manager brew "pass" # Animated pipes terminal screensaver brew "pipes-sh" +# Execute binaries from Python packages in isolated environments +brew "pipx" # Send emails from your terminal brew "pop" +# Terminal slideshow tool +brew "presenterm" # Hook preloader brew "proxychains-ng" +# Simple, modern, secure file encryption +brew "rage" # Run a command when files change brew "reflex" # Safe, concurrent, practical language @@ -88,6 +114,10 @@ brew "tor", restart_service: :changed brew "torsocks" # Command-line tool for sharing terminal over the web brew "ttyd" +# Terminal UI OS (Terminal Multiplexer) +brew "tuios" +# Markup-based typesetting system +brew "typst" # Command-line unarchiving tools supporting multiple formats brew "unar" # Extremely fast Python package installer and resolver, written in Rust @@ -96,6 +126,8 @@ brew "uv" brew "vhs" # Extensible IRC client brew "weechat" +# Feature-rich command-line audio/video downloader +brew "yt-dlp" # Pluggable terminal workspace, with terminal multiplexer as the base feature brew "zellij" # Shell extension to navigate your filesystem faster @@ -163,12 +195,11 @@ go "github.com/cespare/reflex" go "github.com/sqlc-dev/sqlc/cmd/sqlc" go "honnef.co/go/tools/cmd/staticcheck" cargo "cross" -cargo "freenet" +cargo "termusic" +cargo "termusic-server" flatpak "app.zen_browser.zen" flatpak "chat.simplex.simplex" flatpak "com.discordapp.Discord" -flatpak "com.protonvpn.www" -flatpak "com.vivaldi.Vivaldi" flatpak "io.github.celluloid_player.Celluloid" flatpak "io.github.flattool.Warehouse" flatpak "io.github.peazip.PeaZip" diff --git a/Justfile b/Justfile @@ -57,6 +57,7 @@ link: @mkdir -p ~/.config/git @mkdir -p ~/.config/nvim @mkdir -p ~/.config/redbrick + @mkdir -p ~/.config/yazi @ln -snf {{justfile_directory()}}/zsh/zshrc ~/.zshrc @echo "Linked ~/.zshrc" @@ -70,6 +71,8 @@ link: @echo "Linked ~/.config/nvim/init.lua" @ln -snf {{justfile_directory()}}/config/redbrick ~/.config/redbrick @echo "Linked ~/.config/redbrick/*" + @ln -snf {{justfile_directory()}}/config/yazi/yazi.toml ~/.config/yazi/yazi.toml + @echo "Linked ~/.config/yazi/*" @echo "Linked all dotfiles." # Full new-machine setup. diff --git a/bin/bootstrap b/bin/bootstrap @@ -8,6 +8,7 @@ mkdir -p "$HOME/.config/direnv" mkdir -p "$HOME/.config/nvim" mkdir -p "$HOME/.config/redbrick" mkdir -p "$HOME/.config/git" +mkdir -p "$HOME/.config/yazi" # Install Homebrew if missing if ! command -v brew >/dev/null 2>&1; then @@ -41,6 +42,7 @@ ln -snf "$ROOT/config/git/config" "$HOME/.gitconfig" ls -snf "$ROOT/config/git/config" "$HOME/.config/git/config" 2>/dev/null || true ln -snf "$ROOT/config/nvim/init.lua" "$HOME/.config/nvim/init.lua" ln -snf "$ROOT/config/redbrick" "$HOME/.config/redbrick" 2>/dev/null || true +ln -snf "$ROOT/config/yazi/yazi.toml" "$HOME/.config/yazi/yazi.toml" 2>/dev/null || true echo "Bootstrap complete. Restart your shell." diff --git a/bin/wizard b/bin/wizard @@ -386,6 +386,7 @@ run_link() { gum style --foreground 147 " • ~/.gitconfig" gum style --foreground 147 " • ~/.config/nvim/init.lua" gum style --foreground 147 " • ~/.config/redbrick/*" + gum style --foreground 147 " • ~/,config/yazi/*" echo "" if ! confirm "Create/update symlinks?"; then @@ -398,12 +399,14 @@ run_link() { mkdir -p "$HOME/.config/git" mkdir -p "$HOME/.config/nvim" mkdir -p "$HOME/.config/redbrick" + mkdir -p "$HOME/.config/yazi" ln -snf "$ROOT/zsh/zshrc" "$HOME/.zshrc" && show_success "Linked ~/.zshrc" ln -snf "$ROOT/config/direnv/direnvrc" "$HOME/.config/direnv/direnvrc" && show_success "Linked direnvrc" ln -snf "$ROOT/config/git/config" "$HOME/.gitconfig" && show_success "Linked gitconfig" ln -snf "$ROOT/config/nvim/init.lua" "$HOME/.config/nvim/init.lua" && show_success "Linked nvim config" ln -snf "$ROOT/config/redbrick" "$HOME/.config/redbrick" && show_success "Linked redbrick config" + ln -snf "$ROOT/config/yazi/yazi.toml" "$HOME/.config/yazi/yazi.toml" && show_success "Linked yazi config" echo "" show_success "All dotfiles linked!" diff --git a/brew/leaves.txt b/brew/leaves.txt @@ -1,43 +1,50 @@ +age antoniorodr/lexy/lexy bat +binsider boxes btop +carapace charmbracelet/tap/crush charmbracelet/tap/mods charmbracelet/tap/skate charmbracelet/tap/soft-serve charmbracelet/tap/wishlist +circumflex cloc croc danielgatis/imgcat/imgcat direnv exiftool eza -fzf gemini-cli gh +git-delta glow go gum himalaya imagemagick irssi +jq just -liblqr -libraw -librsvg -libultrahdr lolcat magic-wormhole monolith +navi neofetch neovim +nushell openai-whisper opencode +pandoc pass pipes-sh +pipx pop +presenterm proxychains-ng +rage reflex rust sc-im @@ -50,11 +57,13 @@ steipete/tap/imsg tmux tor torsocks -tree-sitter +tuios +typst unar uv vhs weechat +yt-dlp zellij zoxide zsh diff --git a/config/git/config b/config/git/config @@ -8,6 +8,7 @@ whitespace = error preloadindex = true excludesfile = ~/.gitignore + pager = delta [commit] gpgsign = true @@ -20,3 +21,9 @@ [url "git@github.com:"] insteadOf = https://github.com/ +[interactive] + diffFilter = delta --color-only +[delta] + navigate = true +[merge] + conflictStyle = zdiff3 diff --git a/config/yazi/yazi.toml b/config/yazi/yazi.toml @@ -0,0 +1,241 @@ +# A TOML linter such as https://taplo.tamasfe.dev/ can use this schema to validate your config. +# If you encounter any issues, please make an issue at https://github.com/yazi-rs/schemas. +"$schema" = "https://yazi-rs.github.io/schemas/yazi.json" + +[mgr] +ratio = [ 1, 4, 3 ] +sort_by = "alphabetical" +sort_sensitive = false +sort_reverse = false +sort_dir_first = true +sort_translit = false +linemode = "none" +show_hidden = true +show_symlink = true +scrolloff = 5 +mouse_events = [ "click", "scroll" ] +title_format = "Yazi: {cwd}" + +[preview] +wrap = "no" +tab_size = 2 +max_width = 600 +max_height = 900 +cache_dir = "" +image_delay = 30 +image_filter = "triangle" +image_quality = 75 +ueberzug_scale = 1 +ueberzug_offset = [ 0, 0, 0, 0 ] + +[opener] +edit = [ + { run = "${EDITOR:-vi} %s", desc = "$EDITOR", for = "unix", block = true }, + { run = "code %s", desc = "code", for = "windows", orphan = true }, + { run = "code -w %s", desc = "code (block)", for = "windows", block = true }, +] +play = [ + { run = "xdg-open %s1", desc = "Play", for = "linux", orphan = true }, + { run = "open %s", desc = "Play", for = "macos" }, + { run = 'start "" %s1', desc = "Play", for = "windows", orphan = true }, + { run = "termux-open %s1", desc = "Play", for = "android" }, + { run = "mediainfo %s1; echo 'Press enter to exit'; read _", block = true, desc = "Show media info", for = "unix" }, + { run = "mediainfo %s1 & pause", block = true, desc = "Show media info", for = "windows" }, +] +open = [ + { run = "xdg-open %s1", desc = "Open", for = "linux" }, + { run = "open %s", desc = "Open", for = "macos" }, + { run = 'start "" %s1', desc = "Open", for = "windows", orphan = true }, + { run = "termux-open %s1", desc = "Open", for = "android" }, +] +reveal = [ + { run = "xdg-open %d1", desc = "Reveal", for = "linux" }, + { run = "open -R %s1", desc = "Reveal", for = "macos" }, + { run = "explorer /select,%s1", desc = "Reveal", for = "windows", orphan = true }, + { run = "termux-open %d1", desc = "Reveal", for = "android" }, + { run = "clear; exiftool %s1; echo 'Press enter to exit'; read _", desc = "Show EXIF", for = "unix", block = true }, +] +extract = [ + { run = "ya pub extract --list %s", desc = "Extract here" }, +] +download = [ + { run = "ya emit download --open %S", desc = "Download and open" }, + { run = "ya emit download %S", desc = "Download" }, +] + +[open] +rules = [ + # Folder + { url = "*/", use = [ "edit", "open", "reveal" ] }, + # Text + { mime = "text/*", use = [ "edit", "reveal" ] }, + # Image + { mime = "image/*", use = [ "open", "reveal" ] }, + # Media + { mime = "{audio,video}/*", use = [ "play", "reveal" ] }, + # Archive + { mime = "application/{zip,rar,7z*,tar,gzip,xz,zstd,bzip*,lzma,compress,archive,cpio,arj,xar,ms-cab*}", use = [ "extract", "reveal" ] }, + # JSON + { mime = "application/{json,ndjson}", use = [ "edit", "reveal" ] }, + { mime = "*/javascript", use = [ "edit", "reveal" ] }, + # Empty file + { mime = "inode/empty", use = [ "edit", "reveal" ] }, + # Virtual file system + { mime = "vfs/{absent,stale}", use = "download" }, + # Fallback + { url = "*", use = [ "open", "reveal" ] }, +] + +[tasks] +micro_workers = 10 +macro_workers = 10 +bizarre_retry = 3 +image_alloc = 536870912 # 512MB +image_bound = [ 10000, 10000 ] +suppress_preload = false + +[plugin] +fetchers = [ + # Mimetype + { id = "mime", url = "*/", run = "mime.dir", prio = "high" }, + { id = "mime", url = "local://*", run = "mime.local", prio = "high" }, + { id = "mime", url = "remote://*", run = "mime.remote", prio = "high" }, +] +spotters = [ + { url = "*/", run = "folder" }, + # Code + { mime = "text/*", run = "code" }, + { mime = "application/{mbox,javascript,wine-extension-ini}", run = "code" }, + # Image + { mime = "image/{avif,hei?,jxl}", run = "magick" }, + { mime = "image/svg+xml", run = "svg" }, + { mime = "image/*", run = "image" }, + # Video + { mime = "video/*", run = "video" }, + # Virtual file system + { mime = "vfs/*", run = "vfs" }, + # Error + { mime = "null/*", run = "null" }, + # Fallback + { url = "*", run = "file" }, +] +preloaders = [ + # Image + { mime = "image/{avif,hei?,jxl}", run = "magick" }, + { mime = "image/svg+xml", run = "svg" }, + { mime = "image/*", run = "image" }, + # Video + { mime = "video/*", run = "video" }, + # PDF + { mime = "application/pdf", run = "pdf" }, + # Font + { mime = "font/*", run = "font" }, + { mime = "application/ms-opentype", run = "font" }, +] +previewers = [ + { url = "*/", run = "folder" }, + # Code + { mime = "text/*", run = "code" }, + { mime = "application/{mbox,javascript,wine-extension-ini}", run = "code" }, + # JSON + { mime = "application/{json,ndjson}", run = "json" }, + # Image + { mime = "image/{avif,hei?,jxl}", run = "magick" }, + { mime = "image/svg+xml", run = "svg" }, + { mime = "image/*", run = "image" }, + # Video + { mime = "video/*", run = "video" }, + # PDF + { mime = "application/pdf", run = "pdf" }, + # Archive + { mime = "application/{zip,rar,7z*,tar,gzip,xz,zstd,bzip*,lzma,compress,archive,cpio,arj,xar,ms-cab*}", run = "archive" }, + { mime = "application/{debian*-package,redhat-package-manager,rpm,android.package-archive}", run = "archive" }, + { url = "*.{AppImage,appimage}", run = "archive" }, + # Virtual Disk / Disk Image + { mime = "application/{iso9660-image,qemu-disk,ms-wim,apple-diskimage}", run = "archive" }, + { mime = "application/virtualbox-{vhd,vhdx}", run = "archive" }, + { url = "*.{img,fat,ext,ext2,ext3,ext4,squashfs,ntfs,hfs,hfsx}", run = "archive" }, + # Font + { mime = "font/*", run = "font" }, + { mime = "application/ms-opentype", run = "font" }, + # Empty file + { mime = "inode/empty", run = "empty" }, + # Virtual file system + { mime = "vfs/*", run = "vfs" }, + # Error + { mime = "null/*", run = "null" }, + # Fallback + { url = "*", run = "file" }, +] + +[input] +cursor_blink = false + +# cd +cd_title = "Change directory:" +cd_origin = "top-center" +cd_offset = [ 0, 2, 50, 3 ] + +# create +create_title = [ "Create:", "Create (dir):" ] +create_origin = "top-center" +create_offset = [ 0, 2, 50, 3 ] + +# rename +rename_title = "Rename:" +rename_origin = "hovered" +rename_offset = [ 0, 1, 50, 3 ] + +# filter +filter_title = "Filter:" +filter_origin = "top-center" +filter_offset = [ 0, 2, 50, 3 ] + +# find +find_title = [ "Find next:", "Find previous:" ] +find_origin = "top-center" +find_offset = [ 0, 2, 50, 3 ] + +# search +search_title = "Search via {n}:" +search_origin = "top-center" +search_offset = [ 0, 2, 50, 3 ] + +# shell +shell_title = [ "Shell:", "Shell (block):" ] +shell_origin = "top-center" +shell_offset = [ 0, 2, 50, 3 ] + +[confirm] +# trash +trash_title = "Trash {n} selected file{s}?" +trash_origin = "center" +trash_offset = [ 0, 0, 70, 20 ] + +# delete +delete_title = "Permanently delete {n} selected file{s}?" +delete_origin = "center" +delete_offset = [ 0, 0, 70, 20 ] + +# overwrite +overwrite_title = "Overwrite file?" +overwrite_body = "Will overwrite the following file:" +overwrite_origin = "center" +overwrite_offset = [ 0, 0, 50, 15 ] + +# quit +quit_title = "Quit?" +quit_body = "There are unfinished tasks, quit anyway?\n(Open task manager with default key 'w')" +quit_origin = "center" +quit_offset = [ 0, 0, 50, 15 ] + +[pick] +open_title = "Open with:" +open_origin = "hovered" +open_offset = [ 0, 1, 50, 7 ] + +[which] +sort_by = "none" +sort_sensitive = false +sort_reverse = false +sort_translit = false diff --git a/zsh/zshrc b/zsh/zshrc @@ -208,7 +208,7 @@ ZSH_THEME="robbyrussell" # DISABLE_AUTO_TITLE="true" # Uncomment the following line to enable command auto-correction. -ENABLE_CORRECTION="true" +# ENABLE_CORRECTION="true" # Uncomment the following line to display red dots whilst waiting for completion. # You can also set it to another string to have that shown instead of the default red dots. @@ -286,12 +286,14 @@ alias dotfiles="chezmoi" alias ..="cd .." alias ...="cd ../.." -alias bhcli="/home/dasho/dev/bhcli-new/target/release/bhcli --refresh-rate 2 -m" +alias bhcli="/home/dasho/dev/bhcli-new/target/release/bhcli --refresh-rate 2 --url http://blkhatjxlrvc5aevqzz5t6kxldayog6jlx5h7glnu44euzongl4fh5ad.onion --page-php chat.php -m" alias bhcli2="/home/dasho/dev/bhcli-new/target/release/bhcli --refresh-rate 2 --url http://blkh4ylofapg42tj6ht565klld5i42dhjtysvsnnswte4xt4uvnfj5qd.onion --page-php index.php -m" alias 404="/home/dasho/dev/bhcli-new/target/release/bhcli --refresh-rate 2 --url https://4-0-4.io/chat/min" alias 404tor="/home/dasho/dev/bhcli-new/target/release/bhcli --refresh-rate 2 --url http://4o4o4hn4hsujpnbsso7tqigujuokafxys62thulbk2k3mf46vq22qfqd.onion/chat/min" alias tb="cd /home/dasho/Downloads/tor-browser && ./start-tor-browser.desktop" +alias slides="presenterm" + alias -s md="glow" alias -s py="$EDITOR" alias -s txt="bat" @@ -332,11 +334,11 @@ alias -g L="| less" alias -g H="| head" # Source and export variables from ~/.env -# if [ -f ~/.env ]; then - # set -a - # source ~/.env - # set +a -# fi +if [ -f ~/.env ]; then + set -a + source ~/.env + set +a +fi export PATH=$HOME/.local/bin:$PATH export PATH="$HOME/.config/emacs/bin:$PATH" export PATH="$HOME/Applications/halloy/bin:$PATH" @@ -363,3 +365,7 @@ autoload -U compinit && compinit export CARAPACE_BRIDGES='zsh,fish,bash,inshellisense' # optional zstyle ':completion:*' format $'\e[2;37mCompleting %d\e[m' source <(carapace _carapace) +export PATH="$HOME/.local/bin:$PATH" + +# OpenClaw Completion +# source <(openclaw completion --shell zsh)