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.