删除另一个程序的标题栏

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)


Kes*_*Kes 7

有一个简单的 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 完成的。

  • 这是我在 xfce/xubuntu for vlc 上工作的唯一事情 (2认同)