Merge pull request #195 from pop-os/fix-wmclass

cosmic-toplevel: Also match by StartupWMClass
This commit is contained in:
Victoria Brekenfeld 2023-11-07 18:00:20 +01:00 committed by GitHub
commit b1f6002ab1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 12 deletions

View file

@ -16,7 +16,7 @@ use pop_launcher::{
Request,
};
use std::borrow::Cow;
use std::{ffi::OsString, fs, path::PathBuf};
use std::{fs, path::PathBuf};
use tokio::io::{AsyncWrite, AsyncWriteExt};
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");
for (_, path) in &self.desktop_entries {
if let Some(name) = path.file_stem() {
let app_id: OsString = item.1.app_id.clone().into();
if app_id == name {
if let Ok(data) = fs::read_to_string(path) {
if let Ok(entry) = fde::DesktopEntry::decode(path, &data) {
if let Some(icon) = entry.icon() {
icon_name = Cow::Owned(icon.to_owned());
}
if let Ok(data) = fs::read_to_string(&path) {
if let Ok(entry) = fde::DesktopEntry::decode(&path, &data) {
if item.1.app_id == entry.appid
|| entry
.startup_wm_class()
.is_some_and(|class| class == item.1.app_id)
{
if let Some(icon) = entry.icon() {
icon_name = Cow::Owned(icon.to_owned());
}
break;
}
break;
}
}
}

View file

@ -161,7 +161,12 @@ impl<W: AsyncWrite + Unpin> App<W> {
keywords: entry.keywords().map(|keywords| {
keywords.split(';').map(String::from).collect()
}),
icon: entry.icon().map(|x| x.to_owned()),
icon: Some(
entry
.icon()
.map(|x| x.to_owned())
.unwrap_or_else(|| "application-x-executable".to_string()),
),
exec: exec.to_owned(),
path: path.clone(),
prefers_non_default_gpu: entry.prefers_non_default_gpu(),