|
|
@@ -179,6 +179,20 @@ function App() {
|
|
|
const exit = useExit()
|
|
|
const promptRef = usePromptRef()
|
|
|
|
|
|
+ // Wire up console copy-to-clipboard via opentui's onCopySelection callback
|
|
|
+ renderer.console.onCopySelection = async (text: string) => {
|
|
|
+ if (!text || text.length === 0) return
|
|
|
+
|
|
|
+ const base64 = Buffer.from(text).toString("base64")
|
|
|
+ const osc52 = `\x1b]52;c;${base64}\x07`
|
|
|
+ const finalOsc52 = process.env["TMUX"] ? `\x1bPtmux;\x1b${osc52}\x1b\\` : osc52
|
|
|
+ // @ts-expect-error writeOut is not in type definitions
|
|
|
+ renderer.writeOut(finalOsc52)
|
|
|
+ await Clipboard.copy(text)
|
|
|
+ .then(() => toast.show({ message: "Copied to clipboard", variant: "info" }))
|
|
|
+ .catch(toast.error)
|
|
|
+ renderer.clearSelection()
|
|
|
+ }
|
|
|
const [terminalTitleEnabled, setTerminalTitleEnabled] = createSignal(kv.get("terminal_title_enabled", true))
|
|
|
|
|
|
createEffect(() => {
|
|
|
@@ -447,7 +461,7 @@ function App() {
|
|
|
{
|
|
|
title: "Toggle console",
|
|
|
category: "System",
|
|
|
- value: "app.fps",
|
|
|
+ value: "app.console",
|
|
|
onSelect: (dialog) => {
|
|
|
renderer.console.toggle()
|
|
|
dialog.clear()
|