Wie*_*eke 5 command-line phone system-settings ubuntu-touch
我正在寻找一种方法来在夜间将我的 Ubuntu 手机自动设置为静音模式并在早上自动关闭静音模式(我一直忘记自己关闭它)。我认为这可以通过某种 cron 工作来完成,但为了做到这一点,我需要某种方式从命令行更改电话系统设置,但我无法弄清楚。
gsettings 和 dconf 似乎都有与静默模式相关的设置,但这些设置的值似乎与实际设置完全无关。使用 gsettings/dconf 更改设置不会反映在系统设置中,而在系统设置中更改设置不会反映在 gsettings/dconf 中。所以我正在寻找一种从命令行更改系统设置的方法。
谢谢
显然 dbus 是一个可以用来更改设置的东西。简而言之,以下 python 脚本在以 root 身份运行时会关闭静默模式:
import dbus
session = dbus.SystemBus()
proxy = session.get_object('org.freedesktop.Accounts','/org/freedesktop/Accounts/User#####')
interface = dbus.Interface(proxy,'org.freedesktop.DBus.Properties')
interface.Set('com.ubuntu.touch.AccountsService.Sound','SilentMode',False)
Run Code Online (Sandbox Code Playgroud)
稍长的版本是:
qdbus --system
Run Code Online (Sandbox Code Playgroud)
似乎列出了与系统 dbus 相关的所有服务。
qdbus --system org.freedesktop.Accounts
Run Code Online (Sandbox Code Playgroud)
似乎列出了与该服务关联的路径。
qdbus --system org.freedesktop.Accounts /org/freedesktop/Accounts/User#####
Run Code Online (Sandbox Code Playgroud)
似乎列出了与该路径(在本例中为特定用户的路径)关联的所有方法和属性。这有以下相关方法:
method QDBusVariant org.freedesktop.DBus.Properties.Get(QString interface_name, QString property_name)
method QVariantMap org.freedesktop.DBus.Properties.GetAll(QString interface_name)
method void org.freedesktop.DBus.Properties.Set(QString interface_name, QString property_name, QDBusVariant value)
method QString org.freedesktop.DBus.Introspectable.Introspect()
Run Code Online (Sandbox Code Playgroud)
这里的 GetAll 和 Set 方法需要一个接口名称,我们可以通过调用 Introspect 函数来找到该名称,如下所示:
qdbus --system org.freedesktop.Accounts /org/freedesktop/Accounts/User##### org.freedesktop.DBus.Introspectable.Introspect
Run Code Online (Sandbox Code Playgroud)
它将类似 xml 的文档打印到屏幕上,显示接口定义。获取静音模式值的方法如下:
qdbus --system org.freedesktop.Accounts /org/freedesktop/Accounts/User##### org.freedesktop.DBus.Properties.Get com.ubuntu.touch.AccountsService.Sound SilentMode
Run Code Online (Sandbox Code Playgroud)
现在的问题是我不知道如何格式化它,因此qdbus将参数解释为布尔值,这就是为什么我最终使用 python 作为解决方法。
| 归档时间: |
|
| 查看次数: |
514 次 |
| 最近记录: |