35 lines
1 KiB
Bash
Executable file
35 lines
1 KiB
Bash
Executable file
#!/bin/sh
|
|
# rbtop — connect to apricot and run btop (transient dnf install on first run).
|
|
#
|
|
# Prefers mosh over ssh when both ends have it (better resilience for the
|
|
# interactive TUI under sleep/roam/network blips). Override with
|
|
# RBTOP_TRANSPORT=ssh to force ssh.
|
|
|
|
set -eu
|
|
|
|
HOST=${RBTOP_HOST:-apricot.lan}
|
|
INNER='sudo dnf install -y --transient btop && btop'
|
|
|
|
# Reuse rclaude's auto-installer for shared deps (mosh, etc.). Idempotent —
|
|
# the marker in ~/.cache/rclaude/ skips re-running on every invocation.
|
|
if command -v rclaude >/dev/null 2>&1; then
|
|
rclaude install --on "$HOST" >&2 || true
|
|
fi
|
|
|
|
case ${RBTOP_TRANSPORT:-auto} in
|
|
ssh) use=ssh ;;
|
|
mosh) use=mosh ;;
|
|
*)
|
|
use=ssh
|
|
if command -v mosh >/dev/null 2>&1 \
|
|
&& ssh -o BatchMode=yes -o ConnectTimeout=3 "$HOST" 'command -v mosh-server' >/dev/null 2>&1; then
|
|
use=mosh
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
if [ "$use" = mosh ]; then
|
|
exec mosh "$HOST" -- sh -c "$INNER"
|
|
else
|
|
exec ssh -t -o ServerAliveInterval=30 -o ServerAliveCountMax=6 "$HOST" "$INNER"
|
|
fi
|