feat(ipc): dukung Ctrl+Y clipboard copy di mode daemon/attach

Tambah DaemonFrame::ClipboardCopy(String) supaya daemon bisa
mengirim teks pending_clipboard_copy ke attach client, yang
kemudian menulis sekuens OSC52 ke stdout-nya sendiri (bukan
stdout daemon yang tidak dimiliki terminal user).
This commit is contained in:
asepharyana
2026-07-15 06:32:57 +07:00
parent 71b1613d84
commit 472162d135
2 changed files with 13 additions and 0 deletions
+1
View File
@@ -91,5 +91,6 @@ pub enum DaemonFrame {
StateUpdate(Box<StatePayload>),
StreamToken(String),
SystemNote { kind: String, message: String },
ClipboardCopy(String),
Closed,
}
+12
View File
@@ -396,6 +396,9 @@ fn handle_daemon_client(
running = false;
}
}
if let Some(text) = state.misc.pending_clipboard_copy.take() {
conn.send(&ipc::protocol::DaemonFrame::ClipboardCopy(text))?;
}
send_daemon_update(&mut conn, state)?;
}
None => {
@@ -583,6 +586,15 @@ fn run_attach(session_id: &str) -> Result<()> {
),
);
}
Some(ipc::protocol::DaemonFrame::ClipboardCopy(text)) => {
let _ = write_osc52(&mut io::stdout(), &text);
client_state.push_toast(
app::state::types::Toast::new(
app::state::types::ToastKind::Success,
"Copied to clipboard".to_string(),
),
);
}
Some(ipc::protocol::DaemonFrame::Closed) | None => {
client_state.quit = true;
}