Adoro desktops virtuais. Eu mantenho meia dúzia ao redor, com todo programa que eu uso regularmente sempre pronto. Isso significa que eu pego o reinício do meu PC, já que tenho que configurar tudo novamente - especialmente porque o KDE quebrou o gerenciamento de sessões com o Plasma 5 (estou executando o Kubuntu 15.10, Wily).
Por isso, também adoro a hibernação. Mas há um aborrecimento: se eu hibernar o Chrome ou o Firefox, eles demoram 20-30 minutos para descongelar da próxima vez que eu iniciar minha máquina, o tempo todo destruindo o sistema com pesadas leituras de disco, tornando-o inutilizável. Por quê? Não sei. Acontece com muitas pessoas, algumas conseguiram resolvê-lo, eu não o fiz.
Para contornar, preciso fechar o navegador antes de hibernar e executá-lo manualmente na próxima vez. Sendo preguiçoso como eu, porém, decidi deixar a máquina fazer isso por mim, mas iniciar um programa GUI a partir dos scripts de suspensão do systemd está se mostrando difícil.
Matar o Google Chrome é fácil:
pkill --oldest chromium-browser;
como está começando a partir de um terminal raiz:
su -l chema -c chromium-browser
(com uma pequena pegadinha: se eu tentar isso com um programa do KDE, como o kate, ele aparece com alguma skin padrão, em vez do tema que estou usando)
Mas eu não consegui fazer este último trabalho durante um despertar real. Aqui está um script de teste, usando sleep em vez de hibernação e kate em vez de Chrome, para testes mais rápidos:
#!/bin/sh
# Closes Chrome during hibernation to prevent crazy disk reads on thaw
# Systemd version, copy to /lib/systemd/system-sleep/ and chmod +x
if [ = pre ] && [ = suspend ]; then
killall kate;
fi
if [ = post ] && [ = suspend ]; then
echo "Running kate."
su -l chema -c "DISPLAY=:0.0 kate" & 2>>/tmp/wake-log
fi
Kate é morta em sono certo, mas nunca começou a acordar, apesar de "Running kate". aparece no syslog.
Eu também tentei com runuser -l chema -c kate
, mas isso sempre falha com QXcbConnection: Não foi possível conectar para exibir / Abortar (core dumping) , mesmo depois de um xhost local:
.
Alguma idéia?