SUMMARY I've recently been experiencing an issue where KDE Plasma will unlock into my main monitor being a black screen while still being able to drag windows into it and my cursor being visible. My panels will have shifted to another monitor which still has its wallpaper visible. I managed to consistently reproduce this issue by starting a fresh Plasma login session by logging out and logging back in or rebooting. Then locking the screen and waiting for my main monitor to enter standby mode after 20 seconds - this is how I have it configured in the Power Management settings. I then wake it up and login in on the lock screen. **NOTE**: This issue does not appear if I wake up my main monitor BEFORE it enters standby mode. I observe the following log messages that are unique to the issue: ``` Oct 08 07:15:59 bazzite kwin_wayland[12512]: kwin_core: KWin::LayerShellV1Window doesn't support setting maximized state Oct 08 07:15:59 bazzite kwin_wayland[12512]: kwin_core: KWin::LayerShellV1Window doesn't support setting fullscreen state Oct 08 07:15:59 bazzite kwin_wayland[12512]: kwin_core: KWin::LayerShellV1Window doesn't support setting maximized state Oct 08 07:15:59 bazzite kwin_wayland[12512]: kwin_core: KWin::LayerShellV1Window doesn't support setting fullscreen state ``` These messages do not appear if I wake up my monitor before it enters stand-by mode so I suspect they must be related to the issue. STEPS TO REPRODUCE 1. Enter a fresh Plasma Wayland session 2. Lock your screen 3. Wait for your monitors to enter stand-by mode (low power consumption) 4. Wake up your monitors 5. Log in OBSERVED RESULT A black background on the main monitor with cursor and windows visible if moved into it. Panels moved to another monitor. EXPECTED RESULT My wallpaper and panels to be visible on the main monitor. SOFTWARE/OS VERSIONS Operating System: Bazzite 40 KDE Plasma Version: 6.1.5 KDE Frameworks Version: 6.6.0 Qt Version: 6.7.2 Kernel Version: 6.9.12-205.fsync.fc40.x86_64 (64-bit) Graphics Platform: Wayland Processors: 24 × AMD Ryzen 9 5900X 12-Core Processor Memory: 62.7 GiB of RAM Graphics Processor: NVIDIA GeForce RTX 3060 Ti/PCIe/SSE2 ADDITIONAL INFORMATION I am aware of https://bugs.kde.org/show_bug.cgi?id=489180 however, I do not seem to get any log messages relating to QtWaylandClient::QWaylandWindow::waylandScreen. Also, Plasma doesn't seem to crash, or if it does, it seems to recover.
6.2.0 has this issue too.
The issue is still present in QT 6.8.0. Which I think rules out the original QT issue I highlighted earlier since I _believe_ the patch for that has been merged into 6.8.0 at the very latest. Here's an updated info about my system. Operating System: Bazzite 41 KDE Plasma Version: 6.2.2 KDE Frameworks Version: 6.7.0 Qt Version: 6.8.0 Kernel Version: 6.11.5-307.bazzite.fc41.x86_64 (64-bit) Graphics Platform: Wayland Processors: 24 × AMD Ryzen 9 5900X 12-Core Processor Memory: 62.7 GiB of RAM Graphics Processor: NVIDIA GeForce RTX 3060 Ti/PCIe/SSE2 Manufacturer: Gigabyte Technology Co., Ltd. Product Name: B450M DS3H WIFI
Does the issue go away if you... 1. Switch to another TTY and then back? 2. Uninstall powerdevil and reboot?
(In reply to Nate Graham from comment #3) > Does the issue go away if you... > 1. Switch to another TTY and then back? > 2. Uninstall powerdevil and reboot? Switching to a TTY didn't resolve it. I don't think I can remove powerdevil or at least I'm not sure how to do it on Bazzite. ``` > rpm-ostree override remove powerdevil Inactive requests: fish (already provided by fish-3.7.0-4.fc41.x86_64) langpacks-en (already provided by langpacks-en-4.1-2.fc41.noarch) Checking out tree 0cb7752... done Resolving dependencies... done error: Could not depsolve transaction; 1 problem detected: Problem: package plasma-workspace-6.2.2-2.fc41.x86_64 from @System requires powerdevil, but none of the providers can be installed - conflicting requests ```
Ok, in that case you can temporarily stop and disable its systemd service with: > sudo systemctl stop plasma-powerdevil.service > sudo systemctl disable plasma-powerdevil.service Then restart, then see if it still happens. To re-enable powerdevil after this testing, do this: > sudo systemctl start plasma-powerdevil.service > sudo systemctl enable plasma-powerdevil.service
(In reply to Nate Graham from comment #5) > Ok, in that case you can temporarily stop and disable its systemd service > with: > > > sudo systemctl stop plasma-powerdevil.service > > sudo systemctl disable plasma-powerdevil.service > > Then restart, then see if it still happens. > > To re-enable powerdevil after this testing, do this: > > > sudo systemctl start plasma-powerdevil.service > > sudo systemctl enable plasma-powerdevil.service It looks like for my system, the plasma-powerdevil.service is a user service and cannot be disabled because it doesn't have the `[Install]` field defined (?) I can stop it however. And after doing so I locked my screen and found that my monitors don't go to sleep. I'm guessing that feature was handled by powerdevil to begin with. So in this case does that mean powerdevil has a bug? Here's the log output of powerdevil for the current boot which did exhibit the black screen when it was on. ``` Nov 23 17:24:04 bazzite systemd[2140]: Starting plasma-powerdevil.service - Powerdevil... Nov 23 17:24:04 bazzite org_kde_powerdevil[2744]: Initializing libddcutil. ddcutil version: 2.1.2, shared library: /usr/lib64/libddcutil.so.5.1.1 Nov 23 17:24:04 bazzite org_kde_powerdevil[2744]: Options passed from client: Nov 23 17:24:04 bazzite org_kde_powerdevil[2744]: Applying combined options: Nov 23 17:24:04 bazzite org_kde_powerdevil[2744]: busno=2, sleep-multiplier = 2.00. Testing for supported feature 0x10 returned Error_Info[EIO in ddc_write_read_with_retry, causes: EIO] Nov 23 17:24:09 bazzite org_kde_powerdevil[2744]: Library initialization complete. Nov 23 17:24:09 bazzite org_kde_powerdevil[2744]: Watch thread started Nov 23 17:24:11 bazzite org_kde_powerdevil[2744]: org.kde.powerdevil: [DDCutilDisplay]: ddca_get_non_table_vcp_value -3007 Nov 23 17:24:11 bazzite org_kde_powerdevil[2744]: org.kde.powerdevil: [DDCutilDetector]: Display "ASUS VC239" does not seem to support brightness control - wait before retrying initialization Nov 23 17:24:11 bazzite org_kde_powerdevil[2744]: org.kde.powerdevil: [DDCutilDisplay]: "ASUS VC239" retrying to initialize DDC/CI brightness in 1000 milliseconds - attempt no. 1 Nov 23 17:24:13 bazzite org_kde_powerdevil[2744]: org.kde.powerdevil: [DDCutilDisplay]: "ASUS VC239" succeeded to initialize DDC/CI brightness Nov 23 17:24:13 bazzite org_kde_powerdevil[2744]: org.kde.powerdevil: org.kde.powerdevil.chargethresholdhelper.getthreshold failed "Charge thresholds are not supported by the kernel for this hardware" Nov 23 17:24:13 bazzite org_kde_powerdevil[2744]: org.kde.powerdevil: org.kde.powerdevil.backlighthelper.brightness failed Nov 23 17:24:14 bazzite systemd[2140]: Started plasma-powerdevil.service - Powerdevil. Nov 23 17:24:14 bazzite org_kde_powerdevil[2744]: org.kde.powerdevil: Handle button events action could not check for screen configuration Nov 23 17:24:14 bazzite org_kde_powerdevil[2744]: org.kde.powerdevil: org.kde.powerdevil.chargethresholdhelper.getthreshold failed "Charge thresholds are not supported by the kernel for this hardware" Nov 23 17:24:17 bazzite org_kde_powerdevil[2744]: dh=Display_Handle[i2c-3: fd=52], Replacing adjusted sleep multiplier 0.00 with 1.00 for SE_POST_WRITE or SE_POST_SAVE_SETTINGS Nov 23 17:41:29 bazzite org_kde_powerdevil[2744]: dh=Display_Handle[i2c-5: fd=52], Keeping adjusted sleep multiplier 2.00 for SE_POST_WRITE or SE_POST_SAVE_SETTINGS Nov 23 17:41:29 bazzite org_kde_powerdevil[2744]: dh=Display_Handle[i2c-3: fd=52], Replacing adjusted sleep multiplier 0.00 with 1.00 for SE_POST_WRITE or SE_POST_SAVE_SETTINGS Nov 23 17:41:30 bazzite org_kde_powerdevil[2744]: dh=Display_Handle[i2c-4: fd=52], Keeping adjusted sleep multiplier 2.00 for SE_POST_WRITE or SE_POST_SAVE_SETTINGS Nov 23 17:42:59 bazzite org_kde_powerdevil[2744]: dh=Display_Handle[i2c-3: fd=52], Replacing adjusted sleep multiplier 0.00 with 1.00 for SE_POST_WRITE or SE_POST_SAVE_SETTINGS Nov 23 17:43:01 bazzite org_kde_powerdevil[2744]: org.kde.powerdevil: [DDCutilDisplay]: ddca_get_non_table_vcp_value -3007 Nov 23 17:43:01 bazzite org_kde_powerdevil[2744]: dh=Display_Handle[i2c-5: fd=52], Keeping adjusted sleep multiplier 2.00 for SE_POST_WRITE or SE_POST_SAVE_SETTINGS Nov 23 17:43:03 bazzite org_kde_powerdevil[2744]: org.kde.powerdevil: [DDCutilDisplay]: ddca_get_non_table_vcp_value -3007 Nov 23 17:43:03 bazzite org_kde_powerdevil[2744]: dh=Display_Handle[i2c-4: fd=52], Keeping adjusted sleep multiplier 2.00 for SE_POST_WRITE or SE_POST_SAVE_SETTINGS Nov 23 17:44:25 bazzite org_kde_powerdevil[2744]: dh=Display_Handle[i2c-3: fd=52], Replacing adjusted sleep multiplier 0.00 with 1.00 for SE_POST_WRITE or SE_POST_SAVE_SETTINGS Nov 23 17:44:27 bazzite org_kde_powerdevil[2744]: org.kde.powerdevil: [DDCutilDisplay]: ddca_get_non_table_vcp_value -3007 Nov 23 17:44:27 bazzite org_kde_powerdevil[2744]: dh=Display_Handle[i2c-5: fd=52], Keeping adjusted sleep multiplier 2.00 for SE_POST_WRITE or SE_POST_SAVE_SETTINGS Nov 23 17:44:29 bazzite org_kde_powerdevil[2744]: org.kde.powerdevil: [DDCutilDisplay]: ddca_get_non_table_vcp_value -3007 Nov 23 17:44:29 bazzite org_kde_powerdevil[2744]: dh=Display_Handle[i2c-5: fd=52], Keeping adjusted sleep multiplier 2.00 for SE_POST_WRITE or SE_POST_SAVE_SETTINGS Nov 23 17:44:30 bazzite org_kde_powerdevil[2744]: dh=Display_Handle[i2c-3: fd=52], Replacing adjusted sleep multiplier 0.00 with 1.00 for SE_POST_WRITE or SE_POST_SAVE_SETTINGS Nov 23 17:44:32 bazzite org_kde_powerdevil[2744]: org.kde.powerdevil: [DDCutilDisplay]: ddca_get_non_table_vcp_value -3007 Nov 23 17:44:32 bazzite org_kde_powerdevil[2744]: dh=Display_Handle[i2c-4: fd=52], Keeping adjusted sleep multiplier 2.00 for SE_POST_WRITE or SE_POST_SAVE_SETTINGS Nov 23 17:44:34 bazzite org_kde_powerdevil[2744]: org.kde.powerdevil: [DDCutilDisplay]: ddca_get_non_table_vcp_value -3007 Nov 23 17:44:34 bazzite org_kde_powerdevil[2744]: dh=Display_Handle[i2c-4: fd=52], Keeping adjusted sleep multiplier 2.00 for SE_POST_WRITE or SE_POST_SAVE_SETTINGS Nov 23 18:18:20 bazzite org_kde_powerdevil[2744]: org.kde.powerdevil: [DDCutilDisplay]: ddca_get_non_table_vcp_value -3007 Nov 23 18:18:20 bazzite org_kde_powerdevil[2744]: dh=Display_Handle[i2c-4: fd=52], Keeping adjusted sleep multiplier 2.00 for SE_POST_WRITE or SE_POST_SAVE_SETTINGS Nov 23 18:18:22 bazzite org_kde_powerdevil[2744]: org.kde.powerdevil: [DDCutilDisplay]: ddca_get_non_table_vcp_value -3007 Nov 23 18:18:22 bazzite org_kde_powerdevil[2744]: dh=Display_Handle[i2c-5: fd=52], Keeping adjusted sleep multiplier 2.00 for SE_POST_WRITE or SE_POST_SAVE_SETTINGS Nov 23 18:18:22 bazzite org_kde_powerdevil[2744]: dh=Display_Handle[i2c-3: fd=52], Replacing adjusted sleep multiplier 0.00 with 1.00 for SE_POST_WRITE or SE_POST_SAVE_SETTINGS Nov 23 18:22:29 bazzite org_kde_powerdevil[2744]: org.kde.powerdevil: [DDCutilDisplay]: ddca_get_non_table_vcp_value -3007 Nov 23 18:22:29 bazzite org_kde_powerdevil[2744]: dh=Display_Handle[i2c-4: fd=52], Keeping adjusted sleep multiplier 2.00 for SE_POST_WRITE or SE_POST_SAVE_SETTINGS Nov 23 18:22:31 bazzite org_kde_powerdevil[2744]: org.kde.powerdevil: [DDCutilDisplay]: ddca_get_non_table_vcp_value -3007 Nov 23 18:22:31 bazzite org_kde_powerdevil[2744]: dh=Display_Handle[i2c-5: fd=52], Keeping adjusted sleep multiplier 2.00 for SE_POST_WRITE or SE_POST_SAVE_SETTINGS Nov 23 18:22:33 bazzite org_kde_powerdevil[2744]: org.kde.powerdevil: [DDCutilDisplay]: ddca_get_non_table_vcp_value -3007 Nov 23 18:22:33 bazzite org_kde_powerdevil[2744]: dh=Display_Handle[i2c-5: fd=52], Keeping adjusted sleep multiplier 2.00 for SE_POST_WRITE or SE_POST_SAVE_SETTINGS Nov 23 18:22:35 bazzite org_kde_powerdevil[2744]: org.kde.powerdevil: [DDCutilDisplay]: ddca_get_non_table_vcp_value -3007 Nov 23 18:22:35 bazzite org_kde_powerdevil[2744]: dh=Display_Handle[i2c-4: fd=52], Keeping adjusted sleep multiplier 2.00 for SE_POST_WRITE or SE_POST_SAVE_SETTINGS Nov 23 18:24:34 bazzite org_kde_powerdevil[2744]: org.kde.powerdevil: [DDCutilDisplay]: ddca_get_non_table_vcp_value -3007 Nov 23 18:24:34 bazzite org_kde_powerdevil[2744]: dh=Display_Handle[i2c-3: fd=52], Keeping adjusted sleep multiplier 2.00 for SE_POST_WRITE or SE_POST_SAVE_SETTINGS Nov 23 18:24:36 bazzite org_kde_powerdevil[2744]: org.kde.powerdevil: [DDCutilDisplay]: ddca_get_non_table_vcp_value -3007 Nov 23 18:24:36 bazzite org_kde_powerdevil[2744]: dh=Display_Handle[i2c-4: fd=52], Keeping adjusted sleep multiplier 2.00 for SE_POST_WRITE or SE_POST_SAVE_SETTINGS Nov 23 18:24:38 bazzite org_kde_powerdevil[2744]: org.kde.powerdevil: [DDCutilDisplay]: ddca_get_non_table_vcp_value -3007 Nov 23 18:24:38 bazzite org_kde_powerdevil[2744]: dh=Display_Handle[i2c-5: fd=52], Keeping adjusted sleep multiplier 2.00 for SE_POST_WRITE or SE_POST_SAVE_SETTINGS Nov 23 18:28:04 bazzite org_kde_powerdevil[2744]: org.kde.powerdevil: [DDCutilDisplay]: ddca_open_display2 -3029 Nov 23 18:28:04 bazzite org_kde_powerdevil[2744]: org.kde.powerdevil: [DDCutilDisplay]: "XZ272" retrying to set DDC/CI brightness in 1000 milliseconds - attempt no. 1 Nov 23 18:28:04 bazzite org_kde_powerdevil[2744]: dh=Display_Handle[i2c-4: fd=52], Keeping adjusted sleep multiplier 2.00 for SE_POST_WRITE or SE_POST_SAVE_SETTINGS Nov 23 18:28:08 bazzite org_kde_powerdevil[2744]: org.kde.powerdevil: [DDCutilDisplay]: ddca_get_non_table_vcp_value -3007 Nov 23 18:28:08 bazzite org_kde_powerdevil[2744]: dh=Display_Handle[i2c-5: fd=52], Keeping adjusted sleep multiplier 2.00 for SE_POST_WRITE or SE_POST_SAVE_SETTINGS Nov 23 18:28:08 bazzite org_kde_powerdevil[2744]: dh=Display_Handle[i2c-3: fd=52], Keeping adjusted sleep multiplier 1.60 for SE_POST_WRITE or SE_POST_SAVE_SETTINGS Nov 23 18:28:10 bazzite org_kde_powerdevil[2744]: org.kde.powerdevil: [DDCutilDisplay]: ddca_get_non_table_vcp_value -3007 Nov 23 18:28:10 bazzite org_kde_powerdevil[2744]: dh=Display_Handle[i2c-4: fd=52], Keeping adjusted sleep multiplier 2.00 for SE_POST_WRITE or SE_POST_SAVE_SETTINGS Nov 23 18:29:07 bazzite org_kde_powerdevil[2744]: org.kde.powerdevil: [DDCutilDisplay]: ddca_get_non_table_vcp_value -3007 Nov 23 18:29:07 bazzite org_kde_powerdevil[2744]: dh=Display_Handle[i2c-3: fd=52], Keeping adjusted sleep multiplier 2.00 for SE_POST_WRITE or SE_POST_SAVE_SETTINGS Nov 23 18:29:09 bazzite org_kde_powerdevil[2744]: org.kde.powerdevil: [DDCutilDisplay]: ddca_get_non_table_vcp_value -3007 Nov 23 18:29:09 bazzite org_kde_powerdevil[2744]: dh=Display_Handle[i2c-4: fd=52], Keeping adjusted sleep multiplier 2.00 for SE_POST_WRITE or SE_POST_SAVE_SETTINGS Nov 23 18:29:12 bazzite org_kde_powerdevil[2744]: org.kde.powerdevil: [DDCutilDisplay]: ddca_get_non_table_vcp_value -3007 Nov 23 18:29:12 bazzite org_kde_powerdevil[2744]: dh=Display_Handle[i2c-5: fd=52], Keeping adjusted sleep multiplier 2.00 for SE_POST_WRITE or SE_POST_SAVE_SETTINGS Nov 23 18:31:44 bazzite org_kde_powerdevil[2744]: org.kde.powerdevil: [DDCutilDisplay]: ddca_get_non_table_vcp_value -3007 Nov 23 18:31:44 bazzite org_kde_powerdevil[2744]: dh=Display_Handle[i2c-4: fd=52], Keeping adjusted sleep multiplier 2.00 for SE_POST_WRITE or SE_POST_SAVE_SETTINGS Nov 23 18:31:47 bazzite org_kde_powerdevil[2744]: dh=Display_Handle[i2c-4: fd=52], Keeping adjusted sleep multiplier 2.00 for SE_POST_WRITE or SE_POST_SAVE_SETTINGS Nov 23 18:31:49 bazzite org_kde_powerdevil[2744]: org.kde.powerdevil: [DDCutilDisplay]: ddca_get_non_table_vcp_value -3007 Nov 23 18:31:49 bazzite org_kde_powerdevil[2744]: dh=Display_Handle[i2c-5: fd=52], Keeping adjusted sleep multiplier 2.00 for SE_POST_WRITE or SE_POST_SAVE_SETTINGS Nov 23 18:35:05 bazzite systemd[2140]: Stopping plasma-powerdevil.service - Powerdevil... Nov 23 18:35:06 bazzite systemd[2140]: Stopped plasma-powerdevil.service - Powerdevil. Nov 23 18:35:06 bazzite systemd[2140]: plasma-powerdevil.service: Consumed 5.440s CPU time, 23.6M memory peak. ```
Other recent reports of things that sound semi-related: Bug 491891, Bug 493770. Both eventually stopped reproducing, leaving us with nothing to go on. :/
Here's something. I found a temporary solution which was to disable DDC/CI support in PowerDevil through the environment variable POWERDEVIL_NO_DDCUTIL. I thought I would try it because I was running into issues with some of my monitors not responding to the display brightness applet and repeated attempts to query the monitor using ddcutil. I figured there's either something wrong with the implementation of dccutil or there's something wrong with my monitor's firmware (I suspect the latter). Disabling ddcutil obviously has the drawback of not being able to control my display brightness for any display - including those that did work with properly before. However, I think it's an acceptable compromise for now. It does indicate that the issue I was experiencing in this ticket is very much related to DDC/CI or how PowerDevil uses it.