linux - 使用 xinit 控制非 x 实用程序的放置

标签 linux x11

刚开始使用 linux 编程,特别是 X Windows。我正在尝试制作一个应用程序,我在象限 View 中启动 4 个不同的程序(例如 VLC、网络浏览器等)。现在我不需要(或想要)位于顶部的窗口管理器,只需要运行最基本的应用程序。

我可以使用 -geometry 命令通过 x 实用程序(如时钟等)执行此操作。

我的问题是,如何控制这些其他应用程序的放置?

最佳答案

解决方案一

devilspie是这方面的完美工具。例如:

+--------+------------------------+
| Pidgin |                        |
| Buddy  |        Pidgin          |
| List   |     Conversation       |
|        |                        |
|        +------------------------+
|        |                        |
|        |        Xchat           |
|        |                        |
|        |                        |
+--------+------------------------+

可以通过以下配置完成。

(if (is (application_name) "Pidgin")
        (begin
                (if (is (window_role) "buddy_list")
                        (begin
                                (undecorate)
                                (skip_tasklist)
                                (geometry "199x767+0+0")
                        )
                )
                (if (is (window_role) "conversation")
                        (begin
                                (undecorate)
                                (geometry "822x400+201+0")
                        )
                )
        )
)

方案二

启动所需的应用程序,然后使用 wmctrl将窗口移动并调整到所需位置。您可以使用 -r 参数来实现这一点。

  -r <WIN> -e <MVARG>  Resize and move the window around the desktop.

Devilspie 体验(更新)

按照评论中的要求。我一直在使用 devilspie,它真的很棒并且可以与我使用过的每个窗口管理器一起使用 gnome、xfce、kde、fvwm。我整理了一个有效的 devilspie 配置,它将完成您想要的部分工作。您可以将此文件放在 ~/.devilspie/devilspie.ds 中。附有一张截图,显示了这个配置文件的结果。我找到的有关 devilspie 的最佳文档在 foosel.org 上.我强烈建议您使用它。在测试 devilspie 时,在终端的前台运行它。确保没有其他 devilspie 进程在运行,如果有,请杀死它们。每次更改配置并希望查看结果时,在 devilspie 上按 CTRL+C 并再次运行它。其他一些需要注意的事情如果 vlc 在关闭时最大化,那么它将再次打开最大化并且将忽略 devilspie 调整大小和移动的请求。所以当你关闭它时,确保 vlc 没有最大化。您也可以调用 unmaximize,然后执行 geometry 调用。

(debug)
(if
    (is (application_name) "VLC media player")
    (geometry "500x300+0+0")
)
(if
    (is (application_name) "xterm")
    (geometry "300x300+510+0")
)
(focus)

截图 enter image description here

关于linux - 使用 xinit 控制非 x 实用程序的放置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13518129/

相关文章:

linux - 如果我通过 ssh 执行命令,则无法获得正确的输出

c++ X11全局改变光标形状

macos - Xt 错误 : Can't open display, 如果使用默认显示

events - 我从哪里开始制作 linux 输入法?

linux - 如何使用 shell 脚本验证用户密码?

java - Eclipse 是否支持 Linux 桌面应用程序开发?

linux - 使用 bash move 多个序列文件

x11 - 如何知道哪个窗口具有焦点以及如何更改它?

linux - 如何在远程机器上打开 x-window 应用程序并使该窗口显示在我的本地机器上

linux - 从每行中去掉 ^A 个字符