Aplicativo que bloqueará a tela após um determinado período de tempo para o Ubuntu

8

Existe uma aplicação para o Ubuntu que irá bloquear o computador após um período de tempo definido (por exemplo, 30 minutos). Preciso que as crianças limitem o tempo que assistem aos desenhos animados. Por exemplo. 30 minutos assistindo e, em seguida, bloqueios de PC exigindo um pai para desbloqueá-lo.

Para o Windows, usei o aplicativo Eyes Relax, ele mostra a tela preta e a barra de progresso verde (tempo restante para desbloquear o PC) e exige uma senha para ignorar o bloqueio.

    
por Dmitriy 14.10.2016 / 18:19

2 respostas

13

Atualização de 4 de junho de 2018

Um programa muito superior chamado multi-timer foi criado: A timer para configurar alarmes diferentes simultaneamente

Temporizador de tela de bloqueio

Crie seu próprio Temporizador de bloqueio de tela em vez de aplicativos de terceiros

Embora existam aplicativos de terceiros para fazer isso, você pode criar o seu próprio. Resumo das etapas:

  • Use o gedit para criar o script lock-screen-timer
  • Copie e cole o código desta janela para lock-screen-timer
  • Marcar lock-screen-timer como executável
  • Teste!
  • Configure o Nautilus para executar scripts bash
  • Criar link de atalho na área de trabalho
  • Monitorar o tempo restante

Editar 1 (19 de novembro de 2016): versão final. Advertências de bloqueio iminentes a 15, 10, 5, 3, 2 e 1 minuto (s) restantes usando mensagem e som. Use zenity para obter o número de minutos (o padrão é 30).

Edit 2 (Nov 20,2016): Alteração de código para matar o script adormecido anterior.

Edit 3 (Jan 20,2017): Revise o código de script anterior. Adicione uma mensagem informativa se a versão anterior já estiver em execução e terminada.

Edit 4 (Feb 4,2017): Executar em loop por várias contagens regressivas sem precisar clicar novamente no ícone da área de trabalho. ou seja, lavanderia noite - 16 minutos para enxaguar ciclo (amaciante), 13 minutos para carregar secador, 58 minutos para tirar do secador.

Editar 5 (Fev 11,2017): Escreva os minutos restantes para %código%. Isso permite que outros programas exibam quantidade de tempo antes que a tela seja bloqueada.

Editar 6 (Ago 07,2017): Altere o arquivo de trabalho /tmp/lock-screen-timer-remaining para /tmp/ para suportar vários usuários na rede.

EDIT: Note que o script depende do ogg123 para reproduzir o som do lembrete. Este programa faz parte do pacote vorbis-tool do repositório universe. O script apresentado aqui também tenta usar o script hotplugtv encontrado aqui.

Editar 8 (Nov 12,2017): Adicionar suporte ao WSL (Windows 10 Subsystem para Linux). Observe que você precisa adicionar ~/. e VcXsrv ou ubuntu-desktop (preferencial) para usar a GUI do Linux no WSL. A exibição de tempo restante na bandeja do sistema / área de notificação do Windows 10 requer a complementação do que o xubuntu-desktop faz no Linux. Um futuro script indicator-sysmonitor está planejado para o suporte à área de notificação do Windows 10.

Edit 9 (Feb 19,2018): Corrija a animação que está faltando a powershell.exe da pizza girando "|, /, ─, \".

Use o gedit para criar o script \

Abra o lock-screen-timer usando Ctrl + Alt + T e digite:

gedit lock-screen-timer

Copie e cole o código da janela abaixo para Terminal

Volte a esta tela e copie o seguinte código destacando-o e pressionando Ctrl + C :

#!/bin/bash

# NAME: lock-screen-timer
# PATH: $HOME/bin
# DESC: Lock screen in x minutes
# CALL: Place on Desktop or call from Terminal with "lock-screen-timer 99"
# DATE: Created Nov 19, 2016. Last revision May 30, 2018.
# UPDT: Updated to support WSL (Windows Subsystem for Linux)
#       Remove hotplugtv. Replace ogg with paplay.
#       Cohesion with multi-timer. New sysmonitor indicator style.

# NOTE: Time defaults to 30 minutes.
#       If previous version is sleeping it is killed.
#       Zenity is used to pop up entry box to get number of minutes.
#       If zenity is closed with X or Cancel, no screen lock timer is launched.
#       Pending lock warning displayed on-screen at set intervals.
#       Write time remaining to ~/.lock-screen-timer-remaining

MINUTES="" # Optional parameter 1 when invoked from terminal.

# if no parameters set default MINUTES to 30
if [ $# == 0 ]; then
    MINUTES=30
fi

DEFAULT="$MINUTES" # When looping, minutes count down to zero. Save deafult for subsequent timers.

# Check if lock screen timer already running
pID=$(pgrep -f "${0##*/}") # All PIDs matching lock-screen-timer name
PREVIOUS=$(echo "$pID" | grep -v ^"$$") # Strip out this running copy ($$$)
if [ "$PREVIOUS" != "" ]; then
    kill "$PREVIOUS"
    rm ~/.lock-screen-timer-remaining
    zenity --info --title="Lock screen timer already running" --text="Previous lock screen timer has been terminated."
fi

# Running under WSL (Windows Subsystem for Linux)?
if cat /proc/version | grep Microsoft; then
    WSL_running=true
else
    WSL_running=false
fi


while true ; do # loop until cancel

    # Get number of minutes until lock from user
    MINUTES=$(zenity --entry --title="Lock screen timer" --text="Set number of minutes until lock" --entry-text="$DEFAULT")

    RESULT=$? # Zenity return code
    if [ $RESULT != 0 ]; then
        break ; # break out of timer lock screen loop and end this script.
    fi

    DEFAULT="$MINUTES" # Save deafult for subsequent timers.
    if [[ $MINUTES == 0 ]] || [[ $MINUTES == "" ]]; then
        break ; # zero minutes considered cancel.
    fi

    # Loop for X minutes, testing each minute for alert message.
    (( ++MINUTES )) 
    while (( --MINUTES > 0 )); do
        case $MINUTES in 1|2|3|5|10|15|30|45|60|120|480|960|1920)
            notify-send --urgency=critical --icon=/usr/share/icons/gnome/256x256/status/appointment-soon.png "Locking screen in ""$MINUTES"" minute(s)." ;
            if [[ $WSL_running == true ]]; then  
                powershell.exe -c '(New-Object Media.SoundPlayer "C:\Windows\Media\notify.wav").PlaySync();'
            else
               paplay /usr/share/sounds/freedesktop/stereo/complete.oga ;
            fi
           ;;
        esac;

        # Record number of minutes remaining to file other processes can read.
        echo "Lock screen in: $MINUTES Minutes" > ~/.lock-screen-timer-remaining

        sleep 60

    done

    rm ~/.lock-screen-timer-remaining # Remove work file others can see our progress with

    if [[ $WSL_running == true ]]; then  
        # Call lock screen for Windows 10
        rundll32.exe user32.dll,LockWorkStation
    else
        # Call screen saver lock for Unbuntu versions > 14.04.
        dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock
    fi

done # End of while loop getting minutes to next lock screen

exit 0 # Closed dialog box or "Cancel" selected.

Em seguida, volte para a janela lock-screen-timer vazia e cole o código usando Ctrl + V . Salve o arquivo e saia do editor de volta ao prompt de comando.

Marque gedit como um executável

Agora, precisamos tornar o script executável digitando:

chmod +x lock-screen-timer

Teste-o!

Antes de chamar o script da GUI, nós o chamaremos do terminal para que possamos ver se alguma mensagem de erro é exibida:

~/lock-screen-timer

Você é solicitado a informar o número de minutos:

Defina o número desejado de minutos e clique em OK para iniciar o cronômetro. Quando há 15, 10, 5, 3, 2 e 1 minuto (s), um som do sistema é ouvido e um balão de mensagem aparece avisando quando a tela será bloqueada. Depois que a tela é bloqueada, você precisa digitar sua senha para desbloquear a tela.

Configure o Nautilus para executar scripts bash

O Nautilus define o que acontece quando clicamos duas vezes em um script executável quando é a janela de exibição de arquivos ou um link na área de trabalho. O comportamento normal é editar o script usando lock-screen-timer . Queremos mudar esse comportamento de tal forma que ele seja executado.

Inicie o Nautilus e navegue até o diretório contendo gedit . Esquerda clique nela uma vez para dar foco. Passe o mouse sobre a barra de menu superior até que o menu "File Edit ..." apareça, use:

  1. Clique no menu suspenso lock-screen-timer
  2. Clique em Edit option
  3. Clique na guia Properties
  4. Observe os botões de opção de rádio em Behavior
  5. Verifique o botão de opções Executable Text Files

Criar link de atalho na área de trabalho

Da seção anterior Run executable text files when they are opened ainda tem foco. Se não, navegue até o script e clique nele uma vez para dar foco. Então use:

  • Clique com o botão direito no arquivo e as opções do menu de contexto são exibidas.
  • No menu, selecione lock-screen-timer .
  • Um novo ícone aparece chamado Make Link .
  • Clique com o botão esquerdo no novo ícone e arraste-o do Nautilus para a sua área de trabalho.

Agora você pode clicar duas vezes no link de atalho da área de trabalho e o script é executado. Aparece uma caixa de diálogo para obter o número minutos. Dois botões são apresentados Cancel e OK . Se você clicar em Link to lock-screen-timer para fechar a janela, será o mesmo que selecionar Cancelar .

Depois que o cronômetro estiver em execução e você clicar duas vezes nele novamente, a primeira cópia em execução será "eliminada". Agora você pode iniciar uma nova contagem regressiva de scren lock ou clicar em Cancelar para nenhuma contagem regressiva.

Tempo de exibição restante na área do systray / notificação

Enquanto o temporizador da tela de bloqueio está sendo executado, ele registra quantos minutos restam no arquivo X . Você pode olhar esse arquivo com o comando ~/.lock-screen-timer-remaining ou exibi-lo na barra do sistema da bandeja do sistema / aplicativo do Ubuntu, como mostrado na parte superior desta resposta. Para exibir o tempo restante na área de notificação, siga as instruções desta Q & amp; A: ( O BASH pode exibir na bandeja do sistema como indicador de aplicativo? ).

    
por WinEunuuchs2Unix 14.10.2016 / 19:35
1

Você pode usar algo como Mkahawa , que é usado para administrar cybercafés.

    
por Chris Matenaers 14.10.2016 / 18:30