อัปเดตเมื่อวันที่ 4 มิถุนายน 2018
โปรแกรมที่ยอดเยี่ยมจำนวนมากmulti-timer
ถูกสร้างขึ้น: ตัวจับเวลาในการตั้งค่าการเตือนที่แตกต่างกันพร้อมกัน
ล็อคหน้าจอจับเวลา
สร้าง 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
และนำทางไปยังไดเรกทอรีที่มี คลิกซ้ายหนึ่งครั้งเพื่อให้มันโฟกัส วางเมาส์เหนือแถบเมนูด้านบนจนกระทั่งเมนู "แก้ไขไฟล์ ... " ปรากฏขึ้นใช้:
- คลิก
Edit
เมนูแบบเลื่อนลง
- คลิก
Properties
ตัวเลือก
- คลิกที่
Behavior
แท็บ
- สังเกตปุ่มตัวเลือกที่อยู่ด้านล่าง
Executable Text Files
- ตรวจสอบปุ่มตัวเลือก
Run executable text files when they are opened
สร้างลิงก์ทางลัดบนเดสก์ท็อป
จากส่วนก่อนหน้านี้lock-screen-timer
ยังคงมีโฟกัส หากไม่ใช่ให้ไปที่สคริปต์แล้วคลิกซ้ายหนึ่งครั้งเพื่อโฟกัส จากนั้นใช้:
- คลิกขวาที่ไฟล์และตัวเลือกเมนูบริบทปรากฏขึ้น
Make Link
จากเมนูให้เลือก
Link to lock-screen-timer
ไอคอนใหม่จะปรากฏขึ้นที่เรียกว่า
- คลิกซ้ายที่ไอคอนใหม่และลากจาก Nautilus ไปยังเดสก์ท็อปของคุณ
ตอนนี้คุณสามารถดับเบิลคลิกที่ลิงค์ทางลัดบนเดสก์ท็อปแล้วเรียกใช้สคริปต์ กล่องโต้ตอบปรากฏขึ้นเพื่อให้ได้จำนวนนาที สองปุ่มจะถูกนำเสนอและCancel OKถ้าคุณคลิกเพื่อปิดหน้าต่างก็เป็นเช่นเดียวกับการเลือกX
Cancel
หลังจากที่ตัวจับเวลาทำงานและคุณดับเบิลคลิกที่มันอีกครั้งสำเนาที่รันครั้งแรกคือ "ถูกฆ่า" ตอนนี้คุณสามารถเริ่มนับถอยหลัง scren lock ใหม่หรือคลิกCancelเพื่อไม่นับถอยหลัง
แสดงเวลาที่เหลืออยู่ในพื้นที่ systray / การแจ้งเตือน
~/.lock-screen-timer-remaining
ในขณะที่การจับเวลาการล็อคหน้าจอกำลังทำงานจะบันทึกวิธีการหลายนาทีที่เหลือลงในแฟ้ม คุณสามารถดูไฟล์นี้โดยใช้watch
คำสั่งหรือแสดงไว้ในถาดระบบ / แถบตัวบ่งชี้แอปพลิเคชันของอูบุนตูดังที่แสดงไว้ด้านบนของคำตอบนี้ ในการแสดงเวลาที่เหลืออยู่ในพื้นที่แจ้งเตือนให้ทำตามคำแนะนำใน Q&A นี้: ( BASH สามารถแสดงใน systray เป็นตัวบ่งชี้แอปพลิเคชันได้หรือไม่ )