Using the Raspberry Pi 4B as a desktop

Quick shoutout to this Jeff Geerling blog post and associated video in YouTube (both are worth a read & watch). It’s funny, but YouTube recommended the video to me after I too tried to use the Raspberry Pi 4B as a desktop replacement for a week … Google’s watching!

In my case I got a work laptop and my desk had no space for my work laptop and iMac, and I wanted something that would fit in along with the work laptop and external monitors and which I could hook up to a USB KVM switch so I can easily switch between the work laptop and small desktop replacement as and when needed. Since a Raspberry Pi is small and it works with dual 4k displays that seemed like a good route to go.

I purchased an 8GB version for a start. With browsers hogging up memory nowadays I figured more RAM can’t hurt. I also splurged and got it a nice red heatsink case.

I decided not to go with Raspberry Pi OS as the default versions are 32-bit only and that won’t be able to see the entire 8GB of RAM. My alernatives were either Ubuntu MATE or Manjaro Linux. The latter offers i3, KDE, and XFCE variants too. I was inclined towards Manjaro as I had been using the XFCE version on a recently purchased laptop, but things didn’t go smoothly. For one, both the KDE and XFCE versions would be stuck during the boot process (I forget the exact message) and so I gave up and tried Ubutu MATE. That booted fine but the mouse was drunked, plus I am generally not a fan of Ubuntu (uh-oh!), and so I tried Manjaro again and this time Googled on the error message. Turns out just waiting a while is enough, and once it boots I can do an upgrade and then the waiting won’t happen next time around. So I did that with KDE, didn’t enjoy the experience much (too dark, the drunken mouse again, plus I have this thing in my head that KDE is supposed to be slow) and so went with Manjaro XFCE.

This time I Googled on the drunken mouse issue and came across a fix. Things were otherwise fine with Manjaro but something about the display wasn’t great… the dual screens were cranky at best (it worked sometimes, it didn’t come up other times) but more importantly my eyes started feeling sore. I reduced the resolution and stuck to a single screen and things were fine then. Not great, but better than before and I could do with a single screen and less sore eyes.

Oh I forgot, somewhere in between I jumped ship again and this time went with the beta build of Raspberry Pi OS 64-bit. But boy was that a sad experience. It too had the lag and stuff which I fixed, but all the software is so old and it didn’t look that. I forgot… it’s based on Debian after all, and I hadn’t used desktop Linux in a long long time (with the recent exception of Manjaro XFCE on a laptop… but that’s based on Arch and hence newer software). So I skipped Raspberry Pi OS 64-bit and wen’t back to Manjaro XFCE.

On the whole things were fine with Manjaro XFCE, but I left it after a while. There were small niggles. Sound didn’t always work, YouTube videos froze, some software I wanted weren’t available (but not a big deal actually coz usually there was a version in AUR which I could compile for ARM by adding it as an architecture). I enjoyed using Manjaro XFCE on the Pi, but it was because I had low expectations to start with I guess. I wasn’t expecting to replace my iMac with it, I just wanted something I could quickly use to get some work done… and it fit the bill for that. Wasn’t smooth or fast, but that’s expected I guess, and ideally I should have replaced the micro SD card with an SSD and tried booting off that. I didn’t though, coz after a week I got bored and changed things around so now I don’t use the Pi as a desktop any more.

One thing I did try though was download VcxSrv on my Windows laptop and use that as the X server for Pi. :) This link has some more screenshots if you are interested. Make sure to disable access control while setting it up… as the docs suggest. After that I could SSH into the pi with X-forwarding enabled (ssh -X <pi>), set the display of my Pi to be the Windows laptop (export DISPLAY=<windows laptop>:<port that VcxSrv is listening on>) and then launch Firefox or XFCE (startxfce4). Very cool, reminded me of my college days!