[GH-ISSUE #46] Switch from X11 to Wayland #16

Closed
opened 2026-10-15 12:47:52 +00:00 by bsakaguchi · 10 comments
Owner

Originally created by @iMonZ on GitHub (Aug 30, 2021).
Original GitHub issue: https://github.com/games-on-whales/gow/issues/46

Switching from the X11 Display Server to the Wayland Display Server (with Pipewire)

Originally created by @iMonZ on GitHub (Aug 30, 2021). Original GitHub issue: https://github.com/games-on-whales/gow/issues/46 Switching from the X11 Display Server to the Wayland Display Server (with Pipewire)
Author
Owner

@ABeltramo commented on GitHub (Aug 30, 2021):

Can we open up a discussion about what are the pros/cons of doing this switch? Why would you like to see GOW running on Wayland? What's the issue with X11?
AFAIK Sunshine supports it but this will need to be properly checked.

<!-- gh-comment-id:908520644 --> @ABeltramo commented on GitHub (Aug 30, 2021): Can we open up a discussion about what are the pros/cons of doing this switch? Why would you like to see GOW running on Wayland? What's the issue with X11? AFAIK Sunshine supports it but this will need to be properly checked.
Author
Owner

@iMonZ commented on GitHub (Aug 30, 2021):

Since X11 will be deprecated and most work of most tools will be focused on Wayland.
Also features like higher resolutions or HDR are only good implemented on Wayland.
So X11 will be a thing of the past

<!-- gh-comment-id:908586414 --> @iMonZ commented on GitHub (Aug 30, 2021): Since X11 will be deprecated and most work of most tools will be focused on Wayland. Also features like higher resolutions or HDR are only good implemented on Wayland. So X11 will be a thing of the past
Author
Owner

@a-priestley commented on GitHub (Sep 27, 2022):

Sorry to resurrect, but I want to second this idea at least as an option. wayland is a much cleaner implementation than x11, specifically if you are not actually interested in running a gui. If your goal is simply to connect to a game instance running over sunshine, it should be super clean to run it as a single compositor window, and then tear it down again when you're done.

<!-- gh-comment-id:1259583256 --> @a-priestley commented on GitHub (Sep 27, 2022): Sorry to resurrect, but I want to second this idea at least as an option. wayland is a much cleaner implementation than x11, specifically if you are not actually interested in running a gui. If your goal is simply to connect to a game instance running over sunshine, it should be super clean to run it as a single compositor window, and then tear it down again when you're done.
Author
Owner

@ABeltramo commented on GitHub (Sep 27, 2022):

A year as passed since this was originally posted; lots of things are currently changing under the hood!

I'm implementing an alternative to Sunshine that's going to be tailored down for our needs. The main objectives are the followings:

  • Multi user: a single instance must be able to serve different users.
    • Each user will have a separate (virtual) desktop with HW acceleration and proper input separation (pads, keyboards, mouse).
    • Optionally (not sure how feasible it is) keep also the ability to share sessions between multiple users (co-op games).
  • Linux based, Docker first. There's no need to replace Sunshine.

I feel that Wayland will be the right way forward but I haven't properly dig into this; any help or suggestion here is more than welcome!

I don't know if we can use something like Sway or if we have to create a custom Wayland compositor tailored for our needs; either way, we'll get there!!

<!-- gh-comment-id:1259786236 --> @ABeltramo commented on GitHub (Sep 27, 2022): A year as passed since this was originally posted; lots of things are currently changing under the hood! I'm [implementing an alternative to Sunshine](https://github.com/games-on-whales/wolf) that's going to be tailored down for our needs. The main objectives are the followings: - Multi user: a single instance must be able to serve different users. - Each user will have a separate (virtual) desktop with HW acceleration and proper input separation (pads, keyboards, mouse). - Optionally (not sure how feasible it is) keep also the ability to share sessions between multiple users (co-op games). - Linux based, Docker first. There's no need to replace Sunshine. I feel that Wayland will be the right way forward but I haven't properly dig into this; any help or suggestion here is more than welcome! I don't know if we can use something like Sway or if we have to create a custom Wayland compositor tailored for our needs; either way, we'll get there!!
Author
Owner

@a-priestley commented on GitHub (Sep 28, 2022):

This is fantastic news. Something to point out: Multi-user session sharing is indeed possible, as demonstrated by Steam Remote Play Together.
There's also this

<!-- gh-comment-id:1261190398 --> @a-priestley commented on GitHub (Sep 28, 2022): This is fantastic news. Something to point out: Multi-user session sharing is indeed possible, as demonstrated by Steam Remote Play Together. There's also [this](https://github.com/Plagman/gamescope)
Author
Owner

@ABeltramo commented on GitHub (Sep 28, 2022):

Sunshine supports that too, I would like to support both options though (if possible)!

<!-- gh-comment-id:1261219693 --> @ABeltramo commented on GitHub (Sep 28, 2022): Sunshine supports that too, I would like to support both options though (if possible)!
Author
Owner

@a-priestley commented on GitHub (Sep 28, 2022):

Is there something specific to running inside a container that makes multi-user session tricky to pull off? You might be able to use a reverse proxy to dynamically map ports to connected clients. (I know I'm putting the cart before the horse here)

<!-- gh-comment-id:1261250421 --> @a-priestley commented on GitHub (Sep 28, 2022): Is there something specific to running inside a container that makes multi-user session tricky to pull off? You might be able to use a reverse proxy to dynamically map ports to connected clients. (I know I'm putting the cart before the horse here)
Author
Owner

@ABeltramo commented on GitHub (Sep 28, 2022):

The problem is not running inside Docker, and there's no problem in sharing the same screen/session with multiple users like Steam and Sunshine do.
The problem is most likely how to create separate screens on demand that are still HW accelerated with no overlapping in video/audio/inputs.

The ultimate goal is to allow multiple users to effectively share a single machine in order to play different games.

I believe it's tecnically possible but I don't think there's anything like that out there. All desktop streaming software are focused on single desktop/session sharing OR multiple remote virtual session (with no HW acceleration or at least not capable of playing games effectively).

<!-- gh-comment-id:1261295726 --> @ABeltramo commented on GitHub (Sep 28, 2022): The problem is not running inside Docker, and there's no problem in sharing the same screen/session with multiple users like Steam and Sunshine do. The problem is most likely how to create separate screens on demand that are still HW accelerated with no overlapping in video/audio/inputs. The ultimate goal is to allow multiple users to effectively share a single machine in order to play different games. I believe it's tecnically possible but I don't think there's anything like that out there. All desktop streaming software are focused on single desktop/session sharing OR multiple remote virtual session (with no HW acceleration or at least not capable of playing games effectively).
Author
Owner

@a-priestley commented on GitHub (Sep 28, 2022):

I think I understand what you mean. It does pose several challenges. Do you create a sound server per user or each user would get their own sink on the same server? etc.
The simplest solution I think might be a container per user, but that would probably create a ton of unnecessary overhead for the host.
It would be one hell of an accomplishment either way

<!-- gh-comment-id:1261405962 --> @a-priestley commented on GitHub (Sep 28, 2022): I think I understand what you mean. It does pose several challenges. Do you create a sound server per user or each user would get their own sink on the same server? etc. The simplest solution I think might be a container per user, but that would probably create a ton of unnecessary overhead for the host. It would be one hell of an accomplishment either way
Author
Owner

@ABeltramo commented on GitHub (Jun 14, 2024):

We've ended up writing our micro custom Wayland comp in Wolf

<!-- gh-comment-id:2168655980 --> @ABeltramo commented on GitHub (Jun 14, 2024): We've ended up writing our micro custom Wayland comp in [Wolf](https://github.com/games-on-whales/wolf)
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
games-on-whales/gow#16
No description provided.