Ubuntu için belirli bir süre sonra ekranı kilitleyecek uygulama


10

Ubuntu için belirli bir süre sonra bilgisayarı kilitleyecek bir uygulama var mı (örneğin 30 dakika). Çocukların çizgi film izledikleri süreyi sınırlamaları gerekiyor. Örneğin, 30 dakika izliyor ve daha sonra bir ebeveynin kilidini açmasını gerektiren PC kilitleniyor.

Windows için Eyes Relax uygulamasını kullandım, siyah ekran ve yeşil ilerleme çubuğunu (PC'nin kilidini açmak için kalan süre) gösterir ve kilidi geçersiz kılmak için bir şifre gerektirir.


Aşağıdaki cevaplardan herhangi birinin sizin için işe yarayıp yaramadığını mı merak ediyorsunuz?
WinEunuuchs2Unix

Şansı elde ettiğimde onları test edeceğim ve cevabı işaretleyeceğim
Dmitriy

Yanıtlar:


15

4 Haziran 2018 Güncellemesi

Denilen çok daha üstün bir program multi-timeroluşturuldu: Aynı anda farklı alarmlar ayarlamak için bir zamanlayıcı

Kilit Ekranı Zamanlayıcısı

systray.gif

3. Taraf uygulamaları yerine kendi Ekran Kilit Zamanlayıcısını oluşturun

Bunu yapmak için 3. Taraf uygulamaları olmasına rağmen, kendinizinkini oluşturabilirsiniz. Adımların özeti:

  • Komut dosyası oluşturmak için gedit kullanma lock-screen-timer
  • Bu pencereden kodu kopyalayıp yapıştırın lock-screen-timer
  • Mark lock-screen-timeryürütülebilir olarak
  • Dene!
  • Nautilus'u bash komut dosyalarını yürütecek şekilde yapılandırma
  • Masaüstü kısayol bağlantısı oluştur
  • Kalan süreyi izleyin

Düzenleme 1 (19 Kasım 2016): Son sürüm. Mesaj ve ses kullanılarak kalan 15, 10, 5, 3, 2 ve 1 dakika kilit uyarıları. Dakika sayısını almak için zengini kullanın (varsayılan değer 30'dur).

Edit 2 (Kasım 20,2016): Önceki uyku komut dosyasını öldürmek için kod değişikliği.

Edit 3 (Ocak 20,2017): Önceki kod kodunu öldürmeyi gözden geçirin. Önceki sürüm zaten çalışıyor ve sonlandırılmışsa bilgi mesajı ekleyin.

Edit 4 (Şubat 4,2017): Masaüstü simgesini yeniden tıklatmadan birden fazla geri sayım için döngü halinde çalıştır. Çamaşır gecesi - durulamada 16 dakika (yumuşatıcı), kurutucuya 13 dakika, kurutucudan 58 dakika.

Düzenleme 5 (Şubat 11,2017): Kalan dakika yazma /tmp/lock-screen-timer-remaining. Bu, diğer programların ekran kilitlenmeden önce geçecek süreyi görüntülemelerini sağlar.

Edit 6 (Ağu 07,2017): Ağdaki birden fazla kullanıcıyı desteklemek /tmp/için çalışma dosyasını değiştirin ~/..

EDIT: Hatırlatma sesi çalmak için komut dosyası ogg123 bağlıdır unutmayın. Bu program evren deposundan gelen vorbis-tool paketinin bir parçasıdır. Burada sunulan komut dosyası ayrıca burada bulunan hotplugtv komut dosyasını kullanmaya çalışır .

Düzenleme 8 (Kasım 12,2017): WSL (Linux için Windows 10 Alt Sistemi) desteği ekleyin. WSL'de Linux GUI'sini eklemeniz VcXsrvve ( ubuntu-desktopveya xubuntu-desktoptercih etmeniz) gerektiğini unutmayın . Windows 10 sistem tepsisi / bildirim alanı kalan süre gösterimi indicator-sysmonitorLinux'takinin tamamlanmasını gerektirir . powershell.exeWindows 10 bildirim alanı desteği için gelecekteki bir komut dosyası planlanmıştır.

Düzenleme 9 (Şubat 19,2018):\ Pizza "|, /, ─, \" dizisinden dönen animasyonu düzeltin .

Komut dosyası oluşturmak için gedit kullanma lock-screen-timer

+ + TerminalKullanarak açın ve şunu yazın:CtrlAltT

gedit lock-screen-timer

Aşağıdaki pencereden kodu kopyalayıp yapıştırın: lock-screen-timer

Bu ekrana geri dönün ve aşağıdaki kodu vurgulayıp Ctrl+ tuşuna basarak kopyalayın 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.

Ardından boş geditpencereye geri dönün ve Ctrl+ ile kodu yapıştırın V. Dosyayı kaydedin ve düzenleyiciden tekrar komut istemine çıkın.

Mark lock-screen-timeryürütülebilir olarak

Şimdi betiği yazarak çalıştırılabilir yapmamız gerekiyor:

chmod +x lock-screen-timer

Dene!

Komut dosyasını GUI'den çağırmadan önce, herhangi bir hata mesajının görüntülenip görüntülenmediğini görebilmemiz için onu terminalden arayacağız:

~/lock-screen-timer

Dakika sayısını girmeniz istenir:

Kilit Ekranı Zamanlayıcısı

İstediğiniz dakika sayısını ayarlayın ve zamanlayıcıyı başlatmak için Tamam'ı tıklayın. 15, 10, 5, 3, 2 ve 1 dakika kaldığında bir sistem sesi duyulur ve ekranın ne zaman kilitleneceğini bildiren bir mesaj balonu görünür. Ekran kilitlendikten sonra ekran kilidini açmak için şifrenizi girmeniz gerekir.

Nautilus'u bash komut dosyalarını yürütecek şekilde yapılandırma

Nautilus, dosyaları görüntüleme penceresi veya masaüstündeki bir bağlantı olduğunda yürütülebilir bir komut dosyasına çift tıkladığımızda ne olacağını tanımlar. Normal davranış, komut dosyasını kullanarak düzenlemektir gedit. Bu davranışı yürütülecek şekilde değiştirmek istiyoruz.

Nautilus'u başlatın ve içeren dizine gidin lock-screen-timer. Odaklanmak için bir kez sol tıklayın. Fareyi, "Dosya Düzenle ..." menüsü görünene kadar üst menü çubuğunun üzerine getirin:

  1. EditAçılır menüyü tıklayın
  2. Tıklama Propertiesseçeneği
  3. Tıklama Behaviorsekmesi
  4. Altındaki radyo seçenek düğmelerine dikkat edin Executable Text Files
  5. Radyo düğmesini kontrol et Run executable text files when they are opened

Masaüstü kısayol bağlantısı oluştur

Önceki bölümden lock-screen-timerhala odak var. Değilse, komut dosyasına gidin ve odaklanmak için bir kez sol tıklayın. Sonra kullan:

  • Dosyayı sağ tıkladığınızda içerik menüsü seçenekleri görünür.
  • Menüden öğesini seçin Make Link.
  • Yeni bir simge belirir Link to lock-screen-timer.
  • Yeni simgeye sol tıklayın ve Nautilus'tan masaüstünüze sürükleyin.

Şimdi masaüstü kısayol bağlantısını çift tıklatabilirsiniz ve komut dosyası çalıştırılır. Dakika sayısını almak için bir iletişim kutusu görüntülenir. İki düğme sunulur Cancelve OK. XPencereyi kapatmak için düğmesini tıklatırsanız, seçim ile aynıdır Cancel.

Zamanlayıcı çalıştıktan ve tekrar çift tıkladıktan sonra ilk çalışan kopya "öldürülür". Artık yeni bir ekran kilidi geri sayımı başlatabilir veya geri sayım Canceliçin tıklayabilirsiniz .

Sistem / bildirim alanında Kalan Süreyi Görüntüleme

Kilit ekranı zamanlayıcısı çalışırken dosyaya kaç dakika kaldığını kaydeder ~/.lock-screen-timer-remaining. Bu dosyaya watchkomutla bakabilir veya bu cevabın üst kısmında gösterildiği gibi Ubuntu'nun sistem tepsisinde / uygulama gösterge çubuğunda görüntüleyebilirsiniz. Bildirim alanında kalan süreyi görüntülemek için bu Soru-Cevap bölümündeki talimatları izleyin: ( BASH, sistem göstergesinde uygulama göstergesi olarak görüntülenebilir mi? ).


kids-tv-timer 1 kids-tv-timer verir: komut bulunamadı. Masaüstünde veya görev çubuğunda kısayol yapmanın bir yolu var mı? Sadece tıklayın ve uygulamayı etkinleştirmek için?
Dmitriy

dosya orada, çift tıklarsam gedit içinde açılır. Tüm komutlarınızı yerine getirdim
Dmitriy

Son satırı olarak değiştirdim ~/kids-tv-timer 1. Maalesef yolun önünde eksikti. Bunu dene.
WinEunuuchs2Unix

evet, bu yardımcı oldu. Ama 2. soruya cevap vermedin mi? :)
Dmitriy

@geotavros Video üzerinde duran bir ilerleme ekranı, bash betiğinde sleepkullanılan komuttan tamamen farklı bir yaklaşım gerektirir kids-tv-timer. Her dakika yaklaşık 10 saniye süren bir bildirim balonunun "29 dakika kaldı", ardından "28 dakika kaldı" vb. Şeklinde bir döngü oluşturması mümkün olacaktır. Ancak geçersiz kılmak için yine de videoyu durdurun, öldürün kids-tv-timerve yeni zaman tahsisi ile yeniden başlatın. Sürenin dolmasına izin vermek, oturum açmak ve yeniden başlatmak neredeyse daha kolay kids-tv-timer.
WinEunuuchs2Unix

1

İnternet kafeleri yönetmek için kullanılan Mkahawa gibi bir şey kullanmak isteyebilirsiniz .


1
Bu çok karmaşık görünüyor. Sunucu ve istemci var. Nasıl kurarım?
Dmitriy
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.