1
 
 

We have a Bazzite box that different family members often use for streaming to their own laptops/computers from. It's cumbersome having to walk to the room it's in to wake it from sleep or log in their user into Steam on so that a Remote Play session can be started.

Created a little utility that runs a web service on the Bazzite box that can switch the logged in Steam user (guardrailed so that no switching can be done if someone is currently playing).

Additionally the binary (Windows, macOS and Linux) can run as a cli to do the switching, as well as sending a Wake-on-Lan packet and perform Steam Link connect PIN pairing.

Note: This is very early, only tested on our own system at the moment. It might also work on plain SteamOS with very little adaptions, that is completely untested though since I don't have such a machine.

Source repo for building (no ready binaries until I know it works for others too): https://git.sync.wtf/troed/bazinga

2
 
 

cross-posted from: https://literature.cafe/post/33779669

Upstream images vs bazzite: https://github.com/ublue-os/countme/blob/main/growth_upstream_with_bazzite.svg

My prediction: bazzite may have more installs than Fedora KDE by the end of the year.

3
 
 

This project started out of frustration, and quite frankly, there could have been a lot easier ways to go about it. But this is truly what I love about Linux, and it has always been the angle I come at it from: sideways, but practical.

For some background, I come from a time when community guides just like this one got me through some very tough times in Linux. Coming from highly obscure distributions like Yoper, building things for myself out of sheer necessity was a must. I hope someone finds this useful, and either builds off it or shares it with others who need it. If you are feeling friendly, please feel free to share this with the Reddit community. I no longer have an account there, but with all the fun little scripts popping up over there lately, I am sure some of you do. Ultimately, I just felt like the Lemmy Bazzite community needed some more content!

I am going to call it closed on my end because it is working just the way I need it to: you trigger the script, the lights turn off, and the system sleeps. Press the system power button, the system wakes, the OpenRGB profiles load automatically, and I am right back to gaming. Happy gaming, Bazzite dudes!

Yes me and my little ai buddy worked on this.

This guide provides a reliable solution for an issue in Bazzite where motherboard, RAM, and case RGB lights remain illuminated, flash, or cycle colors when the system enters sleep mode, and lighting profiles fail to revert back to your custom OpenRGB settings upon wake.

By implementing a user-space automation script, you eliminate the need to enable restrictive BIOS power-saving states (like ErP). This allows you to keep your USB ports powered overnight to charge controllers and peripherals while ensuring your room remains completely dark during system sleep.


Path Customization Note

Throughout this guide and within the script configuration variables, the directory path /home/gamer is used as the standard system baseline example. If your Bazzite configuration uses a different username, replace gamer with your actual system username across all directory paths, script entries, and terminal commands to ensure the automation executes correctly.


How It Works

When triggered from your Steam library, the script manages your system's transition into and out of sleep mode by handling hardware lighting configurations in an automated sequence:

  • Before Sleep: It automatically darkens all hardware lighting components via OpenRGB.
  • During Sleep: It safely initiates the operating system's suspend sequence while leaving USB power lines active for charging and peripheral wake signals.
  • Upon Wake: It waits for the USB devices to stabilize, then automatically restores your default lighting profile in the background, ensuring the Steam Game Mode interface never experiences freezes or lag.

This script integrates into Steam Game Mode as a Non-Steam shortcut. It intercepts the sleep command to darken your hardware before allowing the system to suspend, preventing interface freezes and ensuring a clean foreground exit when the system wakes.


The Prerequisites

Before deploying either script version, your system must meet two initial setup requirements:

1. Install OpenRGB via Bazzite Portal

OpenRGB must be installed natively through the Bazzite Portal (or via the terminal command ujust install-openrgb).

Important: Do not install OpenRGB as a standard Flatpak from the Discover software center. Flatpaks are sandboxed and lack the low-level kernel hardware rules (udev) needed to communicate with your RGB controllers. The Bazzite Portal installation correctly configures these hardware permissions inside the operating system.

2. Configure Your Lighting Profiles

Open the OpenRGB application on your desktop and save two distinct profiles with these exact, case-sensitive names:

  • off – A profile where all zones, devices, and components are set to black (turned off).
  • on – Your standard, everyday operational gaming lighting profile.

The Core Concept: Why AppImage Extraction is More Reliable

If an AppImage is launched immediately before suspend, the interaction between FUSE mounting and the suspend process can occasionally prevent OpenRGB from starting cleanly. Extracting the AppImage avoids this dependency by executing the native AppRun binary directly.

To maximize execution reliability, both solutions utilize the AppImage extraction flag (--appimage-extract). Extracting the AppImage into a regular folder structure exposes the native executable named AppRun. The script launches this binary directly in user space, making suspend behavior significantly more reliable and ensuring a clean power transition.


Choose Your Strategy

Select the implementation path that best fits your system maintenance preferences.

Strategy 1: Manual Mode (No Auto Update)

  • Who it is for: Users who prefer complete control over their filesystem and do not want automated scripts moving, changing, or interacting with application folders in the background.
  • Maintenance Requirement: Whenever you update OpenRGB via the Bazzite Portal, you must manually open the terminal and re-run the extraction command to update your script's execution folder.
#!/bin/bash 

#
***
Configuration Variables
***

OPENRGB="/home/gamer/AppImages/OpenRGB-extracted/AppRun" 
CONFIG="/home/gamer/.config/OpenRGB" 
LOG_FILE="$HOME/openrgb-sleep.log" 

# 1. Log Rotation: Prevent the log file from growing infinitely 
if [ -f "$LOG_FILE" ] && [ "$(wc -l < "$LOG_FILE")" -gt 500 ]; then 
    # Keep only the last 200 lines of history 
    echo "$(tail -n 200 "$LOG_FILE")" > "$LOG_FILE" 
    echo "$(date '+%Y-%m-%d %H:%M:%S'): Log rotated to prevent file bloat." >> "$LOG_FILE" 
fi 

# 2. Fail-Fast Validation: Ensure OpenRGB is actually there before doing anything 
if [ ! -x "$OPENRGB" ]; then 
    echo "$(date '+%Y-%m-%d %H:%M:%S'): CRITICAL ERROR - OpenRGB binary not found or not executable at: $OPENRGB" >> "$LOG_FILE" 
    exit 1 
fi 

# 3. Log the event and attempt to turn lights off using the correct "off" profile 
echo "$(date '+%Y-%m-%d %H:%M:%S'): Initiating sleep sequence - Powersaving LEDs" >> "$LOG_FILE" 
"$OPENRGB" --config "$CONFIG" --profile off 2>> "$LOG_FILE" || "$OPENRGB" --config "$CONFIG" -c 2>> "$LOG_FILE" 

# 4. Wait 3 seconds for motherboard power lines to settle 
sleep 3 

# 5. The kernel scheduler suspends this process context during system sleep 
systemctl suspend 

# ======================================================== 
# SYSTEM RESUMES HERE IF THE USER SESSION SURVIVES 
# ======================================================== 

# 6. Spawn a background loop to handle eventual hardware readiness on wake 
( 
    echo "$(date '+%Y-%m-%d %H:%M:%S'): System awoken - starting hardware polling loop" >> "$LOG_FILE" 
     
    # Poll the USB bus up to 5 times.  
    for i in {1..5}; do 
        if "$OPENRGB" --config "$CONFIG" --profile on 2>> "$LOG_FILE"; then 
            echo "$(date '+%Y-%m-%d %H:%M:%S'): Success - Profile 'on' applied on attempt $i" >> "$LOG_FILE" 
            break 
        fi 
        echo "$(date '+%Y-%m-%d %H:%M:%S'): Attempt $i failed - USB bus unready. Retrying..." >> "$LOG_FILE" 
        sleep 1 
    done 
) & 

# 7. Exit the foreground process cleanly so Steam registers a normal exit 
exit 0 

Strategy 2: Automated Mode

  • Who it is for: Users who want a hands-off, "set-and-forget" implementation.
  • How it works: It uses a timestamp check (-nt). If the Bazzite Portal updates the main AppImage file, the script automatically identifies it during the next sleep transition. It safely renames your old folder with a unique calendar timestamp backup path (ensuring zero file deletion) and extracts the fresh version completely in the background.
#!/bin/bash 

#
***
Configuration Variables
***

APPIMAGE="/home/gamer/AppImages/openrgb.appimage"
EXTRACTED_DIR="/home/gamer/AppImages/OpenRGB-extracted"
OPENRGB="$EXTRACTED_DIR/AppRun" 
CONFIG="/home/gamer/.config/OpenRGB" 
LOG_FILE="$HOME/openrgb-sleep.log" 

# === Automated Extraction & Update Lifecycle (Non-Destructive) ===
# Triggers if the folder is missing, or if the Portal downloaded a newer AppImage container
if [ -f "$APPIMAGE" ] && { [ ! -f "$OPENRGB" ] || [ "$APPIMAGE" -nt "$OPENRGB" ]; }; then
    echo "$(date '+%Y-%m-%d %H:%M:%S'): Sync Action - New OpenRGB update or initial run detected." >> "$LOG_FILE"
    
    cd /home/gamer/AppImages
    
    # Defensive Architecture: Archive the legacy directory with a unique timestamp instead of deleting
    if [ -d "$EXTRACTED_DIR" ]; then
        TIMESTAMP=$(date '+%Y%m%d_%H%M%S')
        BACKUP_PATH="${EXTRACTED_DIR}_bak_${TIMESTAMP}"
        echo "$(date '+%Y-%m-%d %H:%M:%S'): Archiving legacy directory to: $BACKUP_PATH" >> "$LOG_FILE"
        mv "$EXTRACTED_DIR" "$BACKUP_PATH"
    fi
    
    # Extract the new container seamlessly inside user space
    ./openrgb.appimage --appimage-extract >> "$LOG_FILE" 2>&1
    
    # Rename default extraction directory to match script execution paths
    mv squashfs-root "$EXTRACTED_DIR"
    chmod +x "$OPENRGB"
    
    echo "$(date '+%Y-%m-%d %H:%M:%S'): Sync Action - Update complete. AppRun binary ready." >> "$LOG_FILE"
fi

# 1. Log Rotation: Prevent the log file from growing infinitely 
if [ -f "$LOG_FILE" ] && [ "$(wc -l < "$LOG_FILE")" -gt 500 ]; then 
    # Keep only the last 200 lines of history 
    echo "$(tail -n 200 "$LOG_FILE")" > "$LOG_FILE" 
    echo "$(date '+%Y-%m-%d %H:%M:%S'): Log rotated to prevent file bloat." >> "$LOG_FILE" 
fi 

# 2. Fail-Fast Validation: Ensure OpenRGB is actually there before doing anything 
if [ ! -x "$OPENRGB" ]; then 
    echo "$(date '+%Y-%m-%d %H:%M:%S'): CRITICAL ERROR - OpenRGB binary not found or not executable at: $OPENRGB" >> "$LOG_FILE" 
    exit 1 
fi 

# 3. Log the event and attempt to turn lights off using the correct "off" profile 
echo "$(date '+%Y-%m-%d %H:%M:%S'): Initiating sleep sequence - Powersaving LEDs" >> "$LOG_FILE" 
"$OPENRGB" --config "$CONFIG" --profile off 2>> "$LOG_FILE" || "$OPENRGB" --config "$CONFIG" -c 2>> "$LOG_FILE" 

# 4. Wait 3 seconds for motherboard power lines to settle 
sleep 3 

# 5. The kernel scheduler suspends this process context during system sleep 
systemctl suspend 

# ======================================================== 
# SYSTEM RESUMES HERE IF THE USER SESSION SURVIVES 
# ======================================================== 

# 6. Spawn a background loop to handle eventual hardware readiness on wake 
( 
    echo "$(date '+%Y-%m-%d %H:%M:%S'): System awoken - starting hardware polling loop" >> "$LOG_FILE" 
     
    # Poll the USB bus up to 5 times.  
    for i in {1..5}; do 
        if "$OPENRGB" --config "$CONFIG" --profile on 2>> "$LOG_FILE"; then 
            echo "$(date '+%Y-%m-%d %H:%M:%S'): Success - Profile 'on' applied on attempt $i" >> "$LOG_FILE" 
            break 
        fi 
        echo "$(date '+%Y-%m-%d %H:%M:%S'): Attempt $i failed - USB bus unready. Retrying..." >> "$LOG_FILE" 
        sleep 1 
    done 
) & 

# 7. Exit the foreground process cleanly so Steam registers a normal exit 
exit 0 

Step-by-Step Implementation

Step 1: Save the Script and Grant Permissions

  1. Open your terminal (Konsole).
  2. Create a new file named openrgb-sleep.sh in a persistent user-space folder (e.g., /home/gamer/openrgb-sleep.sh). Remember to replace gamer with your actual username if it differs.
  3. Paste the complete code block of your chosen strategy into the file and save it.
  4. Mark the script as executable by running:
    chmod +x /home/gamer/openrgb-sleep.sh
    

Step 2: Initial Extraction (Required for Strategy 1 Only)

If you chose Strategy 1 (Manual Mode), you must manually perform the initial extraction so the script has a target binary to run:

  1. In the terminal, navigate to your AppImages folder:
    cd ~/AppImages
    
  2. Run the extraction flag:
    ./openrgb.appimage --appimage-extract
    
  3. Rename the output folder to match the script's configuration path:
    mv squashfs-root OpenRGB-extracted
    

(Note: If you chose Strategy 2, skip this step entirely. The script handles it automatically on the first run).


Step 3: Add to Steam Game Mode

To trigger this script directly from your Game Mode interface using a controller, add it as a Non-Steam shortcut:

  1. Switch to the Bazzite Desktop environment and open the Steam Desktop Client.
  2. Click Add a Game (bottom-left corner) -> Add a Non-Steam Game...
  3. Click Browse, navigate to your script's folder location, select openrgb-sleep.sh, and click Add Selected Programs.
  4. Locate the script in your Steam Library list, right-click it, and select Properties.
  5. Change the name to a clean title, such as Sleep System.
  6. Return to Game Mode. The script will now be fully operational under the Non-Steam tab in your library.

Verification Logs

To monitor script operations, verify profile application success, or check automated backup folder paths, view the rolling history log at any time by opening the following local file: /home/gamer/openrgb-sleep.log (substituting gamer with your custom username if applicable).

4
 
 

Hi;

First time Bazzite attempter here. I've created a ≈500gb partition as the attached screenshot. But when I reboot into the live installer, I get as far choosing language and keyboard, date and time, and then to the installation method screen...

I click "change destination", select the NVME witb Windows on, choose "share disk with other operating systems" (leaving reclaim space and encrypt data off) and on the following screen I get:

"Warning: your /boot/efi partition is less than 500MiB which is lower than recommended for a normal Bazzite install. Click Next again to proceed despite this warning".

So I'm guessing it's trying to install into the 500Mb Recovery Partition instead of the 500gb empty parition. How do I get it to choose the right one?

Thanks for any (noob-friendly) guidance!

5
 
 

A couple of months ago, after the Fedora 44 Update for the Desktop Version of Bazzite, I installed a new image from the homepage for my Legion Go 2. Only to discover that the image is still on Fedora 43, up to this day.

The download page says 44.20260629: Stable (F44.20260629), but I installed 3 fresh downloaded images in the span of 2 months, sysinfo still says it is on 43.

Will the deck version ever be updated? Why is there no communication about this? Can someone explain this to me?

6
7
 
 

I've been using Mint on an old PC for a while and I recently switched over to Bazzite and upgraded the graphics card. After days of troubleshooting I finally got the video to output to my TV and monitor. The monitor works fine on the HDMI but the GPU and TV couldn't figure how to talk to each other, so I would either get no video or the resolution would be locked to 480p 4:3. The fix was to use a DP 1.4 to HDMI 2.1 connector for the TV and HDMI directly to the monitor and now I can get at least 1080p 16:9. But now I have the problem that the PC won't detect audio on the TV. Old GPU worked fine with video and audio.

Reddit suggested reinstalling Bazzite with the TV connected as the primary display.

The old GPU was a MSI rx580, new GPU MSI rx 6750 xt. PC is Dell Precision T3600

Monitor Dell 27in and TV is a Sony 65in OLED

Any help would be appreciated

8
submitted 1 month ago* (last edited 1 month ago) by to c/bazzite@lemmy.world
 
 

I have a Steam Deck and am seriously considering installing Bazzite instead of the stock SteamOS, and I plan to do the same when the Steam Machine comes out, but some things weren't clear to me after reading through the documentation.

In general, I want Bazzite because I prefer Gnome over KDE, use multiple game launchers (GOG, Steam, and standalone applications through itch.io), want to install software from the terminal and not flatpaks, and dislike how SteamOS boots straight into Gaming mode as this prioritizes Steam over other libraries.

One thing gives me pause, though, and that's how games run worse in SteamOS Desktop mode due to Gamescope being inaccessible without gaming mode, but am unsure if this also applies to Bazzite. I'd want to be sure I'm not gimping my Steam Deck by installing Bazzite without Steam Gaming Mode.

  1. I understand that Steam Gaming Mode is an optional add-on for the Bazzite-Deck variant 2 image. Can I still use Gamescope, MangoHud and FSR on Desktop mode if I do not install Steam Gaming Mode (variant 1)?
  2. Will I lose access to controller interface compatibility and shortcuts in Desktop mode if I go with variant 1 and not Bazzite-Deck?
  3. Is there a way to revert to SteamOS if Bazzite-Deck isn't working for me?

Edit: I currently add non-Steam games to Steam and am looking for a Desktop mode alternative for that method, if it exists.

9
Bazzite June 2026 Update (universal-blue.discourse.group)
submitted 1 month ago by to c/bazzite@lemmy.world
10
 
 

Made the switch a few weeks ago. Had some installation issues which I think was due to usb things. It might have been graphics but graphics were perfectly fine once installed. Thought I had an issue with appimages but it was a thing with chrome. Mucked around with running outside of steam only to find it had a super steam solution. I have to say I am loving it. I have not really had to change anything as its window manager is laid out in a way that makes getting around easy and its easy to install things if I want. Previously I used an out of the box distro because I liked being able to burn a disc or do other common things right after installation without mucking about but im sold on ease of installation being just as good. I love the idea of the core system being an image and for now its looks like this will be my os of choice. If I change it will likely be because I want to get further away from redhat.

11
 
 

Would love to see how @phosh looks as the default shell on @bazzite. The work on stevia and soft keyboards in general looks to be more mature in phosh land.

12
 
 

When I use KDE connect on my android phone, I cannot type uppercase characters. When I shift to uppercase on the phone, I can send the character to the PC, but it will be lowercase there.

Context, I am using Bazzite on AMD with GeForce through a 4k TV, so console style set up.

So I tried using the steam in game keyboard instead but have two further issues there:

  1. The in game overlay UI scale is tiny compared to how big picture looks when not playing a game. Pre launch everything is a nice size for a 43" display, but in game all the UI is tiny

  2. The in game keyboard won't actually input any text in the game - I'm triggering this via the new steam controller for what it's worth (steam button and x)

Any suggestions?

13
Any simple guides to getting printers to work? (universal-blue.discourse.group)
submitted 2 months ago by to c/bazzite@lemmy.world
 
 

Posting this here because this was what worked for me. Have heard others have additional issues but hopefully this helps someone.

14
 
 

9.1 GB is pretty big for an ISO. I don't think I've ever waited 2 hours to download a distro

15
 
 

What is a good alternative that's easy to use?

16
 
 

:klingon: Bisher an Windows gefesselt: Dieses Linux könnte auch für Gamer den Ausstieg ermöglichen

:onewheelpintxy: Bazzite" macht Gaming unter Linux einfacher denn je – das kostenlose Betriebssystem unterstützt viele verschiedene Plattformen.

https://www.chip.de/news/software/bisher-an-windows-gefesselt-dieses-linux-koennte-auch-fuer-gamer-den-ausstieg-ermoeglichen/_1987ad46-dd6f-4576-b82f-e0d32c74716c.html

@CHIP_online @bazzite

17
 
 

I'm following this guide and trying to print anything, a jpeg, a webpage, results in this format page and then 100's of blank pages.

Why does everything on Linux have to be so hard?!

18
Bazzite 44 Update (universal-blue.discourse.group)
submitted 2 months ago by to c/bazzite@lemmy.world
19
 
 

Hello! I've posted this in a few places but haven't had much luck finding an answer. I purchased the Acasis AC-VS2583 to use with Bazzite based on this OBS forum post. After some back and forth with Acasis support, I did find that the Kylin driver provided in their driver package did work to an extent, in that upon installation the capture card does appear and work in OBS for the remainder of that session, but will stop working if the computer is shut down or rebooted. I checked the status of the service using sudo systemctl status hwsuhdx1.service and got the following output:

× hwsuhdx1.service - Load HwsUHDX1Capture kernel module
Loaded: loaded (/etc/systemd/system/hwsuhdx1.service; enabled; preset: disabled)
Drop-In: /usr/lib/systemd/system/service.d
└─10-timeout-abort.conf
Active: failed (Result: exit-code) since Fri 2026-04-17 10:17:23 EDT; 1min 1s ago
Invocation: c37145d79144432688955cdd7031c593
Process: 1460 ExecStart=/bin/sh /usr/local/sbin/hws-load.sh (code=exited, status=1/FAILURE)
Main PID: 1460 (code=exited, status=1/FAILURE)
Mem peak: 4.6M
CPU: 67ms

Apr 17 10:17:23 bazzite sh[1460]: hws-load: insmod /opt/HWS/ko/6.17.7-ba29.fc43.x86_64/HwsUHDX1Capture.ko
Apr 17 10:17:23 bazzite sh[1520]: insmod: ERROR: could not insert module /opt/HWS/ko/6.17.7-ba29.fc43.x86_64/HwsUHDX1Capture.ko: Permission denied
Apr 17 10:17:23 bazzite sh[1460]: hws-load: insmod failed; last Unknown symbol lines:
Apr 17 10:17:23 bazzite sh[1523]: egrep: warning: egrep is obsolescent; using grep -E
Apr 17 10:17:23 bazzite sh[1460]: hws-load: ERROR: failed to load module from:
Apr 17 10:17:23 bazzite sh[1460]: hws-load: /lib/modules/6.17.7-ba29.fc43.x86_64/updates/dkms/HwsUHDX1Capture.ko
Apr 17 10:17:23 bazzite sh[1460]: hws-load: /opt/HWS/ko/6.17.7-ba29.fc43.x86_64/HwsUHDX1Capture.ko
Apr 17 10:17:23 bazzite systemd[1]: hwsuhdx1.service: Main process exited, code=exited, status=1/FAILURE
Apr 17 10:17:23 bazzite systemd[1]: hwsuhdx1.service: Failed with result 'exit-code'.
Apr 17 10:17:23 bazzite systemd[1]: Failed to start hwsuhdx1.service - Load HwsUHDX1Capture kernel module.

As a workaround, I can cd /opt/HWS/ko/6.17.7-ba29.fc43.x86_64 and run sudo insmod HwsUHDX1Capture.ko and then sudo systemctl start hwsuhdx1.service and get it working for the remainder of that session, but this is obviously not ideal. I did reach out to Acasis about this but they just told me to use AI to solve my problem, which was disappointing. I guess I'm wondering if anyone has gotten something like this working on Bazzite or would know how to properly load in a kernel module so that it runs with correct permissions on startup.

20
 
 

a way to install linux without a usb drive

https://github.com/rltvty2/ulli

very interesting! just double click an exe file and install linux

would be interesting if @bazzite or @linuxmint offered exe programs that does this type of install

21
Bazzite April 2026 Update (universal-blue.discourse.group)
submitted 3 months ago by to c/bazzite@lemmy.world
22
 
 

I realise that my keyboard has some dodgy keys when I tried to use my administrator password, so I don't actually know for sure what it is 😬

A significant mistake! Luckily there's no real setup issues or anything and I'm happy to reinstall - the only thing on there is my steam downloads which will take ages to download again

Is there a way I can save those files and reinstall bazzite from my original thumb drive installer so that I can fix my mistake this time?

23
 
 

@bazzite Will Bazzite comply to age verification new laws?

24
what is this error? (lemmy.world)
submitted 4 months ago by to c/bazzite@lemmy.world
 
 

Haven't booted my pc for a while, suddenly this showed up today?

25
 
 

Hi guys, As the title pretty much says, what is the correct way to keep your bazzite pc up to date with both software and hardware drivers? Do you just use the "updater" on their "marketplace" platform? Or is there a terminal code I should know of? (For instance, like OpenSUSE has the sudo zypper dup command)

view more: next ›