Thank you for the link to the code. I actually tried to find something like this, but I was looking at wrong parts of the code.
So the KDE way is used for KDE session, regardless what WM is used. And conversely, if KWin is used with another WM, the non-KDE way is used. It might have been better to use some way to detect WM instead of the session.
If we should stick with xprop -root, there are some other candidates:
$ xprop -root -notype | grep -i kwin
KWIN_RUNNING = 0x1
_ORG_KDE_KWIN_DBUS_SERVICE = "org.kde.KWin"
$ xprop -root -notype | grep -i kde | xclip
_NET_SUPPORTED = _NET_SUPPORTED, _NET_SUPPORTING_WM_CHECK, _NET_CLIENT_LIST, _NET_CLIENT_LIST_STACKING, _NET_NUMBER_OF_DESKTOPS, _NET_DESKTOP_GEOMETRY, _NET_CURRENT_DESKTOP, _NET_DESKTOP_NAMES, _NET_ACTIVE_WINDOW, _NET_WORKAREA, _NET_DESKTOP_LAYOUT, _NET_CLOSE_WINDOW, _NET_RESTACK_WINDOW, _NET_SHOWING_DESKTOP, _NET_WM_MOVERESIZE, _NET_MOVERESIZE_WINDOW, _NET_WM_NAME, _NET_WM_VISIBLE_NAME, _NET_WM_DESKTOP, _NET_WM_WINDOW_TYPE, _NET_WM_WINDOW_TYPE_NORMAL, _NET_WM_WINDOW_TYPE_DESKTOP, _NET_WM_WINDOW_TYPE_DOCK, _NET_WM_WINDOW_TYPE_TOOLBAR, _NET_WM_WINDOW_TYPE_MENU, _NET_WM_WINDOW_TYPE_DIALOG, _NET_WM_WINDOW_TYPE_UTILITY, _NET_WM_WINDOW_TYPE_SPLASH, _KDE_NET_WM_WINDOW_TYPE_OVERRIDE, _NET_WM_STATE, _NET_WM_STATE_MODAL, _NET_WM_STATE_MAXIMIZED_VERT, _NET_WM_STATE_MAXIMIZED_HORZ, _NET_WM_STATE_SHADED, _NET_WM_STATE_SKIP_TASKBAR, _NET_WM_STATE_SKIP_PAGER, _NET_WM_STATE_HIDDEN, _NET_WM_STATE_FULLSCREEN, _NET_WM_STATE_ABOVE, _NET_WM_STATE_BELOW, _NET_WM_STATE_DEMANDS_ATTENTION, _NET_WM_STATE_STAYS_ON_TOP, _NET_WM_STRUT, _NET_WM_STRUT_PARTIAL, _NET_WM_ICON_GEOMETRY, _NET_WM_ICON, _NET_WM_PID, _NET_WM_PING, _NET_WM_USER_TIME, _NET_STARTUP_ID, _NET_WM_FULLSCREEN_MONITORS, _NET_WM_ALLOWED_ACTIONS, _NET_WM_ACTION_MOVE, _NET_WM_ACTION_RESIZE, _NET_WM_ACTION_MINIMIZE, _NET_WM_ACTION_SHADE, _NET_WM_ACTION_MAXIMIZE_VERT, _NET_WM_ACTION_MAXIMIZE_HORZ, _NET_WM_ACTION_FULLSCREEN, _NET_WM_ACTION_CHANGE_DESKTOP, _NET_WM_ACTION_CLOSE, _NET_FRAME_EXTENTS, _KDE_NET_WM_FRAME_STRUT, _KDE_NET_WM_TEMPORARY_RULES, _NET_WM_FULL_PLACEMENT, _KDE_NET_WM_ACTIVITIES, _KDE_NET_WM_SHADOW, _NET_WM_OPAQUE_REGION
_ORG_KDE_KWIN_DBUS_SERVICE = "org.kde.KWin"
The KWIN_RUNNING looks as the most generic one. So, I've tried to use it instead and it works now even with KWin+Xfce:
if subprocess.check_output(
['xprop', '-root', '-notype', 'KWIN_RUNNING']) == \
'KWIN_RUNNING = 0x1\n':
Do you think you can merge such change back to Qubes?
Regards,
Vít Šesták 'v6ak'