Linux on the Desktop, Part Three: Daily Driver

Bottom Line; Up Front

My Linux Daily Driver, an 8th generation Oryx Pro from System 76 running Pop!_OS, is the best computer I’ve ever owned.

A Little Backstory

Prior to 2022 my daily driver was a 2019 iMac. I bought it in mid 2019 to replace an aging 2013 MacBook Pro. The MacBook served me well, but it was starting to show its age, especially when gaming. I went with an iMac as a replacement because, at the time, I planned on sticking with the Apple ecosystem. In late 2021 I decided to switch back to Linux. There were many reasons, most of which I wrote about in the last post in this series[1]. I think it is enough to say I felt like macOS and the Apple desktop platform were sliding backwards. I wanted and needed a change.

Why System 76?

I was reminded of System76[2] thanks to a Reddit post[3]. I never really followed them, but I was aware they were one of the few PC manufacturers offering Linux pre-installed. I added myself to the mailing list to be informed when the Pangolin was available, even though I wasn’t in the market for a new laptop at the time. I thought the Pangolin would be a good device to use as a daily driver when I started considering a return to Linux. That was the plan until I saw a review for the Oryx Pro.

Anthony Reviews the Oryx Pro on ShortCircuit, and I’m Sold

The video’s[4] clickbait title reeled me in and the content held my attention. I think I watched the review three or four times when I finally changed my mind. The comparison to the MacBook certainly helped, but the features and build quality sold me. I decided to give the Oryx Pro a closer look. There was a little sticker shock because in late 2021 the price had increased around $1000, but the specs were impressive, and loaded out the way I wanted it was over $1000 less than a MacBook Pro with comparable specs. At the end of December 2021 I pulled the trigger and placed my order.

The Hardware

I’ll use simplified output from neofetch[5] to list the hardware:

cpu: 11th Gen Intel i7-11800H (16) @ 4.600GHz
gpu: NVIDIA GeForce RTX 3070 Mobile / Max-Q
gpu: Intel TigerLake-H GT1 [UHD Graphics]
memory: 21318MiB / 64159MiB
disk: 392G / 908G

I opted to “max out” both CPU and memory, kept the default 8GB RTX3070 with the 15" display, and opted for the fastest 1TB SSD. I don’t need 64GB of system memory or 16 cores today, but When I spec hardware for a desktop or laptop I load it out for what I think I might need in a couple of years. I think it’s safe to say this laptop will last me a few years.

The laptop spends most of its time docked and connected to a pair of 27" ASUS ProArt displays[6]; one connected to the Display Port and another to HDMI. I sometimes have to open the laptop display due to a bug I haven’t chased down, but most of the time I use the external displays exclusively. I have five USB hubs (each display has one built in, plus two USB-C, and the Launch keyboard) connected to support all of my peripherals, and make it easier to undock. I have five cables to unplug, but they’re arranged logically so docking is also a simple process.

As I sit here writing this I have one external hard drive, a pair of Klipsch The Fives[7], a Blu-ray writer, and a KVM switch[8]. I use the KVM switch to share displays, keyboard, and mouse with my work laptop. Why so many hubs? That’s easy; I want flexibility for the times when I need to plug in extra peripherals like a USB microscope, multiple external hard drives, USB thumb drives, phones, tablets, etc. I could probably pare things down a bit but my cable management keeps clutter to a minimum and I likely won’t run out of USB ports any time soon.

The Software

Linux Distribution

The last Linux distribution I used on the desktop was Arch Linux 10 years ago. System 76 ships their laptops with Pop!_OS[9] by default, and after kicking the tires in a VM for a few weeks prior to purchase, I decided to keep it. It was easy to set up full disk encryption out of the box (a critical feature for me) and I really like the COSMIC desktop. I haven’t felt the urge to change, although I am evaluating other distributions to hold in reserve as backups should System 76 change course. I’ve never been one to distro hop. I use computers as tools and I like consistency. Distro hopping involves change that I can do without. I’m not opposed to learning new things, I wouldn’t use Linux or choose the line of work I’m in if the case were otherwise. It’s all Pop!_OS for now.

Desktop Environment

Despite it being a driving force behind my leaving the Linux desktop 10 years ago, I’m back to using Gnome full time. Gnome 42 as shipped with Pop!_OS 22.04 is clean, stable, and includes the features I want and need. I installed a tiling extension, Awesome Tiles[10], to emulate the features of a similar tool I use on macOS, Magnet[11], and I because I don’t care for the default tiling behavior of COSMIC. I select a desktop environment over a window manager like i3wm[12] because I’ve used window managers before and by the time I finish tweaking everything I’m ⅔ or ¾ of the way back to a full-blown desktop environment anyway, so Gnome it is.

Applications

I could probably fork this topic into its own post. I’m not going to list every application I use, that would simply take too long and add little value to this post. According to neofetch I have over 3000 packages installed and just over half of those are libraries. Sixty-three are Flatpaks[13] and three are AppImages[14]. I don’t think these three metrics are all that useful unless someone reading this is conducting some sort of survey to see how many packages one installs on their system. I got back to my original point: it would take too long to cover everything; however, I will discuss a few of the common, and what I think are interesting, applications.

Daily Use

I don’t think my daily use applications are that unique. I use a web browser, e-mail client, and a terminal among other tools. I will take a little bit of time to talk about how I use them, however.

Web Browsers

I use four web browsers. Why four? It’s contextual. I use Mozilla Firefox[15] as my daily driver. I’ve been using it for years. It’s loaded out with several extensions and I apply many tweaks via user.js to enhance privacy and change browser behavior.

When I need to check a dodgy link or I’m visiting a site I don’t trust, or I just want an extra layer of anonymity. I use Tor Browser[16]. The only configuration change I make is setting the “Security Level” to safest.

Gnome Web[17], also known as Epiphany, is what I use when a site doesn’t render in Firefox. I sometimes use it for audio streaming and throw it in a separate workspace just to keep the clutter out of Firefox and to prevent accidentally closing the wrong tab. If it supported extensions I might consider it as a daily driver because it works with Firefox sync, and it’s fast and clean.

If I’m deep into terminal session and I want to look up something quickly, I use w3m[18], a text-based browser. It’s pretty advanced compared to something like lynx[19]. I don’t use it often, but it comes in handy when I don’t want to context switch to look up something.

E-Mail

I use Evolution[20] for e-mail almost exclusively. I keep a copy of Thunderbird[21] around and usually install mutt[22] for a terminal client, but Evolution is and will remain my goto for the present time. I evaluated Geary[23] from the Gnome Project for a while, but it’s too simple. It’s nice and clean and reasonably quick, but it doesn’t have common, simple features like right click context menus to do things like mark messages as read in a folder. I might sit down with the documentation one night to find out if I’m missing something, and if I am, I’ll probably switch. That would mean switching to a dedicated calendar application, but like Geary, Gnome Calendar[24] is simple and light.

Terminal

For a terminal emulator I use Alacritty[25] with tmux[26]. This came about as an exercise in forcing myself to learn and use tmux more often. Alacritty doesn’t support features like tabs, so it’s up to the user to figure it out and tmux was a way to have a tab-like interface while pushing me into the direction I wanted to go. I still keep Gnome Terminal[27] and rxvt[28] around in case Alacritty breaks. I think it’s pretty clear at this point I am a firm believer in redundancy, even at the application level. These days disk space is cheap, and even though I suppose having three or four of the same applications installed increases attack surface, the tradeoff is I always have a tool within reach if I need it.

Making Linux Feel More Like a Mac

Some will probably cringe at this header. Why would I want to make a Linux desktop feel more like a Mac when I’m using it to replace a Mac? Two words: muscle memory. I used Mac desktops for over 10 years before switching back to Linux so many of the keyboard shorcuts are deeply ingrained, and in many cases, automatic. Fortunately there are a few applications that made the transition easier. First up is kinto.sh[29].

kinto.sh is a script that installs and configures xkeysnail[30] to emulate Mac-style keyboard shortcuts. I first installed it on my Pinebook Pro to test it out and see if it worked as advertised. It did and it does. It isn’t perfect, no software is, but it works well enough to stay out of my way and let me work. I’ve thought about uninstalling it and going back to native Linux keyboard shortcuts, but I don’t feel like tackling that (re)learning curve right now. Besides, kinto.sh is free software, both in freedom and beer, so it’s minimal overhead for a lot of convenience.

I think if one piece of software can be credited with elevating my productivity on the Mac it is Alfred[31]. I think it’s one of the most ubiquitous productivity apps in the macOS ecosystem, and nearly everyone I know who uses a Mac has Alfred installed. I used it for three things: application launcher, clipboard history, and web search Swiss Army knife. I even bought the powerpack, although I never really used any of the features. I felt the app was so good that supporting the developer financially was a no-brainer. I couldn’t find an all-in-one solution to replace Alfred on Linux, so I had to settle for two applications: Albert[32] and CopyQ[33].

Albert is a near drop-in replacement for Alfred. It looks and feels much the same. It requires more configuration to get up and running, but it only takes a few minutes. A handful of the default extensions make it an application launcher, file search tool, and web search Swiss Army knife. It was easy adding custom web searches, and if it could manage clipboard history natively, it would be all I needed. CopyQ fills that gap nicely.

CopyQ is the most full-featured clipboard management tool I have ever seen. It almost has too many features, a common thread with many KDE/QT-based applications. That said, once I set up a keyboard shortcut to show the window, I was done with configuration. This is another tool I’d like to carve out time to sit down with the documentation and really learn about its capabilities. For now, it sits alongside Albert in the “system tray” giving me easy access to clipboard history.

I didn’t fill the last gap with an application, but rather a Gnome extension. I mentioned it earlier: Awesome Tiles. Like Magnet for the Mac (also mentioned earlier) it allows one to set keyboard shortcuts to size and tile windows as one sees fit. On the iMac I use Magnet to either Maximize windows, snap to half the display, or snap to a quarter of the display. Awesome Tiles gives me all of this and the ability to swap windows between displays or workspaces without a lot of learning new keyboard shortcuts.

It’s worth mentioning that I did nothing with themes aside from switch back to the default Adwaita theme. The Pop!_OS light and dark themes are nice, I just like the color scheme of Adwaita better. In the past I tried installing themes to make Gnome look and feel like macOS, but there were always pieces that weren’t quite right, and it was more hassle than it was worth, so I tend to stick with defaults. I was never big on ricing[34] anyway.

Overall it took a PPA, a package not included in the repositories, a Gnome extension, and a little effort to make it all work, but I’m quite happy with how closely my desktop environment emulates the feel of a Mac.

How I Use Linux

As is the case with my software choices, I don’t think my use case for Desktop Linux is unique. Most, if not all, of the tasks I perform daily could be accomplished using the same software on Windows or macOS. I choose Linux because it stays out of my way when working, and gives me easier access to change configurations or system defaults than other platforms. Software freedom is more than access to source code and ease of access (price, distribution) in my opinion. Feeling like I have control of my device and access to its hardware is equally important, making Linux an ideal platform for me. So how do I use Linux?

Entertainment

Music and Video

My laptop is an entertainment center more than anything. I have access to all of my music via Rhythmbox[35] and bookmarks to several streaming services. I also installed the Spotify[36] desktop application. I use Firefox to consume on Youtube[37], Odysee[38], and other video sharing sites.

One ongoing project of mine is to digitize my vinyl LP collection. I doubt I’ll ever complete it, but fortunately Linux has a wealth of tools that make recording and processing the audio easier. The interface between the turntable and the laptop is a Vincent Audio PHO-701[39] phono pre-amp. I record audio using Audacity[40] and also use it for most of the audio processing. I’ve been experimenting with Gnome Wave Cleaner[41] recently, but it doesn’t seem to work very well, or at all, or I’m not using it correctly. Audacity works best for me right now. For tagging I use MusicBrainz Picard[42], and sometimes EasyTAG[43] if Picard doesn’t work for some reason.

When a new CD comes in I rip it with fre:ac[44]. The interface isn’t the prettiest, and it has a bit of a learning curve, but it works well. Sometimes the metadata is pulls in is trash, but that’s why I have Picard and EasyTAG installed.

Gaming

I have a fairly minimal “gaming stack” installed. The usual suspects wine[45], Steam[46], and Lutris[47] are present along with proprietary nVidia drivers[48]. I use an off-the-shelf kernel; no custom compiles. In over 20 years of using Linux I’ve never noticed an appreciable performance boost for day-to-day work using kernels with realtime tweaks and other features enabled. I had Feral Interactive’s[49] gamemode[50] installed at one point, but other than driving the fans harder, I didn’t notice an improvement. The same goes for As far as games are concerned, I play one popular MMORPG most of the time. I also have a few RTS and shooters installed. None of them are AAA titles, at least today, and require a lot of gaming horsepower. I’m a casual gamer, and it shows.

Systems Engineering

Beyond fun and games I also use my daily driver for systems engineering tasks. I have a home lab and a nominally complicated network to manage, and Linux is perfect for the task. My weapon of choice for infrastructure-as-code (IaC) is Ansible[51]. I haven’t automated everything yet, but most key systems are managed with a playbook. I have quite a few Docker-ized[52] applications, so I have Docker installed to use in a local development environment. Speaking of which, I like to use Anaconda[53] for python virtual environments. I don’t use it for data science, but it’s handy for creating environments for Ansible and other python-based tools that aren’t installed from package repositories.

I have a cloud footprint across multiple providers. I stick to provider-native technologies where it makes sense and use Terraform[54] for the rest. I could go all in on Terraform, but I think being a polyglot makes one more attractive to hiring managers.

I use virtualization to test different Linux distributions and operation systems. I also keep a Windows 10[55] VM around for the odd application or website that requires it. My virtualization stack uses virt-manager[56], qemu[57], and kvm[58]. I know VirtualBox[59] is popular with many, and it’s a nice all-in-one solution, but it’s also owned by Oracle[60] who seem to have an uncanny knack for pulling a reverse Midas[61] with anything open source they acquire.

Writing

The extent of my writing is in the form of these blog posts, research notes, and documentation. I do most of my writing in Markdown[62] using either Joplin Notes[63] or VSCodium[64]. Which app depends on what kind of writing I’m doing. I use Joplin when I’m taking notes, brainstorming, or creating an outline. Sometimes the outlines turn into proper documents and I’ll move the text over to VSCodium to continue editing. For example, blog posts often start as a single note in Joplin and eventually an outline. I might write a few paragraphs before copying into a markdown document in VSCodium. VSCodium doubles as my IDE of choice. I use Hugo[65] to convert the markdown into static HTML pages uploaded to a cloud host; a topic I may cover in a future post. If I need to proofread a document I use LibreOffice[66] with the Language Tool[67] extension. Language Tool is a grammar checker sort of like Grammarly[68], only it is free and open source software with a commerical version available.

Other Software

I could probably write another dozen paragraphs or so if I wanted to detail every piece of software I use. I deliberately left out most of the command line tools I like to use. Some because they relate to other posts I have in the pipeline, and others because it would end up being filler in terms of both word count and external link. By the way, the reason I list all of the links below is to provide references and make it easier for readers to find more information. A major pet peeve of mine is reading a blog post or article with declarative statements and there is no data to back it up. Most of my posts are opinions, and I don’t label them as such, but when I present factual information I link it to my sources, but I digress. That’s enough about software.

Gaps

I would be remiss to ignore gaps in features or support. Fortunately the gaps are few, and while there are quirks and annoyances, they don’t get in the way that much. I’ll save the quirks for another post, but I will briefly cover gaps.

As I write this there is only one feature gap I haven’t been able to close: syncing my music library to an iPhone 11. If I plug in the phone when Rhythmbox is running, with the iPod plugin enabled, the application crashes. It’s a known bug[69] in versions prior to 3.4.5. The fixed version is available as a Flatpak, but I don’t think it ships with the iPod plugin, or if it does I can’t figure out how to configure it properly. It’s a minor inconvenience. I use my iMac to keep my library synced instead, and my iTunes Match[70] subscription is still active, so it’s not a deal breaker. I’m sure at some point I will figure it out.

That’s it for gaps. I am still surprised I didn’t run into more problems with the migration. 10 years is a long time, so I would be naive to think nothing improved during the time I was away.

Wrapping Up

This was a long-winded post that didn’t focus all that much on the hardware in my daily driver. It was mostly about how I use it. I suppose that makes sense. Only so much can be said about the hardware and I didn’t, and don’t as a general rule, run benchmarks to determine a performance baseline. I don’t want a laptop that runs benchmarks well, I want a laptop that runs the software I want to use well. I understand benchmarks can give one a general idea of how hardware will perform, but I’ve never really cared about those numbers. It all boils down to perception, and in the case of this 8th generation Oryx Pro, it hits all the marks.

External Links

  1. Linux on the Desktop, Part Two: Why I Returned
  2. System76
  3. System76 AMD Laptop Announced: Pangolin
  4. The COMPLETE OPPOSITE of a MacBook - System 76 Oryx Pro
  5. neofetch
  6. ASUS ProArt Display
  7. Klipsch The Fives
  8. Tesmart KVM switch
  9. Pop!_OS
  10. Awesome Tiles
  11. Magnet
  12. i3wm
  13. Flatpak
  14. AppImage
  15. Mozilla Firefox
  16. Tor Browser
  17. Gnome Web
  18. w3m
  19. lynx
  20. Evolution
  21. Thunderbird
  22. mutt
  23. Geary
  24. Gnome Calendar
  25. Alacritty
  26. tmux
  27. Gnome Terminal
  28. rxvt
  29. kinto.sh
  30. xkeysnail
  31. Alfred
  32. Albert
  33. CopyQ
  34. Desktop Ricing
  35. Rhythmbox
  36. Spotify
  37. Youtube
  38. Odysee
  39. Vincent Audio PHO-701
  40. Audacity
  41. Gnome Wave Cleaner
  42. MusicBrainz Picard
  43. EasyTAG
  44. fre:ac
  45. wine
  46. Steam
  47. Lutris
  48. Unix Drivers
  49. Feral Interactive’s
  50. gamemode
  51. Ansible.
  52. Docker
  53. Anaconda
  54. Terraform
  55. Windows 10
  56. virt-manager
  57. qemu
  58. kvm
  59. VirtualBox
  60. Oracle
  61. Urban Dictionary: Reverse Midas Touch
  62. Markdown
  63. Joplin Notes
  64. VSCodium
  65. Hugo
  66. LibreOffice
  67. Language Tool
  68. Grammarly
  69. Rhythmbox crashed on plugging in iPhone 11 Pro with iOS 13.3
  70. Subscribe to iTunes Match