All checks were successful
Build App / build-macos (push) Successful in 2m24s
Build App / build-windows (push) Successful in 3m57s
Build App / build-linux (push) Successful in 8m28s
Build Container / build-container (push) Successful in 1m47s
Build App / sync-to-github (push) Successful in 12s
Programs inside the container (e.g. Claude Code's "hit c to copy") can now write to the host system clipboard. A shell script shim installed as xclip/xsel/pbcopy emits OSC 52 escape sequences, which the xterm.js frontend intercepts and forwards to navigator.clipboard.writeText(). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
27 lines
885 B
Bash
27 lines
885 B
Bash
#!/bin/bash
|
|
# OSC 52 clipboard provider — sends clipboard data to the host system clipboard
|
|
# via OSC 52 terminal escape sequences. Installed as xclip/xsel/pbcopy so that
|
|
# programs inside the container (e.g. Claude Code) can copy to clipboard.
|
|
#
|
|
# Supports common invocations:
|
|
# echo "text" | xclip -selection clipboard
|
|
# echo "text" | xsel --clipboard --input
|
|
# echo "text" | pbcopy
|
|
#
|
|
# Paste/output requests exit silently (not supported via OSC 52).
|
|
|
|
# Detect paste/output mode — exit silently since we can't read the host clipboard
|
|
for arg in "$@"; do
|
|
case "$arg" in
|
|
-o|--output) exit 0 ;;
|
|
esac
|
|
done
|
|
|
|
# Read all input from stdin
|
|
data=$(cat)
|
|
[ -z "$data" ] && exit 0
|
|
|
|
# Base64 encode and write OSC 52 escape sequence to the controlling terminal
|
|
encoded=$(printf '%s' "$data" | base64 | tr -d '\n')
|
|
printf '\033]52;c;%s\a' "$encoded" > /dev/tty 2>/dev/null
|