Skip to main content

par_term_config/config/config_struct/
clipboard_config.rs

1//! Clipboard synchronisation limits and OSC 52 policy.
2//!
3//! Extracted from the top-level [`super::Config`] struct via `#[serde(flatten)]`.
4//! All fields serialise at the top level of the YAML config file -- existing
5//! config files remain 100% compatible.
6
7use serde::{Deserialize, Serialize};
8
9/// Clipboard sync event retention and whether OSC 52 may set the system clipboard.
10#[derive(Debug, Clone, Serialize, Deserialize)]
11pub struct ClipboardConfig {
12    /// Maximum clipboard sync events retained for diagnostics
13    #[serde(
14        default = "crate::defaults::clipboard_max_sync_events",
15        alias = "max_clipboard_sync_events"
16    )]
17    pub clipboard_max_sync_events: usize,
18
19    /// Maximum bytes stored per clipboard sync event
20    #[serde(
21        default = "crate::defaults::clipboard_max_event_bytes",
22        alias = "max_clipboard_event_bytes"
23    )]
24    pub clipboard_max_event_bytes: usize,
25
26    /// Whether OSC 52 clipboard-set sequences from programs are applied to the
27    /// system clipboard. Enabled by default so remote programs (over SSH) can
28    /// copy to the local clipboard via OSC 52.
29    #[serde(default = "crate::defaults::osc52_clipboard")]
30    pub osc52_clipboard: bool,
31}
32
33impl Default for ClipboardConfig {
34    fn default() -> Self {
35        Self {
36            clipboard_max_sync_events: crate::defaults::clipboard_max_sync_events(),
37            clipboard_max_event_bytes: crate::defaults::clipboard_max_event_bytes(),
38            osc52_clipboard: crate::defaults::osc52_clipboard(),
39        }
40    }
41}