2010-09-05 15 views
48

Ho avuto un interesse di lunga data nello sviluppo di un'interfaccia utente del sistema operativo su misura per i miei bisogni e interessi. Quando ero più giovane, impazzivo giocando con gli strumenti per scuoiare Stardock per Windows. Mi è piaciuto sviluppare i miei stili di finestre e le mie idee di layout. Da allora ho avuto un prurito insondabile.GUI Linux personalizzata: da dove cominciare?

  • Non sono particolarmente interessato a manipolare le operazioni del kernel di livello inferiore, solo gli aspetti di presentazione. Ho considerato alcuni aspetti di Linux.
  • Mentre mi piacerebbe avere alcuni strumenti/applicazioni integrati di base che io stesso creo, sono principalmente interessato alle presentazioni di finestre di base, barre degli strumenti, desktop e gestione dei file.
  • Non voglio essere escluso dall'utilizzo di applicazioni esistenti, se possibile. Io, ad esempio, non ho alcun interesse a scrivere il mio browser web, ma avere la capacità di lavorare gli strumenti esistenti in un design sarebbe un vantaggio importante.
  • Le mie idee sono a volte di natura molto visiva, quindi sarebbe utile la possibilità di produrre effetti di trasparenza più complessi e forme di finestre insolite. Più o meno la capacità di riprodurre la fedeltà grafica dei progetti attuali dell'interfaccia utente per OS X o Windows sarebbe l'ideale.
  • Un sistema operativo e strumenti che consentono di iniziare con una schermata vuota e di lavorare da zero o includere le nozioni di base sono incoraggiati. L'idea di un "desktop" nel senso tradizionale non dovrebbe essere obbligatoria. La flessibilità per fare cose diverse è importante per me.

Quello che sto cercando:

Mi interessa quello sapori Linux/OS potrebbe avere senso, quali strumenti/quadri sarebbero utili per realizzare il compito (Qt sembra essere un suggerimento popolare qui) e informazioni di base su come/dove si potrebbe iniziare a sviluppare/testare tale interfaccia utente. Sarei anche interessato a leggere qualsiasi interfaccia utente "personale" che le persone potrebbero aver sviluppato.

Questo è un interesse molto al di fuori del mio normale lavoro di sviluppo, quindi, in quanto disclaimer, perdona la mia ingenuità se mi sembra di essere confuso. Insight correttivo accolto favorevolmente.

Mi rendo conto che questa è una grande domanda, quindi grazie a quelli per aver trovato il tempo di dare suggerimenti.

risposta

38

Si desidera creare il proprio DE (ambiente desktop). Esempi comuni sono GNOME e KDE, anche se molti di loro erano popolari. In realtà era molto popolare per creare il proprio DE, e spesso venivano creati strumenti di scripting dedicati.

Di solito è necessario combinare più strumenti: un gestore di finestre, un programma di barra degli strumenti, un gestore di desktop (icone), un gestore di sessioni, possibilmente di più. Di questo solo un window manager è una parte richiesta (di solito non ha senso non eseguire alcun WM all'interno del server X), e altri sono opzionali. Solitamente non si scrivono questi strumenti da zero (è molto lavoro), ma si utilizzano componenti già disponibili.

Nota che entrambi GNOME e KDE sono in realtà costituiti da questi elementi (ben integrati).Ad esempio, GNOME è costituito da un gestore finestre (metacity), barre degli strumenti (gnome-panel), desktop manager (nautilus) e così via. È possibile modificare un elemento in un altro, se lo si desidera: era popolare utilizzare sawfish come gestore finestre anziché metacity, mantenendo intatti tutti gli altri elementi. Ora è popolare usare compiz anziché metacity.

Ho usato FVWM, che è un gestore di finestre con funzionalità di scripting aggiuntive (abbastanza buone) che potrebbero essere utilizzate per creare barre degli strumenti, menu e altre cose. Uno dei buoni esempi è FVWM-Crystal, che è un DE completo costruito su FVWM e pochi altri strumenti, scritto in un mix di script FVWM e Python. È possibile modificare qualsiasi tipo di comportamento in fase di esecuzione semplicemente aprendo la console di scripting di FVWM e digitando i comandi. FVWM-Crystal può essere un buon punto di partenza se vuoi iniziare da qualcosa già utilizzabile; la FVWM spoglia è buona se vuoi costruire il tuo DE da zero.

[AGGIORNAMENTO: sembra che lo gnome-shell sia molto simile a questo riguardo a FVWM. La maggior parte del suo comportamento è programmata usando JavaScript (invece di un linguaggio personalizzato in FVWM) ed è molto facile da cambiare. È anche sviluppato molto attivamente, in quanto è una parte importante di GNOME3, con un ottimo supporto per la composizione. È il paradiso di un hacker ;-)]

[UPDATE2: così sembra che abbia ragione su gnome-shell. C'è un Cinnamon, che utilizza la stessa struttura (mutter window manager) come gnome-shell, ma costruisce un desktop che funziona in modo diverso rispetto gnome-shell]

C'era un sito web che è stata una buona fonte di idee da implementare:. lynucs.org . È giù da due anni, ma ha ottenuto archived.

Attenzione: molti di questi componenti non vengono più mantenuti, specialmente da quando GNOME/KDE ha iniziato a diventare effettivamente utilizzabile. Lo sviluppo in questo settore è solitamente guidato più dai requisiti specifici dei dispositivi incorporati: phones o netbooks.

Ora, per rispondere alle vostre domande attuali:

  • Linux/OS flaver: qualsiasi cosa facilmente personalizzabile: Debian, Arch, Gentoo, LFS ...
  • Tools/quadri: dipende da ciò che si fa voglio raggiungere. Se vuoi scrivere una barra degli strumenti personalizzata potresti semplicemente usare alcuni linguaggi di scripting (come FVWM), strumenti personalizzati come adesklets, o scrivere i tuoi in Qt (se la maggior parte degli altri componenti è in Qt) o GTK (se la maggior parte dei tuoi altri componenti è in GTK).
  • UI personali: ce n'erano molte e siti come lynucs.org erano una bella raccolta di questi (i componenti elencati in lynucs erano usati in ogni desktop).
  • Effetti di trasparenza complessi: gli strumenti più vecchi di solito non lo gestiscono in modo nativo o fanno cose semplici come riutilizzare solo parte dello sfondo del desktop come sfondo (la cosiddetta trasparenza finta). Molto probabilmente avrai bisogno di scrivere il tuo codice, per esempio come plugin per compiz.
2

Probabilmente comincerei con un'installazione di Ubuntu e il gestore di finestre OpenBox e si accumulerebbero da lì.

OpenBox è molto minimo ma è possibile aggiungere applicazioni (ad esempio Docky, Awn, ecc.) Per fornire elementi di interfaccia desktop o scrivere il proprio.

+1

Immagino che l'idea qui sia che nel caso delle "applicazioni aggiunte" sarei interessato ad avere la mia versione di questi tipi di widget. E la mia domanda riguarda davvero la possibilità di lavorare da zero e quali sono gli strumenti validi pur avendo comunque accesso a questi tipi di sistemi, se lo si desidera. – grey

1

Se si utilizza l'interfaccia utente rapida e intuitiva, suggerirei di esaminare Enlightenment. È più vecchio di Gnome e ho trovato un'opzione estremamente veloce e poco dispendiosa in termini di risorse.

0

Hai provato Tcl/Tk? Tcl è un linguaggio di scripting. Tk è la parte GUI della lingua.La tua applicazione verrà eseguita ovunque anche su Android utilizzando AndroWish.

Così facile, e così veloce.

Nel giro di un'ora, sono riuscito a creare un'agenda con un calendario.

Problemi correlati