【问题标题】:Borderless windows on LinuxLinux 上的无边界窗口
【发布时间】:2010-12-26 15:24:37
【问题描述】:

它们是在 Linux 上使特定窗口无边框的标准方法吗?我相信窗口边框是由您的窗口管理器绘制的,所以我可能只需要使用特定的窗口管理器(可以找到,我只需要知道哪个)......我希望是所有窗口管理器都可能遵循一些允许我以编程方式执行此操作的标准...

【问题讨论】:

    标签: linux window xlib borderless


    【解决方案1】:

    使用 Xlib 和旧的_MOTIF_WM_HINTS:

    struct MwmHints {
        unsigned long flags;
        unsigned long functions;
        unsigned long decorations;
        long input_mode;
        unsigned long status;
    };
    enum {
        MWM_HINTS_FUNCTIONS = (1L << 0),
        MWM_HINTS_DECORATIONS =  (1L << 1),
    
        MWM_FUNC_ALL = (1L << 0),
        MWM_FUNC_RESIZE = (1L << 1),
        MWM_FUNC_MOVE = (1L << 2),
        MWM_FUNC_MINIMIZE = (1L << 3),
        MWM_FUNC_MAXIMIZE = (1L << 4),
        MWM_FUNC_CLOSE = (1L << 5)
    };
    
    Atom mwmHintsProperty = XInternAtom(display, "_MOTIF_WM_HINTS", 0);
    struct MwmHints hints;
    hints.flags = MWM_HINTS_DECORATIONS;
    hints.decorations = 0;
    XChangeProperty(display, window, mwmHintsProperty, mwmHintsProperty, 32,
            PropModeReplace, (unsigned char *)&hints, 5);
    

    现在NetWM/EWMH hints 是首选,但据我所知,所有现代窗口管理器仍然支持这一点。

    【讨论】:

    • 太棒了... :) 正是我想要的,而且比我使用的更好,因为它更便携... :) 今天晚些时候我将使用它...
    • 我正在开发一个需要无边框窗口的应用程序,该窗口仍然可以使用 Alt 拖动快捷键调整大小。近 11 年后再看,EWMH 窗口类型(_NET_WM_WINDOW_TYPE_SPLASH、*_DOCK 等)似乎都没有改变窗口焦点和调整大小行为的相同效果,甚至谷歌浏览器也使用 Motif 提示删除其边框.因此,Motif 提示似乎仍然是 2020 年的发展方向。
    • 我还要指出XChangeProperty指定当format为32时,值是long的数组,而不是@987654327 @。这花费了我几个小时在 64 位系统上的调试时间。
    【解决方案2】:

    使用 GTK+,您可以致电 gtk_window_set_decorated()

    【讨论】:

    • 我不能使用它,因为我需要直接与窗口管理器交谈,但我接受它作为答案,因为对于大多数人来说,这可能是他们正在寻找的解决方案。跨度>
    【解决方案3】:

    在告别 Compiz“窗口规则”后,我发现 devilspie

    一个完全破解程序,适合想要精确控制窗口出现时的行为的怪胎和怪人。如果您希望所有 XChat 窗口都在桌面 3 上,在左下角,透明度为 40%,您可以这样做。

    我用它在我的桌面上有一个无边界、粘性、任务跳过的终端。

    还有一个 devilspie 2 使用 Lua 而不是 s 表达式,并声称维护得更好。

    https://live.gnome.org/DevilsPie http://www.burtonini.com/blog/computers/devilspie

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-15
      • 2011-06-05
      • 1970-01-01
      • 2013-01-09
      • 2014-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多