Preciso automatizar a configuração da área de trabalho via Puppet, terminal virtual ou ssh.
Infelizmente, a invocação de gsettings
via ssh ou terminal virtual fornece:
gsettings set org.compiz.core:/org/compiz/profiles/unity/plugins/core/ hsize "4"
(process:29520): dconf-WARNING **: failed to commit changes to dconf: Cannot autolaunch D-Bus without X11 $DISPLAY
Quando eu definir o $DISPLAY
com export DISPLAY=:0.0
ele dá outro erro:
(process:29862): dconf-WARNING **: failed to commit changes to dconf: Could not connect: Connection refused
O que eu posso fazer?
remote-access
dconf
gsettings
puppet
remote-login
Adam Ryczkowski
fonte
fonte
DBUS_SESSION_BUS_ADDRESS
, mas tambémXDG_RUNTIME_DIR
.Respostas:
A chave é definir a
DBUS_SESSION_BUS_ADDRESS
variável de ambiente.Por esta discussão eu encontrei o seguinte script, que ajuda a obter o valor correto da variável. Requer o nome do processo, que está sendo executado na área de trabalho, na qual queremos alterar as configurações do dbus. (Pode haver mais de uma sessão gráfica em execução em paralelo). Vamos chamá-lo
discover_session_bus_address.sh
Com esse script, podemos fazer o seguinte, assumindo que o
unity
processo esteja em execução na área de trabalho, na qual queremos aplicar nossas configurações:E as coisas devem funcionar bem.
fonte
Eu estava tendo esse mesmo problema enquanto tentava fazer alterações de configurações para uma imagem vaga via SSH durante o provisionamento.
Esta solução /ubuntu//a/326773 fez o truque para mim, sem pescar a conexão ativa e tentando falsificar o ambiente. YMMV ...
fonte
Eu tenho um script POST-Install que define meu gsetting. Como eu executo o script como sudo, o EUID é 0, portanto, tenho que encontrar o $ RUID (Real User ID).
aqui está a minha abordagem:
fonte
$USER
variável de ambiente e seu UID na$UID
variável. Ao executarsudo
, eles estão nas variáveis$SUDO_USER
e$SUDO_UID
. Dito isto, por que você faria issosudo
em primeiro lugar? Usarsudo -u $YOUR_USER
é como não usarsudo
nada. Por fim, seuwho | awk . . .
comando não obtém seu ID, ele imprime todos os IDs de todos os usuários atualmente conectados ao sistema.