A follow-up to my 2026 linux post, things have gone better than expected!
Three months ago I started an internship and installed Linux Mint with the Cinnamon desktop on my work laptop.
Like I said last year, Linux is promoted in the wrong places. You always see it recommended in programmer forums and tinkerer communities, to the most advanced users. In reality, Desktop Linux today is probably easiest for people with no computer knowledge at all - someone who browses social media and rarely opens a file would find Mint out of the box calmer and less hostile than Windows, and would never miss anything. I remember a story where someone installed linux on their grandma’s computer without ever being noticed. It’s the advanced users, the supposed target audience, who have to deal with game crashes and photoshop compatibility.
Windows out of the box is a horrible experience. The Start menu is filled with ads and sponsored search results. But window has an enormous user base, and that means somewhere out there a developer has written a polished app for almost anything. For example, Fluent Search is a great alternative to the start menu that searches through your apps, browser history, and every file on disk essentially instantly. When I switched, I assumed the Linux world would have an equivalent, given how launcher-obsessed it seems. It didn’t - not one that worked as well. Some were fast but only launched apps, some had plugins but were extremely slow with a poor user interface. Every well-known option had a dealbreaker that made me drop it within minutes.
Linux users often brag about having powerful and customizable file managers, but none of them matched what I had on windows, and the “customizable” part turned out to mean I had to configure or script in every behavior I cared about myself (More on that later).
Another example is AutoHotkey, a Windows-only program that let me apply robust hotkeys across all apps in my system.
That’s why my last post concluded that it would be several more years before linux was ready.
Then, I had some free time one day, so I decided rather than waiting for the ecosystem to just start fixing the problems myself. It turned out to be surprisingly easy.
Linux is customizable
Linux is open source, so everything is technically customizable, and you can program it to do whatever you want. But realistically, I’m not going to write my own drivers or make major changes to the kernel. I don’t want to spend more time fixing my computer than I spend actually using it.
A language model-based agent was really helpful this time! Instead of just suggesting instructions, with file and shell access it actually reads whatever logs it needs, edits the configs, and writes the scripts, before testing that the changes actually work and fixing any problems.
This dramatically increases the speed I can make changes. Many of the fixes in this post live in places I didn’t know existed three months ago: desktop settings buried in a binary database, systemd user services, a sandbox permission store, plugin search paths. The traditional path to discovering any one of those is an evening of forum archaeology, half of it outdated, ending in a command you paste without fully understanding. If no built in option existed, it could easily write a quick script or patch without me having to learn a random program’s codebase or api. Once the code is written, is much easier to just check the function/api calls the code makes. Saves me so much headache with fixing things I can’t be bothered with (*^‿^*).
I also created a folder to document all the changes, including the evidence, root cause, and fix for every problem.
It’s nice that Linux is so easy for computers to work with. Linux was designed to be operated through text— configs are text files, logs are text, every setting has a command-line interface, every tool has a manual page, and the desktop’s own source code sits readable on disk. This means the setup agent can easily make changes. Changing settings on windows would more often require simulating mouse clicks and taking screenshots. Furthermore, because I was setting up a new system, I didn’t have to worry about anything breaking or personal files being leaked.
Fixing linux
A list of some of the changes I made:
- Screenshots were extremely slow Pressing Print took about a second of latency before the screen was even captured, while it was almost instant on windows. Tracing the default gnome screenshot program showed that it was cold-starting an entire GUI application on every keypress before it grabbed a single pixel. I tried alternatives such as flameshot and spectacle with similar results. Meanwhile, the desktop’s compositor - the thing already drawing my screen sixty times a second - turns out to expose a “take a screenshot” function on the system message bus that returns in ten milliseconds. So I decided to just write my own screenshot app. The Print key now runs a small python script that instantly captures a screenshot, before showing a menu with options to crop, copy, save, or open the image. It’s simple, fast, and does exactly what I want, because I wrote it.
- Taskbar bugs with multiple monitors Whenever I plug or unplug a monitor, the taskbars just… disappear. This turns out to be a known bug with Cinnamon, and the fix is a single line. It is not a huge problem so I chose to just wait for the fix to shipped.
- Other Taskbar fixes pinned taskbar programs are not synced between taskbars on different monitors, and there is no option to enable this. I made a script that watches the taskbar for changes and syncs the program list before reloading cinnamon. It’s an ugly solution, but I do not pin or unpin apps often, so it works. I also wrote a script to number all the apps for fast navigation, similar to 7+ taskbar numberer.
- Terminal papercuts The terminal has lots of strange shortcuts that are I don’t use. For example Ctrl+C and Ctrl+V don’t copy and paste in terminals. I remapped my terminal with consistent editor shortcuts, including browser-style tab shortcuts (Ctrl+T, Ctrl+W, Alt+1-9), and installed a bash extension that gives me Shift+arrow selection at the prompt, where typing over the selection replaces it - like any normal text editor. The terminal now behaves like every other app I use.
- Night light app parity The built-in night light tints the screen warm at sunset, but there’s no option to pause it for fullscreen videos or color-sensitive apps. The standalone alternatives don’t have it either - the most popular one is abandoned, with exactly this feature requested years ago and the patch never merged. I wrote a small script that checks the focused window once a second and switches night light off while it’s fullscreen or on my exclusion list. It runs as a background service and survives reboots.
- The file manager A lot of small changes to shortcuts, views, context menu items, and other behavior buried across four different config files. One important feature missing was a list of recently opened folders in the sidebar. I wrote a separate script that watches the window titles and rewrites the sidebar bookmarks, newest first. Getting a current version of the app installed at all turned into its own saga, which gets a section below.
Compare to the experience on windows: when something breaks, you search a forum, someone suggests a few generic scans or reinstalling, Microsoft support is useless, and nobody can show you the broken line of code. Here the bug is more trackable.
The partition saga, or: doing surgery on a running patient
When installing linux, I only allocated 100gb to the linux root partition. Now I was running out of space. My windows partition still had plenty of free space, but it was located before the linux one. From what I saw online, the only way to extend a partition backwards is with some weird program while booting from a usb drive. I didn’t want to bother with yet another usb, so instead I had an idea. First, I shrunk the windows section and created a NEW partition inside the empty space. Next, I copied my entire linux operating system to the empty drive while it was still running, and pointed the bootloader at the copy. When restarted, the system booted straight into the new root, and I just deleted and merged the old partition.
Somewhere a professional sysadmin is wincing my genius idea, but I would like to reassure them that it went fine.
Installing software
Linux gets a lot of praise for its package managers, and how they are such an elegant way of installing software. But Windows also has package managers, and even if I use the manual installer, at least I know that it’s what the developer intended to release.
Three months in on linux, I run software from at least five different sources: the distro’s package manager, Flatpak, Nix, AppImages I build myself in a container, and plain binaries downloaded from GitHub (●__● ).
The distro’s package manager is the “official” way, but its versions can be years out of date. This is because all of the packages are shipped together in a frozen snapshot whenever the operating system gets a major update. My distro’s snapshot dates from early 2024, which means in mid-2026 the “latest” version of my file manager in the official repos is over two years old, missing features and fixes I can read about in the changelog but not have.
Flatpak is supposed to be the fix with apps packaged by their developers, always current, working on any distro. The catch is that every Flatpak app runs in a sandbox, which becomes a major source of problems. Look at any bug report, and one of the first questions you’ll see is “Are you running the flatpak version?”. I made the mistake of installing dolphin file manager in flatpak (why did they even release it there?), resulting in an endless stream of permission issues and troubleshooting.
Start with the obvious: a file manager whose sandbox hides the file system. Out of the box it could see my home folder and USB drives and nothing else - system directories simply weren’t there until I added manual permission overrides. Even after that, the /usr and /etc it displays are the sandbox’s own private copies, with the real ones tucked away under a special path, in a file manager, whose entire job is showing me my files .
Every custom right-click action broke too, because the command behind it runs inside the sandbox, where none of my actual programs exist. “Open a terminal here” failed because, as far as dolphin could tell, I had no terminal installed - every action had to be wrapped in a special escape-hatch command that reaches back out to the real system. Configuration was its own maze: the app keeps a private copy of every settings file in a hidden folder, except flatpak silently mounts the host’s copy over some of them at runtime. So editing one file worked, and editing the file right next to it did nothing, with no error, until I worked out which copies were real. And the Flathub build turned out to be compiled without the component that powers the “recent locations” feature, so that feature was just silently dead - I ended up writing my own tracker to replace it.
The worst part was opening files. Every double-click got routed through a permission portal that asked “open with which app?” - every single time, because the portal only learns a default after you’ve manually picked the same app three times, separately, for every file type. Nobody tells you this; I found the threshold in the portal’s source code.
It took about an hour of this before I gave up and reinstalled the exact same version unsandboxed through Nix, at which point every one of these problems evaporated at once, leaving the flatpak a useless, 2.4 GB monument sitting on my disk.
And it’s not just the file manager. GitHub Desktop (a flatpak, because that’s the only packaged build for linux) insisted I had no code editor installed. The sandboxed app uses a special window that exposes the host’s files at a different path. But my editor’s entry there is a shortcut pointing to an absolute location. Every sandboxed app apparently gets to rediscover this bug on its own.
In the future, when I want to install a new app, I’ll go to the website and see if they have an installer script. If it doesn’t, I’ll check if the distro’s version is current. If not, I’ll try installing with Nix. If that doesn’t work, I’ll just build from source. Let me know if there is a better way.
Each method exists for a reason, and each solved a real problem for me. But if you asked me the single worst thing about desktop Linux in 2026, it’s this: “how do I install the current version of an app” has five answers and they interact. A newcomer without stubbornness would bounce off this. I won’t sugarcoat it.
Building the best launcher
The benefit of open source software is that when an app almost does what you want, you don’t need to wait for a wishlist request - you change it.
After some more research into linux launchers, I found Vicinae, a launcher less than two years old, which is probably why none of the discussions and posts I read in my first month mentioned it. It came closest by far to what I was looking for: one search box covering apps, system settings, a powerful calculator (with qalculate), custom web searches. But it was still missing some quality of life features - right-click context menus, a copy shortcut, pinned favorites. Since the program was open source, I forked it, wrote the features, and now run my own build.
File search was the other gap: Vicinae’s built-in index only covers the home folder. A great solution already existed - fsearch, a dedicated file-search tool that keeps a fast index of the entire disk - but it’s a GUI app with no API or method for another program to ask it anything. I forked it too and added one, then wired the launcher to query fsearch’s pre-built index on every keystroke. Whole-disk results in 30ms. The funny part is that a command-line mode has been an open feature request on fsearch’s tracker since 2017, asked again in 2023, and again two weeks ago. Nine years of wishlist requests and sighs.
Three months after concluding that linux did not have a good launcher, I’m running one that works great. It is better what I had on windows and I can modify it whenever I want, because it’s mine. Both forks are on GitHub and they could match a few open feature requests upstream if they’re contributed back.
Everything I built stands on fragmented ground
When moving to linux, users will often ask: “does this windows app run on Linux?” If an app works on Windows, it runs on effectively every Windows machine. On Linux the same question explodes into which distribution (and which release of it), which desktop environment, which display server (X11 or Wayland), which package format, even which shell. An app or fix doesn’t target “Linux”, it targets one cell of that matrix, and the common question “does this work on Linux?” is unanswerable without five follow-ups 🫠.
Almost every app and tweak I’ve described relies on a specific stack of dependencies ~ and on Linux, that stack is different for everyone.
The instant-screenshot fix calls a function that only Cinnamon’s compositor exposes - on KDE or GNOME it simply doesn’t exist. My hotkey layer and window automation are built on X11 tools, which means the industry-wide migration to Wayland - coming to my own distro in its next major release - will break them outright. And the file manager saga from earlier was ultimately a compatibility story: the archive tool that plugs into it had to come from the exact same package snapshot, because a plugin built against a slightly different library version won’t load at all - a class of problem Windows apps mostly solved twenty-five years ago.
Verdict at three months
At this point I can say that my daily experience on linux is as convenient as my customized window system; my keybindings and utilities have been set up and most of the annoyances have been ameliorated. There are still some stability issues, such as the desktop and taskbar bugs, but windows has its problems too. Setting up was surprisingly fast - I completed the majority of the development work (which I expected to wait “several more years” for) in a single afternoon.
Limitations remain: all of this is on a work laptop - Intel integrated graphics, basic built-in display. If I were to run linux on my personal computer, I would still have to find an alternative music player, wallpaper manager, and some other apps, and set up a virtual machine for photoshop and games. Discrete graphics card drivers remain the classic sore spot, and modern monitor features are worse: variable refresh rate, HDR, and clean fractional scaling on mixed-DPI multi-monitor are all missing on my setup, and upcoming development is for Wayland only, which many linux programs are incompatible with (ᗒᗣᗕ). So with a desktop tower, windows is still the only option, with linux as a hope for the future.
See you at the 2027 update.