您尚未登录。

#1 2013-04-26 14:47:15

jouyouyun
会员
注册时间: 2011-10-10
帖子: 268

如何激活某个指定程序的窗口?(已解决)

知道进程名,如:nautilus,其状态为最小化或者被其他窗口覆盖,现需要写一程序来激活它,使它成为当前窗口。这要怎么实现,请高手告之。谢谢!!!

最近编辑记录 jouyouyun (2013-04-27 21:47:48)

离线

#2 2013-04-26 15:13:10

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,919
个人网站

Re: 如何激活某个指定程序的窗口?(已解决)

xdotool search --name nautilus windowactivate

离线

#3 2013-04-26 17:11:37

jouyouyun
会员
注册时间: 2011-10-10
帖子: 268

Re: 如何激活某个指定程序的窗口?(已解决)

百合仙子 说:
xdotool search --name nautilus windowactivate

没有用啊,执行命令后没反应。我的桌面环境:gnome,窗口管理器:compiz

最近编辑记录 jouyouyun (2013-04-26 17:12:51)

离线

#4 2013-04-26 17:55:40

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,919
个人网站

Re: 如何激活某个指定程序的窗口?(已解决)

jouyouyun 说:
百合仙子 说:
xdotool search --name nautilus windowactivate

没有用啊,执行命令后没反应。我的桌面环境:gnome,窗口管理器:compiz

你的 nautilus 窗口在哪里?gnome 2 吗?

没有用是什么情况?没有切换到对应的「桌面」去?

离线

#5 2013-04-26 23:30:06

jouyouyun
会员
注册时间: 2011-10-10
帖子: 268

Re: 如何激活某个指定程序的窗口?(已解决)

窗口没有被设定为当前窗口,也未切换到对应的桌面。

离线

#6 2013-04-26 23:43:29

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,919
个人网站

Re: 如何激活某个指定程序的窗口?(已解决)

jouyouyun 说:

窗口没有被设定为当前窗口,也未切换到对应的桌面。

这就对了嘛……在 compiz 这种假桌面的 WM 里,你只有一个很大很大的桌面的哦。它被分成几块了,然后 compiz 骗你说它们是不同的桌面。所以,你把那个窗口移动到当前你看到的那部分区域再激活就可以了。

离线

#7 2013-04-27 09:07:39

jouyouyun
会员
注册时间: 2011-10-10
帖子: 268

Re: 如何激活某个指定程序的窗口?(已解决)

额,用 wmctrl -a name 可以激活窗口,不过它的参数是窗口的标题。

再问一下:怎么向指定进程发送按键事件?
例如:firefox,CTRL+T 是新建标签,怎么用程序向其发送 CTRL+T 事件,达到新建标签的效果?

最近编辑记录 jouyouyun (2013-04-27 09:10:16)

离线

#8 2013-04-27 13:28:14

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,919
个人网站

Re: 如何激活某个指定程序的窗口?(已解决)

jouyouyun 说:

额,用 wmctrl -a name 可以激活窗口,不过它的参数是窗口的标题。

再问一下:怎么向指定进程发送按键事件?
例如:firefox,CTRL+T 是新建标签,怎么用程序向其发送 CTRL+T 事件,达到新建标签的效果?

先找到窗口,然后再 xdotool key ....。
不过火狐新建标签页直接调用就可以:firefox about:blank

离线

#9 2013-04-27 21:45:49

jouyouyun
会员
注册时间: 2011-10-10
帖子: 268

Re: 如何激活某个指定程序的窗口?(已解决)

谢谢了!找到了一个方法,使用 xlib 库,先通过进程 id 获得此进程的 window id,然后在通过  window id 来激活窗口或发送按键事件。

离线

#10 2013-04-27 22:39:58

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,919
个人网站

Re: 如何激活某个指定程序的窗口?(已解决)

jouyouyun 说:

谢谢了!找到了一个方法,使用 xlib 库,先通过进程 id 获得此进程的 window id,然后在通过  window id 来激活窗口或发送按键事件。

xdotool 不是足够了么?

离线

#11 2013-04-28 10:05:22

jouyouyun
会员
注册时间: 2011-10-10
帖子: 268

Re: 如何激活某个指定程序的窗口?(已解决)

百合仙子 说:
jouyouyun 说:

谢谢了!找到了一个方法,使用 xlib 库,先通过进程 id 获得此进程的 window id,然后在通过  window id 来激活窗口或发送按键事件。

xdotool 不是足够了么?

不懂,不知道是不是我用法不对,使用 xdotool 没有效果。例如 firefox 现对其他窗口覆盖,想把它呼出,使用 xdotool search --name firefox windowactivate 没反应。

离线

#12 2013-04-28 12:01:52

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,919
个人网站

Re: 如何激活某个指定程序的窗口?(已解决)

jouyouyun 说:
百合仙子 说:
jouyouyun 说:

谢谢了!找到了一个方法,使用 xlib 库,先通过进程 id 获得此进程的 window id,然后在通过  window id 来激活窗口或发送按键事件。

xdotool 不是足够了么?

不懂,不知道是不是我用法不对,使用 xdotool 没有效果。例如 firefox 现对其他窗口覆盖,想把它呼出,使用 xdotool search --name firefox windowactivate 没反应。

囧,我没说明白。

xdotool 无法正确激活 compiz 管理的窗口。不过从进程 ID 得到窗口 ID 还是没问题的。

离线

#13 2013-04-30 14:31:22

jouyouyun
会员
注册时间: 2011-10-10
帖子: 268

Re: 如何激活某个指定程序的窗口?(已解决)

百合仙子 说:

xdotool 无法正确激活 compiz 管理的窗口。不过从进程 ID 得到窗口 ID 还是没问题的。

不知是何方法?

离线

#14 2013-04-30 18:54:41

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,919
个人网站

Re: 如何激活某个指定程序的窗口?(已解决)

jouyouyun 说:
百合仙子 说:

xdotool 无法正确激活 compiz 管理的窗口。不过从进程 ID 得到窗口 ID 还是没问题的。

不知是何方法?

man xdotool

离线

页脚