Hardware corner

For many years I had used the same 1366x768 laptop with no external monitor and Linux was a dream came true. I used Arch at the time, first with dwm then with i3, and had been doing that for around a decade. Then, a couple of years ago, I had to buy new hardware and I said to myself “let’s spend some money, buy something nice, install Ubuntu (which in my mind was epitome of “just works” at the time) and stay LTS for the rest of my life”. How wrong I was, I entered the nightmare of hi-dpi, multi-dpi, fractional scaling, all things that one can fairly say that are unsupported by Linux desktop until Wayland becomes mature enough (including migration of Chromium and most of the Electron universe). Lack of good fractional scaling support is particularly problematic since most laptop FHD screens are naturally 1.5x these days and so are external UHD screens. I know there is the xrandr oversampling workaround, that Ubuntu provides a nice frontend for it, etc. But it’s rather broken for Intel (mouse flickering, screen tearing, there is the 0.9999999 hack but still…) and totally broken for NVIDIA ([1], [2], [3]). With amdgpu I’ve had a good experience instead, but then my AMD laptop only implements “modern standby” so suspend is essentially non-functional until kernel 5.11 (let’s hope!) [4] although you can work around that by mapping suspend to hibernate as described below. So, I have to sadly say that the last two years, having used a Huawei Matebook Pro first and a HP Envy x360 later, have been my worst Linux experience ever, to the point of having turned to an MBP for some months in order to be able to finish my work without hassle. This for the first time in my life (I’ve used Linux without interruption for more than 20 years now, except for that episode).

Of course, this has nothing to do with Ubuntu itself, but everything to do with the fact that we live in a world of quickly changing hardware (specially screens, screens are the new soundcards, Wayland the new Pulseaudio) that Linux can only hope to support reactively. I came to the conclusion that the concept of LTS in the desktop is for people that somehow managed to get their hardware working at some point in the past and are lucky that it hasn’t broken apart yet and it’s still able to run the apps they need for work. The day they’re faced with the need to change hardware is the day the LTS fantasy dispels. Even buying hardware that ships with Linux preinstalled isn’t a full warranty that sh*t like that won’t happen and these models are often as expensive as (or even more than) a MBA M1. If you want to use hardware last-year-new and half-apple-priced you probably will have to deal with workarounds and 6-month point releases (or even rolling releases) for a time, then maybe you can go LTS for some years. The bigoted mentality one can found in some forums, specially in posts from some Debian desktop users that have successfully stayed for years in a mostly frozen setup (or that they say) and mock everyone else for wanting the shiny new thing, is almost offensive for people like me that just want to buy a new reasonably priced laptop to do their work because their old laptop has broken or is not powerful enough for their workload.

And so I feel like buying new hardware that supports Linux is still either a risky gamble or a slightly less risky but expensive proposition (I mean, expensive not only in the Jamie Zawinski way, but $$$-expensive). Sadly there is no 2-years-old-but-unused laptop market that I know of, otherwise it would be a no brainer for me. Therefore, if moderators don’t oppose, I would like to open a thread so those lucky you that have found a modern hardware setup that works well with Ubuntu desktop share your experience, detailed specs and necessary workarounds in order to spare the unlucky us some bucks and headaches. I would prefer that people that have an extremely constrained workflow that is 100% supported by Wayland refrain from mechanically posting “works for me”, “never has been a problem for me”, etc. Good screen-sharing and running popular non-Wayland-ready apps like VSCode is a prerequisite.

I will start with my Envy x360 13 w/ external 28’’ UHD screen experience, that has been rather good in GG (Ubuntu 20.10). In particular, amdgpu plays well with xrandr so I get decent fractional scaling and the iGPU is noticeable faster than the typical 620 that comes with average Intel chipsets. I’m also able to drive my external 4K monitor at 60hz through the USB-C port that supports DP 1.4 (you will need an adapter for this though, but they are cheap, I’m using one from Satechi). I find a 125% scaling factor for my laptop screen is ideal, while I set my external screen at 175% because both its area is larger and it’s further from my eyes. All this is done from the control panel, no hacky scripting was required. GNOME animations stutter a lot when using both screens at the same time but they are pretty smooth using one monitor at a time. Touchscreen is very responsive, the keyboard is quite good, the touchpad is decent, the screen is a neat FHD one (you get around 170dpi, not Retina but ok). I also use a cheap Wacom One tablet for giving classes and the experience has been great, even better than using Windows Ink, which somewhat interferes with the Wacom driver mouse mode (BTW, I use Xournal++ for my classes and PDF annotations, it’s wonderful).

As I mentioned above, there is a downside in that it only implements “modern standby” which is expected to be supported by kernel 5.11. I’m not too worried about this because I easily mapped suspend to hibernate as described in [5]. Of course, it’s a bit slower to resume but it also saves your battery 100%, in a future of “modern standby” only devices, I might even prefer my current hibernate by default solution. So far I haven’t seen any problems while resuming from hibernation, but I will report here if anything goes wrong.


[1] https://news.ycombinator.com/item?id=22953874
[2] https://bugs.launchpad.net/ubuntu/+source/gnome-control-center/+bug/1870736 (affects ~150 people, high importance)
[3] https://bugs.launchpad.net/ubuntu/+source/mutter/+bug/1873403 (affects ~50 people, high importance)
[4] https://www.phoronix.com/scan.php?page=news_item&px=AMD-SoC-PMC-Driver-Linux-5.11
[5] https://gitlab.freedesktop.org/drm/amd/-/issues/1230#note_768070

2 Likes

I agree that at 1366x768 everything looked perfectly proportioned, and no higher resolution since has looked quite as nice. It’s probably a consequence of most of the software we use being written when resolutions were that low.

The official GNOME plan of course is for everyone to use Wayland. In a Wayland session fractional scaling works well, without the performance sacrifice and bugs of X11 fractional scaling.

Actually I’ve been thinking for a long time that there’s probably a simpler solution to make more people happy: Just change the default font proportions. If we made the default font sizes smaller then both:

  • Scale 1.0 on low DPI screens becomes more useful.
  • Scale 2.0 on high DPI screens becomes more useful.

And indeed, I use scale 2.0 on 4K at 27", but only after reducing the interface font size to 9 in gnome-tweaks. Only one annoying bug with that plan is that GNOME Shell elements refuse to follow interface font changes.

In order to prove that a smaller default font is desirable I’ve been meaning to collect screenshots of simple dialogs with text from other operating systems (and older versions of Ubuntu) and comparing them all in a single collage image. My theory is that we’ll find it becomes more obvious then that the default GNOME/Ubuntu font size is too big.

1 Like

I know a bunch of people that use FHD laptops at 1x but upscale fonts. I’ve never tried going the other way around. Anyway, that’s a good trick as long as you use just one monitor. Once you have a second screen with different DPI you will need a second font scaling factor. Maybe that option could be located in the Display settings instead of Tweaks and made available per-display. Also, it’s very unfortunate that GNOME insists in seeing this sort of scale tunning as an accessibility setting and, therefore, shows a permanent icon in the top bar, I’ve reported that in https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3578.

I primarily work from a desktop, so my experience is not quite the same, but for a good year or two before I upgraded to my desktop I was working with two external monitors (one 4K and the other 2560x1440) and a Dell XPS 15 9570 (which has a 4K screen) on Ubuntu 18.04, which worked reasonably well for me; I had fractional scaling with X11 enabled with 150% until it was broken sometime in the last year (I never did figure out what package update, etc. broke this, but I can say that things now work nicely again in Groovy). That laptop has an NVIDIA video card and I used the proprietary drivers but was stable for me after I had tweaked around the various things (I think I had done something with modeset, and the experimental fractional X11 scaling enablement and probably some other little tweaks). It had numerous problems with Wayland however so I never used Wayland with it.