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:
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)