Różnica między .xinitrc, .xsession i .xsessionrc

55

Znalazłem trzy pliki konfiguracyjne.

  1. .xinitrc
  2. .xsession
  3. .xsessionrc

Wiem, że pierwszy służy do używania, startxa drugi i trzeci są używane podczas korzystania z menedżera wyświetlania. Ale jaka jest różnica między dwoma ostatnimi?

lockdoc
źródło

Odpowiedzi:

64

~/.xinitrcjest wykonywany przez xinit, który jest zwykle wywoływany przez startx. Ten program jest uruchamiany po zalogowaniu: najpierw logujesz się na konsoli tekstowej, a następnie uruchamiasz GUI startx. Rola .xinitrcpolega na uruchomieniu części GUI sesji, zwykle poprzez ustawienie niektórych ustawień związanych z GUI, takich jak powiązania klawiszy (z xmodmaplub xkbcomp), zasoby X (z xrdb) itp., Oraz uruchomienie menedżera sesji lub menedżera okien ( ewentualnie jako część środowiska pulpitu).

~/.xsessionjest wykonywany, gdy logujesz się w trybie graficznym (w menedżerze wyświetlania ), a menedżer wyświetlania wywołuje „sesję niestandardową”. (Przy historycznym menedżerze wyświetlania xdm .xsessionjest zawsze wykonywany, ale przy nowoczesnych menedżerach wyświetlania, które dają użytkownikowi wybór rodzaju sesji, zazwyczaj trzeba wybrać „niestandardowy”, .xsessionaby uruchomić.) Jego rolą jest zarówno ustawienie parametrów czasu logowania (takich jak zmienne środowiskowe) i rozpoczęcie sesji GUI. Typowe .xsessionjest

#!/bin/sh
. ~/.profile
. ~/.xinitrc

~/.xsessionrcjest wykonywany na Debianie (i jego pochodnych, takich jak Ubuntu, Linux Mint itp.) przez skrypty startowe X na login GUI, dla wszystkich typów sesji i (jak sądzę) ze wszystkich menedżerów wyświetlania. Jest również wykonywany, startxjeśli użytkownik nie ma .xinitrc, ponieważ w takim przypadku startxopiera się na tych samych skryptach uruchamiania sesji, które są używane do logowania GUI. Jest wykonywany stosunkowo wcześnie, po załadowaniu zasobów, ale przed uruchomieniem dowolnego programu, takiego jak kluczowy agent, demon D-Bus itp. Zazwyczaj ustawia zmienne, które mogą być używane przez późniejsze skrypty startowe. Nie ma żadnej oficjalnej dokumentacji, którą znam, musisz przekopać się do źródła, aby zobaczyć, co działa.

.xinitrci .xsessionsą historycznymi cechami systemu X11 Window, więc powinny być dostępne i mieć podobne zachowanie na wszystkich systemach uniksowych. Z drugiej strony, .xsessionrcjest funkcją Debiana, a dystrybucje, które nie są oparte na Debianie, nie mają jej, chyba że zaimplementują coś podobnego.

.xprofilejest bardzo podobny do .xsessionrc, ale jest częścią skryptu uruchamiania sesji GDM (menedżera wyświetlania GNOME), więc jest czytany tylko wtedy, gdy logujesz się za pomocą GDM.

Gilles „SO- przestań być zły”
źródło
5

Według innej dyskusji, startx + ~ / .xsession i no ~ / .xinitrc, powoduje obniżoną funkcjonalność (xfce4, sid)

Po pierwsze: .xsessionrcsłuży do przechowywania globalnych zmiennych środowiskowych . Nacisk jest mój.

Po drugie: 40x11-common_xsessionrcin /etc/X11/Xsession.djest pozyskiwany wcześniej 50x11-common_determine-startup. Tak .xsessionrcjest czytane wcześniej, .xsessiona wszelkie ustawione zmienne środowiskowe będą dostępne dla aplikacji uruchamianych przez polecenia w .xsession.

Dalsza lektura:

Thomas Dickey
źródło