Skip to content

Instantly share code, notes, and snippets.

@ashtonx
Last active February 1, 2026 00:42
Show Gist options
  • Select an option

  • Save ashtonx/8783df8cb82e771b198c4a5997e76bf4 to your computer and use it in GitHub Desktop.

Select an option

Save ashtonx/8783df8cb82e771b198c4a5997e76bf4 to your computer and use it in GitHub Desktop.
Proton auto screen detection and settings

my ArchLinux config for proton-ge, hdr settings and selecting monitor.

If default it uses DisplayPort, if big picture it uses HDMI. It also sets up wayland hdr.

there are some other settings i use as defaults, like cpu topology or ntsync. If you got here by google feel free to remove the unnecessary stuff, I've commented parts setting monitor and hdr.

I don't remember how to check strings for display on wayland so you'll have to google it up if you need different ones.

user settings file path: /usr/share/steam/compatibilitytools.d/proton-ge-custom/user_settings.py

in user_settings.py file:

add at the beginning

exec(open('/path/to/scripts/proton.py').read())

at the end

user_settings.update(proton_defaults)

optionally to dump cvars when game is launched to verify if it works you can append call to LogData() function which logs them after game is launched.

import os
# select monitor
MonitorValue = "DP-1" # default to display port
if os.environ.get('SteamTenfoot', 0) == 1:
MonitorValue="HDMI-A-2" # hdmi if big picture mode
proton_defaults = {
"WAYLANDDRV_PRIMARY_MONITOR":MonitorValue, # selects monitor
"WINE_CPU_TOPOLOGY":"16:0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15",
"PROTON_USE_NTSYNC":"1",
"DXVK_ASYNC":"1",
"PROTON_ENABLE_WAYLAND":"1", # wayland for hdr
"PROTON_ENABLE_HDR":"1", # for hdr in wayland
"DXVK_HDR":"1", # for hdr in wayland
"ENABLE_HDR_WSI":"1",
"PROTON_FSR4_RDNA3_UPGRADE":"1",
}
def LogData():
import logging
LogPath='/path/to/scripts/proton_launchlog.txt'
with open(LogPath, "w") as file:
file.truncate()
logging.basicConfig(filename=LogPath, level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
if os.environ.get('LogEnvVars', "0") != "1":
logging.info('NoEnvVarLog')
return
else:
for key, value in os.environ.items():
logging.info(f'{key}: {value}')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment