Como posso reiniciar a unidade depois de retomar a suspensão?

1

Isso pode soar como uma idéia estúpida, mas eu gosto de ter um painel superior transparente que pode ser configurado no Gerenciador de Configurações de Configuração do Compiz, mas quando eu retomo uma suspensão não é mais transparente e dá uma falha gráfica ao invocar o painel . Isso desaparece se eu reiniciar o Unity executando o comando "unity". Então eu queria saber se era possível conseguir isso? Eu tentei definir um script em /etc/pm/sleep.d/ como indicado em como executar um comando depois de continuar da suspensão? mas não funcionou, eu acho que ele é executado antes de eu entrar novamente e o Unity continuar.

Existe alguma maneira de conseguir o que eu quero ou devo simplesmente desistir?

    
por Niklas 12.05.2012 / 01:52

3 respostas

1

Vá para Configurações do sistema > Teclado > Atalhos > Atalhos personalizados

e crie um novo:

defina um atalho de teclado fácil como Alt + R para executar facilmente uma rápida reinicialização do Unity após a suspensão.

Eu não sofro seu bug, mas preciso executar este comando a cada nova sessão, porque a unidade não se lembra de ligações de borda em novas sessões.

    
por neonboy 13.06.2012 / 15:59
1

Diretamente do manual do systemd-suspend.service :

Immediately before entering system suspend and/or hibernation systemd-suspend.service (and the other mentioned units, respectively) will run all executables in /usr/lib/systemd/system-sleep/ and pass two arguments to them. The first argument will be "pre", the second either "suspend", "hibernate", or "hybrid-sleep" depending on the chosen action. Immediately after leaving system suspend and/or hibernation the same executables are run, but the first argument is now "post". All executables in this directory are executed in parallel, and execution of the action is not continued until all executables have finished.

Eu fiz alguns testes, e descobri que se você colocar um script (marcado como executável por todos, que pode ser obtido com chmod a+x ) em /lib/systemd/system-sleep , sem o / usr , será executado conforme mencionado.

No entanto , há uma desvantagem que é o que faz você pensar que não está funcionando: o ambiente é diferente. Comandos gráficos não funcionam . Provavelmente há uma maneira de contornar isso, mas por padrão, unity --replace falhará porque não pode se conectar ao servidor X (e, portanto, nenhum comando que não funcione se você pressionar CTRL-ALT -F1 e entrar em um console real sem adulteração funcionará).

Ok, acabei de interromper minha digitação para fazer alguma pesquisa: depois de examinar o wiki básico de chroot (porque eu ve tinha o mesmo problema em chroots), descobri que se você chama manualmente xhost + antes de suspensão, os comandos gráficos (no meu caso zenity --info --text "1:$1 2:$1" ) funcionam corretamente. No entanto, você não pode chamar xhost + do script. O que você pode fazer é adicionar um programa aos "aplicativos de inicialização" para chamar automaticamente xhost + quando você efetuar login (adicione-o lá e não a .bashrc , porque se adicionado a .bashrc ele será executar toda vez que você abrir um emulador de terminal). Pode ser diferente no Unity, mas no Ubuntu MATE eu posso ir para System → Preferences → Personal → Startup Applications e clicar em Add para fazer isso.

Em seguida, crie um arquivo /lib/systemd/system-sleep/restart-unity com o seguinte conteúdo:

#!/bin/bash
export DISPLAY=:0
if [[ "$1" == "post" && "$2" == "suspend" ]]
then
    sleep 5
    unity --replace
fi

e execute sudo chmod a+x /lib/systemd/system-sleep/restart-unity (certifique-se de que o arquivo é de propriedade root e só pode ser escrito por root).

Note que deve usar bash . Isso é por causa da instrução "if". Quando tentei a instrução manualmente em sh , recebi vários erros da parte && .

O sleep está lá porque sem ele, unity --replace falhará ao se conectar ao servidor X (ou assim parece).

Baseado nos meus próprios testes no Zesty, isso deve funcionar.

Eu passei apenas 15 minutos tentando entender por que não estava funcionando apenas para perceber que tinha esquecido a linha export DISPLAY=:0 .

    
por pixelherodev 12.03.2017 / 09:45
0

Isso parece útil:

É esta a falha que você está vendo?

    
por tsbertalan 13.06.2012 / 15:47