diff --git a/api/dbus/org.desktopspec.ApplicationManager1.Application.xml b/api/dbus/org.desktopspec.ApplicationManager1.Application.xml
index 2d33b39..de2f500 100644
--- a/api/dbus/org.desktopspec.ApplicationManager1.Application.xml
+++ b/api/dbus/org.desktopspec.ApplicationManager1.Application.xml
@@ -117,6 +117,14 @@
+
+
+
+
+
diff --git a/src/dbus/applicationservice.cpp b/src/dbus/applicationservice.cpp
index 75b387c..f016ebf 100644
--- a/src/dbus/applicationservice.cpp
+++ b/src/dbus/applicationservice.cpp
@@ -559,6 +559,12 @@ bool ApplicationService::terminal() const noexcept
return false;
}
+QString ApplicationService::startupWMClass() const noexcept
+{
+ auto value = findEntryValue(DesktopFileEntryKey, "StartupWMClass", EntryValueType::String);
+ return value.isNull() ? QString{} : value.toString();
+}
+
qint64 ApplicationService::installedTime() const noexcept
{
return m_installedTime;
@@ -894,6 +900,7 @@ void ApplicationService::resetEntry(DesktopEntry *newEntry) noexcept
emit terminalChanged();
emit environChanged();
emit launchedTimesChanged();
+ emit startupWMClassChanged();
}
std::optional ApplicationService::unescapeExecArgs(const QString &str) noexcept
diff --git a/src/dbus/applicationservice.h b/src/dbus/applicationservice.h
index f2acd30..df7299d 100644
--- a/src/dbus/applicationservice.h
+++ b/src/dbus/applicationservice.h
@@ -74,6 +74,9 @@ public:
Q_PROPERTY(bool Terminal READ terminal NOTIFY terminalChanged)
[[nodiscard]] bool terminal() const noexcept;
+ Q_PROPERTY(QString StartupWMClass READ startupWMClass NOTIFY startupWMClassChanged)
+ [[nodiscard]] QString startupWMClass() const noexcept;
+
// FIXME:
// This property should implement with fuse guarded
// $XDG_CONFIG_HOME/autostart/. Current implementation has some problems,
@@ -163,6 +166,7 @@ Q_SIGNALS:
void terminalChanged();
void environChanged();
void launchedTimesChanged();
+ void startupWMClassChanged();
private:
friend class ApplicationManager1Service;