Ubuntu Touch 从命令行更改系统设置(特别是静默模式)?

Ubuntu Touch 从命令行更改系统设置(特别是静默模式)?

我正在寻找一种方法,在晚上自动将我的 Ubuntu 手机设置为静音模式,并在早上自动关闭静音模式(我总是忘记自己关闭它)。我认为这可以通过某种 cron 作业来完成,但为了做到这一点,我需要某种从命令行更改手机系统设置的方法,但我不知道该怎么做。

gsettings 和 dconf 似乎都有与静音模式相关的设置,但这些设置的值似乎与实际设置完全无关。使用 gsettings/dconf 更改设置不会反映在系统设置中,在系统设置中更改设置也不会反映在 gsettings/dconf 中。所以我正在寻找一种从命令行更改系统设置的方法。

谢谢

答案1

它似乎可以工作(使用 OTA-11,通过 SSH 连接):

amixer -q -D pulse sset Master toggle

編輯:來自https://askubuntu.com/a/444183

答案2

解决方案

显然,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)

稍长一点的版本是:

qdbus --system

似乎列出了与系统 dbus 相关的所有服务。

qdbus --system org.freedesktop.Accounts

似乎列出了与该服务相关的路径。

qdbus --system org.freedesktop.Accounts /org/freedesktop/Accounts/User#####

似乎列出了与该路径(在本例中是特定用户的路径)相关的所有方法和属性。它具有以下相关方法:

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()

这里,GetAll 和 Set 方法需要一个接口名称,我们可以通过调用 Introspect 函数来找到它,如下所示:

qdbus --system org.freedesktop.Accounts /org/freedesktop/Accounts/User##### org.freedesktop.DBus.Introspectable.Introspect

它将类似 xml 的文档打印到屏幕上,显示接口定义。获取静默模式值的操作如下:

qdbus --system org.freedesktop.Accounts /org/freedesktop/Accounts/User##### org.freedesktop.DBus.Properties.Get com.ubuntu.touch.AccountsService.Sound SilentMode

现在的问题是我无法弄清楚如何格式化它,以便qdbus将参数解释为布尔值,这就是我最终使用 python 作为解决方法的原因。

相关内容