Aplicativo que bloqueará a tela após um tempo definido para o Ubuntu

10

Existe um aplicativo para Ubuntu que bloqueie o computador após um período de tempo definido (por exemplo, 30 minutos). Preciso que as crianças limitem o tempo em que assistem desenhos animados. Por exemplo, 30 minutos assistindo e depois o PC trava, exigindo que os pais os desbloqueiem.

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 requer uma senha para substituir o bloqueio.

Dmitriy
fonte
Apenas curioso se alguma das respostas abaixo funcionou para você?
WinEunuuchs2Unix
Vou testá-los quando tiver a chance e marcar a resposta #
587 Dmitriy
Acabei de descobrir Perguntas e Respostas semelhantes que podem ser úteis 1) askubuntu.com/questions/715721/… 2) askubuntu.com/questions/68918/… e 3) askubuntu.com/questions/696620/…
WinEunuuchs2Unix

Respostas:

15

4 de junho de 2018 Atualização

Um programa muito superior chamado multi-timerfoi criado: Um cronômetro para configurar diferentes alarmes simultaneamente

Temporizador da tela de bloqueio

systray.gif

Crie seu próprio Screen Lock Timer em vez de aplicativos de terceiros

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

  • Use o gedit para criar script lock-screen-timer
  • Copie e cole o código desta janela para lock-screen-timer
  • Marcar lock-screen-timercomo executável
  • Teste-o!
  • Configurar 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. Avisos de bloqueio iminentes aos 15, 10, 5, 3, 2 e 1 minuto (s) restantes (s) usando mensagem e som. Use o zenity para obter o número de minutos (o padrão é 30).

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

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

Edit 4 (Feb 4,2017): Execute um loop para várias contagens regressivas sem precisar clicar novamente no ícone da área de trabalho. ie Lavanderia - 16 minutos para enxaguar o ciclo (amaciante), 13 minutos para carregar a secadora, 58 minutos para retirar a secadora.

Edição 5 (11 de fevereiro de 2017): escreva os minutos restantes para /tmp/lock-screen-timer-remaining. Isso permite que outros programas exibam a quantidade de tempo antes que a tela seja bloqueada.

Edit 6 (Aug 07,2017): Altere o /tmp/arquivo de trabalho ~/.para suportar vários usuários na rede.

EDIT: Observe 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.

Edição 8 (12 de novembro de 2017): adicione suporte ao WSL (Windows 10 Subsystem para Linux). Observe que você precisa adicionar VcXsrve ubuntu-desktopou xubuntu-desktop(preferencialmente) usar a GUI do Linux na WSL. O tempo restante da exibição da bandeja do sistema / área de notificação do Windows 10 requer a complementação do que indicator-sysmonitorfaz no Linux. Um futuro powershell.exescript está planejado para o suporte da área de notificação do Windows 10.

Edit 9 (Feb 19,2018): Corrija a animação sem a \sequência "|, /, ─, \" da pizza giratória.

Use o gedit para criar script lock-screen-timer

Abra o Terminaluso de Ctrl+ Alt+ Te digite:

gedit lock-screen-timer

Copie e cole o código da janela abaixo para lock-screen-timer

Volte para 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="$1" # 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 Ubuntu 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.

Volte para a geditjanela vazia e cole o código usando Ctrl+ V. Salve o arquivo e saia do editor de volta ao prompt de comando.

Marcar lock-screen-timercomo executável

Agora precisamos tornar o script executável digitando:

chmod +x lock-screen-timer

Teste-o!

Antes de chamar o script a partir da GUI, vamos chamá-lo a partir do terminal para podermos ver se alguma mensagem de erro é exibida:

~/lock-screen-timer

Você é solicitado pelo número de minutos:

Temporizador da tela de bloqueio

Defina o número de minutos desejado e clique em OK para iniciar o cronômetro. Quando restam 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 estiver bloqueada, você precisará digitar sua senha para desbloquear a tela.

Configurar o Nautilus para executar scripts bash

O Nautilus define o que acontece quando clicamos duas vezes em um script executável quando a janela é exibida ou um link na área de trabalho. O comportamento normal é editar o script usando gedit. Queremos mudar esse comportamento para que seja executado.

Inicie o Nautilus e navegue para o diretório que contém lock-screen-timer. Clique esquerdo uma vez para focar. Passe o mouse sobre a barra de menus superior até que o menu "Edição de arquivo ..." seja exibido, use:

  1. Clique Editno menu suspenso
  2. Clique na Propertiesopção
  3. Clique na Behaviorguia
  4. Observe os botões de opção de rádio em Executable Text Files
  5. Verifique o botão de opção Run executable text files when they are opened

Criar link de atalho na área de trabalho

Da seção anterior lock-screen-timerainda tem foco. Caso contrário, navegue até o script e clique nele uma vez para focar. Então use:

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

Agora você pode clicar duas vezes no link de atalho da área de trabalho e o script é executado. Uma caixa de diálogo aparece para obter o número de minutos. Dois botões são apresentados Cancele OK. Se você clicar no botão Xpara fechar a janela, será o mesmo que selecionar Cancel.

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 bloqueio de scren ou clicar Cancelem sem contagem regressiva.

Tempo de exibição restante na área da bandeja / notificação

Enquanto o temporizador da tela de bloqueio estiver em execução, ele registra quantos minutos restam no arquivo ~/.lock-screen-timer-remaining. Você pode olhar para esse arquivo com o watchcomando ou exibi-lo na barra de indicadores 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 nesta seção de perguntas e respostas: ( O BASH pode ser exibido no sistema como indicador de aplicativo? ).

WinEunuuchs2Unix
fonte
kids-tv-timer 1 fornece kids-tv-timer: comando não encontrado. Existe uma maneira de criar um atalho na área de trabalho ou na barra de tarefas? Basta clicar nele e ativar o aplicativo?
Dmitriy
o arquivo está lá, se eu clicar duas vezes nele, ele será aberto no gedit. Eu executei todos os seus comandos
Dmitriy
Eu mudei a última linha para ~/kids-tv-timer 1. Desculpe o caminho estava faltando na frente. Tente isso.
WinEunuuchs2Unix 27/10/16
sim, isso ajudou. Mas você não respondeu a segunda pergunta? :)
Dmitriy
@geotavros Uma exibição de progresso sobre o vídeo exigiria uma abordagem totalmente diferente do sleepcomando usado no kids-tv-timerscript bash. Seria possível criar um loop em que, a cada minuto, um balão de notificação que durasse cerca de 10 segundos aparecesse sobre o vídeo dizendo "29 minutos restantes", "28 minutos restantes" etc. etc. No entanto, para substituir, você ainda precisa interrompa o vídeo, mate kids-tv-timere reinicie-o com nova atribuição de tempo. É quase mais fácil deixar o tempo expirar, fazer logon e reiniciar kids-tv-timerAvise-me.
WinEunuuchs2Unix
1

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

Chris Matenaers
fonte
1
Isso parece muito complicado. Há servidor e cliente. Como instalo?
Dmitriy