gsettings e anacron

3

Eu escrevi um script para alterar meu plano de fundo da área de trabalho. Eu quero que este script seja executado em anacron porque eu frequentemente ligo meu computador à noite. Eu testei partes do script e acho que o problema é com essa linha:

DISPLAY=:0 GSETTINGS_BACKEND=dconf gsettings set org.gnome.desktop.background picture-uri '"file://'$wallPath'"'

( $wallPath é o caminho do papel de parede)

Ele muda meu papel de parede, mas não muda quando o anacron é executado. Eu percebi que isso era porque o anacron é executado como root (eu também verifico o dconf para root e meu usuário para verificar isso). Então eu criei uma maneira de executar o anacron como um usuário específico. Mas isso não funcionou.

Alguém pode me ajudar a descobrir uma maneira de executar as configurações como usuário? Eu tentei su (nome de usuário) -c 'sh run / this / script' sem sucesso. Eu encontrei algumas coisas sobre a exportação de algumas variáveis env dbus, mas estou tendo dificuldade em segui-lo.

    
por yoshi 31.12.2012 / 22:32

3 respostas

0

Como root, um simples sudo -u <username> <command> serve.

    
por user92200 31.12.2012 / 23:08
0

Você pode configurar uma instância anacron separada para ser executada no modo de usuário. Para isso, crie uma pasta .anacron em seu diretório pessoal e nela duas subpastas, etc e spool .

Em seguida, continue a criar um novo anacrontab na sua pasta ~/.anacron/etc recém-criada com o seguinte conteúdo:

# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

1   10    wallpaperchanger script.sh

onde script.sh é o caminho para o seu script (ou um one-liner, a sua escolha). Configure o intervall e o delay para seu prazer e salve o arquivo como anacrontab .

Em seguida, adicione a seguinte linha ao seu arquivo ~/.profile :

/usr/sbin/anacron -s -t ${HOME}/.anacron/etc/anacrontab -S ${HOME}/.anacron/spool

O Anacron deve estar ativo e funcionando no próximo login.

Observação : certifique-se de que $wallPath seja um caminho de arquivo sã, pois você não contabilizou espaços e caracteres especiais no seu script.

    
por Glutanimate 01.01.2013 / 01:30
0

Em vez de usar:

DISPLAY=:0 GSETTINGS_BACKEND=dconf gsettings set org.gnome.desktop.background picture-uri '"file://'$wallPath'"

tente usar:

PID=$(pgrep gnome-session)  # instead of 'gnome-session' it can be also used 'noutilus' or 'compiz' or the name of a process of a graphical program about that you are sure that is running after you log in the X session
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)
gsettings set org.gnome.desktop.background picture-uri '"file://'$wallPath'"

Veja a explicação na minha resposta aqui .

    
por Radu Rădeanu 29.10.2013 / 19:57