我需要运行同一程序的两个实例,并且每个实例具有不同的 Openbox 属性。
假设我想运行两个 Thunderbird 实例。即使我创建两个符号链接,即
/usr/bin/icedove-1
/usr/bin/icedove-2
两个实例仍然具有相同的名称和标题:
$ obxprop | egrep '_OB_APP'
_OB_APP_TYPE(UTF8_STRING) = "normal"
_OB_APP_TITLE(UTF8_STRING) = "Icedove Mail/News"
_OB_APP_CLASS(UTF8_STRING) = "Icedove"
_OB_APP_NAME(UTF8_STRING) = "Mail"
_OB_APP_ROLE(UTF8_STRING) = "3pane"
如何区分同一程序的两个实例?
我可以用一个参数启动一个程序,这会改变TITLE
或NAME
吗?
答案1
Thunderbird 作为 GTK+ 应用程序,支持--class
命令行选项设置WM_CLASS
属性:
$thunderbird --class TEST &
$obxprop | grep 'OB_APP'
_OB_APP_TYPE(UTF8_STRING) = "normal"
_OB_APP_TITLE(UTF8_STRING) = "Mozilla Thunderbird"
_OB_APP_GROUP_CLASS(UTF8_STRING) = "TEST"
_OB_APP_GROUP_NAME(UTF8_STRING) = "thunderbird"
_OB_APP_CLASS(UTF8_STRING) = "TEST"
_OB_APP_NAME(UTF8_STRING) = "Mail"
_OB_APP_ROLE(UTF8_STRING) = "3pane"
Openbox 支持每个应用程序设置由窗口类别决定在 中的条目class
上使用该属性。您可以使用不同的命令行选项启动两个 Thunderbird 副本,并按您提供的类应用窗口管理器设置。<application>
rc.xml
其他 GTK+ 应用程序通常支持相同的行为。