xss-lock(1) General Commands Manual xss-lock(1)

xss-lock - استفاده از یک قفل‌کننده بیرونی به‌عنوان محافظ صفحه در X

xss-lock [-n notify_cmd] [-s session ID] [--ignore-sleep] [-l] [-v|-q] [--] locker [arg] ...
xss-lock --help|--version

دستور xss-lock برنامه قفل‌کننده دلخواه شما را به افزونه محافظ صفحه MIT برای سامانه X و همچنین مدیر ورود systemd متصل می‌کند.

دستور xss-lock باید در نشست گرافیکی (xsession) شما اجرا شود، خواه با راه‌اندازی آن در .xsessionrc یا با روش‌های خاص دیگر نشست (مانند پیکربندی مدیر پنجره). توجه داشته باشید که xss-lock در پیش‌زمینه اجرا می‌شود (یعنی فورک نمی‌کند) و بنابراین ممکن است نیاز باشد آن را در پس‌زمینه اجرا کنید (برای مثال با اجرای آن به همراه &).

برنامه قفل‌کننده در پاسخ به رویدادهای ناشی از این دو منبع اجرا می‌شود:

  • سیگنال‌های سامانه X هنگامی که فعال‌سازی محافظ صفحه اجبار شود یا پس از دوره‌ای از عدم فعالیت کاربر (همان‌طور که با xset s TIMEOUT تنظیم شده است). در حالت دوم، در صورت مشخص بودن دستور اطلاع‌رسان (notifier)، ابتدا آن دستور اجرا می‌شود.
  • مدیر ورود نیز می‌تواند درخواست قفل شدن نشست را بدهد؛ برای مثال در نتیجه اجرای loginctl lock-sessions. علاوه بر این، xss-lock از منطق بازدارندگی (inhibition) برای قفل کردن صفحه پیش از به خواب رفتن سیستم استفاده می‌کند.

دستور xss-lock منتظر خروج برنامه قفل‌کننده می‌ماند -- یا هنگامی که غیرفعال‌سازی محافظ صفحه یا باز کردن قفل نشست اجباری شود، آن را متوقف می‌کند (kill) -- بنابراین دستور نباید فورک کند.

همچنین، xss-lock نشانه بیکاری (idle hint) را در نشست ورود مدیریت می‌کند. وضعیت بیکاری نشست مستقیماً به فعالیت کاربر گزارش‌شده توسط سامانه X متصل است (به‌جز زمانی که اطلاع‌رسان پیش از قفل کردن صفحه اجرا می‌شود). هنگامی که همه نشست‌ها بیکار باشند، مدیر ورود می‌تواند پس از یک تاخیر از پیش پیکربندی‌شده اقدام لازم (مانند معلق‌سازی یا ساسپند کردن سیستم) را انجام دهد.

اجرای cmd هنگام فعال شدن محافظ صفحه به دلیل عدم فعالیت کاربر. نقل‌قول به سبک شل (Shell-style quoting) پشتیبانی می‌شود. هنگامی که سامانه X فعالیت کاربر را گزارش کند اطلاع‌رسان با سیگنال SIGHUP و هنگامی که قفل‌کننده شروع به کار کند با سیگنال SIGTERM متوقف می‌شود. قفل‌کننده پس از اولین چرخه محافظ صفحه، همان‌طور که با xset s TIMEOUT CYCLE تنظیم شده است، اجرا می‌شود. اگر زمان چرخه محافظ صفحه 0 باشد، اطلاع‌رسان اجرا نشده و قفل‌کننده بلافاصله پس از اتمام مهلت (timeout) شروع می‌شود.

از این گزینه می‌توان برای اجرای شمارش معکوس یا (در لپ‌تاپ‌ها) تاریک کردن (dim) صفحه پیش از قفل کردن استفاده کرد. برای مشاهده یک مثال، اسکریپت /usr/share/doc/xss-lock/dim-screen.sh را ببینید.

برای مثالی از نحوه استفاده از دو سیگنال مختلف دریافت شده توسط دستور اطلاع‌رسان، اسکریپت /usr/share/doc/xss-lock/dim-screen2.sh را ببینید.

اجازه به فرآیند قفل‌کننده برای به ارث بردن توصیف‌گر فایل (file descriptor) که نمایانگر قفل تاخیر دریافت شده از مدیر ورود است. اندیس مربوطه در متغیر محیطی $XSS_SLEEP_LOCK_FD در دسترس قرار خواهد گرفت؛ این متغیر تنها در صورتی تنظیم می‌شود که دلیل قفل کردن، آماده شدن سیستم برای رفتن به حالت خواب (sleep) باشد. قفل‌کننده باید این توصیف‌گر فایل را ببندد تا نشان دهد آماده است.

اسکریپت‌های نمونه‌ای که قفل‌کننده‌های موجود را کپسوله‌سازی می‌کنند در مسیر /usr/share/doc/xss-lock/transfer-sleep-lock-*.sh در دسترس هستند.

استفاده از شناسه نشست ID به‌جای نشست جاری.

مثال: /usr/share/doc/xss-lock/xss-lock.service.

عدم قفل کردن هنگام تعلیق/خواب زمستانی (suspend/hibernate).
نمایش فقط خطاهای مرگبار (fatal).
نمایش پیام‌های بیشتر.
چاپ پیام راهنما و خروج.
چاپ شماره نسخه و خروج.

با دریافت این سیگنال، xss-lock محافظ صفحه را بازنشانی می‌کند، اما فقط در صورتی که صفحه در آن لحظه قفل نباشد (برخلاف xset s reset).

این موضوع می‌تواند در پیکربندی MPlayer به‌عنوان راهکاری برای رفع ناتوانی MPlayer در راه‌اندازی مجدد زمان‌سنج محافظ صفحه هنگام توقف موقت (pause) پخش استفاده شود:

heartbeat-cmd="killall -HUP xss-lock"
stop-xscreensaver=false

توجه:

این کار در mplayer2 (و mpv) بی‌تاثیر است، زیرا تپش قلب (heartbeat) آن هنگام توقف موقت پخش همچنان ادامه دارد.
با دریافت این سیگنال، xss-lock پس از متوقف کردن (kill) هرگونه اطلاع‌رسان یا قفل‌کننده در حال اجرا خارج می‌شود.

•
برخی از برنامه‌ها به اسکریپت xdg-screensaver از بسته xdg-utils وابسته هستند، که از xset s off و xset s default به ترتیب برای تعلیق و ازسرگیری محافظ صفحه استفاده می‌کند. دستور دوم، مهلت زمانی و چرخه را به پیش‌فرض‌های کارساز (سرور) بازنشانی می‌کند (دستور xset s on در عوض از یک پیش‌فرض هاردکد شده استفاده می‌کند)، بنابراین این عملکرد تنها در صورتی مطلوب است که از تنظیمات کارساز راضی باشید (یا بتوانید آن را کنترل کنید).

برای اصلاح عملیات ازسرگیری در این اسکریپت (یا یک نسخه در ~/bin با اولویت بالاتر از نسخه اصلی در $PATH)، یا on را با مهلت زمانی و چرخه دلخواه خود جایگزین کنید، یا با وصله کردن (patch) اسکریپت برای اجرای حلقه تعلیق همانند سایر محافظ‌های صفحه با استفاده از /usr/share/doc/xss-lock/xdg-screensaver.patch از مقادیر زمانی هاردکد شده اجتناب نمایید.

•
استفاده به همراه xscreensaver از طریق .xsessionrc (بنابراین در پس‌زمینه):
xscreensaver &
xss-lock -- xscreensaver-command --lock &
•
اجرای xlock پس از ده دقیقه عدم فعالیت کاربر:
xset s 600
xss-lock xlock +resetsaver

بدون +resetsaver، برنامه xlock هنگام راه‌اندازی بازنشانی محافظ صفحه را تحمیل می‌کند، و در نتیجه به xss-lock اعلام می‌کند که فوراً xlock را مجدداً متوقف کند.

•
تاریک کردن صفحه پس از سه دقیقه عدم فعالیت، و قفل کردن صفحه دو دقیقه پس از آن با استفاده از i3lock:
xset s 180 120
xss-lock -n dim-screen.sh -- i3lock -n

توجه:

اسکریپتی برای استفاده از حالت فورک i3lock به همراه گزینه --transfer-sleep-lock ارائه شده است (به بخش‌های بالا مراجعه کنید).

loginctl(1), xset(1), systemd-logind.service(8)

Raymond Wagenmaker <raymondwagenmaker@gmail.com>

November 2018