Qual è il ciclo di vita per il caricamento di un ambiente desktop Linux?

4

Sto cercando di approfondire un po 'di lavoro su OS personalizzato (e sì capisco che fare qualsiasi sviluppo a livello di DE o inferiore su un sistema operativo sia estremamente complesso e non una cosa leggera da intraprendere, la curiosità sta guidando questo però ), Sono in fase di ricerca in questo momento, scavando e imparando dal codice sorgente per esempi di progetti come GNOME, KDE e XFCE.

Non riesco a trovare una buona risorsa o risorse che descrivano come un "ambiente desktop" sia inizializzato, istanziato e disegnato sullo schermo dell'utente (cioè il suo ciclo di vita). So che Xorg / X11 si trova lì da qualche parte, agendo da server e lo schermo degli utenti è il client, e il tuo desktop si trova in cima a questo client. Molte risorse iniziano a parlare di riorganizzare combinazioni di gestori di finestre già sviluppati, app e simili al fine di personalizzare la tua esperienza desktop, ma quello che sto pensando è che cosa se volessi un SO ridotto che consistesse solo in uno schermo con tre pulsanti che hanno eseguito alcune azioni e basta? Non ho bisogno di gestione delle finestre, applicazioni o altri elementi della GUI, solo la possibilità di disegnare un desktop e tre pulsanti ... (ipotetico)

Il mio problema è a livello di distribuzione, come viene registrato un DE come ambiente desktop disponibile, come viene legato all'avvio di distro, cosa succede dopo l'accesso, cosa viene eseguito, qual è la topografia di un DE? Ad esempio, in Ubuntu è possibile avere KDE, XFCE e GNOME installati su una distro e passare da una all'altra effettuando il logout, cambiando la DE attiva e ricollegandosi così come fa la DE a rendere il SO consapevole della sua esistenza in primo luogo?

In realtà ho davvero bisogno di un livello elevato, voglio fare qualcosa di abbastanza semplice in quanto voglio rendere disponibile un DE in una distribuzione come Ubuntu Desktop (non apertamente, intendo solo per me stesso) e inizializzarlo su un desktop vuoto (nessuna barra delle applicazioni, app, window manager, ecc ...; solo lo stato di base più possibile) per capire cosa è necessario per ottenere un DE in esecuzione.

Non ho bisogno di risposte specifiche al codice (dov'è la sfida in questo senso?) ma puntano a buone risorse su come funziona questo processo. Prenderò una risposta testuale ben formata su un blocco di codice mentre sto cercando di capire come funziona, il percorso intrapreso per arrivare a un DE e non a specifiche di implementazione.

Il risultato di questo non verrà pubblicato tecnicamente (in termini di codice) ma sto guardando alcuni post del blog che descrivono il processo di apprendimento di tutto questo e scrivendo il livello DE per ottenere un desktop "Raw" installato e funzionante in un sistema operativo preesistente / stabilito come Ubuntu, Mint, Gentoo o un'altra distribuzione.

    
posta jduren 28.12.2012 - 19:52
fonte

2 risposte

2

Beh, in realtà non ho mai fatto quello che volevi fare, ma ho alcune idee che potresti prendere in considerazione.

Se dovessi provare quello che stai facendo, cercherei un DE molto minimalista e minimalista, in modo che ci sia poco rumore e forse potrò crearlo.

Vedi un elenco completo qui: link

Informazioni su come stanno andando le cose. Bene, l'hai spiegato in grande. Vorrei aggiungere i seguenti dettagli, roba generale - non specifica di Ubuntu.

Sul mio Linux, uso Sabayon, ma probabilmente anche su altre distro, dovrebbe esserci un servizio responsabile per inizializzare X.org e magari offrire la schermata di login grafica. Cerca cose come /etc/init.d/xdm, o kdm, gdm, ecc. Dove "dm" è solitamente l'acronimo di "Display Manager".

Dopo l'accesso, "/ etc / X11 / xinit / xinitrc" è coinvolto nell'azione. Non sono sicuro del perché. In questo, o in "~ / .xinitrc" dell'utente, una linea specificherà il DE che vuoi usare. Ecco alcuni esempi dal mio file .xinitrc:

#exec /usr/bin/enlightenment_start
exec /usr/bin/startkde

La prima riga avvierebbe E17 DE, de secondo uno, attualmente attivo, avvia KDE.

Inoltre, come ha sottolineato @ sepp2k, "X ha il concetto di una finestra radice che puoi disegnare per piacere a qualsiasi altra finestra X11. Questa finestra esiste automaticamente e non deve essere creata (l'API X11 (come così come API di livello superiore come GDK) ha un metodo per ottenere un riferimento alla finestra di root). Ecco come è possibile disegnare cose sul desktop. "

Infine, X.org fornisce un "handle al DisplayContext" ed è possibile aggiungere una "finestra in cima allo schermo e tracciarne alcune linee". come @jduren ha scoperto più tardi.

    
risposta data 28.12.2012 - 20:16
fonte
1

Panoramica della finestra X:

  • un display è uno o più schermi, una tastiera, un dispositivo puntatore (spesso un mouse) (1)

  • il server di visualizzazione è il programma che agisce da mediatore tra il display e il programma che desidera utilizzarlo (i client). Il server fa pochissimo per quanto riguarda i criteri ui (ma gestisce quello di accesso giusto).

  • i client disegnano su finestre, area rettangolare sugli schermi.

  • ci sono finestre speciali che coprono ciascuna un intero schermo, le finestre di root di quelle schermate.

  • X è un protocollo di rete, quindi i client possono essere eseguiti su un altro computer rispetto al server. Parte del protocollo consente alcune comunicazioni tra i clienti.

  • disegnare i bordi delle finestre, cambiare l'elemento attivo, minimizzare, ... e tale tipo di criterio ui viene gestito da un client chiamato window manager. C'è molto poco di speciale sul window manager, tranne che risponde agli eventi che vengono ignorati da altri client e per i quali può esserci un solo destinatario. In alcune situazioni, potresti finire senza un gestore di finestre attivo.

  • ci sono convenzioni più o meno standardizzate per la comunicazione tra i clienti e il gestore delle finestre.

  • ambiente desktop non è un termine ben definito. Ciò che solitamente copre è un gestore di finestre e un insieme di applicazioni progettate per fornire un modello di utilizzo coerente e altre convenzioni in modo che le applicazioni possano interagire con esse e tra di esse. Parte di queste convenzioni sono anche più o meno standardizzate .

  • quando si avvia un server X dopo aver effettuato l'accesso in modalità testo o quando si utilizza un display manager grafico per accedere, esiste uno script di sessione che viene eseguito. Lo script di sessione può avviare solo un xterm sul display, avviare diversi programmi e un window manager o avviare l'inizializzazione di un intero ambiente desktop. I display manager tendono a consentire di scegliere uno dei vari script di sessione.

  • Le distribuzioni Linux fanno il loro packaging in modo tale che quando installi un ambiente desktop, registra gli script di sessione per ciascuno dei display manager installati.

(1) beh ci possono essere diverse tastiere e mouse, ma non puoi fare la differenza tra loro

    
risposta data 29.12.2012 - 14:43
fonte

Leggi altre domande sui tag