web-dev-qa-db-fra.com

Ubuntu Touch modifie les paramètres du système à partir de la ligne de commande (mode silencieux en particulier)?

Je cherche un moyen de régler automatiquement mon téléphone Ubuntu en mode silencieux pendant la nuit et de désactiver automatiquement le mode silencieux le matin (j'oublie toujours de l'éteindre moi-même). Je suppose que cela pourrait être fait par une sorte de travail cron, mais pour ce faire, j'ai besoin d'un moyen de changer les paramètres du système du téléphone à partir de la ligne de commande et je ne peux pas le comprendre.

Gsettings et dconf semblent tous deux avoir des paramètres liés au mode silencieux, mais la valeur de ces paramètres ne semble pas du tout être liée aux paramètres réels. La modification des paramètres à l'aide de gsettings/dconf n'est pas reflétée dans les paramètres système et sa modification dans les paramètres système ne se reflète pas dans gsettings/dconf. Je cherche donc un moyen de modifier les paramètres du système à partir de la ligne de commande.

Merci

5
Wieke

Solution (ish)

Apparemment, dbus est une chose qui pourrait être utilisée pour modifier les paramètres. La version courte indique que le script python suivant, lorsqu'il est exécuté en tant que root, désactive le mode silencieux:

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)

La version légèrement plus longue est:

qdbus --system

Semble lister tous les services associés au système dbus.

qdbus --system org.freedesktop.Accounts

Semble lister les chemins associés à ce service.

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

Semble lister toutes les méthodes et propriétés associées à ce chemin (dans ce cas, un chemin vers un utilisateur spécifique). Cela a eu les méthodes pertinentes suivantes:

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

Ici, les méthodes GetAll et Set nécessitent un nom d'interface que nous pouvons trouver en appelant la fonction Introspect de la manière suivante:

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

Ce qui imprime un document de type XML sur l’écran avec les définitions de l’interface. L'obtention de la valeur du mode silencieux se fait comme suit:

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

Le problème maintenant était que je ne savais pas comment le formater alors qdbus interprétait un argument comme une valeur booléenne, c'est pourquoi j'ai finalement utilisé python comme solution de contournement.

1
Wieke

Cela semble fonctionner (avec OTA-11, connectez-vous avec SSH):

amixer -q -D Pulse sset Master toggle

Edit: De https://askubuntu.com/a/44418

1
Silvus