2010-09-05 2 views
48

Je m'intéresse depuis longtemps au développement d'une interface utilisateur répondant à mes besoins et intérêts. Quand j'étais plus jeune, je suis devenu fou en jouant avec les outils de skinning Stardock pour Windows. J'ai aimé développer mes propres styles de fenêtre et idées de mise en page. Depuis lors, j'ai eu un démangeaison inrayable.GUI Linux personnalisé: par où commencer?

  • Je ne suis pas particulièrement intéressé par le fait de manipuler les opérations de noyau de niveau inférieur, juste les aspects de présentation. J'ai considéré une certaine saveur de Linux.
  • Bien que j'aimerais créer des outils/applications intégrés de base que je crée moi-même, je m'intéresse principalement aux présentations de fenêtres de base, de barres d'outils, de bureau et de gestion de fichiers.
  • Je ne veux pas être exclu de l'utilisation des applications existantes, si possible. Par exemple, je n'ai aucun intérêt à écrire mon propre navigateur Web, mais avoir la capacité de travailler des outils existants dans un design serait un atout majeur.
  • Mes idées sont parfois de nature très visuelle, donc la possibilité de produire des effets de transparence plus complexes et des formes de fenêtres inhabituelles serait utile. Plus ou moins, la possibilité de reproduire la fidélité graphique des conceptions d'interface utilisateur actuelles pour OS X ou Windows serait idéale.
  • Une saveur de système d'exploitation et des outils qui me permettent de commencer avec un écran blanc et travailler à partir de la base ou d'inclure des bases sont encouragés. L'idée d'un "bureau" au sens traditionnel ne devrait pas être obligatoire. La flexibilité de faire des choses différentes est importante pour moi.

Ce que je suis à la recherche:

Je suis intéressé par ce que les saveurs Linux/OS peut donner un sens, quels outils/cadres seraient utiles pour l'accomplissement de la tâche (Qt semble être un suggestion populaire ici), et des informations de base sur comment/où on pourrait commencer à développer/tester une telle interface. Je serais également intéressé par la lecture de toute interface utilisateur "personnelle" que les gens ont pu développer.

Ceci est un intérêt bien au-delà de mon travail de développement normal, donc en tant que déni, pardonnez ma naïveté si je semble être confus. Insight corrective accueilli. Je réalise que c'est une grande question, donc merci à ceux d'avoir pris le temps de faire des suggestions.

Répondre

38

Vous voulez construire votre propre DE (environnement de bureau). Des exemples courants sont GNOME et KDE, bien que plus d'entre eux étaient populaires. En fait, il était très populaire pour construire votre propre DE, et des outils de script dédiés ont souvent été créés.

Vous aurez généralement besoin de combiner plusieurs outils: un gestionnaire de fenêtres, un programme de barre d'outils, un gestionnaire de bureau (icônes), un gestionnaire de session, éventuellement plus. En dehors de cela, seul un gestionnaire de fenêtres est une partie obligatoire (cela n'a généralement aucun sens de ne pas exécuter de WM à l'intérieur du serveur X), et d'autres sont facultatifs. Habituellement, vous n'écrirez pas ces outils à partir de zéro (c'est beaucoup de travail), mais utilisez des composants déjà disponibles.

Notez que GNOME et KDE sont composés de ces éléments (bien intégrés).Par exemple, GNOME se compose d'un gestionnaire de fenêtres (metacity), de barres d'outils (gnome-panel), d'un gestionnaire de bureau (nautilus) et ainsi de suite. Vous pouvez changer un élément en un autre si vous voulez: il était populaire d'utiliser sawfish comme un gestionnaire de fenêtres au lieu de metacity, en gardant tous les autres éléments intacts. Maintenant, il est populaire d'utiliser compiz au lieu de metacity.

J'avais l'habitude d'utiliser FVWM, qui est un gestionnaire de fenêtres avec des capacités de script supplémentaires (assez bonnes) qui pourraient être utilisées pour créer des barres d'outils, des menus et d'autres choses. L'un des bons exemples est FVWM-Crystal, qui est un DE complet basé sur FVWM et quelques autres outils, écrits dans un mélange de scripts FVWM et Python. Vous pouvez changer n'importe quel type de comportement lors de l'exécution en ouvrant la console de script de FVWM et en tapant des commandes. FVWM-Crystal peut être un bon point de départ si vous voulez partir de quelque chose déjà utilisable; FVWM nu est bon si vous voulez construire votre DE à partir de zéro.

[MISE À JOUR: il semble que gnome-shell est très similaire à cet égard à FVWM. La plupart de son comportement est scripté en utilisant JavaScript (au lieu d'un langage personnalisé dans FVWM), et est très facile à modifier. Il est également très activement développé, car c'est un élément important de GNOME3, avec un très bon support pour la composition. C'est le paradis d'un hacker ;-)]

[UPDATE2: il semble que j'avais raison sur gnome-shell. Il y a un Cinnamon, qui utilise le même cadre (mutter gestionnaire de fenêtres) comme gnome-shell, mais construit un ordinateur de bureau qui fonctionne d'une manière différente de celle gnome-shell]

Il y avait un site Web qui est une bonne source d'idées pour mettre en œuvre:. lynucs.org . Il est en panne depuis deux ans maintenant, mais il a obtenu archived.

Attention: beaucoup de ces composants ne sont plus maintenus, d'autant plus que GNOME/KDE a commencé à être réellement utilisable. Le développement dans ce domaine est généralement plus motivé par les exigences spécifiques des dispositifs embarqués: phones ou netbooks.

Maintenant, pour répondre à vos questions réelles:

  • Linux/OS flaver: quoi que ce soit facilement personnalisable: Debian, Arch, Gentoo, LFS ...
  • Outils/cadres: cela dépend de ce que avez-vous vouloir réaliser. Si vous voulez écrire une barre d'outils personnalisée, vous pouvez utiliser des langages de script (comme FVWM), des outils personnalisés comme adesklets, ou écrire vos propres dans Qt (si la plupart de vos autres composants est dans Qt) ou GTK (si la plupart de vos autres les composants sont en GTK).
  • Interface utilisateur personnelle: il y en avait beaucoup, et des sites comme lynucs.org en constituaient une belle compilation (les composants listés par lynucs sont utilisés dans chaque bureau).
  • Effets de transparence complexes: les outils plus anciens ne gèrent généralement pas nativement, ou font des choses simples comme simplement réutiliser une partie du fond d'écran comme fond d'écran (ce qu'on appelle la fausse transparence). Vous aurez probablement besoin d'écrire votre propre code, f.e. comme un plugin à compiz.
2

Je commencerais probablement avec une installation Ubuntu et le gestionnaire de fenêtres OpenBox et de construire à partir de là.

OpenBox est très minimale mais vous pouvez ajouter des applications (par exemple Docky, AWN, etc.) pour fournir des éléments d'interface de bureau ou écrire votre propre.

+1

Je suppose que l'idée ici est que dans le cas des "applications ajoutées" je serais intéressé d'avoir ma propre version de ces types de widgets. Et ma question est vraiment de pouvoir travailler à partir de zéro et quels outils sont bons pour cela tout en ayant accès à ce genre de système si on le souhaite. – grey

1

Si vous rapide et cool UI je suggérerais de regarder dans Enlightenment. C'est plus vieux que Gnome et je l'ai trouvé extrêmement rapide et peu gourmand en ressources.

0

Avez-vous essayé Tcl/Tk? Tcl est un langage de script. Tk est la partie GUI de la langue.Votre application sera exécutée partout, même sur Android en utilisant AndroWish.

Si facile et si rapide.

En une heure seulement, j'ai pu faire un agenda avec un calendrier.

Questions connexes