저는 xmonad를 사용하여 nixos를 실행하고 startx
xserver를 시작했습니다. 그러나 나는 인사하는 사람을 갖기로 결정했습니다.
먼저 startx
sddm을 비활성화하고 활성화하여 시도했습니다.sddm
services.xserver {
displayManager {
startx.enable = false;
sddm.enable = true;
};
};
nixos( )를 다시 빌드했는데 nixos-rebuild switch
sddm이 제대로 작동하는 것 같지만 비밀번호를 올바르게 입력하면 아무 일도 일어나지 않습니다. 그래서 게으르고 sddm에 전념하지 않았기 때문에 문제를 해결하는 대신 다른 디스플레이 관리자로 전환하기로 결정하여 lightdm으로 전환했습니다.
services.xserver {
displayManager {
startx.enable = false;
lightdm.enable = true;
};
};
다시 빌드할 때 비슷한 일이 발생했습니다. lightdm은 정상적으로 시작되었지만 로그인을 시도하면 "로그인 실패"라는 메시지가 표시되었습니다. 그래서 로그를 확인해 봤습니다 /var/log/lightdm/lightdm.log
.
로그가 꽤 길기 때문에 로그인 후 옵션은 다음과 같습니다.
[+15.51s] DEBUG: Authenticate result for user ww: Success
[+15.51s] DEBUG: User ww authorized
[+15.51s] DEBUG: Greeter requests default session
[+15.56s] DEBUG: Seat seat0: Failed to find session configuration default
[+15.56s] DEBUG: Seat seat0: Can't find session 'default'
[+31.69s] DEBUG: Seat seat0 changes active session to
[+68.26s] DEBUG: Seat seat0 changes active session to 2
[+701.81s] DEBUG: Got signal 15 from process 1
[+701.81s] DEBUG: Caught Terminated signal, shutting down
[+701.81s] DEBUG: Stopping display manager
[+701.81s] DEBUG: Seat seat0: Stopping
[+701.81s] DEBUG: Seat seat0: Stopping display server
[+701.81s] DEBUG: Sending signal 15 to process 997
[+701.81s] DEBUG: Seat seat0: Stopping session
[+701.81s] DEBUG: Terminating login1 session c1
[+701.87s] DEBUG: Session pid=1043: Sending SIGTERM
[+701.87s] DEBUG: Seat seat0: Stopping session
[+701.87s] WARNING: Session pid=1061: Error writing to session: Broken pipe
[+701.87s] WARNING: Session pid=1061: Error writing to session: Broken pipe
[+701.87s] WARNING: Session pid=1061: Error writing to session: Broken pipe
[+701.87s] WARNING: Session pid=1061: Error writing to session: Broken pipe
[+701.87s] WARNING: Session pid=1061: Error writing to session: Broken pipe
[+701.87s] WARNING: Session pid=1061: Error writing to session: Broken pipe
[+701.87s] WARNING: Session pid=1061: Error writing to session: Broken pipe
[+701.87s] WARNING: Session pid=1061: Error writing to session: Broken pipe
따라서 "기본 세션"을 찾을 수 없는 것 같습니다. 둘러본 후 /usr/share/sessions/xmonad.desktop
콘텐츠를 만들었습니다.
[Desktop Entry]
Encoding=UTF-8
Name=xmonad
Comment=This session starts xmonad
Exec=/home/ww/.local/bin/xmonad
Type=Application
기반으로xmonad FAQ. 파일을 참조하기 위해 /usr/share/lightdm/lightdm.conf.d
다음도 만들었습니다.
[SeatDefaults]
user-session=xmonad
기반으로우분투 위키의 lightdm 페이지.
그러나 이렇게 해도 문제가 해결되지 않거나 재부팅 후 오류 로그가 의미 있게 변경되지 않습니다.
lightdm이 xmonad를 올바르게 시작할 수 있도록 이 간격을 어떻게 줄일 수 있습니까? 현재 무슨 일이 일어나고 있고 무슨 일이 일어나야 하는지 이해하는 데 개념적 오류가 있는 것 같습니다.
답변1
저는 LightDM과 함께 XMonad를 사용합니다. 내 Configuration.nix의 관련 부분은 다음과 같습니다.
services.xserver = {
enable = true;
windowManager = {
default = "xmonad";
xmonad = {
enable = true;
enableContribAndExtras = true;
};
};
# On nixos-unstable I needed to add this deprecated setting (not sure if still needed)
desktopManager.default = "none";
};
또한 {X,Light,G}DM을 통해 시작된 세션이 동일한 프로그램을 시작하도록 .xsession
내 심볼릭 링크를 연결했습니다 ..xinitrc
ln -s .xinitrc .xsession