XScreenSaver(1) General Commands Manual XScreenSaver(1)

xscreensaver - چارچوب توسعه‌پذیر محافظ صفحه و قفل صفحه نمایش

xscreensaver [--display host:display.screen] [--verbose] [--version] [--no-splash] [--log filename]

برنامه XScreenSaver تا زمانی که کاربر غیرفعال شود منتظر می‌ماند و سپس دموهای گرافیکی انتخاب‌شده به صورت تصادفی را اجرا می‌کند. این برنامه همچنین می‌تواند صفحه نمایش شما را قفل کند و امکان پیکربندی و کنترل مدیریت مصرف انرژی صفحه نمایش را فراهم می‌آورد.

برنامه XScreenSaver برای macOS، iOS و Android نیز در دسترس است.

برنامه XScreenSaver یک دیمن است که در پس‌زمینه اجرا می‌شود. شما آن را با استفاده از برنامه xscreensaver-settings(1) پیکربندی می‌کنید.

xscreensaver &
xscreensaver-settings

هنگامی که زمان فعال‌سازی محافظ صفحه فرامی‌رسد، یک پنجره سیاه تمام‌صفحه ایجاد می‌شود که هر نمایشگر را می‌پوشاند. برای هر نمایشگر یک زیرپردازش مجزا راه‌اندازی می‌شود که دموی گرافیکی را اجرا کرده و خروجی آن به پنجره مربوطه هدایت می‌شود. به همین دلیل، هر برنامه‌ای که بتواند روی یک پنجره ارائه‌شده ترسیم انجام دهد، می‌تواند به عنوان محافظ صفحه استفاده شود. دموهای گرافیکی گوناگون در واقع صرفاً برنامه‌های مستقلی هستند که همین کار را انجام می‌دهند.

هنگامی که کاربر دوباره فعال می‌شود، پنجره‌های محافظ صفحه پنهان (unmapped) می‌شوند و زیرپردازش‌های در حال اجرا خاتمه می‌یابند.

حالت‌های نمایشی با اولویت پردازشی پایینی اجرا می‌شوند و به صورت پیش‌فرض بیشتر زمان خود را در حالت خواب/بیکار سپری می‌کنند، بنابراین نباید منابع چشمگیری از سیستم را مصرف کنند.

نمایشگر X برای استفاده. برای نمایشگرهایی با چندین صفحه، XScreenSaver تمام صفحه‌های روی آن نمایشگر را به طور همزمان مدیریت خواهد کرد.
چاپ پیام‌های عیب‌یابی در خروجی خطای استاندارد (stderr).
چاپ شماره نسخه و خروج.
الحاق تمام خروجی‌های عیب‌یابی به فایل مشخص‌شده. این گزینه همچنین شامل --verbose می‌شود. هنگام گزارش اشکالات از این گزینه استفاده کنید.
عدم نمایش صفحه آغازین هنگام راه‌اندازی.

برنامه xscreensaver-settings(1) جایی است که در آن خاموش شدن یا نشدن و زمان خاموش شدن نمایشگر خود را پیکربندی می‌کنید. این برنامه تنظیمات را در فایل ~/.xscreensaver شما ذخیره می‌کند. از xset(1) برای تغییر دستی تنظیمات مدیریت مصرف انرژی استفاده نکنید، این کار عمل نخواهد کرد.

هنگامی که نمایشگر خاموش می‌شود، هک‌های نمایشی متوقف خواهند شد (هرچند ممکن است یکی دو دقیقه طول بکشد تا XScreenSaver متوجه آن شود).

اگر سیستم شما از systemd(1) یا elogind(8) استفاده می‌کند، بستن درب لپ‌تاپ باعث قفل شدن فوری صفحه نمایش خواهد شد.

در غیر این صورت، ممکن است صفحه نمایش تا چند ثانیه پس از باز کردن مجدد درب قفل نشود؛ که این وضعیت مطلوب نیست. بنابراین اگر systemd(1) ندارید، شاید بهتر باشد عادت کنید صفحه نمایش خود را به صورت دستی قبل از بستن درب قفل کنید (xscreensaver-command --lock).

به همین ترتیب، اگر systemd(1) یا elogind(8) داشته باشید، تمام پخش‌کننده‌های ویدیویی و مرورگرهای وب محبوب از تاریک کردن صفحه توسط XScreenSaver در زمان پخش ویدیو جلوگیری می‌کنند.

هر دوی این قابلیت‌ها نیازمند آن هستند که xscreensaver-systemd(6) بتواند به D-Bus متصل شود.

هر محیط میزکار سازوکار مخصوص به خود را برای اجرای دیمن‌های بلندمدت مانند XScreenSaver دارد، و از آنجا که بسیاری از آن‌ها با چارچوب‌های قفل صفحه اختصاصی (پر از باگ، ناامن و ضعیف‌تر) عرضه می‌شوند، لازم است پیش از کارکرد XScreenSaver آن چارچوب‌های دیگر را نیز غیرفعال کنید.

سال‌ها GNOME برنامه XScreenSaver را به همان صورت اصلی در خود داشت و همه چیز به درستی کار می‌کرد. اما دیگر این‌طور نیست!

۱: بسته‌های محافظ صفحه دیگر را به‌طور کامل حذف کنید:
	sudo apt remove gnome-screensaver
	sudo apt remove mate-screensaver
	sudo apt remove cinnamon-screensaver
	sudo apt remove light-locker
یا
	sudo rpm -e gnome-screensaver
	sudo rpm -e mate-screensaver
	sudo rpm -e cinnamon-screensaver
	sudo rpm -e light-locker
مراقب باشید که تلاش نکند کل GNOME را حذف کند.
۲: قابلیت سیاه کردن صفحه توکار GNOME را خاموش کنید.
تمام تنظیمات زیر را روی «Never» یا «Off» قرار دهید، زیرا اکنون همه این موارد توسط xscreensaver-settings(1) کنترل می‌شوند:

"Settings / Privacy / Screen Lock / Blank Screen Delay"
"Settings / Privacy / Screen Lock / Automatic Screen Lock"
"Settings / Power / Blank Screen"
"Settings / Power / Automatic Suspend"

۳: اجرای XScreenSaver هنگام ورود به سیستم.
برنامه «Tweaks» را باز کنید، بخش «Startup Applications» را انتخاب کنید، روی علامت بعلاوه کلیک کنید، و «XScreenSaver» (نه «XScreenSaver Settings») را از منوی (بسیار طولانی) انتخاب نمایید.

یا به بخش «LAUNCHING XSCREENSAVER FROM SYSTEMD» در زیر مراجعه کنید. آن روش هم کار می‌کند.

۴: تنظیم آیکون «Lock» در GNOME برای استفاده از XScreenSaver.
این کار قبلاً کار می‌کرد، اما در GNOME 3.38 دیگر کار نمی‌کند. اگر راهکاری برای آن پیدا کردید، به من اطلاع دهید! این روش همچنان برای Cinnamon 4.8 و MATE 1.24 کار می‌کند:
sudo ln -sf /usr/bin/xscreensaver-command \
       /usr/bin/gnome-screensaver-command
sudo ln -sf /usr/bin/xscreensaver-command \
    /usr/bin/cinnamon-screensaver-command
sudo ln -sf /usr/bin/xscreensaver-command \
        /usr/bin/mate-screensaver-command
sudo ln -sf /usr/bin/xscreensaver-command \
       /usr/bin/xfce4-screensaver-command
sudo ln -sf /usr/bin/xscreensaver-command \
            /usr/bin/light-locker-command
این تغییر پس از ارتقای سیستم از بین خواهد رفت.

همانند GNOME، کی‌دی‌ای (KDE) نیز تصمیم گرفت چرخ را از نو اختراع کند. برای جایگزینی محافظ صفحه KDE با XScreenSaver، کارهای زیر را انجام دهید:

۱: قابلیت سیاه کردن صفحه توکار KDE را خاموش کنید.
در بخش System Settings، تیک موارد زیر را بردارید، زیرا این موارد اکنون توسط xscreensaver-settings(1) کنترل می‌شوند:

"Workspace Behavior / Screen Locking / Lock automatically"
"Workspace Behavior / Screen Locking / After waking from sleep"
"Workspace Behavior / Screen Locking / Keyboard shortcut"
"Hardware / Power Management / Screen Energy Saving"
"Hardware / Power Management / Suspend session"
"Hardware / Power Management / Laptop lid closed" = Do Nothing

اگر چند برگه (Tab) وجود دارد، ممکن است لازم باشد این تنظیمات را در هر سه برگه تغییر دهید: «On AC power»، «Battery» و «Low Battery».

۲: اجرای XScreenSaver هنگام ورود به سیستم.
فایل /usr/share/applications/xscreensaver.desktop را در پوشه ~/.config/autostart/ کپی کنید.
۳: تنظیم آیکون «Lock» در KDE برای استفاده از XScreenSaver.
برنامه «kscreenlocker_greet» را پیدا کنید. ممکن است در «/usr/lib/*/libexec/» یا جای دیگری باشد. آن فایل را حذف کرده و فایلی حاوی این دو خط را جایگزین آن کنید. سپس دسترسی اجرایی به آن بدهید (chmod a+x).
#!/bin/sh
xscreensaver-command --lock &
این تغییر پس از ارتقای سیستم از بین خواهد رفت.
۴: غیرفعال‌سازی قاطع‌تر قفل توکار KDE هنگام تعلیق (Suspend).
حتی پس از غیرفعال کردن قفل صفحه KDE در مراحل بالا، امکان دارد KDE همچنان هنگام بستن درب لپ‌تاپ از قفل‌کننده توکار خود استفاده کند. اگر چنین اتفاقی می‌افتد، تنظیمات فوق را دوباره بررسی کنید، اما اگر آن تنظیمات درست هستند، روش زیر را امتحان کنید. ابتدا مطمئن شوید که نسخه KDE 5.21 یا جدیدتر را اجرا می‌کنید. سپس، گزینه "systemd user sessions" را برای KDE فعال کنید تا بتوانید پارامترهای ksmserver را ویرایش نمایید:
kwriteconfig5 --file startkderc --group General \
  --key systemdBoot true
از حساب کاربری خارج شده و مجدداً وارد شوید (Log out and back in).

سپس، سرویس plasma-ksmserver را ویرایش کنید تا نحوه اجرای ksmserver تغییر کند:

systemctl edit --user plasma-ksmserver.service
محتوای فایلی را که برای ویرایش باز می‌شود با این عبارات جایگزین کنید:
[Service]
ExecStart=
ExecStart=/usr/bin/ksmserver --no-lockscreen
سپس دوباره از حساب کاربری خارج شده و وارد شوید.

خط @xscreensaver را به /etc/xdg/lxsession/LXDE/autostart یا /etc/xdg/lxsession/LXDE-pi/autostart اضافه کنید.

اگر از GNOME، KDE یا LXDE استفاده نمی‌کنید، روش راه‌اندازی XScreenSaver در زمان ورود به سیستم احتمالاً از طریق systemd(1) خواهد بود.

اگر فایل /usr/lib/systemd/user/xscreensaver.service از قبل وجود ندارد، فایل /usr/share/xscreensaver/xscreensaver.service را به آنجا یا به ~/.config/systemd/user/ کپی کنید.

سپس آن را با دستور زیر فعال کنید:

systemctl --user enable xscreensaver

اگر از GNOME، KDE یا LXDE استفاده نمی‌کنید و سیستم شما به جای systemd(1) از upstart(7) استفاده می‌کند، برنامه کوچک "Startup Applications" را باز کرده، روی "Add" کلیک کنید و این خطوط را وارد نمایید:

Name: XScreenSaver
Command: xscreensaver
Comment: XScreenSaver

سیستم‌های BSD یا سایر سیستم‌های بدون systemd(1) یا elogind(8) شاید با افزودن "xscreensaver-command --suspend" به محل مناسبی در /etc/acpi/events/anything یا در /etc/acpi/handler.sh (در صورت وجود این فایل‌ها)، موفق شوند.

می‌توانید xscreensaver را از نشست gdm(1) خود اجرا کنید، تا محافظ صفحه حتی زمانی که هیچ کاربری وارد کنسول نشده است نیز اجرا شود. برای انجام این کار، gdmconfig(1) را اجرا نمایید.

در برگه General، گزینه Local Greeter را روی Standard Greeter تنظیم کنید.

در برگه Background، دستور "xscreensaver --no-splash" را در فیلد Background Program وارد کنید. این کار باعث می‌شود gdm هنگامی که هیچ کاربری وارد سیستم نشده است XScreenSaver را اجرا کند، و به محض ورود یک کاربر آن را متوقف سازد. (سپس در صورت تمایل، کاربر خودش مسئول راه‌اندازی XScreenSaver خواهد بود.)

اگر این روش کار نکرد، می‌توانید فایل پیکربندی را مستقیماً ویرایش کنید. برای افزودن موارد زیر، /etc/X11/gdm/gdm.conf یا شاید /etc/gdm3/custom.conf را ویرایش نمایید:

Greeter=/usr/bin/gdmlogin
BackgroundProgram=xscreensaver --no-splash
RunBackgroundProgramAlways=true
در این وضعیت، فرآیند xscreensaver تحت کاربر gdm اجرا خواهد شد. شما می‌توانید تنظیمات مربوط به این حالتِ بدون کاربر (مهلت‌های زمانی، DPMS و غیره) را با ویرایش فایل ~gdm/.xscreensaver پیکربندی کنید.

اگر هنگام اجرای xscreensaver از طریق gdm با خطاهای "connection refused" مواجه شدید، این احتمالاً به معنی وجود مشکلاتی در xauth(1) است. برای اطلاعات در مورد سازوکارهای کنترل دسترسی سرور X، صفحات راهنمای X(1)، Xsecurity(1)، xauth(1) و xhost(1) را ببینید.

شاید راهی برای انجام این کار در سایر مدیرهای نمایشگر نیز وجود داشته باشد. این یک معماست!

سیستم Wayland یک سامانه پنجره‌بندی کاملاً متفاوت است که با هدف جایگزینی X11 طراحی شده است. پس از بیش از ۱۶ سال تلاش، سرانجام برخی از توزیع‌های لینوکس فعال‌سازی پیش‌فرض آن را آغاز کرده‌اند. بیشتر پیاده‌سازی‌های آن شامل XWayland نیز هستند؛ لایه سازگاری که اجازه می‌دهد برخی از برنامه‌های X11 همچنان درون محیط Wayland به کار خود ادامه دهند.

متأسفانه، XScreenSaver یکی از آن برنامه‌ها نیست.

اگر سیستم شما از Wayland استفاده می‌کند، XScreenSaver به چند روش دچار اختلال خواهد شد؛ برخی جزئی اما یکی از آن‌ها بسیار جدی است:

1: قادر به قفل کردن صفحه نخواهد بود.

این به دلیل آن است که grabهای X11 در XWayland به درستی کار نمی‌کنند، بنابراین هیچ راهی برای XScreenSaver وجود ندارد تا از جابه‌جایی کاربر از صفحه قفل به برنامه‌ای دیگر جلوگیری کند.

2: تحت GNOME اصلاً کار نخواهد کرد.

به این دلیل که کامپوزیتور GNOME از هیچ‌کدام از پروتکل‌های Wayland که امکان تشخیص بیکار (idle) بودن کاربر را فراهم می‌کنند، پشتیبانی نمی‌کند. با این حال، با KDE و بیشتر کامپوزیتورهای دیگر کار می‌کند.

2: عدم وجود هیسترزیس (آستانه تحمل حرکت) ماوس.

حتی یک پیکسل حرکت ماوس باعث خارج شدن صفحه از حالت خاموش (un-blank) خواهد شد.

3: محوشدگی (Fading) و عکس‌های صفحه نمایش ممکن است کار نکنند.

در Wayland، محو شدن تدریجی تصویر و اجازه دادن به هک‌ها برای دریافت و دستکاری عکس صفحه دسکتاپ، به نصب بودن برنامه grim(1) جهت ثبت تصاویر صفحه برای ما وابسته است. و grim(1) تحت کامپوزیتورهای GNOME یا KDE کار نمی‌کند.

برای اینکه XScreenSaver قادر به قفل کردن صفحه باشد، باید Wayland را غیرفعال کرده و مانند «روزهای خوب گذشته» از سیستم پنجره X استفاده کنید.

صفحه ورود باید منویی با نماد چرخ‌دنده داشته باشد که به شما امکان می‌دهد نوع نشست را از «GNOME» (نشست Wayland) به «GNOME on Xorg» (نشست X11) تغییر دهید.

همچنین می‌توانید /etc/X11/gdm/gdm.conf یا احتمالاً /etc/gdm3/custom.conf را ویرایش کرده و خط زیر را اضافه کنید:

WaylandEnable=false

صفحه ورود باید منویی داشته باشد که به شما اجازه می‌دهد نوع نشست را به «Plasma (X11)» تغییر دهید.

همچنین می‌توانید /etc/sddm.conf را ویرایش کرده و مقدار خط SessionDir در بخش [Wayland] را به این صورت تغییر دهید:

SessionDir=/dev/null

برنامه XScreenSaver سابقه و پیشینه‌ای چند دهه‌ای در قفل کردن ایمن صفحه نمایش شما دارد. با این حال، موارد متعددی ممکن است دچار مشکل شوند. سامانه X11 سامانه‌ای بسیار قدیمی است و دارای چندین ایراد در طراحی است که آن را در برابر آسیب زدن به خود آسیب‌پذیر می‌سازد.

کارگزارهای X مانند Xorg و XFree86 و همچنین هسته لینوکس، پیش از اینکه برنامه‌های کلاینت X11 اصلاً کلیدها را دریافت کنند، کلیدهای میانبر جادویی خاصی را به دام انداخته و ضبط می‌کنند. اگر قفل ماندن صفحه نمایش برایتان اهمیت دارد، این موضوع یک مشکل بزرگ است.

این کلید میانبر کارگزار X را متوقف کرده و در برخی سیستم‌ها شما را در یک کنسول متنی رها می‌کند. اگر کاربر X11 را به صورت دستی اجرا کرده باشد، آن کنسول متنی همچنان در حالت وارد شده (لاگین) باقی خواهد ماند. برای غیرفعال کردن سراسری و دائمی این کلید میانبر، باید پرچم DontZap را در فایل xorg.conf(5) یا XF86Config(5) تنظیم کنید.
این کلیدهای میانبر به یک کنسول مجازی دیگر سوییچ می‌کنند، در حالی که کنسولی که X11 روی آن اجرا می‌شود را در حالت قفل رها می‌نمایند. اگر یک شل را روی یک کنسول مجازی دیگر در حالت لاگین رها کرده باشید، محافظت‌نشده باقی می‌ماند. بنابراین نشست کاربری خود را در سایر کنسول‌ها به صورت لاگین‌شده رها نکنید. می‌توانید تعویض کنسول مجازی (VT switching) را با تنظیم DontVTSwitch در فایل xorg.conf(5) به صورت سراسری و دائمی غیرفعال کنید، اما این کار ممکن است استفاده از سیستم را دشوارتر سازد، زیرا تعویض VT قابلیتی واقعاً کاربردی است.

هیچ راهی وجود ندارد که تعویض VT را فقط زمانی که صفحه قفل است غیرفعال کرد. یا همه‌چیز فعال است یا هیچ‌چیز.

این کلید میانبر هر برنامه X11 را که یک قفل را در اختیار دارد متوقف می‌کند؛ بنابراین فشردن آن برنامه XScreenSaver را کشته و قفل صفحه را باز می‌کند. می‌توانید با خاموش کردن AllowClosedownGrabs در فایل xorg.conf(5) آن را غیرفعال کنید.
این کلید میانبر «OOM-killer» (قاتل حافظه) در هسته لینوکس است. این ویژگی برنامه‌های تصادفی در حال اجرای طولانی‌مدت را به انتخاب خود ساقط می‌کند و ممکن است XScreenSaver را هدف گرفته و خاتمه دهد. می‌توانید این کلید میانبر را به صورت سراسری با دستور زیر غیرفعال کنید:
echo 176 > /proc/sys/kernel/sysrq
تا زمانی که توسعه‌دهندگان هسته و X11 این‌گونه فعالانه علیه امنیت عمل می‌کنند، کار چندانی از دست من برای امن کردن قفل‌کننده صفحه برنمی‌آید. استحکام قفل درب ورودی خانه چندان اهمیتی ندارد وقتی فرد دیگری در خانه اصرار دارد کلید را زیر پادری بگذارد.

حتی اگر کلید میانبر OOM-killer مربوط به Alt-SysRq-F را غیرفعال کرده باشید، OOM-killer همچنان ممکن است به طور تصادفی تصمیم به متوقف کردن XScreenSaver بگیرد، که باعث باز شدن قفل صفحه نمایش شما خواهد شد. اگر برنامه xscreensaver-auth(6) به صورت setuid نصب شده باشد، تلاش می‌کند به OOM-killer اطلاع دهد که کاری به دیمن XScreenSaver نداشته باشد، اما این کار ممکن است موفقیت‌آمیز باشد یا نباشد.

شاید تصور کنید که OOM-killer فرآیندی را انتخاب می‌کند که بیشترین حافظه را مصرف کرده است، اما اغلب اوقات به نظر می‌رسد فرآیندی را برمی‌گزیند که خاتمه دادنش مضحک‌ترین و بیشترین دردسر را ایجاد کند؛ مانند قفل‌کننده صفحه نمایش شما، یا crond(8). می‌توانید OOM-killer را با دستورهای زیر به طور کامل غیرفعال کنید:

echo 2 > /proc/sys/vm/overcommit_memory
echo vm.overcommit_memory = 2 >> /etc/sysctl.conf
علاوه بر OOM-killer هسته، systemd(1) نیز نسخه اختصاصی خود را دارد. فایل xscreensaver.service گنجانده‌شده در بسته تلاش می‌کند از آن دوری کند، اما ممکن است در هر صورت بخواهید آن را به طور کامل خاموش کنید:
sudo systemctl disable --now systemd-oomd
sudo systemctl mask systemd-oomd

مدل امنیتی X11 مبتنی بر همه‌یا‌هیچ (all-or-nothing) است. اگر برنامه‌ای به هر نحو بتواند به کارگزار X شما متصل شود، چه به صورت محلی و چه از طریق شبکه، می‌تواند تمامی کلیدهای فشرده‌شده شما را ثبت کند، کلیدها را شبیه‌سازی نماید، برنامه‌های دلخواه را اجرا کند، و تنظیمات سایر برنامه‌ها را تغییر دهد. فرض را بر این بگذارید که هر چیزی که بتواند به کارگزار X شما متصل شود، قادر است کدهای دلخواه را از جانب کاربر لاگین‌شده اجرا کند. بخش‌های Xsecurity(1) و xauth(1) را ببینید.

اگر سیستم شما از PAM (ماژول‌های احراز هویت اتصال‌پذیر) استفاده می‌کند، PAM باید برای XScreenSaver پیکربندی شده باشد. اگر پیکربندی نشده باشد، ممکن است در شرایطی قرار بگیرید که نتوانید قفل صفحه را باز کنید. احتمالاً فایلی که نیاز دارید /etc/pam.d/xscreensaver است.

هرگز به عنوان کاربر ریشه (root) وارد سیستم نشوید. به عنوان یک کاربر عادی وارد شوید و در صورت لزوم از sudo(1) استفاده کنید. اگر به عنوان کاربر ریشه وارد شده باشید، برنامه XScreenSaver به دلایل متعدد و کاملاً موجه، صفحه شما را قفل نخواهد کرد و حالت‌های نمایشی را اجرا نخواهد نمود.

برای یک کاربر منفرد، روش مناسب جهت پیکربندی XScreenSaver اجرای برنامه xscreensaver-settings(1) و تغییر تنظیمات از طریق رابط گرافیکی کاربر (GUI) است. تغییرات در فایل ~/.xscreensaver ذخیره می‌شوند.

اگر می‌خواهید پیش‌فرض‌های سراسری سیستم را تنظیم کنید، ویرایش‌های خود را در فایل /etc/X11/app-defaults/XScreenSaver انجام دهید. این دو فایل ساختار نحوی مشابه (اما نه یکسان) دارند.

همچنین می‌توانید تغییرات را از طریق پایگاه‌داده منابع X و برنامه xrdb(1) اعمال کنید، اما این کار می‌تواند بسیار گیج‌کننده باشد و واقعاً توصیه نمی‌شود.

گزینه‌های موجود در فایل ~/.xscreensaver بر هرگونه تنظیماتی در پایگاه‌داده منابع یا فایل app-defaults اولویت دارند و آن‌ها را بازنویسی می‌کنند.

اگر در حالی که XScreenSaver در حال اجرا است تنظیمی را در فایل .xscreensaver تغییر دهید، برنامه متوجه این موضوع شده و در صورت نیاز فایل را مجدداً بارگذاری می‌کند. اما اگر تنظیمی را در پایگاه‌داده منابع X تغییر دهید، لازم است XScreenSaver را مجدداً راه‌اندازی کنید تا آن تغییرات اعمال شوند:

xrdb < ~/.Xdefaults
xscreensaver-command --restart

این‌ها منابع X مورد استفاده برنامه XScreenSaver هستند. احتمالاً نیازی نخواهید داشت این موارد را به صورت دستی تغییر دهید؛ برنامه xscreensaver-settings(1) دقیقاً برای همین منظور ایجاد شده است.

محافظ صفحه پس از بیکار ماندن صفحه‌کلید و موشواره به مدت این تعداد دقیقه فعال خواهد شد (صفحه را خالی و سیاه می‌کند). مقدار پیش‌فرض ۱۰ دقیقه است.
پس از اینکه محافظ صفحه به مدت این تعداد دقیقه اجرا شد، زیرفرآیند هک گرافیکیِ در حال اجرا خاتمه داده می‌شود (با سیگنال SIGTERM) و فرآیند جدیدی آغاز می‌گردد. اگر این مقدار ۰ باشد، هک گرافیکی هرگز تغییر نخواهد کرد: تنها یک نمایش گرافیکی اجرا می‌شود تا زمانی که محافظ صفحه با فعالیت کاربر غیرفعال شود. مقدار پیش‌فرض ۱۰ دقیقه است.

اگر چندین نمایشگر وجود داشته باشد، محافظ‌ها با اندکی اختلاف زمانی اجرا می‌شوند تا با وجود اینکه همگی هر cycle دقیقه یک‌بار تغییر می‌کنند، هم‌زمان با یکدیگر عوض نشوند.

فعال‌سازی قفل کردن: پیش از آنکه محافظ صفحه خاموش شود، از شما می‌خواهد که گذرواژه کاربری که وارد سیستم شده را وارد کنید.
در صورت فعال بودن قفل، این گزینه طول «دوره مهلت» (grace period) میان زمان فعال شدن محافظ صفحه و زمان قفل شدن صفحه را کنترل می‌کند. برای مثال، اگر این مقدار ۵ و timeout برابر ۱۰ باشد، صفحه پس از ۱۰ دقیقه سیاه می‌شود. اگر در دقیقه ۱۲ فعالیت کاربر رخ دهد، نیازی به وارد کردن گذرواژه برای روشن کردن مجدد صفحه نخواهد بود. اما اگر در دقیقه ۱۵ یا دیرتر فعالیت کاربری رخ دهد (یعنی lockTimeout دقیقه پس از فعال‌سازی)، وارد کردن گذرواژه الزامی خواهد بود. مقدار پیش‌فرض ۰ است، به این معنی که اگر قفل فعال باشد، به محض سیاه شدن صفحه گذرواژه درخواست خواهد شد.
اگر صفحه قفل باشد، این گزینه مشخص می‌کند کادر محاوره‌ای گذرواژه پیش از انصراف چه مدت (به ثانیه) روی صفحه باقی بماند (پیش‌فرض ۳۰ ثانیه). با تایپ هر نویسه، چند ثانیه به این زمان افزوده می‌شود.
مشخص می‌کند که آیا مدیریت مصرف انرژی فعال باشد یا خیر.
در صورت فعال بودن مدیریت مصرف انرژی، مدت زمان تا سیاه شدن کامل نمایشگر را مشخص می‌کند.
در صورت فعال بودن مدیریت مصرف انرژی، مدت زمان تا رفتن نمایشگر به حالت تعلیق و صرفه‌جویی در مصرف انرژی را مشخص می‌کند.
در صورت فعال بودن مدیریت مصرف انرژی، مدت زمان تا خاموش شدن کامل منبع تغذیه نمایشگر را مشخص می‌کند. توجه داشته باشید که این تنظیمات هیچ تاثیری نخواهند داشت مگر اینکه هم کارگزار X و هم سخت‌افزار نمایشگر از مدیریت انرژی پشتیبانی کنند؛ همه آن‌ها از این قابلیت پشتیبانی نمی‌کنند. برای اطلاعات بیشتر، بخش Power Management را در ادامه مشاهده کنید.
اگر mode برابر blank باشد و این مقدار true تنظیم شود، صفحه نمایش بلافاصله پس از سیاه شدن، صرف‌نظر از سایر تنظیمات مدیریت مصرف انرژی، خاموش خواهد شد.
verbose (class Boolean)
چاپ پیام‌های تشخیصی و عیب‌یابی. پیش‌فرض false است.
نمایش صفحه شروع (splash screen) هنگام راه‌اندازی. پیش‌فرض true است.
مدت زمانی که صفحه شروع باید قابل مشاهده باقی بماند؛ پیش‌فرض ۵ ثانیه.
صفحه شروع دکمه‌ای به نام Help دارد. هنگامی که آن را فشار می‌دهید، صفحه وب مشخص‌شده در اینجا را در مرورگر وب شما نمایش می‌دهد.
این دستور شلی است که برای بارگذاری یک آدرس اینترنتی (URL) در مرورگر وب شما استفاده می‌شود.
دستور شلی است که هنگام فشردن دکمه Demo در پنجره شروع اجرا می‌شود. پیش‌فرض آن xscreensaver-settings(1) است.
در صورت تنظیم، این دستور شلی است که هنگام فشرده شدن دکمه "New Login" در کادر محاوره‌ای باز کردن قفل اجرا می‌شود تا یک نشست میزکار جدید بدون خروج کاربری که صفحه را قفل کرده است، ایجاد شود. معمولاً این دستور نوعی از gdmflexiserver(1)، kdmctl(1)، lxdm(1) یا dm-tool(1) خواهد بود.
زیرفرآیندهای راه‌اندازی‌شده توسط XScreenSaver با این سطح اولویت (nice level) اجرا خواهند شد تا اولویت پایین‌تری نسبت به سایر فرآیندهای سیستم به آن‌ها اختصاص یابد و بار کاری سیستم را بی‌جهت افزایش ندهند. مقدار پیش‌فرض ۱۰ است. (اعداد بزرگتر به معنای اولویت کمتر هستند؛ برای جزئیات به nice(1) مراجعه کنید.)
اگر این گزینه درست (true) باشد، هنگام فعال شدن محافظ صفحه، میزکار به آرامی به رنگ سیاه محو می‌شود (fade) به‌جای اینکه ناگهان قطع شود. پیش‌فرض: true.
اگر این گزینه درست (true) باشد، هنگام غیرفعال شدن محافظ صفحه، میزکار به‌جای ظاهر شدن ناگهانی، به آرامی بازمی‌گردد. این کار تنها در صورتی انجام می‌شود که fade نیز برابر true باشد. پیش‌فرض: true.
اگر fade فعال باشد، این گزینه مدت زمان محو شدن را به ثانیه مشخص می‌کند. پیش‌فرض ۳ ثانیه است.
ممکن است برنامه‌هایی در فهرست وجود داشته باشند که بر روی سیستم نصب نشده‌اند اما وضعیت آن‌ها به عنوان «فعال» مشخص شده است. اگر این تنظیم true باشد، این برنامه‌ها نادیده گرفته می‌شوند. اگر false باشد، در صورت تلاش برای اجرای برنامه ناموجود، هشداری چاپ خواهد شد. همچنین در صورت فعال بودن این گزینه، برنامه xscreensaver-settings(1) برنامه‌های ناموجود را از فهرست پنهان می‌کند. پیش‌فرض: false.
پس از باز کردن موفقیت‌آمیز قفل صفحه، ممکن است کادر محاوره‌ای نمایان شود که تلاش‌های ناموفق قبلی برای ورود به سیستم را به شما اطلاع می‌دهد. اگر تمامی آن تلاش‌های ناموفق در بازه این مدت زمان رخ داده باشند، نادیده گرفته می‌شوند. فرض بر این است که ورود گذرواژه‌های اشتباه در فاصله چند ثانیه‌ای از گذرواژه صحیح، ناشی از اشتباه کاربر بوده است و نه اقدامی خصمانه. پیش‌فرض ۲۰ ثانیه است.
رفتار محافظ صفحه را کنترل می‌کند. مقادیر مجاز عبارتند از:
هنگام سیاه کردن صفحه، یک حالت نمایش تصادفی را از میان حالت‌های فعال و قابل استفاده انتخاب می‌کند. این حالت پیش‌فرض است.
مانند random است، اما در صورت وجود چندین نمایشگر، هر نمایشگر به جای اجرای حالتی متفاوت، همان حالت نمایش تصادفی یکسان را اجرا خواهد کرد.
هنگام سیاه کردن صفحه، فقط و فقط از یک حالت نمایش خاص استفاده می‌کند (حالتی که توسط تنظیم selected مشخص شده است).
هنگام سیاه کردن صفحه، فقط صفحه را تاریک می‌کند: هیچ هک گرافیکی اجرا نمی‌شود.
هرگز صفحه را سیاه نکرده و به نمایشگر اجازه خاموش شدن نمی‌دهد.
هنگامی که mode روی one تنظیم شده باشد، این گزینه همان مورد انتخاب‌شده را بر اساس نمایه‌اش در فهرست programs مشخص می‌کند. اگر بخواهید آن‌ها را بشمارید و این شماره را دستی تنظیم کنید دیوانگی است: بگذارید برنامه xscreensaver-settings(1) این کار را برایتان انجام دهد!
هک‌های گرافیکی (برنامه‌های نمایشی) که XScreenSaver هنگام بیکار بودن کاربر اجرا می‌کند. مقدار این منبع یک رشته چندخطی است؛ در هر خط یک دستور با نحو sh قرار می‌گیرد. هر خط باید دقیقاً شامل یک دستور باشد: بدون نقطه‌ویرگول و بدون علامت امپرسند (&).

هنگامی که محافظ صفحه شروع به کار می‌کند، یکی از این برنامه‌ها (با توجه به تنظیمات mode) انتخاب و اجرا می‌شود. پس از پایان دوره زمانی cycle، برنامه خاتمه داده شده و برنامه دیگری انتخاب و اجرا می‌گردد.

اگر خطی با یک خط تیره (-) شروع شود، آن برنامه خاص غیرفعال می‌شود: به صورت تصادفی انتخاب نخواهد شد (اگرچه همچنان می‌توانید با استفاده از برنامه xscreensaver-settings(1) آن را به صراحت انتخاب کنید).

اگر همه برنامه‌ها غیرفعال باشند، صفحه نمایش صرفاً سیاه (خالی) خواهد شد، مشابه زمانی که mode روی blank تنظیم شده باشد.

برای غیرفعال کردن یک برنامه، باید به جای حذف آن از فهرست، آن را با یک خط تیره به عنوان غیرفعال علامت‌گذاری کنید. دلیل این امر این است که تنظیمات سراسری سیستم (app-defaults) و تنظیمات مختص کاربر (.xscreensaver) با یکدیگر ادغام می‌شوند؛ اگر کاربری صرفاً یک مدخل را از فهرست برنامه‌های خود حذف کند، اما آن مدخل همچنان در فهرست سراسری سیستم موجود باشد، مجدداً بازخواهد گشت. با این حال، اگر کاربر آن را غیرفعال کند، تنظیمات کاربر اولویت خواهد داشت.

دایرکتوری پیش‌فرض برنامه‌های نمایشی XScreenSaver (معمولاً /usr/libexec/xscreensaver/) پیش از جستجو برای این برنامه‌ها، به ابتدای $PATH اضافه می‌شود.

برای استفاده از یک برنامه به عنوان محافظ صفحه، برنامه باید قادر به رندر کردن روی پنجره‌ای باشد که از طریق متغیر محیطی $XSCREENSAVER_WINDOW به آن داده شده است. اگر به جای آن پنجره اختصاصی خود را بسازد و نگاشت (map) کند، کار نخواهد کرد. برنامه باید حتماً روی پنجره ارائه‌شده رندر شود.

Visuals:

از آنجا که XScreenSaver در دورانی که دایناسورها روی زمین پرسه می‌زدند ساخته شد، هنوز از مواردی پشتیبانی می‌کند که احتمالاً هرگز ندیده‌اید، مانند مانیتورهای تک‌رنگ (monochrome) ۱ بیتی، مانیتورهای طیف خاکستری (grayscale)، و مانیتورهایی که تنها قادر به نمایش تصاویر نقشه‌رنگ (colormapped) ۸ بیتی هستند.

اگر برنامه‌هایی دارید که می‌خواهید فقط هنگام استفاده از نمایشگر رنگی اجرا شوند، و برنامه‌های دیگری که می‌خواهید فقط روی نمایشگر تک‌رنگ اجرا شوند، می‌توانید آن را به این صورت مشخص کنید:

mono:   mono-program  -root        \n\
color:  color-program -root        \n\
به طور کلی‌تر، می‌توانید نوع visual مورد استفاده برای پنجره‌ای که برنامه روی آن رسم می‌کند را مشخص کنید. برای مثال، اگر برنامه‌ای با وجود colormap بهتر کار کند، اما برنامه دیگری با visual بیست و چهار بیتی عملکرد بهتری داشته باشد، می‌توان هر دو را تنظیم کرد:
PseudoColor: cmap-program  -root   \n\
TrueColor:   24bit-program -root   \n\
علاوه بر نام‌های نمادین visual که در بالا (در بخش بررسی منبع visualID) توضیح داده شد، یک نام visual دیگر نیز در فهرست programs پشتیبانی می‌شود:
این حالت شبیه به default است، اما علاوه بر آن، به جای نقشه‌رنگ اختصاصی، استفاده از نقشه‌رنگ پیش‌فرض را درخواست می‌کند.

اگر یک visual خاص را برای برنامه‌ای مشخص کنید و آن visual در صفحه نمایش وجود نداشته باشد، آن برنامه برای اجرا انتخاب نخواهد شد. این بدان معناست که در نمایشگرهایی با چندین صفحه نمایش با عمق‌های رنگی متفاوت، می‌توانید ترتیبی دهید که هک‌های مناسب روی هر یک اجرا شوند. برای مثال، اگر یک صفحه نمایش رنگی و دیگری تک‌رنگ باشد، برنامه‌هایی که در حالت mono خوب به نظر می‌رسند می‌توانند روی یکی اجرا شوند و برنامه‌هایی که فقط در حالت رنگی خوب دیده می‌شوند روی دیگری نمایش داده شوند.

این یک اثر تاریخی به‌جامانده از زمانی است که نمایشگرهای ۸ بیتی هنوز رایج بودند. احتمالاً باید این مورد را نادیده بگیرید.

مشخص می‌کند که به طور پیش‌فرض از کدام ویژوال X استفاده شود. (دقت کنید که این منبع visualID نام دارد، نه صرفاً visual؛ اگر منبع visual را مقداردهی کنید، سیستم به دلایلی مبهم و به شیوه‌هایی عجیب دچار اختلال عملکرد خواهد شد.)

مقادیر معتبر برای منبع VisualID عبارتند از:

استفاده از ویژوال پیش‌فرض صفحه نمایش (ویژوال پنجره ریشه یا root window). این مقدار پیش‌فرض است.
استفاده از ویژوالی که بیشترین تعداد رنگ را پشتیبانی می‌کند. توجه داشته باشید که ویژوال با بیشترین تعداد رنگ ممکن است یک ویژوال TrueColor باشد که از پویانمایی نقشه رنگ پشتیبانی نمی‌کند. برخی از برنامه‌ها هنگام اجرا روی ویژوال‌های PseudoColor رفتار جالب‌تری نسبت به TrueColor دارند.
استفاده از یک ویژوال تک‌رنگ (monochrome)، در صورت وجود.
استفاده از یک ویژوال grayscale یا staticgray، در صورت وجود و داشتن بیش از یک صفحه بیت (یعنی تک‌رنگ نباشد).
استفاده از بهترین ویژوال رنگی، در صورت وجود.
استفاده از ویژوالی که برای برنامه‌های OpenGL بهترین است. (برنامه‌های OpenGL نیازمندی‌های تا حدی متفاوتی نسبت به سایر برنامه‌های X دارند.)
که در آن class یکی از مقادیر StaticGray، StaticColor، TrueColor، GrayScale، PseudoColor یا DirectColor است. عمیق‌ترین ویژوال از کلاس مشخص‌شده را انتخاب می‌کند.
که در آن number (در مبنای ۱۰ یا ۱۶) به عنوان شماره شناسه ویژوال در نظر گرفته می‌شود، همان‌گونه که توسط برنامه xdpyinfo(1) گزارش می‌شود؛ به این ترتیب می‌توانید کنترل دقیق‌تری روی ویژوال مورد استفاده داشته باشید، برای نمونه برای انتخاب ویژوالی با عمق کمتر از آنچه در حالت عادی انتخاب می‌شد.

توجه داشته باشید که این گزینه تنها ویژوال پیش‌فرض مورد استفاده را مشخص می‌کند: ویژوال مورد استفاده می‌تواند برای هر برنامه به صورت جداگانه بازنویسی شود. توضیحات مربوط به منبع programs در بالا را ببینید.

این یک اثر تاریخی به‌جامانده از دورانی است که نمایشگرهای ۸ بیتی هنوز رایج بودند. در نمایشگرهای PseudoColor (۸ بیتی)، هنگام فعال بودن محافظ صفحه، یک نقشه رنگ خصوصی نصب می‌شود تا هک‌های گرافیکی بتوانند تا حد امکان بیشترین رنگ را دریافت کنند. این حالت پیش‌فرض است. (این فقط زمانی اعمال می‌شود که از ویژوال پیش‌فرض صفحه نمایش استفاده شده باشد، زیرا ویژوال‌های غیرپیش‌فرض به طور خودکار نقشه‌های رنگ اختصاصی خود را دریافت می‌کنند.) این مورد نیز می‌تواند برای هر هک بازنویسی شود: توضیحات نام default-n را در بخش مربوط به منبع programs ببینید.

اگر نمایشگر TrueColor (۱۶ بیت یا عمیق‌تر) دارید، این گزینه هیچ کاری انجام نمی‌دهد. (که در این قرن، حتماً چنین نمایشگری دارید.)

اگر نشانگر ماوس در یک ثانیه کمتر از این مقدار پیکسل حرکت کند، آن را نادیده بگیر (آن را به عنوان «فعالیت» در نظر نگیر). این قابلیت برای این است که صفحه نمایش صرفاً به دلیل برخورد با میز، از حالت خاموشی خارج نشود (یا به موقع خاموش شود). پیش‌فرض: ۱۰ پیکسل.

حرکت حتی یک تک‌پیکسل همچنان باعث روشن شدن مجدد نمایشگر خواهد شد، اما صفحه را از حالت خاموشی (un-blank) خارج نمی‌کند. دلیل این امر متأسفانه این است که خود کارساز X11 به جای XScreenSaver وظیفه تشخیص فعالیت‌های مرتبط با مدیریت مصرف برق را بر عهده دارد.

نشانی https://www.jwz.org/xscreensaver/bugs.html نحوه نوشتن مفیدترین گزارش‌های اشکال را توضیح می‌دهد. اگر اشکالی یافتید، لطفاً مرا در جریان بگذارید!

برای دریافت میزبان پیش‌فرض و شماره نمایشگر، و برای مطلع ساختن زیربرنامه‌ها از صفحه‌ای که باید روی آن رسم کنند.
به زیربرنامه‌ها ارسال می‌شود تا شناسه پنجره‌ای را که باید روی آن رسم کنند، مشخص کند.
برای یافتن زیربرنامه‌ها جهت اجرا، از جمله حالت‌های نمایش.
برای دایرکتوری‌ای که فایل .xscreensaver باید از آن خوانده شود.
برای دریافت نام فایل منابعی که منابع سراسری ذخیره‌شده در ویژگی RESOURCE_MANAGER را بازنویسی (override) می‌کند.

جدیدترین نسخه XScreenSaver، یک نسخه برخط از این راهنما، و پرسش‌های متداول (FAQ) را همیشه می‌توانید در نشانی https://www.jwz.org/xscreensaver بیابید.

X(1), Xsecurity(1), xauth(1), xdm(1), gdm(1), xhost(1), systemd(1), elogind(8), xscreensaver-settings(1), xscreensaver-command(1), xscreensaver-systemd(6), xscreensaver-gl-helper(6), xscreensaver-getimage(6), xscreensaver-text(6).

حق نشر © 1991-2026 متعلق به Jamie Zawinski است. اجازه استفاده، کپی، تغییر، توزیع و فروش این نرم‌افزار و مستندات آن برای هر مقصودی بدین‌وسیله بدون هزینه اعطا می‌شود، به شرطی که اعلان حق نشر فوق در تمام نسخه‌ها درج شده و هر دو اعلان حق نشر و این مجوزنامه در مستندات پشتیبان آورده شوند. هیچ تعهدی درباره مناسب بودن این نرم‌افزار برای هر هدفی داده نمی‌شود. این نرم‌افزار به صورت «همان‌طور که هست» (as is) بدون هیچ‌گونه ضمانت صریح یا ضمنی ارائه می‌شود.

Jamie Zawinski <jwz@jwz.org>

لطفاً اگر اشکالی پیدا کردید یا بهبودی ایجاد کردید، به من اطلاع دهید.

و یک تشکر بسیار بزرگ از صدها نفری که در طول سه دهه گذشته، به اشکال بزرگ و کوچک، در مجموعه XScreenSaver مشارکت داشته‌اند!

6.15 (30-Mar-2026) X Version 11