plasma 6 X11 会话在超过 4k 的分辨率的显示器上,直接无法加载桌面?

破案了,opensuse 上的 KDE 设置模块的 krdp 没有生效,开了之后 ss -tulnp 没有显示监听,手动启动就可以了 :melting_face:。没事干是真的很恐怖,排查问题真讨厌,也很能杀时间 :rofl:

学姐,有啥进展不?

今天特意抽时间测试了Leap 15.5、Leap 15.6 上的x11以及Plasma 5.27,安装完nvidia驱动程序后,可以正常加载进桌面。


https://bugs.kde.org/show_bug.cgi?id=511940
向上游反馈了几个月,貌似也没人帮忙看下。。。自己靠ai搞了个临时解决方案,貌似是因为屏幕名称不一致,导致plasma-shell一直在等待"m_delayTimer->start()"且没有超时机制,无限等待下去了,没太搞明白更底层的原因。。。

顺便把krfb wayland下高分屏缩放后鼠标指针问题也搞了下:

diff -uNr krfb-26.04.0_orig/events/xdp/xdpevents.cpp krfb-26.04.0/events/xdp/xdpevents.cpp
--- krfb-26.04.0_orig/events/xdp/xdpevents.cpp	2026-04-08 20:50:44.000000000 +0800
+++ krfb-26.04.0/events/xdp/xdpevents.cpp	2026-04-24 12:56:06.434774808 +0800
@@ -15,6 +15,8 @@
 
 #include <QApplication>
 #include <QGlobalStatic>
+#include <QGuiApplication>
+#include <QScreen>
 
 class EventData
 {
@@ -23,8 +25,8 @@
 
     //mouse
     int buttonMask = 0;
-    int x = 0;
-    int y = 0;
+    double x = 0.0;
+    double y = 0.0;
 
     QScopedPointer<OrgFreedesktopPortalRemoteDesktopInterface> dbusXdpRemoteDesktopService;
 
@@ -60,10 +62,22 @@
         return;
     }
 
-    if (x != data->x || y != data->y) {
-        data->dbusXdpRemoteDesktopService->NotifyPointerMotionAbsolute(sessionHandle, QVariantMap(), streamNodeId, x, y);
-        data->x = x;
-        data->y = y;
+    double dpr = 1.0;
+    if (QScreen *screen = QGuiApplication::primaryScreen()) {
+        dpr = screen->devicePixelRatio();
+    }
+
+    if (dpr <= 0.0) {
+        dpr = 1.0;
+    }
+
+    double logical_x = (double)x / dpr;
+    double logical_y = (double)y / dpr;
+
+    if (logical_x != data->x || logical_y != data->y) {
+        data->dbusXdpRemoteDesktopService->NotifyPointerMotionAbsolute(sessionHandle, QVariantMap(), streamNodeId, logical_x, logical_y);
+        data->x = logical_x;
+        data->y = logical_y;
     }
 
     if (buttonMask != data->buttonMask) {

然而,krfb的延迟比x11vnc的延迟高了2秒以上。。。。wayland还是依托,唉。。。