Altere o Gsetting com o script no Logout

2

Sistema:

Ubuntu Ringar Raring (13.04) da instalação nova.

Propósito:

Principal: Altere a configuração (papel de parede da área de trabalho) com o script no logout do usuário.

O que eu fiz: (leia atentamente)

Eu tento parar um aplicativo chamado variedade ( este ) no Logout que eu coloquei soluções alternativas para dentro. Variedade é um aplicativo de autostart, por isso só começou toda vez que eu estou logando. Variedade tem uma função on_quit() e force_quit_thread() que são chamados quando o processo do aplicativo parou. Então, eu adicionei minha linha de script python, que executa o meu script real ( normalize ). Quando eu tentei sair da variedade normalmente, faz o que eu quero! No entanto, quando o sistema me desconecta, qualquer processo que eu iniciei também deve ser interrompido. Mas então, percebi, não é. Então, eu não poderia usar desse jeito.

Isso me permite usar outra maneira de matar o processo de variedades manualmente quando eu sair. Eu tentei ~/.bash_logout (eu duvido, porque eu sei que o autostart não roda no bash); ~/etc/gdm/PostSession/Default (Mas eu não uso o gdm); ~/etc/lightdm/lightdm.conf (Este também não funciona! Por quê?); pam_script / pam-script (eu não sei como trabalhar com isso. Realmente diferente.)

Aconteceu:

Mas o problema surge quando tento fazer logout da minha conta. Não executa on_quit () nem force_quit_thread (). E o log que eu capturei de ~/nohup.out veja a última linha, aqui está você:

.... bla-bla ... [only see last line]
IOError: [Errno socket error] [Errno 2] No such file or directory

(variety:15627): Gdk-WARNING **: variety: Fatal IO error 11 (Resource temporarily unavailable) on X server :0.

Eles perderam recursos disponíveis, certo? Normalmente não foi encerrado e significa que a alteração não mudou.

Detalhes

1) Script adicionado dentro de quit functions

Está em /opt/extras.ubuntu.com/variety/variety/VarietyWindow.py :

<pre>bashCommand = "/home/abdillah/Toolbox/command/normalize"
os.system(bashCommand)</pre>

2) Script dentro de normalizar

Propósito: mudar de papel de parede quando a variedade sai.

<pre>echo $(cat "${HOME}"/.self-log)"| normalize" > "${HOME}"/.self-log #append log
wallpaper=$(cat /home/abdillah/.wallpaper)
filename="file://"$wallpaper
configname=${filename/'#'/"%23"}
gsettings set org.gnome.desktop.background picture-uri $configname #the most important</pre>

3) Arquivo de configuração LightDM

O que me faz confundir é que na documentação , não há uma declaração mencionada como session-cleanup-script . Está obsoleto?     

[SeatDefaults]
    user-session=ubuntu
    greeter-session=unity-greeter
    autologin-user=
    session-cleanup-script=/home/abdillah/Toolbox/command/logoff

4) o arquivo de logoff contém:

.self-log file ainda vazio = > falhou     

#!/bin/bash
    echo $(cat "${HOME}"/.self-log)" |fail? (OnScript)" > "${HOME}"/.self-log #append log
    killall variety
    /opt/extras.ubuntu.com/variety/bin/variety -q
    echo $(cat "${HOME}"/.self-log)" |Success? (OnScript)" > "${HOME}"/.self-log #log
    exit 0

Pergunta

Quando alguém pensa, condição acima é muito específica, basta responder a seguinte pergunta. 1. Como executar o script diretamente no logout ( CMIW as formas acima. Se não, qualquer sugestão por favor) ou 2. Como posso interromper a variedade corretamente quando faço logout? (So on_quit () chamado)

Solução possível

  • Inicie a variedade com [StartUpApplication] in bash e use o script ~ / .bash_logout para parar. Mas como?

Ok. é longo. Mas tento deixar o mais claro possível. Porque lá fora, há muitas questões relacionadas com isso que eu li. Realmente precisa de ajuda de alguém. Obrigado.

    
por Abdillah 13.05.2013 / 07:59

1 resposta

0

A solução não é simples. Requer o início do script no login do X e espera até a sessão do e do X. Felizmente temos inotify e pid de gnome-session.

O processo de variedade já deve ser morto corretamente no momento da execução do script.

  1. Instale o inotify-tools package.
  2. Crie ou modifique o script ~ / .xprofile e adicione a ele a seguinte linha

    sh .xlogout &
    
  3. Crie ~ / .xlogout com o seguinte conteúdo

    FILE=/tmp/.ICE-unix/$PPID            # pid of parent = gnome-session
    sleep 10s                            # wait for $FILE creation
    inotifywait -qe delete_self $FILE    # wait for $FILE deletion = logout
    # your code goes here                # = on_quit
    # gsettings reset org.gnome.desktop.background picture-uri
    
por Grzegorz Żur 13.05.2013 / 09:34