diff options
author | Toby Vincent <tobyv@tobyvin.dev> | 2023-10-08 23:39:58 -0500 |
---|---|---|
committer | Toby Vincent <tobyv@tobyvin.dev> | 2023-10-08 23:39:58 -0500 |
commit | 5997f74da8b76f54005522d44902b240504f48da (patch) | |
tree | dfa0ca6eaa70cb1d47f8dd2378e004f19f1a4223 | |
parent | f97da8f36bc036155875409067599b472fe8c70b (diff) |
fix(tmux): improve remote xdg-open command
-rw-r--r-- | ssh/.config/systemd/user/xdg-open.service | 8 | ||||
-rwxr-xr-x | ssh/.local/bin/ssh-open | 17 | ||||
-rwxr-xr-x | tmux/.local/bin/tmux-sshr | 1 |
3 files changed, 21 insertions, 5 deletions
diff --git a/ssh/.config/systemd/user/xdg-open.service b/ssh/.config/systemd/user/xdg-open.service new file mode 100644 index 0000000..7113f44 --- /dev/null +++ b/ssh/.config/systemd/user/xdg-open.service @@ -0,0 +1,8 @@ +[Unit] +Description=xdg-open socket listener + +[Service] +ExecStart=/usr/bin/socat UNIX-LISTEN:%t/xdg-open.socket,fork,umask=007 EXEC:"xargs xdg-open",nofork + +[Install] +WantedBy=default.target diff --git a/ssh/.local/bin/ssh-open b/ssh/.local/bin/ssh-open index 276360c..01b650c 100755 --- a/ssh/.local/bin/ssh-open +++ b/ssh/.local/bin/ssh-open @@ -1,8 +1,15 @@ #!/usr/bin/sh -HOSTNAME=$(uname -n) +if [ -n "$SSH_CLIENT" ]; then + HOSTNAME=$(uname -n) -printf '%s' "$1" | sed \ - -e "s/localhost/$HOSTNAME/" \ - -e "s/127\(\.[0-9]\{1,3\}\)\{3\}/$HOSTNAME/" | - xargs -I{} ssh -l "$USER" -p 2222 localhost "xdg-open '{}'" + printf '%s' "$@" | + sed -e "s/localhost/$HOSTNAME/" -e "s/127\(\.[0-9]\{1,3\}\)\{3\}/$HOSTNAME/" | + if [ -S "$XDG_RUNTIME_DIR"/xdg-open.socket ] && command -v nc >/dev/null; then + nc -UN "$XDG_RUNTIME_DIR"/xdg-open.socket + else + xargs -I{} ssh -l "$USER" -p 2222 localhost "xdg-open '{}'" + fi +else + $(command -vp xdg-open) "$@" +fi diff --git a/tmux/.local/bin/tmux-sshr b/tmux/.local/bin/tmux-sshr index 3c75b8c..11186ff 100755 --- a/tmux/.local/bin/tmux-sshr +++ b/tmux/.local/bin/tmux-sshr @@ -44,6 +44,7 @@ else -o "ControlMaster=auto" \ -o "ControlPath=${XDG_RUNTIME_DIR}/ssh.%C" \ -R "2222:localhost:22" \ + -R "${XDG_RUNTIME_DIR}/xdg-open.socket:${XDG_RUNTIME_DIR}/xdg-open.socket" \ -R "$tmux_remote_sock:$tmux_local_sock" \ "$target" "zsh -l -c 'tmux new -A'" fi |