Ubuntu Toque em alterar as configurações do sistema a partir da linha de comando (modo silencioso especificamente)?

5

Estou procurando uma maneira de configurar automaticamente o meu Ubuntu Phone para o modo silencioso durante a noite e desligar automaticamente o modo silencioso pela manhã (sempre esqueço de desligá-lo). Eu acho que isso poderia ser feito através de algum tipo de cron job, mas para fazer isso eu preciso de alguma maneira de mudar as configurações do sistema de telefones a partir da linha de comando e não consigo descobrir.

Tanto o gsettings quanto o dconf parecem ter configurações relacionadas ao modo silencioso, mas o valor dessas configurações não parece estar relacionado às configurações reais. Alterar as configurações usando gsettings / dconf não é refletido nas configurações do sistema e alterá-lo nas configurações do sistema não é refletido em gsettings / dconf. Então, estou procurando uma maneira de alterar as configurações do sistema na linha de comando.

Obrigado

    
por Wieke 18.07.2016 / 00:06

2 respostas

1

Solução (ish)

Aparentemente dbus é algo que pode ser usado para alterar configurações. A versão curta é que o seguinte script python, quando executado como root, desativa o modo silencioso:

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)

A versão ligeiramente mais longa é:

qdbus --system

Parece listar todos os serviços associados ao sistema dbus.

qdbus --system org.freedesktop.Accounts

Parece listar os caminhos associados a esse serviço.

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

Parece listar todos os métodos e propriedades associados a esse caminho (nesse caso, um caminho para um usuário específico). Isto teve os seguintes métodos relevantes:

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

Aqui os métodos GetAll e Set requerem um nome de interface que podemos descobrir chamando a função Introspect assim:

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

Que imprime um documento semelhante ao xml na tela que mostra as definições da interface. Obter o valor do modo silencioso é feito da seguinte forma:

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

O problema agora é que eu não consegui descobrir como formatá-lo, então qdbus interpreta um argumento como um valor booleano, e é por isso que acabei usando o python como solução alternativa.

    
por Wieke 20.07.2016 / 01:57
1

Parece funcionar (com o OTA-11, conecte-se com o SSH):

amixer -q -D pulse sset Master toggle

Editar: de link

    
por Silvus 19.07.2016 / 22:58