用于重新设置应用程序窗口父级(不带窗口框架)的包装程序

用于重新设置应用程序窗口父级(不带窗口框架)的包装程序

我正在使用Cinnamon桌面环境(在 Debian Sid 上),其窗口管理器没有选项,可以这么说,取消装饰应用程序窗口。

正如我看到的,许多程序设法告诉上面的窗口管理器,它们将自己提供框架和其他东西(例如,谷歌浏览器),我想知道它是否存在,或者可以编写一个像这样调用的包装器

$ noframes mupdf my16:9slides.pdf

启动后,告诉窗口管理器不要担心框架等,启动我的应用程序并重新设置它的父级。

(也许是边际性的)好处是,在我的示例中,窗口纵横比将更近似等于 16:9,并且在使用缩放到 1/4 屏幕功能时,窗口几乎完全适合可用空间。

PS:来自我的.twmrc

NoTitle {"mupdf" ...}

答案1

也许您可以使用以下代码禁用/启用标题栏:

#!/usr/bin/python2
from gtk.gdk import *

w=window_foreign_new((get_default_root_window().property_get("_NET_ACTIVE_WINDOW")[2][0])

if w.get_decorations() == 0 :
    w.set_decorations(DECOR_ALL)
else:
    w.set_decorations(0)

window_process_all_updates()

它来自这个要点。这是基于这篇关于删除特定 WM 上的装饰
正如文章中提到的,您可以创建一个快捷方式来删除您感兴趣的窗口的装饰。

在 Cinnamon 键盘快捷键中,将一个序列(我使用Super+U)绑定到该脚本,前提是它是可执行的并且位于您的PATH.在活动窗口上,点击序列,它将删除装饰。再敲一下它就会回来。

答案2

我没有安装来测试这一点,但似乎可能有一个“Cinnamon Maximus”扩展,可以从全屏窗口中删除装饰,如果您的应用程序可以全屏显示,尽管有边框。

或者,您可以尝试一些激进的方法,例如设置窗口的 overrideredirect 标志。这要求窗口管理器不管理该窗口。然后将窗口重新设置为根窗口。请注意,您可能无法退出此全屏模式,因此请确保您可以以某种方式退出应用程序。

例如,运行 xlogo,获取根窗口 id,然后使用 xdotool 更改 xlogo 设置:

$ xlogo &
$ xwininfo -root | grep id:
xwininfo: Window id: 0xc1 (the root window) (has no name)
$ xdotool search xlogo  set_window --overrideredirect 1  windowreparent 0xc1

相关内容