| JGMENU(1) | JGMENU(1) |
نام (NAME)
jgmenu - یک منوی ساده برای X11
خلاصه دستور (SYNOPSIS)
jgmenu [--no-spawn] [--checkout=<tag>] [--config-file=<file>]
[--icon-size=<size>] [--at-pointer] [--hide-on-startup]
[--simple] [--vsimple] [--csv-file=<file>]
[--csv-cmd=<command>] [--die-when-loaded]
[--center] [--persistent]
برای شروع از این دستورها استفاده کنید:
- اجرای منو
- ایجاد فایل پیکربندی ~/.config/jgmenu/jgmenurc
- برپاسازی تعاملی
- man jgmenututorial
- آموزش گامبهگام
توضیحات (DESCRIPTION)
دستور jgmenu یک منوی ساده برای Linux/BSD است. این ابزار دادههای منوی CSV را از یک فایل میخواند و یک منوی گرافیکی روی پنجرهی X11 تولید میکند.
فیلدها
هر سطر از دادههای منوی CSV با استفاده از ویرگول به عنوان جداکنندهی فیلدها، به بخشهای زیر تفکیک میشود:
- (1)
- شرح (توضیحات)
- (2)
- دستور
- (3)
- آیکون
- (4)
- دایرکتوری کاری
- (5)
- فراداده (متادیتا)
برای مثال:
-
printf "Terminal,xterm\\nWeb Browser,firefox" | jgmenu --vsimple
نویسههای ویژه در ابتدای سطر
- #
- نادیده گرفتن سطر
- .
- سطری که با یک نقطه و در پی آن یک فاصله آغاز شود، فایل مشخصشده در رشتهی پس از نقطه را بارگذاری (source) میکند
- @
- برخورد به عنوان ویجت (widget).SS "نویسههای خاص در فیلدها (Special Characters in fields)"
- ,
- از آنجا که کاما به عنوان جداکنندهٔ فیلدها استفاده میشود، فیلدهای تکی تنها در صورتی میتوانند شامل کاما باشند که در سه علامت نقلقول قرار گیرند. برای مثال:
foo,“““^pipe(find . -printf `%f,display %p,%p\n')”“”
- < > &
- فیلد description به عنوان نشانهگذاری pango تجزیه میشود، بنابراین نویسههای <، > و & باید به ترتیب به صورت <، > و & گریزدهی (escape) شوند.
- "
- برخلاف اغلب پیادهسازیهای CSV، یک نمونهٔ تکی از نقلقول دوتایی (") نویسهٔ خاص محسوب نمیشود. دلیل این امر این است که به کاربران اجازه داده شود دستورها را همراه با نقلقولهای دوتایی بدون نیاز به گریزدهی آنها بنویسند.
- """
- برای شروع و پایان یک مقدار کاملاً نقلقولشده، از سه نقلقول """ استفاده کنید. مورد استفادهٔ اصلی این ساختار زمانی است که درون یک مقدار به کاما نیاز باشد.
نشانهگذاری (Markup)
نحو ^foo(bar) برای اجرای عمل foo با آرگومان bar استفاده میشود. ما به bar با عنوان inner value (مقدار درونی) اشاره میکنیم.
نشانهگذاریهای زیر در فیلد description پشتیبانی میشوند:
- sep()
- یک جداکننده تعریف میکند. اگر یک inner value ارائه شود، جداکننده به صورت عنوان نمایش داده خواهد شد. اگر هیچ inner valueای ارائه نشود، جداکننده صرفاً یک خط افقی خواهد بود.
نشانهگذاریهای زیر در فیلد command پشتیبانی میشوند:
- ^tag()
- تعریف آغاز یک گره جدید در ساختار منو.
خطوط پس از ^tag(whatever) در منوی سطح بالا نمایش داده نخواهند شد، اما با استفاده از ^checkout() یا ^root() میتوان آنها را باز کرد.
-
item0.0 item0.1 submenu1,^checkout(1) submenu2,^root(2) ^tag(1) item1.0 item1.1 ^tag(2) item2.0 item2.1
- ^checkout()
- برچسب مشخصشده توسط inner value را به عنوان یک زیرمنو در پنجرهای جدید باز میکند.
- ^root()
- برچسب مشخصشده توسط inner value را در پنجرهٔ ریشه (root) باز میکند و جایگزین منوی فعلی مینماید.
- ^sub()
- یک پیکان زیرمنو رسم میکند. این قابلیت میتواند برای ایجاد زیرمنوها با stay_alive=0 کاربردی باشد. برای مثال:
-
item0.0 item0.1 submenu1,^sub(echo "item1.0" | jgmenu --simple)
- ^back()
- باز کردن منوی والد (Check-out)
- ^term()
- اجرای برنامه در ترمینال
- ^pipe()
- اجرای یک زیرپردازش و باز کردن منو بر اساس خروجی استاندارد (stdout) آن.
- ^filter()
- فراخوانی جستجو
- ^quit()
- خروج.SS "آیکونها (Icons)" در صورتی که فیلد سوم مقداردهی شده باشد، آیکونها نمایش داده میشوند؛ برای نمونه:
-
Terminal,xterm,utilities-terminal Firefox,firefox,firefox
گزینهها (OPTIONS)
- --no-spawn
- هدایت دستور به stdout به جای اجرای آن.
- --checkout=<tag>
- رفتن به زیرمنو هنگام راهاندازی.
- --config-file=<file>
- خواندن فایل پیکربندی.
- --icon-size=<size>
- مشخص کردن اندازه آیکون (بهطور پیشفرض ۲۲). اگر روی 0 تنظیم شود، آیکونها بارگذاری نخواهند شد.
- --at-pointer
- اجرای منو در محل نشانگر ماوس.
- --hide-on-startup
- شروع منو در حالت پنهان.
- --simple
- نادیده گرفتن تنظیمات tint2؛ اجرا در حالت کوتاهمدت (یعنی خروج پس از کلیک ماوس یا فشردن Enter یا Escape)؛ خواندن موارد منو از stdin.
- --vsimple
- مشابه --simple، اما همچنین آیکونها را غیرفعال کرده و jgmenurc را نادیده میگیرد.
- --csv-file=<file>
- مشخص کردن فایل منو (در قالب CSV با ساختار مخصوص jgmenu). اگر باز کردن فایل امکانپذیر نباشد، ورودی به stdin بازگردانده میشود.
- --csv-cmd=<command>
- مشخص کردن دستور برای تولید دادههای منو، برای نمونه: jgmenu_run pmenu
- --die-when-loaded
- باز کردن منو و سپس خروج با exit(0). برای اشکالزدایی و آزمایش کاربرد دارد.
- --center
- تراز کردن منو در مرکز بهصورت افقی و عمودی.
- --persistent
- مشابه گزینه پیکربندی persistent. برای جزئیات بیشتر به بخش گزینه پیکربندی در زیر مراجعه کنید.
رابط کاربری (USER INTERFACE)
- Up, Down
- انتخاب مورد قبلی/بعدی
- Left. Right
- رفتن به منوی والد/زیرمنو
- PgUp, PgDn
- پیمایش به بالا/پایین
- Home, End
- انتخاب نخستین/آخرین مورد
- Enter
- انتخاب یک مورد یا باز کردن یک زیرمنو
- F5
- راهاندازی مجدد
- F8
- چاپ درخت گره در stderr
- F9
- خروج با exit(1)
- F10
- خروج با exit(0)
- Backspace
- بازگشت به منوی والد
برای فراخوانی جستجو، هر رشتهای را تایپ کنید. کلمات جداشده با فاصله با استفاده از منطق OR جستجو خواهند شد (یعنی تطابق هر یک از کلمات برای نمایش یک مورد کافی است)..SH "ابزارکها (WIDGETS)" خطوطی که در فایلهای CSV مطابق با سبک jgmenu با «@» آغاز میشوند، طبق نحو (syntax) زیر تجزیه میشوند:
-
@type,action,x,y,w,h,r,halign,valign,fgcol,bgcol,content
- type
- نوع ابزارک، که میتواند یکی از موارد زیر باشد:
- action
- عملیاتی که هنگام انتخاب انجام میشود. این میتواند یک دستور پوسته یا یک عمل منو مانند ^root() باشد.
- x، y
- حاشیهٔ افقی و عمودی ابزارک
- w، h
- عرض و ارتفاع ابزارک
- r
- شعاع گوشهها
- fgcol، bgcol
- رنگهای پیشزمینه و پسزمینه با استفاده از نحو rrggbb #aa. fgcol مقدار auto را برای استفاده از color_norm_fg در jgmenurc میپذیرد.
- content
- برای ابزارکهای نوع icon مقدار icon_path و برای سایر انواع ابزارک text است
- halign، valign
- تراز افقی و عمودی ابزارک. این قابلیت هنوز پیادهسازی نشده است، اما بهطور پیشفرض روی top و left تنظیم شده است.
فایل پیکربندی (CONFIGURATION FILE)
اگر فایلی با استفاده از گزینهٔ –config-file= مشخص نشده باشد، از استاندارد دایرکتوری پایهٔ XDG (XDG Base Directory Specification) پیروی میشود. یعنی:
- •
- پیکربندی سراسری در ${XDG_CONFIG_DIRS:-/etc/xdg}
- •
- جایگزینی پیکربندی کاربر در ${XDG_CONFIG_HOME:-$HOME/.config}
برای اغلب کاربران مسیر ~/.config/jgmenu/jgmenurc مناسب است.
متغیرهای پیکربندی سراسری با ترتیب زیر تنظیم میشوند (به این معنی که موارد پایین فهرست اولویت بالاتری دارند):
- •
- پیشفرضهای توکار (config.c)
- •
- فایل پیکربندی tint2rc (میتواند توسط متغیر محیطی TINT2_CONFIG مشخص شود)
- •
- فایل پیکربندی jgmenurc (میتواند با –config-file= مشخص شود)
- •
- آرگومانهای خط فرمان.SS نحو (Syntax) خطوطی که با # آغاز میشوند نادیده گرفته میشوند.
تمام خطوط دیگر به عنوان تنظیم متغیرها با قالب زیر شناسایی میشوند:
-
key = value
فاصلههای خالی اغلب نادیده گرفته میشوند.
مقادیر (Values)
مگر در مواردی که خلاف آن مشخص شده باشد، مقادیر به عنوان رشتههای ساده در نظر گرفته میشوند.
در ادامه چند نوع مشخص آورده شده است:
- boolean
- هنگامی که یک متغیر مقداری بولی میپذیرد، تنها 0 و 1 پذیرفته میشوند. 0 به معنای نادرست (false) و 1 به معنای درست (true) است.
- integer
- هنگامی که یک متغیر مقداری از نوع عدد صحیح میپذیرد، تنها مقادیر عددی پذیرفته میشوند. تنها نویسههای معتبر، ارقام (0-9) و علامت منفی هستند. تمام متغیرهای عدد صحیح مربوط به هندسه و موقعیت، مگر خلاف آن مشخص شده باشد، به عنوان مقادیر بر حسب پیکسل تفسیر میشوند.
- color
- هنگامی که یک متغیر مقداری از نوع رنگ میپذیرد، تنها نحو #rrggbb aaa شناخته میشود، که در آن rr، gg و bb به ترتیب نمایانگر مقادیر هگزادسیمال (00-ff) برای رنگهای قرمز، سبز و آبی هستند؛ و aaa نشاندهنده مقدار کانال آلفا است که به صورت درصد (0-100) بیان میشود (یعنی 100 به معنای بدون شفافیت و 0 به معنای شفافیت کامل است.) برای مثال #ff0000 100 نشاندهنده رنگ قرمز بدون شفافیت است، در حالی که #000088 50 به معنای آبی تیره با 50% شفافیت است.
- pathname
- هنگامی که یک متغیر مقداری از نوع مسیر فایل میپذیرد، به عنوان یک رشته ارزیابی میشود. اگر نخستین نویسه تیلده (~) باشد، همانطور که یک پوسته آن را بسط میدهد، با متغیر محیطی $HOME جایگزین خواهد شد.
متغیرها (Variables)
- verbosity = integer (پیشفرض 0)
- میزان پرگویی عمومی: (0) فقط هشدارها؛ (1) اطلاعات اولیه؛ (2) اطلاعات بیشتر؛ (3) حداکثر اطلاعات
موضوعات خاص اضافی: (4) IPC
نکته: برخی پیامهای IPC به متغیر محیطی JGMENU_VERBOSITY=4 نیز نیاز دارند
- stay_alive = boolean (پیشفرض 1)
- اگر روی 1 تنظیم شود، هنگام رخ دادن رویدادهای زیر، منو به جای “exit” (خروج)، “hide” (پنهان) میشود: کلیک روی آیتم منو؛ کلیک در بیرون منو؛ فشردن escape. در حالت پنهان، یک سیگنال USR1 منو را از حالت پنهان خارج (“un-hide”) میکند.
- persistent = boolean (پیشفرض 0)
- اگر روی 1 تنظیم شود، هنگام رخ دادن رویدادهای زیر، منو نه خارج میشود و نه پنهان: کلیک روی آیتم منو؛ کلیک در بیرون منو؛ فشردن escape. در ترکیب با نشانهگذاری ^quit() استفاده شود.
- hide_on_startup = boolean (پیشفرض 0)
- اگر روی 1 تنظیم شود، jgmenu در حالت “hidden” (پنهان) آغاز به کار میکند. این قابلیت برای راهاندازی jgmenu در طول فرایند بوت و سپس ارسال killall -SIGUSR1 jgmenu جهت نمایش منو مفید است.
- csv_cmd = string (پیشفرض apps)
- دستوری را مشخص میکند که CSV سازگار با jgmenu را برای jgmenu تولید کند. کلیدواژههای قابل قبول شامل apps، pmenu، lx، و ob هستند. اگر مقداری غیر از این کلیدواژهها داده شود، در یک پوسته اجرا خواهد شد (بنابراین مراقب باشید!). اگر خالی رها شود، jgmenu از stdin ورودی را میخواند. مثالها:
-
csv_cmd = lx csv_cmd = jgmenu_run lx --no-dirs csv_cmd = cat ~/mymenu.csv
- tint2_look = boolean (پیشفرض 0)
- فایل tint2rc را میخواند و گزینههای پیکربندی را برای رنگها، ابعاد و تراز تجزیه میکند.
- position_mode = (fixed | ipc | pointer | center) (پیشفرض fixed)
- تعیین حالت موقعیتیابی منو.
- fixed
- تراز با margin_{x,y} و در نظر گرفتن _NET_WORKAREA.
- ipc
- استفاده از IPC برای خواندن متغیرهای محیطی تنظیمشده توسط پنل. برای اطلاعات بیشتر، Inter-Process Communication را ببینید.
- pointer
- اجرا در محل اشارهگر، با در نظر گرفتن هر دو مورد _NET_WORKAREA و edge_snap_x.
- center
- اجرا در مرکز صفحه و نادیده گرفتن _NET_WORKAREA. بر menu_{v,h}align تقدم دارد.
- edge_snap_x = integer (پیشفرض 30)
- فاصلهای (بر حسب پیکسل) از لبه چپ را مشخص میکند که در آن محدوده، منو به لبه میچسبد. توجه داشته باشید که این ویژگی فقط در حالت at_pointer اعمال میشود.
- terminal_exec = string (پیشفرض x-terminal-emulator)
- تعیین ترمینال مورد استفاده برای دستورات دارای نشانهگذاری ^term()
- terminal_args = string (پیشفرض -e)
- مقادیر این دو متغیر برای ساختن یک رشته جهت راهاندازی برنامههایی که برای اجرا به ترمینال نیاز دارند استفاده میشود. با مقادیر پیشفرض، رشته حاصل به این صورت درمیآید: x-terminal-emulator -e 'some_command with arguments'. terminal_args باید با -e یا معادل آن پایان یابد، به طوری که -e اشاره به معنای -e در xterm -e دارد.
- monitor = integer (پیشفرض 0)
- یک نمایشگر خاص را با اندیسی که از 1 شروع میشود مشخص میکند. اگر 0 باشد، منو روی نمایشگری که ماوس در آن قرار دارد باز میشود.
- hover_delay = integer (پیشفرض 100)
- مدت زمان (بر حسب میلیثانیه) از نگهداشتن ماوس روی یک آیتم تا باز شدن یک زیرمنو.
- hide_back_items = boolean (پیشفرض 1)
- در صورت فعال بودن، تمام آیتمهای ^back() نادیده گرفته خواهند شد. به عنوان یک قاعده کلی، برای یک منوی چندپنجرهای باید روی 1 و در حالت تکپنجرهای روی 0 تنظیم شود.
- columns = integer (پیشفرض 1)
- تعداد ستونها برای نمایش آیتمهای منو
- tabs = integer (پیشفرض 120)
- موقعیت اولین زبانه (tab) را بر حسب پیکسل مشخص میکند
- فاصله بین منو (= پنجره X11) و لبه صفحه نمایش. یادداشت مربوط به _NET_WORKAREA ذیل متغیرهای menu_{v,h}align را ببینید.
- معادل عمودی menu_margin_x
- حداقل عرض منو. عرض منو با طولانیترین آیتم در (زیر)منوی فعلی تطبیق خواهد یافت. اگر فیلتری اعمال شود (مثلاً با تایپ کردن کاربر)، عرض منو تطبیق نخواهد یافت.
- حداقل ارتفاع منوی ریشه را تعیین میکند. اگر menu_height_min و menu_height_max روی یک مقدار یکسان تنظیم شوند، ارتفاع منو روی آن مقدار ثابت میشود. اگر روی صفر تنظیم شوند، نادیده گرفته خواهند شد.
- حداکثر ارتفاع منوی ریشه. menu_height_min را ببینید
- حالت ارتفاع منو
- static
- ارتفاع منوی ریشه اولیه برای هر کنش ^root() بعدی استفاده خواهد شد
- dynamic
- ارتفاع منوی ریشه هر بار که برچسب جدیدی با استفاده از ^root() باز شود، مجدداً محاسبه خواهد شد. menu_padding_top = عدد صحیح (پیشفرض 5) فاصله میان حاشیه بالایی و آیتم/ویجت
- فاصله میان حاشیه راست و آیتم/ویجت
- فاصله میان حاشیه پایینی و آیتم/ویجت
- فاصله میان حاشیه چپ و آیتم/ویجت
- شعاع گوشههای گرد منو
- ضخامت حاشیه منو
- تراز افقی منو. اگر تنظیم نشود، jgmenu سعی میکند با خواندن _NET_WORKAREA، که یکی از ویژگیهای پنجره ریشه در freedesktop EWMH است، تراز را حدس بزند. همه مدیران پنجره و پنلها از _NET_WORKAREA پیروی نمیکنند. موارد زیر پیروی میکنند: openbox، xfwm4، tint2 و polybar. موارد زیر پیروی نمیکنند: awesome، i3، bspwm و plank
- تراز عمودی منو. menu_halign را ببینید.
- موقعیت شروع گرادیان پنجره منو. موقعیت پایان در سمت یا گوشه مقابل قرار دارد. رنگهای color_menu_bg و color_menu_bg_to نقطه شروع (from) و پایان (to) را مشخص میکنند.
- sub_spacing = عدد صحیح (پیشفرض 1)
- فضای افقی میان پنجرهها. یک مقدار منفی باعث میشود هر پنجره زیرمنو با پنجره والد خود همپوشانی داشته باشد.
- sub_padding_top = عدد صحیح (پیشفرض auto)
- مشابه menu_padding_top است، اما فقط برای پنجرههای زیرمنو اعمال میشود. کلیدواژه auto را درک میکند که به این معنی است که کوچکترین مقدار از میان چهار متغیر menu_padding_* استفاده خواهد شد.
- sub_padding_right = عدد صحیح (پیشفرض auto)
- sub_padding_top را ببینید.
- sub_padding_bottom = عدد صحیح (پیشفرض auto)
- sub_padding_top را ببینید.
- sub_padding_left = عدد صحیح (پیشفرض auto)
- sub_padding_top را ببینید.
- sub_hover_action = عدد صحیح (پیشفرض 1)
- باز کردن زیرمنو هنگام قرار گرفتن نشانگر ماوس روی آیتم (فقط در حالت multi-window کار میکند).
- item_margin_x = عدد صحیح (پیشفرض 3)
- فاصله افقی میان آیتمها و لبه منو.
- item_margin_y = عدد صحیح (پیشفرض 3)
- فاصله عمودی میان آیتمها و لبه منو.
- item_height = عدد صحیح (پیشفرض 25)
- ارتفاع آیتمهای منو.
- item_padding_x = عدد صحیح (پیشفرض 4)
- فاصله افقی میان لبه آیتم و محتوای آن (برای مثال متن یا آیکون).
- item_radius = عدد صحیح (پیشفرض 1)
- شعاع گوشههای گرد آیتمها.
- item_border = عدد صحیح (پیشفرض 0)
- ضخامت حاشیه آیتم.
- item_halign = (left | right) (پیشفرض left)
- تراز افقی آیتمهای منو. اگر روی right تنظیم شود، گزینه arrow_string نیز باید تغییر یابد.
- sep_height = عدد صحیح (پیشفرض 5)
- ارتفاع جداکننده بدون متن (تعریفشده توسط ^sep()). جداکنندههای دارای متن از item_height استفاده میکنند.
- sep_halign = (left | center | right) (پیشفرض left)
- تراز افقی متن جداکننده.
- sep_markup = رشته (بهطور پیشفرض تنظیمنشده)
- اگر مشخص شود، <span $sep_markup>foo</span> برای ^sep(foo) به pango ارسال خواهد شد.
برای مشخصههای pango پیوند زیر را ببینید: https://docs.gtk.org/Pango/pango_markup.html
کلیدواژهها شامل موارد زیر هستند (اما محدود به اینها نمیشوند):
- •
- font
- •
- size (x-small, small, medium, large, x-large) - style (normal, oblique, italic)
- •
- weight (ultralight, light, normal, bold, ultrabold, heavy
- •
- foreground (با استفاده از قالب #rrggbb یا یک نام رنگ)
- •
- underline (none, single, double)
مثال:
-
sep_markup = font="Sans Italic 12" foreground="blue"
- font = رشته (بهطور پیشفرض تنظیمنشده)
- توصیف قلم برای آیتمهای منو. font رشتهای مانند Cantarell 10 یا UbuntuCondensed 11 را میپذیرد. توصیف قلم بدون واحد اندازه مشخص، به عنوان points تفسیر میشود. اگر px اضافه شود، به صورت پیکسل خوانده خواهد شد. استفاده از “points” باعث یکپارچگی با سایر برنامهها میشود.
- font_fallback = رشته (پیشفرض xtg)
- مشابه icon_theme_fallback است، با این تفاوت که متغیر xsettings با نام Gtk/FontName خوانده میشود.
- icon_size = عدد صحیح (پیشفرض 22)
- اندازه آیکونها بر حسب پیکسل. اگر روی 0 تنظیم شود، آیکونها غیرفعال خواهند شد.
- icon_text_spacing = عدد صحیح (پیشفرض 10)
- فاصله میان آیکون و متن درون یک آیتم منو.
- icon_norm_alpha = عدد صحیح (پیشفرض 100)
- میزان کدر بودن آیکونهای آیتم منو، بیانشده به صورت درصد (0-100).
- icon_sel_alpha = عدد صحیح (پیشفرض 100)
- میزان کدر بودن آیکون آیتم منوی انتخابشده فعلی، بیانشده به صورت درصد (0-100).
- icon_theme = رشته (بهطور پیشفرض تنظیمنشده)
- نام تم آیکون. برای مثال: Adwaita، breeze، Paper، Papirus و Numix. برای تمهای آیکون موجود روی سیستم خود، ls /usr/share/icons/ (یا مشابه آن) را ببینید.
- icon_theme_fallback = رشته (پیشفرض xtg)
- منابع جایگزین تم آیکون به ترتیب اولویت، که در آن چپترین حرف نشاندهنده منبع با بالاترین اولویت است. نویسههای زیر قابل قبول هستند: x=xsettings Net/IconThemeName؛ t=tint2؛ g=gtk3.0. در صورت تنظیم شدن، icon_theme اولویت دارد. به منظور افزایش هماهنگی با tint2، متغیرهای xsettings تنها در صورتی خوانده میشوند که متغیر tint2rc با نام launcher_icon_theme_override برابر با 0 باشد.
- arrow_string = رشته (پیشفرض ▸)
- رشتهای که برای مشخص کردن اینکه یک آیتم زیرمنو را باز خواهد کرد استفاده میشود. برای مثالها jgmenuunicode(7) را ببینید.
- arrow_width = عدد صحیح (پیشفرض 15)
- عرض مجاز برای arrow_string. برای پنهان کردن فلش روی 0 تنظیم کنید.
- search_empty_string = رشته (پیشفرض <empty>)
- رشتهای که در صورت عدم تطابق هیچ ورودی با جستجو نشان داده میشود.
- رنگ پسزمینه پنجره منو. اگر گرادیانها فعال باشند، این رنگ مبدأ (from) خواهد بود..TP color_menu_bg_to = color (پیشفرض #000000 100) رنگ پایانی (to) پسزمینهٔ پنجرهٔ منو - برای استفاده در گرادیانها
- رنگ کادر پنجرهٔ منو
- color_norm_bg = color (پیشفرض #000000 0)
- رنگ پسزمینهٔ موارد منو، بهجز موردی که در حال حاضر انتخاب شده است.
- color_norm_fg = color (پیشفرض #eeeeee 100)
- رنگ قلم (پیشزمینه) موارد منو، بهجز موردی که در حال حاضر انتخاب شده است.
- color_sel_bg = color (پیشفرض #ffffff 20)
- رنگ پسزمینهٔ مورد انتخابشدهٔ فعلی در منو.
- color_sel_fg = color (پیشفرض #eeeeee 100)
- رنگ قلم (پیشزمینه) مورد انتخابشدهٔ فعلی در منو.
- color_sel_border = color (پیشفرض #eeeeee 8)
- رنگ کادر مورد انتخابشدهٔ فعلی در منو.
- color_sep_fg = color (پیشفرض #ffffff 20)
- رنگ قلم (پیشزمینه) جداکنندههای بدون متن
- color_title_fg = color (پیشفرض #eeeeee 50)
- رنگ قلم (پیشزمینه) جداکنندههای دارای متن. رنگ قلم میتواند توسط sep_markup بازنویسی شود
- color_title_bg = color (پیشفرض #000000 0)
- رنگ پسزمینهٔ جداکنندههای دارای متن.
- color_title_border = color (پیشفرض #000000 0)
- رنگ کادر جداکنندههای دارای متن.
- color_scroll_ind = color (پیشفرض #eeeeee 40)
- رنگ خطوط نشانگر پیمایش (که نشان میدهند آیا مواردی از منو بالاتر یا پایینتر از موارد نمایان وجود دارند یا خیر).
متغیرهای تولیدکننده CSV (CSV generator variables)
متغیرهای زیر با csv_ آغاز میشوند که نشان میدهد متغیرهای محیطی مورد استفاده توسط تولیدکنندههای CSV را مقداردهی میکنند.
- csv_name_format = string (پیشفرض %n (%g))
- قالب فیلد name را برای تولیدکنندههای CSV تعیین میکند. توسط apps و lx پشتیبانی میشود. این گزینه دو فیلد زیر را درک میکند:
- %n
- نام برنامه
- %g
- نام عمومی برنامه. اگر یک generic name وجود نداشته باشد یا با name یکسان باشد، %n بدون هیچ قالببندی استفاده خواهد شد.
- csv_single_window = boolean (پیشفرض 0)
- در صورت تنظیم، تولیدکنندههای csv بهجای ^checkout() مقدار ^root() را در خروجی میدهند. این کار منجر به یک منوی تکپنجرهای میشود که در آن زیرمنوها در همان پنجره نمایش مییابند. این گزینه توسط apps و pmenu پشتیبانی میشود.
- csv_no_dirs = boolean (پیشفرض 0)
- در صورت تنظیم، تولیدکنندههای csv برنامهها را بدون هیچ ساختار دایرکتوری در خروجی قرار میدهند. این گزینه توسط apps، pmenu و lx پشتیبانی میشود.
- csv_i18n = string (بدون پیشفرض)
- به دنبال یک فایل ترجمه در فایل یا دایرکتوری مشخصشده میگردد. برای جزئیات بیشتر `jgmenu-i18n(1) را ببینید. توسط apps و ob پشتیبانی میشود.
- csv_no_duplicates = boolean (پیشفرض 0)
- برنامهها را محدود میکند تا تنها در یک دایرکتوری نمایش داده شوند. توسط apps پشتیبانی میشود.
ارتباط بینفرآیندی (IPC)
میتوان از IPC برای همتراز کردن بلادرنگ jgmenu با یک راهانداز پنل استفاده کرد. این قابلیت در حال حاضر توسط tint2 و xfce-panel پشتیبانی میشود. عملکرد آن به شرح زیر است:
jgmenu_run متغیرهای محیطی فهرستشده در زیر را میخواند و آنها را از طریق یک سوکت یونیکس به نمونهٔ در حال اجرای طولانیمدت jgmenu ارسال میکند.
اگر position_mode=ipc باشد، jgmenu با هر بار راهاندازی با این متغیرها همتراز میشود.
چهار متغیر محیطی زیر حدود و مرزهای پنل را مشخص میکنند: TINT2_BUTTON_PANEL_X1، TINT2_BUTTON_PANEL_X2، TINT2_BUTTON_PANEL_Y1، TINT2_BUTTON_PANEL_Y2.
-
(X1,Y1) ╔══════════════════════╗ ║ panel ║ ╚══════════════════════╝ (X2,Y2)
متغیرهای محیطی زیر موقعیت راهانداز را تعیین میکنند. این متغیرها بسته به همترازی پنل بهصورت متفاوتی تفسیر میشوند.
در صورت وجود یک پنل افقی:
- •
- TINT2_BUTTON_ALIGNED_X1 و TINT2_BUTTON_ALIGNED_X2 حدود افقی دکمهٔ راهانداز را برای همترازی تعیین میکنند.
- •
- TINT2_BUTTON_ALIGNED_Y1 و TINT2_BUTTON_ALIGNED_Y2 لبهای از پنل را که باید با آن همتراز شود تعیین میکنند. این مقادیر باید یکسان باشند.
در صورت وجود یک پنل عمودی، همان قوانین با معکوس شدن X و Y اعمال میشوند.
اگر متغیرهای بالا تنظیم نشده باشند، menu_margin_x و menu_margin_y استفاده خواهند شد..SH "دیاگرامها (DIAGRAMS)"
نکات عمومی (General Notes)
منوی عمودی (Vertical Menu)
-
╔════════════════════════╗ ║ 1 ║ ╟────────────────────────╢ ║ 2 ║ ╟────────────────────────╢ ║ item ║ ╟────────────────────────╢ ║ 2 ║ ╟────────────────────────╢ ║ item ║ ╟────────────────────────╢ ║ 2 ║ ╟────────────────────────╢ ║ 3 ║ ╚════════════════════════╝ 1. menu_padding_top 2. item_margin_y 3. menu_padding_bottom
منوی افقی (Horizontal Menu)
-
╔═╤═╤════════════════╤═╤═╗ ║ │ │ │ │ ║ ║ │ ├────────────────┤ │ ║ ║ │ │icon text >│ │ ║ ║ │ ├────────────────┤ │ ║ ║2│1│ │1│3║ ║ │ ├────┬─┬───────┬─┤ │ ║ ║ │ │ 4 │5│ │6│ │ ║ ║ │ ├────┴─┴───────┴─┤ │ ║ ║ │ │ │ │ ║ ║ │ │ │ │ ║ ╚═╧═╧════════════════╧═╧═╝ 1. item_margin_x 2. padding_left 3. padding_right 4. icon_size 5. icon_to_text_spacing 6. arrow_width
خارج از منو (External to menu)
-
screen ╔════════════════════════╗ ║ 2 ║ ║ ┌──────┐ ║ ║ │ root │ ┌──────┐ ║ ║1│ menu │ │ sub │ ║ ║ │ │3│ menu │ ║ ║ └──────┘ │ │ ║ ║ └──────┘ ║ ║ ║ ║ ║ ║ ║ ╚════════════════════════╝ 1. menu_margin_x 2. menu_margin_y 3. sub_spacing
قلابها (HOOKS)
یک قلاب (hook) در jgmenu قاعدهای است که در صورت تغییر یک فایل یا دایرکتوری از زمان آخرین باری که نمونهای از jgmenu نگاشت شده بود (=نمایان شده بود - معمولاً با اجرای jgmenu_run)، بهصورت اختیاری دستوری را اجرا کرده و سپس راهاندازی مجدد (restart) را انجام میدهد.
قلابها در فایل $HOME/.config/jgmenu/hooks مشخص میشوند و از قالب زیر پیروی میکنند:
-
<file>,<command>
برای نمونه، جهت همگامسازی با تم GTK، از این قلاب استفاده کنید:
-
~/.config/gtk-3.0/settings.ini,jgmenu_run gtktheme
برای انجام صرفاً راهاندازی مجدد، <command> را خالی بگذارید.
تعدادی از قلابهای راهاندازی مجدد (restart-hooks) بهطور پیشفرض توکار هستند، برای نمونه ~/.config/jgmenu/{jgmenurc,append.csv,prepend.csv} و /usr/share/applications.
جهت فهرست کردن تمام قلابهای توکار، از کلیدواژه print در فایل قلابها (در یک خط جداگانه) استفاده کنید. به منظور حذف تمام قلابهای توکار، از کلیدواژه clear استفاده نمایید..SH "اسکریپت راهاندازی (STARTUP SCRIPT)" مگر اینکه از آرگومان --vsimple استفاده شود، فایل ~/.config/jgmenu/startup در راهاندازی اولیه اجرا میشود.
همچنین ببینید (SEE ALSO)
- •
- jgmenu_run(1)
- •
- jgmenututorial(7)
- •
- jgmenuunicode(7)
کد منبع و مستندات jgmenu از نشانی زیر قابل بارگیری است: https://github.com/johanmalm/jgmenu
نویسندگان (AUTHORS)
Johan Malm.
| 2 January, 2021 |