| mako(5) | File Formats Manual | mako(5) |
نام (NAME)
mako - پرونده پیکربندی
توضیحات (DESCRIPTION)
پرونده پیکربندی در مسیر ~/.config/mako/config یا در $XDG_CONFIG_HOME/mako/config قرار دارد. خطوط گزینهها میتوانند برای پیکربندی mako به این صورت مشخص شوند:
خطوط خالی و خطوطی که با # آغاز میشوند نادیده گرفته میشوند.
گزینههای پیکربندی سراسری (GLOBAL CONFIGURATION OPTIONS)
max-history=n
پیشفرض: 5
sort=+/-time | +/-priority
پیشفرض: -time
include=config path
پیشفرض: none
گزینههای اتصال کلیدها و رویدادها (BINDING OPTIONS)
اتصالات (Bindings) به شما اجازه میدهند تا هنگام وقوع یک رویداد، عملیاتی را اجرا کنید.
گزینههای پشتیبانیشده:
on-button-left=action
پیشفرض: invoke-default-action
on-button-middle=action
پیشفرض: none
on-button-right=action
پیشفرض: dismiss
on-touch=action
پیشفرض: dismiss
on-notify=action
پیشفرض: none
عملیات پشتیبانیشده:
none
dismiss [--no-history]
dismiss-all
dismiss-group
invoke-action <action>
یک نشانه (token) xdg-activation به کلاینت فرستاده خواهد شد که به کلاینت اجازه میدهد درخواست فوکوس از کامپوزیتور نماید. کامپوزیتور باید از پروتکل xdg_activation_v1 پشتیبانی کند و اجازه فوکوس را بدهد تا مثال زیر به درستی کار کند:
[app-name="some-app-id" actionable] on-button-left=invoke-action mail-reply-sender
invoke-default-action
exec <command>
دستور در یک شل سازگار با POSIX اجرا خواهد شد. متغیر شل id با شناسه اعلان مقداردهی میشود. برای نمونه، گزینه زیر یک منوی عملیات تعاملی را هنگام کلیک وسط نمایش میدهد:
on-button-middle=exec makoctl menu -n "$id" -- wmenu -p 'Select action: '
گزینه زیر هنگام باز شدن یک اعلان تازه، صدایی را پخش خواهد کرد:
on-notify=exec mpv /usr/share/sounds/freedesktop/stereo/message.oga
گزینههای ظاهری (STYLE OPTIONS)
font=font
پیشفرض: monospace 10
background-color=color
پیشفرض: #285577FF
text-color=color
پیشفرض: #FFFFFFFF
width=px
پیشفرض: 300
height=px
پیشفرض: 100
outer-margin=directional
پیشفرض: 0
margin=directional
پیشفرض: 10
padding=directional
پیشفرض: 5
border-size=px
پیشفرض: 2
border-color=color
پیشفرض: #4C7899FF
border-radius=directional
پیشفرض: 0
progress-color=[over|source] color
پیشرفت در یک اعلان را میتوان با تنظیم نشانه (hint) "value" بر روی یک عدد صحیح بین 0 تا 100 مشخص کرد.
پیشفرض: over #5588AAFF
icons=0|1
پیشفرض: 1
max-icon-size=px
پیشفرض: 64
icon-path=path[:path...]
مسیر باید ریشه تم آیکون باشد؛ دستهبندیها و رزولوشنها برای یافتن مناسبترین تطابق جستجو خواهند شد.
مسیرهای /usr/share/icons/hicolor و /usr/share/pixmaps همیشه جستجو میشوند.
پیشفرض: ""
icon-location=position
پیشفرض: left
icon-border-radius=px
پیشفرض: 0
markup=0|1
پیشفرض: 1
actions=0|1
پیشفرض: 1
history=0|1
پیشفرض: 1
format=format
پیشفرض:
<b>%s</b>\n%b
پیشفرض در
حالت
گروهبندیشده:
(%g) <b>%s</b>\n%b
text-alignment=left|center|right
پیشفرض: left
default-timeout=timeout
پیشفرض: 0
ignore-timeout=0|1
پیشفرض: 0
group-by=field[,field,...]
پیشفرض: none
max-visible=n
پیشفرض: 5
output=name
نیازمند پشتیبانی کامپوزیتور از پروتکل Wayland به نام xdg-output-unstable-v1 نسخه 2 است.
پیشفرض: ""
layer=layer
پیشفرض: top
anchor=position
پیشفرض: top-right
معیارها (CRITERIA)
علاوه بر مجموعه گزینههای ابتدای پرونده، پرونده پیکربندی ممکن است شامل صفر یا چندین بخش باشد که هر یک حاوی هر ترکیبی از گزینههای اتصال کلیدها و رویدادها (BINDING OPTIONS) و گزینههای ظاهری (STYLE OPTIONS) هستند. این بخشها که معیار (criteria) نامیده میشوند، با ساختاری شبیه به براکتهای قالب INI تعریف میگردند. براکتها میتوانند شامل هر تعداد فیلد باشند، به این صورت:
هنگام دریافت اعلان، با فیلدهای تعریفشده در هر معیار مقایسه خواهد شد. اگر تمام فیلدها مطابقت داشته باشند، گزینههای ظاهری درون آن روی اعلان اعمال میشوند. فیلدهایی که در معیار گنجانده نشدهاند، در طول تطبیق در نظر گرفته نمیشوند. یک اعلان ممکن است با هر تعداد معیار مطابقت داشته باشد. این تطبیق به ترتیبی که معیارها در پرونده پیکربندی تعریف شدهاند انجام میشود، به این معنی که اگر چندین معیار با یک اعلان تطبیق یابند، آخرین وقوع هر گزینه ظاهری مشخص برنده خواهد بود («اولویت دارد»).
فیلدهای زیر در معیارها در دسترس هستند:
- app-name (رشته)
- app-icon (رشته)
- summary (رشته): تطابق دقیق با خلاصه اعلان. این فیلد با summary~ تداخل دارد.
- summary~ (رشته): تطابق عبارت منظم تعمیمیافته POSIX با خلاصه اعلان. این فیلد با summary تداخل دارد.
- body (رشته): تطابق دقیق با بدنه اعلان. این فیلد با body~ تداخل دارد.
- body~ (رشته): تطابق عبارت منظم تعمیمیافته POSIX با بدنه اعلان. این فیلد با body تداخل دارد.
- urgency (یکی از "low"، "normal"، "critical")
- category (رشته)
- desktop-entry (رشته)
- actionable (بولی)
- expiring (بولی)
- mode (رشته): گزینههای ظاهری این بخش تنها زمانی اعمال میشوند که حالت ارائهشده در حال حاضر فعال باشد. برای اطلاعات بیشتر درباره حالتها، بخش حالتها (MODES) را ببینید.
فیلدهای زیر نیز برای تطبیق در گذر دوم بر اساس جایی که گزینههای ظاهری پیشین تصمیم به قرار دادن هر اعلان گرفتهاند در دسترس هستند:
- grouped (بولی): آیا اعلان با موارد دیگر گروهبندی شده است یا خیر.
- group-index (عدد صحیح): شاخص اعلان درون گروه خود، یا -1 اگر گروهبندی نشده باشد.
- hidden (بولی): فیلد ویژهای که ظاهر جاینگهدار نمایشدادهشده هنگام فراتر رفتن تعداد اعلانها یا گروهها از max-visible را مشخص میکند.
- output (رشته): کدام خروجی که اعلان به آن مرتب شده است. برای مقادیر ممکن گزینه ظاهری output را ببینید.
- anchor (رشته): کدام موقعیت در خروجی که اعلان به آن اختصاص یافته است. برای مقادیر ممکن گزینه ظاهری anchor را ببینید.
تنها دو گذر روی هر اعلان انجام میشود، بنابراین معیارهای گذر دوم مجاز به تغییر موقعیت اعلان نیستند.
اگر مقدار یک فیلد حاوی نویسههای خاص باشد، میتوان آنها را با بکاسلش اسکیپ کرد یا درون نقلقول قرار داد:
[app-name=Google\ Chrome]
نقلقولهای درون نقلقول نیز قابل اسکیپ هستند و یک بکاسلش صریح را میتوان به صورت \\ مشخص کرد. هیچ فاصلهای در دو طرف علامت مساوی مجاز نیست. اسکیپ کردن علامت مساوی درون مقادیر لازم نیست.
علاوه بر این، مقادیر بولی را میتوان با هر یک از true/false، 0/1، یا به عنوان کلمات ساده مشخص کرد:
[actionable=false] [actionable=0] [!actionable]
سه معیار همیشه در ابتدای فهرست وجود دارند:
- یک معیار خالی که با تمام اعلانها تطبیق مییابد و حاوی مقادیر پیشفرض برای تمام گزینههای ظاهری است که با موارد پیکربندیشده در بخش سراسری بازنویسی میشوند.
- [grouped]، که format پیشفرض را برای اعلانهای گروهبندیشده تنظیم کرده و آنها را invisible میکند.
- [group-index=0]، که نخستین عضو هر گروه را مجدداً مرئی میسازد.
این گزینهها را میتوان به سادگی با تعریف معیار توسط خودتان و بازنویسی آنها لغو کرد.
قوانینی وجود دارند که پیکربندی مجاز را بسته به آنچه توسط معیار دادهشده تطبیق مییابد محدود میکنند. معیارهایی که با grouped یا group-index تطبیق مییابند، مجاز به تغییر anchor، output یا group-by نیستند، چرا که این کار گروهبندی را باطل میکند. گروهبندی فقط یک بار انجام میشود و بازگشتی نیست تا از احتمال ایجاد حلقههای بینهایت جلوگیری شود.
گزینههای ظاهری اختصاصی معیار (CRITERIA-ONLY STYLE OPTIONS)
برخی از گزینههای ظاهری در بافت سراسری کاربردی ندارند و بنابراین هیچ گزینه خط فرمانی متناظری برای آنها وجود ندارد.
invisible=0|1
پیشفرض: 0
رنگها (COLORS)
رنگها میتوانند به صورت #RRGGBB یا #RRGGBBAA مشخص شوند.
مقادیر جهتی (DIRECTIONAL VALUES)
برخی گزینهها مقادیری را تنظیم میکنند که بر هر چهار لبه اعلان اثر میگذارند. این گزینهها را میتوان به چندین روش مختلف مشخص کرد، بسته به این که چه میزان کنترل روی هر لبه مورد نیاز است:
- یک مقدار منفرد بر هر چهار لبه اعمال خواهد شد.
- دو مقدار لبههای عمودی و افقی را به صورت جداگانه تنظیم میکنند.
- سه مقدار لبههای بالا، افقی و پایین را به صورت جداگانه تنظیم میکنند.
- چهار مقدار لبههای بالا، راست، پایین و چپ را به صورت جداگانه تنظیم میکنند.
هنگام مشخص کردن چند مقدار، باید آنها را با کاما جدا کنید. برای نمونه، این پیکربندی حاشیه بالا را 10، چپ و راست را 20 و پایین را 5 قرار میدهد:
margin = 10,20,5
مشخصکنندههای فرمت (FORMAT SPECIFIERS)
مشخص کردن فرمت شبیه به printf(3) کار میکند، اما با مجموعهای متفاوت از مشخصکنندهها.
%% نویسه صریح "%"
\\ نویسه صریح "\"
\n خط جدید
برای اعلانها (For notifications)
%a نام برنامه
%s خلاصه اعلان
%b بدنه اعلان
%g تعداد اعلانها در گروه جاری
%i شناسه اعلان
برای جاینگهدار اعلانهای پنهان (For the hidden notifications placeholder)
%h تعداد اعلانهای پنهان
%t تعداد کل اعلانها
حالتها (MODES)
برنامه mako از اعمال شرطی گزینههای ظاهری از طریق حالتها پشتیبانی میکند. یک بخش پیکربندی با معیار mode تنها در صورتی اعمال میشود که حالت فعلی تطبیق یابد. از makoctl(1) میتوان برای تغییر حالت فعلی استفاده کرد.
فهرست اولیه حالتها شامل یک حالت منفرد به نام "default" است. این روش منسوخ شده و در نسخههای آینده فهرست اولیه حالتها خالی خواهد بود.
برای نمونه، جهت پنهان کردن تمام اعلانها در صورتی که حالت "do-not-disturb" فعال باشد:
[mode=do-not-disturb] invisible=1
دستور makoctl mode -a do-not-disturb همه اعلانها را پنهان کرده، و makoctl mode -r do-not-disturb آنها را دوباره نمایش خواهد داد.
نویسندگان (AUTHORS)
نگهداریشده توسط Simon Ser <contact@emersion.fr>، با همراهی دیگر مشارکتکنندگان متنباز. برای اطلاعات بیشتر پیرامون توسعه mako، ببینید: https://github.com/emersion/mako
همچنین ببینید (SEE ALSO)
| 2026-03-26 |