Korzystam z mniej lub bardziej standardowej instalacji Ubuntu Precise 12.04 i jestem całkiem zadowolony z wykonywania codziennych zadań w środowisku Unity.
Jednak jeśli chodzi o grę, czuję się o wiele bardziej komfortowo z LXDE (tło: w obecnym stanie Unity archiwizuje znacznie niższe liczby klatek na sekundę niż np. Unity 2D lub LXDE - to znany błąd i nad nim pracujemy).
W tym celu utworzyłem profil użytkownika dla graczy i teraz chcę go ograniczyć tylko do korzystania ze środowiska graficznego LXDE.
Aby rozwinąć tę kwestię dalej: gdy zostanie wyświetlony monit o zalogowanie się po uruchomieniu, chcę, aby tylko ekran LXDE pojawiał się jako opcja dla profilu użytkownika gracza na ekranie logowania, podczas gdy mój standardowy profil użytkownika powinien nadal mieć możliwość wyboru, którego środowiska pulpitu użyć.
Z góry dziękuję za wszelkie informacje, które mogą być pomocne!
źródło
Odpowiedzi:
Ok, z mojego rozumienia LightDM (menedżera logowania) nie wydaje się obsługiwane ograniczanie środowisk pulpitu dla konkretnego użytkownika. Jest to umowa typu wszystko albo nic. Domyślnie, gdy użytkownik wybierze środowisko pulpitu, stanie się ono domyślnym środowiskiem pulpitu. Gdy następnym razem się zalogują, chyba że wybiorą inną, zostaną zalogowani do ustawień domyślnych.
Możesz to jednak zrobić, aby użytkownik nie mógł tego zmienić. Ten użytkownik nadal będzie mógł wybrać inne środowisko pulpitu, ale jeśli to zrobi, nie zmieni to ustawienia domyślnego. Uważam, że jest to najbezpieczniejszy sposób na zrobienie tego, jeśli nie martwisz się, że dana osoba to zmieni. Wszystko, co musisz zrobić, to edytować
.dmrc
plik (znajdujący się w katalogu domowym, tj. / Home / user). Tutaj przechowywana jest ich domyślna sesja. ZmieńSession
zmienną w tym pliku na cokolwiek chcesz, tj.ubuntu
Jest domyślnym Unity DE,ubuntu-2d
Unity 2D iLXDE
LXDE. Aby tak się nie stało, jeśli zalogują się przy użyciu innego DE, możemy po prostu uczynić go niezmiennym (niezmiennym):Teraz nikt nie będzie mógł zmienić tego pliku (łącznie z rootem i innymi programami), chyba że usuniesz niezmienną flagę:
Jeśli absolutnie NIE chcesz, aby ten użytkownik kiedykolwiek logował się przy użyciu innego DE, wymyśliłem naprawdę hackerski sposób (tj. Rób to na własne ryzyko), aby to osiągnąć. Byłem trochę znudzony i wydawało mi się to zabawną rzeczą. Wszystkie różne DE, które LightDM może zobaczyć, są przechowywane
/usr/share/xsessions
jako.desktop
pliki. Do Twojej wiadomości, możesz usunąć dowolne z nich, których nie chcesz wyświetlać na ekranie logowania (ale spowoduje to usunięcie WSZYSTKICH użytkowników). Jeśli otworzysz którykolwiek z nich, są one dość proste. Są to podstawowe pliki uruchamiające pulpit, podobnie jak wszystkie skróty na pulpicie. Każdy zawieraExec
wiersz, który jest wykonywany po wybraniu DE na ekranie logowania (tzn. który DE zostanie uruchomiony). Wykorzystamy to i sprawdzimy, który użytkownik się loguje. Jeśli użytkownik jest naszym ograniczonym użytkownikiem, zmusimy go do korzystania z określonego DE.Po pierwsze, dla każdego
.desktop
pliku/usr/share/xsessions/
musisz utworzyć skrypt w/usr/local/bin
. W moim przykładzie pokażę, jak to zrobić, dlaubuntu.desktop
którego jest Unity DE, i używając LXDE jako DE, do którego zmuszamy naszego ograniczonego użytkownika (ograniczonego użytkownika). Patrząc na LXDE.desktop, widzimy, żeExec
polecenie jest/usr/bin/startlxde
i nie maTryExec
polecenia. Po otwarciuubuntu.desktop
widzimy, żeExec
polecenie jest,gnome-session --session=ubuntu
aTryExec
polecenie jestunity
.TryExec
Komenda jest tylko to, co brzmi jak. Po uruchomieniuExec
polecenia spróbuje je uruchomićTryExec
, ale jeśli się nie powiedzie, nie ulegnie awarii.Teraz, biorąc te polecenia, które otrzymaliśmy z
.desktop
plików, możemy tworzyć nasze skrypty. Włożymy je/usr/share/bin
. Będziemy musieli zrobić dwa, jeden dlaExec
i jeden dlaTryExec
. Zrobimy coś takiego:ubuntude.sh
ubuntudetry.sh
Właśnie testujemy, czy osoba logująca się jest naszym ograniczonym użytkownikiem i odpalamy odpowiednią licencję DE. Teraz musimy upewnić się, że są one wykonywalne:
Teraz musimy zmienić nasze,
ubuntu.desktop
aby wywoływały nasze skrypty, zamiast rzeczywistych DE. Skomentuj linieExec
iTryExec
w pliku i zamień je na:Po prostu powtórz proces dla wszystkich innych DE. Jeśli nie ma
TryExec
DE, to nie ma potrzeby tworzenia dla niego skryptu detry.sh, ponieważ LXDE nie używaTryExec
. Oczywiście jest to trochę zhackowane i powinieneś upewnić się, że utworzysz kopię zapasową plików przed ich edycją, ale zadziała, jeśli absolutnie musisz upewnić się, że użytkownik loguje się do właściwej wersji DE.źródło
w Debian Squeeze i Wheezy możesz również dodać .xsessionrc za pomocą jednej linii
eksport STARTUP = XXX
(gdzie XXX jest wymuszonym skryptem sesji, patrz wiersz wiersza powyżej) w katalogu głównym użytkownika, aby wymusić określony typ sesji, niezależnie od tego, co wybrał użytkownik.
Powinien również działać na Ubuntu.
(Spójrz na /etc/X11/Xsession.d/40x11-common_xsessionrc i 50x11-common_determine-startup, aby zobaczyć, dlaczego to działa)
źródło
Odpowiedź reverendj1 nie działała dla mnie. Przyczyną może być to, że wartość określona w Exec = nie jest wykonywana bezpośrednio, ale przekazywana do / etc / X11 / Xsession jako argument. (źródło: https://askubuntu.com/a/857420/873016 )
Inne rozwiązanie problemu:
1. Wykonaj kopię zapasową wszystkich plików
/ usr / share / xsessions / .desktop 2. Usuń wszystkie pliki / usr / share / xsessions / .desktop
3. Utwórz tylko /usr/share/xsessions/default.desktop za pomocą
„default” jest kluczowym słowem dla Xsession i wyszukuje konkretną sesję w katalogu użytkownika.
4. Teraz utwórz plik /home/{username}/.xsession dla każdej nazwy użytkownika. W przypadku aplikacji „podobnej do kiosku” powinna ona wyglądać następująco:
Jeśli np. Inny użytkownik powinien mieć możliwość uruchomienia pełnego menedżera pulpitu, może to wyglądać tak:
Testowane na Ubuntu 16.04 z lightdm
źródło