删除另一个程序的标题栏


10

我开发了一个带有glut库的程序,并希望删除其标题栏。

由于无法从glut库中删除标题栏,因此我必须使用外部工具删除其标题栏。

关于可以在Windows操作系统中操纵其他Windows装饰这一事实,我希望找到解决此障碍的类似方法。

您对如何使用脚本或简单的X11应用程序删除特定的窗口标题栏有任何想法吗?


窗户管理员也可以在一定程度上操纵窗户装饰。使用IceWM,您可以在〜/ .icewm / winoptions中放置一行yourWindow.dTitleBar: 0
manatwork 2013年

窗口的标题栏是由窗口管理器而非应用程序绘制和管理的。窗口管理器根据ICCCM提示或它们的现代派生决定是否显示标题栏。我认为您无法以独立于应用程序和窗口管理器的方式来控制它。
吉尔(Gilles)'所以

Answers:


10

网址

这是相关的,但是您可以使用命令更改此神秘应用程序标题栏中的文本wmctrl

说我运行了应用程序gvim。当我列出打开的窗口时,它显示如下。

$  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

因此gvim窗口的标题为“ [No Name]-GVIM”,我们可以像这样更改其名称,再次使用wmctrl

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

-l再次运行开关,我们可以看到新名称:

$ 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

所有装饰品

此AskUbuntu问答中讨论了这种方法,标题为:我可以在gnome中隐藏MPlayer的标题栏吗?

有这样的Python的要点- window-toggle-decorations.py,看起来做那种你想要的东西。它可以根据您的需要进行修改。

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 

哇 !有效 !应该以这种方式运行:python2 ./toggle.py。我还没有看到这样的东西,至少现在我有了答案的线索。谢谢聪明人(slm)。
海绵同志”

我通过system(“ python2 ./toggle.py”)调用对其进行了测试,它也可以工作,但是我确定其代码可以转换为C ++。
海绵同志”

奇怪的是,我必须两次调用才能生效!!! system(“ python2 ./toggle.py”); system(“ python2 ./toggle.py”); 太荒谬了!但它对我有用,就足够了:D
海绵同志

6

有一个简单的C程序可以正常工作,它最初是由Muktupavels开发的。

我使用它,效果很好。它在这里

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

它使您可以为任何给定的应用程序打开和关闭标题栏。

要使用它,只需确保已libx11-dev安装库

sudo apt-get install -y libx11-dev

然后使用此命令编译代码

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

并使用此命令运行

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

其中,$(...)捕获的--id使用wmctrl您的应用程序。

我没有做这项出色的工作,对此也没有任何评价。

这是由muktupavels完成的。


唯一适用于Unity / compiz thx的东西!
Aquarius Power
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.