remover barra de título de outro programa

10

Eu desenvolvi um programa com biblioteca de excesso e quero remover sua barra de título.

Como é impossível remover a barra de título da biblioteca de excesso, tenho que usar uma ferramenta externa para remover sua barra de título.

Quanto ao fato de ser possível manipular outras decorações de janelas no sistema operacional Windows, espero encontrar um remédio semelhante para esse obstáculo.

Você tem alguma idéia de como remover a barra de título específica da janela com um script ou um aplicativo X11 simples?

Camarada Esponja
fonte
Os gerenciadores de janelas também podem manipular as decorações das janelas em certo grau. Com o IceWM, você pode colocar uma linha em ~ / .icewm / winoptions yourWindow.dTitleBar: 0.
Manatwork
A barra de título de uma janela é desenhada e gerenciada pelo gerenciador de janelas, não pelos aplicativos. Os gerenciadores de janelas decidem coisas como exibir uma barra de título com base nas dicas do ICCCM ou em seus derivados modernos. Eu não acho que você possa controlar isso de uma maneira independente do aplicativo e do gerenciador de janelas.
Gilles 'SO- stop be evil'

Respostas:

10

Wmctrl

Este é o tipo de relacionados, mas você pode mudar o texto na barra de título desta aplicação mistério usando o comando wmctrl.

Exemplo

Digamos que eu executei o aplicativo gvim. Aparece da seguinte maneira quando listo as janelas abertas.

$  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

Portanto, a gvimjanela tem o título "[No Name] - GVIM", podemos mudar seu nome assim, novamente usando wmctrl:

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

Executando o -lswitch novamente, podemos ver o novo nome:

$ 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 as decorações

Existe este método discutido nas perguntas e respostas do AskUbuntu intitulado: Posso ocultar a barra de título do MPlayer no gnome? .

Havia essa essência do Python - window-toggle-decorations.py que parecia fazer o que você queria. Pode ser modificável para atender às suas necessidades.

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
fonte
Uau ! funcionou ! Deve ser executado desta maneira: python2 ./toggle.py . Não vi algo assim e pelo menos agora tenho uma pista para a resposta. Obrigado homem esperto (slm).
Camarada Esponja
Eu testei com uma chamada de sistema ("python2 ./toggle.py") e funcionou também, no entanto, tenho certeza de que seu código é conversível em C ++.
Camarada Esponja
O estranho é que eu tenho que chamá-lo duas vezes para efetuar !!! sistema ("python2 ./toggle.py"); sistema ("python2 ./toggle.py"); é ridículo ! mas funciona para mim e é suficiente: D
Sponge Camarada
6

Existe um programa C simples que funciona, originalmente desenvolvido por Muktupavels .

Eu uso e funciona muito bem. Está aqui

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

Permite ativar e desativar a barra de título para qualquer aplicativo.

Para usá-lo, basta ter a libx11-devbiblioteca instalada

sudo apt-get install -y libx11-dev

então compile o código usando este comando

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

e execute-o com este comando

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

onde $(...)captura o --idseu aplicativo usando wmctrl.

Eu não fiz esse ótimo trabalho e não aceito nenhum crédito por ele.

Foi feito por muktupavels.

Kes
fonte
a única coisa que funcionou no Unity / compiz thx!
Aquário Potência