cosmic-toplevel: Also match by StartupWMClass

This commit is contained in:
Victoria Brekenfeld 2023-09-29 15:22:23 +02:00
parent 0febac5c59
commit b71f0a6676

View file

@ -16,7 +16,7 @@ use pop_launcher::{
Request, Request,
}; };
use std::borrow::Cow; use std::borrow::Cow;
use std::{ffi::OsString, fs, path::PathBuf}; use std::{fs, path::PathBuf};
use tokio::io::{AsyncWrite, AsyncWriteExt}; use tokio::io::{AsyncWrite, AsyncWriteExt};
use self::toplevel_handler::{toplevel_handler, ToplevelAction, ToplevelEvent}; use self::toplevel_handler::{toplevel_handler, ToplevelAction, ToplevelEvent};
@ -170,18 +170,18 @@ impl<W: AsyncWrite + Unpin> App<W> {
let mut icon_name = Cow::Borrowed("application-x-executable"); let mut icon_name = Cow::Borrowed("application-x-executable");
for (_, path) in &self.desktop_entries { for (_, path) in &self.desktop_entries {
if let Some(name) = path.file_stem() { if let Ok(data) = fs::read_to_string(&path) {
let app_id: OsString = item.1.app_id.clone().into(); if let Ok(entry) = fde::DesktopEntry::decode(&path, &data) {
if app_id == name { if item.1.app_id == entry.appid
if let Ok(data) = fs::read_to_string(path) { || entry
if let Ok(entry) = fde::DesktopEntry::decode(path, &data) { .startup_wm_class()
if let Some(icon) = entry.icon() { .is_some_and(|class| class == item.1.app_id)
icon_name = Cow::Owned(icon.to_owned()); {
} if let Some(icon) = entry.icon() {
icon_name = Cow::Owned(icon.to_owned());
} }
break;
} }
break;
} }
} }
} }