Extract and apply StartupWMClass for proper taskbar icons

Parse StartupWMClass from embedded .desktop entries during analysis,
store in DB, include in generated .desktop files. Detail view shows
an editable WM class field with apply button for manual override.
This commit is contained in:
lashman
2026-02-28 00:02:44 +02:00
parent 01d453d329
commit 97c7250666
4 changed files with 39 additions and 0 deletions

View File

@@ -1033,6 +1033,28 @@ fn build_system_tab(record: &AppImageRecord, db: &Rc<Database>, toast_overlay: &
});
integration_group.add(&autostart_row);
// StartupWMClass row with editable override
let wm_class_row = adw::EntryRow::builder()
.title("StartupWMClass")
.text(record.startup_wm_class.as_deref().unwrap_or(""))
.show_apply_button(true)
.build();
let db_wm = db.clone();
let record_id_wm = record.id;
let toast_wm = toast_overlay.clone();
wm_class_row.connect_apply(move |row| {
let text = row.text().to_string();
let value = if text.is_empty() { None } else { Some(text.as_str()) };
match db_wm.set_startup_wm_class(record_id_wm, value) {
Ok(()) => toast_wm.add_toast(adw::Toast::new("WM class updated")),
Err(e) => {
log::error!("Failed to set WM class: {}", e);
toast_wm.add_toast(adw::Toast::new("Failed to update WM class"));
}
}
});
integration_group.add(&wm_class_row);
inner.append(&integration_group);
// Version Rollback group