Script para executar especificamente no login da suspensão em 16.04

2

Eu tenho um script que define minhas preferências de mouse e é colocado em aplicativos de inicialização . Ele é executado na inicialização, mas quando a tampa é fechada ou o computador é colocado manualmente em suspensão (a mesma coisa realmente), as configurações são removidas. Eu tenho isso, então o Ubuntu requer minha senha no retorno da suspensão, mas esse login não parece ser o mesmo que um login normal, já que ele não executa .profile ou .bashrc .

Eu tentei colocar meu script em /lib/systemd/system-sleep/ , mas isso é executado antes de inserir minha senha e não parece que os comandos xinput funcionem nesse ponto no ciclo de ativação porque as alterações não entram em vigor.

Portanto, estou procurando uma maneira de fazer com que cada suspensão também execute um ciclo de bloqueio ou logoff (como bloquear manualmente executa .profile) ou encontrar uma maneira de executar um script especificamente na entrada de senha no reinício da suspensão.

    
por Sam Thibodeau 18.05.2018 / 17:29

1 resposta

0

Os scripts em /etc/systemd/system-sleep/ estão sendo executados como root, que não estão conectados ao sistema de janelas X11 . Por isso, precisa herdar o perfil do usuário logado.

De brilho da tela e aplicativo gamma , isso funciona para mim:

#!/bin/bash

export DISPLAY=:0       # For xrandr commands to work.
SpamLength=2            # How long spam lasts (how many seconds to sleep)

WaitForSignOn () {

    # eyesome daemon is loaded during boot. The user name is required
    # for xrandr external monitor brightness and gamma control. We must
    # wait until user signs on to get .Xauthority file settings.

    TotalWait=0

    # Wait for user to sign on then get Xserver access for xrandr calls
    UserName=""
    while [[ $UserName == "" ]]; do

        sleep "$SpamLength"
        TotalWait=$(( TotalWait + SpamLength ))

        # Find UserName currently logged in.
        UserName="$(who -u | grep -F '(:0)' | head -n 1 | awk '{print $1}')"
    done

    logger "Waited $TotalWait seconds for $UserName to login."

    xhost local:root
    export XAUTHORITY="/home/$UserName/.Xauthority"

} # WaitForSignOn

Você pode copiar o código acima na parte superior do script e inserir uma linha na frente do código existente:

WaitForSignOn
    
por WinEunuuchs2Unix 21.10.2018 / 18:24