Quale ambiente desktop esegue startx e come posso cambiarlo?


18

Da molti documenti, ho letto che startxsta avviando LXDE nel sistema operativo Raspbian. Sono un po 'confuso.

Verrà sempre startxeseguita la GUI di LXDE?

Inoltre ho visto un esempio con l'utilizzo del startlxdecomando. In che modo questo comando è diverso e perché startxe startlxdestanno eseguendo la stessa GUI (LXDE)? O forse lo esegue perché è la GUI predefinita?

Come posso scegliere la GUI predefinita se ne ho più?

Potresti spiegare maggiori dettagli sulla GUI nei sistemi Linux?

Risposte:


27

startxviene eseguito xinitche avvia un server X e una sessione client. La sessione client è ~/.xinitrcse presente e in caso contrario /etc/X11/xinit/xinitrc(la posizione può variare tra le distribuzioni). Ciò che fa questo script varia tra le distribuzioni. Su Debian (compresi i derivati ​​come Raspbian), /etc/X11/xinit/xinitrcviene eseguito un programma /etc/X11/Xsessionche a sua volta esegue degli script /etc/X11/Xsession.d. Gli script Debian cercano una sessione utente in altri file ( ~/.xsession, ~/.xsessionrc, ~/.Xsession) e, se nessuna impostazione utente è applicabile, corre x-session-manager(in calo di nuovo a x-window-managerse non è installato [gestore di sessione], cadendo di nuovo a x-terminal-emulatornel caso improbabile che nessun gestore di finestre è installato).

Se si desidera controllare ciò che viene eseguito, è possibile creare uno dei file utente, o ~/.xsessiono ~/.xinitrc. Il file ~/.xsessionviene utilizzato anche se si accede a un display manager (ovvero se si digita la password in una finestra della GUI). Il file ~/.xinitrcè specifico di xinite startx. L'utilizzo ~/.xsessionpassa attraverso /etc/X11/Xsessioncosì imposta cose come metodi di input, risorse, agenti password, ecc. Se lo usi .xinitrc, dovrai fare tutto ciò manualmente. Ancora una volta, sto descrivendo Debian qui, altre varianti di Unix potrebbero impostare le cose in modo diverso. L'uso di ~/.xinitrcper specificare ciò che viene eseguito quando si esegue startxo xinitè universale.

Sia che tu usi ~/.xinitrco ~/.xsession, questo file (di solito uno script di shell, ma non deve essere se vuoi davvero usare qualcos'altro) deve preparare tutto ciò che deve essere preparato (ad es. Impostazioni della tastiera, risorse, applet che non sono stati avviati dal gestore delle finestre, ecc.), quindi alla fine eseguire il programma che gestisce la sessione. Al termine dello script, la sessione termina. In genere, si utilizza execalla fine dello script per sostituire lo script con il gestore sessioni o il gestore finestre.

Presumibilmente il tuo sistema ha /usr/bin/startlxdecome gestore sessioni predefinito a livello di sistema. Su Debian e derivati, puoi controllare i gestori di sessione disponibili con

update-alternatives --list x-session-manager

o ottenere una descrizione più dettagliata che indichi quale è attuale

update-alternatives --display x-session-manager

Se LXDE non era il valore predefinito a livello di sistema e si desidera renderlo predefinito per il proprio account, è possibile utilizzare il seguente ~/.xsessionfile:

#!/bin/sh
exec startlxde

Su alcune varianti Unix, ciò verrebbe eseguito solo per accessi grafici, non per startx, quindi dovresti anche crearne uno identico ~/.xinitrc. (O non identico: in ~/.xsession, potresti voler fare altre cose, perché quello è il primo file che viene eseguito in una sessione grafica; ad esempio potresti mettere . ~/.profilevicino all'inizio, per impostare alcune variabili d'ambiente.)

Se si desidera provare altri ambienti come una tantum, è possibile specificare un programma diverso da eseguire sulla riga di comando di startxse stesso. Il startxprogramma ha una stranezza: è necessario utilizzare l'intero percorso del programma.

startx /usr/bin/startkde

Il startxcomando consente inoltre di specificare gli argomenti da passare al server. Ad esempio, se si desidera eseguire più sessioni GUI contemporaneamente, è possibile passare un numero di visualizzazione diverso ogni volta. Passare gli argomenti del server dopo --sulla riga di comando di startx.

startx /usr/bin/startkde -- :1

Sono su Debian 9. La mia macchina si avvia su tty1. Dal mio login in esecuzione startxinizia la sessione Xfce4 predefinita. Dall'accesso utente di mia moglie su tty1 o tty2. Il suo startxcomando è impostato per eseguire Cinnamon (specificato in ~/.xsession). Per il secondo server X non devo specificare $DISPLAYcome indicato nell'ultima parte della risposta. Anche se sicuramente funziona. Lo rende automaticamente il secondo $DISPLAYecc. L'impostazione è comunque ottima. Non è possibile accedere e disconnettersi da una sessione grafica, solo una scorciatoia da tastiera per cambiare i profili utente. Grazie per questa utile risposta!
jbrock,

10

No: startxè configurabile. Secondo la pagina del manuale :

Per determinare il client da eseguire, startxcerca innanzitutto un file chiamato .xinitrcnella home directory dell'utente. Se ciò non viene trovato, utilizza il file xinitrcnella xinitdirectory della libreria.

startxnon è l'unico modo per avviare X (come vedi da startlxde). La startxpagina del manuale aiuta di nuovo:

Lo script startx è un front-end per xinit (1) che fornisce un'interfaccia utente un po 'più carina per l'esecuzione di una singola sessione di X Window System. Viene spesso eseguito senza argomenti.

D'altra parte, se si desidera scegliere una GUI (LXDE, KDE, ecc.), Quindi xdme simili come kdm, gdmo LightDMvengono utilizzati per selezionare diversi tipi di desktop. Su Debian lo uso generalmente kdm, perché consente diversi tipi di desktop. I packager per gdmnon consentire la maggior parte dei tipi di desktop, rendendolo inadatto alle mie esigenze.

xdmutilizza un diverso set di script per iniziare, ad esempio, il tuo ~/.xsessionscript insieme agli script di sistema. I sosia possono ignorarlo e usare i propri script. Ma è un punto di partenza.


Quindi, da qualche parte nei file conf è scritto per eseguire LXDE per esempio?
Curioso Acquista il

.xinitrcè uno script, che lo rende configurabile. Potrebbe eseguire LXDE direttamente se codificato per fare questo.
Thomas Dickey,

1
startlxdenon è un frontend per xinit, è un lanciatore per il gestore di sessioni LXDE. Non è un sostituto per startx, è qualcosa in cui puoi eseguire ~/.xinitrc.
Gilles 'SO- smetti di essere malvagio' il

Quindi ha bisogno di documentazione. Scherzi a parte, una buona risposta indica l'OP nella direzione della documentazione piuttosto che tentare di riformularla (a meno che non si abbia qualche commento da fare sulla documentazione, per dargli un senso migliore).
Thomas Dickey,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.