3

我正在尝试编写一个脚本,如果未运行则启动应用程序,如果在当前活动中已经可见,则激活窗口。

使用xdotoolorwmctrl我可以获取窗口列表并激活它们。如果它们没有打开,那么我可以启动它们。但问题来自 KDE 活动。这些工具列出所有活动的窗口,即使它们在当前活动中不可见。

我正在经历各种 qdbus 方法,但没有找到任何接近的东西。

有没有人创建过这样的脚本?如何获得有关活动的 Windows 可见性?

编辑:如下图所示,我能够看到窗口附加到的活动 ID。但我无法找到以编程方式获取它的任何方法。

在此处输入图像描述

4

1 回答 1

0

kde 论坛中给出了另一种方法。但它是否可以帮助解决您的问题尚不完全清楚。

建议如下:

在活动级别上,您可以使用 URI > 活动关系并查询 dbus 以进行进一步的脚本编写。例如:

  1. 将目录链接到 dolphin 中的活动。
  2. 将应用程序“dolphin-directive”添加到应用程序启动器并使其运行自定义脚本以有条件地启动 dolphin 实例。
  3. 将“海豚指令”设置为默认文件管理器

通过文件关联设置,每种文件类型都可以使用类似的工作流程

据我通过实验发现,无法通过 ActivityManager 将窗口链接到活动和查询关系。我猜想multiple-screen-workspace-uri-activity-window-rule架构应该设置工作流以更全面的方式解决问题。但希望有人可以在这里给出更好的答案。

我写了一个脚本来正则表达式检查整个会话总线树的相关和有用的方法。您可以简单地使用它./query-dbus.py --pattern "^.*activit.*$"。所以答案是正在进行中。

编辑:一些服务确实有方法isMonitorActivityisOnActivity

"org.kde.konsole": {
    "/Sessions/1": {
      "org.kde.konsole.Session": {
          "method": [
            "setMonitorActivity",
            "isMonitorActivity"
          ]
      }
    }
}
    

"org.kde.kate": {
    "/MainApplication": {
      "org.kde.Kate.Application": {
          "method": [
            "isOnActivity"
          ]
      }
    }
  }
}

您是否已经提交了功能请求?

于 2020-12-17T13:16:45.590 回答