qdbus 和 wmctrl

近来想通过F12来控制konsole的呼出以及最小化,试了khotkeys之后,发现只能呼出,没法最小化,于是没办法只能自己想办法了。

X window有一个控制工具叫wmctrl, 可以通过窗口的字符串或WM_CLASS来控制窗口,因此在此处使用它就可以呼出窗口并使焦点位于该窗口了。代码是:

wmctrl -a konsole -x

-a是用来激活窗口,默认接受一个字符串,这个字符串可以是窗口的标题等。
-x指示将-a后的字符串解析为一个WM_CLASS,
命令的结果是以找到该窗口类的第一个窗口置顶且使焦点位于该窗口。

kde的窗口一般都有一些属性和方法可以通过qdbus来调用,这些方法与属性可以用qdbusviewer来查看。在这里,我们调用konsole的最小化方法使窗口最小化,代码:

qdbus org.kde.konsole /konsole/MainWindow_1 com.trolltech.Qt.QWidget.showMinimized

或者简单的来写也行:

qdbus org.kde.konsole /konsole/MainWindow_1 showMinimized

这样可以使第一个konsole的窗口最小化。

完整的代码:

#!/bin/bash
# 此脚本通过qdbus命令,检测一个konsole窗口的状态,并最小化或激活,这个脚本的用途之一是定义kde快捷键。
# 它只针对第一个konsole的实例窗口
# 运行方式:直接执行即可
 
# 通过qdbus获取第一个konsole窗口是否激活
if [[ `qdbus org.kde.konsole /konsole/MainWindow_1 com.trolltech.Qt.QWidget.isActiveWindow` == 'true' ]]
then
    # 使其最小化
    qdbus org.kde.konsole /konsole/MainWindow_1 com.trolltech.Qt.QWidget.showMinimized
else
    # 激活konsole窗口
    wmctrl -a konsole -x
fi

有了这个shell脚本后,就可以在kde系统设置里绑定执行这个脚本,并设置快捷键为F12,然后就可以最小化或呼出konsole了,这个脚本当然可以更改以适应其他窗口的。

This entry was posted in linux, 原创 and tagged . Bookmark the permalink.

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">