1
0
Fork 0
mirror of https://github.com/Zedfrigg/ironbar.git synced 2025-07-03 03:31:03 +02:00

feat: IPC for get_visible, set_visible, new bar name config option

This commit is contained in:
A-Cloud-Ninja 2023-07-12 18:17:04 -04:00 committed by Jake Stanger
parent 2f8443f349
commit 2ccb2633c6
No known key found for this signature in database
GPG key ID: C51FC8F9CB0BEA61
6 changed files with 93 additions and 15 deletions

View file

@ -37,4 +37,18 @@ pub enum Command {
/// The path to the sheet.
path: PathBuf,
},
/// Set the visibility of the bar with the given name.
SetVisible {
///Bar name to target.
bar_name: String,
/// The visibility status.
visible: bool,
},
/// Get the visibility of the bar with the given name.
GetVisible {
/// Bar name to target.
bar_name: String,
},
}

View file

@ -146,6 +146,33 @@ impl Ipc {
}
}
Command::Ping => Response::Ok,
Command::SetVisible { bar_name, visible } => {
let windows = application.windows();
let found = windows
.iter()
.find(|window| window.widget_name() == bar_name);
if let Some(window) = found {
window.set_visible(visible);
Response::Ok
} else {
Response::error("Bar not found")
}
}
Command::GetVisible { bar_name } => {
let windows = application.windows();
let found = windows
.iter()
.find(|window| window.widget_name() == bar_name);
if let Some(window) = found {
Response::OkValue {
value: window.is_visible().to_string(),
}
} else {
Response::error("Bar not found")
}
}
}
}