แอปพลิเคชั่นที่จะล็อคหน้าจอหลังจากระยะเวลาที่กำหนดไว้สำหรับ Ubuntu


10

มีแอพพลิเคชั่นสำหรับ Ubuntu หรือไม่ซึ่งจะล็อคคอมพิวเตอร์หลังจากระยะเวลาที่กำหนด (เช่น 30 นาที) ฉันต้องการมันสำหรับเด็กที่จะ จำกัด เวลาที่พวกเขาดูการ์ตูน เช่นการดู 30 นาทีจากนั้นพีซีล็อคต้องให้ผู้ปกครองปลดล็อค

สำหรับ Windows ฉันใช้แอพ Eyes Relax จะแสดงหน้าจอสีดำและแถบแสดงความคืบหน้าสีเขียว (เหลือเวลาสำหรับปลดล็อกพีซี) และต้องใช้รหัสผ่านเพื่อแทนที่การล็อค


แค่อยากรู้ว่าคำตอบด้านล่างนี้เหมาะกับคุณไหม?
WinEunuuchs2Unix

ฉันจะทดสอบพวกเขาเมื่อฉันได้รับโอกาสและทำเครื่องหมายคำตอบ
Dmitriy

ฉันเพิ่งค้นพบคำถามและคำตอบที่คล้ายกันซึ่งอาจมีการใช้งาน 1) askubuntu.com/questions/715721/… 2) askubuntu.com/questions/68918/ …และ 3) askubuntu.com/questions/696620/…
WinEunuuchs2Unix

คำตอบ:


15

อัปเดตเมื่อวันที่ 4 มิถุนายน 2018

โปรแกรมที่ยอดเยี่ยมจำนวนมากmulti-timerถูกสร้างขึ้น: ตัวจับเวลาในการตั้งค่าการเตือนที่แตกต่างกันพร้อมกัน

ล็อคหน้าจอจับเวลา

systray.gif

สร้าง Screen Lock Timer ของคุณเองแทนแอปพลิเคชันของบุคคลที่สาม

แม้ว่าจะมีแอปพลิเคชันบุคคลที่สามให้ทำเช่นนี้คุณสามารถสร้างของคุณเอง สรุปขั้นตอน:

  • ใช้ gedit เพื่อสร้างสคริปต์ lock-screen-timer
  • คัดลอกและวางรหัสจากหน้าต่างนี้ไปที่ lock-screen-timer
  • ทำเครื่องหมายlock-screen-timerว่าปฏิบัติการได้
  • ทดสอบ!
  • กำหนดค่า Nautilus เพื่อเรียกใช้งานสคริปต์ทุบตี
  • สร้างลิงก์ทางลัดบนเดสก์ท็อป
  • เวลาที่เหลือในการตรวจสอบ

แก้ไข 1 (19 พฤศจิกายน 2559):รุ่นสุดท้าย คำเตือนการล็อคที่กำลังจะมาถึงที่เหลืออีก 15, 10, 5, 3, 2 และ 1 นาทีโดยใช้ข้อความและเสียง ใช้ zenity เพื่อรับจำนวนนาที (ค่าเริ่มต้นถึง 30)

แก้ไข 2 (20 พ.ย. 2559):การเปลี่ยนรหัสเพื่อฆ่าสคริปต์การนอนหลับก่อนหน้า

แก้ไข 3 (20 มกราคม 2560):แก้ไขการฆ่ารหัสสคริปต์ก่อนหน้า เพิ่มข้อความข้อมูลหากเวอร์ชันก่อนหน้านี้ทำงานและสิ้นสุดลงแล้ว

แก้ไข 4 (ก.พ. 4,2017):เรียกใช้วนซ้ำหลายครั้งโดยไม่ต้องคลิกไอคอนเดสก์ท็อปอีกครั้ง เช่นน้ำยาซักผ้าคืน - 16 นาทีเพื่อล้างวงจร (น้ำยาปรับผ้านุ่ม), 13 นาทีในการโหลดเครื่องเป่า, 58 นาทีที่จะออกจากเครื่องเป่า

แก้ไข 5 (กุมภาพันธ์ 11,2017):/tmp/lock-screen-timer-remainingเขียนนาทีที่เหลือไป วิธีนี้ช่วยให้โปรแกรมอื่นแสดงระยะเวลาก่อนที่หน้าจอจะถูกล็อค

แก้ไข 6 (07 ส.ค. 2560):เปลี่ยน/tmp/ไฟล์งานเป็น~/.เพื่อรองรับผู้ใช้หลายคนบนเครือข่าย

แก้ไข: โปรดทราบว่าสคริปต์ขึ้นอยู่กับ ogg123 เพื่อเล่นเสียงเตือนความจำ โปรแกรมนี้เป็นส่วนหนึ่งของแพ็คเกจ vorbis-tool จากที่เก็บจักรวาล สคริปต์ที่นำเสนอที่นี่ยังพยายามใช้สคริปต์ hotplugtv ที่พบที่นี่

แก้ไข 8 (12 พ.ย. 2560):เพิ่มการสนับสนุน WSL (ระบบย่อย Windows 10 สำหรับ Linux) หมายเหตุคุณต้องเพิ่มVcXsrvและubuntu-desktopหรือxubuntu-desktop(แนะนำ) เพื่อใช้ Linux GUI ใน WSL เวลาในการแสดงส่วนที่เหลือของถาดระบบ / พื้นที่แจ้งเตือน Windows 10 ต้องใช้สิ่งที่indicator-sysmonitorทำใน Linux มีการpowershell.exeวางแผนสคริปต์ในอนาคตสำหรับรองรับพื้นที่การแจ้งเตือนของ Windows 10

แก้ไข 9 (19 ก.พ. 201):แก้ไขภาพเคลื่อนไหวที่ขาดหายไป\จากการหมุนพิซซ่า "|, /, ─, \"

ใช้ gedit เพื่อสร้างสคริปต์ lock-screen-timer

เปิดการTerminalใช้Ctrl+ Alt+ Tและประเภท:

gedit lock-screen-timer

คัดลอกและวางรหัสจากหน้าต่างด้านล่างเพื่อ lock-screen-timer

สลับกลับไปที่หน้าจอนี้และคัดลอกรหัสต่อไปนี้โดยเน้นและกด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.

แล้วสลับกลับไปยังที่ว่างเปล่าgeditหน้าต่างและวางโค้ดโดยใช้+Ctrl Vบันทึกไฟล์และออกจากตัวแก้ไขกลับไปที่พรอมต์คำสั่ง

ทำเครื่องหมายlock-screen-timerว่าปฏิบัติการได้

ตอนนี้เราต้องทำให้สคริปต์ทำงานได้โดยพิมพ์:

chmod +x lock-screen-timer

ทดสอบ!

ก่อนเรียกสคริปต์จาก GUI เราจะเรียกใช้สคริปต์จากเทอร์มินัลเพื่อให้เราสามารถดูว่ามีข้อความแสดงข้อผิดพลาดปรากฏขึ้นหรือไม่:

~/lock-screen-timer

คุณจะได้รับแจ้งจำนวนนาที:

ล็อคหน้าจอจับเวลา

กำหนดจำนวนนาทีที่ต้องการแล้วคลิกตกลงเพื่อเริ่มจับเวลา เมื่อมีเวลาเหลือ 15, 10, 5, 3, 2 และ 1 นาทีเสียงของระบบจะปรากฏขึ้นและจะมีข้อความแจ้งให้ทราบเมื่อมีการล็อคหน้าจอ หลังจากหน้าจอถูกล็อคคุณต้องป้อนรหัสผ่านเพื่อปลดล็อกหน้าจอ

กำหนดค่า Nautilus เพื่อเรียกใช้งานสคริปต์ทุบตี

Nautilus กำหนดสิ่งที่เกิดขึ้นเมื่อเราดับเบิลคลิกที่สคริปต์ที่เรียกใช้งานได้เมื่อมันแสดงหน้าต่างไฟล์หรือลิงค์บนเดสก์ท็อป geditพฤติกรรมปกติคือการแก้ไขสคริปต์ที่ใช้ เราต้องการเปลี่ยนพฤติกรรมนี้เพื่อให้สามารถใช้งานได้

เริ่มต้น Nautilus lock-screen-timerและนำทางไปยังไดเรกทอรีที่มี คลิกซ้ายหนึ่งครั้งเพื่อให้มันโฟกัส วางเมาส์เหนือแถบเมนูด้านบนจนกระทั่งเมนู "แก้ไขไฟล์ ... " ปรากฏขึ้นใช้:

  1. คลิกEditเมนูแบบเลื่อนลง
  2. คลิกPropertiesตัวเลือก
  3. คลิกที่Behaviorแท็บ
  4. สังเกตปุ่มตัวเลือกที่อยู่ด้านล่าง Executable Text Files
  5. ตรวจสอบปุ่มตัวเลือก Run executable text files when they are opened

สร้างลิงก์ทางลัดบนเดสก์ท็อป

จากส่วนก่อนหน้านี้lock-screen-timerยังคงมีโฟกัส หากไม่ใช่ให้ไปที่สคริปต์แล้วคลิกซ้ายหนึ่งครั้งเพื่อโฟกัส จากนั้นใช้:

  • คลิกขวาที่ไฟล์และตัวเลือกเมนูบริบทปรากฏขึ้น
  • Make Linkจากเมนูให้เลือก
  • Link to lock-screen-timerไอคอนใหม่จะปรากฏขึ้นที่เรียกว่า
  • คลิกซ้ายที่ไอคอนใหม่และลากจาก Nautilus ไปยังเดสก์ท็อปของคุณ

ตอนนี้คุณสามารถดับเบิลคลิกที่ลิงค์ทางลัดบนเดสก์ท็อปแล้วเรียกใช้สคริปต์ กล่องโต้ตอบปรากฏขึ้นเพื่อให้ได้จำนวนนาที สองปุ่มจะถูกนำเสนอและCancel OKถ้าคุณคลิกเพื่อปิดหน้าต่างก็เป็นเช่นเดียวกับการเลือกXCancel

หลังจากที่ตัวจับเวลาทำงานและคุณดับเบิลคลิกที่มันอีกครั้งสำเนาที่รันครั้งแรกคือ "ถูกฆ่า" ตอนนี้คุณสามารถเริ่มนับถอยหลัง scren lock ใหม่หรือคลิกCancelเพื่อไม่นับถอยหลัง

แสดงเวลาที่เหลืออยู่ในพื้นที่ systray / การแจ้งเตือน

~/.lock-screen-timer-remainingในขณะที่การจับเวลาการล็อคหน้าจอกำลังทำงานจะบันทึกวิธีการหลายนาทีที่เหลือลงในแฟ้ม คุณสามารถดูไฟล์นี้โดยใช้watchคำสั่งหรือแสดงไว้ในถาดระบบ / แถบตัวบ่งชี้แอปพลิเคชันของอูบุนตูดังที่แสดงไว้ด้านบนของคำตอบนี้ ในการแสดงเวลาที่เหลืออยู่ในพื้นที่แจ้งเตือนให้ทำตามคำแนะนำใน Q&A นี้: ( BASH สามารถแสดงใน systray เป็นตัวบ่งชี้แอปพลิเคชันได้หรือไม่ )


kids-tv-timer 1 ให้ kids-tv-timer: ไม่พบคำสั่ง มีวิธีสร้างทางลัดบนเดสก์ท็อปหรือในแถบงานหรือไม่? หากต้องการคลิกและเปิดใช้งานแอปพลิเคชัน
Dmitriy

ไฟล์อยู่ที่นั่นถ้าฉันคลิกสองครั้งมันจะเปิดขึ้นใน gedit ฉันได้ดำเนินการตามคำสั่งทั้งหมดของคุณแล้ว
Dmitriy

~/kids-tv-timer 1ผมเปลี่ยนเส้นสุดท้ายที่จะ ขออภัยเส้นทางขาดหายไปด้านหน้า ลองดู
WinEunuuchs2Unix

ใช่นั่นช่วยได้ แต่คุณไม่ได้ตอบคำถามที่ 2 ใช่ไหม :)
Dmitriy

@geotavros ความคืบหน้าการแสดงผลที่ตั้งอยู่เหนือวิดีโอจะต้องใช้วิธีการที่แตกต่างอย่างสิ้นเชิงกว่าsleepคำสั่งที่ใช้ในkids-tv-timerสคริปต์ทุบตี เป็นไปได้ที่จะสร้างวนซ้ำที่ทุก ๆ นาทีฟองการแจ้งเตือนที่ใช้เวลาประมาณ 10 วินาทีผุดขึ้นมาเหนือวิดีโอโดยบอกว่า "เหลืออีก 29 นาที" จากนั้น "เหลืออีก 28 นาที" อย่างไรก็ตามเพื่อแทนที่คุณยังต้อง ขัดจังหวะวิดีโอฆ่าkids-tv-timerและรีสตาร์ทด้วยการจัดสรรเวลาใหม่ มันง่ายกว่าที่จะให้เวลาหมดอายุเข้าสู่ระบบและเริ่มต้นใหม่kids-tv-timerให้ฉันรู้
WinEunuuchs2Unix

1

คุณอาจต้องการใช้บางอย่างเช่นMkahawaซึ่งใช้เพื่อจัดการอินเทอร์เน็ตคาเฟ่


1
ดูซับซ้อนเกินไป มีเซิร์ฟเวอร์และไคลเอนต์ ฉันจะติดตั้งได้อย่างไร
Dmitriy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.