夜中にUbuntu Phoneを自動的にサイレントモードに設定し、午前中にサイレントモードを自動的にオフにする方法を探しています(自分でオフにするのを忘れずに)。これは、ある種の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)
少し長いバージョンは次のとおりです。
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 。