Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Wayland support #15

Open
6 of 14 tasks
balsoft opened this issue Jan 29, 2020 · 2 comments · May be fixed by #16
Open
6 of 14 tasks

Wayland support #15

balsoft opened this issue Jan 29, 2020 · 2 comments · May be fixed by #16
Labels
enhancement New feature or request

Comments

@balsoft
Copy link

balsoft commented Jan 29, 2020

Currently appvm uses X11/Xorg. This issue is for experimentation with Wayland, with eventual goal being to have optional Wayland support without Xorg on the guest, and maybe to pass windows to the host more directly with waypipe.
Possible approaches

  • cage (or other simple wayland compositor)
    Cage is a simple compositor that starts a single application full-screen and quits as soon as that application quits.
    Problems: no support for automatic resizing or other features of SPICE. It's a deal-breaker, as the almost-native experience that we thrive for is ruined by the need to capture pointer and keyboard, and the window does not resize correctly.
    Possible solution: write a daemon that reacts to SPICE events.
    Things done

    • mingetty autologins user, cage starts from loginShellInit
      Problems: not very fast, feels bodgy
    • cage replaces getty, logs in via a PAM module (as suggested upstream)
    • Make cage understand SPICE (either by patching cage or by writing a shim`
    • Find another wayland compositor that already knows SPICE
  • GNOME3
    Gnome3 supports SPICE natively or maybe not, see the following

    Potential problems: SPICE not working, very heavy, not sure if it can run a single full-screen app without all the fuss (see https://help.gnome.org/admin/system-admin-guide/stable/lockdown-single-app-mode.html.en, not sure if this is for wayland or for X)
    Things done:

    • GDM starts a wayland gnome kiosk session
      Problems: really heavy, might be buggy
    • dbus-launch gnome-session from loginShellInit
      Problems: might not support SPICE or whatever
  • waypipe without compositor
    It might be possible to run waypipe on a guest without having a compositor at all. This would solve most of our problems with SPICE, since all of the window management now happens on the host. I have not looked into waypipe, so maybe I'm wrong, but this looks like the most elegant and "correct" solution of them all.
    Problems: might not actually run without a compositor, might be slow, requires networking between guest and host, might be insecure
    Investigation process:

    • waypipe can run without a compositor (tested with waypipe ssh headless-server konsole, where headless-server only has waypipe and konsole installed)
    • Figure out how host and guest can talk to each other
    • Figure out how to make guest's waypipe server talk with host's waypipe client (using -s argument and socat)

    Things done:

    • Run a guest with waypipe and the application installed, then run waypipe ssh user@guest application from the host (we have to figure out credentials)
    • Run waypipe client on a host, run guest with waypipe server CMD, make them communicate (I like this solution the most of them all)
@jollheef jollheef added the enhancement New feature or request label Jan 29, 2020
@jollheef jollheef changed the title [Experiment] Use wayland Wayland support Jan 29, 2020
@balsoft
Copy link
Author

balsoft commented Jan 30, 2020

I've made waypipe work. It appears to function just as I assumed it would.

@jollheef
Copy link
Owner

The idea of using something like Waypipe for Wayland support (as additional, keeping current implementation as the main one) sounds good.

However, I'm concerned about Waypipe implementation itself. The quality of code is quite below my expectations.

@balsoft balsoft linked a pull request Jan 31, 2020 that will close this issue
2 tasks
balsoft added a commit to balsoft/appvm that referenced this issue Jan 31, 2020
balsoft added a commit to balsoft/appvm that referenced this issue Jan 31, 2020
balsoft added a commit to balsoft/appvm that referenced this issue Jan 31, 2020
balsoft added a commit to balsoft/appvm that referenced this issue Jan 31, 2020
balsoft added a commit to balsoft/appvm that referenced this issue Jan 31, 2020
balsoft added a commit to balsoft/appvm that referenced this issue Jan 31, 2020
Waypipe implementation in this PR might be insecure, review with care.

Resolves jollheef#15

BTC{1AYoK2TScSpD5bhf67mv9AxHDJ2RidRvjD}
Repository owner deleted a comment from github-actions bot Dec 16, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants