Zarówno GNOME, jak i KDE mają „menedżery wyświetlania”, odpowiednio GDM i KDM, które mają w tym duży udział. Zadaniem menedżera wyświetlania jest w zasadzie uruchamianie serwera X11 (obecnie Xorg, Xfree86 lub oryginalny serwer X wcześniej) na każdym fizycznym wyświetlaczu i wyświetlanie na nich ekranów logowania. Xdm jest prawdopodobnie najstarszy.
Nowoczesne menedżery wyświetlania zostały rozszerzone, aby obsługiwać wiele serwerów X11 na tym samym stanowisku - dla każdej sesji użytkownika, plus jeden dla samego ekranu logowania („powitania”). Tylko jedna z tych sesji jest aktywna w dowolnym momencie i kontroluje sprzęt graficzny; inni się poddają. [1]
W systemie Linux służy do tego funkcja „wirtualnej konsoli” - technicznie możliwe jest przełączanie między tymi sesjami za pomocą powszechnie znanych CtrlAltF12345…kluczy, chociaż nie wiadomo, który ekran X11 użytkownika działa na której konsoli wirtualnej. [2]
Zwykle jest inny demon, zwykle ConsoleKit lub „systemd-logind”, który ma za zadanie śledzić, którzy użytkownicy są zalogowani, dla wszystkich rodzajów sesji tekstowych i graficznych (tty, ssh, X11, Wayland i c).
Sama sesja tak naprawdę nie musi wiele robić; zależy tylko od „logind”, a czasem od konkretnego menedżera wyświetlania.
Jeśli chcesz wyświetlić listę użytkowników (podobnie jak Unity), demonów „logind” lub ConsoleKit można użyć za pośrednictwem DBus, aby uzyskać listę zalogowanych użytkowników i aktywować wybraną sesję. Bieżąca sesja powinna się po tym zablokować (np. Po uruchomieniu wygaszacza ekranu; zarówno GNOME, jak i KDE mają zintegrowaną blokadę ekranu w samym menedżerze okien).
W GNOME nie ma listy użytkowników, tylko jeden element menu „Przełącz użytkowników”. Wykorzystuje libgdmgreeter
do aktywowania „login” (sesja sesji, który ma ekran logowania) używając „logind” lub ConsoleKit; jeśli nie jest uruchomiona „sesja logowania”, libgdmgreeter kontaktuje się z GDM przez DBus, aby rozpocząć nową. Myślę, że można to zrobić, uruchamiając gdmflexiserver
polecenie.
[1] Dobrowolnie, przynajmniej w obecnej implementacji Linuksa; planuje się zaostrzyć, aby składnik systemu faktycznie odebrał dostęp. Podobnie, jeśli sesje prowadzisz PulseAudio, dobrowolnie rezygnuje z dostępu do urządzeń audio. Z czystym ALSA nic nie zrobiłoby, więc dostęp audio z przełączaniem sesji to gra szczęścia. Oznacza to, że nawet jeśli nieaktywne sesje nie są w stanie otworzyć urządzeń audio po wykonaniu polecenia „logind”, nadal mogą odtwarzać dźwięk przez wcześniej otwarte urządzenia i nic nie może jeszcze zmusić ich do zamknięcia (dopóki jądro nie uzyska revoke()
wsparcia).
[2] Wirtualne konsole Linuksa są dostępne tylko na 0 „siedzeniu”; jeśli masz więcej wyświetlaczy i klawiatur, mogą mieć własne serwery X11 - sprawdź dema wielostanowiskowej Fedory 19 - ale myślę, że nie mogą przełączać sesji. Ale w tej chwili jest wiele do zrobienia, między innymi, aby uczynić pracę wielostanowiskową.