From 1e1d52430586461e2ca02260cf8d82aaa0c8c938 Mon Sep 17 00:00:00 2001 From: Scott Jones Date: Tue, 22 Sep 2026 20:22:55 -0400 Subject: [PATCH 1/2] Allow normal Steam update and repair checks --- pkgbuilds/omarchy-steam-fex/PKGBUILD | 6 +++--- pkgbuilds/omarchy-steam-fex/README.md | 2 +- pkgbuilds/omarchy-steam-fex/omarchy-launch-steam | 6 ------ pkgbuilds/omarchy-steam-fex/test-launcher.py | 5 ++--- 4 files changed, 6 insertions(+), 13 deletions(-) diff --git a/pkgbuilds/omarchy-steam-fex/PKGBUILD b/pkgbuilds/omarchy-steam-fex/PKGBUILD index 02d2e9d..2921ddf 100644 --- a/pkgbuilds/omarchy-steam-fex/PKGBUILD +++ b/pkgbuilds/omarchy-steam-fex/PKGBUILD @@ -1,15 +1,15 @@ pkgname=omarchy-steam-fex pkgver=1.0.0 -pkgrel=3 +pkgrel=4 pkgdesc='Steam launcher with login workarounds for Apple Silicon using muvm and FEX' arch=('aarch64') url='https://github.com/omacom/omarchy-pkgs/tree/master/pkgbuilds/omarchy-steam-fex' license=('MIT') checkdepends=('python') source=('omarchy-launch-steam' 'LICENSE' 'test-launcher.py') -sha256sums=('37ad2e8a863e90c2b3248f22d93b548c6070f396f631ad39cefc4745478515b4' +sha256sums=('5e115fd7ec457f7e05a006c95760c122dee7e4bb76edc53af4419a3474ac7901' '717ba1949502290f8e47688ae2e323acd06c8ca47aec9f7596b15f678c1af4a2' - 'fbab0f88ecdf3238bfb95a1523eef7de2ded2928c91c90e4e06435696dd86cdb') + 'efcc624b0a914aec51007cf743197822058b317748c4d125f7ab6a1d00632252') check() { python test-launcher.py diff --git a/pkgbuilds/omarchy-steam-fex/README.md b/pkgbuilds/omarchy-steam-fex/README.md index 9760b17..6f7bbde 100644 --- a/pkgbuilds/omarchy-steam-fex/README.md +++ b/pkgbuilds/omarchy-steam-fex/README.md @@ -2,7 +2,7 @@ `omarchy-steam-fex` provides `omarchy-launch-steam` for the Asahi Linux `steam`, `muvm`, and `FEX-Emu` stack. Those runtime packages come from `asahi-alarm`; `FEX-Emu` provides `FEXBash`. The package is restricted to aarch64 and assumes that stack's `~/.local/share/fex-steam/steam-launcher/bin_steam.sh` layout. -The launcher runs Steam through `muvm` and `FEXBash` with the CEF occlusion workaround. Once Steam's client files are present, it also disables bootstrap verification and repair and patches the Steam UI network initialization block that can leave login waiting indefinitely. Initial bootstrap keeps the normal bootstrap flags. If the FEX launcher is unavailable, it falls back to `steam`. +The launcher runs Steam through `muvm` and `FEXBash` with the CEF occlusion workaround. Once Steam's client files are present, it patches the Steam UI network initialization block that can leave login waiting indefinitely. Both initial and subsequent launches leave Steam's normal bootstrap, update, verification, and repair behavior enabled. If the FEX launcher is unavailable, it falls back to `steam`. `omarchy-launch-steam --prepare` creates the current user's desktop override with `Exec=omarchy-launch-steam %U` if it is missing, and applies the same UI patch. Existing overrides and symlinks are preserved on preparation and launch. If an existing override uses a different command, edit its `Exec` entry to use `omarchy-launch-steam %U` when you want this launcher. Each matching chunk is backed up as `.omarchy-bak` before its first patch; existing backups are preserved. The regex matches the original network initialization block, so a patched block is not changed again. An unrelated connected-state assignment elsewhere in the chunk does not suppress the fix. The regex depends on Valve's client code and may need updating when that code changes. diff --git a/pkgbuilds/omarchy-steam-fex/omarchy-launch-steam b/pkgbuilds/omarchy-steam-fex/omarchy-launch-steam index c46fdf7..0baa257 100755 --- a/pkgbuilds/omarchy-steam-fex/omarchy-launch-steam +++ b/pkgbuilds/omarchy-steam-fex/omarchy-launch-steam @@ -96,12 +96,6 @@ if [[ $(uname -m) == aarch64 ]] && command -v muvm >/dev/null && command -v FEXB steam_args=(-cef-force-occlusion) if steam_client_ready; then prepare_asahi - steam_args+=( - -noverifyfiles - -nobootstrapupdate - -skipinitialbootstrap - -norepairfiles - ) else write_steam_desktop fi diff --git a/pkgbuilds/omarchy-steam-fex/test-launcher.py b/pkgbuilds/omarchy-steam-fex/test-launcher.py index 02e7c65..743562c 100644 --- a/pkgbuilds/omarchy-steam-fex/test-launcher.py +++ b/pkgbuilds/omarchy-steam-fex/test-launcher.py @@ -25,7 +25,6 @@ ORIGINAL = ( '(0,Ab.cd)("System.Network.RegisterForConnectivityTestChanges")&&SteamClient.System.Network.RegisterForConnectivityTestChanges(this.OnConnectivityTestStateChanged),' 't||(this.m_bIsAwaitingInitialNetworkState=!1);after();' ) -SKIP_BOOTSTRAP = ['-noverifyfiles', '-nobootstrapupdate', '-skipinitialbootstrap', '-norepairfiles'] MOCK = ''' import json, os @@ -200,11 +199,11 @@ class SteamLauncherTests(unittest.TestCase): self.assert_fex(self.run_launcher(), ['-cef-force-occlusion'], []) self.assertEqual(path.read_text(), ORIGINAL) - def test_ready_launch_patches_and_disables_bootstrap(self): + def test_ready_launch_patches_and_keeps_updates_enabled(self): path = self.chunk() self.client_ready() args = ['steam://open/main'] - self.assert_fex(self.run_launcher(*args), ['-cef-force-occlusion', *SKIP_BOOTSTRAP], args) + self.assert_fex(self.run_launcher(*args), ['-cef-force-occlusion'], args) self.assertIn('m_bIsConnectedToANetwork=!0', path.read_text()) self.assert_desktop() From 4c3f31e972519f3a8cc93d43442b514fa0fe7580 Mon Sep 17 00:00:00 2001 From: Scott Jones Date: Thu, 24 Sep 2026 07:13:06 -0400 Subject: [PATCH 2/2] Preserve Steam UI patch during update checks --- pkgbuilds/omarchy-steam-fex/PKGBUILD | 4 ++-- pkgbuilds/omarchy-steam-fex/README.md | 2 +- pkgbuilds/omarchy-steam-fex/omarchy-launch-steam | 3 +++ pkgbuilds/omarchy-steam-fex/test-launcher.py | 4 ++-- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/pkgbuilds/omarchy-steam-fex/PKGBUILD b/pkgbuilds/omarchy-steam-fex/PKGBUILD index 2921ddf..a0c77f8 100644 --- a/pkgbuilds/omarchy-steam-fex/PKGBUILD +++ b/pkgbuilds/omarchy-steam-fex/PKGBUILD @@ -7,9 +7,9 @@ url='https://github.com/omacom/omarchy-pkgs/tree/master/pkgbuilds/omarchy-steam- license=('MIT') checkdepends=('python') source=('omarchy-launch-steam' 'LICENSE' 'test-launcher.py') -sha256sums=('5e115fd7ec457f7e05a006c95760c122dee7e4bb76edc53af4419a3474ac7901' +sha256sums=('d00742b36ba3d630b43cfe5ab7ac665625e113651d487630e2e440535c8dab64' '717ba1949502290f8e47688ae2e323acd06c8ca47aec9f7596b15f678c1af4a2' - 'efcc624b0a914aec51007cf743197822058b317748c4d125f7ab6a1d00632252') + '4584557d52d2a56d1edf082c0d0c0deaa3eed2959b02e6eb681c9dd36bc94f3f') check() { python test-launcher.py diff --git a/pkgbuilds/omarchy-steam-fex/README.md b/pkgbuilds/omarchy-steam-fex/README.md index 6f7bbde..df55174 100644 --- a/pkgbuilds/omarchy-steam-fex/README.md +++ b/pkgbuilds/omarchy-steam-fex/README.md @@ -2,7 +2,7 @@ `omarchy-steam-fex` provides `omarchy-launch-steam` for the Asahi Linux `steam`, `muvm`, and `FEX-Emu` stack. Those runtime packages come from `asahi-alarm`; `FEX-Emu` provides `FEXBash`. The package is restricted to aarch64 and assumes that stack's `~/.local/share/fex-steam/steam-launcher/bin_steam.sh` layout. -The launcher runs Steam through `muvm` and `FEXBash` with the CEF occlusion workaround. Once Steam's client files are present, it patches the Steam UI network initialization block that can leave login waiting indefinitely. Both initial and subsequent launches leave Steam's normal bootstrap, update, verification, and repair behavior enabled. If the FEX launcher is unavailable, it falls back to `steam`. +The launcher runs Steam through `muvm` and `FEXBash` with the CEF occlusion workaround. Once Steam's client files are present, it patches the Steam UI network initialization block that can leave login waiting indefinitely. Initial bootstrap uses Steam's normal checks. Subsequent launches keep update and bootstrap checks enabled but pass `-noverifyfiles`: Steam otherwise detects the modified UI file, replaces it, and loses the login fix. After a client update replaces the UI file, launch again to reapply the patch. If the FEX launcher is unavailable, it falls back to `steam`. `omarchy-launch-steam --prepare` creates the current user's desktop override with `Exec=omarchy-launch-steam %U` if it is missing, and applies the same UI patch. Existing overrides and symlinks are preserved on preparation and launch. If an existing override uses a different command, edit its `Exec` entry to use `omarchy-launch-steam %U` when you want this launcher. Each matching chunk is backed up as `.omarchy-bak` before its first patch; existing backups are preserved. The regex matches the original network initialization block, so a patched block is not changed again. An unrelated connected-state assignment elsewhere in the chunk does not suppress the fix. The regex depends on Valve's client code and may need updating when that code changes. diff --git a/pkgbuilds/omarchy-steam-fex/omarchy-launch-steam b/pkgbuilds/omarchy-steam-fex/omarchy-launch-steam index 0baa257..40e5249 100755 --- a/pkgbuilds/omarchy-steam-fex/omarchy-launch-steam +++ b/pkgbuilds/omarchy-steam-fex/omarchy-launch-steam @@ -95,6 +95,9 @@ if [[ $(uname -m) == aarch64 ]] && command -v muvm >/dev/null && command -v FEXB if [[ -f $launcher ]]; then steam_args=(-cef-force-occlusion) if steam_client_ready; then + # Steam's verifier replaces our patched UI chunk on every launch. + # Keep update/bootstrap checks enabled while preserving that patch. + steam_args+=(-noverifyfiles) prepare_asahi else write_steam_desktop diff --git a/pkgbuilds/omarchy-steam-fex/test-launcher.py b/pkgbuilds/omarchy-steam-fex/test-launcher.py index 743562c..5b511c6 100644 --- a/pkgbuilds/omarchy-steam-fex/test-launcher.py +++ b/pkgbuilds/omarchy-steam-fex/test-launcher.py @@ -199,11 +199,11 @@ class SteamLauncherTests(unittest.TestCase): self.assert_fex(self.run_launcher(), ['-cef-force-occlusion'], []) self.assertEqual(path.read_text(), ORIGINAL) - def test_ready_launch_patches_and_keeps_updates_enabled(self): + def test_ready_launch_patches_and_keeps_update_checks_enabled(self): path = self.chunk() self.client_ready() args = ['steam://open/main'] - self.assert_fex(self.run_launcher(*args), ['-cef-force-occlusion'], args) + self.assert_fex(self.run_launcher(*args), ['-cef-force-occlusion', '-noverifyfiles'], args) self.assertIn('m_bIsConnectedToANetwork=!0', path.read_text()) self.assert_desktop()