Gaming on SegLinux

SegLinux is set up for games out of the box: Windows games run through Wine, Proton and DXVK, and the system is tuned for low latency. This page lists what is included and why.

Settings → Gaming

Open Settings (Super+I) → Gaming. Everything applies to the next game started; the display settings apply at once.

segrun's settings are saved in ~/.config/seglinux/segrun.toml; settings Settings has no control for (such as a profile's args) are kept. Restore page defaults resets the settings but keeps game profiles and variables. Steam and Lutris keep their own settings for the games they start.

Choices

Area SegLinux default Why
Init system OpenRC with parallel start (rc_parallel="YES"); runit and dinit builds are available OpenRC is Artix's most used init. It applies binfmt.d, sysctl.d and modules-load.d natively, which the tuning below relies on, and starting services in parallel keeps boot fast. runit boots about as fast but leaves some of those files to its own scripts.
Kernel linux-zen Arch's kernel variant tuned for desktop responsiveness and low latency; -k linux builds with the stock kernel
Desktop SegLinux Rust shell on labwc A light Wayland compositor: little RAM and CPU left for games. Plasma stays available as a fallback session.
Swap zram (compressed swap in RAM, up to 8 GiB) Avoids stutter from swapping to disk when a game fills memory

Included software

Package Use
Steam (with Proton) Steam games; turn on Proton for all titles in Steam → Settings → Compatibility
Lutris GOG, Epic, Battle.net, emulators and other launchers
Wine, winetricks Windows programs and games outside Steam (segrun)
GameMode Performance governor, I/O priority and GPU performance level while a game runs
MangoHud FPS, frame time, CPU/GPU load overlay
gamescope Valve's gaming compositor: frame limiting, FSR upscaling, Gaming Mode
Mesa, Vulkan (AMD, Intel, NVK) + 32-bit Graphics drivers, including for 32-bit games
NVIDIA driver Installed by Setup on GeForce GTX 16 / RTX and newer when online (see below)

Gaming Mode

The sign-in screen offers SegLinux Gaming Mode: Steam's Big Picture inside gamescope, like SteamOS. It suits controllers and TVs. Leaving Big Picture (Steam menu → Exit) returns to the sign-in screen.

Running Windows games with segrun

segrun recognises games from what they import (Direct3D, OpenGL, Vulkan, XInput) and then:

segrun Game.exe                       # GameMode automatically
segrun run --hud Game.exe             # MangoHud overlay
segrun run --gamescope Game.exe       # inside gamescope (fullscreen)
segrun run --gamemode never Game.exe  # without GameMode

Per-game settings go in ~/.config/seglinux/segrun.toml:

[[app]]
match = "Game*.exe"
gamescope = true
gamescope_args = ["-W", "2560", "-H", "1440", "-r", "165", "--adaptive-sync"]

System tuning

Setting File Effect
vm.max_map_count = 2147483642 /etc/sysctl.d/80-seglinux-gaming.conf Games that map many memory areas no longer crash (SteamOS value)
kernel.split_lock_mitigate = 0 same No deliberate slowdown of games that perform split locks
nmi_watchdog=0, nowatchdog, watchdog modules blacklisted kernel command line (Setup), /usr/lib/modprobe.d/seglinux-nowatchdog.conf Fewer periodic interrupts
fs.inotify.max_user_watches sysctl Launchers watching many files
I/O schedulers: NVMe none, SSD mq-deadline, HDD BFQ /usr/lib/udev/rules.d/60-seglinux-ioschedulers.rules Low latency while games stream assets
NTSYNC /etc/modules-load.d/10-ntsync.conf, udev rule Windows synchronisation in the kernel, used by Wine 11 and Proton
esync file limit /etc/security/limits.d/90-seglinux-esync.conf For Proton/wine-staging's esync
zram + vm.swappiness = 180 written by Setup Compressed swap in RAM; zswap.enabled=0 avoids double compression
Quiet boot, loglevel=3 kernel command line (Setup) Faster, quieter boot
Variable refresh rate and tearing /usr/share/seglinux/labwc/rc.xml (adaptiveSync, allowTearing) FreeSync/G-Sync for fullscreen games, lowest input latency
Parallel service start /etc/rc.conf (Setup, OpenRC) Faster boot

Extra kernel parameters can be added in the answer file ([performance] kernel_parameters) or in /etc/default/grub followed by sudo grub-mkconfig -o /boot/grub/grub.cfg.

NVIDIA

Setup reads the PCI IDs of the graphics cards. For an NVIDIA GPU of the Turing generation or newer (GeForce GTX 16, RTX 20 and later), it installs nvidia-open-dkms, nvidia-utils, lib32-nvidia-utils and nvidia-settings when the network is reachable (this also updates the system). Without a network connection, or with [drivers] nvidia = "never", the open-source nouveau/NVK driver is used; install the packages later with sudo pacman -Syu nvidia-open-dkms nvidia-utils lib32-nvidia-utils. Older NVIDIA cards are not supported by NVIDIA's current driver and keep nouveau.

Intel graphics and low-end PCs

What to expect, honestly:

What SegLinux does for low-end machines:

Getting more frames on weak GPUs:

# ~/.config/seglinux/segrun.toml
[[app]]
match = "Game.exe"
gamescope = true
# Render at 720p, upscale to 1080p with AMD FSR, cap at 60 FPS.
gamescope_args = ["-w", "1280", "-h", "720", "-W", "1920", "-H", "1080", "-F", "fsr", "-r", "60", "-f"]

In Steam, the same works per game with launch options such as gamescope -w 1280 -h 720 -W 1920 -H 1080 -F fsr -f -- %command%. Lower in-game resolution, shadows and post-processing first; MangoHud's fps_limit (in ~/.config/MangoHud/MangoHud.conf) keeps frame times steady.

More on Intel GPUs:

Checking the setup

segrun doctor reports Wine, winetricks, Vulkan, NTSYNC, GameMode, MangoHud, gamescope, split lock mitigation, zram, the open file limit, vm.max_map_count and binfmt support.

Limits

Games whose anti-cheat requires a Windows kernel driver do not run unless the developer enables Proton support. Check ProtonDB for per-game reports.

← All guides · Download SegLinux →