Aplicación que bloqueará la pantalla después de un período de tiempo establecido para Ubuntu

10

¿Existe una aplicación para Ubuntu que bloqueará la computadora después de un período de tiempo definido (por ejemplo, 30 minutos)? Lo necesito para que los niños limiten el tiempo que miran dibujos animados. Por ejemplo, 30 minutos de observación y luego bloqueos de PC que requieren que un padre lo desbloquee.

Para Windows utilicé la aplicación Eyes Relax, muestra una pantalla en negro y una barra de progreso verde (tiempo restante para desbloquear la PC) y requiere una contraseña para anular el bloqueo.

Dmitriy
fuente
¿Tienes curiosidad por saber si alguna de las respuestas a continuación te funcionó?
WinEunuuchs2Unix
Los probaré cuando tenga la oportunidad y marcaré la respuesta
Dmitriy
Acabo de descubrir preguntas y respuestas similares que pueden ser útiles 1) askubuntu.com/questions/715721/… 2) askubuntu.com/questions/68918/… y 3) askubuntu.com/questions/696620/…
WinEunuuchs2Unix

Respuestas:

15

4 de junio de 2018 Actualización

Se multi-timerha creado un programa llamado muy superior : un temporizador para configurar diferentes alarmas simultáneamente

Temporizador de pantalla de bloqueo

systray.gif

Cree su propio temporizador de bloqueo de pantalla en lugar de aplicaciones de terceros

Aunque hay aplicaciones de terceros para hacer esto, puede crear las suyas propias. Resumen de pasos:

  • Use gedit para crear script lock-screen-timer
  • Copie y pegue el código de esta ventana a lock-screen-timer
  • Marcar lock-screen-timercomo ejecutable
  • ¡Pruébalo!
  • Configure Nautilus para ejecutar scripts bash
  • Crear enlace de acceso directo de escritorio
  • Monitorear el tiempo restante

Edición 1 (19 de noviembre de 2016): versión final. Advertencias de bloqueo inminentes a los 15, 10, 5, 3, 2 y 1 minuto (s) restantes usando mensaje y sonido. Use zenity para obtener la cantidad de minutos (el valor predeterminado es 30).

Edición 2 (20 de noviembre de 2016): cambio de código para eliminar el script anterior para dormir.

Edición 3 (20 de enero de 2017): Revise la eliminación del código de script anterior. Agregue un mensaje de información si la versión anterior ya se estaba ejecutando y finalizó.

Edición 4 (4 de febrero de 2017): Ejecutar en bucle para cuentas regresivas múltiples sin tener que volver a hacer clic en el icono del escritorio. es decir, noche de lavado: 16 minutos para el ciclo de enjuague (suavizante de telas), 13 minutos para cargar la secadora, 58 minutos para sacarla de la secadora.

Edición 5 (11 de febrero de 2017): escriba los minutos restantes para /tmp/lock-screen-timer-remaining. Esto permite que otros programas muestren la cantidad de tiempo antes de que la pantalla esté bloqueada.

Edición 6 (07 de agosto de 2017): cambie el /tmp/archivo de trabajo a ~/.para admitir múltiples usuarios en la red.

EDITAR: tenga en cuenta que el script depende de ogg123 para reproducir el sonido del recordatorio. Este programa es parte del paquete vorbis-tool del repositorio de universos. El script tal como se presenta aquí también intenta usar el script hotplugtv que se encuentra aquí.

Edición 8 (12 de noviembre de 2017): agregue compatibilidad con WSL (Subsistema de Windows 10 para Linux). Tenga en cuenta que necesita agregar VcXsrvy / ubuntu-desktopo xubuntu-desktop(preferido) para usar Linux GUI en WSL. La pantalla restante del tiempo del área de notificación / bandeja del sistema de Windows 10 requiere complementar lo que indicator-sysmonitorhace en Linux. Se powershell.exeplanea un script futuro para el soporte del área de notificación de Windows 10.

Edición 9 (19 de febrero de 2018): se corrigió la animación que faltaba en la \secuencia "|, /, ─, \" de la pizza giratoria.

Use gedit para crear script lock-screen-timer

Abra el Terminaluso de Ctrl+ Alt+ Ty escriba:

gedit lock-screen-timer

Copie y pegue el código de la ventana de abajo para lock-screen-timer

Vuelva a esta pantalla y copie el siguiente código resaltándolo y presionando 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.

Luego vuelva a la geditventana vacía y pegue el código usando Ctrl+ V. Guarde el archivo y salga del editor nuevamente al símbolo del sistema.

Marcar lock-screen-timercomo ejecutable

Ahora necesitamos hacer que el script sea ejecutable escribiendo:

chmod +x lock-screen-timer

¡Pruébalo!

Antes de llamar al script desde la GUI, lo llamaremos desde la terminal para que podamos ver si se muestran mensajes de error:

~/lock-screen-timer

Se le solicita la cantidad de minutos:

Temporizador de pantalla de bloqueo

Establezca el número deseado de minutos y haga clic en Aceptar para iniciar el temporizador. Cuando quedan 15, 10, 5, 3, 2 y 1 minuto (s), se escucha un sonido del sistema y aparece una burbuja de mensaje que le informa cuándo se bloqueará la pantalla. Después de bloquear la pantalla, debe ingresar su contraseña para desbloquearla.

Configure Nautilus para ejecutar scripts bash

Nautilus define lo que sucede cuando hacemos doble clic en un script ejecutable cuando se trata de la ventana de visualización de archivos o un enlace en el escritorio. El comportamiento normal es editar el script usando gedit. Queremos cambiar este comportamiento para que se ejecute.

Inicie Nautilus y navegue al directorio que contiene lock-screen-timer. Haga clic izquierdo sobre él una vez para enfocarlo. Pase el mouse sobre la barra de menú superior hasta que aparezca el menú "Editar archivo ...", use:

  1. Haga clic en el Editmenú desplegable
  2. Haga clic en la Propertiesopción
  3. Haga clic en la Behaviorpestaña
  4. Observe los botones de opción de radio debajo Executable Text Files
  5. Comprobar botón de radio Run executable text files when they are opened

Crear enlace de acceso directo de escritorio

De la sección anterior lock-screen-timertodavía tiene foco. De lo contrario, navegue hasta el script y haga clic izquierdo sobre él una vez para enfocarlo. Luego use:

  • Haga clic derecho en el archivo y aparecerán las opciones del menú contextual.
  • Desde el menú seleccionar Make Link.
  • Aparece un nuevo icono llamado Link to lock-screen-timer.
  • Haga clic izquierdo en el nuevo icono y arrástrelo desde Nautilus a su escritorio.

Ahora puede hacer doble clic en el enlace de acceso directo del escritorio y se ejecuta el script. Aparece un cuadro de diálogo para obtener el número de minutos. Se presentan dos botones Cancely OK. Si hace clic en Xpara cerrar la ventana, es lo mismo que seleccionar Cancel.

Después de que el temporizador se esté ejecutando y haga doble clic en él nuevamente, la primera copia en ejecución se "eliminará". Ahora puede comenzar una nueva cuenta regresiva del bloqueo de pantalla o hacer clic Cancelpara que no haya una cuenta regresiva.

Mostrar tiempo restante en el área de bandeja del sistema / notificación

Mientras se ejecuta el temporizador de la pantalla de bloqueo, registra cuántos minutos quedan en el archivo ~/.lock-screen-timer-remaining. Puede mirar este archivo con el watchcomando o mostrarlo en la barra indicadora de la aplicación / bandeja del sistema de Ubuntu como se muestra en la parte superior de esta respuesta. Para mostrar el tiempo restante en el área de notificación, siga las instrucciones de estas preguntas y respuestas: ( ¿Puede BASH mostrarse en la bandeja del sistema como indicador de la aplicación? ).

WinEunuuchs2Unix
fuente
kids-tv-timer 1 proporciona kids-tv-timer: comando no encontrado. ¿Hay alguna manera de hacer un acceso directo en el escritorio o en la barra de tareas? ¿Para hacer clic y activar la aplicación?
Dmitriy
el archivo está allí, si hago doble clic en él se abre en gedit. Ejecuté todos tus comandos
Dmitriy
Cambié la última línea a ~/kids-tv-timer 1. Lo siento, el camino faltaba en frente. Trata eso.
WinEunuuchs2Unix
Sí, eso ayudó. ¿Pero no respondiste la segunda pregunta? :)
Dmitriy
@geotavros Una pantalla de progreso que se encuentra sobre el video requeriría un enfoque totalmente diferente al sleepcomando utilizado en el kids-tv-timerscript bash. Sería posible crear un bucle donde cada minuto apareciera una burbuja de notificación que durara unos 10 segundos sobre el video diciendo "Quedan 29 minutos", luego "Quedan 28 minutos", etc. Sin embargo, para anular aún tendría que interrumpa el video, elimínelo kids-tv-timery reinícielo con una nueva asignación de tiempo. Es casi más fácil dejar que el tiempo expire, iniciar sesión y reiniciar. kids-tv-timerAvísame.
WinEunuuchs2Unix
1

Es posible que desee utilizar algo como Mkahawa , que se utiliza para administrar cibercafés.

Chris Matenaers
fuente
1
Esto se ve muy complicado. Hay servidor y cliente. ¿Como lo instalo?
Dmitriy