`hostname -I` is GNU-only and errors on BSD/macOS, so when the public-IP
curl couldn't reach api.ipify.org the script printed nothing and the
tmux status bar showed an empty IP. Try `ipconfig getifaddr` for common
interfaces first, fall back to `hostname -I` on Linux, then `ifconfig`
as a last resort. Also guard against empty-but-zero-exit curl output.
~/ascii is a symlink to ~/.yadr/ascii. Without -L, 'find <symlink>'
treats the link itself as the starting point, -type f rules it out,
and fuzzy matches return nothing.
New .local/bin/spam-ascii POSIX shell script: resolves a pattern to
a file in ~/ascii with this order:
1. exact filename match
2. exact name + common ASCII-art extension (.txt/.ans/.asc)
3. first case-insensitive substring match (sorted alphabetically)
Non-zero exit + stderr-ish error if nothing matches, so /spam
prints 'no match in ~/ascii for: <pattern>' instead of spewing
a missing-file error.
Rewire the irssi /spam alias to call the script instead of
hardcoding 'cat ~/ascii/$0'. Now:
/spam mario -> matches ~/ascii/mario.txt or ~/ascii/Mario_art.ans
/spam MARIO -> case-insensitive
/spam nothere -> 'no match in ~/ascii for: nothere'
The DigitalOcean metadata endpoint for reserved/floating IPv4 is
/metadata/v1/{reserved,floating}_ip/ipv4/ip_address, not .../address.
The .../active check works but the wrong IP path returned an empty
body, causing the script to silently fall through to ipify on every
droplet with a reserved/floating IP attached.
Verified on a droplet:
curl .../reserved_ip/ipv4/ip_address -> 45.55.111.240
curl .../reserved_ip/ipv4/address -> (empty)
If /sys/class/dmi/id/sys_vendor says DigitalOcean and the droplet has
a reserved_ip or floating_ip assigned, use that over the ipify-based
egress IP. Keeps the ipify/hostname -I fallback intact for other hosts.
Gated on the DMI check so non-DO hosts skip the metadata probe entirely
and the tmux status bar refresh stays fast.
- Convert 21 absolute-path symlinks into YADR to relative paths
(e.g. .vimrc -> .yadr/vimrc), so they resolve correctly under
any user's $HOME after a standard YADR install.
- .fehbg: replace hardcoded background path with $HOME-based one
- .gtk-bookmarks: remove (trivially personal; GTK regenerates)
- .themes/*/index.theme: drop BackgroundImage= lines pointing at
personal image files that other users won't have.
- .xscreensaver: scrub username from header comment.
- .irssi/config: generic dcc_download_path.
Tracks shell configs (zsh/bash), vim, tmux, irssi, fonts, themes,
and ~/.local/bin scripts. Sensitive files (.ssh, .gnupg, history,
credentials) and large app data are excluded via .gitignore.