Chapter 5

Games

You can not play games under Linux!

Yes I can 😏

…and you could, too.

*Limiting myself to flight/space sim stuff that I own and play regularly here. There is more, of course.

Beko Pharm Apr 7, 2025 / Feb 3, 2026

License

This content is, unless otherwise noted, licensed under Creative Commons Attribution-ShareAlike 4.0 International license

Subsections of Games

Ace Combat 7: Skies Unknown

4.0

Enjoying the landscape from the cockpit of a F-16
Enjoying the landscape from the cockpit of a F-16

Primary Buffer Panel

This is a game I have an absolute love/hate relationship with. It’s one of the first PC ports of the franchise and this really shows. One of my main issues with the games is it’s mediocre HOTAS support, forcing the player to crawl through .ini files manually to configure all buttons and axis. The other unforgivable issue is that this game basically supports only a FULL HD resolution of 1920x1024 and does not even have a FOV slider. This is a game meant to be played with HOTAS and a wide screen!

Keep Steam Input off

Seriously. Steam Input screwed me over on this again and again. Perfectly fine looking joysticks in the Wine Control Center set to DInput never became available as long as Steam Input is enabled for this game.

Anyway, for both exist mods. Speaking of I play this with a bunch of Macross mods and a FOV to get my VF-1 “fix”. I hear there’s also a hack to extend the resolution but that involves editing the binary with a hex editor, which I don’t feel comfortable doing since the address changes with each patch. Oh and the FOV mod somehow only works with Proton 8 for me. YMMV.

I got Ace Combat 7 to spew out a constant stream of telemetry data and events in search for more immersion. The approach is the very same that I used for X4 Foundations before: Side load lib LuaSocket, get a network connection established and start dumping extracted game data to it. This is highly experimental and the result of hacking away for the last ~4 nights. This video demonstrates the results:

Watch this video on YouTube PeerTube

To be perfectly clear: I am aware that Ace Combat is not a “flight sim”, not really worth of an API, and I know that DCS or BMS does it better and in greater detail and even with realism. This is not the point. I started working on this just for fun and to satisfy my own curiosity to see if I can make it. This may be hard to believe but chipping rocks together until the computer does what I want is “quality time” for me πŸ€“

Launch parameters

The usual gamescope trick has not much merit here, since Ace Combat 7 will simply not allow anything over 1920x1024. SBS is possible though.

I love to play many games with my XR glasses in Side-By-Side mode where each eye is fed with a slightly different camera position resulting in 3D depth perception.

This is similar to VR but does not offer e.g. a backchannel for head tracking. Some games, like Elite Dangerous, support this natively. Other games can be forced into a SBS like mode with ReShade and a plugin like SuperDepth3D or Rendepth Reshade. In theory are Reshade shaders compatible with vkBasalt but the depth stuff is apparently exempt from this rule so that is not an option. The approach works nicely with Proton though.

The reshade-linux repo is very useful to get you started but the required steps can be done manually too, of course.

You will need gamescope on top though, because the output has usually to be rescaled or the display ratio is completely off. This also depends on the glasses. Mine do FULL SBS so a resolution of 3840x1080 is excepted in the end.

For Elite Dangerous the correct settings would e.g. be:

gamescope -h 2160 -w 3840 -H 1080 -W 3840 –scaler stretch -e – %command%

Other games may require slightly different settings here. This is an example for Ace Combat 7: Skies Unknown with Reshade and the SuperDepth3D shader:

WINEDLLOVERRIDES=“d3dcompiler_47=n;dxgi=n,b;” gamescope -h 1080 -w 1920 -H 1080 -W 3840 –scaler stretch -b -r 60 -e – %command%

YMMV but the general idea should work with almost any game.

For the sake of completeness here is also my Input.ini located in drive_c/users/steamuser/AppData/Local/BANDAI NAMCO Entertainment/ACE COMBAT 7/Config/ configured to work with my custom DIY F-16 FLCS, Thrustmaster rudder, Cougar throttle and OpenTrack head tracking (joystick output):

Do not keep unused joysticks plugged in

Make sure only the currently used joysticks are connected. Ace Combat seems to calculate some sort of median e.g. for Flight_Throttle and you’ll get grey hair trying to find out why the in-game throttle doesn’t go full way when several joysticks are configured and plugged in since you only ever move one throttle all the time.

[JoystickSetting]
EnableJoystick=True
EnableDeviceJoystick=True
EnableDeviceFlight=True
EnableDevice1stPerson=True

[JoystickMappingFormat]
HelpComment=" ObjectFormat"
HelpComment="     X, Y, Z, Rx, Ry, Rz, Slider[1-2], POV_[U, D, L, R][1-4], Button[1-32]"
HelpComment=
HelpComment=" ValueFormat"
HelpComment="     Object, Object:[P, N, R, C]...[P, N, R, C]"
HelpComment="         P:PositiveValue / N:NegativeValue / R:ReverseSign / C:ConvertRange(+1.0~-1.0 -> 0.0~1.0)"
HelpComment=
HelpComment=" MappingFormat"
HelpComment="     Value, Value1 [&, !, +, >, <] Value2"
HelpComment="         &:IfValue2!=0 / !:IfValue2==0 / +:AddValue / >:SelectLarger / <:SelectSmaller"
HelpComment=
HelpComment=" Example"
HelpComment="     Flight_Pitch=Y:R ! Button10"
HelpComment="     Flight_HatSwitchRight=POV_R1"

[Joystick-0402044F-0000-0000-0000-504944564944]
ProductName=ThrustMaster, Inc. F-16 Flight Control System
Flight_Gun=Button1
Flight_Missile=Button4
Flight_Weapon=Button10
Flight_Target=Button5
Flight_Radar=Button14
Flight_Flare=Button17
Flight_View=Button3
Flight_AccelerationDeceleration=
Flight_AutoPilot=Button12
Flight_Pause=
Flight_HatSwitchUp=POV_U1
Flight_HatSwitchDown=POV_D1
Flight_HatSwitchLeft=POV_L1
Flight_HatSwitchRight=POV_R1
Flight_Pitch=Y:R
Flight_Roll=X:R
Flight_Yaw=
Flight_Throttle=
Flight_CameraPitch=
Flight_CameraYaw=
UI_B=Button4
UI_A=Button3
UI_X=Button1
UI_Y=Button5
UI_LB=
UI_RB=
UI_LT=Button15
UI_RT=Button9
UI_LeftStickPress=Button7
UI_RightStickPress=Button5
UI_DPadUp=POV_U1
UI_DPadDown=POV_D1
UI_DPadLeft=POV_L1
UI_DPadRight=POV_R1
UI_LeftStickUp=Y:N
UI_LeftStickDown=Y:P
UI_LeftStickLeft=X:NR
UI_LeftStickRight=X:P
UI_RightStickUp=
UI_RightStickDown=
UI_RightStickLeft=
UI_RightStickRight=
UI_Menu=Button12

[Joystick-B679044F-0000-0000-0000-504944564944]
ProductName=ThrustMaster, Inc. Thrustmaster Rudder
Flight_Gun=
Flight_Missile=
Flight_Weapon=
Flight_Target=
Flight_Radar=
Flight_Flare=
Flight_View=
Flight_AccelerationDeceleration=
Flight_AutoPilot=
Flight_Pause=
Flight_HatSwitchUp=
Flight_HatSwitchDown=
Flight_HatSwitchLeft=
Flight_HatSwitchRight=
Flight_Pitch=
Flight_Roll=
Flight_Yaw=X
Flight_Throttle=
Flight_CameraPitch=
Flight_CameraYaw=
UI_B=
UI_A=
UI_X=
UI_Y=
UI_LB=
UI_RB=
UI_LT=
UI_RT=
UI_LeftStickPress=
UI_RightStickPress=
UI_DPadUp=
UI_DPadDown=
UI_DPadLeft=
UI_DPadRight=
UI_LeftStickUp=
UI_LeftStickDown=
UI_LeftStickLeft=
UI_LeftStickRight=
UI_RightStickUp=
UI_RightStickDown=
UI_RightStickLeft=
UI_RightStickRight=
UI_Menu=

[Joystick-B687044F-0000-0000-0000-504944564944]
ProductName=ThrustMaster, Inc. Cougar Throttle
Flight_Gun=
Flight_Missile=
Flight_Weapon=Button9
Flight_Target=
Flight_Radar=Button11
Flight_Flare=Button1
Flight_View=Button13
Flight_AccelerationDeceleration=Button7
Flight_AutoPilot=Button3
Flight_Pause=Button10
Flight_HatSwitchUp=POV_U1
Flight_HatSwitchDown=POV_D1
Flight_HatSwitchLeft=POV_L1
Flight_HatSwitchRight=POV_R1
Flight_Pitch=
Flight_Roll=
Flight_Yaw=
Flight_Throttle=Rx
Flight_CameraPitch=
Flight_CameraYaw=
UI_B=
UI_A=
UI_X=
UI_Y=
UI_LB=
UI_RB=
UI_LT=
UI_RT=
UI_LeftStickPress=
UI_RightStickPress=
UI_DPadUp=POV_U1
UI_DPadDown=POV_D1
UI_DPadLeft=POV_L1
UI_DPadRight=POV_R1
UI_LeftStickUp=Y:N
UI_LeftStickDown=Y:P
UI_LeftStickLeft=X:N
UI_LeftStickRight=X:P
UI_RightStickUp=
UI_RightStickDown=
UI_RightStickLeft=
UI_RightStickRight=
UI_Menu=Button10

[Joystick-00000000-0000-0000-0000-504944564944]
ProductName=Opentrack
Flight_Gun=
Flight_Missile=
Flight_Weapon=
Flight_Target=
Flight_Radar=
Flight_Flare=
Flight_View=
Flight_AccelerationDeceleration=
Flight_AutoPilot=
Flight_Pause=
Flight_HatSwitchUp=
Flight_HatSwitchDown=
Flight_HatSwitchLeft=
Flight_HatSwitchRight=
Flight_Pitch=
Flight_Roll=
Flight_Yaw=
Flight_Throttle=
Flight_CameraPitch=X
Flight_CameraYaw=Y
UI_B=
UI_A=
UI_X=
UI_Y=
UI_LB=
UI_RB=
UI_LT=
UI_RT=
UI_LeftStickPress=
UI_RightStickPress=
UI_DPadUp=
UI_DPadDown=
UI_DPadLeft=
UI_DPadRight=
UI_LeftStickUp=
UI_LeftStickDown=
UI_LeftStickLeft=
UI_LeftStickRight=
UI_RightStickUp=
UI_RightStickDown=
UI_RightStickLeft=
UI_RightStickRight=
UI_Menu=

Head tracking

Ace Combat 7 does only support look-around with a gamepad / joystick. It also goes bonkers after a while and requires a game restart. I think this is because it tries to “auto calibrate” all the time and is eventually completely off when the tracker gets recentered externally by e.g. OpenTrack. Until then it works remarkable well. The forced “deadzone” in the middle is a little bit annoying, as it snaps the player camera back in place when coming to close to it.

Demo

Snippets of mission 11: Fleet Destruction / Operation Siren’s Song. In this mission Trigger gets to sink the Erusean Njord Fleet and destroy supply lines. It’s a rather long going mission with the option of doing own supply runs (which I did twice). Also flares.. I needed so many flares in this one.

Watch this video on YouTube PeerTube

Beko Pharm Apr 7, 2025 / Feb 3, 2026 Games

License

This content is, unless otherwise noted, licensed under Creative Commons Attribution-ShareAlike 4.0 International license

Elite Dangerous

1.0 2.0 4.0

Visiting Hong Kong cavaliers
Visiting Hong Kong cavaliers

Primary Buffer Panel

All works.

There are a bunch of videos showcasing Elite Dangerous with my Primary Buffer Panel on my YouTube and PeerTube accounts.

Launch parameters

Like most games does this one also not detect a screen layout but only the primary display on a Linux PC so it won’t offer the maximum resolution possible e.g. with a triple head setup πŸ–₯️πŸ–₯️πŸ–₯️. This can be worked around in multiple ways, e.g. with configuring a virtual desktop in the WINEPREFIX, by adding a virtual monitor to the system or simply by making use of gamescope, the SteamOS session compositing window manager.

Here is an example how games may be started from Steam by adding the following commands to the start parameters (That’s basically the same for e.g. Lutris btw).

gamescope -h 1200 -w 5760 -H 1200 -W 5760 -b -e – %command%

This is not needed if only one monitor is used for gaming.

I love to play many games with my XR glasses in Side-By-Side mode where each eye is fed with a slightly different camera position resulting in 3D depth perception.

This is similar to VR but does not offer e.g. a backchannel for head tracking. Some games, like Elite Dangerous, support this natively. Other games can be forced into a SBS like mode with ReShade and a plugin like SuperDepth3D or Rendepth Reshade. In theory are Reshade shaders compatible with vkBasalt but the depth stuff is apparently exempt from this rule so that is not an option. The approach works nicely with Proton though.

The reshade-linux repo is very useful to get you started but the required steps can be done manually too, of course.

You will need gamescope on top though, because the output has usually to be rescaled or the display ratio is completely off. This also depends on the glasses. Mine do FULL SBS so a resolution of 3840x1080 is excepted in the end.

For Elite Dangerous the correct settings would e.g. be:

gamescope -h 2160 -w 3840 -H 1080 -W 3840 –scaler stretch -e – %command%

Other games may require slightly different settings here. This is an example for Ace Combat 7: Skies Unknown with Reshade and the SuperDepth3D shader:

WINEDLLOVERRIDES=“d3dcompiler_47=n;dxgi=n,b;” gamescope -h 1080 -w 1920 -H 1080 -W 3840 –scaler stretch -b -r 60 -e – %command%

YMMV but the general idea should work with almost any game.

I launch Elite Dangerous from Steam and for most people it’ll be just click Play. Elite had this atrocious overloaded and slow launcher though so I switched to MinEdLauncher instead, which would also kindly chainload further 3rd party apps for me.

The new launcher Elite Dangerous got a few weeks ago is a lot faster and also very minimalistic. Good thing we have choices though. Here are a bunch of ways I launch Elite depending on what I’m going to do:

Launch within gamescope for proper screen size, show MangoHud overlay, use MinEdLauncher and launch directly into Elite Dangerous: Odyssey:

gamescope -h 1200 -w 5760 -H 1200 -W 5760 -b -e – mangohud ./MinEdLauncher %command% /autorun /autoquit /EDO

Start MinEdLauncher from a gnome-terminal and launch directly into Elite Dangerous: Horizons:

gnome-terminal – ./MinEdLauncher %command% /autorun /autoquit /EDH

Start MinEdLauncher from a gnome-terminal and launch directly into Elite Dangerous: Odyssey while allowing access to the Vulkan rendering for recording in OBS Studio

obs-gamecapture gnome-terminal – mangohud ./MinEdLauncher %command% /autorun /autoquit /EDO

Demo

Watch this video on YouTube PeerTube

Ignore the Primary Flight Display. This version of my app has currently a bug where it’s stuck when it should not display at all. It should only display near a planetary.

Music “Running and Burning (Single)” by “Desert Eagles” is released under Creative Commons Attribution 3.0 International License

Beko Pharm Sep 14, 2023 / Apr 8, 2025 Games

License

This content is, unless otherwise noted, licensed under Creative Commons Attribution-ShareAlike 4.0 International license

Star Citizen

1.0 2.0 4.0

Learning how to fly in Star Citizen in an asteroid field
Learning how to fly in Star Citizen in an asteroid field

Primary Buffer Panel

Star Citizen does not export any kind of API to fiddle with. Sadly I doubt it’ll ever happen. Heck they even added EAC recently and the moment someone even mentions this they get dogpiled by competitive players whining that this would make bots possible. No, this is not how computers work. Bots happen with or without a provided API.

Anyway, this is why I can not really show live game data on the MFD or control the status indicators properly. I can only guess based on button presses what they should currently display but that is off fast. Heck, even the game itself has broken status indicators, like stuck missile warnings or a broken altimeter.

There are a bunch of videos showcasing Star Citizen with my Primary Buffer Panel on my YouTube and PeerTube accounts.

Launch parameters

Like most games does this one also not detect a screen layout but only the primary display on a Linux PC so it won’t offer the maximum resolution possible e.g. with a triple head setup πŸ–₯️πŸ–₯️πŸ–₯️. This can be worked around in multiple ways, e.g. with configuring a virtual desktop in the WINEPREFIX, by adding a virtual monitor to the system or simply by making use of gamescope, the SteamOS session compositing window manager.

Here is an example how games may be started from Steam by adding the following commands to the start parameters (That’s basically the same for e.g. Lutris btw).

gamescope -h 1200 -w 5760 -H 1200 -W 5760 -b -e – %command%

This is not needed if only one monitor is used for gaming.

I love to play many games with my XR glasses in Side-By-Side mode where each eye is fed with a slightly different camera position resulting in 3D depth perception.

This is similar to VR but does not offer e.g. a backchannel for head tracking. Some games, like Elite Dangerous, support this natively. Other games can be forced into a SBS like mode with ReShade and a plugin like SuperDepth3D or Rendepth Reshade. In theory are Reshade shaders compatible with vkBasalt but the depth stuff is apparently exempt from this rule so that is not an option. The approach works nicely with Proton though.

The reshade-linux repo is very useful to get you started but the required steps can be done manually too, of course.

You will need gamescope on top though, because the output has usually to be rescaled or the display ratio is completely off. This also depends on the glasses. Mine do FULL SBS so a resolution of 3840x1080 is excepted in the end.

For Elite Dangerous the correct settings would e.g. be:

gamescope -h 2160 -w 3840 -H 1080 -W 3840 –scaler stretch -e – %command%

Other games may require slightly different settings here. This is an example for Ace Combat 7: Skies Unknown with Reshade and the SuperDepth3D shader:

WINEDLLOVERRIDES=“d3dcompiler_47=n;dxgi=n,b;” gamescope -h 1080 -w 1920 -H 1080 -W 3840 –scaler stretch -b -r 60 -e – %command%

YMMV but the general idea should work with almost any game.

This is one of the few games that I do not have on Steam for obvious reasons. Lutris has me covered though and the Star Citizen Linux User Group (LUG) does a very of a good job in maintaining the lug-helper scripts collection for easier installation and configuration of Star Citizen on Linux PC. It also takes care of the still persisting EAC issue for Linux gamer: https://github.com/starcitizen-lug/lug-helper

Demo

Watch this video on YouTube

Watch this video on YouTube PeerTube

Referral Code

Yeah no. Fck this πŸ’©. Get on the hype train or leave it. Personally I got the Aurora starter package for my birthday and that’s it. It’s an awesome tech demo, a great walking simulator and a bug feast with a very… unhealthy community forum. It’ll also probably never finish.

I’ll keep watching from the sides but I won’t pour any money into this until the focus shifts more to simulation that is not even more PvP. This includes an often requested API.

Beko Pharm Sep 14, 2023 / Feb 3, 2026 Games

License

This content is, unless otherwise noted, licensed under Creative Commons Attribution-ShareAlike 4.0 International license

X4: Foundations

1.0 2.0 4.0

Watching the completion of an Asgard battleship
Watching the completion of an Asgard battleship

Primary Buffer Panel

Ah yes… my favorite space sandbox. One of the games I keep blogging about a lot. This is the game I hacked a LUA plugin for to get game data out of the game. I’m also sideloading LuaSocket for the communication with my plumbing pipeline. I’ve yet to write up in detail how I managed to do this but the socket server implementation is already available on https://github.com/bekopharm/x4-projects/wiki/Quick-manual

There are a bunch of videos showcasing X4: Foundations with my Primary Buffer Panel on my YouTube and PeerTube accounts.

Launch parameters

Nothing special. The game does offer the proper resolutions even for a multihead setup in windowed mode. I usually run it like this so sound and rendering doesn’t stop when the game looses window focus:

./X4 -nosoundthrottle -nocputhrottle -skipintro

It also allows resizing of the game window so this can even be scripted e.g. with wmctrl when the game is already running:

wmctrl -x -r X4.X4 -e 0,0,109,5760,1100

Takes a few second to re-init rendering though.

Head tracking

The head tracking is explained in great detail here. Sadly I’d have to settle with Wine because the native Linux version has no head tracking capabilities.

Updated: It’s my absolute pleasure to announce that the described hoops are no longer necessary. Egosoft added native head tracking via OpenTrack into X4 Foundations starting with the public beta 7.50 after all my nagging! It’s like a miracle.

Watch this video on YouTube PeerTube

Beko Pharm Sep 14, 2023 / Apr 8, 2025 Games

License

This content is, unless otherwise noted, licensed under Creative Commons Attribution-ShareAlike 4.0 International license

X Rebirth

1.0 2.0 4.0

Primary Buffer Panel

Approaching a plot ship in X Rebirth
Approaching a plot ship in X Rebirth

This game works internally basically like X4 so it may be possible to get everything going but frankly I never bothered. In fact many X4 extensions re-use content from Rebirth and it’s modding wiki is one of my most important sources for X4 too.

I mostly list it here because I do start it on occasion for it’s story. It also looks a lot more alive than X4 and is not that resource hungry. There’s also a VR version but I don’t own any VR hardware so I never tried.

Launch parameters

Like most games does this one also not detect a screen layout but only the primary display on a Linux PC so it won’t offer the maximum resolution possible e.g. with a triple head setup πŸ–₯️πŸ–₯️πŸ–₯️. This can be worked around in multiple ways, e.g. with configuring a virtual desktop in the WINEPREFIX, by adding a virtual monitor to the system or simply by making use of gamescope, the SteamOS session compositing window manager.

Here is an example how games may be started from Steam by adding the following commands to the start parameters (That’s basically the same for e.g. Lutris btw).

gamescope -h 1200 -w 5760 -H 1200 -W 5760 -b -e – %command%

This is not needed if only one monitor is used for gaming.

Beko Pharm Sep 14, 2023 / Apr 8, 2025 Games

License

This content is, unless otherwise noted, licensed under Creative Commons Attribution-ShareAlike 4.0 International license

X-Wing & TIE Fighter (XWVM)

2.0 4.0

An imperial Star Destroyer infront of the Death Star
An imperial Star Destroyer infront of the Death Star

Primary Buffer Panel

I’m fortunate to be allowed to play the closed alpha of the XWVM project, that allows me to re-experience the classic X-Wing and TIE Fighter games with a modern engine (and a HD assets pack replacing most of the original models). XWVM is not an official product from Lucasfilm Ltd. or Disney. It is not endorsed or authorized by either. It is a fan recreation of the game engine used to play X-Wing and TIE Fighter for the sake of accessibility and requires the original game assets to work.

xvwm-xwing-simpit-homecockpit.jpg
xvwm-xwing-simpit-homecockpit.jpg

While it doesn’t feature any API for ship telemetry (yet?) I can still make use of my Primary Buffer Panel by duplicating the targeting monitor to my MFD, since this one can, unlike the original games, be used very well for actual targeting.

Launch parameters

Like most games does this one also not detect a screen layout but only the primary display on a Linux PC so it won’t offer the maximum resolution possible e.g. with a triple head setup πŸ–₯️πŸ–₯️πŸ–₯️. This can be worked around in multiple ways, e.g. with configuring a virtual desktop in the WINEPREFIX, by adding a virtual monitor to the system or simply by making use of gamescope, the SteamOS session compositing window manager.

Here is an example how games may be started from Steam by adding the following commands to the start parameters (That’s basically the same for e.g. Lutris btw).

gamescope -h 1200 -w 5760 -H 1200 -W 5760 -b -e – %command%

This is not needed if only one monitor is used for gaming.

I love to play many games with my XR glasses in Side-By-Side mode where each eye is fed with a slightly different camera position resulting in 3D depth perception.

This is similar to VR but does not offer e.g. a backchannel for head tracking. Some games, like Elite Dangerous, support this natively. Other games can be forced into a SBS like mode with ReShade and a plugin like SuperDepth3D or Rendepth Reshade. In theory are Reshade shaders compatible with vkBasalt but the depth stuff is apparently exempt from this rule so that is not an option. The approach works nicely with Proton though.

The reshade-linux repo is very useful to get you started but the required steps can be done manually too, of course.

You will need gamescope on top though, because the output has usually to be rescaled or the display ratio is completely off. This also depends on the glasses. Mine do FULL SBS so a resolution of 3840x1080 is excepted in the end.

For Elite Dangerous the correct settings would e.g. be:

gamescope -h 2160 -w 3840 -H 1080 -W 3840 –scaler stretch -e – %command%

Other games may require slightly different settings here. This is an example for Ace Combat 7: Skies Unknown with Reshade and the SuperDepth3D shader:

WINEDLLOVERRIDES=“d3dcompiler_47=n;dxgi=n,b;” gamescope -h 1080 -w 1920 -H 1080 -W 3840 –scaler stretch -b -r 60 -e – %command%

YMMV but the general idea should work with almost any game.

The engine works without any out of the box but can be tweaked with the usual launch parameters to get it to expand over multiple displays.

It happily read any joystick I threw at it on both versions, Proton and native Linux.

Head tracking

It also supports OpenTrack and TrackIR head tracking. Sadly it’s missing OpenTrack on Linux PC at the time of writing but I did raise a ticket for this and it hopefully gets implemented using UDP at some point too. There’s also an option to assign joystick axis for this but nothing I tried here had any effect on camera movements.

Demo

Heavily cut VOD of one of my live stream.

Watch this video on YouTube PeerTube

Beko Pharm Apr 7, 2025 / Apr 7, 2025 Games

License

This content is, unless otherwise noted, licensed under Creative Commons Attribution-ShareAlike 4.0 International license

IL 2 Sturmovik

1.0 4.0

A typical ending of me in IL 2 Sturmovik - parachuting down to the ground
A typical ending of me in IL 2 Sturmovik - parachuting down to the ground

Primary Buffer Panel

TODO: IL 2 Sturmovik details

I honestly can’t tell any more. I think most of this worked but I didn’t play it for years. I’ve yet to try this once more but my sporadic interest in this period is usually very short. Nevertheless I did play it sometimes usually with me ending parachuting down to the ground (or dying in a burning cockpit) 🀷

Launch parameters

Like most games does this one also not detect a screen layout but only the primary display on a Linux PC so it won’t offer the maximum resolution possible e.g. with a triple head setup πŸ–₯️πŸ–₯️πŸ–₯️. This can be worked around in multiple ways, e.g. with configuring a virtual desktop in the WINEPREFIX, by adding a virtual monitor to the system or simply by making use of gamescope, the SteamOS session compositing window manager.

Here is an example how games may be started from Steam by adding the following commands to the start parameters (That’s basically the same for e.g. Lutris btw).

gamescope -h 1200 -w 5760 -H 1200 -W 5760 -b -e – %command%

This is not needed if only one monitor is used for gaming.

Beko Pharm Sep 14, 2023 / Apr 8, 2025 Games

License

This content is, unless otherwise noted, licensed under Creative Commons Attribution-ShareAlike 4.0 International license

Flight Of Nova

2.0 4.0

Landing the spacecraft in Flight Of Nova for the first time
Landing the spacecraft in Flight Of Nova for the first time

Primary Buffer Panel

I hope this game will allow access to ship telemetry at some point. It’s still in early access and it’s whole concept begs for this. For now it works flawless using Proton Experimental, detected the X52 just fine and is even one of the few games that would allow setting up an ultra-widescreen window for the game in the first place without making me jump through the usual hoops with gamescope.

Launch parameters

Like most games does this one also not detect a screen layout but only the primary display on a Linux PC so it won’t offer the maximum resolution possible e.g. with a triple head setup πŸ–₯️πŸ–₯️πŸ–₯️. This can be worked around in multiple ways, e.g. with configuring a virtual desktop in the WINEPREFIX, by adding a virtual monitor to the system or simply by making use of gamescope, the SteamOS session compositing window manager.

Here is an example how games may be started from Steam by adding the following commands to the start parameters (That’s basically the same for e.g. Lutris btw).

gamescope -h 1200 -w 5760 -H 1200 -W 5760 -b -e – %command%

This is not needed if only one monitor is used for gaming.

I love to play many games with my XR glasses in Side-By-Side mode where each eye is fed with a slightly different camera position resulting in 3D depth perception.

This is similar to VR but does not offer e.g. a backchannel for head tracking. Some games, like Elite Dangerous, support this natively. Other games can be forced into a SBS like mode with ReShade and a plugin like SuperDepth3D or Rendepth Reshade. In theory are Reshade shaders compatible with vkBasalt but the depth stuff is apparently exempt from this rule so that is not an option. The approach works nicely with Proton though.

The reshade-linux repo is very useful to get you started but the required steps can be done manually too, of course.

You will need gamescope on top though, because the output has usually to be rescaled or the display ratio is completely off. This also depends on the glasses. Mine do FULL SBS so a resolution of 3840x1080 is excepted in the end.

For Elite Dangerous the correct settings would e.g. be:

gamescope -h 2160 -w 3840 -H 1080 -W 3840 –scaler stretch -e – %command%

Other games may require slightly different settings here. This is an example for Ace Combat 7: Skies Unknown with Reshade and the SuperDepth3D shader:

WINEDLLOVERRIDES=“d3dcompiler_47=n;dxgi=n,b;” gamescope -h 1080 -w 1920 -H 1080 -W 3840 –scaler stretch -b -r 60 -e – %command%

YMMV but the general idea should work with almost any game.

I don’t use any specific launch parameters with this game at the moment when I don’t use the XR glasses. It allows me to set a windowed mode with a resolution that fits my set-up rather well. The above text applies for the fullscreen mode though.

Demo

Watch this video on YouTube PeerTube

Beko Pharm Aug 4, 2024 / Apr 8, 2025 Games

License

This content is, unless otherwise noted, licensed under Creative Commons Attribution-ShareAlike 4.0 International license

House of the Dying Sun

1.0 2.0 4.0

Entering a battle in House Of The Dying Sun
Entering a battle in House Of The Dying Sun

Primary Buffer Panel

I don’t think House Of The Dying Sun has any API to connect to at all. I never bothered. It’s fun but very very short. I’m also unsure if this game supports HOTAS or any joystick at all. House Of The Dying Sun supports HOTAS nowadays.

Head tracking works flawless.

There are a bunch of videos showcasing House Of The Dying Sun on my YouTube and PeerTube accounts.

Launch parameters

Like most games does this one also not detect a screen layout but only the primary display on a Linux PC so it won’t offer the maximum resolution possible e.g. with a triple head setup πŸ–₯️πŸ–₯️πŸ–₯️. This can be worked around in multiple ways, e.g. with configuring a virtual desktop in the WINEPREFIX, by adding a virtual monitor to the system or simply by making use of gamescope, the SteamOS session compositing window manager.

Here is an example how games may be started from Steam by adding the following commands to the start parameters (That’s basically the same for e.g. Lutris btw).

gamescope -h 1200 -w 5760 -H 1200 -W 5760 -b -e – %command%

This is not needed if only one monitor is used for gaming.

I love to play many games with my XR glasses in Side-By-Side mode where each eye is fed with a slightly different camera position resulting in 3D depth perception.

This is similar to VR but does not offer e.g. a backchannel for head tracking. Some games, like Elite Dangerous, support this natively. Other games can be forced into a SBS like mode with ReShade and a plugin like SuperDepth3D or Rendepth Reshade. In theory are Reshade shaders compatible with vkBasalt but the depth stuff is apparently exempt from this rule so that is not an option. The approach works nicely with Proton though.

The reshade-linux repo is very useful to get you started but the required steps can be done manually too, of course.

You will need gamescope on top though, because the output has usually to be rescaled or the display ratio is completely off. This also depends on the glasses. Mine do FULL SBS so a resolution of 3840x1080 is excepted in the end.

For Elite Dangerous the correct settings would e.g. be:

gamescope -h 2160 -w 3840 -H 1080 -W 3840 –scaler stretch -e – %command%

Other games may require slightly different settings here. This is an example for Ace Combat 7: Skies Unknown with Reshade and the SuperDepth3D shader:

WINEDLLOVERRIDES=“d3dcompiler_47=n;dxgi=n,b;” gamescope -h 1080 -w 1920 -H 1080 -W 3840 –scaler stretch -b -r 60 -e – %command%

YMMV but the general idea should work with almost any game.

This is no longer needed but I’ll leave it as an example how to remap a X52 joystick to a gamepad and starts the game in Steam.

SDL_GAMECONTROLLERCONFIG=“03000000a3060000620700001101000016991890,Logitech X52 Professional H.O.T.A.S.,platform:Linux,a:b2,b:b3,x:b4,y:b1,back:b9,start:b8,guide:b10,leftshoulder:b30,rightshoulder:b6,leftstick:b7,rightstick:b15,leftx:a0,lefty:a1,rightx:a5,righty:a2,lefttrigger:b0,righttrigger:b5,dpup:b19,dpleft:b22,dpdown:b21,dpright:b20,” %command%

Demo

That’s also one the the games that play great via our Steam Link on the 4K display in the living room πŸ€“

Playing House Of The Dying Sun with a Steam Controller via Steam Link
Playing House Of The Dying Sun with a Steam Controller via Steam Link

Beko Pharm Sep 14, 2023 / Apr 8, 2025 Games

License

This content is, unless otherwise noted, licensed under Creative Commons Attribution-ShareAlike 4.0 International license

Kerbal Space Program

4.0

Kerbals close to exploding
Kerbals close to exploding

Ah yes, Kerbal Space Program do we, me and the kids, only play for the explosions. While the game does feature head tracking and stuff via plugins I did never bother to set it up. It is a Linux native though so very painless to start.

Launch parameters

-monitor 1

Yeah, that’s all. Just pointing it to a specific display because it would always use the primary display otherwise.

Beko Pharm Sep 14, 2023 / Sep 14, 2023 Games

License

This content is, unless otherwise noted, licensed under Creative Commons Attribution-ShareAlike 4.0 International license

Rebel Galaxy Outlaw

1.0 2.0 4.0

Approaching a planet in Rebel Galaxy Outlaw
Approaching a planet in Rebel Galaxy Outlaw

Primary Buffer Panel

I don’t know of any API for Rebel Galaxy Outlaw but it’s a fun game with great sound tracks that I sometimes play with the children. Don’t think it even has head tracking support too.

And there will never be more because some entitled little brats mobbed the creators out of the whole god damn industry for taking an exclusive deal πŸ–•

Launch parameters

Like most games does this one also not detect a screen layout but only the primary display on a Linux PC so it won’t offer the maximum resolution possible e.g. with a triple head setup πŸ–₯️πŸ–₯️πŸ–₯️. This can be worked around in multiple ways, e.g. with configuring a virtual desktop in the WINEPREFIX, by adding a virtual monitor to the system or simply by making use of gamescope, the SteamOS session compositing window manager.

Here is an example how games may be started from Steam by adding the following commands to the start parameters (That’s basically the same for e.g. Lutris btw).

gamescope -h 1200 -w 5760 -H 1200 -W 5760 -b -e – %command%

This is not needed if only one monitor is used for gaming.

I launch Rebel Galaxy Outlaw with Lutris using gamescope.

Demo

Watch this video on YouTube PeerTube BekoPharm

In the beginning I did remap my X52 joystick to several virtual gamepads using MoltenGamepad before I noticed that tiny little dropdown in it’s launcher where it is possible to switch from gamepad to joystick. Boy did I feel stupid but frankly that is the first game I know of that does distinct between those two input methods. A rather weird design choice IMHO.

This image is from a test placement to see how the Primary Buffer Panel would look and feel before everything was wired up again.

Playing some RGO while having btop showing system resources
Playing some RGO while having btop showing system resources

Beko Pharm Sep 14, 2023 / Apr 8, 2025 Games

License

This content is, unless otherwise noted, licensed under Creative Commons Attribution-ShareAlike 4.0 International license

FlightGear

1.0 2.0 4.0

I can see my house - in FlightGear
I can see my house - in FlightGear

Primary Buffer Panel

Sometimes I fire up FlightGear, one of the oldest FOSS games in simulation. Since it’s a native Linux game it runs rather painless.

Every landing you walk away from is a success

Thanks to FlightGear I’m very confident that I am now capable of crashing a Cessna just about anywhere.

Head tracking is provided via UDP from a plugin. That’s all explained on https://wiki.flightgear.org/Opentrack and fairly straight forward.

I’m pretty sure that I can connect my plumbing pipeline to FlightGear as well but I never bothered so far. It is after all open source software and many plugins exist already. It’s on my bucket list πŸ‘Œ

Launch parameters

--addon=full-path-to-the-headtracker-folder and --generic=socket,in,60,localhost,5542,udp,opentrack for the head tracking. Both can be configured in the FlightGear though.

Beko Pharm Sep 14, 2023 / Apr 8, 2025 Games

License

This content is, unless otherwise noted, licensed under Creative Commons Attribution-ShareAlike 4.0 International license

Diaspora: Shattered Armistice

1.0 2.0 4.0

Taking off with the Raptor
Taking off with the Raptor

Primary Buffer Panel

Diaspora: Shattered Armistice is a freeware space sim based on the Battlestar Galactica show - and as old BSG fan I just have to play this from time to time. A native Linux version exists but it’s so old that I run into several walls compiling it and simply went with the last pre-build Windows release in the end launching it via Lutris.

Sadly it does only support one joystick so my Primary Buffer Panel has to act as a keyoard. There is also the issue that the GUI gets stretched weirdly with a ultra wide resolution but it does start and play alright. I’m hoping to come back to this one day and find out how to connect my blinken lights at least.

Launch parameters

Like most games does this one also not detect a screen layout but only the primary display on a Linux PC so it won’t offer the maximum resolution possible e.g. with a triple head setup πŸ–₯️πŸ–₯️πŸ–₯️. This can be worked around in multiple ways, e.g. with configuring a virtual desktop in the WINEPREFIX, by adding a virtual monitor to the system or simply by making use of gamescope, the SteamOS session compositing window manager.

Here is an example how games may be started from Steam by adding the following commands to the start parameters (That’s basically the same for e.g. Lutris btw).

gamescope -h 1200 -w 5760 -H 1200 -W 5760 -b -e – %command%

This is not needed if only one monitor is used for gaming.

Demo

Watch this video on YouTube PeerTube

Beko Pharm Sep 14, 2023 / Apr 8, 2025 Games

License

This content is, unless otherwise noted, licensed under Creative Commons Attribution-ShareAlike 4.0 International license

Everspace (TODO)

4.0

Everspace main menu
Everspace main menu

TODO:

  • plays nice via Steam Link
  • Linux native
Beko Pharm Sep 14, 2023 / Sep 14, 2023 Games

License

This content is, unless otherwise noted, licensed under Creative Commons Attribution-ShareAlike 4.0 International license

No Man's Sky

1.0 2.0 4.0

Entering atmosphere in No Mans Sky
Entering atmosphere in No Mans Sky

Primary Buffer Panel

Ah yes, No Man's Sky really changed a lot over the years. What it still doesn’t do is supporting joysticks. Or head tracking. We’re very used to this by now though and manage.

Launch parameters

Like most games does this one also not detect a screen layout but only the primary display on a Linux PC so it won’t offer the maximum resolution possible e.g. with a triple head setup πŸ–₯️πŸ–₯️πŸ–₯️. This can be worked around in multiple ways, e.g. with configuring a virtual desktop in the WINEPREFIX, by adding a virtual monitor to the system or simply by making use of gamescope, the SteamOS session compositing window manager.

Here is an example how games may be started from Steam by adding the following commands to the start parameters (That’s basically the same for e.g. Lutris btw).

gamescope -h 1200 -w 5760 -H 1200 -W 5760 -b -e – %command%

This is not needed if only one monitor is used for gaming.

I love to play many games with my XR glasses in Side-By-Side mode where each eye is fed with a slightly different camera position resulting in 3D depth perception.

This is similar to VR but does not offer e.g. a backchannel for head tracking. Some games, like Elite Dangerous, support this natively. Other games can be forced into a SBS like mode with ReShade and a plugin like SuperDepth3D or Rendepth Reshade. In theory are Reshade shaders compatible with vkBasalt but the depth stuff is apparently exempt from this rule so that is not an option. The approach works nicely with Proton though.

The reshade-linux repo is very useful to get you started but the required steps can be done manually too, of course.

You will need gamescope on top though, because the output has usually to be rescaled or the display ratio is completely off. This also depends on the glasses. Mine do FULL SBS so a resolution of 3840x1080 is excepted in the end.

For Elite Dangerous the correct settings would e.g. be:

gamescope -h 2160 -w 3840 -H 1080 -W 3840 –scaler stretch -e – %command%

Other games may require slightly different settings here. This is an example for Ace Combat 7: Skies Unknown with Reshade and the SuperDepth3D shader:

WINEDLLOVERRIDES=“d3dcompiler_47=n;dxgi=n,b;” gamescope -h 1080 -w 1920 -H 1080 -W 3840 –scaler stretch -b -r 60 -e – %command%

YMMV but the general idea should work with almost any game.

This remaps a virtual joystick from Opentrack to the axis of a gamepad used for look-around in NMS.

SDL_GAMECONTROLLERCONFIG=“000022e86f70656e747261636b206800,opentrack-to-nms,rightx:a3,righty:a4,platform:Linux,crc:e822,”

Head tracking

NMS does support a gamepad but it also reads/maps all gamepads to a single device. It makes no difference between multiple gamepads!

This leaves me with a very limited amount of possible buttons on the HOTAS after mapping that to one virtual gamepad using MoltenGamepad (I usually split that one up into multiple gamepads for braindead games).

So for additional buttons I used AntiMicroX to map the rest as keyboard presses.

Doing so I noticed that NMS does “look-around” on the right stick and this is where Opentrack comes into the play. It offers a joystick output (using evdev) and that is also just… a gamepad! Needs some remapping though to get pitch and jaw to the proper axis for NMS. This is done via SDL env (basically what Steam does under the hood but boy their GUI for that sucks):

SDL_GAMECONTROLLERCONFIG=“000022e86f70656e747261636b206800,opentrack-to-nms,rightx:a3,righty:a4,platform:Linux,crc:e822,”

And there you have it. NMS with my trusty old X52 Pro and a DIY headtracker for 5 bucks πŸ€“

Demo

Watch this video on YouTube PeerTube BekoPharm

PS: I’m aware that the recording quality sucks. This was very spontaneous with a webcam sitting on my chair. I basically just finished my happy dance that this started working properly and decided to smash that recording button. PC was not even in gamemode.

Beko Pharm Sep 14, 2023 / Apr 8, 2025 Games

License

This content is, unless otherwise noted, licensed under Creative Commons Attribution-ShareAlike 4.0 International license

Fly Dangerous

1.0 2.0 4.0

A very early version of Fly Dangerous alpha
A very early version of Fly Dangerous alpha

Primary Buffer Panel

What’s not to like about Fly Dangerous. It’s a FOSS 6dof racing game with a Newtonian flight model similar to Elite Dangerous, does HOTAS, Opentrack and a lot of other stuff, like VR. It even offers a UDP port to retrieve ship telemetry. A perfect candidate for a simulated cockpit and I’m with it for quite some time. Integrating it into my plumbing pipeline was a breeze.

There are a bunch of videos showcasing Fly Dangerous with my Primary Buffer Panel on my YouTube and PeerTube accounts.

Launch parameters

I usually play Fly Dangerous on Linux PC. The Linux version 5 defaulted to OpenGL and this resulted in like 25 FPS for me and the input of my X52 Pro (mapped as virtual gamepad) was so laggy that I could sip coffee during each course correction. This was when I remembered the magic parameter -force-vulkan from other Unity games and from here it was smooth sailing. Eventually I ended up with the game start options obs-gamecapture for recording, mangohud for some FPS info and -force-vulkan for… well, FPS.

obs-gamecapture mangohud %command% -force-vulkan

I switched to Proton because I was eager to see some upcoming changes, like head tracker support, on the public_beta branch. And while this works I was once more flabbergasted how complicated it is to set my desired display resolution of 5760x1200. I’m using a multihead setup with several displays and as usual the game engine would not let me simply set that. Even in windowed mode (I mean I get that this won’t work with fullscreen).

Like most games does this one also not detect a screen layout but only the primary display on a Linux PC so it won’t offer the maximum resolution possible e.g. with a triple head setup πŸ–₯️πŸ–₯️πŸ–₯️. This can be worked around in multiple ways, e.g. with configuring a virtual desktop in the WINEPREFIX, by adding a virtual monitor to the system or simply by making use of gamescope, the SteamOS session compositing window manager.

Here is an example how games may be started from Steam by adding the following commands to the start parameters (That’s basically the same for e.g. Lutris btw).

gamescope -h 1200 -w 5760 -H 1200 -W 5760 -b -e – %command%

This is not needed if only one monitor is used for gaming.

There are several ways to work around this, especially with Proton, but I was looking for the prefs file I know from Linux. I found it in the end in the file compatdata/1781750/pfx/user.reg (that’s like the Windows registry but as plain file read by Wine) where the values are stored as dword under [Software\\StarGoat\\FlyDangerous]. In hex!

<pref name="Screenmanager Resolution Height" type="int">1200</pref>
<pref name="Screenmanager Resolution Width" type="int">5760</pref>
<pref name="Screenmanager Resolution Use Native" type="int">0</pref>
What is a screen anyway

Why games|engines in 2023 still seem to have ideas about screen layouts is frankly beyond me.

Head tracking

Just works with Opentrack because Fly Dangerous supports this via UDP port.

Demo

Watch this video on YouTube PeerTube

Beko Pharm Sep 14, 2023 / Apr 8, 2025 Games

License

This content is, unless otherwise noted, licensed under Creative Commons Attribution-ShareAlike 4.0 International license

Spacebourne 2

1.0 2.0 4.0

Primary Buffer Panel

This game does not yet support ultra wide and has no API or head tracker support that I know of. The HOTAS support is wonky at best. It’s also still in development so I may have to revise that at some point but it is a lot of fun. I’ve a gameplay video on my YouTube and PeerTube channel.

Launch parameters

Edited GameUserSettings.ini and Settings.ini in compatdata/1646850/pfx/drive_c/users/steamuser/AppData/Local/SB2/Saved/Config/WindowsNoEditor to get here:

GameUserSettings.ini:ResolutionSizeX=5760
GameUserSettings.ini:ResolutionSizeY=1200
GameUserSettings.ini:LastUserConfirmedResolutionSizeX=5760
GameUserSettings.ini:LastUserConfirmedResolutionSizeY=1200
GameUserSettings.ini:DesiredScreenWidth=5760
GameUserSettings.ini:DesiredScreenHeight=1200
GameUserSettings.ini:LastUserConfirmedDesiredScreenWidth=5760
GameUserSettings.ini:LastUserConfirmedDesiredScreenHeight=1200
Settings.ini:r.setres=5760x1200w

The maximum that the game allowed me was 3840x1200. I did write protect the files in the end to make the config persistent. Most UI elements center so it’s playable.

Demo

Watch this video on YouTube PeerTube