ระงับและล็อคหน้าจอที่ฝาปิดใน arch / systemd


22

อะไรคือวิธีที่ตรงไปตรงมาที่สุดในการล็อคหน้าจอและระงับเมื่อปิดฝา? ฉันใช้งาน hooks hooks ใน/etc/systemd/logind.confและระงับสำเร็จเมื่อปิดฝา อย่างไรก็ตามฉันหลงทางเมื่อมาถึงส่วนล็อค - ฉันควรเปิดใช้งานบริการสกรีนเซฟเวอร์บางส่วนและฉันจะเปิดใช้งานสองเหตุการณ์พร้อมกันได้logind.confอย่างไร


นอกขอบเขตดังนั้นฉันจึงแสดงความคิดเห็น: ใน i3 มันง่ายมากที่จะกำหนดการโยงคีย์ให้กับคำสั่ง ตั้งแต่mod+Lได้รับมอบหมายให้blurlockฉันมันง่ายที่จะmod+Sเป็นblurlock && systemctl suspend -iแทน ดังนั้นไม่ใช่เมื่อปิดฝา แต่ทำงานได้ดีมากในการเลือกว่าฉันแค่ต้องการล็อคหรือล็อคและหยุดชั่วคราว
pzkpfw

คำตอบ:


17

มีคู่ของตัวอย่างในเป็นประตูชัยวิกิพีเดีย

โดยทั่วไปจะเกี่ยวข้องกับการสร้างไฟล์บริการตู้เก็บของหน้าจอของคุณและสร้างความมั่นใจมันเป็นติดยาเสพติดอย่างใดอย่างหนึ่งsuspend, hibernateหรือsleepเป้าหมาย

ถ้าคุณใช้ตู้เก็บของหน้าจอง่ายๆเช่นslock , /etc/systemd/system/lock.serviceจะมีลักษณะเช่นนี้

[Unit]
Description=Lock the screen on resume from suspend

[Service]
User=jason
Environment=DISPLAY=:0
ExecStart=/usr/bin/slock

[Install]
WantedBy=suspend.target

ตัวอย่างอื่น ๆ บนวิกิมีตัวเลือกที่ซับซ้อนมากขึ้นรวมถึงการปิดและแสดงบริการอื่น ๆ


ขอบคุณฉันเห็นตัวอย่างนั้น แต่ไม่ได้ตระหนักถึงExecStart=/usr/bin/slockบิตหมายถึงการล็อคที่เหลือบแรก
pldimitrov

ถ้าฉันหยุดและกลับมาตัวจัดการการแสดงผล X ของฉันมีการล็อกหน้าจอนั่นยอดเยี่ยม แต่แล้ว ttys ของฉันล่ะ ถ้าฉันลงชื่อเข้าใช้และฉันหยุดชั่วคราวและฉันลืมที่จะออกจาก ttys ผู้คนสามารถเปลี่ยนไปที่นั่นและดำเนินการต่อได้
CMCDragonkai

@CMCDragonkai คุณต้องการphyslockแล้ว ...
jasonwryan

1
สิ่งนี้ใช้งานได้ แต่ถ้าคุณเป็นผู้ใช้ระบบเท่านั้น วิธีการแก้ปัญหาคือการทำความสะอาดการใช้งานxss-lock(ใช้ได้ในเด Arch Linux; ยัง Fedora สัปดาห์ถัดไป) และเรียกว่าเป็นผู้ใช้ร่วมกับหรือi3lock slock
Martin Ueding

1
@MartinUeding และ @jasonwryan Userถูกฮาร์ดโค้ด ข้อสันนิษฐานว่าเครื่องนี้จะถูกใช้โดยjason(หรือคนที่รู้รหัสผ่านของเขาเช่นแฟนสาวของเขา) โดยUserหลักการแล้วเราต้องการเป็นใครก็ตามที่เริ่มต้นการระงับชั่วคราว แต่ฉันยังไม่พบวิธีแก้ปัญหาสำหรับเรื่องนั้น (ยัง)
Rolf

1

หากคุณใช้openrcกับelogindจะมีวิธีการแก้ปัญหาทางเลือก (ซึ่งไม่ได้ขึ้นอยู่กับ systemd):

#!/bin/sh
#
# /lib/elogind/system-sleep/lock.sh
# Lock before suspend integration with elogind

username=lerax
userhome=/home/$username
export XAUTHORITY="$userhome/.Xauthority"
export DISPLAY=":0.0"

case "${1}" in
        pre)
            su $username -c "/usr/bin/slock" &
            sleep 1s;
            ;;
esac

อ้างอิง: https://gist.github.com/ryukinix/bd0c1ddcbbafdb4149ae70e41b7c822b

ฉันโพสต์สิ่งนี้เพราะเป็นเรื่องยากมากที่จะหาวิธีที่เหมาะสมในการทำงานและกระทู้นี้จะปรากฏในผลลัพธ์แรกของ google เกี่ยวกับ "ล็อคหลังจากระงับ" หรืออะไรก็ตาม

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