Aplikacja, która zablokuje ekran po upływie określonego czasu dla Ubuntu

10

Czy istnieje aplikacja dla Ubuntu, która zablokuje komputer po określonym czasie (np. 30 minut). Potrzebuję, aby dzieci ograniczały czas oglądania kreskówek. Np. 30 minut oglądania, a następnie komputer blokuje się, wymagając od rodzica odblokowania.

W systemie Windows użyłem aplikacji Eyes Relax, która pokazuje czarny ekran i zielony pasek postępu (pozostały czas do odblokowania komputera) i wymaga hasła, aby zastąpić blokadę.

Dmitriy
źródło
Ciekawe, czy któraś z poniższych odpowiedzi działała dla Ciebie?
WinEunuuchs2Unix
Przetestuję je, kiedy będę miał okazję, i zaznaczę odpowiedź
Dmitriy,
Właśnie odkryłem podobne pytania i odpowiedzi, które mogą być przydatne 1) askubuntu.com/questions/715721/… 2) askubuntu.com/questions/68918/... oraz 3) askubuntu.com/questions/696620/…
WinEunuuchs2Unix

Odpowiedzi:

15

Aktualizacja z 4 czerwca 2018 r

Utworzono znacznie lepszy program o nazwie multi-timer: Zegar do jednoczesnego ustawiania różnych alarmów

Timer blokady ekranu

systray.gif

Utwórz własny Timer blokady ekranu zamiast aplikacji innych firm

Chociaż istnieją do tego aplikacje innych firm, możesz utworzyć własne. Podsumowanie kroków:

  • Użyj gedit, aby utworzyć skrypt lock-screen-timer
  • Skopiuj i wklej kod z tego okna do lock-screen-timer
  • Oznacz lock-screen-timerjako plik wykonywalny
  • Sprawdź to!
  • Skonfiguruj Nautilus do wykonywania skryptów bash
  • Utwórz skrót do pulpitu
  • Pozostały czas monitorowania

Edycja 1 (19 listopada 2016 r.): Wersja ostateczna. Zbliżające się ostrzeżenia o blokadzie po 15, 10, 5, 3, 2 i 1 minutach pozostałych przy użyciu wiadomości i dźwięku. Użyj zenity, aby uzyskać liczbę minut (domyślnie 30).

Edycja 2 (20 listopada 2016): Zmiana kodu, aby zabić poprzedni skrypt uśpienia.

Edycja 3 (20 stycznia 2017 r.): Popraw zabijanie poprzedniego kodu skryptu. Dodaj komunikat informacyjny, jeśli poprzednia wersja była już uruchomiona i zakończona.

Edycja 4 (4 lutego 2017): Uruchom w pętli, aby odliczać wiele razy bez konieczności ponownego klikania ikony na pulpicie. tzn. Noc prania - 16 minut na cykl płukania (zmiękczacz do tkanin), 13 minut na załadowanie suszarki, 58 minut na wyjęcie z suszarki.

Edycja 5 (11 lutego 2017 r.): Napisz pozostałe minuty do /tmp/lock-screen-timer-remaining. Pozwala to innym programom wyświetlać czas, zanim ekran zostanie zablokowany.

Edycja 6 (07,2017 sierpnia): Zmień /tmp/plik roboczy, ~/.aby obsługiwał wielu użytkowników w sieci.

EDYCJA: Zauważ, że skrypt zależy od ogg123, aby odtworzyć dźwięk przypomnienia. Ten program jest częścią pakietu vorbis-tool z repozytorium wszechświata. Przedstawiony tutaj skrypt próbuje również użyć skryptu hotplugtv, który znajduje się tutaj.

Edycja 8 (12 listopada 2017 r.): Dodaj obsługę WSL (Windows 10 Subsystem for Linux). Pamiętaj, że musisz dodać VcXsrvi ( ubuntu-desktoplub xubuntu-desktoppreferowane), aby korzystać z GUI Linuksa w WSL. Pozostały czas w zasobniku systemowym / obszarze powiadomień systemu Windows 10 wymaga uzupełnienia działania indicator-sysmonitorw systemie Linux. powershell.exePlanowany jest przyszły skrypt do obsługi obszaru powiadomień Windows 10.

Edycja 9 (19 lutego 2018): Naprawiono brak animacji w \sekwencji wirującej pizzy „|, /, ─, \”.

Użyj gedit, aby utworzyć skrypt lock-screen-timer

Otwórz za Terminalpomocą Ctrl+ Alt+ Ti wpisz:

gedit lock-screen-timer

Skopiuj i wklej kod z okna poniżej do lock-screen-timer

Wróć do tego ekranu i skopiuj następujący kod, podświetlając go i naciskając 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.

Następnie przełącz się z powrotem do pustego geditokna i wklej kod za pomocą Ctrl+ V. Zapisz plik i zamknij edytor z powrotem do wiersza polecenia.

Oznacz lock-screen-timerjako plik wykonywalny

Teraz musimy uczynić skrypt wykonywalnym, wpisując:

chmod +x lock-screen-timer

Sprawdź to!

Przed wywołaniem skryptu z GUI wywołamy go z terminala, abyśmy mogli zobaczyć, czy są wyświetlane komunikaty o błędach:

~/lock-screen-timer

Zostaniesz zapytany o liczbę minut:

Timer blokady ekranu

Ustaw żądaną liczbę minut i kliknij OK, aby uruchomić stoper. Gdy pozostało 15, 10, 5, 3, 2 i 1 minuta, słychać dźwięk systemu i pojawia się dymek informujący, kiedy ekran zostanie zablokowany. Po zablokowaniu ekranu musisz wprowadzić hasło, aby odblokować ekran.

Skonfiguruj Nautilus do wykonywania skryptów bash

Nautilus określa, co się stanie, gdy klikniemy dwukrotnie skrypt wykonywalny, gdy jest to okno wyświetlania plików lub link na pulpicie. Normalnym zachowaniem jest edycja skryptu za pomocą gedit. Chcemy zmienić to zachowanie, tak aby zostało wykonane.

Uruchom Nautilus i przejdź do katalogu zawierającego lock-screen-timer. Kliknij raz lewym przyciskiem myszy, aby ustawić ostrość. Najedź myszką na górny pasek menu, aż pojawi się menu „Edycja pliku ...”, użyj:

  1. Kliknij Editmenu rozwijane
  2. Kliknij Propertiesopcję
  3. Kliknij Behaviorzakładkę
  4. Obserwuj przyciski opcji radiowych pod Executable Text Files
  5. Sprawdź przycisk opcji Run executable text files when they are opened

Utwórz skrót do pulpitu

Z poprzedniej sekcji lock-screen-timerwciąż się koncentruję. Jeśli nie, przejdź do skryptu i kliknij go raz lewym przyciskiem myszy, aby ustawić fokus. Następnie użyj:

  • Kliknij plik prawym przyciskiem myszy, aby wyświetlić opcje menu kontekstowego.
  • Z menu wybierz Make Link.
  • Pojawi się nowa ikona o nazwie Link to lock-screen-timer.
  • Kliknij lewym przyciskiem myszy nową ikonę i przeciągnij ją z Nautilus na pulpit.

Teraz możesz dwukrotnie kliknąć łącze skrótu na pulpicie, a skrypt zostanie uruchomiony. Pojawi się okno dialogowe z liczbą minut. Przedstawiono dwa przyciski Canceli OK. Kliknięcie przycisku, Xaby zamknąć okno, jest równoznaczne z wybraniem Cancel.

Po uruchomieniu stopera i dwukrotnym kliknięciu go pierwsza uruchomiona kopia zostanie „zabita”. Możesz teraz rozpocząć nowe odliczanie blokady scren lub kliknąć, Cancelaby nie odliczać.

Wyświetl pozostały czas w obszarze paska / obszaru powiadomień

Podczas działania timera blokady ekranu rejestruje, ile minut pozostało do pliku ~/.lock-screen-timer-remaining. Możesz obejrzeć ten plik za pomocą watchpolecenia lub wyświetlić go na pasku zadań / paska narzędzi Ubuntu, jak pokazano na górze tej odpowiedzi. Aby wyświetlić pozostały czas w obszarze powiadomień, postępuj zgodnie z instrukcjami zawartymi w tym pytaniu : ( Czy BASH może wyświetlać się w pasku zadań jako wskaźnik aplikacji? ).

WinEunuuchs2Unix
źródło
Kids-TV-Timer 1 daje Kids-TV-Timer: Nie znaleziono polecenia. Czy istnieje sposób na utworzenie skrótu na pulpicie lub na pasku zadań? Aby go kliknąć i aktywować aplikację?
Dmitriy,
plik tam jest, jeśli kliknę go dwukrotnie, otworzy się w gedit. Wykonałem wszystkie twoje polecenia
Dmitriy
Zmieniłem ostatnią linię na ~/kids-tv-timer 1. Przepraszam, że ścieżki brakowało z przodu. Spróbuj tego.
WinEunuuchs2Unix
tak, to pomogło. Ale nie odpowiedziałeś na drugie pytanie? :)
Dmitriy,
@geotavros Wyświetlanie postępu, które znajduje się nad filmem, wymagałoby zupełnie innego podejścia niż sleeppolecenie użyte w kids-tv-timerskrypcie bash. Możliwe byłoby utworzenie pętli, w której co minutę wyskakuje bańka powiadomień trwająca około 10 sekund nad filmem z napisem „pozostało 29 minut”, a następnie „pozostało 28 minut” itp. Jednak aby to zmienić, nadal musisz przerwać wideo, zabić kids-tv-timeri uruchomić ponownie z nowym przydziałem czasu. Prawie łatwiej jest upłynąć czas, zalogować się i ponownie uruchomić. kids-tv-timerDaj mi znać.
WinEunuuchs2Unix
1

Możesz użyć czegoś takiego jak Mkahawa , który służy do zarządzania kafejkami internetowymi.

Chris Matenaers
źródło
1
To wygląda na zbyt skomplikowane. Jest serwer i klient. Jak to zainstalować?
Dmitriy