diff --git a/libtaskmanager/abstracttasksmodel.h b/libtaskmanager/abstracttasksmodel.h --- a/libtaskmanager/abstracttasksmodel.h +++ b/libtaskmanager/abstracttasksmodel.h @@ -83,6 +83,7 @@ IsDemandingAttention, /**< Task is demanding attention. */ SkipTaskbar, /**< Task should not be shown in a 'task bar' user interface. */ SkipPager, /**< Task should not to be shown in a 'pager' user interface. */ + AppPid, /**< Application Process ID */ }; Q_ENUM(AdditionalRoles) diff --git a/libtaskmanager/waylandtasksmodel.cpp b/libtaskmanager/waylandtasksmodel.cpp --- a/libtaskmanager/waylandtasksmodel.cpp +++ b/libtaskmanager/waylandtasksmodel.cpp @@ -332,6 +332,8 @@ return window->skipTaskbar(); } else if (role == SkipPager) { // FIXME Implement. + } else if (role == AppPid) { + // FIXME Implement. } return QVariant(); diff --git a/libtaskmanager/xwindowtasksmodel.cpp b/libtaskmanager/xwindowtasksmodel.cpp --- a/libtaskmanager/xwindowtasksmodel.cpp +++ b/libtaskmanager/xwindowtasksmodel.cpp @@ -52,7 +52,7 @@ { static const NET::Properties windowInfoFlags = NET::WMState | NET::XAWMState | NET::WMDesktop | - NET::WMVisibleName | NET::WMGeometry | NET::WMFrameExtents | NET::WMWindowType; + NET::WMVisibleName | NET::WMGeometry | NET::WMFrameExtents | NET::WMWindowType | NET::WMPid; static const NET::Properties2 windowInfoFlags2 = NET::WM2DesktopFileName | NET::WM2Activities | NET::WM2WindowClass | NET::WM2AllowedActions; @@ -346,7 +346,7 @@ || properties2 & (NET::WM2DesktopFileName | NET::WM2WindowClass)) { wipeInfoCache = true; wipeAppDataCache = true; - changedRoles << Qt::DisplayRole << Qt::DecorationRole << AppId << AppName << GenericName << LauncherUrl; + changedRoles << Qt::DisplayRole << Qt::DecorationRole << AppId << AppName << GenericName << LauncherUrl << AppPid; } if ((properties & NET::WMIcon) && !changedRoles.contains(Qt::DecorationRole)) { @@ -926,6 +926,8 @@ return (info->hasState(NET::SkipTaskbar) || info->windowType(NET::UtilityMask) == NET::Utility); } else if (role == SkipPager) { return d->windowInfo(window)->hasState(NET::SkipPager); + } else if (role == AppPid) { + return d->windowInfo(window)->pid(); } return QVariant();