'\" t .\" Title: fvwm3commands .\" Author: [see the "AUTHOR(S)" section] .\" Generator: Asciidoctor 2.0.26 .\" Date: 2026-06-28 .\" Manual: \ \& .\" Source: \ \& .\" Language: Persian .\" .TH "FVWM3COMMANDS" "1" "2026-06-28" "\ \&" "\ \&" .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)" fvwm3commands \- دستورات توکار fvwm .SH "فهرست دستورات FVWM (LIST OF FVWM COMMANDS)" .sp توضیحات دستورات زیر در بخش‌های زیر گروه‌بندی شده‌اند. این بخش‌ها بر اساس میزان کاربرد و فایده برای کاربران تازه‌کار مرتب شده‌اند. .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} \fBدستورات منو (Menu commands)\fP .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} \fBدستورات متفرقه (Miscellaneous commands)\fP .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} \fBدستورات موثر بر جابجایی و جای‌گذاری پنجره (Commands affecting window movement and placement)\fP .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} \fBدستورات فوکوس و حرکت ماوس (Commands for focus and mouse movement)\fP .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} \fBدستورات کنترل وضعیت پنجره (Commands controlling window state)\fP .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} \fBدستورات اتصال کلیدها و ماوس (Commands for mouse and key bindings)\fP .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} \fBدستور Style (کنترل سبک‌های پنجره)\fP .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} \fBسایر دستورات کنترل سبک‌های پنجره (Other commands controlling window styles)\fP .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} \fBدستورات کنترل میزکار مجازی (Commands controlling the virtual desktop)\fP .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} \fBدستورات توابع کاربری و دستورات شل (Commands for user functions and shell commands)\fP .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} \fBدستورات شرطی (Conditional commands)\fP .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} \fBدستورات ماژول (Module commands)\fP .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} \fBدستورات خروج، راه‌اندازی مجدد و مدیریت نشست (Quit, restart and session management commands)\fP .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} \fBمجموعه‌های رنگی (Colorsets)\fP .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} \fBگرادیان‌های رنگ (Color gradients)\fP .RE .SS "دستورات متفرقه (Miscellaneous Commands)" .sp \fBBugOpts\fP [\fIoption\fP [\fIbool\fP]], .\|.\|. .RS 4 این دستور چندین راه‌حل موقت (workaround) برای اشکالات موجود در برنامه‌های شخص ثالث را کنترل می‌کند. گزینه‌های مجزا با کاما از هم جدا می‌شوند. آرگومان اختیاری \fIbool\fP یک مقدار بولی است و فعال یا غیرفعال بودن راه‌حل اشکال را کنترل می‌کند. این مقدار می‌تواند "True" یا "False" برای روشن یا خاموش کردن گزینه، یا "toggle" برای جابجایی بین حالت‌ها باشد. اگر \fIbool\fP حذف شود، تنظیمات پیش‌فرض بازگردانده می‌شود. .sp گزینه \fIDebugRandR\fP پیام‌های اشکال‌زدایی چیدمان مانیتور را فعال می‌کند. .sp گزینه \fIFlickeringMoveWorkaround\fP رویدادهای ConfigureNotify را که معمولاً هنگام جابجایی پنجره به برنامه ارسال می‌شوند، غیرفعال می‌کند. اگر برخی از پنجره‌ها هنگام جابجا شدن به‌طور آزاردهنده‌ای چشمک می‌زنند یا پرش دارند، این گزینه ممکن است کمک‌کننده باشد. توجه داشته باشید که وقوع این مشکل خطای fvwm نیست، بلکه اشکال از خود برنامه است. .sp گزینه \fIMixedVisualWorkaround\fP باعث می‌شود fvwm پیش از انجام برخی عملیات با استفاده از جلوه‌های بصری پنجره ریشه، نقشه رنگ (colormap) ریشه را نصب کند. این گزینه فقط زمانی مفید است که از گزینه \fB\-visual\fP برای راه‌اندازی fvwm استفاده شده باشد و آن هم فقط با برخی پیکربندی‌های سرورهای خاص (مانند Exceed 6.0 با یک ریشه ۸ بیتی PseudoColor و fvwm که از یک جلوه بصری ۲۴ بیتی TrueColor استفاده می‌کند). .sp گزینه \fIModalityIsEvil\fP کنترل می‌کند که آیا برنامه‌های Motif امکان داشتن پنجره‌های گفتگوی مدال (کادرهای محاوره‌ای که شما را مجبور می‌کنند ابتدا آن‌ها را ببندید تا بتوانید کار دیگری انجام دهید) را دارند یا خیر. حالت پیش‌فرض این است که به برنامه‌ها اجازه داشتن کادرهای گفتگوی مدال داده نشود. از این گزینه با احتیاط استفاده کنید. پس از روشن شدن این گزینه، برای خاموش کردن آن باید fvwm را مجدداً راه‌اندازی کنید. .sp گزینه \fIRaiseOverNativeWindows\fP باعث می‌شود fvwm تلاش کند پنجره‌های تحت مدیریت خود را بالاتر از پنجره‌های بومی سیستم میزبان سرور X قرار دهد. این ویژگی برای برخی سرورهای X که تحت ویندوز، ویندوز NT یا Mac OS X اجرا می‌شوند مورد نیاز است. fvwm تلاش می‌کند تشخیص دهد که آیا تحت چنین سرور X اجرا می‌شود یا خیر و پرچم را متناسب با آن مقداردهی اولیه می‌کند. .sp گزینه \fIRaiseOverUnmanaged\fP باعث می‌شود fvwm پنجره‌های تحت مدیریت خود را بالاتر از پنجره‌های override_redirect بالا بیاورد. این گزینه برای مقابله با برنامه‌های ناسازگاری استفاده می‌شود که برخلاف قراردادهای ICCCM از پنجره‌های طولانی‌مدت از این نوع استفاده می‌کنند. این گزینه همچنین همراه با گزینه سبک \fIUnmanaged\fP مفید است. .sp گزینه \fIFlickeringQtDialogsWorkaround\fP پرش پنجره دارای تمرکز را در برخی ماژول‌ها هنگام استفاده از برنامه‌های KDE یا Qt با پنجره‌های گفتگوی مدال سرکوب می‌کند. این گزینه به‌طور پیش‌فرض فعال است. ممکن است این گزینه برای سایر برنامه‌هایی که از پنجره‌های مدیریت‌نشده توسط fvwm استفاده می‌کنند از نظر بصری مزاحمت ایجاد کند. از آنجا که چنین برنامه‌هایی نادر هستند، احتمالاً امن است که این گزینه در حالت پیش‌فرض خود باقی بماند. .sp گزینه \fIQtDragnDropWorkaround\fP ارسال پیام‌های ناشناخته ClientEvent به پنجره‌ها را متوقف می‌کند؛ این کار معمولاً بی‌ضرر است، اما Qt در مدیریت پیام‌های ناشناخته ClientEvent مشکلاتی دارد. بنابراین فعال کردن این گزینه ممکن است برای برنامه‌های Qt که از کشیدن و رها کردن (DragnDrop) استفاده می‌کنند مفید باشد. این گزینه به‌طور پیش‌فرض غیرفعال است. .sp گزینه \fIEWMHIconicStateWorkaround\fP برای پیجرها یا نوارهای وظیفه سازگار با EWMH مورد نیاز است که پنجره‌های موجود در میزکارهای دیگر را به‌صورت آیکون‌شده نمایش می‌دهند. این پیجرها و نوارهای وظیفه از نسخه‌ای از مشخصات EWMH قبل از نسخه 1.2 (نسخه‌های کنونی KDE 2 و 3) استفاده می‌کنند. این ابزارها از وضعیت IconicState WM_STATE برای تعیین اینکه آیا یک برنامه آیکون شده است یا خیر استفاده می‌کنند. این وضعیت، بر اساس ICCCM، لزوماً به این معنی نیست که پنجره آیکون شده است (به معنای معمول). روشن کردن این گزینه fvwm را مجبور می‌کند بین وضعیت IconicState WM_STATE و پنجره آیکون‌شده یکسانی برقرار کند. این کار انطباق با ICCCM را نقض می‌کند اما نباید مشکلات بزرگی ایجاد کند. این گزینه به‌طور پیش‌فرض غیرفعال است. .sp با فعال بودن گزینه \fIDisplayNewWindowNames\fP، fvwm نام، نام آیکون (در صورت وجود)، منبع (resource) و کلاس پنجره‌های جدید را در کنسول چاپ می‌کند. این کار می‌تواند به یافتن رشته‌های صحیح برای استفاده در دستور \fBStyle\fP کمک کند. .sp هنگامی که گزینه \fIExplainWindowPlacement\fP فعال است، هر زمان که پنجره جدیدی جای‌گذاری می‌شود یا از \fBPlaceAgain\fP استفاده می‌شود، fvwm پیامی را در کنسول چاپ می‌کند. این پیام توضیح می‌دهد که پنجره در کدام میزکار، صفحه، نمایشگر و موقعیت قرار گرفته و چرا. این گزینه می‌تواند برای درک اینکه چرا یک پنجره خاص در جایی که انتظار دارید ظاهر نمی‌شود، استفاده شود. .sp گزینه \fIDebugCRMotionMethod\fP برخی کدهای اشکال‌زدایی را در روال‌های مدیریت ConfigureRequest در fvwm فعال می‌کند. این گزینه برای کاربر معمولی مفید نیست، اما اگر اشکالی را به تیم fvwm گزارش دهید ممکن است از شما خواسته شود این گزینه را فعال کنید. .sp گزینه \fITransliterateUtf8\fP نویسه‌گردانی را در حین تبدیل از رشته‌های utf\-8 فعال می‌کند. به‌طور پیش‌فرض fvwm در حین تبدیل نویسه‌گردانی نمی‌کند، اما اگر تبدیل از utf\-8 به دلیل وجود نویسه‌هایی که معادل مستقیمی در مجموعه نویسه مقصد ندارند با شکست مواجه شود، به رشته‌های جایگزین ارائه‌شده توسط کلاینت‌ها رجوع می‌کند. با این حال برخی کلاینت‌ها مشخصه‌های غیر utf\-8 را به‌درستی تنظیم نمی‌کنند که در این صورت این گزینه می‌تواند کمک‌کننده باشد. .RE .sp \fBBusyCursor\fP [\fIOption\fP \fIbool\fP], .\|.\|. .RS 4 این دستور نشانگر ماوس را در طول اجرای دستورات خاصی کنترل می‌کند. گزینه \fIOption\fP می‌تواند \fIDynamicMenu\fP، \fIModuleSynchronous\fP، \fIRead\fP، \fIWait\fP یا \fI*\fP باشد. پس از هر گزینه باید یک آرگومان بولی \fIbool\fP قرار گیرد. می‌توانید از کاما برای جداسازی گزینه‌های مجزا استفاده کنید. اگر گزینه‌ای را روی "True" تنظیم کنید، هنگام اجرای دستور مربوطه، fvwm نشانگر ماوس مربوط به زمینه \fIWAIT\fP از دستور \fBCursorStyle\fP را نمایش می‌دهد. مقدار "False" مانع از نمایش این نشانگر می‌شود. مقدار پیش‌فرض عبارت است از: .sp .if n .RS 4 .nf .fam C BusyCursor DynamicMenu False, ModuleSynchronous False, \(rs Read False, Wait False .fam .fi .if n .RE .sp گزینه \fI*\fP به تمام گزینه‌های موجود اشاره دارد. .sp گزینه \fIRead\fP دستور \fBPipeRead\fP را کنترل می‌کند. .sp گزینه \fIDynamicMenu\fP بر گزینه‌های \fIDynamicPopupAction\fP و \fIMissingSubmenuFunction\fP از دستور \fBAddToMenu\fP تأثیر می‌گذارد. اگر این گزینه روی "False" تنظیم شود، نشانگر مشغول در حین اجرای دستور منوی پویا نمایش داده نمی‌شود، حتی اگر این دستور یک دستور \fBRead\fP یا \fBPipeRead\fP باشد و گزینه \fIRead\fP روی "True" تنظیم شده باشد. .sp گزینه \fIModuleSynchronous\fP بر دستور \fBModuleSynchronous\fP تأثیر می‌گذارد. اگر این گزینه روی "False" تنظیم شود، هنگامی که fvwm منتظر است تا ماژولی که توسط \fBModuleSynchronous\fP راه‌اندازی شده مراحل شروع خود را تکمیل کند، نشانگر مشغول نمایش داده نمی‌شود. .sp گزینه \fIWait\fP فقط بر نشانگر پنجره ریشه تأثیر می‌گذارد. در طول توقف wait، نشانگر ریشه با نشانگر مشغول جایگزین می‌شود و fvwm همچنان کاملاً فعال و پاسخگو باقی می‌ماند (می‌توانید از مکث خارج شوید، به دستور \fBEscapeFunc\fP مراجعه کنید). اگر می‌خواهید از این گزینه استفاده کنید و از نشانگر پیش‌فرض ریشه استفاده نمی‌کنید، باید نشانگر ریشه خود را با دستور \fBCursorStyle\fP تنظیم کنید. .RE .sp \fBClickTime\fP [\fIdelay\fP] .RS 4 حداکثر تاخیر را بر حسب میلی‌ثانیه بین فشردن و رها کردن یک دکمه مشخص می‌کند تا دستور \fBFunction\fP آن عمل را به عنوان یک کلیک ماوس در نظر بگیرد. تاخیر پیش‌فرض ۱۵۰ میلی‌ثانیه است. حذف مقدار تاخیر، مقدار \fBClickTime\fP را به حالت پیش‌فرض بازمی‌گرداند. .sp دستور ClickTime همچنین تاخیر بین دو کلیک را که باید به عنوان دوبار کلیک (دابل کلیک) تفسیر شود، مشخص می‌کند. .RE .sp \fBColormapFocus\fP FollowsMouse | FollowsFocus .RS 4 به‌طور پیش‌فرض، fvwm نقشه رنگ پنجره‌ای را که نشانگر ماوس در آن قرار دارد نصب می‌کند. اگر از دستور زیر استفاده کنید: .sp .if n .RS 4 .nf .fam C ColormapFocus FollowsFocus .fam .fi .if n .RE .sp در این صورت نقشه رنگ نصب‌شده متعلق به پنجره‌ای خواهد بود که در حال حاضر تمرکز صفحه‌کلید را در اختیار دارد. .RE .sp \fBCursorStyle\fP \fIcontext\fP [\fInum\fP | \fIname\fP | None | Tiny | \fIfile\fP [\fIx\fP \fIy\fP] [\fIfg\fP \fIbg\fP]] .RS 4 یک نشانگر ماوس جدید برای زمینه (context) مشخص‌شده تعریف می‌کند. توجه داشته باشید که این دستور نمی‌تواند اشکالی را که یک برنامه کاربردی، برای مثال برای نشان دادن وضعیت مشغول بودن استفاده می‌کند، کنترل کند. زمینه‌های گوناگون عبارتند از: .sp \fIPOSITION\fP (top_left_corner) .RS 4 هنگام جای‌گذاری اولیه پنجره‌ها استفاده می‌شود .RE .sp \fITITLE\fP (top_left_arrow) .RS 4 در نوار عنوان پنجره استفاده می‌شود .RE .sp \fIDEFAULT\fP (top_left_arrow) .RS 4 در پنجره‌هایی که نشانگر خود را تنظیم نکرده‌اند استفاده می‌شود .RE .sp \fISYS\fP (hand2) .RS 4 در یکی از دکمه‌های نوار عنوان استفاده می‌شود .RE .sp \fIMOVE\fP (fleur) .RS 4 هنگام جابجایی یا تغییر اندازه پنجره‌ها استفاده می‌شود .RE .sp \fIRESIZE\fP (sizing) .RS 4 هنگام جابجایی یا تغییر اندازه پنجره‌ها استفاده می‌شود .RE .sp \fIWAIT\fP (watch) .RS 4 در طول اجرای برخی دستورات fvwm استفاده می‌شود (برای جزئیات به \fBBusyCursor\fP مراجعه کنید) .RE .sp \fIMENU\fP (top_left_arrow) .RS 4 در منوها استفاده می‌شود .RE .sp \fISELECT\fP (crosshair) .RS 4 هنگامی که از کاربر خواسته می‌شود یک پنجره را انتخاب کند استفاده می‌شود .RE .sp \fIDESTROY\fP (pirate) .RS 4 برای دستورات \fBDestroy\fP، \fBClose\fP و \fBDelete\fP استفاده می‌شود .RE .sp \fITOP\fP (top_side) .RS 4 در نوار لبه بالایی پنجره استفاده می‌شود .RE .sp \fIRIGHT\fP (right_side) .RS 4 در نوار لبه راستی پنجره استفاده می‌شود .RE .sp \fIBOTTOM\fP (bottom_side) .RS 4 در نوار لبه پایینی پنجره استفاده می‌شود .RE .sp \fILEFT\fP (left_side) .RS 4 در نوار لبه چپی پنجره استفاده می‌شود .RE .sp \fITOP_LEFT\fP (top_left_corner) .RS 4 در گوشه بالا و سمت چپ پنجره استفاده می‌شود .RE .sp \fITOP_RIGHT\fP (top_right_corner) .RS 4 در گوشه بالا و سمت راست پنجره استفاده می‌شود .RE .sp \fIBOTTOM_LEFT\fP (bottom_left_corner) .RS 4 در گوشه پایین و سمت چپ پنجره استفاده می‌شود .RE .sp \fIBOTTOM_RIGHT\fP (bottom_right_corner) .RS 4 در گوشه پایین و سمت راست پنجره استفاده می‌شود .RE .sp \fITOP_EDGE\fP (top_side) .RS 4 در لبه بالایی صفحه نمایش استفاده می‌شود .RE .sp \fIRIGHT_EDGE\fP (right_side) .RS 4 در لبه راستی صفحه نمایش استفاده می‌شود .RE .sp \fIBOTTOM_EDGE\fP (bottom_side) .RS 4 در لبه پایینی صفحه نمایش استفاده می‌شود .RE .sp \fILEFT_EDGE\fP (left_side) .RS 4 در لبه چپی صفحه نمایش استفاده می‌شود .RE .sp \fIROOT\fP (left_ptr) .RS 4 به عنوان نشانگر پنجره ریشه استفاده می‌شود .RE .RE .sp مقادیر پیش‌فرض در پرانتزهای بالا نشان داده شده‌اند. اگر مایل باشید نشانگر پیش‌فرض را برای یک زمینه خاص بازیابی کنید، می‌توانید آرگومان دوم را حذف نمایید. .sp آرگومان دوم یا مقدار عددی نشانگر است همان‌طور که در فایل هدر \fIX11/cursorfont.h\fP تعریف شده، یا نام آن (بدون پیشوند XC_). از طرف دیگر، می‌توان نام فایل xpm را نیز مشخص کرد. این نام همچنین می‌تواند \fINone\fP (بدون نشانگر) یا \fITiny\fP (یک تک‌پیکسل به عنوان نشانگر) باشد. .sp .if n .RS 4 .nf .fam C # تنظیم نشانگر نابودی روی XC_gumby (هر دو فرمت معتبرند): CursorStyle DESTROY 56 CursorStyle DESTROY gumby .fam .fi .if n .RE .sp همچنین نشانگر را می‌توان از یک فایل تصویر (XPM، PNG یا SVG) بارگذاری کرد. اگر fvwm با پشتیبانی از Xcursor کامپایل شده باشد، از فرمت کامل ARGB استفاده می‌شود و فایل‌های نشانگر (احتمالاً متحرک) ساخته‌شده با برنامه \fBxcursorgen\fP قابل بارگذاری هستند. در غیر این صورت، نشانگر به حالت تک‌رنگ (monochrome) تبدیل می‌شود. .sp آرگومان‌های اختیاری \fIx\fP و \fIy\fP (پس از آرگومان \fIfile\fP) مختصات نقطه حساس (hot-spot) را تعیین می‌کنند که در آن 0 0 گوشه بالا و سمت چپ تصویر است. مختصات درون محدوده تصویر معتبر بوده و بر هر نقطه حساسی که در فایل تصویر (XPM/Xcursor) تعریف شده اولویت دارد. یک نقطه حساس نامعتبر یا تعریف‌نشده در مرکز تصویر قرار می‌گیرد. .sp .if n .RS 4 .nf .fam C CursorStyle ROOT cursor_image.png 0 0 .fam .fi .if n .RE .sp آرگومان‌های اختیاری \fIfg\fP و \fIbg\fP رنگ‌های پیش‌زمینه و پس‌زمینه نشانگر را تعیین می‌کنند که پیش‌فرض آن‌ها سیاه و سفید است. این رنگ‌ها تنها با نشانگرهای تک‌رنگ استفاده می‌شوند و در غیر این صورت نادیده گرفته خواهند شد. .sp .if n .RS 4 .nf .fam C CursorStyle ROOT nice_arrow.xpm yellow black .fam .fi .if n .RE .sp \fBDefaultFont\fP [\fIfontname\fP] .RS 4 دستور \fBDefaultFont\fP فونت پیش‌فرض را روی فونت \fIfontname\fP تنظیم می‌کند. فونت پیش‌فرض هر زمان که فونت دیگری مشخص نشده باشد توسط fvwm استفاده می‌شود. برای بازگرداندن فونت پیش‌فرض به حالت توکار، آرگومان را حذف کنید. فونت پیش‌فرض برای منوها، عناوین پنجره‌ها، عناوین آیکون‌ها و همچنین پنجره‌های بازخورد هندسه در طول عملیات جابجایی یا تغییر اندازه استفاده می‌شود. برای نادیده گرفتن فونت پیش‌فرض در یک زمینه خاص، از دستورات \fBStyle\fP * \fIFont\fP، \fBStyle\fP * \fIIconFont\fP یا \fBMenuStyle\fP استفاده کنید. .RE .sp \fBDefaultIcon\fP \fIfilename\fP .RS 4 آیکون پیش‌فرضی را تنظیم می‌کند که اگر یک پنجره نه آیکون ارائه‌شده توسط کلاینت را داشته باشد و نه آیکونی که از طریق گزینه \fIIcon\fP دستور \fBStyle\fP ارائه شده، استفاده شود. .RE .sp \fBDefaultLayers\fP \fIbottom\fP \fIput\fP \fItop\fP .RS 4 لایه‌هایی را که برای گزینه‌های \fIStaysOnBottom\fP، \fIStaysPut\fP و \fIStaysOnTop\fP از دستور \fBStyle\fP استفاده می‌شوند، تغییر می‌دهد. در ابتدا، لایه‌های 2، 4 و 6 استفاده می‌شوند. .RE .sp \fBDeschedule\fP [\fIcommand_id\fP] .RS 4 تمام دستوراتی را که با شناسه \fIcommand_id\fP توسط دستور \fBSchedule\fP زمان‌بندی شده‌اند، از فهرست دستورات در انتظار اجرا حذف می‌کند، مگر اینکه قبلاً اجرا شده باشند. اگر \fIcommand_id\fP حذف شود، مقدار متغیر $[schedule.last] به عنوان شناسه استفاده می‌شود. .RE .sp \fBEmulate\fP Fvwm | Mwm | Win .RS 4 این دستور یک کنترل کلی برای نحوه انجام کارهای متفرقه توسط fvwm است. در حال حاضر این دستور بر محل ظاهر شدن پنجره بازخورد جابجایی/تغییر اندازه و نحوه لغو جای‌گذاری پنجره تأثیر می‌گذارد. برای داشتن رفتاری شبیه‌تر به Mwm یا Win می‌توانید \fBEmulate\fP را با آرگومان \fIMwm\fP یا \fIWin\fP فراخوانی کنید. با Mwm پنجره‌های بازخورد جابجایی و تغییر اندازه در مرکز صفحه ظاهر می‌شوند، نه در گوشه بالا و سمت چپ. این امر همچنین بر نحوه لغو جای‌گذاری دستی تأثیر می‌گذارد. به توضیحات \fIManualPlacement\fP مراجعه کنید. .RE .sp \fBEscapeFunc\fP .RS 4 به‌طور پیش‌فرض، توالی کلیدهای Ctrl\-Alt\-Escape امکان خروج از مکث دستور \fBWait\fP و از یک دستور قفل‌شده \fBModuleSynchronous\fP را فراهم می‌کند. دستور \fBEscapeFunc\fP که همراه با دستور \fBKey\fP استفاده می‌شود، پیکربندی این توالی کلید را امکان‌پذیر می‌سازد. یک مثال: .sp .if n .RS 4 .nf .fam C Key Escape A MC \- Key Escape A\& S EscapeFunc .fam .fi .if n .RE .sp توالی کلیدهای Ctrl\-Alt\-Escape را با Shift\-Escape برای لغو توقف دستور \fBWait\fP و دستور \fBModuleSynchronous\fP جایگزین می‌کند. دستور \fBEscapeFunc\fP اگر خارج از دستور \fBKey\fP استفاده شود کاری انجام نمی‌دهد. .RE .sp \fBFakeClick\fP [\fIcommand\fP \fIvalue\fP] .\|.\|. .RS 4 این دستور عمدتاً برای اشکال‌زدایی fvwm در نظر گرفته شده و هیچ تضمینی وجود ندارد که برای شما به درستی کار کند. دستور \fIFakeClick\fP می‌تواند رویدادهای فشردن و رها کردن دکمه ماوس را شبیه‌سازی کرده و آن‌ها را به fvwm یا برنامه‌ها ارسال کند. پارامترها فهرستی از دستورات هستند که از جفت‌های نشانه‌های \fIcommand\fP و مقادیر صحیح \fIvalues\fP تشکیل شده‌اند. دستورات \fIpress\fP و \fIrelease\fP با شماره دکمه ماوس مناسب دنبال می‌شوند و یک رویداد فشردن یا رها کردن دکمه را روی پنجره زیر نشانگر ایجاد می‌کنند. دستور \fIwait\fP برنامه fvwm را به تعداد میلی‌ثانیه‌های داده‌شده متوقف می‌کند. دستور \fImodifiers\fP فشردن یا رها کردن کلیدهای تغییردهنده (modifier) را شبیه‌سازی می‌کند. مقادیر 1 تا 5 به Mod1 تا Mod5 نگاشت می‌شوند در حالی که 6، 7 و 8 به Shift، Lock و Control نگاشت می‌گردند. کلید تغییردهنده برای رویدادهای بعدی دکمه تنظیم می‌شود. برای رها کردن یک کلید تغییردهنده، از عدد منفی متناظر استفاده کنید. دستور \fIdepth\fP تعیین می‌کند که رویدادهای دکمه به کدام پنجره ارسال شوند. با عمق 1، همه رویدادها صرف‌نظر از موقعیت نشانگر به پنجره ریشه می‌روند. با عمق 2، رویداد به بالاترین پنجره زیر نشانگر ارسال می‌شود که معمولاً پنجره قاب (frame) است. با عمق 3، رویدادها به پنجره کلاینت می‌روند. اعداد بزرگتر به زیرپنجره‌های متوالی می‌روند. صفر (0) به کوچک‌ترین پنجره‌ای می‌رود که نشانگر را در بر دارد. توجه داشته باشید که رویدادها به سمت بالا منتشر می‌شوند. .sp .if n .RS 4 .nf .fam C FakeClick depth 2 press 1 wait 250 release 1 .fam .fi .if n .RE .sp این دستور یک کلیک با دکمه ۱ را در پنجره والد (عمق ۲) با تاخیر ۲۵۰ میلی‌ثانیه بین فشردن و رها کردن شبیه‌سازی می‌کند. توجه: تمام نام‌های دستورات را می‌توان با حرف اول آن‌ها خلاصه کرد. .RE .sp \fBFakeKeypress\fP [\fIcommand\fP \fIvalue\fP] .\|.\|. .RS 4 این دستور عمدتاً برای اشکال‌زدایی fvwm در نظر گرفته شده است و هیچ تضمینی وجود ندارد که برای شما کار کند. دستور \fBFakeKeypress\fP می‌تواند رویدادهای فشردن و رها کردن کلید را شبیه‌سازی کرده و به fvwm یا برنامه‌ها ارسال کند. پارامترها فهرستی از دستورات شامل جفت‌های نشانه دستور و مقادیر هستند. دستورات \fIpress\fP و \fIrelease\fP با یک نام کلید دنبال می‌شوند. نام کلید یک نام کلید استاندارد X11 است همان‌گونه که در \fI/usr/include/X11/keysymdef.h\fP (بدون پیشوند \fIXK_\fP) یا پایگاه داده keysym در \fI/usr/X11R6/lib/X11/XKeysymDB\fP تعریف شده است. دستورات \fIwait\fP، \fImodifiers\fP و \fIdepth\fP همانند دستورات مورد استفاده در \fBFakeClick\fP هستند. .sp ذخیره تمامی نشست‌های GVim با: "Esc:w\(rsn" .sp .if n .RS 4 .nf .fam C All (gvim) FakeKeypress press Escape \(rs press colon \(rs press w \(rs press Return .fam .fi .if n .RE .sp ذخیره و خروج از تمامی نشست‌های GVim با: "Esc:wq\(rsn" .sp .if n .RS 4 .nf .fam C All (gvim) FakeKeypress press Escape \(rs press colon \(rs press w \(rs press q \(rs press Return .fam .fi .if n .RE .sp ارسال A به یک پنجره مشخص: .sp .if n .RS 4 .nf .fam C WindowId 0x3800002 FakeKeypress press A .fam .fi .if n .RE .sp توجه: تمامی نام‌های دستورات را می‌توان با حرف اول آن‌ها خلاصه کرد. .RE .sp \fBImagePath\fP \fIpath\fP .RS 4 فهرستی از دایرکتوری‌ها را که با دونقطه (:) از هم جدا شده‌اند، برای جستجوی تصاویر (هم تک‌رنگ و هم نگاره‌پیکسلی/pixmap) مشخص می‌کند. برای یافتن تصویری که با یک مسیر نسبی داده شده است، fvwm به نوبت هر یک از دایرکتوری‌های فهرست‌شده را بررسی می‌کند و از اولین فایل یافت‌شده استفاده می‌نماید. .sp اگر دایرکتوری به صورت "/some/dir;.ext" مشخص شود، به این معنی است که تمامی تصاویر در این دایرکتوری دارای پسوند ".ext" هستند که باید اجبار شود. نام تصویر اصلی (که ممکن است پسوند دیگری داشته باشد یا اصلاً پسوندی نداشته باشد) بررسی نمی‌شود، بلکه ".ext" اضافه شده یا جایگزین پسوند اصلی می‌گردد. این قابلیت به عنوان مثال زمانی مفید است که کاربر دایرکتوری‌هایی از تصاویر با پسوند ".xpm" و دایرکتوری‌های دیگری با همان نام‌ها اما تصاویر ".png" داشته باشد. .sp مسیر \fIpath\fP می‌تواند حاوی متغیرهای محیطی مانند \fI$HOME\fP (یا \fI${HOME}\fP) باشد. علاوه بر این، علامت '+' در مسیر به مقدار قبلی مسیر گسترش می‌یابد و امکان افزودن آسان به انتها یا ابتدای مسیر را فراهم می‌کند. .sp به عنوان مثال: .sp .if n .RS 4 .nf .fam C ImagePath $HOME/icons:+:/usr/include/X11/bitmaps .fam .fi .if n .RE .RE .sp \fBLocalePath\fP \fIpath\fP .RS 4 فهرستی از "مسیرهای محلی" (locale paths) با جداکننده دونقطه را مشخص می‌کند که در آن‌ها برای ترجمه رشته‌ها جستجو شود. یک مسیر محلی از یک مسیر دایرکتوری و یک دامنه متنی تشکیل شده که با یک نقطه‌ویرگول (;) از هم جدا شده‌اند. به عنوان مثال، مسیر محلی پیش‌فرض عبارت است از: .sp .if n .RS 4 .nf .fam C /install_prefix/share/locale;fvwm .fam .fi .if n .RE .sp که در آن install_prefix دایرکتوری نصب fvwm است. با چنین مسیر محلی، ترجمه‌ها در مسیر زیر جستجو می‌شوند: .sp .if n .RS 4 .nf .fam C /install_prefix/share/locale/lang/LC_MESSAGES/fvwm.mo .fam .fi .if n .RE .sp که در آن \fIlang\fP به پیکربندی محلی (locale) بستگی دارد. اگر هیچ دایرکتوری مشخص نشود، مسیر دایرکتوری پیش‌فرض در نظر گرفته می‌شود. اگر دامنه متنی مشخص نشود، \fBfvwm\fP فرض می‌گردد. بدون آرگومان، مسیر محلی پیش‌فرض بازیابی می‌شود. .sp همانند دستور \fBImagePath\fP، مقدار \fIpath\fP می‌تواند شامل متغیرهای محیطی و علامت '+' برای الحاق آسان به ابتدا یا انتهای مسیر محلی باشد. .sp به عنوان مثال، بسته fvwm\-themes از دستور زیر برای افزودن کاتالوگ‌های محلی استفاده می‌کند: .sp .if n .RS 4 .nf .fam C LocalePath ";fvwm\-themes:+" .fam .fi .if n .RE .sp کاتالوگ پیش‌فرض fvwm شامل چند رشته است که توسط خود فایل اجرایی fvwm استفاده می‌شوند (Desk و Geometry) و رشته‌هایی که در برخی فایل‌های پیکربندی پیش‌فرض و پیکربندی \fBFvwmForm\fP به کار می‌روند. برای مشاهده فهرست رشته‌ها با ترجمه احتمالی به زبان‌های گوناگون می‌توانید به زیردایرکتوری po/ در سورس‌کد fvwm نگاهی بیندازید. در حال حاضر زبان‌های بسیار کمی پشتیبانی می‌شوند. .sp کاربرد اصلی کاتالوگ‌های محلی از طریق پارامتر "$[gt.string]" است: .sp .if n .RS 4 .nf .fam C DestroyMenu MenuFvwmWindowOps AddToMenu\& MenuFvwmWindowOps "$[gt.Window Ops]" Title + "$[gt.&Move]"\& Move + "$[gt.&Resize]"\& Resize + "$[gt.R&aise]"\& Raise + "$[gt.&Lower]"\& Lower + "$[gt.(De)&Iconify]"\& Iconify + "$[gt.(Un)&Stick]"\& Stick + "$[gt.(Un)Ma&ximize]"\& Maximize + "" Nop + "$[gt.&Close]"\& Close + "$[gt.&Destroy]"\& Destroy .fam .fi .if n .RE .sp اگر ترجمه‌ها در دسترس باشند، منویی را به زبان‌های محلی ارائه می‌دهد. .sp توجه داشته باشید که ماژول \fBFvwmScript\fP مجموعه‌ای از دستورالعمل‌های ویژه برای ترجمه رشته‌ها دارد. توضیح نحوه ساخت کاتالوگ‌های محلی خارج از محدوده این بحث است. لطفاً به مستندات GNU gettext مراجعه کنید. .RE .sp \fBPrintInfo\fP \fIsubject\fP [\fIverbose\fP] .RS 4 اطلاعات مربوط به موضوع \fIsubject\fP را در فایل لاگ اشکال‌زدایی چاپ می‌کند که پیش‌فرض آن \fI$HOME/.fvwm/fvwm3\-output.log\fP است. متغیرهای محیطی \fI$FVWM_USERDIR\fP و \fI$FVWM3_LOGFILE\fP می‌توانند این مقدار پیش‌فرض را تغییر دهند. برای اینکه این فایل لاگ نوشته شود، یا باید fvwm3 با گزینه \fB\-v\fP اجرا شده باشد یا از سیگنال \fBSIGUSR2\fP برای باز و بسته کردن فایل لاگ اشکال‌زدایی استفاده شود. .sp آرگومان عدد صحیح اختیاری \fIverbose\fP سطح جزئیات اطلاعات ارائه‌شده را مشخص می‌کند. موضوعات معتبر فعلی عبارتند از: .sp موضوع \fIColors\fP که اطلاعاتی را درباره رنگ‌های استفاده‌شده توسط fvwm چاپ می‌کند. این مورد در نمایشگرهایی که تنها می‌توانند ۲۵۶ رنگ (یا کمتر) را همزمان نمایش دهند مفید است. اگر مقدار \fIverbose\fP برابر یک یا بیشتر باشد، پالت استفاده‌شده توسط fvwm چاپ می‌شود. اگر پالت رنگ محدودی دارید و رنگ‌هایتان تمام شده است، این دستور ممکن است مفید باشد. .sp موضوع \fIImageCache\fP که اطلاعات مربوط به تصاویر بارگذاری‌شده توسط fvwm را چاپ می‌کند. اگر مقدار \fIverbose\fP برابر یک یا بیشتر باشد، تمام تصاویر موجود در حافظه پنهان همراه با دفعات استفاده مجدد از آن‌ها فهرست می‌شوند. .sp موضوع \fILocale\fP که اطلاعات مربوط به تنظیمات محلی و فونت‌های استفاده‌شده توسط fvwm را چاپ می‌کند. مقدار \fIverbose\fP می‌تواند ۱ یا ۲ باشد. .sp موضوع \fInls\fP که اطلاعات مربوط به کاتالوگ‌های محلی استفاده‌شده توسط fvwm را چاپ می‌کند. .sp موضوع \fIbindings\fP که اطلاعات مربوط به تمامی کلیدهای میانبر و اتصالات ماوس تعریف‌شده در fvwm را چاپ می‌کند. مقدار \fIverbose\fP با این گزینه تأثیری ندارد. .sp موضوع \fIinfostore\fP که اطلاعات مربوط به تمامی مدخل‌های موجود در infostore را چاپ کرده و کلید و مقدار آن را فهرست می‌کند. مقدار \fIverbose\fP با این گزینه تأثیری ندارد. .RE .sp \fBSchedule\fP [\fIPeriodic\fP] \fIdelay_ms\fP [\fIcommand_id\fP] \fIcommand\fP .RS 4 دستور \fIcommand\fP پس از گذشت حدود \fIdelay_ms\fP میلی‌ثانیه اجرا می‌شود. این قابلیت می‌تواند در برخی تنظیمات پیچیده مفید باشد. دستور \fIcommand\fP در همان زمینه پنجره‌ای اجرا می‌شود که دستور \fBSchedule\fP در آن اجرا شده است. یک آرگومان عدد صحیح اختیاری \fIcommand_id\fP می‌تواند در قالب ده‌دهی، هگزادسیمال یا هشت‌هشتی داده شود. از این شناسه می‌توان با دستور \fBDeschedule\fP برای لغو دستور زمان‌بندی‌شده پیش از اجرای آن استفاده کرد. اگر شناسه‌ای داده نشود، fvwm از اعداد منفی برای شناسه استفاده می‌کند که از \-1 شروع شده و با هر بار استفاده از دستور \fBSchedule\fP یک واحد کاهش می‌یابد. توجه داشته باشید که دستور \fBSchedule\fP و آرگومان‌های آن تحت بسط معمول خط فرمان قرار می‌گیرند و هنگامی که در نهایت \fIcommand\fP اجرا می‌شود، مجدداً بسط داده خواهد شد. بنابراین ممکن است لازم باشد بخش‌هایی از دستور را که نباید دوبار بسط داده شوند، نقل‌قول (کوتیشن) کنید. .sp توجه: شناسه یک پنجره همان‌طور که با $[w.id] برگردانده می‌شود می‌تواند به عنوان \fIcommand_id\fP استفاده شود. مثال: .sp .if n .RS 4 .nf .fam C Current Schedule 1000 $[w.id] WindowShade .fam .fi .if n .RE .sp دستور \fBSchedule\fP همچنین از کلیدواژه اختیاری \fIPeriodic\fP پشتیبانی می‌کند که نشان می‌دهد دستور \fIcommand\fP باید هر \fIdelay_ms\fP یک‌بار اجرا شود. مثال: .sp .if n .RS 4 .nf .fam C Schedule Periodic 10000 PipeRead \*(Aq[ \-N "$MAIL" ] && echo \(rs Echo You have mail\*(Aq .fam .fi .if n .RE .sp برای توقف دستورات دوره‌ای از دستور \fBDeschedule\fP استفاده کنید. .RE .sp \fBState\fP \fIstate\fP [\fIbool\fP] .RS 4 یکی از ۳۲ وضعیت تعریف‌شده توسط کاربر را که به هر پنجره مرتبط هستند تنظیم، پاک یا معکوس می‌کند. پارامتر \fIstate\fP عددی بین 0 تا 31 است. این وضعیت‌ها در خود fvwm معنای خاصی ندارند، اما می‌توان آن‌ها را در دستورات شرطی مانند \fBNext\fP با شرط \fIState\fP بررسی کرد. آرگومان اختیاری \fIbool\fP یک مقدار بولی است. "True" وضعیت داده‌شده را فعال می‌کند، در حالی که "False" آن را پاک می‌کند. استفاده از "toggle" وضعیت را معکوس می‌سازد. اگر آرگومان \fIbool\fP داده نشود، وضعیت معکوس می‌شود. .RE .sp \fBWindowList\fP [(\fIconditions\fP)] [\fIposition\fP] [\fIoptions\fP] [\fIdouble\-click\-action\fP] .RS 4 یک منوی بازشو تولید کرده (و آن را نمایش می‌دهد) که در آن عنوان و ابعاد هندسی هر یک از پنجره‌های موجود روی میزکار نمایش داده می‌شود. .sp قالب بخش هندسه به این صورت است: \fIdesk\fP(\fIlayer\fP): \fIx\-geometry\fP \fIsticky\fP، که در آن \fIdesk\fP و \fIlayer\fP شماره‌های مربوطه هستند و \fIsticky\fP خالی یا حرف بزرگ S است. هندسه پنجره‌های آیکون‌شده داخل پرانتز نشان داده می‌شود. انتخاب یک مورد از منوی بازشوی فهرست پنجره‌ها باعث می‌شود تابع تفسیری "WindowListFunc" با شناسه آن پنجره که به صورت $0 ارسال می‌شود، اجرا گردد. تابع پیش‌فرض "WindowListFunc" به این صورت است: .sp .if n .RS 4 .nf .fam C AddToFunc WindowListFunc + I Iconify off + I FlipFocus + I Raise + I WarpToWindow 5p 5p .fam .fi .if n .RE .sp اگر این پیش‌فرض‌ها برای شما مناسب نیستند، می‌توانید "WindowListFunc" توکار را حذف کرده و تابع اختصاصی خود را بسازید. .sp منوی فهرست پنجره‌ها از سبک منوی "WindowList" در صورت تعریف شدن استفاده می‌کند (به دستور \fBMenuStyle\fP مراجعه کنید). در غیر این صورت سبک منوی پیش‌فرض به کار گرفته می‌شود. برای بازگشت به سبک پیش‌فرض منو، دستور زیر را اجرا کنید: .sp .if n .RS 4 .nf .fam C DestroyMenuStyle WindowList .fam .fi .if n .RE .sp مثال: .sp .if n .RS 4 .nf .fam C MenuStyle WindowList SelectOnRelease Meta_L .fam .fi .if n .RE .sp پارامتر \fIconditions\fP می‌تواند برای حذف پنجره‌های خاصی از فهرست پنجره‌ها استفاده شود. برای جزئیات به دستور \fBCurrent\fP مراجعه کنید. فقط پنجره‌هایی که با شرایط داده‌شده مطابقت دارند در فهرست پنجره‌ها نمایش داده می‌شوند. گزینه‌های \fIoptions\fP زیر برعکس عمل می‌کنند: پنجره‌هایی که در غیر این صورت در فهرست پنجره‌ها قرار نمی‌گیرند، با آن‌ها قابل انتخاب هستند. پارامتر \fIconditions\fP همواره بر \fIoptions\fP اولویت دارد. .sp آرگومان‌های \fIposition\fP همانند دستور \fBMenu\fP هستند. دستور \fIdouble\-click\-action\fP در صورتی فراخوانی می‌شود که کاربر هنگام باز کردن فهرست پنجره‌ها دوبار کلیک کند (یا اگر منو به یک کلید متصل است، آن کلید را سریعاً دوبار فشار دهد). اگر \fIdouble\-click\-action\fP از بیش از یک کلمه تشکیل شده باشد، باید داخل علامت نقل‌قول قرار گیرد. .sp دستور \fIdouble\-click\-action\fP برای تعریف یک پنجره پیش‌فرض زمانی که فهرست پنجره‌ها را مانند زیر به یک کلید (یا دکمه) متصل کرده‌اید مفید است: .sp .if n .RS 4 .nf .fam C # در اینجا یک تابع موجود را فراخوانی می‌کنیم، # اما می‌تواند متفاوت باشد. AddToFunc SwitchToWindow + I WindowListFunc Key Tab A M WindowList "Prev SwitchToWindow" .fam .fi .if n .RE .sp با فشردن کلید Alt\-Tab یک بار فهرست پنجره‌ها باز می‌شود و با دو بار فشردن آن، تمرکز بین پنجره فعلی و پنجره قبلی جابجا می‌گردد. با سبک منوی مناسب \fISelectOnRelease\fP (به مثال بالا نگاه کنید)، به محض رها کردن کلید Alt پنجره انتخاب می‌شود. .sp گزینه‌های ارسال‌شده به WindowList با کاما از هم جدا می‌شوند و می‌توانند موارد زیر باشند: \fIGeometry\fP / \fINoGeometry\fP / \fINoGeometryWithInfo\fP، \fINoDeskNum\fP، \fINoLayer\fP، \fINoNumInDeskTitle\fP، \fINoCurrentDeskTitle\fP، \fIMaxLabelWidth width\fP، \fITitleForAllDesks\fP، \fIFunction funcname\fP، \fIDesk desknum\fP، \fICurrentDesk\fP، \fINoIcons\fP / \fIIcons\fP / \fIOnlyIcons\fP، \fINoNormal\fP / \fINormal\fP / \fIOnlyNormal\fP، \fINoSticky\fP / \fISticky\fP / \fIOnlySticky\fP، \fINoStickyAcrossPages\fP / \fIStickyAcrossPages\fP / \fIOnlyStickyAcrossPages\fP، \fINoStickyAcrossDesks\fP / \fIStickyAcrossDesks\fP / \fIOnlyStickyAcrossDesks\fP، \fINoOnTop\fP / \fIOnTop\fP / \fIOnlyOnTop\fP، \fINoOnBottom\fP / \fIOnBottom\fP / \fIOnlyOnBottom\fP، \fILayer m [n]\fP، \fIUseSkipList\fP / \fIOnlySkipList\fP، \fINoDeskSort\fP، \fIReverseOrder\fP، \fICurrentAtEnd\fP، \fIIconifiedAtEnd\fP، \fIUseIconName\fP، \fIAlphabetic\fP / \fINotAlphabetic\fP، \fISortByResource\fP، \fISortByClass\fP، \fINoHotkeys\fP، \fISelectOnRelease\fP، \fIShowPage\fP، \fIShowPageX\fP، \fIShowPageY\fP، \fIShowScreen\fP. .sp (توجه: normal به معنی غیرآیکون‌شده، غیرچسبان یا غیر در بالا بودن است) .sp با گزینه \fISortByResource\fP پنجره‌ها ابتدا بر اساس کلاس منبع، سپس نام منبع و سپس نام پنجره (یا نام آیکون در صورت مشخص شدن \fIUseIconName\fP) به صورت الفبایی مرتب می‌شوند. گزینه \fIReverseOrder\fP نیز ترتیب را برعکس می‌کند. .sp با گزینه \fISortByClass\fP پنجره‌ها درست مانند \fISortByResource\fP مرتب می‌شوند، اما نام منبع در نظر گرفته نمی‌شود و فقط کلاس منبع لحاظ می‌گردد. .sp گزینه \fISelectOnRelease\fP دقیقاً مانند گزینه همنام در \fBMenuStyle\fP عمل می‌کند، اما بر گزینه تعیین‌شده در سبک منو اولویت دارد. به طور پیش‌فرض، این گزینه روی کلید چپ تنظیم شده است. برای خاموش کردن آن، از \fISelectOnRelease\fP بدون نام کلید استفاده کنید. .sp اگر تابعی را از طریق \fBFunction\fP funcname ارسال کنید، در زمینه پنجره انتخاب‌شده فراخوانی می‌شود: .sp .if n .RS 4 .nf .fam C AddToFunc IFunc I Iconify toggle WindowList Function IFunc, NoSticky, CurrentDesk, NoIcons .fam .fi .if n .RE .sp اگر از گزینه \fILayer\fP \fIm\fP [\fIn\fP] استفاده کنید، تنها پنجره‌های موجود در لایه‌های بین m و n نمایش داده می‌شوند. مقدار n به طور پیش‌فرض m است. با گزینه \fIReverseOrder\fP ترتیب پنجره‌ها در فهرست معکوس می‌شود. .sp با گزینه \fICurrentAtEnd\fP پنجره دارای تمرکز فعلی (در صورت وجود) در انتهای فهرست نشان داده می‌شود. این ویژگی عمدتاً برای شبیه‌سازی رفتار Alt\-Tab در رابط‌های گرافیکی دیگر کاربرد دارد. .sp گزینه \fIIconifiedAtEnd\fP باعث می‌شود پنجره‌های آیکون‌شده به انتهای فهرست منتقل شوند. .sp گزینه \fINoGeometry\fP باعث می‌شود fvwm ابعاد هندسی و جداکننده‌های نشان‌دهنده میزکارهای مختلف را نمایش ندهد. گزینه \fINoGeometryWithInfo\fP ابعاد هندسی را حذف کرده اما اطلاعات میزکار را نگه می‌دارد و پنجره‌های آیکون‌شده را مشخص می‌کند. \fINoDeskNum\fP مانع نمایش شماره میزکار در ابعاد هندسی یا قبل از عنوان پنجره با گزینه \fINoGeometryWithInfo\fP می‌شود. \fINoNumInDeskTitle\fP تنها در صورتی مفید است که نام میزکار با دستور \fBDesktopName\fP تعریف شده باشد و مانع نمایش شماره میزکار قبل از نام آن می‌شود. به طور پیش‌فرض، منوی WindowList دارای عنوانی است که میزکار فعلی یا میزکار انتخاب‌شده را در صورت استفاده از شرط \fIDesk\fP نشان می‌دهد. گزینه \fINoCurrentDeskTitle\fP این عنوان را حذف می‌کند. گزینه \fITitleForAllDesks\fP باعث می‌شود fvwm یک عنوان منو با نام و/یا شماره میزکار قبل از هر گروه پنجره روی همان میزکار اضافه کند. با \fINoLayer\fP لایه پنجره نمایش داده نمی‌شود. گزینه‌های \fIShowPage\fP، \fIShowPageX\fP و \fIShowPageY\fP نمایش صفحه پنجره را فعال می‌کنند. با \fIShowScreen\fP نام نمایشگر پنجره نشان داده می‌شود. .sp گزینه \fIMaxLabelWidth\fP تعداد کاراکترهای قابل چاپ را به عنوان آرگومان دریافت می‌کند. بیش از این تعداد کاراکتر از نام پنجره قابل مشاهده نخواهد بود. .sp اگر بخواهید از \fBWindowList\fP به عنوان یک مدیریت‌کننده آیکون استفاده کنید، می‌توانید دستور زیر را فراخوانی کنید: .sp .if n .RS 4 .nf .fam C WindowList OnlyIcons, Sticky, OnTop, Geometry .fam .fi .if n .RE .sp (توجه: گزینه‌های \fIOnly\fP اساساً همه گزینه‌های دیگر را خنثی می‌کنند، به جز \fIOnlyListSkip\fP که باعث می‌شود \fBWindowList\fP فقط پنجره‌های دارای سبک \fIWindowListSkip\fP را در نظر بگیرد.) .RE .sp \fBXSync\fP .RS 4 هنگامی که \fBXSync\fP فراخوانی می‌شود، از تابع X با همان نام برای ارسال تمامی درخواست‌های معلق X به سرور استفاده می‌گردد. این دستور تنها برای اشکال‌زدایی در نظر گرفته شده است. .RE .sp \fBXSynchronize\fP [bool] .RS 4 دستور \fBXSynchronize\fP کنترل می‌کند که آیا درخواست‌های X فوراً به سرور X ارسال شوند یا خیر. به طور معمول، درخواست‌ها در دسته‌های بزرگتر ارسال می‌شوند تا از ارتباطات غیرضروری جلوگیری شود. برای ارسال فوری درخواست‌ها از "True" به عنوان آرگومان استفاده کنید، برای غیرفعال کردن آن از "False" و برای جابجایی بین هر دو روش از "Toggle" استفاده نمایید یا آرگومان \fBbool\fP را حذف کنید. fvwm هنگامی که با گزینه \fB\-\-debug\fP راه‌اندازی شود، به طور پیش‌فرض روی درخواست‌های همگام تنظیم می‌گردد. این دستور تنها برای اشکال‌زدایی کاربرد دارد. .RE .sp \fB+\fP .RS 4 برای ادامه افزودن به آخرین دکور، تابع یا منوی مشخص‌شده استفاده می‌شود. به مباحث مربوط به \fBAddToDecor\fP، \fBAddToFunc\fP و \fBAddToMenu\fP مراجعه کنید. .RE .SS "جابجایی و جای‌گذاری پنجره (Window Movement and Placement)" .sp \fBAnimatedMove\fP \fIx\fP \fIy\fP [Warp] .RS 4 جابجایی یک پنجره به صورت متحرک و دارای انیمیشن. مشابه دستور \fBMove\fP است. گزینه‌ها یکسان هستند، با این تفاوت که در اینجا اجباری می‌باشند، زیرا جابجایی تعاملی و متحرک پنجره توسط کاربر بی‌معنی است. اگر آرگومان اختیاری \fIWarp\fP مشخص شود، نشانگر ماوس نیز همراه با پنجره منتقل می‌شود. .RE .sp \fBGeometryWindow\fP Hide | Show | Colorset \fIn\fP | Position \fIx\fP \fIy\fP | Screen \fIS\fP .RS 4 پنجره نمایش موقعیت یا اندازه را که معمولاً هنگام جابجایی یا تغییر اندازه تعاملی پنجره نشان داده می‌شود، پیکربندی می‌کند. این دستور می‌تواند برای مخفی کردن، نمایش دادن، تغییر مجموعه رنگ، تغییر مکان یا تغییر صفحه نمایش پنجره ابعاد هندسی استفاده شود. می‌توان چندین گزینه را به طور همزمان با فاصله از هم تنظیم کرد. جزئیات هر گزینه در زیر شرح داده شده است. .sp .if n .RS 4 .nf .fam C GeometryWindow Hide [Never | Move | Resize] .fam .fi .if n .RE .sp پنجره ابعاد هندسی را پنهان یا خاموش می‌کند. اگر پارامترهای اختیاری \fIMove\fP یا \fIResize\fP داده شوند، پنجره ابعاد هندسی تنها در حین عملیات مربوطه پنهان می‌شود. پارامتر \fINever\fP نمایش پنجره ابعاد را مجدداً فعال می‌کند (معادل با \fIShow\fP). .sp .if n .RS 4 .nf .fam C GeometryWindow Show [Never | Move | Resize] .fam .fi .if n .RE .sp پنجره ابعاد هندسی را نمایش داده یا روشن می‌کند (معادل با \fIHide Never\fP). اگر پارامترهای اختیاری \fIMove\fP یا \fIResize\fP مشخص شوند، تنها در طول عملیات مربوطه پنجره ابعاد را نشان می‌دهد. پارامتر \fINever\fP پنجره ابعاد را خاموش می‌کند (معادل با \fIHide\fP). .sp .if n .RS 4 .nf .fam C GeometryWindow Colorset _cset_ .fam .fi .if n .RE .sp مجموعه رنگ پنجره ابعاد را روی \fIcset\fP تنظیم می‌کند. از گزینه دقیق \fIdefault\fP برای \fIcset\fP استفاده کنید تا از مجموعه رنگ پیش‌فرض استفاده شود. .sp .if n .RS 4 .nf .fam C GeometryWindow Position [+|\-]_x_[p] [+|\-]_y_[p] .fam .fi .if n .RE .sp موقعیتی را که پنجره ابعاد در آن ظاهر می‌شود پیکربندی می‌کند. \fIx\fP و \fIy\fP مختصات نسبی به عنوان درصدی از اندازه صفحه نمایش هستند. اگر یک علامت '-' در ابتدا قرار گیرد، مختصات به ترتیب از سمت راست/پایین صفحه نمایش محاسبه می‌شوند. اگر یک 'p' به انتهای مختصات اضافه شود، به عنوان تعداد پیکسل‌ها از لبه مربوطه صفحه تفسیر می‌شوند. اگر هیچ آرگومان موقعیتی داده نشود، موقعیت پنجره ابعاد به حالت پیش‌فرض خود یعنی گوشه بالا سمت چپ یا در صورت شبیه‌سازی MWM به مرکز صفحه بازمی‌گردد. .sp .if n .RS 4 .nf .fam C GeometryWindow Screen _RANDRNAME_ .fam .fi .if n .RE .sp پیکربندی می‌کند که پنجره ابعاد در کدام نمایشگر نشان داده شود. به طور پیش‌فرض پنجره ابعاد در نمایشگر فعلی نشان داده می‌شود. اگر یک \fIRANDRNAME\fP معتبر ارائه شود، پنجره ابعاد همیشه در آن نمایشگر نشان داده خواهد شد. از \fIcurrent\fP به عنوان \fIRANDRNAME\fP برای بازگشت به حالت پیش‌فرض استفاده کنید. .sp مثال‌ها: .sp .if n .RS 4 .nf .fam C # قرار دادن پنجره ابعاد در مرکز صفحه GeometryWindow Position 50 50 # قرار دادن پنجره ابعاد کنار پنل سمت راست GeometryWindow Position \-120p 0 # استفاده از مجموعه رنگ ۲ برای پنجره ابعاد GeometryWindow Colorset 2 # نمایش پنجره ابعاد فقط در مانیتور اصلی GeometryWindow Screen $[monitor.primary] # مخفی کردن پنجره ابعاد GeometryWindow Hide .fam .fi .if n .RE .RE .sp \fBLayer\fP [\fIarg1\fP \fIarg2\fP] | [default] .RS 4 پنجره فعلی را در یک لایه جدید قرار می‌دهد. اگر \fIarg1\fP غیر صفر باشد، لایه بعدی برابر با شماره لایه فعلی به علاوه \fIarg1\fP خواهد بود. اگر \fIarg1\fP صفر باشد، لایه جدید برابر با \fIarg2\fP خواهد بود. .sp به عنوان یک حالت خاص، \fIdefault\fP پنجره را در لایه پیش‌فرض آن، یعنی لایه‌ای که در ابتدا در آن قرار داشت، قرار می‌دهد. در صورت عدم تعیین آرگومان یا مشخص کردن آرگومان‌های نامعتبر نیز همین اتفاق می‌افتد. .RE .sp \fBLower\fP .RS 4 به کاربر امکان می‌دهد پنجره را پایین ببرد. توجه داشته باشید که این دستور پنجره را تنها در لایه خودش پایین می‌برد. برای بردن یک پنجره به پایین‌ترین نقطه مطلق، از دستورات زیر استفاده کنید: .sp .if n .RS 4 .nf .fam C AddToFunc lower\-to\-bottom + I Layer 0 0 + I Lower .fam .fi .if n .RE .RE .sp \fBMove\fP [\fIoptions\fP] .RS 4 به کاربر امکان می‌دهد یک پنجره را جابجا کند. اگر از درون یک پنجره یا حاشیه آن فراخوانی شود، آن پنجره جابجا می‌شود. اگر از پنجره ریشه فراخوانی شود، کاربر می‌تواند پنجره هدف را انتخاب کند. دستور Move می‌تواند با گزینه‌های گوناگون برای شروع جابجایی تعاملی، تعیین موقعیت جابجایی یا تعیین یک جهت فراخوانی شود. .sp دستور \fBMove\fP بدون گزینه، یک جابجایی تعاملی را آغاز می‌کند. پنجره ممکن است به پنجره‌های دیگر و لبه‌های صفحه بچسبد (snap)، که این رفتار با سبک \fBSnapAttraction\fP قابل تنظیم است. جابجا کردن پنجره به لبه صفحه می‌تواند برای کشیدن پنجره به صفحات دیگر استفاده شود (برای اطلاعات بیشتر به \fBEdgeScroll\fP و سبک \fIEdgeMoveDelay\fP مراجعه کنید). .sp نگه داشتن کلید \fIAlt\fP چسبندگی را غیرفعال کرده و اجازه می‌دهد بدون هیچ تاخیری صفحات جابجا شوند. جابجایی تعاملی را می‌توان با کلید \fIEscape\fP یا هر دکمه ماوسی که برای قرار دادن پنجره تنظیم نشده لغو کرد. به طور پیش‌فرض دکمه ۲ ماوس برای لغو عملیات جابجایی تنظیم شده است. برای تغییر این مورد می‌توانید از دستور \fBMouse\fP با زمینه ویژه 'P' برای Placement استفاده کنید. .sp شرط پنجره \fIPlacedByButton\fP می‌تواند برای بررسی اینکه آیا دکمه خاصی برای جای‌گذاری پنجره فشرده شده است یا خیر استفاده شود (به دستور \fBCurrent\fP مراجعه کنید). .sp اگر تک‌آرگومان \fIpointer\fP داده شود، گوشه بالا سمت چپ پنجره پیش از شروع جابجایی تعاملی به موقعیت نشانگر ماوس منتقل می‌شود؛ این قابلیت عمدتاً برای استفاده داخلی توسط ماژول‌هایی مانند \fBFvwmPager\fP در نظر گرفته شده است. .sp .if n .RS 4 .nf .fam C Move pointer .fam .fi .if n .RE .sp برای جابجایی پنجره در یک جهت مشخص تا زمانی که به پنجره، آیکون یا مرز صفحه نمایش دیگری برخورد کند، از دستور زیر استفاده کنید: .sp .if n .RS 4 .nf .fam C Move shuffle [options] _direction_(s) .fam .fi .if n .RE .sp جهت \fIdirection\fP می‌تواند \fINorth\fP/\fIN\fP/\fIUp\fP/\fIU\fP، \fIEast\fP/\fIE\fP/\fIRight\fP/\fIR\fP، \fISouth\fP/\fIS\fP/\fIDown\fP/\fID\fP یا \fIWest\fP/\fIW\fP/\fILeft\fP/\fIL\fP باشد. پنجره در جهت داده‌شده حرکت می‌کند تا زمانی که به پنجره دیگر یا مرز \fBEwmhBaseStruts\fP/صفحه نمایش برخورد کند. هنگامی که پنجره در مرز صفحه نمایش یا \fBEwmhBaseStruts\fP قرار دارد، در صورت وجود به مانیتور بعدی در جهت داده‌شده منتقل می‌شود. اگر پنجره خارج از ناحیه کاری فعلی باشد (بخشی از آن خارج از صفحه باشد)، به لبه ناحیه کاری حرکت می‌کند. پنجره‌ها به ناحیه کاری EWMH احترام می‌گذارند و در \fBEwmhBaseStruts\fP متوقف می‌شوند مگر اینکه گزینه \fIewmhiwa\fP مشخص شده باشد. اگر چندین جهت داده شود، پنجره به ترتیب توالی ذکرشده در آن جهات حرکت می‌کند. .sp گزینه دقیق \fIWarp\fP نشانگر ماوس را به پنجره منتقل می‌کند. گزینه دقیق \fIall_windows\fP تمامی پنجره‌های روی همان مانیتور را به جای فقط پنجره‌های در مسیر حرکت در نظر می‌گیرد. این امکان جابجایی به مرز پنجره‌ای که در کنار آن قرار دارد را فراهم می‌کند. گزینه دقیق \fIboth_sides\fP هم سمت نزدیک و هم سمت دور پنجره را در نظر می‌گیرد (به طور پیش‌فرض فقط سمت نزدیک در نظر گرفته می‌شود). .sp اگر گزینه دقیق \fIsnap\fP همراه با نوع چسبندگی \fIwindows\fP، \fIicons\fP یا \fIsame\fP داده شود، پنجره تنها در صورت برخورد با پنجره دیگر، آیکون یا همان نوع متوقف می‌شود. اگر گزینه دقیق \fIlayers\fP به همراه دو عدد صحیح برای مشخص کردن لایه \fImin\fP و لایه \fImax\fP داده شود، تنها پنجره‌های موجود در لایه‌های بین حداقل و حداکثر پنجره را متوقف می‌کنند. به عنوان مثال: .sp .if n .RS 4 .nf .fam C # لغزش پنجره به راست Move shuffle Right # لغزش به بالا، فقط در نظر گرفتن پنجره‌های لایه ۳ Move shuffle layers 3 3 Up # لغزش به چپ سپس به بالا Move shuffle Left Up # لغزش به بالا سپس به چپ Move shuffle Up Left .fam .fi .if n .RE .sp از Move می‌توان برای انتقال پنجره به یک موقعیت مشخص استفاده کرد: .sp .if n .RS 4 .nf .fam C Move [screen _S_] [desk _N_] [w | m | v]_x_[p | w] \(rs [w | m | v]_y_[p | w] [Warp] [ewmhiwa] .fam .fi .if n .RE .sp این دستور پنجره را به موقعیت \fIx\fP و \fIy\fP منتقل می‌کند. به طور پیش‌فرض، ناحیه کاری EWMH هر مانیتور رعایت می‌شود. این بدان معناست که اگر پنجره‌ای خارج از ناحیه کاری قرار گیرد، موقعیت پنجره به گونه‌ای تنظیم می‌شود که در ناحیه کاری صفحه‌ای که مرکز پنجره روی آن قرار دارد جای گیرد. اگر گزینه \fIewmhiwa\fP داده شود، موقعیت پنجره ناحیه کاری را نادیده گرفته و تنظیم نخواهد شد (این گزینه برای خارج کردن پنجره‌ها از صفحه و کنترل کامل روی محل قرارگیری آن‌ها لازم است). اگر گزینه \fIWarp\fP داده شود، نشانگر به پنجره منتقل می‌گردد. .sp اگر گزینه \fIscreen\fP به همراه نام صفحه RandR به نام \fIS\fP مشخص شود، مختصات به عنوان مختصات نسبی به صفحه داده‌شده تفسیر می‌شوند. عرض و ارتفاع آن صفحه به جای ابعاد کل نمایشگر در محاسبات استفاده می‌شوند. پارامتر \fIscreen\fP همانند دستور \fBMoveToScreen\fP تفسیر می‌شود. .sp اگر گزینه \fIdesk\fP به همراه شماره میزکار \fIN\fP مشخص شود، پنجره پس از جابجایی روی میزکار مشخص‌شده قرار می‌گیرد. این کار دو هدف دارد: اول اینکه می‌توانید موقعیت و میزکار یک پنجره را در یک دستور جابجا کنید. دوم، هنگامی که پنجره‌ای بین مانیتورها جابجا می‌شود، میزکار آن به‌روزرسانی می‌شود تا مشابه مانیتور جدید باشد. این گزینه می‌تواند با تعیین میزکار نهایی، آن رفتار را بازنویسی کند. .sp آرگومان‌های موقعیتی \fIx\fP و \fIy\fP می‌توانند موقعیت مطلق یا نسبی را از چپ/بالا (مقادیر مثبت) یا راست/پایین (مقادیر منفی) کل صفحه یا صفحه مشخص‌شده تعیین کنند. به طور پیش‌فرض، مقدار عددی به عنوان درصدی از عرض/ارتفاع صفحه تفسیر می‌شود، اما پسوند 'p' تفسیر را به پیکسل تغییر می‌دهد و پسوند 'w' به معنای درصد عرض/ارتفاع پنجره است. برای جابجایی پنجره نسبت به موقعیت فعلی آن، پیشوند 'w' (مخفف window) را قبل از مقدار \fIx\fP و/یا \fIy\fP اضافه کنید. برای جابجایی پنجره نسبت به مکان فعلی نشانگر ماوس، پیشوند 'm' (مخفف mouse) را اضافه کنید. برای جابجایی نسبت به مختصات صفحه مجازی، پیشوند 'v' (مخفف virtual) را اضافه کنید. برای دست‌نخورده باقی ماندن هر یک از مختصات، می‌توان "\fIkeep\fP" را به جای \fIx\fP یا \fIy\fP مشخص کرد. .sp برای کاربردهای پیشرفته، آرگومان‌های \fIx\fP و \fIy\fP را می‌توان چندین بار استفاده کرد، اما بدون پیشوند 'm' یا 'w'. .sp مثال‌های ساده: .sp .if n .RS 4 .nf .fam C # جابجایی تعاملی Mouse 1 T A Move # انتقال پنجره به نحوی که گوشه بالا چپ در (10%,10%) باشد Mouse 2 T A Move 10 10 # انتقال گوشه بالا چپ به (10px, 10px) Mouse 3 T A Move 10p 10p .fam .fi .if n .RE .sp مثال‌های پیچیده‌تر: .sp .if n .RS 4 .nf .fam C # انتقال پنجره به گونه‌ای که گوشه پایین راست در پایین راست صفحه باشد Move \-0 \-0 # انتقال پنجره به نحوی که گوشه بالا چپ ۱۰ پیکسل از لبه بالا چپ فاصله داشته باشد Move +\-10 +\-10 # انتقال پنجره ۵٪ به راست و در وسط به صورت عمودی Move w+5 50 # انتقال پنجره ۱۰ پیکسل به بالا و لبه چپ در x=40 پیکسل Move 40p w\-10p # انتقال پنجره به مکان نشانگر ماوس Move m+0 m+0 # انتقال پنجره به مرکز صفحه Move 50\-50w 50\-50w .fam .fi .if n .RE .sp همچنین به دستور \fBAnimatedMove\fP مراجعه کنید. .RE .sp \fBMoveToDesk\fP [prev | \fIarg1\fP [\fIarg2\fP] [\fImin\fP \fImax\fP]] .RS 4 پنجره انتخاب‌شده را به میزکار دیگری منتقل می‌کند. آرگومان‌ها مشابه دستور \fBGotoDesk\fP هستند. بدون هیچ آرگومانی، پنجره به میزکار فعلی منتقل می‌شود. .RE .sp \fBMoveThreshold\fP [\fIpixels\fP] .RS 4 هنگامی که کاربر دکمه ماوس را روی یک شیء فشار می‌دهد، fvwm منتظر می‌ماند تا ببیند آیا این عمل یک کلیک است یا کشیدن (drag). اگر ماوس بیش از \fIpixels\fP پیکسل حرکت کند، عمل کشیدن در نظر گرفته می‌شود. .sp در نسخه‌های قبلی fvwm مقدار \fIpixels\fP روی ۳ پیکسل ثابت بود که اکنون نیز مقدار پیش‌فرض است. اگر مقدار \fIpixels\fP منفی باشد یا حذف شود، مقدار پیش‌فرض بازیابی می‌شود. .RE .sp \fBMoveToPage\fP [\fIoptions\fP] [\fIx\fP[p | w] \fIy\fP[p | w]] | [prev] .RS 4 پنجره انتخاب‌شده را به صفحه دیگری (\fIx\fP,\fIy\fP) منتقل می‌کند. صفحه بالا سمت چپ (0,0) است، صفحه بالا سمت راست (M,0) است که در آن M یک واحد کمتر از تعداد صفحات افقی فعلی مشخص‌شده در دستور \fBDesktopSize\fP است. به طور مشابه صفحه پایین سمت چپ (0,N) و صفحه پایین سمت راست (M,N) است. شماره صفحات منفی به صفحات از راست‌ترین/پایین‌ترین صفحه اشاره دارند. اگر \fIx\fP و \fIy\fP داده نشوند، پنجره به صفحه فعلی منتقل می‌شود (پنجره‌ای که تمرکز دارد اما خارج از صفحه است را می‌توان با این روش بازیابی کرد). انتقال پنجره‌ها به صفحه‌ای نسبت به صفحه فعلی را می‌توان با افزودن پسوند 'p' پس از یک یا هر دو آرگومان عددی انجام داد. برای انتقال پنجره نسبت به مکان فعلی آن، یک پسوند 'w' اضافه کنید. برای انتقال پنجره به صفحه قبلی، از \fIprev\fP به عنوان تک‌آرگومان استفاده کنید. .sp پنجره‌ها معمولاً فراتر از مرزهای میزکار جابجا نمی‌شوند. .sp گزینه‌های احتمالی \fIwrapx\fP و \fIwrapy\fP برای چرخش به دور مختصات x یا y هنگام جابجایی پنجره فراتر از مرز میزکار هستند. به عنوان مثال، با \fIwrapx\fP، وقتی پنجره از لبه سمت راست میزکار عبور می‌کند، در لبه سمت چپ دوباره ظاهر می‌شود. گزینه‌های \fInodesklimitx\fP و \fInodesklimity\fP امکان جابجایی پنجره‌ها فراتر از مرزهای میزکار در جهت x و y را فراهم می‌کنند (که گزینه‌های \fIwrapx\fP و \fIwrapy\fP را غیرفعال می‌سازد). .sp مثال‌ها: .sp .if n .RS 4 .nf .fam C # انتقال پنجره به صفحه (2,3) MoveToPage 2 3 # انتقال پنجره به پایین‌ترین و راست‌ترین صفحه MoveToPage \-1 \-1 # انتقال پنجره به آخرین صفحه بازدیدشده MoveToPage prev # انتقال پنجره دو صفحه به راست و یک صفحه به بالا، با چرخش در مرزهای میزکار MoveToPage wrapx wrapy +2p \-1p .fam .fi .if n .RE .RE .sp \fBMoveToScreen\fP [\fIscreen\fP] .RS 4 پنجره انتخاب‌شده را به صفحه نمایش دیگری منتقل می‌کند. آرگومان \fIscreen\fP باید یک نام معتبر RandR باشد. .RE .sp \fBOpaqueMoveSize\fP [\fIpercentage\fP] .RS 4 حداکثر اندازه پنجره‌ای را که باید برای آن از جابجایی مات (کامل) استفاده شود به fvwm اعلام می‌کند. این مقدار به صورت درصدی از کل مساحت صفحه نمایش است (ممکن است بیشتر از ۱۰۰ باشد). با دستور: .sp .if n .RS 4 .nf .fam C OpaqueMoveSize 0 .fam .fi .if n .RE .sp تمام پنجره‌ها با استفاده از طرح خطی سیمی (rubber-band) سنتی جابجا می‌شوند. با دستور: .sp .if n .RS 4 .nf .fam C OpaqueMoveSize unlimited .fam .fi .if n .RE .sp یا اگر درصد منفی داده شود، تمام پنجره‌ها به صورت توپر و مات جابجا می‌شوند. حالت پیش‌فرض: .sp .if n .RS 4 .nf .fam C OpaqueMoveSize 5 .fam .fi .if n .RE .sp است که اجازه می‌دهد پنجره‌های کوچک به صورت مات جابجا شوند اما پنجره‌های بزرگ به صورت کادر سیمی حرکت کنند. اگر \fIpercentage\fP حذف شود یا نامعتبر باشد، مقدار پیش‌فرض تنظیم می‌شود. برای تغییر اندازه پنجره‌ها به صورت مات می‌توانید از سبک \fIResizeOpaque\fP استفاده کنید. به دستور \fBStyle\fP مراجعه کنید. .RE .sp \fBPlaceAgain\fP [Anim] [Icon] .RS 4 باعث می‌شود موقعیت پنجره فعلی مجدداً با استفاده از منطق اولیه جای‌گذاری پنجره محاسبه شود. پنجره به جایی منتقل می‌شود که اگر پنجره جدیدی بود که تازه ظاهر شده بود در آنجا قرار می‌گرفت. این دستور بیشتر با جای‌گذاری \fISmart\fP یا \fIClever\fP (\fIReallySmart\fP) کاربرد دارد. با آرگومان اختیاری \fIAnim\fP از یک جابجایی متحرک برای قرار دادن پنجره در موقعیت جدید استفاده می‌شود. با گزینه اضافی \fIIcon\fP، به جای پنجره، آیکون مجدداً جای‌گذاری می‌شود. .RE .sp \fBRaise\fP .RS 4 به کاربر امکان می‌دهد پنجره را بالا بیاورد. توجه داشته باشید که این دستور پنجره را تنها در لایه خودش بالا می‌آورد. برای آوردن یک پنجره به بالاترین نقطه مطلق، از دستورات زیر استفاده کنید: .sp .if n .RS 4 .nf .fam C AddToFunc raise\-to\-top + I Layer 0 ontop + I Raise .fam .fi .if n .RE .sp که در آن ontop بالاترین لایه استفاده‌شده در تنظیمات شما است. .RE .sp \fBRaiseLower\fP .RS 4 یک پنجره را به صورت متناوب بالا می‌آورد و پایین می‌برد. اگر پنجره توسط هر پنجره دیگری پوشانده شده باشد (به جز پنجره‌های گذرای خودش زمانی که از سبک \fIRaiseTransient\fP استفاده می‌شود؛ به دستور \fBStyle\fP مراجعه کنید) بالا آورده می‌شود، در غیر این صورت پایین برده می‌شود. .RE .sp \fBResize\fP [[frame] [direction \fIdir\fP] [warptoborder \fIautomatic\fP] [fixeddirection] \fIwidth\fP[p | c | wa | da] \fIheight\fP[p | c]] .RS 4 امکان تغییر اندازه یک پنجره را فراهم می‌کند. اگر از درون یک پنجره یا حاشیه آن فراخوانی شود، اندازه آن پنجره تغییر می‌کند. اگر از پنجره ریشه فراخوانی شود، کاربر می‌تواند پنجره هدف را انتخاب کند. .sp دستور \fBResize\fP بدون گزینه، یک تغییر اندازه تعاملی را آغاز می‌کند. .sp اگر سبک \fIEdgeResizeDelay\fP تنظیم شده باشد یا کلید \fIAlt\fP فشرده نگه داشته شود، اندازه پنجره می‌تواند فراتر از لبه صفحه تغییر کند. .sp عملیات را می‌توان با کلید \fIEscape\fP یا فشردن هر دکمه ماوس (به جز دکمه ۱ که آن را تایید می‌کند) لغو کرد. .sp اگر آرگومان‌های اختیاری \fIwidth\fP و \fIheight\fP ارائه شوند، اندازه پنجره به ابعاد \fIwidth\fP در \fIheight\fP تغییر می‌یابد. واحدهای \fIwidth\fP و \fIheight\fP به صورت درصد صفحه هستند، مگر اینکه حرف 'p' به یک یا هر دو مختصات اضافه شود که در این صورت بر حسب پیکسل مشخص می‌شوند. با پسوند 'c' واحد تعریف‌شده توسط برنامه کلاینت استفاده می‌شود. با پسوند 'wa' مقدار درصدی از عرض یا ارتفاع ناحیه کاری EWMH است و با پسوند 'da' درصدی از عرض یا ارتفاع ناحیه کاری پویای EWMH است. بنابراین می‌توانید بنویسید: .sp .if n .RS 4 .nf .fam C Resize 80c 24c .fam .fi .if n .RE .sp تا یک پنجره ترمینال را دقیقاً به اندازه ۸۰ در ۲۴ کاراکتر تنظیم کنید. .sp اگر قبل از \fIwidth\fP یا \fIheight\fP پیشوند حرف 'w' قرار گیرد، اندازه به عنوان یک مقدار مطلق در نظر گرفته نمی‌شود بلکه به اندازه فعلی پنجره اضافه می‌گردد. مثال: .sp .if n .RS 4 .nf .fam C # بزرگ کردن پنجره به اندازه یک خط Resize keep w+1c .fam .fi .if n .RE .sp هر دو مقدار \fIwidth\fP و \fIheight\fP می‌توانند منفی باشند. در این حالت اندازه جدید برابر با اندازه صفحه منهای مقدار داده‌شده خواهد بود. اگر هر یک از مقادیر "\fIkeep\fP" باشد، بعد متناظر پنجره دست‌نخورده باقی می‌ماند. اندازه جدید اندازه پنجره کلاینت است، بنابراین دستور: .sp .if n .RS 4 .nf .fam C Resize 100 100 .fam .fi .if n .RE .sp ممکن است پنجره را بزرگتر از صفحه نمایش کند. برای اینکه اندازه جدید بر اساس اندازه کل پنجره fvwm باشد، گزینه \fIframe\fP را پس از دستور اضافه کنید. گزینه‌های \fIfixeddirection\fP، \fIdirection\fP و \fIwarptoborder\fP تنها در عملیات جابجایی تعاملی استفاده می‌شوند. با \fIfixeddirection\fP همان حاشیه جابجا می‌شود حتی اگر نشانگر از حاشیه مخالف عبور کند. گزینه \fIdirection\fP باید با نام یک جهت مانند "NorthWest"، "South" یا "East" دنبال شود. تغییر اندازه بلافاصله شروع می‌شود، حتی اگر نشانگر روی حاشیه نباشد. اگر گزینه ویژه \fIautomatic\fP به عنوان آرگومان جهت داده شود، جهت تغییر اندازه بر اساس موقعیت نشانگر در پنجره محاسبه می‌شود. اگر نشانگر در وسط پنجره باشد، هیچ جهتی محاسبه نمی‌شود. گزینه \fIwarptoborder\fP می‌تواند برای انتقال نشانگر به جهت مشخص‌شده استفاده شود. همچنین اگر تغییر اندازه با کلیک روی حاشیه پنجره آغاز شود، نشانگر به لبه بیرونی حاشیه منتقل می‌شود. .sp .if n .RS 4 .nf .fam C AddToFunc ResizeSE I Resize Direction SE Mouse 3 A M ResizeSE .fam .fi .if n .RE .RE .sp \fBResize\fP [bottomright | br \fIx\fP \fIy\fP] .RS 4 اگر کلیدواژه \fIbottomright\fP یا به اختصار \fIbr\fP بعد از نام دستور بیاید، یک نحو جایگزین استفاده می‌شود. در این حالت آرگومان‌های \fIx\fP و \fIy\fP موقعیت مورد نظر گوشه پایین سمت راست پنجره را مشخص می‌کنند. آن‌ها دقیقاً مانند آرگومان‌های \fIx\fP و \fIy\fP دستور \fBMove\fP تفسیر می‌شوند. در واقع هر یک از گزینه‌های پذیرفته‌شده توسط دستور \fBMove\fP را می‌توان در اینجا نیز استفاده کرد. .RE .sp \fBResizeMaximize\fP [\fIresize\-arguments\fP] .RS 4 اثرات \fBResize\fP و \fBMaximize\fP را در یک دستور واحد ترکیب می‌کند. هنگامی که روی یک پنجره بیشینه‌شده استفاده می‌شود، اندازه پنجره تغییر کرده و پس از آن همچنان در وضعیت بیشینه باقی می‌ماند. هنگامی که روی یک پنجره غیربیشینه استفاده می‌شود، اندازه پنجره تغییر کرده و پس از آن در وضعیت بیشینه قرار می‌گیرد. این دستور زمانی مفید است که کاربر بخواهد اندازه پنجره را موقتاً تغییر دهد و سپس به ابعاد هندسی اولیه بازگردد. آرگومان‌های \fIresize\-arguments\fP همانند دستور \fBResize\fP هستند. .RE .sp \fBResizeMove\fP \fIresize\-arguments\fP \fImove\-arguments\fP .RS 4 این دستور همان کار دستورات \fBResize\fP و \fBMove\fP را انجام می‌دهد، اما در یک فراخوانی واحد که از نظر بصری پرش کمتری دارد. آرگومان‌های \fIresize\-arguments\fP دقیقاً همان آرگومان‌های دستور \fBResize\fP هستند و \fImove\-arguments\fP دقیقاً همان آرگومان‌های دستور \fBMove\fP می‌باشند به جز گزینه \fIpointer\fP که توسط دستور \fBResizeMove\fP پشتیبانی نمی‌شود. .sp مثال‌ها: .sp .if n .RS 4 .nf .fam C # انتقال پنجره به گوشه بالا سمت چپ و پوشش بیشتر صفحه ResizeMove \-10p \-20p 0 0 # گسترش پنجره دارای تمرکز به سمت بالای صفحه Current Resize keep w+$[w.y]p keep 0 .fam .fi .if n .RE .sp توجه: اگر از گزینه \fIbottomright\fP از دستور \fBResize\fP استفاده شود، ممکن است fvwm نتواند دستور را به درستی تجزیه کند. .RE .sp \fBResizeMoveMaximize\fP \fIresize\-arguments\fP \fImove\-arguments\fP .RS 4 اثرات \fBResizeMove\fP و \fBMaximize\fP را در یک دستور واحد ترکیب می‌کند. هنگامی که روی یک پنجره بیشینه‌شده استفاده می‌شود، اندازه پنجره تغییر یافته، جابجا شده و همچنان در وضعیت بیشینه باقی می‌ماند. هنگامی که روی یک پنجره غیربیشینه استفاده شود، اندازه پنجره تغییر یافته و در وضعیت بیشینه قرار می‌گیرد. این دستور برای تغییر موقت اندازه و موقعیت پنجره و سپس بازگشت به هندسه اولیه مفید است. .RE .sp \fBRestackTransients\fP .RS 4 این دستور پنجره‌های گذرای (transient) یک پنجره را در ترتیب چیدمان (stacking order) نزدیک به آن بازآرایی می‌کند، گویی پنجره تازه پایین رفته و سپس بالا آمده است. موقعیت خود پنجره تغییر نمی‌کند. تنها پنجره‌هایی که از سبک \fIRaiseTransient\fP یا \fILowerTransient\fP استفاده می‌کنند تحت تأثیر قرار می‌گیرند. هنگامی که \fBRestackTransients\fP روی یک پنجره گذرا با تنظیم سبک \fIStackTransientParent\fP استفاده شود، به پنجره والد هدایت می‌گردد. .RE .sp \fBSetAnimation\fP \fImilliseconds\-delay\fP [\fIfractions\-to\-move\-list\fP] .RS 4 زمان بین فریم‌ها و فهرست افست‌های کسری را برای سفارشی‌سازی جابجایی‌های متحرک دستور \fBAnimatedMove\fP و انیمیشن منوها تنظیم می‌کند (اگر سبک منو روی متحرک تنظیم شده باشد؛ به دستور \fBMenuStyle\fP مراجعه کنید). اگر \fIfractions\-to\-move\-list\fP حذف شود، تنها زمان بین فریم‌ها تغییر می‌کند. این فهرست مشخص می‌کند که پنجره در هر فریم متوالی چه مقدار از تفاوت بین مکان شروع و مکان پایان را باید طی کند. به عنوان مثال: .sp .if n .RS 4 .nf .fam C SetAnimation 10 \-.01 0 .01 .03 .08 .18 .3 \(rs \&.45 .6 .75 .85 .90 .94 .97 .99 1.0 .fam .fi .if n .RE .sp تاخیر بین فریم‌ها را روی ۱۰ میلی‌ثانیه تنظیم می‌کند و موقعیت‌های ۱۶ فریم حرکت انیمیشن را تعیین می‌نماید. مقادیر منفی مجاز هستند و به ویژه می‌توان از آن‌ها برای ایجاد حرکتی شبیه به کارتون استفاده کرد، به این صورت که پنجره ابتدا کمی در جهت مخالف حرکت اصلی جابجا شود. تنظیمات بالا حالت پیش‌فرض هستند. .RE .sp \fBXorPixmap\fP [\fIpixmap\fP] .RS 4 نگاره‌پیکسلی (pixmap) را انتخاب می‌کند که بیت‌ها با آن هنگام جابجایی یا تغییر اندازه سیمی (rubber-band) پنجره XOR می‌شوند. این کار شانس بیشتری برای قابل مشاهده کردن کادر سیمی در صورتی که \fBXorValue\fP نتایج خوبی ندهد فراهم می‌کند. یک نمونه pixmap به نام \fIresize.rainbow.xpm\fP همراه با بسته آیکون‌ها ارائه شده است. برای خاموش کردن مجدد \fIXorPixmap\fP از دستور \fBXorValue\fP استفاده کنید یا آرگومان \fIpixmap\fP را حذف نمایید. .RE .sp \fBXorValue\fP [\fInumber\fP] .RS 4 مقداری را که بیت‌ها با آن هنگام جابجایی یا تغییر اندازه سیمی پنجره XOR می‌شوند تغییر می‌دهد. مقادیر معتبر از صفر تا حداکثر مقدار یک عدد صحیح بدون علامت (unsigned long) در سیستم شما متغیر است. تنظیم این مقدار یک فرآیند آزمون و خطاست. مقدار پیش‌فرض 0 تلاش می‌کند مقداری را بیابد که کنتراست خوبی با سیاه و سفید ایجاد کند. اگر \fInumber\fP داده‌شده حذف شود یا نامعتبر باشد، از مقدار پیش‌فرض استفاده می‌شود. .RE .SS "تمرکز و حرکت ماوس (Focus & Mouse Movement)" .sp \fBCursorBarrier\fP [destroy] [options] [\fIleft\fP \fItop\fP \fIright\fP \fIbottom\fP] .RS 4 مانع نشانگر (cursor barrier) کادری است که نشانگر ماوس نمی‌تواند به بیرون از آن حرکت کند (مگر اینکه با \fICursorMove\fP یا \fIWarpToWindow\fP پرش داده شود). مقادیر \fIleft\fP، \fItop\fP، \fIright\fP و \fIbottom\fP فاصله درصدی کادر را از هر یک از لبه‌های مربوطه میزکار مشخص می‌کنند. اگر مقادیر با \fIp\fP خاتمه یابند، به عنوان مقادیر پیکسلی تفسیر می‌شوند. اگر گزینه \fIcoords\fP داده شود، مقادیر به عنوان مختصات چپ/بالا و راست/پایین گوشه‌های کادر تفسیر می‌شوند. اگر گزینه \fIscreen RandRname\fP داده شود، موقعیت‌ها نسبت به مانیتور مشخص‌شده محاسبه می‌شوند. از \fIscreen c\fP برای قرار دادن مانع روی مانیتور فعلی استفاده کنید. .sp با فراخوانی مکرر \fICursorBarrier\fP می‌توان چندین مانع ایجاد کرد. این کار امکان ایجاد چندین ناحیه برای محدود کردن نشانگر (مانند هر مانیتور در یک چیدمان چندمانیتوره) را فراهم می‌کند، سپس با استفاده از \fICursorMove\fP یا \fIWarpToWindow\fP نشانگر را بین موانع جابجا کنید. اگر دستور \fIdestroy\fP گنجانده شود، تمام موانع از بین می‌روند و حرکت آزادانه ماوس مجدداً امکان‌پذیر می‌شود. اگر بعد از \fIdestroy\fP یک عدد صحیح \fIN\fP بیاید، تنها همان مانع حذف می‌شود (موانع به ترتیب ایجادشان از 0 شماره‌گذاری می‌شوند). اگر عدد صحیح منفی باشد، به صورت معکوس شمارش می‌شود، مثلاً "\-1" جدیدترین مانع ایجادشده، "\-2" دومین مانع جدید و غیره است. هنگامی که یک مانع حذف می‌شود، تمام موانع پس از آن مجدداً شماره‌گذاری می‌شوند. در عمل بهتر است از \fIdestroy \-1\fP برای حذف جدیدترین مانع بدون تأثیر بر موانع قبلی استفاده شود. .sp به طور پیش‌فرض، کلید میانبر ctrl+shift+D تمام موانع نشانگر را با فراخوانی \fICursorBarrier destroy\fP از بین می‌برد. .sp چند نمونه مثال: .sp .if n .RS 4 .nf .fam C # مانعی با ۱۵٪ فاصله از چپ/راست و ۱۰٪ از بالا/پایین CursorBarrier 15 10 15 10 # مانعی برای محدود کردن ماوس به مانیتور فعلی CursorBarrier screen c # مانعی برای محدود کردن ماوس به یک پنجره انتخاب‌شده Pick CursorBarrier coords $[w.x]p $[w.y]p \(rs $[math.+.$[w.x],$[w.width]]p $[math.+.$[w.y],$[w.height]]p # حذف تمامی موانع CursorBarrier destroy .fam .fi .if n .RE .sp توجه داشته باشید که اگر به محدودیت CURSOR_BARRIER برسید، تمام موانع تعریف‌شده حذف می‌شوند. در عمل بعید است چنین اتفاقی بیفتد. اگر رخ دهد، پیامی در لاگ‌های اشکال‌زدایی fvwm3 چاپ می‌شود. .sp دستور \fICursorBarrier\fP تنها در صورتی کار می‌کند که fvwm با افزونه XFixes کامپایل شده باشد. .RE .sp \fBCursorMove\fP [screen \fIRANDRNAME\fP] \fIhorizontal\fP[p] \fIvertical\fP[p] .RS 4 بدون گزینه \fIscreen\fP، دستور \fICursorMove\fP نشانگر ماوس را به اندازه فاصله \fIhorizontal\fP و فاصله \fIvertical\fP از موقعیت فعلی‌اش جابجا می‌کند. مقادیر یا به صورت درصدی از اندازه میزکار مجازی بیان می‌شوند، یا با افزودن پسوند 'p' به مقدار، به صورت فاصله پیکسلی تفسیر می‌گردند. هر یک یا هر دوی مقادیر می‌توانند منفی باشند. برای مثال: .sp .if n .RS 4 .nf .fam C # جابجایی به اندازه یک صفحه کامل به پایین و راست CursorMove 100 100 # جابجایی دو صفحه کامل به پایین CursorMove 0 200 # جابجایی نیم صفحه به راست و یک‌چهارم صفحه به بالا CursorMove 50 \-25 # جابجایی ۱۰۰ پیکسل به چپ و ۵۰ پیکسل به پایین CursorMove \-100p 50p .fam .fi .if n .RE .sp اگر گزینه \fIscreen\fP به همراه یک نام معتبر مانیتور RandR اضافه شود، \fICursorMove\fP نشانگر را به موقعیت مطلقی که با آرگومان‌ها مشخص شده منتقل می‌کند (شروع از گوشه بالا سمت چپ)، که این مقادیر یا درصدی از اندازه مانیتور هستند یا مکانی مطلق با پسوند 'p'. به عنوان مثال: .sp .if n .RS 4 .nf .fam C # جابجایی نشانگر به مرکز مانیتور DP-1 CursorMove screen DP\-1 50 50 # جابجایی نشانگر به مکان دقیق (400, 200) در مانیتور DP-2 CursorMove screen DP\-2 400p 200p .fam .fi .if n .RE .sp هنگام جابجایی به یک \fIscreen\fP مشخص، مقادیر \fIhorizontal\fP و \fIvertical\fP همیشه به گونه‌ای منتقل می‌شوند که درون صفحه فعلی مانیتور مشخص‌شده قرار گیرند. برای مثال '50'، '150' و '-150' همگی در مرکز مانیتور خواهند بود و صفحه مانیتور را تغییر نخواهند داد. از \fBGotoPage\fP برای تغییر صفحه یک مانیتور مشخص استفاده کنید. از مقادیر منفی می‌توان برای تعیین فاصله از گوشه راست/پایین مانیتور استفاده کرد. .sp دستور \fICursorMove\fP تنها می‌تواند نشانگر را نسبت به موقعیت فعلی‌اش یا به یک موقعیت مطلق روی یک مانیتور مشخص جابجا کند. برای جابجایی نشانگر نسبت به یک پنجره، از \fBWarpToWindow\fP استفاده کنید. .RE .sp \fBFlipFocus\fP [NoWarp] .RS 4 یک دستور \fBFocus\fP را اجرا می‌کند، درست مانند اینکه کاربر از نشانگر برای انتخاب پنجره استفاده کرده باشد. این دستور ترتیب WindowList را به همان روشی که کلیک کردن روی یک پنجره برای فوکوس دادن انجام می‌دهد تغییر می‌دهد؛ یعنی پنجره هدف از \fBWindowList\fP برداشته شده و در ابتدا قرار می‌گیرد. استفاده از این دستور همراه با دستور \fBDirection\fP و در تابعی که از \fBWindowList\fP فراخوانی می‌شود پیشنهاد می‌گردد. .RE .sp \fBFocus\fP [NoWarp] .RS 4 تمرکز صفحه‌کلید را روی پنجره انتخاب‌شده تنظیم می‌کند. اگر آرگومان \fINoWarp\fP داده شود، این دستور تنها همین کار را انجام می‌دهد. در غیر این صورت، درگاه دید (viewport) یا پنجره را نیز در صورت نیاز جابجا می‌کند تا پنجره انتخاب‌شده قابل مشاهده شود. این دستور پنجره را به طور خودکار بالا نمی‌آورد. نشانگر را به داخل پنجره انتخاب‌شده پرش نمی‌دهد (به تابع \fBWarpToWindow\fP مراجعه کنید). پنجره را از حالت آیکون خارج نمی‌کند. این دستور ترتیب \fBWindowList\fP را تغییر نمی‌دهد، بلکه \fBWindowList\fP را می‌چرخاند تا پنجره هدف در ابتدا قرار گیرد. .sp هنگامی که آرگومان \fINoWarp\fP داده شود، دستور Focus نمی‌تواند تمرکز صفحه‌کلید را به پنجره‌های موجود روی میزکارهای دیگر منتقل کند. .sp برای بالا آوردن و/یا پرش نشانگر به یک پنجره همراه با \fBFocus\fP یا \fBFlipFocus\fP، از یک تابع مانند زیر استفاده کنید: .sp .if n .RS 4 .nf .fam C AddToFunc SelectWindow + I Focus + I Iconify false + I Raise + I WarpToWindow 50 8p .fam .fi .if n .RE .RE .sp \fBWarpToWindow\fP [!raise | raise] \fIx\fP[p] \fIy\fP[p] .RS 4 نشانگر ماوس را به پنجره مرتبط پرش داده و آن را بالا می‌آورد (مگر اینکه گزینه \fI!raise\fP وجود داشته باشد). پارامترهای \fIx\fP و \fIy\fP به طور پیش‌فرض درصدی از پنجره به سمت پایین و داخل از گوشه بالا سمت چپ هستند (یا تعداد پیکسل به سمت پایین و داخل در صورتی که 'p' به اعداد اضافه شود). اگر عددی منفی باشد، از لبه مخالف استفاده شده و جهت معکوس می‌گردد. این دستور با پنجره‌هایی که توسط fvwm مدیریت نمی‌شوند نیز کار می‌کند. در این حالت اگر پنجره قابل مشاهده نباشد، fvwm آن را به روی صفحه نمی‌آورد. به عنوان مثال می‌توان نشانگر را به مرکز پنجره ریشه پرش داد: .sp .if n .RS 4 .nf .fam C WindowId root WarpToWindow 50 50 .fam .fi .if n .RE .RE .SS "وضعیت پنجره (Window State)" .sp \fBClose\fP .RS 4 اگر پنجره از پروتکل حذف پنجره (delete window protocol) پشتیبانی کند، پیامی به پنجره ارسال می‌شود و از آن می‌خواهد تا با ظرافت خود را ببندد. اگر پنجره پروتکل حذف پنجره را درک نکند، همانند دستور \fBDestroy\fP نابود می‌شود. توجه: اگر پنجره پروتکل حذف پنجره را بپذیرد اما در پاسخ خود را نبندد، پنجره حذف نخواهد شد. .RE .sp \fBDelete\fP .RS 4 پیامی به پنجره ارسال می‌کند و از آن می‌خواهد که خود را ببندد، که اغلب باعث خروج برنامه می‌شود. .RE .sp \fBDestroy\fP .RS 4 پنجره برنامه را نابود می‌کند، که معمولاً باعث کرش کردن و بسته شدن ناگهانی برنامه می‌شود. .RE .sp \fBIconify\fP [\fIbool\fP] .RS 4 اگر پنجره آیکون نشده باشد، آن را آیکون می‌کند و اگر قبلاً آیکون شده باشد، آن را از حالت آیکون خارج می‌سازد. آرگومان اختیاری \fIbool\fP یک مقدار بولی است. مقدار "\fITrue\fP" به این معنی است که تنها آیکون کردن مجاز است، در حالی که "\fIFalse\fP" خروج از حالت آیکون را اجبار می‌کند. استفاده از "\fItoggle\fP" وضعیت را بین آیکون‌شده و غیرآیکون جابجا می‌کند. .sp چندین گزینه در دستور \fBStyle\fP وجود دارند که بر ظاهر و رفتار آیکون‌ها تأثیر می‌گذارند (مانند \fIStickyIcon\fP و \fINoIcon\fP). .sp برای سازگاری با گذشته، آرگومان اختیاری می‌تواند به جای "True" یک عدد مثبت یا به جای "False" یک عدد منفی باشد. توجه داشته باشید که این نحو منسوخ شده است و در آینده حذف خواهد شد. .RE .sp \fBMaximize\fP [\fIflags\fP] [\fIbool | forget\fP] [\fIhorizontal\fP[p]] [\fIvertical\fP[p]] .RS 4 بدون آرگومان‌های اختیاری (یا اگر بیت \fIbool\fP دارای مقدار "\fItoggle\fP" باشد) دستور \fBMaximize\fP باعث می‌شود پنجره به صورت متناوب بین اندازه تمام‌صفحه و اندازه عادی جابجا شود. برای اجبار پنجره به وضعیت بیشینه‌شده (یا عادی)، می‌توانید از مقدار "\fITrue\fP" یا "\fIFalse\fP" برای آرگومان \fIbool\fP استفاده کنید. .sp تنها با پارامتر "forget"، پنجره بیشینه‌شده به وضعیت عادی بازمی‌گردد اما اندازه بیشینه‌شده فعلی خود را حفظ می‌کند. این ویژگی در ترکیب با دستورات \fBResizeMaximize\fP و \fBResizeMoveMaximize\fP مفید است. اگر پنجره بیشینه نباشد، هیچ اتفاقی نمی‌افتد. .sp با آرگومان‌های اختیاری \fIhorizontal\fP و \fIvertical\fP که بر حسب درصدی از تمام‌صفحه بیان می‌شوند، کاربر می‌تواند اندازه جدید پنجره را کنترل کند. پسوند اختیاری 'p' می‌تواند برای نشان دادن پیکسل به جای درصد استفاده شود. اگر horizontal بزرگتر از 0 باشد، بعد افقی پنجره روی \fIhorizontal\fP*عرض_صفحه/100 تنظیم می‌شود. اگر مقدار کوچکتر از 0 باشد، از عرض صفحه کسر می‌شود، یعنی -25 همان 75 است. اگر \fIhorizontal\fP برابر با "\fIgrow\fP" باشد، پنجره تا رسیدن به هر مانعی در فضای موجود افقی گسترش می‌یابد. تغییر اندازه عمودی نیز به همین صورت است. اگر هر دو مقدار افقی و عمودی "grow" باشند، پنجره ابتدا به صورت عمودی و سپس به صورت افقی گسترش می‌یابد. به جای آرگومان "grow" افقی، می‌توان از "\fIgrowleft\fP" یا "\fIgrowright\fP" و به جای مقدار عمودی از "\fIgrowup\fP" یا "\fIgrowdown\fP" استفاده کرد. .sp آرگومان اختیاری \fIflags\fP فهرستی از کلیدواژه‌های جداشده با فاصله است: \fIfullscreen\fP، \fIewmhiwa\fP، \fIgrowonwindowlayer\fP، \fIgrowonlayers\fP، \fIkeepgrowing\fP، \fIall_windows\fP، \fIboth_sides\fP و \fIscreen\fP. پرچم \fIfullscreen\fP در صورت تنظیم بودن نشانه مناسب EWMH باعث تمام‌صفحه شدن پنجره می‌شود. گزینه \fIewmhiwa\fP باعث می‌شود fvwm ناحیه کاری EWMH را نادیده بگیرد. گزینه \fIgrowonwindowlayer\fP باعث می‌شود روش‌های مختلف گسترش پنجره، پنجره‌های موجود در لایه‌ای غیر از لایه پنجره بیشینه‌شده را نادیده بگیرند. گزینه \fIgrowonlayers\fP باید دو آرگومان عدد صحیح داشته باشد: اولی حداقل لایه و دومی حداکثر لایه مورد استفاده است. پنجره‌های خارج از این محدوده نادیده گرفته می‌شوند. مقدار منفی به عنوان آرگومان اول یا دوم به معنای عدم وجود حداقل یا حداکثر لایه است. گزینه \fIall_windows\fP تمامی پنجره‌های روی همان مانیتور را در جهتی که پنجره در حال گسترش است در نظر می‌گیرد. گزینه \fIboth_sides\fP هر دو سمت پنجره‌های دیگر را لحاظ می‌کند. گزینه \fIkeepgrowing\fP به پنجره اجازه می‌دهد تا فراتر از هر مرز پنجره‌ای که در حال حاضر با آن در تماس است رشد کند تا زمانی که به مرز پنجره نزدیک بعدی برسد. گزینه \fIscreen\fP باید آرگومانی داشته باشد که صفحه نمایش مورد نظر را مشخص کند. .sp چند مثال: افزودن یک دکمه در نوار عنوان برای تغییر اندازه پنجره به ارتفاع کامل عمودی صفحه: .sp .if n .RS 4 .nf .fam C Mouse 0 4 A Maximize 0 100 .fam .fi .if n .RE .sp دستور زیر باعث می‌شود پنجره‌ها به عرض کامل کشیده شوند: .sp .if n .RS 4 .nf .fam C Mouse 0 4 A Maximize 100 0 .fam .fi .if n .RE .sp دستور زیر پنجره‌ای با اندازه نصف صفحه در هر دو جهت ایجاد می‌کند: .sp .if n .RS 4 .nf .fam C Mouse 0 4 A Maximize 50 50 .fam .fi .if n .RE .sp برای گسترش افقی پنجره تا برخورد با پنجره‌ای دیگر: .sp .if n .RS 4 .nf .fam C Mouse 0 4 A Maximize 0 grow .fam .fi .if n .RE .sp برای گسترش پنجره تا برخورد با هر پنجره دیگری در همان لایه یا لایه‌ای بالاتر: .sp .if n .RS 4 .nf .fam C Mouse 0 4 A Maximize growonlayers $[w.layer] \-1 grow grow .fam .fi .if n .RE .sp برای گسترش پنجره به گونه‌ای که ۶۰ پیکسل پایین صفحه خالی بماند: .sp .if n .RS 4 .nf .fam C Mouse 0 4 A Maximize 100 \-60p .fam .fi .if n .RE .sp از مقادیر بزرگتر از ۱۰۰ باید با احتیاط استفاده شود. .RE .sp \fBRefresh\fP .RS 4 باعث می‌شود تمامی پنجره‌های روی صفحه مجدداً خود را ترسیم کنند. تمام به‌روزرسانی‌های معلق سبک‌ها و جلوه‌های ظاهری همه پنجره‌ها بلافاصله اعمال می‌شوند (مثلاً اگر دستورات \fBStyle\fP یا \fBTitleStyle\fP درون یک تابع fvwm صادر شده باشند). .RE .sp \fBRefreshWindow\fP .RS 4 باعث می‌شود پنجره انتخاب‌شده مجدداً خود را ترسیم کند. تمام به‌روزرسانی‌های معلق سبک و ظاهر پنجره بلافاصله اعمال می‌شوند. .RE .sp \fBStick\fP [\fIbool\fP] .RS 4 اگر آرگومان \fIbool\fP خالی باشد یا "\fItoggle\fP"، دستور \fBStick\fP پنجره را در صورت غیرچسبان بودن چسبان می‌کند و بالعکس. برای چسبان کردن پنجره صرف‌نظر از وضعیت فعلی آن، آرگومان \fIbool\fP باید "True" باشد. برای غیرچسبان کردن آن از "False" استفاده کنید. .RE .sp \fBStickAcrossPages\fP [\fIbool\fP] .RS 4 مشابه \fBStick\fP عمل می‌کند اما پنجره را تنها در میان صفحات (pages) چسبان می‌کند، نه در میان میزکارها (desks). .RE .sp \fBStickAcrossDesks\fP [\fIbool\fP] .RS 4 مشابه \fBStick\fP عمل می‌کند اما پنجره را تنها در میان میزکارها چسبان می‌کند، نه در میان صفحات. .RE .sp \fBWindowShade\fP [bool] | [[ShadeAgain] \fIdirection\fP] .RS 4 ویژگی کرکره‌ای شدن پنجره (Window Shade) را برای پنجره‌های دارای عنوان جابجا می‌کند. پنجره‌ها در وضعیت جمع‌شده تنها نوار عنوان را نمایش می‌دهند. اگر \fIbool\fP داده نشود یا "\fItoggle\fP" باشد، وضعیت کرکره‌ای جابجا می‌شود. اگر \fIbool\fP مقدار "True" باشد، پنجره به وضعیت جمع‌شده اجبار می‌شود. اگر "False" باشد، به حالت عادی بازمی‌گردد. برای اجبار به جمع شدن در یک جهت خاص، می‌توان از آرگومان \fIdirection\fP استفاده کرد. هر یک از رشته‌های "\fINorth\fP"، "\fISouth\fP"، "\fIWest\fP"، "\fIEast\fP"، "\fINorthWest\fP"، "\fINorthEast\fP"، "\fISouthWest\fP"، "\fISouthEast\fP" یا "\fILast\fP" قابل استفاده هستند. جهت را می‌توان با حروف اختصاری معمول مانند "\fIN\fP" و "\fINW\fP" خلاصه کرد. استفاده از جهت روی پنجره‌ای که قبلاً جمع شده است، آن را باز می‌کند. برای جمع کردن آن در جهتی دیگر، از گزینه \fIShadeAgain\fP استفاده کنید. جهت \fILast\fP پنجره را در جهتی که آخرین بار جمع شده بود جمع می‌کند. پنجره‌های بدون عنوان نیز می‌توانند کرکره‌ای شوند. لطفاً به گزینه‌های \fIWindowShadeSteps\fP، \fIWindowShadeShrinks\fP، \fIWindowShadeScrolls\fP، \fIWindowShadeLazy\fP، \fIWindowShadeAlwaysLazy\fP و \fIWindowShadeBusy\fP از دستور \fBStyle\fP مراجعه کنید. مثال‌ها: .sp .if n .RS 4 .nf .fam C Style * WindowShadeShrinks, WindowShadeSteps 20, \(rs WindowShadeLazy Mouse 1 \- S WindowShade North Mouse 1 [ S WindowShade West Mouse 1 ] S WindowShade E Mouse 1 _ S WindowShade S .fam .fi .if n .RE .sp توجه: هنگامی که پنجره‌ای با یک آرگومان \fIdirection\fP جمع شده باشد و جهت عنوان پنجره تغییر کند (به گزینه \fITitleAtTop\fP از دستور \fBStyle\fP مراجعه کنید)، جهت جمع شدن تغییر نمی‌کند. پنجره‌هایی که بدون جهت جمع شده‌اند، در جهت نوار عنوان جمع باقی می‌مانند. .sp برای سازگاری با گذشته، آرگومان اختیاری می‌تواند ۱ برای روشن و ۲ برای خاموش باشد. این نحو منسوخ شده است. .RE .SS "کلیدهای میانبر و ماوس (Mouse & Key Bindings)" .sp \fBIgnoreModifiers\fP [\fIModifiers\fP] .RS 4 به fvwm اعلام می‌کند که کدام کلیدهای تغییردهنده (modifier) را هنگام تطبیق اتصالات ماوس یا کلید نادیده بگیرد. دستور \fBIgnoreModifiers\fP بر سبک \fIClickToFocus\fP نیز تأثیر می‌گذارد. این دستور متعلق به فایل پیکربندی \fIconfig\fP شما است. اگر آن را زمانی اجرا کنید که نشست fvwm در حال اجرا است، نتایج غیرقابل پیش‌بینی خواهد بود. این دستور باید قبل از شروع هر برنامه یا ماژولی در فایل \fIconfig\fP شما ظاهر شود (مثلاً قبل از دستور \fBExec\fP). .sp پارامتر \fIModifiers\fP همان نحو اتصالات \fBMouse\fP یا \fBKey\fP را دارد، به اضافه اینکه 'L' به معنای کلید Caps Lock است. حالت پیش‌فرض "L" است. پارامتر \fIModifiers\fP می‌تواند حذف شود که به معنای نادیده نگرفتن هیچ کلید تغییردهنده‌ای است. این دستور زمانی کاربرد دارد که کلیدهای Num Lock و Scroll Lock با میانبرهای شما تداخل داشته باشند. در XFree86 کلید '2' معمولاً تغییردهنده Num Lock است و '5' به کلید Scroll Lock اشاره دارد. برای خاموش کردن این کلیدهای مزاحم می‌توانید از دستور زیر استفاده کنید: .sp .if n .RS 4 .nf .fam C IgnoreModifiers L25 .fam .fi .if n .RE .sp اگر آرگومان \fIModifiers\fP رشته "\fIdefault\fP" باشد، fvwm به مقدار پیش‌فرض "L" بازمی‌گردد. .sp \fBمهم:\fP این دستور ترافیک شبکه اضافی زیادی ایجاد می‌کند، که این امر به پردازنده شما، ارتباط شبکه، تعداد دستورات \fBKey\fP یا \fBMouse\fP در فایل پیکربندی شما و تعداد تغییردهنده‌هایی که می‌خواهید نادیده بگیرید بستگی دارد. اگر سیستم بسیار سریعی ندارید یا اتصالات میانبر شما اندک نیستند، نباید بیش از دو تغییردهنده را نادیده بگیرید. یعنی اگر مشکلی با آن ندارید نادیده‌اش نگیرید. در بخش پرسش‌های متداول (\fIFAQ\fP) می‌توانید راه‌حل بهتری برای این مشکل بیابید. .RE .sp \fBEdgeCommand\fP [screen \fIRANDRNAME\fP] [\fIdirection\fP [\fIFunction\fP]] .RS 4 دستور مشخص‌شده fvwm به نام \fIFunction\fP را به یکی از لبه‌های صفحه متصل می‌کند. جهت \fIdirection\fP می‌تواند یکی از موارد "\fINorth\fP"، "\fITop\fP"، "\fIWest\fP"، "\fILeft\fP"، "\fISouth\fP"، "\fIBottom\fP"، "\fIRight\fP" و "\fIEast\fP" باشد. اگر \fIFunction\fP حذف شود، اتصال برای این لبه حذف می‌گردد. اگر EdgeCommand بدون هیچ آرگومانی فراخوانی شود، تمام اتصالات لبه‌ها حذف می‌شوند. اگر گزینه دقیق \fIscreen\fP به همراه نام مانیتور RandR به نام \fIRANDRNAME\fP داده شود، دستور تنها برای آن مانیتور تنظیم می‌گردد. .sp دستور \fIFunction\fP هنگامی اجرا می‌شود که نشانگر ماوس وارد قاب‌های پیمایش نامرئی (pan frames) که صفحه نمایش قابل مشاهده را احاطه کرده‌اند شود. این اتصال تنها زمانی کار می‌کند که \fBEdgeThickness\fP روی مقداری بزرگتر از 0 تنظیم شده باشد. اگر تابعی به یک لبه متصل باشد، پیمایش تعیین‌شده توسط \fBEdgeScroll\fP برای آن لبه غیرفعال می‌شود. می‌توان یک تابع را تنها به برخی لبه‌ها متصل کرد و از لبه‌های دیگر برای پیمایش استفاده نمود. این دستور برای بالا یا پایین بردن پنجره‌های خاصی هنگام ورود نشانگر ماوس به لبه کاربرد دارد. از \fBFvwmAuto\fP می‌توان برای ایجاد تاخیر هنگام بالا یا پایین بردن پنجره‌ها استفاده کرد. مثال زیر در صورتی که نشانگر ماوس وارد لبه بالایی صفحه شود، \fBFvwmButtons\fP را بالا می‌آورد: .sp .if n .RS 4 .nf .fam C # غیرفعال کردن EdgeScrolling اما امکان حرکت پنجره‌ها روی لبه صفحه EdgeResistance \-1 Style * EdgeMoveDelay 250 Style * EdgeMoveResistance 20 # تنظیم ضخامت لبه صفحه روی ۱ EdgeThickness 1 # دادن فوکوس به FvwmButtons در صورت برخورد ماوس با لبه بالا EdgeCommand Top Next (FvwmButtons) Focus # اطمینان از تطابق دستور Next با پنجره Style FvwmButtons CirculateHit Module FvwmButtons Module FvwmAuto 100 "Silent AutoRaiseFunction" \(rs "Silent AutoLowerFunction" # اگر هر پنجره‌ای به جز FvwmButtons فوکوس داشته باشد، FvwmButtons پایین برود DestroyFunc AutoLowerFunction AddToFunc AutoLowerFunction + I Current (!FvwmButtons) All (FvwmButtons) Lower # اگر FvwmButtons فوکوس داشته باشد، بالا آورده شود DestroyFunc AutoRaiseFunction AddToFunc AutoRaiseFunction + I Current (FvwmButtons) Raise .fam .fi .if n .RE .sp به طور معمول، قاب‌های پیمایش نامرئی تنها روی لبه‌هایی از صفحه هستند که با صفحات مجازی هم‌مرزند. اگر لبه‌ای از صفحه دستوری به آن متصل باشد، قاب پیمایش همیشه روی آن لبه ایجاد می‌شود. .RE .sp \fBEdgeLeaveCommand\fP [screen \fIRANDRNAME\fP] [\fIdirection\fP [\fIFunction\fP]] .RS 4 دستور مشخص‌شده fvwm به نام \fIFunction\fP را به یکی از لبه‌های صفحه متصل می‌کند. جهت می‌تواند یکی از موارد "\fINorth\fP"، "\fITop\fP"، "\fIWest\fP"، "\fILeft\fP"، "\fISouth\fP"، "\fIBottom\fP"، "\fIRight\fP" و "\fIEast\fP" باشد. اگر \fIFunction\fP حذف شود، اتصال آن لبه برداشته می‌شود. اگر بدون آرگومان فراخوانی شود، تمام اتصالات لبه‌ها حذف می‌شوند. با گزینه \fIscreen\fP به همراه \fIRANDRNAME\fP، دستور تنها برای آن مانیتور تنظیم می‌گردد. .sp دستور \fIFunction\fP هنگامی اجرا می‌شود که نشانگر ماوس قاب‌های پیمایش نامرئی را ترک کند. این ویژگی نیازمند \fBEdgeThickness\fP بزرگتر از 0 است. به مثال \fBEdgeCommand\fP مراجعه کنید. .RE .sp \fBKey\fP [(\fIwindow\fP)] \fIKeyname\fP \fIContext\fP \fIModifiers\fP \fIFunction\fP .RS 4 یک کلید صفحه‌کلید را به دستور مشخص‌شده fvwm متصل می‌کند، یا در صورتی که \fIFunction\fP برابر با '-' باشد اتصال را حذف می‌کند. نحو آن مانند اتصال \fBMouse\fP است با این تفاوت که شماره دکمه ماوس با یک \fIKeyname\fP جایگزین می‌شود. به طور معمول، اتصال کلید هنگام فشرده شدن کلید فعال می‌شود. پارامتر \fIKeyname\fP یک نام کلید استاندارد X11 است همان‌گونه که در \fI/usr/include/X11/keysymdef.h\fP (بدون پیشوند XK_) یا پایگاه داده keysym تعریف شده است. فیلدهای \fIContext\fP و \fIModifiers\fP همانند اتصال \fBMouse\fP تعریف می‌شوند. با این حال هنگام فشردن یک کلید، پنجره زمینه همان پنجره‌ای است که تمرکز صفحه‌کلید را در اختیار دارد؛ که لزوماً همان پنجره‌ای نیست که نشانگر روی آن قرار دارد (در حالت‌های \fISloppyFocus\fP یا \fIClickToFocus\fP). توجه داشته باشید که اتصالات کلید با زمینه 'R' (پنجره ریشه) به درستی با SloppyFocus و ClickToFocus کار نمی‌کنند؛ در صورت بروز مشکل از دستور \fBPointerKey\fP استفاده کنید. .sp زمینه ویژه 'M' برای منوها می‌تواند برای تعریف مجدد کنترل‌های منو استفاده شود. برای جزئیات به بخش اتصالات منو مراجعه کنید. .sp مثال زیر فهرست پنجره‌های توکار را بدون توجه به مکان نشانگر ماوس متصل می‌کند: .sp .if n .RS 4 .nf .fam C Key F11 A SCM WindowList .fam .fi .if n .RE .sp اتصال یک کلید به دکمه نوار عنوان باعث ظاهر شدن آن دکمه می‌شود. برای جزئیات به دستور \fBMouse\fP مراجعه کنید. .RE .sp \fBMouse\fP [(\fIwindow\fP)] \fIButton\fP \fIContext\fP \fIModifiers\fP \fIFunction\fP .RS 4 یک اتصال ماوس تعریف می‌کند، یا اگر \fIFunction\fP برابر با '-' باشد، آن را حذف می‌کند. پارامتر \fIButton\fP شماره دکمه ماوس است. اگر مقدار صفر باشد، هر دکمه‌ای تابع را اجرا می‌کند. توجه داشته باشید که تنها دکمه‌های ۱ تا ۵ ماوس به طور کامل توسط X11 پشتیبانی می‌شوند. شماره‌های بالاتر تنها به صورت جزئی کار می‌کنند. توابع پیچیده و عملیات کشیدن (drag) با دکمه‌های بالاتر قابل استفاده نیستند. به طور پیش‌فرض بالاترین شماره مجاز دکمه ۹ است. .sp زمینه \fIContext\fP محل اعمال اتصال را توصیف می‌کند. زمینه‌های معتبر عبارتند از: 'R' برای پنجره ریشه، 'W' برای پنجره برنامه، 'D' برای برنامه میزکار (مانند kdesktop یا Nautilus)، 'T' برای نوار عنوان، 'S' برای نوارهای کناری، بالایی یا پایینی پنجره، '[', ']', '-' و '_' برای سمت چپ، راست، بالا یا پایین به تنهایی، 'F' برای قاب پنجره (گوشه‌ها)، '<', '^', '>' و 'v' برای گوشه‌های بالا-چپ، بالا-راست، پایین-راست و پایین-چپ، 'I' برای پنجره آیکون، '0' تا '9' برای دکمه‌های نوار عنوان، یا هر ترکیبی از این حروف. حرف 'A' برای هر زمینه‌ای است. برای مثال، زمینه "FST" هنگامی اعمال می‌شود که ماوس در هر نقطه از حاشیه پنجره به جز دکمه‌های نوار عنوان قرار داشته باشد. .sp زمینه ویژه 'M' برای منوها جهت تعریف مجدد کنترل‌های منو استفاده می‌شود. .sp زمینه ویژه 'P' دکمه‌هایی را که می‌توان برای قرار دادن پنجره استفاده کرد کنترل می‌کند. هنگام استفاده از این زمینه هیچ کلید تغییردهنده‌ای مجاز نیست (\fIModifiers\fP باید N باشد)، هیچ پنجره‌ای (\fIwindow\fP) مجاز نیست و تابع \fIFunction\fP باید یکی از مقادیر \fIPlaceWindow\fP، \fIPlaceWindowDrag\fP، \fIPlaceWindowInteractive\fP، \fICancelPlacement\fP، \fICancelPlacementDrag\fP، \fICancelPlacementInteractive\fP یا '-' باشد. .sp تابع \fIPlaceWindow\fP دکمه \fIButton\fP را برای قرار دادن پنجره در هر دو حالت تعاملی و کشیدن فعال می‌کند. تابع \fICancelPlacement\fP عمل معکوس را انجام می‌دهد و جابجایی را لغو می‌کند. .sp مثال زیر همه دکمه‌ها به جز دکمه ۳ را برای جای‌گذاری تعاملی فعال می‌کند: .sp .if n .RS 4 .nf .fam C Mouse 0 P N PlaceWindow Mouse 3 P N CancelPlacement Mouse 1 P N CancelPlacementDrag .fam .fi .if n .RE .sp به طور پیش‌فرض اتصال به تمام پنجره‌ها اعمال می‌شود. با تعیین نام پنجره داخل کروشه می‌توانید آن را به پنجره‌های خاصی محدود کنید. نام پنجره یک الگوی عمومی است که کلاس، منبع یا نام پنجره مورد نظر را مشخص می‌سازد. .sp مثال زیر نشان می‌دهد چگونه یک کلید می‌تواند بسته به پنجره دارای تمرکز کارهای متفاوتی انجام دهد: .sp .if n .RS 4 .nf .fam C Key (rxvt)\& V A C Echo ctrl\-V\-in\-RXVT Key (*term) V A C Echo ctrl\-V\-in\-Term Key (*vim)\& V A C \-\- Key\& V A C Echo ctrl\-V\-elsewhere .fam .fi .if n .RE .sp عمل '--' نشان می‌دهد که رویداد باید برای رسیدگی به خود پنجره مشخص‌شده ارسال شود. .sp این مثال نحوه نمایش WindowList هنگام فشردن دکمه ۳ روی پنجره rxvt را نشان می‌دهد: .sp .if n .RS 4 .nf .fam C Mouse (rxvt) 3 A A WindowList .fam .fi .if n .RE .sp توجه داشته باشید که fvwm تمام رویدادها را برای اتصالات مختص پنجره دریافت کرده و در صورت عدم تطابق یک نسخه شبیه‌سازی‌شده به پنجره می‌فرستد. برای فعال‌سازی پردازش این رویدادها در xterm، خط زیر را به \fI~/.Xdefaults\fP اضافه کنید: .sp .if n .RS 4 .nf .fam C XTerm*allowSendEvents:\& true .fam .fi .if n .RE .sp پارامتر \fIModifiers\fP هر ترکیبی از 'N' برای بدون تغییردهنده، 'C' برای Control، 'S' برای Shift، 'M' برای Meta/Alt، 'L' برای Caps-Lock یا 'A' برای هر تغییری است. مقادیر mod1 تا mod5 سرور X با ارقام '1' تا '5' نمایش داده می‌شوند. .sp دکمه‌های نوار عنوان شماره‌گذاری شده‌اند: اعداد فرد در سمت چپ نوار عنوان و اعداد زوج در سمت راست. دکمه‌های با شماره کمتر در قسمت بیرونی‌تر و دکمه‌های با شماره بیشتر به سمت وسط پنجره قرار می‌گیرند (0 مخفف 10 است): .sp .if n .RS 4 .nf .fam C 1 3 5 7 9\& 0 8 6 4 2 .fam .fi .if n .RE .sp بالاترین شماره فرد که عملی به آن متصل است، تعداد دکمه‌های ترسیم‌شده در سمت چپ را تعیین می‌کند و بالاترین شماره زوج تعداد دکمه‌های سمت راست را تعیین می‌کند. .RE .sp \fBPointerKey\fP [(\fIwindow\fP)] \fIKeyname\fP \fIContext\fP \fIModifiers\fP \fIFunction\fP .RS 4 این دستور دقیقاً مانند دستور \fBKey\fP عمل می‌کند. تنها تفاوت این است که اتصال روی پنجره زیر نشانگر ماوس عمل می‌کند، در حالی که اتصالات معمولی کلید روی پنجره دارای تمرکز اجرا می‌شوند. دستور \fBPointerKey\fP برای مثال می‌تواند برای اتصال کلیدها به پنجره ریشه در صورت استفاده از \fISloppyFocus\fP یا \fIClickToFocus\fP استفاده شود. توصیه می‌شود از دستور \fBPointerKey\fP تنها برای ترکیب‌های کلیدی که در پنجره‌های برنامه‌ها مورد نیاز نیستند استفاده کنید. .sp مثال: .sp .if n .RS 4 .nf .fam C Style * SloppyFocus PointerKey f1 a m Menu MainMenu .fam .fi .if n .RE .RE .SS "کنترل میزکار مجازی (Controlling the Virtual Desktop)" .sp \fBDesktopName\fP \fIdesk\fP \fIname\fP .RS 4 نام میزکار شماره \fIdesk\fP را روی \fIname\fP تنظیم می‌کند. این نام در دستور \fBWindowList\fP و در ماژول \fBFvwmPager\fP استفاده می‌شود که در آنجا بر گزینه پیکربندی \fILabel\fP اولویت دارد. علاوه بر این، اگر نام‌های متوالی از میزکار 0 تعریف شوند، این نام‌ها توسط هر برنامه سازگار با EWMH (مانند پیجرها) قابل استفاده خواهند بود. .RE .sp \fBDesktopConfiguration\fP global | per\-monitor | shared .RS 4 این دستور نحوه مدیریت میزکارها توسط fvwm را کنترل می‌کند. به طور پیش‌فرض، برای تمامی صفحاتی که توسط fvwm از طریق پشتیبانی RandR شناسایی می‌شوند، گزینه global به این معنی است که تمام پنجره‌های روی یک میزکار در سراسر مانیتورها به صورت یکپارچه در نظر گرفته می‌شوند؛ بنابراین هنگامی که تغییر میزکار/صفحه رخ می‌دهد، همان تغییر در تمام مانیتورها اعمال می‌شود. .sp با گزینه per\-monitor، هر مانیتور RandR یک نسخه مستقل از میزکارها دارد و بنابراین هنگام تغییر میزکارها یا صفحات، مستقل از یکدیگر عمل می‌کنند. .sp هنگامی که \fIshared\fP تنظیم شود، میزکارها بین تمامی مانیتورها به اشتراک گذاشته می‌شوند. به عنوان مثال، با تعریف میزکارها برای دو مانیتور ([] مانیتور ۱ و <> مانیتور ۲ است): .sp .if n .RS 4 .nf .fam C [0]\& 1\& 2\& <3>\& 4 .fam .fi .if n .RE .sp حرکت بین میزکارها همچنان مانیتوری را که درخواست روی آن داده شده رعایت می‌کند. اگر مانیتور ۱ بخواهد به میزکار ۳ برود، آن میزکار با مانیتور ۲ مبادله می‌شود: .sp .if n .RS 4 .nf .fam C <0>\& 1\& 2\& [3]\& 4 .fam .fi .if n .RE .sp این مفهوم شبیه به نحوه مدیریت میزکارها در spectrwm یا xmonad است. .sp \fBتوجه:\fP هر حالت \fBDesktopConfiguration\fP را می‌توان در حین اجرا و به صورت بلادرنگ تغییر داد. .RE .sp \fBDesktopSize\fP \fIHorizontal\fPx\fIVertical\fP .RS 4 اندازه میزکار مجازی را بر حسب مضاربی از اندازه صفحه نمایش فیزیکی تعریف می‌کند. .RE .sp \fBEdgeResistance\fP \fIdelay\fP, \fBEdgeResistance\fP \fIscrolling\fP \fImoving\fP [\fIscreen\-scrolling\fP] .RS 4 مشخص می‌کند که تغییر درگاه دید میزکار با حرکت ماوس روی لبه صفحه چقدر باید سخت باشد. این پارامتر مشخص می‌کند که نشانگر ماوس چند میلی‌ثانیه باید روی لبه صفحه بماند تا fvwm درگاه دید را جابجا کند. این برای افرادی در نظر گرفته شده که از: .sp .if n .RS 4 .nf .fam C EdgeScroll 100 100 .fam .fi .if n .RE .sp استفاده می‌کنند اما متوجه می‌شوند که تصادفاً هنگام عدم تمایل، صفحات عوض می‌شوند. اگر مقدار تاخیر -1 داده شود، پیمایش لبه‌ها به طور کامل غیرفعال می‌شود. .sp شکل دوم فراخوانی با دو یا سه آرگومان منسوخ شده است و در صورت نیاز باید با دستورات جداگانه زیر جایگزین شود: .sp .if n .RS 4 .nf .fam C EdgeResistance scrolling Style * EdgeMoveDelay scrolling Style * EdgeMoveResistance moving یا Style * EdgeMoveResistance moving screen\-scrolling .fam .fi .if n .RE .sp برنامه fvwm این جایگزینی را به طور خودکار انجام داده و یک پیام هشدار چاپ می‌کند. .RE .sp \fBEdgeScroll\fP [\fIscreen RANDRNAME\fP] \fIhorizontal\fP[p] \fIvertical\fP[p] [wrap | wrapx | wrapy] .RS 4 درصدی از صفحه را مشخص می‌کند که با برخورد نشانگر ماوس به لبه صفحه باید پیمایش شود. گزینه اختیاری 'screen RANDRNAME' مانیتور RandR را مشخص می‌کند که این تنظیم باید روی آن اعمال شود و مانیتورهای دیگر را نادیده می‌گیرد. بدون این گزینه، مقدار روی تمام مانیتورها اعمال می‌شود. پسوند 'p' تفسیر را به پیکسل تغییر می‌دهد. اگر نمی‌خواهید با برخورد به لبه صفحه هیچ پیمایشی رخ دهد، دستور: .sp .if n .RS 4 .nf .fam C EdgeScroll 0 0 .fam .fi .if n .RE .sp را در فایل \fIconfig\fP خود قرار دهید، یا بهتر از آن، \fBEdgeThickness\fP را روی صفر تنظیم کنید. اگر می‌خواهید صفحات کامل پیمایش شوند از: .sp .if n .RS 4 .nf .fam C EdgeScroll 100 100 .fam .fi .if n .RE .sp استفاده کنید. هر دو مقدار افقی و عمودی باید اعداد مثبت باشند. .sp اگر درصدهای افقی و عمودی در ۱۰۰۰ ضرب شوند یا یکی از کلیدواژه‌های \fIwrap\fP، \fIwrapx\fP و \fIwrapy\fP داده شود، پیمایش در لبه میزکار دور می‌زند (wrap). .RE .sp \fBEdgeThickness\fP [\fIscreen RANDRNAME\fP] 0 | 1 | 2 .RS 4 عرض یا ارتفاع پنجره نامرئی (pan frames) را که fvwm در لبه‌های صفحه برای قابلیت پیمایش لبه ایجاد می‌کند مشخص می‌سازد. .sp گزینه اختیاری 'screen RANDRNAME' مانیتور مورد نظر را مشخص می‌کند. .sp به منظور فعال‌سازی پیمایش صفحه از طریق ماوس، چهار پنجره به نام "قاب‌های پیمایش" (pan frames) در لبه بیرونی صفحه قرار داده می‌شوند. fvwm از این طریق حضور ماوس در لبه را تشخیص می‌دهد. این قاب‌ها باید در بالای پشته قرار گیرند و رویدادهای ماوس را دریافت کنند، بنابراین اگر با مشکلی مانند "کلیک‌های ماوس در لبه صفحه کار اشتباهی انجام می‌دهند" مواجه شدید، می‌توانید EdgeThickness را روی 0 تنظیم کنید. .sp مقدار 0 پیمایش لبه‌ای ماوس را به طور کامل غیرفعال می‌کند، حتی هنگام کشیدن پنجره. مقدار 1 کوچک‌ترین قاب‌ها را ایجاد می‌کند و مقدار 2 حالت پیش‌فرض است. .RE .sp \fBEwmhBaseStruts\fP \fIscreen RANDRNAME\fP \fIleft\fP \fIright\fP \fItop\fP \fIbottom\fP .RS 4 که در آن چپ، راست، بالا و پایین اعداد صحیح مثبت یا صفر هستند که نوارهایی را در لبه‌های صفحه تعریف می‌کنند. اگر \fIscreen\fP به همراه RANDRNAME داده شود، برای همان نمایشگر تنظیم می‌گردد. واحد بر حسب پیکسل است و مقدار پیش‌فرض 0 0 0 0 می‌باشد. این نواحی فضای رزروشده اضافه‌ای را برای محاسبه ناحیه کاری (Working Area) تعریف می‌کنند. .RE .sp \fBEwmhNumberOfDesktops\fP \fInum\fP [\fImax\fP] .RS 4 این دستور تنها برای پیجرها یا نوارهای وظیفه سازگار با ewmh مفید است. این دستور باعث می‌شود برنامه سازگار حداقل \fInum\fP میزکار را در نظر بگیرد. آرگومان اختیاری \fImax\fP حداکثر تعداد میزکارها را تعیین می‌کند. مقدار پیش‌فرض 4 0 است. .RE .sp \fBGotoDesk\fP [screen \fIRANDRNAME\fP] [prev | \fIarg1\fP [\fIarg2\fP] [\fImin\fP \fImax\fP]] .RS 4 درگاه دید فعلی را به میزکار (فضای کاری) دیگری تغییر می‌دهد. در حالت per\-monitor یا shared، مانیتور فعلی استفاده می‌شود مگر اینکه \fIscreen\fP با یک نام معتبر مانیتور RandR گنجانده شود. .sp این دستور ۱، ۲، ۳ یا ۴ آرگومان می‌پذیرد. یک آرگومان به عنوان شماره نسبی میزکار تفسیر می‌شود. دو آرگومان به عنوان شماره نسبی و مطلق فهمیده می‌شوند. سه آرگومان یک میزکار نسبی و حداقل و حداکثر محدوده مجاز را مشخص می‌کنند. چهار آرگومان مقادیر نسبی، مطلق، حداقل و حداکثر را تعیین می‌نمایند. اگر کلمه دقیق \fIprev\fP به عنوان تک‌آرگومان داده شود، آخرین شماره میزکار بازدیدشده استفاده خواهد شد. .sp اگر \fIarg1\fP غیر صفر باشد، شماره میزکار بعدی برابر شماره میزکار فعلی به علاوه \fIarg1\fP خواهد بود. .sp اگر \fIarg1\fP صفر باشد، شماره میزکار جدید برابر با \fIarg2\fP خواهد بود. .sp نحو دستور همانند دستور \fBMoveToDesk\fP است. .sp تعداد میزکارهای فعال به صورت پویا تعیین می‌شود. شماره‌های میزکار باید بین 0 تا 2147483647 باشند. شماره‌های منفی در fvwm پشتیبانی نمی‌شوند. .RE .sp \fBGotoDeskAndPage\fP screen | prev | \fIdesk\fP \fIxpage\fP \fIypage\fP .RS 4 درگاه دید فعلی را همزمان به میزکار و صفحه دیگری تغییر می‌دهد، مشابه با دستورات \fBGotoDesk\fP و \fBGotoPage\fP. میزکار جدید \fIdesk\fP و صفحه جدید (\fIxpage\fP,\fIypage\fP) خواهد بود. .RE .sp \fBGotoPage\fP screen | prev | [\fIoptions\fP] \fIx\fP[p] \fIy\fP[p] .RS 4 درگاه دید میزکار را به صفحه (x,y) منتقل می‌کند. صفحه بالا سمت چپ (0,0) است. برای جابجایی به صفحه‌ای نسبت به صفحه فعلی، پسوند 'p' را اضافه کنید. .sp گزینه‌های احتمالی شامل \fIwrapx\fP و \fIwrapy\fP برای چرخش دورانی در مرزهای میزکار هستند. .sp برای رفتن به آخرین صفحه بازدیدشده از \fIprev\fP استفاده کنید. .sp مثال‌ها: .sp .if n .RS 4 .nf .fam C # رفتن به صفحه (2,3) GotoPage 2 3 # رفتن به پایین‌ترین و راست‌ترین صفحه GotoPage \-1 \-1 # رفتن به آخرین صفحه بازدیدشده GotoPage prev # رفتن دو صفحه به راست و یک صفحه به بالا GotoPage +2p \-1p .fam .fi .if n .RE .RE .sp \fBScroll\fP [screen RANDRNAME] [\fIhorizonal\fP[p] \fIvertical\fP[p] | reverse] .RS 4 درگاه دید میزکار مجازی را به اندازه صفحات \fIhorizontal\fP در جهت x و صفحات \fIvertical\fP در جهت y پیمایش می‌کند یا پیمایش تعاملی درگاه دید را آغاز می‌نماید. مقادیر می‌توانند منفی باشند و بر حسب درصد صفحات بیان می‌شوند: .sp .if n .RS 4 .nf .fam C Scroll 100 100 .fam .fi .if n .RE .sp به معنای یک صفحه کامل به پایین و راست است. .sp اگر حرف 'p' به هر مختصات اضافه شود، میزان پیمایش با پیکسل سنجیده می‌شود. .sp بدون آرگومان یا در صورت تعیین گزینه \fIreverse\fP، پیمایش تعاملی انجام می‌شود و درگاه دید همگام با حرکت ماوس پیمایش می‌گردد. با گزینه \fIreverse\fP پیمایش در جهت مخالف حرکت ماوس انجام می‌شود. .sp اتصال زیر: .sp .if n .RS 4 .nf .fam C Mouse 1 A CM Scroll reverse .fam .fi .if n .RE .sp اثر گرفتن و کشیدن درگاه دید را با دکمه ۱ ماوس در صورت فشرده بودن کلیدهای Control و Meta ایجاد می‌کند. .RE .SS "توابع کاربری و دستورات شل (User Functions and Shell Commands)" .sp \fBAddToFunc\fP [\fIname\fP [I | J | M | C | H | D \fIaction\fP]] .RS 4 تعریف یک تابع را آغاز می‌کند یا به آن مواردی اضافه می‌نماید. یک مثال: .sp .if n .RS 4 .nf .fam C AddToFunc Move\-or\-Raise I Raise + M Move + D Lower .fam .fi .if n .RE .sp نام تابع "Move\-or\-Raise" است و می‌تواند از یک منو یا اتصال ماوس یا کلید فراخوانی شود: .sp .if n .RS 4 .nf .fam C Mouse 1 TS A Move\-or\-Raise .fam .fi .if n .RE .sp نام تابع \fIname\fP نباید حاوی فاصله‌های تعبیه‌شده باشد. حرف قبل از \fIaction\fP مشخص می‌کند که چه نوع کنشی باعث تحریک دستوری می‌شود که پس از آن می‌آید: 'I' مخفف "Immediate" است و به محض فراخوانی تابع اجرا می‌شود. 'J' مشابه Immediate است اما تا زمانی که دکمه‌ای فشرده یا رها شود، نشانگر ماوس حرکت کند یا تابع تکمیل شود به تعویق می‌افتد. 'M' مخفف "Motion" (حرکت ماوس) است. 'C' مخفف "Click" (کلیک ماوس) است. 'H' مخفف "Hold" (نگه داشتن کلید بیش از \fBClickTime\fP میلی‌ثانیه) است. 'D' مخفف "Double\-click" (دوبار کلیک) است. عمل 'I' در صورت فراخوانی تابع با آگاهی قبلی از پنجره هدف، بلافاصله پس از فشردن دکمه اجرا می‌شود. .sp مجموعه‌ای از نمادهای از پیش تعریف‌شده وجود دارند که در صورت ظاهر شدن در خط فرمان با مقادیر خاصی جایگزین می‌شوند. برای جزئیات به بخش بسط دستورات (Command Expansion) مراجعه کنید. .sp \fBهشدار:\fP لطفاً نظرات مربوط به اجرای توابع پیچیده در بخش اسکریپت‌نویسی و توابع پیچیده را مطالعه کنید. .sp مثال‌ها: اگر دستور زیر را فراخوانی کنید: .sp .if n .RS 4 .nf .fam C Key F10 R A Function MailFunction xmh "\-font fixed" .fam .fi .if n .RE .sp و "MailFunction" به صورت زیر تعریف شده باشد: .sp .if n .RS 4 .nf .fam C AddToFunc MailFunction + I Next ($0) Iconify off + I Next (AcceptsFocus, $0) Focus + I None ($0) Exec exec $0 $1 .fam .fi .if n .RE .sp در این صورت خط آخر تابع به این شکل تبدیل می‌شود: .sp .if n .RS 4 .nf .fam C + I None (xmh) Exec exec xmh \-font fixed .fam .fi .if n .RE .sp این بسط در هنگام اجرای تابع انجام می‌شود، بنابراین می‌توانید از همان تابع با آرگومان‌های گوناگون استفاده کنید. به عنوان مثال دیگر، اتصال دکمه ۳ ماوس درون دکمه شماره ۶ پنجره برای آیکون کردن تمامی پنجره‌های دارای همان منبع: .sp .if n .RS 4 .nf .fam C AddToFunc FuncIconifySameResource "I" All ($0) Iconify on Mouse 3 6 A FuncIconifySameResource $[w.resource] .fam .fi .if n .RE .RE .sp \fBBeep\fP .RS 4 همان‌گونه که انتظار می‌رود، ترمینال را وادار به بوق زدن می‌کند. .RE .sp \fBDestroyFunc\fP \fIfunction\fP .RS 4 یک تابع را حذف می‌کند تا ارجاعات بعدی به آن دیگر معتبر نباشند. این برای تغییر محتویات یک تابع در طول نشست fvwm مفید است. تابع را می‌توان با \fBAddToFunc\fP مجدداً ایجاد کرد. .sp .if n .RS 4 .nf .fam C DestroyFunc PrintFunction .fam .fi .if n .RE .RE .sp \fBEcho\fP \fIstring\fP .RS 4 پیامی را در فایل لاگ اشکال‌زدایی چاپ می‌کند که نیازمند فعال بودن لاگ‌گیری است. به گزینه \fB\-v\fP یا \fBPrintInfo\fP برای اطلاعات بیشتر درباره فعال‌سازی لاگ اشکال‌زدایی و مکان فایل لاگ مراجعه کنید. برای اشکال‌زدایی فایل پیکربندی یا دریافت مقدار متغیرها کاربرد دارد. .sp .if n .RS 4 .nf .fam C Echo Beginning style definitions... Echo Current desk $[desk.n]. .fam .fi .if n .RE .RE .sp \fBEchoFuncDefinition\fP \fIfunction\fP .RS 4 دستور \fBEchoFuncDefinition\fP مشابه \fBEcho\fP است اما تعریف تابع داده‌شده \fIfunction\fP را در فایل لاگ اشکال‌زدایی چاپ می‌کند. برای درک نحوه مدیریت نقل‌قول‌ها در fvwm و اشکال‌زدایی توابع مفید است. .RE .sp \fBExec\fP \fIcommand\fP .RS 4 دستور \fIcommand\fP را اجرا می‌کند. نباید از علامت '&' در انتهای دستور استفاده کنید. بهتر است از یک "exec" اضافی در ابتدای \fIcommand\fP استفاده کنید تا شل واسط در حافظه باقی نماند. .sp مثال زیر کلید تابعی F1 را در پنجره ریشه به تابع exec متصل می‌کند: .sp .if n .RS 4 .nf .fam C Key F1 R N Exec exec rxvt \-fg yellow \-bg blue \(rs \-e /bin/tcsh .fam .fi .if n .RE .sp توجه داشته باشید که این تابع منتظر اتمام \fIcommand\fP نمی‌ماند (به دستور \fBPipeRead\fP مراجعه کنید). .RE .sp \fBExecUseShell\fP [\fIshell\fP] .RS 4 باعث می‌شود دستور \fBExec\fP از شل مشخص‌شده، یا از مقدار متغیر محیطی \fI$SHELL\fP در صورت عدم تعیین شل، به جای شل پیش‌فرض بورن (\fI/bin/sh\fP) استفاده کند. .sp .if n .RS 4 .nf .fam C ExecUseShell ExecUseShell /usr/local/bin/tcsh .fam .fi .if n .RE .RE .sp \fBFunction\fP \fIFunctionName\fP .RS 4 برای اتصال یک تابع از پیش تعریف‌شده به یک کلید یا دکمه ماوس استفاده می‌شود. .sp .if n .RS 4 .nf .fam C Mouse 1 T A Function Move\-or\-Raise .fam .fi .if n .RE .sp کلیدواژه \fBFunction\fP در صورتی که نام تابع با یکی از دستورات fvwm تداخل نداشته باشد، می‌تواند حذف شود. .RE .sp \fBInfoStoreAdd\fP \fIkey\fP \fIvalue\fP .RS 4 مقدار \fIvalue\fP را در کلید \fIkey\fP داده‌شده ذخیره می‌کند. این دستور برای ذخیره اطلاعات عمومی در طول عمر فایل پیکربندی fvwm مفید است. به عنوان مثال ذخیره اولویت‌های برنامه برای باز کردن فایل‌های ویدیویی. .sp هدف از این دستور ذخیره اطلاعات داخلی در fvwm است که توابع fvwm می‌توانند از آن استفاده کنند، بدون اینکه مانند \fBSetEnv\fP محیط را آلوده کرده و اطلاعات را سراسری سازد. .sp بازیابی مقدار یک کلید مشخص از طریق سازوکار معمول بسط در fvwm انجام می‌شود: .sp .if n .RS 4 .nf .fam C InfoStoreAdd teddybearprog xteddy # چاپ مقدار teddybearprog Echo $[infostore.teddybearprog] .fam .fi .if n .RE .sp حذف یک مدخل از InfoStore با دستور \fBInfoStoreRemove\fP انجام می‌شود. .RE .sp \fBInfoStoreRemove\fP \fIkey\fP .RS 4 یک مدخل را در کلید داده‌شده \fIkey\fP از InfoStore حذف می‌کند. مثال: .sp .if n .RS 4 .nf .fam C InfoStoreRemove teddybearprog .fam .fi .if n .RE .RE .sp \fBNop\fP .RS 4 هیچ کاری انجام نمی‌دهد. برای درج یک خط خالی یا خط جداکننده در یک منو استفاده می‌شود. .sp .if n .RS 4 .nf .fam C AddToMenu MyMenu " " Nop .fam .fi .if n .RE .sp یک خط خالی درج می‌کند. در حالی که: .sp .if n .RS 4 .nf .fam C + "" Nop .fam .fi .if n .RE .sp یک خط جداکننده افقی درج می‌نماید. همچنین می‌تواند به عنوان عمل دوبار کلیک برای \fBMenu\fP یا \fBPopup\fP استفاده شود. .RE .sp \fBPipeRead\fP \fIcommand\fP [quiet] .RS 4 باعث می‌شود fvwm دستورات را از خروجی استاندارد دستور \fIcommand\fP بخواند. این دستور توسط \fI/bin/sh\fP به صورت همگام اجرا می‌شود. اگر دستور شامل بیش از یک کلمه باشد باید داخل نقل‌قول قرار گیرد. برای ساخت مدخل‌های پویای منو بر اساس محتویات دایرکتوری‌ها بسیار مفید است. با کلیدواژه \fIQuiet\fP در صورت پیدا نشدن دستور پیامی تولید نمی‌شود. .sp مثال: .sp .if n .RS 4 .nf .fam C AddToMenu HomeDirMenu PipeRead \*(Aqfor i in $HOME/*; \(rs do echo "+ $i Exec xterm \-e vi $i"; done\*(Aq .fam .fi .if n .RE .sp دستور \fBPipeRead\fP به صورت همگام (synchronous) اجرا می‌شود. اگر دستوری را اجرا می‌کنید که خروجی آن به جای دستورات fvwm باید نادیده گرفته شود، می‌توانید آن را تغییر مسیر دهید: .sp .if n .RS 4 .nf .fam C PipeRead \*(Aqcommand 1>&2\*(Aq .fam .fi .if n .RE .sp دستور \fBPipeRead\fP در صورت اجرای موفقیت‌آمیز مقدار ۱ و در غیر این صورت \-۱ را برمی‌گرداند. .RE .sp \fBRead\fP \fIfilename\fP [quiet] .RS 4 باعث می‌شود fvwm دستورات را از فایلی به نام \fIfilename\fP بخواند. اگر نام فایل با اسلش ('/') شروع نشود، fvwm ابتدا در دایرکتوری داده‌های کاربر (\fI$HOME/.fvwm\fP) و سپس دایرکتوری داده‌های سیستم جستجو می‌کند. متغیر محیطی \fIFVWM_USERDIR\fP می‌تواند این مسیر را تغییر دهد. .RE .sp \fBSetEnv\fP \fIvariable\fP \fIvalue\fP .RS 4 یک متغیر محیطی را روی یک مقدار جدید تنظیم می‌کند، مشابه دستورات export یا setenv در شل. متغیر و مقدار آن توسط فرآیندهایی که مستقیماً توسط fvwm اجرا می‌شوند به ارث برده می‌شود. .sp .if n .RS 4 .nf .fam C SetEnv height HEIGHT .fam .fi .if n .RE .RE .sp \fBSilent\fP \fIcommand\fP .RS 4 تعدادی از دستورات نیازمند یک پنجره برای اجرا هستند. اگر هیچ پنجره‌ای انتخاب نشده باشد، از کاربر خواسته می‌شود پنجره‌ای را انتخاب کند. می‌توانید با قرار دادن \fBSilent\fP قبل از دستور از این رفتار جلوگیری کنید. اگر تابعی بدون پنجره فراخوانی شود و \fBSilent\fP داشته باشد، به سادگی بدون انجام کاری بازمی‌گردد. همچنین پیام‌های خطا را برای دستورات ناموجود غیرفعال می‌کند. .sp مثال‌ها: .sp .if n .RS 4 .nf .fam C Silent Move 0 0 Silent User_defined_function Silent Key Help R A Popup HelpMenu .fam .fi .if n .RE .RE .sp \fBUnsetEnv\fP [\fIvariable\fP] .RS 4 یک متغیر محیطی را لغو می‌کند و آن را از آرایه محیطی فرآیندهای فرزند fvwm حذف می‌نماید. .RE .sp \fBWait\fP \fIwindow\fP .RS 4 این دستور تنها برای استفاده در توابع fvwm در نظر گرفته شده است. این دستور اجرای تابع را تا زمانی که پنجره جدیدی منطبق با \fIwindow\fP ظاهر شود متوقف می‌کند. این می‌تواند نام، کلاس یا منبع پنجره باشد و می‌تواند حاوی نویسه‌های عمومی '*' و '?' باشد. به ویژه در "InitFunction" هنگام راه‌اندازی پنجره‌ها روی میزکارهای خاص کاربرد دارد: .sp .if n .RS 4 .nf .fam C AddToFunc InitFunction + I Exec exec xterm \-geometry 80x64+0+0 + I Wait xterm + I GotoDesk 0 2 + I Exec exec xmh \-font fixed \-geometry \(rs 507x750+0+0 + I Wait xmh + I GotoDesk 0 0 .fam .fi .if n .RE .sp تابع بالا xterm را در میزکار فعلی شروع می‌کند، منتظر نگاشت آن می‌ماند، سپس به میزکار ۲ رفته و xmh را اجرا می‌کند و پس از ظاهر شدن آن به میزکار ۰ بازمی‌گردد. .sp می‌توانید با فشردن Ctrl\-Alt\-Escape از توقف \fBWait\fP خارج شوید (به \fBEscapeFunc\fP مراجعه کنید). .RE .sp \fBStatus\fP \fIOn | Off\fP .RS 4 وضعیت را روشن یا خاموش می‌کند. این دستور اطلاعات را در قالب JSON از طریق یک لوله نام‌گذاری‌شده (تنظیم‌شده از طریق متغیر محیطی FVWM_STATUS_PIPE) درباره میزکارهای فعلی و تعداد پنجره‌ها و غیره ارسال می‌کند. این قابلیت روشی سریع برای ارائه اطلاعات به ابزارهای شخص ثالث مانند \fIlemonbar\fP و \fIpolybar\fP فراهم می‌سازد. .sp قالب داده JSON به این صورت است: .sp .if n .RS 4 .nf .fam C { "version": 3, "current_screen": "HDMI2", "screens": { "HDMI2": { "randr_order": 0, "current_client": "n6tadam@shuttle: ~", "desktops": { "0": { "number": 0, "is_urgent": false, "is_current": true, "number_of_clients": 5 }, }, }, }, } .fam .fi .if n .RE .sp این بخش‌ها برای تمامی صفحات، گروه‌ها و غیره بر اساس تعداد موجود تکرار می‌شوند. .RE .SS "دستورات شرطی (Conditional Commands)" .sp دستورات شرطی دستوراتی هستند که تنها در صورت برآورده شدن شرایط خاصی اجرا می‌شوند. بیشتر دستورات شرطی روی پنجره‌ها عمل می‌کنند، مانند \fBNext\fP، \fBThisWindow\fP یا \fBAll\fP. یک دستور شرطی به نام \fBTest\fP نیز وجود دارد که روی شرایط سراسری و غیرمرتبط با پنجره‌ها عمل می‌کند. نحو شرایط در زیر شرح داده شده است. .sp \fBکدهای بازگشتی (Return Codes)\fP .RS 4 تمامی دستورات این بخش (مگر اینکه به طور خاص ذکر شده باشد) دارای یک کد بازگشتی هستند که می‌تواند 1 (اگر شرط برقرار باشد) یا 0 (اگر شرط برقرار نباشد) باشد. برخی دستورات ممکن است -1 برگردانند که به این معنی است که خطایی رخ داده و کد بازگشتی نامعتبر است. دستور \fBBreak\fP مقدار -2 را برمی‌گرداند. کدهای بازگشتی دستورات اجراشده در یک تابع پیچیده به تابع فراخواننده منتقل می‌شوند. کد بازگشتی توسط دستور \fBTestRc\fP استفاده می‌شود و از طریق متغیر \fI$[cond.rc]\fP نیز قابل دسترسی است. کدهای بازگشتی تنها درون توابع ایجادشده با \fBAddToFunc\fP تعریف می‌شوند. برای اجرای یک دستور بدون تغییر دادن کد بازگشتی، می‌توان از دستور \fBKeepRc\fP استفاده کرد. .RE .sp \fBحلقه پنجره‌ها (The Ring of Windows)\fP .RS 4 برنامه fvwm پنجره‌ها را در یک حلقه داخلی نگهداری می‌کند. پنجره دارای تمرکز را مانند یک نشانگر روی موقعیت فعلی در حلقه در نظر بگیرید. دستور \fBNext\fP و بسیاری دستورات دیگر در حلقه به سمت جلو جستجو می‌کنند و \fBPrev\fP به سمت عقب جستجو می‌نماید. پنجره‌ها در حلقه یا بر اساس زمان ایجاد یا بر اساس آخرین زمانی که تمرکز را در اختیار داشتند مرتب می‌شوند. .RE .sp \fBفهرست دستورات شرطی (List of Conditional Commands)\fP .RS 4 .sp \fBAll\fP [\fIoptions\fP] [(\fIconditions\fP)] \fIcommand\fP .RS 4 دستور \fIcommand\fP را روی تمامی پنجره‌هایی که شرایط را برآورده می‌کنند اجرا می‌کند. اگر پنجره‌ای با شرایط مطابقت داشته باشد ۱ و در غیر این صورت ۰ برمی‌گرداند. گزینه‌ها می‌توانند هر ترکیبی از \fIReverse\fP و \fIUseStack\fP باشند. گزینه \fIUseStack\fP باعث می‌شود به جای حلقه پنجره‌ها، از ترتیب چیدمان (stacking order) استفاده شود. .sp این دستور به طور ضمنی شرایط \fICirculateHit\fP، \fICirculateHitIcon\fP و \fICirculateHitShaded\fP را فعال می‌کند. .RE .sp \fBAny\fP [(\fIconditions\fP)] \fIcommand\fP .RS 4 در صورتی که هر پنجره‌ای که تمام شرایط را برآورده می‌کند وجود داشته باشد، دستور \fIcommand\fP را اجرا می‌کند. دستور در زمینه پنجره ریشه اجرا می‌شود. .RE .sp \fBBreak\fP [\fIlevels\fP] .RS 4 اگر دستور break درون یک تابع استفاده شود، اجرای تابع بلافاصله خاتمه می‌یابد و دستورات بعدی پردازش نمی‌شوند. عدد اختیاری \fIlevels\fP برای خروج از تعداد مشخصی از توابع تو در تو و ادامه اجرای تابع سطح بالاتر استفاده می‌شود. کد بازگشتی دستور \fBBreak\fP همواره -2 است. .sp .if n .RS 4 .nf .fam C AddToFunc PickWindowRaiseAndDeiconify + I Pick + I TestRc (Error) Break + I Raise + I Iconify off .fam .fi .if n .RE .RE .sp \fBCurrent\fP [(\fIconditions\fP)] \fIcommand\fP .RS 4 دستور \fIcommand\fP را روی پنجره دارای فوکوس فعلی در صورتی که تمام شرایط را برآورده کند اجرا می‌نماید. .RE .sp \fBDirection\fP [FromPointer] \fIdirection\fP [(\fIconditions\fP)] \fIcommand\fP .RS 4 دستور \fIcommand\fP (معمولاً \fBFocus\fP) را روی پنجره‌ای در جهت داده‌شده که شرایط را برآورده می‌کند اجرا می‌کند. به طور معمول مرکز پنجره دارای تمرکز فعلی به عنوان نقطه شروع در نظر گرفته می‌شود، اما با گزینه \fIFromPointer\fP موقعیت فعلی نشانگر ماوس مبنا قرار می‌گیرد. جهت می‌تواند یکی از مقادیر "North"، "Northeast"، "East"، "Southeast"، "South"، "Southwest"، "West"، "Northwest" و "Center" باشد. .RE .sp \fBKeepRc\fP \fIcommand\fP .RS 4 دستور \fIcommand\fP را اجرا می‌کند بدون اینکه کد بازگشتی دستور قبلی را تغییر دهد. .RE .sp \fBNext\fP [(\fIconditions\fP)] \fIcommand\fP .RS 4 دستور \fIcommand\fP (معمولاً \fBFocus\fP) را روی پنجره بعدی در حلقه که تمامی شرایط را برآورده می‌کند اجرا می‌کند. .RE .sp \fBNone\fP [(\fIconditions\fP)] \fIcommand\fP .RS 4 در صورتی که هیچ پنجره‌ای که شرایط را برآورده کند وجود نداشته باشد، دستور \fIcommand\fP را اجرا می‌کند. اگر هیچ پنجره‌ای مطابقت نداشته باشد مقدار ۱ و در غیر این صورت ۰ برمی‌گرداند. .RE .sp \fBNoWindow\fP \fIcommand\fP .RS 4 دستور \fIcommand\fP را اجرا می‌کند اما زمینه پنجره را (در صورت وجود) حذف می‌نماید. این یک پیشوند مفید برای مدخل‌های منو است که باید بدون زمینه پنجره عمل کنند. .RE .sp \fBPick\fP [(\fIconditions\fP)] \fIcommand\fP .RS 4 اگر در زمینه یک پنجره فراخوانی شود مشابه \fBFunction\fP عمل می‌کند. اگر در پنجره ریشه فراخوانی شود، ابتدا از کاربر می‌خواهد پنجره‌ای را انتخاب کند و سپس دستور \fIcommand\fP را در زمینه آن پنجره اجرا می‌نماید. اگر هیچ پنجره‌ای انتخاب نشود مقدار -1 برمی‌گرداند. .RE .sp \fBPointerWindow\fP [(\fIconditions\fP)] \fIcommand\fP .RS 4 اگر پنجره زیر نشانگر ماوس تمام شرایط را برآورده کند، دستور \fIcommand\fP را اجرا می‌کند. اگر هیچ پنجره‌ای زیر نشانگر نباشد مقدار -1 برمی‌گرداند. .RE .sp \fBPrev\fP [(\fIconditions\fP)] \fIcommand\fP .RS 4 دستور \fIcommand\fP را روی پنجره قبلی در حلقه که تمام شرایط را برآورده کند اجرا می‌نماید. .RE .sp \fBScanForWindow\fP [FromPointer] \fIdir1\fP \fIdir2\fP [(\fIconditions\fP)] \fIcommand\fP .RS 4 دستور \fIcommand\fP را روی پنجره‌ای در جهات داده‌شده اجرا می‌کند. جهت \fIdir1\fP محور اصلی و \fIdir2\fP جهت ثانویه عمود بر آن است. اگر جهات کاملاً بر هم عمود نباشند، دستور با شکست مواجه می‌شود. .RE .sp \fBTest\fP [(\fItest\-conditions\fP)] \fIcommand\fP .RS 4 در صورتی که تمامی شرایط \fItest\-conditions\fP برآورده شوند، دستور \fIcommand\fP را اجرا می‌کند. شرایط آزمون عبارتند از: \fIVersion operator x.y.z\fP، \fIEnvIsSet varname\fP، \fIEnvMatch varname pattern\fP، \fIStrMatch string pattern\fP، \fIEdgeHasPointer direction\fP، \fIEdgeIsActive direction\fP، \fIStart\fP، \fIInit\fP، \fIRestart\fP، \fIExit\fP، \fIQuit\fP، \fIToRestart\fP، \fITrue\fP، \fIFalse\fP، \fIF\fP، \fIR\fP، \fIW\fP، \fIX\fP و \fII\fP. یک شرط با پیشوند '!' منفی می‌شود. .sp شرط \fIVersion\fP با عملگرهای \fI>=\fP، \fI>\fP، \fI<=\fP، \fI<\fP، \fI==\fP و \fI!=\fP نسخه fvwm را می‌سنجد: .sp .if n .RS 4 .nf .fam C Test (Version >= 2.5.11) Echo 2.5.11 or later. .fam .fi .if n .RE .sp شرط \fIEnvIsSet\fP تنظیم بودن متغیر محیطی و \fIEnvMatch\fP تطابق متغیر محیطی یا infostore با یک الگو را بررسی می‌کند. .sp شرط \fIStrMatch\fP تطابق رشته با یک الگو را بررسی می‌نماید: .sp .if n .RS 4 .nf .fam C Test (StrMatch $[monitor.current] DP\-2) Echo True .fam .fi .if n .RE .sp شرایط \fIF\fP، \fIR\fP، \fIW\fP، \fIX\fP و \fII\fP به ترتیب وجود فایل، مجوز خواندن، مجوز نوشتن، فایل اجرایی در مسیر PATH و تصویر در ImagePath را بررسی می‌کنند. .RE .sp \fBTestRc\fP [([!]\fIreturncode\fP)] \fIcommand\fP .RS 4 اگر آخرین دستور شرطی مقدار \fIreturncode\fP را برگردانده باشد، دستور \fIcommand\fP را اجرا می‌کند. به جای مقادیر عددی می‌توان از نام‌های نمادین "NoMatch" (0)، "Match" (1)، "Error" (-1) و "Break" (-2) استفاده کرد. .sp .if n .RS 4 .nf .fam C AddToFunc ToggleXterm + I All (my_xtermwindow) Close + I TestRc (NoMatch) Exec xterm \-T my_xtermwindow .fam .fi .if n .RE .RE .sp \fBThisWindow\fP [(\fIconditions\fP)] command .RS 4 دستور مشخص‌شده را در زمینه پنجره عملوند فعلی اجرا می‌کند. این دستور هرگز تعاملی نیست. اگر خارج از زمینه پنجره استفاده شود مقدار -1 برمی‌گرداند. .RE .sp \fBWindowId\fP [\fIid\fP] [(\fIconditions\fP)] | [root] \fIcommand\fP .RS 4 به دنبال یک شناسه پنجره خاص \fIid\fP می‌گردد و دستور مشخص‌شده را روی آن اجرا می‌کند. شکل دوم نحو، شناسه پنجره ریشه را بازیابی می‌کند. پنجره می‌تواند متعلق به پنجره‌ای باشد که توسط fvwm مدیریت نمی‌شود. اگر پنجره‌ای با شناسه داده‌شده وجود نداشته باشد، -1 برمی‌گرداند. .sp مثال‌ها: .sp .if n .RS 4 .nf .fam C WindowId 0x34567890 Raise WindowId root 1 WarpToWindow 50 50 WindowId $0 (Silly_Popup) Delete .fam .fi .if n .RE .RE .RE .sp \fBشرایط (Conditions)\fP .RS 4 شرایطی که می‌توانند به عنوان آرگومان به هر دستور شرطی داده شوند، فهرستی از کلیدواژه‌ها هستند که با کاما از هم جدا شده و درون پرانتز قرار می‌گیرند. .sp علاوه بر این، شرایط می‌توانند شامل یک یا چند نام پنجره برای تطابق باشند. نام، نام آیکون، کلاس و منبع پنجره همگی در نظر گرفته می‌شوند. الگوهای عمومی '*' و '?' و عملگر OR با کاراکتر '|' پشتیبانی می‌شوند. پیشوند '!' شرط یا گروه را نفی می‌کند. .sp مثال‌ها: .sp .if n .RS 4 .nf .fam C Next ("Netscape|konqueror|Mozilla*") WarpToWindow 99 90 Next ("Mozilla*", "Bookmark*") WarpToWindow 99 90 All ("XTerm|rxvt", !console) Iconify Next (!"FvwmPager|FvwmForm*|FvwmButtons") Raise .fam .fi .if n .RE .sp هر شرطی را می‌توان با یک علامت تعجب ('!') مستقیماً قبل از نام آن نفی کرد. .sp شرایط معتبر عبارتند از: \fIAcceptsFocus\fP، \fIAnyScreen\fP، \fICirculateHit\fP، \fICirculateHitIcon\fP، \fICirculateHitShaded\fP، \fIClosable\fP، \fICurrentDesk\fP، \fICurrentGlobalPage\fP، \fICurrentGlobalPageAnyDesk\fP، \fICurrentPage\fP، \fICurrentPageAnyDesk\fP، \fICurrentScreen\fP، \fIDesk\fP، \fIFixedPosition\fP، \fIFixedSize\fP، \fIFocused\fP، \fIHasBorders\fP، \fIHasHandles\fP، \fIHasPointer\fP، \fIHasTitle\fP، \fITitleAtTop\fP، \fITitleAtBottom\fP، \fITitleAtLeft\fP، \fITitleAtRight\fP، \fIIconic\fP، \fIIconifiable\fP، \fILayer [n]\fP، \fIMaximizable\fP، \fIMaximized\fP، \fIOverlapped\fP، \fIPlacedByButton n\fP، \fIPlacedByButton3\fP، \fIPlacedByFvwm\fP، \fIRaised\fP، \fIShaded\fP، \fIState n\fP، \fISticky\fP، \fIStickyAcrossDesks\fP، \fIStickyAcrossPages\fP، \fIStickyIcon\fP، \fIStickyAcrossDesksIcon\fP، \fIStickyAcrossPagesIcon\fP، \fITransient\fP، \fIVisible\fP. .sp شرط \fIAcceptsFocus\fP پنجره‌هایی را که فوکوس ورودی را نمی‌پذیرند حذف می‌کند. .sp شرط \fIAnyScreen\fP همراه با شرایط Current... اجازه می‌دهد پنجره‌ها روی هر صفحه‌ای در نظر گرفته شوند. .sp شرط \fIClosable\fP تنها با پنجره‌هایی که مجاز به بسته شدن هستند تطابق دارد. .sp شرط \fICurrentDesk\fP تنها با پنجره‌های روی میزکار فعلی مطابقت دارد. .sp شرط \fICurrentPage\fP پنجره‌های روی صفحه فعلی از میزکار فعلی را انتخاب می‌کند. .sp شرط \fIFixedPosition\fP پنجره‌های با موقعیت ثابت را انتخاب می‌کند. .sp شرط \fIFixedSize\fP پنجره‌های با اندازه ثابت را تطبیق می‌دهد. .sp شرط \fIFocused\fP پنجره‌ای را که در حال حاضر تمرکز صفحه‌کلید را دارد مطابقت می‌دهد. .sp شرط \fIHasBorders\fP پنجره‌های دارای حاشیه را انتخاب می‌کند. .sp شرط \fIHasTitle\fP پنجره‌های دارای نوار عنوان را انتخاب می‌کند. .sp شرط \fIIconic\fP پنجره‌های آیکون‌شده را تطبیق می‌دهد. .sp شرط \fIMaximized\fP پنجره‌های بیشینه‌شده را انتخاب می‌کند. .sp شرط \fIOverlapped\fP پنجره‌هایی را که توسط پنجره‌های دیگر در همان لایه پوشانده شده‌اند انتخاب می‌کند. .sp شرط \fIRaised\fP پنجره‌هایی را که کاملاً قابل مشاهده بوده و روی آن‌ها پوشانده نشده تطبیق می‌دهد. .sp شرط \fIShaded\fP پنجره‌های کرکره‌ای جمع‌شده را انتخاب می‌کند. .sp شرط \fITransient\fP پنجره‌های گذرا (دیالوگ‌ها و پاپ‌آپ‌ها) را انتخاب می‌کند. .sp شرط \fIVisible\fP پنجره‌هایی را که حداقل تا حدی قابل مشاهده هستند انتخاب می‌نماید. .RE .SS "دستورات ماژول (Module Commands)" .sp برنامه fvwm پایگاه‌داده‌ای از خطوط پیکربندی ماژول‌ها را در قالب زیر نگهداری می‌کند: .sp .if n .RS 4 .nf .fam C *: .fam .fi .if n .RE .sp که در آن \fI\fP نام واقعی یک ماژول یا نام مستعار (alias) آن است. .sp این پایگاه‌داده در ابتدا از فایل پیکربندی (یا از خروجی دستور \fB\-cmd\fP) پر می‌شود و بعداً می‌تواند توسط کاربر یا توسط ماژول‌ها اصلاح گردد. .sp دستورات مدیریت پایگاه‌داده پیکربندی ماژول‌ها در ادامه شرح داده شده‌اند. .sp \fB*\fP \fImodule_config_line\fP .RS 4 یک پیکربندی ماژول را تعریف می‌کند. مقدار \fImodule_config_line\fP شامل نام ماژول (یا نام مستعار آن) و خط منبع ماژول است. نحو جدید امکان استفاده از یک دونقطه و فاصله‌های اختیاری را به عنوان جداکننده بین نام ماژول و ادامه خط فراهم می‌کند که برای جلوگیری از تداخل توصیه می‌شود: .sp .if n .RS 4 .nf .fam C *FvwmPager: WindowBorderWidth 1 *FvwmButtons\-TopRight: Geometry 100x100\-0+0 *FvwmButtons\-Bottom: Geometry +0\-0 .fam .fi .if n .RE .RE .sp \fBDestroyModuleConfig\fP \fImodule_config\fP .RS 4 مدخل‌های پیکربندی ماژول را حذف می‌کند تا بتوان خطوط پیکربندی جدیدی وارد کرد. این کار نحوه اجرای ماژول را در طول یک نشست fvwm بدون نیاز به راه‌اندازی مجدد تغییر می‌دهد. می‌توان از نویسه‌های عام (wildcard) نیز استفاده کرد. .sp .if n .RS 4 .nf .fam C DestroyModuleConfig FvwmButtons* DestroyModuleConfig FvwmForm: Fore DestroyModuleConfig FvwmIconMan: Tips* .fam .fi .if n .RE .RE .sp \fBKillModule\fP \fImodulename\fP [\fImodulealias\fP] .RS 4 باعث متوقف شدن و خاتمه ماژولی می‌شود که با نام \fImodulename\fP فراخوانی شده است. نام می‌تواند شامل نویسه‌های عام باشد. اگر \fImodulealias\fP داده شود، تنها ماژول‌هایی که با آن نام مستعار شروع شده‌اند کشته می‌شوند. .sp .if n .RS 4 .nf .fam C # بستن تمامی پیجرها KillModule FvwmPager Module FvwmEvent SoundEvent KillModule FvwmEvent SoundEvent .fam .fi .if n .RE .RE .sp \fBModule\fP \fImodulename\fP [\fImoduleparams\fP] .RS 4 ماژولی را به همراه پارامترهای اختیاری آن جهت اجرا مشخص می‌کند. در حال حاضر چندین ماژول شامل \fBFvwmButtons\fP، \fBFvwmEvent\fP، \fBFvwmForm\fP، \fBFvwmPager\fP و \fBFvwmScript\fP از نام‌های مستعار پشتیبانی می‌کنند. نام‌های مستعار زمانی مفید هستند که چندین نمونه از یک ماژول باید اجرا شوند. .sp .if n .RS 4 .nf .fam C Module FvwmForm MyForm .fam .fi .if n .RE .sp در حال حاضر ماژول‌های موجود عبارتند از: \fBFvwmAnimate\fP، \fBFvwmAuto\fP، \fBFvwmBacker\fP، \fBFvwmBanner\fP، \fBFvwmButtons\fP، \fBFvwmPrompt\fP، \fBFvwmEvent\fP، \fBFvwmForm\fP، \fBFvwmIconMan\fP، \fBFvwmIdent\fP، \fBFvwmPager\fP، \fBFvwmPerl\fP، \fBFvwmProxy\fP، \fBFvwmRearrange\fP و \fBFvwmScript\fP. این ماژول‌ها صفحات راهنمای اختصاصی خود را دارند. .RE .sp \fBModuleListenOnly\fP \fImodulename\fP [\fImoduleparams\fP] .RS 4 مانند دستور \fBModule\fP عمل می‌کند، با این تفاوت که fvwm هرگز پیامی به ماژول ارسال نمی‌کند. این ویژگی برای نوشتن یک ماژول به عنوان اسکریپت شل که با رویدادهای خارجی فعال می‌شود مفید است. .RE .sp \fBModulePath\fP \fIpath\fP .RS 4 فهرستی از دایرکتوری‌ها با جداکننده دونقطه را برای جستجوی ماژول‌ها مشخص می‌کند. fvwm به نوبت در هر دایرکتوری جستجو کرده و از اولین فایل یافت‌شده استفاده می‌نماید. .sp علامت '+' در مسیر به مقدار قبلی مسیر بسط می‌یابد: .sp .if n .RS 4 .nf .fam C ModulePath ${HOME}/lib/fvwm/modules:+ .fam .fi .if n .RE .sp دایرکتوری ماژول‌های استاندارد از طریق متغیر محیطی \fI$FVWM_MODULEDIR\fP در دسترس است. .RE .sp \fBModuleSynchronous\fP [Expect \fIstring\fP] [Timeout \fIsecs\fP] \fImodulename\fP .RS 4 بسیار شبیه به \fBModule\fP است. fvwm پردازش تمام دستورات و ورودی‌های کاربر را متوقف می‌کند تا زمانی که ماژول رشته‌ای را که با "NOP FINISHED STARTUP" آغاز می‌شود به fvwm برگرداند. اگر گزینه \fITimeout\fP داده شود، در صورت عدم دریافت ورودی پس از \fIsecs\fP ثانیه عملیات متوقف می‌شود. .sp \fBهشدار:\fP قفل کردن fvwm با این دستور بسیار آسان است. برای خروج از حالت قفل می‌توانید از کلیدهای خروج استفاده کنید (به \fBEscapeFunc\fP مراجعه کنید). .RE .sp \fBModuleTimeout\fP \fItimeout\fP .RS 4 مشخص می‌کند که fvwm چند ثانیه منتظر پاسخ یک ماژول می‌ماند. اگر ماژول در این محدوده زمانی پاسخ ندهد، fvwm آن را می‌کشد. مقدار پیش‌فرض ۳۰ ثانیه است. .RE .sp \fBSendToModule\fP \fImodulename\fP \fIstring\fP .RS 4 یک رشته دلخواه را به تمامی ماژول‌هایی که نام یا نام مستعار آن‌ها با \fImodulename\fP مطابقت دارد ارسال می‌کند. برای ارتباط ماژول به ماژول یا اجرای دستورات پیچیده‌تر در ماژول‌ها کاربرد دارد. .RE .SS "دستورات مدیریت نشست (Session Management Commands)" .sp \fBQuit\fP .RS 4 از fvwm خارج می‌شود که معمولاً باعث خروج از محیط X نیز می‌گردد. .RE .sp \fBRestart\fP [\fIwindow_manager\fP [\fIparams\fP]] .RS 4 اگر \fIwindow_manager\fP خالی بماند باعث راه‌اندازی مجدد خود fvwm می‌شود، و اگر \fIwindow_manager\fP مشخص شده باشد به یک مدیر پنجره دیگر (یا نسخه دیگری از fvwm) سوئیچ می‌کند. اگر مدیر پنجره در مسیر جستجوی پیش‌فرض شما نباشد، باید از نام مسیر کامل استفاده کنید. .sp این دستور نباید علامت '&' در انتها داشته باشد. می‌تواند شامل پارامترهای اختیاری با نحو ساده شبیه به شل باشد: .sp .if n .RS 4 .nf .fam C Key F1 R N Restart Key F1 R N Restart fvwm1 \-f .fvwmrc Key F1 R N Restart xterm \-n \*(Aq"X console"\*(Aq \-T \(rs"X\(rs console\(rs" \-e fvwm .fam .fi .if n .RE .sp در نمایشگرهای چندگانه، راه‌اندازی مجدد fvwm روی صفحه‌های مختلف به طور مستقل عمل می‌کند. .RE .sp \fBRestart\fP \fB\-\-pass\-args\fP \fIwindow_manager\fP .RS 4 مشابه \fBRestart\fP بدون پارامتر است، اما نام مدیر پنجره فعلی با \fIwindow_manager\fP مشخص‌شده جایگزین شده و آرگومان‌های اصلی حفظ می‌شوند. .RE .sp \fBRestart\fP \fB\-\-dont\-preserve\-state\fP [\fIother\-params\fP] .RS 4 مشابه دستور زیر است: .sp .if n .RS 4 .nf .fam C Restart [other\-params] .fam .fi .if n .RE .sp اما هیچ‌یک از وضعیت‌های پنجره را در طول راه‌اندازی مجدد ذخیره نمی‌کند. .sp بدون این گزینه، دستور \fBRestart\fP بیشتر وضعیت‌های هر پنجره را با نوشتن در فایلی به نام \fI.fs\-restart\-$HOSTDISPLAY\fP در دایرکتوری خانگی کاربر حفظ می‌کند. .RE .sp \fBSaveSession\fP .RS 4 باعث می‌شود مدیر نشست (در صورت وجود) نشست فعلی را ذخیره کند. این دستور برای xsm کار نمی‌کند زیرا xsm این قابلیت را پیاده‌سازی نکرده است. برای مدیریت راه دور xsm از سیگنال‌های یونیکس استفاده کنید. .RE .sp \fBSaveQuitSession\fP .RS 4 باعث می‌شود مدیر نشست ابتدا نشست را ذخیره کرده و سپس آن را خاموش کند. این دستور برای xsm کار نمی‌کند. .RE .SS "مجموعه‌های رنگی (Colorsets)" .sp مجموعه‌های رنگی روشی قدرتمند برای کنترل رنگ‌ها هستند. آن‌ها منابع ظاهری مشترکی را ایجاد می‌کنند که بین fvwm و ماژول‌های آن به اشتراک گذاشته می‌شوند. هنگامی که یک مجموعه رنگ تغییر می‌کند، تمامی بخش‌های fvwm به آن واکنش نشان می‌دهند. یک مجموعه رنگ شامل رنگ پیش‌زمینه، پس‌زمینه، سایه و برجستگی (اغلب بر اساس رنگ پس‌زمینه) و نمای پس‌زمینه (شامل تصاویر و انواع گرادیان‌ها) است. .sp \fBColorset\fP \fInum\fP [\fIoptions\fP] .RS 4 مجموعه رنگ شماره \fInum\fP را ایجاد کرده یا تغییر می‌دهد. شماره می‌تواند از صفر شروع شده و عدد بزرگی باشد. .sp \fBهشدار:\fP بالاترین شماره مجموعه رنگ استفاده‌شده میزان مصرف حافظه را تعیین می‌کند؛ بنابراین اگر Colorset 100000 را تعریف کنید، حافظه برای ۱۰۰۰۰۱ مجموعه رنگ اختصاص می‌یابد. شماره‌ها را تا حد امکان کوچک نگه دارید. .sp طبق قرارداد، مجموعه‌های رنگی معمولاً به این صورت شماره‌گذاری می‌شوند: .sp .if n .RS 4 .nf .fam C # 0 = رنگ‌های پیش‌فرض # 1 = پنجره‌های غیرفعال # 2 = پنجره‌های فعال # 3 = مدخل غیرفعال منو و پس‌زمینه منو # 4 = مدخل فعال منو # 5 = مدخل کم‌رنگ‌شده منو (فقط پس‌زمینه) # 6 = پیش‌زمینه و پس‌زمینه ماژول # 7 = رنگ‌های برجسته‌سازی .fam .fi .if n .RE .sp اگر به رنگ‌های بیشتری نیاز دارید، می‌توانید از قرارداد موجود در fvwm\-themes استفاده کنید: .sp .URL "http://fvwm\-themes.sourceforge.net/doc/colorsets" "" "" .sp هر مجموعه رنگ دارای چهار رنگ، یک تصویر پیکسلی اختیاری و یک ماسک شکل اختیاری است. این چهار رنگ توسط ماژول‌ها به عنوان رنگ‌های پیش‌زمینه، پس‌زمینه، برجستگی و سایه استفاده می‌شوند. .sp گزینه‌های \fIoptions\fP فهرستی جداشده با کاما از کلیدواژه‌های زیر است: fg، Fore، Foreground، bg، Back، Background، hi، Hilite، Hilight، sh، Shade، Shadow، fgsh، Pixmap، TiledPixmap، AspectPixmap، Transparent، RootTransparent، Shape، TiledShape، AspectShape، NoShape، ?Gradient، Tint، fgTint، bgTint، Alpha، fgAlpha، Dither، NoDither، IconTint، IconAlpha، Plain. .sp گزینه‌های \fIfg\fP، \fIFore\fP و \fIForeground\fP یک نام رنگ دریافت کرده و رنگ پیش‌زمینه را تنظیم می‌کنند. نام ویژه \fIContrast\fP می‌تواند برای انتخاب رنگی که کنتراست خوبی با پس‌زمینه دارد استفاده شود. برای بازگرداندن رنگ به پیش‌فرض نام رنگ را حذف کنید. .sp گزینه‌های \fIbg\fP، \fIBack\fP و \fIBackground\fP رنگ پس‌زمینه را تنظیم می‌کنند. همچنین رنگ‌های برجستگی و سایه را روی مقادیری تنظیم می‌نمایند که جلوه سه‌بعدی ایجاد کنند. نام ویژه \fIAverage\fP می‌تواند برای انتخاب میانگین رنگ‌های تصویر پیکسلی استفاده شود. .sp گزینه‌های \fIhi\fP، \fIHilite\fP و \fIHilight\fP رنگ برجستگی را تنظیم می‌کنند. در صورت عدم تعیین، از رنگ پس‌زمینه محاسبه می‌شود. .sp گزینه‌های \fIsh\fP، \fIShade\fP و \fIShadow\fP رنگ سایه را تنظیم می‌کنند. در صورت عدم تعیین، از رنگ پس‌زمینه محاسبه می‌شود. .sp گزینه \fIfgsh\fP رنگ استفاده‌شده در جلوه سایه فونت را تنظیم می‌کند. .sp گزینه‌های \fIPixmap\fP، \fITiledPixmap\fP و \fIAspectPixmap\fP یک نام فایل دریافت کرده، در \fBImagePath\fP جستجو نموده و آن را به عنوان تصویر پس‌زمینه استفاده می‌کنند. \fITiledPixmap\fP تصویر را بدون مقیاس‌بندی تکرار می‌کند، \fIPixmap\fP تصویر را می‌کشد تا اندازه شیء شود، و \fIAspectPixmap\fP تصویر را با حفظ نسبت ابعاد مقیاس‌بندی می‌کند. .sp گزینه \fITransparent\fP یک تصویر پس‌زمینه شفاف ایجاد می‌کند. این تصویر به عنوان پس‌زمینه پنجره برای دستیابی به شفافیت ریشه استفاده می‌شود. برای این کار باید از گزینه \fIParentalRelativity\fP در دستور \fBStyle\fP استفاده کنید. .sp .if n .RS 4 .nf .fam C xv \-root \-quit mybg.png; fvwm\-root \-d .fam .fi .if n .RE .sp شفافیت به‌دست‌آمده با \fITransparent\fP به این بستگی دارد که آیا مجموعه رنگ به پیش‌زمینه یا پس‌زمینه پنجره اعمال شده باشد: .sp .if n .RS 4 .nf .fam C Colorset 12 VGradient 200 grey30 grey60 Colorset 17 Transparent *FvwmIconMan: Colorset 12 *FvwmIconMan: PlainColorset 17 .fam .fi .if n .RE .sp برای دستیابی به شفافیت ریشه بهتر است از گزینه \fIRootTransparent\fP استفاده شود. .sp گزینه \fIRootTransparent\fP [ \fIbuffer\fP ] یک پس‌زمینه شفاف نسبت به ریشه ایجاد می‌کند. برای کارکرد این گزینه باید از برنامه‌ای سازگار با \fBEsetroot\fP یا fvwm\-root با گزینه \-\-retain\-pixmap استفاده کنید. کلیدواژه \fIbuffer\fP تنها زمانی مفید است که از گزینه \fITint\fP نیز استفاده شود. .sp گزینه‌های \fIShape\fP، \fITiledShape\fP و \fIAspectShape\fP یک نام فایل دریافت کرده و آن را به عنوان بیت‌مپ شکل ماسک استفاده می‌کنند. .sp \fBهشدار:\fP به دلیل نحوه پیاده‌سازی شکل‌ها در X11، نمی‌توان شکل‌دار شدن پنجره‌ها را لغو کرد و ممکن است نیاز به راه‌اندازی مجدد fvwm باشد. .sp گزینه \fI?Gradient .\|.\|.\fP یک تصویر پیکسلی گرادیان ایجاد کرده و آن را به اندازه پنجره می‌کشد. نوع آن می‌تواند یکی از مقادیر \fIHGradient\fP، \fIVGradient\fP، \fIDGradient\fP، \fIBGradient\fP، \fISGradient\fP، \fICGradient\fP، \fIRGradient\fP یا \fIYGradient\fP باشد. .sp گزینه \fITint\fP دو آرگومان شامل یک رنگ و یک درصد بین 0 تا 100 دریافت می‌کند و تصویر را با آن رنگ ترکیب می‌نماید. .sp گزینه \fIfgTint\fP رنگ پیش‌زمینه را با رنگ و درصد مشخص‌شده ترکیب می‌کند. .sp گزینه \fIbgTint\fP رنگ پس‌زمینه را با رنگ و درصد مشخص‌شده ترکیب می‌کند. .sp گزینه \fIAlpha\fP درصدی بین 0 تا 100 دریافت کرده و تصویر را با رنگ پس‌زمینه ترکیب می‌کند. .sp گزینه \fIfgAlpha\fP درصدی بین 0 تا 100 دریافت کرده و متن را با پس‌زمینه مجموعه رنگ ترکیب می‌نماید (برای فونت‌های Xft). .sp گزینه \fIDither\fP خطای تصویری (dither) را برای نمایشگرهای با عمق رنگ ۱۶ یا کمتر فعال می‌کند. \fINoDither\fP آن را غیرفعال می‌سازد. .sp گزینه‌های \fIIconTint\fP و \fIIconAlpha\fP رنگ و شفافیت آیکون‌های رندرشده در پس‌زمینه مجموعه رنگ را کنترل می‌کنند. .sp گزینه \fINoShape\fP ماسک شکل را حذف می‌کند و \fIPlain\fP تصویر یا گرادیان پس‌زمینه را حذف می‌نماید. .sp مثال‌ها: .sp .if n .RS 4 .nf .fam C Colorset 3 fg tan, bg navy .fam .fi .if n .RE .sp رنگ پیش‌زمینه مجموعه رنگ ۳ را به tan و پس‌زمینه را به navy تغییر می‌دهد. .sp .if n .RS 4 .nf .fam C Colorset 3 bg "navy blue" .fam .fi .if n .RE .sp رنگ پس‌زمینه را به navy blue تغییر می‌دهد. .sp .if n .RS 4 .nf .fam C Colorset 3 AspectPixmap large_murky_dungeon.xpm .fam .fi .if n .RE .sp تصویر پس‌زمینه را تنظیم می‌کند. .sp .if n .RS 4 .nf .fam C Colorset 3 bg Average .fam .fi .if n .RE .sp رنگ پس‌زمینه و رنگ‌های برجستگی را مطابق با میانگین تصویر پس‌زمینه تنظیم می‌کند. .sp .if n .RS 4 .nf .fam C Colorset 3 YGradient 200 3 blue 1000 navy 1 blue 1000 navy .fam .fi .if n .RE .sp یک تصویر گرادیان یین و یانگ به مجموعه رنگ ۳ اضافه می‌کند. .sp .if n .RS 4 .nf .fam C #!/bin/sh FvwmCommand "Colorset 7 fg navy, bg gray" while true do FvwmCommand "Colorset 7 fg gray" sleep 1 FvwmCommand "Colorset 7 fg navy" sleep 1 done .fam .fi .if n .RE .sp باعث چشمک زدن مجموعه رنگ ۷ می‌شود. .sp نام رنگ‌های استفاده‌شده در مجموعه‌های رنگی به صورت متغیرهای fvwm ذخیره می‌شوند که می‌توانند در دستورات جایگزین شوند: .sp .if n .RS 4 .nf .fam C AddToFunc InitFunction + I Exec exec xterm \-fg $[fg.cs0] \-bg $[bg.cs0] .fam .fi .if n .RE .RE .sp \fBCleanupColorsets\fP .RS 4 تعریف تمامی مجموعه‌های رنگی را بازنشانی می‌کند. .RE .sp \fBگرادیان‌های رنگ (Color Gradients)\fP .RS 4 گرادیان رنگ پس‌زمینه‌ای است که رنگ آن به تدریج از یک فام به فام دیگر تغییر می‌کند. هشت نوع گرادیان وجود دارد: \fBHGradient\fP افقی، \fBVGradient\fP عمودی، \fBDGradient\fP مورب، \fBBGradient\fP مورب معکوس، \fBSGradient\fP مربع‌های هم‌مرکز، \fBCGradient\fP دایره‌های هم‌مرکز، \fBRGradient\fP الگوی راداری و \fBYGradient\fP سبک یین و یانگ است. .sp نحو گرادیان رنگ دو شکل دارد: .sp \fB?Gradient\fP \fIcolors\fP \fIstart\-color\fP \fIend\-color\fP .sp این شکل یک گرادیان خطی را مشخص می‌کند. آرگومان‌ها شامل تعداد کل رنگ‌ها برای تخصیص (بین ۲ تا ۱۰۰۰)، رنگ اولیه و رنگ نهایی هستند. .sp مثال: .sp .if n .RS 4 .nf .fam C TitleStyle VGradient 20 rgb:b8/ce/bc rgb:5b/85/d0 .fam .fi .if n .RE .sp \fB?Gradient\fP \fIcolors\fP \fIsegments\fP \fIcolor\fP \fIlength\fP \fIcolor\fP [\fIlength\fP \fIcolor\fP] .\|.\|. .sp شکل دوم یک گرادیان غیرخطی را مشخص می‌کند. آرگومان‌ها عبارتند از: تعداد کل رنگ‌ها (بین ۲ تا ۱۰۰۰)، سپس تعداد بخش‌ها (\fIsegments\fP). برای هر بخش، رنگ شروع، طول نسبی و رنگ پایان مشخص می‌شود. .sp مثال‌ها: .sp .if n .RS 4 .nf .fam C Colorset 0 DGradient 128 2 lightgrey 50 blue 50 white # ۲۰٪ گرادیان از قرمز به آبی، # ۳۰٪ از آبی به سیاه، # ۵۰٪ از سیاه به خاکستری Colorset 0 DGradient 100 3 Red 20 Blue 30 Black 50 Grey # ۵۰٪ از آبی به سبز، سپس # ۵۰٪ از زرد به قرمز Colorset 0 HGradient 128 3 Blue 1000 Green 1 Yellow 1000 Red .fam .fi .if n .RE .sp توجه: برخی سبک‌های گرادیان ممکن است کند بوده و حافظه زیادی مصرف کنند. برای بهبود کارایی می‌توانید موارد زیر را امتحان کنید: .sp خاموش کردن برجسته‌سازی مدخل فعال منو به جز رنگ پیش‌زمینه: .sp .if n .RS 4 .nf .fam C MenuStyle