| X11VNC(1) | User Commands | X11VNC(1) |
نام (NAME)
x11vnc - برقراری
اتصالهای VNC
به
نمایشگرهای
واقعی X11
نسخه: 0.9.17،
آخرین
تغییر: 2025-04-11
خلاصه دستور (SYNOPSIS)
x11vnc [گزینه]...
توضیحات (DESCRIPTION)
کاربرد متداول بدین صورت است:
- این دستور را در یک شل روی رایانه دوردست «far-host» با نشست X که مایل به مشاهده آن هستید اجرا کنید:
- x11vnc -display :0
- سپس این دستور را در پنجره دیگری روی رایانهای که پشت آن نشستهاید اجرا نمایید:
- vncviewer far-host:0
بهمحض اینکه x11vnc ارتباط خود را با کارساز X11 برقرار کرده و بهعنوان یک کارساز VNC شروع به شنود کند، رشتهای را چاپ خواهد کرد: PORT=XXXX که در آن XXXX معمولاً ۵۹۰۰ (درگاه پیشفرض کارساز VNC) است. در مرحله بعد کاربر چیزی شبیه به این را در رایانه محلی اجرا میکند: "vncviewer hostname:N" که در آن "hostname" نام رایانه اجراکننده x11vnc است و N برابر با 5900 - XXXX میباشد، یعنی معمولاً "vncviewer hostname:0".
بهطور پیشفرض x11vnc اجازه اشتراکگذاری صفحه را نمیدهد و بهمحض قطع اتصال کلاینت خارج میشود. برای لغو این محدودیتها گزینههای -shared و -forever را در زیر ببینید. برای جزئیات نحوه هدایت اتصال VNC از درون یک کانال رمزگذاریشده مانند ssh(1) پرسشهای متداول (FAQ) را بررسی کنید. به طور خلاصه:
- ssh -t -L 5900:localhost:5900 far-host 'x11vnc -localhost -display :0'
% vncviewer -encodings 'copyrect tight zrle hextile' localhost:0
همچنین، استفاده از گذرواژه VNC (-rfbauth یا -passwdfile) اکیداً توصیه میشود.
برای اطلاعات تکمیلی ببینید: http://www.karlrunge.com/x11vnc و http://www.karlrunge.com/x11vnc/faq.html
پشتیبانی از فایل پیکربندی: اگر فایل $HOME/.x11vncrc وجود داشته باشد، با هر خط آن بهعنوان یک گزینه خط فرمان رفتار میشود. این قابلیت با -norc غیرفعال میشود. برای نام هر گزینه، نویسه آغازین "-" الزامی نیست. بهعنوان مثال، خطی که شامل "forever" یا "-forever" باشد قابل استفاده بوده و این دو معادل هستند. به همین ترتیب "wait 100" یا "-wait 100" خطوطی مجاز و معادلند. نویسه "#" طبق معمول تا انتهای خط را نادیده میگیرد (برای استفاده به عنوان نویسه عادی یک بکاسلش پیش از آن بگذارید). فاصلههای خالی ابتدا و انتهای خطوط حذف میشوند. خطوط را میتوان با قرار دادن یک "\" در انتهای خط ادامه داد (که به یک نویسه فاصله تبدیل میشود).
گزینهها (OPTIONS)
-display disp
- نمایشگر کارساز X11 برای اتصال، معمولاً :0. فرایند کارساز X باید روی همان رایانه اجرا شده باشد و از MIT-SHM پشتیبانی کند. معادل با تنظیم متغیر محیطی DISPLAY روی disp است.
- توضیحات مربوط به افزونههای "-display WAIT:..." را در زیر ببینید، که در آن نام مستعار "-find" نمایشگر کاربر را بهطور خودکار پیدا میکند، و "-create" در صورت پیدا نشدن نشست، یک نشست Xvfb ایجاد خواهد کرد.
-auth file
- فایل مجوز X را روی file تنظیم میکند که معادل با تنظیم متغیر محیطی XAUTHORITY روی file پیش از راهاندازی است. مشابه با -xauth file. برای اطلاعات بیشتر صفحات راهنمای Xsecurity(7) و xauth(1) را ببینید.
- از '-auth guess' استفاده کنید تا x11vnc با سازوکار -findauth خود (توضیح داده شده در زیر) تلاش کند نام فایل XAUTHORITY را حدس زده و از آن استفاده کند.
- در XDM/GDM/KDM: اگر x11vnc را با دسترسی ریشه (root) اجرا میکنید و مایلید پیش از اینکه کاربری وارد نشست X شود XAUTHORITY را بیابید، از این دستور استفاده کنید: x11vnc -env FD_XDM=1 -auth guess ... (این دستور در صورتی که کاربر قبلاً وارد نشست X شده باشد نیز XAUTHORITY را خواهد یافت.) هنگام اجرا با دسترسی ریشه، اگر حدس اولیه -auth با شکست مواجه شود، FD_XDM=1 امتحان خواهد شد.
-N
- اگر نمایشگر X برابر :N باشد، تلاش میکند نمایشگر VNC را نیز روی :N تنظیم کند. این کار صرفاً گزینه -rfbport را روی 5900+N تنظیم میکند. در صورتی که آن درگاه در دسترس نباشد، برنامه بیدرنگ خارج خواهد شد. گزینه -N تنها با کاربرد عادی -display کار میکند (مانند :0 یا :8)؛ -N در حالتهای -display به صورت WAIT:...، -create، -find، -svc، -redirect و غیره نادیده گرفته میشود.
-autoport n
- پویش خودکار برای یافتن یک درگاه آزاد VNC با شروع از n. پیشفرض، شروع پویش از ۵۹۰۰ است. از این گزینه برای دور ماندن از سایر کارسازهای VNC نزدیک به ۵۹۰۰ استفاده کنید.
-rfbport str
- درگاه VNC برای شنود (یک گزینه مربوط به LibVNCServer)، برای مثال ۵۹۰۰، ۵۹۰۱ و غیره. اگر به صورت "-rfbport PROMPT" مشخص شود، رابط گرافیکی x11vnc (-gui) برای دریافت شماره درگاه از کاربر به کار گرفته میشود.
-6
- پشتیبانی از شنود IPv6. علاوه بر IPv4، برای اتصالات ورودی روی نشانی IPv6 نیز شنود انجام میشود. از همان شماره درگاه IPv4 استفاده خواهد شد.
- نکته: این فایل باینری x11vnc طوری کامپایل شده است که حالت شنود IPv6 یعنی "-6" بهطور پیشفرض در آن فعال (ENABLED) باشد (CPPFLAGS مقدار -DX11VNC_LISTEN6=1). بنابراین برای غیرفعال کردن حالت شنود IPv6 حتماً باید گزینه "-no6" را مشخص کنید (زیر را ببینید).
- حالت "-6" هم برای اتصالات عادی و هم برای اتصالات رمزگذاریشده با -ssl کار میکند. تقریباً همه قابلیتها برای حالت IPv6 پشتیبانی میشوند، اما چند استثنا وجود دارد. برای آگاهی از پشتیبانی آن از IPv6 گزینه -stunnel را ببینید.
- در حال حاضر، برای کارکرد کاملاً صحیح همهچیز، دستگاه ممکن است دستکم برای رابط loopback به مقداری پشتیبانی از IPv4 نیاز داشته باشد. با این حال، تقریباً برای همه حالتهای استفاده، نیازی به پشتیبانی IPv4 نیست. گزینه -noipv4 را ببینید.
- اگر در کامپایل یا اجرا در حالت IPv6 دچار مشکل شدید، مقدار -DX11VNC_IPV6=0 را در CPPFLAGS هنگام پیکربندی قرار دهید تا پشتیبانی از IPv6 غیرفعال شود.
-no6
- غیرفعال کردن پشتیبانی از شنود IPv6 (تنها زمانی کاربرد دارد که حالت "-6" در زمان کامپایل به عنوان پیشفرض در نظر گرفته شده باشد؛ توضیحات X11VNC_LISTEN6 را در بالا زیر "-6" ببینید).
-noipv6
- عدم تلاش برای استفاده از IPv6 در هیچیک از سوکتهای شنود یا اتصال. این مورد هم شامل درگاه(های) خدمات شنود و هم شامل اتصالات خروجی از سوی -connect، -connect_or_exit یا -proxy میشود. اگر به دلیل IPv6 دچار مشکل شدید از این گزینه استفاده کنید.
-noipv4
- عدم تلاش برای استفاده از IPv4 در هیچیک از سوکتهای شنود یا اتصال. این گزینه عمدتاً برای بررسی رفتار x11vnc روی سیستمی که فقط دارای IPv6 است کاربرد دارد، اما ممکن است مصارف دیگری نیز داشته باشد.
-reopen
- اگر اتصال کارساز X قطع شود، برای بازگشایی مجدد نمایشگر X تلاش میکند (حداکثر یک بار). این گزینه برای مدیران نمایشگری مانند GDM (گزینه KillInitClients) مفید است که x11vnc را درست پس از ورود کاربر به نشست X میبندند. نکته: وضعیت بازگشاییشده ممکن است ناپایدار باشد. مقدار X11VNC_REOPEN_DISPLAY=n را برای n بار بازگشایی مجدد، و X11VNC_REOPEN_SLEEP_MAX را روی تعداد ثانیهها (پیشفرض ۱۰) برای ادامه تلاش جهت بازگشایی نمایشگر (هر ثانیه یک بار) تنظیم کنید.
- بهروزرسانی: از نسخه 0.9.9، x11vnc تلاش میکند با به تأخیر انداختن ایجاد پنجرهها یا با استفاده از XFIXES، بهطور خودکار از کشته شدن توسط مدیر نمایشگر جلوگیری کند. بنابراین تا زمانی که به اندازه کافی سریع (ظرف ۴۵ ثانیه پس از اتصال) وارد شوید، نیازی به استفاده از KillInitClients=false نخواهید داشت. میتوانید با تنظیم X11VNC_AVOID_WINDOWS=never این ویژگی را غیرفعال کنید. همچنین میتوانید آن را روی تعداد ثانیههای تأخیر تنظیم نمایید.
-reflect host:N
- به جای اتصال و واکشی یک نمایشگر X، به کارساز VNC دوردست در host:N متصل میشود و به عنوان یک بازتابدهنده/تکرارکننده برای آن عمل میکند. این قابلیت برای مدیریت وضعیت تعداد زیادی از مشاهدهگران همزمان VNC (مانند پخش در کلاس درس) بسیار مفید است، بهطوری که مثلاً میتوانید برای بهبود کارایی از طریق توزیع بار و ترافیک شبکه، روی هر سوئیچ شبکه یک تکرارکننده قرار دهید. این گزینه مستلزم -shared است (از -noshared به عنوان گزینه بعدی برای غیرفعال کردن استفاده کنید). برای جزئیات بیشتر توضیحات زیر بخش -rawfb vnc:host:N را ببینید.
-id windowid
- نمایش پنجره X مربوط به windowid به جای کل نمایشگر. پنجرههای جدید مانند منوهای بازشو، پنجرههای فرعی گذرا و غیره ممکن است نمایش داده نشوند یا بریده شوند. غیرفعال کردن SaveUnders یا BackingStore در کارساز X ممکن است به نمایش آنها کمک کند. اگر پنجره در ابتدا تا حدی پنهان باشد، تغییر اندازه دهد، کوچک شود (iconified) و غیره، ممکن است x11vnc با خطا مواجه شده و متوقف شود. اقداماتی برای جلوگیری از این موضوع انجام گرفته و از سازوکار -xrandr برای ردیابی تغییر اندازهها استفاده میشود. از xwininfo(1) برای دریافت شناسه پنجره استفاده کنید، یا از "-id pick" استفاده نمایید تا x11vnc دستور xwininfo(1) را برای شما اجرا کرده و شناسه را استخراج کند. گزینه -id برای به اشتراکگذاری برنامههای بسیار ساده (مانند تصویر زنده یک وبکم) کاربرد دارد..PP -sid windowid
- مشابه -id، اما بهجای استفادهٔ مستقیم از پنجره، نمای پنجرهٔ ریشه (root view) را به سمت آن منتقل میکند: این کار منوهای SaveUnders و غیره را نمایش میدهد، هرچند اگر از محدودهٔ پنجره فراتر بروند، بریده خواهند شد.
-appshare
- اشتراکگذاری سادهٔ برنامه بر پایهٔ سازوکار -id/-sid. هر پنجرهٔ سطحبالای (toplevel) جدیدی که برنامه ایجاد میکند، از طریق یک اتصال معکوس (reverse connection) باعث باز شدن یک پنجرهٔ نمایشگر جدید میشود. گزینههای -id/-sid و -connect الزامی هستند. برای اطلاعات بیشتر فرمان 'x11vnc -appshare -help' را اجرا کنید.
-clip WxH+X+Y
- فقط زیرمنطقهای از کل نمایشگر را نشان میدهد که با ابعاد هندسی مستطیلی با اندازهٔ WxH و انحراف (آفست) +X+Y مطابقت دارد. اندازهٔ نمایشگر VNC برابر با WxH خواهد بود (یعنی کوچکتر از کل نمایشگر). این گزینه برای حالت -id/-sid نیز کار میکند که در آن آفست نسبت به گوشهٔ بالا و سمت چپ پنجرهٔ انتخابشده سنجیده میشود. یک نمونه کاربرد این گزینه، تقسیم یک صفحهٔ نمایش بزرگ (مانند Xinerama) به دو بخش برای دسترسی از طریق نمایشگرهای جداگانه با اجرای یک x11vnc مجزا روی هر بخش است.
- برای برش تصویر به نخستین زیرصفحهٔ xinerama (در صورت فعال بودن xinerama)، از '-clip xinerama0' استفاده کنید؛ xinerama1 برای دومین زیرصفحه و به همین ترتیب. بدینترتیب نیازی به محاسبهٔ WxH+X+Y زیرصفحهٔ دلخواه xinerama نخواهید داشت. صفحهها بر اساس افزایش فاصله از مبدأ (0,0) مرتب شدهاند (یعنی نه لزوماً طبق ترتیب Xserver).
-flashcmap
- در رنگ نمایهشدهٔ (indexed color) ۸ بیتی (8bpp)، اجازه میدهد با حرکت نشانگر از پنجرهای به پنجرهٔ دیگر، جدول رنگ (colormap) نصبشده چشمک بزند (کند). همچنین میتوانید گزینهٔ -8to24 را برای جلوگیری کامل از چشمک زدن امتحان کنید.
-shiftcmap n
- مشکلی نادر است، اما برخی از نمایشگرهای 8bpp از کمتر از ۲۵۶ سلول رنگ (colorcell) استفاده میکنند (مانند مقیاس خاکستری ۱۶ رنگ که احتمالاً بیتهای دیگر برای میانگیرسازی دوگانه استفاده میشوند) *و* همچنین نیاز دارند مقادیر پیکسلها را از 0, .., ncells شیفت دهند. مقدار n میزان جابهجایی (شیفت) اعمالشده بر مقادیر پیکسل را مشخص میکند. برای مشاهدهٔ مقادیر پیکسل، مقدار DEBUG_CMAP=1 را تنظیم کنید تا بافتنگار (هیستوگرام) جدول رنگ چاپ شود. مثال: -shiftcmap 240
-notruecolor
- برای نمایشگرهای 8bpp، استفاده از رنگ نمایهشده (یعنی colormap) را اجباری میکند حتی اگر شبیه به 8bpp TrueColor به نظر برسد (مشکلی نادر).
-advertise_truecolor
- اگر نمایشگر X11 از نوع رنگ نمایهشده باشد، هنگام نخستین اتصال کلاینتها با اعلام اینکه رنگ TrueColor است آنها را گمراه میکند. برای دور زدن مشکل RealVNC: در حالتی که inPF دارای colourMap است اما 8bpp نیست. از '-advertise_truecolor reset' برای بازنشانی فریمبافر کلاینت نیز استفاده کنید.
-visual n
- این گزینه احتمالاً آنچه را که فکر میکنید انجام نمیدهد. صرفاً ویژوال (visual) مورد استفاده برای فریمبافر را *اجباری* میکند؛ این کار ممکن است نامطلوب باشد... (مثلاً رنگها را به هم بریزد یا باعث فروپاشی برنامه شود). برای آزمایش و برخی روشهای دور زدن مشکلات مفید است. n میتواند یک عدد دهدهی یا یک مقدار هگزادسیمال 0x باشد. برای دریافت مقادیر، فرمان xdpyinfo(1) را اجرا کنید. همچنین میتوان از "TrueColor" و غیره استفاده کرد؛ برای مشاهدهٔ فهرست به <X11/X.h> مراجعه کنید. اگر رشته به ":m" ختم شود، در هر صورت عمق ویژوال روی m اجبار میشود. ممکن است هنگام استفاده از این گزینه بخواهید از -noshm استفاده کنید (تا XGetImage بتواند دادههای پیکسل را بهطور خودکار ترجمه کند).
-overlay
- مدیریت ویژوالهای با عمق چندگانه روی یک صفحه، مانند ویژوالهای همپوشان (overlay) ۸+۲۴ و ۲۴+۸ (۳۲ بیت در هر پیکسل به صورت ۸ بیت برای PseudoColor و ۲۴ بیت برای TrueColor بستهبندی شدهاند).
- در حال حاضر -overlay فقط روی Solaris از طریق XReadScreen(3X11) و روی IRIX با استفاده از XReadDisplay(3) کار میکند. در Solaris مشکلی در رابطه با «نشت تصویر» (bleeding) در اطراف منوهای جهندهٔ (popup) گذرا وجود دارد (اما نه در خود منو): راهحل این است که SaveUnders را با ارسال آرگومان «-su» به Xsun (در فایل /etc/dt/config/Xservers) غیرفعال کنید.
- از -overlay به عنوان راهحلی برای شرایطی مانند این استفاده کنید: برخی برنامههای قدیمی نیاز دارند که ویژوال پیشفرض 8bpp باشد (۸+۲۴)، یا حتی زمانی که ویژوال پیشفرض دارای عمق ۲۴ و از نوع TrueColor است، از PseudoColor با عمق 8bpp استفاده میکنند (۲۴+۸). در این موارد، رنگها در برخی پنجرهها در x11vnc نادرست خواهند بود مگر اینکه از -overlay استفاده شود. کاربرد دیگر -overlay فعالسازی نمایش شکل دقیق مکاننمای ماوس است (جزئیات در ادامه).
- تحت -overlay، کارایی به دلیل تبدیلهای تصویری اضافی مورد نیاز تا حدی کندتر خواهد بود. برای کارایی بهینه از -overlay استفاده نکنید، بلکه کارساز X را طوری پیکربندی کنید که ویژوال پیشفرض دارای عمق ۲۴ TrueColor باشد و سعی کنید تمام برنامهها از آن ویژوال استفاده کنند (مثلاً برخی برنامهها گزینههای -use24 یا -visual دارند).
-overlay_nocursor
- گزینهٔ -overlay را فعال میکند، اما تلاشی برای ترسیم شکل دقیق مکاننمای ماوس با استفاده از سازوکار همپوشانی انجام نمیدهد.
-8to24 [opts]
- اگر -overlay در سیستمعامل شما پشتیبانی نمیشود و برنامهٔ قدیمی 8bpp دارید که میخواهید آن را روی یک نمایشگر چندعمقی با عمق پیشفرض ۲۴ (و ۳۲ بیتی) مشاهده کنید، یا نمایشگری با عمق پیشفرض ۸ دارید که برای برخی برنامهها پنجرههای همپوشان با عمق ۲۴ دارد، این گزینه را امتحان کنید. این گزینه ممکن است روی همهٔ کارسازهای X و سختافزارها کار نکند (روی راهانداز mga در XFree86/Xorg و Xsun آزمایش شده است). رشتهٔ "opts" الزامی نیست و در ادامه شرح داده شده است.
- این حالت ترفندی را فعال میکند که در آن x11vnc پنجرهها را تا ۳ سطح از پنجرهٔ ریشه (root window) پایش میکند. اگر پنجرهای با عمق 8bpp پیدا کند، مقادیر پیکسلهای رنگ نمایهشده را با استفاده از ()XGetImage استخراج کرده و سپس تبدیلی با استفاده از جدول(های) رنگ اعمال میکند تا مقادیر TrueColor RGB بسازد و سپس آنها را در بیتهای ۱ تا ۲۴ فریمبافر قرار دهد. این کار یک «نمای» عمق ۲۴ از صفحه میسازد که سپس از طریق VNC ارائه میشود.
- برعکس، برای نمایشگرهایی با عمق پیشفرض ۸، ناحیههای دارای عمق ۲۴ توسط ()XGetImage خوانده شده و تمام دادهها تبدیل شده و در یک فریمبافر عمق ۲۴ TrueColor درج میشوند.
- توجه داشته باشید که حتی اگر *هیچ* ویژوال یا پنجرهای با عمق ۲۴ وجود نداشته باشد (یعنی کاملاً 8bpp)، این حالت بالقوه پیشرفتی نسبت به -flashcmap محسوب میشود؛ زیرا از چشمک زدن جلوگیری کرده و هر پنجره را با رنگ صحیح نشان میدهد.
- این روش به خوبی کار میکند، اما ممکن است همچنان اشکالاتی داشته باشد و منابع زیادی مصرف کند. اگر چندین پنجرهٔ 8bpp با جدولهای رنگ مختلف وجود داشته باشند، ممکن است لازم باشد برای درست بودن رنگها، همهٔ پنجرهها بهجز یکی کمینه (iconify) شوند.
- ممکن است خطاهای ترسیم در هنگام برش و جابهجایی میان پنجرههایی با عمقهای ۸ و ۲۴ رخ دهد. روشهای اکتشافی برای به حداقل رساندن خطاهای ترسیم اعمال شدهاند. همچنین در صورتی که خطا برطرف نشد، میتوان ۳ بار کلید Alt_L را پشتسرهم فشرد تا صفحه تازهسازی شود. همچنین گزینهٔ -fixscreen 8=3.0 یا -fixscreen V=3.0 میتواند برای تازهسازی دورهای صفحه به بهای مصرف پهنای باند استفاده شود (در این مثال هر ۳ ثانیه یکبار).
- رشتهٔ [opts] میتواند شامل تنظیمات زیر باشد. تنظیمات متعدد با ویرگول از یکدیگر جدا میشوند.
- برای برخی کارسازهای X با عمق پیشفرض ۲۴، ممکن است با استفاده از گزینهٔ "nogetimage" افزایش سرعت حاصل شود. این گزینه سازوکاری را فعال میکند که در آن از ()XGetImage برای بازیابی دادههای 8bpp استفاده نمیشود؛ در عوض فرض میکند که دادههای 8bpp در بیتهای ۲۵ تا ۳۲ پیکسلهای ۳۲ بیتی X قرار دارند. الزامی وجود ندارد که کارساز X دادهها را برای درخواستهای سرکشی (poll) در آنجا قرار دهد، اما برخی این کار را انجام میدهند و در نتیجه مراحل اضافی برای بازیابی دادهها نادیده گرفته میشود. با راهانداز mga در XFree86/Xorg آزمایش شده است. برای حالت عمق پیشفرض ۸ این گزینه نادیده گرفته میشود.
- برای تنظیم تناوب فراخوانی ()XGetImage جهت سرکشی تغییرات در ناحیههای ویژوال غیرپیشفرض، از گزینهٔ "poll=t" استفاده کنید که در آن "t" یک بازهٔ زمانی اعشاری (ممیز شناور) است. (پیشفرض: 0.05)
- تنظیم گزینهٔ "level2" جستوجوی پنجرههای دارای ویژوال غیرپیشفرض را به دو سطح از پنجرهٔ ریشه محدود میکند. این کار را روی رایانههای کند انجام دهید که مطمئن هستید مدیر پنجره تنها یک پنجرهٔ اضافی میان پنجرهٔ برنامه و پنجرهٔ ریشه ایجاد میکند.
- همچنین برای ماشینهای بسیار کند از "cachewin=t" استفاده کنید که در آن t مقدار زمانی اعشاری برای ذخیرهٔ موقت (کش کردن) نتایج XGetWindowAttributes است؛ مانند cachewin=5.0. این کار ممکن است باعث شود پنجرهها در هنگام خروج از حالت کمینه، خطاهای ترسیم و غیره به مدت این بازهٔ زمانی شناسایی نشوند.
- هنگام آزمایش روی یک SS20 بسیار قدیمی، این گزینهها پاسخدهی قابل تحملی ارائه دادند: -8to24 poll=0.2,cachewin=5.0. برای این دستگاه -overlay پشتیبانی میشود و کارایی بهتری ارائه میدهد.
- اشکالزدایی برای این حالت را میتوان با تنظیم "dbg=1"، "dbg=2" یا "dbg=3" فعال کرد.
-24to32.IP مشکل بسیار نادر: اگر فریمبافر (نمایشگر X یا -rawfb) بهجای 32bpp معمول 24bpp باشد، پیکسلها را بهصورت پویا به 32bpp تبدیل میکند. این کار کندتر خواهد بود، اما میتواند برای دور زدن مشکلاتی استفاده شود که نمایشدهندههای VNC توان مدیریت 24bpp را ندارند (مانند "main: setPF: not 8, 16 or 32 bpp?"). برای اطلاعات بیشتر FAQ را ببینید.
- در حالت -rawfb، پیکسلها مستقیماً با درج یک بایت 0 دستکاری میشوند تا به 32bpp تراز (pad) شوند. برای نمایشگرهای X، یک راهکار سرهمبندیشده انجام میشود که معادل "-noshm -visual TrueColor:32" است. (اگر عملکرد بهتری برای مورد دوم نیاز است، در پرسیدن آن تردید نکنید).
-scale fraction
- مقیاسبندی فریمبافر با ضریب fraction. مقادیر کمتر از ۱ فریمبافر را کوچک و مقادیر بزرگتر آن را بزرگ میکنند. نکته: تصویر ممکن است واضح نباشد و پاسخدهی ممکن است کندتر شود. اگر fraction حاوی نقطه ممیز "." باشد، بهعنوان یک عدد اعشاری در نظر گرفته میشود؛ در غیر این صورت میتوان از نماد "m/n" برای مشخص کردن دقیق کسرها استفاده کرد، مانند -scale 2/3
- برای مقیاسبندی نامتقارن در جهتهای افقی و عمودی، یک هندسه WxH را برای کشیده شدن به آن مشخص کنید: مانند '-scale 1024x768'، یا همچنین '-scale 0.9x0.75'
- گزینههای مقیاسبندی: میتوانند بعد از fraction از طریق ":" اضافه شوند؛ برای ارائه چندین گزینه ":" از کاما استفاده کنید. اگر صرفاً یک مقیاسبندی سریع و تقریبی بدون ترکیب (blending) میخواهید، ":nb" را به fraction الحاق کنید (مانند -scale 1/3:nb). عدم ترکیب، حالت پیشفرض برای رنگ نمایهدار 8bpp است؛ برای اجبار به ترکیب در این حالت از ":fb" استفاده کنید.
- برای غیرفعال کردن -scrollcopyrect و -wirecopyrect تحت -scale از ":nocr" استفاده کنید. اگر نیاز به فعالسازی آنها دارید از ":cr" استفاده کرده یا آنها را صراحتاً در خط فرمان مشخص کنید. اگر یک پیوند کند تشخیص داده شود، ":nocr" ممکن است بهطور خودکار اعمال شود. پیشفرض: :cr
- گزینههای خاصتر: برای سازگاری با vncviewerها عرض مقیاسبندیشده طوری تنظیم میشود که مضربی از ۴ باشد: برای غیرفعال کردن این حالت از ":n4" استفاده کنید. ":in" از طرح درونیابی حتی هنگام کوچک کردن استفاده میکند، ":pad" عرض و ارتفاع مقیاسبندیشده را طوری تراز (pad) میکند تا مضربی از مخرج مقیاسبندی باشند (مانند ۳ برای ۲/۳).
-geometry WxH
- مشابه -scale WxH
-scale_cursor frac
- بهطور پیشفرض در صورت ارائه -scale شکل مکاننما با همان ضریب مقیاسبندی میشود. بسته به کاربرد خود، ممکن است بخواهید مکاننما را مستقل از صفحه یا اصلاً مقیاسبندی نکنید. اگر -scale_cursor را مشخص کنید، مکاننما با آن ضریب مقیاسبندی خواهد شد. هنگام استفاده از حالت -scale برای نگه داشتن مکاننما در اندازه «طبیعی» خود از "-scale_cursor 1" استفاده کنید. اکثر گزینههای مقیاسبندی ":" در اینجا نیز اعمال میشوند.
-viewonly
- تمام کلاینتهای VNC فقط میتوانند مشاهده کنند (پیشفرض غیرفعال).
-shared
- نمایشگر VNC به اشتراک گذاشته میشود، یعنی بیش از یک بیننده میتواند بهطور همزمان متصل شود (پیشفرض غیرفعال).
-once
- پس از قطع اتصال نخستین بینندهای که با موفقیت متصل شده خارج میشود؛ نقطه مقابل -forever. این حالت پیشفرض است.
-forever
- بهجای خروج بلافاصله پس از قطع اتصال کلاینت(های) اول، همچنان برای اتصالات بیشتر شنود میکند. مشابه -many
- برای دستیابی به رفتار استاندارد VNC غیرمشترک که در آن با اتصال یک کلاینت VNC جدید، کلاینت VNC موجود قطع میشود، از این مورد استفاده کنید: -nevershared -forever این روش همچنین میتواند برای محافظت در برابر اتصالات TCP معلق که از بین نمیروند استفاده شود.
-loop
- یک حلقه بیرونی ایجاد میکند که هر زمان فرایند x11vnc خاتمه یافت، آن را مجدداً راهاندازی میکند. -bg و -inetd در این حالت نادیده گرفته میشوند (البته -loopbg را در زیر ببینید).
- برای ادامه کار حتی در صورت خاتمه و راهاندازی مجدد کارساز X مفید است (البته در آن لحظه فرایند برای اتصال مجدد به کارساز X جدید به دسترسی نیاز خواهد داشت).
- مثلاً از -loop100 برای ۱۰۰ میلیثانیه خواب بین راهاندازیهای مجدد و غیره استفاده کنید. پیشفرض ۲۰۰۰ میلیثانیه (یعنی ۲ ثانیه) است. مثلاً از -loop300,5 برای ۳۰۰ میلیثانیه خواب و تنها ۵ بار تکرار حلقه استفاده کنید.
- اگر بهجای آن -loopbg (به همراه هر عددی) مشخص شود، گزینه "-bg" ضمنی تلقی شده و این حالت تا حدی کاربرد inetd(8) را شبیهسازی میکند. در این حالت زمانی که فرایند به پسزمینه میرود، تمام سوکتهای شنودکننده (یعنی درگاههای ۵۹۰۰ و ۵۸۰۰) بسته میشوند، تا پردازش بعدی در حلقه بتواند از آنها استفاده کند. این حالت تنها زمانی مفید خواهد بود که یک کلاینت VNC (تنها کلاینت برای آن فرایند) قبل از رفتن فرایند به پسزمینه متصل شده باشد؛ برای مثال، استفاده از -display WAIT:..، -svc, و -connect میتواند از این حالت inetd ساده بهره ببرد. زمان انتظار پیشفرض در این حالت ۵۰۰ میلیثانیه است. این شیوه استفاده میتواند مفید باشد: -svc -bg -loopbg
-timeout n
- خروج از برنامه در صورتی که هیچ کلاینتی در n ثانیه اول پس از راهاندازی متصل نشود.
- اگر پس از n ثانیه هیچ تلاشی برای اتصال صورت نگرفته باشد، x11vnc بلافاصله خارج میشود. اگر کلاینتی در تلاش برای اتصال باشد اما به وضعیت کاری عادی نرسیده باشد، x11vnc چند ثانیه دیگر به آن فرصت میدهد تا کامل شود و در صورت نرسیدن به وضعیت عادی خارج میشود.
- برای اتصالات معکوس از طریق -connect یا -connect_or_exit مهلت زمانی n ثانیهای برای تمام اتصالات معکوس تنظیم خواهد شد. اگر هشدار مهلت اتصال سررسد، x11vnc بلافاصله خارج میشود.
-sleepin n
- در هنگام راهاندازی، n ثانیه قبل از ادامه کار درنگ میکند (مثلاً برای اینکه فرصت داده شود تغییرمسیرها و کلاینتهای شنودکننده راهاندازی شوند)
- اگر یک بازه تعیین شود: '-sleepin min-max'، مقداری تصادفی بین min و max درنگ میشود؛ مانند '-sleepin 0-20' و '-sleepin 10-30'. مقادیر اعشاری نیز مجاز هستند.
-inetd
- راهاندازی توسط inetd(8): استفاده از stdio بهجای سوکت شنود. نکته: اگر stderr را به یک فایل لاگ هدایت نمیکنید (از طریق پوسته با <2 یا گزینه -o)، حتماً باید گزینه -q را نیز مشخص کنید، در غیر این صورت stderr به بیننده ارسال شده که باعث لغو و خروج آن میشود. مشخص کردن هر دو گزینه -inetd و -q بدون -o خروجی stderr را بهطور خودکار میبندد.
-tightfilexfer
- فعالسازی افزونه انتقال فایل TightVNC. توجه داشته باشید که با ارائه گزینه -viewonly، تمام انتقالهای فایل غیرفعال میشوند. همچنین کلاینتهایی که فقط برای مشاهده (viewonly) وارد میشوند نمیتوانند فایلها را منتقل کنند. با این حال، اگر از سازوکار کنترل از راه دور برای تغییر وضعیت سراسری یا بر اساس کلاینتِ viewonly استفاده شود، مجوزهای انتقال فایل تغییر نخواهند کرد.
- مهم: لطفاً درک کنید که اگر -tightfilexfer مشخص شود و شما x11vnc را بهعنوان root مثلاً برای دسترسی inetd یا مدیر نمایش (gdm، kdm، ...) اجرا کنید و تعیین نکنید که از طریق گزینه -users به کاربر دیگری تغییر یابد، آنگاه بینندههای VNC که متصل میشوند قادر خواهند بود خواندن و نوشتن انتقال فایل را بهعنوان *root* انجام دهند.
- همچنین، tightfilexfer در حالت -unixpw غیرفعال است.
-ultrafilexfer
- نکته: برای فعالسازی انتقال فایل UltraVNC و به کار انداختن آن، احتمالاً باید این گزینههای LibVNCServer را ارائه دهید: "-rfbversion 3.6 -permitfiletransfer" عبارت "-ultrafilexfer" یک نام مستعار برای این ترکیب است.
- مهم: لطفاً درک کنید که اگر -ultrafilexfer مشخص شود و شما x11vnc را بهعنوان root مثلاً برای دسترسی inetd یا مدیر نمایش (gdm، kdm، ...) اجرا کنید و تعیین نکنید که از طریق گزینه -users به کاربر دیگری تغییر یابد، آنگاه بینندههای VNC که متصل میشوند قادر خواهند بود خواندن و نوشتن انتقال فایل را بهعنوان *root* انجام دهند.
- توجه داشته باشید که متأسفانه نمیتوانید -tightfilexfer و -ultrafilexfer را بهطور همزمان استفاده کنید، زیرا دومی نیازمند تنظیم نسخه روی 3.6 است و tightvnc با دیدن آن شماره نسخه، انتقال فایل را انجام نخواهد داد.
-http
- بهجای استفاده از -httpdir (پایینتر را ببینید) برای تعیین محل اپلت Java vncviewer، از x11vnc بخواهید تا با نگاه کردن نسبت به محل برنامه و در مکانهای استاندارد (/usr/local/share/x11vnc/classes و غیره)، مکان دایرکتوری را *حدس بزند*. تحت -ssl یا -stunnel زیردایرکتوری کلاسهای ssl جستجو میشود.
-http_ssl.IP مشابه -http، اما جستجو برای زیرپوشه کلاسهای ssl را اجباری میکند.
- توجه داشته باشید که برای HTTPS و تحویل Java applet روی تکپورت، میتوانید متغیر X11VNC_HTTPS_DOWNLOAD_WAIT_TIME را روی حداکثر تعداد ثانیههای انتظار برای پایان بارگیری applet تنظیم کنید. مقدار پیشفرض 15 است.
-avahi
- استفاده از پروتکل Avahi/mDNS ZeroConf برای اعلان این کارساز VNC در شبکه محلی. (اصطلاحات مرتبط: Rendezvous، Bonjour). بسته به پیکربندیتان، ممکن است لازم باشد avahi-daemon را اجرا کرده و درگاه udp شماره 5353 را در دیوار آتش خود باز کنید.
- میتوانید متغیرهای محیطی X11VNC_AVAHI_NAME، X11VNC_AVAHI_HOST و/یا X11VNC_AVAHI_PORT را برای بازنویسی مقادیر پیشفرض مقداردهی کنید. برای نمونه: -env X11VNC_AVAHI_NAME=wally
- اگر API مربوط به avahi در زمان ساخت یافت نشود، برنامهای کمکی مانند avahi- publish(1) یا dns- sd(1) آزمایش خواهد شد
-mdns
- مشابه -avahi.
-zeroconf
- مشابه -avahi.
-connect string
- برای استفاده در اتصالات معکوس (reverse connections) با «vncviewer -listen». اگر string به شکل «host» یا «host:port» باشد، اتصال یکبار در هنگام راهاندازی برقرار میشود.
- از ویرگول برای ارائه فهرستی از میزبانها به صورت host و host:port استفاده کنید. مانند -connect host1,host2 یا host1:0,host2:5678. توجه داشته باشید که برای برقراری اتصال معکوس همزمان به چند میزبان، احتمالاً باید گزینه -shared را نیز مشخص کنید.
- توجه داشته باشید که برخلاف اکثر کارسازهای vnc، برنامه x11vnc هم برای اتصالات معکوس و هم برای اتصالات مستقیم به گذرواژه نیاز خواهد داشت (به شرطی که احراز هویت با گذرواژه فعال شده باشد، مانند -rfbauth و غیره). اگر نمیخواهید برای اتصالات معکوس نیازی به گذرواژه باشد، پیش از اجرای x11vnc مقدار X11VNC_REVERSE_CONNECTION_NO_AUTH=1 را در محیط خود تنظیم کنید.
- اگر string حاوی «/» باشد، به عنوان فایلی تفسیر میشود که به صورت دورهای برای یافتن میزبانهای جدید بررسی خواهد شد. خط نخست خوانده شده و سپس حجم فایل به صفر کاهش مییابد (truncate). اگر x11vnc با دسترسی ریشه (root) اجرا میشود (برای نمونه از طریق gdm(1) یا غیره)، در خصوص مسیر و مکان این فایل بسیار محتاط باشید.
- حالت تکرارکننده (Repeater mode): برخی سرویسها یک «تکرارکننده vnc» واسط ارائه میدهند: http://www.uvnc.com/addons/repeater.html (و همچنین نسخه گنو/لینوکس آن در http://koti.mbnet.fi/jtko) که به عنوان یک پیشکار/درگاه (proxy/gateway) عمل میکند. حالتهایی مانند این نیازمند ارسال یک رشته اولیه برای اتصال معکوس، پیش از آغاز پروتکل VNC هستند. روشهای انجام این کار عبارتند از:
- -connect pre=some_string+host:port -connect pre128=some_string+host:port -connect repeater=ID:1234+host:port -connect repeater=23.45.67.89::5501+host:port
- نشانهگذاری SSVNC نیز پشتیبانی میشود:
- -connect repeater://host:port+ID:1234
- مشابه کاربرد عادی -connect، اگر درگاه repeater مشخص نشود، درگاه 5500 به عنوان پیشفرض در نظر گرفته میشود.
- ایده اصلی این است که رشته پیشین (pre-string) مورد نظر برای ارسال، میان برچسب ویژه (مانند «=pre») و «+» قرار میگیرد. توجه داشته باشید که در این حالت، host:port مربوط به کارساز repeater است، نه vnc viewer. این رشته پیشین به نوعی به کارساز repeater اعلام میکند که چگونه vnc viewer را یافته و شما را به آن متصل کند.
- در حالت pre=some_string+host:port، مقدار «some_string» به طور مستقیم ارسال میشود. در حالت preNNN=some_string+host:port، مقدار «some_string» در یک بافر پر شده با نویسههای تهی (null padded) به طول NNN ارسال خواهد شد. گزینه repeater= مشابه با pre250= بوده و نشاندهنده اندازه بافر تکرارکننده ultravnc است.
- رشتههایی مانند «\n» و «\r» و غیره به خط جدید (newline) و بازگشت به ابتدای سطر (carriage return) بسط مییابند. «\c» نیز به «,» تبدیل میشود زیرا رشتههای اتصال با کاما جدا میشوند.
- همچنین گزینه -proxy را در زیر برای روشهای بیشتر در هدایت اتصالات معکوس مشاهده کنید.
- حالت Reverse SSL: استفاده از -connect در حالت -ssl باعث میشود x11vnc به جای یک کارساز SSL، مانند یک کلاینت SSL عمل کند (اتصال SSL را آغاز کند). ایده این است که ممکن است x11vnc در سمت viewer که در حالت شنود (listening mode) قرار دارد، به stunnel متصل شود. اگر خواهان این رفتار نیستید، از -env X11VNC_DISABLE_SSL_CLIENT_MODE=1 استفاده کنید. با این کار، سمت viewer میتواند مانند حالت معمول در اتصالات مستقیم، نقش کلاینت SSL را ایفا کند.
- حالت Reverse SSL Repeater: این حالت کار خواهد کرد، اما توجه داشته باشید اگر کلاینت VNC پیش از اتصال، هرگونه عمل دریافت گواهی (Fetch Cert) را انجام دهد، احتمالاً repeater اتصال را قطع کرده و هر دو سمت نیاز به راهاندازی دوباره خواهند داشت. استفاده از -connect_or_exit و -loop300,2 را در نظر بگیرید تا x11vnc پس از دریافت گواهی، یک بار دیگر به repeater متصل شود. همچنین احتمالاً بهتر است گزینه -sslonly را نیز مشخص کنید تا x11vnc تاخیر در پاسخ را به معنای اتصال از نوع VeNCrypt برداشت نکند. متغیر محیطی X11VNC_DISABLE_SSL_CLIENT_MODE=1 که پیشتر مطرح شد نیز میتواند کاربردی باشد (بدین معنی که viewer میتواند اتصال مستقیم را طبق روال معمول برقرار کند).
- پروتکل IPv6: از نگارش 0.9.10 برنامه x11vnc به بعد، گزینه -connect باید بدون مشکل به میزبانهای IPv6 متصل شود. در صورت بروز هرگونه مشکل، میتوانید هنگام پیکربندی با تنظیم -DX11VNC_IPV6=0 در CPPFLAGS، پشتیبانی از IPv6 را غیرفعال کنید. اگر در برقراری ارتباط با میزبانهای IPv6 مشکلی وجود دارد، استفاده از یک رله مانند اسکریپت توکار inet6to4 یا گزینه -proxy را در نظر بگیرید.
-connect_or_exit str
- مشابه -connect است، به جز اینکه اگر هیچکدام از اتصالات معکوس با موفقیت برقرار نشوند، x11vnc بیدرنگ خاتمه مییابد.
- یک نام مستعار سادهتر برای نوشتن این گزینه، «coe-» است.
- ضمناً اگر نمیخواهید x11vnc روی هیچ رابط شبکهای به شنود بپردازد، از -rfbport 0 استفاده کنید که برای حالت -connect_or_exit بسیار کاربردی است.
-proxy string
- استفاده از پیشکار تعریفشده در string (مانند host:port) برای برقراری اتصالات معکوس (گزینههای connect- یا -connect_or_exit).
- پیشکارهای وب (Web proxies) پشتیبانی میشوند، اما توجه داشته باشید که به طور پیشفرض بیشتر آنها تنها از اتصالات مقصد به درگاههای 443 یا 563 پشتیبانی میکنند، بنابراین ممکن است چندان مفید واقع نشود (viewer باید روی آن درگاه شنود کند یا مسیریاب باید بازنشانی درگاه را انجام دهد).
- یک پیشکار وب میتواند با «host:port» یا «http://host:port» تعیین شود (تعیین درگاه الزامی است، حتی اگر درگاههای رایج 80 یا 8080 باشند).
- پیشکارهای SOCKS4، SOCKS4a و SOCKS5 نیز پشتیبانی میشوند. پیشکارهای SOCKS معمولاً محدودیتی روی شماره درگاه مقصد اعمال نمیکنند.
- از قالبی مانند socks://host:port یا socks5://host:port استفاده کنید. توجه داشته باشید که ابزار ssh -D از پروتکل SOCKS4a پشتیبانی نمیکند، بنابراین از //:socks5 استفاده نمایید. در قالب //:socks پروتکل SOCKS4 برای IPهای عددی و «localhost» استفاده میشود، و در غیر این صورت SOCKS4a به کار میرود (تا خود پیشکار عملیات وضوحبخشی DNS را بر عهده بگیرد).
- یک حالت آزمایشی دیگر «-proxy http://host:port/...» است. به علامت «/» پس از شماره درگاه که آن را از یک پیشکار وب معمولی متمایز میکند دقت داشته باشید. درگاه باید ذکر شود حتی اگر مقدار پیشفرض 80 باشد. در این حالت، یک درخواست GET به نشانی URL مشخصشده به همراه رشته الحاقی host=H&port=P ارسال میشود. متغیرهای H و P به ترتیب میزبان و درگاه اتصال معکوس در -connect خواهند بود. از رشته «__END__» برای غیرفعالسازی این الحاق استفاده کنید. ایده کلی در اینجا این است که شاید یک اسکریپت cgi امکان برقراری ارتباط با viewer و ایجاد تونل را فراهم میسازد. اینکه چگونه میتوان دقیقاً این کار را درون cgi، php و غیره پیادهسازی کرد کاملاً مشخص نیست... اما استفاده از یک کارساز وب سفارشی یا ماژول apache راهحلی سرراست خواهد بود.
- حالت آزمایشی دیگر «-proxy ssh://user@host» است که در آن از یک تونل SSH برای پیشکاری استفاده میشود. بخش «@user» الزامی نیست، مگر اینکه نام کاربری یونیکس شما روی «host» متفاوت باشد. برای درگاههای غیر استاندارد SSH از ssh://user@host:port استفاده کنید. اگر پیشکارها به صورت زنجیرهای متصل شوند (بند بعدی را ببینید)، پیشکار ssh باید اولین مورد در زنجیره باشد. در صورتی که ssh-agent فعال نباشد، گذرواژه ssh باید در پایانهای که x11vnc در آن در حال اجرا است وارد شود. مثالها:
- -connect localhost:0 -proxy ssh://me@friends-pc:2222
- -connect snoopy:0 -proxy ssh://ssh.company.com
- چندین پیشکار میتوانند به یکدیگر زنجیر شوند؛ در شرایطی که نیاز باشد ترافیک پیش از رسیدن نهایی به VNC viewer از میان چندین میزبان عبور کند. حداکثر 3 پیشکار را میتوان به هم زنجیر کرد که با ویرگول و بر اساس ترتیب اتصال جدا میشوند. مانند: http://host1:port1,socks5://host2:port2 یا سه مورد به شکل: first,second,third.IP IPv6: از نسخه 0.9.10 x11vnc به بعد، گزینه -proxy باید به درستی به میزبانهای IPv6 متصل شود. اگر مشکلی وجود دارد، میتوانید با تنظیم -DX11VNC_IPV6=0 در CPPFLAGS هنگام پیکربندی، IPv6 را غیرفعال کنید. اگر در اتصال به میزبانهای IPv6 مشکلاتی وجود دارد، استفاده از یک بازپخشکننده (relay) مانند اسکریپت گنجاندهشده inet6to4 را مد نظر قرار دهید.
-vncconnect, -novncconnect
- پایش ویژگی X به نام VNC_CONNECT که توسط برنامه استاندارد VNC یعنی vncconnect(1) تنظیم میشود. هنگامی که این ویژگی روی "host" یا "host:port" تنظیم شود، یک اتصال معکوس برقرار میکند. استفاده از xprop(1) به جای vncconnect ممکن است کار کند (FAQ را ببینید). سازوکار کنترل -remote از کانال X11VNC_REMOTE استفاده میکند، و این گزینه آن را نیز غیرفعال/فعال مینماید. پیشفرض: -vncconnect
- برای استفاده از نامهای متفاوت برای این ویژگیهای X11 (مثلاً برای داشتن کانالهای ارتباطی مجزا برای چندین نمونه x11vnc روی یک نمایشگر یکسان)، متغیرهای محیطی VNC_CONNECT یا X11VNC_REMOTE را روی رشته مورد نظرتان تنظیم کنید، به عنوان مثال: -env X11VNC_REMOTE=X11VNC_REMOTE_12345 هر دو طرف کانال باید از همان نام یکتا استفاده کنند. در صورت تمایل، همین کار را میتوان برای ویژگی داخلی X11VNC_TICKER (ضربان و برچسب زمانی) نیز انجام داد.
-allow host1[,host2..]
- تنها اجازه برقراری اتصال به کلاینتهایی را میدهد که با فهرست جداشده با کاما از نامهای میزبان یا نشانیهای IP همخوانی دارند. همچنین میتواند یک پیشوند عددی IP باشد، مانند "192.168.100." برای تطابق با یک زیرشبکه ساده؛ برای کنترل بیشتر، LibVNCServer را با پشتیبانی از libwrap بسازید (FAQ را ببینید). اگر فهرست شامل یک "/" باشد، به جای آن به عنوان فایلی حاوی نشانیها یا پیشوندها تفسیر میشود که با هر بار اتصال کلاینت جدید دوباره خوانده میشود. خطوط را میتوان به روش معمول با نویسه "#" کامنت کرد.
- گزینه -allow در حالت -ssl اعمال میشود، اما در حالت -stunnel خیر.
- IPv6: از نسخه 0.9.10 x11vnc به بعد، یک میزبان میتواند در قالب عددی IPv6 مشخص شود، مانند 2001:4860:b009::93.
-localhost
- اساساً مشابه «-allow 127.0.0.1» است.
- نکته: اگر میخواهید رابط شبکهای که x11vnc روی آن گوش میدهد را محدود کنید، گزینه -listen در زیر را ببینید. به عنوان مثال «-listen localhost» یا «-listen 192.168.3.21». به عنوان یک مورد خاص، گزینه «-localhost» به معنای «-listen localhost» نیز هست.
- یک مورد نادر، اما برای استفادههای غیر localhost از -listen، اگر از سازوکار کنترل از راه دور (-R) برای تغییر رابط -listen استفاده کنید، ممکن است لازم باشد فهرست -allow را به صورت دستی تنظیم کنید (و برعکس) تا از وضعیتهایی که در آن هیچ اتصالی (یا بیش از حد مجاز) برقرار نمیشود جلوگیری گردد.
- اگر نمیخواهید x11vnc روی هیچ رابطی گوش دهد (احتمالاً از -connect یا -connect_or_exit استفاده میکنید، یا قصد استفاده از کنترل از راه دور را دارید: -R connect:host)، از -rfbport 0 استفاده کنید.
- IPv6: در صورت پشتیبانی از IPv6، این گزینه به طور خودکار نشانی loopback مربوط به IPv6 یعنی '::1' را نیز شامل میشود.
-unixsock str
- گوش دادن روی سوکت یونیکس (AF_UNIX) با نام 'str' برای اتصالات. این حالت برای اتصالات محلی یا نقطه پایانی تونلی مناسب است که فرد میخواهد مجوز دسترسی فایل سوکت یونیکس تعیین کند چه کسی میتواند به آن متصل شود. (این مورد در حال حاضر نیازمند ویرایش libvnserver/rfbserver.c است: خطوط ۳۱۰ و ۳۱۱ یعنی 'close(sock)' و 'return NULL' در rfbserver.c پس از فراخوانی ()setsockopt کامنت شوند.) توجه داشته باشید که برای غیرفعال کردن تمامی پورتهای شنیداری tcp باید '-rfbport 0' را مشخص کنید که در این حالت مفید خواهد بود. مثال: mkdir ~/s; chmod 700 ~/s; x11vnc -unixsock ~/s/mysock -rfbport 0 ... برنامه SSVNC unix vncviewer میتواند به سوکتهای یونیکس متصل شود.
-listen6 str
- هنگام قرار داشتن در حالت شنود IPv6 با "-6"، فقط روی رابط شبکه با نشانی str گوش میدهد. این گزینه همچنین برای نشانیهای link scope (مانند fe80::219:dbff:fee5:3f92%eth0) و رشتههای نام میزبان IPv6 (مثلاً ipv6.google.com) کار میکند. برای رابط IPv4 از گزینه -listen در LibVNCServer استفاده کنید.
-nolookup
- عدم استفاده از ()gethostbyname یا ()gethostbyaddr برای جستجوی نامهای میزبان یا شمارههای IP. از این گزینه زمانی استفاده کنید که تحلیل نام به درستی تنظیم نشده و به دلیل انقضای مهلت (timeout) جستجوی نامها و موارد مشابه، باعث توقفهای طولانی میشود.
-input string
- تنظیم دقیق ورودی مجاز کاربر. اگر string شامل ویرگول "," نباشد، این تنظیم تنها برای کلاینتهای عادی اعمال میشود. در غیر این صورت، بخش قبل از "," برای کلاینتهای عادی و بخش بعد از آن برای کلاینتهای فقط-دیدنی (view-only) است. حرف "K" برای ورودی کلیدهای صفحهکلید، "M" برای حرکت ماوس، "B" برای کلیک دکمههای ماوس، "C" برای ورودی کلیپبورد، و "F" برای انتقال فایل (تنها در ultravnc) است. وجود هر یک از آنها در رشته، آن نوع ورودی را فعال میکند. به عنوان مثال، «-input M» یعنی کاربران عادی فقط میتوانند ماوس را حرکت دهند و «-input KMBCF,M» به کاربران عادی اجازه هر کاری را میدهد و به کاربران فقط-دیدنی اجازه حرکت ماوس را میدهد. این گزینه هنگامی که -viewonly سراسری فعال باشد نادیده گرفته میشود (در این حالت تمام ورودیها دور ریخته میشوند).
-grabkbd
- هنگام اتصال بینندههای VNC، تلاش برای تصاحب (grab) صفحهکلید تا کاربری (غیرمخرب) که پشت نمایشگر فیزیکی نشسته نتواند کلیدهایی را وارد کند. این روش از XGrabKeyboard(3X11) استفاده میکند و بنابراین امن نیست و مانع از تزریق کلیدها توسط فرد مستقر در پای نمایشگر فیزیکی با طغیان سرور، تصاحب صفحهکلید توسط خودش و غیره نمیشود. سطحی از همکاری از سوی شخص پای نمایشگر مفروض است. این گزینه برای حالتهای میز کمک از راه دور یا مقاصد آموزشی طراحی شده است.
- نکته: در برخی از سرورهای X و/یا میزکارهای جدیدتر (۱۲/۲۰۱۰)، گزینه -grabkbd دیگر کار نمیکند: مانع از تغییر اندازه پنجرهها توسط مدیر پنجره و کارهای مشابه میشود. گزینه -ungrabboth در زیر را امتحان کنید (ممکن است کار نکند).
-grabptr
- همانند -grabkbd اما برای اشارهگر ماوس با استفاده از XGrabPointer(3X11). متأسفانه به دلیل شیوه کار سرور X، ماوس همچنان میتواند توسط کاربر پشت نمایشگر فیزیکی جابهجا شود، اما او قادر به تغییر تمرکز پنجرهها با آن نخواهد بود. همچنین برخی از مدیران پنجره که XGrabServer(3X11) را برای تغییر اندازه و غیره فراخوانی میکنند، به ورودی کاربر محلی واکنش نشان خواهند داد. مجدداً، سطحی از همکاری از سوی شخص پای نمایشگر مفروض است.
-ungrabboth
- هر زمان که هر گونه ورودی (چه صفحهکلید و چه اشارهگر) وجود داشته باشد، هنگام تزریق ورودی ساختگی، تصاحب *هر دو*، یعنی صفحهکلید و اشارهگر را لغو میکند. این کار به مدیران پنجره و غیره فرصتی برای تصاحب میدهد.
-grabalways
- اعمال همزمان -grabkbd و -grabptr حتی زمانی که هیچ بیننده VNC متصل نیست. اگر فقط یکی از آنها را میخواهید، از کنترل از راه دور -R برای فعال کردن مجدد دیگری استفاده کنید، مانند -R nograbptr.
-viewpasswd string
- ارائه گذرواژه دوم برای ورودهای فقط-دیدنی. گذرواژه -passwd (دسترسی کامل) نیز باید ارائه شده باشد.
-passwdfile filename
- تعیین گذرواژه LibVNCServer از طریق سطر اول فایل filename (به جای استفاده از -passwd در خط فرمان که دیگران ممکن است آن را از طریق ps(1) ببینند).
- برای چگونگی ارائه چندین گذرواژه، گذرواژههای فقط-دیدنی، تعیین برنامههای خارجی برای احراز هویت و سایر ویژگیها، توضیحات زیر را ببینید.
- اگر نام فایل دارای پیشوند "rm:" باشد، پس از خوانده شدن حذف خواهد شد. احتمالاً این ویژگی برای محدود کردن قابلیت خوانده شدن فایل مفید است. به طور کلی، فایل گذرواژه نباید توسط کاربران غیرقابل اعتماد قابل خواندن باشد (در ضمن: فایل -rfbauth مربوط به VNC نیز نباید خوانده شود: این فایل رمزنگاری نشده، بلکه صرفاً با یک کلید ثابت مبهمسازی شده است).
- اگر نام فایل دارای پیشوند "read:" باشد، به صورت دورهای برای بررسی تغییرات بررسی و دوباره خوانده میشود. تضمین شده است که درست هنگام اتصال کلاینت جدید دوباره خوانده شود تا جدیدترین گذرواژهها به کار روند.
- اگر filename دارای پیشوند "cmd:" باشد، رشته بعد از ":" به عنوان یک دستور خارجی اجرا میشود: خروجی دستور طوری تفسیر خواهد شد که گویی از یک فایل گذرواژه خوانده شده است (زیر را ببینید). اگر دستور با وضعیت 0 خارج نشود، x11vnc بلافاصله خاتمه مییابد. برای تعیین بیش از ۱۰۰۰ گذرواژه از این طریق، متغیر X11VNC_MAX_PASSWDS را قبل از شروع x11vnc تنظیم کنید. متغیرهای محیطی همانند -accept تنظیم میشوند..IP توجه داشته باشید که به دلیل پروتکل VNC، تنها ۸ نویسه اول یک گذرواژه استفاده میشوند (کلید DES).
- اگر filename با پیشوند "custom:" مشخص شود، یک بررسیکننده گذرواژه سفارشی به عنوان یک دستور خارجی پس از ":" ارائه میگردد. این دستور زمانی که یک کلاینت احراز هویت میکند اجرا خواهد شد. اگر دستور با 0 خارج شود، کلاینت پذیرفته میشود، در غیر این صورت رد خواهد شد. متغیرهای محیطی همانند -accept. تنظیم میشوند.
- ورودی استاندارد برای دستور سفارشی، یک رقم دهدهی "len" خواهد بود که به دنبال آن یک خط جدید (newline) میآید. مقدار "len" اندازه چالش (challenge) را مشخص میکند و معمولاً ۱۶ است (مشخصات پروتکل VNC). سپس len بایت میآید که رشته چالش تصادفی ارسال شده به کلاینت است. پس از آن len بایت دیگر حاوی پاسخ کلاینت ارائه میشود (یعنی رشته چالش رمزگذاریشده با DES توسط گذرواژه کاربر در شرایط استاندارد).
- طرح "custom:" میتواند برای پیادهسازی گذرواژههای پویا یا پیادهسازی روشهایی که در آنها گذرواژههای طولانیتر و/یا الگوریتمهای رمزنگاری متفاوتی به کار میروند مفید باشد. مورد دوم نیازمند سفارشیسازی کلاینت VNC نیز خواهد بود. به عنوان مثال، میتوان طرحی مبتنی بر MD5SUM ایجاد کرد.
- قالب فایل برای -passwdfile:
- اگر چندین خط غیرخالی در فایل وجود داشته باشد، همگی به عنوان گذرواژههای معتبر در نظر گرفته میشوند. خطوط خالی نادیده گرفته میشوند. خطوط گذرواژه ممکن است در صورتی که با نویسه "#" آغاز شوند یا خط شامل رشته "__SKIP__" باشد، "کامنت" (نادیده گرفته) شوند. خطوط را میتوان با استفاده از رشته "__COMM__" حاشیهنویسی کرد: از این رشته تا انتهای خط نادیده گرفته میشود. یک گذرواژه خالی را میتوان با استفاده از رشته "__EMPTY__" به تنهایی در یک خط مشخص کرد (توجه داشته باشید که ممکن است نمایشگر شما گذرواژههای خالی را نپذیرد).
- اگر رشته "__BEGIN_VIEWONLY__" به تنهایی در یک خط ظاهر شود، گذرواژههای باقیمانده برای دسترسی فقط-مشاهده (viewonly) استفاده میشوند. برای سازگاری، به عنوان یک حالت خاص، اگر فایل تنها شامل دو خط گذرواژه باشد، خط دوم به طور خودکار به عنوان گذرواژه فقط-مشاهده در نظر گرفته میشود. در غیر این صورت، برای داشتن گذرواژههای فقط-مشاهده باید از نشانگر "__BEGIN_VIEWONLY__" استفاده شود. (نکته: خط سوم و آخر را "__BEGIN_VIEWONLY__" قرار دهید تا ۲ گذرواژه با دسترسی کامل داشته باشید)
-showrfbauth filename
- گذرواژه مبهمشده VNC نگهداریشده در فایل rfbauth با نام filename را روی صفحه چاپ کرده و سپس خارج میشود.
-unixpw [list]
- استفاده از احراز هویت با نام کاربری و گذرواژه یونیکس. x11vnc از برنامه su(1) برای تأیید گذرواژه کاربر استفاده خواهد کرد. [list] یک فهرست اختیاری از نامهای کاربری مجاز یونیکس است که با کاما از هم جدا شدهاند. اگر رشته [list] با نویسه "!" آغاز شود، کل فهرست به عنوان فهرست استثنا در نظر گرفته میشود. گزینههای قابل اعمال به ازای هر کاربر را در زیر ببینید.
- یک کادر گفتگوی آشنای "login:" و "Password:" روی یک صفحه سیاه در داخل vncviewer به کاربر نمایش داده میشود. اگر کاربر نتواند در ۳ تلاش گذرواژه درست را وارد کند یا پیش از مهلت زمانی ۴۵ ثانیهای آن را ارسال نکند، اتصال قطع میشود. کلاینتهای موجود در این بازه در حالت فقط-مشاهده خواهند بود.
- اگر اولین نویسه دریافتی "Escape" باشد، نام کاربری یونیکس هنگام تایپ شدن پس از "login:" نمایش داده نخواهد شد. این مورد میتواند برای نمایشگرهای VNC که نام کاربری و گذرواژه را به طور خودکار تایپ میکنند مفید باشد.
- از آنجا که رفتار دقیق su(1) میتواند از یک سیستمعامل به سیستمعامل دیگر و بر اساس پیکربندیهای محلی تفاوت داشته باشد، این حالت را پیش از بهکارگیری آزمایش کنید تا مطمئن شوید به درستی کار میکند. x11vnc تلاش خواهد کرد محافظهکارانه عمل کرده و در صورت بروز هرگونه وضعیت غیرعادی، ورود را رد کند.
- یک مورد قابل توجه: در FreeBSD و سایر BSDها به طور پیشفرض، برای کاربری که x11vnc را اجرا میکند غیرممکن است که گذرواژه *خودش* را از طریق su(1) اعتبارسنجی کند (کامنت کردن مدخل pam_self.so در /etc/pam.d/su این رفتار را از بین میبرد). بنابراین ورود به x11vnc برای این مورد همواره با *شکست* مواجه خواهد شد (حتی در صورت ارائه گذرواژه صحیح).
- یک راهکار ممکن برای این موضوع در BSDها میتواند شروع x11vnc به عنوان ریشه با گزینه "-users +nobody" باشد تا بلافاصله به کاربر nobody تغییر یابد، جایی که su کردن به طور عادی پیش خواهد رفت.
- منبع دیگر مشکلات احتمالی، ماژولهای PAM هستند که اطلاعات اضافی درخواست میکنند، مانند ماژولهای انقضای گذرواژه (password aging). این ورودها نیز حتی در صورت ارائه گذرواژه صحیح شکست خواهند خورد.
- **مهم**: برای جلوگیری از ارسال گذرواژه یونیکس به صورت *متن آشکار* در شبکه، یکی از دو طرح زیر اعمال خواهد شد: ۱) حالت داخلی SSL با -ssl، یا ۲) الزام به فعال بودن همزمان -localhost و -stunnel.
- روش ۱) تضمین میکند که ترافیک بین نمایشگر و کارساز رمزگذاری شده است. یک فایل PEM مورد نیاز خواهد بود، به توضیحات زیر بخش -ssl در ادامه مراجعه کنید (تحت شرایط خاصی میتوان یک فایل موقت را به طور خودکار ایجاد کرد).
- روش ۲) نیازمند آن است که اتصال نمایشگر طوری به نظر برسد که از همان ماشینی میآید که x11vnc روی آن در حال اجراست (برای مثال از طریق تغییر مسیر پورت با -L در ssh). و اینکه از حالت SSL با -stunnel برای رمزگذاری روی شبکه استفاده شود (توضیحات -stunnel را در زیر ببینید).
- نکته: جهت سهولت، اگر از طریق ssh(1) متصل شوید و x11vnc را اجرا کنید، بررسی خواهد شد که آیا متغیر محیطی SSH_CONNECTION تنظیم شده و معقول به نظر میرسد یا خیر. اگر چنین باشد، الزام -ssl یا -stunnel کنار گذاشته میشود زیرا فرض بر این است که از ssh برای تونلزنی رمزگذاریشده استفاده میکنید. -localhost همچنان اعمال خواهد شد. برای اجبار به استفاده از SSL حتی در صورت تنظیم بودن SSH_CONNECTION، از -ssl یا -stunnel استفاده کنید.
- برای نادیده گرفتن محدودیتهای بالا میتوانید پیش از اجرای x11vnc متغیرهای محیطی را تنظیم کنید:
- برای غیرفعال کردن الزام هر یک از -ssl یا -stunnel (مانند وضعیت زیر SSH_CONNECTION)، مقدار UNIXPW_DISABLE_SSL=1 را تنظیم کنید. بدیهی است که در این صورت از روش دیگری برای رمزگذاری دادهها بین vncviewer و x11vnc استفاده خواهید کرد: شاید ssh(1) یا یک IPSEC VPN. با این حال، -localhost همچنان اعمال میشود (هرچند بند بعدی را ببینید).
- برای غیرفعال کردن الزام -localhost در حالتهای -unixpw مقدار UNIXPW_DISABLE_LOCALHOST=1 را تنظیم کنید. هرگز نباید این کار را انجام داد (چرا که امکان شنود گذرواژههای یونیکس در شبکه را فراهم میکند). این کار همچنین الزام localhost را برای اتصالات معکوس غیرفعال میکند (زیر را ببینید).
- توجه داشته باشید که استفاده از -localhost همراه با ssh(1) (و بدون -unixpw) تقریباً مشابه الزام به ورود کاربر یونیکس است (چرا که احراز هویت با گذرواژه یونیکس یا کلید عمومی کاربر توسط sshd روی ماشینی که x11vnc روی آن اجرا میشود استفاده میگردد و تنها اتصالات محلی از آن ماشین پذیرفته میشوند).
- در خصوص اتصالات معکوس (مانند -R connect:host و -connect host)، هنگامی که قید -localhost برقرار باشد، اتصالات معکوس تنها برای اتصال به همان ماشینی که x11vnc روی آن در حال اجراست قابل استفاده هستند (پورت پیشفرض 5500). لطفاً از یک تغییر مسیر پورت ssh یا stunnel به ماشین نمایشگر استفاده کنید تا اتصال معکوس را از طریق یک کانال رمزگذاریشده تونل نمایید.
- در حالت -inetd روش ۱) اعمال خواهد شد (نه روش ۲). با برقراری -ssl اتصالات معکوس غیرفعال میشوند. اگر این موضوع را از طریق متغیر محیطی نادیده گرفتید، مطمئن شوید که از رمزگذاری بین نمایشگر تا inetd نیز استفاده میکنید. نکته: همچنین میتوانید کاری کنید که stunnel خودتان، x11vnc را در حالت -inetd اجرا کند (بدین ترتیب inetd دور زده میشود). برای جزئیات به بخش سؤالات متداول (FAQ) مراجعه کنید.
- نامهای کاربری در [list] جدا شده با کاما، میتوانند پس از یک ":" گزینههای اختصاصی به ازای هر کاربر داشته باشند، مثلاً "fred:opts" که در آن "opts" فهرستی جدا شده با "+" از مقادیر "viewonly"، "fullaccess"، "input=XXXX" یا "deny" است، مانند "karl,wally:viewonly,boss:input=M". برای "input=" همان K، M، B و C توصیفشده زیر -input. است.
- اگر موردی در فهرست "*" باشد، به این معنی است که آن گزینهها برای همه کاربران اعمال میشوند. این همچنین بدان معناست که همه کاربران پس از ارائه گذرواژه معتبر مجاز به ورود هستند. اگر از "*" برای تنظیم یک گزینه سراسری استفاده میکنید، از "deny" برای صریحاً رد کردن برخی کاربران استفاده نمایید. اگر [list] با نویسه "!" آغاز شود، "*" برای بررسی مجاز بودن کاربر نادیده گرفته میشود، اما مقادیر گزینه مربوط به آن طبق معمول اعمال خواهند شد.
- همچنین در صورتی که [list] با نویسه "%" شروع شود، ابزارهایی برای بررسی گذرواژهها وجود دارد. برای جزئیات بیشتر به تابع quick_pw() مراجعه کنید. شرح: "%-" یا "%stdin" به معنای خواندن یک خط از ورودی استاندارد (stdin) است. "%env" به این معنی است که در متغیر محیطی $UNIXPW قرار دارد. شروع با "%/" یا "%." به معنای خواندن اولین خط از نام فایلی است که پس از نویسه % میآید. خود % به تنهایی به معنای درخواست نام کاربری و گذرواژه است. در غیر این صورت: %user:pass برای مثال: -unixpw %fred:swordfish برای سایر موارد، user:pass از منبع مشخصشده خوانده میشود. اگر گذرواژه درست باشد، 'Y user' چاپ شده و کد خروج برنامه 0 است. اگر گذرواژه نادرست باشد، 'N user' چاپ شده و کد خروج 1 است. در صورت بروز هر خطای دیگر، کد خروج 2 خواهد بود. این ویژگی x11vnc را قادر میسازد به عنوان یک ابزار عمومی برای بررسی گذرواژه کاربران یونیکس عمل کند؛ و میتوان از آن در اسکریپتها یا برنامههای دیگر استفاده کرد. این بررسیهای گذرواژه با % همچنین برای گزینههای -unixpw_nis و -unixpw_cmd نیز اعمال میشوند..IP برای بررسی گذرواژه %، اگر متغیر محیطی UNIXPW_CMD روی یک دستور تنظیم شده باشد، آنگاه به عنوان آن کاربر اجرا میشود (با فرض اینکه گذرواژه درست باشد). خروجی دستور چاپ نمیشود، برنامه یا اسکریپت باید آن را با روشهای دیگری مدیریت کند. کد خروج x11vnc به کد خروج دستور اجراشده بستگی خواهد داشت.
- از -nounixpw برای غیرفعال کردن حالت unixpw در صورتی که پیشتر در خط فرمان فعال شده بود (مانند حالت -svc) استفاده کنید.
-unixpw_nis [list]
- مانند -unixpw در بالا، با این تفاوت که به جای استفاده از su(1) از روش سنتی getpwnam(3) + crypt(3) برای تأیید اعتبار گذرواژهها استفاده میکند. تمام گزینهها و محدودیتهای -unixpw که در بالا ذکر شد، اعمال میشوند.
- این حالت نیازمند آن است که گذرواژههای رمزگذاریشده خواندنی باشند. گذرواژههای رمزگذاریشده ذخیرهشده در /etc/shadow غیرقابل دسترس خواهند بود مگر اینکه x11vnc به عنوان کاربر ریشه (root) اجرا شود.
- این حالت صرفاً از این جهت حالت «NIS» نامیده میشود که در اکثر پیکربندیهای NIS، گذرواژههای رمزگذاریشده کاربر برای یک کاربر عادی قابل دسترسی هستند (مثلاً "ypcat passwd") و بنابراین آن کاربر میتواند هر کاربری را اعتبارسنجی کند.
- برای کارکرد این حالت، NIS الزامی نیست (تنها نیاز است که getpwnam(3) گذرواژه رمزگذاریشده را برگرداند)، اما بعید است که (به عنوان یک کاربر عادی) برای بیشتر محیطهای مدرن کار کند، مگر اینکه NIS در دسترس باشد. از سوی دیگر، هنگامی که x11vnc به عنوان ریشه اجرا میشود، میتواند به /etc/shadow دسترسی داشته باشد حتی اگر NIS در دسترس نباشد (توجه داشته باشید که اجرای با دسترسی ریشه اغلب هنگام اجرای x11vnc از طریق inetd و xdm/gdm/kdm انجام میشود).
- به بیانی دیگر، اگر نمیخواهید از روش su(1) ارائهشده توسط -unixpw (یعنی ()su_verify) استفاده کنید، میتوانید x11vnc را به عنوان ریشه اجرا کرده و از -unixpw_nis استفاده کنید. در این صورت هر کاربری که گذرواژهاش در /etc/shadow باشد میتواند اعتبارسنجی شود.
- در حالت -unixpw_nis، تحت هیچ شرایطی تابع بررسی گذرواژه کاربر مبتنی بر su در x11vnc فراخوانی نمیشود (یعنی تابع ()su_verify که برای بررسی گذرواژهها /bin/su را در یک شبهترمینال اجرا میکند). با این حال، اگر -unixpw_nis در کنار حالتهای -find و -create -display WAIT:... استفاده شود، در صورتی که x11vnc با دسترسی ریشه در حال اجرا باشد، ممکن است /bin/su به طور خارجی برای اجرای دستورهای find یا create فراخوانی شود.
-unixpw_cmd cmd
- مانند -unixpw در بالا، با این حال به جای استفاده از su(1) دستور خارجیِ ارائهشده cmd را اجرا میکند. خط اول ورودی استاندارد (stdin) آن، نام کاربری و خط دوم، گذرواژه دریافتی خواهد بود. اگر دستور با وضعیت 0 (موفقیت) خارج شود، کاربر VNC پذیرفته میشود. برای هر وضعیت بازگشتی دیگری رد خواهد شد.
- گذرواژههای پویا و گذرواژههای غیر یونیکسی مانند LDAP، میتوانند از این طریق با ارائه برنامه کمکی سفارشی شما پیادهسازی شوند. توجه داشته باشید که به بیننده راه دور ۳ بار فرصت برای وارد کردن گذرواژه درست داده میشود، بنابراین ممکن است برنامه به همان تعداد (یا بیشتر) پشت سر هم فراخوانی شود.
- اگر برای محدود کردن افرادی که میتوانند وارد شوند به فهرستی از کاربران مجاز نیاز است، علاوه بر این گزینه از -unixpw [list] استفاده کنید.
- در حالتهای FINDDISPLAY و FINDCREATEDISPLAY، دستور cmd همچنین با متغیر محیطی غیرخالی RFB_UNIXPW_CMD_RUN که روی دستور مربوط به find/create نمایشگر تنظیم شده است، اجرا خواهد شد. دو خط اول ورودی همانطور که در حالت عادیِ توصیفشده در بالا ذکر شد، نام کاربری و گذرواژه هستند. برای پشتیبانی از FINDDISPLAY و FINDCREATEDISPLAY، دستور cmd باید دستور درخواستی را به عنوان آن کاربر اجرا کند (و به احتمال زیاد در صورت نادرست بودن گذرواژه از اجرای آن خودداری نماید). در اینجا یک اسکریپت نمونه آمده است (توجه داشته باشید که دارای گذرواژه ساختگی و ثابت "abc" است!):
- #!/bin/sh # Example x11vnc -unixpw_cmd script. # Read the first two lines of stdin (user and passwd) read user read pass
- debug=0 if [ $debug = 1 ]; then echo "user: $user" 1>&2 echo "pass: $pass" 1>&2 env | egrep -i 'rfb|vnc' 1>&2 fi
- # Check if the password is valid. # (A real example would use ldap lookup, etc!) if [ "X$pass" != "Xabc" ]; then exit 1 # incorrect password fi
- if [ "X$RFB_UNIXPW_CMD_RUN" = "X" ]; then exit 0 # correct password else # Run the requested command (finddisplay) if [ $debug = 1 ]; then echo "run: $RFB_UNIXPW_CMD_RUN" 1>&2 fi exec /bin/su - "$user" -c "$RFB_UNIXPW_CMD_RUN" fi
- در حالت -unixpw_cmd، تحت هیچ شرایطی تابع بررسی گذرواژه کاربر مبتنی بر su در x11vnc فراخوانی نمیشود (یعنی تابع ()su_verify که برای بررسی گذرواژهها /bin/su را در یک شبهترمینال اجرا میکند). این بر عهده unixpw_cmd ارائهشده است که در صورت تمایل و در صورت داشتن مجوزهای لازم، تعویض کاربر را انجام دهد.
-find
- نمایشگر کاربر را با استفاده از FINDDISPLAY پیدا میکند. این یک نام مستعار برای "-display WAIT:cmd=FINDDISPLAY" است.
- نکته: اگر -display در ادامه خط فرمان ظاهر شود، تنظیمات -find را بازنویسی میکند.
- برای این گزینه و چند گزینه بعدی، جهت مشاهده تمام جزئیات به -display WAIT:... در زیر مراجعه کنید.
-finddpy
- برنامه FINDDISPLAY را اجرا کرده، نمایشگر پیداشده (در صورت وجود) را چاپ نموده و خارج میشود. خروجی شبیه این است: DISPLAY=:0.0 یا DISPLAY=:0.0,XPID=12345 یا DISPLAY=:0.0,VT=7. شناسه XPID شناسه فرایند کارساز X پیداشده است. شناسه VT ترمینال مجازی لینوکس برای کارساز X است.
-listdpy
- برنامه FINDDISPLAY را وادار میکند تا تمام نمایشگرهای شما را فهرست کند (یعنی تمام نمایشگرهای X روی ماشین محلی که به آنها حق دسترسی دارید). سپس x11vnc خارج میشود.
-findauth [disp]
- روشهای اکتشافی -find/-finddpy را به کار میگیرد تا فایل XAUTHORITY را برای نمایشگر 'disp' حدس بزند. اگر 'disp' ارائه نشود، از مقدار -display در خط فرمان استفاده میشود؛ در غیر این صورت از DISPLAY$ استفاده میشود؛ و در صورت عدم موفقیت از ":0" استفاده میگردد. سپس x11vnc خارج میشود.
- اگر چیزی در خروجی چاپ نشود، به این معنی است که هیچ XAUTHORITY برای 'disp' یافت نشد؛ یعنی شکست در عملیات. اگر "XAUTHORITY=" چاپ شود، یعنی از مقدار پیشفرض استفاده کنید (یعنی XAUTHORITY را تنظیم نکنید). اگر "XAUTHORITY=/path/to/file" چاپ شود، از آن فایل استفاده کنید.
- در XDM/GDM/KDM: اگر x11vnc را به عنوان ریشه اجرا میکنید و میخواهید پیش از آنکه کسی به یک نشست X وارد شود XAUTHORITY را پیدا کنید، از این دستور استفاده کنید: x11vnc -env FD_XDM=1 -findauth ... (این دستور همچنین در صورتی که کاربری پیشتر به نشست X وارد شده باشد، XAUTHORITY را پیدا خواهد کرد.) هنگام اجرا با دسترسی ریشه، در صورتی که -findauth اولیه با شکست مواجه شود، FD_XDM=1 آزمایش خواهد شد.
-create
- ابتدا سعی میکند با استفاده از FINDDISPLAY نمایشگر کاربر را پیدا کند؛ اگر موفق نشد، یک نشست X را از طریق روش FINDCREATEDISPLAY ایجاد میکند. این یک نام مستعار برای "-display WAIT:cmd=FINDCREATEDISPLAY-Xvfb" است.
- نکته: اگر -display در ادامه خط فرمان ظاهر شود، تنظیمات -create را بازنویسی خواهد کرد.
- نکته در مورد SSH: برای هر دو گزینه -find و -create میتوانید (و باید!) گزینه "-localhost" را اضافه کنید تا دسترسی از طریق تونل SSH اجباری شود.
-xdummy
- مانند -create، با این تفاوت که به جای Xvfb از Xdummy استفاده میشود.
-xvnc
- مانند -create، با این تفاوت که به جای Xvfb از Xvnc استفاده میشود.
-xvnc_redirect
- مانند -create، با این تفاوت که به جای Xvfb از Xvnc.redirect استفاده میشود.
-xdummy_xvfb
- WAIT:cmd=FINDCREATEDISPLAY-Xdummy,Xvfb را تنظیم میکند.
-create_xsrv str.IP مقدار WAIT:cmd=FINDCREATEDISPLAY-<str> را تنظیم میکند. میتواند در خط فرمان پس از هر چیزی که WAIT:.. و موارد دیگر را تنظیم میکند (مانند -svc، -xdmsvc) برای تنظیم فهرست کارساز X قرار گیرد. مثال: -svc ... -create_xsrv Xdummy,X
-svc
- حالت خدمات ترمینال بر پایهٔ دسترسی SSL. نام مستعاری برای -display WAIT:cmd=FINDCREATEDISPLAY-Xvfb -unixpw -users unixpw= -ssl SAVE همچنین "-service".
- نکته: اگر گزینههای -display، -unixpw، -users، یا -ssl بعداً در خط فرمان بیایند، تنظیمات -svc را بازنویسی خواهند کرد.
-svc_xdummy
- مانند -svc بهجز استفاده از Xdummy به جای Xvfb.
-svc_xvnc
- مانند -svc بهجز استفاده از Xvnc به جای Xvfb.
-svc_xdummy_xvfb
- مانند -svc به همراه Xdummy,Xvfb.
-xdmsvc
- حالت خدمات ترمینال مدیر نمایش بر پایهٔ SSL. نام مستعاری برای -display WAIT:cmd=FINDCREATEDISPLAY-Xvfb.xdmcp -unixpw -users unixpw= -ssl SAVE همچنین "-xdm_service".
- نکته: اگر گزینههای -display، -unixpw، -users، یا -ssl بعداً در خط فرمان بیایند، تنظیمات -xdmsvc را بازنویسی خواهند کرد.
- برای ایجاد یک نشست، کاربر ابتدا باید به کادر محاورهای -unixpw وارد شود و سپس دوباره در اعلان ورود XDM/GDM/KDM وارد شود. اتصالات مجدد بعدی تنها به گذرواژهٔ -unixpw نیاز خواهند داشت. برای جزئیات بیشتر دربارهٔ پیکربندی XDM و موارد دیگر، به توضیحات ذیل -display WAIT:... مراجعه کنید.
- به یاد داشته باشید که XDMCP را در فایل پیکربندی xdm-config، gdm.conf یا kdmrc فعال کنید. برای اطلاعات بیشتر -display WAIT: را ببینید.
-sshxdmsvc
- حالت خدمات ترمینال مدیر نمایش بر پایهٔ SSH. نام مستعاری برای -display WAIT:cmd=FINDCREATEDISPLAY-Xvfb.xdmcp -localhost.
- گزینهٔ -localhost اتصالات را محدود میکند تا از طریق یک تونل SSH برقرار شوند (که نیازمند ورود خواهد بود). برای ایجاد یک نشست، کاربر همچنین باید به اعلان XDM، GDM یا KDM وارد شود. اتصالات مجدد بعدی تنها به ورود با SSH نیاز خواهند داشت. برای جزئیات بیشتر دربارهٔ پیکربندی XDM و غیره، به بحثهای ذیل -display WAIT:... مراجعه کنید.
- به یاد داشته باشید که XDMCP را در فایل پیکربندی xdm-config، gdm.conf یا kdmrc فعال کنید. برای اطلاعات بیشتر -display WAIT: را ببینید.
-unixpw_system_greeter
- گزینهٔ "Press 'Escape' for System Greeter" را به کلاینت VNC متصلشونده در حالتهای ترکیبی -unixpw و FINDCREATEDISPLAY xdmcp (مانند -xdmsvc) نمایش میدهد.
- بهطور معمول در حالت -unixpw، کلاینت VNC باید یک نام کاربری و گذرواژهٔ معتبر برای دسترسی ارائه دهد. با این حال، اگر -unixpw_system_greeter ارائه شده باشد و دستور FINDCREATEDISPLAY با 'xdmcp' مطابقت داشته باشد، کاربر این امکان را دارد که Escape را فشار دهد و در عوض یک پنل ورود/خوشآمدگوی XDM/GDM/KDM دریافت کند. آنها سپس نام کاربری و گذرواژه را مستقیماً به خوشآمدگو ارائه میدهند.
- در غیر این صورت، در حالت FINDCREATEDISPLAY xdmcp کاربر باید نام کاربری و گذرواژهٔ خود را دو بار وارد کند. بار اول در محاورهٔ ورود اولیهٔ unixpw، و بار دوم در خوشآمدگوی بعدی XDM/GDM/KDM. توجه داشته باشید که اگر کاربر مجدداً متصل شود و نام کاربری و گذرواژهٔ خود را در محاورهٔ unixpw وارد کند، خوشآمدگوی xdmcp نادیده گرفته شده و او مستقیماً به نشست X موجود خود متصل میشود. بنابراین گزینهٔ -unixpw_system_greeter از وارد کردن گذرواژهٔ اضافی در هنگام ایجاد نشست X جلوگیری میکند.
- مثال: x11vnc -xdmsvc -unixpw_system_greeter برای اطلاعات بیشتر -unixpw و -display WAIT:... را ببینید.
- گزینههای خاص پس از دونقطه در انتهای نام کاربری (مانند user:solid) که در ذیل -display WAIT: توضیح داده شدهاند، در این حالت نیز اگر پیش از فشار دادن کلید Escape توسط کاربر تایپ شوند، اعمال میشوند. نام کاربری نادیده گرفته میشود اما گزینههای پس از دونقطه نادیده گرفته نخواهند شد.
- پیام پیشفرض ۲ خط با قلم کوچک است؛ متغیر محیطی X11VNC_SYSTEM_GREETER1=true را برای یک پیام ۱ خطی با قلم بزرگتر تنظیم کنید.
- اگر کاربر کلید Escape را فشار دهد، دستور FINDCREATEDISPLAY با متغیر محیطی X11VNC_XDM_ONLY=1 اجرا خواهد شد.
- به یاد داشته باشید که XDMCP را در فایل پیکربندی xdm-config، gdm.conf یا kdmrc فعال کنید. برای اطلاعات بیشتر -display WAIT: را ببینید.
-redirect port
- مانند حالت FINDCREATEDISPLAY-Xvnc.redirect، بهجز اینکه بلافاصله (یعنی بدون جستجو یا ایجاد نشست X) به یک کارساز VNC که روی port شنود میکند هدایت میشود. همچنین میتوانید host:port را برای هدایت به دستگاهی دیگر وارد کنید.
- اگر 0 <= port < 200 باشد، به عنوان یک نمایشگر VNC در نظر گرفته میشود (۵۹۰۰ اضافه میشود تا درگاه واقعی به دست آید)، و اگر port < 0 باشد آنگاه -port استفاده میشود.
- احتمالاً تنها دلیل استفاده از گزینهٔ -redirect همراه با پشتیبانی از SSL است، مانند -ssl SAVE. این قابلیت راهکاری ساده برای افزودن رمزنگاری SSL به یک کارساز VNC که از SSL پشتیبانی نمیکند (مانند Xvnc یا vnc.so) فراهم میسازد. در واقع، پروتکل حتی نیازی نیست که حتماً VNC باشد، و بنابراین "-rfbport port1 -ssl SAVE -redirect host:port2" میتواند به عنوان جایگزینی برای stunnel(1). عمل کند.
- این حالت تنها اجازهٔ یک اتصال هدایتشده را میدهد. گزینهٔ -forever اعمال نمیشود. برای سرویس پایدار از -inetd یا -loop استفاده کنید.
-display WAIT:...
- یک حالت استفادهٔ ویژه برای گزینهٔ معمولی -display. با -unixpw کاربردی است، اما میتواند مستقل از آن نیز استفاده شود. اگر رشتهٔ نمایشگر با :WAIT آغاز شود، x11vnc پیش از باز کردن نمایشگر X (یا دستگاه -rawfb) تا زمان اتصال یک کلاینت VNC منتظر میماند.
- این ویژگی میتواند برای به تأخیر انداختن باز کردن نمایشگر در حالتهای خاصی از کاربرد مفید باشد (برای مثال اگر x11vnc در زمان بوت آغاز شود و هنوز هیچ کارساز X در حال اجرا نبوده یا هیچ کاربری هنوز وارد نشده باشد).
- اگر رشته برای نمونه WAIT:0.0 یا WAIT:1 باشد، یعنی کلمهٔ "WAIT" در ابتدای یک نمایشگر X معمولی قرار گیرد، آنگاه نمایشگر مشخصشده استفاده میشود.
- همچنین میتوان ابعاد (geometry) را بین دونقطهها قرار داد، مانند WAIT:1280x1024:... تا اندازهٔ نمایشگری که کلاینت VNC در ابتدا به آن متصل میشود تنظیم گردد، زیرا برخی کلاینتهای نمایش VNC بهطور خودکار خود را با اندازهٔ جدید بافر فریم (framebuffer) تطبیق نمیدهند.
- یک حالت جالبتر به این شکل است:
- WAIT:cmd=/usr/local/bin/find_display
- که در این صورت دستور بعد از "cmd=" اجرا میشود تا DISPLAY و بهصورت اختیاری دادههای XAUTHORITY را بهطور پویا تعیین کند. اولین خط خروجی دستور باید به صورت DISPLAY=<xdisplay> باشد. در لینوکس اگر ترمینال مجازی مشخص است، ",VT=n" را به این رشته الحاق کنید و برنامهٔ chvt(1) نیز اجرا خواهد شد. هر خروجیِ باقیمانده به عنوان دادههای XAUTHORITY در نظر گرفته میشود. این خروجی میتواند به شکل XAUTHORITY=<file> یا دادههای خام xauthority برای نمایشگر باشد. به عنوان مثال؛
- xauth extract - $DISPLAY"
- نکته: همانطور که در بند قبل مشخص شد، شما میتوانید برنامه یا اسکریپت WAIT:cmd=... اختصاصی خود را ارائه دهید، اما دو مورد *توکار* (BUILT-IN) بسیار مفید وجود دارند: FINDDISPLAY (نام مستعار -find در بالا) و FINDCREATEDISPLAY (نام مستعار -create در بالا). بیشتر افراد به جای ساخت اسکریپت خود از اینها استفاده میکنند. موارد زیر (بهویژه بخشهای حالتهای توکار) را بخوانید تا ببینید چگونه این دو حالت توکار مفید -display WAIT: را پیکربندی کنید.
- در مورد -unixpw (و -unixpw_nis تنها در صورتی که x11vnc با دسترسی ریشه/root اجرا شود)، دستور =cmd با دسترسی کاربری که بهتازگی از طریق اعلان ورود و گذرواژه احراز هویت کرده است، اجرا میشود.
- در مورد -unixpw_cmd نیز دستورات به عنوان کاربر واردشده اجرا خواهند شد، مادامی که برنامهٔ کمکی ارائهشده توسط کاربر از RFB_UNIXPW_CMD_RUN پشتیبانی کند (گزینهٔ -unixpw_cmd را ببینید).
- همچنین در مورد -unixpw، کاربر در حال ورود میتواند یک دونقطه در انتهای نام کاربری خود قرار دهد و چند گزینه ارائه دهد: scale=، scale_cursor= (یا sc=)، solid (یا so)، id=، clear_mods (یا cm)، clear_keys (یا ck)، clear_all (یا ca)، repeat، speeds= (یا sp=)، readtimeout= (یا rd=)، viewonly (یا vo)، nodisplay= (یا nd=)، rotate= (یا ro=)، یا noncache (یا nc)، که در صورت وجود بیش از یکی، همگی با کاما از هم جدا میشوند. پس از ورود موفقیتآمیز کاربر، این گزینهها روی صفحهٔ VNC اعمال خواهند شد. برای مثال،.IP login: fred:scale=3/4,sc=1,repeat Password: ...
- login: runge:sp=modem,rd=120,solid
- برای سهولت، m/n دلالت بر =scale دارد؛ برای مثال fred:3/4. اگر گذرواژهٔ خود را اشتباه تایپ و وارد کردید، برای بازیابی خط طولانی «:login» کلید پیکان بالا (Up arrow) را یک بار فشار دهید (پیش از تایپ هر چیز دیگری).
- بیشتر این گزینههای دونقطهای (colon options) فقط بر حالتهای توکار FINDDISPLAY و FINDCREATEDISPLAY اعمال میشوند، اما توجه داشته باشید که به دستور خارجی نیز در محیط (environment) منتقل میشوند و بنابراین میتوان از آنها استفاده کرد.
- در پانل ورود، کلید F1 را فشار دهید تا فهرستی از گزینههای موجود که میتوانید پس از نام کاربری اضافه کنید را دریافت نمایید.
- گزینهٔ دیگر «geom=WxH» یا «geom=WxHxD» (یا =ge) است. این گزینه فقط در حالت FINDCREATEDISPLAY زمانی که یک کارساز X مجازی مانند Xvfb قرار است ایجاد شود، تأثیر دارد. این گزینه عرض و ارتفاع نمایشگر جدید و بهصورت اختیاری عمق رنگ را نیز تنظیم میکند.
- همچنین میتوانید «gnome»، «kde»، «twm»، «fvwm»، «mwm»، «dtwm»، «wmaker»، «xfce»، «lxde»، «enlightenment»، «Xsession» یا «failsafe» (مشابه «xterm») را مشخص کنید تا نمایشگر ایجادشده از آن حالت برای نشست کاربر استفاده کند.
- عبارت «...=tag» را برای تنظیم برچسب یکتای نشست میزکار FD_TAG که در زیر توضیح داده شده مشخص کنید. نکته: این گزینه در صورتی که متغیر محیطی FD_TAG از قبل تنظیم شده باشد یا مقدار ارائهشده از سوی نمایشگر (viewer-side) کاملاً از نویسههای الفباییعددی یا «_» یا «-» تشکیل نشده باشد، نادیده گرفته خواهد شد.
- فایل ترجیحات کاربر: بهجای اینکه کاربر هر بار که برای یافتن یا ایجاد نشست X خود وارد سیستم میشود عبارت geom=WxH,... و غیره را تایپ کند، اگر FD_USERPREFS را روی رشتهای تنظیم کنید که شامل نویسهٔ «/» نباشد، دایرکتوری خانگی کاربر به ابتدای آن رشته افزوده میشود و در صورت وجود فایل، نخستین خط آن خوانده شده و به هر گزینهای که او در اعلان :login وارد کرده اضافه میشود. برای مثال -env FD_USERPREFS=.x11vnc_create و کاربر عبارت «geom=1600x1200» را در فایل ~/.x11vnc_create خود قرار دهد.
- برای غیرفعال کردن تنظیم گزینهها، متغیر محیطی X11VNC_NO_UNIXPW_OPTS=1 را پیش از آغاز x11vnc تنظیم کنید. برای تنظیم هر گزینهٔ دیگر، کاربر میتواند در طول نشست VNC خود از رابط گرافیکی (x11vnc -gui connect) یا روش کنترل از راه دور (x11vnc -R opt:val) استفاده کند.
- بنابراین میبینیم که ترکیب -display WAIT:cmd=... و -unixpw امکان جفتسازی خودکار یک کاربر VNC احرازهویتشده با یونیکس را با میزکارش فراهم میکند. این قابلیت میتواند روی سامانههای SunRay و همچنین هر سامانهای که در آن چندین کاربر یک ماشین خاص را به اشتراک میگذارند، بسیار مفید باشد. کاربر نیازی به بهخاطر سپردن درگاهها یا گذرواژههای ویژهای که برای میزکار و VNC او تنظیم شدهاند ندارد.
- یک روش مناسب برای استفاده از WAIT:cmd=... از طریق inetd(8) است (بهطور خودکار یک فرایند x11vnc جدید برای هر کاربر منشعب میکند). شما میتوانید کاری کنید که فرایند منشعبشده از inetd برای x11vnc، مثلاً با هویت root یا nobody اجرا شود. هنگام اجرا با دسترسی root (چه برای inetd یا مدیر نمایش)، میتوانید گزینهٔ «-users unixpw=» را نیز ارائه دهید تا فرایند x11vnc به آن کاربر تغییر هویت دهد. نکته: یک فرایند کمکی SSL دوم نیز وجود خواهد داشت که تغییر هویت نمیدهد، اما در آن نقطه صرفاً جریان رمزشده را رمزگذاری و رمزگشایی میکند.
- حالتهای توکار (BUILT-IN):
- -- یافتن خودکار نشستهای X کاربر --
- بهعنوان یک حالت خاص، WAIT:cmd=FINDDISPLAY اسکریپتی را اجرا میکند که روی بیشتر یونیکسها برای تعیین متغیر DISPLAY و دادههای xauthority کاربر کار میکند (ببینید: who(1) ).
- نکته: گزینهٔ «-find» یک نام مستعار برای این حالت است.
- برای چاپ این اسکریپت پیشفرض در stdout (مثلاً برای شخصیسازی)، با WAIT:cmd=FINDDISPLAY-print اجرا کنید. برای اجرای اسکریپت جهت چاپ نمایشی که پیدا خواهد کرد، از «-finddpy» یا WAIT:cmd=FINDDISPLAY-run استفاده کنید.
- اسکریپت استاندارد، xdpyinfo(1) را روی نمایشگرهای احتمالی اجرا میکند. اگر کارساز(های) X شما دارای یک خوشامدگوی ورود (login greeter) باشند که کارساز X را بهطور انحصاری تصاحب (grab) کند، آنگاه xdpyinfo برای همیشه مسدود (block) میشود و این حالت کار نخواهد کرد. برای چگونگی غیرفعال کردن این مورد برای dtgreet در Solaris و احتمالاً خوشامدگوهای دیگر، www.karlrunge.com/x11vnc/faq.html#faq-display-manager را ببینید.
- در حالت -find/cmd=FINDDISPLAY، اگر FD_XDM=1 را تنظیم کنید (برای نمونه، ´x11vnc -env FD_XDM=1 -find ...´) و x11vnc با هویت root (مثلاً از طریق inetd) در حال اجرا باشد، تلاش خواهد کرد فایل XAUTHORITY یک خوشامدگوی ورود XDM/GDM/KDM در حال اجرا را بیابد (یعنی زمانی که هنوز هیچ کاربری وارد یک نشست X نشده است).
- بهعنوان یک حالت خاص دیگر، WAIT:cmd=HTTPONCE به x11vnc امکان میدهد به یک درخواست http پاسخ دهد و سپس خارج شود. این کار معمولاً در حالت -inetd انجام میشود تا مثلاً روی درگاه 5800 اجرا شده و اجازه دهد نرمافزار Java vncviewer توسط مرورگرهای وب کلاینت دریافت شود. برای مثال:
- 5815 stream tcp nowait root /usr/sbin/tcpd /.../x11vnc \ -inetd -q -http_ssl -prog /.../x11vnc \ -display WAIT:cmd=HTTPONCE
- که در آن /.../x11vnc مسیر کامل به x11vnc است. این مورد در مثال درگاه SSL مربوط به Apache استفاده میشود (به FAQ مراجعه کنید).
- در این حالت میتوانید X11VNC_SKIP_DISPLAY را روی فهرستی از نمایشگرها که با کاما از هم جدا شدهاند (مانند «:0,:1») تنظیم کنید تا در فرایند جستجو نادیده گرفته شوند. نویسهٔ «:» اختیاری است. بازههای n-m مانند 0-20 نیز قابل ارائه هستند. این رشته میتواند توسط کاربر متصلشونده از طریق «nd=» با استفاده از «+» بهجای «,» نیز تنظیم شود. اگر «nd=all» باشد یا X11VNC_SKIP_DISPLAY=all را تنظیم کنید، آنگاه تمام جستجوهای نمایشگر با شکست مواجه میشوند، گویی که X11VNC_FINDDISPLAY_ALWAYS_FAILS=1 را تنظیم کردهاید (در زیر).
- در برخی سامانهها، lsof(1) ممکن است بسیار کند باشد. متغیر محیطی FIND_DISPLAY_NO_LSOF=1 را تنظیم کنید تا از بهکارگیری lsof برای یافتن VT لینوکسی که کارساز X روی آن در حال اجراست صرفنظر شود. همچنین FIND_DISPLAY_NO_VT_FIND=1 را تنظیم کنید تا اصلاً جستجویی انجام نشود.
- -- ایجاد خودکار نشستهای X کاربر --
- یک گزینهٔ جالب WAIT:cmd=FINDCREATEDISPLAY است که شبیه FINDDISPLAY عمل میکند از این جهت که از همان روش برای یافتن یک نمایشگر موجود بهره میبرد. با این حال، اگر موردی را پیدا نکند، تلاش خواهد کرد یک نشست کارساز X را برای کاربر *راهاندازی* کند. این تنها زمانی است که x11vnc در عمل سعی میکند یک کارساز X را راهاندازی کند.
- نکته: گزینهٔ «-create» یک نام مستعار برای این حالت است.
- این حالت جستجو برای یک شماره نمایشگر آزاد را از :20 آغاز میکند؛ با X11VNC_CREATE_STARTING_DISPLAY_NUMBER=n میتوان آن را بازنویسی کرد. بهطور پیشفرض، ۸۰ نمایشگر X مجاز هستند (یعنی تا :99)؛ با X11VNC_CREATE_MAX_DISPLAYS=n میتوان آن را تغییر داد.
- اسکریپت ایجاد نمایشگر برای روشهای ابتکاری خود، متغیر LC_ALL=C را تنظیم میکند تا خروجی دستورات یکدست باشد. بهطور پیشفرض، این اسکریپت سعی میکند LC_ALL را درست پیش از آغاز نشست کاربر بازیابی کند. با این حال، اگر مشکلی با باقی ماندن LC_ALL=C ندارید، متغیر محیطی X11VNC_CREATE_LC_ALL_C_OK=1 را تنظیم کنید.
- بهطور پیشفرض، FINDCREATEDISPLAY ابتدا Xvfb و سپس Xdummy را امتحان میکند:
- پوشش (wrapper) مربوط به Xdummy بخشی از کد منبع x11vnc است (x11vnc/misc/Xdummy). این ابزار باید در PATH موجود باشد و دستور «Xdummy -install» یک بار اجرا شده باشد تا کتابخانهٔ مشترک ساخته شود. ابزار Xdummy فقط روی لینوکس کار میکند. از تاریخ ۱۲/۲۰۰۹ دیگر نیازی به اجرای آن با دسترسی root نیست و پیشفرض نیز اجرا نشدن با هویت root است. در برخی شرایط ممکن است مجوزها نیاز به اجرای آن با دسترسی root داشته باشند؛ در این موارد FD_XDUMMY_RUN_AS_ROOT=1 را مشخص کنید، این معادل ارائهٔ -root در خط فرمان Xdummy است.
- ابزار Xvfb روی بیشتر پلتفرمها در دسترس است و نیازی به root ندارد.
- یک مزیت Xdummy نسبت به Xvfb این است که Xdummy از تغییر پویای اندازهٔ صفحه توسط RANDR پشتیبانی میکند.
- هنگامی که x11vnc خارج میشود (یعنی کاربر اتصال را قطع میکند)، نشست کارساز X در پسزمینه در حال اجرا باقی میماند. حالت FINDDISPLAY دفعهٔ بعد مستقیماً آن را پیدا خواهد کرد. کاربر باید به روش معمول از نشست X خارج شود تا خاتمه یابد (یا اگر همه راهها با شکست مواجه شد، فرایند کارساز X را kill کند).
- برای عیبیابی سازوکار FINDCREATEDISPLAY، متغیر محیطی زیر را به یک فایل گزارش (log) خروجی تنظیم کنید، برای نمونه: -env CREATE_DISPLAY_OUTPUT=/tmp/mydebug.txt
- بنابراین این یک حالت تا حدودی عجیب برای x11vnc است زیرا کارسازهای مجازی X را راهاندازی و بررسی (poll) میکند! میتوان از آن، مثلاً از طریق inetd(8) برای فراهم کردن راهکاری جهت دریافت قطعی یک میزکار (چه واقعی و چه مجازی) روی ماشین استفاده کرد. برای مثال یک سرویس میزکار:
- 5900 stream tcp nowait root /usr/sbin/tcpd /.../x11vnc -inetd -q -http -ssl SAVE -unixpw -users unixpw=\ -passwd secret -prog /.../x11vnc \ -display WAIT:cmd=FINDCREATEDISPLAY.IP که در آن /.../x11vnc مسیر کامل به x11vnc است.
- نام مستعار گزینهٔ -svc/-service در بالا را ببینید.
- اگر به هر دلیلی نمیخواهید x11vnc هرگز برای یافتن یک نمایشگر موجود تلاش کند، متغیر محیطی X11VNC_FINDDISPLAY_ALWAYS_FAILS=1 (همچنین -env ...) را تنظیم کنید. این کار معادل تنظیم X11VNC_SKIP_DISPLAY=all یا ارائهٔ "nd=all" پس از "username:" است.
- از WAIT:cmd=FINDCREATEDISPLAY-print برای چاپ اسکریپتی که برای این منظور استفاده میشود استفاده کنید.
- میتوانید ترتیب ترجیحی کارساز X را مثلاً از طریق WAIT:cmd=FINDCREATEDISPLAY-Xdummy,Xvfb,X مشخص کرده و/یا مواردی را که نمیخواهید حذف کنید. مورد "X" به معنای تلاش برای راهاندازی یک کارساز X واقعی و سختافزاری با استفاده از xinit(1) یا startx(1) است. اگر از قبل یک کارساز X در حال اجرا باشد، حالت X ممکن است فقط روی Linux کار کند (به startx(1) مراجعه کنید).
- مقدار "Xvnc" یک کارساز X مبتنی بر VNC را راهاندازی میکند (real-vnc یا tight-vnc؛ مثلاً در صورتی که Xvfb در دسترس نباشد استفاده میشود). مقدار "Xsrv" برنامهٔ کارساز موجود در متغیر "FD_XSRV" را در صورت خالی نبودن اجرا میکند. در صورت تمایل میتوانید آن را یک اسکریپت پوششی (wrapper) قرار دهید (باید :N، -geometry، -depth و سایر گزینههای کارساز X را مدیریت کند).
- میتوانید متغیر محیطی FD_GEOM (یا X11VNC_CREATE_GEOM) را روی WxH یا WxHxD تنظیم کنید تا عرض و طول و به طور اختیاری عمق رنگ نمایشگر ایجادشده را مشخص نمایید. همچنین میتوانید FD_SESS را برای نشست (نام کوتاه مدیر پنجره: kde، gnome، twm، failsafe و غیره) تنظیم کنید. FD_OPTS شامل گزینههای اضافی برای ارسال به کارساز X است. همچنین میتوانید FD_PROG را برابر با مسیر کامل برنامهٔ نشست/مدیر پنجره قرار دهید.
- ترفندهای بیشتر FD: تنظیم FD_CUPS=port یا FD_CUPS=host:port محیط چاپ cups را تنظیم میکند. به طور مشابه FD_ESD=port یا FD_ESD=host:port برای هدایت دوبارهٔ صدای esddsp به کار میرود. مقدار FD_EXTRA را روی دستوری تنظیم کنید که چند ثانیه پس از راهاندازی کارساز X اجرا شود. FD_TAG را روی یک نام یکتا برای نشست تنظیم کنید؛ این مقدار به عنوان یک ویژگی X ثبت میشود که باعث میشود FINDDISPLAY فقط نشستهایی با آن مقدار برچسب را پیدا کند.
- مقدار FD_XDMCP_IF را روی واسط شبکهای که مدیر نمایش روی آن در حال اجراست تنظیم کنید؛ مقدار پیشفرض 'localhost' است، اما ممکن است در برخی سامانههای فقط مبتنی بر IPv6 یا مدیرهای نمایش با پیکربندی نادرست، نیاز به تنظیم آن روی '::1' داشته باشید.
- اگر میخواهید نشست FINDCREATEDISPLAY با یک مدیر ورود XDMCP (مانند xdm/gdm/kdm) روی همان رایانه ارتباط برقرار کند، به جای "Xvfb" از "Xvfb.xdmcp" و غیره استفاده کنید. کاربر باید یک بار دیگر نام کاربری و گذرواژهٔ خود را وارد کند (اما میتواند نوع میزکار خود را انتخاب کند که میتواند مفید باشد). برای کارکرد این قابلیت، باید XDMCP محلی (درگاه udp شمارهٔ 177) را برای مدیر نمایش فعال کنید. این تنظیمات معمولاً به این صورت است:
- برای gdm در gdm.conf: مقدار Enable=true در بخش [xdmcp] برای kdm در kdmrc: مقدار Enable=true در بخش [Xdmcp] برای xdm در xdm-config: مقدار DisplayManager.requestPort: 177
- گزینههای میانبُر بالا یعنی "-svc"، "-xdmsvc" و "-sshxdmsvc" را ببینید که گزینههای فوق را برای برخی موارد کاربردی مشخص میکنند.
- اگر متغیر محیطی WAITBG=1 را تنظیم کنید، x11vnc پس از گوش دادن در حالت انتظار به پسزمینه خواهد رفت.
- حالت ویژهٔ دیگر FINDCREATEDISPLAY-Xvnc.redirect (یا FINDDISPLAY-Xvnc.redirect) است. در این حالت در صورت نیاز Xvnc را مانند بالا راهاندازی میکند، اما به جای بررسی دورهای (polling) آن به روش معمول، به سادگی یک هدایت دوبارهٔ سوکت از مشاهدهگر VNC متصلشده به Xvnc انجام میدهد.
- بنابراین در Xvnc.redirect، برنامهٔ x11vnc هیچ پردازش VNC انجام نمیدهد بلکه صرفاً دادهها را رفت و برگشت انتقال میدهد. این روش باید از روش بررسی دورهای x11vnc سریعتر باشد، اما نه به سرعت اتصال مستقیم مشاهدهگر VNC به Xvnc. ایدهٔ کار در اینجا بهرهگیری از طرح یافتن/ایجاد نمایشگر x11vnc، قابلیت SSL و احتمالاً چند ویژگی دیگر است. بیشتر گزینههای x11vnc در این حالت اعمال نمیشوند.
- حالت Xvnc.redirect همچنین باید برای ماژول کارساز X به نام vnc.so برای نمایشگر سختافزاری کار کند، هرچند فقط برای پیدا کردن نمایشگر کار خواهد کرد و کاربر باید از قبل به کنسول X وارد شده باشد.
-vencrypt mode
- افزونهٔ VeNCrypt برای پروتکل VNC امکان اتصالهای رمزگذاریشدهٔ SSL/TLS را فراهم میکند. اگر حالت -ssl فعال باشد، VeNCrypt نیز بهطور پیشفرض فعال است (هر دو از یک تونل SSL/TLS استفاده میکنند، فقط دستتکانی پروتکل کمی متفاوت است).
- برای کنترل زمان و چگونگی استفاده از VeNCrypt، رشتهٔ mode را مشخص کنید. اگر mode برابر "never" باشد، از VeNCrypt استفاده نمیشود. اگر mode برابر "support" (پیشفرض) باشد، از VeNCrypt پشتیبانی میشود. اگر mode برابر "only" باشد، از پروتکل مشابه و قدیمیتر ANONTLS به طور همزمان پشتیبانی نمیشود. حالت عادی SSL در x11vnc (یعنی vncs://) تحت -ssl پشتیبانی خواهد شد مگر اینکه mode را روی "force" تنظیم کنید.
- اگر mode دارای پیشوند "nodh:" باشد، تبادل کلید ناشناس Diffie Hellman غیرفعال میشود. اگر mode دارای پیشوند "nox509:" باشد، تبادل کلید X509 غیرفعال میشود.
- برای غیرفعال کردن تمامی دسترسیهای ناشناس Diffie-Hellman (که در برابر حملهٔ مرد میانی یا Man-In-The-Middle آسیبپذیر است) باید عبارت "-vencrypt nodh:support -anontls never" یا "-vencrypt nodh:only" را ارائه دهید.
- اگر mode دارای پیشوند "newdh:" باشد، به جای استفاده از مقادیر ثابت موجود در برنامه، برای هر اتصال پارامترهای جدید Diffie Hellman تولید میشود (این کار میتواند زمانبر باشد: بین ۱ تا ۶۰ ثانیه؛ برای روشی سریعتر گزینهٔ -dhparams در زیر را ببینید). استفاده از مقادیر ثابت و شناختهشدهٔ عمومی به عنوان یک مشکل امنیتی شناخته نمیشود. این تنظیم برای ANONTLS نیز اعمال میشود.
- مثال طولانی: -vencrypt newdh:nox509:support
- همچنین اگر mode دارای پیشوند "plain:" باشد، در صورت فعال بودن حالت -unixpw روش نام کاربری+گذرواژهٔ "*Plain" در VeNCrypt برای ورودهای یونیکس فعال میشود. در غیر این صورت در حالت -unixpw پانل ورود معمولی ارائه میشود.
- برای فعال بودن VeNCrypt شما باید گزینهٔ -ssl را مشخص کنید. گزینهٔ -vencrypt فقط عملکرد آن را به طور دقیق تنظیم میکند.
-anontls mode
- افزونهٔ ANONTLS برای پروتکل VNC امکان اتصالهای رمزگذاریشدهٔ SSL/TLS را فراهم میکند. اگر حالت -ssl فعال باشد، ANONTLS نیز بهطور پیشفرض فعال میشود (هر دو از یک تونل SSL/TLS استفاده میکنند، فقط دستتکانی پروتکل کمی متفاوت است).
- پروتکل ANONTLS یک حالت قدیمیتر SSL/TLS است که توسط vino معرفی شد.
- این پروتکل با نام نوع امنیتی ثبتشدهاش در VNC یعنی 'TLS' نامیده میشود، اما ما در اینجا از نام توصیفیتر 'ANONTLS' استفاده میکنیم زیرا تنها اتصالهای رمزگذاریشده با Diffie-Hellman ناشناس را فراهم میکند، و بنابراین امکانی برای احراز هویت با گواهی ندارد.
- برای کنترل زمان و چگونگی استفاده از ANONTLS، رشتهٔ mode را مشخص کنید. اگر mode برابر "never" باشد، از ANONTLS استفاده نمیشود. اگر mode برابر "support" (پیشفرض) باشد، از ANONTLS پشتیبانی میشود. اگر mode برابر "only" باشد، از پروتکل مشابه VeNCrypt به طور همزمان پشتیبانی نمیشود. حالت عادی SSL در x11vnc (یعنی vncs://) تحت -ssl پشتیبانی خواهد شد مگر اینکه mode را روی "force" تنظیم کنید.
- اگر mode دارای پیشوند "newdh:" باشد، به جای استفاده از مقادیر ثابت درون برنامه، پارامترهای جدید Diffie Hellman برای هر اتصال تولید میشوند (این کار میتواند زمانبر باشد: ۱ تا ۶۰ ثانیه؛ برای روشی سریعتر گزینهٔ -dhparams در زیر را ببینید). استفاده از مقادیر ثابت و شناختهشدهٔ عمومی به عنوان یک مشکل امنیتی شناخته نمیشود. این تنظیم برای VeNCrypt نیز اعمال میشود. توضیحات مربوط به "plain:" را ذیل -vencrypt ببینید.
- مثال طولانی: -anontls newdh:plain:support
- شما باید گزینهٔ -ssl را مشخص کنید تا ANONTLS فعال باشد. گزینهٔ -anontls تنها عملکرد آن را به دقت تنظیم میکند.
-sslonly
- مشابه با: "-vencrypt never -anontls never" یعنی روشهای رمزگذاری VeNCrypt و ANONTLS را غیرفعال کرده و تنها تونلزنی استاندارد SSL را مجاز میداند. همچنین باید گزینهٔ -ssl ... را ارائه دهید (در زیر ببینید).
-dhparams file
- برای برخی عملیات، مجموعهای از پارامترهای Diffie Hellman (عدد اول و مولد) مورد نیاز است. در این صورت از پارامترهای موجود در file استفاده کنید. به ویژه حالت DH ناشناس در VeNCrypt و ANONTLS به آنها نیاز دارند. به طور پیشفرض از یک مجموعهٔ ثابت استفاده میشود. اگر نمیخواهید چنین باشد، میتوانید "newdh:" را در گزینههای -vencrypt و -anontls مشخص کنید تا در هر نشست یک مجموعهٔ جدید تولید شود. اگر این کار بیش از حد برای شما کُند است، -dhparams file را به مجموعهای که خودتان به صورت دستی از طریق "openssl dhparam -out file 1024" ایجاد کردهاید اختصاص دهید.
-nossl
- گزینهٔ -ssl را غیرفعال میکند (در زیر ببینید). از آنجا که -ssl به طور پیشفرض خاموش است، -nossl تنها در خط فرمان برای لغو هر گزینهٔ -ssl (یا -svc...) که پیشتر داده شده است به کار میرود..PP -ssl [pem]
- از کتابخانه openssl (www.openssl.org) برای فراهم کردن یک تونل رمزگذاریشده توکار SSL/TLS میان مشاهدهگرهای VNC و x11vnc استفاده میکند. این امر نیازمند کامپایل بودن پشتیبانی از libssl در زمان ساخت x11vnc است. اگر x11vnc با پشتیبانی از libssl ساخته نشده باشد، با تعیین -ssl بلافاصله خارج میشود. برای گزینهای جایگزین، گزینه -stunnel را در زیر ببینید.
- سمت مشاهدهگر VNC نیز باید از SSL/TLS پشتیبانی کند. برای ایدههایی در مورد نحوه فعالسازی پشتیبانی SSL برای مشاهدهگر، این نشانی و همچنین توضیحات زیر را ببینید: http://www.karlrunge.com/x11vnc/faq.html#faq-ssl-tunnel-viewers . برنامه x11vnc یک اپلت مشاهدهگر جاوای مجهز به SSL را در دایرکتوری classes/ssl ارائه میدهد (گزینههای -http یا -httpdir). بسته مشاهدهگر SSVNC نیز از تونلهای SSL پشتیبانی میکند.
- اگر مشاهدهگر VNC از VeNCrypt یا ANONTLS (حالت رمزگذاری vino) پشتیبانی کند، آنها نیز توسط حالت -ssl پشتیبانی میشوند (برای اطلاعات بیشتر گزینههای -vencrypt و -anontls را ببینید؛ برای غیرفعالسازی هر دوی آنها از -sslonly استفاده کنید).
- از «-ssl /path/to/mycert.pem» برای مشخص کردن یک فایل گواهی SSL در قالب PEM جهت شناسایی و ارائه یک کلید برای این کارساز استفاده کنید. برای اطلاعات بیشتر درباره فایلهای PEM به openssl(1) و برای نحوه ایجاد آنها به گزینههای -sslGenCert و «-ssl SAVE» در زیر مراجعه کنید.
- تونل SSL متصلشونده مشاهدهگر VNC میتواند (به انتخاب خود) در صورتی که بخش کلید عمومی گواهی را داشته باشد، این کارساز را احراز هویت کند (یا یک مرجع صدور گواهی مشترک، CA، روشی پیشرفتهتر برای تأیید اعتبار گواهی این کارساز است، -sslGenCA را در زیر ببینید). این احراز هویت به منظور جلوگیری از حملات مرد میانی (Man-In-The-Middle) انجام میشود. در غیر این صورت، اگر مشاهدهگر VNC صرفاً کلید این کارساز را بدون تأیید اعتبار بپذیرد، ترافیک در برابر شنود غیرفعال (passive sniffing) در شبکه محافظت میشود، اما در برابر حملات مرد میانی محافظت *نمیشود*. ابزارهای هکری مانند dsniff/webmitm و cain وجود دارند که حملات مرد میانی SSL را پیادهسازی میکنند.
- اگر [pem] خالی باشد یا رشته "SAVE" باشد، دستور openssl(1) باید برای تولید گواهی برای بار اول در دسترس باشد. یک گواهی خودامضا (self-signed) ایجاد میشود (برای استفاده از مرجع صدور گواهی، -sslGenCA و -sslGenCert را ببینید). این گواهی در فایل ~/.vnc/certs/server.pem ذخیره خواهد شد. در فراخوانیهای بعدی، اگر این فایل از قبل وجود داشته باشد، مستقیماً استفاده خواهد شد.
- از "SAVE_NOPROMPT" برای جلوگیری از درخواست گذرواژه جهت محافظت از کلید تولیدشده استفاده کنید. با این حال در حالتهای -inetd و -bg، در هر صورت درخواستی برای گذرواژه مطرح نخواهد شد.
- اگر [pem] برابر "SAVE_PROMPT" باشد، گواهی server.pem بر اساس پاسخهای شما به پرسشهای آن برای تمام اطلاعات نظیر OrganizationalName، CommonName و غیره ایجاد خواهد شد.
- از "SAVE-<string>" و "SAVE_PROMPT-<string>" برای اشاره به فایل ~/.vnc/certs/server-<string>.pem استفاده کنید (اگر از قبل وجود نداشته باشد، ایجاد خواهد شد). برای مثال "SAVE-charlie" در فایل ~/.vnc/certs/server-charlie.pem ذخیره خواهد کرد.
- مثالها: x11vnc -ssl SAVE -display :0 ... x11vnc -ssl SAVE-someother -display :0 ...
- اگر [pem] برابر "TMP" باشد و ابزار دستور openssl(1) در PATH موجود باشد، یک گواهی موقت و خودامضا برای این نشست تولید خواهد شد. اگر نتوان از openssl(1) برای تولید گواهی موقت استفاده کرد، x11vnc بلافاصله خارج میشود. گواهی موقت هنگام خروج x11vnc دور انداخته خواهد شد.
- در صورت موفقیت در استفاده از openssl(1) برای تولید یک گواهی موقت در حالتهای ایجاد "SAVE" یا "TMP"، بخش عمومی آن در stderr نمایش داده خواهد شد (مثلاً میتوان آن را در سمت کلاینت کپی کرد تا امکان احراز هویت کارساز برای مشاهدهگرهای VNC فراهم شود).
- نکته: در حالت "TMP"، مگر اینکه بخش عمومی گواهی موقت را با اطمینان و *هر بار* برای احراز هویت در مشاهدهگر کپی کنید (که بعید است...)، تنها از حملات شنود غیرفعال جلوگیری میشود و همچنان در معرض حملات مرد میانی خواهید بود. به همین دلیل است که حالت پیشفرض "SAVE" ترجیح داده میشود (و همچنین حالت پیشرفتهتر CA). تنها با کلیدهای ذخیرهشده و احراز هویت آنها توسط مشاهدهگر VNC (از طریق گواهی عمومی)، از حملات مرد میانی جلوگیری میشود.
- اگر [pem] برابر "ANON" باشد، روش تبادل کلید ناشناس دیفی-هلمن (Diffie-Hellman anonymous) استفاده میشود. در این حالت *هیچ* گواهی SSL وجود ندارد و بنابراین امکان احراز هویت کارساز VNC یا کلاینت VNC وجود ندارد. در نتیجه فقط از حملات شنود غیرفعال شبکه جلوگیری میشود: روش "ANON" در برابر حملات مرد میانی آسیبپذیر است. استفاده از "ANON" توصیه نمیشود؛ در عوض از یک فایل SSL PEM که خودتان ایجاد کردهاید یا روش پیشفرض "SAVE" استفاده کنید.
- برای استفاده از دایرکتوری دیگری به غیر از ~/.vnc/certs پیشفرض، -ssldir را در زیر ببینید.
- اگر باینری x11vnc شما با پشتیبانی از کتابخانه OpenSSL کامپایل نشده باشد، استفاده از گزینه -ssl موجب شکست فوری و خروج از برنامه خواهد شد. برای چنین باینریهایی، استفاده از گزینه -stunnel را برای اتصالات رمزگذاریشده SSL در نظر بگیرید.
- اطلاعات متفرقه: در حالت ایجاد گواهی موقت "TMP"، متغیر محیطی X11VNC_SHOW_TMP_PEM=1 را تنظیم کنید تا x11vnc کل گواهی، از جمله بخش PRIVATE KEY را در stderr چاپ کند. روشهای بهتری برای دریافت/ذخیره این اطلاعات وجود دارد؛ "SAVE" در بالا و «-sslGenCert» در زیر را ببینید.
-ssltimeout n
- مهلت زمانی خواندن SSL را به n ثانیه تنظیم میکند. در برخی شرایط (مانند کمینهشدن پنجره مشاهدهگر در Windows)، مشاهدهگر ارسال داده را متوقف میکند و اتصال پس از مهلت زمانی پیشفرض قطع میشود (۲۵ ثانیه برای حدود دقیقه اول، ۴۳۲۰۰ ثانیه پس از آن). برای بررسی همیشگی آن را روی صفر تنظیم کنید. برای استفاده از تنظیمات توکار، یک مقدار منفی تعیین کنید.
- توجه داشته باشید که این مقدار روی اتصال *اولیه* راهاندازی ssl اعمال نمیشود. مهلت زمانی پیشفرض برای آن ۲۰ ثانیه است. برای تغییر آن از -env SSL_INIT_TIMEOUT=n استفاده کنید.
-sslnofail
- با اولین شکست در اتصال SSL خارج میشود. هنگام اسکریپتنویسی اتصالات SSL مفید است (مثلاً وقتی x11vnc از طریق ssh اجرا میشود) و نمیخواهید x11vnc منتظر اتصالات بیشتر بماند، درگاهها را اشغال کند و غیره.
-ssldir dir
- از dir به عنوان دایرکتوری سطح بالای جایگزین برای مدیریت کلیدها و گواهیهای ssl استفاده میکند. پیشفرض ~/.vnc/certs است.
- این دایرکتوری برای ذخیره گواهیها و کلیدهای کارساز و سایر موارد استفاده میشود. برای نمونه در سادهترین حالت، «-ssl SAVE» گواهی کارساز x11vnc را در dir/server.pem ذخیره خواهد کرد.
- استفاده از دایرکتوریهای جایگزین با -ssldir به شما امکان مدیریت چندین کلید مرجع صدور گواهی (CA) مربوط به VNC را میدهد. کاربرد دیگر زمانی است که ~/.vnc/cert روی یک اشتراک NFS قرار دارد و ممکن است بخواهید گواهیها و کلیدهایتان روی یک سیستمفایل محلی باشند تا از شنود در شبکه جلوگیری شود (برای مثال -ssldir /var/lib/x11vnc-certs).
- گزینه -ssldir تقریباً بر تمام گزینههای دیگر -ssl* تأثیر میگذارد، مانند -ssl SAVE، -sslGenCert و غیره.
-sslverify path
- برای هر یک از حالتهای -ssl یا -stunnel، از path برای ارائه گواهیها جهت احراز هویت اتصالات ورودی *کلاینت* VNC استفاده کنید (معمولاً در SSL فقط کارساز احراز هویت میشود). این میتواند به عنوان روشی برای جایگزینی احراز هویت استاندارد کلاینتها با گذرواژه استفاده شود.
- اگر path یک دایرکتوری باشد، شامل گواهیهای کلاینت (یا CA) در فایلهای جداگانه است. اگر مسیر یک فایل باشد، شامل یک یا چند گواهی است. نشانههای ویژه زیر را ببینید. این موارد با گزینههای "CApath = dir" و "CAfile = file" در stunnel مطابقت دارند. برای جزئیات به صفحه راهنمای stunnel(8) مراجعه کنید.
- مثالها: x11vnc -ssl -sslverify ~/my.crt x11vnc -ssl -sslverify ~/my_pem_dir/
- توجه داشته باشید که اگر مسیر یک دایرکتوری باشد، باید گواهیها را در فایلهای جداگانهای با نامی مانند <HASH>.0 نگه دارد، که در آن مقدار <HASH> با اجرای دستور "openssl x509 -hash -noout -in file.crt" به دست میآید. بدیهی است که در صورت بروز تداخل، از <HASH>.1 استفاده میشود...
- ابزار مدیریت کلید «-sslCertInfo HASHON» و «-sslCertInfo HASHOFF» این هشها را به صورت خودکار (از طریق symlink) در زیردایرکتوریهای HASH که مدیریت میکند ایجاد/حذف خواهند کرد. سپس میتوانید -sslverify را به زیردایرکتوری HASH هدایت کنید.
- نشانههای ویژه: در حالت -ssl، اگر path یک فایل یا دایرکتوری نباشد، به عنوان فهرستی از نشانهها که با ویرگول از هم جدا شدهاند در نظر گرفته میشود که به شرح زیر تفسیر میگردند:.IP اگر یک نشانه «CA» باشد، به این معنی است که فایل CA/cacert.pem از دایرکتوری ssl بارگذاری شود. اگر نشانه «clients» باشد، تمام فایلهای clients/*.crt در دایرکتوری ssl بارگذاری میشوند. در غیر این صورت، برای بارگذاری فایل clients/token.crt تلاش میشود. به عنوان یک راهکار موقت (kludge)، در صورت لزوم میتوانید از نشانهای مانند ../server-foo برای بارگذاری گواهی کارساز استفاده کنید.
- از -ssldir برای تعیین دایرکتوری متفاوتی نسبت به پیشفرض ~/.vnc/certs استفاده کنید.
- توجه داشته باشید در صورتی که گواهی «CA» بارگذاری شده باشد، نیازی به بارگذاری هیچیک از گواهیهای امضاشده توسط آن ندارید. با این حال، لازم است گواهیهای خودامضاشدهٔ اضافی را بارگذاری کنید.
- مثالها: x11vnc -ssl -sslverify CA x11vnc -ssl -sslverify self:fred,self:jim x11vnc -ssl -sslverify CA,clients
- معمولاً «-sslverify CA» مؤثرترین حالت است. برای نحوهٔ راهاندازی و مدیریت چارچوب CA، گزینههای -sslGenCA و -sslGenCert را در ادامه ببینید.
- نکته: ابزارهای کمکی -sslGenCA، -sslGenCert، -sslEncKey، -sslCertInfo و -sslCRL صرفاً برای جامعیت ارائه شدهاند، اما برای کاربردهای عادی بیش از حد نیاز (overkill) هستند.
- آنها امکان ایجاد کلید مرجع صدور گواهی (CA) برای VNC و نیز تولید و امضای کلید کارساز / کلاینت را فراهم میکنند. بنابراین چارچوبی پایهای برای مدیریت کلید عمومی جهت ارتباطات VNC با x11vnc ارائه میدهند (توجه داشته باشید که آنها نیازمند نصب بودن openssl(1) روی سیستم هستند).
- با این حال، سادهترین حالت استفاده، یعنی «-ssl TMP» (که در آن x11vnc بهطور خودکار کلید موقت و خودامضاشدهٔ خود را ایجاد کرده و مشاهدهگرهای VNC همواره آن را میپذیرند، مثلاً تأیید از طریق یک کادر گفتگو) احتمالاً برای بیشتر سناریوها بهاندازهٔ کافی امن است. نیازی به مدیریت CA نیست.
- برای محافظت در برابر حملات مرد میانی (Man-In-The-Middle)، میتوان حالت «TMP» را با استفاده از «-ssl SAVE» (مشابه «-ssl»، یعنی حالت پیشفرض) بهبود داد تا x11vnc یک گواهی خودامضاشدهٔ طولانیمدتتر ایجاد کند، و سپس گواهی کلید عمومی مربوطه را (بهصورت امن) به ماشینهای کلاینت مورد نظر کپی کرد (باید مراقبت شود که بخش کلید خصوصی سرقت نشود؛ از شما یک عبارت عبور درخواست خواهد شد).
- بنابراین به خاطر داشته باشید که برای هیچیک از دو حالت استفادهٔ رایج بالا، نیازی به ایجاد یا مدیریت کلید CA (-sslGenCA و -sslGenCert) نیست.
- در صورتی که تعداد زیادی ایستگاه کاری کارساز و کلاینت VNC داشته باشید، ممکن است بخواهید از -sslGenCA و -sslGenCert استفاده کنید. بدین ترتیب مدیر سیستم میتواند با -sslGenCA یک کلید CA واحد تولید کرده و بخش گواهی آن را بین تمام ایستگاههای کاری توزیع کند.
- سپس او میتواند کلیدهای کارساز VNC امضاشده (-sslGenCert server ...) را برای هر ایستگاه کاری یا کاربر ایجاد کند تا سپس x11vnc از آنها برای احراز هویت خود در برابر هر کلاینت VNC دارای گواهی CA استفاده کند.
- در صورت تمایل، مدیر سیستم میتواند ترتیبی دهد که خود کلاینتهای VNC نیز نزد x11vnc احراز هویت شوند (-sslGenCert client ...). برای این منظور، گزینهٔ -sslverify باید به گواهی CA (و/یا گواهیهای خودامضاشده) اشاره کند.
- دستور x11vnc قادر خواهد بود از تمام این فایلهای گواهی و کلید استفاده کند. در سمت کلاینت VNC، این فایلها باید به نحوی «وارد» (import) شوند. مرورگرهای وب و همچنین کنترل پنل افزونهٔ اپلت Java دارای بخشهای «مدیریت گواهیها» هستند. ابزار stunnel نیز میتواند از این فایلها استفاده کند (اسکریپت نمونهٔ ss_vncviewer را در FAQ و SSVNC ببینید).
-sslCRL path
- تنظیم لیستهای ابطال گواهی (CRL) روی path. این تنظیم برای هر دو حالت -ssl و -stunnel اعمال میشود.
- اگر path یک فایل باشد، حاوی یک یا چند CRL در قالب PEM است. اگر path یک دایرکتوری باشد، حاوی فایلهای نامگذاریشده بر اساس هش از CRLها به شیوهٔ معمول OpenSSL است. برای اطلاعات بیشتر مستندات OpenSSL و stunnel(8) را ببینید.
- این گزینه تنها در صورتی اعمال میشود که -sslverify مشخص شده باشد: ابطال گواهیها را در طول زنجیرهٔ گواهی ارائهشده برای احراز هویت کلاینت VNC بررسی میکند. در صورت مشخص نبودن -sslverify، تنظیم -sslCRL نادیده گرفته خواهد شد.
- توجه داشته باشید که اگر تاریخ انقضای یک CRL سپری شده باشد، تمام اتصالات SSL بدون توجه به اینکه آیا به موضوع CRL مربوط هستند یا خیر، با شکست مواجه خواهند شد.
- بهندرت پیش میآید که زیرساخت -ssl مربوط به x11vnc چنان گسترده باشد که این گزینه مفید واقع شود (چرا که معمولاً نگهداری محتویات فایل یا دایرکتوری -sslverify کافی خواهد بود). با این حال، هنگام استفاده از x11vnc همراه با یک مرجع صدور گواهی (CA) (نگاه کنید به -sslGenCA) برای احراز هویت کلاینتها از طریق SSL/TLS، گزینهٔ -sslCRL میتواند برای باطل کردن گواهی کاربرانی که کلیدهای خصوصی SSL آنها گم یا سرقت شده است (مانند لپتاپ)، مفید باشد. بدین ترتیب نیازی به ایجاد یک کلید+گواهی CA جدید و تولید و توزیع کلیدهای کلاینت امضاشدهٔ جدید به همهٔ کاربران نیست.
- برای ایجاد یک فایل CRL حاوی گواهیهای باطلشده، دستورهای 'openssl ca -revoke ...' و 'openssl ca -gencrl ...' مفید هستند (آنها را در ~/.vnc/certs اجرا کنید).
-sslGenCA [dir]
- کلید خصوصی مرجع صدور گواهی (CA)، گواهی، و سایر فایلهای مربوط به خودتان را در دایرکتوری [dir] تولید میکند. سپس x11vnc خارج میشود.
- اگر [dir] ارائه نشود، تنظیم -ssldir به کار میرود؛ در غیر این صورت از ~/.vnc/certs استفاده خواهد شد.
- این دستور همچنین دایرکتوریهایی را که گواهیها و کلیدهای کارساز و کلاینت در آنها ذخیره میشوند، ایجاد میکند. برنامهٔ openssl(1) باید روی سیستم نصب بوده و در PATH در دسترس باشد.
- پس از ایجاد فایلها و دایرکتوریهای CA، دستور x11vnc خارج میشود؛ کارساز VNC اجرا نمیشود.
- از شما برای ورود اطلاعات جهت درج در گواهی CA درخواست خواهد شد. تا زمانی که کلاینتها گواهی را برای اتصالات VNC بپذیرند، نیازی نیست اطلاعات حتماً دقیق باشند. همچنین باید یک عبارت عبور با حداقل ۴ نویسه برای کلید خصوصی CA تعیین کنید.
- پس از تولید CA، میتوانید بخش گواهی آن، یعنی [dir]/CA/cacert.pem را بین سایر ایستگاههای کاری که مشاهدهگرهای VNC روی آنها اجرا میشوند، توزیع کنید. لازم است این گواهی در برنامهها، مانند مرورگر وب، افزونهٔ اپلت Java، stunnel و غیره «وارد» (import) شود. سپس، میتوانید با استفاده از گزینهٔ -sslGenCert در ادامه، کلیدها را توسط این CA تولید و امضا کنید.
- مثالها: x11vnc -sslGenCA x11vnc -sslGenCA ~/myCAdir x11vnc -ssldir ~/myCAdir -sslGenCA
- (دو خط آخر معادل یکدیگر هستند)
-sslGenCert type name
- یک جفت کلید خصوصی و گواهی کارساز یا کلاینت VNC را که توسط CA ایجادشده در مرحلهٔ قبل با -sslGenCA امضا شده است، تولید میکند. برنامهٔ openssl(1) باید روی سیستم نصب و در PATH در دسترس باشد.
- پس از تولید گواهی، x11vnc خارج میشود؛ کارساز VNC اجرا نمیشود.
- نوع کلیدی که باید تولید شود با رشتهٔ type مشخص میگردد. این مقدار یا «server» (یعنی برای استفاده توسط x11vnc) است یا «client» (برای مشاهدهگر VNC). توجه داشته باشید که معمولاً تنها «server» استفاده میشود: کلاینتهای VNC هویت خود را با روشی غیر از کلید عمومی (مانند گذرواژهٔ unix یا VNC) تأیید میکنند. مقدار type الزامی است.
- نام پیشفرض دلخواهی که میخواهید با کلید مرتبط شود، توسط رشتهٔ name تعیین میشود. میتوانید هنگام ساخت کلید در اعلانهای مختلف آن را تغییر دهید. مقدار name اختیاری است.
- اگر name برای کلیدهای کلاینت خالی رها شود، از «nobody» استفاده میشود. اگر برای کلیدهای کارساز خالی گذاشته شود، کلید اصلی کارساز ایجاد میشود: «server.pem» (این همان نسخهٔ ذخیرهشدهای است که هنگام راهاندازی کارساز توسط «-ssl SAVE» به آن ارجاع داده میشود).
- اگر name با رشتهٔ "self:" آغاز شود، به جای گواهی امضاشده توسط کلید CA شما، یک گواهی خودامضاشده ایجاد میشود.
- اگر name با رشتهٔ "req:" آغاز شود، تنها یک کلید (.key) و یک *درخواست* امضای گواهی (.req) تولید میشود. سپس میتوانید فایل ارسال کرده و سپس کلید .key و گواهی دریافتی را در فایل .pem با همان نام پایه ترکیب کنید.
- تفاوت میان "server" و "client" صرفاً انتخاب نام فایلهای خروجی و زیردایرکتوری است. این امر باعث میشود گزینهٔ SAVE-name در -ssl بتواند فایل PEM مربوط به x11vnc را که این گزینه تولید میکند، بهراحتی انتخاب کند؛ و بهطور مشابه، برداشتن گواهیهای کلاینت شما را برای گزینهٔ -sslverify آسان میسازد..IP هیچ ویژگی خاصی در نام فایل یا مکان دایرکتوری گواهیهای «server» و «client» وجود ندارد. شما میتوانید نام فایلها را تغییر دهید یا آنها را به هر کجایی که مایلید منتقل کنید.
- پیش از این گزینه، -ssldir [dir] را قرار دهید تا از دایرکتوری دیگری به جز دایرکتوری پیشفرض ~/.vnc/certs استفاده شود. پیش از انجام هرگونه ساخت کلید با -sslGenCert، ابتدا باید -sslGenCA را بر روی آن دایرکتوری اجرا کنید.
- توجه داشته باشید که نمیتوانید گواهی جدیدی با همان نام متمایز (DN) گواهی موجود بسازید. برای انجام این کار، باید فایل [dir]/CA/index.txt را ویرایش کرده و خط مربوطه را حذف کنید.
- مشابه با -sslGenCA، از شما خواسته میشود اطلاعاتی را وارد کنید که در هنگام ایجاد گواهی در آن ثبت خواهد شد.
- نکته: اگر نام دامنه کاملاً مشخص (fully-qualified hostname) را که دیگران برای اتصال استفاده میکنند میدانید، میتوانید از آن بهعنوان CommonName یا «CN» استفاده کنید تا از اخطار برخی برنامهها (مانند مرورگرهای وب و افزونهٔ جاوا) مبنی بر عدم تطابق آن با نام میزبان جلوگیری شود.
- همچنین باید عبارت عبور کلید خصوصی CA را برای باز کردن قفل کلید خصوصی ایجادشده توسط -sslGenCA وارد کنید. این کلید خصوصی برای امضای گواهی سرور یا کلاینت به کار میرود.
- گواهیهای «server» میتوانند مستقیماً توسط x11vnc با اشاره به آنها از طریق گزینهٔ -ssl [pem] استفاده شوند. فایل پیشفرض ~/.vnc/certs/server.pem خواهد بود. این فایل تنها با نوشتن سادهٔ -ssl SAVE به کار میرود. فایل pem هم شامل گواهی و هم شامل کلید خصوصی است. فایل server.crt تنها شامل گواهی است.
- فایل گواهی + کلید خصوصی «client» باید کپی شده و در برنامههای سمت VNC viewer (مرورگر وب، افزونهٔ جاوا، stunnel و غیره) وارد (import) شود. پس از انجام این کار، میتوانید فایل کلید خصوصی «client» را در این سیستم حذف کنید؛ زیرا تنها در سمت VNC viewer به آن نیاز است. برای نمونه، فایل ~/.vnc/certs/clients/<name>.pem هم گواهی و هم کلید خصوصی را در بر دارد. فایل <name>.crt تنها گواهی را شامل میشود.
- نکته: بسیار مهم است بدانید که باید کلیدهای جدید را با یک عبارت عبور (passphrase) ایجاد کرد. در غیر این صورت، اگر یک کاربر غیرقابلاعتماد فایل کلید را سرقت کند، میتواند با استفاده از آن خود را به عنوان سرور x11vnc (یا کلاینت VNC viewer) جا بزند. از شما پرسیده خواهد شد که آیا مایلید کلید را با عبارت عبور رمزگذاری کنید یا خیر. توصیه میشود این کار را انجام دهید. یکی از دشواریهای عبارت عبور این است که در هربار راهاندازی x11vnc یا برنامهٔ کلاینت، باید وارد شود.
- مثالها:
- x11vnc -sslGenCert server x11vnc -ssl SAVE -display :0 ...
- و سپس در سمت بیننده با استفاده از پوشش stunnel یعنی ss_vncviewer (به بخش FAQ مراجعه کنید): ss_vncviewer -verify ./cacert.crt hostname:0
- (این مورد فرض میکند که گواهی cacert.crt از -sslGenCA به شکل امنی به رایانهٔ VNC viewer که ss_vncviewer در آن اجرا میشود کپی شده است)
- مثال با استفاده از یک نام:
- x11vnc -sslGenCert server charlie x11vnc -ssl SAVE-charlie -display :0 ...
- مثال برای گواهی کلاینت (بهندرت استفاده میشود):
- x11vnc -sslGenCert client roger scp ~/.vnc/certs/clients/roger.pem somehost:. rm ~/.vnc/certs/clients/roger.pem
- سپس x11vnc با گزینهٔ -sslverify ~/.vnc/certs/clients/roger.crt (یا به سادگی -sslverify roger) راهاندازی میشود، و کاربر در سمت بیننده روی somehost میتواند به عنوان مثال دستور زیر را اجرا کند:
- ss_vncviewer -mycert ./roger.pem hostname:0
- اگر متغیر محیطی REQ_ARGS='...' را تنظیم کنید، به req(1) در openssl فرستاده خواهد شد. یک کاربرد رایج REQ_ARGS='-days 1095' است تا تاریخ انقضا افزایش یابد (در این مورد ۳ سال).
-sslEncKey pem
- ابزاری برای رمزگذاری یک فایل PEM موجود با عبارت عبوری که هنگام درخواست وارد میکنید. برای استفاده از آن کلید (مثلاً توسط x11vnc)، عبارت عبور باید در هر بار اجرا وارد شود.
- قالب نگارشی «SAVE» شرحدادهشده در -ssl در اینجا نیز صدق میکند. (پیش از این گزینه، -ssldir [dir] را قرار دهید تا به دایرکتوری دیگری غیر از ~/.vnc/certs پیشفرض ارجاع داده شود)
- برنامهٔ openssl(1) باید بر روی سیستم نصب و در PATH در دسترس باشد. پس از رمزگذاری فایل کلید، دستور x11vnc خارج میشود؛ سرور VNC اجرا نمیشود.
- مثالها: x11vnc -sslEncKey /path/to/foo.pem x11vnc -sslEncKey SAVE x11vnc -sslEncKey SAVE-charlie
-sslCertInfo pem
- اطلاعات مربوط به یک فایل PEM موجود را چاپ میکند. علاوه بر این، گواهی عمومی نیز چاپ میشود. برنامهٔ openssl(1) باید در PATH در دسترس باشد. اساساً دستور "openssl x509 -text" بر روی pem اجرا میشود.
- پس از چاپ اطلاعات، دستور x11vnc خارج میشود؛ سرور VNC اجرا نخواهد شد.
- قالب نگارشی «SAVE» شرحدادهشده در -ssl در اینجا نیز صدق میکند.
- استفاده از «LIST» فهرستی از تمامی گواهیهای تحت مدیریت را ارائه میدهد (در دایرکتوری ~/.vnc/certs؛ برای ارجاع به دایرکتوری دیگر از -ssldir استفاده کنید). گزینهٔ «ALL» اطلاعات هر کلید تحت مدیریت را چاپ میکند (این خروجی میتواند بسیار طولانی باشد). ارائهٔ نام کوتاه گواهی کلاینت یا سرور نیز جستجویی را انجام میدهد (مثلاً -sslCertInfo charlie). برای نمایش فهرستی طولانی (به شیوهٔ ls -l) از «LISTL» یا «LL» استفاده کنید.
- استفاده از «HASHON» زیردایرکتوریهای [dir]/HASH و [dir]/HASH را با پیوندهای نمادین نامگذاریشده بر اساس هش OpenSSL (مانند 0d5fbbf1.0) که به فایل *.crt مربوطه اشاره دارند، ایجاد میکند. ([dir] همان ~/.vnc/certs یا دایرکتوری مشخصشده با -ssldir است). این یک روش مفید برای دیگر برنامههای OpenSSL (مانند stunnel) است تا بدون نیاز به متصل کردن گواهیها به یکدیگر، به تمام آنها دسترسی داشته باشند. x11vnc از آنها استفاده نخواهد کرد مگر اینکه مشخصاً به آنها ارجاع دهید. «HASHOFF» این زیردایرکتوریهای HASH را حذف میکند.
- کلمات LIST، LISTL، LL، ALL، HASHON و HASHOFF میتوانند با حروف کوچک نیز نوشته شوند، مانند «list».
-sslDelCert pem
- برای حذف تمامی فایلهای .crt ،.pem ،.key و .req مرتبط با [pem] از شما تایید میخواهد. سپس x11vnc خارج میشود. «SAVE» و جستجوها همانند -sslCertInfo در اینجا نیز اعمال میشوند.
-sslScripts
- هر دو اسکریپت پوششی openssl در x11vnc شامل 'genCA' و 'genCert' را برای بررسی، تغییر و غیره چاپ میکند. این اسکریپتها در خروجی استاندارد (stdout) چاپ شده و سپس برنامهٔ x11vnc خارج میشود.
-stunnel [pem]
- استفاده از stunnel(8) (stunnel.mirt.net) برای ارائهٔ یک تونل رمزگذاریشدهٔ SSL بین بینندهها و x11vnc.
- این روش تونلسازی خارجی پیش از رمزگذاری یکپارچهٔ -ssl که در بالا توصیف شد پیادهسازی شده است. این روش همچنان به خوبی کار میکند و از نیاز به پیوند دادن با کتابخانههای OpenSSL جلوگیری مینماید. این حالت مستلزم آن است که stunnel بر روی سیستم نصب و از طریق PATH در دسترس باشد (توجه: stunnel اغلب در دایرکتوریهای sbin نصب میشود). نسخهٔ 4.x از stunnel فرض میشود (اما -stunnel3 را در زیر ببینید).
- پارامتر [pem] اختیاری است؛ از "-stunnel /path/to/stunnel.pem" برای تعیین یک فایل گواهی PEM جهت ارسال به stunnel استفاده کنید. برای اطلاعات بیشتر دربارهٔ فایلهای گواهی، گزینهٔ -ssl را ببینید.
- اینکه آیا stunnel شما گواهی اختصاصی خود را دارد یا خیر، به پیکربندی stunnel شما بستگی دارد؛ stunnel اغلب هنگام نصب یک گواهی ایجاد میکند. برای جزئیات به مستندات stunnel خود رجوع کنید. در هر صورت، اگر میخواهید از این گواهی استفاده کنید باید مسیر کامل آن را به عنوان [pem] وارد نمایید. نکته: این فایل ممکن است تنها توسط root قابل خواندن باشد.
- پارامتر [pem] همچنین میتواند رشتههای ویژهٔ "TMP"، "SAVE" و "...SAVE" به شکلی که در گزینهٔ -ssl توصیف شده است باشد. اگر [pem] مشخص نشود، "SAVE" فرض میشود.
- توجه داشته باشید که حالتهای VeNCrypt، ANONTLS و "ANON" در حالت -stunnel پشتیبانی نمیشوند..IP برنامه stunnel به عنوان یک فرآیند فرزند (child process) برای x11vnc راهاندازی میشود و هر اتصال SSL که توسط stunnel دریافت شود، رمزگشایی شده و از طریق یک سوکت محلی به x11vnc ارسال میگردد. رشتههای "The SSL VNC desktop is ..." و "SSLPORT=..." هنگام راهاندازی در خروجی چاپ میشوند تا این موضوع را نشان دهند.
- گزینه -localhost به طور پیشفرض اعمال میشود تا از دور زدن کانال SSL توسط افراد جلوگیری شود. برای غیرفعال کردن این الزام امنیتی از -env STUNNEL_DISABLE_LOCALHOST=1 استفاده کنید.
- برای دریافت خروجیهای اشکالزدایی بیشتر، -env STUNNEL_DEBUG=1 را تنظیم کنید.
- متغیر -env STUNNEL_PROG=xxx را به مسیر کامل برنامه stunnel مورد نظر خود برای استفاده تنظیم کنید (مانند /usr/bin/stunnel4).
- متغیر -env STUNNEL_LISTEN=xxx را به آدرس رابط شبکهای که باید روی آن گوش فرا داده شود تنظیم کنید (حالت پیشفرض گوش دادن روی همه رابطها است)، مانند STUNNEL_LISTEN=192.168.1.100.
- یک روش ساده برای افزودن پشتیبانی از IPv6 استفاده از STUNNEL_LISTEN=:: است.
- نمایشگر VNC شما نیز باید قادر باشد از طریق SSL متصل شود. متأسفانه تعداد کمی از آنها این قابلیت را دارند. اطلاعات مربوط به نمایشگرهای SSL را زیر گزینه -ssl مشاهده کنید. ابزار SSVNC متعلق به پروژه x11vnc یکی از گزینههاست.
- همچنین در توزیع x11vnc، فایلهای jar مربوط به اپلت جاوا از نسخههای پچشده TightVNC و UltraVNC در پوشه classes/ssl ارائه شدهاند که اتصالات SSL را برقرار میکنند. سرویسدهی به آنها را با -http، -http_ssl یا -httpdir فعال کنید (برای اطلاعات بیشتر به توضیحات گزینهها مراجعه نمایید).
- توجه داشته باشید که برای استفاده از اپلت نمایشگر جاوا، عبارت "?PORT=xxxx" در نشانیهای اینترنتی متعددی که در زمان راهاندازی چاپ میشوند، باید به مرورگر وب داده شود تا اتصال به درستی برقرار شود.
- در حال حاضر حالت خودکار "تکپورت" (single port) پروتکل HTTPS در گزینه -ssl، در حالت -stunnel بهطور کامل پشتیبانی نمیشود. با این حال، میتوان آن را از این طریق شبیهسازی کرد:
- % x11vnc -stunnel -http_ssl -http_oneport ...
- به طور کلی، راهاندازی یک تونل stunnel یا سایر تونلهای SSL در سمت نمایشگر نیز چندان دشوار نیست. یک مثال ساده در یونیکس با استفاده از نسخه 3.x ابزار stunnel به شکل زیر است:
- % stunnel -c -d localhost:5901 -r remotehost:5900 % vncviewer localhost:1
- برای ویندوز، stunnel پورت شده است و احتمالاً ابزارهای مشابه دیگری نیز در دسترس هستند. برای مثالهای بیشتر به FAQ و SSVNC مراجعه کنید.
-stunnel3 [pem]
- استفاده از نحو خط فرمان stunnel نسخه 3.x به جای نسخه 4.x. سرویسدهی اپلت جاوا با -http/-httpdir در حال حاضر در این حالت در دسترس نیست.
-enc cipher:keyfile
- استفاده از رمزنگاری متقارن با الگوریتم "cipher" و دادههای کلید سری در "keyfile". اگر keyfile به صورت pw=<string> باشد، مقدار "string" به عنوان دادههای کلید استفاده میشود.
- نکته: توصیه میشود به جای این گزینه از SSL از طریق گزینه -ssl استفاده کنید؛ زیرا SSL کاملاً شناختهشده است، دقت بالایی در ایجاد کلیدهای نشست (session keys) یکتا به کار میگیرد و سازگاری بیشتری با نرمافزارهای دیگر دارد. اگر نمیخواهید برای احراز هویت با گواهیهای SSL سر و کار داشته باشید و مایل به استفاده از SSH نیستید، اما میخواهید نشست VNC شما رمزنگاری شود، از این گزینه استفاده کنید؛ یا در صورتی که ناچارید با یک تونل کلید متقارن که بر آن کنترلی ندارید ارتباط برقرار کنید.
- توجه داشته باشید که این حالت با پلاگینهای DSM نرمافزار UltraVNC کار نخواهد کرد، زیرا آنها علاوه بر تونلسازی با الگوریتم متقارن، پروتکل RFB را نیز تغییر میدهند (یک انتخاب نامناسب در پیادهسازی...).
- مقدار cipher میتواند یکی از این موارد باشد: arc4، aesv2، aes-cfb، blowfish، aes256 یا 3des. برای اطلاعات بیشتر به مستندات OpenSSL مراجعه کنید. اندازه کلید ۱۲۸ بیت است (به جز aes256). در اینجا یک روش برای ساخت یک keyfile با این اندازه آمده است:
- dd if=/dev/random of=./my.key bs=16 count=1
- شما باید این کلید را به طور امن با سمت دیگر اتصال VNC به اشتراک بگذارید (برای مثالها SSVNC را ببینید).
- مثال: -enc blowfish:./my.key مثال: -enc blowfish:pw=swordfish
- به طور پیشفرض ۱۶ بایت سالت (salt) تصادفی و به دنبال آن ۱۶ بایت بردار مقداردهی اولیه (IV) تصادفی در ابتدای جریان داده ارسال میشوند. طرف مقابل باید این مقادیر را بخواند و رمزنگار خود را با آنها مقداردهی اولیه کند. این مقادیر کلید نشست را یکتا میسازند (بدون آنها امنیت به حداقل میرسد). به طور مشابه، طرف مقابل نیز باید salt و IV تصادفی خود را با همان طولها برای ما ارسال کند.
- دادههای salt و کلید با استفاده از درهمسازی md5 همانطور که در EVP_BytesToKey(3) شرح داده شده است، برای ایجاد یک کلید نشست ترکیب میشوند.
- فراخوانی دقیق به این صورت است: EVP_BytesToKey(Cipher, EVP_md5(), salt, keydata, len, 1, keystr, NULL)؛ که در آن salt دادههای تصادفی شرحدادهشده در بالا و keydata دادههای کلید سری مشترک است. keystr کلید نشست حاصل است. سپس الگوریتم با keystr مقداردهی اولیه شده و از بردار مقداردهی اولیه تصادفی به عنوان بلوک اول خود استفاده میکند.
- برای تغییر اندازه salt تصادفی و بردار مقداردهی اولیه از cipher@n,m استفاده کنید که در آن n طول salt و m طول بردار مقداردهی اولیه است. برای مثال:
- -enc aes-cfb@8,16:./my.key
- تنظیم هر یک از این دو روی صفر ایده مناسبی نیست، هرچند اگر طرف دیگر تونل تحت کنترل شما نباشد، ممکن است ناچار به انجام این کار شوید.
- برای نادیده گرفتن کامل salt و تابع MD5 در EVP_BytesToKey (هیچ درهمسازی انجام نمیشود: دادههای کلید مستقیماً وارد الگوریتم رمزنگاری میشود)، مقدار "-1" را برای salt مشخص کنید؛ مانند:
- -enc blowfish@-1,16:./my.key
- خلاصه پیام (message digest) را نیز میتوان به مقداری غیر از پیشفرض MD5 تغییر داد. از فرمت cipher@md+n,m استفاده کنید که در آن "md" میتواند یکی از موارد sha، sha1، md5 یا ripe باشد. برای مثال:
- -enc arc4@sha+8,16:./my.key
- پروژه نمایشگر SSVNC vnc یک ابزار رمزنگاری متقارن به نام "ultravnc_dsm_helper" ارائه میدهد که میتواند در سمت نمایشگر به کار رود. برای مثال:
- ssvncviewer exec='ultravnc_dsm_helper arc4 my.key 0 h:p'
- که در آن h:p نام میزبان و پورت سرور x11vnc است. ultravnc_dsm_helper ممکن است به صورت مستقل نیز برای ایجاد یک تونل رمزنگاری متقارن برای هر نمایشگر یا سروری (VNC یا غیره) استفاده شود. ساختار cipher (آرگومان اول) اساساً با همان نحو به کار رفته در بالا یکسان است.
- همچنین گزینه 'Non-Ultra DSM' در SSVNC را برای گزینه پیشرفته 'UltraVNC DSM Encryption Plugin' بررسی کنید.
- برای هر دو روش استفاده از نمایشگر، میتوانید اندازههای salt,ivec را تعیین کنید (در واسط گرافیکی کاربر یا به عنوان مثال arc4@8,16).
-https [port]
- استفاده از یک پورت اختصاصی و مجزای HTTPS (تنها در حالتهای -ssl و -stunnel) برای دریافت اپلت نمایشگر جاوا از طریق HTTPS؛ یعنی به جز ۵۹۰۰ و ۵۸۰۰ (پیشفرضها).
- پیشزمینه: در حالت -ssl، مشخص شده که میتوانید از یک پورت تکی VNC (مانند ۵۹۰۰) هم برای اتصالات VNC و هم HTTPS استفاده کنید (HTTPS برای واکشی اپلت VncViewer.jar سازگار با SSL که همراه با x11vnc ارائه میشود به کار میرود). از آنجا که هر دو از SSL استفاده میکنند، پیادهسازی به گونهای توسعه یافت که ترافیک HTTP (یعنی GET) را تشخیص دهد و متناسب با آن اقدام کند. نشانی اینترنتی برای مثال به این صورت خواهد بود:
- https://mymachine.org:5900
- این روش برای دیوارهای آتش و موارد مشابه مناسب است زیرا تنها نیاز به مجاز کردن یک پورت دارد. با این حال، این سازوکار به هر اتصال چند ثانیه تأخیر اضافه میکند و ممکن است ناپایدار باشد (بهویژه اگر کاربر زمان زیادی را صرف بررسی کادرهای تأیید گواهی در مرورگر، Java VM یا اپلت VNC Viewer خود کند؛ دقیقاً ۳ کادر محاورهای جداگانه با مضمون "آیا مطمئن هستید که میخواهید متصل شوید؟"!).
- پایان پیشزمینه.
- کاربرد: بنابراین از گزینه -https برای ایجاد یک پورت HTTPS مجزا و مطمئنتر جهت گوش دادن x11vnc استفاده کنید. اگر [port] تعیین نشود (یا ۰ باشد)، یک پورت به طور خودکار انتخاب میگردد. نشانی اینترنتی مورد استفاده در هنگام راهاندازی چاپ خواهد شد.
- پوشه اپلت جاوا مبتنی بر SSL از طریق گزینه -httpdir تعیین میشود. اگر این گزینه ارائه نشود، -https تلاش میکند پوشه را حدس بزند، گویی که گزینه -http داده شده باشد.
-httpsredir [port]
- در حالت -ssl با اپلت جاوای دریافت شده از طریق HTTPS، هنگام ارسال فایل HTML حاوی پارامترهای اپلت ('index.vnc' یا 'proxy.vnc')، پارامتر PORT اپلت را روی پورت واقعی VNC تنظیم نکنید، بلکه آن را روی "port" قرار دهید. در صورت عدم ارائه "port"، شماره پورت از هدر Host: پروتکل HTTP استخراج میشود.
- این قابلیت زمانی مفید است که بازهدایت (redirection) اتصال ورودی TCP توسط یک مسیریاب/درگاه/دیوار آتش از یک پورت به یک ماشین داخلی که x11vnc روی پورت متفاوتی در آن گوش میدهد، صورت گیرد. اپلت جاوا باید به پورت دیوار آتش/مسیریاب متصل شود، نه به پورت VNC در ایستگاه کاری داخلی. به عنوان مثال، میتوان از mygateway.com:443 به workstation:5900 بازهدایت انجام داد..IP این کار کاربر را از تایپ کردن https://mygateway.com/?PORT=443 در مرورگر وب خود بینیاز میکند. توجه داشته باشید که پورت 443 پورت پیشفرض https است؛ سایر پورتها باید به طور صریح مشخص شوند، برای نمونه: https://mygateway.com:8000/?PORT=8000. برای پرهیز از نیاز به گنجاندن PORT= در نشانی URL مرورگر، کافی است گزینهٔ «-httpsredir» را به x11vnc بدهید.
- این گزینه در حالت -stunnel کار نمیکند.
- ترفندهای بیشتر: متغیر محیطی X11VNC_EXTRA_HTTPS_PARAMS را برابر با پارامترهای اضافی URL جهت استفاده تنظیم کنید. به این ترتیب نیازی به مشخص کردن PARAMS اضافی در فایل index.vnc نخواهید داشت. برای نمونه: x11vnc -env X11VNC_EXTRA_HTTPS_PARAMS='?GET=1' ...
- اگر نمیخواهید پورت HTTP غیر SSL را در شبکه در معرض دید قرار دهید (یعنی تنها میخواهید تکپورت VNC/HTTPS، برای نمونه 5900، برای اتصالات باز باشد)، گزینهٔ -env X11VNC_HTTP_LISTEN_LOCALHOST=1 را مشخص کنید. به این ترتیب، اتصال به سرور httpd متعلق به LibVNCServer تنها روی localhost در دسترس خواهد بود (توجه داشته باشید که در حالت -ssl، درخواستهای HTTPS از SSL به سرور HTTP غیر SSL مربوط به LibVNCServer هدایت میشوند.)
-http_oneport
- برای حالت اتصالات رمزگذارینشده (یعنی بدون گزینههای -ssl، -stunnel یا -enc)، به اپلت Java VNC Viewer اجازه میدهد از طریق پورت VNC با استفاده از HTTP بارگیری شود.
- بدین معنا که میتوانید برای اتصالات نمایشگر اپلت جاوا از یک پورت واحد استفاده کنید، با به کار بردن نشانی URL در مرورگر وب خود مانند این نمونه:
- http://hostname:5900
- حالت عادی و دوپورته با نشانی URL به صورت http://hostname:5800 نیز کماکان به کار خود ادامه خواهد داد.
- همانطور که در بالا اشاره شد، این حالت با گزینههای رمزگذاری -ssl، -stunnel یا -enc کار نخواهد کرد. توجه داشته باشید که این حالت معادل '-enc none' است (یعنی از همان سازوکار تشخیص مورد استفاده برای HTTPS، اما بدون رمزگذاری استفاده میکند.)
- تکپورت HTTPS در حالت رمزگذاریشدهٔ -ssl (و همچنین -enc) به طور پیشفرض فعال است، بنابراین تنها هنگام برقراری اتصالات بدون رمزگذاری SSL به -http_oneport نیاز دارید.
- این حالت میتواند برای تونلهای SSH نیز سودمند باشد زیرا به این معناست که تنها یک پورت باید هدایت شود.
- گزینهٔ -httpsredir ممکن است هنگام استفاده از تونل SSH و همچنین برای هدایت پورتهای مسیریاب در این حالت نیز مفید باشد.
- توجه داشته باشید گزینهٔ -env X11VNC_HTTP_LISTEN_LOCALHOST=1 که در بالا در ذیل -httpsredir توضیح داده شد، برای سرور httpd متعلق به LibVNCServer در تمام موارد (چه ssl و چه غیر آن) اعمال میشود.
-ssh user@host:disp
- یک پورت شنود از راه دور روی ماشین «host» از طریق یک تونل SSH با استفاده از روش -R rport:localhost:lport ایجاد میکند. lport پورت شنود محلی x11vnc خواهد بود، بنابراین اتصال به rport (برابر 5900+disp) روی «host» به x11vnc خواهد رسید. برای نمونه: fred@snoopy.com:0
- این ویژگی میتواند در حالتی مفید باشد که دیواره آتش/مسیریاب مانع از اتصالات ورودی به ماشین x11vnc شود، اما ماشین ssh یعنی «host» برای مشاهدهگر VNC در دسترس باشد. عبارت «user@» نیازی نیست مگر اینکه نام کاربری unix راهدور با نام کاربری فعلی تفاوت داشته باشد.
- به طور پیشفرض sshd راه دور معمولاً به گونهای پیکربندی شده که برای rport تنها روی localhost شنود کند، بنابراین ممکن است مشاهدهگر نیز به هدایت ssh -L به «host» نیاز داشته باشد (برای خودکارسازی این کار، SSVNC را ببینید). تنظیم GatewayPorts در sshd شنود روی تمام رابطها را برای rport فعال میکند؛ در نتیجه مشاهدهگرها آسانتر میتوانند به آن متصل شوند.
- مقدار «disp» شمارهٔ نمایشگر (display) مربوط به VNC برای سمت SSH راه دور است، برای نمونه 0 با پورت 5900 مطابقت دارد و غیره. اگر disp بزرگتر از 200 باشد، خود مقدار به عنوان پورت استفاده میشود. برای تحمیل یک پورت پایین از مقدار منفی استفاده کنید، برای نمونه host:-80 از پورت 80 استفاده خواهد کرد.
- اگر ssh-agent فعال نباشد، گذرواژهٔ ssh باید در پایانهای که x11vnc در آن در حال اجراست وارد شود.
- به طور پیشفرض، ssh راه دور یک دستور 'sleep 300' را اجرا میکند تا به مدت ۵ دقیقه منتظر اتصال ورودی بماند. برای تغییر این مقدار از user@host:disp+secs استفاده کنید.
- اگر سرور SSH راه دور روی یک پورت غیر استاندارد (یعنی غیر از 22) قرار دارد، از الگوی user@host:port:disp+secs استفاده کنید.
- توجه داشته باشید که ممکن است فرایند ssh هنگام خروج x11vnc خاتمه داده نشود. برنامه تلاش میکند این کار را با بررسی خروجی ps(1) انجام دهد.
-usepw
- اگر هیچ روش گذرواژهٔ دیگری در خط فرمان مشخص نشده باشد، ابتدا مسیر ~/.vnc/passwd را جستجو کرده و در صورت یافت شدن، آن را با -rfbauth استفاده میکند؛ سپس، به دنبال ~/.vnc/passwdfile گشته و از آن با -passwdfile استفاده میکند؛ در غیر این صورت، از کاربر برای ایجاد ~/.vnc/passwd درخواست گذرواژه کرده و آن را با گزینهٔ -rfbauth به کار میگیرد. اگر هیچیک از این موارد موفقیتآمیز نباشد، x11vnc فوراً خارج میشود.
-storepasswd pass file
- گذرواژهٔ pass را به عنوان گذرواژهٔ VNC در فایل file ذخیره میکند. پس از ذخیره شدن گذرواژه، برنامه خارج میشود. از گذرواژه از طریق «-rfbauth file» استفاده کنید.
- اگر بدون هیچ آرگومانی فراخوانی شود، «x11vnc -storepasswd»، از کاربر درخواست گذرواژه میشود و در فایل ~/.vnc/passwd ذخیره خواهد شد. در صورت فراخوانی با یک آرگومان، آن آرگومان فایلی خواهد بود که گذرواژهٔ درخواستی در آن ذخیره میشود.
-nopw
- پیام هشدار بزرگ را در زمان استفاده از x11vnc بدون هیچ نوع گذرواژهای غیرفعال میکند.
-accept string
- اجرای یک دستور (احتمالاً برای پرسش از کاربر در نمایشگر X11) جهت تصمیمگیری در این مورد که آیا کلاینت ورودی مجاز به اتصال است یا خیر. string یک دستور خارجی است که از طریق system(3) یا برخی موارد خاص که در زیر شرح داده شده اجرا میشود. اگر string شامل فاصله، نویسههای پوسته و غیره است، حتماً آن را درون نقلقول قرار دهید. اگر دستور خارجی مقدار 0 را برگرداند، کلاینت پذیرفته میشود، در غیر این صورت کلاینت رد میشود. برای گسترشی جهت پذیرش کلاینت فقط برای مشاهده به بخش زیر مراجعه کنید.
- اگر x11vnc با دسترسی ریشه (root) اجرا میشود (برای نمونه از طریق inetd(8) یا از مدیرهای نمایش مانند xdm(1) ، gdm(1) و غیره)، پیش از استفاده از این گزینه، پیامدهای امنیتی آن را به دقت در نظر بگیرید (همین امر برای گزینهٔ -gone نیز صدق میکند).
- محیط: متغیر محیطی RFB_CLIENT_IP روی شماره IP کلاینت ورودی و پورت در RFB_CLIENT_PORT (یا -1 در صورت عدم دسترسی) تنظیم خواهد شد. به طور مشابه، RFB_SERVER_IP و RFB_SERVER_PORT (سمت x11vnc اتصال)، برای امکان شناسایی مدار مجازی tcp تنظیم میشوند. شناسه فرایند x11vnc در RFB_X11VNC_PID، یک شناسه کلاینت در RFB_CLIENT_ID، و تعداد سایر کلاینتهای متصل در RFB_CLIENT_COUNT قرار خواهد گرفت. متغیر RFB_MODE برابر با "accept" خواهد بود. متغیر RFB_STATE مقادیر PROTOCOL_VERSION ،SECURITY_TYPE ،AUTHENTICATION ،INITIALISATION ،NORMAL یا UNKNOWN را خواهد داشت که نشاندهندهٔ مرحلهای است که کلاینت تا آن پیش رفته است. RFB_LOGIN_VIEWONLY مقادیر 0، 1 یا -1 (نامشخص) خواهد بود. متغیرهای RFB_USERNAME ،RFB_LOGIN_TIME و RFB_CURRENT_TIME نیز ممکن است مقداردهی شوند.
- اگر string برابر با "popup" باشد، یک پنجرهٔ بازشوی توکار استفاده میشود. پنجرهٔ بازشو پس از ۱۲۰ ثانیه منقضی میشود؛ از "popup:N" برای تغییر مهلت زمانی به N ثانیه استفاده کنید (از 0 برای بدون محدودیت زمانی استفاده کنید).
- در صورت استفاده از "popup" و هنگامی که گزینهٔ -unixpw مشخص شده باشد، پس از اینکه کاربر با موفقیت از طریق گذرواژهٔ UNIX خود وارد شد، یک پنجرهٔ *دوم* باز خواهد شد. این بار کاربر به صورت UNIX:username@hostname شناسایی میشود؛ پیشوند "UNIX:" مشخص میکند که مشاهدهگر از طریق -unixpw به عنوان کدام کاربر وارد شده است. پنجرهٔ بازشوی اول صرفاً برای این است که آیا به او اجازه داده شود حتی برای ورود از طریق گذرواژهٔ unix *تلاش* کند یا خیر.
- اگر string برابر با "xmessage" باشد، فراخوانی xmessage(1) برای دستور استفاده میشود. برای کارکرد این قابلیت، xmessage باید روی سیستم نصب باشد.
- هر دو مورد "popup" و "xmessage" گزینهای را برای پذیرش کلاینت به صورت «فقط مشاهده» (View-Only، کلاینت تنها میتواند تماشا کند) ارائه میدهند. در صورتی که -viewonly مشخص شده باشد این گزینه ارائه نخواهد شد، که در آن حالت کل نمایشگر فقط قابل مشاهده است.
- اگر دستور مشخصشده توسط کاربر دارای پیشوندی مانند "yes:0,no:*,view:3 mycommand ..." باشد، این کار کد بازگشتی عددی دستور را به ترتیب با اقدامات پذیرش، رد، و پذیرش فقط-مشاهده مرتبط میسازد. به جای یک عدد از "*" برای مشخص کردن اقدام پیشفرض استفاده کنید (در صورتی که دستور مقداری غیرمنتظره برگرداند). برای نمونه "no:*" یک انتخاب مناسب است..IP توجه داشته باشید که x11vnc در زمان اجرای دستور خارجی یا پنجرهٔ بازشو (popup) مسدود (block) میشود (سایر کلاینتها ممکن است در طول این مدت هیچ بهروزرسانیای دریافت نکنند). بنابراین حضور فردی پای نمایشگر فیزیکی برای پاسخ دادن به اعلان پنجرهٔ بازشو لازم است. (اگر دسترسی خود را ناخواسته قطع کردید، از یک x11vnc دوم استفاده کنید).
- ترفندهای بیشتر -accept: از "popupmouse" استفاده کنید تا فقط کلیکهای ماوس در پنجرهٔ بازشوی داخلی شناسایی شوند. بهطور مشابه، از "popupkey" استفاده کنید تا فقط پاسخهای کلیدواژهای (زدن کلید) شناسایی شوند. این موارد برای جلوگیری از تأیید تصادفی کلاینت توسط کاربر در اثر تایپ کردن یا کلیک کردن است. هر ۳ کلیدواژهٔ مربوط به popup میتوانند با +N+M دنبال شوند تا موقعیت مکانی پنجرهٔ بازشو تعیین شود. حالت پیشفرض، قرار دادن پنجرهٔ بازشو در مرکز صفحه است.
-afteraccept string
- مشابه -accept است، به جز اینکه دستوری ارائهشده توسط کاربر را پس از پذیرش و احراز هویت کلاینت اجرا میکند. RFB_MODE روی "afteraccept" تنظیم خواهد شد و سایر متغیرهای RFB_* مانند -accept خواهند بود. برخلاف -accept، کد بازگشتی دستور توسط x11vnc تفسیر نمیشود. مثال: -afteraccept 'killall xlock &'
-gone string
- مشابه -accept است، به جز اینکه دستوری ارائهشده توسط کاربر را هنگام ترک (قطع اتصال) کلاینت اجرا میکند. RFB_MODE روی "gone" تنظیم خواهد شد و سایر متغیرهای RFB_* مانند -accept خواهند بود. کنشهای "popup" نیز اعمال میشوند. برخلاف -accept، کد بازگشتی دستور توسط x11vnc تفسیر نمیشود. مثال: -gone 'xlock &'
-users list
- اگر x11vnc به عنوان کاربر ریشه (root) اجرا شود (مثلاً از طریق inetd(8) یا مدیرهای نمایش مانند xdm(1) ، gdm(1) و غیره)، آنگاه در کوتاهترین زمان ممکن پس از برقراری اتصالها به نمایشگر X، تلاش میکند به یکی از کاربران موجود در list جداشده با ویرگول سوییچ کند. اگر x11vnc به عنوان کاربر ریشه اجرا نشود، این گزینه نادیده گرفته میشود.
- چرا از این گزینه استفاده کنیم؟ بهطور کلی نیازی به آن نیست، زیرا x11vnc از قبل به نمایشگر X متصل شده است و میتواند عملکردهای اصلی خود را انجام دهد. این گزینه افزوده شد تا برخی از دستورهای کمکی *خارجی* که x11vnc گاهبهگاه اجرا میکند بهدرستی کار کنند. بهویژه در GNOME و KDE، برای پیادهسازی ویژگی "-solid color"، متأسفانه دستورهای خارجی (gconftool-2 و dcop) باید از طرف کاربری اجرا شوند که مالک نشست میزکار است. از آنجا که این گزینه userid را تغییر میدهد، بر userid استفادهشده برای اجرای فرایندهای گزینههای -accept و -gone نیز تأثیر میگذارد. همچنین بر توانایی خواندن فایلها برای گزینههایی چون -connect، -allow و -remap و نیز ویژگی انتقال فایل ultra و tight در صورت فعال بودن اثر میگذارد. توجه داشته باشید که گاهی در فایل -connect نیز نوشته میشود.
- بنابراین با این گزینه بااحتیاط رفتار کنید زیرا در برخی موقعیتها استفاده از آن میتواند امنیت را کاهش دهد.
- بهطور کلی، سوییچ به یک کاربر تنها در صورتی انجام میگیرد که نمایشگر همچنان بتواند با هویت آن کاربر با موفقیت باز شود (این کار اساساً برای تلاش در حدس زدن مالک واقعی نشست است). مثال: "-users fred,wilma,betty". توجه داشته باشید که یک کاربر محلی مخرب مانند "barney" با استفادهٔ سریع از "xhost +" هنگام ورود به سیستم ممکن است بتواند کاری کند که فرایند x11vnc به کاربر "fred" سوییچ کند. بعد از آن چه اتفاقی خواهد افتاد؟
- تحت مدیرهای نمایش ممکن است زمان زیادی طول بکشد تا سوییچ با موفقیت انجام شود (یعنی زمانی که یک کاربر وارد شود). برای اینکه سوییچ بلافاصله و بدون توجه به اینکه آیا نمایشگر میتواند مجدداً باز شود یا خیر صورت گیرد، یک نویسهٔ "+" در ابتدای نام کاربری قرار دهید. برای مثال "-users +bob" یا "-users +nobody".
- مورد دوم (یعنی سوییچ فوری به کاربر "nobody") تنها کاربرد آشکار گزینهٔ -users است که امنیت را افزایش میدهد.
- از شیوهٔ نگارش زیر برای مرتبط کردن یک گروه با یک کاربر استفاده کنید: user1.group1,user2.group2,... توجه داشته باشید که initgroups(2) همچنان ابتدا فراخوانی خواهد شد تا تلاش کند به تمام گروههای کاربر (گروههای اصلی و فرعی) سوییچ کند. تنها در صورتی که این کار شکست بخورد یا در دسترس نباشد، سوییچ به تکگروه مشخصشده به روش بالا (یا گروه اصلی کاربر در صورت مشخص نشدن) با setgid(2) انجام میشود. از -env X11VNC_SINGLE_GROUP=1 استفاده کنید تا از تلاش برای فراخوانی initgroups(2) جلوگیری شده و فقط به همان تکگروه سوییچ شود. این نوع تنظیم تنها برای عملکرد درست دسترسیهای انتقال فایل ultra یا tight مورد نیاز است. این قالب برای هر فهرست جداشده با ویرگول از کاربران، حتی برای حالتهای ویژهٔ "=" که در زیر شرح داده شده است، اعمال میشود.
- در حالت -unixpw، اگر "-users unixpw=" ارائه شود، پس از آنکه کاربری هویت خود را از طریق سازوکار -unixpw احراز کرد، x11vnc تلاش میکند به آن کاربر سوییچ کند، گویی که "-users +username" ارائه شده بود. اگر میخواهید کاربرانی را که این کار برایشان انجام میشود محدود کنید، آنها را به صورت فهرستی جداشده با ویرگول پس از "unixpw=" ارائه دهید. گروهها نیز میتوانند همانطور که در بالا شرح داده شد مشخص شوند.
- بهطور مشابه، در حالت -ssl، اگر "-users sslpeer=" ارائه شود، پس از آنکه یک کلاینت SSL با گواهی خود احراز هویت کرد (گزینهٔ -sslverify برای این کار لازم است)، x11vnc نام کاربری یونیکس را از فیلد "emailAddress" (به صورت username@hostname.com) در "Subject" گواهی SSL از نوع x509 استخراج کرده و سپس تلاش میکند به آن کاربر سوییچ کند، گویی که "-users +username" ارائه شده بود. اگر میخواهید کاربرانی را که این کار برایشان انجام میشود محدود کنید، آنها را به صورت فهرستی جداشده با ویرگول پس از "sslpeer=" ارائه دهید. متغیر محیطی X11VNC_SSLPEER_CN را تنظیم کنید تا بهجای فیلد Email، از Common Name (معمولاً یک hostname) استفاده شود.
- نکته: در حالت sslpeer=، مدیر x11vnc باید دقت داشته باشد گواهیهای کلاینتی که به -sslverify اضافه میکند دارای نام کاربری یونیکس مورد نظر در فیلد "emailAddress" گواهی باشند. در غیر این صورت ممکن است کاربری بتواند با هویت فردی دیگر وارد شود. این دستور میتواند برای بررسی مفید باشد: "openssl x509 -text -in file.crt"، خط "Subject:" را بررسی کنید. همچنین، همراه با متغیرهای محیطی معمول RFB_* (نگاه کنید به -accept) که به دستورهای خارجی cmd= ارسال میشوند، RFB_SSL_CLIENT_CERT روی رشتهٔ گواهی x509 کلاینت تنظیم خواهد شد.
- حالت sslpeer= میتواند به یافتن نشستهای X از طریق سازوکارهای FINDDISPLAY و FINDCREATEDISPLAY کمک کند.
- برای سوییچ فوری به یک کاربر *پیش از* برقراری اتصال به نمایشگر X یا باز شدن هر فایلی، از نویسهٔ "=" استفاده کنید: "-users =bob". البته آن کاربر باید بتواند نمایشگر X و فایلها را باز کند.
- کاربر ویژهٔ "guess=" به این معناست که پایگاهدادهٔ utmpx (نگاه کنید به who(1) ) برای یافتن کاربری که به شمارهٔ نمایشگر (از DISPLAY یا گزینهٔ -display) متصل است بررسی شده و به او سوییچ شود. برای محدود کردن فهرست حدسها، از این دستور استفاده کنید: "-users guess=bob,betty".
- حتی مرموزتر از آن، کاربر ویژهٔ "lurk=" است که یعنی سعی میکند DISPLAY را نیز از پایگاهدادهٔ ورود utmpx حدس بزند. بنابراین «کمین میکند» و منتظر ورود هر فردی به یک نشست X میماند و سپس به آن متصل میشود. فهرستی از کاربران را بعد از = مشخص کنید تا بررسی فقط به همان کاربران محدود شود. برای فعال کردن یک حالت جستجوی متفاوت، اگر نخستین کاربر در فهرست چیزی مانند ":0" یا ":0-2" باشد، نشاندهندهٔ دامنهای از شمارههای DISPLAY است که برای همهٔ کاربرانی که وارد شدهاند (صرفنظر از اینکه در پایگاهدادهٔ utmpx باشند یا خیر) آزمایش خواهد شد. همچنین عملکرد "-display WAIT:..." را ببینید. مثالها: "-users lurk=" و همچنین "-users lurk=:0-1,bob,mary"
- هنگام استفاده از حالتهای "guess=" و "lurk=" بهویژه محتاط باشید. استفاده از آنها در سیستمهایی که کاربران محلی غیرقابلاعتماد دارند توصیه نمیشود.
-noshm
- برای پایش (polling) از افزونهٔ MIT-SHM استفاده نکنید. نمایشگرهای دوردست را میتوان به این روش پایش کرد: مراقب باشید این کار میتواند حجم زیادی از پهنای باند شبکه را مصرف کند. این گزینه همچنین زمانی مفید است که ماشین محلی تعداد محدودی سگمنت shm داشته باشد و -onetile کافی نباشد.
-flipbyteorder
- گاهی در صورتی که میزبان پایششدهٔ دوردست ترتیب بایتها (endianness) متفاوتی داشته باشد مورد نیاز است. تا زمانی که -noshm تنظیم نشده باشد، نادیده گرفته میشود.
-onetile
- از سازوکار جدید فریمبافر copy_tiles() استفاده نکنید، فقط از ۱ کاشی shm برای پایش استفاده کنید. سگمنتهای shm مورد استفاده را به ۳ محدود میکند.
- برای غیرفعال کردن هرگونه کاهش خودکار shm، متغیر محیطی X11VNC_NO_LIMIT_SHM را تنظیم کنید.
-solid [color]
- برای بهبود کارایی، هنگامی که کلاینتهای VNC متصل هستند تلاش میکند پسزمینهٔ دسکتاپ را به یک رنگ یکدست تغییر دهد. آرگومان [color] اختیاری است: رنگ پیشفرض "cyan4" است. برای انتخاب رنگ دیگر، رنگ X (نام موجود در rgb.txt، مانند "darkblue" یا مقادیر عددی "#RRGGBB") را مشخص کنید.
- در حال حاضر این گزینه فقط در GNOME، KDE، CDE، XFCE و X کلاسیک (یعنی همراه با تصویر پسزمینه روی پنجرهٔ ریشه/root window) کار میکند. دستورهای خارجی "gconftool-2" ،"dcop" و "xfconf-query" بهترتیب برای GNOME، KDE و XFCE اجرا میشوند. این قابلیت روی MacOSX محلی نیز کار میکند. (امکان انتخاب رنگ برای MacOSX یا XFCE وجود ندارد.) سایر میزکارها کار نخواهند کرد، (در صورت یافتن دستورهای متناظر، آنها را برای ما ارسال کنید). اگر x11vnc به عنوان کاربر ریشه اجرا میشود (مانند inetd(8) یا gdm(1) )، گزینهٔ -users ممکن است برای GNOME، KDE و XFCE لازم باشد. اگر x11vnc میزکار شما را نادرست حدس بزند، میتوانید با اضافه کردن پیشوند "gnome:"، "kde:"، "cde:"، "xfce:" یا "root:" به نام رنگ، نوع آن را تحمیل کنید..IP بروزرسانی: -solid دیگر روی KDE4 کار نمیکند.
- این حالت به صورت محدود در کنسول Mac OS X با یک رنگ ('kelp') و با استفاده از نوشتن محافظ صفحه (screensaver) روی پسزمینه کار میکند. برای تغییر رنگ، فایل VncSolidColor.png را در مسیر "~/Library/Screen Savers" بررسی کنید.
-blackout string
- سیاه کردن مستطیلها روی صفحه نمایش. string فهرستی جدا شده با ویرگول از ابعاد هندسی نوع WxH+X+Y برای هر مستطیل است. اگر یکی از موارد موجود در فهرست رشته "noptr" باشد، نشانگر ماوس اجازه ورود به ناحیه سیاه شده را نخواهد داشت.
-xinerama, -noxinerama
- اگر صفحه نمایش شما از چندین نمایشگر متصل به یکدیگر از طریق XINERAMA تشکیل شده است و آن صفحه به شکل یک مستطیل کامل نیست، این گزینه تلاش میکند نواحی نیازمند به سیاه شدن را حدس بزند (در صورتی که سیستم شما دارای libXinerama باشد). پیشفرض: -xinerama
- به طور کلی متوجه شدهایم که در نمایشگرهای XINERAMA، در صورت عملکرد نامنظم نشانگر ماوس ممکن است نیاز به استفاده از گزینه "-xwarppointer" داشته باشید که به طور پیشفرض فعال است. اگر این قابلیت را نمیخواهید از "-noxwarppointer" استفاده کنید.
-xtrap
- استفاده از افزونه DEC-XTRAP برای درج ورودیهای کلید و ماوس. جهت استفاده در سیستمهای قدیمی مانند X11R5 که افزونه XTEST در آنها ناقص بوده یا وجود ندارد. به طور پیشفرض اگر کنترل تسخیر (grab) سرور در XTEST وجود نداشته باشد DEC-XTRAP استفاده خواهد شد؛ برای درج فشرده شدن کلیدها و ماوس از طریق DEC-XTRAP نیز از -xtrap استفاده کنید.
-xrandr [mode]
- اگر نمایشگر از افزونه XRANDR (تغییر اندازه، چرخش و انعکاس در X) پشتیبانی کند و شما انتظار وقوع رویدادهای XRANDR را در زمان اجرای x11vnc روی نمایشگر داشته باشید، این گزینه مشخص میکند که x11vnc باید سعی کند به آنها پاسخ دهد (در مقابل از کار افتادن برنامه به دلیل فرض ثابت ماندن ابعاد قدیمی صفحه). برای اطلاعات بیشتر صفحه راهنمای xrandr(1) را بررسی کرده و دستور 'xrandr -q' را اجرا کنید. [mode] اختیاری بوده و در زیر توضیح داده شده است.
- از آنجا که پایش رویدادهای XRANDR و بهداماندازی خطاها سربار بررسی دورهای (polling) را افزایش میدهد، تنها در صورتی از این گزینه استفاده کنید که تغییرات XRANDR مورد انتظار باشد. به عنوان مثال روی یک رایانه جیبی (PDA) یا لپتاپ با صفحه چرخان، یا استفاده از محیطهای رومیزی آگاه از XRANDR که مرتباً تغییر اندازه میدهند. بهتر است مشاهده تصویر از طریق یک vncviewer که از کدگذاری NewFBSize پشتیبانی میکند انجام شود، زیرا میتواند به تغییرات اندازه صفحه واکنش مناسب نشان دهد. در غیر این صورت، LibVNCServer تلاش میکند برای نمایشگرهایی که این توانایی را ندارند یک عملکرد معقول پیادهسازی کند (ممکن است بخشهایی از صفحه بریده شده، استفادهنشده باقی بماند، و غیره).
- نکته: اکنون پیشفرض این است که رویدادهای XRANDR بررسی شوند، اما هر فراخوانی X که ممکن است به دلیل تغییر اندازه با شکست مواجه شود به دام انداخته نشود. در صورت دریافت یک رویداد تغییر اندازه، حالت کامل -xrandr فعال میشود. برای غیرفعال کردن کل فرایند بررسی رویدادها، این گزینه را ارائه دهید: -noxrandr.
- حالت "mode" به طور پیشفرض "resize" است، به این معنی که یک فریمبافر جدید با اندازه تغییر یافته ایجاد شود و فرض گردد همه نمایشگرها (viewers) با این تغییر سازگارند. "newfbsize" یعنی ابتدا اتصال همه نمایشگرهایی که از کدگذاری NewFBSize VNC پشتیبانی نمیکنند قطع شده و سپس اندازه فریمبافر تغییر داده شود. "exit" به معنای قطع اتصال همه کلاینتهای نمایشگر و سپس خاتمه دادن به x11vnc است.
-rotate string
- چرخاندن و/یا معکوس کردن نمای فریمبافر صادر شده توسط VNC. این تبدیل مستقل از XRANDR است و به صورت نرمافزاری در حافظه اصلی انجام میشود، بنابراین ممکن است کندتر باشد. این حالت میتواند در دستگاههای دستی با حالتهای عمودی یا افقی که با ترتیب خطوط پویش (scanline) فریمبافر واقعی همخوانی ندارند مفید باشد. string میتواند مقادیر زیر باشد:
- x معکوس کردن در راستای محور x y معکوس کردن در راستای محور y xy معکوس کردن در راستای هر دو محور x و y +90 چرخش ۹۰ درجه در جهت عقربههای ساعت -90 چرخش ۹۰ درجه در خلاف جهت عقربههای ساعت +90x چرخش ۹۰ درجه در جهت عقربههای ساعت، سپس معکوس کردن در محور x +90y چرخش ۹۰ درجه در جهت عقربههای ساعت، سپس معکوس کردن در محور y
- این موارد تمامی حالتهای چرخش و انعکاس ممکن را پوشش میدهند.
- نامهای مستعار: معادل xy: yx، +180، -180، 180 معادل -90: +270، 270 معادل +90: 90، (همچنین برای 90x، 90y)
- مانند -scale، این تبدیل در آخرین مرحله از زنجیره تبدیلهای فریمبافر اعمال میشود و به همین دلیل هر گزینهای که دارای ابعاد هندسی است، مانند -blackout، -clip و غیره، نسبت به فریمبافر اصلی X (یا -rawfb) سنجیده میشوند، نه فریمبافر نهایی که برای کلاینتهای VNC ارسال میگردد.
- اگر تمایل ندارید شکل مکاننما چرخانده شود، پیشوند "nc:" را به string اضافه کنید، مانند "nc:+90"، "nc:xy" و غیره.
-padgeom WxH
- هر زمان که یک vncviewer جدید متصل شود، فریمبافر با یک فریمبافر ساختگی و یکدست سیاه به ابعاد WxH جایگزین میشود. اندکی پس از آن، فریمبافر اصلی جایگزین آن خواهد شد. این گزینه برای استفاده با vncviewerهایی طراحی شده که از NewFBSize پشتیبانی نمیکنند و شخص میخواهد مطمئن شود ابعاد هندسی اولیه نمایشگر به اندازه کافی بزرگ باشد تا تمام تغییر اندازههای بعدی را مدیریت کند (مثلاً تحت تأثیر -xrandr، -remote id:windowid، تغییر مقیاس، و غیره).
- در حالت -unixpw این گزینه اندازه صفحه ورود را مشخص میکند. برای نادیده گرفتن padgeom پس از برپایی صفحه ورود، از "once:WxH" استفاده کنید.
-o logfile
- نوشتن پیامهای stderr در فایل logfile به جای ترمینال. معادل با "-logfile file". برای الحاق به انتهای فایل از "-oa file" یا "-logappend file" استفاده کنید. اگر logfile شامل رشته "%VNCDISPLAY" باشد، به شناسه نمایشگر vnc بسط داده میشود (ممکن است نام آن نیاز به حدس زدن داشته باشد). "%HOME" نیز پشتیبانی میشود.
-flag file
- نوشتن رشته "PORT=NNNN" (مانند PORT=5900) علاوه بر stdout در file. این گزینه میتواند برای اسکریپتهای واسط جهت تشخیص زمان آماده به کار شدن x11vnc مفید باشد.
-rmflag file
- حذف file هنگام خروج به منظور اعلان پایان کار x11vnc. اگر فایل از قبل موجود نباشد یا اگر file دارای پیشوند "create:" باشد، در زمان راهاندازی ساخته خواهد شد. در صورت ایجاد فایل، مقدار PID برنامه x11vnc در آن قرار میگیرد؛ در غیر این صورت محتوای فایل تغییری نخواهد کرد. برای جلوگیری از ایجاد فایل از پیشوند "nocreate:" استفاده کنید.
-rc filename
- استفاده از filename به عنوان فایل rc به جای $HOME/.x11vncrc.
-norc
- عدم پردازش فایلهای .x11vncrc برای دریافت گزینهها.
-env VAR=VALUE
- تنظیم متغیر محیطی 'VAR' روی مقدار 'VALUE' در زمان راهاندازی x11vnc. این گزینه قابلیتی کارآمد جهت جلوگیری از ایجاد اسکریپتهای پوسته واسط برای مقداردهی متغیرهای محیطی است. میتوانید به تعداد نیاز از این گزینه در خط فرمان استفاده کنید.
-prog /path/to/x11vnc
- تعیین مسیر کامل اجرایی برنامه x11vnc برای مواقعی که نمیتوان آن را از argv[0] استخراج کرد (مانند tcpd/inetd).
-h, -help
- چاپ این متن راهنما. -?, -opts تنها گزینههای x11vnc را فهرست میکند.
-V, -version
- چاپ نسخه برنامه و تاریخ آخرین تغییرات.
-license
- چاپ اطلاعات پروانه نرمافزار. معادل با -copying و -warranty.
-dbg
- به جای خروج از برنامه پس از پاکسازی، اجرای یک "پوسته رفع اشکال فروپاشی" ساده هنگام به دام انداختن خطاهای مهلک.
-q, -quiet
- حالت بیصدا از طریق چاپ خروجیهای اطلاعاتی کمتر در stderr (برای بازگردانی حالت -quiet قبلی از -noquiet استفاده کنید).
- گزینه -quiet تمام خروجیهای اطلاعاتی را حذف نمیکند، بلکه تنها آنها را کاهش میدهد. این گزینه در اغلب حالتهای کمکی، مانند -storepasswd نادیده گرفته میشود. برای حذف کامل خروجیها از دستوراتی چون: 2>/dev/null 1>&2 و غیره استفاده کنید.
-v, -verbose
- چاپ اطلاعات بیشتر در stderr..PP -bg
- پس از برپاسازی صفحه، به پسزمینه (background) میرود. پیامهای ارسالی به stderr از بین میروند مگر اینکه از -o logfile استفاده شود. دستوری مشابه این میتواند در یک اسکریپت مفید باشد:
- port=`ssh -t $host "x11vnc -display :0 -bg" | grep PORT`
- port=`echo "$port" | sed -e 's/PORT=//'`
- port=`expr $port - 5900`
- vncviewer $host:$port
-modtweak, -nomodtweak
- گزینه -modtweak به طور خودکار تلاش میکند تا کلیدهای تبدیلگر (modifiers) مانند AltGr و Shift را برای صفحهکلیدهای با زبانهای متفاوت میان کلاینت و میزبان تنظیم کند. در غیر این صورت، تنها یک رویداد فشردن/رها کردن کلید مربوط به یک Keycode شبیهسازی میشود (یعنی صرفنظر از وضعیت کلیدهای تبدیلگر: این حالت معمولاً برای صفحهکلیدهای یکسان کار میکند). همچنین برای حل مواردی که یک Keysym به چندین کلید اختصاص یافته مفید است (مانند کلیدهای «<» + «>» و «,» + «<»). پیشفرض: -modtweak
- اگر با کلیدها مشکل دارید و -xkb یا -noxkb و موارد مشابه کمکی نمیکنند، -nomodtweak را امتحان کنید.
- در برخی سیستمهای HP-UX مشاهده شده است که نگاشت کلید عجیبی دارند که در آن یک keycode منفرد ممکن است تا سه بار دارای یک keysym، مثلاً «#» باشد. میتوانید با «xmodmap -pk» یا گزینه -dk آن را بررسی کنید. اشکال زمانی رخ میدهد که هنگام تایپ «#»، کاراکتر «3» درج میشود. اگر با این مشکل مواجه شدید، تنظیم متغیر محیطی MODTWEAK_LOWEST=1 را امتحان کنید تا مشخص شود کمکی میکند یا خیر.
-xkb, -noxkb
- هنگامی که در حالت modtweak هستید، از افزونه XKEYBOARD (در صورتی که نمایشگر X از آن پشتیبانی کند) برای تنظیم کلیدهای تبدیلگر استفاده میکند. این ویژگی قدرتمند است و اگر در صورت استفاده از -modtweak به تنهایی همچنان مشکلات نگاشت کلید وجود دارد، باید آزمایش شود. پیشفرض این است که بررسی شود آیا برخی keysymهای متداول، مانند !، @، [، فقط از طریق حالت -xkb در دسترس هستند یا خیر و در صورت مثبت بودن، این حالت به طور خودکار فعال میشود. برای غیرفعال کردن این تشخیص خودکار از -noxkb استفاده کنید.
- هنگامی که حالت -xkb فعال است میتوانید این متغیرهای محیطی را تنظیم کنید. این متغیرها فقط زمانی اعمال میشوند که در انتخاب کلید ابهام وجود داشته باشد (یعنی نگاشت یکبهیک نباشد). NOKEYHINTS=1: برای رویدادهای رها کردن کلیدهای اسکی (up keystrokes)، از راهنماهای امتیاز ذخیرهشده هنگام فشردن کلید استفاده نمیکند. NOANYDOWN=1: برای رویدادهای رها کردن کلید، به جستجو در میان کلیدهایی که در حال حاضر فشرده شدهاند متوسل نمیشود. KEYSDOWN=N: برای رفع ابهام هنگام دریافت رویداد رها کردن کلید، آخرین N کلید فشردهشده را به خاطر میسپارد.
-capslock
- هنگامی که در حالت -modtweak (پیشفرض) یا -xkb هستید، اگر یک keysym در محدوده A-Z دریافت شود، کارساز X را بررسی میکند تا مشخص شود آیا Caps_Lock فعال است یا خیر. در صورتی که فعال باشد، برای تولید keysym به صورت مصنوعی کلید Shift را فشار نمیدهد. این قابلیت به کلید CapsLock امکان میدهد در شرایط خاصی به درستی عمل کند: مشخصاً هنگامی که *هر دو* ماشین VNC viewer و کارساز X مربوط به x11vnc در وضعیت روشن بودن CapsLock باشند. اگر یک طرف دارای CapsLock روشن و طرف دیگر خاموش باشد و صفحهکلید مطابق انتظار عمل نکند، باید وضعیتهای CapsLock را اصلاح کنید (راهنمایی: فشردن CapsLock در داخل و خارج از پنجره viewer میتواند به تغییر وضعیت هر دوی آنها به حالت صحیح کمک کند). با این حال، برای بهترین نتیجه از این گزینه استفاده نکنید، بلکه *فقط* CapsLock را در سمت VNC viewer فعال کنید (یعنی با فشردن CapsLock در خارج از پنجره viewer؛ همچنین گزینه -skip_lockkeys را در زیر ببینید). همچنین -nomodtweak را برای یک راهحل جایگزین ممکن امتحان کنید.
-skip_lockkeys, -noskip_lockkeys
- باعث میشود x11vnc تمام keysymهای Caps_Lock، Shift_Lock، Num_Lock و Scroll_Lock دریافتی از بینندهها (viewers) را نادیده بگیرد. ایده این است که شما Caps_Lock را در سمت VNC viewer فشار میدهید اما این کار وضعیت قفل را در کارساز X سمت x11vnc تغییر نمیدهد. با این حال، حروف بزرگ شما از طریق شبکه ارسال شده و به درستی در کارساز X سمت x11vnc اعمال میشوند. توجه داشته باشید که این حالت احتمالاً در حالت -nomodtweak مطابق میل شما عمل نخواهد کرد. همچنین، یک ترفند ترمیمی (kludge) برای ارقام KP_n همیشه در این حالت اعمال میشود: آنها به keysymهای ارقام معمولی نگاشت میشوند. گزینه -capslock را نیز در بالا ببینید. پیشفرض -noskip_lockkeys است.
-skip_keycodes string
- فهرست keycodeهای دهدهی که با کاما از هم جدا شدهاند را نادیده میگیرد. شاید اینها keycodeهایی باشند که روی صفحهکلید شما وجود ندارند اما کارساز X شما وجود آنها را فرض میکند. در حال حاضر تنها برای حالت -xkb کاربرد دارد. از این گزینه برای کمک به x11vnc در حل مسئله معکوسی که سعی در حل آن دارد استفاده کنید: نگاشت Keysym -> Keycode(s) هنگامی که ابهام وجود دارد (بیش از یک Keycode به ازای هر Keysym). برای دیدن نگاشت کلیدهای خود دستور «xmodmap -pk» را اجرا کنید. مثال: «-skip_keycodes 94,114»
-sloppy_keys
- گزینهای آزمایشی که تلاش میکند برخی رفتارهای شلخته یا ناهماهنگ کلیدها («sloppy») را اصلاح کند. برای نمونه، اگر در سمت viewer کلیدهای Shift+Key را فشار دهید اما کلید Shift را پیش از Key رها کنید، این عمل ممکن است موجب تولید نویسههای ناخواسته اضافی شود (معمولاً تنها میان صفحهکلیدهایی با زبانهای متفاوت رخ میدهد). تنها در صورتی از این گزینه استفاده کنید که در برخی ضربههای کلید با مشکل مواجه میشوید.
-skip_dups, -noskip_dups
- برخی VNC viewerها رویدادهای کلیدی تکراری ناممکنی ارسال میکنند؛ مانند key-down، key-down، key-up، key-up همگی برای یک کلید یکسان، یا ۲۰ بار فشردن متوالی برای یک کلید تبدیلگر مشابه! تنظیم -skip_dups به معنای نادیده گرفتن این موارد تکراری و تنها پردازش رویداد نخست است. توجه: برخی VNC viewerها فرض میکنند میتوانند رویدادهای فشردن (down) را بدون رویدادهای رها کردن متناظر (up) ارسال کنند، بنابراین نباید این گزینه را برای این نمایشگرها تنظیم کنید (نشانه: برخی کلیدها به طور خودکار تکرار نمیشوند). پیشفرض: -noskip_dups
-add_keysyms, -noadd_keysyms
- اگر یک Keysym از VNC viewer دریافت شود و آن Keysym در کارساز X وجود نداشته باشد، آن Keysym روی یک کلید استفادهنشده به نگاشت صفحهکلید کارساز X اضافه میشود. Keysymهای اضافهشده به صورت دورهای و همچنین هنگام خروج x11vnc حذف خواهند شد. پیشفرض: -add_keysyms
-clear_mods
- در هنگام راهاندازی و خروج، کلیدهای تبدیلگر را با ارسال KeyRelease برای هر یک پاکسازی میکند. تبدیلگرهای Lock نادیده گرفته میشوند. برای پاکسازی وضعیت در صورتی که نمایشگر به طور تصادفی با کلیدی فشردهشده به جا مانده باشد، استفاده میشود.
-clear_keys
- مشابه -clear_mods است، با این تفاوت که تلاش میکند «هر» کلید فشردهشدهای را رها سازد. توجه داشته باشید که این گزینه و -clear_mods میتوانند با کاربری که پای صفحهکلید فیزیکی در حال تایپ است تداخل ایجاد کنند.
-clear_all
- مشابه -clear_keys است، با این تفاوت که تلاش میکند قفلهای CapsLock، NumLock و غیره را نیز پاکسازی و رها سازد.
-remap string
- نگاشتهای مجدد Keysym را از فایلی به نام string میخواند. قالب به صورت یک جفت Keysym در هر خط (میتواند نام یا مقدار هگزادسیمال باشد) است که با یک فاصله جدا شدهاند. اگر فایلی به نام string وجود نداشته باشد، در عوض به این صورت تفسیر میشود: key1-key2,key3-key4,... برای مشاهده فهرستی از نامهای Keysym فایل سرآیند <X11/keysymdef.h> را بررسی کنید، یا از xev(1) استفاده کنید.
- برای نگاشت یک کلید به کلیک دکمه ماوس، از Keysymهای ساختگی مانند «Button1» و غیره استفاده کنید. مثال: «-remap Super_R-Button2» (مفید برای جایگذاری متن (paste) روی لپتاپ)
- در صورتی که سیستمی که از آن تصویر را مشاهده میکنم فاقد چرخ پیمایش (scrollwheel) باشد یا مایل به استفاده از چرخ آن نباشم، از این گزینهها استفاده میکنم:
- -remap Super_R-Button4,Menu-Button5 -remap KP_Add-Button4,KP_Enter-Button5
- مورد نخست روی یک PC و مورد دوم روی یک MacBook به کار میرود. بدین ترتیب میتوان از این کلیدهای کماستفاده برای پیمایشهایی بزرگتر از آنچه کلیدهای پیکان Up و Down ارائه میدهند بهره برد. از این طریق میتوان متون یا صفحات وب را با سرعت بیشتری پیمایش کرد (بهویژه اگر قابلیت تشخیص پیمایش x11vnc فعال باشد).
- برای کلیکهای چندگانه از Button44، Button12 و غیره استفاده کنید.
- برای غیرفعال کردن یک keysym (یعنی طوری تنظیم شود که به سیستم تزریق نشود)، آن را به «NoSymbol» یا «None» نگاشت مجدد کنید.
- کلیدهای مرده (Dead keys): کلیدهای «مرده» (یا صامت، بیصدا) کلیدهایی هستند که نویسهای تولید نمیکنند بلکه باید ضربه کلید دومی به دنبال آنها بیاید. این کلیدها اغلب برای درج نشانههای اکسنت روی نویسهها به کار میروند؛ به عنوان مثال قرار دادن «`» روی «a» با فشردن کلید مرده و سپس فشردن «a». توجه داشته باشید که این تفسیر بخشی از هسته X11 نیست و تصمیمگیری درباره نحوه واکنش به این توالی بر عهده جعبهابزار (toolkit) یا برنامه کاربردی است. نامهای X11 برای این keysymها عبارتند از «dead_grave»، «dead_acute» و غیره. با این حال برخی VNC viewerها به جای آن keysymهای «grave» و «acute» را ارسال میکنند و در نتیجه عملکرد اکسنت غیرفعال میشود. برای رفع این مشکل میتوان از -remap استفاده کرد. برای مثال: «-remap grave-dead_grave,acute-dead_acute»
- برای سهولت کار، «-remap DEAD» این نگاشتهای مجدد را اعمال میکند:
-
g grave-dead_grave
a acute-dead_acute
c asciicircum-dead_circumflex
t asciitilde-dead_tilde
m macron-dead_macron
b breve-dead_breve
D abovedot-dead_abovedot
d diaeresis-dead_diaeresis
o degree-dead_abovering
A doubleacute-dead_doubleacute
r caron-dead_caron
e cedilla-dead_cedilla.IP - اگر تنها یک زیرمجموعه میخواهید، از برچسب حرف اول استفاده کنید؛ مثلاً «-remap DEAD=ga» برای دریافت دو مورد نخست. نگاشتهای مجدد اضافی را میتوان از طریق کاما نیز تعیین کرد، مانند «-remap DEAD=ga,Super_R-Button2». در نهایت، «DEAD=missing» به این معنی است که تمامی موارد بالا اعمال شوند تا زمانی که مؤلفه سمت چپ از پیش در keymap مربوط به X11 وجود نداشته باشد.
-norepeat, -repeat
- گزینه -norepeat تکرار خودکار کلید در کارساز X را هنگامی که کلاینتهای VNC متصل هستند و ورودی صفحهکلید VNC بیش از ۵ دقیقه بیکار نبوده است، غیرفعال میکند. این گزینه اشکال تکرار فشردهشدن کلیدها (ناشی از تأخیرهای پردازشی طولانی بین رویدادهای فشردهشدن و رهاشدن کلید در کلاینت: بر اثر تغییرات بزرگ صفحه یا تأخیر بالای شبکه) را دور میزند. پیشفرض: -norepeat
- میتوانید متغیر محیطی X11VNC_IDLE_TIMEOUT را روی تعداد ثانیههای بیکاری دلخواه خود تنظیم کنید (۵ دقیقه = ۳۰۰ ثانیه).
- نکته: سمت نمایشدهنده VNC شما به احتمال زیاد تکرار خودکار را انجام میدهد، بنابراین هیچ نقصی ایجاد نمیشود مگر اینکه فردی همزمان پای نمایشگر واقعی X نشسته باشد.
- از «-norepeat N» برای تعیین اینکه در صورت باطل شدن norepeat توسط چیز دیگری (مانند مدیر نشست X)، چند بار باید بازنشانی شود استفاده کنید. مقدار پیشفرض ۲ است. برای بازنشانیهای نامحدود از یک مقدار منفی استفاده کنید.
-nofb
- نادیده گرفتن فریمبافر ویدیویی: فقط صفحهکلید و اشارهگر را پردازش میکند. برای استفاده در پیکربندیهای دو نمایشگره با Win2VNC و x2vnc در نظر گرفته شده است.
-nobell
- رویدادهای XBell را زیر نظر نگیرد (هیچ بوقی شنیده نخواهد شد). نکته: نظارت بر XBell به افزونه XKEYBOARD نیاز دارد.
-nosel
- تبادل X selection/cutbuffer بین نمایشدهندههای VNC و کارساز X را به هیچ عنوان مدیریت نکند.
-noprimary
- انتخاب PRIMARY را برای ارسال تغییرات به کلاینتها دورهای بررسی نکند (poll انجام ندهد). (با این حال، PRIMARY همچنان بر اساس تغییرات دریافتی تنظیم میشود).
-nosetprimary
- انتخاب PRIMARY را برای تغییرات دریافت شده از کلاینتهای VNC تنظیم نکند.
-noclipboard
- انتخاب CLIPBOARD را برای ارسال تغییرات به کلاینتها دورهای بررسی نکند (poll انجام ندهد). (با این حال، CLIPBOARD همچنان بر اساس تغییرات دریافتی تنظیم میشود).
-nosetclipboard
- انتخاب CLIPBOARD را برای تغییرات دریافت شده از کلاینتهای VNC تنظیم نکند.
-seldir string
- اگر رشته جهت «send» باشد، انتخاب را فقط به نمایشدهندهها ارسال میکند، و اگر «recv» باشد، آن را فقط از نمایشدهندهها دریافت میکند. این کار برای دور زدن مشکل برنامههایی است که انتخاب را بیش از حد مکرر تنظیم کرده و طرف دیگر را مختل میکنند. در واقع میتوانید فهرستی جداشده با کاما از جهتها را مشخص کنید، از جمله «debug» برای فعال کردن خروجی اشکالزدایی.
-cursor [mode], -nocursor
- نحوه مدیریت شکل مکاننمای اشارهگر (آیکون کوچک در محل اشارهگر ماوس) را تعیین میکند. رشته «mode» اختیاری است و در ادامه توضیح داده شده است. حالت پیشفرض نمایش نوعی از شکل(های) مکاننما است. چگونگی این امر به نمایشدهنده VNC و کارساز X بستگی دارد. از -nocursor برای غیرفعال کردن کامل شکلهای مکاننما استفاده کنید.
- برخی از نمایشدهندههای VNC از افزونههای CursorPosUpdates و CursorShapeUpdates در TightVNC پشتیبانی میکنند (که با عدم نیاز به ارسال تصویر مکاننما در هر بار جابهجایی اشارهگر، ترافیک شبکه را کاهش میدهد)، که در این صورت از این افزونهها استفاده میشود (برای غیرفعالسازی، گزینههای -nocursorshape و -nocursorpos را در زیر ببینید). برای دیگر نمایشدهندهها، شکل مکاننما با هر بار جابهجایی یا تغییر اشارهگر مستقیماً در فریمبافر نوشته شده و همراه با دیگر بهروزرسانیهای فریمبافر ارسال میشود. در این حالت، بین اشارهگر نمایشدهنده VNC و موقعیت دوردست مکاننما مقداری تأخیر وجود خواهد داشت.
- اگر نمایشگر X از دریافت اطلاعات شکل مکاننما از کارساز X پشتیبانی کند، حالت پیشفرض استفاده از آن است. در Solaris این کار با استفاده از افزونه SUN_OVL با گزینه -overlay امکانپذیر است (همچنین گزینه -overlay_nocursor را ببینید). ساختار overlay مشابهی در IRIX استفاده میشود. سامانههای Xorg (مانند Linux) و کارسازهای جدیدتر Solaris Xsun از افزونه XFIXES برای دریافت دقیق شکل مکاننما از کارساز X پشتیبانی میکنند. اگر XFIXES موجود باشد، بر Overlay ارجحیت داشته و به طور پیشفرض استفاده میشود (گزینه -noxfixes را در زیر ببینید). این قابلیت را میتوان با -nocursor و همچنین برخی مقادیر گزینه «mode» در زیر غیرفعال کرد.
- توجه داشته باشید که تحت XFIXES، مکاننماهای دارای شفافیت (کانال آلفا / alpha channel) معمولاً به صورت دقیق نمایش داده نخواهند شد و ممکن است استفاده از Overlay ترجیح داده شود. همچنین گزینههای -alphacut و -alphafrac در زیر را به عنوان ضرایب تعدیل برای بهبود وضعیت مکاننماهای دارای شفافیت در یک تم مشخص ببینید.
- رشته «mode» را میتوان برای تنظیم دقیق نمایش شکلهای مکاننما به کار برد. این رشته میتواند به روشهای زیر استفاده شود:
- «-cursor arrow» - فقط پیکان استاندارد را نشان میدهد، نه چیزی بیشتر و نه کمتر.
- «-cursor none» - همانند «-nocursor».
- «-cursor X» - هنگامی که به نظر میرسد مکاننما روی پنجره ریشه (root window) قرار دارد، شکل آشنای X را رسم میکند. برخی میزکارها مانند GNOME پنجره ریشه را کاملاً میپوشانند، بنابراین این حالت کار نخواهد کرد؛ برای جابهجایی عمق درخت، «X1» و غیره را امتحان کنید. در اتصالات با تأخیر بالا یا رایانههای کند، یک تأخیر زمانی بین شکل مورد انتظار و شکل واقعی مکاننما وجود خواهد داشت.
- «-cursor some» - شبیه به «X» است، اما از روشهای ابتکاری بیشتری استفاده میکند تا حدس بزند که آیا پنجره باید دارای یک مکاننمای تغییر اندازه (مشابه مدیر پنجره) باشد یا مکاننمای I-beam برای ورودی متن. این یک راهکار غیررسمی (hack) کامل است، اما ممکن است در برخی شرایط مفید باشد زیرا بازخورد اندکی بیشتر درباره شکل مکاننما ارائه میدهد.
- «-cursor most» - تلاش میکند تا حد امکان بیشترین مکاننماها را نشان دهد. این حالت معمولاً مشابه «some» خواهد بود، مگر اینکه نمایشگر دارای جلوههای بصری overlay یا افزونههای XFIXES در دسترس باشد. در Solaris و IRIX در صورت عدم دسترسی به XFIXES، حالت -overlay آزمایش خواهد شد.
-cursor_drag
- تغییرات شکل مکاننما را حتی هنگام کشیدن ماوس با کلید فشردهشده نشان میدهد. این ویژگی زمانی مفید است که بخواهید آیکونهای مکاننمای کشیدن و رها کردن (Drag-and-Drop) و غیره را مشاهده کنید.
-arrow n
- یک مکاننمای پیکان («arrow») جایگزین را از میان مجموعهای از موارد رایج انتخاب میکند. مقدار n میتواند بین ۱ تا ۶ باشد. پیشفرض: ۱ است. در حالت دریافت مکاننما از طریق XFIXES نادیده گرفته میشود.
-noxfixes
- حتی در صورت در دسترس بودن، از افزونه XFIXES برای رسم شکل دقیق مکاننما استفاده نکند.
- نکته: برای دور زدن یک فروپاشی (crash) در نسخه ۱.۵ و جدیدتر Xorg، برخی کاربران به استفاده از -noxfixes نیاز داشتند. این فروپاشی Xorg بلافاصله پس از ورود به سیستم در یک مدیر نمایش (مانند GDM) رخ میداد. از نسخه 0.9.9 نرمافزار x11vnc تلاش میکند تا زمانی که از در حال اجرا بودن یک مدیر پنجره اطمینان حاصل نکرده است، به طور خودکار از بهکارگیری XFIXES خودداری کند. برای اطلاعات بیشتر و نحوه استفاده از X11VNC_AVOID_WINDOWS=never جهت غیرفعال کردن آن، گزینه -reopen را ببینید.
-alphacut n
- هنگام استفاده از افزونه XFIXES برای شکل مکاننما، مکاننماهای دارای شفافیت معمولاً به صورت دقیق نمایش داده نخواهند شد (اما مکاننماهای کدر و مات دقیق نمایش داده میشوند). این گزینه n را به عنوان نقطه برش (cutoff) برای مکاننماهای دارای شفافیت («کانال آلفا» با مقادیری از ۰ تا ۲۵۵) تعیین میکند. هر پیکسل مکاننما با مقدار آلفای کمتر از n کاملاً شفاف میشود؛ در غیر این صورت، پیکسل کاملاً کدر خواهد بود. پیشفرض ۲۴۰
-alphafrac fraction
- با آستانه تعیینشده در -alphacut، برخی مکاننماها به دلیل کافی نبودن مقادیر آلفای آنها تقریباً به طور کامل شفاف میشوند. برای این مکاننماها، آستانه آلفا را تا جایی تنظیم میکند که کسری (fraction) از پیکسلهای غیرصفرِ کانال آلفا کدر شوند. پیشفرض 0.33
-alpharemove
- به طور پیشفرض در XFIXES، در پیکسلهای مکاننماهای دارای شفافیت، ضریب آلفا در مقادیر رنگی RGB ضرب میشود (یعنی متناظر با ترکیب مکاننما با یک پسزمینه سیاه). این گزینه را برای حذف ضریب آلفا مشخص کنید (برای مکاننماهای نیمهشفاف با رنگ روشن مفید است)..PP -noalphablend
- در حالت XFIXES، دادههای کانال آلفای مکاننما را به LibVNCServer ارسال نکن. پیشفرض، ارسال آن است. جلوهٔ alphablend تنها در حالت -nocursorshape یا برای کلاینتهایی که cursorshapeupdates در آنها غیرفعال است، قابل مشاهده خواهد بود. (با این حال ترفندی برای 32bpp با عمق رنگ ۲۴ وجود دارد، که از ۸ بیت اضافه برای ذخیرهٔ شفافیت مکاننما جهت استفاده با یک vncviewer دستکاریشده که شفافیت را به صورت محلی اعمال میکند، بهره میبرد. برای اطلاعات بیشتر FAQ را ببینید).
-nocursorshape
- حتی در صورت پشتیبانی کلاینتها، از افزونهٔ TightVNC CursorShapeUpdates استفاده نکن. به گزینهٔ -cursor در بالا مراجعه کنید.
-cursorpos, -nocursorpos
- گزینهٔ -cursorpos ارسال موقعیت مکاننمای X را به همهٔ کلاینتهای vnc که از افزونهٔ TightVNC CursorPosUpdates پشتیبانی میکنند، فعال میسازد. سایر کلاینتها قادر به دیدن حرکات اشارهگر خواهند بود. پیشفرض: -cursorpos
-xwarppointer, -noxwarppointer
- اشارهگر را به جای افزونهٔ XTEST با XWarpPointer(3X) جابهجا کن. اگر حرکت اشارهگر رفتار نادرستی دارد، مثلاً روی صفحههای لمسی یا سایر پیکربندیهای غیراستاندارد، از این گزینه به عنوان یک راهکار موقت (workaround) استفاده کنید.
- این گزینه همچنین گاهی اوقات روی نمایشگرهای XINERAMA مورد نیاز است و در صورتی که XINERAMA فعال باشد، به طور پیشفرض فعال میگردد. برای جلوگیری از این رفتار، از -noxwarppointer استفاده کنید.
-always_inject
- حتی اگر هیچ جابهجایی (dx = dy = 0) برای یک رویداد ماوس VNC وجود نداشته باشد، در هر حال اشارهگر را به موقعیت x,y مشخصشده تحمیل کن. جعبهابزارهای رابط کاربری گرافیکی اخیر (۲۰۰۹) (مانند gnome) با روش اصلی تزریق ورودی ماوس در x11vnc مشکلاتی دارند. بنابراین روش تزریق ورودی ماوس در x11vnc اصلاح شده است. برای بازیابی رفتار قدیمی، از این گزینه استفاده کنید: -always_inject. در این صورت x11vnc همیشه قرارگیری ماوس در موقعیت x,y را تحمیل میکند، حتی اگر این موقعیت از رویداد ورودی VNC قبلی تغییر نکرده باشد.
- نخستین جایی که این مشکل مشاهده شد، در پایانهٔ gnome (gnome-terminal) بود: اگر دکمهٔ ۳ ماوس را فشار داده و رها میکردید، منویی باز میشد و سپس اولین عنصر آن، 'New Terminal Window'، فعال میگردید. این به این دلیل بود که x11vnc موقعیت ماوس را دو بار تزریق میکرد: یک بار در ButtonPress و بار دیگر در ButtonRelease. جعبهابزار، مورد دوم را به عنوان حرکت ماوس تفسیر میکرد، حتی اگر ماوس تکان نخورده بود. بنابراین اکنون به طور پیشفرض x11vnc سعی میکند از تزریق بار دوم خودداری کند.
- توجه داشته باشید که با پیشفرض جدید، x11vnc متوجه جابهجایی ناگهانی اشارهگر (warping) توسط برنامهها یا حرکت دادن آن توسط کاربر در نمایشگر فیزیکی نخواهد شد. بنابراین برای مثال ممکن است ButtonRelease را در موقعیت نادرستی تزریق کند. اگر این موضوع (یا سناریوهای مشابه) در محیط شما مشکلی ایجاد میکند، برای استفاده از روش قدیمی -always_inject را مشخص کنید.
-buttonmap string
- رشتهای برای نگاشت دوبارهٔ دکمههای ماوس. قالب: IJK-LMN، که دکمههای I -> L و غیره را نگاشت میکند؛ به عنوان مثال: -buttonmap 13-31
- فشردن دکمهها را همچنین میتوان به کلیدهای صفحهکلید نگاشت کرد: یک رقم دکمه در سمت راست خط تیره را با :<sym>: یا :<sym1>+<sym2>: و غیره برای چند کلید جایگزین کنید. برای مثال، اگر ماشین مشاهدهکننده دارای چرخ ماوس (دکمههای ۴ و ۵) باشد اما در سمت x11vnc وجود نداشته باشد، این دستورها پیمایش (scroll) را انجام خواهند داد:
- -buttonmap 12345-123:Prior::Next:
- -buttonmap 12345-123:Up+Up+Up::Down+Down+Down:
- برای فهرستی از Keysymها پروندهٔ سربرگ <X11/keysymdef.h> را ببینید، یا از برنامهٔ xev(1) استفاده کنید. نکته: در صورتی که برای آن Keysym به -modtweak یا -xkb نیاز باشد، ممکن است نگاشت کلیکهای دکمه به Keysymها کار نکند.
- اگر یک کلید تبدیل (modifier) مانند "Shift_L" اضافه کنید، وضعیت بالا/پایین بودن کلید تبدیل تغییر مییابد (toggle میشود)؛ برای مثال برای ارسال "The" از :Shift_L+t+Shift_L+h+e: استفاده کنید (اولی shift پایین و دومی shift بالا است). (نکته: وضعیت اولیهٔ کلید تبدیل نادیده گرفته میشود و بازنشانی نمیگردد). برای گنجاندن رویدادهای دکمه از "Button1" و... استفاده کنید.
- گزینهٔ -buttonmap در حال حاضر در کنسول MacOSX یا در حالت -rawfb کار نمیکند.
- راهکار موقت: از -buttonmap IJ...-LM...=n برای محدود کردن تعداد دکمههای ماوس به n استفاده کنید؛ مثلاً 123-123=3. این کار از کرش کردن x11vnc در صورتی که کارساز X اعلام کند ۵ دکمه وجود دارد (۴/۵ چرخ اسکرول)، اما در حقیقت فقط ۳ دکمه وجود داشته باشد، جلوگیری میکند.
-nodragging
- در طول رویدادهای کشیدن ماوس (پایین نگه داشتن دکمهٔ ماوس) صفحهٔ نمایش را بهروزرسانی نکن. این گزینه پاسخدهی را در سیستمهای کند بسیار بهبود میبخشد، اما تمام بازخوردهای بصری برای کشیدن، انتخاب متن و برخی پیمایشهای منو را از دست خواهید داد. این گزینه هرگونه تنظیمات -pointer_mode را لغو میکند.
-ncache n
- طرح حافظهٔ پنهان سمت کلاینت. حافظهٔ فریمبافر به میزان n برابر (یک عدد صحیح) کل صفحهٔ نمایش در زیر فریمبافر واقعی برای ذخیرهٔ موقت محتویات صفحه جهت بازیابی سریع تخصیص مییابد. بنابراین یک فریمبافر W x H به یک فریمبافر W x (n+1)*H گسترش مییابد. برای غیرفعال کردن از 0 استفاده کنید.
- در واقع آرگومان n اختیاری است و مقدار پیشفرض آن 10 میباشد.
- برای این گزینه و سایر گزینههای -ncache* زیر، میتوانید «-ncache» را به «-nc» خلاصه کنید. همچنین «-nonc» همان «-ncache 0» است.
- این یک گزینهٔ آزمایشی است و در حال حاضر به شکلی ناشیانه پیادهسازی شده؛ به گونهای که در VNC Viewer اگر به سمت پایین پیمایش کنید و غیره، محتویات حافظهٔ پنهان پیکسل را مشاهده خواهید کرد. بنابراین باید موارد را طوری تنظیم کنید که نتوانید آن ناحیه را ببینید. اگر این روش موفقیتآمیز باشد، تغییرات لازم برای اینکه کلاینتها این کار را کمتر ناشیانه انجام دهند بررسی خواهد شد.
- نمایشگر SSVNC در مخفی کردن خودکار ناحیهٔ حافظهٔ پنهان پیکسل عملکرد خوبی دارد. یا میتوانید از گزینهٔ -ycrop در SSVNC برای مخفی کردن صریح آن ناحیه استفاده کنید.
- توجه داشته باشید که این حالت مقدار بسیار زیادی حافظه هم در سمت کارساز x11vnc و هم در سمت VNC Viewer مصرف میکند. اگر n=2 باشد، مقدار حافظهٔ RAM استفادهشده هم برای x11vnc و هم برای VNC Viewer تقریباً سه برابر میشود. به عنوان یک قاعدهٔ کلی، به یاد داشته باشید که 1280x1024 با عمق ۲۴ حدود ۵ مگابایت دادههای پیکسلی است.
- برای یک پاسخدهی معقول هنگام چرخش بین ۴ تا ۶ پنجرهٔ بزرگ (مانند مرورگر وب)، مقدار n بین ۶ تا ۱۲ توصیه میشود. (درست است: حدود ۱۰ برابر حافظهٔ بیشتر...).
- به دلیل نحوهٔ پیادهسازی backingstore و saveunders در پنجرهها، مقدار n باید زوج باشد. اگر زوج نباشد، ۱ واحد به آن اضافه خواهد شد.
- این حالت برای MacOS X بومی نیز کار میکند، اما ممکن است به اندازهٔ نسخهٔ X مؤثر نباشد. این موضوع ناشی از چند مورد است: یکی ترکیببندی سایهٔ پنجره (drop-shadow compositing) است که بخشهای اضافهای بر جای میگذارد که نیاز به ترمیم دارند (-ncache_pad را ببینید). دیگری پویانماییهای کوچکسازی پنجره است که باید از آنها اجتناب شود (-macicontime را ببینید). به نظر میرسد حالت پویانمایی 'Scale' نتایج بهتری نسبت به 'Genie' ارائه میدهد. همچنین تشخیص رویدادهای پنجره به اندازهٔ نسخهٔ X دقیق نیست.
-ncache_cr
- در حالت -ncache، سعی کن به جای اسکلت سیمی (wireframe)، جابهجایی/کشیدن پنجرههای کدر (opaque) را با copyrect انجام دهی (این کار میتواند خطاهای ترسیم ایجاد کند). اسکلت سیمی همچنان هنگام جابهجایی پنجرهای که save-unders آن هنوز تنظیم نشده یا نامعتبر شده است، استفاده خواهد شد.
- برخی از VNC Viewerها با این گزینه پاسخدهی بهتری نسبت به بقیه ارائه میدهند. در Unix، برنامهٔ realvnc viewer جابهجاییهای روانتری نسبت به tightvnc viewer ارائه میدهد. همچنین اگر ماشین سمت کارساز خیلی کُند باشد، ممکن است پاسخدهی بریدهبریده و نامنظم باشد.
- گاهی اوقات در اتصالات بسیار کُند مودمی، این گزینه در واقع بهبود حاصل میکند، زیرا در طول کشیدن پنجره، اصلاً هیچ دادهٔ پیکسلی (حتی پویانمایی کادر) ارسال نمیشود.
-ncache_no_moveraise
- در حالت -ncache، فرض نکن که جابهجا کردن یک پنجره باعث میشود مدیر پنجره آن را به بالای پشته بیاورد. پیشفرض این است که فرض میشود این کار انجام میشود، بنابراین در ابتدای هر جابهجایی پنجره با اسکلت سیمی و غیره، پنجره در VNC viewer به بالاترین سطح آورده میشود.
-ncache_no_dtchange
- در حالت -ncache، سعی نکن تغییر میزکار (viewport) به میزکار دیگر (یعنی فضای کاری دیگر) را حدس بزنی. پیشفرض این است که تلاش شود حدس زده شود و هنگام تشخیص، انتقال به صورت نرمتر انجام پذیرد.
-ncache_no_rootpixmap
- در حالت -ncache، سعی نکن از پسزمینهٔ میزکار تصویربرداری لحظهای (snapshot) انجام دهی تا در حدس زدن یا بازسازی save-unders پنجره مورد استفاده قرار گیرد..PP -ncache_keep_anims
- در حالت -ncache، برای غیرفعال کردن پویانماییها و سایر جلوههای بصری مدیر پنجره (که معمولاً کارایی ncache را کاهش داده یا باعث خطاهای ترسیم میشوند) تلاشی نکن. حالت پیشفرض این است که هنگام متصل بودن کلاینتهای VNC، تلاش شود تا آنها در KDE (اما نه GNOME) غیرفعال شوند.
- برای سایر مدیران پنجره یا میزکارهایی که پویانماییها، جلوهها، ترکیببندی (compositing)، شفافیت (translucency) و مواردی از این دست ارائه میدهند که با روش -ncache تداخل دارند، باید آنها را بهصورت دستی غیرفعال کنید.
-ncache_old_wm
- در حالت -ncache، برخی روشهای مکاشفهای (heuristics) را برای مدیران پنجره سبک قدیمی مانند fvwm و twm فعال میکند.
-ncache_pad n
- در حالت -ncache، برای مستطیلهای حافظه پنهان، هر پنجره را با n پیکسل فاصلهگذاری (pad) میکند. این گزینه میتواند برای تلاش در جهت بهبود وضعیت سایهها (dropshadows) یا سایر موارد ترکیببندی (مانند مدیر پنجره MacOS X) استفاده شود، هرچند ممکن است اوضاع را بدتر کند. پیشفرض در Unix برابر با 0 و در MacOS X برابر با 24 است.
-debug_ncache
- خروجیهای اشکالزدایی و ارزیابی کارایی (profiling) را تحت -ncache فعال میکند.
-wireframe [str], -nowireframe
- تلاش میکند جابهجایی یا تغییر اندازه پنجره را هنگام پایین نگهداشتن دکمه ماوس تشخیص دهد و بهجای پنجره مات کامل، یک چارچوب سیمی (wireframe) نمایش دهد. این عملکرد کاملاً مبتنی بر روشهای مکاشفهای است و ممکن است همیشه کار نکند: این موضوع به مدیر پنجره شما و حتی نحوه جابهجا کردن موارد بستگی دارد. برای بررسی مسئله «افت شدید کارایی» (bogging down) که این گزینه سعی در جلوگیری از آن دارد، به -pointer_mode در ادامه مراجعه کنید. پیشفرض: -wireframe
- نامهای مستعار کوتاهتر: -wf [str] و -nowf
- مقدار "str" اختیاری است و مسلماً شامل پارامترهای قابل تنظیم فراوانی برای این سازوکار است:
- قالب: shade,linewidth,percent,T+B+L+R,mod,t1+t2+t3+t4 پیشفرض: 0xff,2,0,32+8+8+8,all,0.15+0.30+5.0+0.125
- اگر میان کاماها چیزی قرار ندهید: ",,"، مقدار پیشفرض استفاده میشود. اگر کاماهای کافی مشخص نکنید، پارامترهای انتهایی روی مقادیر پیشفرض خود تنظیم میشوند.
- مقدار "shade" بیانگر «رنگ» چارچوب سیمی است که معمولاً یک مقیاس خاکستری بین 0 تا 255 است؛ با این حال برای عمق رنگ 16 و 32bpp میتوانید یک رنگ بر اساس rgb.txt در X (مانند "dodgerblue") مشخص کنید یا مقداری بیشتر از 255 که به عنوان RGB در نظر گرفته میشود (مثلاً قرمز 0xff0000 است). "linewidth" عرض چارچوب سیمی را بر حسب پیکسل مشخص میکند. "percent" مشخص میکند که سازوکار چارچوب سیمی برای پنجرههایی با مساحت کمتر از این درصد از کل صفحه، اعمال نشود.
- مقدار "T+B+L+R" چهار عدد صحیح را مشخص میکند که نشان میدهند اشارهگر برای در نظر گرفتن چارچوب سیمی، بر حسب پیکسل چقدر باید به لبههای بالا (Top)، پایین (Bottom)، چپ (Left) یا راست (Right) پنجره نزدیک باشد. این یک بهینهسازی برای کنار گذاشتن سریع یک پنجره از تبدیل به چارچوب سیمی است: برای عدم اعمال این بهینهسازی، همه آنها را روی صفر تنظیم کنید (پیمایش و انتخاب متن احتمالاً کندتر خواهد شد).
- مقدار "mod" مشخص میکند که آیا رویداد فشرده شدن دکمه در داخل پنجره همراه با نگهداشتن یک کلید تبدیلکننده (Alt، Shift و غیره) باید به عنوان فرصتی برای ایجاد چارچوب سیمی در نظر گرفته شود یا خیر. این مقدار میتواند "0" یا "none" برای نادیده گرفتن آن، "1" یا "all" برای اعمال به هر کلید تبدیلکننده، یا "Shift"، "Alt"، "Control"، "Meta"، "Super" یا "Hyper" باشد تا فقط برای همان نوع کلید تبدیلکننده اعمال شود.
- مقدار "t1+t2+t3+t4" چهار مقدار زمانی ممیز شناور را بر حسب ثانیه مشخص میکند: t1 مدت زمان انتظار برای حرکت اشارهگر است، t2 مدت زمان انتظار برای شروع حرکت یا تغییر اندازه پنجره است (برای برخی مدیران پنجره این مقدار میتواند نسبتاً طولانی باشد)، t3 مدت زمانی است که چارچوب سیمی قبل از بازترسیم پنجره در حالت حرکت نگه داشته میشود، و t4 حداقل زمان بین ارسال «پویانماییهای» چارچوب سیمی است. در صورت شناسایی یک پیوند ارتباطی کند، این مقادیر ممکن است بهطور خودکار به مقادیر مناسبتری تغییر یابند.
-nowireframelocal
- بهطور پیشفرض، حرکت ماوس و فشردن کلیدهای کاربری که پشت نمایشگر محلی (LOCAL) نشسته است، برای بررسی شرایط ایجاد چارچوب سیمی رصد میشود (تا تغییرات بهصورت بهینه به کلاینتهای VNC ارسال شوند). از این گزینه برای غیرفعال کردن این رفتار استفاده کنید.
-wirecopyrect mode, -nowirecopyrect
- از آنجا که سازوکار -wireframe پنجرههای متحرک را با دقت ردیابی میکند، میتوان با دستور دادن به نمایشگرهای VNC برای کپی محلی ناحیه جابهجاشده پنجره، سرعت را افزایش داد. این همان رمزگذاری VNC CopyRect است: بهروزرسانی فریمبافر نیازی به ارسال دادههای تصویر جدید واقعی ندارد.
- نامهای مستعار کوتاهتر: -wcr [mode] و -nowcr
- مقدار "mode" میتواند "never" باشد (مشابه -nowirecopyrect) برای عدم تلاش جهت استفاده از copyrect؛ مقدار "top" به این معنی است که تنها در صورتی این کار انجام شود که پنجره توسط پنجرههای دیگر پوشانده نشده باشد؛ و "always" به معنی انتقال ناحیهای است که در ابتدا بدون پوشش بوده است (این حالت ممکن است همزمان با رسیدن تکههای باقیمانده غیرعادی به نظر برسد، اما در اتصالات کند مفید است). پیشفرض: "always"
- نکته: هنگام استفاده از -scale ممکن است خطاهای ترسیم یا پاسخدهی کند رخ دهد، بنابراین شاید بخواهید در این حالت CopyRect را با استفاده از "-wirecopyrect never" در خط فرمان یا از طریق کنترل از راه دور غیرفعال کنید. همچنین میتوانید از گزینه مقیاسبندی "-scale xxx:nocr" استفاده نمایید.
-debug_wireframe
- چاپ اطلاعات اشکالزدایی را برای روشهای مکاشفهای چارچوب سیمی فعال میکند. "-dwf" یک نام مستعار است. برای دریافت خروجی بیشتر، آن را چند بار مشخص کنید.
-scrollcopyrect mode, -noscrollcopyrect
- مشابه -wirecopyrect عمل میکند، اما از روشهای مکاشفهای برای حدس زدن اینکه آیا محتوای یک پنجره پیمایش شده است یا خیر (عمودی یا افقی) استفاده میکند. این قابلیت نیازمند افزونه RECORD در X برای سرک کشیدن به برنامههای X است (در حال حاضر برای برخی درخواستهای پروتکل X شامل XCopyArea و XConfigureWindow). مثالها: فشردن <Return> در یک پنجره ترمینال هنگامی که مکاننما در پایین قرار دارد که باعث پیمایش متن به اندازه یک خط به سمت بالا میشود؛ فشردن کلید جهتنمای <Down> در پنجره مرورگر وب که صفحه وب را به مقدار کمی به سمت بالا پیمایش میکند؛ یا پیمایش با استفاده از نوار پیمایش یا چرخ ماوس.
- نامهای مستعار کوتاهتر: -scr [mode] و -noscr
- این سازوکار همیشه پیمایشها را تشخیص نمیدهد، اما در صورت تشخیص، استفاده از رمزگذاری CopyRect در VNC بهبود سرعت چشمگیری به همراه خواهد داشت (به -wirecopyrect مراجعه کنید). این بهبود سرعت هم از طریق کاهش ترافیک شبکه و هم کاهش پایش (polling)/کپی کردن فریمبافر X حاصل میشود. از سوی دیگر، ممکن است ناهماهنگیهای گذرا و ناخواسته (مانند بالا رفتن مکاننمای ترمینال در زمانی که نباید رخ دهد) یا خطاهای ترسیم دیگری (بریدگی تصویر در پنجره، انباشتگی تصویر و غیره) ایجاد کند. این موارد در مدت زمان کوتاهی بهطور خودکار رفع میشوند. اگر این وضعیت قابل قبول نیست، این ویژگی را با -noscrollcopyrect غیرفعال کنید.
- ترفندهای پاکسازی صفحه: دستکم برای اهداف آزمایشی، چند «توالی کلید جادویی» وجود دارد (که باید در کمتر از ۱ ثانیه فشرده شوند) تا به رفع خطاهای ترسیمی که ممکن است هنگام استفاده از این حالت مشاهده شوند، کمک کنند:
- ۳ بار کلید Alt_L متوالی: ارسال مجدد کل صفحه، ۴ بار کلید Alt_L متوالی: بازخوانی و ارسال مجدد کل صفحه، ۳ بار کلید Super_L متوالی: نشانهگذاری کل صفحه برای پایش (polling)، ۴ بار کلید Super_L متوالی: بازنشانی بافت (context) افزونه RECORD، ۵ بار کلید Super_L متوالی: تلاش برای ارسال اجباری یک صفحه سیاه
- نکته: کلید Alt_L همان کلید "Alt" سمت چپ (یک کلید تکی) است. کلید Super_L همان کلید "Super" سمت چپ (کلید پرچم ویندوز) است. هر دوی اینها کلیدهای تبدیلکننده (modifier) هستند و فشردن آنها بهتنهایی نباید نویسهای ایجاد کند. همچنین، نمایشگر VNC شما ممکن است کلید میانبر یا دکمه بازآوری (refresh) مخصوص به خود را داشته باشد.
- مقدار "mode" میتواند "never" باشد (مشابه -noscrollcopyrect) برای عدم تلاش جهت استفاده از copyrect؛ مقدار "keys" به معنای تلاش فقط در پاسخ به فشردن کلیدهای صفحهکلید است؛ مقدار "mouse" یعنی تلاش فقط در پاسخ به رویدادهای ماوس؛ و "always" یعنی انجام هر دو حالت. پیشفرض: "always"
- نکته: هنگام استفاده از -scale ممکن است خطاهای ترسیم یا پاسخدهی کند رخ دهد، بنابراین شاید بخواهید در این حالت CopyRect را با استفاده از "-scrollcopyrect never" در خط فرمان یا از طریق کنترل از راه دور غیرفعال کنید. همچنین میتوانید از گزینه مقیاسبندی "-scale xxx:nocr" استفاده کنید.
-scr_area n
- حداقل مساحت یک مستطیل را بر حسب پیکسل تعیین میکند تا در طرح تشخیص -scrollcopyrect لحاظ شود. این کار برای جلوگیری از اتلاف توان پردازشی روی مستطیلهای کوچکی است که با روش معمولی بهسرعت بهروزرسانی میشوند. برای نمونه، فرض کنید برنامهای ابتدا موقعیت نوار پیمایش باریک خود را بهروز کرده و سپس پنل بزرگی را که تحت کنترل داشت جابهجا میکند. ما میخواهیم مطمئن شویم که از نوار پیمایش کوچک صرفنظر شده و پنل بزرگ پردازش میشود. پیشفرض: 60000
-scr_skip list
- تشخیص پیمایش را برای برنامههایی که با فهرست رشتههای جداشده با کاما در list مطابقت دارند، نادیده میگیرد. برخی برنامهها پیمایش خود را به روشهای عجیبی پیادهسازی میکنند که در آن XCopyArea و موارد دیگر به بخشهای ناپیدای پنجره نیز اعمال میشود؛ در صورتی که برای آن نواحی از CopyRect استفاده کنیم، تصویر در طول پیمایش بسیار نامطلوب دیده شده و ممکن است پس از پایان پیمایش نیز خطاهای ترسیمی بر جای بماند. Soffice.bin بدترین نمونه شناختهشده از این دست است..IP از «##» برای مشخص کردن ابتدای کلاس برنامه (مثلاً «##XTerm») و از «++» برای مشخص کردن ابتدای نام نمونهٔ (instance) برنامه (مثلاً «++xterm») استفاده کنید. رشتهای که فهرست شما با آن سنجیده میشود به این صورت است: "^^WM_NAME##Class++Instance<same-for-any-subwindows>" دستور «xlsclients -la» این اطلاعات را فراهم میکند.
- اگر الگویی با پیشوند «:KEY» آغاز شود، فقط برای پیمایشهای ایجادشده توسط کلیدها اعمال میشود (مانند کلید جهتنمای بالا). اگر با پیشوند «:MOUSE» آغاز شود، فقط برای پیمایشهای ناشی از ماوس اعمال میگردد (مانند کشیدن نوار پیمایش). پیشفرض: ##Soffice.bin,##StarOffice,##OpenOffice
-scr_inc list
- نقطهٔ مقابل -scr_skip: ابتدا این فهرست بررسی میشود و در صورت وجود تطابق، بدون در نظر گرفتن -scr_skip، پنجره از طریق RECORD برای پیمایشها پایش خواهد شد. از -scr_skip '*' برای نادیده گرفتن هر چیزی که با -scr_inc شما مطابقت ندارد استفاده کنید. از -scr_inc '*' برای گنجاندن همهچیز استفاده کنید.
-scr_keys list
- برای تشخیص پیمایش ناشی از کلیدها، روشهای ابتکاری RECORD را فقط برای فهرست keysymهای جداشده با ویرگول در list اعمال کنید. ممکن است احساس کنید بار پردازشی اضافی RECORD برای تکتک کلیدها تایپ کردن را بیش از حد مختل میکند، اما مایل نیستید آن را با «-scr mouse» کاملاً غیرفعال کنید و -scr_parms نیز کار نمیکند یا بیش از حد گیجکننده است.
- keysymهای فهرستشده میتوانند عددی یا نامهای keysym موجود در فایل هدر <X11/keysymdef.h> یا حاصل از برنامهٔ xev(1) باشند. مثال: «-scr_keys Up,Down,Return». شاید کسی بخواهد فهرستهای ویژهای برای برنامههای خاص (مثلاً برای پایانهها و غیره) داشته باشد، اما این موضوع در حال حاضر پیچیدهتر از آن است که به آن فکر کرد...
- اگر list با نویسهٔ «-» شروع شود، فهرست به عنوان فهرست استثناها در نظر گرفته میشود: همهٔ keysymها به جز موارد موجود در آن فهرست در نظر گرفته خواهند شد. رشتهٔ ویژهٔ «builtin» به فهرستی داخلی از keysymهایی که احتمالاً باعث پیمایش میشوند بسط مییابد. به علاوه، به طور پیشفرض کلیدهای تبدیلگر (modifier) مانند Shift_L، Control_R و غیره نادیده گرفته میشوند، زیرا تقریباً هرگز به خودی خود باعث پیمایش نمیشوند.
-scr_term list
- وصلهٔ سرهمبندیشدهٔ ظاهری دیگر. روشهای ابتکاری پوسته/پایانه را برای برنامههای منطبق با فهرست جداشده با ویرگول (مشابه با -scr_skip/-scr_inc) اعمال میکند. به عنوان مثال، یک اختلال گذرا و آزاردهنده در تشخیص پیمایش این است که اگر در یک پوستهٔ پایانه با پنجرهٔ پر از متن کلید Enter را فشار دهید، مکاننمای بلوکی توپر متن به بالا پیمایش میشود. بنابراین برای مدت کوتاهی دو (یا چند) مکاننمای بلوکی روی صفحه دیده میشود. سناریوهای مشابه دیگری نیز وجود دارد (مثلاً تکراری شدن یک خط خروجی).
- این خطاهای گذرا ناشی از تخمینی بودن تشخیص پیمایش هستند (مثلاً پیمایش را تشخیص میدهد، اما این واقعیت را که مکاننمای بلوکی درست قبل از پیمایش پاک شده است تشخیص نمیدهد). تقریباً در تمام موارد، این خطاهای گذرا هنگام بازبینی فریمبافر واقعی X توسط نمونهبرداری عادی اصلاح میشوند. اما این موارد حواسپرتکن هستند، بنابراین آنچه این گزینه فراهم میکند «حاشیهٔ اضافی» (padding) در نزدیکی پایین پنجرهٔ پایانه است: چند خط اضافی در نزدیکی پایین پیمایش نمیشوند، بلکه مستقیماً از فریمبافر واقعی X بهروزرسانی میشوند. این کار معمولاً مصنوعات بصری آزاردهنده را کاهش میدهد. از «none» برای غیرفعالسازی استفاده کنید. پیشفرض: «term»
-scr_keyrepeat lo-hi
- اگر کلیدی فشرده نگه داشته شود (یا به هر شکل دیگری با سرعت تکرار شود) و این امر دنبالهای سریع از پیمایشها را ایجاد کند (مثلاً نگه داشتن یک کلید جهتنما)، ممکن است فرایند تشخیص و بار محاسباتی «scrollcopyrect» نتواند همگام بماند. تخمینی از زمان مورد نیاز برای هر پیمایش تکی محاسبه میشود و اگر این تخمین نرخ پیمایش پایداری از کلیدها بر ثانیه بین «lo» و «hi» را پیشبینی کند، کلیدهای تکراری برای حفظ نرخ پیمایش نادیده گرفته خواهند شد (DISCARD میشوند). برای مثال، تکرار خودکار کلید شما ممکن است ۲۵ کلید بر ثانیه باشد، اما برای یک پنجرهٔ بزرگ یا اتصال کند، تنها ۸ پیمایش در ثانیه پایدار بماند؛ در این حالت تقریباً از هر ۳ کلید تکرارشده، ۲ کلید در طول این دوره نادیده گرفته میشوند. پیشفرض: «4-20»
-scr_parms string
- پارامترهای گوناگونی را برای حالت scrollcopyrect تعیین میکند. قالب آن مشابه -wireframe بوده و شامل پارامترهای فراوانی است:
- قالب: T+B+L+R,t1+t2+t3,s1+s2+s3+s4+s5 پیشفرض: 0+64+32+32,0.02+0.10+0.9,0.03+0.06+0.5+0.1+5.0
- اگر بین ویرگولها چیزی قرار ندهید («,,»)، مقدار پیشفرض استفاده میشود. اگر به تعداد کافی ویرگول مشخص نکنید، پارامترهای پایانی روی مقادیر پیشفرض خود تنظیم میشوند.
- «T+B+L+R» نشاندهندهٔ چهار عدد صحیح بر حسب پیکسل است که مشخص میکند نشانگر ماوس چقدر باید به لبههای بالا (Top)، پایین (Bottom)، چپ (Left) یا راست (Right) پنجره نزدیک باشد تا scrollcopyrect اعمال شود. اگر با -wireframe همپوشانی داشته باشد، اولویت با آن است. این یک سازوکار برای افزایش سرعت جهت مستثنی کردن سریع یک پنجره از پایش برای scrollcopyrect است: همهٔ آنها را صفر قرار دهید تا بهینهسازی سرعت انجام نشود (کارهایی مانند انتخاب متن احتمالاً کندتر خواهند شد).
- «t1+t2+t3» سه زمان اعشاری بر حسب ثانیه را مشخص میکند که برای تشخیص scrollcopyrect با ورودیهای *کلید* اعمال میشوند: t1 مدت زمانی است که پس از فشردن کلید برای نخستین پیمایش منتظر میماند، t2 مدت زمانی است که پس از پیمایش ناشی از کلید، برای پیمایشهای بیشتر پایش را ادامه میدهد. t3 فاصلهٔ زمانی میان تلاشها برای بهروزرسانی نوارهای پیمایش پیرامونی در خارج از ناحیهٔ پیمایش است (0.0 برای غیرفعالسازی).
- «s1+s2+s3+s4+s5» پنج زمان اعشاری بر حسب ثانیه را مشخص میکند که برای تشخیص scrollcopyrect با ورودیهای *ماوس* اعمال میشوند: s1 مدت زمانی است که پس از فشردن دکمهٔ ماوس برای اولین پیمایش منتظر میماند، s2 مدت زمانی است که پس از تشخیص اولین پیمایش ماوس، برای پیمایشهای بیشتر منتظر میماند. s3 تناوب تلاش برای بهروزرسانی نوارهای پیمایش پیرامونی در خارج از ناحیهٔ پیمایش است (0.0 برای غیرفعالسازی). s4 مدت زمانی است که حرکت نشانگر بافر میشود (برای تلاش در جهت دستیابی به پیمایشهای کمتر ولی بزرگتر با ماوس). s5 بیشینهٔ زمانی است که صرفاً برای بهروزرسانی پنجرهٔ پیمایش بدون بهروزرسانی بقیهٔ صفحه صرف میشود.
-fixscreen string
- صفحه را بر اساس تنظیمات موجود در string به طور دورهای «ترمیم» میکند. امید است که به این گزینه نیازی پیدا نکنید؛ این گزینه برای مواردی است که قابلیتهای -scrollcopyrect یا -wirecopyrect خطاهای ترسیمی متعددی بر جای میگذارند، اما میتواند برای هر شرایطی به کار رود. این گزینه به صورت دورهای عملیاتهای سنگینی انجام میدهد و بنابراین ممکن است با فعال بودن آن، سرعت پاسخدهی تعاملی کاهش یابد. میتوانید به جای آن از ۳ بار فشردن متوالی کلید Alt_L (کلید «Alt» سمت چپ) استفاده کنید (همانطور که در توضیحات -scrollcopyrect آمده است) تا در صورت نیاز، بازترسیم صفحه را به صورت دستی درخواست نمایید.
- مقدار string فهرستی جداشده با ویرگول از یک یا چند مورد از گزینههای روبرو است: «V=t»، «C=t»، «X=t» و «8=t». در این عبارات «t» بیانگر زمان بر حسب ثانیه است (یک مقدار ممیز شناور است، اگرچه معمولاً برای جلوگیری از هدررفت منابع باید مقادیر بزرگتر از ۲ به کار روند). مقدار V تعیین میکند که کل صفحه هر چند وقت یکبار باید به نمایشگرها ارسال شود (مشابه ۳ بار فشردن Alt_L عمل میکند). مقدار C مشخص میکند پس از یک CopyRect چه مدت باید برای بازترسیم کل صفحه صبر کرد. مقدار X تعیین میکند که فریمبافر کامل X11 با چه تناوبی باید مجدداً از کارساز X خوانده شده و برای بینندگان متصل فرستاده شود. استفاده از X باید نادر باشد؛ اگر احساس کردید به آن نیاز دارید لطفاً یک باگ گزارش دهید. =8 تنها برای حالت -8to24 کاربرد دارد: این مقدار مشخص میکند که نواحی بصری غیرپیشفرض صفحه (مانند پنجرههای 8bpp) با چه فاصلهای تازهسازی شوند. مثالها: -fixscreen V=10 -fixscreen C=10
-debug_scroll
- چاپ اطلاعات اشکالزدایی را برای روشهای ابتکاری پیمایش فعال میکند. «-ds» نام مستعار آن است. برای دریافت خروجی بیشتر، آن را چندین بار درج کنید.
-noxrecord
- هرگونه استفاده از افزونهٔ RECORD را غیرفعال میکند. این افزونه در حال حاضر توسط طرح -scrollcopyrect و برای پایش قفلهای (grabs) کارساز X استفاده میشود.
-grab_buster, -nograb_buster
- برخی از موارد استفاده از افزونهٔ RECORD ممکن است روزنهٔ بسیار کوچکی برای ایجاد بنبست (deadlock) در XGrabServer ایجاد کند. این وضعیت تنها در صورتی پیش میآید که برنامهٔ قفلکنندهٔ کل کارساز، قبل از رها کردن قفل در انتظار ورودی ماوس یا صفحهکلید بماند. معمولاً این کار توسط یک مدیر پنجره صورت میگیرد. برنامهٔ x11vnc تدابیری برای جلوگیری از این مشکل اندیشیده است، اما اگر گرفتار آن شود، x11vnc مسدود (freeze) خواهد شد. بدون -grab_buster، تنها راهحل این است که مستقیماً به سراغ نمایشگر فیزیکی رفته و ورودیای وارد کنید تا برنامهٔ قفلکننده آزاد شود؛ یا در صورت امکان، مدیر پنجره را به صورت دستی خاتمه دهید و دوباره راهاندازی کنید. با گزینهٔ -grab_buster، برنامهٔ x11vnc یک ریسهٔ کمکی ایجاد میکند و اگر به نظر برسد x11vnc پس از گذشت مدتی (۲۰ تا ۳۰ ثانیه) در یک قفل گیر کرده است، مقداری ورودی کاربر (مانند کلیک ماوس، کلید Escape، حرکت ماوس و غیره) تزریق میکند تا قفل را بشکند. اگر بنبستهای قفل زیادی را تجربه میکنید، لطفاً این باگ را گزارش دهید.
-debug_grabs
- چاپ اطلاعات اشکالزدایی مربوط به بنبست ()XGrabServer را برای -scrollcopyrect__mode_. فعال میکند.
-debug_sel
- چاپ اطلاعات اشکالزدایی مربوط به گزینشهای PRIMARY، CLIPBOARD و CUTBUFFER0 را فعال میکند.
-pointer_mode n.IP طرحهای گوناگون بهروزرسانی حرکت نشانگر (pointer). «-pm» یک نام مستعار است. مشکل اینجاست که حرکت نشانگر میتواند باعث ایجاد تغییرات سریع روی صفحه شود: تغییرات سریع ناشی از جابهجا کردن یک پنجرهٔ بزرگ با محتوای کدر (opaque) را در نظر بگیرید. نه روالهای پایش صفحه (polling) و فشردهسازی vnc در x11vnc و نه پهنایباند به سمت vncviewerها هیچیک نمیتوانند همگام با این تغییرات سریع پیش بروند: هنگام کشیدن (drag) یا پیمایش (scroll)، همهچیز دچار کندی شدید خواهد شد. بنابراین باید از طرحی استفاده شود تا بخش عمدهای از آن ورودی نشانگر را پیش از پایش دوبارهٔ صفحه و ارسال بهروزرسانیهای framebuffer «بلعیده» و نادیده بگیرد. شمارهٔ حالت n میتواند از 0 تا 4 باشد و یکی از طرحهای شرح داده شده در زیر را انتخاب میکند.
- توجه داشته باشید که -wireframe و -scrollcopyrect__mode_s با تشخیص (و بهبود) دورههای خاص «تغییر سریع صفحه»، مکمل -pointer_mode هستند.
- n=0: همان عملکرد -nodragging را دارد. (در صورت فشرده شدن هر یک از دکمههای ماوس، پایش صفحه کاملاً تعلیق میشود.)
- n=1: طرح اولیهای بود که تا حدود ژانویه ۲۰۰۴ استفاده میشد: اساساً پیش از پایش دوبارهٔ صفحه، صرفاً از رخدادهای صفحهکلید یا نشانگر به تعداد -input_skip صرفنظر میکند.
- n=2 یک طرح بهبودیافته است: با زیر نظر گرفتن نرخ کنونی رخدادهای ورودی، تلاش میکند تشخیص دهد که آیا باید پیش از ادامه، رخدادهای نشانگر بیشتری را «بلعیده» و نادیده بگیرد یا خیر.
- n=3 اساساً یک حالت پویای -nodragging است: زمانی که حرکت ماوس متوقف شده باشد را تشخیص داده و سپس صفحهٔ نمایش را تازهسازی (refresh) میکند.
- n=4 تلاش میکند نرخ شبکه و تاخیر (latency)، نرخ خواندن کارت گرافیک، و تعداد کاشیهای (tiles) تغییریافته روی صفحه را بسنجد. بر اساس این دادهها، هر زمان تشخیص دهد منابع کافی در اختیار دارد، بهصورت تهاجمی تلاش میکند «فریمهای» صفحه را ارسال کند. ناتمام (NOT FINISHED).
- مقدار پیشفرض n برابر با 2 است. توجه داشته باشید که حالتهای 2، 3 و 4 از رخدادهای صفحهکلید به تعداد -input_skip صرفنظر میکنند (اما رخدادهای نشانگر را نمیشمارند). همچنین توجه داشته باشید که این حالتها در حالت -threads در دسترس نیستند؛ چرا که آن حالت سازوکار مدیریت رخدادهای نشانگر مخصوص به خود را دارد.
- برای آزمودن حالتهای گوناگون نشانگر و بررسی این که کدامیک بهترین پاسخدهی را برای کاربرد شما فراهم میکند، استفاده از قابلیت کنترل از راه دور، برای نمونه «x11vnc -R pm:4» یا واسط گرافیکی tcl/tk (مسیر Tuning -> pointer_mode -> n) بسیار آسان و مناسب است.
-input_skip n
- برای مدیریت نشانگر در حالت غیرنخی (non-threaded): تلاش برای خواندن n رخداد ورودی کاربر پیش از پیمایش صفحهٔ نمایش. n < 0 به معنای این است که طوری رفتار شود گویی همواره ورودی کاربر وجود دارد. پیشفرض: 10
-allinput
- وادار کردن x11vnc به خواندن و پردازش تمام ورودیهای موجود کلاینت پیش از ادامه کار.
-input_eagerly
- مشابه -allinput اما با استفاده از سازوکار handleEventsEagerly تعبیهشده در LibVNCServer.
-multiptr
- فعالسازی پشتیبانی از دستگاههای ورودی به ازای هر کلاینت. هر کلاینت نشانگر و تمرکز (focus) صفحهکلید اختصاصی خود را دریافت خواهد کرد.
-speeds rd,bw,lat
- ابزار x11vnc تلاش میکند برخی از پارامترهای سرعت را تخمین بزند که برای بهینهسازی زمانبندی (مانند -pointer_mode 4، -wireframe، -scrollcopyrect) و موارد دیگر استفاده میشوند. از گزینهٔ -speeds برای تنظیم دستی این مقادیر استفاده کنید. سهگانهٔ rd,bw,lat بهترتیب متناظر است با نرخ خواندن سختافزار ویدیو بر حسب مگابایت بر ثانیه (MB/sec)، پهنایباند شبکه به کلاینتها بر حسب کیلوبایت بر ثانیه (KB/sec)، و تاخیر شبکه به کلاینتها بر حسب میلیثانیه. اگر مقداری خالی رها شود، مانند «-speeds ,100,15»، آنگاه از طرح داخلی برای تخمین مقدار(های) خالی استفاده میشود.
- کارتهای ویدیویی معمول رایانههای شخصی دارای نرخ خواندن ۵-۱۰ مگابایت بر ثانیه هستند. اگر framebuffer به جای سختافزار ویدیو در حافظهٔ اصلی قرار داشته باشد (مانند SunRay، shadowfb، dummy driver، Xvfb)، ممکن است نرخ خواندن بسیار سریعتر باشد. برای بهدست آوردن کران پایین میتوان از «x11perf -getimage500» استفاده کرد (به یاد داشته باشید که بایت بر پیکسل را در محاسبه لحاظ کنید). تخمین پهنایباند شبکه و تاخیر به کلاینتها بر عهدهٔ شماست. برای تاخیر میتوان از دستور ping(1) استفاده کرد.
- جهت راحتی، نامهای مستعاری فراهم شده است؛ مانند «-speeds modem». این نامهای مستعار عبارتند از: «modem» برای 6,4,200؛ «dsl» برای 6,100,50؛ و «lan» برای 6,5000,1
-wmdt string
- برای برخی ویژگیها، مانند -wireframe و -scrollcopyrect، ابزار x11vnc ناچار است مشکلات مربوط به مدیر پنجرهها یا محیطهای رومیزی خاصی را دور بزند (در حال حاضر kde و xfce). بهطور پیشفرض تلاش میکند حدس بزند کدامیک در حال اجراست، اما ممکن است نادرست حدس بزند. از این گزینه برای تعیین نوع wm/dt استفاده کنید. string میتواند «gnome»، «kde»، «cde»، «xfce» یا «root» (مدیر پنجرهٔ کلاسیک X) باشد. هر مقدار دیگری به عنوان «root» تفسیر میشود.
-debug_pointer
- چاپ خروجی اشکالزدایی برای هر رخداد نشانگر.
-debug_keyboard
- چاپ خروجی اشکالزدایی برای هر رخداد صفحهکلید.
بهترتیب مشابه -dp و -dk است. برای دریافت خروجی بیشتر، چندین بار استفاده کنید.
-defer time
- مدتزمان بر حسب میلیثانیه برای به تعویق انداختن ارسال بهروزرسانیها به کلاینتهای متصل (deferUpdateTime). پیشفرض: 20
-wait time
- مدتزمان بر حسب میلیثانیه برای مکث بین دفعات پایش صفحه. جهت کاهش بار پردازشی استفاده میشود. پیشفرض: 20
-extra_fbur n
- انجام بررسیهای اضافی FrameBufferUpdateRequests برای هماهنگی و همگامسازی بهتر با درخواستهای کلاینت. کاربرد این گزینه انجام پایشهای بیشتر سوکت کلاینت در زمانهای بحرانی است (پیش از فراخوانیهای «-defer» و «-wait».) مقدار پیشفرض n=1 است. برای گنجاندن بررسیهای بیشتر آن را روی عددی بزرگتر تنظیم کنید یا برای غیرفعالسازی مقدار را برابر با n=0 قرار دهید. یک نکتهٔ منفی این فراخوانیهای اضافی این است که ممکن است ورودیهای ماوس بیشتری نسبت به میزان مطلوب پردازش شوند.
-wait_ui factor
- ضرایبی که در صورت وجود ورودی اخیر کاربر (نشانگر یا صفحهکلید)، زمان -wait با آن تقسیم شده و کاهش مییابد. پاسخدهی را بهبود میبخشد، اما هر زمان که ماوس را تکان دهید یا تایپ کنید بار پردازشی را افزایش میدهد. پیشفرض: 2.00
-setdefer n
- هنگامی که سازوکار -wait_ui زمان انتظار (بر حسب میلیثانیه) را کاهش میدهد، زمان تعویق (defer) را روی همان مقدار میلیثانیه تنظیم میکند. مقدار n=1 برای فعالسازی، 0 برای غیرفعالسازی، و -1 برای تنظیم defer روی 0 (بدون تاخیر) است. به همین ترتیب، 2 و -2 مشخص میکنند که حالت «urgent_update» باید برای ارسال هرچه سریعتر بهروزرسانیها به کار گرفته شود. پیشفرض: 1
-nowait_bog
- تشخیص «کند شدن شدید» پایش صفحه و خواب طولانیتر را انجام نده. برخی فعالیتها بدون ورودی کاربر میتوانند سرعت همهچیز را بسیار کاهش دهند: یک پنجرهٔ ترمینال بزرگ را در نظر بگیرید که فرآیند ساخت (build) طولانی با جریان مداوم خروجی متنی در آن در حال اجراست. بهطور پیشفرض x11vnc تلاش میکند این وضعیت را تشخیص دهد (۳ پایش پیاپی صفحه که هر کدام بیش از 0.25 ثانیه بدون ورودی کاربر طول بکشد) و تا 1.5 ثانیه به خواب برود تا به فرآیندها اجازه دهد همگام شوند. از این گزینه برای غیرفعال کردن این تشخیص استفاده کنید.
-slow_fb time
- زمان اعشاری بر حسب ثانیه برای تاخیر انداختن در تمام پایشهای صفحه. برای کاربردهای ویژهای که نرخ فریم پایین در آنها پذیرفتنی و مطلوب است، اما میخواهید ورودی کاربر با نرخ عادی پردازش شود و در نتیجه نمیتوانید از -wait استفاده کنید.
-xrefresh time
- زمان اعشاری بر حسب ثانیه برای مشخص کردن بازهٔ اجرای معادل دستور xrefresh(1) جهت وادار ساختن تمام پنجرهها (در ناحیهٔ قابل مشاهده در صورت استفاده از -id، -sid یا -clip) به ترسیم مجدد خود. از این گزینه تنها در صورتی استفاده کنید که برنامهها رفتار نادرستی داشته و خود را بهدرستی بازترسیم نکنند. همچنین -noxdamage را ببینید.
-nap, -nonap
- نظارت بر میزان فعالیت، و در صورت پایین بودن آن، خوابهای طولانیتر بین پایشهای صفحه جهت کاهش واقعی بار پردازشی در زمان بیکاری. پیشفرض: رفتن به خواب (take naps)
-sb time
- مدتزمان بر حسب ثانیه پس از عدم فعالیت (مانند خاموش شدن صفحه) برای مهار شدید پایشهای صفحه (یعنی خواب به مدت حدود ۱٫۵ ثانیه). برای غیرفعالسازی از 0 استفاده کنید. پیشفرض: 60 متغیر محیطی X11VNC_SB_FACTOR را برای ضریبدهی به آن تنظیم کنید..PP -readtimeout n
- مقدار rfbMaxClientWait در LibVNCServer را روی n ثانیه تنظیم میکند. در پیوندهای ارتباطی کند که رسم نخستین صفحه زمان زیادی میبرد، LibVNCServer ممکن است با پایان مهلت زمانی (timeout) مواجه شده و اتصال را قطع کند. پیشفرض: 20 ثانیه.
-ping n
- هر n ثانیه یک بهروزرسانی ۱×۱ بافر فریم (framebuffer) را به همهٔ کلاینتها ارسال میکند (به عنوان مثال، برای تلاش در جهت زنده نگه داشتن اتصال شبکه).
-nofbpm, -fbpm
- اگر سیستم از افزونهٔ FBPM (مدیریت توان بافر فریم / Frame Buffer Power Management) پشتیبانی کند (مانند برخی سیستمهای Sun)، هنگام متصل بودن کلاینتهای VNC از رفتن سختافزار گرافیک به وضعیت مصرف توان کاهشیافته جلوگیری میکند.
- سختافزارهای گرافیکی دارای قابلیت FBPM هنگامی که ایستگاه کاری بیکار است با رفتن به وضعیتهای کممصرف، انرژی را ذخیره میکنند (مشابه DPMS برای نمایشگرها). این امر با سرکشی (polling) دادههای بافر فریم توسط x11vnc تداخل ایجاد میکند.
- گزینهٔ «-nofbpm» به معنای جلوگیری از وضعیتهای کممصرف FBPM در زمان اتصال کلاینتهای VNC است، در حالی که «-fbpm» به معنای عدم نظارت بر وضعیت FBPM به طور کلی است. برای جزئیات به صفحه راهنمای xset(1) مراجعه کنید. -nofbpm اساساً مشابه اجرای دورهای دستور «xset fbpm force on» است. پیشفرض: -fbpm
-nodpms, -dpms
- اگر سیستم از افزونهٔ DPMS (سیگنالدهی مدیریت مصرف توان نمایشگر / Display Power Management Signaling) پشتیبانی کند، هنگام اتصال کلاینتهای VNC از رفتن مانیتور به وضعیت مصرف توان کاهشیافته جلوگیری میکند.
- وضعیتهای کاهش مصرف توان مانیتور توسط DPMS قابلیت مفیدی هستند و معمولاً تمایل دارید کاهش مصرف توان صورت گیرد (معمولاً x11vnc در این وضعیت مشکلی در بازنمایی نمایشگر ندارد). احتمالاً تنها زمانی مایل به استفاده از «-nodpms» هستید که بخواهید مشکل فعال شدن محافظ صفحه نمایش (Screen Saver) در وضعیتهای کممصرف DPMS را دور بزنید. یک مشکل شناختهشده با kdesktop_lock در KDE وجود دارد که در آن هر بار ورودی کاربر برای یک یا دو ثانیه متوقف میشود، محافظ صفحه مکرراً فعال میشود. مشخص کردن «-nodpms» این مشکل را دور میزند.
- گزینهٔ «-nodpms» به معنای جلوگیری از وضعیتهای کممصرف DPMS در هر زمان است که کلاینتهای VNC متصل هستند، در حالی که «-dpms» به معنای عدم نظارت بر وضعیت DPMS به طور کلی است. برای جزئیات به صفحه راهنمای xset(1) مراجعه کنید. -nodpms اساساً مشابه اجرای دورهای دستور «xset dpms force on» است. پیشفرض: -dpms
-forcedpms
- اگر سیستم از افزونهٔ DPMS (سیگنالدهی مدیریت مصرف توان نمایشگر) پشتیبانی کند، تلاش میکند تا مانیتور را در وضعیت خاموش نگه دارد. این قابلیت برای جلوگیری از مشاهدهٔ محتوای صفحه توسط افراد کنجکاو در محل فیزیکی نمایشگر است. حتماً قبل از قطع اتصال، صفحه نمایش را قفل کنید.
- این روش به هیچ وجه نفوذناپذیر نیست؛ برای مثال فرض کنید فردی مانیتوری بدون پشتیبانی از DPMS را متصل کند، یا چنان بار پردازشی به سیستم تحمیل کند که قبل از بازیابی وضعیت خاموشی توسط x11vnc وقفه زمانی رخ دهد؟ در بسیاری از ماشینها، اگر فرد سیستم را با ورودیهای ماوس و صفحهکلید بمباران کند، میتواند قبل از برقراری مجدد وضعیت خاموشی DPMS، جرقههایی گذرا از آنچه روی صفحه است را مشاهده کند. برای کارکرد کاملاً امن، به پشتیبانی دقیق در خود X server نیاز است، نه پیادهسازی تقریبی با DPMS.
-clientdpms
- مشابه -forcedpms، اما تنها هنگامی که کلاینتهای VNC متصل هستند.
-noserverdpms
- از افزونهٔ ServerInput در UltraVNC پشتیبانی میشود. این افزونه به کلاینت VNC امکان میدهد با کلیک بر روی یک دکمه، سرور (x11vnc) را وادار کند تا ورودی صفحهکلید و ماوس را در نمایشگر فیزیکی غیرفعال کرده و مانیتور را در وضعیت خاموش dpms قرار دهد. از این گزینه برای صرفنظر کردن از خاموش کردن مانیتور استفاده کنید.
-noultraext
- افزونههای روبهرو از UltraVNC را غیرفعال میکند: SingleWindow و ServerInput. سایر افزونههایی که توسط LibVNCServer مدیریت میشوند (مانند textchat، مقیاسبندی 1/n، rfbEncodingUltra) غیرفعال نمیشوند.
-chatwindow
- یک پنجرهٔ گفتگوی (chat) محلی UltraVNC را در نمایشگر X11 که x11vnc در حال سرکشی از آن است قرار میدهد. بدین ترتیب فرد حاضر در سمت کلاینت VNC میتواند با فرد حاضر در کنسول فیزیکی X11 گفتگو کند (به عنوان مثال، پشتیبانی فنی بدون نیاز به تلفن).
- برای کارکرد این قابلیت، بستهٔ SSVNC (نسخهٔ 1.0.21 یا جدیدتر) حتماً باید بر روی سیستمی که x11vnc اجرا میشود نصب باشد و دستور «ssvnc» در PATH$ موجود باشد. برنامهٔ ssvncviewer به عنوان دستیار پنجرهٔ گفتگو استفاده میشود. به http://www.karlrunge.com/x11vnc/ssvnc.html مراجعه کنید.
- این گزینه به صورت ضمنی تنظیم «-rfbversion 3.6» را اعمال میکند تا نرمافزارهای UltraVNC viewer را فریب دهد؛ در غیر این صورت آنها گفتگو را غیرقابل دسترس فرض میکنند. برای مشخص کردن یک rfbversion دیگر، آن را بعد از گزینهٔ -chatwindow در خط فرمان قرار دهید.
- همچنین کنشهای کنترل از راه دور «chaton» و «chatoff» را ببینید. این موارد از طریق رابط گرافیکی tkx11vnc نیز قابل تنظیم هستند.
-noxdamage
- حتی در صورت در دسترس بودن، از افزونهٔ X DAMAGE برای تشخیص تغییرات بافر فریم استفاده نمیکند. اگر پیشفرض سیستم شما خاموش بودن آن است، از -xdamage استفاده کنید.
- استفادهٔ x11vnc از افزونهٔ DAMAGE: ۱) بار کاری سیستم را هنگامی که صفحه تغییر چندانی ندارد به شدت کاهش میدهد، و ۲) نواحی تغییر یافته (بهطور پیشفرض نواحی کوچک) را سریعتر شناسایی میکند.
- در حال حاضر افزونهٔ DAMAGE بسیار محتاطانه عمل میکند و اغلب نواحی بزرگی (مانند کل یک ترمینال یا پنجرهٔ مرورگر) را به عنوان آسیبدیده/تغییریافته گزارش میکند، حتی اگر ناحیهٔ واقعاً تغییر یافته بسیار کوچکتر باشد (گاهی فقط چند پیکسل). به همین دلیل، روشهای مکاشفهای (heuristics) اضافه شدهاند تا از نواحی بزرگ صرفنظر کرده و مستطیلهای آسیب را صرفاً به عنوان «سرنخهایی» برای سرکشی سنتی خطوط پویش (scanline polling) به کار گیرند. پارامترهای زیر برای تنظیم این رفتار معرفی شدهاند:
-xd_area A
- بزرگترین مساحت مستطیل DAMAGE با مقدار A (برحسب پیکسل: عرض * ارتفاع) را تعیین میکند که به عنوان واقعاً تغییریافته مورد اطمینان باشد: این مستطیل تحت هر شرایطی از بافر فریم کپی خواهد شد (کند). برای اطمینان به *تمام* مستطیلها، مقدار آن را روی صفر تنظیم کنید. پیشفرض: 20000
-xd_mem f
- مدت زمانی را که مستطیلهای DAMAGE باید «به خاطر سپرده شوند» تعیین میکند؛ f یک عدد ممیز شناور برحسب واحدهای زمان چرخهٔ تکرار خطوط پویش (32 تکرار) است. مقدار پیشفرض (1.0) نباید هیچ مشکلی در رسم تصویر ایجاد کند. در صورت وجود مشکل مقدار آن را افزایش دهید، یا برای استفاده در نهایت سرعت و ریسک آن را کاهش دهید (شاید در سامانههای کند مفید باشد).
-sigpipe string
- مدیریت لولهٔ شکسته (SIGPIPE). مقدار string میتواند «ignore» یا «exit» باشد. در حالت «ignore»، کتابخانهٔ LibVNCServer قطع ناگهانی کلاینت را مدیریت کرده و ادامه میدهد؛ در حالت «exit»، نرمافزار x11vnc با بروز نخستین قطعی اتصال، پاکسازی کرده و خارج میشود.
- این گزینه واقعاً ضروری نیست زیرا LibVNCServer مدتهاست که رفتار درستی در این موقعیت دارد. با این حال برای سهولت، میتوانید از آن برای نادیده گرفتن سایر سیگنالها استفاده کنید؛ برای مثال «-sigpipe ignore:HUP,INT,TERM» در صورتی که برای کاربردی خاص مفید واقع شود. همچنین میتوانید «..:exit» را در فهرست قرار دهید تا x11vnc هنگام دریافت سیگنالهای مربوطه پاکسازی کرده و خارج شود. گزینهٔ «-sig» یک نام مستعار برای این گزینه است، اگر تمایلی به استفاده از واژهٔ «pipe» ندارید. مثال: -sig ignore:INT,TERM,exit:USR1
-threads, -nothreads
- تعیین میکند در صورت در دسترس بودن libpthread، آیا از الگوریتم چندنخی LibVNCServer [rfbRunEventLoop] استفاده شود یا خیر. در این حالت، نخهای جدیدی (یکی برای ورودی و یکی برای خروجی) جهت مدیریت هر کلاینت جدید ایجاد میشود. پیشفرض: -nothreads.
- پایداری نخها در نسخهٔ 0.9.8 تا حد زیادی بهبود یافته است.
- استفاده از چندین کلاینت در حالت چندنخی باید برای کدگذاری ZRLE در تمام پلتفرمها پایدار باشد. کدگذاریهای Tight و Zlib در حال حاضر فقط روی لینوکس برای کلاینتهای متعدد پایدار هستند. اگر سیستمعامل، کامپایلر و پیونددهندهٔ شما پشتیبانی میکنند، برنامه را با -DTLS=__thread کامپایل کنید.
- برای تغییر اندازه (randr و غیره)، مقدار متغیر محیطی X11VNC_THREADS_NEW_FB_SLEEP را برحسب میلیثانیه برای توقف در بخشهای مختلف عمل do_new_fb() تعیین کنید. این کار به منظور پایدار شدن فرایندهای مختلف است. پیشفرض حدود 500 میلیثانیه است.
- کلاینتهای متعدد در حالت چندنخی میتواند کارایی بهتری را در پخش سراسری برای موارد «کلاس درس» فراهم کند؛ همچنین در حالت انتشار -appshare. گزینهٔ -reflect را نیز بررسی کنید.
-fs f
- اگر کسر کاشیهای تغییریافته در یک سرکشی بیشتر از f باشد، کل صفحه بهروزرسانی میشود. پیشفرض: 0.75.PP -gaps n
- روش مکاشفهای برای پر کردن فاصلهها در سطرها یا ستونهای دارای n کاشی (tile) یا کمتر. برای بهبود صفحهبندی متنی استفاده میشود. پیشفرض: 4
-grow n
- روش مکاشفهای برای گسترش جزیرههای کاشیهای تغییریافته با عرض n یا بیشتر با بررسی کاشیهای مجاور مرز. پیشفرض: 3
-fuzz n
- میزان تلورانس بر حسب پیکسل برای علامتگذاری لبههای کاشی به عنوان تغییریافته. پیشفرض: 2
-debug_tiles
- چاپ خروجی اشکالزدایی برای کاشیها، بهروزرسانیهای fb و غیره.
-snapfb
- به جای پایش (polling) مداوم فریمبافر (fb) نمایشگر X برای بررسی تغییرات، تمام فریمبافر نمایشگر X بهصورت دورهای در حافظهٔ اصلی کپی شده و آن رونوشت برای تغییرات بررسی میشود. (این تنظیم برای حالتهای غیر X در -rawfb نیز اعمال میشود). تحت برخی شرایط، این کار پاسخدهی تعاملی را بهبود میبخشد، یا دستکم حرکات را روانتر نشان میدهد، اما در شرایط دیگر (در اکثر موارد!) پاسخدهی را بدتر میکند. اگر فریمبافر سختافزار گرافیکی به گونهای باشد که خواندن کاشیهای کوچک بسیار کُند انجام شود، این حالت میتواند کمککننده باشد. برای بالا نگه داشتن «نرخ فریم»، حاصلضرب ابعاد صفحه در bpp نباید بیش از حد بزرگ باشد. توجه داشته باشید که این حالت منابع ورودی/خروجی (I/O) حافظه را به شدت هدر میدهد (زیرا حتی در صورت عدم وجود تغییر، یک رونوشت کامل از صفحه ایجاد میکند). این حالت ممکن است در برنامههای ضبط ویدیو، وبکمها، یا مواردی که شکستگی تصویر پنجرهها (tearing) مشکلساز است، کاربرد داشته باشد.
-rawfb string
- به جای پایش X، شیء حافظهٔ مشخصشده در string را پایش میکند.
- برای پایش فایل، به منظور نگاشت در حافظه mmap(2) یک فایل از این قالب استفاده کنید: "map:/path/to/a/file@WxHxB"، شامل پهنا (Width)، ارتفاع (Height) و بیت بر پیکسل (Bits per pixel) فریمبافر. ساختار "mmap:..." نیز یکسان است.
- اگر در استفاده از mmap مشکلی وجود دارد، از "file:/..." برای خواندن کُندتر مبتنی بر lseek(2) استفاده کنید.
- از "snap:..." برای اعمال حالت -snapfb و دسترسی "file:" استفاده کنید (این حالت برای دستگاههای غیرقابل جستوجو (unseekable) است که کل فریمبافر را فقط بهیکباره ارائه میدهند، مانند یک دوربین ویدیویی که کل فریم را به صورت یکجا ارائه میکند).
- برای قطعههای حافظهٔ اشتراکی رشته به صورت "shm:N@WxHxB" است که shmid مقدار N را با WxHxB مطابق بالا مشخص میکند. به shmat(1) و ipcs(1) مراجعه کنید.
- اگر نوعی را مشخص نکنید، در صورت وجود فایل، نوع "map" فرض میشود (برای برخی استثناها به پاراگرافهای بعدی مراجعه کنید).
- اگر رشته به صورت "setup:cmd" باشد، دستور "cmd" اجرا شده و خط اول از خروجی آن خوانده شده و به عنوان string استفاده میشود. این کار امکان مقداردهی اولیهٔ دستگاه، تعیین WxHxB و غیره را فراهم میآورد. این عملیات اغلب با دسترسی ریشه (root) انجام میشوند، بنابراین احتیاط کنید.
- اگر رشته با "video" آغاز شود، به بخش VIDEO4LINUX در ادامه مراجعه کنید؛ جایی که ممکن است پارامترهای فریمبافر از دستگاه پرسوجو شده (و احتمالاً تنظیم شوند).
- اگر رشته با "console"، "/dev/fb"، "fb"، یا "vt" آغاز شود، به بخش LINUX CONSOLE در ادامه مراجعه کنید؛ جایی که دستگاه فریمبافر باز شده و کلیدهای فشردهشده (و احتمالاً رویدادهای ماوس) به کنسول تزریق میشوند.
- اگر رشته با "vnc" آغاز شود، به بخش VNC HOST در ادامه مراجعه کنید؛ جایی که فریمبافر از یک کارگزار دوردست VNC دیگر دریافت میشود.
- پسوندهای اختیاری عبارتند از ":R/G/B" و "+O" برای مشخص کردن ماسکهای قرمز، سبز و آبی (در مبنای ۱۶) و انحراف (offset) در شیء حافظه. اگر ماسکها ارائه نشوند، x11vnc آنها را بر اساس bpp حدس میزند (اگر رنگها نادرست به نظر میرسند، باید ماسکها را ارائه دهید).
- پسوند اختیاری دیگر بایت بر خط (Bytes Per Line) است که در برخی موارد WxB/8 نیست. آن را به صورت WxHxB-BPL مشخص کنید، مانند 800x600x16-2048. این میتواند یک فریمبافر عادی با عرض 1024 در 16bpp باشد، اما فقط عرض 800 آن نمایش داده شود.
- بنابراین قالب کامل عبارت است از: mode:file@WxHxB:R/G/B+O-BPL
- مثالها:
- -rawfb shm:210337933@800x600x32:ff/ff00/ff0000
- -rawfb map:/dev/fb0@1024x768x32
- -rawfb map:/tmp/Xvfb_screen0@640x480x8+3232
- -rawfb file:/tmp/my.pnm@250x200x24+37
- -rawfb file:/dev/urandom@128x128x8 -rawfb snap:/dev/video0@320x240x24 -24to32 -rawfb video0 -rawfb video -pipeinput VID -rawfb console -rawfb vt2 -rawfb vnc:somehost:0
- (برای دو مثال نخست به ipcs(1) و fbset(1) مراجعه کنید)
- به طور کلی تمامی ورودیهای کاربر به طور پیشفرض دور ریخته میشوند (برای نحوهٔ استفاده از یک برنامهٔ کمکی جهت درج ورودی، گزینهٔ -pipeinput را ببینید). بیشتر گزینههای مربوط به X11 (صفحه، صفحهکلید، ماوس) در این حالت بیمعنی هستند و بسیاری از آنها باعث کرش کردن این حالت میشوند، بنابراین لطفاً پیش از تنظیم یا تغییر آنها در یک x11vnc در حال اجرا خوب فکر کنید.
- اگر نمیخواهید x11vnc در حالت rawfb نمایشگر X DISPLAY را ببندد، علامت «+» را به ابتدای آن اضافه کنید؛ مانند ...+file:/dev/fb0. باز نگه داشتن نمایشگر، کانال پیشفرض کنترل از راه دور را فعال میکند که میتواند مفید باشد. از طرف دیگر، اگر گزینهٔ -noviewonly را مشخص کنید، ورودیهای ماوس و صفحهکلید همچنان به نمایشگر X ارسال میشوند؛ این کاربرد بسیار نادر است، مثلاً انجام کاری غیرمعمول با /dev/fb0.
- اگر دستگاه «قابل جستوجو» (seekable) نیست (مانند وبکم)، سعی کنید آن را بهیکباره در عکسهای کامل (snap) از طریق حالت "snap:" بخوانید (توجه: این حالت منابع بسیار زیادی مصرف میکند). اگر از file: یا map: استفاده میکنید و لازم است دستگاه برای *هر* تصویر فوری snapfb بازگشایی شود، متغیر محیطی SNAPFB_RAWFB_RESET=1 را نیز تنظیم کنید.
- اگر میخواهید x11vnc به صورت پویا یک rawfb با 24bpp را به 32bpp تبدیل کند (توجه داشته باشید که این کار کُندتر خواهد بود)، گزینهٔ -24to32 را نیز وارد کنید. این ویژگی برای مواردی مانند دوربین ویدیویی که دادههای پیکسلی را به صورت RGB فشرده ۲۴ بیتی تحویل میدهد مفید خواهد بود. در صورتی که bpp برابر ۲۴ باشد، این حالت پیشفرض در حالت "video" است.
- به طور معمول بیت بر پیکسل، B، برابر با ۸، ۱۶ یا ۳۲ (یا به ندرت ۲۴) است؛ با این حال پشتیبانیهایی برای B < 8 نیز وجود دارد (مانند نمایشگرهای گرافیکی قدیمی با 4 bpp یا 1 bpp). در این حالت حتماً باید ماسکها را نیز مشخص کنید: WxHxB:R/G/B. پیکسلها با استفاده از رنگ واقعی (truecolor) با عمق ۸، تا ۸ بیت بر پیکسل تراز (pad) میشوند. این سازوکار در حال حاضر با snap fb کار نمیکند (در صورت تمایل جویا شوید). مثال تکرنگ با B=1: file:/dev/urandom@128x128x1:1/1/1 برخی نمونههای دیگر شبیه به این عبارتند از 128x128x2:3/3/3 و 128x128x4:7/7/7
- برای فریمبافرهای با B < 8، میتوانید متغیر محیطی RAWFB_CGA=1 را نیز تنظیم کنید تا نگاشت CGA برای B=4 امتحان شود (مانند درایور linux vga16fb). توجه داشته باشید که در حالتهای VGA و VGA16 با bpp و/یا تفکیکپذیری پایین در کنسول لینوکس، تلاش برای خروجی گرفتن از آنها از طریق x11vnc اغلب به دلیل پالتهای رنگی خاص، فشردهسازی پیکسلها، و حتی بافرینگ رندر ویدیو با شکست مواجه میشود. از سوی دیگر، آزمایش با ماسکهای RGB اغلب میتواند نتیجهای قابل تشخیص بدهد.
- VIDEO4LINUX: در لینوکس تلاشهایی برای مدیریت خودکار دستگاههای ویدیو (وبکمها یا کارتهای تیونر تلویزیون) صورت میگیرد. ایده بر این است که مقادیر WxHxB از خود دستگاه استخراج شود. بنابراین اگر پارامترهای "...WxHxB@" را مشخص نکنید، x11vnc تلاش میکند آنها را تعیین کند. ابتدا در صورتی که پشتیبانی از API مربوط به v4l کامپایل شده باشد، آن را امتحان میکند. در غیر این صورت، برنامهٔ خارجی v4l- info(1) را در صورت موجود بودن اجرا میکند.
- سادهترین مثالها "-rawfb video" و "-rawfb video1" هستند که به ترتیب به فایلهای دستگاه /dev/video و /dev/video1 اشاره دارند. همچنین در صورت تمایل میتوانید /dev را مشخص کنید، مانند "-rawfb /dev/video0".
- از آنجا که فریمبافر دستگاه ضبط ویدیو معمولاً به طور مداوم تغییر میکند (مانند نوسانات روشنایی)، ممکن است بخواهید از گزینههای -wait، -slow_fb یا -defer برای کاهش «نرخ فریم» جهت کاستن از ترافیک شبکهٔ VNC استفاده کنید.
- یک روش پیشرفتهتر برای دستگاههای ویدیو، امکان مقداردهی اولیهٔ تنظیمات دستگاه را با استفاده از روش زیر فراهم میکند:.IP -rawfb video:<settings>
- پیشوند همچنین میتواند همانند بالا، برای مثال "video1:" باشد تا فایل دستگاه را مشخص کند. برای کارکرد این قابلیت، API مربوط به v4l باید در دسترس باشد. در غیر این صورت، لازم است راهاندازی اولیهٔ دستگاه را با یک برنامهٔ خارجی مانند xawtv یا spcaview امتحان کنید و امیدوار باشید این تنظیمات هنگام بازگشایی مجدد دستگاه توسط x11vnc پایدار بمانند.
- عبارت <settings> فهرستی از جفتهای کلید=مقدار جداشده با کاما است. روشنایی (brightness)، رنگ (color)، کنتراست (contrast)، و فام (hue) دستگاه را میتوان بهصورت درصدی تنظیم کرد، مثلاً br=80,co=50,cn=44,hu=60.
- نام فایل دستگاه را نیز در صورت نیاز (اگر با "video" آغاز نشود) میتوان تنظیم کرد، مثلاً fn=/dev/qcam.
- عرض، ارتفاع و bpp فریمبافر را میتوان از طریق، مثلاً w=160,h=120,bpp=16 تنظیم کرد.
- در ارتباط با bpp بالا، قالب پیکسل (pixel format) را میتوان از طریق fmt=XXX مشخص کرد، که در آن XXX میتواند یکی از مقادیر GREY، HI240، RGB555، RGB565، RGB24 و RGB32 باشد (به ترتیب با bppهای 8، 8، 16، 16، 24 و 32). برای اطلاعات بیشتر (V4L api) به http://www.linuxtv.org مراجعه کنید.
- برای کارتهای تیونر TV/rf میتوان حالت تنظیم موج (tuning mode) را از طریق tun=XXX تعیین کرد که در آن XXX میتواند یکی از مقادیر PAL، NTSC، SECAM یا AUTO باشد.
- میتوان کانال ورودی را با تنظیم inp=XXX تغییر داد، که در آن XXX نام کانال ورودی است (مانند Television، Composite1، S-Video و غیره). از نامی استفاده کنید که در اطلاعات دستگاه هنگام راهاندازی چاپ میشود.
- برای کانالهای ورودی دارای تیونر (مانند Television)، میتوان ایستگاه انتخابشده را با تنظیم sta=XXX تغییر داد. مقدار XXX شمارهٔ ایستگاه است. در حال حاضر فقط کانالهای ntsc-cable-us (کابلی ایالات متحده) بهصورت توکار در x11vnc قرار دارند. برای ارائهٔ جدول از xawtv، گزینهٔ -freqtab را در زیر ببینید. اگر XXX بزرگتر از 500 باشد، به عنوان یک فرکانس خام بر حسب KHz تفسیر میشود.
- مثال:
- -rawfb video:br=80,w=320,h=240,fmt=RGB32,tun=NTSC,sta=47
- اگر کارت بهطور پیشفرض روی آن کانال بالا نیاید، ممکن است نیاز باشد inp=Television نیز برای تنظیم کانال ورودی روی TV افزوده شود.
- توجه داشته باشید که همهٔ دستگاههای ضبط ویدیو (video capture) از تمام تنظیمات بالا پشتیبانی نمیکنند.
- برای اطلاع از نحوهٔ کنترل تنظیمات از طریق VNC Viewer با استفاده از فشردن کلیدها، گزینهٔ -pipeinput VID را در زیر ببینید. به عنوان یک میانبر، اگر رشته بهجای "video.." با "Video.." آغاز شود، آنگاه -pipeinput VID بهصورت ضمنی اعمال میشود.
- همانند بالا، اگر عبارت "@WxHxB..." را پس از رشتهٔ <settings> مشخص کنید، مقادیر عیناً استفاده میشوند: مقادیر فعلی از دستگاه استعلام نخواهد شد. در غیر این صورت، از دستگاه پرسوجو میشود.
- کنسول لینوکس (LINUX CONSOLE): موارد زیر برخی از روشهای مشاهده و احتمالاً تعامل با کنسول متنی/گرافیکی لینوکس (یعنی خارج از X11 XFree86/Xorg) را شرح میدهد.
- نکته: اگر برنامهٔ LinuxVNC از LibVNCServer روی سیستم شما نصب است، ممکن است ترجیح دهید بهجای روش زیر از آن استفاده کنید، زیرا برای کنسول متنی لینوکس سریعتر و دقیقتر بوده و شامل پشتیبانی از ماوس است. با این حال، اگر در مثالهای زیر "console" را با "vt" جایگزین کنید، قابلیت پایهای LinuxVNC در x11vnc نیز موجود است.
- اگر رشتهٔ rawfb با "console" آغاز شود، دستگاه فریمبافر /dev/fb0 باز شده و /dev/tty0 نیز باز میشود. مورد دوم برای تزریق فشردن کلیدها استفاده میشود (همهٔ کلیدها پشتیبانی نمیشوند، اما کلیدهای اصلی پشتیبانی میگردند). برای تزریق کلیدها باید کاربر ریشه (root) باشید، اما لزوماً برای باز کردن /dev/fb0 نیازی به آن نیست. مسیر /dev/tty0 به VT فعال اشاره دارد؛ برای مشخص کردن صریح یکی از آنها، با تعیین شمارهٔ خاص VT، مثلاً از "console2" برای /dev/tty2 و غیره استفاده کنید.
- برای فعال بودن دستگاه فریمبافر لینوکس، /dev/fb0 (یا fb1 و غیره)، درایورهای مناسب هسته باید بارگذاری شده باشند؛ مثلاً vesafb یا vga16fb و همچنین با تنظیم پارامتر بوت vga=0x301 (یا 0x314، 0x317 و غیره). (روش vga=... روش ترجیحی است؛ سیستمهای خود را به این شیوه پیکربندی کنید.) در غیر این صورت خطای 'No such device' رخ خواهد داد. همچنین میتوانید برای قابلیتهای بیشتر، درایور فریمبافر لینوکس مخصوص سازندهٔ کارت گرافیک خود را بارگذاری کنید. پس از بوت شدن سیستم، اغلب میتوان به عنوان کاربر ریشه درایور fb را با 'modprobe' بارگذاری کرد تا یک دستگاه فریمبافر به دست آید.
- اگر نتوانستید /dev/fb0 را در لینوکس به کار بیندازید، حالت شبیهسازی LinuxVNC را با استفاده از "-rawfb vtN" امتحان کنید که در آن N = 1, ... 6 پایانهٔ مجازی لینوکس (یا همان کنسول مجازی) است که میخواهید مشاهده کنید، مثلاً "-rawfb vt2". بر خلاف حالت /dev/fb، این پایانه لزوماً نباید پایانهٔ مجازی فعال باشد. توجه داشته باشید که این حالت تنها میتواند متن را نمایش دهد و نه گرافیک را. برنامهٔ x11vnc متن را از /dev/vcsaN واکشی (poll) میکند.
- متغیر محیطی RAWFB_VCSA_BW=1 را تنظیم کنید تا رنگها در حالت "vtN" غیرفعال شوند (یعنی فقط سیاهوسفید). اگر مقدار پیشفرض 16bpp را ترجیح نمیدهید، RAWFB_VCSA_BPP را روی 8 یا 32 تنظیم کنید. اگر نیاز دارید پارامترهای rawfb را با استفاده از رشتهٔ 'console_guess' که هنگام راهاندازی چاپ میشود دستکاری کنید، حتماً روش :snap را مشخص نمایید.
- ماژول uinput: اگر به نظر برسد نسخهٔ لینوکس 2.6 یا جدیدتر است و ماژول "uinput" حاضر باشد (modprobe uinput)، آنگاه روش uinput بهجای /dev/ttyN استفاده خواهد شد. ماژول uinput امکان درج همزمان کلیدها و ورودی ماوس را فراهم میآورد و بنابراین هنگام دسترسی به برنامههای کنسول گرافیکی لینوکس (مانند QT-embedded) ترجیح داده میشود. این روش همچنین درج دقیقتر کلیدها را فراهم میکند. برای اطلاعات بیشتر دربارهٔ این حالت، گزینهٔ -pipeinput UINPUT را در زیر ببینید؛ در صورتی که بخواهید هر یک از پارامترهای UINPUT را دستکاری کنید، باید از -pipeinput استفاده نمایید. همچنین ممکن است بخواهید از گزینههای -nodragging و -cursor none استفاده کنید. برای اجبار به استفاده از روش /dev/ttyN از "console0" یا موارد مشابه یا -pipeinput CONSOLE استفاده کنید.
- توجه داشته باشید که میتوانید VT لینوکس را با استفاده از دستور chvt(1) از راه دور تغییر دهید تا پایانهٔ مد نظرتان فعال شود (مانند 'chvt 3'). گاهی خارج شدن و بازگشت مجدد، وضعیت گرافیکی فریمبافر را اصلاح میکند. برای حالت "-rawfb vtN" نیازی به جابجایی VTها نیست.
- برای صرفنظر کردن کامل از تزریق ورودی، از "consolex" یا "vtx" استفاده کنید.
- رشتهٔ "/dev/fb0" (یا 1 و غیره) را میتوان بهجای "console" استفاده کرد. این کار را میتوان برای مشخص کردن یک دستگاه فریمبافر متفاوت، مثلاً /dev/fb1، انجام داد. به عنوان یک میانبر، پیشوند "/dev/" را میتوان حذف کرد. اگر نام دستگاه چیزی غیر استاندارد است، از "console:/dev/foofb" استفاده کنید.
- اگر نمیخواهید x11vnc ابعاد WxHxB و ماسکهای فریمبافر را بهطور خودکار حدس بزند (گاهی هسته اطلاعات نادرستی ارائه میدهد)، آنها را با @WxHxB (و ماسکهای اختیاری :R/G/B) در انتهای رشته مشخص کنید.
- مثالها: -rawfb console -rawfb /dev/fb0 (مشابه) -rawfb console3 (اجبار به /dev/tty3) -rawfb consolex (بدون کلید یا ماوس) -rawfb console:/dev/nonstd -rawfb console -pipeinput UINPUT:accel=4.0 -rawfb vt3 (/dev/tty3 بدون /dev/fb0)
- میزبان VNC (VNC HOST): اگر رشتهٔ -rawfb به شکل "vnc:host:N" باشد، اتصال به نمایشگر VNC با شناسهٔ "N" روی سرور VNC دوردست "host" برقرار میشود (یعنی x11vnc خود به عنوان یک کلاینت VNC عمل میکند) و آن فریمبافر صادر (export) میگردد.
- این حالت در واقع تنها زمانی کاربرد دارد که تلاش میکنید کارایی را در صورت وجود تعداد زیادی بینندهٔ همزمان VNC (مثلاً بیش از 10) بهبود بخشید، و با بهکارگیری یک طرح «تقسیم و حل» (divide and conquer) پهنای باند را کاهش داده و پاسخدهی را بهتر کنید. (با این حال، کاربری دیگر این حالت را برای نمایش دموی یک نمایشگر از طریق پیوندی کُند مفید یافت: بدین ترتیب چندین بینندهٔ دمو به x11vnc بازتابدهنده در سمت پرسرعت پیوند متصل شدند و از عبور ترافیک تمام بینندگان دمو از طریق پیوند کند جلوگیری شد.)
- برای مثال، اگر 64 بینندهٔ همزمان VNC وجود داشته باشد، این میتواند به ترافیک افزونهٔ فراوان VNC به مقصد و از مبدأ سرور host:N، مصرف اضافهٔ پردازنده، و کاهش پاسخدهی تمام بینندگان به دلیل انتظار برای اتمام نوشتن روی کُندترین کلاینت منجر شود. با این حال، اگر 8 بازتابدهنده/تکرارکننده (reflector/repeater) راهاندازی کنید که با گزینهٔ -rawfb vnc:host:N آغاز شده باشند، آنگاه تنها 8 اتصال به host:N وجود خواهد داشت. سپس هر تکرارکننده به 8 اتصال بینندهٔ VNC رسیدگی میکند و بدین ترتیب بار توزیع میشود. در کاربردهای پخش کلاسی، سعی کنید تکرارکنندهها را روی سوئیچهای متفاوتی قرار دهید. این حالت همانند -reflect host:N است. برای یک اتصال معکوس (reverse connection)، "host:N" را با "listen" یا "listen:port" جایگزین کنید.
- کارایی کلی به خوبی یک اتصال مستقیم و تکی نخواهد بود، زیرا در میان سایر موارد، یک لایهٔ اضافی برای واکشی فریمبافر وجود دارد و حرکت مکاننما همچنان میتواند تغییرات زیادی در هر ثانیه ایجاد کند که باید منتشر شوند. نکته: اگر VNC دوردست برنامهای چون x11vnc باشد که ترسیم اسکلتی (wireframing) انجام میدهد، یا یک نمایشگر X باشد که wireframing را پیاده میکند، پاسخی بسیار بهتر از کشیدن پنجرههای مات (opaque window dragging) به همراه خواهد داشت. در صورتی که مشکل شدید است، گزینهٔ -nodragging را مد نظر قرار دهید.
- متغیر محیطی X11VNC_REFLECT_PASSWORD را میتوان روی گذرواژهٔ لازم برای ورود به سرور میزبان VNC، یا روی "file:path_to_file" برای مشخص کردن فایلی که گذرواژه در اولین سطر آن قرار دارد، تنظیم کرد..IP برای تنظیم قالب پیکسلی (pixel format) که x11vnc به عنوان یک کلاینت VNC درخواست میکند، متغیرهای محیطی زیر را مقداردهی کنید: X11VNC_REFLECT_bitsPerSample X11VNC_REFLECT_samplesPerPixel و X11VNC_REFLECT_bytesPerPixel؛ مقادیر پیشفرض ۸، ۳، ۴ هستند. مقادیر ۲، ۳، ۱ یک حالت با رنگ پایین (low color) ایجاد میکنند. برای اطلاعات بیشتر تابع rfbGetClient() را در libvncclient ببینید.
- حالت VNC HOST به طور ضمنی شامل -shared میشود. از -noshared به عنوان یک گزینهٔ خط فرمان پسین برای غیرفعال کردن اشتراکگذاری استفاده کنید.
-freqtab file
- برای استفاده به همراه «-rawfb video» برای دستگاههای گیرنده تلویزیون (TV tuner) جهت مشخص کردن بسامدهای ایستگاهها. به جای استفاده از نگاشت توکار ntsc-cable-us برای تبدیل شماره ایستگاه به بسامد، از دادههای موجود در فایل استفاده میکند. برای ایستگاههایی که عددی نیستند (مانند SE20)، به ترتیبی که پیدا میشوند بالاتر از بزرگترین شماره ایستگاه عددی قرار میگیرند. مثال: «-freqtab /usr/X11R6/share/xawtv/europe-west.list» میتوانید با کپی کردن قالب xawtv، جدول بسامد (freqtab) خود را بسازید.
-pipeinput cmd
- این گزینه امکان مشخص کردن یک دستور خارجی در cmd را فراهم میکند تا x11vnc تمام رویدادهای ورودی کاربر را با قالبی ساده به آن پایپ (pipe) کند. در حالت -pipeinput به طور پیشفرض، x11vnc هیچکدام از رویدادهای ورودی کاربر را پردازش نخواهد کرد. اگر به عنوان پیشوند cmd از «:tee» استفاده کنید، رویدادها هم به دستور پایپ فرستاده شده و هم پردازش خواهند شد. برای مشاهدهٔ شرح قالب، «-pipeinput tee:/bin/cat» را اجرا کنید. پیشوند دیگر «reopen» است که در صورت بسته شدن پایپ، دوباره آن را باز میکند. پیشوندهای چندگانه را با کاما جدا کنید.
- در ترکیب با -rawfb میتوان کارهای جالبی انجام داد (مثلاً کنترل دستگاههای غیر X). برای تسهیل این امر، در صورت فعال بودن -rawfb مقدار آن در X11VNC_RAWFB_STR ذخیره میشود تا دستور پایپ در صورت تمایل از آن استفاده کند. برای اطلاعات بیشتر دستور 'env | grep X11VNC' را اجرا کنید.
- حالتهای توکار pipeinput (بدون نیاز به برنامه خارجی):
- اگر cmd برابر با «VID» باشد و شما از -rawfb برای یک دستگاه کپچر ویدیو استفاده میکنید، یک فهرست درونی از نگاشتهای صفحهکلید برای تنظیم پارامترهای ویدیو به کار گرفته میشود. این نگاشتها عبارتند از:
- «B» و «b» روشنایی را کم و زیاد میکنند. «H» و «h» فام رنگ (hue) را تنظیم میکنند. «C» و «c» رنگ (colour) را تنظیم میکنند. «N» و «n» کنتراست را تنظیم میکنند. «S» و «s» اندازه صفحهٔ کپچر را تنظیم میکنند. «I» و «i» کانالهای ورودی را جابهجا میکنند. کلیدهای جهتنما بالا و پایین ایستگاه را تغییر میدهند (در صورت وجود تیونر). کلیدهای F1، F2، ...، F6 قالب پیکسلی ویدیو را به ترتیب به HI240، RGB565، RGB24، RGB32، RGB555 و GREY تغییر میدهند. برای جزئیات -rawfb video را ببینید.
- اگر cmd برابر با «CONSOLE» یا «CONSOLEn» باشد که در آن n شماره کنسول لینوکس است، عمل درج کلیدهای کنسول لینوکس در /dev/ttyN (به -rawfb console مراجعه کنید) انجام میشود.
- اگر cmd با «UINPUT» آغاز شود، ماژول uinput لینوکس برای درج رویدادهای صفحهکلید و موشواره در کنسول لینوکس به کار میرود (به -rawfb در بالا مراجعه کنید). این مسیر معمولاً فایل دستگاه /dev/input/uinput است (ممکن است لازم باشد آن را با دستور «mknod /dev/input/uinput c 10 223» ایجاد کرده و ماژول را با «modprobe uinput» بارگذاری کنید).
- حالت UINPUT در حال حاضر تنها از صفحهکلیدهای US پشتیبانی میکند (ممکن است گزینهٔ scan code اضافه شود)، و همهٔ keysymها پشتیبانی نمیشوند. اما با این وجود احتمالاً دقیقتر از روش «CONSOLE» است.
- ممکن است بخواهید از گزینههای -cursor none و -nodragging در این حالت استفاده کنید.
- گزینههای تنظیم بیشتر را میتوان از این طریق مشخص کرد: UINPUT:opt1,opt2,... (فهرستی جدا شده با کاما). اگر گزینهای با «/» شروع شود به عنوان فایل دستگاه uinput در نظر گرفته میشود.
- اینکه کدام رویداد به uinput تزریق شود میتواند از طریق یک رشتهٔ اختیاری ساخته شده از نویسههای «K»، «M» و «B» کنترل شود (گزینهٔ -input را ببینید)، برای مثال «KM» به فشردن کلید و حرکت موشواره اجازه میدهد اما کلیکهای دکمه را نادیده میگیرد.
- گزینهای از UINPUT به شکل: accel=f یا accel=fx+fy مقدار «شتاب» حرکت موشواره را تعیین میکند. این مقدار برای تصحیح حرکت نسبی خام موشواره به میزان حرکت نشانگر در برنامه کاربردی به کار میرود (x11vnc کنترلی بر روی چگونگی تفسیر حرکات خام موشواره توسط برنامه ندارد و از آن بیاطلاع است). معمولاً شتاب برای یک نمایشگر X برابر ۲ است (گزینهٔ «m» در xset را ببینید). «f» یک عدد اعشاری است، مثلاً 3.0. در صورتی که نیاز به تصحیح متفاوتی برای x و y دارید از «fx+fy» استفاده کنید.
- نکته: شتاب پیشفرض 2.0 است زیرا به نظر میرسد هم X و هم qt-embedded اغلب (اما نه همیشه) از این مقدار استفاده میکنند.
- حتی با تنظیم صحیح accel موقعیت موشواره ممکن است ناهمگام شود (احتمالاً به دلیل تنظیم «آستانه» موشواره که شتاب در آن اعمال نمیشود؛ xset(1) را ببینید). گزینهٔ reset=N تعداد میلیثانیهها را مشخص میکند (پیشفرض 150) که پس از آن تلاش میشود نشانگر بازنشانی شود (از طریق هدایت موشواره به (0, 0) با گامهای کوچک و سپس پرش دوباره به (x, y)). به نظر میرسد این تصحیح مورد نیاز است اما ممکن است باعث ایجاد لرزش یا رفتار غیرمنتظره در منوها و غیره شود. برای غیرفعال کردن از reset=0 استفاده کنید.
- اگر متغیر محیطی X11VNC_UINPUT_THRESHOLDS را تنظیم کنید، حالت thresh=n فعال میشود. این قابلیت در حال حاضر عملکرد مناسبی ندارد. اگر |dx| <= thresh و |dy| < thresh باشد هیچ شتابی اعمال نمیشود. از «thresh=+n» استفاده کنید تا در عوض از شرط |dx| + |dy| < thresh استفاده شود (X11؟)
- مثال: -pipeinput UINPUT:accel=4.0 -cursor none
- اگر دستگاه uinput دارای یک اشارهگر مطلق باشد (برخلاف موشواره عادی که یک اشارهگر نسبی است) میتوانید گزینهٔ «abs» را مشخص کنید. توجه داشته باشید که تاچپد روی لپتاپ تا حدی یک دستگاه اشارهگر مطلق است. این گزینه (معمولاً) از بروز تمامی مشکلات شتاب موشواره جلوگیری میکند. اگر x11vnc در تشخیص ابعاد دستگاه مشکل دارد، از «abs=WxH» استفاده کنید. علاوه بر این، اگر دستگاه یک صفحهٔ لمسی باشد (که فرض میشود دارای اشارهگر مطلق است) از «touch» یا «touch=WxH» استفاده کنید. برای صفحات لمسی، با فشرده شدن دکمهٔ موشواره افزایش فشار تزریق میشود و با رها شدن دکمه فشار صفر تزریق میگردد.
- اگر touch تنظیم شده باشد، از «touch_always=1» استفاده کنید تا مشخص شود هر زمان که موشواره بدون فشرده شدن کلیدی حرکت کرد، رویداد لمسی با فشار صفر به هر حال ارسال شود. همچنین از «btn_touch=1» استفاده کنید تا به جای تغییر فشار، رویداد فشردن یا رها کردن کلید BTN_TOUCH فرستاده شود. مقدار «dragskip=n» را برای صرفنظر از n لمس کشیدهشده موشواره (با فشار اعمالشده) پیش از تزریق یک مورد تنظیم کنید. برای تعیین فشاری که هنگام کلیک برای یک صفحه لمسی ارسال میشود، pressure=n را مشخص کنید، مثلاً n=5. مقدار پیشفرض n=1 است.
- اگر از یک صفحه لمسی استفاده میشود («touch» در بالا) و ورودی آن توسط tslib پردازش میشود، میتوانید فایل کالیبراسیون tslib را با tslib_cal=<file> تعیین کنید. برای مثال، tslib_cal=/etc/pointercal. برای به دست آوردن موقعیتیابی دقیق یا حتی کاربردی در هنگام استفاده از tslib، این کار الزامی است.
- میتوان سازوکار uinput لینوکس را دور زد و در عوض رویدادهای ورودی را به صورت مستقیم (DIRECTLY) روی دستگاهها نوشت. برای این کار، یک یا چند مورد از موارد زیر را برای ردههای ورودی مشخص کنید: direct_rel=<device> direct_abs=<device> direct_btn=<device> یا direct_key=<device>. فایل <device> معمولاً چیزی شبیه /dev/input/event1 است اما شما میتوانید هر فایل دستگاه یا پایپی را مشخص کنید. شما باید تکتک ردههای بالا را حتی اگر به یک فایل دستگاه اشاره داشته باشند مشخص کنید (rel/abs و btn معمولاً یکسان هستند). برای اطلاع از موارد موجود و نامهای فایل دستگاه، به فایل /proc/bus/input/devices نگاه کنید. نکته: به نظر میرسد دستگاههای /dev/input/mouse* کار نمیکنند، به جای آنها از فایل متناظر /dev/input/event* استفاده کنید. هر ردهٔ ورودی که مستقیماً مانند بالا تعیین نشود از طریق سازوکار uinput مدیریت خواهد شد. برای غیرفعال کردن ایجاد دستگاه uinput (و در نتیجه صرفنظر کردن از ورودی مدیریتنشده)، گزینهٔ «nouinput» را مشخص کنید.
- مثالها:
- -pipeinput UINPUT:direct_abs=/dev/input/event1
- این مورد بر روی یک دستگاه qtmoko Neo freerunner (armel) استفاده شده بود:
- -pipeinput UINPUT:touch,tslib_cal=/etc/pointercal,direct_abs=/dev/input/event1,nouinput,dragskip=4
- (که در آن خط طولانی به دو بخش شکسته شده است.)
- برای دریافت خروجی اشکالزدایی حالت UINPUT میتوانید متغیر محیطی X11VNC_UINPUT_DEBUG=1 یا مقادیر بالاتر را تنظیم کنید.
-macnodim
- برای کارساز بومی MacOSX، تیره کردن خودکار صفحه را غیرفعال میکند.
-macnosleep
- برای کارساز بومی MacOSX، به خواب رفتن نمایشگر را غیرفعال میکند.
-macnosaver.IP برای کارساز بومی MacOSX، محافظ صفحه را غیرفعال میکند.
-macnowait
- برای کارساز بومی MacOSX، منتظر بازگشت کاربر به نمایشگر خود نمیماند.
-macwheel n
- برای کارساز بومی MacOSX، سرعت چرخ ماوس را روی n تنظیم میکند (پیشفرض ۵).
-macnoswap
- برای کارساز بومی MacOSX، دکمههای ۲ و ۳ ماوس را جابهجا نمیکند.
-macnoresize
- برای کارساز بومی MacOSX، حتی در صورت تشخیص تغییر وضوح یا عمق رنگ صفحه، اندازه بافر فریم (framebuffer) را تغییر نداده و بازنشانی نمیکند.
-maciconanim n
- برای کارساز بومی MacOSX، مقدار n را بر حسب میلیثانیه برای مدتزمان پویانمایی کمینهسازی/بزرگنمایی پنجره (iconify/deiconify) تنظیم میکند. در حالت -ncache این مقدار در صورت امکان برای رد کردن پویانمایی استفاده خواهد شد (پیشفرض ۴۰۰).
-macmenu
- برای کارساز بومی MacOSX، در حالت حافظه پنهان سمت کلاینت -ncache، تلاش میکند منوهای پایینافتادنی (pull down menus) را در حافظه پنهان نگه دارد (به دلیل دارا بودن محوشدگیهای پویانماییشده و غیره بینقص نیست).
-macuskbd
- برای کارساز بومی MacOSX، از کد اصلی درج کلیدها بر اساس صفحهکلید US استفاده میکند.
-macnoopengl
- برای کارساز بومی MacOSX، از OpenGL برای ضبط صفحه استفاده نمیکند، بلکه از روش اصلی و منسوخشده دسترسی به حافظه خام استفاده میکند: addr = CGDisplayBaseAddress().
-macnorawfb
- برای کارساز بومی MacOSX، روش ضبط صفحه از نشانی حافظه خام را غیرفعال میکند.
- نکته MACOSX: چند رابط منسوخشده در MacOSX برای تزریق رویدادهای صفحهکلید و ماوس وجود دارد و روش دسترسی به حافظه خام نیز منسوخ شده است (با این حال، در صورت در دسترس بودن، OpenGL به دلیل سرعت بیشتر ترجیح داده خواهد شد). میتوان با تعیین -DX11VNC_MACOSX_NO_DEPRECATED=1 در CPPFLAGS در زمان کامپایل، عدم استفاده از رابطهای منسوخ را اجباری کرد. یا برای غیرفعال کردن تکتک آنها: -DX11VNC_MACOSX_NO_DEPRECATED_LOCALEVENTS=1، -DX11VNC_MACOSX_NO_DEPRECATED_POSTEVENTS=1 یا -DX11VNC_MACOSX_NO_DEPRECATED_FRAMEBUFFER=1 در زمان اجرا، برای آزمایش و راهحلهای موقت، میتوان آنها را با استفاده از موارد زیر غیرفعال کرد: -env X11VNC_MACOSX_NO_DEPRECATED=1 -env X11VNC_MACOSX_NO_DEPRECATED_LOCALEVENTS=1 -env X11VNC_MACOSX_NO_DEPRECATED_POSTEVENTS=1 یا -env X11VNC_MACOSX_NO_DEPRECATED_FRAMEBUFFER=1 نکته: در صورت انجام هر یک از این موارد برای ورودی ماوس، در حال حاضر همه چیز کار نمیکند؛ به عنوان مثال دوبار کلیکها و جابهجایی قابسیمی (wireframing). همچنین تغییرات وضوح صفحه و عمق پیکسل بهطور خودکار شناسایی نخواهد شد مگر اینکه رابطهای بافر فریم منسوخشده مجاز باشند.
- برعکس، اگر روی دستگاه قدیمیتری کامپایل میکنید که برخی از رابطهای جدیدتر را ندارد، ممکن است نیاز به تعیین موارد زیر داشته باشید: -DX11VNC_MACOSX_NO_CGEVENTCREATESCROLLWHEELEVENT -DX11VNC_MACOSX_NO_CGEVENTCREATEMOUSEEVENT یا -DX11VNC_MACOSX_NO_CGEVENTCREATEKEYBOARDEVENT. از -DX11VNC_MACOSX_USE_GETMAINDEVICE برای بازگرداندن رابط بسیار قدیمی QuickDraw GetMainDevice() استفاده کنید (نادر...).
-gui [gui-opts]
- یک واسط گرافیکی (GUI) ساده بر پایه tcl/tk را بر اساس گزینههای کنترل از راه دور -remote/-query که در ادامه شرح داده شدهاند، راهاندازی میکند. نیازمند این است که برنامه «wish» روی سیستم نصب باشد. «gui-opts» الزامی نیست: حالت پیشفرض راهاندازی هم واسط گرافیکی کامل و هم x11vnc است، بهطوری که واسط گرافیکی روی نمایشگر X مشخصشده در متغیر محیطی DISPLAY ظاهر میشود.
- عبارت «gui-opts» میتواند فهرستی از موارد جداشده با کاما باشد. در حال حاضر این نوع موارد وجود دارند: ۱) حالت واسط گرافیکی، ۲) «سادگی» واسط گرافیکی، ۳) نمایشگر X که واسط گرافیکی باید روی آن نمایش یابد، ۴) حالت «سینی سیستم» (tray) یا «آیکون» (icon)، و ۵) مختصات هندسی (geometry) واسط گرافیکی.
- ۱) حالت واسط گرافیکی میتواند «start»، «conn» یا «wait» باشد. «start» حالت پیشفرض فوق است و نیازی به ذکر آن نیست. «conn» یعنی x11vnc را بهطور خودکار راهاندازی نکن، بلکه صرفاً برای اتصال به یک فرایند موجود x11vnc تلاش کن. «wait» یعنی فقط واسط گرافیکی را اجرا کن و نه هیچ چیز دیگر (بعداً از طریق واسط گرافیکی دستور راهاندازی x11vnc یا اتصال به یک فرایند موجود را صادر خواهید کرد).
- ۲) سادگی واسط گرافیکی بهطور پیشفرض غیرفعال است (یک واسط گرافیکی حرفهای با تمام گزینهها نمایش داده میشود). برای شروع با محیطی سادهتر، رشته «simple» را ارسال کنید («ez» یک نام مستعار برای این مورد است). پس از شروع واسط گرافیکی میتوانید با رفتن به «Misc -> simple_gui» بین این دو حالت جابهجا شوید.
- ۳) به سردرگمی احتمالی در رابطه با دو نمایشگر X بالقوه متفاوت توجه کنید: x11vnc یکی را پایش (poll) میکند، اما ممکن است بخواهید واسط گرافیکی در دیگری ظاهر شود. برای مثال، اگر با ssh متصل شدهاید و x11vnc هنوز در حال اجرا نیست، ممکن است بخواهید واسط گرافیکی از طریق نمایشگر X هدایتشده با ssh (مانند localhost:10) به شما بازگردد.
- اگر نمایشگر X واسط گرافیکی را در «gui-opts» مشخص نکنید، متغیر محیطی DISPLAY و گزینه -display (به همین ترتیب) بررسی میشوند. در رابطه با نمایشگر X کارساز x11vnc که واسط گرافیکی تلاش میکند با آن ارتباط برقرار کند، ابتدا -display و سپس DISPLAY امتحان میشود. برای مثال، «x11vnc -display :0 -gui otherhost:0»، فرایند x11vnc را که در حال پایش :0 است از راه دور کنترل کرده و واسط گرافیکی را روی otherhost:0 نمایش میدهد. حالت «tray/icon» در ادامه این اولویت را برعکس میکند و ترجیح میدهد روی نمایشگر x11vnc نمایش دهد.
- ۴) هنگامی که «tray» یا «icon» مشخص میشود، واسط گرافیکی خود را به صورت یک آیکون کوچک با رفتار متداول «سینی سیستم» (system tray) یا «برنامک بارانداز» (dock applet) ارائه میدهد. رنگ آیکون نشاندهنده وضعیت (کلاینتهای متصل) است و همچنین وضعیت در قالب حباب راهنما وجود دارد. کلیک روی آیکون منویی را ارائه میدهد که از طریق آن ویژگیها و غیره قابل تنظیم است و واسط گرافیکی کامل تحت گزینه «Advanced» در دسترس خواهد بود. برای عملکرد کامل، حالت واسط گرافیکی باید «start» باشد (پیشفرض).
- توجه داشته باشید که حالت سینی یا آیکون، گزینه -forever در x11vnc را ضمنی فرض میکند (اگر کارساز x11vnc همراه با واسط گرافیکی راهاندازی شود)، مگر اینکه -connect یا -connect_or_exit مشخص شده باشد. بنابراین x11vnc (و واسط گرافیکی tray/icon) پس از قطع اتصال اولین کلاینت، منتظر اتصالات بیشتر خواهند ماند. اگر فقط یک اتصال نمایشگر میخواهید، گزینه -once را اضافه کنید.
- برای «icon»، واسط گرافیکی صرفاً یک پنجره مستقل کوچک است. برای «tray»، در صورت امکان تلاش خواهد کرد خود را در «سینی سیستم» جاسازی کند. اگر «=setpass» ضمیمه شود، در هنگام راهاندازی از کاربر X11 درخواست میشود گذرواژه نشست VNC را تنظیم کند. اگر «=<hexnumber>» ضمیمه شود، آن آیکون تلاش میکند در پنجره مشخصشده توسط مقدار هگزادسیمال جاسازی شود. برای غیرفعال کردن واسط گرافیکی کامل از «=noadvanced» استفاده کنید. (برای مشخص کردن بیش از یک مورد، از علامت «+» استفاده کنید). به عنوان مثال: -gui tray=setpass و -gui icon=0x3600028
- سایر حالتها: «full»، پیشفرض است و نیازی به تعیین ندارد. «-gui none»، عدم نمایش واسط گرافیکی، برای لغو تنظیمی در ~/.x11vncrc و غیره مفید است.
- ۵) وقتی «geom=+X+Y» مشخص میشود، آن مختصات به پنجره سطحبالای واسط گرافیکی منتقل میشود. این پنجره در حالت icon/tray همان آیکون است و در غیر این صورت کل واسط گرافیکی خواهد بود. همچنین میتوانید عرض و ارتفاع، یعنی WxH+X+Y را تعیین کنید، اما توصیه نمیشود. در حالت «tray» مختصات هندسی نادیده گرفته میشود مگر اینکه مدیر سینی سیستم در حال اجرا به نظر نرسد. میتوان استفاده از موردی شبیه به «-gui tray,geom=+4000+4000» را به همراه یک مدیر نمایش (display manager) متصور شد تا واسط گرافیکی تا زمانی که شخصی وارد نشده مخفی بماند...
- ترفندهای بیشتر برای آیکون: «icon=minimal» آیکونی را فقط حاوی شماره نمایشگر VNC ارائه میدهد. همچنین میتوانید قلم را با «...=iconfont» تنظیم کنید. نمونه زیر میتواند مفید باشد: «-gui icon=minimal,iconfont=5x8,geom=24x10+0-0»
- مثالهای عمومی از گزینه -gui: «x11vnc -gui»، «x11vnc -gui ez»، «x11vnc -gui localhost:10»، «x11vnc -gui conn,host:0»، «x11vnc -gui tray,ez»، «x11vnc -gui tray=setpass»
- اگر قصد ندارید x11vnc را از طریق واسط گرافیکی راهاندازی کنید (یعنی فقط قصد کنترل از راه دور یک فرایند موجود را دارید)، تا زمانی که مجوزهای X و غیره اجازه ارتباط بین آن دو را بدهد، فرایند واسط گرافیکی میتواند روی دستگاهی متفاوت از کارساز x11vnc اجرا شود.
- قلمها (FONTS): در برخی سیستمها قلمهای tk ممکن است بسیار کوچک، دندانهدار یا به نحوی ناخوانا باشند. ۴ متغیر محیطی وجود دارد که میتوانید برای قلم tk مورد نظر خود تنظیم کنید:
- X11VNC_FONT_BOLD قلم اصلی برای منوها و دکمهها. X11VNC_FONT_FIXED قلم برای متن با عرض ثابت.
- X11VNC_FONT_BOLD_SMALL قلم آیکون سینی سیستم. X11VNC_FONT_REG_SMALL قلم منوی آیکون سینی سیستم.
- دو مورد آخر فقط برای حالت آیکون سینی سیستم اعمال میشوند..IP چند مثال در اینجا آمده است:
- -env X11VNC_FONT_BOLD='Helvetica -16 bold' -env X11VNC_FONT_FIXED='Courier -14' -env X11VNC_FONT_REG_SMALL='Helvetica -12'
- میتوانید خطوطی مانند موارد بالا را (بدون علامتهای نقلقول) در فایل ~/.x11vncrc خود قرار دهید تا نیازی به تعیین آنها در خط فرمان x11vnc نباشد.
-remote command
- کنترل از راه دور برخی جنبههای یک سرور x11vnc در حال اجرا. «-R» و «-r» نامهای مستعار برای «-remote» هستند. پس از اینکه دستور کنترل از راه دور به سرور در حال اجرا ارسال شد، دستور 'x11vnc -remote ...' خارج میشود. اغلب میتوانید از دستور -query (پایینتر را ببینید) استفاده کنید تا ببینید آیا سرور x11vnc دستور -remote شما را پردازش کرده است یا خیر.
- کانال ارتباطی پیشفرض از طریق ویژگیهای X (بهویژه X11VNC_REMOTE) است، بنابراین این دستور باید با تنظیمات صحیح برای DISPLAY و احتمالاً XAUTHORITY اجرا شود تا به سرور X متصل شده و ویژگی را تنظیم کند. در غیر این صورت، از گزینههای -display و -auth برای تنظیم مقادیر صحیح آنها استفاده کنید. سرور در حال اجرا نباید از گزینه -novncconnect استفاده کند زیرا آن گزینه کانال ارتباطی را غیرفعال میکند. برای کانالهای جایگزین به ادامه مراجعه کنید.
- برای مثال: دستور 'x11vnc -remote stop' (که مشابه 'x11vnc -R stop' است) سرور x11vnc را میبندد. دستور 'x11vnc -R shared' اتصالات اشتراکی را فعال میکند و 'x11vnc -R scale:3/4' مقیاس میزکار را تغییر میدهد.
- برای استفاده از یک نام متفاوت برای ویژگی X11 (برای مثال جهت داشتن کانالهای ارتباطی مجزا برای چندین پردازش x11vnc در یک نمایشگر یکسان)، متغیر محیطی X11VNC_REMOTE را روی رشته مورد نظر خود تنظیم کنید، به عنوان مثال: -env X11VNC_REMOTE=X11VNC_REMOTE_12345. هر دو طرف کانال باید از یک نام یکتای یکسان استفاده کنند.
- برای اجرای دستهای از دستورها به صورت متوالی، از قالبی مانند این استفاده کنید: x11vnc -R 'script:firstcmd;secondcmd;...'
- از x11vnc -R script:file=/path/to/file برای خواندن دستورها از یک فایل استفاده کنید (میتواند چندخطی باشد و از نویسه '#' به شیوه معمول برای کامنتگذاری استفاده کند. برای جداسازی هر دستور همچنان باید از جداکننده ';' استفاده شود.)
- برای تلاش نکردن جهت برقراری ارتباط با یک فرایند x11vnc دیگر و در عوض اجرای مستقیم دستور (یا پرسوجو)، پیشوند "DIRECT:" را به ابتدای دستور اضافه کنید.
- دستورهای -remote/-R زیر پشتیبانی میشوند:
- stop خاتمه دادن به کار سرور؛ معادل "quit" ،"exit" یا "shutdown".
- ping بررسی اینکه آیا سرور x11vnc پاسخ میدهد یا خیر. مقدار بازگشتی: ans=ping:<display>
- ping:mystring مانند بالا، اما با استفاده از رشته یکتای خودتان. مقدار بازگشتی: ans=ping:mystring:<xdisplay>
- blacken تلاش برای ارسال بهروزرسانی فریمبافر (fb) سیاهرنگ به همه کلاینتها (به دلیل مسائل زمانبندی ممکن است یک کلاینت آن را دریافت نکند). معادل "zero"، و همچنین "zero:x1,y1,x2,y2" برای یک مستطیل.
- refresh ارسال کل fb به همه کلاینتها.
- reset ایجاد مجدد fb، حافظه نظرسنجی (polling memory) و غیره.
- id:windowid تنظیم پنجره -id به "windowid". خالی یا "root" برای بازگشت به پنجره ریشه (root window).
- sid:windowid تنظیم پنجره -sid به "windowid".
- id_cmd:cmd دستورها: raise ،lower ،map ،unmap ،iconify، move:dXdY ،resize:dWdH ،geom:WxH+X+Y. مقادیر dX، dY ،dW و dH باید دارای "+" یا "-" در ابتدا باشند، مانند: move:-30+10 resize:+20+35 همچنین: wm_delete ،wm_name:string و icon_name:string. همچنین id_cmd:win=N:cmd
- waitmapped صبر کردن تا زمانی که زیرپنجره نگاشت (map) شود.
- nowaitmapped صبر نکردن برای نگاشت شدن زیرپنجره.
- clip:WxH+X+Y تنظیم حالت -clip به "WxH+X+Y".
- flashcmap فعال کردن حالت -flashcmap.
- noflashcmap غیرفعال کردن حالت -flashcmap.
- shiftcmap:n تنظیم -shiftcmap به n.
- notruecolor فعال کردن حالت -notruecolor.
- truecolor غیرفعال کردن حالت -notruecolor.
- overlay فعال کردن حالت -overlay (در صورت امکان).
- nooverlay غیرفعال کردن حالت -overlay.
- overlay_cursor در حالت -overlay، فعال کردن رسم مکاننما.
- overlay_nocursor غیرفعال کردن رسم مکاننما؛ معادل nooverlay_cursor.
- 8to24 فعال کردن حالت -8to24 (در صورت امکان).
- no8to24 غیرفعال کردن حالت -8to24.
- 8to24_opts:str تنظیم گزینههای -8to24 به "str".
- 24to32 فعال کردن حالت -24to32 (در صورت امکان).
- no24to32 غیرفعال کردن حالت -24to32.
- visual:vis تنظیم -visual به "vis".
- scale:frac تنظیم -scale به "frac".
- scale_cursor:f تنظیم -scale_cursor به "f".
- viewonly فعال کردن حالت -viewonly.
- noviewonly غیرفعال کردن حالت -viewonly.
- shared فعال کردن حالت -shared.
- noshared غیرفعال کردن حالت -shared.
- forever فعال کردن حالت -forever.
- noforever غیرفعال کردن حالت -forever.
- timeout:n بازنشانی -timeout به n؛ اگر در حال حاضر هیچ کلاینتی وجود نداشته باشد، برنامه خارج میشود مگر اینکه ظرف n ثانیه آینده کلاینتی متصل شود.
- tightfilexfer فعال کردن انتقال فایل برای کلاینتهای جدید.
- notightfilexfer غیرفعال کردن انتقال فایل برای کلاینتهای جدید.
- ultrafilexfer فعال کردن انتقال فایل برای کلاینتها.
- noultrafilexfer غیرفعال کردن انتقال فایل برای کلاینتها.
- rfbversion:n.m تنظیم -rfbversion برای کلاینتهای جدید.
- http فعال کردن اتصالات کلاینت http.
- nohttp غیرفعال کردن اتصالات کلاینت http.
- deny رد کردن هرگونه اتصال جدید؛ معادل "lock".
- nodeny اجازه دادن به اتصالات جدید؛ معادل "unlock".
- avahi فعال کردن اعلان سرویس avahi.
- noavahi غیرفعال کردن اعلان سرویس avahi.
- mdns فعال کردن اعلان سرویس avahi.
- nomdns غیرفعال کردن اعلان سرویس avahi.
- zeroconf فعال کردن اعلان سرویس avahi.
- nozeroconf غیرفعال کردن اعلان سرویس avahi.
- connect:host برقراری اتصال معکوس به میزبان؛ "host" میتواند فهرستی از میزبانها یا host:port با جداکننده کاما باشد. -connect را ببینید. رمزهای عبور مانند اتصالات مستقیم مورد نیاز هستند. به X11VNC_REVERSE_CONNECTION_NO_AUTH=1 مراجعه کنید.
- disconnect:host قطع اتصال کلاینتها از "host"؛ معادل "close:host". برای بستن همه کلاینتهای فعلی از میزبان "all" استفاده کنید. اگر شناسه هگزادسیمال داخلی کلاینت مانند 0x3 را میدانید (که توسط «-query clients» و RFB_CLIENT_ID بازگردانده میشود)، میتوانید از آن نیز استفاده کنید.
- proxy:host:port تنظیم پروکسی اتصال معکوس (برای غیرفعال کردن خالی بگذارید).
- allowonce:host تنها برای اتصال بعدی، اجازه اتصال از "host" را بدهید. در حالت -ssl دو اتصال مجاز است (یعنی Fetch Cert)، مگر اینکه X11VNC_NO_SSL_ALLOW_TWICE=1 باشد.
- allow:hostlist تنظیم فهرست -allow به "hostlist" (جدا شده با کاما). -allow و -localhost را ببینید. همراه با -allow /path/to/file استفاده نشود. برای افزودن یک میزبان از "+host" و برای حذف یک میزبان از "-host" استفاده کنید..IP localhost فعالسازی حالت -localhost.
- nolocalhost غیرفعالسازی حالت -localhost.
- listen:str تنظیم -listen روی str؛ خالی برای غیرفعالسازی.
- noipv6 فعالسازی حالت -noipv6.
- ipv6 غیرفعالسازی حالت -noipv6.
- noipv4 فعالسازی حالت -noipv4.
- ipv4 غیرفعالسازی حالت -noipv4.
- 6 فعالسازی حالت شنود IPv6 با -6.
- no6 غیرفعالسازی حالت شنود IPv6 با -6.
- lookup غیرفعالسازی حالت -nolookup.
- nolookup فعالسازی حالت -nolookup.
- lookup غیرفعالسازی حالت -nolookup.
- input:str تنظیم -input روی "str"؛ خالی برای غیرفعالسازی.
- grabkbd فعالسازی حالت -grabkbd.
- nograbkbd غیرفعالسازی حالت -grabkbd.
- grabptr فعالسازی حالت -grabptr.
- nograbptr غیرفعالسازی حالت -grabptr.
- grabalways فعالسازی حالت -grabalways.
- nograbalways غیرفعالسازی حالت -grabalways.
- grablocal:n تنظیم -grablocal روی n.
- client_input:str تنظیم ورودیهای K، M و B مربوط به -input برای هر کلاینت بهطور مجزا. انتخاب کلاینت مانند حالت قطع ارتباط صورت میگیرد؛ برای نمونه: client_input:host:MB یا client_input:0x2:K
- accept:cmd تنظیم -accept روی "cmd" (خالی برای غیرفعالسازی).
- afteraccept:cmd تنظیم -afteraccept (خالی برای غیرفعالسازی).
- gone:cmd تنظیم -gone روی "cmd" (خالی برای غیرفعالسازی).
- noshm فعالسازی حالت -noshm.
- shm غیرفعالسازی حالت -noshm (یعنی استفاده از shm).
- flipbyteorder فعالسازی حالت -flipbyteorder؛ ممکن است برای عملکرد آن لازم باشد noshm را تنظیم کنید.
- noflipbyteorder غیرفعالسازی حالت -flipbyteorder.
- onetile فعالسازی حالت -onetile (ممکن است برای عملکرد آن لازم باشد shm را تنظیم کنید).
- noonetile غیرفعالسازی حالت -onetile.
- solid فعالسازی حالت -solid.
- nosolid غیرفعالسازی حالت -solid.
- solid_color:color تنظیم رنگ -solid (و اِعمال آن).
- blackout:str تنظیم -blackout روی "str" (خالی برای غیرفعالسازی). برای ساختار "str" به -blackout مراجعه کنید (اساساً: WxH+X+Y,...) برای افزودن یک مستطیل از "+WxH+X+Y" و برای حذف یکی از "-WxH+X+Y" استفاده کنید.
- xinerama فعالسازی حالت -xinerama (در صورت امکان).
- noxinerama غیرفعالسازی حالت -xinerama.
- xtrap فعالسازی حالت ورودی -xtrap (در صورت امکان).
- noxtrap غیرفعالسازی حالت ورودی -xtrap.
- xrandr فعالسازی حالت -xrandr (در صورت امکان).
- noxrandr غیرفعالسازی حالت -xrandr.
- xrandr_mode:mode تنظیم حالت -xrandr روی "mode".
- rotate:mode تنظیم حالت -rotate روی "mode".
- padgeom:WxH تنظیم -padgeom روی WxH (خالی برای غیرفعالسازی). اگر WxH برابر با "force" یا "do" باشد، fb با هندسهٔ فاصلهگذاریشده بلافاصله اِعمال میشود.
- quiet فعالسازی حالت -quiet.
- noquiet غیرفعالسازی حالت -quiet.
- modtweak فعالسازی حالت -modtweak.
- nomodtweak فعالسازی حالت -nomodtweak.
- xkb فعالسازی حالت modtweak مربوط به -xkb.
- noxkb غیرفعالسازی حالت modtweak مربوط به -xkb.
- capslock فعالسازی حالت -capslock.
- nocapslock غیرفعالسازی حالت -capslock.
- skip_lockkeys فعالسازی حالت -skip_lockkeys.
- noskip_lockkeys غیرفعالسازی حالت -skip_lockkeys.
- skip_keycodes:str فعالسازی -xkb -skip_keycodes "str".
- sloppy_keys فعالسازی حالت -sloppy_keys.
- nosloppy_keys غیرفعالسازی حالت -sloppy_keys.
- skip_dups فعالسازی حالت -skip_dups.
- noskip_dups غیرفعالسازی حالت -skip_dups.
- add_keysyms فعالسازی حالت -add_keysyms.
- noadd_keysyms توقف افزودن keysymها. موارد اضافه شده همچنان هنگام خروج حذف خواهند شد.
- clear_mods فعالسازی حالت -clear_mods و پاکسازی آنها.
- noclear_mods غیرفعالسازی حالت -clear_mods.
- clear_keys فعالسازی حالت -clear_keys و پاکسازی آنها.
- noclear_keys غیرفعالسازی حالت -clear_keys.
- clear_locks انجام عملیات clear_locks.
- clear_all انجام عملیات clear_all.
- keystate درخواست از x11vnc برای چاپ وضعیت جاری کلیدها (keystate).
- remap:str تنظیم -remap روی "str" (خالی برای غیرفعالسازی). برای ساختار "str" به -remap مراجعه کنید (اساساً: key1-key2,key3-key4,...) برای افزودن یک نگاشت کلید از "+key1-key2" و برای حذف از "-key1-key2" استفاده کنید.
- norepeat فعالسازی حالت -norepeat.
- repeat غیرفعالسازی حالت -norepeat.
- nofb فعالسازی حالت -nofb.
- fb غیرفعالسازی حالت -nofb.
- bell فعالسازی زنگ (در صورت پشتیبانی).
- nobell غیرفعالسازی زنگ.
- sendbell به صدا درآوردن زنگ در همین لحظه.
- nosel فعالسازی حالت -nosel.
- sel غیرفعالسازی حالت -nosel.
- noprimary فعالسازی حالت -noprimary.
- primary غیرفعالسازی حالت -noprimary.
- nosetprimary فعالسازی حالت -nosetprimary.
- setprimary غیرفعالسازی حالت -nosetprimary.
- noclipboard فعالسازی حالت -noclipboard.
- clipboard غیرفعالسازی حالت -noclipboard.
- nosetclipboard فعالسازی حالت -nosetclipboard.
- setclipboard غیرفعالسازی حالت -nosetclipboard.
- seldir:str تنظیم -seldir روی "str".
- resend_cutbuffer ارسال دوبارهٔ جدیدترین رونوشت CUTBUFFER0.
- resend_clipboard ارسال دوبارهٔ جدیدترین رونوشت CLIPBOARD.
- resend_primary ارسال دوبارهٔ جدیدترین رونوشت PRIMARY.
- cursor:mode فعالسازی -cursor با "mode".
- show_cursor فعالسازی نمایش مکاننما.
- noshow_cursor غیرفعالسازی نمایش مکاننما (مشابه "nocursor")..IP cursor_drag فعالسازی تغییرات مکاننما هنگام کشیدن (drag).
- nocursor_drag غیرفعالسازی تغییرات مکاننما هنگام کشیدن (drag).
- arrow:n تنظیم -arrow روی حالت جایگزین n.
- xfixes فعالسازی حالت شکل مکاننمای xfixes.
- noxfixes غیرفعالسازی حالت شکل مکاننمای xfixes.
- alphacut:n تنظیم -alphacut روی n.
- alphafrac:f تنظیم -alphafrac روی f.
- alpharemove فعالسازی حالت -alpharemove.
- noalpharemove غیرفعالسازی حالت -alpharemove.
- alphablend غیرفعالسازی حالت -noalphablend.
- noalphablend فعالسازی حالت -noalphablend.
- cursorshape غیرفعالسازی حالت -nocursorshape.
- nocursorshape فعالسازی حالت -nocursorshape.
- cursorpos غیرفعالسازی حالت -nocursorpos.
- nocursorpos فعالسازی حالت -nocursorpos.
- xwarp فعالسازی حالت -xwarppointer.
- noxwarp غیرفعالسازی حالت -xwarppointer.
- always_inject فعالسازی حالت -always_inject.
- noalways_inject غیرفعالسازی حالت -always_inject.
- buttonmap:str تنظیم -buttonmap روی "str"، خالی برای غیرفعالسازی
- dragging غیرفعالسازی حالت -nodragging.
- nodragging فعالسازی حالت -nodragging.
- ncache فعالسازی مجدد حالت -ncache.
- noncache غیرفعالسازی حالت -ncache.
- ncache_size:n تنظیم اندازهٔ -ncache روی n.
- ncache_cr فعالسازی حالت -ncache_cr.
- noncache_cr غیرفعالسازی حالت -ncache_cr.
- ncache_no_moveraise فعالسازی حالت no_moveraise.
- noncache_no_moveraise غیرفعالسازی حالت no_moveraise.
- ncache_no_dtchange فعالسازی حالت ncache_no_dtchange.
- noncache_no_dtchange غیرفعالسازی حالت ncache_no_dtchange.
- ncache_old_wm فعالسازی حالت ncache_old_wm.
- noncache_old_wm غیرفعالسازی حالت ncache_old_wm.
- ncache_no_rootpixmap فعالسازی ncache_no_rootpixmap.
- noncache_no_rootpixmap غیرفعالسازی ncache_no_rootpixmap.
- ncache_reset_rootpixmap بررسی مجدد root pixmap، معادل ncrp
- ncache_keep_anims فعالسازی ncache_keep_anims.
- noncache_keep_anims غیرفعالسازی ncache_keep_anims.
- ncache_pad:n تنظیم -ncache_pad روی n.
- wireframe فعالسازی حالت -wireframe. همانند "wf"
- nowireframe غیرفعالسازی حالت -wireframe. همانند "nowf"
- wireframe:str فعالسازی رشتهٔ حالت -wireframe.
- wireframe_mode:str فعالسازی رشتهٔ حالت -wireframe.
- wireframelocal فعالسازی wireframelocal. همانند "wfl"
- nowireframe غیرفعالسازی wireframelocal. همانند "nowfl"
- wirecopyrect:str تنظیم رشتهٔ -wirecopyrect. همانند "wcr:"
- scrollcopyrect:str تنظیم رشتهٔ -scrollcopyrect. همانند "scr"
- noscrollcopyrect غیرفعالسازی حالت -scrollcopyrect. همانند "noscr"
- scr_area:n تنظیم -scr_area روی n
- scr_skip:list تنظیم -scr_skip روی "list"
- scr_inc:list تنظیم -scr_inc روی "list"
- scr_keys:list تنظیم -scr_keys روی "list"
- scr_term:list تنظیم -scr_term روی "list"
- scr_keyrepeat:str تنظیم -scr_keyrepeat روی "str"
- scr_parms:str تنظیم پارامترهای -scr_parms.
- fixscreen:str تنظیم -fixscreen روی "str".
- noxrecord غیرفعالسازی تمام استفادهها از افزونهٔ RECORD.
- xrecord فعالسازی استفاده از افزونهٔ RECORD.
- reset_record بازنشانی افزونهٔ RECORD (در صورت دردسترس بودن).
- pointer_mode:n تنظیم -pointer_mode روی n. همانند "pm"
- input_skip:n تنظیم -input_skip روی n.
- allinput فعالسازی استفاده از حالت -allinput.
- noallinput غیرفعالسازی استفاده از حالت -allinput.
- input_eagerly فعالسازی استفاده از حالت -input_eagerly.
- noinput_eagerly غیرفعالسازی استفاده از حالت -input_eagerly.
- ssltimeout:n تنظیم -ssltimeout روی n.
- speeds:str تنظیم -speeds روی str.
- wmdt:str تنظیم -wmdt روی str.
- debug_pointer فعالسازی -debug_pointer، همانند "dp"
- nodebug_pointer غیرفعالسازی -debug_pointer، همانند "nodp"
- debug_keyboard فعالسازی -debug_keyboard، همانند "dk"
- nodebug_keyboard غیرفعالسازی -debug_keyboard، همانند "nodk"
- keycode:n تزریق کلید 'keycode' (از طریق -pk در xmodmap)
- keycode:n,down تزریق 'keycode' (با مقدار down=0,1)
- keysym:str تزریق کلید 'keysym' (عدد یا نام)
- keysym:str,down تزریق 'keysym' (با مقدار down=0,1)
- ptr:x,y,mask تزریق رویداد اشارهگر x، y و button-mask
- fakebuttonevent:button,down فراخوانی مستقیم XTestFakeButtonEvent.
- sleep:t خوابیدن به مدت زمان ممیز شناور t.
- get_xprop:p دریافت مشخصهٔ X با نام 'p'.
- set_xprop:p:val تنظیم مشخصهٔ X با نام 'p' به مقدار 'val'. p -> id=NNN:p برای شناسه پنجره هگز یا دهدهی.
- wininfo:id دریافت اطلاعات درباره شناسه پنجره X. برای پنجره ریشه از 'root' و برای فرزندان از +id استفاده کنید.
- grab_state دریافت وضعیت تسخیر (grab) اشارهگر و صفحهکلید.
- pointer_pos چاپ موقعیت x,y مکاننما از XQueryPointer.
- pointer_x چاپ موقعیت x مکاننما از XQueryPointer.
- pointer_y چاپ موقعیت y مکاننما از XQueryPointer.
- pointer_same چاپ وضعیت قرار داشتن اشارهگر در همان صفحه از XQueryPointer.
- pointer_root چاپ پنجره ریشه فعلی اشارهگر از XQueryPointer.
- pointer_mask چاپ ماسک دکمهها و کلیدهای تبدیل (mods) از XQueryPointer.
- mouse_x چاپ موقعیت مکاننما از دید x11vnc.
- mouse_y چاپ موقعیت مکاننما از دید x11vnc.
- noop هیچ کاری انجام نده.
- defer:n تنظیم -defer به n میلیثانیه، همانند deferupdate:n
- wait:n تنظیم -wait به n میلیثانیه.
- extra_fbur:n تنظیم -extra_fbur روی n.
- wait_ui:f تنظیم ضریب -wait_ui روی f.
- setdefer:n تنظیم -setdefer روی -2، -1، 0، 1 یا 2.
- wait_bog غیرفعالسازی حالت -nowait_bog.
- nowait_bog فعالسازی حالت -nowait_bog..IP slow_fb:f تنظیم -slow_fb روی f ثانیه.
- xrefresh:f تنظیم -xrefresh روی f ثانیه.
- readtimeout:n تنظیم مهلت زمانی خواندن روی n ثانیه.
- nap فعالسازی حالت -nap.
- nonap غیرفعالسازی حالت -nap.
- sb:n تنظیم -sb روی n ثانیه، همانند screen_blank:n
- fbpm غیرفعالسازی حالت -nofbpm.
- nofbpm فعالسازی حالت -nofbpm.
- dpms غیرفعالسازی حالت -nodpms.
- nodpms فعالسازی حالت -nodpms.
- forcedpms فعالسازی حالت -forcedpms.
- noforcedpms غیرفعالسازی حالت -forcedpms.
- clientdpms فعالسازی حالت -clientdpms.
- noclientdpms غیرفعالسازی حالت -clientdpms.
- noserverdpms فعالسازی حالت -noserverdpms.
- serverdpms غیرفعالسازی حالت -noserverdpms.
- noultraext فعالسازی حالت -noultraext.
- ultraext غیرفعالسازی حالت -noultraext.
- chatwindow فعالسازی حالت پنجره گفتگوی محلی.
- nochatwindow غیرفعالسازی حالت پنجره گفتگوی محلی.
- chaton آغاز گفتگو با استفاده از پنجره محلی.
- chatoff پایان گفتگو با استفاده از پنجره محلی.
- xdamage فعالسازی راهنماهای نظرسنجی xdamage.
- noxdamage غیرفعالسازی راهنماهای نظرسنجی xdamage.
- xd_area:A تنظیم حداکثر مساحت پیکسلی -xd_area روی "A"
- xd_mem:f تنظیم یادداری (remembrance) -xd_mem روی "f"
- fs:frac تنظیم کسر -fs روی "frac"، برای مثال 0.5
- gaps:n تنظیم -gaps روی n.
- grow:n تنظیم -grow روی n.
- fuzz:n تنظیم -fuzz روی n.
- snapfb فعالسازی حالت -snapfb.
- nosnapfb غیرفعالسازی حالت -snapfb.
- rawfb:str تنظیم حالت -rawfb روی "str".
- uinput_accel:f تنظیم uinput_accel روی f.
- uinput_thresh:n تنظیم uinput_thresh روی n.
- uinput_reset:n تنظیم uinput_reset روی n میلیثانیه.
- uinput_always:n تنظیم uinput_always روی 1/0.
- progressive:n تنظیم پارامتر ارتفاع برش (slice height) در -progressive از LibVNCServer روی n.
- desktop:str تنظیم نام -desktop روی str برای کلاینتهای جدید.
- rfbport:n تنظیم -rfbport روی n.
- macnosaver فعالسازی حالت -macnosaver.
- macsaver غیرفعالسازی حالت -macnosaver.
- macnowait فعالسازی حالت -macnowait.
- macwait غیرفعالسازی حالت -macnowait.
- macwheel:n تنظیم -macwheel روی n.
- macnoswap فعالسازی حالت کلید ماوس -macnoswap.
- macswap غیرفعالسازی حالت کلید ماوس -macnoswap.
- macnoresize فعالسازی حالت -macnoresize.
- macresize غیرفعالسازی حالت -macnoresize.
- maciconanim:n تنظیم -maciconanim روی n.
- macmenu فعالسازی حالت -macmenu.
- macnomenu غیرفعالسازی حالت -macmenu.
- macuskbd فعالسازی حالت -macuskbd.
- macnouskbd غیرفعالسازی حالت -macuskbd.
- httpport:n تنظیم -httpport روی n.
- httpdir:dir تنظیم -httpdir روی dir (و فعالسازی http).
- enablehttpproxy فعالسازی حالت -enablehttpproxy.
- noenablehttpproxy غیرفعالسازی حالت -enablehttpproxy.
- alwaysshared فعالسازی حالت -alwaysshared.
- noalwaysshared غیرفعالسازی حالت -alwaysshared. (ممکن است با سایر گزینهها تداخل داشته باشد)
- nevershared فعالسازی حالت -nevershared.
- nonevershared غیرفعالسازی حالت -nevershared. (ممکن است با سایر گزینهها تداخل داشته باشد)
- dontdisconnect فعالسازی حالت -dontdisconnect.
- nodontdisconnect غیرفعالسازی حالت -dontdisconnect. (ممکن است با سایر گزینهها تداخل داشته باشد)
- debug_xevents فعالسازی اشکالزدایی رویدادهای X.
- nodebug_xevents غیرفعالسازی اشکالزدایی رویدادهای X.
- debug_xdamage فعالسازی اشکالزدایی سازوکار X DAMAGE.
- nodebug_xdamage غیرفعالسازی اشکالزدایی سازوکار X DAMAGE.
- debug_wireframe فعالسازی اشکالزدایی سازوکار wireframe.
- nodebug_wireframe غیرفعالسازی اشکالزدایی سازوکار wireframe.
- debug_scroll فعالسازی اشکالزدایی سازوکار scrollcopy.
- nodebug_scroll غیرفعالسازی اشکالزدایی سازوکار scrollcopy.
- debug_tiles فعالسازی -debug_tiles
- nodebug_tiles غیرفعالسازی -debug_tiles
- debug_grabs فعالسازی -debug_grabs
- nodebug_grabs غیرفعالسازی -debug_grabs
- debug_sel فعالسازی -debug_sel
- nodebug_sel غیرفعالسازی -debug_sel
- debug_ncache فعالسازی -debug_ncache
- nodebug_ncache غیرفعالسازی -debug_ncache
- dbg فعالسازی پوسته خرابی -dbg
- nodbg غیرفعالسازی پوسته خرابی -dbg
- noremote غیرفعالسازی پردازش دستورات -remote؛ این قابلیت دوباره قابل فعالسازی نخواهد بود.
- bcx_xattach:str این دستور کنترل از راه دور برای استفاده همراه با برنامه BARCO xattach یا برنامه x2x است. هر دو برنامه برای به اشتراکگذاری «اشارهگر و صفحهکلید» میان نمایشگرهای مجزای X کاربرد دارند. بهطور کلی این دو نمایشگر معمولاً نزدیک هم هستند، مثلاً روی یک میز، و این قابلیت به کاربر امکان میدهد از یک اشارهگر و صفحهکلید واحد میان آنها استفاده کند. کاربر ماوس را به یک لبه حرکت میدهد و سپس به نظر میرسد نشانگر ماوس به صفحه نمایشگر دیگر «میپرد». بنابراین، این برنامه عملکرد یک سرور X واحد را برای دو صفحه نمایش (مانند :0.0 و :0.1) شبیهسازی میکند. تصور یک Xserver واحد با چندین صفحه نمایش، از طریق هدایت رویدادها به نمایشگر دوم با استفاده از افزونه XTEST حاصل میشود.
- آنچه دستور bcx_xattach در x11vnc انجام میدهد، اجرای برخی حرکات اشارهگر برای ترغیب (INDUCE) برنامه xattach/x2x جهت «پریدن» به نمایشگر دیگر است. در ادامه، نمایشگر 'master' به نمایشگری اطلاق میشود که در صورت داشتن 'focus'، اساساً کار دیگری جز پایش خروج ماوس از لبه انجام نمیدهد. نمایشگر 'slave' به نمایشگری اشاره دارد که پس از عبور از لبه در master، ماوس و صفحهکلید به آن هدایت میشوند. توجه داشته باشید که نسخه x11vnc اجراکننده دستور bcx_xattach باید حتماً به نمایشگر *master* متصل باشد.
- همچنین توجه داشته باشید زمانی که ورودی (از طریق XTEST) از نمایشگر master به نمایشگر slave هدایت میشود، اشارهگر و صفحهکلید نمایشگر master توسط xattach/x2x تسخیر (*grabbed*) میشوند. x11vnc میتواند از این اطلاعات برای اطمینان از انجام صحیح تغییر حالت master/slave استفاده کند. اگر گزینه "ifneeded" را مشخص کنید (پایین را ببینید) و وضعیت تسخیر (grab) اولیه همان وضعیت نهایی مورد نظر باشد، هیچ حرکت اشارهگری تزریق نمیشود و "DONE,GRAB_OK" بازگردانده میشود..IP رشتهٔ "str" باید شامل یکی از مقادیر "up"، "down"، "left" یا "right" باشد تا جهت «پرش» را مشخص کند. "str" همچنین باید حاوی یکی از مقادیر "master_to_slave" یا "slave_to_master" باشد تا نوع تغییر حالت ناشی از پرش را نشان دهد. میتوانید از "M2S" و "S2M" به عنوان نامهای مستعار کوتاهتر استفاده کنید.
- مقدار "str" میتواند فهرستی از گزینههای تنظیم دقیق اضافی باشد که با "+" از یکدیگر جدا شدهاند. گزینهٔ "shift=n" موقعیت تغییر مکان افست را نسبت به (0,0) مشخص میکند (پیشفرض 20). "final=x+y" موقعیت نهایی مکاننما را در پایان دنبالهٔ حرکتی معمولی تعیین میکند؛ پیشفرض 30+30. "extra_move=x+y" به معنای انجام یک حرکت نشانگر اضافی پس از "final" به سمت x+y است. "dt=n" زمان توقف (خواب) را بر حسب میلیثانیه بین حرکتهای نشانگر تنظیم میکند (پیشفرض: 40ms). "retry=n" حداکثر تعداد تلاشهای مجدد را در صورت شکست تغییر وضعیت تسخیر مشخص میکند. "ifneeded" به این معناست که اگر وضعیت اولیهٔ تسخیر همان وضعیت نهایی مورد نظر باشد، حرکتهای نشانگر اعمال نشوند. "nograbcheck" بدین معناست که بررسی نشود آیا وضعیت تسخیر طبق انتظار تغییر کرده است یا خیر و فقط حرکتهای نشانگر اعمال شوند (حالت پیشفرض، بررسی وضعیتهای تسخیر است).
- اگر "up" و غیره را برای bcx_xattach مشخص نکنید، هیچ تلاشی صورت نخواهد گرفت و دستور رشتهٔ FAIL,NO_DIRECTION_SPECIFIED را بازمیگرداند. اگر "master_to_slave" یا "M2S" و غیره را برای bcx_xattach تعیین نکنید، هیچ کاری انجام نخواهد شد و دستور رشتهٔ FAIL,NO_MODE_CHANGE_SPECIFIED را برمیگرداند.
- در غیر این صورت، رشتهٔ بازگشتی شامل "DONE" خواهد بود. اگر وضعیت تسخیر طبق انتظار تغییر کند (یا اگر "ifneeded" مشخص شده باشد و وضعیت اولیهٔ تسخیر از قبل همان مقدار دلخواه باشد)، این رشته "DONE,GRAB_OK" خواهد بود. اگر وضعیت اولیهٔ تسخیر نادرست باشد، اما وضعیت نهایی تسخیر درست باشد، "DONE,GRAB_FAIL_INIT" بازگردانده میشود. اگر وضعیت اولیه تسخیر درست باشد، اما وضعیت نهایی نادرست باشد، مقدار "DONE,GRAB_FAIL_FINAL" خواهد بود. اگر هر دو نادرست باشند، "DONE,GRAB_FAIL" بازمیگردد. در صورت شکست در تسخیر، در ادامهٔ رشته ":p1,k1-p2,k2" اضافه میشود که در آن p1,k1 بیانگر وضعیت اولیهٔ تسخیر نشانگر و صفحهکلید، و p2,k2 نشاندهندهٔ وضعیت نهایی آنها است. در صورت رخداد GRAB_FAIL یا GRAB_FAIL_FINAL، عملیات تا ۳ بار مجدداً تلاش خواهد شد؛ با تلاش برای بازنشانی وضعیت و اندکی وقفه بین هر تلاش. برای تنظیم تعداد تلاشهای مجدد، retry=n را قرار دهید، یا صفر بگذارید تا تلاش مجدد غیرفعال شود.
- مثالها: -R bcx_xattach:down+M2S -R bcx_xattach:up+S2M -R bcx_xattach:up+S2M+nograbcheck+dt=30 -R bcx_xattach:down+M2S+extra_move=100+100
- یا از -Q بهجای -R برای دریافت متن نتیجه استفاده کنید.
- پایان توضیحات bcx_xattach:str.
- دستور vncconnect(1) از توزیعهای استاندارد VNC نیز میتواند استفاده شود در صورتی که رشته دارای پیشوند "cmd=" باشد؛ مانند 'vncconnect cmd=stop'. در برخی شرایط، اگر xprop(1) از -set پشتیبانی کند، میتواند مورد استفاده قرار گیرد (پرسشهای متداول (FAQ) را ببینید).
- اگر "-connect /path/to/file" به سرور x11vnc در حال اجرا داده شده باشد، میتوان از آن فایل به عنوان یک کانال ارتباطی استفاده کرد (این تنها راه برای کنترل از راه دور یکی از چندین x11vnc است که یک نمایشگر X یکسان را بررسی/poll میکنند). کافی است دستور زیر را اجرا کنید: 'x11vnc -connect /path/to/file -remote ...' یا میتوانید مستقیماً از طریق چیزی شبیه به: "echo cmd=stop > /path/to/file" و غیره در فایل بنویسید.
-query variable
- مشابه -remote است، با این تفاوت که فقط مقدار variable را پرسوجو میکند. "-Q" نام مستعاری برای "-query" است. میتوان چندین پرسوجو را با جدا کردن متغیرها به وسیلهٔ کاما انجام داد؛ به عنوان مثال -query var1,var2. نتایج به صورت ans=var1:value1,ans=var2:value2,... در خروجی استاندارد بازمیگردند. اگر یک متغیر فقطخواندنی باشد، بهجای "ans=" با پیشوند "aro=" بازگردانده میشود.
- برخی از دستورات -remote صرفاً عملیاتی هستند و به عنوان متغیر معنایی ندارند؛ مانند "stop" یا "disconnect". در این موارد مقدار بازگشتی "N/A" است. برای ارسال مستقیم یک پرسوجو به مشخصهٔ X11VNC_REMOTE یا فایل ارتباطی، بهجای "cmd=..." از "qry=..." استفاده کنید.
- ans= stop quit exit shutdown ping resend_cutbuffer resend_clipboard resend_primary blacken zero refresh reset close disconnect id_cmd id sid waitmapped nowaitmapped clip flashcmap noflashcmap shiftcmap truecolor notruecolor overlay nooverlay overlay_cursor overlay_yescursor nooverlay_nocursor nooverlay_cursor nooverlay_yescursor overlay_nocursor 8to24 no8to24 8to24_opts 24to32 no24to32 visual scale scale_cursor viewonly noviewonly shared noshared forever noforever once timeout tightfilexfer notightfilexfer ultrafilexfer noultrafilexfer rfbversion deny lock nodeny unlock avahi mdns zeroconf noavahi nomdns nozeroconf connect proxy allowonce allow noipv6 ipv6 noipv4 ipv4 no6 6 localhost nolocalhost listen lookup nolookup accept afteraccept gone shm noshm flipbyteorder noflipbyteorder onetile noonetile solid_color solid nosolid blackout xinerama noxinerama xtrap noxtrap xrandr noxrandr xrandr_mode rotate padgeom quiet q noquiet modtweak nomodtweak xkb noxkb capslock nocapslock skip_lockkeys noskip_lockkeys skip_keycodes sloppy_keys nosloppy_keys skip_dups noskip_dups add_keysyms noadd_keysyms clear_mods noclear_mods clear_keys noclear_keys clear_all clear_locks keystate remap repeat norepeat fb nofb bell nobell sendbell sel nosel primary noprimary setprimary nosetprimary clipboard noclipboard setclipboard nosetclipboard seldir cursorshape nocursorshape cursorpos nocursorpos cursor_drag nocursor_drag cursor show_cursor noshow_cursor nocursor arrow xfixes noxfixes xdamage noxdamage xd_area xd_mem alphacut alphafrac alpharemove noalpharemove alphablend noalphablend xwarppointer xwarp noxwarppointer noxwarp always_inject noalways_inject buttonmap dragging nodragging ncache_cr noncache_cr ncache_no_moveraise noncache_no_moveraise ncache_no_dtchange noncache_no_dtchange ncache_no_rootpixmap noncache_no_rootpixmap ncache_reset_rootpixmap ncrp ncache_keep_anims noncache_keep_anims ncache_old_wm noncache_old_wm ncache_pad ncache noncache ncache_size debug_ncache nodebug_ncache wireframe_mode wireframe wf nowireframe nowf wireframelocal wfl nowireframelocal nowfl wirecopyrect wcr nowirecopyrect nowcr scr_area scr_skip scr_inc scr_keys scr_term scr_keyrepeat scr_parms scrollcopyrect scr noscrollcopyrect noscr fixscreen noxrecord xrecord reset_record pointer_mode pm input_skip allinput noallinput input_eagerly noinput_eagerly input grabkbd nograbkbd grabptr nograbptr grabalways nograbalways grablocal client_input ssltimeout speeds wmdt debug_pointer dp nodebug_pointer nodp debug_keyboard dk nodebug_keyboard nodk keycode keysym ptr fakebuttonevent sleep get_xprop set_xprop wininfo bcx_xattach deferupdate defer setdefer extra_fbur wait_ui wait_bog nowait_bog slow_fb xrefresh wait readtimeout nap nonap sb screen_blank fbpm nofbpm dpms nodpms clientdpms noclientdpms forcedpms noforcedpms noserverdpms serverdpms noultraext ultraext chatwindow nochatwindow chaton chatoff fs gaps grow fuzz snapfb nosnapfb rawfb uinput_accel uinput_thresh uinput_reset uinput_always progressive rfbport http nohttp httpport httpdir enablehttpproxy noenablehttpproxy alwaysshared noalwaysshared nevershared noalwaysshared dontdisconnect nodontdisconnect desktop debug_xevents nodebug_xevents debug_xevents debug_xdamage nodebug_xdamage debug_xdamage debug_wireframe nodebug_wireframe debug_wireframe debug_scroll nodebug_scroll debug_scroll debug_tiles dbt nodebug_tiles nodbt debug_tiles debug_grabs nodebug_grabs debug_sel nodebug_sel dbg nodbg macnosaver macsaver nomacnosaver macnowait macwait nomacnowait macwheel macnoswap macswap nomacnoswap macnoresize macresize nomacnoresize maciconanim macmenu macnomenu nomacmenu macuskbd nomacuskbd noremote
- aro= noop display vncdisplay icon_mode autoport loop loopbg desktopname guess_desktop guess_dbus http_url auth xauth users rootshift clipshift scale_str scaled_x scaled_y scale_numer scale_denom scale_fac_x scale_fac_y scaling_blend scaling_nomult4 scaling_pad scaling_interpolate inetd privremote unsafe safer nocmds passwdfile unixpw unixpw_nis unixpw_list ssl ssl_pem sslverify stunnel stunnel_pem https httpsredir usepw using_shm logfile o flag rmflag rc norc h help V version lastmod bg sigpipe threads readrate netrate netlatency pipeinput clients client_count pid ext_xtest ext_xtrap ext_xrecord ext_xkb ext_xshm ext_xinerama ext_overlay ext_xfixes ext_xdamage ext_xrandr rootwin num_buttons button_mask mouse_x mouse_y grab_state pointer_pos pointer_x pointer_y pointer_same pointer_root pointer_mask bpp depth indexed_color dpy_x dpy_y wdpy_x wdpy_y off_x off_y cdpy_x cdpy_y coff_x coff_y rfbauth passwd viewpasswd
-QD variable
- دقیقاً مشابه -query variable است، اما مقدار پیشفرض را برای آن پارامتر بازمیگرداند (هیچ سرور x11vnc در حال اجرایی مورد پرسش قرار نمیگیرد).
-sync
- بهطور پیشفرض دستورات -remote به صورت ناهمگام اجرا میشوند؛ بدین معنا که درخواست ارسال شده و برنامه بلافاصله خارج میشود. از -sync استفاده کنید تا برنامه منتظر تأییدیه از سوی سرور x11vnc بماند مبنی بر اینکه دستور (به نحوی) پردازش شده است. از سوی دیگر، درخواستهای -query همیشه بهصورت همگام پردازش میشوند زیرا باید منتظر پاسخ بمانند.
- همچنین توجه داشته باشید که اگر هر دو درخواست -remote و -query در خط فرمان مشخص شده باشند، ابتدا -remote پردازش میشود (به صورت همگام: بدون نیاز به -sync)، و سپس درخواست -query به شیوهٔ معمول پردازش خواهد شد. این سازوکار روشی قابل اطمینان برای بررسی پردازش دستور -remote از طریق پرسوجو برای هرگونه تنظیمات جدید فراهم میسازد. با این وجود دقت داشته باشید که یک مهلت زمانی چند ثانیهای وجود دارد (پاراگراف بعدی را ببینید)؛ بنابراین اگر پردازش درخواستها توسط x11vnc بیش از آن زمان طول بکشد، درخواستکننده چنین تلقی خواهد کرد که خطایی رخ داده است..IP پیشفرض این است که ۳٫۵ ثانیه صبر کند. یا اگر cmd=stop باشد تنها ۱٫۰ ثانیه. اگر cmd با 'script:' مطابقت داشته باشد، تا ۱۰٫۰ ثانیه صبر خواهد کرد. مقدار X11VNC_SYNC_TIMEOUT را برابر با تعداد ثانیههایی که میخواهید صبر کند قرار دهید.
-query_retries str
- اگر یک پرسوجو موفق به دریافت پاسخ از یک سرور x11vnc نشود، تا n بار مجدداً تلاش میکند. str به صورت n[:t][/match] مشخص میشود. به صورت اختیاری، تاخیر بین تلاشها میتواند با "t" به عنوان یک مقدار زمان اعشاری مشخص شود (پیشفرض ۰٫۵ ثانیه). نکته: پاسخ از نظر اعتبار یا تطابق با پرسوجوی ارسالشده بررسی نمیشود. پرسوجوی "ping:mystring" میتواند برای کمک به شناسایی یکتای پرسوجو استفاده شود. به طور اختیاری، یک رشته تطبیق پس از یک "/" برای بررسی متن نتیجه استفاده خواهد شد. تا n بار تلاش مجدد انجام میشود تا زمانی که رشته منطبق در متن خروجی پیدا شود. اگر رشته مورد نظر هرگز پیدا نشود، کد خروج برنامه ۱ خواهد بود؛ اگر تطابق پیدا شود با ۰ خارج میشود. توجه داشته باشید که ممکن است برای هر تلاش مجدد متنی در stdout چاپ شود (یعنی چندین خط در stdout چاپ شود). مثال: -query_retries 4:1.5/grab_state
-remote_prefix str
- یک کانال ارتباطی کنترل از راه دور برای کلاینتهای متصل VNC فعال میکند. str یک رشته غیرخالی است. اگر یک کلاینت VNC پیامی حاوی rfbCutText با پیشوند str ارسال کند، بخش پس از آن به گونهای پردازش میشود که گویی از طریق 'x11vnc -remote ...' ارسال شده است. اگر با هیچیک از 'cmd=' یا 'qry=' شروع نشود، 'qry=' در نظر گرفته میشود. هر متن خروجی متناظر برای آن دستور کنترل از راه دور به صورت rfbCutText برای همه کلاینتها پس فرستاده میشود. خروجی بازگردانده شده نیز دارای پیشوند str خواهد بود. مثال: -remote_prefix DO_THIS:
- توجه داشته باشید که فعال کردن -remote_prefix به بینندههای راه دور VNC اجازه میدهد دستورات x11vnc -remote را اجرا کنند. اگر آنها قابل اعتماد نیستند از این گزینه استفاده نکنید.
-noremote, -yesremote
- هیچ دستور یا پرسوجوی کنترل از راه دور را پردازش نکن. دستورات یا پرسوجوهای کنترل از راه دور را پردازش کن. پیشفرض: -yesremote
- نکتهای در مورد امنیت در رابطه با دستورات کنترل از راه دور. اگر کسی بتواند به نمایشگر X متصل شود و ویژگی X11VNC_REMOTE را تغییر دهد، میتواند x11vnc را از راه دور کنترل کند. به طور معمول دسترسی به نمایشگر X محافظت شده است. توجه داشته باشید که اگر آنها بتوانند X11VNC_REMOTE را روی کارساز X تغییر دهند، دسترسی کافی برای اجرای x11vnc خود را نیز دارند و بنابراین کنترل کاملی بر میزکار خواهند داشت. اگر از کانال "-connect /path/to/file" استفاده میشود، مسلماً هر کسی که بتواند در /path/to/file بنویسد میتواند x11vnc را از راه دور کنترل کند. بنابراین حتماً از نمایشگر X و مجوزهای نوشتن آن فایل محافظت کنید. گزینه -privremote را در زیر ببینید.
- اگر بسیار محتاط هستید و فکر میکنید -noremote کافی نیست، برای غیرفعال کردن کامل کانال ویژگی X11VNC_REMOTE از -novncconnect استفاده کنید، یا از گزینه -safer استفاده نمایید که بسیاری از موارد را خاموش میکند.
-unsafe
- تعداد کمی از دستورات راه دور به طور پیشفرض غیرفعال هستند (در حال حاضر: id:pick، accept:<cmd>، gone:<cmd>، و rawfb:setup:<cmd>) زیرا با اجرای برنامههای خارجی مرتبط هستند. اگر -unsafe را مشخص کنید، این دستورات کنترل از راه دور مجاز خواهند بود. توجه داشته باشید که همچنان میتوانید این پارامترها را در خط فرمان مشخص کنید، فقط نمیتوان آنها را از طریق کنترل از راه دور فراخوانی کرد.
-safer
- معادل: -novncconnect -noremote و ممنوع کردن -gui و فایل -connect. کانالهای ارتباطی را قطع میکند.
-privremote
- برخی بررسیهای صحت را انجام میدهد و در صورتی که به نظر برسد X DISPLAY و/یا connectfile توسط سایر کاربران قابل دسترسی است، دستورات کنترل از راه دور را غیرفعال میکند. هنگامی که کنترل از راه دور غیرفعال شد، دیگر نمیتوان آن را دوباره روشن کرد.
-nocmds
-allowedcmds list
- list شامل فهرستی جدا شده با کاما از تنها دستورات خارجی است که میتوانند اجرا شوند. فهرست کامل گزینههای مرتبط عبارت است از:
- stunnel, ssl, unixpw, WAIT, zeroconf, id, accept, afteraccept, gone, pipeinput, v4l-info, rawfb-setup, dt, gui, ssh, storepasswd, passwdfile, custom_passwd, findauth, crash.
- برای آشنایی با دستور خارجی مرتبط، راهنمای هر گزینه را مشاهده کنید. توجه داشته باشید که گزینه -nocmds تقدم دارد و تمام دستورات خارجی را غیرفعال میکند.
-deny_all
- برای استفاده همراه با -remote nodeny: در ابتدا تمام کلاینتهای ورودی را رد میکند تا زمانی که از "-remote nodeny" برای اجازه ورود به آنها استفاده شود.
این گزینهها به LibVNCServer ارسال میشوند:
-rfbport port
- پورت TCP برای پروتکل RFB
-rfbwait time
- حداکثر زمان به میلیثانیه برای انتظار برای کلاینت RFB
-rfbauth passwd-file
- استفاده از احراز هویت در پروتکل RFB (از 'x11vnc -storepasswd pass file' برای ایجاد یک فایل گذرواژه استفاده کنید)
-rfbversion 3.x
- تنظیم نسخه پروتکل RFB که برای اعلان انتخاب میکنیم
-permitfiletransfer
- اجازه پشتیبانی از انتقال فایل
-passwd plain-password
- استفاده از احراز هویت (استفاده از plain-password به عنوان گذرواژه، با مسئولیت خودتان استفاده کنید)
-deferupdate time
- زمان به میلیثانیه برای به تعویق انداختن بهروزرسانیها (پیشفرض ۴۰)
-deferptrupdate time
- زمان به میلیثانیه برای به تعویق انداختن بهروزرسانیهای اشارهگر (پیشفرض ندارد)
-desktop name
- نام میزکار VNC (پیشفرض "LibVNCServer")
-alwaysshared
- همیشه کلاینتهای جدید را به عنوان اشتراکی در نظر بگیر
-nevershared
- هرگز کلاینتهای جدید را به عنوان اشتراکی در نظر نگیر
-dontdisconnect
- قطع نکردن کلاینتهای موجود هنگامی که یک اتصال غیراشتراکی جدید برقرار میشود (به جای آن، اتصال جدید را رد کن)
-httpdir dir-path
- فعال کردن سرور http با استفاده از dir-path به عنوان ریشه/خانه
-httpport portnum
- استفاده از portnum برای اتصال http
-enablehttpproxy
- فعال کردن پشتیبانی از پراکسی http
-progressive height
- فعال کردن بهروزرسانی تدریجی برای پیوندهای کند
-listen ipaddr
- شنود برای اتصالات فقط روی رابط شبکهای با آدرس ipaddr. مقادیر '-listen localhost' و نام میزبان (hostname) نیز کار میکنند.
گزینههای libvncserver-tight-extension:
-disablefiletransfer
- غیرفعال کردن انتقال فایل.PP -ftproot string
- تنظیم ریشهٔ ftp
فایلها (FILES)
$HOME/.x11vncrc, $HOME/.Xauthority
محیط (ENVIRONMENT)
DISPLAY, XAUTHORITY, HOME
موارد زیر برای دستورهای کمکیِ اجراشده توسط -accept، -gone و دیگر موارد تنظیم میشوند:
RFB_CLIENT_IP, RFB_CLIENT_PORT, RFB_SERVER_IP, RFB_SERVER_PORT, RFB_X11VNC_PID, RFB_CLIENT_ID, RFB_CLIENT_COUNT, RFB_MODE RFB_STATE RFB_LOGIN_VIEWONLY RFB_LOGIN_TIME RFB_CURRENT_TIME RFB_USERNAME RFB_SSL_CLIENT_CERT
همچنین ببینید (SEE ALSO)
vncviewer(1), vncpasswd(1), vncconnect(1), vncserver(1), Xvnc(1), xev(1), xdpyinfo(1), xwininfo(1), xprop(1), xmodmap(1), xrandr(1), Xserver(1), xauth(1), xhost(1), Xsecurity(7), xmessage(1), XGetImage(3X11), ipcrm(1), inetd(1), xdm(1), gdm(1), kdm(1), ssh(1), stunnel(8), su(1), http://www.tightvnc.com, http://www.realvnc.com, http://www.karlrunge.com/x11vnc, http://www.karlrunge.com/x11vnc/#faq, https://github.com/LibVNC/x11vnc
نویسندگان (AUTHORS)
برنامهٔ x11vnc توسط Karl J. Runge <runge@karlrunge.com> نوشته شده است، این برنامه بخشی از پروژهٔ LibVNCServer https://github.com/LibVNC/libvncserver است. این صفحهٔ راهنما بر اساس صفحهای است که توسط Ludovic Drolez <ldrolez@debian.org> برای پروژهٔ Debian نوشته شده است (هر دو نسخه ممکن است توسط دیگران نیز استفاده شوند).
| February 2018 | x11vnc |