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

时间:2012-11-22 18:14:05

标签: linux x11

刚开始使用linux编程和X Windows。我正在尝试创建一个应用程序,我在象限视图中启动4个不同的程序(如VLC,Web浏览器等)。现在,我不需要(或想要)一个坐在顶部的窗口管理器,只需要运行裸机应用程序。

我可以使用-geometry命令对x utils(如时钟等)执行此操作。

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

1 个答案:

答案 0 :(得分:1)

解决方案1 ​​

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")
                        )
                )
        )
)

解决方案2

启动所需的应用程序,然后使用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)

<强> screetshot enter image description here