Category: Desktop Linux

  • Streaming Linux audio to a Sonos S1

    My new Linux desktop has a neat trick: I can route the sound I’m hearing to my Sonos S1 speakers. It’s always annoyed me I couldn’t do that easily before.

    The magic plumbing is PulseAudio, the Linux subsystem that handles media streams. (Or actually PipeWire, the replacement.) Basically it lets you pipe music (and video) around from program to program.

    There’s a third party Sonos controller app for Linux called Noson. It has the ability to tell the Sonos unit to play audio from a network stream. It will then create a network stream for you that is listening to PulseAudio on your Linux box.

    Once this is going the Sonos shows it is playing a track named “pulse.flac?acr=hostname:1400″. I don’t think hostname has to actually resolve for it to work.

    The other trick is to get the audio going out to PulseAudio. For me the source I want to play is Plexamp. By default Plexamp is playing out my speakers. I used pavucontrol to re-route it, choosing “noson” instead of my usual sound card / speakers for the output. I think I could also have just set this in Plexamp: right now it’s being told to play to “System default” but I can choose where it goes inside the app.

    The one downside to this setup is latency. Sonos wants to buffer a stream before playing it so anything I play is delayed about 10 seconds. Not awful but a little annoying.

    I’m doing all this to get Plexamp to drive the speakers in my house. Plexamp is really cool, working off my music library and doing all sorts of advanced DJ and mood / genre matching tricks.

    (As with anything these days, I figured all this out thanks to AI. Here’s a link to the conversation.)

    Pipewire

    Need to learn more about this! Here’s what qpwgraph shows me, you can also edit this like patch bays. coppwr is another tool that shows a similar view with more low level detail

  • USB ports on my new computer setup

    USB ports are so complicated now! So many different speeds and capabilities. I got a new computer for a Linux desktop. A Beelink SER8 and a fancy ProArt PC32QC monitor. Then I tested all the USB ports to see what they did.

    The test I did was plugging a Crucial SSD into each port with a good cable. The SSD maxes out at 10 Gbps, and I observed speeds of 10 Gbps, 5 Gbps, and 480 Mbps on various ports.

    Note: the monitor is plugged in with a USB-C cable between the monitor’s Thunderbolt upstream port to the Beelink’s USB4 40Gbps port in the back.

    Beelink SER8 ports

    There’s some good photos and info on the Beelink SER8 ports here.

    Observed drive speeds:

    • Front A: 10 Gbps
    • Front C: 10 Gbps
    • Back A, top left: 10 Gbps
    • Back A, bottom left: 480 Mbps
    • Back A, bottom right: 480 Mbps
    • Back C: ???
      This is a USB-4 40 Gbps port, I’m using it to carry video and data to my monitor.

    Bottom line here: the front ports are good. That back USB-C port is special. The back bottom ports are for low speed crap.

    ProArt PA32QC ports

    Observed drive speeds:

    • 6 Back USB-C (left): 10 Gbps
      This is actually a Thunderbolt daisy chaining port
    • 6 Back USB-C (right): ???
      This is a Thunderbolt port that goes to your computer. It’s carrying both video and data for me.
    • 7 Back USB-C (right). nothing
      This is an “upstream port”, hard drive does not work. I believe this is the port you connect to your computer if you’re not using the Thunderbolt at port 6.
    • 9 Back A: 5 Gbps
    • 9 Bottom A: 5 Gbps
    • 10 Bottom C: 5 Gbps

    This is confusing! The two ports on the bottom of the monitor are utility ordinary USB ports. Shame they’re only 5 Gbps. The back ports are complicated because this monitor also functions as a KVM so needs to separate upstream and downstream.

    I have another computer with a second ProArt monitor. That computer is plugged in from a USB 3.1 to to that back port 7 on the monitor the upstream port. That setup doesn’t work as well but I should test it again.

    GV desktop (X570-Pro)

    My ATX Linux desktop with an ASUS X570-Pro motherboard. The ports are all color coded and all seem to work as they should.

    • 2x USB-A black ports on front: 480M
    • 2x USB-A blue ports on front: 5G
    • 4x USB-A blue ports on back: 5G
    • 3x USB-A teal ports on back: 10G
    • 1x USB-C port on back: 10G

    GV desktop monitor (ProArt)

    I’ve got a ProART PA32QCV monitor plugged in to one of those 10G ports on the back of the computer. The hub in the monitor is only registering at 5G, not sure if that’s a cable problem or if it’s just a limitation of the monitor’s USB hub.

    • 6 Back USB-C (left): nothing
    • 6 Back USB-C (right): nothing
    • 7 Back USB-C (right). this is the port that has a USB cable going back to my desktop computer.
    • 9 Back A: 5 Gbps
    • 9 Bottom A: 5 Gbps
    • 10 Bottom C: 5 Gbps

    The Apple keyboard I have plugged into 9 Back A has its own USB port on it, presumably for a mouse. A drive plugged into that works at 480M.

    ProArt USB hub

    Having done all this testing I now understand what the ProArt PA32QCV is doing with USB. And it’s all very sensible.

    You have two choices for plugging the monitor in to your computer. Either a video cable (HDMI or DisplayPort) along with a USB 3 cable to port 7 on the back. Or else a USB 4 / Thunderbolt cable into port 6 (right) on the back carrying both video and data.

    Either way, the ProArt gives you three ports for regular use: keyboard, mouse, speakers, drives. 9 Back A, 9 Bottom A, and 10 Bottom C. These all work at 5 Gbit.

    The ProArt also has two unusual ports on the back in block 6. That’s really for the Thunderbolt subsystem: if you plug in the right side to your computer, then it’s daisy-chained to the left side and you can use it for a second monitor, or a peripheral, etc. It works at least up to 10G, wouldn’t surprise me if it does 40G. If you connect your monitor to the computer via video+USB both of these ports do nothing.

  • Working with Ultra HDR JPGs

    My Pixel phone takes nice HDR images and saves them as UltraHDR. (aka ISO 21496-1 or Adaptive HDR). These files look and act mostly like normal JPEGs but HDR-aware software can find a second raster image in there with a “gain map” which has extra brightness information for boosting the image into 10 bit HDR.

    It’s a bit of a kludge but seems to work well in practice. Chrome and a lot of Android software works with them as true HDR images. Microsoft and Apple both support them, as do all the browsers. Any old software without UltraHDR falls back to an 8 bit SDR image: not great but better than nothing.

    GUI HDR programs

    I’d like to view and edit HDR images on my Linux desktop. I have a nice HDR monitor that is working! Unfortunately I can’t find a single mainstream Linux image viewer or editor that supports Ultra HDR JPGs. A little surprised at that. The only thing that will show them correctly is Chrome, you can drag a local file to it and it displays in HDR.

    There are a couple of specialist viewers that sort of work. tev seems to handle the HDR data but I couldn’t easily get a display that looked right although fiddling with the tone mapping the image looked intact. HDRView displays the image great but I think is only rendering at 8 bits, just nicely tonemapped. Also it doesn’t scale the UI to my display so it’s unusable.

    CLI HDR programs

    Even worse, I can’t find a good command line program to work with UltraHDRs or even convert them intact to other HDR formats like AVIF or EXR. At least, nothing simple seems to work. I tried out a bunch of Gemini suggestions on a Pixel photo and didn’t get very far.

    The winner is hdrify-cli, a pure Javascript node program. It is easy to install and use. I can convert the UltraHDR-JPG to a EXR file that when opened in Okulus looks… different than the source SDR. Like a badly tone mapped image, but maybe that’s Okulus’ display algorithm fault. If I convert it back to a JPEG and view it in Chrome it looks like the original, so actual round trip conversion! hdrify also supports writing 8 bit SDR files like WebPs, it seems to just extract the SDR from the source.

    ImageMagick now has some HDR support but I can’t honestly tell how much. The build on my Nobara Linux system doesn’t include the support. I tried a precompiled build from the project but didn’t get much success with the converter. I got somewhere using this elaborate command, but the resulting tone mapping was too dark. Also this is way too complicated, why doesn’t convert foo.jpg foo.avif just work?

    uhdr2avif seemed promising but the program just spun and ate 2 CPUs.

    Google’s reference libultrahdr has a demo program but it’s more of a swiss army knife for working with UltraHDR images, not a simple converter.

    A lot of these tools all seem very much aimed at experts who understand tone mapping curves and color spaces and gamuts. Not intended for civilian use.

    File formats

    Part of my confusion is what image format I should be using for HDR images.

    UltraHDR JPG is what Google is giving me when I download my photos. It’s a kludgey format but has a lot of support, it seems OK.

    AVIF seems like the “best” choice for a clean image format that happens to also do HDR. Unfortunately hdrify doesn’t support writing it.

    EXR is a very low level HDR format that has some broad support. Main issue is there’s no lossy compression so files are huge.

    JPEG-XL in theory should work but in practice is still a dead-on-arrival format.

    HEIC/HEIF is what Apple has been doing but I don’t think much else supports it.

  • Wake on LAN

    One fun thing about my new Linux desktop is that the computer is useful enough that I want to be able to access it remotely. I never cared with a Windows machine. I’ve got this machine set to go to sleep automatically but just set up Wake on LAN for the first time. Works like a charm.

    The key piece of this is UpSnap. That’s a little Go program that provides a web server with a GUI for monitoring machines and sending Wake-on-LAN packets when you click a button. I installed it with a Proxmox community script and then put Tailscale on it so I can access the webapp remotely, like from my phone.

    Beyond that was verifying my PC would actually Wake on LAN. There’s a BIOS setting to enable (although with that off it will still wake from sleep, just not full power off). There’s also a Linux feature you might have to enable in NetworkManager (it was already on for me). “Wake-on: g” is the important thing, the “g” means “wake on magic packet”

    $ sudo nmcli connection modify "Wired connection 1" 802-3-ethernet.wake-on-lan magic
    $ sudo ethtool enp5s0 | grep -i wake
    Supports Wake-on: pumbg
    Wake-on: g

    Wake on LAN is a 30 year old technology! The core thing I’m using is that most ethernet hardware will wake up if it hears a magic packet sent to its MAC address, even if it’s otherwise mostly turned off. (Gemini says this uses under 1 watt) There’s a WiFi version too although I have to think that’s a lot more complicated given the need to maintain a radio link.

  • CoolerControl / quieting CPU fan

    Awhile back I identified the fan that makes noise on my computer. It’s Fan 2, the Noctua CPU cooler. When it gets over about 55% (1000 RPM) I start to hear it. I just fixed it with a custom cooling curve, with help from Gemini. It was more annoying in Linux than in Windows. Not sure if Windows had some custom fan discipline or if Linux just had a way of spiking heat.

    The result is at idle the cooler runs at about 30-35% speed, I can’t hear it, and the CPU hovers around 60°-70°C. Under heavy CPU load it gets to 80°C and 40% fan. I still can’t hear it!

    I’m using CoolerControl to do this. It overrides the BIOS fan control. I’ve set a custom fan speed curve that’s slower than the BIOS. And then I added a smoothing function with a 3s delay to add a little hysteresis.

    It seems a bit silly to have userspace software controlling this. Maybe I’ll figure out if I can make the BIOS do this for me. This CPU cooler is really quite good and lets me run the fan slower.

    Temperature graph, including a stress period

    Fan curve

    Controls

  • Customizing my Nobara system

    I’ve now set up KDE Plasma desktops under Fedora about 5 times. Here’s my notes on all the things I do. It’s a lot! What’s particularly annoying is there’s no easy way to capture all this config and just replay it all. The config files are too much of a mess.

    Earliest setup

    • Switch to Breeze theme
    • Set wallpaper to solid #001830
    • Install Chrome from downloaded RPM.
    • Install 1Password from downloaded RPM.
    • Install tailscale
      curl -fsSL https://tailscale.com/install.sh | sh
    • Remove the Brave browser and disable its repository.
      sudo dnf remove brave-browser brave

    Nobara Welcome App

    First steps

    • Update my system. The installer will do this for you if you let it.
    • Install the Nobara codec package. It is very aggressive about launching this!
    • Open Driver Manager: I didn’t need to do anything

    Optional Steps

    • Launch Steam. Then use ProtonPlus to Install Proton-GE

    Recommended

    • Install Discord
    • Install Flatpak Bazaar
    • Uninstall OBS Studio, Kdenlive, and Blender 3D

    Misc

    Set up ssh agent stuff

    Install RPMs

    dnf history list is very helpful for reconstructing this list.

    • ghostty
    • joe
    • input-remapper
    • chezmoi
    • sunshine (beta)
      dnf copr enable lizardbyte/beta
      dnf install miniupnpc
      dnf install sunshine –repo=”copr:copr.fedorainfracloud.org:lizardbyte:beta”
    • syncthing
    • coolercontrol
    • adobe-source-sans-pro-fonts adobe-source-code-pro-fonts adobe-source-serif-pro-fonts google-roboto-fonts google-noto-sans-fonts jetbrains-mono-fonts fira-code-fonts

    Install Flatpaks

    flatpak history or flatpak list can help to reconstruct this.

    Use Bazaar (installed above) to find things instead of Flatpost or Discover or whatever.

    • Slack
    • Mission Center. Consider hack to enable wattage info:
      sudo chmod a+r /sys/class/powercap/intel-rapl*/energy_uj
    • Gear Lever
    • Signal. Launch it and follow instructions about kwallet.
    • Plex. Had to install via command line.
    • Calibre
    • SyncThiny. Set up sync for ~/src

    Install AppImages (in Gear Lever)

    • LM Studio
    • noson (for Sonos)

    Customization

    • sudo systemctl enable --now sshd
    • chezmoi init nelson@sf.somebits.com:~/gitrepos/chezmoi
      chezmoi apply
    • Set up apps for favorites for launcher
    • Timeshift to do daily btrfs snapshots
    • Move system tray to left side, 146 pixels wide
    • Set date format to ddd MM/dd
    • Install KIM6 for image conversion in file manager
    • Set up an ssh-agent for the graphical environment. This is complicated and the linked AI answer is wrong in important ways.
    • Log in to every website, there is no way to copy login cookies to other machines.

    Keyboard customizations

    • Fix the function keys
      echo "options hid_apple fnmode=2" | sudo tee /etc/modprobe.d/hid_apple.conf
    • Use Input Remapper to override CapsLock to be F15. Make sure to apply it at boot!
    • Use Shortcuts to bind F15 to launch clipboard in web browser
    • Use Shortcuts to override F13 to take screenshots with Spectacle. (May not be necessary: F13 is in the same spot on my Apple Keyboard.)
    • Set up XCompose key under “Position of Compose Key”
    • Disable the Plasma virtual keyboard. It uses a lot of VRAM (a known bug).

  • Chez Moi: modernizing Linux config

    I’ve used Linux since 1994 and Unix since 1989. I have some very old and crufty configurations I’ve hauled around over the years with some clunky script to set up a new machine. I’ve modernized it with help from Gemini.

    Dotfile management

    The key tool I used is chezmoi. It’s a nicer version of my clunky script. It feels a little like git, but customized for shell configs. For instance I run chezmod add ~/.bashrc and it makes a copy of my current bashrc to ~/.local/share/chezmoi. If I run chezmod apply it copies all the files from that chezmoi repository to live places. It’s a little goofy but it works and it has advanced features for templating, encrypting secrets, etc. Note you’re expected to use git yourself to keep versions of this chezmoi mirror of your config files.

    Setting up chezmoi was a very manual process of deciding what config files I want and manually importing them. In the end I’ve got 31 config files. A bunch of ancient tty stuff from my old configs and some new KDE stuff from my new Linux desktop

    Modern Linux file locations

    XDG defines is the modern standard location for config files. The key thing is ~/.config, which in theory is where all config files belong. This has been predictably corrupted over the years. Chrome spams it with over 6000 files including a bunch of binary junk. But it’s still a pretty useful standard. ~/.config/lesskey for instance lets you configure the less pager. (And in a text format now, hooray!)

    Auditing config files

    It’s very confusing what all your config files are. xdg-ninja is a helpful tool. It looks in your home directory for standard config files for a bunch of programs and advises you ways you can modernize and move things to .config. Not a panacea but a helpful tool!

    Modern bash shell

    There’s some nice tools that make bash really nice to use.

    starship is a lovely dynamic prompt framework that is very fast. The key thing I rely on is it showing me git repo status.

    atuin turns your shell history into a giant database you can query. It’s very nice if you have the habit of building up complex commands interactively.

    Modernizing configs

    I had a surprising amount of fun showing Gemini my config files and asking it to advise me on how to update things. For instance it suggested I don’t need 25 year old Netscape environment variables anymore. And that there’s better / newer ways to do some things with modern tools. It was a fun interactive process for an hour or two sweeping off some of the cobwebs. Particularly impressive that I can ask it things like “what does mpage -a do?” and it remembers some 25 year old BSD utility I long since forgot.

  • Linux gaming and resolution scaling

    Deep into tinkering with gaming on Linux using Bazzite 44. The problem I’m wrestling with is that fullscreen games are guessing a different resolution than they should. my screen is 6016×3384 natively but instead the game is trying to run at 6863×3860 or some other wrong value. This doesn’t happen for all games.

    These tests are for the game Rhythm Storm, a fairly simple but graphically intense game. I’m playing on a ProArt display that’s 6016×3384 natively, with a NVidia 5060 and the 595.71 Linux open drivers installed. Bazzite is pretty much an all-Wayland system, with just a bit of X11 compatibility. I am running the display at 225% scaling. This Gemini chat is all the research I’ve done so far.

    First, a useful tool: xrandr. That shows a set of resolution that X11 apps think are valid. On my system with 225% scaling it shows 6863×3860, the mode the game is picking. If I change scaling this number changes in some mathematically way I can’t quite understand. Anyway this must be what the Steam game is picking up.

    One tool to fix this scaling problem is gamescope. That’s some sort of Steam graphics shim that sits between the game and the Linux display software. It can be told to enforce a specific resolution and you can impose it for a particular game by altering the Steam game launch options. That works! Unfortunately it also hides the Steam overlay. There’s supposed to be a -e or --steam option to work around that, but when I try that the game never launches at all.

    I’ve been surprised at how well games work on Steam / Linux in general. Proton is a marvel! But this kind of problem is exactly the sort of infuriating bullshit that makes Linux seem unacceptable as a desktop OS. Right now I’m still cheerful about trying to figure problems like this out, so I’ll stick with it. Wonder how long that will last.

  • Remote game streaming

    Some things I’ve learned about playing games by running them on a big computer and using my TV as a client. Basically this is an optimized form of desktop screen sharing.

    The client TV is a 2160p Sony Bravia. That runs Android and seems the best of the smart TV platforms. The server running the games is a desktop gaming PC, I’ve tried both Bazzite Linux and Windows. Both devices are wired on the same LAN. (This stuff works on the Internet too and is surprisingly responsive.)

    Steam Remote Play

    Valve has had a remote gaming product for some 10 years. I still have working Steam Link client hardware! But these days it’s easier to run a Steam client on the TV.

    It works pretty well but is surprisingly flaky. The biggest problem is resolution switching. Steam should change the desktop resolution to the TV’s resolution, or down to 1080p if I tell it to. That only works one time out of three so mostly I have to change the resolution on the PC myself. (The TV can display anything, but 3440×1440 looks terrible on a 2160p display.)

    The other knock on Steam Remote Play is that it’s not very optimized. Folks report 20-40ms latency, or maybe 2 frames of a 60fps game. I haven’t really noticed that but I’m not super sensitive to it.

    Sunshine / Moonlight

    The alternative fancy gamers recommend is the Sunshine streaming game server and the Moonlight client. These have been around quite awhile, started as an open source reimplementation of the NVidia Game Shield protocol. The big advantage folks quote over Steam is latency: it delivers 4ms on my LAN, or well under one game frame.

    The server works well on Windows. It seems reliable. It has some nice stuff about launching things when a client connects, like invoking Steam Big Picture. I’m still having to set the Windows desktop resolution manually although I think Sunshine can do that for me.

    The server does not work for me on Bazzite Linux. It sort of does. But the NVidia drivers on my old 1080 card aren’t correctly detecting display modes so I’m stuck streaming 3440×1440.

    Alternate resolutions

    One dumb thing about all these solutions is that they’re displaying what’s on the PC’s screen, at the PC’s resolution. But basically I have a remote screen on the cliente TV: why should I care what’s plugged in on the server?

    One solution is a dummy HDMI plug. This does the EDID handshake to make the computer thing you have a monitor plugged in so you can configure the OS to use it as a primary or secondary screen. These are particularly popular for headless machines: with no monitors plugged in some GPUs refuse to operate at all.

    The dummy plug seemed to work as a second screen on Linux. But caused all sorts of problems. First, the desktop GUI wants to use that screen! But it’s invisible, so stuff gets placed there you can’t see. Second, I couldn’t reliably get all the gaming stuff to happen on that fake screen while leaving my desktop alone for normal stuff. The software is just not designed to do it.

    I went down a rabbit hole of trying to fix the resolution-switching problems on Linux with my 1080. Total disaster. There’s some hack with kernel keyword arguments with display mode lines, yuck! There’s also a hack where you load fake EDID data from a file to trick the graphics card. I couldn’t make any of that work. Honestly why doesn’t the NVidia driver just detect the modes that are there?

    The other solution is a virtual display. Basically have a device driver fake a viritual screen disconnected from actual hardware. This feels like the right solution and reminds me of the ancient X11 virtual desktop hacks. Ironically, virtual displays are reportedly unreliable to impossible on Linux.

    On a Windows server folks recommend Apollo, a Sunshine fork, which has virtual displays as a headline feature. I’ve tried this server and it works, but I haven’t tried the virtual display feature yet.

  • Bazzite desktop impressions

    I’ve had the nicest time using a Linux desktop OS the last few days, so good I may make this my daily driver. For the first time this OS feels like it works better than Windows. Faster, cleaner. Also it feels like a coherent product in a way previous Linux desktops haven’t.

    I tried Bazzite 43, a Fedora variant intended for gaming. The GUI I’m suing is KDE Plasma 6. Most of what I like about it seems to be the KDE + Fedora stuff. Bazzite adds on top of that a bunch of gaming apps pre-installed, working NVidia graphics drivers, and an atomic OS release system suitable for civilian use.

    I’m running this on an AMD desktop system with an NVidia 5060.

    First Impressions

    I was thrilled that stuff just worked out of the box. I installed it on an external USB drive. Key thing: my NVidia 5060 with a 6K HDR display just worked, first try! Even Windows can’t manage that. I could launch Steam and be playing games full speed in minutes.

    I also got an immediate impression that stuff Just Works in this Linux distribution. Windows 11 feels the weight of its history, lots of crufty hacks and weird brokenness. Bazzite felt fresh and new in a nice way. That honeymoon broke down once I got deeper into it but at least there’s a new set of bugs and there’s some hope of hacking your way around them.

    Graphics

    Linux desktop has come a long way. This is the first time I’ve used Wayland and it’s nice that stuff like font scaling, HDR, etc work correctly. And KDE Plasma is a remarkably coherent system.

    One particularly neat trick: I have two screens set at different scaling. If I drag a window across the both it scales correctly, one side at 200% and one side at 250%. Windows can’t manage that.

    I did run into rough edges eventually. The Nvidia-open driver that’s the default works great on my 5060, but not on my old 1080 card. The proprietary Nvidia driver does work on the 1080 but isn’t identifying all the display modes it should find. I went deep down a rabbithole of video mode hacking complete with programming video card dot clocks, like it was 1995. Ugh! I never did get it working. TO be fair, the 1080 is nine years old now.

    Atomic Linux

    Fedora is a pretty solid Linux. I’ve never really used it, I went down the Debian / Ubuntu road instead. But it’s solid.

    What’s unusual about Bazzite is it is an atomic distribution. Instead of upgrading individual packages piecemeal you install one giant 5GB release that bundles kernel, important packages, graphics drivers, apps.. Everything you’d want. Then you can reboot to this new release, or roll back. There are tools for layering custom stuff on top of these releases but you are discouraged from doing that.

    If you want to add an application, Bazzite suggests you get a Flatpak from some online app store. These work great right until they don’t! You also have the option of running AppImages using GearLever, I use this for LM Studio.

    If you want to Linux CLI tools or other low level stuff, Bazzite suggests using Homebrew and installing it just in your home directory. UGH! Homebrew is awful and is the main reason I switched away from MacOS all these years ago. Another option is distrobox, which gives you a nice container for Linux shell work.

    The problem I’ve run into with this model is some stuff just doesn’t work. The most pernicious is 1Password. It wants to run a persistent process storing state securely, then a browser extension talks to it. But this won’t work if 1Password is in one Flatpak container and the browser extension is in another container. I tried various hacks to get around it and it got really complicated. I can imagine someone adding a specific integration for this just for Bazzite, a bridge between containers, but no one has yet.

    Update: someone made the integration! This worked for me but 😬 at using something so hacky for something as important as my 1Password data store.

    Rollbacks are awfully nice though! I experienced this today. Bazzite 44 just came out so I tried it out only to find the graphics driver isn’t working right. Just one button to go back to yesterday’s 43 release, no drama.

    Customization

    A lot of personalization is nice on Bazzite but not everything is great.

    Changing hostname is surprisingly clunky! The default I got was computer. There’s no GUI for changing it!

    The keyboard function keys didn’t work as F keys out of the box. On my Apple keyboard they act like “media keys” and do things like screen brightness. There’s various hack fixes for this all involving the command line: really should have a GUI for this.

    I’ve done a bunch of other customization. Input Remapper to remap Caps Lock to a script to open clipboard content as web pages. tweaking the desktop to look just so. Etc. It’s always fun for me to re-do this kind of setup, or at least every few years, and in general KDE Plasma is providing a good experience.

    Signal

    Shame on Signal, WTF is this warning? I tried using their instructions for the experimental “use kwallet6 to store secrets” and it seems to be working but I can’t be sure.

    Gaming

    It’s funny: I set up Bazzite and pretty much haven’t run any games. But they run great!

    One problem I’ve run into is the OS seems to use more GPU RAM. Some of it is wasted, like a virtual keyboard I’ve never used wants 400MB. Some of it is legit, Chrome has 600MB or more even with few tabs open, Discord wants another 250MB, Wayland itself needs a bunch. I’m using a bunch of Factorio mods that want 13GB of GPU RAM and I only have 16. This works fine on Windows but I’m having to close stuff to get it to run in Linux.

    The underlying problem is Windows is better at evicting apps from VRAM when a game wants the memory than Linux is. There’s some brand new work about a dmemcg-booster patch to the kernel to allow prioritizing certain processes for GPU memory. This sounds like a good thing. And necessary in the world of Electron bloat.

    Conclusion

    I like Bazzite enough it makes me want to use Linux as my daily OS. Windows has never been easy to love and seems worse lately. This KDE Plasma environment is good enough that there’s pleasure in making it work for me, not just frustration.

    I think I don’t want the Atomic OS though. It’s causing too many problems. And it makes perfect sense for a computer appliance, something like a SteamDeck or a gaming PC where you don’t want to tinker with the OS. But I’m tinkering with Linux all the time and am OK with the instability that comes from manually upgrading things myself. Well, I’m sorta OK with it. At least I prefer it to this set of jails that Bazzite is shoehorning everything in to.

    So now I’m looking for some other distribution. Lead contenders are Kubuntu or else Fedora 44. Something that’s not atomic. I think I’d rather try a stock general Linux distro and then add a little bit of gaming stuff (graphics drivers, Steam app). Nobara is also interesting, another Fedora customized for gaming but this one isn’t packaged as an atomic distribution.

    Bazzite is a very nice product. And they have a lot of momentum. I’m very glad I tried it out and would definitely recommend it to someone who’s less of a tinkerer.

    Update: an Update

    Since writing this Bazzite 44 was released. And was silently upgraded to everyone running Bazzite 43. It’s been a confusing update and I think they need to rethink their update notification or policy. Some problems:

    • A serious NVidia driver bug that broke displays. Fixed in one day.
    • They removed the Sunshine that was installed and expects you to install it via Homebrew instead. Folks on Reddit are confused.
    • A MakeMKV flatpak was installed. Again folks on Reddit are confused / alarmed

    I think it’s good that the Bazzite team is making new releases and changing features. But not sure how to do that without confusing all the civilians who are just expecting their TV gaming box to work the same every day.