Eureka!
Graças a uma combinação das respostas aqui, uma discussão sobre como definir o papel de parede da tela de login e uma discussão geral sobre a execução de um programa X a partir de outro console , finalmente consegui resolver isso.
Eu preciso definir a configuração como o usuário gdm
. Mas, simplesmente executando gsettings set ...
como gdm
falhará devido ao erro X11. Então, eu também preciso anexar o comando a uma sessão X.
Mas, sudo su gdm
não me deu o terminal como gdm
, como eu esperava, então eu finalmente criei um script de shell simples para executar os comandos que eu preciso.
setblank.sh:
#!/bin/sh
export DISPLAY=":0"
export XAUTHORITY="$1"
export XAUTHLOCALHOSTNAME="localhost"
gsettings set org.gnome.settings-daemon.plugins.power lid-close-ac-action "blank"
ou, mais geralmente ( gset.sh
):
#!/bin/sh
export DISPLAY=":0"
export XAUTHORITY="$1"
export XAUTHLOCALHOSTNAME="localhost"
gsettings set $2 $3 $4
Uma vez que eu tive isso, eu poderia chamar assim:
sudo sudo -u gdm gset.sh Xauthority-file org.gnome.settings-daemon.plugins.power lid-close-ac-action "blank"
E isso faz o truque!
Uma nota adicional sobre o arquivo Xauthority: Você precisará copiar o arquivo Xauthority do seu usuário para um arquivo que o gdm tenha permissão para ler. (Para um exemplo rápido e sujo: cp $XAUTHORITY /tmp/.Xauthority
e chown gdm:root /tmp/.Xauthority
)