'\" t .\" Title: picom .\" Author: Yuxuan Shui .\" Generator: Asciidoctor 2.0.26 .\" Date: 2026-04-03 .\" Manual: User Commands .\" Source: picom .\" Language: Persian .\" .TH "PICOM" "1" "2026-04-03" "picom" "User Commands" .ie \n(.g .ds Aq \(aq .el .ds Aq ' .ss \n[.ss] 0 .nh .ad l .de URL \fI\\$2\fP <\\$1>\\$3 .. .als MTO URL .if \n[.g] \{\ . mso www.tmac . am URL . ad l . . . am MTO . ad l . . . LINKSTYLE blue R < > .\} .SH "نام (NAME)" picom \- یک کامپوزیتور برای X11 .SH "خلاصه دستور (SYNOPSIS)" .sp \fBpicom\fP [\fIOPTIONS\fP] .SH "توضیحات (DESCRIPTION)" .sp نرم‌افزار picom یک کامپوزیتور (ترکیب‌گر پنجره) مبتنی بر نسخهٔ Dana Jansens از xcompmgr است (که خود توسط Keith Packard نوشته شده بود). این برنامه شامل بهبودهایی نسبت به نسخهٔ اصلی xcompmgr است، مانند تنظیم میزان کدر بودن چارچوب پنجره و شفافیت پنجره‌های غیرفعال. .SH "گزینه‌ها (OPTIONS)" .sp \fB\-h\fP, \fB\-\-help\fP .RS 4 دریافت متن راهنمای استفادهٔ تعبیه‌شده در کد برنامه، که ممکن است نسبت به این صفحهٔ راهنما به‌روزتر باشد. .RE .sp \fB\-r\fP, \fB\-\-shadow\-radius\fP=\fIRADIUS\fP .RS 4 شعاع محوکردن (تاری) سایه‌ها، به پیکسل. (پیش‌فرض: 12) .RE .sp \fB\-o\fP, \fB\-\-shadow\-opacity\fP=\fIOPACITY\fP .RS 4 میزان کدر بودن سایه‌ها. (0.0 \- 1.0، پیش‌فرض: 0.75) .RE .sp \fB\-l\fP, \fB\-\-shadow\-offset\-x\fP=\fIOFFSET\fP .RS 4 آفست سمت چپ سایه‌ها، به پیکسل. (پیش‌فرض: \-15) .RE .sp \fB\-t\fP, \fB\-\-shadow\-offset\-y\fP=\fIOFFSET\fP .RS 4 آفست بالای سایه‌ها، به پیکسل. (پیش‌فرض: \-15) .RE .sp \fB\-I\fP, \fB\-\-fade\-in\-step\fP=\fIOPACITY_STEP\fP .RS 4 میزان تغییر کدر بودن میان هر گام هنگام محو شدن تدریجی رو به ظهور (fade-in). (0.01 \- 1.0، پیش‌فرض: 0.028) .RE .sp \fB\-O\fP, \fB\-\-fade\-out\-step\fP=\fIOPACITY_STEP\fP .RS 4 میزان تغییر کدر بودن میان هر گام هنگام محو شدن تدریجی رو به ناپدید شدن (fade-out). (0.01 \- 1.0، پیش‌فرض: 0.03) .RE .sp \fB\-D\fP, \fB\-\-fade\-delta\fP=\fIMILLISECONDS\fP .RS 4 مدت زمان میان هر گام در پویانمایی محو شدن، به میلی‌ثانیه. (> 0، پیش‌فرض: 10) .RE .sp \fB\-c\fP, \fB\-\-shadow\fP .RS 4 فعال‌سازی سایه‌های سمت کلاینت روی پنجره‌ها. توجه داشته باشید که پنجره‌های میزکار (پنجره‌های دارای \fI_NET_WM_WINDOW_TYPE_DESKTOP\fP) هرگز سایه دریافت نمی‌کنند، مگر اینکه صراحتاً با استفاده از گزینهٔ wintypes درخواست شده باشد. .RE .sp \fB\-f\fP, \fB\-\-fading\fP .RS 4 محو شدن تدریجی پنجره‌ها به هنگام باز/بسته شدن و هنگام تغییر کدر بودن، مگر اینکه از گزینهٔ \fB\-\-no\-fading\-openclose\fP استفاده شده باشد. .RE .sp \fB\-i\fP, \fB\-\-inactive\-opacity\fP=\fIOPACITY\fP .RS 4 میزان کدر بودن پنجره‌های غیرفعال. (0.1 \- 1.0، پیش‌فرض: 1.0). استفاده از این گزینه توصیه نمی‌شود؛ برای روش پیشنهادی جهت تنظیم کدر بودن مختص هر پنجره، بخش \fBWINDOW RULES\fP را ببینید. .RE .sp \fB\-e\fP, \fB\-\-frame\-opacity\fP=\fIOPACITY\fP .RS 4 میزان کدر بودن نوار عنوان و حاشیه‌های پنجره. (0.1 \- 1.0، به‌طور پیش‌فرض غیرفعال است) .RE .sp \fB\-b\fP, \fB\-\-daemon\fP .RS 4 تبدیل فرایند به دیمون (daemon). انشعاب (fork) به پس‌زمینه پس از مقداردهی اولیه. این گزینه فقط از خط فرمان قابل تنظیم است و تنظیم آن در فایل پیکربندی اثری نخواهد داشت. .RE .sp \fB\-\-log\-level\fP .RS 4 تنظیم سطح ثبت وقایع (log level). مقادیر ممکن به ترتیب افزایش اهمیت عبارتند از: "TRACE" ،"VERBOSE" ،"DEBUG" ،"INFO" ،"WARN" و "ERROR". حروف کوچک و بزرگ تفاوتی ندارند. اگر از سطح "TRACE" استفاده می‌کنید، بهتر است با استفاده از \fB\-\-log\-file\fP لاگ‌ها را در یک فایل ذخیره کنید، زیرا حجم بسیار زیادی از لاگ‌ها تولید خواهد شد. .RE .sp \fB\-\-log\-file\fP .RS 4 تعیین فایل گزارش وقایع (log). اگر \fB\-\-log\-file\fP مشخص نشود، وقایع در stderr نوشته خواهند شد. در غیر این صورت، لاگ‌ها در فایل مشخص‌شده ذخیره می‌شوند، هرچند ممکن است برخی از لاگ‌های اولیه همچنان در stderr نوشته شوند. هنگام تنظیم این گزینه در فایل پیکربندی، توصیه می‌شود از یک مسیر مطلق استفاده کنید. .RE .sp \fB\-\-show\-all\-xerrors\fP .RS 4 نمایش تمامی خطاهای سرور X (برای اشکال‌زدایی). .RE .sp \fB\-\-config\fP \fIPATH\fP .RS 4 جستجوی فایل پیکربندی در مسیر مشخص‌شده. برای اطلاع از اینکه picom به‌طور پیش‌فرض کجا به دنبال فایل پیکربندی می‌گردد، بخش \fBCONFIGURATION FILES\fP را در ادامه ببینید. برای جلوگیری از بارگذاری هرگونه فایل پیکربندی، از \f(CR/dev/null\fP استفاده کنید. .RE .sp \fB\-\-write\-pid\-path\fP \fIPATH\fP .RS 4 نوشتن شناسهٔ فرایند (PID) در یک فایل. توصیه می‌شود از یک مسیر مطلق استفاده کنید. .RE .sp \fB\-\-plugins\fP \fIPATH\fP .RS 4 مشخص کردن افزونه‌ها (plugins) جهت بارگذاری. افزونه‌ها ابتدا در دایرکتوری کاری فعلی جستجو می‌شوند (مگر اینکه در فایل پیکربندی تعیین شده باشد، که در این صورت از این مرحله صرف‌نظر می‌شود)، سپس در \f(CR$XDG_CONFIG_HOME/picom/plugins\fP و پس از آن در \f(CR$XDG_CONFIG_DIRS/picom/plugins\fP. اگر همهٔ موارد فوق ناموفق باشند، نام افزونه مستقیماً به بارگذار پویا (dynamic loader) ارسال می‌شود. برای بارگذاری بیش از یک افزونه می‌توان این گزینه را چندین بار مشخص کرد. .RE .sp \fB\-\-shadow\-color\fP \fISTRING\fP .RS 4 رنگ سایه، به صورت یک رشتهٔ هگزادسیمال (مانند \fI#000000\fP). .RE .sp \fB\-\-shadow\-red\fP \fIVALUE\fP .RS 4 مقدار کانال رنگ قرمز سایه (0.0 \- 1.0، پیش‌فرض: 0). .RE .sp \fB\-\-shadow\-green\fP \fIVALUE\fP .RS 4 مقدار کانال رنگ سبز سایه (0.0 \- 1.0، پیش‌فرض: 0). .RE .sp \fB\-\-shadow\-blue\fP \fIVALUE\fP .RS 4 مقدار کانال رنگ آبی سایه (0.0 \- 1.0، پیش‌فرض: 0). .RE .sp \fB\-\-inactive\-opacity\-override\fP .RS 4 اجازه می‌دهد مقدار کدر بودن پنجرهٔ غیرفعال تنظیم‌شده توسط \fB\-i\fP، مقادیر \fI_NET_WM_WINDOW_OPACITY\fP پنجره‌ها را بازنویسی کند (لغو کند). استفاده از این گزینه توصیه نمی‌شود؛ برای روش پیشنهادی جهت تنظیم کدر بودن مختص هر پنجره، بخش \fBWINDOW RULES\fP را ببینید. .RE .sp \fB\-\-active\-opacity\fP \fIOPACITY\fP .RS 4 میزان کدر بودن پیش‌فرض برای پنجره‌های فعال. (0.0 \- 1.0، پیش‌فرض: 1.0). استفاده از این گزینه توصیه نمی‌شود؛ برای روش پیشنهادی جهت تنظیم کدر بودن مختص هر پنجره، بخش \fBWINDOW RULES\fP را ببینید. .RE .sp \fB\-\-inactive\-dim\fP \fIVALUE\fP .RS 4 تاریک و کم‌نور کردن پنجره‌های غیرفعال. (0.0 \- 1.0، پیش‌فرض: 0.0). استفاده از این گزینه توصیه نمی‌شود؛ برای روش پیشنهادی جهت تنظیم سطوح تیرگی مختص هر پنجره، بخش \fBWINDOW RULES\fP را ببینید. .RE .sp \fB\-\-corner\-radius\fP \fIVALUE\fP .RS 4 تنظیم شعاع گوشه‌های گرد پنجره. اگر بزرگتر از 0 باشد، کامپوزیتور گوشه‌های پنجره‌ها را گرد می‌کند. با گزینهٔ \fB\-\-transparent\-clipping\fP سازگاری خوبی ندارد. (پیش‌فرض: 0). .RE .sp \fB\-\-corner\-radius\-rules\fP \fIRADIUS\fP:\fICONDITION\fP .RS 4 مشخص کردن فهرستی از قواعد شعاع گوشه. شعاع گوشهٔ پنجره‌های منطبق را لغو و بازنویسی می‌کند. این گزینه بر گزینهٔ \fB\-\-rounded\-corners\-exclude\fP اولویت دارد و همچنین استثنا شدن پیش‌فرض پنجره‌های تمام‌صفحه را بازنویسی می‌کند. ساختار شرط مشابه \fB\-\-opacity\-rule\fP است. استفاده از این گزینه توصیه نمی‌شود؛ برای روش پیشنهادی جهت تنظیم شعاع گوشه مختص هر پنجره، بخش \fBWINDOW RULES\fP را ببینید. .RE .sp \fB\-\-rounded\-corners\-exclude\fP \fICONDITION\fP .RS 4 شرایط استثنا برای گوشه‌های گرد. استفاده از این گزینه توصیه نمی‌شود؛ برای روش پیشنهادی جهت تنظیم شعاع گوشه مختص هر پنجره، بخش \fBWINDOW RULES\fP را ببینید. .RE .sp \fB\-\-no\-frame\-pacing\fP .RS 4 غیرفعال‌سازی زمان‌بندی فریم آگاه از vsync (frame pacing). به‌طور پیش‌فرض، کامپوزیتور تلاش می‌کند تا فقط یک بار در هر بازهٔ vblank رندر را انجام دهد، و همچنین رندر تا جای ممکن در آخرین لحظه انجام شود تا تأخیر (latency) میان به‌روزرسانی‌ها تا نمایش روی صفحه به حداقل برسد. با این حال این مسئله گاهی می‌تواند موجب پرش تصویر (stuttering) یا حتی کاهش نرخ فریم شود. از این گزینه می‌توان برای غیرفعال کردن زمان‌بندی فریم استفاده کرد. .RE .sp \fB\-\-mark\-wmwin\-focused\fP .RS 4 تلاش برای تشخیص پنجره‌های مدیر پنجره (یک پنجرهٔ غیر override-redirect بدون پنجرهٔ فرزندی که دارای \fIWM_STATE\fP باشد) و علامت‌گذاری آن‌ها به عنوان فعال. استفاده از این گزینه توصیه نمی‌شود؛ برای روش پیشنهادی جهت تنظیم قواعد مختص هر پنجره، بخش \fBWINDOW RULES\fP را ببینید. .RE .sp \fB\-\-mark\-ovredir\-focused\fP .RS 4 علامت‌گذاری پنجره‌های override-redirect که پنجرهٔ فرزندی با مشخصهٔ \fIWM_STATE\fP ندارند به عنوان فوکوس‌شده. استفاده از این گزینه توصیه نمی‌شود؛ برای روش پیشنهادی جهت تنظیم قواعد مختص هر پنجره، بخش \fBWINDOW RULES\fP را ببینید. .RE .sp \fB\-\-no\-fading\-openclose\fP .RS 4 محو نشدن پنجره‌ها هنگام باز شدن یا بسته شدن. .RE .sp \fB\-\-no\-fading\-destroyed\-argb\fP .RS 4 محو نشدن تدریجی پنجره‌های بسته‌شدهٔ ARGB دارای چارچوب WM. راهکاری موقت برای دور زدن اشکالات موجود در Openbox ،Fluxbox و غیره. .RE .sp \fB\-\-shadow\-ignore\-shaped\fP .RS 4 رسم نکردن سایه روی پنجره‌های فرم‌دار (shaped). توجه داشته باشید پنجره‌های فرم‌دار در اینجا یعنی پنجره‌هایی که شکل خود را از طریق افزونهٔ X Shape تعیین می‌کنند. مواردی که از پس‌زمینهٔ ARGB استفاده می‌کنند خارج از کنترل برنامه است. این گزینه منسوخ شده است؛ برای روش پیشنهادی جهت تنظیم سایهٔ مختص هر پنجره، بخش \fBWINDOW RULES\fP را ببینید. .RE .sp \fB\-\-detect\-rounded\-corners\fP .RS 4 تلاش برای تشخیص پنجره‌های دارای گوشه‌های گرد و عدم تلقی آن‌ها به عنوان پنجره‌های فرم‌دار (shaped). متأسفانه دقت این قابلیت خیلی بالا نیست. .RE .sp \fB\-\-detect\-client\-opacity\fP .RS 4 تشخیص \fI_NET_WM_WINDOW_OPACITY\fP در پنجره‌های کلاینت؛ مفید برای مدیران پنجره‌ای که \fI_NET_WM_WINDOW_OPACITY\fP پنجره‌های کلاینت را به پنجره‌های چارچوب منتقل نمی‌کنند. .RE .sp \fB\-\-vsync\fP, \fB\-\-no\-vsync\fP .RS 4 فعال/غیرفعال کردن همگام‌سازی عمودی (VSync). .RE .sp \fB\-\-use\-ewmh\-active\-win\fP .RS 4 استفاده از \fI_NET_ACTIVE_WINDOW\fP در EWMH برای تشخیص پنجره‌ای که در حال حاضر فوکوس دارد، به‌جای گوش دادن به رویدادهای \*(AqFocusIn\*(Aq/\*(AqFocusOut\*(Aq. به شرط پشتیبانی توسط مدیر پنجره، ممکن است دقت بالاتری داشته باشد. .RE .sp \fB\-\-unredir\-if\-possible\fP .RS 4 لغو هدایت (Unredirect) تمامی پنجره‌ها در برخی موارد خاص. این قابلیت به ایجاد پرش تصویر (flickering) هنگام redirecting/unredirecting پنجره‌ها معروف است. در حال حاضر، لغو هدایت با شرایط زیر فعال می‌شود: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} اگر پنجرهٔ سطح بالا تمام صفحه را بپوشاند. در پیکربندی‌های چند مانیتوره، این به معنای همهٔ مانیتورها است. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} اگر هیچ پنجره‌ای وجود نداشته باشد. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} اگر پنجره‌ای طبق هینت‌های مدیر پنجره تمام‌صفحه باشد. (با \fB\-\-no\-ewmh\-fullscreen\fP قابل غیرفعال‌سازی است). .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} اگر پنجره‌ای درخواست دور زدن کامپوزیتور را داشته باشد (\fI_NET_WM_BYPASS_COMPOSITOR\fP). همچنین هنگامی که نمایشگرها خاموش می‌شوند، صرف‌نظر از اینکه \fB\-\-unredir\-if\-possible\fP فعال باشد یا خیر، پنجره‌ها بدون قید و شرط از حالت هدایت خارج می‌شوند (unredirect). .RE .RE .sp \fB\-\-unredir\-if\-possible\-delay\fP \fIMILLISECONDS\fP .RS 4 تأخیر پیش از لغو هدایت پنجره، به میلی‌ثانیه. پیش‌فرض: 0. .RE .sp \fB\-\-unredir\-if\-possible\-exclude\fP \fICONDITION\fP .RS 4 شرایط پنجره‌هایی که نباید برای لغو هدایت صفحه، تمام‌صفحه تلقی شوند. استفاده از این گزینه توصیه نمی‌شود؛ برای روش پیشنهادی جهت تنظیم unredirect مختص هر پنجره، بخش \fBWINDOW RULES\fP را ببینید. .RE .sp \fB\-\-shadow\-exclude\fP \fICONDITION\fP .RS 4 مشخص کردن فهرستی از شرایط پنجره‌هایی که نباید سایه داشته باشند. استفاده از این گزینه توصیه نمی‌شود؛ برای روش پیشنهادی جهت تنظیم سایهٔ مختص هر پنجره، بخش \fBWINDOW RULES\fP را ببینید. .RE .sp \fB\-\-clip\-shadow\-above\fP \fICONDITION\fP .RS 4 مشخص کردن فهرستی از شرایط پنجره‌هایی که نباید سایه‌ای روی آن‌ها کشیده شود، مانند پنجره‌های داک (dock). استفاده از این گزینه توصیه نمی‌شود؛ برای روش پیشنهادی جهت تنظیم برش سایه مختص هر پنجره، بخش \fBWINDOW RULES\fP را ببینید. .RE .sp \fB\-\-fade\-exclude\fP \fICONDITION\fP .RS 4 مشخص کردن فهرستی از شرایط پنجره‌هایی که نباید به صورت تدریجی محو شوند. استفاده از این گزینه توصیه نمی‌شود؛ برای روش پیشنهادی جهت تنظیم محوشدگی تدریجی مختص هر پنجره، بخش \fBWINDOW RULES\fP را ببینید. .RE .sp \fB\-\-focus\-exclude\fP \fICONDITION\fP .RS 4 مشخص کردن فهرستی از شرایط پنجره‌هایی که باید همیشه فوکوس‌شده در نظر گرفته شوند. استفاده از این گزینه توصیه نمی‌شود؛ برای روش پیشنهادی جهت انجام این کار، بخش \fBWINDOW RULES\fP را ببینید. .RE .sp \fB\-\-inactive\-dim\-fixed\fP .RS 4 استفاده از مقدار ثابت برای تیرگی پنجره‌های غیرفعال، به‌جای تنظیم آن بر اساس میزان کدر بودن پنجره. .RE .sp \fB\-\-detect\-transient\fP .RS 4 استفاده از \fIWM_TRANSIENT_FOR\fP جهت گروه‌بندی پنجره‌ها و هم‌زمان در نظر گرفتن وضعیت فوکوس پنجره‌های متعلق به یک گروه. .RE .sp \fB\-\-detect\-client\-leader\fP .RS 4 استفاده از \fIWM_CLIENT_LEADER\fP جهت گروه‌بندی پنجره‌ها و هم‌زمان در نظر گرفتن وضعیت فوکوس پنجره‌های یک گروه. این امر معمولاً بدان معناست که پنجره‌های متعلق به یک برنامه هم‌زمان فوکوس‌شده یا غیرفوکوس تلقی می‌شوند. اگر \fB\-\-detect\-transient\fP نیز فعال باشد، \fIWM_TRANSIENT_FOR\fP اولویت بالاتری دارد. .RE .sp \fB\-\-blur\-method\fP, \fB\-\-blur\-size\fP, \fB\-\-blur\-deviation\fP, \fB\-\-blur\-strength\fP .RS 4 پارامترهایی برای محوسازی پس‌زمینه؛ برای اطلاعات بیشتر بخش \fBBLUR\fP را ببینید. .RE .sp \fB\-\-blur\-background\fP .RS 4 محو کردن پس‌زمینهٔ پنجره‌های نیمه‌شفاف / ARGB. از نظر عملکردی پرهزینه بوده و رفتار آن به درایور وابسته است. ممکن است نام این گزینه بدون اطلاع قبلی تغییر کند. .RE .sp \fB\-\-blur\-background\-frame\fP .RS 4 محو کردن پس‌زمینهٔ پنجره‌ها هنگامی که چارچوب پنجره کدر (مات) نیست. متضمن گزینهٔ \fB\-\-blur\-background\fP است. از نظر عملکردی پرهزینه بوده و رفتار آن به درایور وابسته است. نام این گزینه ممکن است تغییر کند. .RE .sp \fB\-\-blur\-background\-fixed\fP .RS 4 استفاده از قدرت محوسازی ثابت برای پنجره در هنگام محو شدن تدریجی (fading). این گزینه فقط برای گزینهٔ \fB\-\-fading\fP اعمال می‌شود، و در صورت استفاده از اسکریپت‌های پویانمایی بی‌اثر (no-op) خواهد بود. .RE .sp \fB\-\-blur\-kern\fP \fIMATRIX\fP .RS 4 تعیین هستهٔ پیچش (convolution kernel) برای محوسازی، با ساختار زیر: .sp .if n .RS 4 .nf .fam C WIDTH,HEIGHT,ELE1,ELE2,ELE3,ELE4,ELE5... .fam .fi .if n .RE .sp به عبارت دیگر، ماتریس به صورت فهرستی از اعداد که با کاما از هم جدا شده‌اند قالب‌بندی می‌شود. دو عدد نخست باید عدد صحیح باشند و عرض و ارتفاع ماتریس را مشخص می‌کنند. این اعداد باید فرد باشند. سپس، \f(CRwidth * height \- 1\fP عدد بعدی، مقادیر ماتریس را سطر به سطر، بدون احتساب عنصر مرکزی، مشخص می‌کنند. .sp عناصر از نوع اعداد ممیز شناور متناهی هستند. ممیز اعشاری باید حتماً \fI.\fP (نقطه) باشد؛ نشانه‌گذاری علمی پشتیبانی نمی‌شود. .sp عنصر مرکزی بسته به اینکه از \fB\-\-blur\-background\-fixed\fP استفاده کنید یا خیر، برابر با 1.0 یا متغیر بر اساس میزان کدر بودن خواهد بود. با این حال تنظیم خودکار ضریب محوسازی ممکن است با یک هستهٔ محوسازی سفارشی به خوبی کار نکند. .sp یک هستهٔ محوسازی گوسی 7x7 (با سیگما = 0.84089642) به این صورت است: .sp .if n .RS 4 .nf .fam C \-\-blur\-kern \*(Aq7,7,0.000003,0.000102,0.000849,0.001723,0.000849,0.000102,0.000003,0.000102,0.003494,0.029143,0.059106,0.029143,0.003494,0.000102,0.000849,0.029143,0.243117,0.493069,0.243117,0.029143,0.000849,0.001723,0.059106,0.493069,0.493069,0.059106,0.001723,0.000849,0.029143,0.243117,0.493069,0.243117,0.029143,0.000849,0.000102,0.003494,0.029143,0.059106,0.029143,0.003494,0.000102,0.000003,0.000102,0.000849,0.001723,0.000849,0.000102,0.000003\*(Aq .fam .fi .if n .RE .sp همچنین می‌تواند یکی از هسته‌های از پیش تعریف‌شده باشد: \f(CR3x3box\fP (پیش‌فرض)، \f(CR5x5box\fP، \f(CR7x7box\fP، \f(CR3x3gaussian\fP، \f(CR5x5gaussian\fP، \f(CR7x7gaussian\fP، \f(CR9x9gaussian\fP، \f(CR11x11gaussian\fP. تمامی هسته‌های گوسی با مقدار سیگما = 0.84089642 تولید شده‌اند. چنانچه نیاز به تولید هسته‌های محوسازی سفارشی پیدا کردید، می‌توانید پیکربندی جدید محوسازی را بررسی کنید (بخش \fBBLUR\fP را ببینید). .RE .sp \fB\-\-blur\-background\-exclude\fP \fICONDITION\fP .RS 4 شرایط استثنا برای محوسازی پس‌زمینه. .RE .sp \fB\-\-invert\-color\-include\fP \fICONDITION\fP .RS 4 مشخص کردن فهرستی از شرایط پنجره‌هایی که باید با رنگ‌های معکوس رسم شوند. منابع زیادی مصرف می‌کند و به خوبی آزموده نشده است. استفاده از این گزینه توصیه نمی‌شود؛ برای روش پیشنهادی جهت انجام این کار، بخش \fBWINDOW RULES\fP را ببینید. .RE .sp \fB\-\-opacity\-rule\fP \fIOPACITY\fP:\fICONDITION\fP .RS 4 مشخص کردن فهرستی از قواعد کدر بودن، با قالب \f(CRPERCENT:PATTERN\fP، مانند \f(CR50:name *= "Firefox"\fP. استفاده از ابزار picom\-trans نسبت به این گزینه ترجیح داده می‌شود. توجه داشته باشید که هیچ تضمینی دربارهٔ تداخل‌های احتمالی با سایر برنامه‌هایی که \fI_NET_WM_WINDOW_OPACITY\fP را روی پنجره‌های چارچوب یا کلاینت تنظیم می‌کنند وجود ندارد. استفاده از این گزینه توصیه نمی‌شود؛ برای روش پیشنهادی جهت تنظیم کدر بودن مختص هر پنجره، بخش \fBWINDOW RULES\fP را ببینید. .RE .sp \fB\-\-crop\-shadow\-to\-monitor\fP .RS 4 برش دادن سایهٔ پنجره‌ای که کاملاً روی یک مانیتور مشخص قرار دارد به همان مانیتور. این قابلیت در حال حاضر با استفاده از افزونهٔ X RandR پیاده‌سازی شده است. .RE .sp \fB\-\-backend\fP \fIBACKEND\fP .RS 4 تعیین بک‌اند مورد استفاده: \f(CRxrender\fP یا \f(CRglx\fP. بک‌اند \f(CRxrender\fP گزینهٔ پیش‌فرض است. .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} بک‌اند \f(CRxrender\fP تمامی عملیات رندر را با استفاده از افزونهٔ X Render انجام می‌دهد. این همان بک‌اندی است که \f(CRxcompmgr\fP استفاده می‌کند و در صورت مواجهه با ناهنجاری‌های رندر یا ناپایداری، عموماً یک حالت رزرو (fallback) امن محسوب می‌شود. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} بک‌اند \f(CRglx\fP (مبتنی بر OpenGL) تمامی عملیات رندر را با OpenGL انجام می‌دهد. این بک‌اند با برخی روش‌های VSync سازگارتر است و عملکرد به مراتب برتری در معکوس‌سازی رنگ (\fB\-\-invert\-color\-include\fP) یا محوسازی (\fB\-\-blur\-background\fP) دارد. نیازمند پشتیبانی مناسب از OpenGL 3.3 توسط درایور و سخت‌افزار شما است. شاید مایل باشید گزینه‌های بهینه‌سازی عملکرد GLX در ادامه را بررسی کنید. ممکن است در برخی سیستم‌ها برای جلوگیری از تأخیر در تغییر محتویات صفحه به \fB\-\-xrender\-sync\-fence\fP نیاز باشد. .RE .RE .sp \fB\-\-no\-use\-damage\fP .RS 4 غیرفعال‌سازی استفاده از اطلاعات آسیب (damage information). این امر باعث می‌شود هر بار کل صفحه دوباره ترسیم شود، به‌جای اینکه فقط بخش‌هایی از صفحه که واقعاً تغییر کرده‌اند بازترسیم شوند. این کار ممکن است کارایی را کاهش دهد، اما احتمال دارد برخی ناهنجاری‌های تصویری را برطرف کند. .RE .sp \fB\-\-xrender\-sync\-fence\fP .RS 4 استفاده از X Sync fence برای همگام‌سازی فراخوانی‌های ترسیم کلاینت‌ها، جهت اطمینان از پایان یافتن تمام فراخوانی‌های ترسیم پیش از شروع رسم توسط picom. این گزینه برای برخی کاربران در درایورهای nvidia با بک‌اند GLX مورد نیاز است. .RE .sp \fB\-\-force\-win\-blend\fP .RS 4 اجبار تمام پنجره‌ها به رسم شدن با ترکیب رنگ (blending). هنگامی که شیدری برای پنجره دارید که می‌تواند پیکسل‌های کدر را به شفاف تبدیل کند، کاربردی است. .RE .sp \fB\-\-dbus\fP .RS 4 فعال‌سازی کنترل از راه دور از طریق D\-Bus. برای جزئیات بیشتر بخش \fBD\-BUS API\fP را در ادامه ببینید. .RE .sp \fB\-\-benchmark\fP \fICYCLES\fP .RS 4 حالت محک زدن (Benchmark). بازترسیم پی‌درپی تا رسیدن به تعداد چرخه‌های مشخص‌شده. .RE .sp \fB\-\-benchmark\-wid\fP \fIWINDOW_ID\fP .RS 4 مشخص کردن شناسهٔ پنجره (window ID) برای بازترسیم در حالت محک زدن. در صورت عدم ذکر یا مقدار 0، کل صفحه بازترسیم می‌شود. .RE .sp \fB\-\-no\-ewmh\-fullscreen\fP .RS 4 عدم استفاده از EWMH برای تشخیص پنجره‌های تمام‌صفحه. روش تشخیص به بررسی صرفاً ابعاد و مختصات پنجره بازمی‌گردد. .RE .sp \fB\-\-max\-brightness\fP .RS 4 کم‌نور کردن پنجره‌های بسیار روشن به گونه‌ای که روشنایی آن‌ها از این مقدارِ تعیین‌شده فراتر نرود. روشنایی پنجره با میانگین‌گیری از تمام پیکسل‌های آن تخمین زده می‌شود، بنابراین ممکن است موجب کاهش عملکرد شود. تنظیم این مقدار روی 1.0 این رفتار را غیرفعال می‌کند. نیازمند غیرفعال بودن \fB\-\-use\-damage\fP است. (پیش‌فرض: 1.0) .RE .sp \fB\-\-transparent\-clipping\fP .RS 4 باعث می‌شود پنجره‌های شفاف مانند پنجره‌های غیرشفاف، پنجره‌های دیگر را برش بزنند (clip کنند)، به‌جای اینکه روی آن‌ها ترکیب (blend) شوند. .RE .sp \fB\-\-transparent\-clipping\-exclude\fP \fICONDITION\fP .RS 4 مشخص کردن فهرستی از شرایط پنجره‌هایی که هرگز نباید برش شفاف روی آن‌ها اعمال شود. این ویژگی برای ابزارهای تصویربرداری از صفحه (اسکرین‌شات) کاربرد دارد، جایی که نیاز است پشت بخش‌های شفاف پنجره دیده شود. .RE .sp \fB\-\-window\-shader\-fg\fP \fISHADER\fP .RS 4 مشخص کردن مسیر شیدر قطعه (GLSL fragment shader) برای رندر محتویات پنجره. شیدر ابتدا نسبت به دایرکتوری‌ای که فایل پیکربندی در آن قرار دارد جستجو می‌شود، سپس در مکان‌های معمول فایل پیکربندی. برای جزئیات بیشتر دربارهٔ این رابط، بخش \fBSHADER INTERFACE\fP را در ادامه ببینید. .RE .sp \fB\-\-window\-shader\-fg\-rule\fP \fISHADER\fP:\fICONDITION\fP .RS 4 مشخص کردن مسیر شیدر قطعه (GLSL fragment shader) برای رندر محتویات پنجره با استفاده از الگوها. مشابه \fB\-\-opacity\-rule\fP، آرگومان‌ها باید با ساختار \fISHADER:CONDITION\fP باشند، مانند "shader.frag:name = \*(Aqwindow\*(Aq". فاصله‌های خالی ابتدا و انتهای \fISHADER\fP حذف خواهند شد. اگر \fISHADER\fP برابر با "default" باشد، شیدر پیش‌فرض برای پنجره‌های منطبق به کار می‌رود. (متأسفانه این بدان معنا نیز هست که نمی‌توانید از یک فایل شیدر به نام "default" استفاده کنید). استفاده از این گزینه توصیه نمی‌شود؛ برای روش پیشنهادی جهت تنظیم شیدرهای مختص هر پنجره، بخش \fBWINDOW RULES\fP را ببینید. .RE .sp \fB\-\-root\-pixmap\-shader\fP \fISHADER\fP .RS 4 مشخص کردن مسیر شیدر قطعه (GLSL fragment shader) برای رندر پیکس‌مپ ریشه (root pixmap). پیکس‌مپ ریشه معمولاً همان تصویر پس‌زمینهٔ میزکار شماست، هرچند در برخی محیط‌های رومیزی چنین نیست. شیدر ابتدا نسبت به دایرکتوری محل فایل پیکربندی و سپس در مسیرهای معمول فایل پیکربندی جستجو می‌شود. برای جزئیات بیشتر، بخش \fBSHADER INTERFACE\fP را در ادامه ببینید. .RE .sp \fB\-\-dithered\-present\fP .RS 4 استفاده از دقت بالاتر در حین رندر، و اعمال دیترینگ (dither) هنگام نمایش صفحهٔ رندر شده. ناهنجاری‌های نواربندی رنگ‌ها (banding artifacts) را کاهش می‌دهد، اما ممکن است باعث افت عملکرد شود. تنها با OpenGL کار می‌کند. .RE.SH "قواعد پنجره (WINDOW RULES)" .sp قواعد پنجره (Window rules) به شما امکان می‌دهند تا گزینه‌های ویژه‌ی پنجره‌ها را تنظیم کنید که می‌توان از آن‌ها برای تغییر ظاهر پنجره‌ها بر اساس شرایطی مشخص استفاده کرد. توجه داشته باشید گزینه‌های دیگری نیز وجود دارند که بخشی از قابلیت‌های قواعد پنجره را پوشش می‌دهند، اما قواعد پنجره انعطاف‌پذیرتر و قدرتمندتر هستند. اگر در حال ایجاد یک فایل پیکربندی جدید هستید، توصیه می‌شود به جای سایر گزینه‌ها از قواعد پنجره استفاده کنید. .sp در ادامه فهرستی از تمام گزینه‌هایی که قواعد پنجره جایگزین آن‌ها شده‌اند آمده است: .sp \fB\-\-shadow\-ignore\-shaped\fP, \fB\-i\fP, \fB\-\-inactive\-opacity\fP=\fIOPACITY\fP, \fB\-\-active\-opacity\fP \fIOPACITY\fP, \fB\-\-inactive\-opacity\-override\fP, \fB\-\-inactive\-dim\fP \fIVALUE\fP, \fB\-\-mark\-wmwin\-focused\fP, \fB\-\-mark\-ovredir\-focused\fP, \fB\-\-invert\-color\-include\fP \fICONDITION\fP, \fB\-\-shadow\-exclude\fP \fICONDITION\fP, \fB\-\-fade\-exclude\fP \fICONDITION\fP, \fB\-\-focus\-exclude\fP \fICONDITION\fP, \fB\-\-rounded\-corners\-exclude\fP \fICONDITION\fP, \fB\-\-blur\-background\-exclude\fP \fICONDITION\fP, \fB\-\-opacity\-rule\fP \fIOPACITY\fP:\fICONDITION\fP, \fB\-\-corner\-radius\-rules\fP \fIRADIUS\fP:\fICONDITION\fP, \fB\-\-window\-shader\-fg\-rule\fP \fISHADER\fP:\fICONDITION\fP, \fB\-\-clip\-shadow\-above\fP \fICONDITION\fP. و همچنین گزینهٔ فایل پیکربندی \fBwintypes\fP. .sp اگر از گزینهٔ قواعد پنجره استفاده شود، هیچ‌کدام از گزینه‌های بالا اثری نخواهند داشت و پیام‌های هشدار صادر خواهد شد. هنگامی که از گزینهٔ قواعد پنجره استفاده می‌شود، کامپوزیتور در شرایط خاصی نیز رفتاری تا حدی متفاوت خواهد داشت. یک نمونه از این موارد این است که گوشه‌های گرد پنجره‌های تمام‌صفحه دیگر به‌طور پیش‌فرض غیرفعال نخواهند شد. .sp اگر در حال حاضر از برخی از این گزینه‌ها استفاده می‌کنید و می‌خواهید به قواعد پنجره مهاجرت کنید، یا اگر می‌خواهید رفتار فعلی را حفظ کنید، برای چگونگی تبدیل آن‌ها به بخش \fBMigrating old rules\fP مراجعه کنید. .SS "نحو (Syntax)" .sp قواعد پنجره تنها در فایل پیکربندی در دسترس هستند. برای تنظیم قواعد پنجره، گزینهٔ \f(CRrules\fP را در فایل پیکربندی به چیزی شبیه به این مقداردهی کنید: .sp .if n .RS 4 .nf .fam C rules = ( { match = "focused"; opacity = 1; }, { match = "name = \*(Aqfirefox\*(Aq"; shadow = true; }, # ... and so on ) .fam .fi .if n .RE .sp مقدار \f(CRrules = ( .\|.\|. )\fP این گزینه را روی یک فهرست (list) تنظیم می‌کند که می‌تواند شامل چندین زیرمورد باشد. برای \f(CRrules\fP، هر زیرمورد باید یک گروه باشد (مانند \f(CR{ key = value; .\|.\|. }\fP) که نشان‌دهندهٔ یک شرط و مجموعه‌ای از گزینه‌ها برای اعمال در هنگام برقراری شرط است. این زیرموردها به ترتیبی که در فایل پیکربندی آمده‌اند مطابقت داده می‌شوند و با برقراری هر شرط، گزینه‌ها اعمال می‌گردند. اگر یک گزینه چندین بار تنظیم شود، آخرین مقدار اعمال خواهد شد. .sp درون هر زیرمورد، این کلیدها در دسترس هستند: .RS 4 .sp match .RS 4 رشتهٔ شرط برای تطبیق پنجره‌ها با آن. برای ساختار نگارشی رشته‌های شرط، بخش \fBFORMAT OF CONDITIONS\fP را در زیر ببینید. در صورت عدم تعیین، این قاعده همیشه منطبق خواهد شد. .RE .sp shadow .RS 4 اینکه آیا در زیر پنجرهٔ منطبق، سایه کشیده شود یا خیر. .RE .sp full\-shadow .RS 4 کنترل می‌کند که آیا زیر بخش‌هایی از پنجره که معمولاً قادر به دیدن آن‌ها نیستید سایه کشیده شود یا خیر. این گزینه زمانی کاربرد دارد که پنجره بخش‌های شفافی داشته باشد و بخواهید در آن نواحی سایه ایجاد شود. .RE .sp shadow\-color .RS 4 رنگ سایه. دارای نحوی مشابه با \fB\-\-shadow\-color\fP \fISTRING\fP. .RE .sp fade .RS 4 اینکه آیا هنگام باز یا بسته شدن پنجرهٔ منطبق، محوشدگی/پدیداری تدریجی (fade in/out) اعمال شود یا خیر. هنگام استفاده از پویانمایی‌ها، این گزینه اثری نخواهد داشت. از این گزینه تنها می‌توان برای غیرفعال کردن پویانمایی‌های محوشدگی که با گزینهٔ \fB\-f\fP یا \fB\-\-fading\fP فعال شده‌اند استفاده کرد. .RE .sp opacity .RS 4 میزان کدر بودن پنجرهٔ منطبق. (0.0 \- 1.0). اگر به‌طور صریح توسط یک قاعده تعیین نشده باشد، مقدار کدر بودن از مشخصه‌های پنجره (مانند _NET_WM_WINDOW_OPACITY) دریافت خواهد شد. .RE .sp blur\-opacity .RS 4 میزان کدر بودن تاری پس‌زمینه. (0.0 \- 1.0). اگر به‌صراحت توسط یک قاعده تنظیم نشود، این مقدار 1.0 خواهد بود. اگر \f(CRblur\-background\fP فعال نباشد، نادیده گرفته می‌شود. .RE .sp dim .RS 4 سطح تیرگی (dim) پنجرهٔ منطبق. مقدار بزرگ‌تر به معنای تیرگی بیشتر است. (0.0 \- 1.0) .RE .sp corner\-radius .RS 4 شعاع گوشهٔ پنجرهٔ منطبق بر حسب تعداد پیکسل. مقدار 0 به معنای گرد نکردن گوشه‌ها است. .RE .sp blur\-background .RS 4 اینکه آیا پس‌زمینهٔ پنجرهٔ منطبق باید تار شود یا خیر. .RE .sp invert\-color .RS 4 اینکه آیا رنگ‌های پنجرهٔ منطبق معکوس شوند یا خیر. .RE .sp clip\-shadow\-above .RS 4 اینکه آیا از کشیده شدن سایه‌ها بر روی پنجرهٔ منطبق جلوگیری شود یا خیر. .RE .sp unredir .RS 4 اینکه آیا پنجرهٔ منطبق باید باعث شود کامپوزیتور تغییرمسیر صفحه را لغو کند (unredirect)، و اینکه آیا در صورت لغو بودن تغییرمسیر، باید دوباره باعث برقراری تغییرمسیر صفحه شود یا خیر. این مقدار می‌تواند یک متغیر بولی باشد؛ اگر \fItrue\fP باشد، در صورتی که پنجرهٔ منطبق دارای شرایط مشخصی باشد، تغییرمسیر صفحه لغو خواهد شد؛ اگر \fIfalse\fP باشد، هرگز باعث لغو تغییرمسیر صفحه نمی‌شود. اگر در حال حاضر تغییرمسیر صفحه لغو شده باشد و پنجرهٔ دیگری وجود نداشته باشد که لغو تغییرمسیر را راه‌اندازی کند، هر دوی این انتخاب‌ها باعث بازگردانی تغییرمسیر صفحه خواهند شد. برای کنترل آن رفتار نیز می‌توانید \f(CRunredir\fP را روی \fIpreferred\fP تنظیم کنید؛ در این حالت چنین پنجره‌هایی در این وضعیت باعث بازگردانی تغییرمسیر نخواهند شد و در سایر شرایط مانند \f(CRtrue\fP رفتار می‌کنند؛ یا مقدار \fIpassive\fP، که نه‌تنها در این حالت باعث تغییرمسیر نمی‌شود، بلکه به‌طور فعال نیز باعث لغو تغییرمسیر صفحه نخواهد شد. آخرین مقدار ممکن برای این گزینه \fIforced\fP است؛ هر پنجره‌ای که مقدار \f(CRunredir\fP آن روی \f(CRforced\fP باشد، بی‌قیدوشرط باعث لغو تغییرمسیر صفحه خواهد شد. مقدار مشخصهٔ \fI_NET_WM_BYPASS_COMPOSITOR\fP روی پنجره تنها و تنها زمانی در نظر گرفته می‌شود که \f(CRunredir\fP به‌صراحت توسط هیچ قاعده‌ای تنظیم نشده باشد. .RE .sp transparent\-clipping .RS 4 اینکه آیا پنجرهٔ منطبق مانند پنجره‌های کدر سایر پنجره‌ها را برش (clip) دهد یا اینکه بر روی آن‌ها ترکیب (blend) شود. وقتی این گزینه روی پنجره‌های شفاف اعمال شود، بدین معنی است که هیچ‌چیزی در زیر بخش‌های شفاف پنجره ترسیم نخواهد شد و در عمل سوراخی در صفحه ایجاد می‌کند. .RE .sp shader .RS 4 مشخصات سایه‌زن قطعه (GLSL fragment shader) برای رندر محتوای پنجره. برای جزئیات بیشتر دربارهٔ این رابط، بخش \fBSHADER INTERFACE\fP را در زیر ببینید. این گزینه می‌تواند یک مسیر ساده به فایل سایه‌زن باشد، اما همچنین امکان مشخص کردن گزینه‌های اضافی برای سایه‌زن وجود دارد. در حال حاضر، تنها گزینه‌های اضافی پشتیبانی‌شده تعاریف ماکرو (macro defines) هستند. نحو: .sp .if n .RS 4 .nf .fam C shader = { path = "path/to/shader.glsl"; defines = { COLOR = "vec4(1.0, 0.0, 0.0, 1.0)"; }; }; .fam .fi .if n .RE .sp این کار عبارت \f(CR#define COLOR vec4(1.0, 0.0, 0.0, 1.0)\fP را به ابتدای سایه‌زن شما می‌افزاید (به عدم وجود علامت نقل‌قول دوتایی دقت کنید). مقدار یک define حتماً باید یک رشته باشد، هر رشته‌ای پذیرفته می‌شود و هیچ پاک‌سازی یا اعتبارسنجی‌ای انجام نخواهد شد. .RE .sp animations .RS 4 تعریف اسکریپت‌های پویانمایی ویژهٔ پنجره. ساختار این گزینه مشابه با گزینهٔ سطح‌بالای \fIanimations\fP است. اطلاعات بیشتر را می‌توانید در بخش \fBANIMATIONS\fP بیابید. اگر اسکریپت‌های پویانمایی در چندین قاعدهٔ منطبق تعریف شده باشند، با یکدیگر ادغام خواهند شد. اگر چندین قاعدهٔ منطبق حاوی اسکریپت‌های پویانمایی برای یک راه‌انداز یکسان باشند، همانند سایر گزینه‌ها، آخرین مورد اثر خواهد کرد. .RE .RE.SS "مهاجرت از قوانین قدیمی (Migrating old rules)" .sp بیشتر گزینه‌های قوانین باید نگاشت یک‌به‌یک (1:1) با قوانین جدید پنجره داشته باشند. در اینجا فهرستی از موارد غیربدیهی و نحوهٔ دستیابی به همان اثر با استفاده از قوانین پنجره آورده شده است. .sp \fBتاریک‌سازی و مات‌سازی حالت غیرفعال\fP .RS 4 این شامل گزینه‌های \fB\-i\fP، \fB\-\-inactive\-opacity\fP=\fIOPACITY\fP، \fB\-\-inactive\-dim\fP \fIVALUE\fP، \fB\-\-active\-opacity\fP \fIOPACITY\fP، \fB\-\-inactive\-opacity\-override\fP، \fB\-\-mark\-wmwin\-focused\fP و \fB\-\-mark\-ovredir\-focused\fP می‌شود. هنگام استفاده از قوانین پنجره، مدیر ترکیب (compositor) دیگر مفهومی به نام «پنجرهٔ فعال» ندارد، زیرا دستیابی به آن با قوانین پنجره آسان است. می‌توانید از \f(CRmatch = "focused || group_focused"\fP برای تطبیق پنجره‌هایی که با گزینه‌های قدیمی فعال محسوب می‌شدند، استفاده کنید. سپس می‌توانید میزان مات‌سازی (opacity) و تاریک‌سازی (dim) را برای پنجره‌های منطبق به تناسب تنظیم نمایید. اثر \fB\-\-mark\-wmwin\-focused\fP و \fB\-\-mark\-ovredir\-focused\fP را می‌توان به ترتیب با افزودن \f(CR|| wmwin\fP و \f(CR|| override_redirect\fP به رشتهٔ تطبیق پیاده‌سازی کرد. \fB\-\-inactive\-opacity\-override\fP نیز با تنظیم \f(CRopacity\-override = true\fP قابل دستیابی است. .if n .sp .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 .B نکته .ps -1 .br .sp تنظیم صریح \fIopacity\fP توسط یک قانون، مقدار opacity حاصل از مشخصه‌های پنجره (مانند \fI_NET_WM_WINDOW_OPACITY\fP) را که توسط ابزارهایی مانند \f(CRpicom\-trans\fP برای تنظیم شفافیت پنجره استفاده می‌شود، بازنویسی (override) خواهد کرد. اگر می‌خواهید همچنان از ابزارهایی مانند \f(CRpicom\-trans\fP استفاده کنید، می‌توانید با تطبیق \f(CR! _NET_WM_WINDOW_OPACITY\fP، مقدار opacity را تنها برای پنجره‌هایی که فاقد این مشخصه هستند تنظیم نمایید. .sp .5v .RE .RE .sp \fBپنجرهٔ فعال\fP .RS 4 این بخش شامل گزینهٔ \fB\-\-focus\-exclude\fP \fICONDITION\fP است. این گزینه تنها برای تعیین پنجره‌هایی که باید فعال تلقی شوند به کار می‌رفت تا مات‌سازی و تاریک‌سازی حالت غیرفعال روی آن‌ها اعمال شود. از آنجا که با وجود قوانین پنجره دیگر نیازی نیست کامپوزیتور برای تعیین فعال بودن یا نبودن به شما کمک کند (توضیحات بالا را ببینید)، این گزینه دیگر مورد نیاز نیست. .RE .sp \fBگوشه‌های گرد و پنجره‌های تمام‌صفحه\fP .RS 4 گوشه‌های گرد دیگر به صورت خودکار برای پنجره‌های تمام‌صفحه غیرفعال نمی‌شوند. اگر می‌خواهید گوشه‌های گرد را برای پنجره‌های تمام‌صفحه غیرفعال کنید، می‌توانید از قانون زیر استفاده نمایید: .sp .if n .RS 4 .nf .fam C rules = ( { match = "fullscreen"; corner\-radius = 0; }, ) .fam .fi .if n .RE .RE .SH "قالب شرط‌ها (FORMAT OF CONDITIONS)" .sp برخی از گزینه‌ها یک رشتهٔ شرط را برای تطبیق پنجره‌های مشخص می‌پذیرند. یک رشتهٔ شرط از یک یا چند شرط تشکیل شده که توسط عملگرهای منطقی به یکدیگر متصل شده‌اند. .sp گرامر صوری (formal grammar) برای یک شرط به شکل زیر است: .sp .if n .RS 4 .nf .fam C Condition <\- Term (\*(Aq||\*(Aq Term)* Term <\- Item (\*(Aq&&\*(Aq Item)* Item <\- \*(Aq!\*(Aq? Target \*(Aq@\*(Aq? (\*(Aq[\*(Aq Index \*(Aq]\*(Aq)? (Operator Pattern)? | \*(Aq(\*(Aq Condition \*(Aq)\*(Aq .fam .fi .if n .RE .sp به طور دقیق‌تر، یک شرط دنباله‌ای از یک یا چند \fIItem\fP برای تطبیق الگوهای ساده است که توسط عملگرهای منطقی \f(CR&&\fP (و) و \f(CR||\fP (یا) به هم متصل شده‌اند. عملگر \f(CR&&\fP اولویت بالاتری نسبت به \f(CR||\fP دارد. هر دو عملگر شرکت‌پذیر از چپ (left\-associative) هستند. برای افزایش اولویت می‌توان از پرانتز استفاده کرد. اگر یک \fIItem\fP دارای عملگر نقیض پیشوند (\f(CR!\fP) باشد، نتیجهٔ آن مورد نقیض می‌شود. .sp درون یک \fIItem\fP: .sp \fITarget\fP .RS 4 یا نام یک هدف از پیش‌تعریف‌شده است، یا نام یک مشخصهٔ پنجره (window property) برای تطبیق. .sp اهداف از پیش‌تعریف‌شدهٔ پشتیبانی‌شده عبارتند از: .RS 4 .sp \f(CRx\fP, \f(CRy\fP, \f(CRx2\fP, \f(CRy2\fP .RS 4 مختصات پنجره، از گوشهٔ بالا-چپ پنجره \f(CR(x, y)\fP تا گوشهٔ پایین-راست \f(CR(x2, y2)\fP. .RE .sp \f(CRwidth\fP, \f(CRheight\fP .RS 4 اندازهٔ پنجره. .RE .sp \f(CRwidthb\fP, \f(CRheightb\fP .RS 4 مشابه \f(CRwidth\fP و \f(CRheight\fP، اما با احتساب حاشیهٔ پنجره. .RE .sp \f(CRborder_width\fP .RS 4 عرض حاشیهٔ پنجره. .RE .sp \f(CRfullscreen\fP .RS 4 نشان‌دهندهٔ تمام‌صفحه بودن پنجره. اگر \fB\-\-no\-ewmh\-fullscreen\fP تنظیم شده باشد، این وضعیت با اندازه و موقعیت پنجره تعیین می‌شود؛ در غیر این صورت، توسط مشخصهٔ \fI_NET_WM_STATE_FULLSCREEN\fP تعیین می‌گردد. .RE .sp \f(CRoverride_redirect\fP .RS 4 نشان‌دهندهٔ این که آیا پنجره دارای حالت override\-redirect است یا خیر. .RE .sp \f(CRargb\fP .RS 4 نشان‌دهندهٔ این که آیا پنجره دارای نمای بصری ARGB است یا خیر. .RE .sp \f(CRfocused\fP .RS 4 نشان‌دهندهٔ فوکوس بودن پنجره. .RE .sp \f(CRgroup_focused\fP .RS 4 نشان‌دهندهٔ این که آیا پنجره در همان گروه پنجرهٔ فوکوس‌شده قرار دارد یا خیر. این گزینه نیازمند \fB\-\-detect\-transient\fP یا \fB\-\-detect\-client\-leader\fP است. .RE .sp \f(CRwmwin\fP .RS 4 نشان‌دهندهٔ این که آیا پنجره شبیه به یک پنجرهٔ مدیر پنجره (WM) است، یعنی هیچ پنجرهٔ کلاینتی ندارد و override\-redirect نیست. .RE .sp \f(CRbounding_shaped\fP .RS 4 نشان‌دهندهٔ این که آیا پنجره دارای شکل محدودکننده (bounding shape) است یا خیر. .RE .sp \f(CRrounded_corners\fP .RS 4 نشان‌دهندهٔ این که آیا شکل محدودکنندهٔ پنجره تنها دارای گوشه‌های گرد است و در بقیهٔ بخش‌ها مستطیلی است یا خیر. این مورد مستلزم \f(CRbounding_shaped\fP است. به \fB\-\-detect\-rounded\-corners\fP نیاز دارد. این گزینه هیچ ارتباطی با \fB\-\-corner\-radius\fP \fIVALUE\fP ندارد. .RE .sp \f(CRwindow_type\fP .RS 4 نوع پنجره، همان‌طور که توسط \fI_NET_WM_WINDOW_TYPE\fP تعریف شده است. فقط نام، به عنوان مثال \fInormal\fP به معنای \fI_NET_WM_WINDOW_TYPE_NORMAL\fP است. از آنجا که یک پنجره می‌تواند چندین نوع داشته باشد، در صورتی که هر یک از انواع پنجره مطابقت داشته باشد، بررسی برابری موفقیت‌آمیز خواهد بود. .RE .sp \f(CRname\fP .RS 4 نام پنجره. این مقدار برابر با \fI_NET_WM_NAME\fP یا \fI_WM_NAME\fP است. .RE .sp \f(CRclass_i\fP, \f(CRclass_g\fP .RS 4 نمونه (instance) و کلاس کلی پنجره. این‌ها به ترتیب مقادیر اول و دوم \fI_WM_CLASS\fP هستند. .RE .sp \f(CRrole\fP .RS 4 نقش پنجره. این مقدار برابر با \fI_WM_WINDOW_ROLE\fP است. .RE .sp \f(CRurgent\fP .RS 4 نشان‌دهندهٔ این که آیا پنجره بر اساس تعریف ICCCM منتظر اقدام فوری کاربر است یا خیر. این مورد فقط بررسی می‌کند که آیا بیت اضطرار (urgency bit) در \fIWM_HINTS\fP تنظیم شده است یا نه. تفسیر این بیت در برنامه‌ها و مدیرهای پنجرهٔ مختلف متفاوت است. برخی از آن‌ها همچنین \fI_NET_WM_STATE_DEMANDS_ATTENTION\fP را در \fI_NET_WM_STATE\fP برای نشان دادن وضعیت اضطراری تنظیم می‌کنند، بنابراین ممکن است بخواهید آن را نیز بررسی کنید (مانند \f(CR_NET_WM_STATE@[*] = \*(Aq_NET_WM_STATE_DEMANDS_ATTENTION\*(Aq\fP). .RE .RE .sp اگر مشخصهٔ پنجره باید روی پنجرهٔ کلاینت (client window) جستجو شود، \fITarget\fP می‌تواند با یک علامت اختیاری \f(CR@\fP همراه باشد. در غیر این صورت پنجرهٔ قاب (frame window) استفاده خواهد شد. .RE .sp \fIIndex\fP .RS 4 شمارهٔ نمایهٔ (اندیس) مشخصه برای جستجو است. به عنوان مثال، \f(CR[2]\fP سومین مقدار مشخصه را بازمی‌گرداند. در صورت عدم تعیین، اولین مقدار (اندیس \f(CR[0]\fP) به طور ضمنی استفاده می‌شود. از مقدار ویژهٔ \f(CR[*]\fP برای تطبیق با تمام مقادیر موجود مشخصه با استفاده از عملگر منطقی OR استفاده کنید. هیچ‌یک از اهداف از پیش‌تعریف‌شده دارای چندین مقدار نیستند، بنابراین از این مورد برای آن‌ها استفاده نکنید. .RE .sp \fIOperator\fP و \fIPattern\fP .RS 4 نحوهٔ تطبیق \fITarget\fP را مشخص می‌کنند. این دو می‌توانند با هم حذف شوند؛ در این حالت اگر \fITarget\fP یک هدف از پیش‌تعریف‌شده نباشد، وجود مشخصهٔ پنجره بررسی می‌شود. برای یک \fITarget\fP از پیش‌تعریف‌شده، حذف \fIOperator\fP و \fIPattern\fP معادل نوشتن \f(CR!= 0\fP است. .sp عملگرهای در دسترس بسته به نوع \fITarget\fP مورد تطبیق تغییر می‌کنند. اگر هدف یک عدد باشد، عملگرها عبارتند از \f(CR=\fP، \f(CR>\fP، \f(CR<\fP، \f(CR>=\fP، \f(CR<=\fP و همچنین نقیض آن‌ها که با قرار دادن پیشوند \f(CR!\fP قبل از عملگر به دست می‌آید (مانند \f(CR!=\fP، \f(CR!>\fP و غیره). اگر هدف یک رشته باشد، عملگرها عبارتند از \f(CR=\fP (برابری دقیق)، \f(CR*=\fP (تطبیق زیررشته)، \f(CR^=\fP (شروع با)، \f(CR%=\fP (تطبیق با glob)، \f(CR~=\fP (تطبیق با regex)، و همچنین نسخه‌های غیرحساس به بزرگ و کوچکی حروف شامل \f(CR?=\fP، \f(CR*?=\fP، \f(CR^?=\fP، \f(CR%?=\fP و \f(CR~?=\fP. عملگرهای رشته‌ای را نیز می‌توان با قرار دادن پیشوند \f(CR!\fP قبل از عملگر نقیض کرد (مانند \f(CR!=\fP، \f(CR!*=\fP و غیره). .sp مقدار \fIPattern\fP یا یک عدد صحیح است یا رشته‌ای که درون علامت‌های نقل‌قول تکی یا دوتایی قرار گرفته است. توالی‌های گریز (escape sequences) به سبک Python\-3 برای رشته‌ها پشتیبانی می‌شوند. مقادیر بولی به صورت عدد صحیح تفسیر می‌شوند، بدین معنا که نوشتن \f(CRtrue\fP معادل \f(CR1\fP و \f(CRfalse\fP معادل \f(CR0\fP است. .RE .sp مثال‌ها: .sp .if n .RS 4 .nf .fam C # اگر پنجره دارای فوکوس باشد focused focused = 1 # اگر پنجره override\-redirect نباشد !override_redirect override_redirect = false override_redirect != true override_redirect != 1 # اگر پنجره یک منو باشد window_type *= "menu" _NET_WM_WINDOW_TYPE@ *= "MENU" # اگر پنجره به عنوان پنهان علامت‌گذاری شده باشد: _NET_WM_STATE شامل _NET_WM_STATE_HIDDEN است _NET_WM_STATE@[*] = "_NET_WM_STATE_HIDDEN" # اگر پنجره به عنوان چسبان علامت‌گذاری شده باشد: _NET_WM_STATE شامل اتومی است که شامل # "sticky" است، بدون در نظر گرفتن بزرگی و کوچکی حروف _NET_WM_STATE@[*] *?= "sticky" # اگر نام پنجره شامل "Firefox" باشد، بدون در نظر گرفتن بزرگی و کوچکی حروف name *?= "Firefox" _NET_WM_NAME@ *?= "Firefox" # اگر نام پنجره به "Firefox" ختم شود name %= "*Firefox" name ~= "Firefox$" # اگر پنجره روی پنجرهٔ قاب خود مشخصهٔ _COMPTON_SHADOW با مقدار 0، نوع CARDINAL، # قالب 32، مقدار 0 داشته باشد _COMPTON_SHADOW = 0 # اگر سومین مقدار _NET_FRAME_EXTENTS کمتر از 20 باشد، یا هیچ مشخصهٔ # _NET_FRAME_EXTENTS روی پنجرهٔ کلاینت وجود نداشته باشد _NET_FRAME_EXTENTS@[2] < 20 || !_NET_FRAME_EXTENTS@ # الگوی اینجا به صورت "dd4" تجزیه خواهد شد name = "\(rsx64\(rsx64\(rso64" # این دو معادل یکدیگر هستند name = \*(AqFirefox\*(Aq || name = \*(AqChromium\*(Aq && class_i = \*(AqNavigator\*(Aq name = \*(AqFirefox\*(Aq || (name = \*(AqChromium\*(Aq && class_i = \*(AqNavigator\*(Aq) .fam .fi .if n .RE.SH "پویانمایی‌ها (ANIMATIONS)" .sp نرم‌افزار picom هنگام باز یا بسته شدن یک پنجره، از پویانمایی محوشدگی پشتیبانی می‌کند. افزون بر آن، picom دارای یک سامانه اسکریپت پویانمایی بسیار قدرتمند است که می‌تواند برای متحرک‌سازی جنبه‌های گوناگون یک پنجره بر اساس محرک‌های مشخص استفاده شود. اسکریپت‌های پویانمایی را می‌توان در فایل پیکربندی با تنظیم گزینه \fIanimations\fP تعریف کرد. همچنین می‌توان با استفاده از سامانه \fBWINDOW RULES\fP و تنظیم گزینه animations درون یک قاعده، پویانمایی‌ها را به ازای هر پنجره به‌طور جداگانه تعریف کرد. (پیش از رفتن به آن بخش، ابتدا ادامه این بخش را بخوانید.) .sp نحو پایه‌ای گزینه \fIanimations\fP به صورت زیر است: .sp .if n .RS 4 .nf .fam C animations = ({ triggers = [ ... ]; suppressions = [ ... ]; # more options follow ... }, { # another animation script }, ...) .fam .fi .if n .RE .sp عبارت \f(CRanimations = ( .\|.\|. )\fP گزینه \fIanimations\fP را روی یک فهرست تنظیم می‌کند که می‌تواند شامل چندین زیرآیتم باشد و هر آیتم یک اسکریپت پویانمایی است. یک اسکریپت پویانمایی، گروهی شامل چندین مدخل است (مانند \f(CR{ key = value; .\|.\|. }\fP). همه اسکریپت‌های پویانمایی در برخی گزینه‌های مشترک، مانند \fItriggers\fP و \fIsuppressions\fP، اشتراک دارند؛ آن‌ها همچنین شامل گزینه‌های دیگری هستند که یا پویانمایی واقعی را تعریف کرده، یا یک پیش‌تنظیم پویانمایی را انتخاب می‌کنند. .SS "گزینه‌های مشترک (Common options)" .sp \fItriggers\fP .RS 4 فهرستی از محرک‌ها که زمان آغاز این پویانمایی را مشخص می‌کنند. هر محرک می‌تواند حداکثر یک اسکریپت پویانمایی مرتبط داشته باشد، در غیر این صورت رفتار تعریف‌نشده خواهد بود و یک هشدار صادر می‌شود. .sp محرک‌های معتبر عبارتند از: .RS 4 .sp \fIopen\fP .RS 4 هنگامی که یک پنجره باز می‌شود. .RE .sp \fIclose\fP .RS 4 هنگامی که یک پنجره بسته می‌شود. .RE .sp \fIshow\fP .RS 4 هنگامی که یک پنجره کمینه‌شده یا نمادین‌شده نمایش داده می‌شود. .RE .sp \fIhide\fP .RS 4 هنگامی که یک پنجره کمینه یا نمادین می‌شود. .RE .sp \fIincrease\-opacity\fP .RS 4 هنگامی که کدر بودن یا شفافیت ماتی یک پنجره افزایش می‌یابد. اگر کدر بودن و شفافیت ماتی در جهات متفاوتی تغییر کنند، تغییر opacity اولویت دارد. .RE .sp \fIdecrease\-opacity\fP .RS 4 هنگامی که کدر بودن یا شفافیت ماتی یک پنجره کاهش می‌یابد. اگر کدر بودن و شفافیت ماتی در جهات متفاوتی تغییر کنند، تغییر opacity اولویت دارد. .RE .sp \fIsize\fP, \fIposition\fP .RS 4 هنگامی که اندازه یا موقعیت مکانی یک پنجره تغییر می‌کند. اگر هر دو تغییر کنند، محرک size اولویت دارد. (آزمایشی) .RE .sp \fIcolor\fP .RS 4 هنگامی که ویژگی رنگ پنجره تغییر می‌کند. در حال حاضر این تنها شامل \fIshadow\-color\fP می‌شود. .RE .sp \fIgeometry\fP .RS 4 نام مستعار size + position. .if n .sp .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 .B هشدار .ps -1 .br .sp محرک‌های \fIsize\fP و \fIposition\fP آزمایشی هستند. استفاده از این محرک‌ها به این معناست که می‌پذیرید این پویانمایی‌ها هنگام تغییر اندازه یا جابه‌جایی دستی پنجره (مانند زمانی که پنجره را با ماوس می‌کشید) نیز فعال خواهند شد. .sp .5v .RE .RE .RE .RE .sp \fIsuppressions\fP .RS 4 مشخص می‌کند هنگام اجرای این پویانمایی، کدام پویانمایی‌های دیگر باید سرکوب شوند. در حالت عادی، اگر در زمان اجرای یک پویانمایی محرک دیگری فعال شود، پویانمایی در حال اجرا متوقف شده و پویانمایی جدید آغاز می‌گردد. اگر می‌خواهید از این رفتار جلوگیری کنید، می‌توانید گزینه \f(CRsuppressions\fP را روی فهرستی از محرک‌هایی که باید سرکوب شوند تنظیم کنید. این گزینه اختیاری است و مقدار پیش‌فرض آن یک فهرست خالی می‌باشد. .RE .SS "پیش‌تنظیم‌ها (Presets)" .sp تعریف یک پویانمایی کمی پیچیده است. برای ساده‌تر کردن دسترسی به پویانمایی‌ها، بدون اینکه نیازی به یادگیری جزئیات دقیق سامانه اسکریپت‌نویسی داشته باشید، picom تعدادی پیش‌تنظیم ارائه می‌دهد که می‌توانید تنها با مشخص کردن چند گزینه از آن‌ها استفاده کنید. .sp برای انتخاب یک پیش‌تنظیم، گزینه \fIpreset\fP را مانند زیر به یک گروه اسکریپت پویانمایی اضافه کنید: .sp .if n .RS 4 .nf .fam C animations = ({ triggers = [ "close", "hide" ]; preset = "slide\-out"; direction = "down"; ... }, ...) .fam .fi .if n .RE .sp برخی پیش‌تنظیم‌ها دارای گزینه‌های اضافی هستند که می‌توانید برای سفارشی‌سازی پویانمایی آن‌ها را تنظیم کنید. در این مثال، پیش‌تنظیم \fIslide\-out\fP دارای گزینه \fIdirection\fP است که جهت پویانمایی لغزشی را مشخص می‌کند. .if n .sp .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 .B نکته .ps -1 .br .sp توصیف پویانمایی‌ها تنها با کلمات دشوار است. ما ویدیوهای کوتاهی داریم که هر پیش‌تنظیم را نمایش می‌دهند، اما متأسفانه نمی‌توان آن‌ها را در این صفحه راهنما گنجاند. از سوی دیگر، نسخه وب این سند که در وب‌سایت ما در آدرس \c .URL "https://picom.app" "" "" میزبانی می‌شود، شامل این ویدیوها است. .sp .5v .RE .sp پیش‌تنظیم‌های زیر در دسترس هستند: .RS 4 .sp \fIslide\-in\fP, \fIslide\-out\fP .RS 4 .sp نمایش/پنهان کردن پنجره با یک پویانمایی لغزشی. .sp \fBگزینه‌ها\fP .RS 4 .sp \fIdirection\fP .RS 4 جهت لغزش؛ مقادیر معتبر عبارتند از \fIup\fP، \fIdown\fP، \fIleft\fP، \fIright\fP. .RE .sp \fIduration\fP .RS 4 مدت زمان پویانمایی بر حسب ثانیه. (می‌تواند اعشاری باشد). .RE .RE .RE .sp \fIfly\-in\fP, \fIfly\-out\fP .RS 4 .sp نمایش/پنهان کردن پنجره با یک پویانمایی پروازی. .sp \fBگزینه‌ها\fP .RS 4 .sp \fIdirection\fP .RS 4 جهت پرواز؛ مقادیر معتبر عبارتند از \fIup\fP، \fIdown\fP، \fIleft\fP، \fIright\fP. .RE .sp \fIduration\fP .RS 4 مدت زمان پویانمایی بر حسب ثانیه. .RE .RE .RE .sp \fIappear\fP, \fIdisappear\fP .RS 4 .sp نمایش/پنهان کردن پنجره با ترکیبی از مقیاس‌بندی و محوشدگی. .sp \fBگزینه‌ها\fP .RS 4 .sp \fIscale\fP .RS 4 ضریب مقیاس‌بندی پنجره؛ مقدار 1.0 به معنای عدم مقیاس‌بندی است. .RE .sp \fIduration\fP .RS 4 مدت زمان پویانمایی بر حسب ثانیه. .RE .RE .RE .sp \fIgeometry\-change\fP .RS 4 .sp پویانمایی تغییر هندسه (یعنی اندازه و موقعیت مکانی) پنجره. .if n .sp .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 .B هشدار .ps -1 .br .sp این پیش‌تنظیم هم از محرک \fIgeometry\fP و هم از متغیر خروجی \fIsaved\-image\-blend\fP استفاده می‌کند. هر دوی این ویژگی‌ها آزمایشی هستند و ممکن است طبق انتظار کار نکنند. .sp .5v .RE .sp \fBگزینه‌ها\fP .RS 4 .sp \fIduration\fP .RS 4 مدت زمان پویانمایی بر حسب ثانیه. .RE .RE .RE .RE.SS "پیشرفته (Advanced)" .sp اگر پیش‌تنظیم‌های موجود نیازهای شما را برآورده نمی‌کنند، همیشه این امکان وجود دارد که پویانمایی‌های سفارشی خود را تعریف کنید. به بیان ساده، یک اسکریپت پویانمایی صرفاً مجموعه‌ای از متغیرها و نحوه محاسبه مقادیر آن‌هاست. اسکریپت‌های پویانمایی هنگام اجرا، یک بار در هر فریم ارزیابی می‌شوند و سپس مقادیر برخی از این متغیرها برای متحرک‌سازی پنجره به کار می‌روند. .sp \fBنحو پایه (Basic syntax)\fP .sp برای نشان دادن دقیق و ملموس مفهوم بالا، در اینجا یک مثال آورده شده است: .sp .if n .RS 4 .nf .fam C # this animation script does nothing to your windows by the way. animations = ({ # common options, these are not part of the collection of variables triggers = [ "open" ]; # variables a = 10; b = "a * 10"; c = "a + b"; d = { curve = "cubic\-bezier(0.25, 0.1, 0.25, 1.0)"; duration = 0.5; delay = 0; start = 0; end = 1; }; # more options follow # ... }, ...) .fam .fi .if n .RE .sp یک متغیر می‌تواند به‌صورت یک عدد، یک عبارت (expression) یا یک تابع زمان‌بندی (timing function) تعریف شود. در مثال بالا، \fIa\fP به‌صورت یک عدد (10)، \fIb\fP به‌صورت نتیجه عبارت \f(CRa * 10\fP و \fIc\fP نیز به همین ترتیب تعریف شده‌اند. عبارتی که برای تعریف یک متغیر به کار می‌رود می‌تواند به متغیرهای دیگر در همان اسکریپت ارجاع دهد. از این طریق می‌توانید پویانمایی‌های پیچیده‌ای ایجاد کنید. تا زمانی که هیچ ارجاع چرخه‌ای وجود نداشته باشد، محل تعریف متغیرها در اسکریپت اهمیتی ندارد. .if n .sp .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 .B نکته .ps -1 .br .sp از آنجا که نام متغیرها می‌تواند شامل خط تیره (\f(CR\-\fP) باشد، علامت‌های منفی در عبارت‌ها باید با فاصله احاطه شوند. برای مثال، \f(CRa \- 10\fP به معنای \f(CRa\fP منهای \f(CR10\fP است، در حالی که \f(CRa\-10\fP متغیری به نام \f(CRa\-10\fP است. .sp .5v .RE .sp متغیر \fId\fP یک تابع زمان‌بندی است؛ یعنی گروهی با چندین گزینه که رفتار آن را مشخص می‌کنند. توابع زمان‌بندی عاملی هستند که پویانمایی را به حرکت درمی‌آورند. اگر هیچ تابع زمان‌بندی در یک اسکریپت پویانمایی تعریف نشود، هیچ چیزی متحرک نخواهد شد و پویانمایی فوراً پایان می‌یابد. .sp این گزینه‌ها برای یک تابع زمان‌بندی معتبر هستند: .RS 4 .sp \fIcurve\fP .RS 4 نوع منحنی و پارامترهای آن. می‌تواند \fIlinear\fP باشد که هیچ پارامتری نمی‌پذیرد و یک منحنی خطی را تعریف می‌کند؛ یا \fIcubic\-bezier\fP که چهار پارامتر برای چهار نقطه کنترلی منحنی بزیه درجه سه دریافت می‌کند؛ یا \fIsteps\fP که یک یا دو پارامتر می‌گیرد: اولی تعداد گام‌ها و دومی \(lqjumpterm\(rq است که می‌تواند \fIjump\-start\fP، \fIjump\-end\fP، \fIjump\-none\fP یا \fIjump\-both\fP باشد. گزینه \fIcurve\fP اختیاری است؛ اگر مشخص نشود، منحنی خطی به کار خواهد رفت. .RE .sp \fIdelay\fP .RS 4 تعداد ثانیه‌های انتظار پیش از شروع تغییر مقدار. اختیاری است، مقدار پیش‌فرض 0 است. .RE .sp \fIduration\fP .RS 4 تعداد ثانیه‌هایی که پس از شروع تغییر مقدار، طول می‌کشد تا متغیر از \fIstart\fP به \fIend\fP برسد. اجباری است و باید بزرگ‌تر از 0 باشد. .RE .sp \fIstart\fP .RS 4 مقدار اولیه متغیر. اجباری است. .RE .sp \fIend\fP .RS 4 مقدار نهایی متغیر. اجباری است. .RE .RE .sp همه گزینه‌ها به جز \fIcurve\fP را می‌توان با عبارت‌ها مقداردهی کرد. گزینه‌های تابع زمان‌بندی، خود متغیر به شمار نمی‌روند. .if n .sp .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 .B نکته .ps -1 .br .sp اگر هر یک از گزینه‌های \fIdelay\fP، \fIduration\fP، \fIstart\fP یا \fIend\fP با یک عبارت تعریف شده باشند، آن عبارت فقط یک بار در زمان شروع پویانمایی ارزیابی می‌شود. سپس مقادیر \fIdelay\fP، \fIduration\fP، \fIstart\fP و \fIend\fP در طول مدت پویانمایی ثابت خواهند ماند. .sp .5v .RE .sp مدت‌زمان کل یک پویانمایی بر اساس مدت‌زمان طولانی‌ترین تابع زمان‌بندی تعیین می‌شود. پویانمایی زمانی به پایان می‌رسد که طولانی‌ترین تابع زمان‌بندی خاتمه یابد. پس از پایان پویانمایی، اثرات آن بر روی پنجره حذف خواهد شد. .sp هیچ محدودیتی در نحوه نام‌گذاری متغیرها وجود ندارد. بدیهی است که آن‌ها نمی‌توانند با نام گزینه‌های عمومی (\fItriggers\fP، \fIsuppressions\fP و \fIpreset\fP) تداخل داشته باشند، اما جدا از این مورد، تا زمانی که libconfig اجازه دهد می‌توانید هر نامی را انتخاب کنید. برخی از نام‌های متغیرها معانی ویژه‌ای دارند که در ادامه بررسی خواهند شد. .sp \fBمتغیرهای خروجی (Output variables)\fP .sp اکنون می‌دانید چگونه یک اسکریپت پویانمایی بنویسید. اما آنچه نوشتیم در عمل هیچ تغییری روی پنجره ایجاد نمی‌کند. برای متحرک‌سازی پنجره، مجموعه‌ای از نام‌های متغیر ویژه را تعریف می‌کنیم که آن‌ها را \(lqمتغیرهای خروجی\(rq می‌نامیم. اگر متغیرهایی با این نام‌ها تعریف کنید، مقادیر آن‌ها برای متحرک‌سازی پنجره به کار می‌رود. .sp برای مثال، اگر یک اسکریپت پویانمایی را به این شکل تعریف کنید: .sp .if n .RS 4 .nf .fam C animations = ({ triggers = [ "open" ]; offset\-x = { duration = 2; start = 0; end = 100; }; }, ...) .fam .fi .if n .RE .sp آنگاه با باز شدن پنجره، در طول ۲ ثانیه ۱۰۰ پیکسل به سمت راست جابه‌جا خواهد شد. .if n .sp .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 .B هشدار .ps -1 .br .sp اگرچه گفتیم می‌توانید نام متغیرها را آزادانه انتخاب کنید، اما اگر برخی از آن‌ها در آینده به عنوان متغیر خروجی تعریف شوند، اسکریپت پویانمایی شما رفتار غیرمنتظره‌ای خواهد داشت. برای جلوگیری از این گونه مشکلات، چندین رده از نام‌های متغیر را رزرو کرده‌ایم که هرگز برای متغیرهای خاص به کار نخواهند رفت. این نام‌ها عبارتند از: ۱) هر نامی که با یک حرف منفرد و به دنبال آن یک خط تیره شروع شود (مانند \f(CRa\-\fP، \f(CRb\-\fP و غیره)؛ ۲) هر نامی که با \f(CRvar\-\fP، \f(CRtmp\-\fP یا \f(CRuser\-\fP آغاز شود. اگر نیاز به تعریف یک متغیر غیرخروجی دارید، از یکی از این نام‌ها استفاده کنید. .sp .5v .RE .sp در حال حاضر، این متغیرهای خروجی پشتیبانی می‌شوند: .RS 4 .sp \fIoffset\-x\fP، \fIoffset\-y\fP .RS 4 جابه‌جایی (offset) پنجره به ترتیب در راستای محورهای X و Y. بدنه پنجره به این مقدار جابه‌جا خواهد شد. توجه داشته باشید که این گزینه بر سایه تأثیری ندارد؛ بنابراین اگر این متغیرها را تعریف کنید اما \fIshadow\-offset\-x\fP یا \fIshadow\-offset\-y\fP را مقداردهی نکنید، سایه در جایگاه بدون پویانمایی پنجره باقی خواهد ماند. .RE .sp \fIshadow\-offset\-x\fP، \fIshadow\-offset\-y\fP .RS 4 جابه‌جایی سایه به ترتیب در راستای محورهای X و Y. سایه به این مقدار جابه‌جا خواهد شد. این جابه‌جایی \fBپس از\fP مقیاس‌بندی پنجره و سایه اعمال می‌شود. .RE .sp \fIopacity\fP .RS 4 میزان کدر بودن (opacity) پنجره. این یک مقدار عددی بین 0 و 1 است. .RE .sp \fIblur\-opacity\fP .RS 4 میزان کدر بودن تاری (blur) پشت پنجره. این یک مقدار عددی بین 0 و 1 است. .RE .sp \fIshadow\-opacity\fP .RS 4 میزان کدر بودن سایه. این یک مقدار عددی بین 0 و 1 است. .RE .sp \fIshadow\-red\fP، \fIshadow\-green\fP، \fIshadow\-blue\fP .RS 4 رنگ سایه. هر مؤلفه به‌صورت مجزا مشخص می‌شود و هر عدد بین 0 و 1 است. .RE .sp \fIscale\-x\fP، \fIscale\-y\fP، \fIshadow\-scale\-x\fP، \fIshadow\-scale\-y\fP .RS 4 ضریب مقیاس پنجره و سایه به ترتیب در راستای محورهای X و Y. مقدار 1.0 به معنای بدون تغییر اندازه است. بدنه پنجره و سایه به‌طور مستقل مقیاس‌بندی می‌شوند. مبدأ مقیاس در هنگام تغییر اندازه برای \fBهر دوی\fP آن‌ها، گوشه بالا-چپ پنجره خواهد بود. .RE .sp \fIcrop\-x\fP، \fIcrop\-y\fP، \fIcrop\-width\fP، \fIcrop\-height\fP .RS 4 ترکیب این چهار مقدار، یک مستطیل روی صفحه نمایش را مشخص می‌کند. پنجره و سایه آن به اندازه این مستطیل برش خواهند خورد (crop). در صورت عدم تعریف، پنجره و سایه برش داده نمی‌شوند. .RE .sp \fIsaved\-image\-blend\fP .RS 4 هنگامی که هندسه (geometry) پنجره تغییر می‌کند، محتوای آن اغلب دستخوش دگرگونی شدیدی می‌شود که ناپیوستگی نامطلوبی پدید می‌آورد. این متغیر خروجی امکان ادغام و ترکیب (blend) محتوای پنجره را پیش و پس از تغییر هندسه فراهم می‌کند؛ تصویرهای پیش و پس از تغییر متناسب با پویانمایی کشیده می‌شوند. بدین ترتیب می‌توانید تغییرات هندسه را به‌صورت کاملاً نرم و روان متحرک‌سازی کنید. این مقدار عددی بین 0 و 1 است؛ مقدار 0 به معنای عدم استفاده از تصویر ذخیره‌شده است، در حالی که 1 یعنی تنها تصویر ذخیره‌شده دیده خواهد شد. (آزمایشی) .if n .sp .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 .B هشدار .ps -1 .br .sp متغیر \fIsaved\-image\-blend\fP آزمایشی است. این متغیر ممکن است عملکرد نادرستی داشته باشد، مصنوعات بصری ایجاد کند یا باعث افت سرعت سیستم شود. در صورت بروز هرگونه مشکل برای کمک به بهبود آن می‌توانید یک issue در GitHub ثبت کنید، اگرچه تضمینی برای حل قطعی آن وجود ندارد. .sp .5v .RE .RE .RE .sp تمامی مختصات بر حسب پیکسل و در دستگاه مختصات صفحه نمایش هستند. اندازه‌ها نیز بر حسب پیکسل محاسبه می‌شوند. .if n .sp .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 .B مهم .ps -1 .br .sp اگر نام یک متغیر خروجی در اسکریپت پویانمایی شما تعریف نشود، مقدار پیش‌فرض متناظر با وضعیتی که پنجره در آن قرار دارد را خواهد گرفت. به‌ویژه، اگر متغیر \fIopacity\fP را در اسکریپت پویانمایی برای راه‌انداز \(lqclose\(rq یا \(lqhide\(rq تعریف نکنید، یک پنجره بسته به صورت پیش‌فرض مقدار کدر بودن 0 خواهد داشت؛ در نتیجه پنجره به طور آنی ناپدید خواهد شد. در بیشتر موارد، لازم است مقدار \fIopacity\fP را روی 1 تنظیم کنید تا پنجره در طول مدت پویانمایی نمایان بماند. .sp .5v .RE .sp \fBمتغیرهای زمینه (Context variables)\fP .sp اکنون می‌دانید چگونه پنجره را متحرک کنید. اما این قابلیت هنوز برای پیاده‌سازی بسیاری از پویانمایی‌های دلخواه کافی نیست. برای نمونه، اگر بخواهید پنجره به بیرون از سمت راست صفحه حرکت کند، تعداد پیکسل‌های لازم برای جابه‌جایی به پهنای پنجره و موقعیت آن روی صفحه بستگی خواهد داشت. برای تکمیل این قابلیت‌ها، متغیرهای زمینه ارائه شده‌اند. .sp متغیر زمینه، متغیری است که picom برای شما تعریف می‌کند و می‌توانید مانند هر متغیر دیگری از آن در عبارت‌ها استفاده نمایید. مقادیر آن‌ها ویژگی‌های خاصی از پنجره در حال متحرک‌سازی را بازتاب می‌دهند. .if n .sp .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 .B هشدار .ps -1 .br .sp اگر متغیری با نام یکسان با یکی از متغیرهای زمینه تعریف کنید، متغیر شما متغیر زمینه را می‌پوشاند (shadow می‌کند). از آنجا که در آینده ممکن است متغیرهای زمینه بیشتری اضافه شوند، جلوگیری از این تداخل دشوار خواهد بود. بنابراین، همان قاعده متغیرهای خروجی در اینجا نیز صدق می‌کند: اگر نیاز به تعریف متغیر موقت دارید، از یکی از نام‌های رزرو شده استفاده کنید. .sp .5v .RE .sp در حال حاضر، این متغیرهای زمینه تعریف شده‌اند: .RS 4 .sp \fIwindow\-x\fP، \fIwindow\-y\fP .RS 4 مختصات گوشه بالا-چپ پنجره. .RE .sp \fIwindow\-width\fP، \fIwindow\-height\fP .RS 4 اندازه پنجره. .RE .sp \fIwindow\-x\-before\fP، \fIwindow\-y\-before\fP، \fIwindow\-width\-before\fP، \fIwindow\-height\-before\fP .RS 4 اندازه و مختصات پنجره در فریم قبلی. این متغیرها تنها در پویانمایی‌هایی که با راه‌انداز \fIgeometry\fP آغاز شده‌اند، تفاوت معناداری با متغیرهای هندسه عادی پنجره خواهند داشت. .RE .sp \fIwindow\-monitor\-x\fP، \fIwindow\-monitor\-y\fP، \fIwindow\-monitor\-width\fP، \fIwindow\-monitor\-height\fP .RS 4 مستطیلی را تعریف می‌کند که نمایانگر نمایشگری است که پنجره روی آن قرار دارد. اگر پنجره به‌طور کامل درون هیچ نمایشگری جای نگرفته باشد، این مستطیل کل صفحه مجازی را منعکس خواهد کرد. .RE .sp \fIwindow\-raw\-opacity\-before\fP، \fIwindow\-raw\-opacity\fP .RS 4 راه‌اندازهای پویانمایی معمولاً با تغییر در کدر بودن پنجره همراه‌اند؛ برای مثال هنگام باز شدن پنجره، شفافیت آن از 0 به 1 تغییر می‌کند. این دو متغیر، کدر بودن پنجره را برای فریم قبلی و فریم فعلی نشان می‌دهند. این متغیرها در زمان گذار نرم و روان کدر بودن پنجره کاربرد دارند. .RE .sp \fIwindow\-blur\-opacity\-before\fP، \fIwindow\-blur\-opacity\fP .RS 4 میزان کدر بودن تاری پنجره برای فریم قبلی و فعلی. .RE .sp \fIwindow\-shadow\-red\fP، \fIwindow\-shadow\-green\fP، \fIwindow\-shadow\-blue\fP، \fIwindow\-shadow\-red\-before\fP، \fIwindow\-shadow\-green\-before\fP، \fIwindow\-shadow\-blue\-before\fP .RS 4 رنگ سایه پیش و پس از تغییر رنگ سایه. (یادداشت‌های زیر را درباره متغیرهای \fIwindow\-*\-before\fP ببینید). .RE .RE .if n .sp .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 .B مهم .ps -1 .br .sp تمام متغیرهای \fIwindow\-*\-before\fP در هر فریم به‌روزرسانی می‌شوند و وضعیت پنجره در فریم قبلی را نشان می‌دهند؛ بدین معنی که آن‌ها تنها در یک فریم منفرد (زمانی که پویانمایی تازه آغاز شده است) معنادار هستند. بنابراین فقط باید از آن‌ها برای تعیین مقادیر \fIstart\fP، \fIend\fP، \fIduration\fP یا \fIdelay\fP در تابع زمان‌بندی استفاده کنید، زیرا این مقادیر تنها یک بار هنگام شروع پویانمایی ارزیابی می‌گردند. .sp .5v .RE.SS "اشتراک‌گذاری پویانمایی‌های خود (Share your animations)" .sp اگر اسکریپت پویانمایی ایجاد کرده‌اید که فکر می‌کنید بسیار جالب است، تشویق می‌شوید آن را با جامعه به اشتراک بگذارید. می‌توانید یک issue یا یک pull request برای picom در GitHub ثبت کنید تا این شانس را داشته باشید که پویانمایی شما به عنوان یکی از پیش‌تنظیم‌ها گنجانده شود و توسط همگان مورد استفاده قرار گیرد. .SH "رابط سایه‌زن (SHADER INTERFACE)" .sp این بخش رابط کاربری یک سایه‌زن (shader) سفارشی، نحوه استفاده picom از آن، و پارامترهایی که توسط picom به سایه‌زن ارسال می‌شوند را شرح می‌دهد. .sp یک سایه‌زن سفارشی، برنامه‌ای از نوع سایه‌زن قطعه GLSL (یا همان GLSL fragment shader) است که می‌تواند برای لغو روش پیش‌فرض رندر شدن پنجره‌ها استفاده شود. در صورت استفاده از سایه‌زن سفارشی، جلوه‌های پیش‌فرض picom (مانند کم‌نور کردن، معکوس‌سازی رنگ و غیره) دیگر به‌طور خودکار اعمال نخواهند شد. این وظیفه سایه‌زن سفارشی است که این جلوه‌ها را اعمال کند. .sp رابط بین picom و سایه‌زن سفارشی به backend مورد استفاده وابسته است. پشتانه xrender اصلاً از سایه‌زن پشتیبانی نمی‌کند. در اینجا رابط ارائه‌شده توسط backend glx را توضیح می‌دهیم. .sp سایه‌زن باید تابعی به نام \fIvec4 window_shader()\fP را تعریف کند که نقطه ورود (entry point) سایه‌زن خواهد بود. مقدار \fIvec4\fP بازگردانده‌شده برای تنظیم \fIgl_FragColor\fP استفاده می‌شود. تابع \fIvec4 default_post_processing(vec4 c)\fP نیز برای اعمال جلوه‌های پیش‌فرض picom به رنگ ورودی \*(Aqc\*(Aq در نظر گرفته شده است. .sp متغیرهای یکنواخت/ورودی (uniform/input) زیر در دسترس سایه‌زن قرار دارند: .sp .if n .RS 4 .nf .fam C in vec2 texcoord;\& // texture coordinate of the fragment uniform float opacity;\& // opacity of the window (0.0 \- 1.0) uniform float dim;\& // dimming factor of the window (0.0 \- 1.0, higher means more dim) uniform float corner_radius;\& // corner radius of the window (pixels) uniform float border_width;\& // estimated border width of the window (pixels) uniform bool invert_color;\& // whether to invert the color of the window uniform sampler2D tex;\& // texture of the window uniform vec2 effective_size;\& // effective dimensions of the texture (repeats pixels if larger than tex) uniform sampler2D brightness; // estimated brightness of the window, 1x1 texture uniform float max_brightness; // configured maximum brightness of the window (0.0 \- 1.0) uniform float time;\& // time in milliseconds, counting from an unspecified starting point .fam .fi .if n .RE .sp رفتار پیش‌فرض رندر پنجره در picom را می‌توان با سایه‌زن زیر بازتولید کرد: .sp .if n .RS 4 .nf .fam C #version 330 in vec2 texcoord;\& // texture coordinate of the fragment uniform sampler2D tex;\& // texture of the window // Default window post\-processing: // 1) invert color // 2) opacity / transparency // 3) max\-brightness clamping // 4) rounded corners vec4 default_post_processing(vec4 c); // Default window shader: // 1) fetch the specified pixel // 2) apply default post\-processing vec4 window_shader() { vec2 texsize = textureSize(tex, 0); vec4 c = texture2D(tex, texcoord / texsize, 0); return default_post_processing(c); } .fam .fi .if n .RE .sp انتظار می‌رود این رابط تا حد زیادی پایدار باقی بماند. .SH "فایل‌های پیکربندی (CONFIGURATION FILES)" .sp در صورتی که پشتیبانی از libconfig در picom کامپایل شده باشد، امکان خواندن تنظیمات از فایل پیکربندی وجود دارد. اگر گزینه \fB\-\-config\fP به کار نرود، picom به دنبال فایل پیکربندی ابتدا در \f(CR$XDG_CONFIG_HOME/picom.conf\fP (معمولاً \f(CR~/.config/picom.conf\fP)، سپس \f(CR$XDG_CONFIG_HOME/picom/picom.conf\fP، سپس \f(CR$XDG_CONFIG_DIRS/picom.conf\fP (اغلب \f(CR/etc/xdg/picom.conf\fP) و سپس در \f(CR$XDG_CONFIG_DIRS/picom/picom.conf\fP می‌گردد. .sp هنگامی که دستور \f(CR@include\fP در فایل پیکربندی استفاده شود، picom ابتدا فایل ضمیمه‌شده را در پوشه والد \f(CRpicom.conf\fP، سپس در \f(CR$XDG_CONFIG_HOME/picom/include/\fP و در نهایت در \f(CR$XDG_CONFIG_DIRS/picom/include\fP جستجو خواهد کرد. .sp نرم‌افزار picom از قالب عمومی فایل‌های پیکربندی libconfig استفاده می‌کند. یک نمونه فایل پیکربندی با نام \f(CRpicom.sample.conf\fP در درخت سورس برنامه موجود است. اکثر سوییچ‌های خط فرمان را می‌توان به عنوان گزینه‌هایی در فایل پیکربندی نیز استفاده کرد. برای نمونه، گزینه \fB\-\-vsync\fP که پیش‌تر مستند شد را می‌توان با عبارت `vsync = ` در فایل پیکربندی مقداردهی کرد. گزینه‌های خط فرمان همواره تنظیمات تعیین‌شده در فایل پیکربندی را رونویسی (overwrite) خواهند کرد. .sp برخی گزینه‌ها را فقط می‌توان در فایل پیکربندی مشخص کرد. این گزینه‌ها شامل \f(CRrules\fP (بخش \fBقوانین پنجره (WINDOW RULES)\fP را ببینید)، \f(CRanimations\fP (بخش \fBپویانمایی‌ها (ANIMATIONS)\fP را ببینید) و \f(CRwintypes\fP (توضیحات ذیل) می‌شوند. .sp تنظیمات مختص نوع پنجره (Window\-type\-specific) به شما اجازه می‌دهند تا گزینه‌های خاصی را بر اساس نوع پنجره تعیین کنید. این تنظیمات فقط در فایل پیکربندی در دسترس هستند. ساختار این گزینه به صورت زیر است: .sp .if n .RS 4 .nf .fam C wintypes: { WINDOW_TYPE = { fade = BOOL; shadow = BOOL; opacity = FLOAT; focus = BOOL; blur\-background = BOOL; full\-shadow = BOOL; clip\-shadow\-above = BOOL; redir\-ignore = BOOL; }; }; .fam .fi .if n .RE .if n .sp .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 .B هشدار (Warning) .ps -1 .br .sp استفاده از این روش به هیچ عنوان توصیه نمی‌شود؛ برای روش پیشنهادی تنظیم گزینه‌های مختص پنجره، به بخش \fBقوانین پنجره (WINDOW RULES)\fP مراجعه کنید. .sp .5v .RE .if n .sp .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 .B مهم (Important) .ps -1 .br .sp بر اساس استانداردهای مدیر پنجره، یک پنجره می‌تواند چندین نوع مختلف داشته باشد. اما با توجه به محدودیت نحوه پیاده‌سازی \fIwintypes\fP، اگر یک پنجره چندین نوع داشته باشد، برای اعمال گزینه‌های \f(CRwintypes\fP یکی از آن نوع‌ها به شکل تصادفی انتخاب خواهد شد. باز هم توصیه می‌شود که به جای آن از بخش \fBقوانین پنجره (WINDOW RULES)\fP استفاده کنید. .sp .5v .RE .sp مقدار \fIWINDOW_TYPE\fP یکی از ۱۵ نوع پنجره تعریف‌شده در استاندارد EWMH است: "unknown"، "desktop"، "dock"، "toolbar"، "menu"، "utility"، "splash"، "dialog"، "normal"، "dropdown_menu"، "popup_menu"، "tooltip"، "notification"، "combo" و "dnd". .sp گزینه‌های زیر برای هر نوع پنجره در دسترس هستند: .RS 4 .sp fade, shadow .RS 4 تنظیمات سایه و محوشدگی (fade) مختص آن نوع پنجره را کنترل می‌کند. .RE .sp opacity .RS 4 میزان کدر بودن (opacity) پیش‌فرض نوع پنجره را مشخص می‌کند. .RE .sp focus .RS 4 مشخص می‌کند که آیا پنجره‌ای از این نوع باید همیشه به صورت متمرکز (focused) در نظر گرفته شود یا خیر. (به‌طور پیش‌فرض، تمامی انواع پنجره‌ها به جز "normal" و "dialog" این گزینه را به صورت فعال دارند.) .RE .sp blur\-background .RS 4 کنترل می‌کند که آیا پس‌زمینه شفاف پنجره‌ای از این نوع مات (blur) شود یا خیر. .RE .sp full\-shadow .RS 4 مشخص می‌کند که آیا سایه در زیر قسمت‌هایی از پنجره که به‌طور عادی دیده نمی‌شوند نیز رسم شود یا خیر. هنگامی مفید است که پنجره بخش‌های شفاف دارد و می‌خواهید در آن بخش‌ها سایه بیفتد. .RE .sp clip\-shadow\-above .RS 4 کنترل می‌کند سایه‌هایی که ممکن است روی پنجره رسم شوند بریده (clip) شوند یا خیر. این گزینه برای پنجره‌های dock که نباید هیچ سایه‌ای روی آنها رسم شود بسیار کاربردی است. .RE .sp redir\-ignore .RS 4 تعیین می‌کند که آیا این نوع پنجره‌ها باید پس از لغو بازهدایت (unredirect)، مجدداً باعث بازهدایت تصویر صفحه شوند یا خیر. اگر گزینه \fB\-\-unredir\-if\-possible\fP را تنظیم کرده‌اید و نمی‌خواهید پنجره خاصی سبب بازهدایت غیرضروری صفحه نمایش شود، می‌توانید این گزینه را روی \f(CRtrue\fP قرار دهید. .RE .RE.SH "مات‌سازی (BLUR)" .sp می‌توانید نحوهٔ مات شدن پس‌زمینهٔ پنجره را با استفاده از بخش \*(Aqblur\*(Aq در فایل پیکربندی خود تنظیم کنید. در اینجا یک مثال آورده شده است: .sp .if n .RS 4 .nf .fam C blur: { method = "gaussian"; size = 10; deviation = 5.0; }; .fam .fi .if n .RE .sp گزینه‌های موجود برای بخش \fIblur\fP عبارت‌اند از: .RS 4 .sp \fBmethod\fP .RS 4 یک رشته. روش مات‌سازی را کنترل می‌کند. با گزینهٔ خط فرمان \fB\-\-blur\-method\fP مطابقت دارد. انتخاب‌های موجود عبارت‌اند از: \fInone\fP برای غیرفعال کردن مات‌سازی؛ \fIgaussian\fP برای مات‌سازی گاوسی؛ \fIbox\fP برای مات‌سازی جعبه‌ای؛ \fIkernel\fP برای مات‌سازی کانولوشن با یک کرنل سفارشی؛ \fIdual_kawase\fP برای مات‌سازی dual\-filter kawase. (پیش‌فرض: none) .RE .sp \fBsize\fP .RS 4 یک عدد صحیح. اندازهٔ کرنل مات‌سازی، که برای روش‌های مات‌سازی \fIgaussian\fP و \fIbox\fP لازم است. برای روش \fIkernel\fP، اندازه در خود کرنل گنجانده شده است. با گزینهٔ خط فرمان \fB\-\-blur\-size\fP مطابقت دارد (پیش‌فرض: 3). .RE .sp \fBdeviation\fP .RS 4 یک عدد ممیز شناور. انحراف معیار برای روش مات‌سازی \fIgaussian\fP. با گزینهٔ خط فرمان \fB\-\-blur\-deviation\fP مطابقت دارد (پیش‌فرض: 0.84089642). .RE .sp \fBstrength\fP .RS 4 یک عدد صحیح در محدودهٔ 0\-20. شدت روش مات‌سازی \fIdual_kawase\fP. با گزینهٔ خط فرمان \fB\-\-blur\-strength\fP مطابقت دارد. اگر روی صفر تنظیم شود، مقدار درخواست‌شده توسط \fB\-\-blur\-size\fP به‌صورت تقریبی محاسبه می‌شود (پیش‌فرض: 5). .RE .sp \fBkernel\fP .RS 4 یک رشته. کرنل مورد استفاده برای روش مات‌سازی \fIkernel\fP، که در همان قالب گزینهٔ \fB\-\-blur\-kern\fP مشخص می‌شود. با گزینهٔ خط فرمان \fB\-\-blur\-kern\fP مطابقت دارد. .RE .RE .SH "سیگنال‌ها (SIGNALS)" .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} برنامهٔ picom با دریافت \f(CRSIGUSR1\fP مجدداً خود را مقداردهی اولیه می‌کند. .RE .SH "رابط D\-BUS (D\-BUS API)" .sp امکان کنترل picom از طریق پیام‌های D\-Bus با اجرای picom به همراه \fB\-\-dbus\fP و ارسال پیام‌ها به \f(CRcom.github.chjj.compton.\fP وجود دارد. شناسهٔ \f(CR\fP همان نمایشگری است که توسط picom استفاده می‌شود و در آن تمام نویسه‌های غیر الفبایی\-عددی به زیرخط (underscore) تبدیل شده‌اند. برای مثال، برای \f(CRDISPLAY=:0.0\fP باید از \f(CRcom.github.chjj.compton._0_0\fP استفاده کنید. .sp متدها و سیگنال‌های D\-Bus هنوز پایدار نیستند، بنابراین در حال حاضر مستند نشده‌اند. .SH "مثال‌ها (EXAMPLES)" .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} غیرفعال کردن پردازش فایل پیکربندی: .sp .if n .RS 4 .nf .fam C $ picom \-\-config /dev/null .fam .fi .if n .RE .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} اجرای picom با سایه و محوشدگی تدریجی (fading) سمت کلاینت: .sp .if n .RS 4 .nf .fam C $ picom \-cf .fam .fi .if n .RE .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} همانند مورد بالا، به‌علاوهٔ شفاف‌سازی ۸۰ درصدی پنجره‌های غیرفعال، شفاف‌سازی ۸۰ درصدی کادر پنجره، عدم محوشدگی هنگام باز/بسته شدن پنجره، و انتقال فرایند به پس‌زمینه (fork): .sp .if n .RS 4 .nf .fam C $ picom \-bcf \-i 0.8 \-e 0.8 \-\-no\-fading\-openclose .fam .fi .if n .RE .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} رسم سایه‌های سفید: .sp .if n .RS 4 .nf .fam C $ picom \-c \-\-shadow\-red 1 \-\-shadow\-green 1 \-\-shadow\-blue 1 .fam .fi .if n .RE .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} جلوگیری از رسم سایه روی پنجرهٔ wbar: .sp .if n .RS 4 .nf .fam C $ picom \-c \-\-shadow\-exclude \*(Aqclass_g = "wbar"\*(Aq .fam .fi .if n .RE .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} فعال‌سازی VSync با بک‌اند GLX: .sp .if n .RS 4 .nf .fam C $ picom \-\-backend glx \-\-vsync .fam .fi .if n .RE .RE.SH "گزارش باگ‌ها (BUGS)" .sp لطفاً گزارش باگ‌ها را ارسال کنید به \c .URL "https://github.com/yshui/picom" "" "." .sp اطلاعات قدیمی در این صفحه راهنما یک باگ محسوب می‌شود. .SH "منابع (RESOURCES)" .sp صفحه خانگی: \c .URL "https://github.com/yshui/picom" "" "" .SH "همچنین ببینید (SEE ALSO)" .sp \fBxcompmgr\fP(1), \fBpicom\-inspect\fP(1), \fBpicom\-trans\fP(1) .SH "نویسندگان (AUTHORS)" .sp Yuxuan Shui