FVWM3MENUS(1)   FVWM3MENUS(1)

fvwm3menus - منوهای fvwm

پیش از آنکه بتوان منویی را باز کرد، باید با استفاده از دستور AddToMenu با آیتم‌های منو پر شده و با دستورهای Key، PointerKey یا Mouse به یک کلید یا دکمهٔ ماوس مقید (bind) شود (راه‌های بسیار دیگری نیز برای فراخوانی منو وجود دارد). این کار معمولاً در فایل پیکربندی انجام می‌شود.

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

انواع منوها (Types of Menus)

چهار نوع منو با تفاوت‌های اندک وجود دارد:

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

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

«زیرمنوها» منوهای درون منوهای دیگر هستند. وقتی آیتمی از منو که عملیات آن دستور Popup است انتخاب شود، منوی مشخص‌شده به‌عنوان زیرمنویی برای والد باز می‌شود. هر نوع منویی می‌تواند دارای زیرمنو باشد.

«منوهای جداشونده» (Tear off menus) منوهایی هستند که مانند یک پنجرهٔ عادی از بستر اصلی خود روی میزکار «جدا شده‌اند». آن‌ها از منوهای دیگر با فشردن کلیدهای معین یا توالی‌های ماوس و یا با دستور TearMenuOff از درون یک منو ایجاد می‌شوند.

کالبدشناسی منو (Menu Anatomy)

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

علاوه بر این، اگر منو طولانی‌تر از آن باشد که در صفحه جا شود، آیتم‌های اضافی در یک منوی ادامه‌دار قرار می‌گیرند و زیرمنویی با رشتهٔ "More..." در انتهای منو جای می‌گیرد. رشتهٔ "More..." از تنظیمات محلی (locale) پیروی می‌کند.

در نهایت، ممکن است تصویری در امتداد هر یک از دو طرف منو کشیده شده باشد (یک «نوار کناری» یا "side bar").

پیمایش منو (Menu Navigation)

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

پیمایش با ماوس (Mouse Navigation)

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

چرخاندن چرخ ماوس روی یک منو بسته به سبک منوی MouseWheel، یا نشانگر را در طول منو به گردش درمی‌آورد (پیش‌فرض)، یا منوی زیر نشانگر را پیمایش می‌کند و یا طوری رفتار می‌کند که گویی روی منو کلیک شده است.

کلیک روی یک آیتمِ انتخاب‌شده آن را فعال می‌کند - اینکه دقیقاً چه رخ می‌دهد به نوع آیتم بستگی دارد.

کلیک روی عنوان، جداکننده، نوار کناری یا خارج از منو، آن را می‌بندد (استثنا: منوهای جداشونده را نمی‌توان از این طریق بست). فشردن دکمهٔ ۲ ماوس روی عنوان منو یا فعال‌سازی نوار جداسازی، یک منوی جداشونده از منوی جاری می‌سازد. کلیک روی یک آیتم عادی، دستوری را که به آن مقید شده فراخوانی می‌کند و کلیک روی یک آیتم زیرمنو یا تمام منوهای باز را بسته و زیرمنو را جایگزین آن‌ها می‌کند، یا منو را مستقر (post) می‌سازد (پیش‌فرض).

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

پیمایش با صفحه‌کلید (Keyboard Navigation)

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

آیتم‌ها را می‌توان مستقیماً با فشردن کلید میانبری (hotkey) که برای هر آیتم منو به‌طور جداگانه قابل‌پیکربندی است، انتخاب کرد. کلید میانبر با کشیده شدن خط زیر حرف آن در برچسب منو مشخص می‌شود. با سبک منوی AutomaticHotkeys، مدیر پنجرهٔ fvwm به‌طور خودکار به تمام آیتم‌های منو کلید میانبر اختصاص می‌دهد.

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

(فعال‌سازی آیتم) و

(بستن منو). به‌طور پیش‌فرض کلیدهای پرشمار دیگری نیز می‌توانند برای پیمایش درون منوها به کار روند:

کلیدهای Enter، Return و Space آیتم جاری را فعال می‌کنند.

کلیدهای Escape، Delete و Ctrl-G از توالی جاری منوها خارج شده یا منوی جداشونده را از بین می‌برند.

کلیدهای J، N، Cursor-Down، Tab، Meta-Tab و Ctrl-F به آیتم بعدی می‌روند.

کلیدهای K، P، Cursor-Up، Shift-Tab، Shift-Meta-Tab و Ctrl-B به آیتم قبلی می‌روند.

کلیدهای L، Cursor-Right و F وارد یک زیرمنو می‌شوند.

کلیدهای H، Cursor-Left و B به منوی پیشین بازمی‌گردند.

کلیدهای Ctrl-Cursor-Up، Ctrl-K Ctrl-P، Shift-Ctrl-Meta-Tab و Page-Up پنج آیتم به بالا می‌روند.

کلیدهای Ctrl-Cursor-Down، Ctrl-J Ctrl-N، Ctrl-Meta-Tab و Page-Down پنج آیتم به پایین می‌روند.

کلیدهای Shift-P، Home، Shift-Cursor-Up و Ctrl-A به نخستین آیتم می‌روند.

کلیدهای Shift-N، End، Shift-Cursor-Down و Ctrl-E به آخرین آیتم می‌روند.

کلیدهای Meta-P، Meta-Cursor-Up، Ctrl-Cursor-Left و Shift-Ctrl-Tab درست تا زیر جداکنندهٔ بعدی به بالا می‌روند.

کلیدهای Meta-N، Meta-Cursor-Down، Ctrl-Cursor-Right و Ctrl-Tab درست تا زیر جداکنندهٔ بعدی به پایین می‌روند.

کلید Insert زیرمنوی "More..." را (در صورت وجود) باز می‌کند.

کلید Backspace منو را جدا می‌کند.

قیود منو (Menu Bindings)

کلیدها و دکمه‌های ماوس مورد استفاده برای پیمایش منو را می‌توان با دستورهای Key و Mouse با بستر ویژهٔ 'M' پیکربندی کرد، که می‌تواند با 'T' برای عنوان منو، 'I' برای سایر آیتم‌های منو، 'S' برای هرگونه حاشیه یا تصویر کناری، '[' برای حاشیهٔ چپ به همراه تصویر کناری چپ، ']' برای حاشیهٔ راست به همراه تصویر کناری راست، '-' برای حاشیهٔ بالا و '_' برای حاشیهٔ پایین ترکیب شود. بستر منو از مجموعه اقدامات اختصاصی خود که می‌توان آن‌ها را به کلیدها و دکمه‌های ماوس مقید کرد بهره می‌برد. این اقدامات عبارتند از: _MenuClose_، MenuCloseAndExec، MenuEnterContinuation، MenuEnterSubmenu، MenuLeaveSubmenu، MenuMoveCursor، MenuCursorLeft، MenuCursorRight، MenuSelectItem، MenuScroll و MenuTearOff.

لغو یا تغییر دادن کلید Escape بدون هیچ کلید تبدیل‌گری (modifier) برای بستن منو امکان‌پذیر نیست. همچنین نمی‌توان دکمهٔ ۱ ماوس، کلیدهای جهت‌نما یا کلید enter را برای پیمایش پایه از تعریف خارج کرد.

دستور MenuClose از توالی جاری منوها خارج شده یا یک منوی جداشونده را از بین می‌برد.

دستور MenuCloseAndExec از توالی جاری منوها خارج شده یا یک منوی جداشونده را از بین می‌برد و بقیهٔ خط را به‌عنوان دستور اجرا می‌کند.

دستور MenuEnterContinuation زیرمنوی "More..." را (در صورت وجود) باز می‌کند.

دستور MenuEnterSubmenu وارد یک زیرمنو می‌شود.

دستور MenuLeaveSubmenu به منوی پیشین بازمی‌گردد.

دستور MenuMoveCursor n [m] انتخاب را به آیتم دیگری منتقل می‌کند. اگر آرگومان نخست صفر باشد، آرگومان دوم یک آیتم مطلق در منو را برای بردن نشانگر به آن مشخص می‌سازد. آیتم‌های منفی از انتهای منو شمرده می‌شوند. اگر آرگومان نخست غیرصفر باشد، آرگومان دوم باید حذف شود و آرگومان نخست تغییر نسبی را در آیتم انتخاب‌شده تعیین می‌کند. موقعیت‌ها می‌توانند با پسوند 's' همراه شوند تا مشخص کنند آیتم‌ها تنها باید به نخستین آیتم‌های پس از جداکننده‌ها اشاره داشته باشند.

دستور MenuCursorLeft با سبک منوی SubmenusLeft وارد یک زیرمنو می‌شود و با سبک منوی SubmenusRight به منوی قبلی بازمی‌گردد.

دستور MenuCursorRight با سبک منوی SubmenusRight وارد یک زیرمنو می‌شود و با سبک منوی SubmenusLeft به منوی قبلی بازمی‌گردد.

دستور MenuSelectItem عملیات مربوط به آن آیتم منو را اجرا می‌کند.

دستور MenuScroll n پیمایش منو را بر اساس سبک منوی MouseWheel به اندازهٔ n آیتم انجام می‌دهد. فاصله می‌تواند با یک 's' پسوندگذاری شود تا مشخص کند آیتم‌ها تنها باید به نخستین آیتم‌های پس از جداکننده‌ها ارجاع یابند.

دستور MenuTearOff یک منوی عادی را به منوی «جداشده» تبدیل می‌کند. برای جزئیات به Tear Off Menus مراجعه کنید.

منوهای جداشونده (Tear Off Menus)

منوی جداشونده منویی است که از پنجره‌ای که به آن متصل بوده «کنده شده» و به پنجرهٔ ریشه (root window) سنجاق شده باشد. سه راه برای جدا کردن یک منو وجود دارد: کلیک روی عنوان منو با دکمهٔ ۲ ماوس، فشردن

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

اقدامات توکار جداسازی را می‌توان با لغو تعریف اقدامات توکار منو که به جداسازی مقید هستند، بازنویسی کرد. جهت حذف قید توکار دکمهٔ ۲ ماوس، از این دستور استفاده کنید:

Mouse 2 MT A -

و جهت حذف قید توکار backspace، از این دستور استفاده کنید:

Key Backspace M A -

برای جزئیات بیشتر در خصوص چگونگی اختصاص قیود دیگر جهت جداسازی، به بخش Menu Bindings مراجعه کنید.

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

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

Style fvwm_menu UsePPosition

جهت حذف حاشیه‌ها و دکمه‌ها از یک منوی جداشونده با حفظ عنوان منو، می‌توانید از دستور زیر استفاده کنید:

Style fvwm_menu !Button 0, !Button 1
Style fvwm_menu !Button 2, !Button 3
Style fvwm_menu !Button 4, !Button 5
Style fvwm_menu !Button 6, !Button 7
Style fvwm_menu !Button 8, !Button 9
Style fvwm_menu Title, HandleWidth 0

یک منوی جداشونده پیوندی میان یک پنجره و یک منو است. منو توسط یک پنجره بلعیده شده و عنوان آن جدا گردیده و در عنوان پنجره نمایش داده می‌شود. مزیت اصلی این است که منو دائمی می‌شود - فعال‌سازی یک آیتم باعث بسته شدن منو نخواهد شد. بنابراین، بدون نیاز به باز کردن مجدد می‌توان بارها از آن استفاده کرد. برای نابود کردن چنین منویی، پنجرهٔ آن را ببندید یا کلید Escape را فشار دهید.

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

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

برای ایجاد یک منوی جداشونده بدون باز کردن اولیهٔ منوی عادی، می‌توان گزینهٔ TearOffImmediately را به دستور Menu یا Popup اضافه کرد.

AddToMenu menu-name [menu-label action]

تعریف یک منو را آغاز می‌کند یا مواردی را به آن می‌افزاید. به‌طور معمول تعریف یک منو به این شکل است:
AddToMenu Utilities Utilities Title
 + Xterm           Exec  exec xterm -e tcsh
 + Rxvt            Exec  exec rxvt
 + "Remote Logins" Popup Remote-Logins
 + Top             Exec  exec rxvt -T Top -n Top -e top
 + Calculator      Exec  exec xcalc
 + Xman            Exec  exec xman
 + Xmag            Exec  exec xmag
 + emacs           Exec  exec xemacs
 + Mail            MailFunction xmh "-font fixed"
 + ""              Nop
 + Modules         Popup Module-Popup
 + ""              Nop
 + Exit Fvwm       Popup Quit-Verify

منو می‌تواند از طریق زیر فراخوانی شود:

Mouse 1 R A Menu Utilities Nop

یا

Mouse 1 R A Popup Utilities

هیچ نمادی برای پایان منو وجود ندارد. نیازی نیست منوها در یک بخش پیوسته از فایل config تعریف شوند. بخش داخل نقل‌قول (یا کلمه اول) در مثال‌های بالا، برچسب منو است که هنگام باز شدن منو توسط کاربر نمایش داده می‌شود. بخش باقی‌مانده یک دستور fvwm است که در صورت انتخاب آن آیتم توسط کاربر اجرا می‌شود. یک برچسب منوی خالی ("") و تابع Nop برای درج یک جداکننده در منو استفاده می‌شوند.

کلمات کلیدی DynamicPopUpAction و DynamicPopDownAction در صورتی که به عنوان نام یک آیتم منو استفاده شوند، معنای ویژه‌ای دارند. کنش (action) پس از این کلمه کلیدی، هر زمان که منو باز (pop up) یا بسته (pop down) شود اجرا می‌گردد. از این طریق می‌توانید منوهای پویا را پیاده‌سازی کنید. حتی این امکان وجود دارد که منو خودش را با DestroyMenu نابود کرده و از ابتدا دوباره بسازد. هنگامی که منو نابود شد (مگر اینکه هنگام نابودی منو از گزینه recreate استفاده کرده باشید)، اضافه کردن دوباره کنش پویا را فراموش نکنید.

نکته: کنش‌هایی را که نیازمند تعامل کاربر هستند فراخوانی نکنید. آنها ممکن است ناموفق بوده و منوهای شما را به هم بریزند. دستور Silent را ببینید.

هشدار: دستورهای MenuStyle را به عنوان کنش‌های منوی پویا صادر نکنید. احتمال زیادی وجود دارد که این کار باعث کرش کردن fvwm شود.

کلمه کلیدی Greyed همچنان آیتم منو را نمایش می‌دهد، اما آن را خاکستری کرده و گزینه را غیرقابل انتخاب می‌کند.

چندین اسکریپت با قابلیت پیکربندی همراه با fvwm برای تولید خودکار منو نصب شده‌اند. آنها صفحات راهنمای (man page) مخصوص به خود را دارند. برخی از آنها، به‌ویژه fvwm-menu-directory و fvwm-menu-desktop، می‌توانند با DynamicPopupAction برای ایجاد فهرست دایرکتوری یا فهرست برنامه‌های کاربردی GNOME/KDE استفاده شوند.

مثال (مرورگر فایل):

# You can find the shell script fvwm_make_browse_menu.sh
# in the utils/ directory of the distribution.
AddToMenu BrowseMenu
+ DynamicPopupAction PipeRead \
'fvwm_make_browse_menu.sh BrowseMenu'

مثال (منوی تصویر):

# Build a menu of all .jpg files in
# $HOME/Pictures
AddToMenu JpgMenu foo title
+ DynamicPopupAction Function MakeJpgMenu
AddToFunc MakeJpgMenu
+ I DestroyMenu recreate JpgMenu
+ I AddToMenu JpgMenu Pictures Title
+ I PipeRead 'for i in $HOME/Pictures/*.jpg; \
do echo AddToMenu JpgMenu "`basename $i`" Exec xv $i; done'

کلمه کلیدی MissingSubmenuFunction معنای مشابهی دارد. هر زمان که بخواهید یک زیرمنو که وجود ندارد را باز کنید، اجرا می‌شود. با این تابع می‌توانید منوها را در لحظه ایجاد و نابود کنید. شما می‌توانید از هر دستوری پس از کلمه کلیدی استفاده کنید، اما اگر نام آیتمی (که یک زیرمنو است) که با AddToFunc تعریف شده به دنبال آن بیاید، fvwm این دستور را اجرا می‌کند:

Function <function-name> <submenu-name>

یعنی نام به عنوان آرگومان اول به تابع ارسال می‌شود و می‌توان با "$0" به آن ارجاع داد.

اسکریپت fvwm-menu-directory که پیش‌تر به آن اشاره شد، می‌تواند همراه با MissingSubmenuFunction برای ایجاد یک فهرست بازگشتی و به‌روز از دایرکتوری استفاده شود.

مثال:

# There is another shell script fvwm_make_directory_menu.sh
# in the utils/ directory of the distribution. To use it,
# define this function in your configuration file:
DestroyFunc MakeMissingDirectoryMenu
AddToFunc MakeMissingDirectoryMenu
+ I PipeRead fvwm_make_directory_menu.sh $0
DestroyMenu SomeMenu
AddToMenu SomeMenu
+ MissingSubmenuFunction MakeMissingDirectoryMenu
+ "Root directory" Popup /

این پیاده‌سازی دیگری از مرورگر فایل است که از زیرمنوها برای زیردایرکتوری‌ها استفاده می‌کند.

عناوین را می‌توان درون منو استفاده کرد. اگر گزینه top را پس از کلمه کلیدی Title اضافه کنید، عنوان به بالای منو افزوده می‌شود. اگر قبلاً عنوانی وجود داشته باشد، بازنویسی می‌شود.

AddToMenu Utilities Tools Title top

تمام متن تا نخستین Tab در برچسب منو در سمت چپ منو تراز می‌شود، تمام متن سمت راست نخستین Tab در یک ستون دوم به صورت چپ‌چین تراز می‌شود و تمام متن پس از آن در ستون سوم راست‌چین قرار می‌گیرد. تمام Tabهای دیگر با فاصله جایگزین می‌شوند. توجه داشته باشید که می‌توانید این قالب‌بندی را با گزینه ItemFormat در دستور MenuStyle تغییر دهید.

اگر برچسب منو شامل یک علامت امپرسند ('&') باشد، نویسه بعدی به عنوان کلید میان‌بر (hot-key) برای آن آیتم منو در نظر گرفته می‌شود. کلیدهای میان‌بر در برچسب زیرخط‌دار می‌شوند. برای درج یک '&' واقعی، مقدار "&&" را وارد کنید. فشردن کلید میان‌بر در فهرست آیتم‌های دارای این کلید میان‌بر حرکت می‌کند یا در صورتی که تنها یک آیتم با این کلید وجود داشته باشد، آن را انتخاب می‌کند.

اگر برچسب منو شامل زیررشته‌ای باشد که با علامت‌های ستاره جدا شده است، انتظار می‌رود متن بین ستاره‌ها نام یک فایل تصویر برای درج در منو باشد. برای داشتن یک '' واقعی، "*" را درج کنید. برای مثال:

+ Calculator*xcalc.xpm* Exec exec xcalc

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

+ *xcalc.xpm*           Exec exec xcalc

برچسب "Calculator" را حذف می‌کند، اما تصویر را باقی می‌گذارد.

اگر برچسب منو شامل زیررشته‌ای باشد که با علامت‌های درصد جدا شده است، انتظار می‌رود متن بین علامت‌های درصد نام یک فایل تصویر (یک به‌اصطلاح mini icon) برای درج در سمت چپ برچسب منو باشد. یک mini icon دوم که در سمت راست منو رسم می‌شود نیز می‌تواند به همین روش مشخص شود. برای داشتن یک '%' واقعی، "%%" را وارد کنید. برای مثال:

+ Calculator%xcalc.xpm% Exec exec xcalc

یک آیتم منو با برچسب "Calculator" به همراه تصویری از ماشین‌حساب در سمت چپ آن درج می‌کند. دستور زیر:

+ %xcalc.xpm%           Exec exec xcalc

برچسب "Calculator" را حذف می‌کند، اما تصویر را باقی می‌گذارد. تصاویر استفاده‌شده در این ویژگی باید کوچک باشند (احتمالاً ۱۶x۱۶).

اگر نام منو (نه برچسب) شامل زیررشته‌ای باشد که با علامت‌های ات‌ساین ('@') جدا شده است، انتظار می‌رود متن بین آنها نام یک فایل تصویر برای رسم در امتداد سمت چپ منو باشد (یک side pixmap). ممکن است ترجیح دهید به جای آن از گزینه SidePic در دستور MenuStyle استفاده کنید. برای داشتن یک '@' واقعی، "@@" را وارد کنید. برای مثال:

AddToMenu StartMenu@linux-menu.xpm@

منویی با یک تصویر در گوشه پایین سمت چپ ایجاد می‌کند.

اگر نام منو همچنین شامل زیررشته‌ای باشد که با '^' محصور شده است، انتظار می‌رود متن بین '^'ها نام یک رنگ X11 باشد و ستون حاوی تصویر کناری با آن رنگ رنگ‌آمیزی شود. می‌توانید این رنگ را برای یک سبک منو با استفاده از گزینه SideColor در دستور MenuStyle تعیین کنید. برای درج یک '^' واقعی، "^^" را وارد کنید. مثال:

AddToMenu StartMenu@linux-menu.xpm@^blue^

منویی با یک تصویر در گوشه پایین سمت چپ ایجاد کرده و ناحیه‌ای از منو را که تصویر در آن قرار دارد با رنگ آبی رنگ‌آمیزی می‌کند.

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

DestroyMenu [recreate] menu

یک منو را حذف می‌کند، به طوری که ارجاعات بعدی به آن دیگر معتبر نخواهند بود. می‌توانید از این دستور برای تغییر محتویات یک منو در طول یک نشست fvwm استفاده کنید. منو را می‌توان با استفاده از AddToMenu دوباره ایجاد کرد. پارامتر اختیاری recreate به fvwm می‌گوید که منو را به طور کامل دور نیندازد، بلکه تمام آیتم‌های منو (شامل عنوان) را حذف کند.
DestroyMenu Utilities

Title

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

Menu menu-name [position] [double-click-action]

باعث می‌شود منویی که پیش‌تر تعریف شده است به‌صورت چسبنده (sticky) ظاهر شود. به این معنا که اگر کاربر منو را به‌جای عمل کشیدن (drag)، با کلیک کردن فراخوانی کند، منو باز می‌ماند. اگر کاربر هنگام بالا آوردن منو روی یک دکمه دوبار کلیک کند (یا اگر منو به یک کلید مقید شده باشد، آن کلید را سریعاً دوبار بزند)، دستور double-click-action اجرا می‌شود. اگر اقدام دوبار کلیک مشخص نشده باشد، دوبار کلیک روی منو کاری انجام نمی‌دهد. با این حال، اگر منو با یک مورد منو (یعنی نه با یک عنوان یا جداکننده) آغاز شود و اقدام دوبار کلیک مشخص نشده باشد، دوبار کلیک کردن نخستین مورد منو را فراخوانی می‌کند (اما تنها در صورتی که اشاره‌گر واقعاً روی آن مورد قرار داشته باشد).

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

آرگومان‌های position امکان جای‌گذاری منو را در جایی از صفحه فراهم می‌کنند، برای نمونه در مرکز صفحه نمایش قابل مشاهده یا بالای یک نوار عنوان. در اصل سازوکار آن به این صورت است: شما یک context-rectangle (مستطیل زمینه) و یک فاصله جبرانی (offset) نسبت به این مستطیل مشخص می‌کنید که گوشه بالا-چپ منو با آن، از گوشه بالا-چپ مستطیل جابه‌جا می‌شود. آرگومان‌های position از چند بخش تشکیل شده‌اند:

[context-rectangle] x y [special options]

مقدار context-rectangle می‌تواند یکی از موارد زیر باشد:

Root

پنجره ریشه (root window) صفحه نمایش جاری.

Monitor

ناحیه صفحه نمایش RandR جاری.

Mouse

یک مستطیل ۱×۱ در موقعیت ماوس.

Window

قاب پنجره زمینه.

Interior

بخش داخلی پنجره زمینه.

Title

عنوان پنجره یا آیکون زمینه.

Button<n>

دکمه <n> از پنجره زمینه.

Icon

آیکون پنجره زمینه.

Menu

منوی جاری.

Item

مورد منوی جاری.

Context

پنجره، منو یا آیکون جاری.

This

هر ویجتی که اشاره‌گر روی آن قرار دارد (مانند گوشه‌ای از یک پنجره یا پنجره ریشه).

Rectangle <_geometry_>

مستطیل تعریف‌شده با <_geometry_> در قالب هندسه X. پهنا و ارتفاع در صورت حذف، به‌طور پیش‌فرض ۱ در نظر گرفته می‌شوند.

اگر context-rectangle حذف شود یا نامعتبر باشد (برای مثال "item" روی یک پنجره)، مقدار "Mouse" پیش‌فرض خواهد بود. توجه داشته باشید که همه این موارد در تمام شرایط معنا ندارند (مثلاً "Icon" زمانی که اشاره‌گر روی یک منو قرار دارد).

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

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

اگر x یا y دارای پیشوند "'o<number>" باشند که در آن <number> یک عدد صحیح است، منو و مستطیل پیش از اعمال هر آفست دیگری، طوری جابه‌جا می‌شوند که در موقعیت مشخص‌شده همپوشانی پیدا کنند. منو و مستطیل به‌گونه‌ای قرار می‌گیرند که پیکسل واقع در درصد <number> از پهنا/ارتفاع مستطیل دقیقاً روی پیکسل واقع در درصد <number> از پهنا/ارتفاع منو قرار گیرد. بنابراین "o0" به این معناست که حاشیه‌های بالا/چپ منو و مستطیل همپوشان می‌شوند، با "o100" حاشیه‌های پایین/راست همپوشانی دارند و اگر از "o50" استفاده کنید، نسبت به یکدیگر در مرکز قرار می‌گیرند (آن را امتحان کنید تا ببینید بسیار ساده‌تر از این توضیحات است). پیش‌فرض "o0" است. پیشوند "o<number>" مخففی برای "+<number>-<number>m" است.

پیشوند 'c' معادل "o50" است. مثال‌ها:

# فهرست پنجره‌ها در وسط صفحه نمایش
WindowList Root c c
# منو در سمت چپ یک پنجره
Menu name window -100m c+0
# منوی بالاپرنده ۸ پیکسل بالاتر از اشاره‌گر ماوس
Popup name mouse c -100m-8p
# در جایی از صفحه نمایش
Menu name rectangle 512x384+1+1 +0 +0
# تراز عمودی در مرکز یک مورد منو
AddToMenu foobar-menu
 + "first item" Nop
 + "special item" Popup "another menu" item +100 c
 + "last item" Nop
# بالای نخستین مورد منو
AddToMenu foobar-menu
 + "first item" Popup "another menu" item +0 -100m

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

گزینه‌های ویژه (Special options)

برای ایجاد یک منوی جداشونده (tear off) بدون باز کردن منوی معمولی، گزینه TearOffImmediately را اضافه کنید. در حالت عادی، منو پیش از جدا شدن، برای کسری از ثانیه در وضعیت معمولی باز می‌شود. از آنجا که جدا کردن منو، آن را مانند هر پنجره دیگری قرار می‌دهد، باید موقعیت آن به‌صورت صریح مشخص شود:

# جلوگیری از جای‌گذاری پنجره منو توسط fvwm
Style <name of menu> UsePPosition
# منو در گوشه بالا-چپ صفحه نمایش
Menu Root 0p 0p TearOffImmediately

سبک‌های منوی Animated و Mwm یا Win ممکن است منو را به نقطه دیگری از صفحه منتقل کنند. اگر این رفتار را نمی‌خواهید، می‌توانید Fixed را به‌عنوان یک گزینه بیفزایید. این مورد برای نمونه زمانی رخ می‌دهد که بخواهید منو همیشه در گوشه بالا-راست صفحه نمایش باز شود.

مایلید هنگام کلیک روی مورد منو، منو در کجا ظاهر شود؟ حالت پیش‌فرض قرار دادن عنوان زیر مکان‌نما است، اما اگر می‌خواهید در همان جایی که آرگومان‌های position مشخص کرده‌اند ظاهر شود، از گزینه SelectInPlace استفاده کنید. اگر می‌خواهید اشاره‌گر روی عنوان منو قرار گیرد، SelectWarp را نیز به کار ببرید. توجه داشته باشید که این گزینه‌ها تنها در صورتی اعمال می‌شوند که گزینه PopupAsRootMenu در دستور MenuStyle استفاده شده باشد.

هر زمان که با بالا آمدن زیرمنو، اشاره‌گر روی یکی از موارد قرار گیرد، اشاره‌گر به عنوان زیرمنو منتقل (warp) می‌شود (سبک منوی fvwm) یا اصلاً هرگز به عنوان منتقل نمی‌شود (سبک‌های منوی Mwm یا Win). می‌توانید با گزینه WarpTitle (NoWarp)، این انتقال را هنگام باز شدن زیرمنو اجباری (ممنوع) کنید.

توجه داشته باشید که special-options با یک منوی معمولی که آرگومان‌های موقعیت دیگری ندارد نیز کار می‌کنند.

Popup PopupName [position] [default-action]

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

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

مثال زیر دکمه‌های ۲ و ۳ ماوس را به یک منوی بالاپرنده با نام "Window Ops" مقید می‌کند. اگر دکمه‌های ۲ یا ۳ روی قاب پنجره، نوار کناری یا نوار عنوان، بدون کلیدهای تغییردهنده (هیچ‌یک از shift، control یا meta) فشرده شوند، منو ظاهر می‌شود.

Mouse 2 FST N Popup "Window Ops"
Mouse 3 FST N Popup "Window Ops"

منوهای بالاپرنده را می‌توان از طریق استفاده از دستور Key به کلیدها مقید کرد. با مقید کردن منوها به کلیدها و کنترل از طریق کلیدهای جهت‌نمای بالا، پایین و enter، می‌توان بدون استفاده از ماوس با آن‌ها کار کرد.

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

مثال زیر یک زیرمنو با نام "Quit-Verify" تعریف کرده و آن را درون یک منوی اصلی به نام "RootMenu" پیوند می‌دهد:

AddToMenu Quit-Verify
 + "Really Quit Fvwm?" Title
 + "Yes, Really Quit"  Quit
 + "Restart Fvwm"      Restart
 + ""                  Nop
 + "No, Don't Quit"    Nop
AddToMenu RootMenu "Root Menu" Title
 + "Open XTerm Window" Popup NewWindowMenu
 + "Login as Root"     Exec exec xterm -T Root -n Root -e su -
 + "Login as Anyone"   Popup AnyoneMenu
 + "Remote Hosts"      Popup HostMenu
 + ""                  Nop
 + "X utilities"       Popup Xutils
 + ""                  Nop
 + "Fvwm Modules"      Popup Module-Popup
 + "Fvwm Window Ops"   Popup Window-Ops
 + ""                  Nop
 + "Previous Focus"    Prev (AcceptsFocus) Focus
 + "Next Focus"        Next (AcceptsFocus) Focus
 + ""                  Nop
 + "Refresh screen"    Refresh
 + ""                  Nop
 + "Reset X defaults"  Exec xrdb -load \
                 $HOME/.Xdefaults
 + ""                  Nop
 + ""                  Nop
 + Quit                Popup Quit-Verify

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

TearMenuOff

هنگامی که به یک مورد منو اختصاص داده شود، یک نوار جداکننده (یک خط‌چین افقی) درون منو درج می‌کند. فعال کردن آن مورد منو را جدا می‌کند. اگر مورد منو دارای برچسب باشد، به‌جای خط‌چین نمایش داده می‌شود. اگر خارج از منوها استفاده شود، این دستور کاری انجام نمی‌دهد. مثال‌ها:
AddToMenu WindowMenu
+ I "" TearMenuOff
AddToMenu RootMenu
+ I "click here to tear me off" TearMenuOff

سبک‌های منو (Menu styles) ظاهر و رفتار را توصیف می‌کنند، همان‌طور که سبک‌های معمولی این کار را برای پنجره‌ها انجام می‌دهند. سبک‌های منو به منوهای جداگانه یا همه منوها اختصاص می‌یابند، و تغییر سبک منو بلافاصله روی تمام منوهایی که از آن استفاده می‌کنند تأثیر می‌گذارد. (اگر یک سبک منو از داخل یک منو استفاده شود، تغییرات دفعه بعدی که منوی مربوطه باز شود اعمال خواهند شد.)

ChangeMenuStyle menustyle menu ...

سبک منوی menu را به menustyle تغییر می‌دهد. شما می‌توانید در هر بار فراخوانی ChangeMenuStyle بیش از یک منو را مشخص کنید.

CopyMenuStyle orig-menustyle dest-menustyle

orig-menustyle را در dest-menustyle رونویسی می‌کند، که در آن orig-menustyle یک سبک منوی موجود است. اگر سبک منوی dest_menustyle وجود نداشته باشد، ایجاد می‌شود.

DestroyMenuStyle menustyle

سبک منوی با نام menustyle را حذف کرده و تمام منوهایی که از این سبک استفاده می‌کنند را به سبک پیش‌فرض تغییر می‌دهد؛ شما نمی‌توانید سبک منوی پیش‌فرض را نابود کنید.
DestroyMenuStyle pixmap1

MenuStyle stylename [options]

یک سبک منوی جدید تنظیم می‌کند یا سبکی که قبلاً تعریف شده را تغییر می‌دهد. stylename نام سبک است؛ اگر شامل فاصله یا تب باشد باید درون نقل‌قول قرار گیرد. نام «*» برای سبک منوی پیش‌فرض رزرو شده است. سبک منوی پیش‌فرض برای هر شیء شبیه منو (مانند پنجره ایجاد شده توسط دستور WindowList) که با استفاده از ChangeMenuStyle سبکی به آن اختصاص داده نشده است، استفاده می‌شود. همچنین DestroyMenuStyle را ببینید. هنگام استفاده از حالت تک‌رنگ (monochrome)، گزینه‌های رنگ نادیده گرفته می‌شوند.

options فهرستی جدا شده با کاما از برخی از کلیدواژه‌های زیر است: Fvwm / Mwm / Win، BorderWidth، HilightBack / !HilightBack، HilightTitleBack، ActiveFore / !ActiveFore، MenuColorset، ActiveColorset، GreyedColorset، TitleColorset، Hilight3DThick / Hilight3DThin / Hilight3DOff، Hilight3DThickness، Animation / !Animation، Font، TitleFont، PopupDelay، PopupOffset، TitleWarp / !TitleWarp، TitleUnderlines0 / TitleUnderlines1 / TitleUnderlines2، SeparatorsLong / SeparatorsShort، TrianglesSolid / TrianglesRelief، PopupImmediately / PopupDelayed، PopdownImmediately / PopdownDelayed، PopupActiveArea، DoubleClickTime، SidePic، SideColor، PopupAsRootMenu / PopupAsSubmenu / PopupIgnore / PopupClose، RemoveSubmenus / HoldSubmenus، SubmenusRight / SubmenusLeft، SelectOnRelease، ItemFormat، VerticalItemSpacing، VerticalMargins، VerticalTitleSpacing، AutomaticHotkeys / !AutomaticHotkeys، UniqueHotkeyActivatesImmediate / !UniqueHotkeyActivatesImmediate، MouseWheel، ScrollOffPage / !ScrollOffPage، TrianglesUseFore / !TrianglesUseFore، Translucent / !Translucent.

در فهرست بالا برخی از گزینه‌ها به صورت جفت یا سه‌تایی با یک '/' در میان آنها فهرست شده‌اند. این گزینه‌ها مانعة‌الجمع هستند. تمام گزینه‌های جفت را می‌توان با افزودن پیشوند ! به گزینه نقیض کرد تا اثر گزینه همتای خود را داشته باشند.

گزینه‌های Fvwm، Mwm و Win تمام گزینه‌ها را به سبک با همین نام در نسخه‌های پیشین fvwm بازنشانی می‌کنند. پیش‌فرض برای سبک‌های منوی جدید، سبک Fvwm است. این گزینه‌ها همه گزینه‌های دیگر را به جز HilightBack، ActiveFore و PopupDelay بازنویسی می‌کنند، بنابراین فقط باید به عنوان اولین گزینه مشخص‌شده برای یک سبک منو یا برای بازنشانی سبک به رفتاری مشخص استفاده شوند. همین اثر را می‌توان با تنظیم تک‌تک تمام گزینه‌های دیگر نیز ایجاد کرد.

منوهای با سبک Mwm و Win زیرمنوها را به صورت خودکار باز می‌کنند. منوهای Win آیتم جاری منو را با تغییر پس‌زمینه به تیره مشخص می‌کنند. زیرمنوهای Fvwm روی منوی والد هم‌پوشانی دارند، در حالی که منوهای سبک Mwm و Win هرگز با منوی والد هم‌پوشانی پیدا نمی‌کنند.

سبک Fvwm معادل است با !HilightBack، Hilight3DThin، !ActiveFore، !Animation، Font، PopupOffset 0 67، TitleWarp، TitleUnderlines1، SeparatorsShort، TrianglesRelief، PopupDelayed، PopdownDelayed، PopupDelay 150، PopdownDelay 150، PopupAsSubmenu، HoldSubmenus، SubmenusRight، BorderWidth 2، !AutomaticHotkeys، UniqueHotkeyActivatesImmediate، PopupActiveArea 75.

سبک Mwm معادل است با !HilightBack، Hilight3DThick، !ActiveFore، !Animation، Font، PopupOffset -3 100، !TitleWarp، TitleUnderlines2، SeparatorsLong، TrianglesRelief، PopupImmediately، PopdownDelayed، PopdownDelay 150، PopupAsSubmenu، HoldSubmenus، SubmenusRight، BorderWidth 2، UniqueHotkeyActivatesImmediate، !AutomaticHotkeys، PopupActiveArea 75.

سبک Win معادل است با HilightBack، Hilight3DOff، ActiveFore، !Animation، Font، PopupOffset -5 100، !TitleWarp، TitleUnderlines1، SeparatorsShort، TrianglesSolid، PopupImmediately، PopdownDelayed، PopdownDelay 150، PopupAsSubmenu، RemoveSubmenus، SubmenusRight، BorderWidth 2، UniqueHotkeyActivatesImmediate، !AutomaticHotkeys، PopupActiveArea 75.

گزینه BorderWidth ضخامت حاشیه دور منوها را بر حسب پیکسل دریافت می‌کند. مقدار آن می‌تواند بین ۰ تا ۵۰ پیکسل باشد. پیش‌فرض ۲ است. استفاده از یک مقدار نامعتبر، پهنای حاشیه را به مقدار پیش‌فرض بازمی‌گرداند.

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

گزینه HilightTitleBack برجسته‌سازی پس‌زمینه عنوان‌های منو را روشن می‌کند. رنگ پس‌زمینه TitleColorset برای برجسته‌سازی به کار می‌رود.

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

گزینه MenuColorset مجموعه رنگ (colorset) مورد استفاده برای رنگ‌آمیزی منو را کنترل می‌کند. اگر برای مجموعه رنگ یک pixmap یا طیف رنگی تعریف شده باشد، از آن به عنوان پس‌زمینه منو استفاده می‌شود. ماسک شکل (shape mask) مجموعه رنگ برای شکل دادن به منو به کار می‌رود. لطفاً برای جزئیات درباره مجموعه رنگ‌ها به بخش Colorsets مراجعه کنید.

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

گزینه GreyedColorset دقیقاً مانند MenuColorset عمل می‌کند، اما پیش‌زمینه حاصل از مجموعه رنگ جایگزین رنگ داده شده با سبک منوی Greyed می‌شود. هیچ بخش دیگری از مجموعه رنگ استفاده نمی‌شود.

گزینه TitleColorset دقیقاً مانند MenuColorset عمل می‌کند، اما فقط برای عنوان‌های منو استفاده می‌شود.

گزینه Translucent یک جلوه شبه‌شفاف را کنترل می‌کند که از تصویری از میزکار زیر منو به عنوان تصویر پس‌زمینه خود استفاده می‌نماید. این گزینه یک مقدار می‌گیرد که عددی بین ۰ (کاملاً نیمه‌شفاف) و ۱۰۰ (غیر شفاف) است، که درصد نیمه‌شفافی را نشان می‌دهد. از !Translucent (یا بدون مقدار اضافی) برای خاموش کردن این جلوه استفاده کنید. جلوه نیمه‌شفاف فقط برای منوهای معمولی اعمال می‌شود و برای منوهای «جدا شده» (torn off) اعمال نمی‌گردد. توجه داشته باشید که فقط پس‌زمینه منو نیمه‌شفاف است، و HilightBack برای آیتم فعال و HilightTitleBack برای عنوان نیمه‌شفاف نیستند. برای داشتن یک منوی کاملاً نیمه‌شفاف از دستور زیر استفاده کنید:

MenuStyle * Translucent 60, !HilightBack, !HilightTitleBack, ActiveFore

گزینه‌های Hilight3DThick، Hilight3DThin و Hilight3DOff تعیین می‌کنند که آیا آیتم انتخاب‌شده منو با برجستگی سه‌بعدی مشخص شود یا خیر. برجستگی‌های ضخیم دارای پهنای دو پیکسل و برجستگی‌های نازک دارای پهنای یک پیکسل هستند.

گزینه Hilight3DThickness یک آرگومان عددی می‌گیرد که می‌تواند بین -50 تا +50 پیکسل باشد. با مقادیر منفی، آیتم منو ظاهری فشرده‌شده به داخل پیدا می‌کند. سه دستور فوق معادل ضخامت‌های ۲، ۱ و ۰ هستند.

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

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

گزینه PopupDelay به یک آرگومان عددی نیاز دارد. این مقدار، تأخیر بر حسب میلی‌ثانیه قبل از باز شدن زیرمنو است زمانی که نشانگر ماوس روی یک آیتم منو که دارای زیرمنو است حرکت می‌کند. اگر مقدار صفر باشد، هیچ باز شدن خودکاری انجام نمی‌شود. اگر آرگومان حذف شود، از پیش‌فرض توکار استفاده می‌شود. توجه داشته باشید در صورتی که از گزینه PopupImmediately استفاده شود، تأخیر پاپ‌آپ هیچ تأثیری ندارد زیرا در این حالت زیرمنوها بلافاصله باز می‌شوند.

گزینه PopupImmediately باعث می‌شود آیتم‌های منو که دارای زیرمنو هستند به محض ورود نشانگر به آیتم، زیرمنو را باز کنند. در این حالت گزینه PopupDelay نادیده گرفته می‌شود. اگر PopupDelayed استفاده شود، fvwm برای تعیین زمان و چگونگی این باز شدن خودکار به گزینه PopupDelay نگاه می‌کند.

گزینه PopdownDelay دقیقاً مانند PopupDelay کار می‌کند اما مهلت زمانی سبک PopupDelayed را تعیین می‌کند.

گزینه PopdownImmediately باعث می‌شود زیرمنوها به محض اینکه نشانگر از زیرمنو و آیتم مربوطه در منوی والد خارج شد، ناپدید شوند. با گزینه متضاد آن یعنی PopdownDelayed، زیرمنو تنها پس از زمان مشخص‌شده با گزینه PopdownDelay بسته می‌شود. این ویژگی زمانی مفید است که هنگام تلاش برای رفتن به داخل زیرمنو، نشانگر اغلب از روی آیتم منو منحرف می‌شود. هرگاه تعارضی بین سبک‌های PopupImmediately، PopupDelayed، PopupDelay و سبک‌های PopdownImmediately، PopdownDelayed، PopdownDelay وجود داشته باشد، در ناوبری با ماوس سبک‌های Popup... و در ناوبری با صفحه‌کلید سبک‌های Popdown... اولویت دارند.

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

گزینه PopupActiveArea به یک مقدار عدد صحیح بین ۵۱ تا ۱۰۰ نیاز دارد. به طور معمول، وقتی نشانگر روی یک آیتم منو دارای زیرمنو قرار دارد و وارد ناحیه‌ای می‌شود که از ۷۵٪ عرض منو شروع می‌شود، زیرمنو بلافاصله نمایش داده می‌شود. این درصد را می‌توان با PopupActiveArea تغییر داد. تنظیم این مقدار روی ۱۰۰ این نوع پاپ‌آپ‌های خودکار را به طور کامل غیرفعال می‌کند. در صورت عدم ارائه مقدار یا نامعتبر بودن مقدار، مقدار پیش‌فرض بازیابی می‌شود.

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

گزینه‌های TitleUnderlines0، TitleUnderlines1 و TitleUnderlines2 مشخص می‌کنند چه تعداد خط زیر عنوان منو کشیده شود.

گزینه‌های SeparatorsLong و SeparatorsShort طول جداکننده‌های منو را تعیین می‌کنند. جداکننده‌های بلند از لبه سمت چپ تا انتهای لبه سمت راست کشیده می‌شوند. جداکننده‌های کوتاه چند پیکسل فاصله تا لبه‌های منو باقی می‌گذارند.

گزینه‌های TrianglesSolid و TrianglesRelief بر نحوه رسم مثلث‌های کوچک برای زیرمنوها تأثیر می‌گذارند. مثلث‌های توپر با یک رنگ پر شده‌اند در حالی که مثلث‌های برجسته توخالی هستند.

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

گزینه SidePic نام یک فایل تصویری را به عنوان آرگومان می‌گیرد. تصویر در امتداد سمت چپ منو رسم می‌شود. گزینه SidePic می‌تواند توسط یک pixmap جانبی مخصوص یک منو بازنویسی شود (به AddToMenu مراجعه کنید). اگر نام فایل حذف شود، تصویر جانبی موجود از سبک منو حذف می‌شود.

گزینه SideColor نام یک رنگ X11 را به عنوان آرگومان می‌گیرد. این رنگ برای رنگ‌آمیزی ستون حاوی تصویر جانبی استفاده می‌شود (به بالا مراجعه کنید). گزینه SideColor می‌تواند با یک رنگ جانبی مخصوص به یک منو بازنویسی شود (به AddToMenu مراجعه کنید). اگر نام رنگ حذف شود، گزینه رنگ جانبی خاموش می‌شود.

گزینه‌های PopupAsRootMenu، PopupAsSubmenu، PopupIgnore و PopupClose رفتار برنامه را هنگام کلیک بر روی آیتمی از منو که زیرمنویی را باز می‌کند، تغییر می‌دهند. با PopupAsRootMenu منوی اصلی قبل از ظاهر شدن زیرمنو بسته می‌شود؛ با PopupAsSubmenu منوی اصلی بسته نمی‌شود، بنابراین می‌توانید به منوی والد بازگردید. علاوه بر این، با PopupAsSubmenu زیرمنو صرف‌نظر از اینکه ماوس را به کجا حرکت دهید باز نگه داشته می‌شود (posted). بسته به سبک منوی شما، این ممکن است ناوبری در منو را ساده‌تر کند. فشردن هر کلیدی در حالی که منو باز نگه داشته شده است، منو را به رفتار عادی بازمی‌گرداند. با PopupClose منو پس از فعال شدن یک آیتم زیرمنو بسته می‌شود، و در صورت استفاده از PopupIgnore منو باز می‌ماند (حتی اگر منو با دستور Popup فراخوانی شده باشد). پیش‌فرض PopupAsSubmenu است.

گزینه RemoveSubmenus به fvwm دستور می‌دهد هنگامی که به منوی والد بازمی‌گردید، زیرمنو را حذف کند. با HoldSubmenus زیرمنو قابل مشاهده باقی می‌ماند. اگر از سبک PopupDelayed استفاده می‌کنید احتمالاً مایلید از HoldSubmenus استفاده کنید. گزینه RemoveSubmenus بر ناوبری منو با صفحه‌کلید تأثیر می‌گذارد.

گزینه SelectOnRelease نام یک کلید اختیاری را به عنوان آرگومان می‌گیرد. اگر کلید داده‌شده در منویی با این سبک رها شود، آیتم جاری منو انتخاب می‌شود. این قابلیت برای ناوبری WindowList در نظر گرفته شده است. نام کلید یک نام کلید استاندارد X11 است همان‌گونه که در /usr/include/X11/keysymdef.h (بدون پیشوند XK_) یا در پایگاه داده keysym در مسیر /usr/X11R6/lib/X11/XKeysymDB تعریف شده است. برای غیرفعال کردن این رفتار، نام کلید را حذف کنید.

نکته: برخی از کارگزارهای X از رویدادهای KeyRelease پشتیبانی نمی‌کنند. SelectOnRelease روی چنین ماشین‌هایی کار نمی‌کند.

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

نویسه‌ها و دستورالعمل‌های قالب‌بندی است که با '%' شروع می‌شوند. هر نویسه یا دستورالعمل قالب‌بندی نامعتبر بدون هشدار نادیده گرفته می‌شود:

%l، %c و %r

برچسب آیتم بعدی را درج می‌کنند. حداکثر سه برچسب را می‌توان استفاده کرد. ستون آیتم چپ‌چین (%l)، وسط‌چین (%c) یا راست‌چین (%r) می‌شود.

%i

مینی‌آیکون را درج می‌کند.

%> و %<

مثلث زیرمنو را با اشاره به سمت راست (%>) یا به سمت چپ (%<) درج می‌کنند.

%|

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

%s

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

Space، Tab، %Space و %Tab

فاصله‌ای به اندازه یک فاصله یا یک تب، با استفاده از عرض قلم منو اضافه می‌کنند. هنگام استفاده از تب، اندازه فاصله می‌تواند یک تا ۸ فاصله باشد زیرا موقعیت تب مضربی از ۸ از لبه منو است. در صورت استفاده از فاصله‌ها یا تب‌ها، کل رشته باید نقل‌قول شود.

%p

مانند Space و Tab، دستورالعمل %p نیز یک ناحیه خالی در آیتم درج می‌کند، اما با کنترل بهتر روی اندازه آن (پایین را ببینید).

شما می‌توانید قبل و بعد از هر یک از شیءها یک فاصله اضافی مانند زیر تعریف کنید:

%left.rightp

این بدان معناست که: اگر شیء در منو تعریف شده باشد (مثلاً اگر %s باشد و شما از یک تصویر جانبی استفاده کنید، یا %l برای ستون سوم باشد و آیتم‌هایی تعریف شده باشند که واقعاً ستون سوم دارند)، آن‌گاه به اندازه left پیکسل قبل از شیء و right پیکسل بعد از آن اضافه کن. اگر به بخش‌های left یا .right نیازی ندارید می‌توانید آن‌ها را حذف کنید. تمام مقادیر تا پهنای صفحه نمایش مجاز هستند. حتی مقادیر منفی نیز با احتیاط قابل استفاده‌اند. کاراکتر p می‌تواند با هر دستورالعمل قالب‌بندی دیگری که در بالا توضیح داده شد جایگزین شود.

نکته: فقط مواردی که در رشته قالب‌بندی تعریف شده‌اند در منوها قابل مشاهده هستند. بنابراین اگر %s را در آن قرار ندهید، حتی اگر مشخص شده باشد، تصویر جانبی را نخواهید دید.

نکته: سبک SubmenusLeft رشته پیش‌فرض ItemFormat را تغییر می‌دهد، اما اگر به صورت دستی تنظیم شده باشد، تغییر داده نمی‌شود.

نکته: اگر عنوان قالب‌بندی‌نشده منو پهن‌تر از عریض‌ترین آیتم منو باشد، فاصله‌های بین بخش‌های مختلف آیتم‌های منو گسترش می‌یابند تا با عرض عنوان مطابقت پیدا کنند. اشیاء چپ‌چین ابتدایی در رشته قالب‌بندی (%l، %i، %<، اولین %|) به لبه سمت چپ منو می‌چسبند و اشیاء راست‌چین انتهایی (%r، %i، %>، دومین %|) به لبه سمت راست می‌چسبند. فاصله‌های بین آیتم‌های باقی‌مانده به طور یکسان بزرگ می‌شوند.

مثال‌ها:

MenuStyle * ItemFormat "%.4s%.1|%.5i%.5l%.5l%.5r%.5i%2.3>%1|"

رشته پیش‌فرض مورد استفاده fvwm است: (تصویر جانبی + ۴ پیکسل فاصله) (ابتدای ناحیه برجسته‌شده + ۱ پیکسل فاصله) (مینی‌آیکون + 5p) (ستون اول چپ‌چین + 5p) (ستون دوم چپ‌چین + 5p) (ستون سوم راست‌چین + 5p) (مینی‌آیکون دوم + 5p) (2p + مثلث زیرمنو + 3p) (1p + انتهای ناحیه برجسته‌شده).

MenuStyle * ItemFormat "%.1|%3.2<%5i%5l%5l%5r%5i%1|%4s"

توسط fvwm با گزینه SubmenusLeft در زیر استفاده می‌شود.

گزینه‌های VerticalItemSpacing و VerticalTitleSpacing فاصله‌گذاری عمودی آیتم‌ها و عنوان‌های منو را کنترل می‌کنند، همان‌طور که ItemFormat فاصله‌گذاری افقی را کنترل می‌کند. هر دو، دو آرگومان عددی می‌گیرند که می‌توانند در بازه -100 تا +100 باشند. اولی فاصله بر حسب پیکسل در بالای یک آیتم معمولی منو (یا یک عنوان منو) است و دومی فاصله بر حسب پیکسل در پایین آن است. اعداد منفی چندان معقول نیستند و ممکن است ظاهر منو را کاملاً به هم بریزند. اگر آرگومانی داده نشود یا آرگومان‌های داده‌شده نامعتبر باشند، از مقادیر پیش‌فرض توکار استفاده می‌شود: یک پیکسل بالای آیتم یا عنوان و دو پیکسل زیر آن.

گزینه VerticalMargins می‌تواند برای افزودن مقداری حاشیه درونی در بالا و پایین منوها استفاده شود. این گزینه دو آرگومان عددی می‌گیرد که باید اعداد صحیح مثبت (یا صفر) باشند. اگر تعداد آرگومان‌ها یا مقادیر آن‌ها نادرست باشد، fvwm هر دو را به صورت پیش‌فرض روی ۰ قرار می‌دهد، که به معنای عدم وجود حاشیه درونی است. اگر مقادیر صحیح باشند، مقدار اول برای حاشیه بالا و مقدار دوم برای حاشیه پایین استفاده می‌شود.

گزینه SubmenusLeft چینش و رفتار منو را آینه‌ای می‌کند. زیرمنوها به سمت چپ باز می‌شوند، مثلث زیرمنو در سمت چپ رسم می‌شود و مینی‌آیکون و تصویر جانبی در سمت راست منو کشیده می‌شوند. پیش‌فرض SubmenusRight است. راهنماهای موقعیت منو نیز تحت تأثیر این تنظیم قرار می‌گیرند، یعنی راهنماهای موقعیت که از item یا menu به عنوان مستطیل زمینه استفاده می‌کنند و راهنماهای موقعیت با آفست‌های m.

گزینه‌های AutomaticHotkeys و !AutomaticHotkeys توانایی منو برای ارائه خودکار کلیدهای میانبر روی اولین نویسه از برچسب هر آیتم منو را کنترل می‌کنند. اگر در دستور AddToMenu یک کلید میانبر صریح اختصاص داده شده باشد، این رفتار همیشه بازنویسی می‌شود.

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

گزینه MouseWheel امکان پیمایش منو با استفاده از چرخ ماوس را کنترل می‌کند. این گزینه یک آرگومان می‌گیرد که می‌تواند یکی از مقادیر ScrollsPointer، ScrollsMenu، ScrollsMenuBackwards یا ActivatesItem باشد. مقدار ScrollsPointer باعث می‌شود چرخ ماوس نشانگر را روی منو پیمایش کند. این پیش‌فرض است. مقادیر ScrollsMenu و ScrollsMenuBackwards منو را زیر نشانگر ماوس پیمایش می‌کنند. ActivatesItem پیمایش با چرخ ماوس را غیرفعال کرده و استفاده از چرخ ماوس را طوری تنظیم می‌کند که گویی روی منو کلیک شده است. اگر هیچ آرگومانی ارائه نشود، تنظیمات پیش‌فرض بازیابی می‌شود.

گزینه ScrollOffPage در صورتی که MouseWheel روی ScrollsMenu یا ScrollsMenuBackwards تنظیم شده باشد، اجازه می‌دهد منو به خارج از ناحیه قابل مشاهده پیمایش شود. این حالت پیش‌فرض است. گزینه مخالف آن، !ScrollOffPage، این رفتار را غیرفعال می‌کند.

گزینه TrianglesUseFore مثلث‌های زیرمنو را با رنگ پیش‌زمینه مجموعه رنگ منو رسم می‌کند (به طور معمول با رنگ برجستگی رسم می‌شوند). گزینه !TrianglesUseFore این رفتار را غیرفعال می‌کند.

2026-06-28