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

Implement the session lock protocol #2162

Merged
merged 5 commits into from
Mar 21, 2024

Commits on Mar 14, 2024

  1. Make wlr_{surface,subsurface}_controller_t common utilities.

    These classes are useful and needed by any code that deals with
    surfaces, because such code usually needs to deal with
    subsurfaces as well.
    
    Move the include files into api/wayfire/unstable so they can be
    used by code all over the tree, and rename them to reflect the
    utility classes that they contain.
    lcolitti committed Mar 14, 2024
    Configuration menu
    Copy the full SHA
    30a114b View commit details
    Browse the repository at this point in the history
  2. Add a public API to inhibit/uninhibit outputs.

    This will allow lockscreens to be implemented in plugins.
    lcolitti committed Mar 14, 2024
    Configuration menu
    Copy the full SHA
    2861cfa View commit details
    Browse the repository at this point in the history
  3. Factor the text label rendering out of wset into a utility class.

    This adds a simple node that can display text.
    lcolitti committed Mar 14, 2024
    Configuration menu
    Copy the full SHA
    34fb51d View commit details
    Browse the repository at this point in the history
  4. Add a LOCK scenegraph layer.

    This will be used by the upcoming implementation of the
    ext-session-lock protocol.
    lcolitti committed Mar 14, 2024
    Configuration menu
    Copy the full SHA
    91088a2 View commit details
    Browse the repository at this point in the history
  5. Implement the session lock protocol

    Currently implemented:
    
    - Locking and unlocking.
    - Display above all desktop layers, including OVERLAY (but below
      DWIDGET).
    - Waiting for the client to display locked surfaces before
      declaring the screen to be locked. If the client does not
      display all surfaces, locks anyway after a timeout.
    - Multiple outputs, including outputs being added/removed while
      locking or locked.
    - Leaving the screen locked if the client crashes (but allows a
      new client to come in and lock the screen).
    
    TODO:
    - Deal with outputs being resized.
    - Properly display text if the screenlocker crashes. Currently it
      just displays two a big "explosion" emoji.
    - Use a view instead of a plain wlr_surface_node?
    
    Tested with swaylock.
    
    Fixes WayfireWM#1494
    Fixes WayfireWM#1358
    lcolitti committed Mar 14, 2024
    Configuration menu
    Copy the full SHA
    4174425 View commit details
    Browse the repository at this point in the history