sxmo: try some alternate greeters

This commit is contained in:
Colin 2023-08-26 12:28:25 +00:00
parent f2a597f698
commit c056191de1

View File

@ -57,6 +57,12 @@ let
knownTerminals = { knownTerminals = {
vte = "vte-2.91"; vte = "vte-2.91";
}; };
systemd-cat = "${pkgs.systemd}/bin/systemd-cat";
runWithLogger = identifier: cmd: pkgs.writeShellScript identifier ''
echo "launching ${identifier}..." | ${systemd-cat} --identifier=${identifier}
${cmd} 2>&1 | ${systemd-cat} --identifier=${identifier}
'';
in in
{ {
options = with lib; { options = with lib; {
@ -65,14 +71,26 @@ in
type = types.bool; type = types.bool;
}; };
sane.gui.sxmo.greeter = mkOption { sane.gui.sxmo.greeter = mkOption {
type = types.enum [ "lightdm-mobile" "greetd-phog" "sway" ]; type = types.enum [
"greetd-phog"
"greetd-sway-phog"
"greetd-sxmo"
"lightdm-mobile"
"sway-gtkgreet"
];
default = "lightdm-mobile"; default = "lightdm-mobile";
# default = "greetd-phog"; # phog/greetd seems to significantly worsen graphics & perf. like it breaks GL acceleration? TODO: try phog via lightdm # default = "greetd-phog"; # phog/greetd seems to significantly worsen graphics & perf. like it breaks GL acceleration? TODO: try phog via lightdm
description = '' description = ''
which greeter to use. which greeter to use.
"lightdm-mobile" => keypad style greeter. can only enter digits 0-9 as password.
"greetd-phog" => phosh-based greeter. keypad (0-9) with option to open an on-screen keyboard. "greetd-phog" => phosh-based greeter. keypad (0-9) with option to open an on-screen keyboard.
"sway" => layered sway greeter. behaves as if you booted to swaylock. "greetd-sway-phog" => phog, but uses sway as the compositor instead of phoc.
currently broken: phog-wayland-ERROR : Wayland compositor lacks needed globals (zphoc_layer_shell_effects_v1)
"greetd-sxmo" => launch sxmo directly from greetd, no auth.
this means no keychain unlocked or encrypted home mounted.
"lightdm-mobile" => keypad style greeter. can only enter digits 0-9 as password.
"sway-gtkgreet" => layered sway greeter. behaves as if you booted to swaylock.
this isn't practically usable on mobile because of keyboard input.
also, it takes literally 6 minutes to appear
''; '';
}; };
sane.gui.sxmo.package = mkOption { sane.gui.sxmo.package = mkOption {
@ -316,7 +334,7 @@ in
}; };
}) })
(lib.mkIf (cfg.greeter == "sway") { (lib.mkIf (cfg.greeter == "sway-gtkgreet") {
services.greetd = { services.greetd = {
enable = true; enable = true;
# borrowed from gui/sway # borrowed from gui/sway
@ -345,6 +363,31 @@ in
}; };
}) })
(lib.mkIf (cfg.greeter == "greetd-sway-phog") {
services.greetd = {
enable = true;
# borrowed from gui/sway
settings.default_session.command =
let
# start sway and have it construct the greeter
sway-as-greeter = pkgs.writeShellScriptBin "sway-as-greeter" ''
${pkgs.sway}/bin/sway --debug --config ${sway-config-into-phog} > /var/log/sway/sway-as-greeter.log 2>&1
'';
# (config file for the above)
sway-config-into-phog = pkgs.writeText "greetd-sway-config" ''
exec "${pkgs.phog}/libexec/phog"
'';
in "${sway-as-greeter}/bin/sway-as-greeter";
};
# phog locates sxmo_winit.sh via <env>/share/wayland-sessions
environment.pathsToLink = [ "/share/wayland-sessions" ];
sane.fs."/var/log/sway" = {
dir.acl.mode = "0777";
wantedBeforeBy = [ "greetd.service" "display-manager.service" ];
};
})
(lib.mkIf (cfg.greeter == "greetd-phog") { (lib.mkIf (cfg.greeter == "greetd-phog") {
services.greetd = { services.greetd = {
enable = true; enable = true;
@ -353,18 +396,27 @@ in
# settings.default_session.command = "${pkgs.phog}/bin/phog"; # settings.default_session.command = "${pkgs.phog}/bin/phog";
# wrapper to launch phog and redirect logs to system journal. # wrapper to launch phog and redirect logs to system journal.
settings.default_session.command = settings.default_session.command = let
let launch-phog = runWithLogger "phog" "${pkgs.phog}/bin/phog";
systemd-cat = "${pkgs.systemd}/bin/systemd-cat"; in "${launch-phog}" ;
launch-phog = pkgs.writeShellScriptBin "launch-phog" ''
echo "launching phog..." | ${systemd-cat}
G_MESSAGES_DEBUG=all ${pkgs.phog}/bin/phog 2>&1 | ${systemd-cat} --identifier=phog
'';
in "${launch-phog}/bin/launch-phog" ;
}; };
environment.pathsToLink = [ "/share/wayland-sessions" ]; environment.pathsToLink = [ "/share/wayland-sessions" ];
}) })
(lib.mkIf (cfg.greeter == "greetd-sxmo") {
services.greetd = {
enable = true;
settings = {
default_session = {
command = let
launch-sxmo = runWithLogger "sxmo" "${cfg.package}/bin/sxmo_winit.sh";
in "${launch-sxmo}";
user = "colin";
};
};
};
})
# old, greeterless options: # old, greeterless options:
# services.xserver.windowManager.session = [{ # services.xserver.windowManager.session = [{
# name = "sxmo"; # name = "sxmo";
@ -375,16 +427,6 @@ in
# ''; # '';
# }]; # }];
# services.xserver.enable = true; # services.xserver.enable = true;
# services.greetd = {
# enable = true;
# settings = {
# default_session = {
# command = "${cfg.package}/bin/sxmo_winit.sh";
# user = "colin";
# };
# };
# };
])) ]))
]; ];
} }