aboutsummaryrefslogtreecommitdiff
path: root/src/niri.rs
diff options
context:
space:
mode:
authorpeelz <peelz.dev@gmail.com>2025-01-22 00:00:35 -0500
committerIvan Molodetskikh <yalterz@gmail.com>2025-01-25 10:36:36 +0300
commit54a1cd5069cd2f4eb302862fae115b742fbf32a4 (patch)
treeebe619c021d8d316bf33e28beee7e46182f34e97 /src/niri.rs
parent748d90b443b9f20134020c21760b5b6c2c42a7de (diff)
downloadniri-54a1cd5069cd2f4eb302862fae115b742fbf32a4.tar.gz
niri-54a1cd5069cd2f4eb302862fae115b742fbf32a4.tar.bz2
niri-54a1cd5069cd2f4eb302862fae115b742fbf32a4.zip
Add clipboard disable-primary setting
Diffstat (limited to 'src/niri.rs')
-rw-r--r--src/niri.rs10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/niri.rs b/src/niri.rs
index dbbc9ff2..fdc915a7 100644
--- a/src/niri.rs
+++ b/src/niri.rs
@@ -1810,7 +1810,13 @@ impl Niri {
let idle_notifier_state = IdleNotifierState::new(&display_handle, event_loop.clone());
let idle_inhibit_manager_state = IdleInhibitManagerState::new::<State>(&display_handle);
let data_device_state = DataDeviceState::new::<State>(&display_handle);
- let primary_selection_state = PrimarySelectionState::new::<State>(&display_handle);
+ let primary_selection_state =
+ PrimarySelectionState::new_with_filter::<State, _>(&display_handle, |client| {
+ !client
+ .get_data::<ClientState>()
+ .unwrap()
+ .primary_selection_disabled
+ });
let data_control_state = DataControlState::new::<State, _>(
&display_handle,
Some(&primary_selection_state),
@@ -1930,6 +1936,7 @@ impl Niri {
let data = Arc::new(ClientState {
compositor_state: Default::default(),
can_view_decoration_globals: config.prefer_no_csd,
+ primary_selection_disabled: config.clipboard.disable_primary,
restricted: false,
credentials_unknown: false,
});
@@ -5167,6 +5174,7 @@ impl Niri {
pub struct ClientState {
pub compositor_state: CompositorClientState,
pub can_view_decoration_globals: bool,
+ pub primary_selection_disabled: bool,
/// Whether this client is denied from the restricted protocols such as security-context.
pub restricted: bool,
/// We cannot retrieve this client's socket credentials.