Situation:
I use dwm
as window manager, and use gdm
as display manager to login. I set autologin. I also used services.kmscon.enable
and boot.plymouth.enable
, all works together fine in 24.11.
When I upgrade to 25.05, a lot of the settings conflict with each other and prevent me from login.
Two of my machine (nvidia and amd GPU) also have this problem.
This is the current working workaround config (but not the way I want it to be, services.xserver.displayManager.gdm.autoLogin.delay
was not there before, and kmscon
have to be disabled):
{ pkgs, lib, ... }:
{
services.xserver.enable = true;
# Field: services.xserver.desktopManager
services.xserver.desktopManager.gnome.enable = true;
services.xserver.desktopManager.xfce.enable = true;
services.xserver.desktopManager.wallpaper.mode = "scale";
services.xserver.desktopManager.runXdgAutostartIfNone = false;
# Field: services.xserver.displayManager
services.xserver.displayManager.gdm.enable = true;
services.xserver.displayManager.gdm.autoLogin.delay = 7; # delay 7 seconds as workaround
services.xserver.displayManager.sessionCommands = ''
export _JAVA_AWT_WM_NONREPARENTING=1
'';
services.xserver.displayManager.session = [
{ manage = "window"; name = "mydwm";
start = ''
dwm &
waitPID=$!
'';
}
];
services.displayManager.defaultSession = "none+mydwm";
services.displayManager.autoLogin.enable = true;
services.displayManager.autoLogin.user = "user";
# Field: services.desktopManager
services.desktopManager.plasma6.enable = true;
# Programs
programs.slock.enable = true;
programs.xss-lock.enable = true;
programs.xss-lock.lockerCommand = "/run/wrappers/bin/slock";
programs.ssh.askPassword = lib.mkForce "${pkgs.seahorse}/libexec/seahorse/ssh-askpass";
services.unclutter-xfixes.enable = true;
services.unclutter-xfixes.timeout = 5;
# KMS related
# services.kmscon.enable = true; # disable this as workaround
boot.plymouth.enable = true;
boot.plymouth.theme = "breeze";
}
Then problems:
services.kmscon.enable = true;
prevent the gdm login screen appear, so I have to disable it for it to work in all of my testing.- With
plymouth
andkmscon
both disabled, autologin failed with blinking screen of tty, making the text in tty very hard to see. - For above problem 2, it can be solved by:
a) Disable autologin.
b)services.xserver.displayManager.gdm.autoLogin.delay = 1;
(delay for 1 second) - With
plymouth
enabled, autologin set, and with no autoLogin.delay, or set autoLogin.delay to only 1 second, it successfully login to dwm, but about half a second / a second later, it shows total black screen. In this scenario,ctrl+alt+F1-7
have no response.journalctl
shows some application log with something likeX connection broken
, I think the x server broken here with unknown reason, but I can’t find the error message of it. - With
plymouth
enabled, the only workaround for autologin is setservices.xserver.displayManager.gdm.autoLogin.delay = 7;
(to delay something longer than 7 seconds), then the system can autologin into dwm fine.
It is far from ideal, just a workaround.
I really don’t know how to debug this. The journalctl
did not shows anything special.