Fixing the rough edges of my Plasma setup
I use KDE Plasma on my Arch desktop and I’ve had some issues with getting my dual-monitor, mixed DPI setup to work properly as mentioned in my previous post.
I nuked and paved my existing installation a few weeks ago and set up Arch afresh on the same computer on a new SSD. On the previous install, I had set up the root filesystem on a hard drive with LVM and the system startup was very slow – ~45 seconds to reach SDDM, an additional ~30 seconds to drop to a usable desktop, and then ~5 seconds to run my xrandr
script.
The boot time and the time taken to reach a usable desktop was significantly lesser with the SSD – ~8 seconds to start SDDM, ~5 seconds to the desktop, ~3 seconds to run the xrandr
script. So I was happy.
As exciting as that was, I still had many rough edges and paper cuts, most of them persisting across multiple re-installations. Thanks to the posts by various posts by fellow Plasma users, I was able to solve them 🙂
SDDM
Monitor layout
When SDDM started, it always did with my monitor layout and DPI configured wrong. My secondary 1080p monitor is placed to the left of my primary 4K monitor and SDDM always placed the former to the right of the latter.
Thanks to this useful post, I was able to create a custom Xsetup
script by adding the xrandr
command from my previous post and configuring SDDM to run it when starting the display server.
# /etc/sddm.conf
[XDisplay]
DisplayCommand=/usr/share/sddm/scripts/Xsetup
Theme
I don’t like the default theme used by SDDM, maui
. Since Arch is a DIY distro, it doesn’t automatically set up the default Plasma theme, breeze
, like many other distros do when Plasma is installed.
Previously, I was using the Chili login theme to make the SDDM greeter look nice. I was unsure why and how, the Manjaro installation on my laptop, had a nice Plasma theme for SDDM. But I didn’t spend any time investigating at all till now.
I checked the Arch wiki page on SDDM theming to check if there are nice themes listed there that I could use and found that it is possible to configure the SDDM theme using the Plasma System Settings
application after installing the sddm-kcm
package. I found the default Breeze theme which I liked very much and set it as the theme. But that didn’t work. So I went ahead and configured it manually in sddm.conf
and voilà, it worked! 😀
# /etc/sddm.conf
[XDisplay]
DisplayCommand=/usr/share/sddm/scripts/Xsetup
[Theme]
Current=breeze
Desktop scaling
I was pleasantly surprised to see that Plasma automatically scaled my 4K monitor without having to configure scaling manually via the Display
settings application. Everything in the secondary monitor looked large as expected and I had to run my xrandr
command from the previous post, with some changes to restart Plasma shell for making the wallpaper fit the scaled display, manually every time due to something in the Plasma startup process resetting the screen configuration irrespective of when my xrandr
auto-start script ran.
Thanks to this post on Reddit by a fellow Plasma user, I found that the kscreen2
service was the culprit and disabling it ensured that the display configuration set up by the SDDM Xsetup
script persisted and as a result, I didn’t have to manually run my xrandr
script 😀 😌
There could be some side-effects caused by disabling the kscreen2
service, but I haven’t run into any till now 🙂
Emoji picker
The built-in emoji picker, introduced in Plasma 5.18, is very convenient and something that Plasma was sorely missing before. However, in spite of installing an appropriate emoji font, the emoji picker had a lot of missing emoji with blank squares and the color/gender variants of some emoji looked broken with those showing up as two separate symbols (one for the emoji and the other for the color/gender variant) overlapping each other.
Thanks to this Reddit post, I was able to solve the issue by creating a custom fontconfig
configuration file, ~/.config/fontconfig/fonts.conf
, with the configuration below and by forcefully rebuilding the font info cache files by running fc-cache -f
.
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
<match target="font">
<edit mode="assign" name="rgba">
<const>rgb</const>
</edit>
</match>
<match target="font">
<edit mode="assign" name="hinting">
<bool>true</bool>
</edit>
</match>
<match target="font">
<edit mode="assign" name="hintstyle">
<const>hintfull</const>
</edit>
</match>
<match target="font">
<edit mode="assign" name="antialias">
<bool>true</bool>
</edit>
</match>
<match target="font">
<edit mode="assign" name="lcdfilter">
<const>lcddefault</const>
</edit>
</match>
<match target="font">
<edit name="autohint" mode="assign">
<bool>false</bool>
</edit>
</match>
<match target="pattern">
<edit name="family" mode="prepend">
<string>Noto Color Emoji</string>
</edit>
</match>
</fontconfig>
It looks nice after the fix 👌🏼