Entfernen Sie die Titelleiste eines anderen Programms


10

Ich habe ein Programm mit Glut-Bibliothek entwickelt und möchte die Titelleiste entfernen.

Da es unmöglich ist, die Titelleiste aus der Glut-Bibliothek zu entfernen, muss ich ein externes Tool verwenden, um die Titelleiste zu entfernen.

In Bezug auf die Tatsache, dass es möglich ist, andere Windows-Dekorationen im Windows-Betriebssystem zu manipulieren, hoffe ich, ein ähnliches Mittel für dieses Hindernis zu finden.

Haben Sie eine Idee, wie Sie eine bestimmte Fenstertitelleiste mit einem Skript oder einer einfachen X11-Anwendung entfernen können?


Fenstermanager können in gewissem Maße auch die Fensterdekorationen manipulieren. Mit IceWM können Sie eine Zeile in ~ / .icewm / winoptions einfügen yourWindow.dTitleBar: 0.
— Manatwork

Die Titelleiste eines Fensters wird vom Fenstermanager gezeichnet und verwaltet, nicht von Anwendungen. Fenstermanager entscheiden beispielsweise, ob eine Titelleiste basierend auf ICCCM-Hinweisen oder ihren modernen Derivaten angezeigt werden soll. Ich glaube nicht, dass Sie dies auf eine Weise steuern können, die sowohl von der Anwendung als auch vom Fenstermanager unabhängig ist.
— Gilles 'SO - hör auf böse zu sein'

Antworten:


10

Wmctrl

Dies ist verwandt, aber Sie können den Text in der Titelleiste dieser Mystery-Anwendung mit dem Befehl ändern wmctrl.

Beispiel

Angenommen, ich habe die Anwendung ausgeführt gvim. Es wird wie folgt angezeigt, wenn ich die geöffneten Fenster aufliste.

$  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

Das gvimFenster hat also den Titel "[No Name] - GVIM". Wir können seinen Namen so ändern, wiederum mit wmctrl:

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

Wenn Sie den -lSchalter erneut ausführen, sehen Sie den neuen Namen:

$ 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

Alle Dekorationen

In dieser Frage und Antwort von AskUbuntu wird diese Methode mit dem Titel: Kann ich die Titelleiste von MPlayer in gnome ausblenden? .

Es gab diesen Kern von Python - window-toggle-decorations.py , der so aussah, als würde er genau das tun, was Sie wollten. Es kann an Ihre Bedürfnisse angepasst werden.

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 

Wow ! es funktionierte ! Es sollte folgendermaßen ausgeführt werden: python2 ./toggle.py . Ich habe so etwas noch nicht gesehen und zumindest habe ich jetzt eine Ahnung von der Antwort. Vielen Dank, dass Sie Smart Looking Man (slm).
— Schwammgenosse

Ich habe es mit einem Systemaufruf ("python2 ./toggle.py") getestet und es hat auch funktioniert, aber ich bin sicher, dass sein Code in C ++ konvertierbar ist.
— Schwammgenosse

Seltsam ist, dass ich es zweimal aufrufen muss, um etwas zu bewirken !!! System ("python2 ./toggle.py"); System ("python2 ./toggle.py"); es ist lächerlich! aber es funktioniert für mich und es ist genug: D
— Schwammgenosse

5

Es gibt ein einfaches C-Programm, das von Muktupavels entwickelt wurde. https://gist.github.com/muktupavels .

Ich benutze es und es funktioniert sehr gut. Es ist hier

https://gist.github.com/muktupavels/d03bb14ea6042b779df89b4c87df975d

Hiermit können Sie die Titelleiste für eine bestimmte Anwendung ein- und ausschalten.

Um es zu verwenden, stellen Sie einfach sicher, dass Sie die libx11-devBibliothek installiert haben

sudo apt-get install -y libx11-dev

Kompilieren Sie dann den Code mit diesem Befehl

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

und führen Sie es mit diesem Befehl aus

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

Dabei wird $(...)das --idIhrer Anwendung mit wmctrl erfasst.

Ich habe diese großartige Arbeit nicht gemacht und nehme keine Anerkennung dafür.

Es wurde von Muktupavels gemacht.


das einzige was bei Unity / compiz funktioniert hat thx!
— Wassermann Power
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.