From e016de2d214752242ebde664091af86ed9cd881c Mon Sep 17 00:00:00 2001 From: Sebastiano Tronto Date: Sat, 4 Jul 2026 21:40:18 +0200 Subject: Add new script to spawn ssh session --- .config/dwm/config.h | 1 + scripts/ssh-terminal | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100755 scripts/ssh-terminal diff --git a/.config/dwm/config.h b/.config/dwm/config.h index 7a842d6..f618003 100644 --- a/.config/dwm/config.h +++ b/.config/dwm/config.h @@ -139,6 +139,7 @@ focusmaster(const Arg *arg) static Key keys[] = { /* modifier key function argument */ { MODKEY, XK_o, spawn, SHCMD("open-file") }, + { MODKEY, XK_i, spawn, SHCMD("ssh-terminal") }, { MODKEY, XK_p, spawn, {.v = dmenucmd} }, { MODKEY, XK_n, togglebar, {0} }, { MODKEY, XK_j, focusstack, {.i = +1 } }, diff --git a/scripts/ssh-terminal b/scripts/ssh-terminal new file mode 100755 index 0000000..99a240a --- /dev/null +++ b/scripts/ssh-terminal @@ -0,0 +1,42 @@ +#!/bin/sh + +# Prompts the user to select a known host from $HOME/.ssh/config, +# then connects to it via a configurable client (default: mosh) and +# executes a command on the server (default: tmux). +# Requires: dmenu (or similar), st (or other terminal), an ssh client + +# Usage: ssh-terminal [-m menu] [-s ssh_client] [-e server_cmd] + +menu="dmenu" +terminal="st" +ssh_client="mosh" +server_cmd="tmux" + +usage() { + echo "Usage: ssh-terminal [-m MENU] [-s SSH_CLIENT] [-e SERVER_CMD]" +} + +while getopts "e:m:s:" opt; do + case "$opt" in + e) + server_cmd="$OPTARG" + ;; + m) + menu="$OPTARG" + ;; + s) + ssh_client="$OPTARG" + ;; + *) + usage + exit 1 + ;; + esac +done + +selection=$(grep '^Host' $HOME/.ssh/config | awk '{print $2}' | sort | $menu) +if [ -n "$selection" ]; then + echo "Executing: " + echo $terminal "$ssh_client" "$selection" "$server_cmd" + $terminal "$ssh_client" "$selection" "$server_cmd" +fi -- cgit v1.3