mako(5) File Formats Manual mako(5)

mako - پرونده پیکربندی

پرونده پیکربندی در مسیر ~/.config/mako/config یا در $XDG_CONFIG_HOME/mako/config قرار دارد. خطوط گزینه‌ها می‌توانند برای پیکربندی mako به این صورت مشخص شوند:

key=value

خطوط خالی و خطوطی که با # آغاز می‌شوند نادیده گرفته می‌شوند.

max-history=n

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

پیش‌فرض: 5

sort=+/-time | +/-priority

اعلان‌های دریافتی را بر اساس زمان و/یا اولویت به ترتیب صعودی (+) یا نزولی (-) مرتب می‌کند.

پیش‌فرض: -time

include=config path

یک پرونده پیکربندی را از مسیر مشخص‌شده وارد می‌کند. مسیر باید مطلق باشد یا با ~/ آغاز شود.

پیش‌فرض: none

اتصالات (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]

اعلان جاری را رد (بستن) می‌کند. اگر --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

font=font

قلم را بر اساس توصیف قلم پانگو به font تنظیم می‌کند. برای اطلاعات بیشتر درباره توصیف‌های قلم Pango، ببینید: https://docs.gtk.org/Pango/type_func.FontDescription.from_string.html#description

پیش‌فرض: monospace 10

background-color=color

رنگ پس‌زمینه را به color تنظیم می‌کند. برای اطلاعات بیشتر رنگ‌ها (COLORS) را ببینید.

پیش‌فرض: #285577FF

text-color=color

رنگ متن را به color تنظیم می‌کند. برای اطلاعات بیشتر رنگ‌ها (COLORS) را ببینید.

پیش‌فرض: #FFFFFFFF

width=px

عرض پنجره‌های بازشوی اعلان را تنظیم می‌کند.

پیش‌فرض: 300

height=px

حداکثر ارتفاع پنجره‌های بازشوی اعلان را تنظیم می‌کند. اعلان‌هایی که متن آن‌ها فضای کمتری اشغال کند، برای تطبیق کوچک‌تر می‌شوند.

پیش‌فرض: 100

outer-margin=directional

حاشیه بیرونی هر لبه را به اندازه مشخص‌شده با directional تنظیم می‌کند. برای اطلاعات بیشتر مقادیر جهتی (DIRECTIONAL VALUES) را ببینید. این حاشیه بر بخش بیرونی کل فهرست اعلان‌ها اعمال می‌شود.

پیش‌فرض: 0

margin=directional

حاشیه هر لبه را به اندازه مشخص‌شده با directional تنظیم می‌کند. برای اطلاعات بیشتر مقادیر جهتی (DIRECTIONAL VALUES) را ببینید. این حاشیه بر هر اعلان به صورت جداگانه اعمال می‌شود. توجه داشته باشید که این حاشیه علاوه بر outer-margin اعمال می‌شود، به این معنی که اعلان‌های اول و آخر از مجموع هر دو حاشیه استفاده خواهند کرد.

پیش‌فرض: 10

padding=directional

فاصله درونی (padding) در هر طرف را به اندازه مشخص‌شده با directional تنظیم می‌کند. برای اطلاعات بیشتر مقادیر جهتی (DIRECTIONAL VALUES) را ببینید.

پیش‌فرض: 5

border-size=px

اندازه حاشیه بازشو را به px پیکسل تنظیم می‌کند.

پیش‌فرض: 2

border-color=color

رنگ حاشیه بازشو را به color تنظیم می‌کند. برای اطلاعات بیشتر رنگ‌ها (COLORS) را ببینید.

پیش‌فرض: #4C7899FF

border-radius=directional

شعاع گوشه‌های بازشو در هر طرف را به اندازه مشخص‌شده با directional تنظیم می‌کند. برای اطلاعات بیشتر مقادیر جهتی (DIRECTIONAL VALUES) را ببینید.

پیش‌فرض: 0

progress-color=[over|source] color

رنگ نشانگر پیشرفت بازشو را به color تنظیم می‌کند. برای اطلاعات بیشتر رنگ‌ها (COLORS) را ببینید. برای رسم نشانگر پیشرفت بر روی رنگ پس‌زمینه، از ویژگی over استفاده کنید. برای جایگزینی رنگ پس‌زمینه، از ویژگی source استفاده نمایید (این حالت هنگام نیمه‌شفاف بودن اعلان می‌تواند مفید باشد).

پیشرفت در یک اعلان را می‌توان با تنظیم نشانه (hint) "value" بر روی یک عدد صحیح بین 0 تا 100 مشخص کرد.

پیش‌فرض: over #5588AAFF

icons=0|1

نمایش آیکون‌ها در اعلان‌ها.

پیش‌فرض: 1

max-icon-size=px

حداکثر اندازه آیکون را به px پیکسل تنظیم می‌کند.

پیش‌فرض: 64

icon-path=path[:path...]

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

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

مسیرهای /usr/share/icons/hicolor و /usr/share/pixmaps همیشه جستجو می‌شوند.

پیش‌فرض: ""

icon-location=position

موقعیت آیکون نسبت به متن نمایش‌داده‌شده. گزینه‌های معتبر شامل left، right، top و bottom هستند.

پیش‌فرض: left

icon-border-radius=px

شعاع گوشه‌های آیکون را به px پیکسل تنظیم می‌کند.

پیش‌فرض: 0

markup=0|1

اگر 1 باشد، نشانه‌گذاری Pango فعال می‌شود. اگر 0 باشد، نشانه‌گذاری Pango غیرفعال می‌گردد. در صورت فعال بودن، نشانه‌گذاری Pango در مشخص‌کننده فرمت شما و در بدنه اعلان‌ها تفسیر خواهد شد.

پیش‌فرض: 1

actions=0|1

برنامه‌ها ممکن است درخواست کنند عملیاتی با فعال‌سازی یک اعلان مرتبط شود. غیرفعال کردن این گزینه باعث می‌شود mako این درخواست‌ها را نادیده بگیرد.

پیش‌فرض: 1

history=0|1

در صورت تنظیم، mako اعلان‌هایی که مهلت زمانی‌شان به پایان رسیده را به جای حذف فوری، در بافر تاریخچه ذخیره خواهد کرد. max-history اندازه بافر تاریخچه را تعیین می‌کند.

پیش‌فرض: 1

format=format

رشته فرمت اعلان را به format تنظیم می‌کند. برای اطلاعات بیشتر مشخص‌کننده‌های فرمت (FORMAT SPECIFIERS) را ببینید. برای تغییر این مقدار در اعلان‌های گروهی، آن را در معیار grouped تنظیم کنید.

پیش‌فرض: <b>%s</b>\n%b
پیش‌فرض در حالت گروه‌بندی‌شده: (%g) <b>%s</b>\n%b

text-alignment=left|center|right

تراز متن اعلان را تنظیم می‌کند.

پیش‌فرض: left

default-timeout=timeout

مهلت زمانی پیش‌فرض را به timeout بر حسب میلی‌ثانیه تنظیم می‌کند. برای غیرفعال کردن مهلت زمانی، آن را برابر صفر قرار دهید.

پیش‌فرض: 0

ignore-timeout=0|1

در صورت تنظیم، mako مهلت انقضای ارسال‌شده توسط اعلان‌ها را نادیده گرفته و به جای آن از مقدار ارائه‌شده توسط default-timeout استفاده می‌کند.

پیش‌فرض: 0

group-by=field[,field,...]

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

پیش‌فرض: none

max-visible=n

حداکثر تعداد اعلان‌های مرئی را برابر n قرار می‌دهد. اعلان‌های قدیمی‌تر پنهان خواهند شد. اگر -1 باشد، تمام اعلان‌ها مرئی هستند.

پیش‌فرض: 5

output=name

اعلان‌ها را در خروجی مشخص‌شده نمایش می‌دهد. اگر خالی باشد، اعلان‌ها روی خروجی دارای فوکوس ظاهر می‌شوند.

نیازمند پشتیبانی کامپوزیتور از پروتکل Wayland به نام xdg-output-unstable-v1 نسخه 2 است.

پیش‌فرض: ""

layer=layer

mako را در لایه مشخص‌شده نسبت به پنجره‌های معمولی سازمان‌دهی می‌کند. مقادیر پشتیبانی‌شده عبارتند از background، bottom، top و overlay. استفاده از overlay باعث می‌شود اعلان‌ها بالای پنجره‌های تمام‌صفحه نمایش داده شوند، هرچند بسته به کامپوزیتور شما ممکن است این اتفاق در top نیز رخ دهد.

پیش‌فرض: top

anchor=position

اعلان‌ها را در موقعیت مشخص‌شده روی خروجی نمایش می‌دهد. مقادیر پشتیبانی‌شده عبارتند از top-right، top-center، top-left، bottom-right، bottom-center، bottom-left، center-right، center-left و center.

پیش‌فرض: top-right

علاوه بر مجموعه گزینه‌های ابتدای پرونده، پرونده پیکربندی ممکن است شامل صفر یا چندین بخش باشد که هر یک حاوی هر ترکیبی از گزینه‌های اتصال کلیدها و رویدادها (BINDING OPTIONS) و گزینه‌های ظاهری (STYLE OPTIONS) هستند. این بخش‌ها که معیار (criteria) نامیده می‌شوند، با ساختاری شبیه به براکت‌های قالب INI تعریف می‌گردند. براکت‌ها می‌توانند شامل هر تعداد فیلد باشند، به این صورت:

[field=value field2=value2 ...]

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

فیلدهای زیر در معیارها در دسترس هستند:

  • 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"]

[app-name=Google\ Chrome]

نقل‌قول‌های درون نقل‌قول نیز قابل اسکیپ هستند و یک بک‌اسلش صریح را می‌توان به صورت \\ مشخص کرد. هیچ فاصله‌ای در دو طرف علامت مساوی مجاز نیست. اسکیپ کردن علامت مساوی درون مقادیر لازم نیست.

علاوه بر این، مقادیر بولی را می‌توان با هر یک از true/false، 0/1، یا به عنوان کلمات ساده مشخص کرد:

[actionable=true] [actionable=1] [actionable]

[actionable=false] [actionable=0] [!actionable]

سه معیار همیشه در ابتدای فهرست وجود دارند:

  • یک معیار خالی که با تمام اعلان‌ها تطبیق می‌یابد و حاوی مقادیر پیش‌فرض برای تمام گزینه‌های ظاهری است که با موارد پیکربندی‌شده در بخش سراسری بازنویسی می‌شوند.
  • [grouped]، که format پیش‌فرض را برای اعلان‌های گروه‌بندی‌شده تنظیم کرده و آن‌ها را invisible می‌کند.
  • [group-index=0]، که نخستین عضو هر گروه را مجدداً مرئی می‌سازد.

این گزینه‌ها را می‌توان به سادگی با تعریف معیار توسط خودتان و بازنویسی آن‌ها لغو کرد.

قوانینی وجود دارند که پیکربندی مجاز را بسته به آنچه توسط معیار داده‌شده تطبیق می‌یابد محدود می‌کنند. معیارهایی که با grouped یا group-index تطبیق می‌یابند، مجاز به تغییر anchor، output یا group-by نیستند، چرا که این کار گروه‌بندی را باطل می‌کند. گروه‌بندی فقط یک بار انجام می‌شود و بازگشتی نیست تا از احتمال ایجاد حلقه‌های بی‌نهایت جلوگیری شود.

برخی از گزینه‌های ظاهری در بافت سراسری کاربردی ندارند و بنابراین هیچ گزینه خط فرمانی متناظری برای آن‌ها وجود ندارد.

invisible=0|1

آیا این اعلان باید نامرئی باشد حتی اگر بالاتر از حد نصاب max-visible قرار گیرد. این گزینه عمدتاً برای پنهان کردن اعضای گروه‌ها استفاده می‌شود. اگر می‌خواهید بیش از عضو اول گروه را مرئی کنید، این گزینه را درون یک معیار group-index خاموش کنید.

پیش‌فرض: 0

رنگ‌ها می‌توانند به صورت #RRGGBB یا #RRGGBBAA مشخص شوند.

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

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

هنگام مشخص کردن چند مقدار، باید آن‌ها را با کاما جدا کنید. برای نمونه، این پیکربندی حاشیه بالا را 10، چپ و راست را 20 و پایین را 5 قرار می‌دهد:

margin = 10,20,5

مشخص کردن فرمت شبیه به printf(3) کار می‌کند، اما با مجموعه‌ای متفاوت از مشخص‌کننده‌ها.

%% نویسه صریح "%"

\\ نویسه صریح "\"

\n خط جدید

%a نام برنامه

%s خلاصه اعلان

%b بدنه اعلان

%g تعداد اعلان‌ها در گروه جاری

%i شناسه اعلان

%h تعداد اعلان‌های پنهان

%t تعداد کل اعلان‌ها

برنامه 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 آن‌ها را دوباره نمایش خواهد داد.

نگهداری‌شده توسط Simon Ser <contact@emersion.fr>، با همراهی دیگر مشارکت‌کنندگان متن‌باز. برای اطلاعات بیشتر پیرامون توسعه mako، ببینید: https://github.com/emersion/mako

mako(1) makoctl(1)

2026-03-26