diff --git a/client/devkit-utils/steamos-get-status b/client/devkit-utils/steamos-get-status
index 39e41fbd35307a29945a17e6e0787f20a92ea6e3..07a03308eca4e7fbaad112c0b20483ac28dc33cf 100755
--- a/client/devkit-utils/steamos-get-status
+++ b/client/devkit-utils/steamos-get-status
@@ -78,12 +78,43 @@ def cef_debugging():
     ret = subprocess.run('/usr/bin/ss -l -t -n -p | grep steamwebhelper | grep 8080 > /dev/null', shell=True)
     return ( ret.returncode == 0 )
 
+def steam_process_get_path_and_args():
+    ret = subprocess.run(['pgrep', '-a', '-x', 'steam'], capture_output=True, text=True)
+    if ret.returncode != 0:
+        return None
+    # Proton may run a dummy 'steam' process that confused previous implementations of this logic
+    # look for a process who's real filename is 'steam'
+    for l in ret.stdout.splitlines():
+        try:
+            pid = int(l.split(' ')[0])
+        except:
+            continue
+        rp = os.path.realpath(f'/proc/{pid}/exe')
+        if os.path.basename(rp) == 'steam':
+            sp = shlex.split(l)
+            path = sp[1]
+            args = sp[2:]
+            return (path, args)
+
+def steam_process_get_path():
+    try:
+        (path, _) = steam_process_get_path_and_args()
+    except:
+        return None
+    return path
+
+def steam_process_get_args():
+    try:
+        (_, args) = steam_process_get_path_and_args()
+    except:
+        return None
+    return args
+
 def steam_status():
     '''What is the status of the Steam client on the system?'''
-    ret = subprocess.run(['pgrep', '-a', '-x', 'steam'], capture_output=True, text=True)
-    if ret.returncode == 1:
+    s = steam_process_get_path()
+    if s is None:
         return SteamStatus.NOT_RUNNING
-    s = ret.stdout.strip('\n')
     if s.find('.local/share/Steam/') != -1:
         if os.path.exists(
             os.path.expanduser('~/devkit-game/devkit-steam')
@@ -96,16 +127,9 @@ def steam_status():
     if s.find('devkit-game/steam-vscode/') != -1:
         # not sure this custom VSCode upload path is still valid
         return SteamStatus.VSCODE
-    logger.warning(f'could not interpret pgrep result to determine steam client status: {ret!r}')
+    logger.warning(f'could not interpret pgrep result to determine steam client status: {s!r}')
     return SteamStatus.ERROR
 
-def steam_current_args():
-    '''What are the Steam client's arguments?'''
-    ret = subprocess.run(['pgrep', '-a', '-x', 'steam'], capture_output=True, text=True)
-    if ret.returncode == 1:
-        return None
-    return shlex.split(ret.stdout.split('\n')[0])[2:]
-
 def steam_configuration():
     '''How is the Steam client configured to run?'''
     devkit_steam_trampoline_path = os.path.join(DEVKIT_TOOL_FOLDER, 'devkit-steam')
@@ -339,7 +363,7 @@ if __name__ == '__main__':
             'steam_osclient_version': osclient_version,
             'has_side_loaded_client': has_side_loaded_client,
             'steam_default_args': steam_default_args(),
-            'steam_current_args': steam_current_args(), # None, or a list
+            'steam_current_args': steam_process_get_args(), # None, or a list
             'has_foxnet_connectivity': has_foxnet_connectivity,
             'foxnet_hostname': foxnet_hostname,
             'user_password_is_set': _user_password_is_set,
@@ -351,7 +375,7 @@ if __name__ == '__main__':
         logger.info(f'OS version             : {os_version}')
         logger.info(f'Session mode is        : {session_status}')
         logger.info(f'Steam client status    : {steam_status_description}')
-        logger.info(f'Steam client args      : {steam_current_args()!r}')
+        logger.info(f'Steam client args      : {steam_process_get_args()!r}')
         logger.info(f"Steam CEF debug        : {'enabled' if cef_debugging_enabled else 'disabled'}")
         logger.info(f'Steam client config    : {steam_configuration.description}')
         logger.info(f'Steam OS client branch : {osclient_branch}')