supprimer la barre de titre d'un autre programme

10

J'ai développé un programme avec la bibliothèque glut et je souhaite supprimer sa barre de titre.

Comme il est impossible de supprimer la barre de titre de la bibliothèque glut, je dois utiliser un outil externe pour supprimer sa barre de titre.

En ce qui concerne le fait qu'il est possible de manipuler d'autres décorations de fenêtres dans le système d'exploitation Windows, j'espère trouver un remède similaire à cet obstacle.

Avez-vous une idée sur la façon de supprimer une barre de titre de fenêtre spécifique avec un script ou une simple application X11?

Camarade éponge
la source
Les gestionnaires de fenêtres peuvent également manipuler les décorations des fenêtres dans une certaine mesure. Avec IceWM, vous pouvez mettre une ligne dans ~ / .icewm / winoptions yourWindow.dTitleBar: 0.
manatwork
La barre de titre d'une fenêtre est dessinée et gérée par le gestionnaire de fenêtres, pas par les applications. Les gestionnaires de fenêtres décident d'afficher ou non une barre de titre basée sur des conseils ICCCM ou leurs dérivés modernes. Je ne pense pas que vous puissiez contrôler cela d'une manière indépendante de l'application et du gestionnaire de fenêtres.
Gilles 'SO- arrête d'être méchant'

Réponses:

10

Wmctrl

C'est un peu lié mais vous pouvez changer le texte dans la barre de titre de cette application mystère en utilisant la commande wmctrl.

Exemple

Disons que j'ai exécuté l'application gvim. Il apparaît comme suit lorsque j'énumère les fenêtres ouvertes.

$  wmctrl -l
0x04402eed -1 grinchy N/A
0x00c00003 -1 grinchy Bottom Expanded Edge Panel
0x00c00028 -1 grinchy Top Expanded Edge Panel
0x0120001e  0 grinchy x-nautilus-desktop
0x02a00004  0 grinchy saml@grinchy:~
0x06800003  0 grinchy [No Name] - GVIM

Donc, la gvimfenêtre a le titre "[No Name] - GVIM", nous pouvons changer son nom comme ça, encore une fois en utilisant wmctrl:

$ wmctrl -r "[No Name] - GVIM" -N "new name"

En -lexécutant à nouveau le commutateur, nous pouvons voir le nouveau nom:

$ wmctrl -l
0x04402eed -1 grinchy N/A
0x00c00003 -1 grinchy Bottom Expanded Edge Panel
0x00c00028 -1 grinchy Top Expanded Edge Panel
0x0120001e  0 grinchy x-nautilus-desktop
0x02a00004  0 grinchy saml@grinchy:~
0x06800003  0 grinchy new name

Toutes les décorations

Il y a cette méthode discutée dans cette Q&R AskUbuntu intitulée: Puis-je masquer la barre de titre de MPlayer dans gnome? .

Il y avait cet essentiel de Python - window-toggle-decorations.py qui semblait faire ce que vous vouliez. Il peut être modifiable selon vos besoins.

window-toggle-decorations.py

#! /usr/bin/python2
import gtk.gdk
w = gtk.gdk.window_foreign_new( gtk.gdk.get_default_root_window().property_get("_NET_ACTIVE_WINDOW")[2][0] )
w.set_decorations( (w.get_decorations()+1)%2 ) # toggle between 0 and 1
gtk.gdk.window_process_all_updates()
gtk.gdk.flush()

# now bind this to super-r or something 
slm
la source
Hou la la ! ça a marché ! Il doit être exécuté de cette manière: python2 ./toggle.py . Je n'ai pas vu quelque chose comme ça et au moins maintenant j'ai une idée de la réponse. Merci Smart Looking Man (slm).
Sponge Comrade
Je l'ai testé avec un appel système ("python2 ./toggle.py") et cela a fonctionné aussi, mais je suis sûr que son code est convertible en C ++.
Sponge Comrade
Chose étrange, je dois l'appeler deux fois pour effectuer !!! system ("python2 ./toggle.py"); system ("python2 ./toggle.py"); c'est ridicule ! mais ça marche pour moi et ça suffit: D
Sponge Comrade
6

Il existe un programme C simple qui fonctionne, développé à l'origine par Muktupavels .

Je l'utilise et ça marche très bien. C'est ici

https://gist.github.com/cat-in-136/96ee8e96e81e0cc763d085ed697fe193

Il vous permet d'activer et de désactiver la barre de titre pour une application donnée.

Pour l'utiliser, assurez-vous simplement que la libx11-devbibliothèque est installée

sudo apt-get install -y libx11-dev

puis compilez le code en utilisant cette commande

gcc toggle-decorations.c -Wall -o toggle-decorations `pkg-config --cflags --libs x11`

et l'exécuter avec cette commande

./toggle-decorations $(wmctrl -lx | grep -E "name_of_your_application_here" | grep -oE "[0-9a-z]{10}")

$(...)capture le --idcontenu de votre application à l'aide de wmctrl.

Je n'ai pas fait ce grand travail et n'en ai aucun mérite.

Cela a été fait par muktupavels.

Kes
la source
la seule chose qui a fonctionné sur Unity / compiz thx!
Aquarius Power