My new laptop arrived last week and I’ve been using it since then! Here are my impressions so far of the Lenovo ThinkPad X1 Yoga (gen 4), and how it compares to my old laptop, a 2016 HP Spectre x360:
Case and ports
Top-notch quality. The laptop feels lightweight given its size, and it is very rigid. I had worried that the dark aluminum case would show fingerprints, but it’s not a problem. Port selection is generous: 2 USB-C+Thunderbolt+charging ports, 2 USB-A ports, an HDMI port, and a combo audio jack. Perfectly sufficient for my purposes, and better than the laptop it replaced! I do wish the USB-C ports were more snug, though. USB-C cables tend to wiggle around when plugged in. Also it would be nice if the lid could be opened with one hand, but that’s a very minor nitpick. Overall it is solidly better than my old laptop.
The Thinkpad X1 Yoga’s 4K screen is unbelievable. Color reproduction is excellent, there is no significant ghosting, and brightness goes high enough to use it outdoors without limitation. I turn the brightness down to 50% when using it indoors. It’s by far the best screen I’ve ever had the pleasure of using, and a huge upgrade over my old laptop!
The keyboard feel is perfect; typing on it is a dream! And its black keys contrast perfectly with the white backlighting to produce a good low-light typing experience too. However the layout of the keys presents a few annoyances that I’m having to get used to:
- Left Fn and Ctrl keys are reversed compared to every other PC laptop keyboard. This can be changed in the BIOS, but then the labels don’t match the functionality, which is somehow even more confusing.
- The PrintScreen key is located between the right Alt and Ctrl keys, and I find myself constantly pressing it when I mean to press the right Alt key, especially to hit Alt+Left to go back in Dolphin or Firefox. Seems like a weird place to put it.
- The Home and End Keys are located up at the top of the keyboard, away from the arrow keys. I find myself wishing they were in a column at the right side of the keyboard as on my old laptop, where they were easier to press without changing the positioning of my right hand which often hovers around the arrows.
- There are no dedicated media playback keys. This is not a major issue as I have mapped Alt+Ctrl left/right/space to those functions in Plasma’s shortcuts KCM. Still, I do miss the dedicated keys.
- Toggling the keyboard backlight is done with Fn+Space, rather than a dedicated key. Also the multi-level brightness feature seems kind of superfluous. Simple on/off modes would be better IMO. Not really a big deal though.
Overall, compared to my old HP Spectre x360 laptop, I would say I prefer the typing feel and black key color of the Lenovo’s keyboard, but prefer the key layout of the HP’s keyboard.
The touchpad is perfect. It’s just the right size: not too big, and not too small. The glass-covered surface makes it a pleasure to use. With the Libinput driver, thumb and palm rejection are perfect, enabling my favorite way of using a touchpad: with my right thumb lazily resting at the bottom as if there were a physical button there. I click with the thumb and use the rest of my fingers to move the cursor or perform scrolling gestures. This is how I got used to using Mac touchpads back when I was an Apple user and the Lenovo’s hardware is good enough to replicate that. It’s not quite Mac quality, but I’d say the experience is 90% there. It’s really, really good, and a huge upgrade from my old laptop whose trackpad was a bit worse in almost every way.
The speakers sounded great in Windows during my initial test so I know that the hardware is quite capable. However, on Linux the sound is not so good, and more work is needed on the driver side. So at the moment, the speakers are a disappointment and a regression compared to my old laptop, but hopefully improved audio drivers will make them better in the future.
The camera is horrible, which is an unwelcome surprise for this very expensive computer. Its resolution is a very low 720p, and there is noticeable lag/latency, which makes video conferencing annoying for other people as my mouth does not match my words. This is a significant regression compared to my old laptop, which had a 1080p camera with no appreciable lag. I didn’t test the camera in Windows before installing openSUSE Tumbleweed, so I don’t know if the lag is a hardware limitation or a driver bug.
On the software side, things have not been as good.
Installing openSUSE Tumbleweed was not too big of a hassle, given that I’ve done this a number of times before. I had to disable secure boot, which entailed a trip to the BIOS and bricking Windows. After installation, a number of local workarounds were required to make things function, in particular the audio, which still does not seem to be working properly. Just check out the relevant Arch Wiki pages! That’s a lot of stuff that you need to fix manually. After the OS was installed, I started to run into other issues:
Speakers and sound
Initially, the speakers were not detected at all. The relevant Arch Wiki page was very helpful here: installing the
sof-firmware package fixed that, but then the audio quality was horrible. Compiling PulseAudio from source to get version 14 (which is not released yet) made it better, but still not as good as it was on Windows. I have filed a bug on PulseAudio as it seems like more work is needed: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/914
Also, there are pointless devices corresponding to the three HDMI/DisplayPort audio outputs, which should not be shown unless they’re actually in use. This affects both the Plasma audio applet as well as the Pavucontrol app:
It’s not totally clear to me whose fault this is, so I filed a bug on PulseAudio and also one on plasma-pa. We may be able to improve the display in Plasma at least, and I’m working on a merge request.
Battery life is poor. This laptop has a 51 watt-hour battery (up from 42 Wh on my previous laptop), but draws between 8 and 10 watts at idle. When actually using the machine, I’m only getting about 4 hours of battery life! Reviewers said that it got at least 7 hours in Windows, so this is pretty terrible.
powertop reports that the display backlight uses 10 watts of power at full brightness, 5 watts when at its lowest level, and 4 watts when turned off entirely! And the bottom of the case is always warm, so perhaps the CPU is also not idling enough. So I suspect that there are some performance and power management bugs somewhere, as this level of power consumption does not seem expected, even with the 4K screen. On the plus side, at least the laptop charges very quickly with the included 65W charger. I have not filed any bugs on this particular set of issues yet as I’m not suite sure where to start.
Out of the box, the touchscreen did not work properly on X11 with Plasma, KDE apps, and other Qt apps–but it did work with GNOME and Electron apps! After filing a bug report on Qt, I discovered that switching to the libinput driver fixes the issue! To do this, you can uninstall the
xf86-input-wacom package (which will also remove the Wacom page in System Settings, which may be undesirable if you’re using it) or alternatively you can apply the following patch to
diff -rubd /usr/share/X11/xorg.conf.d/70-wacom.conf.orig /usr/share/X11/xorg.conf.d/70-wacom.conf --- /usr/share/X11/xorg.conf.d/70-wacom.conf.orig 2020-06-08 08:08:01.576986784 -0600 +++ /usr/share/X11/xorg.conf.d/70-wacom.conf 2020-06-08 08:07:04.624218429 -0600 @@ -19,7 +19,7 @@ MatchUSBID "056a:*" MatchDevicePath "/dev/input/event*" MatchIsTouchscreen "true" - Driver "wacom" + Driver "libinput" EndSection Section "InputClass" @@ -43,7 +43,7 @@ MatchProduct "Wacom|WACOM|PTK-540WL|ISD-V4" MatchDevicePath "/dev/input/event*" MatchIsTouchscreen "true" - Driver "wacom" + Driver "libinput" EndSection Section "InputClass"
Ubuntu has already made a similar change to their packaging and I filed a bug report for openSUSE as well: https://bugzilla.opensuse.org/show_bug.cgi?id=1172669.
Next up, touch scrolling did not work in Firefox. I already knew how to fix this, and I’ll teach you too:
/etc/environmentfile. This turns on touchscreen scrolling and enables pixel-by-pixel touchpad scrolling.
- Doing the above triggers a nasty bug that breaks scrolling when a notification appears, but you can work around that as follows: Open System Settings > Window Management > Window Behavior > Uncheck “Click raises active window”.
Obviously we should just fix the KWin bug that makes this workaround necessary. We eventually will!
After this, touch input works well, especially for GTK apps. We have a lot of work to do to make our own KDE apps work as well with a touchscreen as GTK apps do on average.
Broken Flatpak apps
I briefly encountered an issue where none of my Flatpak apps would launch:
$ flatpak run com.discordapp.Discord Gtk-Message: 07:05:34.667: Failed to load module "unity-gtk-module" Gtk-Message: 07:05:34.667: Failed to load module "canberra-gtk-module" No protocol specified (Discord:4): Gtk-WARNING **: 07:05:34.667: cannot open display: :99.0 [fake-sandbox: zypak-sandbox] No data could be read (host died?) [fake-sandbox: zypak-sandbox] Quitting Zygote...
This utterly bizarre issue turned out to have been caused by me setting the computer’s hostname incorrectly, using
sudo hostname <new hostname> instead of
sudo hostnamectl set-hostname <new hostname> which triggers an SDDM bug which is fixed by the following open pull request: https://github.com/sddm/sddm/pull/1230. Hopefully the SDDM bug will be fixed soon, and in any event I should just add a GUI method of setting the computer’s hostname which I’ve been meaning to do for a while. See https://bugs.kde.org/show_bug.cgi?id=259285.
Scaling issues in Plasma
On X11, Plasma did not auto-detect that I was using a 4K screen, so I had to manually change the scale in the KScreen KCM. Then I had to manually sync that to SDDM in the SDDM KCM to make the login screen not look tiny. It would be nice if the appropriate scale factor would be autodetected, at least for 4k screens. I have filed https://bugs.kde.org/show_bug.cgi?id=422552. Happily, this already works out of the box on Wayland! So go Wayland.
In addition, once I did set a 200% scale factor, all the icons in Plasma looked tiny, making everything hideous. This is https://bugs.kde.org/show_bug.cgi?id=356446, and I worked around it by setting
PLASMA_USE_QT_SCALING=1 in the environment, which fixes the issue and makes Plasma look fantastic at 200% scaling. However it also makes the minimize animation zoom into the wrong location. Boooo! As before, all this stuff works out-of-the-box on Wayland. Hmm…
Once I had the scale properly set, I noticed that various UI elements were not automatically scaled:
- Certain Task Switchers: https://bugs.kde.org/show_bug.cgi?id=422547
- Cursors: https://bugs.kde.org/show_bug.cgi?id=422548
- Plasma dialog/popup/panel shadows: https://bugs.kde.org/show_bug.cgi?id=422559
- Default window sizes: https://bugs.kde.org/show_bug.cgi?id=422549
- Breeze window decoration corner radius: https://bugs.kde.org/show_bug.cgi?id=422551
The first three actually work fine on Wayland! So I’m getting the sense that I should just bite the bullet and use Wayland, since the high DPI behavior is much better.
Next, I incrased the scale to 250% to make everything a bit bigger, and then various icons that are supposed to be monochrome became colorful. This is a minor issue, but I’ve submitted a patch to fix it: https://invent.kde.org/frameworks/breeze-icons/-/merge_requests/3
Anyway, other than these issues, scaling works great. We’re pretty close, I think.
Conclusion and the future
I wish I could say that it’s been a pleasant, trouble-free experience and that I’m loving my new computer. In truth, getting the ThinkPad X1 Yoga to function well enough to comfortably write this post took several frustrating days of poring over documentation, filing bug reports, tweaking config files, and altering kernel parameters. On top of that, it’s still not quite there yet and is worse than my old laptop in several ways despite costing twice as much money. The high DPI scaling issues are our fault in KDE, and we need to do better, but that’s just the tip of the iceberg. The problems run throughout the entire software stack. Simply put, this is not acceptable in 2020. We need to up our game of partnering with hardware makers to ship FOSS operating systems by default. Everything I’m going through with this computer is the kind of problem that should be caught by paid Linux QA teams so that it can be fixed before the hardware is released to customers.
I continue to believe that we will get nowhere until more hardware comes with a Linux-based OS pre-installed. People shouldn’t have to deal with this kind of nonsense! My wife has been happily using KDE Neon on her laptop for two years, but I had to do the initial installation. Normal people want their computers to just work, not endlessly fiddle around with settings to make things functional that should have been so out of the box in the first place.
Part of me wishes I had instead gone with the SlimBook Pro X 15 or the System76 Lemur Pro, which were strong contenders in my search. The SlimBook laptop can even be pre-installed with Plasma-bearing operating systems like KDE Neon and Kubuntu, and I’m sure the System76 folks would have done likewise had I asked nicely enough. Everything would have worked perfectly out of the box, because SlimBook and System76 have QA teams paid to do what I’ve been doing myself for the ThinkPad X1 Yoga. Alas those laptops didn’t have some of what I was looking for in the hardware department (principally touchscreens and higher quality speakers), but perhaps I was underestimating the importance of integration into a cohesive product. It certainly stands in stark relief right now.
I’m sure things will get better over time. Kernel fixes will accumulate, and the bug reports I’ve filed will start to get fixed. I may even fix some of them myself. But this state of affairs is simply not acceptable if we ever want to grow our audience beyond the ranks of tech nerds. No normal person spends over than a thousand dollars on a laptop for real productive purposes that will have to become an extended science experiment before it works properly. We need more hardware sold with our software pre-installed, period. That’s the next frontier, and I strongly believe that we need to make it our end goal for everything we do.