Summary: | konsole, kwrite and konversation windows often disappear when disconnecting monitor | ||
---|---|---|---|
Product: | [Plasma] kwin | Reporter: | Jos van den Oever <jos> |
Component: | tabbox | Assignee: | KWin default assignee <kwin-bugs-null> |
Status: | RESOLVED NOT A BUG | ||
Severity: | major | ||
Priority: | NOR | ||
Version First Reported In: | 5.6.3 | ||
Target Milestone: | --- | ||
Platform: | Other | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: | |||
Attachments: |
picture of tabbox with empty entries for konsole windows (artist impression)
collated output from "xwininfo -tree -root", "xwininfo -id 0x12000e3" etc |
Qt 5.6.0? https://bugreports.qt.io/browse/QTBUG-42985 > By setting the QMainWindow widget to minimized and then putting it back to normal, the > windows show up in kwin_x11 tabbox and the task manager again: When this happens again, please run "xwininfo -tree -root" and check whether the X11 windows are still present (and mapped, you can pass their id to "xwininfo -id 0x123456" to inspect their mapping state) The bug is probably rather the missing resize in the tabbox than the same "confusion" in kwin_x11 and plasmashell. I thus predict the windows are either gone or unmapped (notably since only Qt5 clients are affected) > Qt 5.6.0?
No, Qt 5.5.1.
The typical behavior would be a crash of the client then ;-P (That's the 5.5 gap in the linked Qt bug) Please check the window list as described anyway - Qt5 clients are until today rather completely unreliable regarding screen layout changes :-( > Qt5 clients are until today rather completely unreliable regarding screen layout changes
How is that even possible? The X clients are fundamental to a widget set.
I've a script with the dbus commands I pasted above. Those make the issue barely bearable. KF5 really feels like an improvement if it were not for all the bugs.
I will provide the output when the issues happens again. (probably tomorrow when I move to my work desk).
(In reply to Jos van den Oever from comment #4) > KF5 really feels like an improvement if it were not for all the bugs. This is not a bug in KF5 but in Qt5. > How is that even possible? I don't think desktops are still a viable target to Qt5. > The X clients are fundamental to a widget set. QWidget is bitrot. Here's what I'm doing: 1) Start from multihead config with external monitor as main screen 2) Run 'Display Configuration' and disable external monitor 3) Konversation, Konsole, KWrite disappear, xterm, firefox, kmail (qt4), gkrellm remain. Plasma and KRunner also still ok I'm putting the output of xwininfo as attachments. Created attachment 98867 [details]
collated output from "xwininfo -tree -root", "xwininfo -id 0x12000e3" etc
The coordinates of the qt5 widgets are far outside the screen. Perhaps the taskbar filters out windows that are outside its view. Minimizing and maximizing via dbus brings the windows back in view and in the task manager. No, it filters out
> Map State: IsUnMapped
It's the Qt bug.
|
Created attachment 98761 [details] picture of tabbox with empty entries for konsole windows (artist impression) Connecting / disconnecting a monitor confuses kwin_x11. The applications konsole 16.04.0, kwrite (16.04.0) and konversation (1.6) with (kf 5.21.0) can get lost when disconnecting an external monitor from a laptop. Both screens are 1920x1080. The applications still occupy a space in the tabbox, but that space is empty: not icon and no title. The windows also disappear from the task manager. The applications are still running. This is pretty weird. It gets weirder. It is possible to make KWin find the windows again. The applications are still running and can be controlled with dbus/qdbusviewer. By setting the QMainWindow widget to minimized and then putting it back to normal, the windows show up in kwin_x11 tabbox and the task manager again: dbus-send --session --dest=org.kde.konsole --type=method_call --print-reply /konsole/MainWindow_1 org.qtproject.Qt.QWidget.showMinimized dbus-send --session --dest=org.kde.konsole --type=method_call --print-reply /konsole/MainWindow_1 org.qtproject.Qt.QWidget.showNormal