diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2025-01-27 07:55:32 +0300 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2025-01-27 08:06:33 +0300 |
| commit | ec43493522b82907943b4f5371d2c24d238f2c3c (patch) | |
| tree | 436fb0f54d3e5e9de6119a7391069c2b18e8c3ee /src/niri.rs | |
| parent | baa051891237054f2d4db86d7bcfe0f17440c35f (diff) | |
| download | niri-ec43493522b82907943b4f5371d2c24d238f2c3c.tar.gz niri-ec43493522b82907943b4f5371d2c24d238f2c3c.tar.bz2 niri-ec43493522b82907943b4f5371d2c24d238f2c3c.zip | |
Extract Niri::insert_client()
Diffstat (limited to 'src/niri.rs')
| -rw-r--r-- | src/niri.rs | 39 |
1 files changed, 30 insertions, 9 deletions
diff --git a/src/niri.rs b/src/niri.rs index fdc915a7..b35e0773 100644 --- a/src/niri.rs +++ b/src/niri.rs @@ -1,6 +1,7 @@ use std::cell::{Cell, OnceCell, RefCell}; use std::collections::{HashMap, HashSet}; use std::ffi::OsString; +use std::os::unix::net::UnixStream; use std::path::PathBuf; use std::rc::Rc; use std::sync::atomic::{AtomicBool, Ordering}; @@ -1932,18 +1933,11 @@ impl Niri { let socket_name = socket_source.socket_name().to_os_string(); event_loop .insert_source(socket_source, move |client, _, state| { - let config = state.niri.config.borrow(); - let data = Arc::new(ClientState { - compositor_state: Default::default(), - can_view_decoration_globals: config.prefer_no_csd, - primary_selection_disabled: config.clipboard.disable_primary, + state.niri.insert_client(NewClient { + client, restricted: false, credentials_unknown: false, }); - - if let Err(err) = state.niri.display_handle.insert_client(client, data) { - warn!("error inserting client: {err}"); - } }) .unwrap(); @@ -2125,6 +2119,27 @@ impl Niri { niri } + pub fn insert_client(&mut self, client: NewClient) { + let NewClient { + client, + restricted, + credentials_unknown, + } = client; + + let config = self.config.borrow(); + 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, + credentials_unknown, + }); + + if let Err(err) = self.display_handle.insert_client(client, data) { + warn!("error inserting client: {err}"); + } + } + #[cfg(feature = "dbus")] pub fn inhibit_power_key(&mut self) -> anyhow::Result<()> { use std::os::fd::{AsRawFd, BorrowedFd}; @@ -5171,6 +5186,12 @@ impl Niri { } } +pub struct NewClient { + pub client: UnixStream, + pub restricted: bool, + pub credentials_unknown: bool, +} + pub struct ClientState { pub compositor_state: CompositorClientState, pub can_view_decoration_globals: bool, |
