J'essaie de détecter si je cours sur un environnement de bureau GNOME ou KDE. P>
Je sais que je peux vérifier via un PS -aux et Grepping gnome ou kde, mais ce n'est pas bon: 1) Et si je suis sur un bureau Gnome, mais j'ai la KDE libs chargée? 2) Je dois le faire du code sans utiliser System () ou Popen () ou une autre combinaison Fork / Exec. P>
Je peux lire des fichiers ou env. variables ou autre chose. p>
Des idées? P>
Merci, toute aide est appréciée. P>
4 Réponses :
Au moins sur OpenSUSE Il existe les variables d'environnement WindowManager, Window_Manager
eike@lixie:~> echo $WINDOWMANAGER /usr/bin/startkde eike@lixie:~> echo $WINDOW_MANAGER /usr/bin/startkde eike@lixie:~>
Choisissez un ensemble de gestionnaires de fenêtres que vous vous souciez de: METACITÉ, XFWM4, FLWM, etc. Vous pouvez rechercher ceux de votre grep de PS code> (ou rechercher via / proc). Les bibliothèques gnomes ne signifient pas nécessairement que quelqu'un gère l'environnement de bureau GNOME, mais alors GNOME et KDE ne sont pas des gestionnaires de fenêtres. Si WMS est ce que vous aimez, cherchez ceux-ci. P>
Peut-être que je ne me suis pas expliqué correctement: Y a-t-il un moyen de savoir si je cours sur un environnement gnome ou un KDE?
Ah. Dans ce cas, vous voudrez peut-être modifier votre question pour dire "environnement de bureau" au lieu de "gestionnaire de fenêtres".
Nan. Si je savais comment, j'aurais juste dit que cela au lieu d'essayer de vous faire clarifier votre question.
Merci quand même. Cela devrait être facile mais pour une raison quelconque c'est plutôt complexe
@Jessica: Qu'est-ce qui vous fait penser que cela devrait être facile? Linux a aucun concept de niveau système i> de "quelle gui passe-je?" Parce que l'interface graphique est juste un autre processus utilisateur i>. Cela dit, vous pouvez regarder Rechercher l'application préférée d'une extension de fichier donnée via des commandes de shell UNIX , et si ce n'est pas suffisant, je voudrais juste demander à l'utilisateur i>. Vraiment.
Je ne parle pas du concept de niveau système, mais j'ai du mal à croire que Gnome ou KDE, ballonné comme ils sont avec leurs tonnes de bibliothèques ne donnent aucune idée de savoir s'ils courent ou non ... je suppose que je me trompe alors. Merci de le pointer. Cette question restera sans réponse ...
Ce n'est pas une réponse qui me donne une solution, mais que je veux fermer cette question, je l'accepterai.
Vous pouvez lier statiquement votre boîte à outils de la fenêtre si cela ne vous dérange pas d'une interface utilisateur incompatible. Cela fonctionnera toujours bien. Vous pouvez également simplement regrouper les bibliothèques partagées et assurer des points LD_Library_Path. Si vous vouliez réellement mettre en œuvre quelque chose qui ferait un lien dynamiquement à différentes outils à outils, vous pouvez essayer quelque chose avec Dlopen / Dlsym, mais ce serait fou. P>
Si vous vous souciez de la cohérence de la boîte à outils multiples-plate-forme / transversale, votre meilleur choix serait quelque chose qui rend les widgets d'origine autochtones eux-mêmes; Swing peut rendre le même code pour ressembler à GTK ou à Windows. Je sais que vous n'utilisez pas Java, mais il n'y a pas de solution facile en C (Swing ne vous fera que partout, car il ne fait pas qt). P>
J'ai juste besoin de savoir si je cours avec l'un ou l'autre desktop. La raison en est que je peux présenter l'utilisateur avec une option d'exécution de certains programmes en fonction de ces informations, mais mon programme est une ligne de commande simple sans lien avec qt ou gtk
Ensuite, l'utilisation de la liste de traitement a quelques cas de mauvais angles. Juste parce que l'utilisateur actuel est en cours d'exécution [gnome | kde] ne signifie pas que Ce processus i> est joint à cet écran (les utilisateurs peuvent exécuter plus d'une session x et peuvent utiliser différents environnements de bureau et gestionnaires de fenêtres dans eux)...
Je sais que. D'où la question ici
Vous ne savez pas à quel point cela est standard, mais il est cohérent dans Fedora 21, Slackware 14.1 et Ubuntu 14.04. (Plus bienvenue)
Essayez p> espère que cela aide. P> p>
Et si c'est xfce? ion? WMII? DWM ....?
Puisque vous n'essayez pas de détecter GNOME VS KDE, existe-t-il un ensemble particulier de distributions ou de configurations que vous ciblez? Comment le général doit-il être la solution?
Pourquoi veux-tu faire cela? Il est possible que vous soyez mal réfléchi ici ...
@ cthom06, alors si son de ceux-ci, je vais obtenir un null ou 0 ou autre chose et je l'ai défini comme faute.
@DMCKEE Pourquoi les gens insistent-ils pour demander pourquoi et inmédiatelly marquer quelque chose de malveillant ...
@Jessica: Je ne parle pas de personne d'autre, mais je demande pourquoi parce que je tente d'aider. Parfois, les gens demandent "Comment puis-je foo?" I> Quand ils veulent dire "Je veux accomplir le bar et j'essaye foo." I> Quand le bar est mieux géré par un seul Méthode foo. Et je n'ai aucune idée d'où vous avez creusé "malveillant" de.
de "mal réfléchi" mais je suppose que mon anglais n'est pas si bon ...
J'ai besoin de savoir si je suis en cours sur un bureau GNOME ou KDE, car je dois présenter une option de programmes aux utilisateurs, ces programmes s'appuient fortement sur cette information. Mon programme est une ligne de commande simple.
Vous voudrez peut-être envisager de manipuler au moins xfce et lxde comme si elles sont gnomes alors
Quels programmes vous souhaitez présenter aux utilisateurs et pourquoi? Il serait peut-être possible d'utiliser l'une des choses XDG pour savoir quels programmes le préfèrent et les présentent, de cette façon, vous l'obtenez toujours bien, même si elles sont un utilisateur gnome qui aime certaines applications KDE.