aboutsummaryrefslogtreecommitdiff
path: root/src/ipc
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-07-04 13:49:33 +0400
committerIvan Molodetskikh <yalterz@gmail.com>2024-07-05 07:35:01 +0300
commitd2087a2cd9f30e40778861666370df56b532af63 (patch)
tree9948e7eb0a723907a76e533e8604eee918940348 /src/ipc
parentc681198179c3cf5e2e74d3705db2b689671e13f4 (diff)
downloadniri-d2087a2cd9f30e40778861666370df56b532af63.tar.gz
niri-d2087a2cd9f30e40778861666370df56b532af63.tar.bz2
niri-d2087a2cd9f30e40778861666370df56b532af63.zip
Add output ID tracking
Diffstat (limited to 'src/ipc')
-rw-r--r--src/ipc/server.rs10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/ipc/server.rs b/src/ipc/server.rs
index 7987ca5c..d05131a3 100644
--- a/src/ipc/server.rs
+++ b/src/ipc/server.rs
@@ -143,7 +143,8 @@ async fn process(ctx: &ClientCtx, request: Request) -> Reply {
Request::Version => Response::Version(version()),
Request::Outputs => {
let ipc_outputs = ctx.ipc_outputs.lock().unwrap().clone();
- Response::Outputs(ipc_outputs)
+ let outputs = ipc_outputs.values().cloned().map(|o| (o.name.clone(), o));
+ Response::Outputs(outputs.collect())
}
Request::FocusedWindow => {
let window = ctx.ipc_focused_window.lock().unwrap().clone();
@@ -183,8 +184,8 @@ async fn process(ctx: &ClientCtx, request: Request) -> Reply {
Request::Output { output, action } => {
let ipc_outputs = ctx.ipc_outputs.lock().unwrap();
let found = ipc_outputs
- .keys()
- .any(|name| name.eq_ignore_ascii_case(&output));
+ .values()
+ .any(|o| o.name.eq_ignore_ascii_case(&output));
let response = if found {
OutputConfigChanged::Applied
} else {
@@ -223,7 +224,8 @@ async fn process(ctx: &ClientCtx, request: Request) -> Reply {
.ipc_outputs()
.lock()
.unwrap()
- .get(&active_output)
+ .values()
+ .find(|o| o.name == active_output)
.cloned()
});