Skip to content

Put Greeter in a separate group#2863

Open
lenemter wants to merge 1 commit into
mainfrom
lenemter/support-greeter
Open

Put Greeter in a separate group#2863
lenemter wants to merge 1 commit into
mainfrom
lenemter/support-greeter

Conversation

@lenemter

@lenemter lenemter commented Jul 7, 2026

Copy link
Copy Markdown
Member

Required for elementary/greeter#878
Requires elementary/greeter#886

Makes Greeter unmovable and puts it below apps such as Initial Setup

@lenemter
lenemter requested review from a team and leolost2605 July 7, 2026 22:51
@lenemter
lenemter force-pushed the lenemter/support-greeter branch 3 times, most recently from b94f449 to c9480d6 Compare July 8, 2026 00:14

@leolost2605 leolost2605 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I fully agree with the separate group and making it desktop but (going from previous experience with our wayland protocols just organically growing) I would like to have some bigger picture where we want to take the greeter before deciding on the wayland protocol (which is why I haven't added it in the initial PR yet).
Most notably what we want to do with multiple monitors:

  • Greeter on primary?
  • Greeter on current?
  • Greeter on every monitor?

I've been thinking we might need greeter on every monitor because most notably for touchscreen we don't have a current monitor. I'm thinking of the case "connect tablet to external monitor without any accessories". Then in theory the only way to be 100% sure to be able to log in would be having it on every monitor. But I would definitely like some opinions from @elementary/ux on this

@lenemter
lenemter force-pushed the lenemter/support-greeter branch from c9480d6 to 67f286e Compare July 8, 2026 16:50
@lenemter

lenemter commented Jul 8, 2026

Copy link
Copy Markdown
Member Author

@leolost2605 My idea here is to let Gala decide what to do with Greeter windows, since there's no point in letting Greeter control all of this, since it's the only user of that protocol

@danirabbit

Copy link
Copy Markdown
Member

@leolost2605 I agree I think it would make sense to have the greeter on all displays. I think @lenemter is right though that probably the greeter app should just declare itself as a greeter and Gala should control what that means

@leolost2605

Copy link
Copy Markdown
Member

My idea here is to let Gala decide what to do with Greeter windows

Yeah I agree I just wanted to make sure that there's nothing that needs integration between greeter and gala. I had the monitor labels in mind because they need to specify what monitor they belong to but ig the greeter should be the same for all monitors? Anything else that might need integration?

@leolost2605 leolost2605 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A few nits (sorry about all of the order nits but since we've done it like that for all other methods and additions I think we should keep it here too)

Also I've been thinking since we make the greeter a desktop window anyway do we still need to put it into a separate group?

Comment thread lib/WindowManager.vala

public enum WindowGroup {
DESKTOP_SHELL,
LOCK_SCREEN_APPLICATION,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm IMO LOCK_SCREEN_APPLICATION sounds like where the "normal" windows go. Maybe something like LOCK_SCREEN_GREETER?

<request name="destroy" type="destructor"/>
</interface>

<interface name="io_elementary_pantheon_greeter_v1" version="1">

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Only a style nit: I think we should keep the order of the methods in the shell interface, so that this comes last i.e. after extended behavior.

}

[CCode (cheader_filename = "pantheon-desktop-shell-server-protocol.h", cname = "struct io_elementary_pantheon_greeter_v1_interface")]
public struct GreeterInterface {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same here regarding the order

[CCode (has_target = false, has_typedef = false)]
public delegate void GetWidget (Wl.Client client, Wl.Resource resource, uint32 output, Wl.Resource surface);
[CCode (has_target = false, has_typedef = false)]
public delegate void GetGreeter (Wl.Client client, Wl.Resource resource, uint32 output, Wl.Resource surface);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And here :)

[CCode (has_target = false, has_typedef = false)]
public delegate void RemoveBlur (Wl.Client client, Wl.Resource resource);
[CCode (has_target = false, has_typedef = false)]
public delegate void Init (Wl.Client client, Wl.Resource resource);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And here :)

if (Meta.Util.is_wayland_compositor ()) {
make_desktop_wayland (window);
} else {
make_desktop_x11 (window);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since there's currently (and probably never will be?) no way this is called I would replace that with a critical or assert_not_reached

Comment thread src/PantheonShell.vala
private static Pantheon.Desktop.ShellInterface wayland_pantheon_shell_interface;
private static Pantheon.Desktop.PanelInterface wayland_pantheon_panel_interface;
private static Pantheon.Desktop.WidgetInterface wayland_pantheon_widget_interface;
private static Pantheon.Desktop.GreeterInterface wayland_pantheon_greeter_interface;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Order once again :)

Comment thread src/PantheonShell.vala
destroy_widget_surface,
};

wayland_pantheon_greeter_interface = {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And here :)

Comment thread src/PantheonShell.vala

PanelSurface.quark = GLib.Quark.from_string ("-gala-wayland-panel-surface-data");
WidgetSurface.quark = GLib.Quark.from_string ("-gala-wayland-widget-surface-data");
GreeterSurface.quark = GLib.Quark.from_string ("-gala-wayland-greeter-surface-data");

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And here :)

Comment thread src/PantheonShell.vala
}
}

public class GreeterSurface : GLib.Object {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And here :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants