kitten-panel(1) kitty kitten-panel(1)

kitten-panel - استفاده از یک برنامه خط فرمانی برای رسم پنل شتاب‌یافته با GPU روی میزکار

تصویر پس‌زمینه میزکار، داک‌ها یا پنل‌ها را با استفاده از برنامه‌های ترمینال دلخواه رسم کنید. برای نمونه، می‌توانید btop https://github.com/aristocratos/btop یا cava https://github.com/karlstav/cava را به عنوان تصویر پس‌زمینه میزکار خود قرار دهید.

این قابلیت برای نمایش اطلاعات وضعیت یا اعلان‌ها بر روی میزکار با استفاده از برنامه‌های ترمینال به جای جعبه‌ابزارهای رابط گرافیکی (GUI) مفید است.

تصویر کناری نمونه‌هایی از کاربردهای panel kitten را برای رسم اجزای گوناگون میزکار مانند پس‌زمینه، یک ترمینال شناور با دسترسی سریع، و یک پنل داک حاوی اطلاعات سیستم نشان می‌دهد (فقط در Linux).

اضافه‌شده در نگارش 0.42.0: پشتیبانی از macOS (برای جزئیات به جدول سازگاری مراجعه کنید) و X11 (پس‌زمینه و پوشش/overlay).

اضافه‌شده در نگارش 0.34.0: پشتیبانی از Wayland. برای بررسی اینکه کدام کامپوزیتورهای Wayland کار می‌کنند بخش زیر را ببینید.

استفاده از این kitten ساده است، برای مثال:

kitten panel sh -c 'printf "\n\n\nHello, world."; sleep 5s'

این دستور عبارت Hello, world. را به مدت پنج ثانیه در لبه بالایی صفحه نمایش شما نشان می‌دهد. در اینجا، برنامه ترمینالی که اجرا می‌کنیم sh همراه با اسکریپتی برای چاپ عبارت Hello, world! است. همان‌طور که در تصاویر نشان داده شده است، می‌توانید برنامه ترمینال را به هر میزان که مایلید پیچیده کنید.

اگر از Wayland یا macOS استفاده می‌کنید، برای نمونه می‌توانید دستور زیر را اجرا کنید:

kitten panel --edge=background htop

تا htop به عنوان پس‌زمینه میزکار شما نمایش داده شود. به یاد داشته باشید که این امکان در همه‌جا به جز GNOME کار می‌کند؛ همچنین در sway باید تصویر پس‌زمینه را غیرفعال کنید، زیرا sway آن را روی سطح panel kitten ترسیم می‌کند.

پروژه‌هایی وجود دارند که از این سازوکار برای پیاده‌سازی پنل‌ها و اجزای میزکار عمومی بهره می‌برند:

شما می‌توانید پنل‌ها را از طریق سازوکار کنترل از راه دور (remote control) در kitty <> مدیریت کنید. یک پنل با فعال بودن کنترل از راه دور بسازید:

kitten panel -o allow_remote_control=socket-only --lines=2 \
    --listen-on=unix:/tmp/panel kitten run-shell

اکنون می‌توانید این پنل را با استفاده از کنترل از راه دور مدیریت کنید، برای نمونه برای نمایش/پنهان کردن آن، از دستور زیر استفاده کنید:

kitten @ --to=unix:/tmp/panel resize-os-window --action=toggle-visibility

برای انتقال پنل به لبه پایینی صفحه و افزایش ارتفاع آن:

kitten @ --to=unix:/tmp/panel resize-os-window --action=os-panel \
    --incremental edge=bottom lines=4

برای ایجاد یک پنل جدید که برنامه top را در همان نمونه (مشابه ایجاد یک پنجره جدید در سیستم‌عامل) اجرا کند:

kitten @ --to=unix:/tmp/panel launch --type=os-panel --os-panel edge=top \
    --os-panel lines=8 top

کد منبع این kitten در گیت‌هاب https://github.com/kovidgoyal/kitty/tree/master/kittens/panel در دسترس است.

kitty +kitten panel [options] [cmdline-to-run ...]

از یک برنامهٔ خط فرمان برای رسم یک پنل دارای شتاب‌دهی سخت‌افزاری GPU روی میزکار خود استفاده کنید

تعداد خطوط نمایش داده‌شده در پنل. برای پنل‌های پس‌زمینه (background)، مرکزچین (centered) و عمودی (vertical) نادیده گرفته می‌شود. اگر دارای پسوند px باشد، ارتفاع پنل را به جای تعداد خطوط، بر حسب پیکسل تنظیم می‌کند. پیش‌فرض: 1
تعداد ستون‌های نمایش داده‌شده در پنل. برای پنل‌های پس‌زمینه (background)، مرکزچین (centered) و افقی (horizontal) نادیده گرفته می‌شود. اگر دارای پسوند px باشد، عرض پنل را به جای تعداد ستون‌ها، بر حسب پیکسل تنظیم می‌کند. پیش‌فرض: 1
تنظیم حاشیهٔ بالایی پنل بر حسب پیکسل. برای پنل‌های لبهٔ پایینی تأثیری ندارد. تنها روی macOS و کامپوزیتورهای Wayland که از پروتکل wlr layer shell پشتیبانی می‌کنند کار می‌کند. پیش‌فرض: 0
تنظیم حاشیهٔ چپ پنل بر حسب پیکسل. برای پنل‌های لبهٔ راست تأثیری ندارد. تنها روی macOS و کامپوزیتورهای Wayland که از پروتکل wlr layer shell پشتیبانی می‌کنند کار می‌کند. پیش‌فرض: 0
تنظیم حاشیهٔ پایینی پنل بر حسب پیکسل. برای پنل‌های لبهٔ بالایی تأثیری ندارد. تنها روی macOS و کامپوزیتورهای Wayland که از پروتکل wlr layer shell پشتیبانی می‌کنند کار می‌کند. پیش‌فرض: 0
تنظیم حاشیهٔ راست پنل بر حسب پیکسل. برای پنل‌های لبهٔ چپ تأثیری ندارد. تنها روی macOS و کامپوزیتورهای Wayland که از پروتکل wlr layer shell پشتیبانی می‌کنند کار می‌کند. پیش‌فرض: 0
مشخص می‌کند پنل روی کدام لبه از صفحه قرار گیرد. توجه داشته باشید که برخی از مدیرهای پنجره (مانند i3) از قرار دادن پنجره‌های متصل (docked) روی لبه‌های چپ و راست پشتیبانی نمی‌کنند. مقدار background به معنای تبدیل پنل به "تصویر پس‌زمینهٔ میزکار" است. توجه داشته باشید که هنگام استفاده از sway، اگر پس‌زمینه‌ای را در پیکربندی sway خود تنظیم کرده باشید، پس‌زمینهٔ رسم‌شده با این kitten را می‌پوشاند. علاوه بر این، سه مقدار دیگر وجود دارد: center، center-sized و none. مقدار center پنل را به تمام جهات مهار کرده و کل صفحهٔ نمایش را پوشش می‌دهد (در macOS بخشی از صفحه که توسط titlebar و dock پوشانده نشده است). پنل را می‌توان با استفاده از پارامترهای حاشیه (margin) کوچک کرده و جای‌گذاری کرد. مقدار none پنل را به گوشهٔ بالا سمت چپ مهار می‌کند و باید با استفاده از پارامترهای حاشیه جای‌گذاری شود. اندازهٔ آن توسط --lines و --columns تعیین می‌شود. مقدار center-sized درست مانند none است، با این تفاوت که پنل به جای گوشهٔ بالا سمت چپ، در مرکز قرار می‌گیرد و حاشیه‌ها هیچ تأثیری ندارند. پیش‌فرض: top انتخاب‌ها: background، bottom، center، center-sized، left، none، right، top
در کامپوزیتورهای Wayland که از پروتکل wlr layer shell پشتیبانی می‌کنند، لایه‌ای را مشخص می‌کند که پنل باید روی آن رسم شود. اگر --edge روی background تنظیم شده باشد، این پارامتر نادیده گرفته شده و روی background تنظیم می‌شود. در macOS، این مقادیر به سطوح (levels) متناظر در NSWindow نگاشت می‌شوند. توجه داشته باشید که در macOS، می‌توانید با استفاده از پرچم --override از macos_ns_window_layer <#opt-kitty.macos_ns_window_layer> برای کنترل دقیق‌تر روی لایه استفاده کنید؛ برای مثال: --override macos_ns_window_layer=NSPopUpMenuWindowLevel. پیش‌فرض: bottom انتخاب‌ها: background، bottom، overlay، top
مسیر فایل پیکربندی برای استفاده توسط kitty هنگام رسم پنل.
پیش‌فرض= بازنویسی گزینه‌های پیکربندی مجزای kitty؛ می‌تواند چندین بار مشخص شود. ساختار: name=value. برای مثال: kitty +kitten panel -o font_size=20
پنل در هر زمان تنها می‌تواند روی یک نمایشگر (خروجی) نمایش داده شود. این گزینه امکان مشخص کردن خروجی مورد استفاده را بر اساس نام فراهم می‌کند. در صورت عدم تعیین، کامپوزیتور یک خروجی را به‌طور خودکار انتخاب می‌کند؛ معمولاً آخرین خروجی‌ای که کاربر با آن تعامل داشته یا نمایشگر اصلی. از مقدار ویژهٔ list برای دریافت فهرستی از خروجی‌های موجود استفاده کنید. از listjson برای یک خروجی کدگذاری‌شده با json استفاده کنید. توجه داشته باشید که در Wayland خروجی تنها در زمان ایجاد پنل قابل تعیین است، پس از ایجاد قابل تغییر نیست، و هیچ راهی برای نمایش یک پنل واحد روی تمام خروجی‌ها وجود ندارد. لطفاً در این مورد به توسعه‌دهندگان Wayland شکایت کنید.
در Wayland، فضای نام (namespace) سطح layer shell را تنظیم می‌کند. در X11 بخش class از ویژگی پنجرهٔ WM_CLASS را تنظیم می‌کند. پیش‌فرض: kitty-panel
در X11، بخش name از ویژگی WM_CLASS را تعیین می‌کند؛ در صورت عدم تعیین، از مقدار kitty --class <#cmdoption-kitty-app-id> در X11 استفاده می‌کند.
در کامپوزیتورهای Wayland که از پروتکل wlr layer shell پشتیبانی می‌کنند، سیاست تمرکز (focus policy) را برای تعامل‌پذیری صفحه‌کلید با پنل مشخص می‌کند. لطفاً برای جزئیات بیشتر به مستندات پروتکل wlr layer shell مراجعه کنید. توجه داشته باشید که کامپوزیتورهای مختلف Wayland در قبال exclusive رفتارهای بسیار متفاوتی دارند و ممکن است نتیجه برای شما متفاوت باشد. در macOS، مقادیر exclusive و on-demand در حال حاضر یکسان هستند. پیش‌فرض: not-allowed انتخاب‌ها: exclusive، not-allowed، on-demand
پنهان کردن خودکار پنجرهٔ پنل زمانی که تمرکز خود را از دست می‌دهد. استفاده از این گزینه --focus-policy را به اجبار روی on-demand قرار می‌دهد. توجه داشته باشید که در Wayland، بسته به کامپوزیتور، این امر می‌تواند منجر به این شود که پنجره هرگز مرئی نشود.
تسخیر صفحه‌کلید. این به این معنی است که میانبرهای سراسری تعریف‌شده در سیستم‌عامل به جای آن به kitty تحویل داده خواهند شد. در صورتی که بخواهید یک پنجرهٔ مودال در سطح سیستم‌عامل ایجاد کنید کاربردی است. میزان موفقیت عملکرد این ویژگی به سیستم‌عامل/مدیر پنجره/محیط میزکار بستگی دارد. در Wayland تنها در صورتی کار می‌کند که کامپوزیتور پروتکل inhibit-keyboard-shortcuts را پیاده‌سازی کرده باشد https://wayland.app/protocols/keyboard-shortcuts-inhibit-unstable-v1. در macOS، شرکت Apple بدون دسترسی‌های ویژه اجازهٔ تسخیر صفحه‌کلید را به برنامه‌ها نمی‌دهد، بنابراین کار نمی‌کند.
در کامپوزیتورهای Wayland که از پروتکل wlr layer shell پشتیبانی می‌کنند، یک ناحیهٔ اختصاصی (exclusive zone) معین را برای پنل درخواست می‌کند. لطفاً برای جزئیات بیشتر دربارهٔ مفهوم exclusive و مقدار آن به مستندات wlr layer shell مراجعه کنید. اگر --edge روی هر چیزی جز center یا none تنظیم شده باشد، این پرچم هیچ اثری نخواهد داشت مگر اینکه پرچم --override-exclusive-zone نیز تنظیم شده باشد. اگر --edge روی background تنظیم شده باشد، این گزینه هیچ تأثیری ندارد. در X11 و macOS نادیده گرفته می‌شود. پیش‌فرض: -1
در کامپوزیتورهای Wayland که از پروتکل wlr layer shell پشتیبانی می‌کنند، ناحیهٔ اختصاصی پیش‌فرض را لغو و بازنویسی می‌کند. این گزینه تنها در صورتی تأثیر دارد که --edge روی top، left، bottom یا right تنظیم شده باشد. در X11 و macOS نادیده گرفته می‌شود. پیش‌فرض: no
در صورت تعیین، تنها یک نمونه از پنل اجرا خواهد شد. فراخوانی‌های جدید در عوض یک پنجرهٔ سطح بالا (top-level) جدید در نمونهٔ پنل موجود ایجاد خواهند کرد. پیش‌فرض: no
پیش‌فرض= در ترکیب با گزینهٔ --single-instance استفاده می‌شود. تمامی فراخوانی‌های پنل با مقدار --instance-group یکسان منجر به ایجاد پنل‌های جدید در اولین نمونهٔ پنل درون آن گروه خواهند شد.
به‌طور معمول، هنگام استفاده از kitty --single-instance <#cmdoption-kitty-single-instance>، برنامهٔ kitty پنجرهٔ جدیدی را در نمونهٔ موجود باز کرده و بلافاصله خارج می‌شود. با این گزینه، تا زمانی که پنجرهٔ تازه‌بازشده بسته نشود خارج نخواهد شد. توجه داشته باشید که اگر نمونهٔ قبلی یافت نشود، kitty بدون در نظر گرفتن این گزینه در هر صورت منتظر خواهد ماند.
گوش دادن روی نشانی سوکت مشخص‌شده برای دریافت پیام‌های کنترلی. برای مثال، kitty --listen-on <#cmdoption-kitty-listen-on>=unix:/tmp/mykitty یا kitty --listen-on <#cmdoption-kitty-listen-on>=tcp:localhost:12345. در سیستم‌های لینوکس، می‌توانید از سوکت‌های انتزاعی یونیکس نیز استفاده کنید که به فایلی وابسته نیستند، مانند: kitty --listen-on <#cmdoption-kitty-listen-on>=unix:@mykitty. متغیرهای محیطی بسط داده می‌شوند و مسیرهای نسبی نسبت به دایرکتوری موقت حل‌وفصل می‌شوند. برای کنترل kitty، می‌توانید دستوراتی را با kitten @ و با استفاده از گزینهٔ kitten @ --to <#cmdoption-kitten-to> جهت مشخص کردن این نشانی به آن ارسال کنید. توجه داشته باشید که اگر kitten @ را درون یک پنجرهٔ kitty اجرا کنید، نیازی به تعیین گزینهٔ kitten @ --to <#cmdoption-kitten-to> نیست زیرا به‌طور خودکار از متغیرهای محیطی خوانده می‌شود. توجه داشته باشید که این مورد نادیده گرفته خواهد شد مگر اینکه allow_remote_control <#opt-kitty.allow_remote_control> روی یکی از این موارد تنظیم شده باشد: yes، socket یا socket-only. این مقدار می‌تواند در kitty.conf نیز مشخص شود.
در صورت تنظیم و استفاده همراه با --single-instance، به جای ایجاد یک پنل جدید، وضعیت نمایانی پنل موجود را تغییر می‌دهد (نمایش/عدم نمایش). پیش‌فرض: no
در صورت تنظیم و استفاده همراه با --toggle-visibility برای نمایش یک پنل موجود، پنل به نمایشگر فعال منتقل می‌شود (معمولاً نمایشگری که نشانگر موشواره روی آن قرار دارد). این ویژگی تنها در صورتی کار می‌کند که سیستم‌عامل زیربنایی از آن پشتیبانی کند. در حال حاضر تنها روی macOS پشتیبانی می‌شود. پیش‌فرض: false
شروع به کار در حالت پنهان؛ برای استفاده در ترکیب با --toggle-visibility کاربردی است. پیش‌فرض: no
جدا شدن از ترمینال کنترل‌کننده (در صورت وجود) و اجرا به صورت یک فرایند فرزند مستقل؛ فرایند والد بلافاصله خارج می‌شود. پیش‌فرض: no
پیش‌فرض= مسیر فایل لاگ برای ذخیرهٔ STDOUT/STDERR هنگام استفاده از --detach
برای استفاده در اشکال‌زدایی داخلی.
برای استفاده در اشکال‌زدایی داخلی.

آمار و وضعیت سیستم در پس‌زمینه با استفاده از دستور زیر ایجاد شده است:

kitten panel --edge=background -o background_opacity=0.2 -o background=black btop

این دستور یک پنجره پس‌زمینه kitty ایجاد می‌کند و در داخل آن برنامه btop https://github.com/aristocratos/btop را برای نمایش آمار اجرا می‌نماید.

پنجره شناور دسترسی سریع با اجرای دستور زیر ایجاد شده است:

kitten quick-access-terminal kitten run-shell \
   zsh -c 'printf "\e]66;s=4;Quick access kitty in Hyprland\a\n\n\n\nAlso uses kitty to draw desktop background\n"'

این دستور پنجره دسترسی سریع را اجرا کرده و در درون آن kitten run-shell را اجرا می‌کند، که به نوبه خود ابتدا zsh را برای چاپ پیام اجرا نموده و سپس پوسته ورود (login shell) کاربر را آغاز می‌کند.

پنل داک لینوکس با دستور زیر اجرا شده بود:

wm bar

این یک برنامه سفارشی است که برای استفاده شخصی خودم نوشتم. این برنامه از زیرساخت kitten در kitty برای پیاده‌سازی نوار (bar) با چند صد خط کد استفاده می‌کند https://github.com/kovidgoyal/wm/blob/master/bar/main.go. این برنامه صرفاً برای استفاده شخصی من طراحی شده بود، اما پروژه‌های عمومی دیگری نیز وجود دارند که پنل‌های چندمنظوره را با استفاده از kitty پیاده‌سازی می‌کنند.

برای مشاهده جدول سازگاری، مستندات HTML را بررسی کنید.

Kovid Goyal

2026, Kovid Goyal

July 30, 2026 0.48.2