From 2711782c428a4f163b518abbbe3e2ba604e0bff3 Mon Sep 17 00:00:00 2001 From: Albert Armea Date: Mon, 29 Dec 2025 02:30:08 -0500 Subject: [PATCH] Hide Steam UI while loading --- crates/shepherd-launcher-ui/src/app.rs | 24 ++++++++++++++++++------ sway.conf | 16 ++++++++++++++++ 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/crates/shepherd-launcher-ui/src/app.rs b/crates/shepherd-launcher-ui/src/app.rs index 06ac9e0..57fe44a 100644 --- a/crates/shepherd-launcher-ui/src/app.rs +++ b/crates/shepherd-launcher-ui/src/app.rs @@ -87,6 +87,11 @@ window { font-size: 24px; font-weight: 600; } + +.session-sublabel { + color: #888888; + font-size: 16px; +} "#; pub struct LauncherApp { @@ -356,11 +361,13 @@ impl LauncherApp { entry_label, time_remaining: _, } => { - session_label.set_text(&format!("Running: {}", entry_label)); - // Hide the launcher window so the application can be seen + session_label.set_text(&format!("Loading: {}", entry_label)); + // Show the session view as a loading screen behind the game + // The game window will appear on top when it launches if let Some(ref win) = window { - win.set_visible(false); + win.set_visible(true); } + stack.set_visible_child_name("session"); } LauncherState::Error { message } => { if let Some(ref win) = window { @@ -417,12 +424,17 @@ impl LauncherApp { container.set_valign(gtk4::Align::Center); container.add_css_class("session-active-box"); - let label = gtk4::Label::new(Some("Session Active")); + let spinner = gtk4::Spinner::new(); + spinner.set_spinning(true); + spinner.add_css_class("launching-spinner"); + container.append(&spinner); + + let label = gtk4::Label::new(Some("Loading...")); label.add_css_class("session-label"); container.append(&label); - let hint = gtk4::Label::new(Some("Use the HUD to view time remaining")); - hint.add_css_class("status-label"); + let hint = gtk4::Label::new(Some("Please wait while the application starts")); + hint.add_css_class("session-sublabel"); container.append(&hint); (container, label) diff --git a/sway.conf b/sway.conf index 1bd3589..4d5dbdc 100644 --- a/sway.conf +++ b/sway.conf @@ -74,6 +74,22 @@ for_window [instance="^Minecraft [0-9]"] border none, focus for_window [class="^Minecraft Launcher$"] border none for_window [instance="^minecraft-launcher$"] border none +# Steam: Hide Steam client windows that appear before the actual game launches +# Steam shows various windows (client, dialogs, updates) before launching games +# We make these completely transparent and floating off-screen so they don't interfere +# Steam client main window and various dialogs +for_window [class="^Steam$"] floating enable, opacity 0, move position -9999 -9999 +for_window [instance="^Steam$"] floating enable, opacity 0, move position -9999 -9999 +# Steam-related helper windows and dialogs (case-insensitive matching) +for_window [class="^steam$"] floating enable, opacity 0, move position -9999 -9999 +for_window [instance="^steam$"] floating enable, opacity 0, move position -9999 -9999 +# Steam Big Picture mode overlay and notifications +for_window [title="^Steam$"] floating enable, opacity 0, move position -9999 -9999 +# Steam sign-in window +for_window [title="^Sign in to Steam$"] floating enable, opacity 0, move position -9999 -9999 +# Steam game update/install progress windows +for_window [title="^Steam - News"] floating enable, opacity 0, move position -9999 -9999 + # Disable window decorations (no title bars) - for all windows default_border none default_floating_border none