harmonize with coredesktop

This commit is contained in:
David Young
2026-10-28 14:35:07 -06:00
parent 866720c3c1
commit 9b9f1d5fdd
35 changed files with 1445 additions and 8 deletions
+78
View File
@@ -0,0 +1,78 @@
# MiniServer shell functions, sourced by shell/bashrc
# n opens Neovim in the current directory, or on the files given
n() { if [ "$#" -eq 0 ]; then command nvim . ; else command nvim "$@"; fi; }
# open a file or URL with its default app, detached from the terminal
open() (
xdg-open "$@" > /dev/null 2>&1 &
)
# compress <dir> makes <dir>.tar.gz (decompress is an alias for tar -xzf)
compress() { tar -czf "${1%/}.tar.gz" "${1%/}"; }
# SSH port forwarding
# fip <host> <port>... forward each localhost port to the same port on host
# dip <port>... stop forwarding those ports
# lip list active forwards
fip() {
(( $# < 2 )) && echo "Usage: fip <host> <port1> [port2] ..." && return 1
local host="$1"
shift
for port in "$@"; do
ssh -f -N -L "${port}:localhost:${port}" "$host" && echo "Forwarding localhost:$port -> $host:$port"
done
}
dip() {
(( $# == 0 )) && echo "Usage: dip <port1> [port2] ..." && return 1
for port in "$@"; do
pkill -f "ssh.*-L ${port}:localhost:${port}" && echo "Stopped forwarding port $port" || echo "No forwarding on port $port"
done
}
lip() {
pgrep -af "ssh.*-L [0-9]+:localhost:[0-9]+" || echo "No active forwards"
}
# Git worktrees
# ga <branch> create ../<repo>--<branch> on a new branch and cd into it
# gd from inside that worktree, remove it and its branch
ga() {
if [[ -z "$1" ]]; then
echo "Usage: ga [branch name]"
return 1
fi
local branch="$1"
local base="$(basename "$PWD")"
local wt_path="../${base}--${branch}"
git worktree add -b "$branch" "$wt_path" || return 1
command -v mise &> /dev/null && mise trust "$wt_path"
cd "$wt_path"
}
gd() {
local cwd base branch root worktree answer
cwd="$(pwd)"
worktree="$(basename "$cwd")"
# split on first `--`
root="${worktree%%--*}"
branch="${worktree#*--}"
# Protect against accidentally nuking a non-worktree directory
if [[ "$root" == "$worktree" ]]; then
echo "Not in a worktree made by ga (expected a <repo>--<branch> directory)."
return 1
fi
read -rp "Remove worktree $worktree and branch $branch? [y/N] " answer
[[ $answer == [yY]* ]] || return 0
cd "../$root"
git worktree remove "$cwd" --force || return 1
git branch -D "$branch"
}