Lenovo Update

It’s been since I got a Lenovo as and on it, so I guess it’s time for an update on how that’s going. Spoiler: I installed .

The short version is that I’ll eventually be installing Linux on it again, but not just yet.

The long version is that there were a few things that drove me to do this:

  • kept getting “stuck” while Alt-Tabing through windows, which I do a lot and was especially frustrating in a time-critical situation that led to my missing an opportunity to debug something.
  • I decided to take a stab at fixing the “plug in the manufacturer’s original power adapter” bug by upgrading the BIOS, and I just couldn’t find any way to do it while running .
  • I have become really used to window management features (including the SnapAssist layouts that appear when you hover on the maximize button), to the point where I miss them in both Linux and macOS.
  • I wanted to try out some music software (especially VSTs) that simply won’t run on Linux, and the Lenovo has a much beefier CPU than my 2016 MacBook Pro.
  • I also wanted to try out a bunch of other things (Unity, for instance) that I can’t currently run properly on my MacBook and didn’t want to have on a corporate machine. In fact, having a Windows machine without corporate device management was an added bonus.

Hardware-wise, there is little to say. The machine is very solid, although I’ve picked up a bit of occasional coil whine coming from a speaker in the late evenings and I’m a bit sad the Radeon graphics can’t drive my 5K display at full resolution.

The Tweaker Lifestyle

Mind you, life in was pretty nice. AppCenter just worked, and Elementary core components got daily fixes, so I could see new tweaks land on the OS every week.

And, like I wrote, Web (Epiphany) was indeed good enough for daily use and nearly like Safari in that regard. It has some layout and JavaScript bugs, though, so I spent a while inside Firefox - but eventually installed the Edge beta for Linux for bookmark and password syncing across all my machines. That’s right, no more 1Password…

After a couple of kernel updates, fan noise had become sporadic, power management was working better and I hadn’t experienced any significant annoyances other than one time when the machine was “trickle charging” and did not fully charge overnight (which also drove me to update the BIOS).

Fiddling with cpufreq (for which I found a nice GUI) allowed me to tweak power consumption to an insane degree (like having only 2 CPU cores online at half speed), which eliminated fan noise altogether and boosted battery life.

So yes, it’s still a great OS, and I expect it will be very much improved when I get back to it.

Windows Pluses

After getting everything set up (essentially Windows, all the updates, PowerToys, Fira Code, and , inside which I set up and my dotfiles), a few things were immediately apparent:

  • Having fractional font scaling was a significant improvement.
  • The Lenovo trackpad supports all the Windows multitasking gestures (some of which doesn’t have equivalents for), which makes for a definitively superior multitasking experience that is unrivaled except on the Mac (and even then I’m missing SnapAssist there).
  • Quake Champions (which I made a point of installing Steam for, to compare with what I’d seen earlier) was able to get to 60fps steadily on the 5700G.
  • Everything I plugged in to the machine just worked (some USB MIDI devices just wouldn’t register under for some reason).

Also, I finally found a use case for flipping the screen and using the machine as a tablet (running , which has amazing touch screen support), and Windows obligingly flipped the display orientation automatically, without any Lenovo-specific software installed.

Update: It bears noting that I’ve also installed a few creature comforts like RoundedTB for a nicer looking taskbar and Winaero Tweaker to get rid of the glaring white titlebars in legacy apps. Also, Unity and Unreal Editor mostly work on this hardware, which is quite nice (although I have no ready use for them as yet).

Linux Development in Windows

I still needed Linux to work on my personal projects, though, so I installed WSL2 with Ubuntu 20.04 LTS inside.

I’m not going to go on about WSL other than point out that Windows Terminal is in the Windows Store and (since it now allows me to hide scrollbars) I now consider it good enough for daily use.

Filesystem shenainigans aside (I have a few Windows paths symlinked from WSL for sanity, like Documents, SyncThing and Downloads) it is essentally the same thing as popping open any other terminal window on any UNIX system, and a far cry from the days I would hack things inside to get them to run under Windows NT.

Like I wrote , It just works, and the only caveat is that I don’t have full hardware device access (although some USB serial devices poke through). But only someone like me would notice (or need) that.

There are a number of recent improvements as well, but I have zero interest or use for running graphical Linux stuff via WSLg right now, so I haven’t even tried most of them – I just open a full-screen terminal window with tmux (or VS Code using the Remote extension) and get to work.

The only real caveat is that my current setup hinges on running to have all my git repositories instantly, brainlessly synced across my machines, and that running it on Windows works well until you try to run git from inside WSL2 and accessing the Windows filesystem – which feels dog slow in comparison with just having a clone inside WSL’s VM when (like me) you have repos that are around 2GB in size.

I just moved those into WSL and began syncing them manually. It’s not a problem on this machine.

The Minuses

There are, however, various annoyances worth reporting on:

  • The AMD Radeon software sucks (visually and in terms of user experience) so badly I regret ever having installed it to see if it would improve graphics performance, and it stopped working after Windows Update installed its own updated graphics drivers. I had seriously forgotten how bad PC software was…
  • Using Surface devices has spoiled me, and I was shocked when I actually tried to use Lenovo’s 720p webcam for a Zoom call (which I wouldn’t have done under Linux). The good news is that plugging in a Logitech BRIO also afforded me Windows Hello face recognition, which was useful on my desk.
  • Font rendering is still not as (subjectively) good on a 1080p display as on the Mac or Linux (again, Surface HIDPI screens have spoiled me). I have learned to tune it out when working and have taken the time to go through the Adjust ClearType text wizard, but it still looks like pants.
  • For whatever reason, many application windows tend to have white title bars and dialog boxes even in dark mode, which is extremely annoying. Although I use Windows daily for work, I hardly ever open anything else besides Edge, Office and Teams, so wading into the world of Win32 apps yielded a bunch of weird surprises like this that were all the more apparent after being able to spend three months in Linux, where the only white on display came from web pages and text.
  • Worse, besides legacy Win32 apps, there are still various essential system utilities (like Task Manager) which apparently can’t even think about using dark mode, and the white title bars are just hideous when in what I’m now calling “faux dark” mode (something I grumble about every time I have the occasion).

And, of course, the machine never crashed when running Linux, whereas the very first time we decided to record a podcast episode, it crashed exactly when I was using to export my end of the conversation – instant reboot when hitting Save, but fortunately was able to recover the session.

I’m hoping that was a one-off (I’ve had pretty much zero crashes on any of my Windows machines this year, to be honest, but then again I haven’t done any serious media work on any of them). If it isn’t, I’ll likely be back on Linux before the end of the year.

Update: I have a suspicion that was due to the AMD High Definition Audio Device driver, which I’ve since disabled. Let’s wait and see…

This page is referenced in: