eliminar la barra de título de otro programa

10

He desarrollado un programa con glut library y quiero eliminar su barra de título.

Como es imposible eliminar la barra de título de la biblioteca glut, tengo que usar una herramienta externa para eliminar su barra de título.

Con respecto al hecho de que es posible manipular la decoración de otras ventanas en el sistema operativo Windows, espero encontrar un remedio similar para este obstáculo.

¿Tiene alguna idea sobre cómo eliminar la barra de título de la ventana específica con un script o una simple aplicación X11?

Camarada Esponja
fuente
Los administradores de ventanas también pueden manipular las decoraciones de ventanas en cierto grado. Con IceWM puedes poner una línea en ~ / .icewm / winoptions yourWindow.dTitleBar: 0.
manatwork
La barra de título de una ventana es dibujada y administrada por el administrador de la ventana, no por las aplicaciones. Los administradores de ventanas deciden cosas como mostrar una barra de título basada en sugerencias ICCCM o sus derivados modernos. No creo que pueda controlar esto de una manera que sea independiente tanto de la aplicación como del administrador de ventanas.
Gilles 'SO- deja de ser malvado'

Respuestas:

10

Wmctrl

Esto está relacionado, pero puede cambiar el texto en la barra de título de esta misteriosa aplicación usando el comando wmctrl.

Ejemplo

Digamos que ejecuté la aplicación gvim. Se muestra de la siguiente manera cuando enumero las ventanas abiertas.

$  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

Por lo tanto, la gvimventana tiene el título "[Sin nombre] - GVIM", podemos cambiar su nombre así, nuevamente usando wmctrl:

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

Al ejecutar el -linterruptor nuevamente podemos ver el nuevo nombre:

$ 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

Todas las decoraciones

Este método se discute en este Preguntas y respuestas de AskUbuntu titulado: ¿Puedo ocultar la barra de título de MPlayer en gnome? .

Hubo esta esencia de Python: window-toggle-decorations.py que parecía hacer lo que querías. Puede ser modificable para satisfacer sus necesidades.

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
fuente
Guauu ! funcionó ! Debe ejecutarse de esta manera: python2 ./toggle.py . No he visto algo así y al menos ahora tengo una pista sobre la respuesta. Gracias Smart Looking Man (slm).
Camarada de esponja el
Lo probé con una llamada al sistema ("python2 ./toggle.py") y funcionó también, sin embargo, estoy seguro de que su código es convertible a C ++.
Camarada Esponja
¡Lo extraño es que tengo que llamarlo dos veces para lograrlo! sistema ("python2 ./toggle.py"); sistema ("python2 ./toggle.py"); es ridículo ! pero funciona para mí y es suficiente: D
Sponge Comrade
6

Hay un programa C simple que funciona, desarrollado originalmente por Muktupavels .

Lo uso y funciona muy bien. Esta aquí

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

Le permite activar y desactivar la barra de título para cualquier aplicación.

Para usarlo, simplemente asegúrese de tener la libx11-devbiblioteca instalada

sudo apt-get install -y libx11-dev

luego compila el código usando este comando

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

y ejecutarlo con este comando

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

donde $(...)captura el --idde su aplicación usando wmctrl.

No hice este gran trabajo y no tengo crédito por ello.

Fue hecho por muktupavels.

Kes
fuente
¡Lo único que funcionó en Unity / Compiz THX!
Acuario Power