waybar(5) File Formats Manual waybar(5)

waybar - فایل پیکربندی

این پیکربندی از قالب فایل JSONC استفاده می‌کند و نام آن config یا config.jsonc است.

مکان‌های معتبر برای این فایل عبارتند از:

  • $XDG_CONFIG_HOME/waybar/
  • ~/.config/waybar/
  • ~/waybar/
  • /etc/xdg/waybar/
  • /etc/xdg/waybar/

یک نقطه شروع مناسب، پیکربندی پیش‌فرضی است که در https://github.com/Alexays/Waybar/blob/master/resources/config.jsonc یافت می‌شود. همچنین، یک نمونه پیکربندی حداقلی را می‌توان در انتهای این صفحه راهنما پیدا کرد.

عناصر نمایش بصری waybar از یک شیوه‌نامه CSS استفاده می‌کنند؛ برای جزئیات بیشتر waybar-styles(5) را ببینید.

expand-center
typeof: bool
default: false
به modules-center امکان می‌دهد تا تمام فضای باقی‌مانده را به‌طور پویا مصرف کند.

expand-left
typeof: bool
default: false
به modules-left امکان می‌دهد تا تمام فضای باقی‌مانده را به‌طور پویا مصرف کند.

expand-right
typeof: bool
default: false
به modules-left امکان می‌دهد تا تمام فضای باقی‌مانده را به‌طور پویا مصرف کند.

layer
typeof: string
default: bottom
مشخص می‌کند که نوار در جلوی پنجره‌ها (top) یا در پشت (bottom)

آن‌ها نمایش داده شود.

output
typeof: string|array
مشخص می‌کند که این نوار روی کدام صفحه نمایش داده خواهد شد. علامت تعجب (!) می‌تواند برای مستثنی کردن خروجی مشخصی استفاده شود.

مشخصات خروجی از sway پیروی می‌کند و می‌تواند شامل پورت خروجی مانند "HDMI-A-1" یا رشته‌ای متشکل از سازنده، مدل و شماره سریال مانند "Some Company ABC123 0x00000000" باشد. برای جزئیات sway-output(5) را ببینید. در یک آرایه، علامت ستاره '*' می‌تواند در انتها برای پذیرش تمام خروجی‌ها در صورتی که همه ورودی‌های قبلی استثنا باشند، به کار رود.

position
typeof: string
default: top
موقعیت نوار، می‌تواند top، bottom، left، right باشد.

height
typeof: integer
ارتفاعی که در صورت امکان توسط نوار استفاده می‌شود. برای مقدار پویا خالی بگذارید.

width
typeof: integer
عرضی که در صورت امکان توسط نوار استفاده می‌شود. برای مقدار پویا خالی بگذارید.

modules-left
typeof: array
ماژول‌هایی که در سمت چپ نمایش داده خواهند شد.

modules-center
typeof: array
ماژول‌هایی که در مرکز نمایش داده خواهند شد.

modules-right
typeof: array

ماژول‌هایی که در سمت راست نمایش داده خواهند شد.

margin
typeof: string
مقدار حاشیه‌ها با استفاده از قالب CSS و بدون واحد.

margin-<top|left|bottom|right>
typeof: integer
مقدار حاشیه‌ها بدون واحد.

no-center
typeof: bool
default: false
گزینه‌ای برای غیرفعال کردن کامل ماژول‌های مرکزی که همراه با expand-* بسیار مفید است.

spacing
typeof: integer
اندازه فاصله‌ها در بین ماژول‌های مختلف.

name
typeof: string
نام اختیاری که به عنوان یک کلاس CSS اضافه می‌شود، برای استایل‌دهی به چندین waybar.

mode
typeof: string
یکی از حالت‌های نمایش از پیش پیکربندی‌شده را انتخاب می‌کند. این معادل دستور mode در sway-bar(5) است و از همان مقادیر پشتیبانی می‌کند: dock، hide، invisible، overlay.
نکته: حالت‌های hide و invisible ممکن است بدون Sway IPC چندان کاربردی نباشند.

start_hidden
typeof: bool
default: false
گزینه‌ای برای راه‌اندازی نوار به صورت پنهان.

modifier-reset
typeof: string
default: press

زمان‌بندی کلید تبدیل‌کننده (modifier key) را برای بازنشانی قابلیت دید نوار تعریف می‌کند. برای بازنشانی قابلیت دید نوار با فشردن کلید تبدیل‌کننده از press استفاده کنید. برای بازنشانی قابلیت دید پس از رها کردن کلید تبدیل‌کننده و تنها در صورتی که هیچ عمل دیگری هنگام فشرده بودن کلید رخ نداده باشد، از release استفاده کنید. این کار از پنهان شدن نوار هنگامی که از کلید تبدیل‌کننده برای جابجایی فضای کاری، تغییر حالت کلیدهای میانبر یا شروع یک کلید میانبر استفاده می‌شود، جلوگیری می‌کند.

exclusive
typeof: bool
default: true
گزینه‌ای برای درخواست یک منطقهٔ اختصاصی (exclusive zone) از کامپوزیتور. این گزینه را غیرفعال کنید تا اجازه دهید پنجره‌های برنامه‌ها در زیر یا بالای نوار رسم شوند.

fixed-center
typeof: bool
default: true

ترجیح دادن موقعیت مرکز ثابت برای بلوک `modules-center`. بلوک مرکزی تا حد امکان در وسط نوار باقی خواهد ماند. با این حال اگر بلوک‌های دیگر به فضای بیشتری نیاز داشته باشند، همچنان ممکن است جابه‌جا شود. در صورت false بودن، بلوک مرکزی در فضای بین بلوک چپ و راست وسط‌چین می‌شود.

passthrough
typeof: bool
default: false
گزینه‌ای برای انتقال هرگونه رویداد اشاره‌گر به پنجرهٔ زیر نوار.

برای استفاده با لایه‌های top یا overlay و بدون منطقهٔ اختصاصی در نظر گرفته شده است.

ipc
typeof: bool
default: false
گزینه‌ای برای اشتراک در رویدادهای پیکربندی و قابلیت دید نوار در Sway IPC و کنترل waybar با دستورات swaymsg bar.
نیازمند آن است که مقدار bar_id از پیکربندی sway با آرگومان خط فرمان -b منتقل شود یا با گزینهٔ id مشخص گردد.

id
typeof: string
شناسه bar_id برای Sway IPC. اگر نیاز دارید مقدار منتقل‌شده با آرگومان خط فرمان -b bar_id را برای یک نمونهٔ نوار خاص بازنویسی کنید، از این گزینه استفاده نمایید.

include
typeof: string|array
مسیرهای فایل‌های پیکربندی اضافی.

هر فایل می‌تواند شامل یک شیء واحد با هر یک از گزینه‌های پیکربندی نوار باشد. در صورت وجود گزینه‌های تکراری، اولین مقدار تعریف‌شده اولویت دارد، یعنی: فایل شامل‌کننده -> اولین فایل گنجانده‌شده -> و غیره. گنجاندن‌های تو در تو مجاز است، اما مطمئن شوید که از وارد کردن حلقه‌ای جلوگیری می‌شود. برای پیکربندی چند نوار، دستورالعمل include تنها بر شیء پیکربندی نوار فعلی تأثیر می‌گذارد.

reload_style_on_change
typeof: bool
default: false
گزینه‌ای برای فعال‌سازی بارگذاری مجدد استایل css در صورت تشخیص تغییر در فایل شیوه‌نامه یا هر فایل css وارد‌شده.

on-sigusr1
typeof: string
default: toggle
عملی که هنگام دریافت سیگنال SIGUSR1 انجام می‌شود.
مقادیر ممکن: show، hide، toggle، reload، noop.
مقدار پیش‌فرض: toggle.

on-sigusr2
typeof: string
default: reload
عملی که هنگام دریافت سیگنال SIGUSR2 انجام می‌شود.
مقادیر ممکن: show، hide، toggle، reload، noop.
مقدار پیش‌فرض: reload.

می‌توانید از PangoMarkupFormat استفاده کنید (به https://developer.gnome.org/pango/stable/PangoMarkupFormat.html#PangoMarkupFormat مراجعه فرمایید).

به عنوان مثال:

"format": "<span style="italic">{}</span>"

اگر می‌خواهید نمونهٔ دومی از یک ماژول داشته باشید، می‌توانید یک پسوند '#' و یک نام سفارشی به آن اضافه کنید. به عنوان مثال، اگر یک ماژول باتری دوم می‌خواهید، می‌توانید "battery#bat2" را به ماژول‌های خود اضافه کنید. برای پیکربندی ماژول تازه اضافه‌شده، سپس یک پیکربندی ماژول با همان نام نیز اضافه می‌کنید.

این پیکربندی می‌تواند شبیه به این باشد (این یک مثال ناقص است):

"modules-right": ["battery", "battery#bat2"],
"battery": {
	"bat": "BAT1"
},
"battery#bat2": {
	"bat": "BAT2"
}

یک فایل config حداقلی می‌تواند به شکل زیر باشد:

{
	"layer": "top",
	"modules-left": ["sway/workspaces", "sway/mode"],
	"modules-center": ["sway/window"],
	"modules-right": ["battery", "clock"],
	"sway/window": {
		"max-length": 50
	},
	"battery": {
		"format": "{capacity}% {icon}",
		"format-icons": ["", "", "", "", ""]
	},
	"clock": {
		"format-alt": "{:%a, %d. %b  %H:%M}"
	}
}

برنامه Waybar سیگنال‌های زیر را می‌پذیرد:

SIGUSR1

به‌طور پیش‌فرض قابلیت دید نوار را تغییر می‌دهد (اگر نمایان باشد پنهان می‌کند و اگر پنهان باشد نمایش می‌دهد)
SIGUSR2
به‌طور پیش‌فرض نوار را بازنشانی (بارگذاری مجدد) می‌کند
SIGINT
از نوار خارج می‌شود

برای مثال، برای تغییر وضعیت قابلیت دید نوار به‌صورت برنامه‌نویسی‌شده، می‌توانید دستور `killall -SIGUSR1 waybar` را اجرا کنید.

پارامترهای پیکربندی on-sigusr1 و on-sigusr2 رویدادهای رخ‌داده هنگام دریافت سیگنال‌های SIGUSR1 و SIGUSR2 توسط نوارها را تغییر می‌دهند.

این بدان معناست که دستورات `killall -SIGUSR1 waybar` و `killall -SIGUSR2 waybar` می‌توانند عمل پیکربندی‌شده توسط کاربر را انجام دهند.

همچنین به این معناست که اگر یک اسکریپت خارجی PID نوار را داشته باشد، می‌تواند منطق پیچیده‌تری از `show`/`hide`/`reload` را برای هر نمونه از Waybar پیاده‌سازی کند. می‌توان PID را به عنوان مثال با اجرای دستور `pgrep -a waybar` به دست آورد که سپس می‌تواند بر اساس نام پیکربندی یا سایر پارامترها مطابقت داده شود.

show وضعیت را به نمایان تغییر می‌دهد (برای هر نوار). hide وضعیت را به پنهان تغییر می‌دهد (برای هر نوار). toggle وضعیت را بین نمایان و پنهان تغییر می‌دهد (برای هر نوار). reload تمام نوارهای waybar فرایند فعلی waybar را مجدداً بارگذاری می‌کند (اساساً معادل راه‌اندازی مجدد با پیکربندی به‌روزشده است که مقادیر اولیه قابلیت دید را تنظیم می‌کند). noop هنگام دریافت سیگنال kill هیچ کاری انجام نمی‌دهد.

{
	"layer": "top",
	"output": "eDP-1",
	"modules-left": ["sway/workspaces", "sway/mode"],
	...
}
{
	"layer": "top",
	"output": ["eDP-1", "VGA"],
	"modules-left": ["sway/workspaces", "sway/mode"],
	...
}

برای ایجاد چندین نوار بر روی یک صفحه نمایش، هیچ خروجی‌ای را مشخص نکنید.

[{
	"layer": "top",
	"output": "eDP-1",
	"modules-left": ["sway/workspaces", "sway/mode"],
	...
}, {
	"layer": "top",
	"output": "VGA",
	"modules-right": ["clock"],
	...
}]

هنگام قرار دادن Waybar در سمت چپ یا راست صفحه نمایش، گاهی اوقات چرخش محتوای یک ماژول به گونه‌ای که متن به صورت عمودی قرار گیرد، مفید است. این کار را می‌توان با استفاده از ویژگی "rotate" ماژول انجام داد. مثال:

{
	"clock": {
		"rotate": 90
	}
}

گزینه‌های معتبر برای ویژگی "rotate" عبارتند از: 0، 90، 180 و 270.

اگر یک ماژول هم برچسب و هم آیکون را نمایش می‌دهد، ممکن است جابجایی آن‌ها مطلوب باشد (برای مثال، برای پنل‌های سمت چپ یا راست صفحه، یا برای کاربرانی که از خط راست‌به‌چپ استفاده می‌کنند). این امر می‌تواند با ویژگی "swap-icon-label" که یک مقدار بولی می‌گیرد، محقق شود. مثال:

{
	"sway/window": {
		"swap-icon-label": true
	}
}

گروه‌های ماژول امکان روی هم قرار دادن ماژول‌ها در هر جهتی را فراهم می‌کنند. به‌طور پیش‌فرض، هنگامی که نوار در بالا یا پایین صفحه قرار دارد، ماژول‌های یک گروه به‌صورت عمودی چیده می‌شوند. به همین ترتیب، هنگامی که در سمت چپ یا راست قرار دارد، ماژول‌های یک گروه به‌صورت افقی چیده می‌شوند. این رفتار را می‌توان با ویژگی "orientation" تغییر داد.

یک گروه ماژول با مشخص کردن ماژولی با نام "group/some-group-name" تعریف می‌شود. گروه همچنین باید با فهرستی از ماژول‌های موجود پیکربندی شود. مثال:

{
	"modules-right": ["group/hardware", "clock"],
	"group/hardware": {
		"orientation": "vertical",
		"modules": [
			"cpu",
			"memory",
			"battery"
		]
	},
	...
}

گزینه‌های معتبر برای ویژگی (اختیاری) "orientation" عبارتند از: "horizontal"، "vertical"، "inherit" و "orthogonal" (پیش‌فرض).

یک گروه ممکن است تمام عناصر به جز یکی را پنهان کند و آن‌ها را فقط با نگه‌داشتن ماوس (hover) نمایش دهد. برای پیکربندی این مورد، می‌توانید از ویژگی `drawer` استفاده کنید که مقدار آن شیئی با ویژگی‌های زیر است:

transition-duration:
typeof: integer
default: 500
مدت زمان پویانمایی انتقال را بر حسب میلی‌ثانیه تعریف می‌کند.

children-class:
typeof: string
default: "hidden"
کلاس CSS برای اعمال روی عناصر پنهان را تعریف می‌کند.

click-to-reveal:
typeof: bool
default: false
تعیین می‌کند که آیا کلیک چپ به جای نگه‌داشتن ماوس باید محتوا را نمایان کند یا خیر. توجه داشته باشید که ماژول‌های گروه‌بندی‌شده همچنان می‌توانند رویدادهای کلیک مخصوص به خود را پردازش کنند.

transition-left-to-right:
typeof: bool
default: true
جهت پویانمایی انتقال را تعریف می‌کند. اگر true باشد، عناصر پنهان از چپ به راست می‌لغزند. اگر false باشد، از راست به چپ می‌لغزند.

هنگامی که نوار عمودی است، این مقدار به صورت بالا به پایین تفسیر می‌شود.
"group/power": {
    "orientation": "inherit",
    "drawer": {
        "transition-duration": 500,
        "children-class": "not-power",
        "transition-left-to-right": false,
    },
    "modules": [
        "custom/power", // نخستین عنصر «سرگروه» است و هرگز پنهان نخواهد شد
        "custom/quit",
        "custom/lock",
        "custom/reboot",
    ]
},

sway-output(5) waybar-styles(5)

2026-08-31