| FVWM-MENU-DESKTOP(1) | FVWM-MENU-DESKTOP(1) |
نام (NAME)
fvwm-menu-desktop - پروندههای منوی XDG را خوانده و منوهای Fvwm ایجاد میکند
خلاصه دستور (SYNOPSIS)
fvwm-menu-desktop [ --help|-h ] [ --version ] [ --install-prefix DIR ] [ --desktop NAME ] [ --menu-type NAME ] [ --theme NAME ] [ --with-titles|-w ] [ --without-titles ] [ --enable-mini-icons ] [ --size|-s NUM ] [ --mini-icon-dir DIR ] [ --app-icon NAME ] [ --dir-icon NAME ] [ --title|-t NAME ] [ --insert-in-menu NAME ] [ --get-menus all|desktop ] [ --set-menus menu_paths ] [ --all-menus ] [ --include-items NAME ] [ --regen-cmd CMD ] [ --term-cmd CMD ] [ --dynamic ] [ --menu-error|-e ] [ --verbose|-v ]
توضیحات (DESCRIPTION)
این یک اسکریپت پایتون است که تعاریف منوهای XDG را برای ساخت منوهای متناظر در fvwm تجزیه میکند. اجرای این اسکریپت به python-xdg وابسته است.
گزینههای اصلی (MAIN OPTIONS)
--help
--version
--get-menus all|desktop
هیچ منویی تولید نخواهد شد.
--desktop NAME
این گزینه میتواند همراه با --menu-type برای کنترل اینکه کدام پرونده(های) .menu استفاده شوند به کار رود.
--menu-type NAME
هنگامی که همراه با --desktop استفاده شود، تنها منوهایی که نام پرونده آنها با 'destkop*menutype' تطابق دارد یافت میشوند. اگر هیچ منویی پیدا نشود، اسکریپت با یک خطا خارج میشود.
--all-menus
--install-prefix DIR
--with-titles|-w
--without-titles
--title|-t NAME
--include-items NAME
--regen-cmd CMD
--term-cmd CMD
--dynamic
--insert-in-menu NAME
توجه داشته باشید منوهایی که با این گزینه بازتولید میشوند، موارد جدید را به انتهای منوی موجود الحاق خواهند کرد. هر بار که منو دوباره تولید شود موارد جدیدی ظاهر شده و منویی رو به رشد از گزینههای تکراری ایجاد میشود. برای رفع این مشکل باید کل منو را از طریق یک تابع بازتولید کنید یا fvwm را مجدداً راهاندازی نمایید. برای مشاهده راهحلها به بخش مثالها (EXAMPLES) در ادامه مراجعه کنید.
--set-menus menu_paths
--menu-error|-e
--verbose
بهطور پیشفرض، fvwm-menu-desktop منوها را بدون آیکونهای کوچک (mini-icons) میسازد. برای فعالسازی آیکونهای کوچک از گزینههای زیر استفاده کنید.
اگر ImageMagick روی سیستم نصب باشد، این اسکریپت اندازه آیکونها را تغییر داده و آنها را در $FVWM_USERDIR/.icons کپی میکند. این کار ممکن است کمی طول بکشد. هنگام اولین بار ایجاد آیکونها باید آماده صبر کردن باشید. پس از ایجاد آیکونها، اسکریپت باید سریعتر اجرا شود. اگر استفاده از آیکونها هنوز هم بیش از حد کُند است، برای راههای محدود کردن دفعات ایجاد منو جهت افزایش سرعت، به بخش مثالها (EXAMPLES) مراجعه کنید.
--enable-mini-icons
--theme NAME
--size|-s NUM
--mini-icon-dir DIR
--app-icon NAME
--dir-icon NAME
نحوه استفاده (USAGE)
دستور fvwm-menu-desktop فایلهای .menu استاندارد XDG را در قالب نحو (syntax) منوهای fvwm خروجی میدهد. هنگامی که fvwm-menu-desktop بدون هیچ گزینهای اجرا شود، مقادیر پیشفرض را از فایل FvwmForm-XDGMenu-Config بارگذاری کرده (پایین را ببینید) و سپس سیستم شما را برای فایل(های) منوی مناسب جستجو میکند. برای مشاهده اینکه چه منوهایی روی سیستم شما موجود است دستور زیر را اجرا کنید:
fvwm-menu-desktop --get-menus all
اگر هیچ منویی یافت نشد، ممکن است هیچ منویی روی سیستم شما نصب نشده باشد. بهطور پیشفرض منوها به صورت فایلهای .menu در /etc/xdg/menus، $HOME/.config/menus یا مکانی که در $XDG_MENU_PREFIX تنظیم شده ذخیره میشوند. میتوانید از --install-prefix برای تعیین مکان دیگری جهت جستجوی منوها استفاده کنید.
از طریق ترکیبی از گزینههای خط فرمان و تنظیمات FvwmForm-XDGMenu-Config، برنامه fvwm-menu-desktop میتواند هر ترکیبی از منوهای یافتشده را تولید کند. برای دریافت فهرستی از اینکه چه منو(هایی) تولید خواهند شد، از گزینه --get-menus desktop استفاده کنید. دستور زیر تمامی منوهایی را که در صورت اجرای fvwm-menu-desktop بدون هیچ گزینهای تولید میشدند فهرست میکند.
fvwm-menu-desktop --get-menus desktop
برنامه fvwm-menu-desktop منو(های) قابل تولید را به صورت زیر تعیین میکند:
اگر هیچ فایل پیکربندی یافت نشود، به همه منوها وزن داده میشود و اسکریپت بهترین منوی یافتشده (با بالاترین وزن) را تولید خواهد کرد.
اگر یک فایل پیکربندی یافت شود (و از گزینههای بازنویسی استفاده نشود)، اسکریپت همه منوهای انتخابشده در FvwmForm-XDGMenu-Config را تولید میکند.
گزینههای --desktop، --menu-type، --set-menus و --all-menus بر تمامی منوهای انتخابشده در FvwmForm-XDGMenu-Config تقدم داشته و آنها را بازنویسی میکنند.
گزینههای --desktop و --menu-type فقط منوهایی را شامل میشوند که نام آنها با 'desktop*menutype' مطابقت داشته باشد. اگر همراه با --all-menus استفاده شوند، تمام منوهای منطبق تولید میشوند. اگر بدون --all-menus استفاده شوند، تنها منویی که بالاترین وزن را دارد تولید میشود.
گزینه --set-menus منوها را از فهرست نام فایلهای منو با مسیر کامل تولید میکند.
گزینه --all-menus به تنهایی تمام منوهای یافتشده را تولید میکند.
بهطور پیشفرض fvwm-menu-desktop منویی ایجاد میکند که نام بالاترین سطح آن "XDGMenu" است. برای اینکه به fvwm بگویید خروجی fvwm-menu-desktop را برای ساخت منوی XDGMenu بخواند، خط زیر را به فایل پیکربندی fvwm خود اضافه کنید:
PipeRead 'fvwm-menu-desktop'
هشدار: بسته به گزینههای استفادهشده این دستور ممکن است کُند باشد و fvwm تا زمان کامل شدن این دستور متوقف خواهد شد. برای جزئیات بیشتر و راهحلهای احتمالی، به بخش مثالها (EXAMPLES) در زیر مراجعه کنید.
پس از تولید منو، میتوانید با استفاده از دستور "Menu XDGMenu" آن را باز کنید. همچنین میتوانید با دستور زیر آن را در منوی MenuFvwmRoot بگنجانید:
AddToMenu MenuFvwmRoot "XDG Menu" Popup XDGMenu
دستور fvwm-menu-desktop میتواند هم از طریق گزینههای خط فرمان و هم از طریق یک رابط کاربری گرافیکی FvwmForm پیکربندی شود تا منو(های) تولیدی را سفارشیسازی کند..SH "رابط کاربری گرافیکی (GUI)"
FvwmForm-XDGMenu-Config یک رابط FvwmForm است که میتواند برای پیکربندی مقادیر پیشفرض fvwm-menu-desktop استفاده شود. میتوانید از طریق آیتم «Configure» در منوی سطح بالایی که تولید شده به آن دسترسی پیدا کنید یا دستور زیر را از درون FvwmCommand یا FvwmPrompt اجرا نمایید:
Module FvwmPerl -l fvwm-menu-desktop-config.fpl
از این فرم میتوان برای انتخاب اینکه چه منو(هایی) بهطور پیشفرض تولید شوند، به همراه تنظیم بسیاری از (اما نه همهٔ) گزینههای موجود استفاده کرد. هنگامی که روی «Save Settings» کلیک میکنید، این فرم یک فایل پیکربندی در مسیر $FVWM_USERDIR/.FvwmForm-XDGMenu-Config مینویسد که fvwm-menu-desktop در زمان اجرا، آن را برای مقادیر پیشفرض تجزیه خواهد کرد.
برای اطلاعات بیشتر، راهنمای درون FvwmForm-XDGMenu-Config را ببینید.
مثالها (EXAMPLES)
راههای زیادی برای تنظیم اینکه fvwm چه زمانی fvwm-menu-desktop را برای تولید منو اجرا کند، وجود دارد. یک روش این است که صرفاً هنگام بارگذاری fvwm منو تولید شود و سپس از ابزار پیکربندی گرافیکی برای تغییر هر یک از گزینهها استفاده شود. برای این کار، فقط کافی است موارد زیر را به فایل پیکربندی fvwm اضافه کنید:
AddToMenu MenuFvwmRoot "XDG Menu" Popup XDGMenu PipeRead 'fvwm-menu-desktop'
منو یک بار هنگام بارگذاری fvwm ایجاد میشود. از آنجا که ساخت منو گاهی اوقات ممکن است کُند باشد، این امر میتواند باعث شود بارگذاری fvwm بیش از حد انتظار طول بکشد.
منو تنها هنگام شروع به کار fvwm تولید میشود. اگر نرمافزاری نصب یا حذف شود، باید گزینهٔ 'Regenerate' را برای بازسازی منو انتخاب کنید.
یک روش برای افزایش سرعت این است که منو را در یک فایل ذخیره کرده و فقط هنگامی که 'Regenerate' انتخاب شد، منو را تولید نمایید. برای این کار از --regen-cmd برای فراخوانی یک تابع سفارشی استفاده کنید و با دستوری مانند دستور زیر، منو را در یک فایل بنویسید:
fvwm-menu-desktop --regen-cmd XDGRegen > $FVWM_USERDIR/.XDGMenu
سپس دستورهای زیر را به فایل پیکربندی fvwm اضافه کنید تا تابع XDGRegen تعریف شود. خط یکی مانده به آخر، در صورتی که فایل منو هنگام شروع fvwm وجود نداشته باشد، آن را تولید خواهد کرد.
DestroyFunc XDGRegen
AddToFunc XDGRegen
+ I PipeRead 'fvwm-menu-desktop --regen-cmd XDGRegen > \
$[FVWM_USERDIR]/.XDGMenu; echo "Nop"'
+ I Read $[FVWM_USERDIR]/.XDGMenu
Test (!f $[FVWM_USERDIR]/.XDGMenu) XDGRegen Read $[FVWM_USERDIR]/.XDGMenu
علاوه بر ایجاد یک منوی سطح بالا، fvwm-menu-desktop میتواند با استفاده از گزینهٔ --insert-in-menu منو را درون یک منوی موجود درج کند. برای مثال، میتوان منوی MenuFvwmRoot را ایجاد کرده و آیتمهای XDG را در انتهای آن قرار داد.
DestroyMenu MenuFvwmRoot AddToMenu MenuFvwmRoot "Fvwm" Title + "Item1" Action1 ... + "ItemN" ActionN + "" Nop PipeRead 'fvwm-menu-desktop --insert-in-menu MenuFvwmRoot'
در این حالت، آیتمهای منو در انتهای منوی MenuFvwmRoot درج میشوند. اگر هیچ آیتمی در منو نباشد، این منو به MenuFvwmRoot تبدیل میشود. مشکل اینجاست که برای بازسازی (Regenerate) آن باید fvwm را مجدداً راهاندازی کنید یا کل منو را از نو بسازید، زیرا آیتمهای منو قابل حذف نیستند. برای انجام این کار میتوانید از تابعی مانند زیر استفاده کنید:
DestroyFunc XDGRegen
AddToFunc XDGRegen
+ I DestroyMenu MenuFvwmRoot
+ I AddToMenu MenuFvwmRoot "Fvwm" Title
+ I AddToMenu MenuFvwmRoot "Item1" Action1 ...
+ I AddToMenu MenuFvwmRoot "ItemN" ActionN
+ I AddToMenu MenuFvwmRoot "" Nop
+ I PipeRead 'fvwm-menu-desktop --insert-in-menu MenuFvwmRoot \
--regen-cmd XDGRegen'
همچنین fvwm میتواند با استفاده از DynamicPopUpAction و/یا DynamicPopDownAction منوها را بهصورت پویا ایجاد کند. این دستورها هنگامی که به همراه یک منو استفاده شوند، در زمان باز شدن منو یک تابع را اجرا میکنند. به عنوان مثال، میتوان منوی XDGMenu را هنگام باز شدن آن با استفاده از دستور زیر ایجاد کرد:
AddToMenu XDGMenu "XDGMenu" Title + DynamicPopUpAction PipeRead 'fvwm-menu-desktop'
این کار منو را هنگام باز شدن ایجاد میکند. یک مشکل در اینجا این است که فقط بار اولی که منو باز میشود ایجاد خواهد شد و برای دیدن تغییرات هنوز باید منو را Regenerate کنید. برای اینکه منو هر بار که باز میشود ساخته شود، از گزینهٔ --dynamic استفاده کنید:
AddToMenu XDGMenu "XDGMenu" Title
+ DynamicPopUpAction PipeRead 'fvwm-menu-desktop \
--dynamic --include-items config'
+ DynamicPopDownAction DestroyMenu recreate XDGMenu
این کار باعث میشود هنگام بسته شدن منو، دستور Destroy روی آن اجرا شود تا دفعهٔ بعد که باز میشود دوباره ساخته شود. پرچم recreate منو را بهطور کامل نابود نمیکند و اکشنهای DynamicPopUpAction و DynamicPopDownAction را حفظ مینماید. پرچم --dynamic گزینهٔ recreate را در منوهای تولیدشده میگنجاند.
برای درج یک منو در MenuFvwmRoot و در عین حال پویا نگه داشتن آن، باید از تابعی استفاده کنید که کل منو را تولید کند. برای مثال:
DestroyFunc GenRootMenu
AddToFunc GenRootMenu
+ I DestroyMenu recreate MenuFvwmRoot
+ I AddToMenu MenuFvwmRoot "Fvwm" Title
+ I AddToMenu MenuFvwmRoot "Item1" Action1 ...
+ I AddToMenu MenuFvwmRoot "ItemN" ActionN
+ I AddToMenu MenuFvwmRoot "" Nop
+ PipeRead `fvwm-menu-desktop --insert-in-menu MenuFvwmRoot \
--include-items config`
AddToMenu MenuFvwmRoot "Fvwm" Title
+ DynamicPopUpAction GenRootMenu
+ DynamicPopDownAction DestroyMenu recreate MenuFvwmRoot
کل فرایند ایجاد منوها از روی فایلها کُند است. در غیر این صورت، باگها را به فهرست پستی fvwm-workers گزارش دهید <fvwm-workers@fvwm.org>.
نویسندگان (AUTHORS)
این اسکریپت بر اساس fvwm-xdg-menu.py نوشتهشده توسط Piotr Zielinski است ( http://www.cl.cam.ac.uk/~pz215) که مجوز GPL 2 را در تاریخ 03.12.2005 برای آن تعیین کرده است.
این اسکریپت توسط fvwm-workers بازنویسی شد تا جایگزین اسکریپت perl موجود fvwm-menu-desktop شود.
کپیرایت و تکثیر (COPYING)
این اسکریپت تحت همان شرایط خود fvwm توزیع میشود. برای جزئیات، GNU General Public License را ببینید.
| 2026-06-28 |