commit e016de2d214752242ebde664091af86ed9cd881c
parent bbb1de5abb5ba94dd0d29d7175f86e6f6d6d188f
Author: Sebastiano Tronto <sebastiano@tronto.net>
Date: Sat, 4 Jul 2026 21:40:18 +0200
Add new script to spawn ssh session
Diffstat:
2 files changed, 43 insertions(+), 0 deletions(-)
diff --git 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
@@ -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