我如何从终端查询 GNOME 密钥环是否已解锁?我查看了这个问题询问如何锁定密钥环,其中一个答案显示了如何使用 DBus 执行此操作。我现在的问题是是否可以做类似的事情,但只是查询状态。
我问这个问题是为了有一个小状态图标显示钥匙圈是否已解锁。
答案1
每个秘密集合(即密钥环)都有一个“已锁定”属性。您可以通过在 org.freedesktop.DBus.Properties 接口上调用 Get() 来检索对象属性:
$busctl --用户自省 org.freedesktop.secrets \ /org/freedesktop/secrets/collection/login 名称 类型 签名 结果/值 org.freedesktop.DBus.Properties 接口-- .Get 方法 ss v org.freedesktop.Secret.Collection 接口-- .Label 属性“登录” .Locked 属性 b false $busctl --用户获取属性 org.freedesktop.secrets \ /org/freedesktop/secrets/collection/登录 \ org.freedesktop.Secret.Collection 已锁定 b 错误
$gdbus 内省 -e -d org.freedesktop.secrets \ -o /org/freedesktop/secrets/collection/login 节点 /org/freedesktop/secrets/collection/login { 接口 org.freedesktop.DBus.Properties { 方法: 获取(在 s 接口名称中, 在 s 属性名称中, 出v值); }; 接口 org.freedesktop.Secret.Collection { 特性: 只读b锁定=false; }; }; $gdbus 调用 -e -d org.freedesktop.secrets \ -o /org/freedesktop/secrets/collection/login \ -m org.freedesktop.DBus.属性.获取 \ org.freedesktop.Secret.Collection 已锁定 (<false>,)
您还可以通过PropertiesChanged
信号接收属性更改通知(取决于编程语言,您的 D-Bus 库可能会为此提供一个包装器)。