Comment faire pour que linux GUI?
Principal de mon expérience avec C && C++, donc je préfère rester avec eux. Je ne veux pas utiliser quoi que ce soit comme QT, GTK, ou wxWidgets ou toutes les trousses à outils. J'aimerais apprendre la programmation autochtone, et ce genre de défaites le but. Avec cela à l'esprit, j'aimerais aussi éviter de Java.
Je comprends gnome et xfce et KDE et tous les Environnements de Bureau pour Linux, et la base installée est généralement X (Xorg). Lors du codage pour Linux, avez-vous le code pour X, ou pour l'environnement de bureau? Est-il un standard de Linux-tête pour cela (comme win32 de windows.h) pour Linux? ou est-il différentes méthodes de codage pour chaque environnement de bureau?
toute aide est grandement appréciée.
Vous devez vous connecter pour publier un commentaire.
X est un hideux couche de programme pour et, malgré votre intention d'éviter de Java, QT ou l'une de l'excellente INTERFACE des couches d'abstraction, que vous allez faire vous-même un mauvais service par codage à ce niveau. Je l'ai fait (il y a longtemps, lorsque le Motif en était à ses balbutiements sur la plate-forme, nous avons été à l'aide) et je ne pas le faire à nouveau s'il y avait un moyen plus facile.
Votre utilisation de l'expression "de la programmation autochtone" me confond un peu. Si vous voulez apprendre la programmation autochtone, c'est à l'Api que vous choisissez de faire appel. En utilisant un raisonnement similaire, vous ne devriez pas être de codage en C, soit, plutôt que d'opter pour l'assembleur (ou directement en code machine) depuis C fournit une couche d'abstraction du matériel.
Si vous voulez apprendre X de programmation, c'est très bien. Vous vous retrouverez avec beaucoup plus de contrôle sur votre interface, mais presque tout le monde sera de vous en termes de livraison du logiciel. Moi, je préfère le code à un niveau supérieur de l'API que je peux utiliser sur de nombreuses plates-formes - qu'il me donne à la fois plus rapide et délais de livraison plus le potentiel de marché.
Vous n'avez pas à construire une maison avec des atomes, à vous de le construire en briques. Ma suggestion est d'utiliser les outils, c'est qu'ils sont là.
Je ne veux pas utiliser quoi que ce soit comme QT, GTK, ou wxWidgets ou toutes les trousses à outils. J'aimerais apprendre la programmation autochtone, et ce genre de défaites le but.
Non, vous ne le font pas. De retour dans une première version de X11, comme R1 ou R2, j'ai codé un "Hello, world" programme de la Xlib seul.
Près de 700 lignes de C.
Vous ne voulez pas y aller.
Je suppose que vous pourriez écrire directement du code C contre Xlib, mais vous seriez en fin de recréer toutes les fonctionnalités que GTK+ ou QT prévoir que X n'est pas le seul.
Unix (et, par extension, Linux) n'est pas réellement définir quelque chose à voir avec les Interfaces graphiques. X, qui est couramment utilisé, ne définit rien à voir avec des widgets ou des styles ou de quelque nature que ce soit - c'est préoccupée surtout avec le dessin de primitives et de la gestion des événements. Essentiellement, si vous souhaitez écrire dans le plus pur X, vous seriez définir la forme et le comportement de chaque élément sur l'écran. Si vous avez été assez fou pour abandonner X, vous seriez de travail sur les graphismes framebuffer niveau...
Vous êtes mieux d'utiliser certains toolkit - si vous êtes à la recherche de la lumière-poids, pourquoi ne pas essayer FLTK?
GTK, QT et wx sont des outils de construire sur X pour fournir une plus respectueuses de l'API.
Si vous n'avez pas utiliser une trousse d'outils que vous aurez besoin d'écrire des choses à un niveau très faible, la manipulation de la souris et du clavier événements. Si vous voulez un bouton ou une zone de texte, vous aurez à écrire vous-même en utilisant le faible niveau de la xlib primitives.
Avant d'essayer ceci, vous êtes probablement mieux de la cueillette de la boîte à outils de votre choix de l'environnement de bureau et de commencer avec ça.
Il n'est tout simplement pas une telle chose comme "natifs" dans ce cas. Windows et OS X disposent d'une option, alors que X n'en a pas.
"Indigènes" de l'interface pour Linux & la plupart des autres os Unix-like est de la Xlib, le plus bas niveau de l'API C pour X11.
GTK, Qt & les autres sont tous (autant que je sache), mis en œuvre en termes de Xlib à leur base. Comme d'autres l'ont dit, la Xlib vous donne maximum de contrôle, mais vous aurez à travailler pour elle (et d'autres peuvent exécuter des cercles autour de vous en termes de livrer un produit).
Comme un point de référence, j'ai personnellement mis en place une assez riche en fonctionnalités & moderne (c'est à dire à faible viscosité) de la croix-plate-forme (Win32 + X11) la bibliothèque d'interface graphique en C++. Nombre Total est d'environ 29 KLOC de C++, dont environ 2500 lignes chacun a été nécessaire pour le X11 & Win32 calage. Le reste est pour la plate-forme neutre Widget implémentations. Sauf si vous êtes prêt à prendre un engagement comme ça, je vous recommande fortement d'aller avec l'un des plus élevé au niveau des bibliothèques (Qt serait probablement mon choix, bien que je ne peux pas supporter le préprocesseur approche).
BTW, un gros plus pour la Xlib est de son cru portabilité--toute machine Unix avec un écran, et il peut être fait pour fonctionner sur Windows & OS X ainsi.
Je sens qu'il faut contrepoint l'unanimité des autres réponses ici. X11 est en effet faible niveau. Mais pour "vraiment" comprendre ce qui se passe, vous devriez avoir une certaine familiarité avec la façon dont X11 fonctionne. Depuis toutes les boîtes à outils de travail sur le dessus de X, vous l'utilisez, si vous l'aimez ou pas. Il est bon tutoriel en ligne quelque part que je suis trop paresseux pour chercher. Il vous guide à travers la construction d'un simple Hello World. Pour ce faire, vous aurez à apprendre comment créer une fenêtre, demande événements, la carte de la fenêtre, et des événements de processus en boucle. On pourrait même aller jusqu'à commander des livres sur Amazon. O'Reilly vol 1 et 2 (pour l'instant obtenir le moins cher des éditions, mais rien de plus tôt que X11R4) sont essentiels pour la référence et pour obtenir l'histoire complète de la façon dont les éléments fonctionnent ensemble. Pour apprendre, cependant, le meilleur livre est X de la Fenêtre de Programmation d'Applications par Eric Johnson et Kevin Reichard.
À un certain point le long de ce voyage, comme tout le monde dit, vous trouverez que vous avez eu assez. Deux pages de code pour sélectionner un visuel, et puis vous avez encore pour remplir une palette de couleurs avant de peindre votre image personnalisée. Et puis, deux jours de réécriture et de débogage pour réaliser que tout ne travail; vous avez juste oublié de
XFlush()
!La lutte est important, parce que vous apprécierez les boîtes à outils, plus d'une fois que vous trouver celui que vous aimez.
Je dirais lesstif/motif ainsi. Il s'appuie également sur le dessus de X et la courbe d'apprentissage est, à mon avis, n'est pas aussi raide que GTK ou Qt. L'INTERFACE utilisateur vous construisez avec elle ne va pas être aussi sophistiqué que vous pouvez construire avec GTK ou Qt si. Plus d'informations peuvent être trouvées ici.
Comme d'autres l'ont mentionné, vous ne voulez probablement pas à X c'est une douleur.
Pourquoi ne pas en choisir une parmi les, dire, Qt, wxWidgets et GTK et apprendre son fonctionnement interne, plutôt que de son API? Je ne veux pas juste pour le plaisir de le faire, mais avec l'objectif de contribuer à la pièces que vous trouvez le plus attrayant. De cette façon, vous auriez répondre à votre objectif et d'arriver à faire quelque chose d'utile pour vous et aussi pour les autres. Je pense que ce serait plus gratifiant que d'attribuer vous-même le lieu de travail artificielles de la création d'une application avec ce montant pour les mauvais outils.
oh oui, il y a ces "indigènes" des choses:
FBUI, svgalib, directfb, exa(kdrive), SDL, Allegro..+de Wayland, bien que non mainstream.
http://home.comcast.net/~fbui/
http://www.svgalib.org/
http://directfb.org/
http://xorg.freedesktop.org/wiki/ExaStatus
+
http://wayland.freedesktop.org/