web-dev-qa-db-fra.com

Interface graphique Linux personnalisée: par où commencer?

J'ai un intérêt de longue date à développer une interface utilisateur du système d'exploitation adaptée à 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 adoré développer mes propres styles de fenêtres et idées de mise en page. Depuis lors, j'ai eu des démangeaisons insensibles.

  • Je ne suis pas particulièrement intéressé à tripoter les opérations du noyau de niveau inférieur, juste les aspects de présentation. J'ai envisagé une certaine saveur de Linux.
  • Bien que j'aimerais avoir des outils/applications intégrés de base que je crée moi-même, je suis principalement intéressé par les présentations du fenêtrage de base, des barres d'outils, du bureau et de la 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 possibilité de travailler des outils existants dans une conception 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être inhabituelles serait utile. La possibilité de reproduire plus ou moins 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 vierge et de travailler à partir de zéro ou d'inclure les 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 recherche:

Je suis intéressé par les saveurs Linux/OS qui pourraient avoir du sens, quels outils/frameworks seraient utiles pour accomplir la tâche (Qt semble être une suggestion populaire ici), et des informations de base sur comment/où on pourrait commencer à développer/tester de tels une interface utilisateur. Je serais également intéressé à lire à propos de toute interface utilisateur "personnelle" que les gens pourraient avoir développée.

C'est un intérêt bien au-delà de mon travail de développement normal, donc en tant que déni de responsabilité, pardonnez ma naïveté si je semble confus. Des informations correctives sont les bienvenues.

Je sais que c'est une grande question, donc merci à ceux qui ont pris le temps de faire des suggestions.

57
grey

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

Vous devrez généralement combiner plusieurs outils: un gestionnaire de fenêtres, un programme de barre d'outils, un gestionnaire de bureau (icônes), un gestionnaire de sessions, éventuellement plus. En dehors de cela, seul un gestionnaire de fenêtres est une partie requise (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. Vous n'écrivez généralement 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 en fait constitué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), gestionnaire de bureau (nautilus) et ainsi de suite. Vous pouvez changer un élément en un autre si vous le souhaitez: il était courant d'utiliser sawfish comme gestionnaire de fenêtres au lieu de metacity, en gardant tous les autres éléments intacts. Maintenant, il est courant 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. Un des exemples de Nice est FVWM-Crystal , qui est un DE complet basé sur FVWM et quelques autres outils, écrit dans un mélange de scripts FVWM et Python. Vous pouvez réellement changer n'importe quel type de comportement lors de l'exécution en ouvrant simplement 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 de 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 une partie importante de GNOME3, avec un très bon support pour la composition. C'est le paradis des hackers ;-)]

[UPDATE2: il semble donc que j'avais raison sur gnome-Shell. Il y a Cinnamon , qui utilise le même framework (mutter gestionnaire de fenêtres) que gnome-Shell, mais crée un bureau qui fonctionne différemment de gnome-Shell.]

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

Attention: beaucoup de ces composants ne sont plus maintenus, surtout depuis que GNOME/KDE a commencé à devenir réellement utilisable. Le développement dans ce domaine est généralement davantage dicté par les exigences spécifiques des appareils intégrés: téléphones ou netbooks .

Maintenant, pour répondre à vos vraies questions:

  • Flaver Linux/OS: tout ce qui est facilement personnalisable: Debian, Arch, Gentoo, LFS ...
  • Outils/cadres: cela dépend de ce que vous voulez réaliser. Si vous voulez écrire une barre d'outils personnalisée, vous pouvez simplement utiliser des langages de script (comme FVWM), des outils personnalisés comme adesklets , ou écrire les vôtres en Qt (si la plupart de vos autres composants sont en Qt) ou GTK (si la plupart de vos autres composants sont en GTK).
  • UI personnelles: il y en avait beaucoup, et des sites comme lynucs.org en étaient une belle compilation (lynucs listait les composants utilisés dans chaque bureau).
  • Effets de transparence complexes: les outils plus anciens ne le gèrent généralement pas nativement, ou font des choses simples comme simplement réutiliser une partie du papier peint de bureau comme arrière-plan (ce que l'on appelle la fausse transparence). Vous aurez très probablement besoin d'écrire votre propre code, p. Ex. en tant que plugin pour compiz.
47
liori

Je commencerais probablement par une installation Ubuntu et le gestionnaire de fenêtres OpenBox et je construirais à partir de là.

OpenBox est très minimal mais vous pouvez ajouter des applications (par exemple Docky, Awn, etc.) pour fournir des éléments d'interface de bureau ou écrire les vôtres.

3
Oli

Si vous avez une interface utilisateur rapide et cool, je suggérerais de regarder Lumières . Il est plus ancien que Gnome et je l'ai trouvé une option extrêmement rapide et consommant peu de ressources.

1
Ashish

Avez-vous essayé Tcl/Tk? Tcl est un langage de script. Tk est la partie GUI du langage. Votre application s'exécutera partout même sur Android utilisant AndroWish.

Si facile et si rapide.

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

0
superlinux