lightdm이 xmonad를 시작하도록 하는 방법은 무엇입니까?

lightdm이 xmonad를 시작하도록 하는 방법은 무엇입니까?

저는 xmonad를 사용하여 nixos를 실행하고 startxxserver를 시작했습니다. 그러나 나는 인사하는 사람을 갖기로 결정했습니다.

먼저 startxsddm을 비활성화하고 활성화하여 시도했습니다.sddm

services.xserver {
  displayManager {
    startx.enable = false;
    sddm.enable = true;
  };
};

nixos( )를 다시 빌드했는데 nixos-rebuild switchsddm이 제대로 작동하는 것 같지만 비밀번호를 올바르게 입력하면 아무 일도 일어나지 않습니다. 그래서 게으르고 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

관련 정보