web-dev-qa-db-fra.com

Comment les applications KDE fonctionnent-elles sous Gnome?

Si GNOME utilise GTK + et KDE utilise QT, comment se trouver des applications KDE peuvent être exécutées sous Gnome?

19
ps-aux

GTK et QT sont Toolkits Pour construire des interfaces graphiques. Chaque boîte à outils UI fournit ses propres fonctions pour créer des widgets (boutons, textes de texte ...) et se présente sous la forme de bibliothèques que le programme graphique lie contre. Un programme écrit pour GNOME utilisera GTK (libgdk et libgtk), tandis que les programmes KDE utilisent qt (libQtCore et libQtGui), les programmes d'éclairage utilisent EFL, etc.

Cependant, toutes ces boîtes à outils utilisent le même Système de fenêtre x & identique X11 protocole. Pour que les choses apparaissent à l'écran, la boîte à outils se connecte au serveur X11 (généralement xorg, précédemment appelé xfree86), envoie des commandes x11 (Fenêtre Créer une fenêtre, dessine quelque chose dans une fenêtre) et reçoit des événements d'entrée X11 (souris, clavier, redimensionnement de la fenêtre , & c) de retour.

(Les boîtes à outils les plus modernes, telles que GTK, QT ou EFL, effectuent des dessins fantaisistes eux-mêmes et utilisent simplement X11 pour envoyer l'image finie de toute la fenêtre, et le serveur X le met simplement à l'écran. Les butines plus anciennes comme LXAW ou Motif utilisent à la place. X11 pour dessiner des primitives comme des lignes ou des rectangles ou du texte, et le serveur X fait tous le rendu.)

Le serveur X fait ensuite le travail de la mise en place, de parler à votre carte graphique, et ainsi de suite. De cette façon, vous pouvez exécuter des programmes qui utilisent diverses versions différentes de différentes annuelles, car elles utilisent à la fin les mêmes installations du système d'exploitation.

Mécanisme, pas politique

La situation à outils multiples est non unique à x - par exemple, vous trouverez des programmes Windows à l'aide de la norme comctl32 Mais aussi WPF, .NET Winforms, Aura de Chrome, Xul de Firefox, et même le même GTK ou QT. La plupart des jeux utilisent leurs propres contrôles de style. Vraiment, c'est possible sur tout Système graphique qui vous permet de dessiner une image dans toute la fenêtre.

Cependant, l'un des principes de x était "mécanisme, non politique". Cela signifie que le serveur X fournit uniquement le mécanisme de ses clients (programmes graphiques) pour faire diverses choses, mais impose aussi peu de règles que nécessaire. En d'autres termes, X prend cela dans une plus grande mesure que tout autre système graphique.

Par exemple, l'une des parties intégrées d'un système graphique est Gestion de la fenêtre - Le dessin des cadres (aka décorations) autour de chaque fenêtre, la possibilité de déplacer et de redimensionner les fenêtres, etc. Windows et OS X ont un gestionnaire de fenêtres intégré dans le système, mais en X il exécute en tant que programme séparé - la suite X.org est livrée avec un minimal twm, mais presque tous les environnements de bureau expédient leurs propres gestionnaires de fenêtres ( GNOME avait SAWFISH, METACITÉ, GNOME-Shell; KDE a KWIN) Fournir une intégration avec l'environnement de bureau respectif.

(Comme des outils à outils, les "composants" modernes, les gestionnaires de fenêtres prennent en charge le travail de Xorg de composition de toutes les fenêtres sur l'image de l'écran finale, permettant d'ajouter des objets comme des ombres ou des effets.)

Avec des environnements de bureau modernes, cela a également créé des problèmes. Pour utiliser l'exemple le plus courant: la même fonctionnalité "GRAB Keyboard" est utilisée par des touches de raccourci; menus pop-up; et des économiseurs d'écran, et un seul programme peut l'utiliser à la fois. Cela signifie que vous ne pouvez pas verrouiller l'écran lorsqu'un menu contextuel est ouvert ou saute des chansons pendant que l'écran est verrouillé. C'est l'une des nombreuses raisons de créer des warslands en tant que remplacement de X11.

Note latérale

Techniquement, cela signifie même que vous pouvez exécuter X programmes sur un ordinateur différent, parlant au serveur X de votre machine sur le réseau. En effet, c'était le primaire cas d'utilisation au début des jours et c'est l'endroit où le nom "x serveur" vient de partir en premier lieu. Il est possible d'exécuter un serveur X sur un Mac et d'afficher les fenêtres créées par des programmes exécutées sur Linux, FreeBSD, même OpenVMS.

Cependant, comme mentionné ci-dessus, les outils à outils modernes effectuent tous les soins du client (graphismes fantaisie et de jolies polices sont tout à fait difficiles à faire avec X11 Primitives) et appuyez uniquement les images finales sur le serveur X, qui est très rapide localement, mais nécessite un juste un peu de bande passante de réseau.

(Autres protocoles, tels que la RFB (AKA VNC) ou le "Desktop distant" de Microsoft, sont conçu Pour cela, ils ont des moyens très efficaces de compresser les images de la fenêtre.)

30
user1686

Une partie de la réponse est que les principaux environnements de bureau (Gnome, KDE, XFCE, peut-être d'autres) travaillent ensemble sous http://freedesktop.org pour rendre cette interopération possible. L'une des spécifications publiées par fd.o est EWMH , qui assure un certain niveau de compatibilité entre les gestionnaires de fenêtres (pour les fonctionnalités modernes, pas seulement la gestion de la fenêtre de base) .

7
vonbrand

Lors de la course sous GNOME, les applications KDE appellent toujours les bibliothèques de QT partagées dont elles dépendent. La même chose s'applique à toute application sous un autre environnement de bureau. Ils ne posent aucune restriction sur ce que l'on peut appeler et ce qui ne peut pas.

4
Ghassan