meu laptop Dell está sujeito a esse erro no kernel 3.14. Como solução alternativa, escrevi um script simples
/ usr / bin / correção de brilho:
#!/bin/bash
echo 0 > /sys/class/backlight/intel_backlight/brightnes
(e fez executável: chmod +x /usr/bin/brightness-fix
)
e um serviço systemd chamando-o que é executado na inicialização:
/etc/systemd/system/brightness-fix.service
[Unit]
Description=Fixes intel backlight control with Kernel 3.14
[Service]
Type=forking
ExecStart=/usr/bin/brightness-fix
TimeoutSec=0
StandardOutput=syslog
#RemainAfterExit=yes
#SysVStartPriority=99
[Install]
WantedBy=multi-user.target
e ativado: systemctl enable /etc/systemd/system/brightness-fix.service
Isso funciona como um encanto e eu posso controlar o brilho da tela conforme desejado. O problema surge quando o laptop é retomado após o modo de suspensão (por exemplo, ao fechar a borda do laptop): o controle de brilho não funciona mais, a menos que eu execute manualmente meu script fisrt acima:/usr/bin/brightness-fix
Como posso criar outro serviço systemd como o meu acima para ser executado no tempo de currículo?
EDIT:
De acordo com os comentários abaixo eu modifiquei meu brightness-fix.service
assim:
[Unit]
Description=Fixes intel backlight control with Kernel 3.14
[Service]
Type=oneshot
ExecStart=/usr/local/bin/brightness-fix
TimeoutSec=0
StandardOutput=syslog
[Install]
WantedBy=multi-user.target sleep.target
Também adicionei echo "$1 $2" > /home/luca/br.log
ao meu script para verificar se ele é realmente executado. O script é realmente executado também em resume ( post suspend
), mas não tem efeito (a luz de fundo é 100% e não pode ser alterada). Eu também tentei fazer logon $DISPLAY
e $USER
, na hora de retomar, eles estão vazios. Então, meu palpite é que o script seja executado muito cedo ao acordar do sono. Alguma dica?
WantedBy=sleep.target
.../usr/local/bin
não é/usr/bin
. esse diretório está reservado apenas para o gerenciador de pacotes.sleep.target
irá executar a unidade quando o computador dorme, e não quando ele é reiniciado. Veja minha resposta abaixo para um arquivo de unidade que funcionou para mim com um problema semelhante.Respostas:
Sei que essa é uma pergunta antiga, mas o seguinte arquivo de unidade funcionou para eu executar um script após retomar do modo de suspensão:
Eu acredito que é o
After=suspend.target
que faz com que seja executado no currículo, e não quando o computador entra no modo de suspensão.fonte
After=suspend.target
na unidade eWantedBy=multi-user.target sleep.target
na instalação .Como uma alternativa para escrever e ativar um arquivo de unidade, você também pode colocar um script de shell (ou um link simbólico no seu script)
/lib/systemd/system-sleep/
.Ele será chamado antes de suspensão / hibernação e no tempo de retomada.
De
man systemd-suspend.service
:Teste com isso:
fonte
/usr/lib
mas todos os seus exemplos se referem a arquivos em/lib
system-sleep
diretório parece estar dentro/lib/systemd/
e/usr/lib/systemd
contém outras coisas.Seguimento da resposta do mivk, na qual evito mexer com um novo arquivo de unidade (veja minha pergunta aqui Como reagir a eventos de laptop ) ? ). Aqui está a minha solução; não é 100% direto ( suspiro ) porque o sistema não é estável quando sai do sono:
Na minha caixa do Fedora 26, coloquei um link simbólico aqui:
/usr/lib/systemd/system-sleep/sleepyhead
que aponta aqui/root/bin/sleepyhead
:, que contém:O
/root/bin/trackpoint
script segue. Observe que o primeiro sono é crítico. O dispositivo é configurado toda vez que a tampa é aberta, para que não exista inicialmente. Se eu tentar fazer qualquer coisa além de dormir, o script "dorminhoca" leva muito tempo para sair e meu ponteiro fica congelado por pelo menos 60 segundos. Além disso, observe que você não pode colocar o/root/bin/trackpoint
script em segundo planosleepyhead
, acima. Se você o fizer, o processo será interrompido quandosleepyhead
sair.fonte