Score:8

ฉันจะหน่วงเวลา (แต่ไม่ปิดการใช้งาน) การล็อกหน้าจอเมื่อระงับ/ปิดฝาได้อย่างไร

ธง cn

ฉันต้องการให้หน้าจอล็อกโดยอัตโนมัติเมื่อฉันปิดฝา 5 นาที. คือถ้าผมปิดฝาแล้วเปิดอีก 1 นาทีต่อมา ก็อยากให้หน้าจอไม่ล็อค แต่ถ้าเปิดฝา 10 นาทีต่อมา มันควรจะล็อค มีวิธีการตั้งค่าใน Ubuntu (GNOME) หรือไม่

ฉันเห็นคำถามที่คล้ายกันหลายข้อ แต่ไม่มีเลยที่อธิบายสิ่งที่ฉันกำลังมองหา ฉันยังคงต้องการให้แล็ปท็อปหยุดทำงานทันทีเมื่อปิดฝา ฉันไม่ต้องการให้แล็ปท็อปล็อกเว้นแต่จะปิดฝาเป็นระยะเวลาหนึ่ง (ตามหลักการแล้ว จะเป็นไปตามการตั้งค่า "หน่วงเวลาล็อกหน้าจออัตโนมัติ" แบบเดียวกับที่ใช้ขณะที่ฝาเปิดอยู่)

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

vn flag
คุณพยายามปิดการทำงานเริ่มต้นและ [เพิ่มสคริปต์ใน `/etc/acpi/`](https://askubuntu.com/a/670963/349837) หรือไม่
cn flag
@PabloBianchi นั่นอาจช่วยได้ แต่ความเข้าใจของฉันคือสคริปต์นี้จะทำงานในฐานะรูทและจะไม่มีตัวแปรสภาพแวดล้อมใด ๆ ที่เชื่อมต่อกับเซสชันการเข้าสู่ระบบของฉัน ดังนั้นฉันจึงยังไม่แน่ใจว่าจะใช้มันเพื่อใช้พฤติกรรมนี้ได้อย่างไร ฉันกำลังหา.
Score:1
ธง cn

ฉันคิดออกว่าจะทำอย่างไร ฉันเขียนสคริปต์ Python ที่รับฟังสัญญาณ DBus ที่ระบุว่าหยุดชั่วคราวและล็อกหน้าจอ เมื่อสัญญาณทั้งสองเกิดขึ้นในช่วงเวลาสั้น ๆ สคริปต์จะถือว่านี่เป็นเหตุการณ์ที่ระงับซึ่งทำให้เกิดเหตุการณ์การล็อกหน้าจอ จากนั้นรอสัญญาณแสดงการทำงานต่อ หากเวลาผ่านไปตั้งแต่เหตุการณ์หยุดชั่วคราวน้อยกว่า 5 นาที ระบบจะบังคับให้สกรีนเซฟเวอร์ปลดล็อกโดยไม่ต้องใช้รหัสผ่าน นอกจากนี้ จะปลดล็อกหน้าจอเฉพาะเมื่อปิดฝาเมื่อส่งสัญญาณระงับ (ซึ่งน่าจะบ่งชี้ว่ามีการระงับซึ่งทำงานโดยการปิดฝา) ดังนั้นการระงับด้วยตนเองจากเมนูจะไม่เรียกใช้สคริปต์ สิ่งนี้ทำให้มั่นใจได้ว่าหน้าจอจะไม่ปลดล็อคหลังจากผู้ใช้ล็อคด้วยตนเอง

คุณสามารถค้นหาสคริปต์ได้ที่นี่: https://gist.github.com/DarwinAwardWinner/77e8acea2f14ed9ea66d7222d7ace500

ฉันบันทึกสคริปต์ใน ~/.local/bin/ทำให้สามารถเรียกใช้งานได้ และตั้งค่าสคริปต์ให้ทำงานในพื้นหลังเมื่อฉันเข้าสู่ระบบโดยใช้โปรแกรมกำหนดค่า Startup Applications ดังที่แสดงไว้ที่นี่:

รายการแอปพลิเคชันเริ่มต้นสำหรับ shortsleep-unlock.py

ฉันยังใช้ วิ่งหนึ่งอย่างต่อเนื่อง จาก วิ่งหนึ่ง แพ็คเกจเพื่อรีสตาร์ทสคริปต์โดยอัตโนมัติหากเกิดปัญหาขึ้นไม่ว่าจะด้วยเหตุผลใดก็ตาม เมื่อสคริปต์นี้ทำงาน ฉันได้รับลักษณะการทำงานที่ต้องการ: หากฉันปิดฝาแล้วเปิดในนาทีต่อมา หน้าจอจะปลดล็อกโดยที่ฉันไม่ต้องพิมพ์รหัสผ่าน แต่ถ้าฉันปิดฝาทิ้งไว้นานกว่า 5 นาที หรือฉันพักแล็ปท็อปไว้โดยไม่ปิดฝา ก็จะต้องใช้รหัสผ่านเมื่อฉันเปิดฝา คุณสามารถกำหนดค่าทั้งการจำกัดเวลาและความต้องการฝาปิดได้โดยการแก้ไขสคริปต์ (ดูที่บรรทัดที่ 100)

ในรูปแบบปัจจุบัน สคริปต์ใช้งานได้กับสกรีนเซฟเวอร์ของ GNOME เท่านั้น อย่างไรก็ตาม การปรับให้เข้ากับ KDE หรือโปรแกรมล็อกหน้าจออื่นๆ นั้นไม่น่าจะยากนัก ตราบใดที่มีสัญญาณและวิธีการ DBus ที่เหมาะสม

หมายเหตุด้านความปลอดภัยที่สำคัญ: ฉันได้พยายามอย่างดีที่สุดเพื่อจัดการกับ edge case ทั้งหมดที่ฉันนึกออก แต่ก็มีความเป็นไปได้เสมอที่ฉันจะคาดไม่ถึงว่าจะเปิดใช้งานการปลดล็อคด้วยวิธีใดวิธีหนึ่ง แม้จะหมดเวลาที่กำหนดแล้วก็ตาม ดังนั้น อย่าใช้สคริปต์นี้หากคุณมีข้อกังวลเกี่ยวกับความปลอดภัย เว้นแต่คุณจะใช้เวลาในการตรวจสอบด้วยตัวเอง

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา