首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用xinit控制非x实用程序的放置

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

Stack Overflow用户
提问于 2012-11-23 02:14:05
回答 1查看 328关注 0票数 1

只是开始使用linux编程和具体的X Windows。我正在尝试制作一个应用程序,我在一个象限视图中启动4个不同的程序(如VLC,web浏览器等)。现在,我不需要(或想要)一个窗口管理器坐在顶端,只需要运行基本的应用程序。

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-23 02:18:03

解决方案1

devilspie是实现这一目标的完美工具。举个例子:

代码语言:javascript
复制
+--------+------------------------+
| Pidgin |                        |
| Buddy  |        Pidgin          |
| List   |     Conversation       |
|        |                        |
|        +------------------------+
|        |                        |
|        |        Xchat           |
|        |                        |
|        |                        |
+--------+------------------------+

可以通过以下配置来完成。

代码语言:javascript
复制
(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参数来实现这一点。

代码语言:javascript
复制
  -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调用。

代码语言:javascript
复制
(debug)
(if
    (is (application_name) "VLC media player")
    (geometry "500x300+0+0")
)
(if
    (is (application_name) "xterm")
    (geometry "300x300+510+0")
)
(focus)

截图

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13518129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档