FVWM3COMMANDS(1)   FVWM3COMMANDS(1)

fvwm3commands - دستورات توکار fvwm

توضیحات دستورات زیر در بخش‌های زیر گروه‌بندی شده‌اند. این بخش‌ها بر اساس میزان کاربرد و فایده برای کاربران تازه‌کار مرتب شده‌اند.

•دستورات منو (Menu commands)
•دستورات متفرقه (Miscellaneous commands)
•دستورات موثر بر جابجایی و جای‌گذاری پنجره (Commands affecting window movement and placement)
•دستورات فوکوس و حرکت ماوس (Commands for focus and mouse movement)
•دستورات کنترل وضعیت پنجره (Commands controlling window state)
•دستورات اتصال کلیدها و ماوس (Commands for mouse and key bindings)
•دستور Style (کنترل سبک‌های پنجره)
•سایر دستورات کنترل سبک‌های پنجره (Other commands controlling window styles)
•دستورات کنترل میزکار مجازی (Commands controlling the virtual desktop)
•دستورات توابع کاربری و دستورات شل (Commands for user functions and shell commands)
•دستورات شرطی (Conditional commands)
•دستورات ماژول (Module commands)
•دستورات خروج، راه‌اندازی مجدد و مدیریت نشست (Quit, restart and session management commands)
•مجموعه‌های رنگی (Colorsets)
•گرادیان‌های رنگ (Color gradients)

BugOpts [option [bool]], ...

این دستور چندین راه‌حل موقت (workaround) برای اشکالات موجود در برنامه‌های شخص ثالث را کنترل می‌کند. گزینه‌های مجزا با کاما از هم جدا می‌شوند. آرگومان اختیاری bool یک مقدار بولی است و فعال یا غیرفعال بودن راه‌حل اشکال را کنترل می‌کند. این مقدار می‌تواند "True" یا "False" برای روشن یا خاموش کردن گزینه، یا "toggle" برای جابجایی بین حالت‌ها باشد. اگر bool حذف شود، تنظیمات پیش‌فرض بازگردانده می‌شود.

گزینه DebugRandR پیام‌های اشکال‌زدایی چیدمان مانیتور را فعال می‌کند.

گزینه FlickeringMoveWorkaround رویدادهای ConfigureNotify را که معمولاً هنگام جابجایی پنجره به برنامه ارسال می‌شوند، غیرفعال می‌کند. اگر برخی از پنجره‌ها هنگام جابجا شدن به‌طور آزاردهنده‌ای چشمک می‌زنند یا پرش دارند، این گزینه ممکن است کمک‌کننده باشد. توجه داشته باشید که وقوع این مشکل خطای fvwm نیست، بلکه اشکال از خود برنامه است.

گزینه MixedVisualWorkaround باعث می‌شود fvwm پیش از انجام برخی عملیات با استفاده از جلوه‌های بصری پنجره ریشه، نقشه رنگ (colormap) ریشه را نصب کند. این گزینه فقط زمانی مفید است که از گزینه -visual برای راه‌اندازی fvwm استفاده شده باشد و آن هم فقط با برخی پیکربندی‌های سرورهای خاص (مانند Exceed 6.0 با یک ریشه ۸ بیتی PseudoColor و fvwm که از یک جلوه بصری ۲۴ بیتی TrueColor استفاده می‌کند).

گزینه ModalityIsEvil کنترل می‌کند که آیا برنامه‌های Motif امکان داشتن پنجره‌های گفتگوی مدال (کادرهای محاوره‌ای که شما را مجبور می‌کنند ابتدا آن‌ها را ببندید تا بتوانید کار دیگری انجام دهید) را دارند یا خیر. حالت پیش‌فرض این است که به برنامه‌ها اجازه داشتن کادرهای گفتگوی مدال داده نشود. از این گزینه با احتیاط استفاده کنید. پس از روشن شدن این گزینه، برای خاموش کردن آن باید fvwm را مجدداً راه‌اندازی کنید.

گزینه RaiseOverNativeWindows باعث می‌شود fvwm تلاش کند پنجره‌های تحت مدیریت خود را بالاتر از پنجره‌های بومی سیستم میزبان سرور X قرار دهد. این ویژگی برای برخی سرورهای X که تحت ویندوز، ویندوز NT یا Mac OS X اجرا می‌شوند مورد نیاز است. fvwm تلاش می‌کند تشخیص دهد که آیا تحت چنین سرور X اجرا می‌شود یا خیر و پرچم را متناسب با آن مقداردهی اولیه می‌کند.

گزینه RaiseOverUnmanaged باعث می‌شود fvwm پنجره‌های تحت مدیریت خود را بالاتر از پنجره‌های override_redirect بالا بیاورد. این گزینه برای مقابله با برنامه‌های ناسازگاری استفاده می‌شود که برخلاف قراردادهای ICCCM از پنجره‌های طولانی‌مدت از این نوع استفاده می‌کنند. این گزینه همچنین همراه با گزینه سبک Unmanaged مفید است.

گزینه FlickeringQtDialogsWorkaround پرش پنجره دارای تمرکز را در برخی ماژول‌ها هنگام استفاده از برنامه‌های KDE یا Qt با پنجره‌های گفتگوی مدال سرکوب می‌کند. این گزینه به‌طور پیش‌فرض فعال است. ممکن است این گزینه برای سایر برنامه‌هایی که از پنجره‌های مدیریت‌نشده توسط fvwm استفاده می‌کنند از نظر بصری مزاحمت ایجاد کند. از آنجا که چنین برنامه‌هایی نادر هستند، احتمالاً امن است که این گزینه در حالت پیش‌فرض خود باقی بماند.

گزینه QtDragnDropWorkaround ارسال پیام‌های ناشناخته ClientEvent به پنجره‌ها را متوقف می‌کند؛ این کار معمولاً بی‌ضرر است، اما Qt در مدیریت پیام‌های ناشناخته ClientEvent مشکلاتی دارد. بنابراین فعال کردن این گزینه ممکن است برای برنامه‌های Qt که از کشیدن و رها کردن (DragnDrop) استفاده می‌کنند مفید باشد. این گزینه به‌طور پیش‌فرض غیرفعال است.

گزینه EWMHIconicStateWorkaround برای پیجرها یا نوارهای وظیفه سازگار با EWMH مورد نیاز است که پنجره‌های موجود در میزکارهای دیگر را به‌صورت آیکون‌شده نمایش می‌دهند. این پیجرها و نوارهای وظیفه از نسخه‌ای از مشخصات EWMH قبل از نسخه 1.2 (نسخه‌های کنونی KDE 2 و 3) استفاده می‌کنند. این ابزارها از وضعیت IconicState WM_STATE برای تعیین اینکه آیا یک برنامه آیکون شده است یا خیر استفاده می‌کنند. این وضعیت، بر اساس ICCCM، لزوماً به این معنی نیست که پنجره آیکون شده است (به معنای معمول). روشن کردن این گزینه fvwm را مجبور می‌کند بین وضعیت IconicState WM_STATE و پنجره آیکون‌شده یکسانی برقرار کند. این کار انطباق با ICCCM را نقض می‌کند اما نباید مشکلات بزرگی ایجاد کند. این گزینه به‌طور پیش‌فرض غیرفعال است.

با فعال بودن گزینه DisplayNewWindowNames، fvwm نام، نام آیکون (در صورت وجود)، منبع (resource) و کلاس پنجره‌های جدید را در کنسول چاپ می‌کند. این کار می‌تواند به یافتن رشته‌های صحیح برای استفاده در دستور Style کمک کند.

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

گزینه DebugCRMotionMethod برخی کدهای اشکال‌زدایی را در روال‌های مدیریت ConfigureRequest در fvwm فعال می‌کند. این گزینه برای کاربر معمولی مفید نیست، اما اگر اشکالی را به تیم fvwm گزارش دهید ممکن است از شما خواسته شود این گزینه را فعال کنید.

گزینه TransliterateUtf8 نویسه‌گردانی را در حین تبدیل از رشته‌های utf-8 فعال می‌کند. به‌طور پیش‌فرض fvwm در حین تبدیل نویسه‌گردانی نمی‌کند، اما اگر تبدیل از utf-8 به دلیل وجود نویسه‌هایی که معادل مستقیمی در مجموعه نویسه مقصد ندارند با شکست مواجه شود، به رشته‌های جایگزین ارائه‌شده توسط کلاینت‌ها رجوع می‌کند. با این حال برخی کلاینت‌ها مشخصه‌های غیر utf-8 را به‌درستی تنظیم نمی‌کنند که در این صورت این گزینه می‌تواند کمک‌کننده باشد.

BusyCursor [Option bool], ...

این دستور نشانگر ماوس را در طول اجرای دستورات خاصی کنترل می‌کند. گزینه Option می‌تواند DynamicMenu، ModuleSynchronous، Read، Wait یا * باشد. پس از هر گزینه باید یک آرگومان بولی bool قرار گیرد. می‌توانید از کاما برای جداسازی گزینه‌های مجزا استفاده کنید. اگر گزینه‌ای را روی "True" تنظیم کنید، هنگام اجرای دستور مربوطه، fvwm نشانگر ماوس مربوط به زمینه WAIT از دستور CursorStyle را نمایش می‌دهد. مقدار "False" مانع از نمایش این نشانگر می‌شود. مقدار پیش‌فرض عبارت است از:
BusyCursor DynamicMenu False, ModuleSynchronous False, \
Read False, Wait False

گزینه * به تمام گزینه‌های موجود اشاره دارد.

گزینه Read دستور PipeRead را کنترل می‌کند.

گزینه DynamicMenu بر گزینه‌های DynamicPopupAction و MissingSubmenuFunction از دستور AddToMenu تأثیر می‌گذارد. اگر این گزینه روی "False" تنظیم شود، نشانگر مشغول در حین اجرای دستور منوی پویا نمایش داده نمی‌شود، حتی اگر این دستور یک دستور Read یا PipeRead باشد و گزینه Read روی "True" تنظیم شده باشد.

گزینه ModuleSynchronous بر دستور ModuleSynchronous تأثیر می‌گذارد. اگر این گزینه روی "False" تنظیم شود، هنگامی که fvwm منتظر است تا ماژولی که توسط ModuleSynchronous راه‌اندازی شده مراحل شروع خود را تکمیل کند، نشانگر مشغول نمایش داده نمی‌شود.

گزینه Wait فقط بر نشانگر پنجره ریشه تأثیر می‌گذارد. در طول توقف wait، نشانگر ریشه با نشانگر مشغول جایگزین می‌شود و fvwm همچنان کاملاً فعال و پاسخگو باقی می‌ماند (می‌توانید از مکث خارج شوید، به دستور EscapeFunc مراجعه کنید). اگر می‌خواهید از این گزینه استفاده کنید و از نشانگر پیش‌فرض ریشه استفاده نمی‌کنید، باید نشانگر ریشه خود را با دستور CursorStyle تنظیم کنید.

ClickTime [delay]

حداکثر تاخیر را بر حسب میلی‌ثانیه بین فشردن و رها کردن یک دکمه مشخص می‌کند تا دستور Function آن عمل را به عنوان یک کلیک ماوس در نظر بگیرد. تاخیر پیش‌فرض ۱۵۰ میلی‌ثانیه است. حذف مقدار تاخیر، مقدار ClickTime را به حالت پیش‌فرض بازمی‌گرداند.

دستور ClickTime همچنین تاخیر بین دو کلیک را که باید به عنوان دوبار کلیک (دابل کلیک) تفسیر شود، مشخص می‌کند.

ColormapFocus FollowsMouse | FollowsFocus

به‌طور پیش‌فرض، fvwm نقشه رنگ پنجره‌ای را که نشانگر ماوس در آن قرار دارد نصب می‌کند. اگر از دستور زیر استفاده کنید:
ColormapFocus FollowsFocus

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

CursorStyle context [num | name | None | Tiny | file [x y] [fg bg]]

یک نشانگر ماوس جدید برای زمینه (context) مشخص‌شده تعریف می‌کند. توجه داشته باشید که این دستور نمی‌تواند اشکالی را که یک برنامه کاربردی، برای مثال برای نشان دادن وضعیت مشغول بودن استفاده می‌کند، کنترل کند. زمینه‌های گوناگون عبارتند از:

POSITION (top_left_corner)

هنگام جای‌گذاری اولیه پنجره‌ها استفاده می‌شود

TITLE (top_left_arrow)

در نوار عنوان پنجره استفاده می‌شود

DEFAULT (top_left_arrow)

در پنجره‌هایی که نشانگر خود را تنظیم نکرده‌اند استفاده می‌شود

SYS (hand2)

در یکی از دکمه‌های نوار عنوان استفاده می‌شود

MOVE (fleur)

هنگام جابجایی یا تغییر اندازه پنجره‌ها استفاده می‌شود

RESIZE (sizing)

هنگام جابجایی یا تغییر اندازه پنجره‌ها استفاده می‌شود

WAIT (watch)

در طول اجرای برخی دستورات fvwm استفاده می‌شود (برای جزئیات به BusyCursor مراجعه کنید)

MENU (top_left_arrow)

در منوها استفاده می‌شود

SELECT (crosshair)

هنگامی که از کاربر خواسته می‌شود یک پنجره را انتخاب کند استفاده می‌شود

DESTROY (pirate)

برای دستورات Destroy، Close و Delete استفاده می‌شود

TOP (top_side)

در نوار لبه بالایی پنجره استفاده می‌شود

RIGHT (right_side)

در نوار لبه راستی پنجره استفاده می‌شود

BOTTOM (bottom_side)

در نوار لبه پایینی پنجره استفاده می‌شود

LEFT (left_side)

در نوار لبه چپی پنجره استفاده می‌شود

TOP_LEFT (top_left_corner)

در گوشه بالا و سمت چپ پنجره استفاده می‌شود

TOP_RIGHT (top_right_corner)

در گوشه بالا و سمت راست پنجره استفاده می‌شود

BOTTOM_LEFT (bottom_left_corner)

در گوشه پایین و سمت چپ پنجره استفاده می‌شود

BOTTOM_RIGHT (bottom_right_corner)

در گوشه پایین و سمت راست پنجره استفاده می‌شود

TOP_EDGE (top_side)

در لبه بالایی صفحه نمایش استفاده می‌شود

RIGHT_EDGE (right_side)

در لبه راستی صفحه نمایش استفاده می‌شود

BOTTOM_EDGE (bottom_side)

در لبه پایینی صفحه نمایش استفاده می‌شود

LEFT_EDGE (left_side)

در لبه چپی صفحه نمایش استفاده می‌شود

ROOT (left_ptr)

به عنوان نشانگر پنجره ریشه استفاده می‌شود

مقادیر پیش‌فرض در پرانتزهای بالا نشان داده شده‌اند. اگر مایل باشید نشانگر پیش‌فرض را برای یک زمینه خاص بازیابی کنید، می‌توانید آرگومان دوم را حذف نمایید.

آرگومان دوم یا مقدار عددی نشانگر است همان‌طور که در فایل هدر X11/cursorfont.h تعریف شده، یا نام آن (بدون پیشوند XC_). از طرف دیگر، می‌توان نام فایل xpm را نیز مشخص کرد. این نام همچنین می‌تواند None (بدون نشانگر) یا Tiny (یک تک‌پیکسل به عنوان نشانگر) باشد.

# تنظیم نشانگر نابودی روی XC_gumby (هر دو فرمت معتبرند):
CursorStyle DESTROY 56
CursorStyle DESTROY gumby

همچنین نشانگر را می‌توان از یک فایل تصویر (XPM، PNG یا SVG) بارگذاری کرد. اگر fvwm با پشتیبانی از Xcursor کامپایل شده باشد، از فرمت کامل ARGB استفاده می‌شود و فایل‌های نشانگر (احتمالاً متحرک) ساخته‌شده با برنامه xcursorgen قابل بارگذاری هستند. در غیر این صورت، نشانگر به حالت تک‌رنگ (monochrome) تبدیل می‌شود.

آرگومان‌های اختیاری x و y (پس از آرگومان file) مختصات نقطه حساس (hot-spot) را تعیین می‌کنند که در آن 0 0 گوشه بالا و سمت چپ تصویر است. مختصات درون محدوده تصویر معتبر بوده و بر هر نقطه حساسی که در فایل تصویر (XPM/Xcursor) تعریف شده اولویت دارد. یک نقطه حساس نامعتبر یا تعریف‌نشده در مرکز تصویر قرار می‌گیرد.

CursorStyle ROOT cursor_image.png 0 0

آرگومان‌های اختیاری fg و bg رنگ‌های پیش‌زمینه و پس‌زمینه نشانگر را تعیین می‌کنند که پیش‌فرض آن‌ها سیاه و سفید است. این رنگ‌ها تنها با نشانگرهای تک‌رنگ استفاده می‌شوند و در غیر این صورت نادیده گرفته خواهند شد.

CursorStyle ROOT nice_arrow.xpm yellow black

DefaultFont [fontname]

دستور DefaultFont فونت پیش‌فرض را روی فونت fontname تنظیم می‌کند. فونت پیش‌فرض هر زمان که فونت دیگری مشخص نشده باشد توسط fvwm استفاده می‌شود. برای بازگرداندن فونت پیش‌فرض به حالت توکار، آرگومان را حذف کنید. فونت پیش‌فرض برای منوها، عناوین پنجره‌ها، عناوین آیکون‌ها و همچنین پنجره‌های بازخورد هندسه در طول عملیات جابجایی یا تغییر اندازه استفاده می‌شود. برای نادیده گرفتن فونت پیش‌فرض در یک زمینه خاص، از دستورات Style * Font، Style * IconFont یا MenuStyle استفاده کنید.

DefaultIcon filename

آیکون پیش‌فرضی را تنظیم می‌کند که اگر یک پنجره نه آیکون ارائه‌شده توسط کلاینت را داشته باشد و نه آیکونی که از طریق گزینه Icon دستور Style ارائه شده، استفاده شود.

DefaultLayers bottom put top

لایه‌هایی را که برای گزینه‌های StaysOnBottom، StaysPut و StaysOnTop از دستور Style استفاده می‌شوند، تغییر می‌دهد. در ابتدا، لایه‌های 2، 4 و 6 استفاده می‌شوند.

Deschedule [command_id]

تمام دستوراتی را که با شناسه command_id توسط دستور Schedule زمان‌بندی شده‌اند، از فهرست دستورات در انتظار اجرا حذف می‌کند، مگر اینکه قبلاً اجرا شده باشند. اگر command_id حذف شود، مقدار متغیر $[schedule.last] به عنوان شناسه استفاده می‌شود.

Emulate Fvwm | Mwm | Win

این دستور یک کنترل کلی برای نحوه انجام کارهای متفرقه توسط fvwm است. در حال حاضر این دستور بر محل ظاهر شدن پنجره بازخورد جابجایی/تغییر اندازه و نحوه لغو جای‌گذاری پنجره تأثیر می‌گذارد. برای داشتن رفتاری شبیه‌تر به Mwm یا Win می‌توانید Emulate را با آرگومان Mwm یا Win فراخوانی کنید. با Mwm پنجره‌های بازخورد جابجایی و تغییر اندازه در مرکز صفحه ظاهر می‌شوند، نه در گوشه بالا و سمت چپ. این امر همچنین بر نحوه لغو جای‌گذاری دستی تأثیر می‌گذارد. به توضیحات ManualPlacement مراجعه کنید.

EscapeFunc

به‌طور پیش‌فرض، توالی کلیدهای Ctrl-Alt-Escape امکان خروج از مکث دستور Wait و از یک دستور قفل‌شده ModuleSynchronous را فراهم می‌کند. دستور EscapeFunc که همراه با دستور Key استفاده می‌شود، پیکربندی این توالی کلید را امکان‌پذیر می‌سازد. یک مثال:
Key Escape A MC -
Key Escape A  S EscapeFunc

توالی کلیدهای Ctrl-Alt-Escape را با Shift-Escape برای لغو توقف دستور Wait و دستور ModuleSynchronous جایگزین می‌کند. دستور EscapeFunc اگر خارج از دستور Key استفاده شود کاری انجام نمی‌دهد.

FakeClick [command value] ...

این دستور عمدتاً برای اشکال‌زدایی fvwm در نظر گرفته شده و هیچ تضمینی وجود ندارد که برای شما به درستی کار کند. دستور FakeClick می‌تواند رویدادهای فشردن و رها کردن دکمه ماوس را شبیه‌سازی کرده و آن‌ها را به fvwm یا برنامه‌ها ارسال کند. پارامترها فهرستی از دستورات هستند که از جفت‌های نشانه‌های command و مقادیر صحیح values تشکیل شده‌اند. دستورات press و release با شماره دکمه ماوس مناسب دنبال می‌شوند و یک رویداد فشردن یا رها کردن دکمه را روی پنجره زیر نشانگر ایجاد می‌کنند. دستور wait برنامه fvwm را به تعداد میلی‌ثانیه‌های داده‌شده متوقف می‌کند. دستور modifiers فشردن یا رها کردن کلیدهای تغییردهنده (modifier) را شبیه‌سازی می‌کند. مقادیر 1 تا 5 به Mod1 تا Mod5 نگاشت می‌شوند در حالی که 6، 7 و 8 به Shift، Lock و Control نگاشت می‌گردند. کلید تغییردهنده برای رویدادهای بعدی دکمه تنظیم می‌شود. برای رها کردن یک کلید تغییردهنده، از عدد منفی متناظر استفاده کنید. دستور depth تعیین می‌کند که رویدادهای دکمه به کدام پنجره ارسال شوند. با عمق 1، همه رویدادها صرف‌نظر از موقعیت نشانگر به پنجره ریشه می‌روند. با عمق 2، رویداد به بالاترین پنجره زیر نشانگر ارسال می‌شود که معمولاً پنجره قاب (frame) است. با عمق 3، رویدادها به پنجره کلاینت می‌روند. اعداد بزرگتر به زیرپنجره‌های متوالی می‌روند. صفر (0) به کوچک‌ترین پنجره‌ای می‌رود که نشانگر را در بر دارد. توجه داشته باشید که رویدادها به سمت بالا منتشر می‌شوند.
FakeClick depth 2 press 1 wait 250 release 1

این دستور یک کلیک با دکمه ۱ را در پنجره والد (عمق ۲) با تاخیر ۲۵۰ میلی‌ثانیه بین فشردن و رها کردن شبیه‌سازی می‌کند. توجه: تمام نام‌های دستورات را می‌توان با حرف اول آن‌ها خلاصه کرد.

FakeKeypress [command value] ...

این دستور عمدتاً برای اشکال‌زدایی fvwm در نظر گرفته شده است و هیچ تضمینی وجود ندارد که برای شما کار کند. دستور FakeKeypress می‌تواند رویدادهای فشردن و رها کردن کلید را شبیه‌سازی کرده و به fvwm یا برنامه‌ها ارسال کند. پارامترها فهرستی از دستورات شامل جفت‌های نشانه دستور و مقادیر هستند. دستورات press و release با یک نام کلید دنبال می‌شوند. نام کلید یک نام کلید استاندارد X11 است همان‌گونه که در /usr/include/X11/keysymdef.h (بدون پیشوند XK_) یا پایگاه داده keysym در /usr/X11R6/lib/X11/XKeysymDB تعریف شده است. دستورات wait، modifiers و depth همانند دستورات مورد استفاده در FakeClick هستند.

ذخیره تمامی نشست‌های GVim با: "Esc:w\n"

All (gvim) FakeKeypress press Escape \
                  press colon \
                  press w \
                  press Return

ذخیره و خروج از تمامی نشست‌های GVim با: "Esc:wq\n"

All (gvim) FakeKeypress press Escape \
                  press colon \
                  press w \
                  press q \
                  press Return

ارسال A به یک پنجره مشخص:

WindowId 0x3800002 FakeKeypress press A

توجه: تمامی نام‌های دستورات را می‌توان با حرف اول آن‌ها خلاصه کرد.

ImagePath path

فهرستی از دایرکتوری‌ها را که با دونقطه (:) از هم جدا شده‌اند، برای جستجوی تصاویر (هم تک‌رنگ و هم نگاره‌پیکسلی/pixmap) مشخص می‌کند. برای یافتن تصویری که با یک مسیر نسبی داده شده است، fvwm به نوبت هر یک از دایرکتوری‌های فهرست‌شده را بررسی می‌کند و از اولین فایل یافت‌شده استفاده می‌نماید.

اگر دایرکتوری به صورت "/some/dir;.ext" مشخص شود، به این معنی است که تمامی تصاویر در این دایرکتوری دارای پسوند ".ext" هستند که باید اجبار شود. نام تصویر اصلی (که ممکن است پسوند دیگری داشته باشد یا اصلاً پسوندی نداشته باشد) بررسی نمی‌شود، بلکه ".ext" اضافه شده یا جایگزین پسوند اصلی می‌گردد. این قابلیت به عنوان مثال زمانی مفید است که کاربر دایرکتوری‌هایی از تصاویر با پسوند ".xpm" و دایرکتوری‌های دیگری با همان نام‌ها اما تصاویر ".png" داشته باشد.

مسیر path می‌تواند حاوی متغیرهای محیطی مانند $HOME (یا ${HOME}) باشد. علاوه بر این، علامت '+' در مسیر به مقدار قبلی مسیر گسترش می‌یابد و امکان افزودن آسان به انتها یا ابتدای مسیر را فراهم می‌کند.

به عنوان مثال:

ImagePath $HOME/icons:+:/usr/include/X11/bitmaps

LocalePath path

فهرستی از "مسیرهای محلی" (locale paths) با جداکننده دونقطه را مشخص می‌کند که در آن‌ها برای ترجمه رشته‌ها جستجو شود. یک مسیر محلی از یک مسیر دایرکتوری و یک دامنه متنی تشکیل شده که با یک نقطه‌ویرگول (;) از هم جدا شده‌اند. به عنوان مثال، مسیر محلی پیش‌فرض عبارت است از:
/install_prefix/share/locale;fvwm

که در آن install_prefix دایرکتوری نصب fvwm است. با چنین مسیر محلی، ترجمه‌ها در مسیر زیر جستجو می‌شوند:

/install_prefix/share/locale/lang/LC_MESSAGES/fvwm.mo

که در آن lang به پیکربندی محلی (locale) بستگی دارد. اگر هیچ دایرکتوری مشخص نشود، مسیر دایرکتوری پیش‌فرض در نظر گرفته می‌شود. اگر دامنه متنی مشخص نشود، fvwm فرض می‌گردد. بدون آرگومان، مسیر محلی پیش‌فرض بازیابی می‌شود.

همانند دستور ImagePath، مقدار path می‌تواند شامل متغیرهای محیطی و علامت '+' برای الحاق آسان به ابتدا یا انتهای مسیر محلی باشد.

به عنوان مثال، بسته fvwm-themes از دستور زیر برای افزودن کاتالوگ‌های محلی استفاده می‌کند:

LocalePath ";fvwm-themes:+"

کاتالوگ پیش‌فرض fvwm شامل چند رشته است که توسط خود فایل اجرایی fvwm استفاده می‌شوند (Desk و Geometry) و رشته‌هایی که در برخی فایل‌های پیکربندی پیش‌فرض و پیکربندی FvwmForm به کار می‌روند. برای مشاهده فهرست رشته‌ها با ترجمه احتمالی به زبان‌های گوناگون می‌توانید به زیردایرکتوری po/ در سورس‌کد fvwm نگاهی بیندازید. در حال حاضر زبان‌های بسیار کمی پشتیبانی می‌شوند.

کاربرد اصلی کاتالوگ‌های محلی از طریق پارامتر "$[gt.string]" است:

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

اگر ترجمه‌ها در دسترس باشند، منویی را به زبان‌های محلی ارائه می‌دهد.

توجه داشته باشید که ماژول FvwmScript مجموعه‌ای از دستورالعمل‌های ویژه برای ترجمه رشته‌ها دارد. توضیح نحوه ساخت کاتالوگ‌های محلی خارج از محدوده این بحث است. لطفاً به مستندات GNU gettext مراجعه کنید.

PrintInfo subject [verbose]

اطلاعات مربوط به موضوع subject را در فایل لاگ اشکال‌زدایی چاپ می‌کند که پیش‌فرض آن $HOME/.fvwm/fvwm3-output.log است. متغیرهای محیطی $FVWM_USERDIR و $FVWM3_LOGFILE می‌توانند این مقدار پیش‌فرض را تغییر دهند. برای اینکه این فایل لاگ نوشته شود، یا باید fvwm3 با گزینه -v اجرا شده باشد یا از سیگنال SIGUSR2 برای باز و بسته کردن فایل لاگ اشکال‌زدایی استفاده شود.

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

موضوع Colors که اطلاعاتی را درباره رنگ‌های استفاده‌شده توسط fvwm چاپ می‌کند. این مورد در نمایشگرهایی که تنها می‌توانند ۲۵۶ رنگ (یا کمتر) را همزمان نمایش دهند مفید است. اگر مقدار verbose برابر یک یا بیشتر باشد، پالت استفاده‌شده توسط fvwm چاپ می‌شود. اگر پالت رنگ محدودی دارید و رنگ‌هایتان تمام شده است، این دستور ممکن است مفید باشد.

موضوع ImageCache که اطلاعات مربوط به تصاویر بارگذاری‌شده توسط fvwm را چاپ می‌کند. اگر مقدار verbose برابر یک یا بیشتر باشد، تمام تصاویر موجود در حافظه پنهان همراه با دفعات استفاده مجدد از آن‌ها فهرست می‌شوند.

موضوع Locale که اطلاعات مربوط به تنظیمات محلی و فونت‌های استفاده‌شده توسط fvwm را چاپ می‌کند. مقدار verbose می‌تواند ۱ یا ۲ باشد.

موضوع nls که اطلاعات مربوط به کاتالوگ‌های محلی استفاده‌شده توسط fvwm را چاپ می‌کند.

موضوع bindings که اطلاعات مربوط به تمامی کلیدهای میانبر و اتصالات ماوس تعریف‌شده در fvwm را چاپ می‌کند. مقدار verbose با این گزینه تأثیری ندارد.

موضوع infostore که اطلاعات مربوط به تمامی مدخل‌های موجود در infostore را چاپ کرده و کلید و مقدار آن را فهرست می‌کند. مقدار verbose با این گزینه تأثیری ندارد.

Schedule [Periodic] delay_ms [command_id] command

دستور command پس از گذشت حدود delay_ms میلی‌ثانیه اجرا می‌شود. این قابلیت می‌تواند در برخی تنظیمات پیچیده مفید باشد. دستور command در همان زمینه پنجره‌ای اجرا می‌شود که دستور Schedule در آن اجرا شده است. یک آرگومان عدد صحیح اختیاری command_id می‌تواند در قالب ده‌دهی، هگزادسیمال یا هشت‌هشتی داده شود. از این شناسه می‌توان با دستور Deschedule برای لغو دستور زمان‌بندی‌شده پیش از اجرای آن استفاده کرد. اگر شناسه‌ای داده نشود، fvwm از اعداد منفی برای شناسه استفاده می‌کند که از -1 شروع شده و با هر بار استفاده از دستور Schedule یک واحد کاهش می‌یابد. توجه داشته باشید که دستور Schedule و آرگومان‌های آن تحت بسط معمول خط فرمان قرار می‌گیرند و هنگامی که در نهایت command اجرا می‌شود، مجدداً بسط داده خواهد شد. بنابراین ممکن است لازم باشد بخش‌هایی از دستور را که نباید دوبار بسط داده شوند، نقل‌قول (کوتیشن) کنید.

توجه: شناسه یک پنجره همان‌طور که با $[w.id] برگردانده می‌شود می‌تواند به عنوان command_id استفاده شود. مثال:

Current Schedule 1000 $[w.id] WindowShade

دستور Schedule همچنین از کلیدواژه اختیاری Periodic پشتیبانی می‌کند که نشان می‌دهد دستور command باید هر delay_ms یک‌بار اجرا شود. مثال:

Schedule Periodic 10000 PipeRead '[ -N "$MAIL" ] && echo \
 Echo You have mail'

برای توقف دستورات دوره‌ای از دستور Deschedule استفاده کنید.

State state [bool]

یکی از ۳۲ وضعیت تعریف‌شده توسط کاربر را که به هر پنجره مرتبط هستند تنظیم، پاک یا معکوس می‌کند. پارامتر state عددی بین 0 تا 31 است. این وضعیت‌ها در خود fvwm معنای خاصی ندارند، اما می‌توان آن‌ها را در دستورات شرطی مانند Next با شرط State بررسی کرد. آرگومان اختیاری bool یک مقدار بولی است. "True" وضعیت داده‌شده را فعال می‌کند، در حالی که "False" آن را پاک می‌کند. استفاده از "toggle" وضعیت را معکوس می‌سازد. اگر آرگومان bool داده نشود، وضعیت معکوس می‌شود.

WindowList [(conditions)] [position] [options] [double-click-action]

یک منوی بازشو تولید کرده (و آن را نمایش می‌دهد) که در آن عنوان و ابعاد هندسی هر یک از پنجره‌های موجود روی میزکار نمایش داده می‌شود.

قالب بخش هندسه به این صورت است: desk(layer): x-geometry sticky، که در آن desk و layer شماره‌های مربوطه هستند و sticky خالی یا حرف بزرگ S است. هندسه پنجره‌های آیکون‌شده داخل پرانتز نشان داده می‌شود. انتخاب یک مورد از منوی بازشوی فهرست پنجره‌ها باعث می‌شود تابع تفسیری "WindowListFunc" با شناسه آن پنجره که به صورت $0 ارسال می‌شود، اجرا گردد. تابع پیش‌فرض "WindowListFunc" به این صورت است:

AddToFunc WindowListFunc
+ I Iconify off
+ I FlipFocus
+ I Raise
+ I WarpToWindow 5p 5p

اگر این پیش‌فرض‌ها برای شما مناسب نیستند، می‌توانید "WindowListFunc" توکار را حذف کرده و تابع اختصاصی خود را بسازید.

منوی فهرست پنجره‌ها از سبک منوی "WindowList" در صورت تعریف شدن استفاده می‌کند (به دستور MenuStyle مراجعه کنید). در غیر این صورت سبک منوی پیش‌فرض به کار گرفته می‌شود. برای بازگشت به سبک پیش‌فرض منو، دستور زیر را اجرا کنید:

DestroyMenuStyle WindowList

مثال:

MenuStyle WindowList SelectOnRelease Meta_L

پارامتر conditions می‌تواند برای حذف پنجره‌های خاصی از فهرست پنجره‌ها استفاده شود. برای جزئیات به دستور Current مراجعه کنید. فقط پنجره‌هایی که با شرایط داده‌شده مطابقت دارند در فهرست پنجره‌ها نمایش داده می‌شوند. گزینه‌های options زیر برعکس عمل می‌کنند: پنجره‌هایی که در غیر این صورت در فهرست پنجره‌ها قرار نمی‌گیرند، با آن‌ها قابل انتخاب هستند. پارامتر conditions همواره بر options اولویت دارد.

آرگومان‌های position همانند دستور Menu هستند. دستور double-click-action در صورتی فراخوانی می‌شود که کاربر هنگام باز کردن فهرست پنجره‌ها دوبار کلیک کند (یا اگر منو به یک کلید متصل است، آن کلید را سریعاً دوبار فشار دهد). اگر double-click-action از بیش از یک کلمه تشکیل شده باشد، باید داخل علامت نقل‌قول قرار گیرد.

دستور double-click-action برای تعریف یک پنجره پیش‌فرض زمانی که فهرست پنجره‌ها را مانند زیر به یک کلید (یا دکمه) متصل کرده‌اید مفید است:

# در اینجا یک تابع موجود را فراخوانی می‌کنیم،
# اما می‌تواند متفاوت باشد.
AddToFunc SwitchToWindow
+ I WindowListFunc
Key Tab A M WindowList "Prev SwitchToWindow"

با فشردن کلید Alt-Tab یک بار فهرست پنجره‌ها باز می‌شود و با دو بار فشردن آن، تمرکز بین پنجره فعلی و پنجره قبلی جابجا می‌گردد. با سبک منوی مناسب SelectOnRelease (به مثال بالا نگاه کنید)، به محض رها کردن کلید Alt پنجره انتخاب می‌شود.

گزینه‌های ارسال‌شده به WindowList با کاما از هم جدا می‌شوند و می‌توانند موارد زیر باشند: Geometry / NoGeometry / NoGeometryWithInfo، NoDeskNum، NoLayer، NoNumInDeskTitle، NoCurrentDeskTitle، MaxLabelWidth width، TitleForAllDesks، Function funcname، Desk desknum، CurrentDesk، NoIcons / Icons / OnlyIcons، NoNormal / Normal / OnlyNormal، NoSticky / Sticky / OnlySticky، NoStickyAcrossPages / StickyAcrossPages / OnlyStickyAcrossPages، NoStickyAcrossDesks / StickyAcrossDesks / OnlyStickyAcrossDesks، NoOnTop / OnTop / OnlyOnTop، NoOnBottom / OnBottom / OnlyOnBottom، Layer m [n]، UseSkipList / OnlySkipList، NoDeskSort، ReverseOrder، CurrentAtEnd، IconifiedAtEnd، UseIconName، Alphabetic / NotAlphabetic، SortByResource، SortByClass، NoHotkeys، SelectOnRelease، ShowPage، ShowPageX، ShowPageY، ShowScreen.

(توجه: normal به معنی غیرآیکون‌شده، غیرچسبان یا غیر در بالا بودن است)

با گزینه SortByResource پنجره‌ها ابتدا بر اساس کلاس منبع، سپس نام منبع و سپس نام پنجره (یا نام آیکون در صورت مشخص شدن UseIconName) به صورت الفبایی مرتب می‌شوند. گزینه ReverseOrder نیز ترتیب را برعکس می‌کند.

با گزینه SortByClass پنجره‌ها درست مانند SortByResource مرتب می‌شوند، اما نام منبع در نظر گرفته نمی‌شود و فقط کلاس منبع لحاظ می‌گردد.

گزینه SelectOnRelease دقیقاً مانند گزینه همنام در MenuStyle عمل می‌کند، اما بر گزینه تعیین‌شده در سبک منو اولویت دارد. به طور پیش‌فرض، این گزینه روی کلید چپ تنظیم شده است. برای خاموش کردن آن، از SelectOnRelease بدون نام کلید استفاده کنید.

اگر تابعی را از طریق Function funcname ارسال کنید، در زمینه پنجره انتخاب‌شده فراخوانی می‌شود:

AddToFunc IFunc I Iconify toggle
WindowList Function IFunc, NoSticky, CurrentDesk, NoIcons

اگر از گزینه Layer m [n] استفاده کنید، تنها پنجره‌های موجود در لایه‌های بین m و n نمایش داده می‌شوند. مقدار n به طور پیش‌فرض m است. با گزینه ReverseOrder ترتیب پنجره‌ها در فهرست معکوس می‌شود.

با گزینه CurrentAtEnd پنجره دارای تمرکز فعلی (در صورت وجود) در انتهای فهرست نشان داده می‌شود. این ویژگی عمدتاً برای شبیه‌سازی رفتار Alt-Tab در رابط‌های گرافیکی دیگر کاربرد دارد.

گزینه IconifiedAtEnd باعث می‌شود پنجره‌های آیکون‌شده به انتهای فهرست منتقل شوند.

گزینه NoGeometry باعث می‌شود fvwm ابعاد هندسی و جداکننده‌های نشان‌دهنده میزکارهای مختلف را نمایش ندهد. گزینه NoGeometryWithInfo ابعاد هندسی را حذف کرده اما اطلاعات میزکار را نگه می‌دارد و پنجره‌های آیکون‌شده را مشخص می‌کند. NoDeskNum مانع نمایش شماره میزکار در ابعاد هندسی یا قبل از عنوان پنجره با گزینه NoGeometryWithInfo می‌شود. NoNumInDeskTitle تنها در صورتی مفید است که نام میزکار با دستور DesktopName تعریف شده باشد و مانع نمایش شماره میزکار قبل از نام آن می‌شود. به طور پیش‌فرض، منوی WindowList دارای عنوانی است که میزکار فعلی یا میزکار انتخاب‌شده را در صورت استفاده از شرط Desk نشان می‌دهد. گزینه NoCurrentDeskTitle این عنوان را حذف می‌کند. گزینه TitleForAllDesks باعث می‌شود fvwm یک عنوان منو با نام و/یا شماره میزکار قبل از هر گروه پنجره روی همان میزکار اضافه کند. با NoLayer لایه پنجره نمایش داده نمی‌شود. گزینه‌های ShowPage، ShowPageX و ShowPageY نمایش صفحه پنجره را فعال می‌کنند. با ShowScreen نام نمایشگر پنجره نشان داده می‌شود.

گزینه MaxLabelWidth تعداد کاراکترهای قابل چاپ را به عنوان آرگومان دریافت می‌کند. بیش از این تعداد کاراکتر از نام پنجره قابل مشاهده نخواهد بود.

اگر بخواهید از WindowList به عنوان یک مدیریت‌کننده آیکون استفاده کنید، می‌توانید دستور زیر را فراخوانی کنید:

WindowList OnlyIcons, Sticky, OnTop, Geometry

(توجه: گزینه‌های Only اساساً همه گزینه‌های دیگر را خنثی می‌کنند، به جز OnlyListSkip که باعث می‌شود WindowList فقط پنجره‌های دارای سبک WindowListSkip را در نظر بگیرد.)

XSync

هنگامی که XSync فراخوانی می‌شود، از تابع X با همان نام برای ارسال تمامی درخواست‌های معلق X به سرور استفاده می‌گردد. این دستور تنها برای اشکال‌زدایی در نظر گرفته شده است.

XSynchronize [bool]

دستور XSynchronize کنترل می‌کند که آیا درخواست‌های X فوراً به سرور X ارسال شوند یا خیر. به طور معمول، درخواست‌ها در دسته‌های بزرگتر ارسال می‌شوند تا از ارتباطات غیرضروری جلوگیری شود. برای ارسال فوری درخواست‌ها از "True" به عنوان آرگومان استفاده کنید، برای غیرفعال کردن آن از "False" و برای جابجایی بین هر دو روش از "Toggle" استفاده نمایید یا آرگومان bool را حذف کنید. fvwm هنگامی که با گزینه --debug راه‌اندازی شود، به طور پیش‌فرض روی درخواست‌های همگام تنظیم می‌گردد. این دستور تنها برای اشکال‌زدایی کاربرد دارد.

+

برای ادامه افزودن به آخرین دکور، تابع یا منوی مشخص‌شده استفاده می‌شود. به مباحث مربوط به AddToDecor، AddToFunc و AddToMenu مراجعه کنید.

AnimatedMove x y [Warp]

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

GeometryWindow Hide | Show | Colorset n | Position x y | Screen S

پنجره نمایش موقعیت یا اندازه را که معمولاً هنگام جابجایی یا تغییر اندازه تعاملی پنجره نشان داده می‌شود، پیکربندی می‌کند. این دستور می‌تواند برای مخفی کردن، نمایش دادن، تغییر مجموعه رنگ، تغییر مکان یا تغییر صفحه نمایش پنجره ابعاد هندسی استفاده شود. می‌توان چندین گزینه را به طور همزمان با فاصله از هم تنظیم کرد. جزئیات هر گزینه در زیر شرح داده شده است.
GeometryWindow Hide [Never | Move | Resize]

پنجره ابعاد هندسی را پنهان یا خاموش می‌کند. اگر پارامترهای اختیاری Move یا Resize داده شوند، پنجره ابعاد هندسی تنها در حین عملیات مربوطه پنهان می‌شود. پارامتر Never نمایش پنجره ابعاد را مجدداً فعال می‌کند (معادل با Show).

GeometryWindow Show [Never | Move | Resize]

پنجره ابعاد هندسی را نمایش داده یا روشن می‌کند (معادل با Hide Never). اگر پارامترهای اختیاری Move یا Resize مشخص شوند، تنها در طول عملیات مربوطه پنجره ابعاد را نشان می‌دهد. پارامتر Never پنجره ابعاد را خاموش می‌کند (معادل با Hide).

GeometryWindow Colorset _cset_

مجموعه رنگ پنجره ابعاد را روی cset تنظیم می‌کند. از گزینه دقیق default برای cset استفاده کنید تا از مجموعه رنگ پیش‌فرض استفاده شود.

GeometryWindow Position [+|-]_x_[p] [+|-]_y_[p]

موقعیتی را که پنجره ابعاد در آن ظاهر می‌شود پیکربندی می‌کند. x و y مختصات نسبی به عنوان درصدی از اندازه صفحه نمایش هستند. اگر یک علامت '-' در ابتدا قرار گیرد، مختصات به ترتیب از سمت راست/پایین صفحه نمایش محاسبه می‌شوند. اگر یک 'p' به انتهای مختصات اضافه شود، به عنوان تعداد پیکسل‌ها از لبه مربوطه صفحه تفسیر می‌شوند. اگر هیچ آرگومان موقعیتی داده نشود، موقعیت پنجره ابعاد به حالت پیش‌فرض خود یعنی گوشه بالا سمت چپ یا در صورت شبیه‌سازی MWM به مرکز صفحه بازمی‌گردد.

GeometryWindow Screen _RANDRNAME_

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

مثال‌ها:

# قرار دادن پنجره ابعاد در مرکز صفحه
GeometryWindow Position 50 50
# قرار دادن پنجره ابعاد کنار پنل سمت راست
GeometryWindow Position -120p 0
# استفاده از مجموعه رنگ ۲ برای پنجره ابعاد
GeometryWindow Colorset 2
# نمایش پنجره ابعاد فقط در مانیتور اصلی
GeometryWindow Screen $[monitor.primary]
# مخفی کردن پنجره ابعاد
GeometryWindow Hide

Layer [arg1 arg2] | [default]

پنجره فعلی را در یک لایه جدید قرار می‌دهد. اگر arg1 غیر صفر باشد، لایه بعدی برابر با شماره لایه فعلی به علاوه arg1 خواهد بود. اگر arg1 صفر باشد، لایه جدید برابر با arg2 خواهد بود.

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

Lower

به کاربر امکان می‌دهد پنجره را پایین ببرد. توجه داشته باشید که این دستور پنجره را تنها در لایه خودش پایین می‌برد. برای بردن یک پنجره به پایین‌ترین نقطه مطلق، از دستورات زیر استفاده کنید:
AddToFunc lower-to-bottom
 + I Layer 0 0
 + I Lower

Move [options]

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

دستور Move بدون گزینه، یک جابجایی تعاملی را آغاز می‌کند. پنجره ممکن است به پنجره‌های دیگر و لبه‌های صفحه بچسبد (snap)، که این رفتار با سبک SnapAttraction قابل تنظیم است. جابجا کردن پنجره به لبه صفحه می‌تواند برای کشیدن پنجره به صفحات دیگر استفاده شود (برای اطلاعات بیشتر به EdgeScroll و سبک EdgeMoveDelay مراجعه کنید).

نگه داشتن کلید Alt چسبندگی را غیرفعال کرده و اجازه می‌دهد بدون هیچ تاخیری صفحات جابجا شوند. جابجایی تعاملی را می‌توان با کلید Escape یا هر دکمه ماوسی که برای قرار دادن پنجره تنظیم نشده لغو کرد. به طور پیش‌فرض دکمه ۲ ماوس برای لغو عملیات جابجایی تنظیم شده است. برای تغییر این مورد می‌توانید از دستور Mouse با زمینه ویژه 'P' برای Placement استفاده کنید.

شرط پنجره PlacedByButton می‌تواند برای بررسی اینکه آیا دکمه خاصی برای جای‌گذاری پنجره فشرده شده است یا خیر استفاده شود (به دستور Current مراجعه کنید).

اگر تک‌آرگومان pointer داده شود، گوشه بالا سمت چپ پنجره پیش از شروع جابجایی تعاملی به موقعیت نشانگر ماوس منتقل می‌شود؛ این قابلیت عمدتاً برای استفاده داخلی توسط ماژول‌هایی مانند FvwmPager در نظر گرفته شده است.

Move pointer

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

Move shuffle [options] _direction_(s)

جهت direction می‌تواند North/N/Up/U، East/E/Right/R، South/S/Down/D یا West/W/Left/L باشد. پنجره در جهت داده‌شده حرکت می‌کند تا زمانی که به پنجره دیگر یا مرز EwmhBaseStruts/صفحه نمایش برخورد کند. هنگامی که پنجره در مرز صفحه نمایش یا EwmhBaseStruts قرار دارد، در صورت وجود به مانیتور بعدی در جهت داده‌شده منتقل می‌شود. اگر پنجره خارج از ناحیه کاری فعلی باشد (بخشی از آن خارج از صفحه باشد)، به لبه ناحیه کاری حرکت می‌کند. پنجره‌ها به ناحیه کاری EWMH احترام می‌گذارند و در EwmhBaseStruts متوقف می‌شوند مگر اینکه گزینه ewmhiwa مشخص شده باشد. اگر چندین جهت داده شود، پنجره به ترتیب توالی ذکرشده در آن جهات حرکت می‌کند.

گزینه دقیق Warp نشانگر ماوس را به پنجره منتقل می‌کند. گزینه دقیق all_windows تمامی پنجره‌های روی همان مانیتور را به جای فقط پنجره‌های در مسیر حرکت در نظر می‌گیرد. این امکان جابجایی به مرز پنجره‌ای که در کنار آن قرار دارد را فراهم می‌کند. گزینه دقیق both_sides هم سمت نزدیک و هم سمت دور پنجره را در نظر می‌گیرد (به طور پیش‌فرض فقط سمت نزدیک در نظر گرفته می‌شود).

اگر گزینه دقیق snap همراه با نوع چسبندگی windows، icons یا same داده شود، پنجره تنها در صورت برخورد با پنجره دیگر، آیکون یا همان نوع متوقف می‌شود. اگر گزینه دقیق layers به همراه دو عدد صحیح برای مشخص کردن لایه min و لایه max داده شود، تنها پنجره‌های موجود در لایه‌های بین حداقل و حداکثر پنجره را متوقف می‌کنند. به عنوان مثال:

# لغزش پنجره به راست
Move shuffle Right
# لغزش به بالا، فقط در نظر گرفتن پنجره‌های لایه ۳
Move shuffle layers 3 3 Up
# لغزش به چپ سپس به بالا
Move shuffle Left Up
# لغزش به بالا سپس به چپ
Move shuffle Up Left

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

Move [screen _S_] [desk _N_] [w | m | v]_x_[p | w] \
     [w | m | v]_y_[p | w] [Warp] [ewmhiwa]

این دستور پنجره را به موقعیت x و y منتقل می‌کند. به طور پیش‌فرض، ناحیه کاری EWMH هر مانیتور رعایت می‌شود. این بدان معناست که اگر پنجره‌ای خارج از ناحیه کاری قرار گیرد، موقعیت پنجره به گونه‌ای تنظیم می‌شود که در ناحیه کاری صفحه‌ای که مرکز پنجره روی آن قرار دارد جای گیرد. اگر گزینه ewmhiwa داده شود، موقعیت پنجره ناحیه کاری را نادیده گرفته و تنظیم نخواهد شد (این گزینه برای خارج کردن پنجره‌ها از صفحه و کنترل کامل روی محل قرارگیری آن‌ها لازم است). اگر گزینه Warp داده شود، نشانگر به پنجره منتقل می‌گردد.

اگر گزینه screen به همراه نام صفحه RandR به نام S مشخص شود، مختصات به عنوان مختصات نسبی به صفحه داده‌شده تفسیر می‌شوند. عرض و ارتفاع آن صفحه به جای ابعاد کل نمایشگر در محاسبات استفاده می‌شوند. پارامتر screen همانند دستور MoveToScreen تفسیر می‌شود.

اگر گزینه desk به همراه شماره میزکار N مشخص شود، پنجره پس از جابجایی روی میزکار مشخص‌شده قرار می‌گیرد. این کار دو هدف دارد: اول اینکه می‌توانید موقعیت و میزکار یک پنجره را در یک دستور جابجا کنید. دوم، هنگامی که پنجره‌ای بین مانیتورها جابجا می‌شود، میزکار آن به‌روزرسانی می‌شود تا مشابه مانیتور جدید باشد. این گزینه می‌تواند با تعیین میزکار نهایی، آن رفتار را بازنویسی کند.

آرگومان‌های موقعیتی x و y می‌توانند موقعیت مطلق یا نسبی را از چپ/بالا (مقادیر مثبت) یا راست/پایین (مقادیر منفی) کل صفحه یا صفحه مشخص‌شده تعیین کنند. به طور پیش‌فرض، مقدار عددی به عنوان درصدی از عرض/ارتفاع صفحه تفسیر می‌شود، اما پسوند 'p' تفسیر را به پیکسل تغییر می‌دهد و پسوند 'w' به معنای درصد عرض/ارتفاع پنجره است. برای جابجایی پنجره نسبت به موقعیت فعلی آن، پیشوند 'w' (مخفف window) را قبل از مقدار x و/یا y اضافه کنید. برای جابجایی پنجره نسبت به مکان فعلی نشانگر ماوس، پیشوند 'm' (مخفف mouse) را اضافه کنید. برای جابجایی نسبت به مختصات صفحه مجازی، پیشوند 'v' (مخفف virtual) را اضافه کنید. برای دست‌نخورده باقی ماندن هر یک از مختصات، می‌توان "keep" را به جای x یا y مشخص کرد.

برای کاربردهای پیشرفته، آرگومان‌های x و y را می‌توان چندین بار استفاده کرد، اما بدون پیشوند 'm' یا 'w'.

مثال‌های ساده:

# جابجایی تعاملی
Mouse 1 T A Move
# انتقال پنجره به نحوی که گوشه بالا چپ در (10%,10%) باشد
Mouse 2 T A Move 10 10
# انتقال گوشه بالا چپ به (10px, 10px)
Mouse 3 T A Move 10p 10p

مثال‌های پیچیده‌تر:

# انتقال پنجره به گونه‌ای که گوشه پایین راست در پایین راست صفحه باشد
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

همچنین به دستور AnimatedMove مراجعه کنید.

MoveToDesk [prev | arg1 [arg2] [min max]]

پنجره انتخاب‌شده را به میزکار دیگری منتقل می‌کند. آرگومان‌ها مشابه دستور GotoDesk هستند. بدون هیچ آرگومانی، پنجره به میزکار فعلی منتقل می‌شود.

MoveThreshold [pixels]

هنگامی که کاربر دکمه ماوس را روی یک شیء فشار می‌دهد، fvwm منتظر می‌ماند تا ببیند آیا این عمل یک کلیک است یا کشیدن (drag). اگر ماوس بیش از pixels پیکسل حرکت کند، عمل کشیدن در نظر گرفته می‌شود.

در نسخه‌های قبلی fvwm مقدار pixels روی ۳ پیکسل ثابت بود که اکنون نیز مقدار پیش‌فرض است. اگر مقدار pixels منفی باشد یا حذف شود، مقدار پیش‌فرض بازیابی می‌شود.

MoveToPage [options] [x[p | w] y[p | w]] | [prev]

پنجره انتخاب‌شده را به صفحه دیگری (x,y) منتقل می‌کند. صفحه بالا سمت چپ (0,0) است، صفحه بالا سمت راست (M,0) است که در آن M یک واحد کمتر از تعداد صفحات افقی فعلی مشخص‌شده در دستور DesktopSize است. به طور مشابه صفحه پایین سمت چپ (0,N) و صفحه پایین سمت راست (M,N) است. شماره صفحات منفی به صفحات از راست‌ترین/پایین‌ترین صفحه اشاره دارند. اگر x و y داده نشوند، پنجره به صفحه فعلی منتقل می‌شود (پنجره‌ای که تمرکز دارد اما خارج از صفحه است را می‌توان با این روش بازیابی کرد). انتقال پنجره‌ها به صفحه‌ای نسبت به صفحه فعلی را می‌توان با افزودن پسوند 'p' پس از یک یا هر دو آرگومان عددی انجام داد. برای انتقال پنجره نسبت به مکان فعلی آن، یک پسوند 'w' اضافه کنید. برای انتقال پنجره به صفحه قبلی، از prev به عنوان تک‌آرگومان استفاده کنید.

پنجره‌ها معمولاً فراتر از مرزهای میزکار جابجا نمی‌شوند.

گزینه‌های احتمالی wrapx و wrapy برای چرخش به دور مختصات x یا y هنگام جابجایی پنجره فراتر از مرز میزکار هستند. به عنوان مثال، با wrapx، وقتی پنجره از لبه سمت راست میزکار عبور می‌کند، در لبه سمت چپ دوباره ظاهر می‌شود. گزینه‌های nodesklimitx و nodesklimity امکان جابجایی پنجره‌ها فراتر از مرزهای میزکار در جهت x و y را فراهم می‌کنند (که گزینه‌های wrapx و wrapy را غیرفعال می‌سازد).

مثال‌ها:

# انتقال پنجره به صفحه (2,3)
MoveToPage 2 3
# انتقال پنجره به پایین‌ترین و راست‌ترین صفحه
MoveToPage -1 -1
# انتقال پنجره به آخرین صفحه بازدیدشده
MoveToPage prev
# انتقال پنجره دو صفحه به راست و یک صفحه به بالا، با چرخش در مرزهای میزکار
MoveToPage wrapx wrapy +2p -1p

MoveToScreen [screen]

پنجره انتخاب‌شده را به صفحه نمایش دیگری منتقل می‌کند. آرگومان screen باید یک نام معتبر RandR باشد.

OpaqueMoveSize [percentage]

حداکثر اندازه پنجره‌ای را که باید برای آن از جابجایی مات (کامل) استفاده شود به fvwm اعلام می‌کند. این مقدار به صورت درصدی از کل مساحت صفحه نمایش است (ممکن است بیشتر از ۱۰۰ باشد). با دستور:
OpaqueMoveSize 0

تمام پنجره‌ها با استفاده از طرح خطی سیمی (rubber-band) سنتی جابجا می‌شوند. با دستور:

OpaqueMoveSize unlimited

یا اگر درصد منفی داده شود، تمام پنجره‌ها به صورت توپر و مات جابجا می‌شوند. حالت پیش‌فرض:

OpaqueMoveSize 5

است که اجازه می‌دهد پنجره‌های کوچک به صورت مات جابجا شوند اما پنجره‌های بزرگ به صورت کادر سیمی حرکت کنند. اگر percentage حذف شود یا نامعتبر باشد، مقدار پیش‌فرض تنظیم می‌شود. برای تغییر اندازه پنجره‌ها به صورت مات می‌توانید از سبک ResizeOpaque استفاده کنید. به دستور Style مراجعه کنید.

PlaceAgain [Anim] [Icon]

باعث می‌شود موقعیت پنجره فعلی مجدداً با استفاده از منطق اولیه جای‌گذاری پنجره محاسبه شود. پنجره به جایی منتقل می‌شود که اگر پنجره جدیدی بود که تازه ظاهر شده بود در آنجا قرار می‌گرفت. این دستور بیشتر با جای‌گذاری Smart یا Clever (ReallySmart) کاربرد دارد. با آرگومان اختیاری Anim از یک جابجایی متحرک برای قرار دادن پنجره در موقعیت جدید استفاده می‌شود. با گزینه اضافی Icon، به جای پنجره، آیکون مجدداً جای‌گذاری می‌شود.

Raise

به کاربر امکان می‌دهد پنجره را بالا بیاورد. توجه داشته باشید که این دستور پنجره را تنها در لایه خودش بالا می‌آورد. برای آوردن یک پنجره به بالاترین نقطه مطلق، از دستورات زیر استفاده کنید:
AddToFunc raise-to-top
 + I Layer 0 ontop
 + I Raise

که در آن ontop بالاترین لایه استفاده‌شده در تنظیمات شما است.

RaiseLower

یک پنجره را به صورت متناوب بالا می‌آورد و پایین می‌برد. اگر پنجره توسط هر پنجره دیگری پوشانده شده باشد (به جز پنجره‌های گذرای خودش زمانی که از سبک RaiseTransient استفاده می‌شود؛ به دستور Style مراجعه کنید) بالا آورده می‌شود، در غیر این صورت پایین برده می‌شود.

Resize [[frame] [direction dir] [warptoborder automatic] [fixeddirection] width[p | c | wa | da] height[p | c]]

امکان تغییر اندازه یک پنجره را فراهم می‌کند. اگر از درون یک پنجره یا حاشیه آن فراخوانی شود، اندازه آن پنجره تغییر می‌کند. اگر از پنجره ریشه فراخوانی شود، کاربر می‌تواند پنجره هدف را انتخاب کند.

دستور Resize بدون گزینه، یک تغییر اندازه تعاملی را آغاز می‌کند.

اگر سبک EdgeResizeDelay تنظیم شده باشد یا کلید Alt فشرده نگه داشته شود، اندازه پنجره می‌تواند فراتر از لبه صفحه تغییر کند.

عملیات را می‌توان با کلید Escape یا فشردن هر دکمه ماوس (به جز دکمه ۱ که آن را تایید می‌کند) لغو کرد.

اگر آرگومان‌های اختیاری width و height ارائه شوند، اندازه پنجره به ابعاد width در height تغییر می‌یابد. واحدهای width و height به صورت درصد صفحه هستند، مگر اینکه حرف 'p' به یک یا هر دو مختصات اضافه شود که در این صورت بر حسب پیکسل مشخص می‌شوند. با پسوند 'c' واحد تعریف‌شده توسط برنامه کلاینت استفاده می‌شود. با پسوند 'wa' مقدار درصدی از عرض یا ارتفاع ناحیه کاری EWMH است و با پسوند 'da' درصدی از عرض یا ارتفاع ناحیه کاری پویای EWMH است. بنابراین می‌توانید بنویسید:

Resize 80c 24c

تا یک پنجره ترمینال را دقیقاً به اندازه ۸۰ در ۲۴ کاراکتر تنظیم کنید.

اگر قبل از width یا height پیشوند حرف 'w' قرار گیرد، اندازه به عنوان یک مقدار مطلق در نظر گرفته نمی‌شود بلکه به اندازه فعلی پنجره اضافه می‌گردد. مثال:

# بزرگ کردن پنجره به اندازه یک خط
Resize keep w+1c

هر دو مقدار width و height می‌توانند منفی باشند. در این حالت اندازه جدید برابر با اندازه صفحه منهای مقدار داده‌شده خواهد بود. اگر هر یک از مقادیر "keep" باشد، بعد متناظر پنجره دست‌نخورده باقی می‌ماند. اندازه جدید اندازه پنجره کلاینت است، بنابراین دستور:

Resize 100 100

ممکن است پنجره را بزرگتر از صفحه نمایش کند. برای اینکه اندازه جدید بر اساس اندازه کل پنجره fvwm باشد، گزینه frame را پس از دستور اضافه کنید. گزینه‌های fixeddirection، direction و warptoborder تنها در عملیات جابجایی تعاملی استفاده می‌شوند. با fixeddirection همان حاشیه جابجا می‌شود حتی اگر نشانگر از حاشیه مخالف عبور کند. گزینه direction باید با نام یک جهت مانند "NorthWest"، "South" یا "East" دنبال شود. تغییر اندازه بلافاصله شروع می‌شود، حتی اگر نشانگر روی حاشیه نباشد. اگر گزینه ویژه automatic به عنوان آرگومان جهت داده شود، جهت تغییر اندازه بر اساس موقعیت نشانگر در پنجره محاسبه می‌شود. اگر نشانگر در وسط پنجره باشد، هیچ جهتی محاسبه نمی‌شود. گزینه warptoborder می‌تواند برای انتقال نشانگر به جهت مشخص‌شده استفاده شود. همچنین اگر تغییر اندازه با کلیک روی حاشیه پنجره آغاز شود، نشانگر به لبه بیرونی حاشیه منتقل می‌شود.

AddToFunc ResizeSE I Resize Direction SE
Mouse 3 A M ResizeSE

Resize [bottomright | br x y]

اگر کلیدواژه bottomright یا به اختصار br بعد از نام دستور بیاید، یک نحو جایگزین استفاده می‌شود. در این حالت آرگومان‌های x و y موقعیت مورد نظر گوشه پایین سمت راست پنجره را مشخص می‌کنند. آن‌ها دقیقاً مانند آرگومان‌های x و y دستور Move تفسیر می‌شوند. در واقع هر یک از گزینه‌های پذیرفته‌شده توسط دستور Move را می‌توان در اینجا نیز استفاده کرد.

ResizeMaximize [resize-arguments]

اثرات Resize و Maximize را در یک دستور واحد ترکیب می‌کند. هنگامی که روی یک پنجره بیشینه‌شده استفاده می‌شود، اندازه پنجره تغییر کرده و پس از آن همچنان در وضعیت بیشینه باقی می‌ماند. هنگامی که روی یک پنجره غیربیشینه استفاده می‌شود، اندازه پنجره تغییر کرده و پس از آن در وضعیت بیشینه قرار می‌گیرد. این دستور زمانی مفید است که کاربر بخواهد اندازه پنجره را موقتاً تغییر دهد و سپس به ابعاد هندسی اولیه بازگردد. آرگومان‌های resize-arguments همانند دستور Resize هستند.

ResizeMove resize-arguments move-arguments

این دستور همان کار دستورات Resize و Move را انجام می‌دهد، اما در یک فراخوانی واحد که از نظر بصری پرش کمتری دارد. آرگومان‌های resize-arguments دقیقاً همان آرگومان‌های دستور Resize هستند و move-arguments دقیقاً همان آرگومان‌های دستور Move می‌باشند به جز گزینه pointer که توسط دستور ResizeMove پشتیبانی نمی‌شود.

مثال‌ها:

# انتقال پنجره به گوشه بالا سمت چپ و پوشش بیشتر صفحه
ResizeMove -10p -20p 0 0
# گسترش پنجره دارای تمرکز به سمت بالای صفحه
Current Resize keep w+$[w.y]p keep 0

توجه: اگر از گزینه bottomright از دستور Resize استفاده شود، ممکن است fvwm نتواند دستور را به درستی تجزیه کند.

ResizeMoveMaximize resize-arguments move-arguments

اثرات ResizeMove و Maximize را در یک دستور واحد ترکیب می‌کند. هنگامی که روی یک پنجره بیشینه‌شده استفاده می‌شود، اندازه پنجره تغییر یافته، جابجا شده و همچنان در وضعیت بیشینه باقی می‌ماند. هنگامی که روی یک پنجره غیربیشینه استفاده شود، اندازه پنجره تغییر یافته و در وضعیت بیشینه قرار می‌گیرد. این دستور برای تغییر موقت اندازه و موقعیت پنجره و سپس بازگشت به هندسه اولیه مفید است.

RestackTransients

این دستور پنجره‌های گذرای (transient) یک پنجره را در ترتیب چیدمان (stacking order) نزدیک به آن بازآرایی می‌کند، گویی پنجره تازه پایین رفته و سپس بالا آمده است. موقعیت خود پنجره تغییر نمی‌کند. تنها پنجره‌هایی که از سبک RaiseTransient یا LowerTransient استفاده می‌کنند تحت تأثیر قرار می‌گیرند. هنگامی که RestackTransients روی یک پنجره گذرا با تنظیم سبک StackTransientParent استفاده شود، به پنجره والد هدایت می‌گردد.

SetAnimation milliseconds-delay [fractions-to-move-list]

زمان بین فریم‌ها و فهرست افست‌های کسری را برای سفارشی‌سازی جابجایی‌های متحرک دستور AnimatedMove و انیمیشن منوها تنظیم می‌کند (اگر سبک منو روی متحرک تنظیم شده باشد؛ به دستور MenuStyle مراجعه کنید). اگر fractions-to-move-list حذف شود، تنها زمان بین فریم‌ها تغییر می‌کند. این فهرست مشخص می‌کند که پنجره در هر فریم متوالی چه مقدار از تفاوت بین مکان شروع و مکان پایان را باید طی کند. به عنوان مثال:
SetAnimation 10 -.01 0 .01 .03 .08 .18 .3 \
.45 .6 .75 .85 .90 .94 .97 .99 1.0

تاخیر بین فریم‌ها را روی ۱۰ میلی‌ثانیه تنظیم می‌کند و موقعیت‌های ۱۶ فریم حرکت انیمیشن را تعیین می‌نماید. مقادیر منفی مجاز هستند و به ویژه می‌توان از آن‌ها برای ایجاد حرکتی شبیه به کارتون استفاده کرد، به این صورت که پنجره ابتدا کمی در جهت مخالف حرکت اصلی جابجا شود. تنظیمات بالا حالت پیش‌فرض هستند.

XorPixmap [pixmap]

نگاره‌پیکسلی (pixmap) را انتخاب می‌کند که بیت‌ها با آن هنگام جابجایی یا تغییر اندازه سیمی (rubber-band) پنجره XOR می‌شوند. این کار شانس بیشتری برای قابل مشاهده کردن کادر سیمی در صورتی که XorValue نتایج خوبی ندهد فراهم می‌کند. یک نمونه pixmap به نام resize.rainbow.xpm همراه با بسته آیکون‌ها ارائه شده است. برای خاموش کردن مجدد XorPixmap از دستور XorValue استفاده کنید یا آرگومان pixmap را حذف نمایید.

XorValue [number]

مقداری را که بیت‌ها با آن هنگام جابجایی یا تغییر اندازه سیمی پنجره XOR می‌شوند تغییر می‌دهد. مقادیر معتبر از صفر تا حداکثر مقدار یک عدد صحیح بدون علامت (unsigned long) در سیستم شما متغیر است. تنظیم این مقدار یک فرآیند آزمون و خطاست. مقدار پیش‌فرض 0 تلاش می‌کند مقداری را بیابد که کنتراست خوبی با سیاه و سفید ایجاد کند. اگر number داده‌شده حذف شود یا نامعتبر باشد، از مقدار پیش‌فرض استفاده می‌شود.

CursorBarrier [destroy] [options] [left top right bottom]

مانع نشانگر (cursor barrier) کادری است که نشانگر ماوس نمی‌تواند به بیرون از آن حرکت کند (مگر اینکه با CursorMove یا WarpToWindow پرش داده شود). مقادیر left، top، right و bottom فاصله درصدی کادر را از هر یک از لبه‌های مربوطه میزکار مشخص می‌کنند. اگر مقادیر با p خاتمه یابند، به عنوان مقادیر پیکسلی تفسیر می‌شوند. اگر گزینه coords داده شود، مقادیر به عنوان مختصات چپ/بالا و راست/پایین گوشه‌های کادر تفسیر می‌شوند. اگر گزینه screen RandRname داده شود، موقعیت‌ها نسبت به مانیتور مشخص‌شده محاسبه می‌شوند. از screen c برای قرار دادن مانع روی مانیتور فعلی استفاده کنید.

با فراخوانی مکرر CursorBarrier می‌توان چندین مانع ایجاد کرد. این کار امکان ایجاد چندین ناحیه برای محدود کردن نشانگر (مانند هر مانیتور در یک چیدمان چندمانیتوره) را فراهم می‌کند، سپس با استفاده از CursorMove یا WarpToWindow نشانگر را بین موانع جابجا کنید. اگر دستور destroy گنجانده شود، تمام موانع از بین می‌روند و حرکت آزادانه ماوس مجدداً امکان‌پذیر می‌شود. اگر بعد از destroy یک عدد صحیح N بیاید، تنها همان مانع حذف می‌شود (موانع به ترتیب ایجادشان از 0 شماره‌گذاری می‌شوند). اگر عدد صحیح منفی باشد، به صورت معکوس شمارش می‌شود، مثلاً "-1" جدیدترین مانع ایجادشده، "-2" دومین مانع جدید و غیره است. هنگامی که یک مانع حذف می‌شود، تمام موانع پس از آن مجدداً شماره‌گذاری می‌شوند. در عمل بهتر است از destroy -1 برای حذف جدیدترین مانع بدون تأثیر بر موانع قبلی استفاده شود.

به طور پیش‌فرض، کلید میانبر ctrl+shift+D تمام موانع نشانگر را با فراخوانی CursorBarrier destroy از بین می‌برد.

چند نمونه مثال:

# مانعی با ۱۵٪ فاصله از چپ/راست و ۱۰٪ از بالا/پایین
CursorBarrier 15 10 15 10
# مانعی برای محدود کردن ماوس به مانیتور فعلی
CursorBarrier screen c
# مانعی برای محدود کردن ماوس به یک پنجره انتخاب‌شده
Pick CursorBarrier coords $[w.x]p $[w.y]p \
    $[math.+.$[w.x],$[w.width]]p $[math.+.$[w.y],$[w.height]]p
# حذف تمامی موانع
CursorBarrier destroy

توجه داشته باشید که اگر به محدودیت CURSOR_BARRIER برسید، تمام موانع تعریف‌شده حذف می‌شوند. در عمل بعید است چنین اتفاقی بیفتد. اگر رخ دهد، پیامی در لاگ‌های اشکال‌زدایی fvwm3 چاپ می‌شود.

دستور CursorBarrier تنها در صورتی کار می‌کند که fvwm با افزونه XFixes کامپایل شده باشد.

CursorMove [screen RANDRNAME] horizontal[p] vertical[p]

بدون گزینه screen، دستور CursorMove نشانگر ماوس را به اندازه فاصله horizontal و فاصله vertical از موقعیت فعلی‌اش جابجا می‌کند. مقادیر یا به صورت درصدی از اندازه میزکار مجازی بیان می‌شوند، یا با افزودن پسوند 'p' به مقدار، به صورت فاصله پیکسلی تفسیر می‌گردند. هر یک یا هر دوی مقادیر می‌توانند منفی باشند. برای مثال:
# جابجایی به اندازه یک صفحه کامل به پایین و راست
CursorMove 100 100
# جابجایی دو صفحه کامل به پایین
CursorMove 0 200
# جابجایی نیم صفحه به راست و یک‌چهارم صفحه به بالا
CursorMove 50 -25
# جابجایی ۱۰۰ پیکسل به چپ و ۵۰ پیکسل به پایین
CursorMove -100p 50p

اگر گزینه screen به همراه یک نام معتبر مانیتور RandR اضافه شود، CursorMove نشانگر را به موقعیت مطلقی که با آرگومان‌ها مشخص شده منتقل می‌کند (شروع از گوشه بالا سمت چپ)، که این مقادیر یا درصدی از اندازه مانیتور هستند یا مکانی مطلق با پسوند 'p'. به عنوان مثال:

# جابجایی نشانگر به مرکز مانیتور DP-1
CursorMove screen DP-1 50 50
# جابجایی نشانگر به مکان دقیق (400, 200) در مانیتور DP-2
CursorMove screen DP-2 400p 200p

هنگام جابجایی به یک screen مشخص، مقادیر horizontal و vertical همیشه به گونه‌ای منتقل می‌شوند که درون صفحه فعلی مانیتور مشخص‌شده قرار گیرند. برای مثال '50'، '150' و '-150' همگی در مرکز مانیتور خواهند بود و صفحه مانیتور را تغییر نخواهند داد. از GotoPage برای تغییر صفحه یک مانیتور مشخص استفاده کنید. از مقادیر منفی می‌توان برای تعیین فاصله از گوشه راست/پایین مانیتور استفاده کرد.

دستور CursorMove تنها می‌تواند نشانگر را نسبت به موقعیت فعلی‌اش یا به یک موقعیت مطلق روی یک مانیتور مشخص جابجا کند. برای جابجایی نشانگر نسبت به یک پنجره، از WarpToWindow استفاده کنید.

FlipFocus [NoWarp]

یک دستور Focus را اجرا می‌کند، درست مانند اینکه کاربر از نشانگر برای انتخاب پنجره استفاده کرده باشد. این دستور ترتیب WindowList را به همان روشی که کلیک کردن روی یک پنجره برای فوکوس دادن انجام می‌دهد تغییر می‌دهد؛ یعنی پنجره هدف از WindowList برداشته شده و در ابتدا قرار می‌گیرد. استفاده از این دستور همراه با دستور Direction و در تابعی که از WindowList فراخوانی می‌شود پیشنهاد می‌گردد.

Focus [NoWarp]

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

هنگامی که آرگومان NoWarp داده شود، دستور Focus نمی‌تواند تمرکز صفحه‌کلید را به پنجره‌های موجود روی میزکارهای دیگر منتقل کند.

برای بالا آوردن و/یا پرش نشانگر به یک پنجره همراه با Focus یا FlipFocus، از یک تابع مانند زیر استفاده کنید:

AddToFunc SelectWindow
+ I Focus
+ I Iconify false
+ I Raise
+ I WarpToWindow 50 8p

WarpToWindow [!raise | raise] x[p] y[p]

نشانگر ماوس را به پنجره مرتبط پرش داده و آن را بالا می‌آورد (مگر اینکه گزینه !raise وجود داشته باشد). پارامترهای x و y به طور پیش‌فرض درصدی از پنجره به سمت پایین و داخل از گوشه بالا سمت چپ هستند (یا تعداد پیکسل به سمت پایین و داخل در صورتی که 'p' به اعداد اضافه شود). اگر عددی منفی باشد، از لبه مخالف استفاده شده و جهت معکوس می‌گردد. این دستور با پنجره‌هایی که توسط fvwm مدیریت نمی‌شوند نیز کار می‌کند. در این حالت اگر پنجره قابل مشاهده نباشد، fvwm آن را به روی صفحه نمی‌آورد. به عنوان مثال می‌توان نشانگر را به مرکز پنجره ریشه پرش داد:
WindowId root WarpToWindow 50 50

Close

اگر پنجره از پروتکل حذف پنجره (delete window protocol) پشتیبانی کند، پیامی به پنجره ارسال می‌شود و از آن می‌خواهد تا با ظرافت خود را ببندد. اگر پنجره پروتکل حذف پنجره را درک نکند، همانند دستور Destroy نابود می‌شود. توجه: اگر پنجره پروتکل حذف پنجره را بپذیرد اما در پاسخ خود را نبندد، پنجره حذف نخواهد شد.

Delete

پیامی به پنجره ارسال می‌کند و از آن می‌خواهد که خود را ببندد، که اغلب باعث خروج برنامه می‌شود.

Destroy

پنجره برنامه را نابود می‌کند، که معمولاً باعث کرش کردن و بسته شدن ناگهانی برنامه می‌شود.

Iconify [bool]

اگر پنجره آیکون نشده باشد، آن را آیکون می‌کند و اگر قبلاً آیکون شده باشد، آن را از حالت آیکون خارج می‌سازد. آرگومان اختیاری bool یک مقدار بولی است. مقدار "True" به این معنی است که تنها آیکون کردن مجاز است، در حالی که "False" خروج از حالت آیکون را اجبار می‌کند. استفاده از "toggle" وضعیت را بین آیکون‌شده و غیرآیکون جابجا می‌کند.

چندین گزینه در دستور Style وجود دارند که بر ظاهر و رفتار آیکون‌ها تأثیر می‌گذارند (مانند StickyIcon و NoIcon).

برای سازگاری با گذشته، آرگومان اختیاری می‌تواند به جای "True" یک عدد مثبت یا به جای "False" یک عدد منفی باشد. توجه داشته باشید که این نحو منسوخ شده است و در آینده حذف خواهد شد.

Maximize [flags] [bool | forget] [horizontal[p]] [vertical[p]]

بدون آرگومان‌های اختیاری (یا اگر بیت bool دارای مقدار "toggle" باشد) دستور Maximize باعث می‌شود پنجره به صورت متناوب بین اندازه تمام‌صفحه و اندازه عادی جابجا شود. برای اجبار پنجره به وضعیت بیشینه‌شده (یا عادی)، می‌توانید از مقدار "True" یا "False" برای آرگومان bool استفاده کنید.

تنها با پارامتر "forget"، پنجره بیشینه‌شده به وضعیت عادی بازمی‌گردد اما اندازه بیشینه‌شده فعلی خود را حفظ می‌کند. این ویژگی در ترکیب با دستورات ResizeMaximize و ResizeMoveMaximize مفید است. اگر پنجره بیشینه نباشد، هیچ اتفاقی نمی‌افتد.

با آرگومان‌های اختیاری horizontal و vertical که بر حسب درصدی از تمام‌صفحه بیان می‌شوند، کاربر می‌تواند اندازه جدید پنجره را کنترل کند. پسوند اختیاری 'p' می‌تواند برای نشان دادن پیکسل به جای درصد استفاده شود. اگر horizontal بزرگتر از 0 باشد، بعد افقی پنجره روی horizontal*عرض_صفحه/100 تنظیم می‌شود. اگر مقدار کوچکتر از 0 باشد، از عرض صفحه کسر می‌شود، یعنی -25 همان 75 است. اگر horizontal برابر با "grow" باشد، پنجره تا رسیدن به هر مانعی در فضای موجود افقی گسترش می‌یابد. تغییر اندازه عمودی نیز به همین صورت است. اگر هر دو مقدار افقی و عمودی "grow" باشند، پنجره ابتدا به صورت عمودی و سپس به صورت افقی گسترش می‌یابد. به جای آرگومان "grow" افقی، می‌توان از "growleft" یا "growright" و به جای مقدار عمودی از "growup" یا "growdown" استفاده کرد.

آرگومان اختیاری flags فهرستی از کلیدواژه‌های جداشده با فاصله است: fullscreen، ewmhiwa، growonwindowlayer، growonlayers، keepgrowing، all_windows، both_sides و screen. پرچم fullscreen در صورت تنظیم بودن نشانه مناسب EWMH باعث تمام‌صفحه شدن پنجره می‌شود. گزینه ewmhiwa باعث می‌شود fvwm ناحیه کاری EWMH را نادیده بگیرد. گزینه growonwindowlayer باعث می‌شود روش‌های مختلف گسترش پنجره، پنجره‌های موجود در لایه‌ای غیر از لایه پنجره بیشینه‌شده را نادیده بگیرند. گزینه growonlayers باید دو آرگومان عدد صحیح داشته باشد: اولی حداقل لایه و دومی حداکثر لایه مورد استفاده است. پنجره‌های خارج از این محدوده نادیده گرفته می‌شوند. مقدار منفی به عنوان آرگومان اول یا دوم به معنای عدم وجود حداقل یا حداکثر لایه است. گزینه all_windows تمامی پنجره‌های روی همان مانیتور را در جهتی که پنجره در حال گسترش است در نظر می‌گیرد. گزینه both_sides هر دو سمت پنجره‌های دیگر را لحاظ می‌کند. گزینه keepgrowing به پنجره اجازه می‌دهد تا فراتر از هر مرز پنجره‌ای که در حال حاضر با آن در تماس است رشد کند تا زمانی که به مرز پنجره نزدیک بعدی برسد. گزینه screen باید آرگومانی داشته باشد که صفحه نمایش مورد نظر را مشخص کند.

چند مثال: افزودن یک دکمه در نوار عنوان برای تغییر اندازه پنجره به ارتفاع کامل عمودی صفحه:

Mouse 0 4 A Maximize 0 100

دستور زیر باعث می‌شود پنجره‌ها به عرض کامل کشیده شوند:

Mouse 0 4 A Maximize 100 0

دستور زیر پنجره‌ای با اندازه نصف صفحه در هر دو جهت ایجاد می‌کند:

Mouse 0 4 A Maximize 50 50

برای گسترش افقی پنجره تا برخورد با پنجره‌ای دیگر:

Mouse 0 4 A Maximize 0 grow

برای گسترش پنجره تا برخورد با هر پنجره دیگری در همان لایه یا لایه‌ای بالاتر:

Mouse 0 4 A Maximize growonlayers $[w.layer] -1 grow grow

برای گسترش پنجره به گونه‌ای که ۶۰ پیکسل پایین صفحه خالی بماند:

Mouse 0 4 A Maximize 100 -60p

از مقادیر بزرگتر از ۱۰۰ باید با احتیاط استفاده شود.

Refresh

باعث می‌شود تمامی پنجره‌های روی صفحه مجدداً خود را ترسیم کنند. تمام به‌روزرسانی‌های معلق سبک‌ها و جلوه‌های ظاهری همه پنجره‌ها بلافاصله اعمال می‌شوند (مثلاً اگر دستورات Style یا TitleStyle درون یک تابع fvwm صادر شده باشند).

RefreshWindow

باعث می‌شود پنجره انتخاب‌شده مجدداً خود را ترسیم کند. تمام به‌روزرسانی‌های معلق سبک و ظاهر پنجره بلافاصله اعمال می‌شوند.

Stick [bool]

اگر آرگومان bool خالی باشد یا "toggle"، دستور Stick پنجره را در صورت غیرچسبان بودن چسبان می‌کند و بالعکس. برای چسبان کردن پنجره صرف‌نظر از وضعیت فعلی آن، آرگومان bool باید "True" باشد. برای غیرچسبان کردن آن از "False" استفاده کنید.

StickAcrossPages [bool]

مشابه Stick عمل می‌کند اما پنجره را تنها در میان صفحات (pages) چسبان می‌کند، نه در میان میزکارها (desks).

StickAcrossDesks [bool]

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

WindowShade [bool] | [[ShadeAgain] direction]

ویژگی کرکره‌ای شدن پنجره (Window Shade) را برای پنجره‌های دارای عنوان جابجا می‌کند. پنجره‌ها در وضعیت جمع‌شده تنها نوار عنوان را نمایش می‌دهند. اگر bool داده نشود یا "toggle" باشد، وضعیت کرکره‌ای جابجا می‌شود. اگر bool مقدار "True" باشد، پنجره به وضعیت جمع‌شده اجبار می‌شود. اگر "False" باشد، به حالت عادی بازمی‌گردد. برای اجبار به جمع شدن در یک جهت خاص، می‌توان از آرگومان direction استفاده کرد. هر یک از رشته‌های "North"، "South"، "West"، "East"، "NorthWest"، "NorthEast"، "SouthWest"، "SouthEast" یا "Last" قابل استفاده هستند. جهت را می‌توان با حروف اختصاری معمول مانند "N" و "NW" خلاصه کرد. استفاده از جهت روی پنجره‌ای که قبلاً جمع شده است، آن را باز می‌کند. برای جمع کردن آن در جهتی دیگر، از گزینه ShadeAgain استفاده کنید. جهت Last پنجره را در جهتی که آخرین بار جمع شده بود جمع می‌کند. پنجره‌های بدون عنوان نیز می‌توانند کرکره‌ای شوند. لطفاً به گزینه‌های WindowShadeSteps، WindowShadeShrinks، WindowShadeScrolls، WindowShadeLazy، WindowShadeAlwaysLazy و WindowShadeBusy از دستور Style مراجعه کنید. مثال‌ها:
Style * WindowShadeShrinks, WindowShadeSteps 20, \
  WindowShadeLazy
Mouse 1 - S WindowShade North
Mouse 1 [ S WindowShade West
Mouse 1 ] S WindowShade E
Mouse 1 _ S WindowShade S

توجه: هنگامی که پنجره‌ای با یک آرگومان direction جمع شده باشد و جهت عنوان پنجره تغییر کند (به گزینه TitleAtTop از دستور Style مراجعه کنید)، جهت جمع شدن تغییر نمی‌کند. پنجره‌هایی که بدون جهت جمع شده‌اند، در جهت نوار عنوان جمع باقی می‌مانند.

برای سازگاری با گذشته، آرگومان اختیاری می‌تواند ۱ برای روشن و ۲ برای خاموش باشد. این نحو منسوخ شده است.

IgnoreModifiers [Modifiers]

به fvwm اعلام می‌کند که کدام کلیدهای تغییردهنده (modifier) را هنگام تطبیق اتصالات ماوس یا کلید نادیده بگیرد. دستور IgnoreModifiers بر سبک ClickToFocus نیز تأثیر می‌گذارد. این دستور متعلق به فایل پیکربندی config شما است. اگر آن را زمانی اجرا کنید که نشست fvwm در حال اجرا است، نتایج غیرقابل پیش‌بینی خواهد بود. این دستور باید قبل از شروع هر برنامه یا ماژولی در فایل config شما ظاهر شود (مثلاً قبل از دستور Exec).

پارامتر Modifiers همان نحو اتصالات Mouse یا Key را دارد، به اضافه اینکه 'L' به معنای کلید Caps Lock است. حالت پیش‌فرض "L" است. پارامتر Modifiers می‌تواند حذف شود که به معنای نادیده نگرفتن هیچ کلید تغییردهنده‌ای است. این دستور زمانی کاربرد دارد که کلیدهای Num Lock و Scroll Lock با میانبرهای شما تداخل داشته باشند. در XFree86 کلید '2' معمولاً تغییردهنده Num Lock است و '5' به کلید Scroll Lock اشاره دارد. برای خاموش کردن این کلیدهای مزاحم می‌توانید از دستور زیر استفاده کنید:

IgnoreModifiers L25

اگر آرگومان Modifiers رشته "default" باشد، fvwm به مقدار پیش‌فرض "L" بازمی‌گردد.

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

EdgeCommand [screen RANDRNAME] [direction [Function]]

دستور مشخص‌شده fvwm به نام Function را به یکی از لبه‌های صفحه متصل می‌کند. جهت direction می‌تواند یکی از موارد "North"، "Top"، "West"، "Left"، "South"، "Bottom"، "Right" و "East" باشد. اگر Function حذف شود، اتصال برای این لبه حذف می‌گردد. اگر EdgeCommand بدون هیچ آرگومانی فراخوانی شود، تمام اتصالات لبه‌ها حذف می‌شوند. اگر گزینه دقیق screen به همراه نام مانیتور RandR به نام RANDRNAME داده شود، دستور تنها برای آن مانیتور تنظیم می‌گردد.

دستور Function هنگامی اجرا می‌شود که نشانگر ماوس وارد قاب‌های پیمایش نامرئی (pan frames) که صفحه نمایش قابل مشاهده را احاطه کرده‌اند شود. این اتصال تنها زمانی کار می‌کند که EdgeThickness روی مقداری بزرگتر از 0 تنظیم شده باشد. اگر تابعی به یک لبه متصل باشد، پیمایش تعیین‌شده توسط EdgeScroll برای آن لبه غیرفعال می‌شود. می‌توان یک تابع را تنها به برخی لبه‌ها متصل کرد و از لبه‌های دیگر برای پیمایش استفاده نمود. این دستور برای بالا یا پایین بردن پنجره‌های خاصی هنگام ورود نشانگر ماوس به لبه کاربرد دارد. از FvwmAuto می‌توان برای ایجاد تاخیر هنگام بالا یا پایین بردن پنجره‌ها استفاده کرد. مثال زیر در صورتی که نشانگر ماوس وارد لبه بالایی صفحه شود، FvwmButtons را بالا می‌آورد:

# غیرفعال کردن 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" \
 "Silent AutoLowerFunction"
# اگر هر پنجره‌ای به جز FvwmButtons فوکوس داشته باشد، FvwmButtons پایین برود
DestroyFunc AutoLowerFunction
AddToFunc AutoLowerFunction
+ I Current (!FvwmButtons) All (FvwmButtons) Lower
# اگر FvwmButtons فوکوس داشته باشد، بالا آورده شود
DestroyFunc AutoRaiseFunction
AddToFunc AutoRaiseFunction
+ I Current (FvwmButtons) Raise

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

EdgeLeaveCommand [screen RANDRNAME] [direction [Function]]

دستور مشخص‌شده fvwm به نام Function را به یکی از لبه‌های صفحه متصل می‌کند. جهت می‌تواند یکی از موارد "North"، "Top"، "West"، "Left"، "South"، "Bottom"، "Right" و "East" باشد. اگر Function حذف شود، اتصال آن لبه برداشته می‌شود. اگر بدون آرگومان فراخوانی شود، تمام اتصالات لبه‌ها حذف می‌شوند. با گزینه screen به همراه RANDRNAME، دستور تنها برای آن مانیتور تنظیم می‌گردد.

دستور Function هنگامی اجرا می‌شود که نشانگر ماوس قاب‌های پیمایش نامرئی را ترک کند. این ویژگی نیازمند EdgeThickness بزرگتر از 0 است. به مثال EdgeCommand مراجعه کنید.

Key [(window)] Keyname Context Modifiers Function

یک کلید صفحه‌کلید را به دستور مشخص‌شده fvwm متصل می‌کند، یا در صورتی که Function برابر با '-' باشد اتصال را حذف می‌کند. نحو آن مانند اتصال Mouse است با این تفاوت که شماره دکمه ماوس با یک Keyname جایگزین می‌شود. به طور معمول، اتصال کلید هنگام فشرده شدن کلید فعال می‌شود. پارامتر Keyname یک نام کلید استاندارد X11 است همان‌گونه که در /usr/include/X11/keysymdef.h (بدون پیشوند XK_) یا پایگاه داده keysym تعریف شده است. فیلدهای Context و Modifiers همانند اتصال Mouse تعریف می‌شوند. با این حال هنگام فشردن یک کلید، پنجره زمینه همان پنجره‌ای است که تمرکز صفحه‌کلید را در اختیار دارد؛ که لزوماً همان پنجره‌ای نیست که نشانگر روی آن قرار دارد (در حالت‌های SloppyFocus یا ClickToFocus). توجه داشته باشید که اتصالات کلید با زمینه 'R' (پنجره ریشه) به درستی با SloppyFocus و ClickToFocus کار نمی‌کنند؛ در صورت بروز مشکل از دستور PointerKey استفاده کنید.

زمینه ویژه 'M' برای منوها می‌تواند برای تعریف مجدد کنترل‌های منو استفاده شود. برای جزئیات به بخش اتصالات منو مراجعه کنید.

مثال زیر فهرست پنجره‌های توکار را بدون توجه به مکان نشانگر ماوس متصل می‌کند:

Key F11 A SCM WindowList

اتصال یک کلید به دکمه نوار عنوان باعث ظاهر شدن آن دکمه می‌شود. برای جزئیات به دستور Mouse مراجعه کنید.

Mouse [(window)] Button Context Modifiers Function

یک اتصال ماوس تعریف می‌کند، یا اگر Function برابر با '-' باشد، آن را حذف می‌کند. پارامتر Button شماره دکمه ماوس است. اگر مقدار صفر باشد، هر دکمه‌ای تابع را اجرا می‌کند. توجه داشته باشید که تنها دکمه‌های ۱ تا ۵ ماوس به طور کامل توسط X11 پشتیبانی می‌شوند. شماره‌های بالاتر تنها به صورت جزئی کار می‌کنند. توابع پیچیده و عملیات کشیدن (drag) با دکمه‌های بالاتر قابل استفاده نیستند. به طور پیش‌فرض بالاترین شماره مجاز دکمه ۹ است.

زمینه Context محل اعمال اتصال را توصیف می‌کند. زمینه‌های معتبر عبارتند از: 'R' برای پنجره ریشه، 'W' برای پنجره برنامه، 'D' برای برنامه میزکار (مانند kdesktop یا Nautilus)، 'T' برای نوار عنوان، 'S' برای نوارهای کناری، بالایی یا پایینی پنجره، '[', ']', '-' و '_' برای سمت چپ، راست، بالا یا پایین به تنهایی، 'F' برای قاب پنجره (گوشه‌ها)، '<', '^', '>' و 'v' برای گوشه‌های بالا-چپ، بالا-راست، پایین-راست و پایین-چپ، 'I' برای پنجره آیکون، '0' تا '9' برای دکمه‌های نوار عنوان، یا هر ترکیبی از این حروف. حرف 'A' برای هر زمینه‌ای است. برای مثال، زمینه "FST" هنگامی اعمال می‌شود که ماوس در هر نقطه از حاشیه پنجره به جز دکمه‌های نوار عنوان قرار داشته باشد.

زمینه ویژه 'M' برای منوها جهت تعریف مجدد کنترل‌های منو استفاده می‌شود.

زمینه ویژه 'P' دکمه‌هایی را که می‌توان برای قرار دادن پنجره استفاده کرد کنترل می‌کند. هنگام استفاده از این زمینه هیچ کلید تغییردهنده‌ای مجاز نیست (Modifiers باید N باشد)، هیچ پنجره‌ای (window) مجاز نیست و تابع Function باید یکی از مقادیر PlaceWindow، PlaceWindowDrag، PlaceWindowInteractive، CancelPlacement، CancelPlacementDrag، CancelPlacementInteractive یا '-' باشد.

تابع PlaceWindow دکمه Button را برای قرار دادن پنجره در هر دو حالت تعاملی و کشیدن فعال می‌کند. تابع CancelPlacement عمل معکوس را انجام می‌دهد و جابجایی را لغو می‌کند.

مثال زیر همه دکمه‌ها به جز دکمه ۳ را برای جای‌گذاری تعاملی فعال می‌کند:

Mouse 0 P N PlaceWindow
Mouse 3 P N CancelPlacement
Mouse 1 P N CancelPlacementDrag

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

مثال زیر نشان می‌دهد چگونه یک کلید می‌تواند بسته به پنجره دارای تمرکز کارهای متفاوتی انجام دهد:

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

عمل '--' نشان می‌دهد که رویداد باید برای رسیدگی به خود پنجره مشخص‌شده ارسال شود.

این مثال نحوه نمایش WindowList هنگام فشردن دکمه ۳ روی پنجره rxvt را نشان می‌دهد:

Mouse (rxvt) 3 A A WindowList

توجه داشته باشید که fvwm تمام رویدادها را برای اتصالات مختص پنجره دریافت کرده و در صورت عدم تطابق یک نسخه شبیه‌سازی‌شده به پنجره می‌فرستد. برای فعال‌سازی پردازش این رویدادها در xterm، خط زیر را به ~/.Xdefaults اضافه کنید:

XTerm*allowSendEvents:  true

پارامتر Modifiers هر ترکیبی از 'N' برای بدون تغییردهنده، 'C' برای Control، 'S' برای Shift، 'M' برای Meta/Alt، 'L' برای Caps-Lock یا 'A' برای هر تغییری است. مقادیر mod1 تا mod5 سرور X با ارقام '1' تا '5' نمایش داده می‌شوند.

دکمه‌های نوار عنوان شماره‌گذاری شده‌اند: اعداد فرد در سمت چپ نوار عنوان و اعداد زوج در سمت راست. دکمه‌های با شماره کمتر در قسمت بیرونی‌تر و دکمه‌های با شماره بیشتر به سمت وسط پنجره قرار می‌گیرند (0 مخفف 10 است):

1 3 5 7 9    0 8 6 4 2

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

PointerKey [(window)] Keyname Context Modifiers Function

این دستور دقیقاً مانند دستور Key عمل می‌کند. تنها تفاوت این است که اتصال روی پنجره زیر نشانگر ماوس عمل می‌کند، در حالی که اتصالات معمولی کلید روی پنجره دارای تمرکز اجرا می‌شوند. دستور PointerKey برای مثال می‌تواند برای اتصال کلیدها به پنجره ریشه در صورت استفاده از SloppyFocus یا ClickToFocus استفاده شود. توصیه می‌شود از دستور PointerKey تنها برای ترکیب‌های کلیدی که در پنجره‌های برنامه‌ها مورد نیاز نیستند استفاده کنید.

مثال:

Style * SloppyFocus
PointerKey f1 a m Menu MainMenu

DesktopName desk name

نام میزکار شماره desk را روی name تنظیم می‌کند. این نام در دستور WindowList و در ماژول FvwmPager استفاده می‌شود که در آنجا بر گزینه پیکربندی Label اولویت دارد. علاوه بر این، اگر نام‌های متوالی از میزکار 0 تعریف شوند، این نام‌ها توسط هر برنامه سازگار با EWMH (مانند پیجرها) قابل استفاده خواهند بود.

DesktopConfiguration global | per-monitor | shared

این دستور نحوه مدیریت میزکارها توسط fvwm را کنترل می‌کند. به طور پیش‌فرض، برای تمامی صفحاتی که توسط fvwm از طریق پشتیبانی RandR شناسایی می‌شوند، گزینه global به این معنی است که تمام پنجره‌های روی یک میزکار در سراسر مانیتورها به صورت یکپارچه در نظر گرفته می‌شوند؛ بنابراین هنگامی که تغییر میزکار/صفحه رخ می‌دهد، همان تغییر در تمام مانیتورها اعمال می‌شود.

با گزینه per-monitor، هر مانیتور RandR یک نسخه مستقل از میزکارها دارد و بنابراین هنگام تغییر میزکارها یا صفحات، مستقل از یکدیگر عمل می‌کنند.

هنگامی که shared تنظیم شود، میزکارها بین تمامی مانیتورها به اشتراک گذاشته می‌شوند. به عنوان مثال، با تعریف میزکارها برای دو مانیتور ([] مانیتور ۱ و <> مانیتور ۲ است):

[0]     1      2      <3>     4

حرکت بین میزکارها همچنان مانیتوری را که درخواست روی آن داده شده رعایت می‌کند. اگر مانیتور ۱ بخواهد به میزکار ۳ برود، آن میزکار با مانیتور ۲ مبادله می‌شود:

<0>     1      2      [3]     4

این مفهوم شبیه به نحوه مدیریت میزکارها در spectrwm یا xmonad است.

توجه: هر حالت DesktopConfiguration را می‌توان در حین اجرا و به صورت بلادرنگ تغییر داد.

DesktopSize HorizontalxVertical

اندازه میزکار مجازی را بر حسب مضاربی از اندازه صفحه نمایش فیزیکی تعریف می‌کند.

EdgeResistance delay, EdgeResistance scrolling moving [screen-scrolling]

مشخص می‌کند که تغییر درگاه دید میزکار با حرکت ماوس روی لبه صفحه چقدر باید سخت باشد. این پارامتر مشخص می‌کند که نشانگر ماوس چند میلی‌ثانیه باید روی لبه صفحه بماند تا fvwm درگاه دید را جابجا کند. این برای افرادی در نظر گرفته شده که از:
EdgeScroll 100 100

استفاده می‌کنند اما متوجه می‌شوند که تصادفاً هنگام عدم تمایل، صفحات عوض می‌شوند. اگر مقدار تاخیر -1 داده شود، پیمایش لبه‌ها به طور کامل غیرفعال می‌شود.

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

EdgeResistance scrolling
Style * EdgeMoveDelay scrolling
Style * EdgeMoveResistance moving
یا
Style * EdgeMoveResistance moving screen-scrolling

برنامه fvwm این جایگزینی را به طور خودکار انجام داده و یک پیام هشدار چاپ می‌کند.

EdgeScroll [screen RANDRNAME] horizontal[p] vertical[p] [wrap | wrapx | wrapy]

درصدی از صفحه را مشخص می‌کند که با برخورد نشانگر ماوس به لبه صفحه باید پیمایش شود. گزینه اختیاری 'screen RANDRNAME' مانیتور RandR را مشخص می‌کند که این تنظیم باید روی آن اعمال شود و مانیتورهای دیگر را نادیده می‌گیرد. بدون این گزینه، مقدار روی تمام مانیتورها اعمال می‌شود. پسوند 'p' تفسیر را به پیکسل تغییر می‌دهد. اگر نمی‌خواهید با برخورد به لبه صفحه هیچ پیمایشی رخ دهد، دستور:
EdgeScroll 0 0

را در فایل config خود قرار دهید، یا بهتر از آن، EdgeThickness را روی صفر تنظیم کنید. اگر می‌خواهید صفحات کامل پیمایش شوند از:

EdgeScroll 100 100

استفاده کنید. هر دو مقدار افقی و عمودی باید اعداد مثبت باشند.

اگر درصدهای افقی و عمودی در ۱۰۰۰ ضرب شوند یا یکی از کلیدواژه‌های wrap، wrapx و wrapy داده شود، پیمایش در لبه میزکار دور می‌زند (wrap).

EdgeThickness [screen RANDRNAME] 0 | 1 | 2

عرض یا ارتفاع پنجره نامرئی (pan frames) را که fvwm در لبه‌های صفحه برای قابلیت پیمایش لبه ایجاد می‌کند مشخص می‌سازد.

گزینه اختیاری 'screen RANDRNAME' مانیتور مورد نظر را مشخص می‌کند.

به منظور فعال‌سازی پیمایش صفحه از طریق ماوس، چهار پنجره به نام "قاب‌های پیمایش" (pan frames) در لبه بیرونی صفحه قرار داده می‌شوند. fvwm از این طریق حضور ماوس در لبه را تشخیص می‌دهد. این قاب‌ها باید در بالای پشته قرار گیرند و رویدادهای ماوس را دریافت کنند، بنابراین اگر با مشکلی مانند "کلیک‌های ماوس در لبه صفحه کار اشتباهی انجام می‌دهند" مواجه شدید، می‌توانید EdgeThickness را روی 0 تنظیم کنید.

مقدار 0 پیمایش لبه‌ای ماوس را به طور کامل غیرفعال می‌کند، حتی هنگام کشیدن پنجره. مقدار 1 کوچک‌ترین قاب‌ها را ایجاد می‌کند و مقدار 2 حالت پیش‌فرض است.

EwmhBaseStruts screen RANDRNAME left right top bottom

که در آن چپ، راست، بالا و پایین اعداد صحیح مثبت یا صفر هستند که نوارهایی را در لبه‌های صفحه تعریف می‌کنند. اگر screen به همراه RANDRNAME داده شود، برای همان نمایشگر تنظیم می‌گردد. واحد بر حسب پیکسل است و مقدار پیش‌فرض 0 0 0 0 می‌باشد. این نواحی فضای رزروشده اضافه‌ای را برای محاسبه ناحیه کاری (Working Area) تعریف می‌کنند.

EwmhNumberOfDesktops num [max]

این دستور تنها برای پیجرها یا نوارهای وظیفه سازگار با ewmh مفید است. این دستور باعث می‌شود برنامه سازگار حداقل num میزکار را در نظر بگیرد. آرگومان اختیاری max حداکثر تعداد میزکارها را تعیین می‌کند. مقدار پیش‌فرض 4 0 است.

GotoDesk [screen RANDRNAME] [prev | arg1 [arg2] [min max]]

درگاه دید فعلی را به میزکار (فضای کاری) دیگری تغییر می‌دهد. در حالت per-monitor یا shared، مانیتور فعلی استفاده می‌شود مگر اینکه screen با یک نام معتبر مانیتور RandR گنجانده شود.

این دستور ۱، ۲، ۳ یا ۴ آرگومان می‌پذیرد. یک آرگومان به عنوان شماره نسبی میزکار تفسیر می‌شود. دو آرگومان به عنوان شماره نسبی و مطلق فهمیده می‌شوند. سه آرگومان یک میزکار نسبی و حداقل و حداکثر محدوده مجاز را مشخص می‌کنند. چهار آرگومان مقادیر نسبی، مطلق، حداقل و حداکثر را تعیین می‌نمایند. اگر کلمه دقیق prev به عنوان تک‌آرگومان داده شود، آخرین شماره میزکار بازدیدشده استفاده خواهد شد.

اگر arg1 غیر صفر باشد، شماره میزکار بعدی برابر شماره میزکار فعلی به علاوه arg1 خواهد بود.

اگر arg1 صفر باشد، شماره میزکار جدید برابر با arg2 خواهد بود.

نحو دستور همانند دستور MoveToDesk است.

تعداد میزکارهای فعال به صورت پویا تعیین می‌شود. شماره‌های میزکار باید بین 0 تا 2147483647 باشند. شماره‌های منفی در fvwm پشتیبانی نمی‌شوند.

GotoDeskAndPage screen | prev | desk xpage ypage

درگاه دید فعلی را همزمان به میزکار و صفحه دیگری تغییر می‌دهد، مشابه با دستورات GotoDesk و GotoPage. میزکار جدید desk و صفحه جدید (xpage,ypage) خواهد بود.

GotoPage screen | prev | [options] x[p] y[p]

درگاه دید میزکار را به صفحه (x,y) منتقل می‌کند. صفحه بالا سمت چپ (0,0) است. برای جابجایی به صفحه‌ای نسبت به صفحه فعلی، پسوند 'p' را اضافه کنید.

گزینه‌های احتمالی شامل wrapx و wrapy برای چرخش دورانی در مرزهای میزکار هستند.

برای رفتن به آخرین صفحه بازدیدشده از prev استفاده کنید.

مثال‌ها:

# رفتن به صفحه (2,3)
GotoPage 2 3
# رفتن به پایین‌ترین و راست‌ترین صفحه
GotoPage -1 -1
# رفتن به آخرین صفحه بازدیدشده
GotoPage prev
# رفتن دو صفحه به راست و یک صفحه به بالا
GotoPage +2p -1p

Scroll [screen RANDRNAME] [horizonal[p] vertical[p] | reverse]

درگاه دید میزکار مجازی را به اندازه صفحات horizontal در جهت x و صفحات vertical در جهت y پیمایش می‌کند یا پیمایش تعاملی درگاه دید را آغاز می‌نماید. مقادیر می‌توانند منفی باشند و بر حسب درصد صفحات بیان می‌شوند:
Scroll 100 100

به معنای یک صفحه کامل به پایین و راست است.

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

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

اتصال زیر:

Mouse 1 A CM Scroll reverse

اثر گرفتن و کشیدن درگاه دید را با دکمه ۱ ماوس در صورت فشرده بودن کلیدهای Control و Meta ایجاد می‌کند.

AddToFunc [name [I | J | M | C | H | D action]]

تعریف یک تابع را آغاز می‌کند یا به آن مواردی اضافه می‌نماید. یک مثال:
AddToFunc Move-or-Raise I Raise
 + M Move
 + D Lower

نام تابع "Move-or-Raise" است و می‌تواند از یک منو یا اتصال ماوس یا کلید فراخوانی شود:

Mouse 1 TS A Move-or-Raise

نام تابع name نباید حاوی فاصله‌های تعبیه‌شده باشد. حرف قبل از action مشخص می‌کند که چه نوع کنشی باعث تحریک دستوری می‌شود که پس از آن می‌آید: 'I' مخفف "Immediate" است و به محض فراخوانی تابع اجرا می‌شود. 'J' مشابه Immediate است اما تا زمانی که دکمه‌ای فشرده یا رها شود، نشانگر ماوس حرکت کند یا تابع تکمیل شود به تعویق می‌افتد. 'M' مخفف "Motion" (حرکت ماوس) است. 'C' مخفف "Click" (کلیک ماوس) است. 'H' مخفف "Hold" (نگه داشتن کلید بیش از ClickTime میلی‌ثانیه) است. 'D' مخفف "Double-click" (دوبار کلیک) است. عمل 'I' در صورت فراخوانی تابع با آگاهی قبلی از پنجره هدف، بلافاصله پس از فشردن دکمه اجرا می‌شود.

مجموعه‌ای از نمادهای از پیش تعریف‌شده وجود دارند که در صورت ظاهر شدن در خط فرمان با مقادیر خاصی جایگزین می‌شوند. برای جزئیات به بخش بسط دستورات (Command Expansion) مراجعه کنید.

هشدار: لطفاً نظرات مربوط به اجرای توابع پیچیده در بخش اسکریپت‌نویسی و توابع پیچیده را مطالعه کنید.

مثال‌ها: اگر دستور زیر را فراخوانی کنید:

Key F10 R A Function MailFunction xmh "-font fixed"

و "MailFunction" به صورت زیر تعریف شده باشد:

AddToFunc MailFunction
 + I Next ($0) Iconify off
 + I Next (AcceptsFocus, $0) Focus
 + I None ($0) Exec exec $0 $1

در این صورت خط آخر تابع به این شکل تبدیل می‌شود:

+ I None (xmh) Exec exec xmh -font fixed

این بسط در هنگام اجرای تابع انجام می‌شود، بنابراین می‌توانید از همان تابع با آرگومان‌های گوناگون استفاده کنید. به عنوان مثال دیگر، اتصال دکمه ۳ ماوس درون دکمه شماره ۶ پنجره برای آیکون کردن تمامی پنجره‌های دارای همان منبع:

AddToFunc FuncIconifySameResource "I" All ($0) Iconify on
Mouse 3 6 A FuncIconifySameResource $[w.resource]

Beep

همان‌گونه که انتظار می‌رود، ترمینال را وادار به بوق زدن می‌کند.

DestroyFunc function

یک تابع را حذف می‌کند تا ارجاعات بعدی به آن دیگر معتبر نباشند. این برای تغییر محتویات یک تابع در طول نشست fvwm مفید است. تابع را می‌توان با AddToFunc مجدداً ایجاد کرد.
DestroyFunc PrintFunction

Echo string

پیامی را در فایل لاگ اشکال‌زدایی چاپ می‌کند که نیازمند فعال بودن لاگ‌گیری است. به گزینه -v یا PrintInfo برای اطلاعات بیشتر درباره فعال‌سازی لاگ اشکال‌زدایی و مکان فایل لاگ مراجعه کنید. برای اشکال‌زدایی فایل پیکربندی یا دریافت مقدار متغیرها کاربرد دارد.
Echo Beginning style definitions...
Echo Current desk $[desk.n].

EchoFuncDefinition function

دستور EchoFuncDefinition مشابه Echo است اما تعریف تابع داده‌شده function را در فایل لاگ اشکال‌زدایی چاپ می‌کند. برای درک نحوه مدیریت نقل‌قول‌ها در fvwm و اشکال‌زدایی توابع مفید است.

Exec command

دستور command را اجرا می‌کند. نباید از علامت '&' در انتهای دستور استفاده کنید. بهتر است از یک "exec" اضافی در ابتدای command استفاده کنید تا شل واسط در حافظه باقی نماند.

مثال زیر کلید تابعی F1 را در پنجره ریشه به تابع exec متصل می‌کند:

Key F1 R N Exec exec rxvt -fg yellow -bg blue \
-e /bin/tcsh

توجه داشته باشید که این تابع منتظر اتمام command نمی‌ماند (به دستور PipeRead مراجعه کنید).

ExecUseShell [shell]

باعث می‌شود دستور Exec از شل مشخص‌شده، یا از مقدار متغیر محیطی $SHELL در صورت عدم تعیین شل، به جای شل پیش‌فرض بورن (/bin/sh) استفاده کند.
ExecUseShell
ExecUseShell /usr/local/bin/tcsh

Function FunctionName

برای اتصال یک تابع از پیش تعریف‌شده به یک کلید یا دکمه ماوس استفاده می‌شود.
Mouse 1 T A Function Move-or-Raise

کلیدواژه Function در صورتی که نام تابع با یکی از دستورات fvwm تداخل نداشته باشد، می‌تواند حذف شود.

InfoStoreAdd key value

مقدار value را در کلید key داده‌شده ذخیره می‌کند. این دستور برای ذخیره اطلاعات عمومی در طول عمر فایل پیکربندی fvwm مفید است. به عنوان مثال ذخیره اولویت‌های برنامه برای باز کردن فایل‌های ویدیویی.

هدف از این دستور ذخیره اطلاعات داخلی در fvwm است که توابع fvwm می‌توانند از آن استفاده کنند، بدون اینکه مانند SetEnv محیط را آلوده کرده و اطلاعات را سراسری سازد.

بازیابی مقدار یک کلید مشخص از طریق سازوکار معمول بسط در fvwm انجام می‌شود:

InfoStoreAdd teddybearprog xteddy
# چاپ مقدار teddybearprog
Echo $[infostore.teddybearprog]

حذف یک مدخل از InfoStore با دستور InfoStoreRemove انجام می‌شود.

InfoStoreRemove key

یک مدخل را در کلید داده‌شده key از InfoStore حذف می‌کند. مثال:
InfoStoreRemove teddybearprog

Nop

هیچ کاری انجام نمی‌دهد. برای درج یک خط خالی یا خط جداکننده در یک منو استفاده می‌شود.
AddToMenu MyMenu " " Nop

یک خط خالی درج می‌کند. در حالی که:

+ "" Nop

یک خط جداکننده افقی درج می‌نماید. همچنین می‌تواند به عنوان عمل دوبار کلیک برای Menu یا Popup استفاده شود.

PipeRead command [quiet]

باعث می‌شود fvwm دستورات را از خروجی استاندارد دستور command بخواند. این دستور توسط /bin/sh به صورت همگام اجرا می‌شود. اگر دستور شامل بیش از یک کلمه باشد باید داخل نقل‌قول قرار گیرد. برای ساخت مدخل‌های پویای منو بر اساس محتویات دایرکتوری‌ها بسیار مفید است. با کلیدواژه Quiet در صورت پیدا نشدن دستور پیامی تولید نمی‌شود.

مثال:

AddToMenu HomeDirMenu
PipeRead 'for i in $HOME/*; \
do echo "+ $i Exec xterm -e vi $i"; done'

دستور PipeRead به صورت همگام (synchronous) اجرا می‌شود. اگر دستوری را اجرا می‌کنید که خروجی آن به جای دستورات fvwm باید نادیده گرفته شود، می‌توانید آن را تغییر مسیر دهید:

PipeRead 'command 1>&2'

دستور PipeRead در صورت اجرای موفقیت‌آمیز مقدار ۱ و در غیر این صورت -۱ را برمی‌گرداند.

Read filename [quiet]

باعث می‌شود fvwm دستورات را از فایلی به نام filename بخواند. اگر نام فایل با اسلش ('/') شروع نشود، fvwm ابتدا در دایرکتوری داده‌های کاربر ($HOME/.fvwm) و سپس دایرکتوری داده‌های سیستم جستجو می‌کند. متغیر محیطی FVWM_USERDIR می‌تواند این مسیر را تغییر دهد.

SetEnv variable value

یک متغیر محیطی را روی یک مقدار جدید تنظیم می‌کند، مشابه دستورات export یا setenv در شل. متغیر و مقدار آن توسط فرآیندهایی که مستقیماً توسط fvwm اجرا می‌شوند به ارث برده می‌شود.
SetEnv height HEIGHT

Silent command

تعدادی از دستورات نیازمند یک پنجره برای اجرا هستند. اگر هیچ پنجره‌ای انتخاب نشده باشد، از کاربر خواسته می‌شود پنجره‌ای را انتخاب کند. می‌توانید با قرار دادن Silent قبل از دستور از این رفتار جلوگیری کنید. اگر تابعی بدون پنجره فراخوانی شود و Silent داشته باشد، به سادگی بدون انجام کاری بازمی‌گردد. همچنین پیام‌های خطا را برای دستورات ناموجود غیرفعال می‌کند.

مثال‌ها:

Silent Move 0 0
Silent User_defined_function
Silent Key Help R A Popup HelpMenu

UnsetEnv [variable]

یک متغیر محیطی را لغو می‌کند و آن را از آرایه محیطی فرآیندهای فرزند fvwm حذف می‌نماید.

Wait window

این دستور تنها برای استفاده در توابع fvwm در نظر گرفته شده است. این دستور اجرای تابع را تا زمانی که پنجره جدیدی منطبق با window ظاهر شود متوقف می‌کند. این می‌تواند نام، کلاس یا منبع پنجره باشد و می‌تواند حاوی نویسه‌های عمومی '*' و '?' باشد. به ویژه در "InitFunction" هنگام راه‌اندازی پنجره‌ها روی میزکارهای خاص کاربرد دارد:
AddToFunc InitFunction
 + I Exec exec xterm -geometry 80x64+0+0
 + I Wait xterm
 + I GotoDesk 0 2
 + I Exec exec xmh -font fixed -geometry \
 507x750+0+0
 + I Wait xmh
 + I GotoDesk 0 0

تابع بالا xterm را در میزکار فعلی شروع می‌کند، منتظر نگاشت آن می‌ماند، سپس به میزکار ۲ رفته و xmh را اجرا می‌کند و پس از ظاهر شدن آن به میزکار ۰ بازمی‌گردد.

می‌توانید با فشردن Ctrl-Alt-Escape از توقف Wait خارج شوید (به EscapeFunc مراجعه کنید).

Status On | Off

وضعیت را روشن یا خاموش می‌کند. این دستور اطلاعات را در قالب JSON از طریق یک لوله نام‌گذاری‌شده (تنظیم‌شده از طریق متغیر محیطی FVWM_STATUS_PIPE) درباره میزکارهای فعلی و تعداد پنجره‌ها و غیره ارسال می‌کند. این قابلیت روشی سریع برای ارائه اطلاعات به ابزارهای شخص ثالث مانند lemonbar و polybar فراهم می‌سازد.

قالب داده JSON به این صورت است:

{
    "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
                },
            },
        },
     },
}

این بخش‌ها برای تمامی صفحات، گروه‌ها و غیره بر اساس تعداد موجود تکرار می‌شوند.

دستورات شرطی دستوراتی هستند که تنها در صورت برآورده شدن شرایط خاصی اجرا می‌شوند. بیشتر دستورات شرطی روی پنجره‌ها عمل می‌کنند، مانند Next، ThisWindow یا All. یک دستور شرطی به نام Test نیز وجود دارد که روی شرایط سراسری و غیرمرتبط با پنجره‌ها عمل می‌کند. نحو شرایط در زیر شرح داده شده است.

کدهای بازگشتی (Return Codes)

تمامی دستورات این بخش (مگر اینکه به طور خاص ذکر شده باشد) دارای یک کد بازگشتی هستند که می‌تواند 1 (اگر شرط برقرار باشد) یا 0 (اگر شرط برقرار نباشد) باشد. برخی دستورات ممکن است -1 برگردانند که به این معنی است که خطایی رخ داده و کد بازگشتی نامعتبر است. دستور Break مقدار -2 را برمی‌گرداند. کدهای بازگشتی دستورات اجراشده در یک تابع پیچیده به تابع فراخواننده منتقل می‌شوند. کد بازگشتی توسط دستور TestRc استفاده می‌شود و از طریق متغیر $[cond.rc] نیز قابل دسترسی است. کدهای بازگشتی تنها درون توابع ایجادشده با AddToFunc تعریف می‌شوند. برای اجرای یک دستور بدون تغییر دادن کد بازگشتی، می‌توان از دستور KeepRc استفاده کرد.

حلقه پنجره‌ها (The Ring of Windows)

برنامه fvwm پنجره‌ها را در یک حلقه داخلی نگهداری می‌کند. پنجره دارای تمرکز را مانند یک نشانگر روی موقعیت فعلی در حلقه در نظر بگیرید. دستور Next و بسیاری دستورات دیگر در حلقه به سمت جلو جستجو می‌کنند و Prev به سمت عقب جستجو می‌نماید. پنجره‌ها در حلقه یا بر اساس زمان ایجاد یا بر اساس آخرین زمانی که تمرکز را در اختیار داشتند مرتب می‌شوند.

فهرست دستورات شرطی (List of Conditional Commands)

All [options] [(conditions)] command

دستور command را روی تمامی پنجره‌هایی که شرایط را برآورده می‌کنند اجرا می‌کند. اگر پنجره‌ای با شرایط مطابقت داشته باشد ۱ و در غیر این صورت ۰ برمی‌گرداند. گزینه‌ها می‌توانند هر ترکیبی از Reverse و UseStack باشند. گزینه UseStack باعث می‌شود به جای حلقه پنجره‌ها، از ترتیب چیدمان (stacking order) استفاده شود.

این دستور به طور ضمنی شرایط CirculateHit، CirculateHitIcon و CirculateHitShaded را فعال می‌کند.

Any [(conditions)] command

در صورتی که هر پنجره‌ای که تمام شرایط را برآورده می‌کند وجود داشته باشد، دستور command را اجرا می‌کند. دستور در زمینه پنجره ریشه اجرا می‌شود.

Break [levels]

اگر دستور break درون یک تابع استفاده شود، اجرای تابع بلافاصله خاتمه می‌یابد و دستورات بعدی پردازش نمی‌شوند. عدد اختیاری levels برای خروج از تعداد مشخصی از توابع تو در تو و ادامه اجرای تابع سطح بالاتر استفاده می‌شود. کد بازگشتی دستور Break همواره -2 است.
AddToFunc PickWindowRaiseAndDeiconify
+ I Pick
+ I TestRc (Error) Break
+ I Raise
+ I Iconify off

Current [(conditions)] command

دستور command را روی پنجره دارای فوکوس فعلی در صورتی که تمام شرایط را برآورده کند اجرا می‌نماید.

Direction [FromPointer] direction [(conditions)] command

دستور command (معمولاً Focus) را روی پنجره‌ای در جهت داده‌شده که شرایط را برآورده می‌کند اجرا می‌کند. به طور معمول مرکز پنجره دارای تمرکز فعلی به عنوان نقطه شروع در نظر گرفته می‌شود، اما با گزینه FromPointer موقعیت فعلی نشانگر ماوس مبنا قرار می‌گیرد. جهت می‌تواند یکی از مقادیر "North"، "Northeast"، "East"، "Southeast"، "South"، "Southwest"، "West"، "Northwest" و "Center" باشد.

KeepRc command

دستور command را اجرا می‌کند بدون اینکه کد بازگشتی دستور قبلی را تغییر دهد.

Next [(conditions)] command

دستور command (معمولاً Focus) را روی پنجره بعدی در حلقه که تمامی شرایط را برآورده می‌کند اجرا می‌کند.

None [(conditions)] command

در صورتی که هیچ پنجره‌ای که شرایط را برآورده کند وجود نداشته باشد، دستور command را اجرا می‌کند. اگر هیچ پنجره‌ای مطابقت نداشته باشد مقدار ۱ و در غیر این صورت ۰ برمی‌گرداند.

NoWindow command

دستور command را اجرا می‌کند اما زمینه پنجره را (در صورت وجود) حذف می‌نماید. این یک پیشوند مفید برای مدخل‌های منو است که باید بدون زمینه پنجره عمل کنند.

Pick [(conditions)] command

اگر در زمینه یک پنجره فراخوانی شود مشابه Function عمل می‌کند. اگر در پنجره ریشه فراخوانی شود، ابتدا از کاربر می‌خواهد پنجره‌ای را انتخاب کند و سپس دستور command را در زمینه آن پنجره اجرا می‌نماید. اگر هیچ پنجره‌ای انتخاب نشود مقدار -1 برمی‌گرداند.

PointerWindow [(conditions)] command

اگر پنجره زیر نشانگر ماوس تمام شرایط را برآورده کند، دستور command را اجرا می‌کند. اگر هیچ پنجره‌ای زیر نشانگر نباشد مقدار -1 برمی‌گرداند.

Prev [(conditions)] command

دستور command را روی پنجره قبلی در حلقه که تمام شرایط را برآورده کند اجرا می‌نماید.

ScanForWindow [FromPointer] dir1 dir2 [(conditions)] command

دستور command را روی پنجره‌ای در جهات داده‌شده اجرا می‌کند. جهت dir1 محور اصلی و dir2 جهت ثانویه عمود بر آن است. اگر جهات کاملاً بر هم عمود نباشند، دستور با شکست مواجه می‌شود.

Test [(test-conditions)] command

در صورتی که تمامی شرایط test-conditions برآورده شوند، دستور command را اجرا می‌کند. شرایط آزمون عبارتند از: Version operator x.y.z، EnvIsSet varname، EnvMatch varname pattern، StrMatch string pattern، EdgeHasPointer direction، EdgeIsActive direction، Start، Init، Restart، Exit، Quit، ToRestart، True، False، F، R، W، X و I. یک شرط با پیشوند '!' منفی می‌شود.

شرط Version با عملگرهای >=، >، <=، <، == و != نسخه fvwm را می‌سنجد:

Test (Version >= 2.5.11) Echo 2.5.11 or later.

شرط EnvIsSet تنظیم بودن متغیر محیطی و EnvMatch تطابق متغیر محیطی یا infostore با یک الگو را بررسی می‌کند.

شرط StrMatch تطابق رشته با یک الگو را بررسی می‌نماید:

Test (StrMatch $[monitor.current] DP-2) Echo True

شرایط F، R، W، X و I به ترتیب وجود فایل، مجوز خواندن، مجوز نوشتن، فایل اجرایی در مسیر PATH و تصویر در ImagePath را بررسی می‌کنند.

TestRc [([!]returncode)] command

اگر آخرین دستور شرطی مقدار returncode را برگردانده باشد، دستور command را اجرا می‌کند. به جای مقادیر عددی می‌توان از نام‌های نمادین "NoMatch" (0)، "Match" (1)، "Error" (-1) و "Break" (-2) استفاده کرد.
AddToFunc ToggleXterm
+ I All (my_xtermwindow) Close
+ I TestRc (NoMatch) Exec xterm -T my_xtermwindow

ThisWindow [(conditions)] command

دستور مشخص‌شده را در زمینه پنجره عملوند فعلی اجرا می‌کند. این دستور هرگز تعاملی نیست. اگر خارج از زمینه پنجره استفاده شود مقدار -1 برمی‌گرداند.

WindowId [id] [(conditions)] | [root] command

به دنبال یک شناسه پنجره خاص id می‌گردد و دستور مشخص‌شده را روی آن اجرا می‌کند. شکل دوم نحو، شناسه پنجره ریشه را بازیابی می‌کند. پنجره می‌تواند متعلق به پنجره‌ای باشد که توسط fvwm مدیریت نمی‌شود. اگر پنجره‌ای با شناسه داده‌شده وجود نداشته باشد، -1 برمی‌گرداند.

مثال‌ها:

WindowId 0x34567890 Raise
WindowId root 1 WarpToWindow 50 50
WindowId $0 (Silly_Popup) Delete

شرایط (Conditions)

شرایطی که می‌توانند به عنوان آرگومان به هر دستور شرطی داده شوند، فهرستی از کلیدواژه‌ها هستند که با کاما از هم جدا شده و درون پرانتز قرار می‌گیرند.

علاوه بر این، شرایط می‌توانند شامل یک یا چند نام پنجره برای تطابق باشند. نام، نام آیکون، کلاس و منبع پنجره همگی در نظر گرفته می‌شوند. الگوهای عمومی '*' و '?' و عملگر OR با کاراکتر '|' پشتیبانی می‌شوند. پیشوند '!' شرط یا گروه را نفی می‌کند.

مثال‌ها:

Next ("Netscape|konqueror|Mozilla*") WarpToWindow 99 90
Next ("Mozilla*", "Bookmark*") WarpToWindow 99 90
All ("XTerm|rxvt", !console) Iconify
Next (!"FvwmPager|FvwmForm*|FvwmButtons") Raise

هر شرطی را می‌توان با یک علامت تعجب ('!') مستقیماً قبل از نام آن نفی کرد.

شرایط معتبر عبارتند از: AcceptsFocus، AnyScreen، CirculateHit، CirculateHitIcon، CirculateHitShaded، Closable، CurrentDesk، CurrentGlobalPage، CurrentGlobalPageAnyDesk، CurrentPage، CurrentPageAnyDesk، CurrentScreen، Desk، FixedPosition، FixedSize، Focused، HasBorders، HasHandles، HasPointer، HasTitle، TitleAtTop، TitleAtBottom، TitleAtLeft، TitleAtRight، Iconic، Iconifiable، Layer [n]، Maximizable، Maximized، Overlapped، PlacedByButton n، PlacedByButton3، PlacedByFvwm، Raised، Shaded، State n، Sticky، StickyAcrossDesks، StickyAcrossPages، StickyIcon، StickyAcrossDesksIcon، StickyAcrossPagesIcon، Transient، Visible.

شرط AcceptsFocus پنجره‌هایی را که فوکوس ورودی را نمی‌پذیرند حذف می‌کند.

شرط AnyScreen همراه با شرایط Current... اجازه می‌دهد پنجره‌ها روی هر صفحه‌ای در نظر گرفته شوند.

شرط Closable تنها با پنجره‌هایی که مجاز به بسته شدن هستند تطابق دارد.

شرط CurrentDesk تنها با پنجره‌های روی میزکار فعلی مطابقت دارد.

شرط CurrentPage پنجره‌های روی صفحه فعلی از میزکار فعلی را انتخاب می‌کند.

شرط FixedPosition پنجره‌های با موقعیت ثابت را انتخاب می‌کند.

شرط FixedSize پنجره‌های با اندازه ثابت را تطبیق می‌دهد.

شرط Focused پنجره‌ای را که در حال حاضر تمرکز صفحه‌کلید را دارد مطابقت می‌دهد.

شرط HasBorders پنجره‌های دارای حاشیه را انتخاب می‌کند.

شرط HasTitle پنجره‌های دارای نوار عنوان را انتخاب می‌کند.

شرط Iconic پنجره‌های آیکون‌شده را تطبیق می‌دهد.

شرط Maximized پنجره‌های بیشینه‌شده را انتخاب می‌کند.

شرط Overlapped پنجره‌هایی را که توسط پنجره‌های دیگر در همان لایه پوشانده شده‌اند انتخاب می‌کند.

شرط Raised پنجره‌هایی را که کاملاً قابل مشاهده بوده و روی آن‌ها پوشانده نشده تطبیق می‌دهد.

شرط Shaded پنجره‌های کرکره‌ای جمع‌شده را انتخاب می‌کند.

شرط Transient پنجره‌های گذرا (دیالوگ‌ها و پاپ‌آپ‌ها) را انتخاب می‌کند.

شرط Visible پنجره‌هایی را که حداقل تا حدی قابل مشاهده هستند انتخاب می‌نماید.

برنامه fvwm پایگاه‌داده‌ای از خطوط پیکربندی ماژول‌ها را در قالب زیر نگهداری می‌کند:

*<ModuleName>: <Config-Resource>

که در آن <ModuleName> نام واقعی یک ماژول یا نام مستعار (alias) آن است.

این پایگاه‌داده در ابتدا از فایل پیکربندی (یا از خروجی دستور -cmd) پر می‌شود و بعداً می‌تواند توسط کاربر یا توسط ماژول‌ها اصلاح گردد.

دستورات مدیریت پایگاه‌داده پیکربندی ماژول‌ها در ادامه شرح داده شده‌اند.

* module_config_line

یک پیکربندی ماژول را تعریف می‌کند. مقدار module_config_line شامل نام ماژول (یا نام مستعار آن) و خط منبع ماژول است. نحو جدید امکان استفاده از یک دونقطه و فاصله‌های اختیاری را به عنوان جداکننده بین نام ماژول و ادامه خط فراهم می‌کند که برای جلوگیری از تداخل توصیه می‌شود:
*FvwmPager: WindowBorderWidth 1
*FvwmButtons-TopRight: Geometry 100x100-0+0
*FvwmButtons-Bottom: Geometry +0-0

DestroyModuleConfig module_config

مدخل‌های پیکربندی ماژول را حذف می‌کند تا بتوان خطوط پیکربندی جدیدی وارد کرد. این کار نحوه اجرای ماژول را در طول یک نشست fvwm بدون نیاز به راه‌اندازی مجدد تغییر می‌دهد. می‌توان از نویسه‌های عام (wildcard) نیز استفاده کرد.
DestroyModuleConfig FvwmButtons*
DestroyModuleConfig FvwmForm: Fore
DestroyModuleConfig FvwmIconMan: Tips*

KillModule modulename [modulealias]

باعث متوقف شدن و خاتمه ماژولی می‌شود که با نام modulename فراخوانی شده است. نام می‌تواند شامل نویسه‌های عام باشد. اگر modulealias داده شود، تنها ماژول‌هایی که با آن نام مستعار شروع شده‌اند کشته می‌شوند.
# بستن تمامی پیجرها
KillModule FvwmPager
Module FvwmEvent SoundEvent
KillModule FvwmEvent SoundEvent

Module modulename [moduleparams]

ماژولی را به همراه پارامترهای اختیاری آن جهت اجرا مشخص می‌کند. در حال حاضر چندین ماژول شامل FvwmButtons، FvwmEvent، FvwmForm، FvwmPager و FvwmScript از نام‌های مستعار پشتیبانی می‌کنند. نام‌های مستعار زمانی مفید هستند که چندین نمونه از یک ماژول باید اجرا شوند.
Module FvwmForm MyForm

در حال حاضر ماژول‌های موجود عبارتند از: FvwmAnimate، FvwmAuto، FvwmBacker، FvwmBanner، FvwmButtons، FvwmPrompt، FvwmEvent، FvwmForm، FvwmIconMan، FvwmIdent، FvwmPager، FvwmPerl، FvwmProxy، FvwmRearrange و FvwmScript. این ماژول‌ها صفحات راهنمای اختصاصی خود را دارند.

ModuleListenOnly modulename [moduleparams]

مانند دستور Module عمل می‌کند، با این تفاوت که fvwm هرگز پیامی به ماژول ارسال نمی‌کند. این ویژگی برای نوشتن یک ماژول به عنوان اسکریپت شل که با رویدادهای خارجی فعال می‌شود مفید است.

ModulePath path

فهرستی از دایرکتوری‌ها با جداکننده دونقطه را برای جستجوی ماژول‌ها مشخص می‌کند. fvwm به نوبت در هر دایرکتوری جستجو کرده و از اولین فایل یافت‌شده استفاده می‌نماید.

علامت '+' در مسیر به مقدار قبلی مسیر بسط می‌یابد:

ModulePath ${HOME}/lib/fvwm/modules:+

دایرکتوری ماژول‌های استاندارد از طریق متغیر محیطی $FVWM_MODULEDIR در دسترس است.

ModuleSynchronous [Expect string] [Timeout secs] modulename

بسیار شبیه به Module است. fvwm پردازش تمام دستورات و ورودی‌های کاربر را متوقف می‌کند تا زمانی که ماژول رشته‌ای را که با "NOP FINISHED STARTUP" آغاز می‌شود به fvwm برگرداند. اگر گزینه Timeout داده شود، در صورت عدم دریافت ورودی پس از secs ثانیه عملیات متوقف می‌شود.

هشدار: قفل کردن fvwm با این دستور بسیار آسان است. برای خروج از حالت قفل می‌توانید از کلیدهای خروج استفاده کنید (به EscapeFunc مراجعه کنید).

ModuleTimeout timeout

مشخص می‌کند که fvwm چند ثانیه منتظر پاسخ یک ماژول می‌ماند. اگر ماژول در این محدوده زمانی پاسخ ندهد، fvwm آن را می‌کشد. مقدار پیش‌فرض ۳۰ ثانیه است.

SendToModule modulename string

یک رشته دلخواه را به تمامی ماژول‌هایی که نام یا نام مستعار آن‌ها با modulename مطابقت دارد ارسال می‌کند. برای ارتباط ماژول به ماژول یا اجرای دستورات پیچیده‌تر در ماژول‌ها کاربرد دارد.

Quit

از fvwm خارج می‌شود که معمولاً باعث خروج از محیط X نیز می‌گردد.

Restart [window_manager [params]]

اگر window_manager خالی بماند باعث راه‌اندازی مجدد خود fvwm می‌شود، و اگر window_manager مشخص شده باشد به یک مدیر پنجره دیگر (یا نسخه دیگری از fvwm) سوئیچ می‌کند. اگر مدیر پنجره در مسیر جستجوی پیش‌فرض شما نباشد، باید از نام مسیر کامل استفاده کنید.

این دستور نباید علامت '&' در انتها داشته باشد. می‌تواند شامل پارامترهای اختیاری با نحو ساده شبیه به شل باشد:

Key F1 R N Restart
Key F1 R N Restart fvwm1 -f .fvwmrc
Key F1 R N Restart xterm -n '"X console"' -T \"X\ console\" -e fvwm

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

Restart --pass-args window_manager

مشابه Restart بدون پارامتر است، اما نام مدیر پنجره فعلی با window_manager مشخص‌شده جایگزین شده و آرگومان‌های اصلی حفظ می‌شوند.

Restart --dont-preserve-state [other-params]

مشابه دستور زیر است:
Restart [other-params]

اما هیچ‌یک از وضعیت‌های پنجره را در طول راه‌اندازی مجدد ذخیره نمی‌کند.

بدون این گزینه، دستور Restart بیشتر وضعیت‌های هر پنجره را با نوشتن در فایلی به نام .fs-restart-$HOSTDISPLAY در دایرکتوری خانگی کاربر حفظ می‌کند.

SaveSession

باعث می‌شود مدیر نشست (در صورت وجود) نشست فعلی را ذخیره کند. این دستور برای xsm کار نمی‌کند زیرا xsm این قابلیت را پیاده‌سازی نکرده است. برای مدیریت راه دور xsm از سیگنال‌های یونیکس استفاده کنید.

SaveQuitSession

باعث می‌شود مدیر نشست ابتدا نشست را ذخیره کرده و سپس آن را خاموش کند. این دستور برای xsm کار نمی‌کند.

مجموعه‌های رنگی روشی قدرتمند برای کنترل رنگ‌ها هستند. آن‌ها منابع ظاهری مشترکی را ایجاد می‌کنند که بین fvwm و ماژول‌های آن به اشتراک گذاشته می‌شوند. هنگامی که یک مجموعه رنگ تغییر می‌کند، تمامی بخش‌های fvwm به آن واکنش نشان می‌دهند. یک مجموعه رنگ شامل رنگ پیش‌زمینه، پس‌زمینه، سایه و برجستگی (اغلب بر اساس رنگ پس‌زمینه) و نمای پس‌زمینه (شامل تصاویر و انواع گرادیان‌ها) است.

Colorset num [options]

مجموعه رنگ شماره num را ایجاد کرده یا تغییر می‌دهد. شماره می‌تواند از صفر شروع شده و عدد بزرگی باشد.

هشدار: بالاترین شماره مجموعه رنگ استفاده‌شده میزان مصرف حافظه را تعیین می‌کند؛ بنابراین اگر Colorset 100000 را تعریف کنید، حافظه برای ۱۰۰۰۰۱ مجموعه رنگ اختصاص می‌یابد. شماره‌ها را تا حد امکان کوچک نگه دارید.

طبق قرارداد، مجموعه‌های رنگی معمولاً به این صورت شماره‌گذاری می‌شوند:

# 0 = رنگ‌های پیش‌فرض
# 1 = پنجره‌های غیرفعال
# 2 = پنجره‌های فعال
# 3 = مدخل غیرفعال منو و پس‌زمینه منو
# 4 = مدخل فعال منو
# 5 = مدخل کم‌رنگ‌شده منو (فقط پس‌زمینه)
# 6 = پیش‌زمینه و پس‌زمینه ماژول
# 7 = رنگ‌های برجسته‌سازی

اگر به رنگ‌های بیشتری نیاز دارید، می‌توانید از قرارداد موجود در fvwm-themes استفاده کنید:

http://fvwm-themes.sourceforge.net/doc/colorsets

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

گزینه‌های options فهرستی جداشده با کاما از کلیدواژه‌های زیر است: 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.

گزینه‌های fg، Fore و Foreground یک نام رنگ دریافت کرده و رنگ پیش‌زمینه را تنظیم می‌کنند. نام ویژه Contrast می‌تواند برای انتخاب رنگی که کنتراست خوبی با پس‌زمینه دارد استفاده شود. برای بازگرداندن رنگ به پیش‌فرض نام رنگ را حذف کنید.

گزینه‌های bg، Back و Background رنگ پس‌زمینه را تنظیم می‌کنند. همچنین رنگ‌های برجستگی و سایه را روی مقادیری تنظیم می‌نمایند که جلوه سه‌بعدی ایجاد کنند. نام ویژه Average می‌تواند برای انتخاب میانگین رنگ‌های تصویر پیکسلی استفاده شود.

گزینه‌های hi، Hilite و Hilight رنگ برجستگی را تنظیم می‌کنند. در صورت عدم تعیین، از رنگ پس‌زمینه محاسبه می‌شود.

گزینه‌های sh، Shade و Shadow رنگ سایه را تنظیم می‌کنند. در صورت عدم تعیین، از رنگ پس‌زمینه محاسبه می‌شود.

گزینه fgsh رنگ استفاده‌شده در جلوه سایه فونت را تنظیم می‌کند.

گزینه‌های Pixmap، TiledPixmap و AspectPixmap یک نام فایل دریافت کرده، در ImagePath جستجو نموده و آن را به عنوان تصویر پس‌زمینه استفاده می‌کنند. TiledPixmap تصویر را بدون مقیاس‌بندی تکرار می‌کند، Pixmap تصویر را می‌کشد تا اندازه شیء شود، و AspectPixmap تصویر را با حفظ نسبت ابعاد مقیاس‌بندی می‌کند.

گزینه Transparent یک تصویر پس‌زمینه شفاف ایجاد می‌کند. این تصویر به عنوان پس‌زمینه پنجره برای دستیابی به شفافیت ریشه استفاده می‌شود. برای این کار باید از گزینه ParentalRelativity در دستور Style استفاده کنید.

xv -root -quit mybg.png; fvwm-root -d

شفافیت به‌دست‌آمده با Transparent به این بستگی دارد که آیا مجموعه رنگ به پیش‌زمینه یا پس‌زمینه پنجره اعمال شده باشد:

Colorset 12 VGradient 200 grey30 grey60
Colorset 17 Transparent
*FvwmIconMan: Colorset 12
*FvwmIconMan: PlainColorset 17

برای دستیابی به شفافیت ریشه بهتر است از گزینه RootTransparent استفاده شود.

گزینه RootTransparent [ buffer ] یک پس‌زمینه شفاف نسبت به ریشه ایجاد می‌کند. برای کارکرد این گزینه باید از برنامه‌ای سازگار با Esetroot یا fvwm-root با گزینه --retain-pixmap استفاده کنید. کلیدواژه buffer تنها زمانی مفید است که از گزینه Tint نیز استفاده شود.

گزینه‌های Shape، TiledShape و AspectShape یک نام فایل دریافت کرده و آن را به عنوان بیت‌مپ شکل ماسک استفاده می‌کنند.

هشدار: به دلیل نحوه پیاده‌سازی شکل‌ها در X11، نمی‌توان شکل‌دار شدن پنجره‌ها را لغو کرد و ممکن است نیاز به راه‌اندازی مجدد fvwm باشد.

گزینه ?Gradient ... یک تصویر پیکسلی گرادیان ایجاد کرده و آن را به اندازه پنجره می‌کشد. نوع آن می‌تواند یکی از مقادیر HGradient، VGradient، DGradient، BGradient، SGradient، CGradient، RGradient یا YGradient باشد.

گزینه Tint دو آرگومان شامل یک رنگ و یک درصد بین 0 تا 100 دریافت می‌کند و تصویر را با آن رنگ ترکیب می‌نماید.

گزینه fgTint رنگ پیش‌زمینه را با رنگ و درصد مشخص‌شده ترکیب می‌کند.

گزینه bgTint رنگ پس‌زمینه را با رنگ و درصد مشخص‌شده ترکیب می‌کند.

گزینه Alpha درصدی بین 0 تا 100 دریافت کرده و تصویر را با رنگ پس‌زمینه ترکیب می‌کند.

گزینه fgAlpha درصدی بین 0 تا 100 دریافت کرده و متن را با پس‌زمینه مجموعه رنگ ترکیب می‌نماید (برای فونت‌های Xft).

گزینه Dither خطای تصویری (dither) را برای نمایشگرهای با عمق رنگ ۱۶ یا کمتر فعال می‌کند. NoDither آن را غیرفعال می‌سازد.

گزینه‌های IconTint و IconAlpha رنگ و شفافیت آیکون‌های رندرشده در پس‌زمینه مجموعه رنگ را کنترل می‌کنند.

گزینه NoShape ماسک شکل را حذف می‌کند و Plain تصویر یا گرادیان پس‌زمینه را حذف می‌نماید.

مثال‌ها:

Colorset 3 fg tan, bg navy

رنگ پیش‌زمینه مجموعه رنگ ۳ را به tan و پس‌زمینه را به navy تغییر می‌دهد.

Colorset 3 bg "navy blue"

رنگ پس‌زمینه را به navy blue تغییر می‌دهد.

Colorset 3 AspectPixmap large_murky_dungeon.xpm

تصویر پس‌زمینه را تنظیم می‌کند.

Colorset 3 bg Average

رنگ پس‌زمینه و رنگ‌های برجستگی را مطابق با میانگین تصویر پس‌زمینه تنظیم می‌کند.

Colorset 3 YGradient 200 3 blue 1000 navy 1 blue 1000 navy

یک تصویر گرادیان یین و یانگ به مجموعه رنگ ۳ اضافه می‌کند.

#!/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

باعث چشمک زدن مجموعه رنگ ۷ می‌شود.

نام رنگ‌های استفاده‌شده در مجموعه‌های رنگی به صورت متغیرهای fvwm ذخیره می‌شوند که می‌توانند در دستورات جایگزین شوند:

AddToFunc InitFunction
+ I Exec exec xterm -fg $[fg.cs0] -bg $[bg.cs0]

CleanupColorsets

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

گرادیان‌های رنگ (Color Gradients)

گرادیان رنگ پس‌زمینه‌ای است که رنگ آن به تدریج از یک فام به فام دیگر تغییر می‌کند. هشت نوع گرادیان وجود دارد: HGradient افقی، VGradient عمودی، DGradient مورب، BGradient مورب معکوس، SGradient مربع‌های هم‌مرکز، CGradient دایره‌های هم‌مرکز، RGradient الگوی راداری و YGradient سبک یین و یانگ است.

نحو گرادیان رنگ دو شکل دارد:

?Gradient colors start-color end-color

این شکل یک گرادیان خطی را مشخص می‌کند. آرگومان‌ها شامل تعداد کل رنگ‌ها برای تخصیص (بین ۲ تا ۱۰۰۰)، رنگ اولیه و رنگ نهایی هستند.

مثال:

TitleStyle VGradient 20 rgb:b8/ce/bc rgb:5b/85/d0

?Gradient colors segments color length color [length color] ...

شکل دوم یک گرادیان غیرخطی را مشخص می‌کند. آرگومان‌ها عبارتند از: تعداد کل رنگ‌ها (بین ۲ تا ۱۰۰۰)، سپس تعداد بخش‌ها (segments). برای هر بخش، رنگ شروع، طول نسبی و رنگ پایان مشخص می‌شود.

مثال‌ها:

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

توجه: برخی سبک‌های گرادیان ممکن است کند بوده و حافظه زیادی مصرف کنند. برای بهبود کارایی می‌توانید موارد زیر را امتحان کنید:

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

MenuStyle <style> Hilight3DOff, !HilightBack

اطمینان از اینکه زیرمنوها روی منوی والد هم‌پوشانی نداشته باشند:

MenuStyle <style> PopupOffset 1 100

اجرای سرور X با قابلیت backing storage:

startx -- -wm +bs

ممکن است لازم باشد این مثال را با سیستم خود تطبیق دهید.

2026-06-28