Linux on Chrome OS, a.ka. Crostini has primarily focused on creating a viable path for developers to adopt Chromebooks as a primary device. The addition of GPU support did a lot to advance that goal but there’s still a large group of Linux users that could benefit from Crostini if this latest update has anything to do about it. That group is gamers.
Now, I know that we’re all excited about Stadia launching next month. If rumors are correct, it could change the face of gaming as we know it. Still, there are a lot of games out there that live in the PC environment that will never see the grand stage that is Stadia. Personally, I am a huge fan of Source games that run on the Steam network and since I don’t own a PC anymore, my only option to jump into a Day of Defeat GunGame match has been to use the old school Crouton method on a Chromebook. All-in-all, most of my Steam games run quite well using the “hacky” Linux method but I would love to be able to install Steam via Crostini and play my games natively.
Don’t misunderstand me, you can currently install Steam, download your games and run said games using Linux(Beta) on Chrome OS. However, there’s still on small hiccup that makes the games all but unplayable. That hiccup is “pointer lock.” Many of the games I play and have played in the past on Steam are “3D” titles which simply means the character can turn 360-degrees and move in any direction. That’s a problem in Crostini’s current state. The mouse pointer is not bound to the games screen and that results in turning being limited to the four walls of the display. You try to turn right to take a shot at the guy behind you and you’re stopped short when the cursor meets the end of the viewable screen. Not good. Not good at all.
Thankfully, developers have heard the cries of the people. Robby has been tracking a commit that will update the pointer lock and we’ve been keeping a close watch on the Canary Channel for the change to land in an update. Well, it landed today.
Exo support for pointer lock.
This cl adds exo support for the pointer-constraints-unstable-v1 protocol. This protocol is used to support “pointer lock”, which is where applications request that the pointer focus be locked on their surface.
This support is necessary to allow pointer capture for X11 apps, which is a common use case in, e.g., 3D games.
Combine that with GPU support and here’s what the Linux game Open Arena looks like.
Smooth, buttery gaming goodness. Unfortunately, the feature does come with some caveats. According to the commit, this is more of a workaround and will always be behind a flag.
This implementation is imperfect for several reasons:
– Historically pointer lock was only available for Arc as part of android’s “pointer capture” (which in wayland terms is a combination of locking, relative motion, and cursor hiding). This CL does not change that behaviour, meaning locking will also hide the cursor.
– We do not implement UI support for unlocking the pointer. Users assume responsibility for malicious applications if they enable the flag. Note that users can force the pointer to unlock via alt+tab or by bringing up the launcher.
– We do not fix the underlying limitations in aura w.r.t. relative motion. Applications which request relative motion without locking the pointer will be sent inaccurate information if the pointer hits a barrier. This is a preexisting limitation and was not fixed by this CL.
For this reason it will only be available behind a flag.Chromium Repository
Looking at the relative bug report, the exo-pointer-lock flag should arrive in the next Developer Channel update but there isn’t a firm date on if or when it will actually make its way to Stable. Hopefully, this will be made available for those wanting to use it while a more permanent fix is developed. As excited as I am about Stadia, it will be great to have access to my entire Steam library right on my Chrome OS desktop. Good times.