LightDM default desktop beállítása következő reboot után

Fórumok

LightDM úgy van beállítva Minten, hogy automatikusan bejelentkezik a megadott userrel. Be kellene állítani más desktop környezetet de anélkül, hogy ki kelljen lépni a LightDM login képernyőre. Azaz következő reboot után már a másik beállított desktop környezet induljon. 

Ezt hol lehet megtenni? Command line megoldás előnyben. 

~/.dmrc

/etc/lightdm/lightdm.conf.d/70-linuxmint.conf

lennének doksi szerint erre a feladatra, de ezekben hiába módosítom cinnamonról LXDE-re, a Sessiont illetve user-sessiont ugyanúgy cinnamon indul a következő reboot után is. 

Hozzászólások

Szerkesztve: 2023. 12. 23., szo – 16:34

The SeatDefaults section, as expected, set the default values. However, once a user has already logged, the session they used (even if it was the default left unchanged) is taken as their session choice. So changes to SeatDefaults no longer apply to them. They'll have to manually select the session from the menu next to their username (usually a gear icon).

De mondjuk csak bejegyzi valahova, szoval fognam es grepelnek egyet a cinamonn-ra a conf.d-ben (vagy xsession, vagy .config vagy .local)

"lightdm --show-config" mit mond?

A  allow-guest=false
C  greeter-wrapper=/usr/lib/lightdm/lightdm-greeter-session
D  guest-wrapper=/usr/lib/lightdm/lightdm-guest-session
E  xserver-command=X -core
F  type=xlocal
F  display-setup-script=/sbin/prime-offload
F  display-stopped-script=/sbin/prime-switch
G  greeter-session=slick-greeter
H  user-session=cinnamon
I  autologin-guest=false
I  autologin-user=mark
I  autologin-user-timeout=0

   [LightDM]
B  backup-logs=false

Sources:
A  /usr/share/lightdm/lightdm.conf.d/50-disable-guest.conf
B  /usr/share/lightdm/lightdm.conf.d/50-disable-log-backup.conf
C  /usr/share/lightdm/lightdm.conf.d/50-greeter-wrapper.conf
D  /usr/share/lightdm/lightdm.conf.d/50-guest-wrapper.conf
E  /usr/share/lightdm/lightdm.conf.d/50-xserver-command.conf
F  /usr/share/lightdm/lightdm.conf.d/90-nvidia.conf
G  /usr/share/lightdm/lightdm.conf.d/90-slick-greeter.conf
H  /etc/lightdm/lightdm.conf.d/70-linuxmint.conf
I  /etc/lightdm/lightdm.conf
 

Changing the Default Session
The default session is set by configuration in /usr/share/lightdm/lightdm.conf.d/ that session packages provide. If you need to override this you can set:

[SeatDefaults]
user-session=name
Where name is the name of the session .desktop file from /usr/share/xsessions/*.desktop.

 

Ezt a fentit megneznem hogy "grep -r user-session /usr/share/lightdm/lightdm.conf.d/*" meg ugyanezt az /etc/lightdm-ben is. Mert fent latszik hogy valahonnan a cinnamon van benne. De hivatalosan ha beirod az /etc/init/lightdm.conf-ba a fentit akkor mukodnie kellene. Arra gyanakszom hogy a 70-es utan meg a 90-esekben van valami az /usr/share-ban

Miért nem jó ha kilépsz a bejentkező képernyőre és ott állítod át alapértelmezett GUI-t? Ez a hivatalos és legegyszerűbb útja.

 

Válaszolva az eredeti kérdésre:

A megoldást meg is adja a fenti kimenet.

A gui-t a "H" betűjelel párosított fájlban találod és user session-nek hívják. Én csinálnék egy új fájlt 71-<gui neve>.conf néven és elvileg felül fogja írni a 70-linuxmint.conf beállításokat. Ezzel ki lehet védeni, hogy a konfig eltörjön vagy visszaálljon egy upgrade alkalmával. A prioritásra nem emlékszem, hogy a kisebb vagy a nagyobb számút tölti be előbb, szóval erre figyelni kell.

Az auto login pedig az "I" betűjellel párosított fájlban találod és ahhoz nem kell nyúlni sztem.

Szerintem ez nem kivitelezhető, nem csak a LightDM-ben, de másik login/display manager-ben sem. Egyszerűen az autologin akadályozza meg. El kéne döntened, hogy most autologin-t akarsz vagy felületet választani, vagy-vagy, a kettő kizárja egymást.

Nálam egy olyan megoldás van, hogy nincs autologin, de nincs login manager sem. Boot után tty konzol fogad, ott jelentkezek be, a .bashrc-ben megadott user konfigban vizsgálom, hogy az adott user hányas tty-on jelentkezett be, annak megfelelően indítom el automatikusan az adott ablakkezelő xinit scriptjét exec-kel. Általában a tty1-en jelentkezek be, akkor a fő ablakkezelőm indul (bspwm), ha tty2-ön, akkor dkwm, ha tty3-on, akkor WindowMaker. Ha csak shell kell vagy másik ablakkezelő kell, akkor tty4-7 valamelyikén lépek be, akkor nem indul semmi, hanem kézzel tudok indítani (van még fent pl. IceWM, twm, saját felbehagyott fejlesztésű no-wm megoldás). Csak ugye ez nem autologin, nem véletlenül, biztonsági feature, olyan ne jelentkezzen be, aki a jelszót nem tudja. Sőt, mivel login manager sincs, azért még a felhasználónevet is ki kellene találnia egy támadónak.

Login manager híján, ha kilépek az aktuálisan futó ablakkezelőből, akkor azt betöltő tty loginjét kapom vissza (az exec lecseréli a shellt, amiből indult). Zárolást meg nem a login manager-rel oldom meg, hanem alock-kal, amit képernyővédővel és képernyőkikapcsolással megspékelt saját script végez, amit az xss-lock hív meg (vagy billentyűkombináció zároláskor). Ez a script figyel a biztonsági dolgokra, nem ad vizuális visszajelzést, rossz jelszónál hibát, nem engedi a zárolást kicselezni, másik tty-ra átváltással, vagy a lockoló vagy ablakkezelő összeomlasztásával, hogy login shellt lehessen visszakapni.

Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”

Szerkesztve: 2024. 01. 05., p – 17:16

Szia!

Ezt csak úgy lehet megoldani, ha fizikailag egy másik videókártya kimenetére teszed a másik desktopot.
Ezt a konfigot a XORG "multiseat"-nek hívja, erre tudsz keresni konfigokat.

Példa:
VTY7 -> default környezet
VTY8 -> másik környezet

Másik probléma ezzel kapcsolatban, hogy külön billentyűzet+egér is fog kelleni a másik VTY8-ra mert a többit már lefoglalta a VTY7, nem lehet csak úgy "megosztani".

Példa:

/etc/lightdm/lightdm.conf
------------------------------------------------------------
	[LightDM]
	logind-check-graphical=true

	[Seat:seat0]
	exit-on-failure=false
	vt=7

	[Seat:seat1]
	exit-on-failure=false
	vt=8
------------------------------------------------------------

Ha ez megvan, alapból minden eszközt a "seat0"-ba rak, onnan át kell tenni "seat1"-be ( ezt csak egyszer kell megcsinálni  - systemd ):
 

$> loginctl seat-status	seat0
		  ├─/sys/devices/pci0000:00/0000:00:1c.7/0000:01:00.1/drm/card1
		  │ [MASTER] drm:card1
		  |
		  ├─/sys/devices/pci0000:00/0000:00:1c.7/0000:01:00.1/graphics/fb0
		  │ [MASTER] graphics:fb0 "mgag200drmfb"
		  |
		  |─/sys/devices/pci0000:00/0000:00:1c.7/0000:01:00.1/i2c-6
		  |
		  |─/sys/devices/pci0000:00/0000:00:1c.7/0000:01:00.4/usb

$> loginctl attach seat1 /sys/devices/pci0000:00/0000:00:1c.7/0000:01:00.1/drm/card1
$> loginctl attach seat1 /sys/devices/pci0000:00/0000:00:1c.7/0000:01:00.1/graphics/fb0
$> loginctl attach seat1 /sys/devices/pci0000:00/0000:00:1c.7/0000:01:00.1/i2c-6
$> loginctl attach seat1 /sys/devices/pci0000:00/0000:00:1c.7/0000:01:00.4/usb

$> systemctl restart lightdm

Kellene lennie egyszerűbb megoldásnak egyetlen grafikus kártyával. Egy időben csak egy desktop környezetnek kell működnie, nem kell multiuser desktop szolgáltatás. A remote desktop nem működik a LightDM login képernyőn és csak ott lehet választani desktop környezetet. Ezért kellene az érintett config fájlokat átírni majd reboot. Mivel autologin van a reboot kikerüli a login képernyőt, azaz LightDM-et.