เหตุใดการล็อกเดสก์ท็อปหยุดทำงานหลังจากผ่านไประยะหนึ่ง


14

xautolockกำลังทำงานอย่างชัดเจน :

$ ps wafux | grep [x]autolock
user   21410  0.0  0.0  20124  2628 ?        S    Nov05   0:04 xautolock -time 10 -notify 30 -notifier notify-send --urgency low --expire-time=10000 -- 'Locking screen in 30 seconds' -locker slock

อย่างไรก็ตามเมื่อฉันพยายามล็อคมัน :

$ xautolock -locknow
Could not locate a running xautolock.

ถ้าฉันปั่นxautolockมันอีกมันใช้งานได้:

$ xautolock -time 10 -notify 30 -notifier "notify-send --urgency low --expire-time=10000 -- 'Locking screen in 30 seconds'" -locker slock&
[2] 18828
$ ps wafux | grep [x]autolock
user   21410  0.0  0.0  20124  2628 ?        S    Nov05   0:04 xautolock -time 10 -notify 30 -notifier notify-send --urgency low --expire-time=10000 -- 'Locking screen in 30 seconds' -locker slock
user   18828  0.0  0.0  20124  2708 pts/1    S    08:30   0:00      \_ xautolock -time 10 -notify 30 -notifier notify-send --urgency low --expire-time=10000 -- 'Locking screen in 30 seconds' -locker slock
$ xautolock -locknow # Runs fine and locks the desktop

สิ่งที่ช่วยให้?

ตอนนี้ฉันเห็นสิ่งนี้ทั้งบนเดสก์ท็อปและแล็ปท็อปของฉัน โปรดทราบว่าอย่างน้อยครั้งแรกหลังจากการล็อกการบูตทำงานได้ดี หลังจากเหตุการณ์หรือเหตุการณ์ที่ไม่ทราบว่ามันเริ่มล้มเหลว


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

  1. ปิดฝา
  2. รอให้คอมพิวเตอร์ไฮเบอร์เนต
  3. เปิดฝา
  4. กดปุ่มเพาเวอร์
  5. ระบุรหัสผ่านเข้าสู่ระบบตามด้วย Enter

และ

  1. ล็อคเดสก์ท็อป
  2. ขั้นตอนเดียวกับข้างต้น

ติดตามรหัส:

  1. บรรทัดที่พิมพ์ข้อความแสดงข้อผิดพลาด :error1 ("Could not locate a running %s.\n", progName);
  2. ที่เกิดขึ้นถ้าmessageToSendเป็นความจริงและtype != XA_INTEGER
  3. ดูเหมือนว่าtypeตั้งอยู่ในคำสั่งต่อไปนี้:

    (void) XGetWindowProperty (d, root, semaphore, 0L, 2L, False,
                               AnyPropertyType, &type, &format,
                               &nofItems, &after,
                               (unsigned char**) &contents);
    

นี่หมายความว่าการxautolockตรวจจับการทำงานนั้นขึ้นอยู่กับหน้าต่างที่โฟกัสหรือไม่ ฉันยังสงสัยว่าการโทรนี้อาจเกี่ยวข้องกับข้อบกพร่องที่รู้จักนี้หรือไม่ :

  1. อ็อพชัน -disable, -enable, -toggle, -exit, -locknow, -unlocknow และ -restart ขึ้นอยู่กับการเข้าถึงเซิร์ฟเวอร์ X เพื่อทำงานของพวกเขา นี่ก็หมายความว่าพวกเขาจะถูกระงับในกรณีที่บางแอปพลิเคชันอื่นคว้าเซิร์ฟเวอร์ทั้งหมดมาเพื่อตัวเอง

เป็นไปได้หรือไม่ที่xautolockขัดแย้งกับxss-lockทั้งสองอย่างนี้ใช้อยู่slock? นอกจากxautolockบรรทัดข้างต้นฉันยังมีบรรทัดนี้เป็น. xprofile :

xss-lock slock &

เนื่องจากทั้งคู่xautolockและxss-lockสามารถโทรหาslockฉันสงสัยว่าปัญหาจะเป็นดังนี้:

เนื่องจากxss-lockสามารถตรวจพบการนอนหลับของแล็ปท็อปฉันต้องการใช้งานแทนxautolockแต่ฉันไม่สามารถใช้xss-lockงานnotify-sendได้


คุณใช้ยูนิกซ์ตัวไหน?
kasperd

ฉันพบปัญหาเดียวกันนี้ ฉันไม่ได้ดูลึกเกินไป แต่ฉันก็อยากจะรู้คำตอบเช่นกัน
HalosGhost

คุณเริ่มอย่างไร ฉันพบสิ่งเดียวกันเมื่อเร็ว ๆ นี้เมื่อเริ่มต้นจาก.xinitrc: ฉันเปลี่ยนเป็น--userไฟล์บริการและมันก็ไม่มีปัญหาอีกต่อไป ...
jasonwryan

1
การเล่นวิดีโอที่มี mpv (แต่ไม่ใช่ mplayer) จะทำให้เกิดปัญหาสำหรับฉัน ผู้เล่นทั้งสองมีการกำหนดค่าที่ว่างเปล่า
jrm

1
การแก้ปัญหาน้อยกว่าที่ดีที่สุดสำหรับการทริกเกอร์นี้คือการเพิ่มการstop-screensaver=no ~/.mpv/configแน่นอนนี่หมายความว่าคุณต้องปิดใช้งานการล็อกด้วยตนเองเมื่อเล่นวิดีโอด้วย mpv
jrm

คำตอบ:


5

สำหรับฉันกระบวนการ xautolock ยังคงทำงานในพื้นหลัง แต่มันไม่ได้ฟังxautolock -locknowคำสั่งใด ๆ ดังกล่าวโดย @jrm, โปรแกรมประยุกต์ต้องถูกระงับ "สกรีนเซฟเวอร์" สำหรับเราทั้งคู่นี่เป็นเพราะ mpv (เครื่องเล่นวิดีโอ) ปิดการใช้งานสกรีนเซฟเวอร์

สำหรับ mpv การแก้ไขคือการเพิ่มสิ่งต่อไปนี้~/.config/mpv/configหรือ~/.mpv/config:

stop-screensaver=no

หากคุณไม่ได้ใช้ mpv อาจเป็นแอปพลิเคชั่นอื่นที่ปิดการใช้งานสกรีนเซฟเวอร์ ลองบางอันที่ใช้กันโดยทั่วไปเพื่อดูว่ามันคืออะไร


หากคุณต้องการป้องกันการล็อกหน้าจออัตโนมัติระหว่างการเล่นวิดีโอวิธีการหนึ่งที่ใช้กันทั่วไปคือการใช้คุณสมบัติ "มุม" ของ xautolock:

xautolock -corners 000- -cornersize 30

ด้วยคำสั่งด้านบนหากคุณวางเคอร์เซอร์เมาส์ที่มุมล่างขวาของหน้าจอ (ภายในรัศมี 30px) การล็อคอัตโนมัติจะถูกปิดใช้งานชั่วคราว


อีกสิ่งหนึ่งที่ควรลองคือ-resetsaverตัวเลือก:

xautolock -resetsaver

หรือ-detectsleepตัวเลือก:

xautolock -detectsleep

คำแนะนำที่ดีขอบคุณ! ฉันทราบว่าเครื่องเล่นวิดีโอของฉัน (VLC) ปิดการใช้งานการล็อกหน้าจอเป็นเวลาหลายปี แต่จริงๆแล้วปัญหานี้มาถึงตอนนี้จนฉันไม่สามารถจำได้ว่าจิตใจของฉันว่างเปล่าในความเป็นจริง อย่างไรก็ตามฉันได้หยุดใช้xautolockดังนั้นคำถามคือ moot เล็กน้อย การทำเครื่องหมายว่ายอมรับแล้วว่าเป็นคำตอบที่มีประโยชน์ที่สุด หากใครมีปัญหาเดียวกันฉันสามารถลบคำถามนี้เพื่อหลีกเลี่ยงการซ้ำซ้อน
l0b0
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.