When DPMS extension isn't available, powerdevil unexpectedly exits due to a call to unavailable DPMS function and Qt error handling for such errors.
Following is a full log of powerdevil process when DPMS extension isn't present:
$ /usr/libexec/kf5/org_kde_powerdevil QDBusArgument: read from a write-only object QDBusArgument: read from a write-only object QDBusArgument: read from a write-only object powerdevil: No outputs have backlight property powerdevil: Xrandr not supported, trying ddc, helper powerdevil: [DDCutilBrightness] 0 display(s) were detected powerdevil: org.kde5.powerdevil.backlighthelper.brightness failed powerdevil: DPMS extension not available The X11 connection broke: Unsupported extension used (code 2) XIO: fatal IO error 2 (No such file or directory) on X server ":0" after 408 requests (408 known processed) with 0 events remaining.
This was detected while running KDE in a VM (without x2go). For some reason 'xdpyinfo -queryExtensions' didn't report DPMS extension being present.
Only change in 'PowerDevilDPMSAction::onProfileUnload' was required to fix issue for me, but changes in other functions could be needed as well, thus I implemented it. Two calls to m_helper, 'm_helper->startFade()' and 'm_helper->stopFade()', had corresponding conditions left intact since it looks like it doesn't call DPMS-related functions.