| labwc-menu(5) | File Formats Manual | labwc-menu(5) |
نام (NAME)
labwc-menu - پروندههای منوی labwc
توضیحات (DESCRIPTION)
منوهای ایستا بر اساس فایل menu.xml قرار گرفته در "~/.config/labwc" و دایرکتوریهای پایه معادل XDG ساخته میشوند.
قواعد دستوری (SYNTAX)
فایل منو باید بهطور کامل درون تگهای <openbox_menu> و </openbox_menu> محصور باشد. در داخل این تگها، منوها به شکل زیر مشخص میشوند:
<!-- A toplevel menu -->
<menu id="external_menu_settings" label="External Settings" icon="preferences-other">
<item label="Display setting">
<action name="Execute" command="wdisplays" />
</item>
</menu>
<!-- Another toplevel menu -->
<menu id="">
<!-- A menu entry with an action, for example to execute an application -->
<item label="" icon="">
<action></action>
</item>
<!-- A submenu defined elsewhere, uses external label and icon attributes -->
<menu id="external_menu_settings" />
<!-- Horizontal line -->
<separator />
<!-- An inline submenu -->
<menu id="" label="" icon="">
...some content...
</menu>
<!-- Title -->
<separator label="" />
<!-- Pipemenu -->
<menu id="" label="" icon="" execute="COMMAND" />
</menu>
menu.id (هنگام قرارگیری در سطح بالا)
- "root-menu" برای منوی زمینه پنجره ریشه (root window)
- "client-menu" برای منوی زمینه نوار عنوان پنجره
- "client-list-combined-menu" برای فهرستی از تمام پنجرهها در تمام فضاهای کاری. فوکوس را به برنامهای که انتخاب میشود تغییر میدهد یا در صورت انتخاب "Go there" بدون فعالکردن هیچ برنامهای به فضای کاری میرود.
- "client-send-to-menu" تمام فضاهای کاری را نمایش میدهد و پنجره فعلی را هنگام انتخاب به آن فضای کاری میفرستد.
menu.id (هنگام قرارگیری به عنوان زیرمجموعه عنصر <menu> دیگر)
menu.label
توجه داشته باشید که Openbox نیازمند تعریف label="" برای بالاترین عناصر نیز هست، اما labwc برای سادگی با وجود یا عدم وجود صفت label با آنها رفتار میکند.
menu.icon
menu.item.label
menu.item.icon
menu.item.action
menu.separator
menu.separator.label
menu.execute
پایپمنوها (PIPE MENUS)
پایپمنوها، منوهایی هستند که به صورت پویا بر اساس خروجی اسکریپتها یا باینریها تولید میشوند. این منوها از آنجا به این نام خوانده میشوند که خروجی برنامه اجرایی به منوی labwc پایپ میشود.
برای هر مدخل <menu id="" label="" execute="COMMAND" /> در menu.xml، دستور COMMAND در اولین باری که آیتم انتخاب میشود (برای مثال با مکاننما یا ورودی صفحهکلید) اجرا خواهد شد. خروجی XML دستور تجزیه شده و به عنوان یک زیرمنو نمایش داده میشود. محتوای پایپمنوها تا زمانی که کل منو (نه فقط پایپمنو) بسته شود در حافظه موقت (کش) نگهداری میشود.
محتوای خروجی باید به طور کامل درون تگهای <openbox_pipe_menu> محصور باشد. در داخل این تگها، منوها دقیقاً به همان روش منوهای ایستا (عادی) مشخص میشوند، برای مثال:
<openbox_pipe_menu>
<item label="Terminal">
<action name="Execute" command="xterm" />
</item>
</openbox_pipe_menu>
زیرمنوهای درونخطی و پایپمنوهای تو در تو پشتیبانی میشوند.
توجه داشته باشید که اطمینان از یکتا بودن صفتهای ID بر عهده برنامه اجرایی پایپمنو است. شناسههای تکراری نادیده گرفته میشوند.
هنگام نوشتن اسکریپتهای پایپمنو، اطمینان حاصل کنید که کاراکترهای خاص XML مانند "&" ("&")، "<" ("<")، و ">" (">") را اسکیپ کنید.
یک پایپمنو همچنین میتواند برای تعریف عنصر سطح بالای <menu> استفاده شود. در این حالت کل فایل menu.xml به چیزی شبیه به این خلاصه میشود (با جایگزینی obmenu-generator با تولیدکننده منوی دلخواه شما):
<?xml version="1.0"?> <openbox_menu> <menu id="root-menu" label="" execute="obmenu-generator" /> </openbox_menu>
شتابدهندهها / کلیدهای میانبر (ACCELERATORS / MNEMONICS)
شتابدهندههای منو، میانبرهای تکحرفی برای انتخاب یا اجرای سریع آیتمها از منوی فعلی هستند. برای هر آیتم منو، شتابدهنده به عنوان اولین کاراکتر برچسب آیتم تعریف میشود که به حروف کوچک تبدیل شده است. یک شتابدهنده متفاوت را میتوان به صراحت در menu.xml با قرار دادن کاراکتر ویژه '_' پیش از حرف مورد نظر تعیین کرد. شتابدهندهها میتوانند هر نویسه یونیکد باشند و محدود به ASCII نیستند. یک زیرخط (underscore) معمولی را میتوان با تکرار آن نشان داد.
اگر منو تنها شامل یک نمونه از شتابدهنده فشردهشده باشد، آن آیتم بلافاصله اجرا میشود. در غیر این صورت، بین تمام آیتمهای منطبق گردش انجام خواهد شد.
مثال: شتابدهنده برای یک آیتم با برچسب "e_Macs" نویسه 'm' است.
بومیسازی (LOCALISATION)
بومیسازی موجود برای "client-menu" پیشفرض تنها زمانی نمایش داده میشود که هیچ "client-menu" در menu.xml وجود نداشته باشد. هرگونه تعریف منو در menu.xml به عنوان بازنویسی توسط کاربر در نظر گرفته میشود.
همچنین ببینید (SEE ALSO)
labwc(1), labwc-actions(5), labwc-config(5), labwc-theme(5)
| 2026-08-22 |