commit 31cb7831a556f7015c40e592e2444fdc37cd6ed2
| author | 斟酌 鵬兄 <tgckpg@gmail.com> |
| date | 2026-09-06T12:14:57Z |
| subject | Use a separate instance for clipboard server |
commit 31cb7831a556f7015c40e592e2444fdc37cd6ed2
Author: 斟酌 鵬兄 <tgckpg@gmail.com>
Date: 2026-09-06T12:14:57Z
Use a separate instance for clipboard server
---
bash/dist/rbashrc | 2 +-
bash/dist/rbashrc.asc | 10 +++++-----
bash/dist/sources.list | 4 ++--
bash/sources/12_shortcuts | 36 ++++++++++++++++++++++++++++++++++++
bash/sources/42_clipboard_server | 37 ++++++++++++++++++++++---------------
5 files changed, 66 insertions(+), 23 deletions(-)
diff --git a/bash/dist/rbashrc b/bash/dist/rbashrc
index d5623ad..9b5ea98 100755
--- a/bash/dist/rbashrc
+++ b/bash/dist/rbashrc
@@ -18,7 +18,7 @@ RBASH_CONFIG="$RBASH_HOME/config"
RBASH_ENV="$RBASH_HOME/env"
RBASH_MERGED="$RBASH_CACHE_DIR/merged"
RBASH_BIN="$RBASH_HOME/bin"
-RBASH_SOURCES_SUM="c7b59b606495091d7995fe38dd132890af9e9cefa342b3e35dc92f7ce4dae3ef"
+RBASH_SOURCES_SUM="9538ea4aca229a315a4620a01009a8c8df4c533b9be2e8f1f45d70fd39e317a1"
# ---- rbash: bash/core/00_env.bash ----
diff --git a/bash/dist/rbashrc.asc b/bash/dist/rbashrc.asc
index 1fa7e4d..e362fad 100644
--- a/bash/dist/rbashrc.asc
+++ b/bash/dist/rbashrc.asc
@@ -1,8 +1,8 @@
-----BEGIN PGP SIGNATURE-----
-iJEEABYKADkWIQR8HpSNhBJUxWnt+97Vz1+xz60nwwUCan7FAhsUgAAAAAAEAA5t
-YW51MiwyLjUrMS4xMiwwLDMACgkQ1c9fsc+tJ8MRAAD8DSxV2gCyyhicV9pmhCnQ
-AHyPJ8wLyanxixxLGIduBM4BAIJq2iILLTdpNEx6zmasVusLr1N+Crq0KYoibbcX
-ZokH
-=zX0d
+iJEEABYKADkWIQR8HpSNhBJUxWnt+97Vz1+xz60nwwUCap1Y/xsUgAAAAAAEAA5t
+YW51MiwyLjUrMS4xMiwwLDMACgkQ1c9fsc+tJ8MQtwD/UwuflS0jQPfNw6BZ81MZ
+FVejgKSNmJXMYg8ilQbvM7sBAMzhIXBqZWIMHYXT2ZjXqWqbek/j+1YDqv7nBDnA
+EEMJ
+=EJpP
-----END PGP SIGNATURE-----
diff --git a/bash/dist/sources.list b/bash/dist/sources.list
index 66b6af8..327c5ad 100644
--- a/bash/dist/sources.list
+++ b/bash/dist/sources.list
@@ -1,5 +1,5 @@
c4b84e73ff9c54631cb24131082e0c15eb53b6fbff47429a0a24aea65c002c52 sources/10_aliases
-e50644286373408263ce5a6f455bf967585a767cce055e67423bd33fdafeab9f sources/12_shortcuts
+2067876e42a47a6f864e9182fe91408fa213c5539fc3fba119a22ea6d2dc5fda sources/12_shortcuts
043a103f7602304732b37c8219ba4f74bc8af37278fc6d2f63d642ef9a29a6fe sources/13_shortcuts_macos
3340cf44a97771e6839e03443e8276c25804e0918c0415b1ffe0112d060cee2d sources/14_shortcuts_greps
a0d62f10f39fa988d8ff8ce13a1751488e6bad1662c3b97ab8ef3fa09c702666 sources/15_gpg-agent
@@ -13,5 +13,5 @@ b5a488efc0558e2b795a1558e2c91a8aeecc3fd441d437aff3a4749d5eb0bdfc sources/23_win
5dbc166ce1b051b54d244ef5dc6b52dfbff03965e9abb0ed891d441dffbf8a76 sources/31_git-utils
c9c270376844e7c7e3c48b1e86c2ce3e7824dde64e8724c17c5fc95910abd11c sources/40_go-command
c0e8ef70466063907b5ed9e52c13532b0019b8cb5975d020899804549a76a37f sources/41_pivot-command
-6815db1a12f540804a4ddb592905b43f53aca494d835e9e4afe3854db7f22416 sources/42_clipboard_server
+412a6bff08ccd2fdaf8a484cf67c5a0a8f56067388f3bbde9e3af742c167a0f9 sources/42_clipboard_server
d02be2a68e8bd1f7e5adacbdd0bdc4f426aabfa1a57709270b673617db6c5352 sources/60_diagnostics
diff --git a/bash/sources/12_shortcuts b/bash/sources/12_shortcuts
index f081cc4..20afd0f 100755
--- a/bash/sources/12_shortcuts
+++ b/bash/sources/12_shortcuts
@@ -38,3 +38,39 @@ function pwgen {
echo
fi
}
+
+# Markdown
+function mdtable {
+ awk '
+ BEGIN {
+ FS = "\\|"
+ }
+
+ /^\+-[-+]+\+$/ {
+ next
+ }
+
+ /^[[:space:]]*\([0-9]+ rows?\)[[:space:]]*$/ {
+ next
+ }
+
+ NF > 1 {
+ for (i = 1; i <= NF; i++) {
+ gsub(/^[[:space:]]+|[[:space:]]+$/, "", $i)
+ gsub(/\|/, "\\|", $i)
+ }
+
+ printf "|"
+ for (i = 1; i <= NF; i++)
+ printf " %s |", $i
+ printf "\n"
+
+ if (!header_done) {
+ printf "|"
+ for (i = 1; i <= NF; i++)
+ printf " --- |"
+ printf "\n"
+ header_done = 1
+ }
+ }'
+}
diff --git a/bash/sources/42_clipboard_server b/bash/sources/42_clipboard_server
index 2b64c6c..ca7683b 100644
--- a/bash/sources/42_clipboard_server
+++ b/bash/sources/42_clipboard_server
@@ -117,29 +117,36 @@ function stop_clipboard_server {
"$SSH_CLIPBOARD_PASTE_PIDFILE"
}
-
-function clipboard_server_config {
- cat <<EOF
-RemoteForward $SSH_CLIPBOARD_REMOTE_COPY_SOCKET $SSH_CLIPBOARD_COPY_SOCKET
-RemoteForward $SSH_CLIPBOARD_REMOTE_PASTE_SOCKET $SSH_CLIPBOARD_PASTE_SOCKET
-StreamLocalBindUnlink yes
-ExitOnForwardFailure yes
-EOF
-}
-
-
function sshc {
init_clipboard_server || return
+ local control_socket="/tmp/sshc-%C.sock"
+
+ if ! command ssh \
+ -S "$control_socket" \
+ -O check \
+ "$@" \
+ >/dev/null 2>&1
+ then
+ echo "-- starting clipboard ssh tunnel"
+
+ command ssh \
+ -M \
+ -S "$control_socket" \
+ -o ControlPersist=10 \
+ -fN \
+ -R "$SSH_CLIPBOARD_REMOTE_COPY_SOCKET:$SSH_CLIPBOARD_COPY_SOCKET" \
+ -R "$SSH_CLIPBOARD_REMOTE_PASTE_SOCKET:$SSH_CLIPBOARD_PASTE_SOCKET" \
+ "$@" || return
+ fi
+
echo "-- ssh with clipboard server"
command ssh \
- -R "$SSH_CLIPBOARD_REMOTE_COPY_SOCKET:$SSH_CLIPBOARD_COPY_SOCKET" \
- -R "$SSH_CLIPBOARD_REMOTE_PASTE_SOCKET:$SSH_CLIPBOARD_PASTE_SOCKET" \
+ -S "$control_socket" \
"$@"
}
-
function pbcopy {
if [ -n "${SSH_CLIPBOARD_REMOTE_COPY_SOCKET:-}" ] &&
[ -S "$SSH_CLIPBOARD_REMOTE_COPY_SOCKET" ]; then
@@ -227,4 +234,4 @@ fi
if [ -n "${SSH_CONNECTION:-}" ]; then
trap cleanup_ssh_clipboard EXIT HUP TERM
-fi
\ No newline at end of file
+fi