ไม่เนื่องจากเคอร์เนลไม่ได้ให้สัญญาณ "กำลังหลับ" ใด ๆ ก่อนที่จะแช่แข็งกระบวนการทั้งหมดจึงไม่มีวิธีที่ไม่เชื่อเรื่องการกระจาย
ที่กล่าวว่าคำขอการระงับทั้งหมด - รวมถึงการปิดฝา - มักจะผ่าน API ผู้ใช้บางส่วน: ในที่สุดพวกเขาเรียกSuspend()
ฟังก์ชันsystemd-logind ผ่าน D-Bus หรือวางpm-suspend
คำสั่ง ทั้งสองมี "hooks" หลากหลายชนิดซึ่งสามารถใช้สำหรับสิ่งนี้
(โปรดทราบว่าไม่ว่าคุณจะทำอะไรผู้ใช้echo mem > /sys/power/state
จะยังคงมองไม่เห็นผู้ใช้โดยตรงโดยตรงจากการดูการกระโดดของนาฬิกาทันที ... )
ดังนั้นหากคุณใช้systemdเป็น init:
ติดตั้งxss-lock
และทำให้สภาพแวดล้อมเดสก์ท็อปของคุณเริ่มต้นที่การเข้าสู่ระบบ (ผ่าน~/.xinitrc
ทาง~/.config/autostart/
หรือผ่านสิ่งใดก็ตาม):
xss-lock xlock &
สิ่งนี้จะจัดการกับการแจ้งเตือนล่วงหน้าของ systemd รวมถึงการloginctl lock-sessions
โทรด้วยตนเองหากคุณต้องการ
สร้าง pm-utils hook script ที่/etc/pm/sleep.d/50lock
:
#! / bin / ดวลจุดโทษ
ล็อคเซสชัน
(อย่าลืมให้chmod +x
.) คุณไม่จำเป็นต้องนี้ systemd ปกติระงับ แต่มันจะส่งการแจ้งเตือนไป XSS pm-suspend
ล็อคเมื่อใดก็ตามที่คุณทำงานด้วยตนเอง
หากคุณใช้ระบบ init อื่น:
หากคุณใช้pm-suspend
งานอยู่ฉันคิดว่าคุณสามารถเรียกใช้xlock
โดยตรงจากสคริปต์ hook ของ pm / sleep.d ที่จะต้องให้คุณตั้งค่าโดยตรงDISPLAY
และXAUTHORITY
ตัวแปรสภาพแวดล้อมซึ่งเป็นที่น่ากลัวเพราะพวกเขาสามารถแตกต่างกันจากการบูตเพื่อบูต (แม้ว่าบางคน hardcode :0
มี ... )
โดยรวมในสถานการณ์นั้นวิธีการเฉพาะสภาพแวดล้อมบนเดสก์ท็อปอาจทำงานได้ดีขึ้น