mirror of
https://github.com/LGUG2Z/komorebi.git
synced 2026-04-29 15:37:21 +02:00
fix(cli): restart bar on replace-configuration
This commit ensures that the replace-configuration command also replaces bars. Already running bars are stopped and new bars are started using the new configuration.
This commit is contained in:
1
Cargo.lock
generated
1
Cargo.lock
generated
@@ -2929,6 +2929,7 @@ dependencies = [
|
|||||||
"os_info",
|
"os_info",
|
||||||
"parking_lot",
|
"parking_lot",
|
||||||
"paste",
|
"paste",
|
||||||
|
"powershell_script",
|
||||||
"regex",
|
"regex",
|
||||||
"reqwest",
|
"reqwest",
|
||||||
"schemars",
|
"schemars",
|
||||||
|
|||||||
@@ -472,55 +472,25 @@ impl BarWidget for Komorebi {
|
|||||||
for (name, location) in configuration_switcher.configurations.iter() {
|
for (name, location) in configuration_switcher.configurations.iter() {
|
||||||
let path = PathBuf::from(location);
|
let path = PathBuf::from(location);
|
||||||
if path.is_file() {
|
if path.is_file() {
|
||||||
config.apply_on_widget(false, ui,|ui|{
|
config.apply_on_widget(false, ui, |ui| {
|
||||||
if SelectableFrame::new(false).show(ui, |ui|{
|
if SelectableFrame::new(false)
|
||||||
ui.add(Label::new(name).selectable(false))
|
.show(ui, |ui| ui.add(Label::new(name).selectable(false)))
|
||||||
})
|
.clicked()
|
||||||
.clicked()
|
|
||||||
{
|
|
||||||
let canonicalized = dunce::canonicalize(path.clone()).unwrap_or(path);
|
|
||||||
let mut proceed = true;
|
|
||||||
if komorebi_client::send_message(&SocketMessage::ReplaceConfiguration(
|
|
||||||
canonicalized,
|
|
||||||
))
|
|
||||||
.is_err()
|
|
||||||
{
|
{
|
||||||
tracing::error!(
|
let canonicalized =
|
||||||
"could not send message to komorebi: ReplaceConfiguration"
|
dunce::canonicalize(path.clone()).unwrap_or(path);
|
||||||
);
|
|
||||||
proceed = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if let Some(rect) = komorebi_notification_state.work_area_offset {
|
if komorebi_client::send_message(
|
||||||
if proceed {
|
&SocketMessage::ReplaceConfiguration(canonicalized),
|
||||||
match komorebi_client::send_query(&SocketMessage::Query(
|
)
|
||||||
komorebi_client::StateQuery::FocusedMonitorIndex,
|
.is_err()
|
||||||
)) {
|
{
|
||||||
Ok(idx) => {
|
tracing::error!(
|
||||||
if let Ok(monitor_idx) = idx.parse::<usize>() {
|
"could not send message to komorebi: ReplaceConfiguration"
|
||||||
if komorebi_client::send_message(
|
);
|
||||||
&SocketMessage::MonitorWorkAreaOffset(
|
|
||||||
monitor_idx,
|
|
||||||
rect,
|
|
||||||
),
|
|
||||||
)
|
|
||||||
.is_err()
|
|
||||||
{
|
|
||||||
tracing::error!(
|
|
||||||
"could not send message to komorebi: MonitorWorkAreaOffset"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Err(_) => {
|
|
||||||
tracing::error!(
|
|
||||||
"could not send message to komorebi: Query"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ net2 = "0.2"
|
|||||||
os_info = "3.10"
|
os_info = "3.10"
|
||||||
parking_lot = "0.12"
|
parking_lot = "0.12"
|
||||||
paste = { workspace = true }
|
paste = { workspace = true }
|
||||||
|
powershell_script = "1.0"
|
||||||
regex = "1"
|
regex = "1"
|
||||||
schemars = { workspace = true, optional = true }
|
schemars = { workspace = true, optional = true }
|
||||||
serde = { workspace = true }
|
serde = { workspace = true }
|
||||||
|
|||||||
@@ -1682,6 +1682,65 @@ impl WindowManager {
|
|||||||
// Set self to the new wm instance
|
// Set self to the new wm instance
|
||||||
*self = wm;
|
*self = wm;
|
||||||
|
|
||||||
|
// check if there are any bars
|
||||||
|
let mut system = sysinfo::System::new_all();
|
||||||
|
system.refresh_processes(sysinfo::ProcessesToUpdate::All, true);
|
||||||
|
|
||||||
|
let has_bar = system
|
||||||
|
.processes_by_name("komorebi-bar.exe".as_ref())
|
||||||
|
.next()
|
||||||
|
.is_some();
|
||||||
|
|
||||||
|
// stop bar(s)
|
||||||
|
if has_bar {
|
||||||
|
let script = r"
|
||||||
|
Stop-Process -Name:komorebi-bar -ErrorAction SilentlyContinue
|
||||||
|
";
|
||||||
|
match powershell_script::run(script) {
|
||||||
|
Ok(_) => {
|
||||||
|
println!("{script}");
|
||||||
|
|
||||||
|
// start new bar(s)
|
||||||
|
let mut config = StaticConfig::read(config)?;
|
||||||
|
if let Some(display_bar_configurations) =
|
||||||
|
&mut config.bar_configurations
|
||||||
|
{
|
||||||
|
for config_file_path in &mut *display_bar_configurations {
|
||||||
|
let script = r#"Start-Process "komorebi-bar" '"--config" "CONFIGFILE"' -WindowStyle hidden"#
|
||||||
|
.replace("CONFIGFILE", &config_file_path.to_string_lossy());
|
||||||
|
|
||||||
|
match powershell_script::run(&script) {
|
||||||
|
Ok(_) => {
|
||||||
|
println!("{script}");
|
||||||
|
}
|
||||||
|
Err(error) => {
|
||||||
|
println!("Error: {error}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
let script = r"
|
||||||
|
if (!(Get-Process komorebi-bar -ErrorAction SilentlyContinue))
|
||||||
|
{
|
||||||
|
Start-Process komorebi-bar -WindowStyle hidden
|
||||||
|
}
|
||||||
|
";
|
||||||
|
match powershell_script::run(script) {
|
||||||
|
Ok(_) => {
|
||||||
|
println!("{script}");
|
||||||
|
}
|
||||||
|
Err(error) => {
|
||||||
|
println!("Error: {error}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Err(error) => {
|
||||||
|
println!("Error: {error}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
force_update_borders = true;
|
force_update_borders = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user