Spo*_*ade 10 scripting x11 window
我开发了一个带有 glut 库的程序,想删除它的标题栏。
由于无法从 glut 库中删除标题栏,因此我必须使用外部工具删除其标题栏。
关于可以在Windows操作系统中操作其他窗口装饰的事实,我希望找到针对此障碍的类似补救措施。
您对如何使用脚本或简单的 X11 应用程序删除特定窗口标题栏有任何想法吗?
slm*_*slm 12
这有点相关,但您可以使用命令更改此神秘应用程序标题栏中的文本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
Run Code Online (Sandbox Code Playgroud)
所以gvim
窗口的标题是“[No Name] - GVIM”,我们可以像这样更改它的名称,再次使用wmctrl
:
$ wmctrl -r "[No Name] - GVIM" -N "new name"
Run Code Online (Sandbox Code Playgroud)
-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
Run Code Online (Sandbox Code Playgroud)
在 AskUbuntu 问答中讨论了这种方法,标题为:我可以在 gnome 中隐藏 MPlayer 的标题栏吗?.
Python 的这个要点 - window-toggle-decorations.py看起来可以做你想做的事情。它可能可以修改以满足您的需要。
窗口切换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
Run Code Online (Sandbox Code Playgroud)
有一个简单的 C 程序可以工作,最初由Muktupavels开发。
我使用它并且效果很好。它在这里
https://gist.github.com/cat-in-136/96ee8e96e81e0cc763d085ed697fe193
它允许您为任何给定的应用程序打开和关闭标题栏。
要使用它,只需确保libx11-dev
安装了库
sudo apt-get install -y libx11-dev
Run Code Online (Sandbox Code Playgroud)
然后使用此命令编译代码
gcc toggle-decorations.c -Wall -o toggle-decorations `pkg-config --cflags --libs x11`
Run Code Online (Sandbox Code Playgroud)
并使用此命令运行它
./toggle-decorations $(wmctrl -lx | grep -E "name_of_your_application_here" | grep -oE "[0-9a-z]{10}")
Run Code Online (Sandbox Code Playgroud)
where使用 wmctrl$(...)
捕获--id
您的应用程序。
我没有完成这项伟大的工作,也没有因此受到赞扬。
它是由 muktupavels 完成的。