Configure WAYLAND resolution on KDE

Duncan 1i5t5.duncan at cox.net
Sun Dec 25 09:11:19 GMT 2022


[As a courtesy this initial reply is posted to the mailing list and mailed 
directly to the original poster.  Please send followups to the list, as I 
will.]

欧阳 春晖 posted on Sun, 4 Dec 2022 05:17:41 +0000 as excerpted:

> Hi everyone.
> I'm recently trying to log into KDE using wayland on my Gentoo/Linux PC,
> I'm using a NVIDIA graphics card with a GTX 750, and using closed source
> drivers,

Gentoo here too, and I'm running kde/plasma on wayland, without xorg 
installed at all, so it's possible in general.

Tho there are some differences and some possible differences, the biggest 
of which is that that since a couple years after first switching to Linux 
shortly after the turn of the century (before I switched to Gentoo; I was 
then running Mandrake), I've had a *strict* personal policy of NO NVIDIA 
GRAPHICS due to their freedomware-unfriendly policies.  FWIW I had checked 
that nVidia had Linux graphics drivers before buying the card I was on 
when I switched to Linux, but back then (before I actually switched) I 
didn't know that there /was/ such a thing as closed-source Linux graphics 
drivers so I couldn't and didn't actually check that it was freedomware.  
If I'd have known the distinction I'd have never bought it in the first 
place.

That was the LAST time I made THAT mistake!  By a couple years later when 
I upgraded graphics cards again I had had enough, and I've steered as far 
clear of nVidia graphics since as I have servantware software (see the 
sig) in general, for the same reason.

In practice that has meant I've been running Radeons for 20 years now, 
although there were a few years in the late ATI and early AMD eras that I 
had to limit my upgrades to older hardware as the (then) newer stuff 
didn't have available freedomware drivers, but AMD eventually changed that 
and I've not had to worry about it for years, now.

Additionally, and being a Gentooer I'm sure you appreciate the flexibility 
as well tho you may have made other choices, I always login at the CLI and 
run kde from there, rather than running a *DM graphical login manager like 
SDDM.  Unfortunately that's even harder to find proper documentation for 
than just running KDE/Plasma on wayland, because so much of what's out 
there assumes starting plasma-wayland from a graphical login.

So naturally I had some of the same questions you do, when I first started 
investigating kde/plasma-wayland.  Fortunately it's not too difficult in 
general, even less so now than when I switched back in 2020, and I should 
be able to help with the general and gentoo sides of it, tho you'll 
obviously need to look elsewhere for any nVidia-specific stuff.

Also of interest, I'm running systemd, which I believe made things a bit 
simpler for me, but I *believe* gentoo (with help from the kde upstream) 
has been keeping openrc systems working with it as well.  Tho again I 
won't be able to provide much help with the openrc stuff if there's 
differences, but I expect existing gentoo openrc documentation to be 
sufficient there and don't anticipate any real problems in that regard -- 
I expect you'd be more likely to run into nVidia-specific than openrc-
specific problems.

And finally, I do run both ~amd64 not arch-stable, which I still expect 
may help as I'm not sure of the arch-stable plasma-wayland status, and in 
my case, actually the live-git *9999 versions of most kde/plasma packages 
from the gentoo/kde overlay, but plasma-wayland is now stable enough 
/that/ should not be necessary or even particularly beneficial any longer, 
though it certainly helped back in 2020 when I switched plasma-X to 
plasma-wayland as back then the latter was still buggy enough that the 
live-git versions made a big difference.

> he works on XORG at 1600x900, supports DRM (probably due to VGA monitors
> problem, unable to read EDID).

It looks like the first part of that sentence/paragraph got chopped off 
somewhere so I'm not entirely sure whether your card /does/ support (says 
support) DRM or does /not/ (the parenthetical suggests does not support), 
so I'm guessing...

> Normally, wayland should have the function of manually setting the
> resolution like xorg, but I don't know how to do it, and I can't find
> relevant information on the Internet. If KDE users or developers have
> any suggestions and ideas, please contact me.
> 
> If the WAYLAND compositor used by KDE does not support setting the
> resolution for the time being due to development reasons, please let me
> know,

I had exactly this sort of question as well, tho in my case it was more 
how do I tell plasma-wayland (or specifically kwin_wayland, on wayland, 
the plasma compositor as well as the window manager, though it does still 
split out some tasks to other kde/plasma components through various 
mechanisms, but kwin_wayland still does way more than kwin_x11) what to do 
with my two monitors and how they're positioned relative to each other, 
than resolution.  But either way, there's nothing like the old xorg.conf 
configuration mechanism, and finding documentation on the wayland 
replacement tends to be *quite* difficult, because unlike X, it's not 
standardized into a single configuration format and location but rather, 
varies depending on what specific compositor, kde/plasma/kwin in this 
case, you're using.

OK, to some hints that I'm hoping you'll find helpful:

General hints:

1) When running plasma-wayland, /most/ of your X-based apps will continue 
to "just work" via xwayland, in some cases with even less hassle than 
running under xorg.

I've actually been quite pleasantly surprised at this but it's true.  Even 
many apps you'd think were X-specific continue to "just work", in some 
cases with less bugs than under xorg, though of course sometimes limited 
in scope to the xwayland side of things.

For example, xrandr still prints valid resolution information because it's 
getting it from xwayland, though trying to use it to /change/ resolutions 
isn't going to work.  xprop still prints usable X properties (window 
class, title, minimized/normal/maximized state, dock/panel state, always-
on-top, always-under...) for various X windows running under xwayland, but 
it can't see wayland-native windows, only X windows.  For scripting, 
wmctrl still works (both info output and moving/closing/etc) with X 
windows but not wayland-native windows, and xdotool still can be used to 
manipulate X windows and send them keystrokes, etc.  If you're using a 
third-party X app to listen for global shortcut triggers, /some/ of them 
still work, while some don't, depending on whether kwin_wayland eats the 
keys or passes them on.  (Kwin will eat certain "extra" keys if it can see 
and use them for its own global shortcuts, but some of the more exotic 
ones it can't use and just passes on via xwayland, while a few like the 
common volume-up/dn/mute keys it apparently both responds to and passes on 
via xwayland.)

OTOH, while xset still prints generally valid values for its various 
settings, in my experience it can no longer be used to actually /set/ 
anything at all -- even for X apps.  The returned status is as if it 
accepted the change, but immediately querying the value again, via xset 
itself, still prints the unchanged value.

2) Both GTK and Qt/KDE have methods available to tell an app to run in X 
mode or wayland mode.  Normally this is done by setting/exporting an 
environmental variable (I'd have to look up the specifics but ask if you 
find you need them, or just google it) before starting the app, so it's 
easy enough to either do it from konsole (for temporary usage and 
experiments) or in a wrapper script (more permanent, if an app tries to 
run in wayland mode but is buggy, for instance, while running in X mode 
just fine).

Some versions of vlc's default qt-based GUI would try to run in wayland 
mode because qt supported it at the time, for instance, but it still had 
X-specific assumptions and would crash.  Tell it to run in X mode (so it 
ran via xwayland), though, and it would run just fine.  Those bugs seem 
fixed now, though, and vlc has been running fine for me in native wayland 
mode for awhile.  Similarly, early gtk3 versions of claws-mail would by 
default try to run in wayland mode when gtk detected it, but again would 
crash (and later wouldn't crash but would be buggy) due to X-specific 
assumptions.  In X mode (running in xwayland under wayland) it worked 
fine.  Newer claws-mail runs fine in native wayland mode in general, but 
some of its plugins (the global hotkey, which it can't get on wayland due 
to the stricter security model, and the tray icon, which I think /should/ 
work but at least last I tried it, just didn't show up, tho I'm not sure 
whether that's a claws bug, a gtk bug, or a plasma/xembed-sni-proxy bug) 
are still broken on wayland, though I don't believe X mode helps with 
that.

Additionally, some apps simply detect the DISPLAY and/or WAYLAND_DISPLAY 
environmental variable settings and behave accordingly, in which case it's 
possible to simply ensure the appropriate display var is set while the 
other is unset, to get it to run in the mode you want.

3) Have a backup compositor available.

I have found it very useful to have a second wayland compositor available, 
both in case kwin_wayland breaks and simply as a second point of wayland 
behavior comparison, if kwin_wayland is working but you're not sure 
whether the different-from-X behavior you're investigating is wayland-
specific or kde/plasma specific.

If you keep xorg working at least for awhile, as I did, that helps in some 
regards, but having a wayland that's not plasma to get that "second 
opinion" can still be helpful, and anyway, at some point plasma-xorg broke 
for me (probably some live-git thing) and I found it easier to just 
install a second wayland compositor than to troubleshoot what was wrong 
with plasma-xorg.

As for which one... I chose the reference-compositor weston, here.  It's 
not fancy but that's actually a /good/ thing for a backup you're likely to 
need to work when your primary doesn't.  As the wayland reference 
compositor it's well documented and /everybody/ should be testing against 
it.  It has few additional dependencies (actually none for me if I recall) 
and (of interest to gentooers) it's a relatively short/small build.  AND 
its config is a quite simple (and again well documented, manpage) text-
based $XDG_CONFIG_HOME/weston.ini (~/.config/weston.ini by default).

IOW, weston is arguably the /ideal/ second compositor. =:^)  Of course 
there are others if you want something fancier, but I just wanted 
something simple, simple to configure, and low dependency, that I could 
count on to run if my after all live-git plasma installation wouldn't, and 
so far it has filled that need perfectly. =:^)

As a more recent development of interest specifically to gentooers, it's 
now possible to set USE=-X globally, and only turn it on for specific 
packages.  I've done just that and can post a list of the packages I have 
USE=X set for, if you're interested, later, but I recommend that you just 
keep USE=X set for now, until you get comfortable with wayland and decide 
to try to set USE=-X and save some dependencies you can then quit worrying 
about having to update. =:^)

More specific hints:

4) KWin window rules (doesn't apply if you don't use them):

FWIW I depend on a somewhat large set of kwin window rules.  If you do 
too, be aware that many apps, particularly kde apps (where they seem to 
have taken the opportunity afforded by the wayland switch to get rid of 
some legacy naming policies) change window class names under wayland.  You 
will thus likely need to change window matching rules accordingly.

If like me you start out wanting to be able to run either xorg or wayland 
and need the rules to apply to both, you'll want to use the /duplicate/ 
/rule/ button, rename one or both of the rules to reflect xorg or wayland, 
and change the wayland rule to reflect the window class under wayland.

(Of course if you actually switch to wayland and eventually unmerge xorg 
as I did, you will then be able to delete all the X-specific rules, but 
that's likely to be a few months.)

But finally answering the question you actually asked...

5) Resolution and similar config a la xorg.conf:

I'm honestly not sure how much of the display config is supposed to be 
retained across plasma session, but at least here, for multiple monitor 
positioning (my default resolutions are correct), it's not.  See 5b below 
for my workaround.

5a) GUI: kscreen, the kcm.  Almost the same as in xorg.

The usual plasma GUI method to configure resolution, orientation, multi-
screen positioning, etc, is via the kcm (kcontrol module, aka plasma 
systemsettings, under hardware, display and monitor, display 
configuration, or from krunner or konsole, kcmshell5 kscreen, or via 
krunner via keyword such as display, screen or monitor, and select display 
configuration.  This works much the same in wayland as it does in xorg.  

5b) CLI/scripting, a la xrandr:

For scripting/CLI display configuration, you're looking for kscreen-
console (info) and kscreen-doctor (print or change settings).  
Unfortunately no manpages (or USE=handbook), but the usual --help option 
works.  (Again, these should work for xorg as well, but of course third-
party config doesn't work for wayland as it does for xorg.)

As alluded to above my resolutions are correct but I have a dual monitor 
setup and the default layout consistently reverses the right and left 
monitors.  I'd simply switch cables if I could (they're both HDMI on the 
monitor side, actually both bigscreen TVs), but one cable's too short to 
reach the far monitor and the graphics outputs are different (displayport, 
hdmi), so that won't work.

So I have a simple script that basically does this:

kscreen-doctor \
	output.1.position.3840,0 \
	output.2.position.0,0

(The logic's actually a bit fancier than that but that's the operational 
bit; I can post the full script if you like.)

And I have that setup in the autostart scripts (kcmshell5 autostart, or 
plasma systemsettings, startup and shutdown, autostart) to run at plasma 
startup.

That automates switching the two monitor positions at startup, so I don't 
have to do it manually.

Presumably you'd setup something similar if the default resolutions were 
wrong.

Alternatively...

5c) Supply a kernel commandline resolution and/or a fake EDID.

I'm unclear whether you have DRM working or not (that was the bit of your 
post that seemed incomplete).  If it's working and nVidia isn't trying to 
do something special here, a video= kernel commandline option (see 
$KERNDIR/Documentation/fb/modedb.rst) such as the ones I use for my multi-
output graphics card might work.  Here's what I use to force all three 
outputs to 4K (3840x2160) mode; modify output name and resolution as 
appropriate (note that the output name is the kernel name and may not be 
equivalent to the xorg output name, mine wasn't, something like HDMI-0 for 
xorg vs the HDMI-A-1 here, IIRC):

video=HDMI-A-1:3840x2160 video=DVI-D-1:3840x2160 
video=DisplayPort-1:3840x2160

If that doesn't work...

I've never had to do the fake EDID thing so I don't know what caveats 
apply, tho of course one of them could be nVidia-specific options you'd 
need to check their documentation for, but check the kernel config options 
(... indicates more):

DRM_LOAD_EDID_FIRMWARE

Device drivers > graphics support > allow to specify an EDID ...

FIRMWARE_EDID

Device drivers > graphics support > frame buffer devices >
support for frame buffer devices > enable firmware EDID


And lastly, an observation from following the git development...

They recently began much more highly integrating kscreen's autodetection 
logic into kwin and plasmashell (which needs it for wallpaper resolution, 
etc) and in general focusing on resolution retention, plugging/unplugging 
monitors and whether the previously used settings for that config are 
detected and reused, etc.  The work is quite recent and seems to be 
ongoing, but they are definitely aware of and focused on bugs in that area 
ATM, so improvements should be coming.

But also note that the planned branch of frameworks for qt6 is coming in 
January, after which frameworks-5 will be in no-new-features, bugfixes-
only, maintenance mode (plasma and apps/gear will branch later; they need 
a solid frameworks-6 base to build on first).  It is thus quite possible 
that some of the work won't be available until the 6 versions, tho it is 
acknowledged bugfixing so at least some should make it into upcoming 5 
releases as long as the code churn remains within bugfix-level 
requirements.

-- 
Duncan - List replies preferred.   No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master."  Richard Stallman



More information about the kde mailing list