kanshi(5) File Formats Manual kanshi(5)

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

یک فایل پیکربندی kanshi فهرستی از نمایه‌ها (پروفایل‌ها) است. هر نمایه دارای یک نام اختیاری است و شامل دستورالعمل‌های نمایه است که با آکولاد ({ و }) احاطه شده‌اند.

مثال:

include /etc/kanshi/config.d/*
profile {
	output LVDS-1 disable
	output "Some Company ASDF 4242" {
		mode 1600x900
		position 0,0
	}
}
profile nomad {
	output LVDS-1 enable scale 2
}

profile [<name>] { <دستورالعمل‌های نمایه..> }

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

output <معیار> <دستورالعمل‌های خروجی..>

تعریف مقادیر پیش‌فرض برای دستورالعمل‌های خروجی درون تعاریف نمایه.

این پیش‌فرض‌ها تنها زمانی اعمال می‌شوند که خروجی مربوطه در یک نمایه خاص ذکر شده باشد. برای مثال، دو نمایه زیر معادل یکدیگرند:

output eDP-1 scale 2
profile manual {
	output eDP-1 scale 2
}
profile uses-defaults {
	output eDP-1
}

دستورالعمل‌های خروجی ممکن است در یک بلوک محصور در آکولاد نیز مشخص شوند.

include <path>

درج یک فایل دیگر از path. ساختار نحوی شل بسط داده می‌شود (برای جزئیات به wordexp(3) مراجعه فرمایید).

دستورالعمل‌های نمایه با آرگومان‌هایی که با فاصله جدا شده‌اند همراه هستند. آرگومان‌ها در صورتی که حاوی فاصله باشند می‌توانند درون علامت نقل‌قول (با ") قرار گیرند.

output <معیار> <دستورالعمل‌های خروجی..>

یک دستورالعمل خروجی، یک نمایشگر (خروجی) را به نمایه اضافه می‌کند.

معیار می‌تواند یکی از موارد زیر باشد:

  • نام یک خروجی (مانند "DP-1"). توجه داشته باشید که نام‌های خروجی ممکن است پایدار نباشند: آن‌ها ممکن است در طول راه‌اندازی‌های مجدد سیستم (بسته به ترتیب کاوش درایورهای هسته) یا ترتیب اتصال (معمولاً برای داک‌های USB-C) تغییر کنند.
  • یک رشته جداشده با فاصله شامل سازنده خروجی، مدل و شماره سریال (مانند "Foocorp ASDF 1234"). می‌توان از یک الگوی نویسه عمومی (wildcard) استفاده کرد (مانند "Foocorp ASDF *")؛ به glob(7) مراجعه کنید. اگر یکی از این فیلدها موجود نباشد، باید با رشته "Unknown" پر شود (مانند "Foocorp ASDF Unknown").
  • یک نام مستعار خروجی (مانند "$work-desk3") که توسط دستورالعمل alias تعریف شده باشد. نام‌های مستعار خروجی فقط در حوزه نمایه قابل استفاده هستند.
  • یک نویسه عمومی "*"، برای تطبیق با هر خروجی. نویسه‌های عمومی فقط در حوزه نمایه قابل استفاده هستند و تنها با یک خروجی تطبیق خواهند یافت.

دستورالعمل‌های خروجی ممکن است در یک بلوک محصور در آکولاد نیز مشخص شوند.

در sway(1)، نام‌ها و شناسه‌های خروجی را می‌توان از طریق دستور "swaymsg -t get_outputs"; به دست آورد.

...output <معیار> <دستورالعمل‌های خروجی..>

مشابه output، اما هر تعداد از خروجی‌ها را به نمایه اضافه می‌کند. این دستورالعمل معمولاً با معیار نویسه عمومی ترکیب می‌شود.

exec <دستور>

یک دستورالعمل exec پس از اعمال موفقیت‌آمیز نمایه، دستوری را اجرا می‌کند. از این گزینه می‌توان برای به‌روزرسانی وضعیت کامپوزیتور متناسب با نمایه در صورت عدم انجام خودکار استفاده کرد.

دستورات به صورت ناهمگام اجرا می‌شوند و ممکن است ترتیب آن‌ها حفظ نشود. اگر نیاز به اجرای متوالی دستورات دارید، باید آن‌ها را در یک دستور exec واحد یا در یک اسکریپت جداگانه تجمیع کنید.

به عنوان مثال در sway(1)، می‌توان از exec برای انتقال فضاهای کاری به خروجی مناسب بهره گرفت:

profile multihead {
	output eDP-1 enable
	output DP-1 enable transform 270
	exec swaymsg workspace 1, move workspace to eDP-1
}

توجه داشته باشید که در مورد خروجی‌هایی که با توضیحات خروجی مشخص شده‌اند باید دقت بیشتری کرد، زیرا ممکن است نام واقعی تغییر کند:

profile complex {
	output "Some Other Company GTBZ 2525" mode 1920x1200
	exec swaymsg workspace 1, move workspace to output '"Some Other Company GTBZ 2525"'
}

enable|disable

خروجی مشخص‌شده را فعال یا غیرفعال می‌کند.

mode preferred

خروجی مشخص‌شده را برای استفاده از حالت ترجیحی آن پیکربندی می‌کند.

mode [--custom] <width>x<height>[@<rate>[Hz]]

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

مثال‌ها:

output HDMI-A-1 mode 1920x1080
output HDMI-A-1 mode 1920x1080@60Hz
output HDMI-A-1 mode --custom 1280x720@60Hz

position <x>,<y>

خروجی را در موقعیت مشخص‌شده در فضای مختصات سراسری قرار می‌دهد.

مثال:

output HDMI-A-1 position 1600,0

scale <ضریب>

خروجی را با ضریب مقیاس مشخص‌شده مقیاس‌بندی می‌کند.

transform <تبدیل>

تبدیل هندسی خروجی را تنظیم می‌کند. می‌تواند یکی از مقادیر "90"، "180"، "270" برای چرخش؛ یا "flipped"، "flipped-90"، "flipped-180"، "flipped-270" برای چرخش و بازتاب؛ یا "normal" برای بدون تبدیل باشد.

adaptive_sync on|off

همگام‌سازی تطبیقی (یا همان نرخ نوسازی متغیر / VRR) را فعال یا غیرفعال می‌کند.

alias $<name>

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

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

kanshi(1)

2026-02-01