aboutsummaryrefslogtreecommitdiff
path: root/src/niri.rs
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2025-01-27 07:55:32 +0300
committerIvan Molodetskikh <yalterz@gmail.com>2025-01-27 08:06:33 +0300
commitec43493522b82907943b4f5371d2c24d238f2c3c (patch)
tree436fb0f54d3e5e9de6119a7391069c2b18e8c3ee /src/niri.rs
parentbaa051891237054f2d4db86d7bcfe0f17440c35f (diff)
downloadniri-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.rs39
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,