我正在尝试使用dbus-send从zathura获取页面总数(Zathura是一个PDF查看器)(见下图)。我不熟悉DBus (无论我如何努力学习它,我总是放弃)。
当我双击这个属性时,我可以使用一个GUI程序来查看numberofpages页面的总数量。
但是,我正在尝试使用dbus-send获取相同的信息。我在终端上试了以下几种方法:
dbus-send --session --dest=org.pwmt.zathura.PID-1057698 \
--print-reply org.pwmt.zathura.Properties.numberofpages上面的命令无效。
请告诉我如何构造一个dbus命令来获得numberofpages值吗?

发布于 2022-04-15 14:45:58
这可能更容易使用busctl而不是dbus-send。无论哪种方式,对于大多数D总线情况,您都需要知道四位信息。
org.pwmt.zathura.PID-1057698
/org/pwmt/zathura
org.pwmt.zathura
numberofpages
我希望你的情况是:
busctl --user get-property org.pwmt.zathura.PID-1057698 /org/pwmt/zathura org.pwmt.zathura numberofpages 若要在大多数机器上运行的服务上尝试此操作,请执行以下操作:
org.freedesktop.systemd1
/org/freedesktop/systemd1
org.freedesktop.systemd1.Manager
Architecture
并在这两个实用程序中运行它:
dbus-发送
$ dbus-send --session --print-reply --dest=org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.DBus.Properties.Get string:"org.freedesktop.systemd1.Manager" string:"Architecture"
method return time=1650033765.273653 sender=:1.0 -> destination=:1.176 serial=2677 reply_serial=2
variant string "x86-64"busctl
$ busctl --user get-property org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager Architecture
s "x86-64"发布于 2022-04-15 14:15:37
在使用dbus-send命令之后,我终于找到了正确的语法:
dbus-send --session --print-reply \
--dest=org.pwmt.zathura.PID-1057698\
/org/pwmt/zathura \
org.freedesktop.DBus.Properties.Get \
string:org.pwmt.zathura string:numberofpages该命令的输出是:
method return time=1650032068.076028 sender=:1.2273 -> destination=:1.2408 serial=79 reply_serial=2
variant uint32 46我可以使用grep来获得值46 (在我的例子中是PDF文档中的总页数)。
https://stackoverflow.com/questions/71884503
复制相似问题