#pipe-wire #dbus #linux #xdg #action #xdg-desktop-portal

app xdp-hook

当其他应用程序使用xdg-desktop-portal时触发用户配置的操作(https://github.com/flatpak/xdg-desktop-portal)

3个版本

0.1.3 2022年4月23日
0.1.2 2022年4月10日
0.1.1 2022年4月9日

#300多媒体

GPL-3.0-only

41KB
989

xdp-hook-rs 状态 Gitlab流水线状态 Crates.io docs.rs

当其他应用程序使用xdg-desktop-portal时触发用户配置的操作(https://github.com/flatpak/xdg-desktop-portal

是什么?

  • xdg-desktop-portal 是建立在 dbuspipewire 之上的一种机制,当Linux应用程序无法直接访问敏感的系统功能时(或者当需要显式用户同意时)使用。

  • 我们可以使用 dbus-monitor 来观察此类门户的协商和使用,但它并不方便创建活动会话的全景视图,可能也不是触发与门户相关的自动化等的最简单方式。

  • xdp-hook 的目的不是提供像Android上的隐私指标,而是通过响应门户使用并执行用户配置的任务(例如执行脚本)来使其他人为用户提供此类功能变得更容易。

  • 此项目依赖于Linux,并提供Linux系统的功能(不支持其他环境)。

安装

通过 https://crates.io/ 使用 cargo 安装

  • 确保您有一个工作的Rust工具链:https://rustup.rs/

  • 运行 cargo install xdp-hook

配置

  • 创建 ~/.config/xdp-hook/config.toml(请参阅 示例配置

钩子环境

xdp-hook 运行您配置的钩子时,它会尝试设置某些环境变量以公开更多信息

  • XDP_HOOK_APP_ID:启动门户会话的(类似flatpak的应用)进程的名称(如果有的话)
  • XDP_HOOK_PROCESS_COMMAND:启动门户会话的进程的名称
  • XDP_HOOK_PROCESS_ID:启动门户会话的进程的进程ID

请注意,这些都是“尽力而为”的,当信息不可用时,这些可能为空字符串

特性/路线图

  • 连接到用户的dbus会话
  • 识别并记录与门户请求相关的通用消息
  • 跟踪长时间门户会话的打开/关闭(例如,位置、屏幕共享、远程桌面)
  • 跟踪长时间门户会话的打开/关闭(例如,抑制)
  • 读取配置文件 ~/.config/xdp-hook/config.toml
  • 在门户请求/会话事件上执行用户配置的任务,例如执行脚本
  • 用户范围的systemd单元文件,方便启动
  • 正确区分门户(例如,Chrome和Firefox都使用jitsi)的并发客户端:https://gitlab.com/jokeyrhyme/xdp-hook-rs/-/issues/3
  • 识别启动门户请求的应用/进程:https://gitlab.com/jokeyrhyme/xdp-hook-rs/-/issues/3
  • 识别处理门户请求的门户实现(不可能?)

另请参阅

依赖项

~15–31MB
~438K SLoC