dbus-send如何从zathura获取页数?
Dbus-send how to get the number of pages from zathura?
我正在尝试使用 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
值吗?
在与 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 文档中的总页数)。
使用 busctl
而不是 dbus-send
可能更容易做到这一点。无论哪种方式,对于大多数 D-Bus 情况,您都需要了解四位信息。
- 巴士名称:
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
要在可能在大多数机器上 运行ning 的服务上尝试此操作:
- 巴士名称:
org.freedesktop.systemd1
- 路径:
/org/freedesktop/systemd1
- 接口:
org.freedesktop.systemd1.Manager
- 属性:
Architecture
然后 运行 它与两个实用程序:
dbus-send
$ 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"
我正在尝试使用 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
值吗?
在与 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 文档中的总页数)。
使用 busctl
而不是 dbus-send
可能更容易做到这一点。无论哪种方式,对于大多数 D-Bus 情况,您都需要了解四位信息。
- 巴士名称:
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
要在可能在大多数机器上 运行ning 的服务上尝试此操作:
- 巴士名称:
org.freedesktop.systemd1
- 路径:
/org/freedesktop/systemd1
- 接口:
org.freedesktop.systemd1.Manager
- 属性:
Architecture
然后 运行 它与两个实用程序:
dbus-send
$ 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"