Created attachment 109142 [details] The stack trace of kwin hanging when running on seat1 (non seat0) Hi I have a logind started session where my seat is not seat0 (it's seat1 for the example) I am trying to start Kwin in the same way that I can get it to start on seat1 (same variables and everything the same arguments) from within this session. ( $XDG_SEAT=seat1 , $(loginctl seat-status |head -1) == seat1 ) There doesn't seem to be a way to specify the seat on the command line, and maybe I am missing a variable. ...It could be that it is trying to use devices on seat0, or connect to seat0, but that's just my guess based on what a few other Wayland display servers tried to do when I tried to start it on seat1 I have the stack trace attached. It seems to hang VERY early, before it logs anything, and doesn't seem to do anything to the display. ...I was able to get the stack trace by attaching gdb to the process from a terminal running in seat0
KWin only supports seat0: https://cgit.kde.org/kwin.git/tree/libinput/connection.cpp#n137
I should have opened this as wishlist first... ...As an experiment, I tried to replace the "seat0" with getenv("XDG_SEAT") and it does the same thing. Something must hang earlier... I am trying to find out how to find that out
My assumption is that we need to use the seat associated with the logind session.
That's my assumption as well... ...let me know if you need me to try anything
Created attachment 109349 [details] Hashed up workaround
I was able to hash up a workaround. With this kwin actually starts on non-seat0, and the input devices work. But it's probably not good enough to be merged obviously.
Please submit patches via https://phabricator.kde.org/differential/diff/create/
That patch, ...I don't think it can be final... Two issues I come across, the devices in seat0 by default aren't found by udev_enumerate_add_match_property unless they are explicitly configured in a udev config file for seat0... ...and boot_vga devices will not be in all seats... ...and I'm still matching with getenv(XDG_SEAT)... I might be able to get around that, by changing logind.cpp, but that means this probably will have to be a series, I think?
I tried with arcanist, but I created two revisions that were not sent properly> How do I make arcanist send 6 separate commits
I suggest to ask for help in a developer forum instead of this bug tracker. If everything else fails, just upload the (each) patch using the link from comment #7. https://community.kde.org/Get_Involved
Yeah. I asked earlier, I think on the #kwin IRC, IIRC, and I was suggested to split them out there as well. It was less than 10 smallish diffs, so it was OK to do manually. I was able to submit D9552 D9553 D9557 As well as D9572 D9574
Let me know if there is something I need to change in the submissions I mentioned. They will fix this...
I guess this is almost done. For the drm backend it is, but for the framebuffer backend, all it needs is D9572 upstream. (which I hope my changes for that one are good)
I think this is resolved, my patches were merged. D9572 was the last one. Do I just mark it as resolved?
thanks for the patches