Skip to content

resuming broken in steam big picture mode #276

Open

Description

@merisbahti

Hi, not sure if this is related to the roadmap issue about having a dedicated screen space for max but here goes.

When clicking the resume game button in steam big picture mode nothing happens.
I think it's related to there launching two programs when starting a game with notproton.
I think it's switching to the non-active application.
Any clue on how I can fix this?

Activity

  1. NotProtonNot commented on Oct 31, 2026

    @NotProtonNot
    Owner

    Does this occur with native macOS games? I think it does/is a Steam issue. Something I can work on, though.

  2. rapheljr commented on Nov 2, 2026

    @rapheljr
    Contributor

    I investigated the disassembly of Steam's steamui.dylib (ActivateApplication) and steamclient.dylib (ActivateProcess), confirmed the exact root cause, and submitted PR #283 fixing this:

    Why this happens:

    • When clicking Resume Game, Steam invokes [NSRunningApplication runningApplicationWithProcessIdentifier:tracked_pid] activateWithOptions:NSApplicationActivateIgnoringOtherApps.
    • For native macOS games, Steam tracks the game's GUI application process directly, which has an NSRunningApplication, so window activation succeeds.
    • For NotProton games, Steam tracks the /bin/sh shell wrapper running compat_run.sh. Because /bin/sh is a non-GUI CLI process (not an application bundle), runningApplicationWithProcessIdentifier: returns nil.
    • Calling [nil activateWithOptions:2] silently returns NO. Steam closes Big Picture anyway, but WindowServer never brings the game forward, dropping focus to whatever inactive background application was behind Big Picture ("switching to the non-active application").

    Fix in #283:

    1. In dylib/hooks/hook_activate.c: hooks +[NSRunningApplication runningApplicationWithProcessIdentifier:] to resolve the child game PID via proc_listchildpids or the newest non-terminated com.notproton.launcher.* bundle in NSWorkspace.runningApplications.
    2. In overlay-shim/overlay_shim.m: dispatches [NSApp activateIgnoringOtherApps:YES] on the main thread inside Wine when the overlay deactivates (np_overlay_shim_set_active(0)).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions