HERBSTLUFTWM(1)   HERBSTLUFTWM(1)

herbstluftwm - مدیر پنجره کاشی‌بندی دستی برای سامانه پنجره X11

herbstluftwm [OPTION ...]

مدیر پنجره herbstluftwm را روی DISPLAY راه‌اندازی می‌کند. همچنین به فراخوانی‌های ارسالی از herbstclient(1) گوش داده و آن‌ها را اجرا می‌کند. فهرست دستورات موجود در ادامه آورده شده است.

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

-v, --version

نمایش نسخه و خروج

-h, --help

نمایش راهنمای کوتاه و خروج

-c, --autostart PATH

استفاده از PATH به عنوان فایل اجرای خودکار به جای فایل موجود در $XDG_CONFIG_HOME

--replace

جایگزینی با مدیر پنجره فعلی.

-l, --locked

تنظیم اولیه مقدار monitors_locked به 1. هشدار: این کار herbstluftwm را تا زمان فراخوانی دستور unlock (معمولاً توسط autostart) قفل نگه می‌دارد. اگر --locked فعال باشد اما autostart دستور unlock را اجرا نکند (یا اگر اجرای آن به دلیل یک دستور مسدودکننده قبلی غیرقابل دسترس باشد)، herbstluftwm قفل باقی مانده و باعث یخ زدن و عدم پاسخ‌دهی می‌شود. فقط با احتیاط استفاده کنید!

--exit-on-xerror

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

--no-transparency

غیرفعال کردن شفافیت واقعی.

--no-tag-import

عدم حفظ برچسب‌ها (میزکارهای مجازی) از مدیر پنجره قبلی در حال اجرا.

--verbose

چاپ اطلاعات پرجزئیات در خروجی خطای استاندارد (stderr). این حالت در زمان اجرا با تنظیم verbose قابل تغییر است.

این راهنما رابط اسکریپت‌نویسی و پیکربندی را مستند می‌کند. برای آشنایی مفصل‌تر به herbstluftwm-tutorial(7) مراجعه کنید.

مفهوم پایه کاشی‌بندی این است که چیدمان با یک درخت دودویی نمایش داده می‌شود. هنگام راه‌اندازی، یک قاب بزرگ در سراسر صفحه مشاهده می‌کنید. هر قاب دقیقاً یکی از شرایط زیر را برآورده می‌کند:

1.قاب شامل پنجره‌ها است:

چندین کلاینت را نمایش داده و آن‌ها را مرتب می‌کند. الگوریتم‌های چیدمان موجود عبارتند از:

•vertical - کلاینت‌ها زیر یکدیگر قرار می‌گیرند
•horizontal - کلاینت‌ها در کنار یکدیگر قرار می‌گیرند
•max - همه کلاینت‌ها در این قاب تمام‌صفحه (بزرگ‌نمایی) می‌شوند
•grid - کلاینت‌ها در یک شبکه تقریباً مربعی چیده می‌شوند
2.قاب به زیرقاب‌ها تقسیم شده است:

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

اگر پنجره جدیدی ظاهر شود، در قابی قرار می‌گیرد که هم‌اکنون فوکوس دارد. فقط برگ‌های درخت قاب می‌توانند فوکوس دریافت کنند.

یک قاب را می‌توان حذف کرد، در این صورت با قاب همسایه خود ادغام می‌شود. با توجه به ساختار چیدمان درخت دودویی، هر قاب (یعنی هر گره در درخت دودویی) دقیقاً یک همسایه دارد.

قیاس با درخت دودویی به بهترین شکل با یک مثال کوچک توضیح داده می‌شود: در هنگام راه‌اندازی یک درخت دودویی ساده دارید، با یک قاب که می‌تواند شامل کلاینت‌ها باشد:

C

هنگام تقسیم آن (برای مثال با دستور split vertical 0.5) به این ساختار می‌رسید:

  V
 / \
C   C

همچنین می‌توانید قاب چپ را به صورت افقی تقسیم کنید و به این ساختار برسید:

    V
   / \
  H   C
 / \
C   C

اگر فوکوس را به کلاینت سمت راست تغییر داده و این قاب را حذف کنید، با زیردرخت سمت چپ ادغام شده و به این ساختار می‌رسید:

  H
 / \
C   C

دستور layout چیدمان فعلی همه برچسب‌ها را به صورت یک درخت چاپ می‌کند.

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

•0: انتخاب اولین زیردرخت
•1: انتخاب دومین زیردرخت
•.: انتخاب زیردرختی که دارای فوکوس است
•/: انتخاب زیردرختی که دارای فوکوس نیست
•@: انتخاب قابی که دارای فوکوس است. بر خلاف .، این مورد از چندین لایه عبور کرده و مستقیماً به برگ فوکوس‌شده درخت قاب می‌رسد.
•p: انتخاب درخت والد
•e: یافتن یک قاب خالی مناسب: اگر قاب فوکوس‌شده خالی نباشد، نزدیک‌ترین قابی را که خالی است (در هر زیردرختی) انتخاب می‌کند

برای مثال:

•یک رشته خالی به قاب ریشه اشاره دارد
•00 به اولین زیردرخت از اولین زیردرختِ قاب ریشه اشاره دارد.
•1e به اولین قاب خالی در دومین زیردرخت اشاره دارد.
•/@ به قاب فوکوس‌شده در "نیمه" بدون فوکوس درخت قاب اشاره دارد
•@p/ به هم‌نیای قاب فوکوس‌شده اشاره دارد

برچسب‌ها بسیار شبیه به فضاهای کاری، میزکارهای مجازی یا گروه‌های پنجره هستند. هر برچسب دارای یک چیدمان است. فهرستی از برچسب‌ها وجود دارد. می‌توانید برچسب‌ها را به صورت پویا اضافه یا حذف کنید.

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

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

هر نمایشگر می‌تواند یک نام داشته باشد که از طریق add_monitor و rename_monitor تنظیم می‌شود. این نام را می‌توان با دستور rename_monitor پاک کرد. نام نمایشگر یک رشته غیرخالی دلخواه است که نباید با +، - یا هر رقمی شروع شود.

به یک نمایشگر می‌توان به روش‌های مختلفی ارجاع داد:

•با نمایه مطلق آن همان‌طور که در دستور list_monitors فهرست شده است.
•با نمایه نسبی آن: یک + یا - به همراه یک مقدار تغییر (دلتا)، برای مثال: +3
•با موقعیت نسبی آن نسبت به نمایشگر فوکوس‌شده: -l نمایشگر سمت چپ نمایشگر فوکوس‌شده، -r سمت راست آن، -u بالای آن و -d پایین آن را نشان می‌دهد.
•با "" (یک رشته خالی) که نمایشگر فعلی را نشان می‌دهد.
•با نام آن.

herbstluftwm با دستورات داخلی کنترل می‌شود که می‌توانند از طریق herbstclient(1) یا از طریق کلیدهای میانبر اجرا شوند.

quit

از herbstluftwm خارج می‌شود.

reload

فایل autostart را اجرا می‌کند.

version

نسخه نمونه در حال اجرای herbstluftwm را چاپ می‌کند.

echo [ARGS ...]

تمام ARGS داده‌شده را که با یک فاصله و در ادامه یک خط جدید از هم جدا شده‌اند، چاپ می‌کند.

true

تمام آرگومان‌ها را نادیده می‌گیرد و همیشه موفقیت (یعنی 0) را بازمی‌گرداند.

false

تمام آرگومان‌ها را نادیده می‌گیرد و همیشه شکست (یعنی 1) را بازمی‌گرداند.

help [OBJECT|ATTRIBUTE]

راهنمای مربوط به شیء یا مشخصه داده‌شده را چاپ می‌کند. برای مثال:
•help clients.focus
•help monitors
•help types.color

list_commands

تمام دستورات موجود را فهرست می‌کند.

list_monitors

نمایشگرهای پیکربندی‌شده فعلی را به همراه نمایه (index)، ناحیه (به صورت مستطیل)، نام (در صورت داشتن نام) و برچسب (tag) در حال نمایش فعلی فهرست می‌کند.

list_rules

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

list_keybinds

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

هشدار

تب‌ها در پارامترهای دستور اسکیپ نمی‌شوند!

list_clients [--tag=TAG|--monitor=MONITOR] [--frame=FRAME_PATH|--floating|--tiling] [--title]

شناسه‌های پنجره (window ids) تمام کلاینت‌های موجود در TAG یا MONITOR داده‌شده (یا مورد فعلی در صورت مشخص نشدن) را فهرست می‌کند. علاوه بر این، می‌توان خروجی را به کلاینت‌های موجود در یک فریم خاص (--frame=) یا به کلاینت‌های کاشی‌بندی‌شده یا شناور محدود کرد. خروجی به ازای هر کلاینت در یک خط است؛ اگر --title داده شود، علاوه بر شناسه پنجره هر کلاینت، عنوان پنجره آن نیز در همان خط چاپ می‌شود.

lock

تنظیم monitors_locked را افزایش می‌دهد. اگر می‌خواهید چندین عملیات مربوط به پنجره‌ها را به صورت همزمان (یعنی بدون بازترسیم بین تک‌تک مراحل) انجام دهید، از این دستور استفاده کنید. همچنین ببینید: unlock

unlock

تنظیم monitors_locked را کاهش می‌دهد. اگر monitors_locked به 0 تغییر کند، آنگاه تمام نمایشگرها مجدداً بازترسیم می‌شوند. همچنین ببینید: lock

keybind KEY COMMAND [ARGS ...]

یک کلید میانبر اضافه می‌کند. اگر از قبل قید برای این KEY وجود داشته باشد، بازنویسی خواهد شد. هنگامی که KEY فشار داده شود، دستور داخلی COMMAND (با ARGS آن) اجرا می‌شود. یک کلید میانبر شامل یک لیست (احتمالاً خالی) از کلیدهای تغییردهنده (Mod1، Mod2، Mod3، Mod4، Mod5، Alt، Super، Control/Ctrl، Shift) و یک کلید است (برای مشاهده لیست کلیدها keysymdef.h را ببینید). کلیدهای تغییردهنده و کلید اصلی با - یا + به عنوان جداکننده به هم متصل می‌شوند. اگر KEY دارای پیشوند Release- باشد، آنگاه کلید میانبر فقط در زمان رویداد رهاسازی کلید متناظر فعال خواهد بود؛ یعنی برای اجرای کلید میانبر Release-Mod1-Shift-p ابتدا باید Mod1-Shift-p را فشار داده و سپس p را رها کنید. مثال‌ها:
•keybind Mod4+Ctrl+q quit
•keybind Mod4-Shift-d attr clients.focus.decorated toggle
•keybind Mod1-Shift-space cycle_layout -1
•keybind Release-Mod4-Shift-p spawn scrot زمانی که p رها شود در حالی که Mod4 و Shift همچنان فشرده نگه داشته شده‌اند، یک اسکرین‌شات می‌گیرد.

keyunbind KEY|-F|--all

کلید میانبر را برای KEY حذف می‌کند. نحو KEY در keybind تعریف شده است. اگر -F یا --all داده شود، تمام کلیدهای میانبر حذف خواهند شد.

mousebind BUTTON ACTION [COMMAND ...]

یک کلید ماوس برای حالت شناور اضافه می‌کند. هنگامی که BUTTON فشار داده شود، ACTION مشخص‌شده انجام خواهد شد. BUTTON دارای نحوی شبیه به آرگومان KEY در keybind است: این آرگومان شامل فهرستی از کلیدهای تغییردهنده (جداشده با - یا +؛ کلیدهای تغییردهنده معتبر در توضیحات keybind فهرست شده‌اند) و دقیقاً یک نام دکمه است:
•B1 یا Button1
•B2 یا Button2
•...
•B9 یا Button9
ACTION باید یکی از اقدامات زیر باشد:
•move: پنجره را با کشیدن مکان‌نما حرکت می‌دهد.
•resize: اندازه پنجره را با کشیدن یکی از گوشه‌ها تغییر می‌دهد.
•zoom: اندازه پنجره را در هر چهار جهت تغییر می‌دهد در حالی که مرکز پنجره ثابت باقی می‌ماند.
•call: فقط COMMAND مشخص‌شده را فراخوانی می‌کند در حالی که client.dragged به کلاینتی که BUTTON روی آن اعمال شده پیوند دارد.
در حین انجام یک ACTION، client.dragged همان کلاینتی است که کشیده می‌شود. برای مثال:
•mousebind Mod1-Button3 zoom
•mousebind Mod1-B4 call substitute WID clients.dragged.winid spawn transset-df --inc -i WID 0.05
•mousebind Mod1-B5 call substitute WID clients.dragged.winid spawn transset-df --dec -i WID -m 0.2 0.05

drag WINID ACTION

کشیدن پنجره کلاینت مشخص‌شده WINID را با ACTION مشخص‌شده آغاز می‌کند (دستور mousebind را ببینید). برای مثال drag '' resize تغییر اندازه پنجره فوکوس‌شده را آغاز می‌کند.

mouseunbind

تمام قیدهای ماوس را حذف می‌کند.

spawn EXECUTABLE [ARGS ...]

یک فایل اجرایی EXECUTABLE را به همراه ARGS آن اجرا می‌کند. برای جزئیات man 3 execvp را ببینید. مثال:
•spawn xterm -e man 3 execvp

wmexec [WINDOWMANAGER [ARGS ...]]

مدیر پنجره WINDOWMANAGER را با ARGS آن اجرا می‌کند. این دستور برای تعویض مدیر پنجره در نشست فعال بدون راه‌اندازی مجدد نشست مفید است. اگر هیچ WINDOWMANAGER یا مقدار نامعتبری داده شود، herbstluftwm مجدداً راه‌اندازی می‌شود. برای جزئیات man 3 execvp را ببینید. مثال:
•wmexec openbox

chain SEPARATOR [COMMANDS ...]

دستور chain به یک SEPARATOR و فهرستی از COMMANDS همراه با آرگومان‌ها نیاز دارد. دستورات باید با SEPARATOR مشخص‌شده از هم جدا شوند. SEPARATOR می‌تواند هر کلمه‌ای باشد و تنها در صورتی به عنوان جداکننده بین دستورات شناخته می‌شود که دقیقاً با SEPARATOR مطابقت داشته باشد. "chain" خروجی‌های پیوست‌شده تمام دستورات را چاپ کرده و کد خروج آخرین دستور اجراشده را بازمی‌گرداند. مثال‌ها:
•ایجاد یک برچسب با نام "foo" و استفاده مستقیم از آن:

chain , add foo , use foo

•چرخش چیدمان در جهت عقربه‌های ساعت:

chain .-. lock .-. rotate .-. rotate .-. rotate .-. unlock

مثال‌های نقض:
•این حالت فقط برچسبی با نام ",foo" ایجاد می‌کند:

chain , add foo, use foo

•جداکننده "." تعریف شده، اما "," استفاده شده است:

chain . add foo , use foo

and SEPARATOR [COMMANDS ...]

دستور "and" رفتاری شبیه به دستور chain دارد، اما COMMANDS مشخص‌شده را فقط تا زمانی اجرا می‌کند که دستورات کد خروج 0 را بازگردانند.

or SEPARATOR [COMMANDS ...]

دستور "or" رفتاری شبیه به دستور chain دارد، اما COMMANDS مشخص‌شده را تا زمانی اجرا می‌کند که یکی از دستورات کد خروج 0 را بازگرداند.

! COMMAND

دستور "!" دستور ارائه‌شده را اجرا می‌کند، اما مقدار بازگشتی آن را معکوس می‌سازد. اگر دستور ارائه‌شده مقداری غیرصفر بازگرداند، "!" مقدار 0 را برمی‌گرداند؛ و اگر دستور مقدار صفر بازگرداند، "!" مقدار 1 را برمی‌گرداند.

try COMMAND

دستور "try" دستور ارائه‌شده را اجرا کرده، خروجی آن را چاپ می‌کند، اما همیشه موفقیت (یعنی 0) را بازمی‌گرداند.

silent COMMAND

دستور "silent" دستور ارائه‌شده را اجرا می‌کند، اما خروجی آن را نادیده گرفته و فقط کد خروج آن را بازمی‌گرداند.

focus_nth INDEX

روی n-امین پنجره در یک فریم فوکوس می‌کند. پنجره اول دارای INDEX برابر با 0 است. اگر INDEX منفی یا بزرگتر از شاخص آخرین پنجره باشد، روی آخرین پنجره فوکوس می‌شود.

cycle [DELTA]

انتخاب را در فریم فعلی به میزان DELTA پیمایش می‌کند یا در صورت فوکوس بودن لایه شناور، در میان کلاینت‌های لایه شناور پیمایش می‌کند. اگر DELTA حذف شود، مقدار DELTA = 1 استفاده خواهد شد. DELTA می‌تواند منفی باشد؛ DELTA = -1 یعنی: پیمایش در جهت مخالف به میزان 1.

cycle_all [--skip-invisible] [DIRECTION]

در میان تمام پنجره‌ها و فریم‌های کمینه‌نشده در برچسب فعلی پیمایش می‌کند. DIRECTION = 1 به معنای به جلو (مقدار پیش‌فرض)، DIRECTION = -1 به معنای به عقب، و DIRECTION = 0 بدون اثر است. اگر چندین پنجره در یک فریم وجود داشته باشد، رفتاری مشابه دستور cycle دارد. اگر --skip-invisible داده شود، این دستور فقط در میان تمام پنجره‌های مرئی پیمایش کرده و پنجره‌های نامرئی را در چیدمان max نادیده می‌گیرد (این فلگ فقط بر پنجره‌های نامرئی در چیدمان max اثر می‌گذارد؛ پنجره‌های کمینه‌شده همیشه نادیده گرفته می‌شوند). پس از هر تغییر فوکوس، پنجره فوکوس‌شده بالا آورده می‌شود.

cycle_frame [DIRECTION]

در میان تمام فریم‌های برچسب فعلی پیمایش می‌کند. DIRECTION = 1 به معنای به جلو، DIRECTION = -1 به معنای به عقب، و DIRECTION = 0 بدون اثر است. مقدار پیش‌فرض DIRECTION برابر با 1 است.

cycle_layout [DELTA [LAYOUTS ...]]

الگوریتم چیدمان را در فریم فعلی به میزان DELTA پیمایش می‌دهد. مقدار پیش‌فرض DELTA برابر با 1 است. می‌توانید فهرستی از الگوریتم‌های چیدمان را در بالا بیابید. اگر فهرستی از LAYOUTS داده شود، cycle_layout به جای لیست پیش‌فرض الگوریتم‌های چیدمان، میان آن موارد پیمایش می‌کند. این کار با یافتن اولین رخداد چیدمان فعلی در LAYOUTS و انتخاب چیدمان بعدی بر اساس DELTA انجام می‌شود. اگر چیدمان فعلی در LAYOUTS وجود نداشته باشد، اولین مدخل انتخاب می‌شود. مثال:
•cycle_layout -1
•cycle_layout 1 vertical grid

set_layout LAYOUT

الگوریتم چیدمان در فریم فعلی را به LAYOUT تنظیم می‌کند. برای مشاهده فهرست چیدمان‌ها، فهرست الگوریتم‌های چیدمان در بالا را بررسی کنید.

close WINID

پنجره مشخص‌شده را به آرامی می‌بندد، یا در صورتی که پنجره‌ای صراحتاً مشخص نشده باشد، پنجره فوکوس‌شده را می‌بندد. بخش مربوط به شناسه‌های پنجره (WINDOW IDS) را برای نحوه ارجاع به یک پنجره خاص ببینید.

close_or_remove

پنجره فوکوس‌شده را می‌بندد یا اگر هیچ پنجره‌ای فوکوس نشده باشد، فریم فعلی را حذف می‌کند. در حالت شناور، این دستور مانند دستور close عمل می‌کند.

close_and_remove

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

split ALIGN [FRACTION [FRAMEINDEX]]

فریم فوکوس‌شده (یا فریم مشخص‌شده توسط FRAMEINDEX، بخش شاخص فریم (frame index) را ببینید) را با یک FRACTION مشخص بین 0 و 1 که پیش‌فرض آن 0.5 است، به دو زیرفریم تقسیم می‌کند. ALIGN یکی از موارد زیر است:
•top
•bottom (= vertical)
•left
•right (= horizontal)
•explode
•auto (تقسیم در امتداد طولانی‌ترین ضلع)

این گزینه مشخص می‌کند کدام یک از دو نیمه پس از تقسیم خالی خواهد بود. نیمه دیگر توسط فریم فوکوس‌شده فعلی اشغال خواهد شد. پس از تقسیم، فریم اصلی که فوکوس بود همچنان در حالت فوکوس باقی می‌ماند. یک حالت ویژه ALIGN حالت explode است که فریم را به گونه‌ای تقسیم می‌کند که فوکوس پنجره، اندازه پنجره‌ها و موقعیت‌ها تا حد امکان حفظ شوند (بنابراین بر خلاف سایر حالت‌های ALIGN، مقدار پیش‌فرض FRACTION همیشه 0.5 نیست). مثال:

•split explode
•split bottom 0.5
•split horiz 0.3
•split vertical 0.5
•split h
•split top 0.2 '' (فریم ریشه را تقسیم می‌کند)

focus [-i|-e|--level=LEVEL] DIRECTION

فوکوس را از فریم فعلی به فریم یا کلاینت بعدی در DIRECTION منتقل می‌کند که در یکی از جهت‌های زیر است:
•l[eft]
•r[ight]
•u[p]
•d[own]
اگر هیچ کلاینتی در این فریم وجود نداشته باشد یا LEVEL برابر با frame باشد، روی فریم بعدی در DIRECTION مشخص‌شده فوکوس می‌شود. اگر LEVEL برابر با visible باشد یا default_direction_external_only تنظیم نشده باشد، کلاینت بعدی در DIRECTION می‌تواند در همان فریم نیز باشد، اما باید مرئی باشد. برای سطح tabs در LEVEL، کلاینت بعدی ممکن است در یک چیدمان tabbed_max مخفی باشد. با all هر کلاینتی در یک چیدمان max ممکن است قبل از فوکوس روی فریم بعدی انتخاب شود. فلگ -i نام مستعاری برای --level=visible و -e نام مستعاری برای --level=frame است.

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

مثال: فوکوس روی فریم A قرار دارد. پس از اجرای focus right فوکوس روی فریم C خواهد بود.

Tree:  H,0     Screen: ┌─────┐┌─────┐ (before)
       ╱ ╲             │  B  ││  C  │
      ╱   ╲            └─────┘└─────┘
    V,1   V,0          ┌─────┐┌─────┐
    ╱ ╲   ╱ ╲          │  A* ││  D  │
   B  A* C   D         └─────┘└─────┘
Tree:  H,1     Screen: ┌─────┐┌─────┐ (after focus right)
       ╱ ╲             │  B  ││  C* │
      ╱   ╲            └─────┘└─────┘
    V,1   V,0          ┌─────┐┌─────┐
    ╱ ╲   ╱ ╲          │  A  ││  D  │
   B   A C*  D         └─────┘└─────┘
اگر کلاینت فوکوس‌شده فعلی شناور باشد، روی پنجره شناور بعدی در جهت مشخص‌شده فوکوس شده و بالا آورده می‌شود.
اگر focus_crosses_monitor_boundaries تنظیم شده باشد و هیچ کلاینت یا فریمی در DIRECTION مشخص‌شده یافت نشود، روی نمایشگر بعدی در آن DIRECTION فوکوس می‌شود.

focus_edge [-i|-e] DIRECTION

روی پنجره واقع در لبه برچسب در DIRECTION مشخص‌شده فوکوس می‌کند. DIRECTIONS و -e همانند توضیحات دستور focus عمل می‌کنند.

اگر -i (داخلی) داده شود یا default_direction_external_only تنظیم نشده باشد، روی پنجره واقع در لبه برچسب فوکوس خواهد شد. در غیر این صورت، تنها روی فریم واقع در لبه برچسب فوکوس می‌شود، و پنجره‌ای که آخرین بار در آن فریم فوکوس بوده، فوکوس را دریافت می‌کند.

پنجرهٔ مشخص‌شده را (چه مدیریت‌شده چه مدیریت‌نشده) بالا می‌آورد (Raise). پنجره‌های مدیریت‌شده فقط در پشتهٔ همان برچسب جابه‌جا می‌شوند (همان‌طور که دستور stack گزارش می‌دهد)، و پنجره‌های مدیریت‌نشده به‌صورت سراسری بالا می‌آیند، یعنی بالاتر از همهٔ پنجره‌های مدیریت‌شده قرار می‌گیرند. برای نحوهٔ ارجاع به یک پنجرهٔ خاص، بخش شناسه‌های پنجره (WINDOW IDS) را ببینید. نتیجهٔ این دستور فقط برای پنجره‌های شناور و مدیریت‌نشده قابل مشاهده است.

lower WINID

پنجرهٔ مشخص‌شده را (مدیریت‌شده یا مدیریت‌نشده) پایین می‌برد (Lower)، مشابه دستور raise: پنجره‌های مدیریت‌شده در پشتهٔ پنجره‌های شناور به پایین برده می‌شوند (بدون هیچ اثری روی پنجره‌های کاشی‌کاری‌شده) و پنجره‌های مدیریت‌نشده به زیر همهٔ پنجره‌های مدیریت‌شده منتقل می‌شوند (برای مثال می‌توان از آن برای پایین بردن پنجره‌های دسکتاپ استفاده کرد).

jumpto WINID

فوکوس را به پنجرهٔ مشخص‌شده منتقل می‌کند. برای نحوهٔ ارجاع به یک پنجرهٔ خاص، بخش شناسه‌های پنجره (WINDOW IDS) را ببینید.

bring WINID

پنجرهٔ مشخص‌شده را به فریم جاری منتقل کرده و روی آن فوکوس می‌کند. پنجره‌های شناور به برچسب جاری آورده می‌شوند، اما وضعیت شناور خود را حفظ می‌کنند. برای نحوهٔ ارجاع به یک پنجرهٔ خاص، بخش شناسه‌های پنجره (WINDOW IDS) را ببینید.

resize DIRECTION [FRACTIONDELTA]

اندازهٔ فریم دارای فوکوس را در DIRECTION (جهت) مشخص‌شده به میزان FRACTIONDELTA تغییر می‌دهد (که اگر مقداری مشخص نشود، مقدار پیش‌فرض آن 0.02 است). DIRECTION همان‌طور که در دستور focus توضیح داده شده رفتار می‌کند. اگر یک پنجرهٔ شناور دارای فوکوس باشد، به سمت لبهٔ بعدی، یعنی لبهٔ پنجرهٔ بعدی یا لبهٔ نمایشگر در DIRECTION مشخص‌شده گسترش می‌یابد (در این حالت FRACTIONDELTA نادیده گرفته می‌شود). مثال:
•resize right +0.05
•resize down -0.1

shift_edge [-i|-e] DIRECTION

پنجرهٔ دارای فوکوس را به لبهٔ برچسب در DIRECTION (جهت) مشخص‌شده منتقل می‌کند. پارامترهای DIRECTIONS همان‌طور که در دستور focus مشخص شده رفتار می‌کنند و -i و -e نیز مطابق دستور focus_edge عمل می‌نمایند.

shift [-i|-e|--level=LEVEL] DIRECTION

پنجرهٔ دارای فوکوس را به فریم بعدی در DIRECTION (جهت) مشخص‌شده منتقل می‌کند. پارامترهای DIRECTIONS و گزینه‌های -i|-e|--level=LEVEL مطابق با دستور focus رفتار می‌کنند. اگر کلاینت دارای فوکوس به جای کاشی‌کاری، شناور باشد، کلاینت به پنجرهٔ بعدی یا لبهٔ صفحه منتقل می‌شود. اگر پنجره قابل جابه‌جایی نباشد و تنظیم focus_crosses_monitor_boundaries فعال باشد، پنجره به نمایشگر واقع در DIRECTION مشخص‌شده منتقل خواهد شد.

shift_to_monitor MONITOR

پنجرهٔ دارای فوکوس را به برچسب موجود در MONITOR (نمایشگر) مشخص‌شده منتقل می‌کند. برای نحوهٔ آدرس‌دهی یک نمایشگر، بخش نمایشگرها (MONITORS) را ببینید.

remove

فریم دارای فوکوس را حذف کرده و پنجره‌های آن را در نزدیک‌ترین فریم همسایه‌اش ادغام می‌کند.

rotate

چیدمان برچسب دارای فوکوس را ۹۰ درجه در خلاف جهت عقربه‌های ساعت می‌چرخاند. این دستور فقط تراز فریم‌ها را تغییر می‌دهد، نه محتوای درون آن‌ها را.

mirror [vertical|horizontal|both]

چیدمان برچسب دارای فوکوس را به‌صورت عمودی، افقی یا هر دو قرینه (آینه‌ای) می‌کند؛ حالت پیش‌فرض horizontal (افقی) است. این دستور فقط تراز فریم‌ها را دستکاری می‌کند، نه محتوای آن‌ها را.

set NAME VALUE

تنظیم مشخص‌شده با نام NAME را برابر با VALUE قرار می‌دهد. مقادیر مجاز برای تنظیمات بولی عبارتند از on یا true برای فعال، off یا false برای غیرفعال، و toggle برای معکوس کردن مقدار آن. تمام تنظیمات (settings) در بخش زیر فهرست شده‌اند.

get NAME

مقدار تنظیم NAME را چاپ می‌کند. تمام تنظیمات (settings) در بخش زیر فهرست شده‌اند.

toggle NAME

در صورتی که تنظیم NAME یک تنظیم بولی باشد، وضعیت آن را معکوس (Toggle) می‌کند.

cycle_value PATH VALUES ...

مقدار صفت PATH را میان مقادیر VALUES می‌چرخاند: یعنی اولین رخداد مقدار فعلی را در VALUES جستجو می‌کند و مقدار را به مقدار بعدی در فهرست تغییر می‌دهد یا اگر به پایان فهرست رسیده باشد یا مقدار فعلی پیدا نشود، به اولین مقدار تغییر می‌دهد. بنا به دلایل سازگاری، PATH می‌تواند نام یک تنظیم نیز باشد. مثال‌ها:
•cycle_value settings.frame_gap 0 5 10 15
•cycle_value theme.active.inner_color red green blue
•دستور cycle_layout +1 معادل است با cycle_value tags.focus.tiling.focused_frame.algorithm

cycle_monitor [DELTA]

نمایشگر دارای فوکوس را به اندازهٔ DELTA گام می‌چرخاند. مقدار پیش‌فرض DELTA برابر با 1 است.

focus_monitor MONITOR

فوکوس را به نمایشگر مشخص‌شده منتقل می‌کند. برای نحوهٔ آدرس‌دهی یک نمایشگر، بخش نمایشگرها (MONITORS) را ببینید.

add TAG

یک برچسب خالی جدید با نام TAG ایجاد می‌کند.

use TAG

نمایشگر دارای فوکوس را به TAG مشخص‌شده تغییر می‌دهد.

use_index INDEX [--skip-visible]

نمایشگر دارای فوکوس را به TAG با INDEX (اندیس) مشخص‌شده تغییر می‌دهد. اگر INDEX با + یا - شروع شود، آنگاه INDEX به‌صورت نسبی نسبت به TAG جاری در نظر گرفته می‌شود. اگر --skip-visible ارسال شود و INDEX نسبی باشد، برچسب‌هایی که قبلاً روی یک نمایشگر قابل مشاهده هستند نادیده گرفته می‌شوند. برای مثال، دستور زیر برچسب‌ها را به عقب پیمایش می‌کند:
•use_index -1 --skip-visible

use_previous

نمایشگر دارای فوکوس را به برچسبی که قبلاً مشاهده شده بود تغییر می‌دهد.

merge_tag TAG [TARGET]

برچسب با نام TAG را حذف کرده و تمام پنجره‌های آن را به برچسب TARGET منتقل می‌کند. اگر TARGET مشخص نشود، از برچسب دارای فوکوس استفاده خواهد شد.

rename OLDTAG NEWTAG

نام برچسب OLDTAG را به NEWTAG تغییر می‌دهد.

move TAG

پنجرهٔ دارای فوکوس را به برچسب با نام TAG منتقل می‌کند.

move_index INDEX [--skip-visible]

پنجرهٔ دارای فوکوس را به برچسب مشخص‌شده با INDEX منتقل می‌کند. مشابه آرگومان در use_index: اگر INDEX با + یا - شروع شود، به‌صورت نسبی در نظر گرفته می‌شود. اگر --skip-visible همراه با یک اندیس نسبی ارسال شود، برچسب‌های از قبل مرئی رد می‌شوند.

lock_tag [MONITOR]

تعویض برچسب را روی نمایشگر مشخص‌شده قفل می‌کند. اگر هیچ آرگومانی داده نشود، از نمایشگر دارای فوکوس استفاده می‌شود. هنگامی که تعویض برچسب برای یک نمایشگر غیرفعال باشد، دستورات use و use_index هنگام اجرا روی آن هیچ تأثیری نخواهند داشت. هنگامی که swap_monitors_to_get_tag فعال باشد، رفتن به برچسبی که روی یک نمایشگر قفل‌شده قرار دارد، به جای ربودن برچسب از آن، فوکوس را به آن نمایشگر منتقل می‌کند. وضعیت قفل یک نمایشگر با "[LOCKED]" در خروجی list_monitors نمایش داده می‌شود.

unlock_tag [MONITOR]

تعویض برچسب را مجدداً روی نمایشگر مشخص‌شده فعال می‌کند. اگر آرگومانی داده نشود، از نمایشگر دارای فوکوس جاری استفاده می‌شود. این عملیات معکوس lock_tag است و اثر جانبی دیگری جز حذف این قفل ندارد.

disjoin_rects RECTS ...

فهرستی از مستطیل‌ها را گرفته و آن‌ها را به قطعات کوچک‌تر تقسیم می‌کند تا تمام مستطیل‌ها مجزا (disjoint) شوند، مستطیل‌های حاصل خط به خط چاپ می‌شوند. این دستور فهرست فعلی نمایشگرها را تغییر نمی‌دهد! بنابراین می‌تواند در ترکیب با دستور set_monitors مفید باشد.
•برای مثال disjoin_rects 600x400+0+0 600x400+300+250 این خروجی را چاپ می‌کند:
300x150+300+250
600x250+0+0
300x150+0+250
300x150+600+250
600x250+300+400
•در مثال بالا دو نمایشگر به ۵ نمایشگر تقسیم می‌شوند، که از نظر گرافیکی یعنی:
┌──────┐                  ┌──────┐
│      │                  └──────┘
│  ┌───┼───┐              ┌─┐┌───┐┌──┐
│  │   │   │   disjoin    │ ││   ││  │
└──┼───┘   │  ─────────>  └─┘└───┘└──┘
   │       │                 ┌───────┐
   └───────┘                 └───────┘

set_monitors RECTS ...

فهرست نمایشگرها را دقیقاً برابر با فهرست مستطیل‌های داده‌شده تنظیم می‌کند:
•نمایشگر موجود i-اُم به RECT (مستطیل) i-اُم داده‌شده منتقل می‌شود
•اگر تعداد RECTS بیشتر از نمایشگرها باشد، نمایشگرهای جدید ایجاد می‌شوند
•اگر تعداد نمایشگرها بیشتر از RECTS باشد، نمایشگرهای موجود حذف می‌شوند

detect_monitors -l|--list|--list-all|--no-disjoin

فهرست نمایشگرها را برابر با نمایشگرهای فیزیکی موجود تنظیم می‌کند. اگر هر دوی Xinerama و xrandr ناموجود باشند، به یک نمایشگر روی کل صفحه بازمی‌گردد. اگر نمایشگرهای شناسایی‌شده همپوشانی داشته باشند، با استفاده از disjoin_rects به نمایشگرهای بیشتری تقسیم می‌شوند که مجزا هستند اما همان ناحیه را پوشش می‌دهند.

اگر -l یا --list ارسال شود، فهرست مستطیل‌های نمایشگرهای فیزیکی شناسایی‌شده چاپ می‌شود. بنابراین hc detect_monitors معادل دستور بش زیر است: hc set_monitors $(hc disjoin_rects $(hc detect_monitors -l)).

اگر --list-all ارسال شود، مشخص می‌کند که کدام سیستم تشخیص چندنمایشگره (xinerama، xrandr) چه مجموعه‌ای از نمایشگرهای فیزیکی را دارد.

add_monitor RECT [TAG [NAME]]

یک نمایشگر روی مستطیل مشخص‌شده RECT اضافه کرده و TAG را روی آن نمایش می‌دهد. TAG در حال حاضر نباید روی هیچ نمایشگر دیگری نمایش داده شود. RECT یک رشته به صورت WxH±X±Y است. اگر هیچ برچسبی یا یک TAG خالی داده شود، بر اساس صفت monitors.tag_selection_strategy یک برچسب آزاد/خالی انتخاب خواهد شد. اگر NAME داده شود، می‌توانید به جای استفاده از اندیس، با نام این نمایشگر به آن ارجاع دهید. مثال:
•add_monitor 1024x768-20+0 mynewtag main

remove_monitor MONITOR

نمایشگر مشخص‌شده را حذف می‌کند.

move_monitor MONITOR RECT [PADUP [PADRIGHT [PADDOWN [PADLEFT]]]]

نمایشگر مشخص‌شده را به مستطیل RECT منتقل می‌کند. RECT همان‌طور که در add_monitor بیان شد تعریف می‌شود. اگر حاشیه (pad) داده نشود یا خالی باشد، تغییر نخواهد کرد.

raise_monitor [MONITOR]

نمایشگر مشخص‌شده یا در صورت عدم درج MONITOR نمایشگر جاری را بالا می‌آورد (Raise).

rename_monitor MONITOR NAME

نام یک نمایشگر موجود را تغییر می‌دهد. اگر NAME خالی باشد، نام نمایشگر را حذف می‌کند.

stack

پشتهٔ نمایشگرها را همراه با برچسب‌های مرئی و لایه‌های آن‌ها به‌صورت یک درخت چاپ می‌کند. ترتیب پشتهٔ چاپ‌شده از بالا به پایین است. سبک نمایش توسط تنظیم tree_style پیکربندی می‌شود.

monitor_rect [[-p] MONITOR]

مستطیل نمایشگر مشخص‌شده را در قالب زیر چاپ می‌کند: X Y W H اگر هیچ MONITOR یا cur داده نشود، از نمایشگر جاری استفاده می‌شود. اگر -p ارسال شود، مستطیل باقی‌مانده بدون حاشیهٔ (pad) اطراف این نمایشگر چاپ می‌شود.

pad MONITOR [PADUP [PADRIGHT [PADDOWN [PADLEFT]]]]

حاشیهٔ (pad) نمایشگر مشخص‌شده را روی مقادیر معین تنظیم می‌کند. اگر مقداری داده نشود یا خالی باشد، تغییر نخواهد کرد.

list_padding [MONITOR]

حاشیه‌گذاری (padding) نمایشگر مشخص‌شده، یا نمایشگر دارای فوکوس در صورت عدم تعیین نمایشگر را فهرست می‌کند.

layout [TAG [INDEX]]

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

یک نمونه خروجی:

╾─┐ horizontal 50% selection=1
  ├─╼ vertical: 0xe00009
  └─┐ vertical 50% selection=0
    ├─╼ vertical: 0xa00009 [FOCUS]
    └─╼ vertical: 0x1000009

dump [TAG [INDEX]]

همان اطلاعات دستور layout را اما در قالبی خوانا برای ماشین چاپ می‌کند. خروجی آن را می‌توان با دستور load مجدداً خواند و بارگذاری کرد.

یک نمونه خروجی (که بعداً فرمت شده است):

(split horizontal:0.500000:1
    (clients vertical:0 0xe00009)
    (split vertical:0.500000:1
        (clients vertical:0 0xa00009)
        (clients vertical:0 0x1000009)))

load [TAG] LAYOUT

توضیحات LAYOUT داده‌شده را روی TAG مشخص‌شده یا در صورت عدم ذکر TAG روی برچسب جاری بارگذاری می‌کند.

هشدار (Caution)

LAYOUT دقیقاً یک پارامتر است. اگر آن را به‌صورت دستی از پوسته یا از طریق یک اسکریپت فراخوانی می‌کنید، آن را به درستی داخل کوتیشن (نقل‌قول) قرار دهید!

complete POSITION [COMMAND ARGS ...]

نتیجهٔ تکمیل خودکار کلید Tab را برای COMMAND ناقص همراه با ARGS اختیاری چاپ می‌کند. معمولاً به این دستور نیازی ندارید، چرا که تکمیل با Tab برای bash، zsh و fish از قبل وجود دارد. مثال:
•complete 0 m

تمام دستوراتی که با m شروع می‌شوند را چاپ می‌کند

•complete 1 toggle fra

تمام تنظیماتی که با fra شروع شده و قابل معکوس شدن (toggle) هستند را چاپ می‌کند

complete_shell POSITION [COMMAND ARGS ...]

مشابه complete رفتار می‌کند با موارد اضافی زیر که برای تکمیل خودکار در پوسته‌های سازگار با posix کاربرد دارد:
•دنباله‌های گریز (Escape sequences) در COMMAND و ARGS حذف می‌شوند.
•یک فاصله به انتهای هر نتیجهٔ تکمیل کامل اضافه می‌شود.
•کاراکترهای ویژه در خروجی اسکیپ خواهند شد.

emit_hook NAME ARGS ...

یک قلاب (hook) سفارشی با نام NAME را برای تمام کلاینت‌های herbstclient در حالت بیکار ارسال می‌کند.

tag_status [MONITOR]

فهرستی جداشده با تب از تمام برچسب‌های اندیس MONITOR مشخص‌شده را چاپ می‌کند. اگر اندیس MONITOR داده نشود، از نمایشگر دارای فوکوس استفاده می‌شود. نام هر برچسب با یک کاراکتر پیشوند همراه است که وضعیت آن را نشان می‌دهد:
•. برچسب خالی است
•: برچسب خالی نیست
•+ برچسب روی MONITOR مشخص‌شده در حال مشاهده است، اما این نمایشگر فوکوس ندارد.
•# برچسب روی MONITOR مشخص‌شده در حال مشاهده است و فوکوس دارد.
•- برچسب روی MONITOR دیگری در حال مشاهده است، اما آن نمایشگر فوکوس ندارد.
•% برچسب روی MONITOR دیگری در حال مشاهده است و فوکوس دارد.
•! برچسب حاوی یک پنجره با وضعیت اضطراری (urgent) است

هشدار (Warning)

اگر در یکی از نام‌های برچسب از تب (Tab) استفاده کنید، دستور tag_status احتمالاً برای شما کاملاً بی‌استفاده خواهد بود.

floating [[TAG] on|off|toggle|status]

حالت TAG مشخص‌شده را به حالت شناور/کاشی‌کاری تغییر می‌دهد یا وضعیت فعلی آن را چاپ می‌کند. اگر هیچ TAG داده نشود، از برچسب جاری استفاده می‌شود. اگر هیچ آرگومانی داده نشود، حالت شناور معکوس (toggle) می‌شود. اگر status داده شود، بسته به وضعیت شناور بودن TAG، مقدار on یا off چاپ می‌شود.

rule [[--]FLAG|[--]LABEL|[--]CONDITION|[--]CONSEQUENCE ...]

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

unrule LABEL|--all|-F

تمام قوانین با برچسب LABEL را حذف می‌کند. اگر --all یا -F ارسال شود، تمام قوانین حذف خواهند شد.

apply_rules WINID|--all

قوانین را روی پنجرهٔ مشخص‌شده با شناسهٔ WINID اعمال می‌کند. اگر --all ارسال شود، قوانین بر تمام کلاینت‌ها اعمال می‌گردد.

apply_tmp_rule WINID|--all [RULEDESCRIPTION...]

قانون RULEDESCRIPTION را روی یک کلاینت خاص WINID یا همهٔ کلاینت‌ها (--all) بدون اضافه کردن آن به فهرست قوانین اعمال می‌کند. RULEDESCRIPTION قانونی شامل شروط و نتایج را تعیین می‌کند، همان‌گونه که به دستور rule ارسال می‌شود و در بخش قوانین (RULES) توضیح داده شده است. این امکان، آزمایش قوانین را قبل از افزودن آن‌ها فراهم می‌سازد. اجرای apply_tmp_rule فقط همان قانون خاص ارائه‌شده در آرگومان‌ها را اعمال کرده و قوانین موجود را نادیده می‌گیرد.

fullscreen [on|off|toggle]

وضعیت تمام‌صفحهٔ کلاینت دارای فوکوس را تنظیم یا معکوس می‌کند. اگر هیچ آرگومانی داده نشود، حالت تمام‌صفحه معکوس (toggle) می‌شود.

pseudotile [on|off|toggle]

وضعیت شبه‌کاشی‌کاری (pseudotile) کلاینت دارای فوکوس را تنظیم یا معکوس می‌کند. اگر یک کلاینت در وضعیت شبه‌کاشی‌کاری باشد، در حالت کاشی‌کاری کلاینت فقط جابه‌جا می‌شود اما تغییر اندازه نمی‌دهد - اندازهٔ کلاینت همان اندازهٔ شناور باقی خواهد ماند. تنها دلیل برای تغییر اندازهٔ کلاینت، اطمینان از جا شدن آن درون کاشی مربوطه است. اگر هیچ آرگومانی داده نشود، حالت شبه‌کاشی‌کاری معکوس می‌شود.

object_tree [PATH]

درخت اشیاء را چاپ می‌کند. اگر مسیر شیء PATH داده شود، فقط زیردرختی که از PATH شروع می‌شود چاپ خواهد شد. برای جزئیات بیشتر به بخش اشیاء (OBJECTS) مراجعه کنید.

attr [PATH [NEWVALUE]

فرزندان و صفت‌های شیء مورد نظر را که با PATH مشخص شده است چاپ می‌کند. اگر PATH یک صفت باشد، مقدار آن صفت را چاپ می‌کند. اگر NEWVALUE داده شود، مقدار NEWVALUE را به صفت مشخص‌شده با PATH اختصاص می‌دهد. برای جزئیات بیشتر به بخش اشیاء (OBJECTS) مراجعه کنید.

get_attr ATTRIBUTE

چاپ مقدار ATTRIBUTE مشخص‌شده طبق توضیحات ارائه‌شده در بخش OBJECTS.

set_attr ATTRIBUTE NEWVALUE

اختصاص NEWVALUE به ATTRIBUTE مشخص‌شده طبق توضیحات ارائه‌شده در بخش OBJECTS.

attr_type ATTRIBUTE

چاپ نوع ATTRIBUTE مشخص‌شده.

new_attr bool|color|int|string|uint PATH [VALUE]

یک صفت جدید با نام و در شیء مشخص‌شده توسط PATH می‌سازد. نوع آن توسط آرگومان اول مشخص می‌شود. نام صفت باید با my_ شروع شود. اگر VALUE ارائه شده باشد، در صفت نوشته می‌شود (اگر این کار ناموفق باشد، صفت همچنان باقی می‌ماند).

watch PATH

نظارت بر مقدار صفت مشخص‌شده در PATH. هر زمان که مقدار از OLDVALUE به NEWVALUE تغییر کند، یک هوک ارسال می‌شود:

attribute_changed PATH OLDVALUE NEWVALUE

remove_attr PATH

صفت تعریف‌شده توسط کاربر در PATH را حذف می‌کند.

substitute IDENTIFIER ATTRIBUTE COMMAND [ARGS ...]

تمام رخدادهای دقیق IDENTIFIER در COMMAND و ARGS آن را با مقدار ATTRIBUTE جایگزین می‌کند. توجه داشته باشید که اگر COMMAND برابر با IDENTIFIER باشد، خود دستور نیز با مقدار صفت جایگزین خواهد شد. سپس دستور جایگزین‌شده همراه با آرگومان‌هایش اجرا می‌شود. مثال:
•substitute MYTITLE clients.focus.title echo MYTITLE

عنوان پنجره‌ای که در حال حاضر روی آن فوکوس شده است را چاپ می‌کند.

sprintf IDENTIFIER FORMAT [FORMATARG ...] COMMAND [CMDARGS ...]

تمام رخدادهای دقیق IDENTIFIER در COMMAND و CMDARGS آن را با رشتهٔ مشخص‌شده توسط FORMAT جایگزین می‌کند. رشتهٔ FORMAT می‌تواند شامل چندین متغیر جای‌گیر باشد، مشابه با دستور printf(1):
•%s مقدار صفتی را درج می‌کند که مسیر آن توسط مقدار رشته‌ای FORMATARG بعدی مشخص شده است
•%c («ثابت» یا "constant") مقدار FORMATARG بعدی را بدون تغییر درج می‌کند.
•%{ATTR} مقدار جاری صفت ATTR را درج می‌کند. مسیر ATTR می‌تواند خود شامل متغیرهای فرمت باشد. از این قابلیت می‌توان برای ترکیب مسیرهای صفت در زمان اجرا، مثلاً در حلقهٔ foreach استفاده کرد.
•%% نمایانگر یک کاراکتر سادهٔ % است
سپس دستور جایگزین‌شده همراه با آرگومان‌هایش اجرا می‌شود. مثال‌ها:
•sprintf STR title=%s clients.focus.title echo STR

عنوان پنجره‌ای که در حال حاضر روی آن فوکوس است را همراه با پیشوند title= چاپ می‌کند.

•sprintf X "%c %s tags" "there are" tags.count echo X

عبارت there are N tags را چاپ می‌کند که در آن N با تعداد برچسب‌ها جایگزین شده است.

•sprintf X tag=%s tags.focus.name rule once X

کلاینت بعدی که ظاهر می‌شود را به برچسبی که در حال حاضر روی آن فوکوس شده است منتقل می‌کند.

•sprintf X %s/%s tags.focus.index tags.count echo X

مشخص می‌کند کدام برچسب در حالت فوکوس است و در مجموع چند برچسب وجود دارد

•sprintf l somelongstring echo l l l

عبارت somelongstring را سه بار، جداشده با فاصله چاپ می‌کند.

•sprintf VALUE "%{%c.client_count}" tags.0 echo VALUE

تعداد کلاینت‌های روی برچسب با شاخص 0 را چاپ می‌کند

•foreach --filter-name="[0-9]*" T tags. sprintf S "%{%c.client_count}" T echo T S

تعداد کلاینت‌ها را برای هر برچسب چاپ می‌کند.

•substitute X tags.count sprintf Y "number=%c" X echo Y

خروجی یکسانی دارد با

sprintf Y "number=%s" tags.count echo Y

(به نحوه تغییر %c به %s توجه کنید)

foreach IDENTIFIER OBJECT [--recursive] [--unique] [--filter-name=REGEX] COMMAND [ARGS ...]

به ازای هر فرزند از OBJECT داده‌شده، COMMAND همراه با ARGS آن فراخوانی می‌شود، به طوری که IDENTIFIER با مسیر آن فرزند جایگزین می‌گردد. گزینه‌ها عبارتند از:
•--filter-name=REGEX فرزندانی را در نظر می‌گیرد که نام آن‌ها با REGEX مشخص‌شده مطابقت دارد.
•--unique موارد تکراری را چاپ نمی‌کند (به برخی اشیاء می‌توان از چندین مسیر دسترسی داشت، مانند clients.focus)
•--recursive شیء OBJECT و تمامی فرزندان آن در هر عمقی را به ترتیب جستجوی سطح‌اول چاپ می‌کند. این گزینه به طور ضمنی --unique را فعال می‌سازد.
کد خروج برابر با کد خروج آخرین دستور اجرا شده خواهد بود. مثال‌ها:
•foreach T tags.by-name. echo T

چاپ می‌کند:

tags.by-name.1
tags.by-name.2
tags.by-name.3
[...]
•توجه داشته باشید که foreach فقط روی فرزندان پیمایش می‌کند و نه روی صفت‌ها، بنابراین foreach S settings echo S چیزی چاپ نمی‌کند، زیرا شیء settings فقط دارای صفت است و شیء فرزندی ندارد.
•foreach C clients. echo C مسیر شیء همهٔ کلاینت‌ها را چاپ می‌کند، اما کلاینت فوکوس‌شده را دو بار چاپ می‌کند، زیرا در clients. دو بار ذکر شده است: یک بار با شناسه پنجره و یک بار به عنوان clients.focus.
•foreach F tags.focus.tiling.root. --recursive echo F مسیر شیء تمام قاب‌های روی برچسب فوکوس‌شده را چاپ می‌کند.

mktemp [bool|int|string|uint] IDENTIFIER COMMAND [ARGS ...]

یک صفت موقت با نوع داده‌شده ایجاد می‌کند و تمام رخدادهای IDENTIFIER در COMMAND و ARGS را با مسیر صفت موقت جایگزین می‌نماید. سپس دستور جایگزین‌شده همراه با آرگومان‌هایش اجرا می‌شود. وضعیت خروج COMMAND بازگردانده می‌شود.

compare ATTRIBUTE OPERATOR VALUE

مقدار ATTRIBUTE را با VALUE با استفاده از روش مقایسهٔ OPERATOR مقایسه می‌کند. اگر مقایسه موفقیت‌آمیز باشد 0 و در غیر این صورت 1 برمی‌گرداند. عملگرها عبارتند از:
•=: مقدار ATTRIBUTE برابر با VALUE است
•!=: مقدار ATTRIBUTE برابر با VALUE نیست
•le: مقدار ATTRIBUTE <= VALUE است
•lt: مقدار ATTRIBUTE < VALUE است
•ge: مقدار ATTRIBUTE >= VALUE است
•gt: مقدار ATTRIBUTE > VALUE است
عملگرهای OPERATORs le، lt، ge، gt فقط در صورتی قابل استفاده هستند که ATTRIBUTE از نوع عدد صحیح یا عدد صحیح بدون علامت باشد. توجه داشته باشید که پارامتر اول همیشه باید یک صفت و پارامتر دوم یک مقدار ثابت باشد. اگر می‌خواهید دو صفت را مقایسه کنید، از دستور substitute استفاده کنید:
substitute FC tags.focus.frame_count \
    compare tags.focus.client_count gt FC

اگر تعداد کلاینت‌های روی برچسب فوکوس‌شده بیشتر از قاب‌ها باشد، با موفقیت بازمی‌گردد.

getenv NAME

مقدار متغیر محیطی NAME را دریافت می‌کند.

setenv NAME VALUE

مقدار متغیر محیطی NAME را روی VALUE تنظیم می‌کند. برای یک معادل راحت‌تر، دستور export را ببینید.

unsetenv NAME

متغیر محیطی NAME را لغو تنظیم می‌کند.

export NAME=VALUE

مقدار متغیر محیطی NAME را روی VALUE تنظیم می‌کند. نحو آن همانند export در پوسته‌های یونیکس است (توجه داشته باشید که یک = وجود دارد). به طور شهودی، اگر فراموش کردید قبل از شروع herbstluftwm دستور export FOO=BAR را اجرا کنید، می‌توانید از درون نشست herbstluftwm خود دستور herbstclient export FOO=BAR را برای اعمال همان اثر اجرا کنید. دستور export همانند دستور setenv با نحوی متفاوت است.

debug_css [FLAGS]

این دستور صرفاً برای آزمایش herbstluftwm وجود دارد؛ در نشست‌های عادی hlwm هیچ کاربردی ندارد. علاوه بر این، رابط این دستور ممکن است به روش‌های ناسازگار تغییر کند. این دستور عملیات‌های گوناگونی را انجام می‌دهد که توسط FLAGS اختیاری مشخص می‌شوند:
•--stylesheet=CSS شیوه‌نامه‌ای را مشخص می‌کند که احتمالاً در یکی از دستورات دیگر استفاده می‌شود.
•--print-css شیوه‌نامه را به شکل استانداردشده چاپ می‌کند
•--tree=TREE مشخصات درختی به سبک DOM، که در آن نحو درخت با ( شروع شده و با ) پایان می‌یابد. در این بین، درخت شامل فهرستی از نام‌های کلاس و زیردرخت‌ها است که با فاصله جدا شده‌اند.
•--print-tree مشخصات درختی TREE را مجدداً چاپ می‌کند.
•--pretty-client-tree=CLIENT برای CLIENT داده‌شده، درخت ویجت‌های آن را همراه با کلاس‌هایی که هر ویجت دارد چاپ می‌کند. پیش از هر کلاس همانند انتخابگرهای css یک نقطه . قرار می‌گیرد.
•--query-tree-indices=SELECTOR شاخص‌های درختی (مشابه با شاخص‌های قاب) گره‌هایی که با SELECTOR به سبک css مطابقت دارند را چاپ می‌کند.
•--compute-style=INDEX استایل جعبه‌ای گره‌ای در TREE فوق که دارای شاخص درختی INDEX است را محاسبه می‌کند.

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

rule [[--]FLAG|[--]LABEL|[--]CONDITION|[--]CONSEQUENCE ...]

هر قانون از فهرستی از FLAGها، CONDITIONها، CONSEQUENCEها و به صورت اختیاری یک LABEL تشکیل شده است. (می‌توان به صورت اختیاری به ابتدای هر یک از آن‌ها دو خط تیره (--) اضافه کرد تا حس شبیه‌تری به iptables(8) ایجاد شود).

می‌توان با مشخص کردن ویژگی LABEL، یک برچسب سفارشی به هر قانون اختصاص داد:

•[--]label=VALUE

اگر چندین برچسب مشخص شود، آخرین برچسب در فهرست اعمال خواهد شد. اگر برچسبی داده نشود، به قانون یک نام عدد صحیح اختصاص داده می‌شود که نشان‌دهنده نمایه (index) قانون از زمان آخرین دستور unrule -F (که در شروع خودکار پیش‌فرض اجرا می‌شود) است.


نکته

برچسب‌های قانون به طور پیش‌فرض یک نمایه افزایشی هستند. این برچسب‌های پیش‌فرض یکتا هستند، مگر اینکه به یک قانون دیگر یک LABEL عدد صحیح سفارشی اختصاص دهید. برچسب‌های پیش‌فرض را می‌توان با فلگ printlabel دریافت کرد.

هنگامی که یک کلاینت جدید ظاهر می‌شود، herbstluftwm تلاش می‌کند تا هر قانون را به صورت زیر روی این کلاینت جدید اعمال کند: اگر تمام CONDITIONهای این قانون با این کلاینت مطابقت داشته باشند، آنگاه هر CONSEQUENCE اجرا می‌شود. (اگر هیچ شرطی مشخص نشده باشد، این قانون برای هر کلاینت اجرا خواهد شد)

هر CONDITION از یک نام property (ویژگی)، یک عملگر و یک value تشکیل شده است. عملگرهای معتبر عبارتند از:

•~ در صورتی مطابقت دارد که property کلاینت با عبارت منظم (regex) value تطبیق یابد.
•= در صورتی مطابقت دارد که رشته property کلاینت برابر با value باشد.

properties معتبر عبارتند از:

instance

ورودی اول در WM_CLASS کلاینت.

class

ورودی دوم در WM_CLASS کلاینت.

title

عنوان پنجره کلاینت.

pid

شناسه پردازه (pid) کلاینت (هشدار: pid برای همه کلاینت‌ها در دسترس نیست. این شرط فقط در صورتی مطابقت می‌یابد که کلاینت مقدار _NET_WM_PID را روی خود pid تنظیم کرده باشد).

pgid

شناسه گروه پردازه (pgid) این کلاینت. از آنجا که pgid یک پنجره از pid آن مشتق می‌شود، همان محدودیت‌های بالا اعمال می‌شوند.

maxage

در صورتی مطابقت دارد که سن قانون به ثانیه از value تجاوز نکند. این شرط فقط می‌تواند با عملگر = استفاده شود. اگر maxage از قبل رد شده باشد (و دیگر هرگز مطابقت پیدا نکند)، این قانون حذف می‌شود. (با این قابلیت می‌توانید قوانینی بسازید که فقط برای مدت زمان مشخصی معتبر باشند.)

windowtype

با ویژگی _NET_WM_WINDOW_TYPE پنجره مطابقت می‌یابد. اگر _NET_WM_WINDOW_TYPE دارای چندین ورودی باشد، فقط ورودی اول در اینجا استفاده می‌شود.

windowrole

با ویژگی WM_WINDOW_ROLE پنجره در صورتی که توسط پنجره تنظیم شده باشد مطابقت می‌یابد.

fixedsize (بدون پارامتر)

در صورتی مطابقت دارد که پنجره اجازه تغییر اندازه را ندهد (یعنی اندازه کمینه با اندازه بیشینه برابر باشد). این شرط پارامتری دریافت نمی‌کند. مثال:
hc rule fixedsize floating=on

هر CONSEQUENCE از یک جفت NAME=VALUE تشکیل شده است. NAMESهای معتبر عبارتند از:

tag

کلاینت را به برچسب (tag) VALUE انتقال می‌دهد.

monitor

کلاینت را به تگ موجود در مانیتور VALUE انتقال می‌دهد. اگر پیامد tag نیز مشخص شده باشد، و switchtag برای کلاینت تنظیم شده باشد، کلاینت را به آن تگ منتقل کرده و سپس آن تگ را در مانیتور VALUE نمایش می‌دهد. اگر پیامد tag مشخص شده باشد اما switchtag تنظیم نشده باشد، این پیامد نادیده گرفته می‌شود.

focus

تعیین می‌کند که آیا کلاینت فوکوس ورودی را در تگ خود دریافت کند یا خیر. پیش‌فرض off است. VALUE یک مقدار بولی است (on یا off).

switchtag

اگر focus فعال باشد و کلاینت در یک تگ بدون فوکوس قرار گیرد، switchtag مشخص می‌کند که تگ کلاینت نمایش داده شود یا خیر. اگر تگ روی هر مانیتوری نمایش داده شود اما فوکوس نداشته باشد، تگ کلاینت تنها در صورتی به مانیتور جاری منتقل می‌شود که swap_monitors_to_get_tag فعال باشد. VALUE یک مقدار بولی است (on یا off).

manage

تعیین می‌کند که آیا کلاینت مدیریت شود یا خیر. مقدار پیش‌فرض on است. VALUE یک مقدار بولی است (on یا off).

index

پنجره را به یک نمایه مشخص در درخت منتقل می‌کند. VALUE یک frame index است.

floating

وضعیت شناور بودن کلاینت را تنظیم می‌کند. VALUE یک مقدار بولی است.

pseudotile

وضعیت کاشی‌بندی شبه‌شناور (pseudotile) کلاینت را تنظیم می‌کند. VALUE یک مقدار بولی است.

sticky

ویژگی چسبان (sticky) کلاینت را تنظیم می‌کند. VALUE یک مقدار بولی است.

ewmhrequests

تعیین می‌کند که آیا وضعیت پنجره (وضعیت تمام‌صفحه و پرچم نیازمند توجه) می‌تواند توسط خود برنامه از طریق ewmh تغییر کند یا خیر. این گزینه روی وضعیت اولیه تمام‌صفحه درخواست‌شده توسط پنجره تأثیری ندارد. VALUE یک مقدار بولی است؛ پیش‌فرض آن on می‌باشد.

ewmhnotify

تعیین می‌کند که آیا hlwm باید تغییرات EWMH (در حال حاضر فقط وضعیت تمام‌صفحه) را به اطلاع کلاینت برساند یا خیر. اگر این مورد تنظیم شده باشد، برنامه‌ها در حالی که هنوز تمام‌صفحه هستند به حالت تمام‌صفحه خود تغییر وضعیت نمی‌دهند. VALUE یک مقدار بولی است، پیش‌فرض آن on می‌باشد.

fullscreen

پرچم تمام‌صفحه بودن کلاینت را تنظیم می‌کند. VALUE یک مقدار بولی است.

hook

قلاب سفارشی rule VALUE WINID را هنگامی که این قانون توسط یک پنجره جدید با شناسه WINID فعال شود ارسال می‌کند. این پیامد را می‌توان چندین بار استفاده کرد که باعث می‌شود برای هر بار رخداد پیامد hook یک قلاب ارسال گردد.

keymask

ماسک کلید (keymask) را برای یک کلاینت تنظیم می‌کند (مستندات ویژگی keymask را ببینید).

keys_inactive

عبارت منظمی را تنظیم می‌کند که مشخص می‌سازد کدام کلیدهای میانبر برای یک کلاینت غیرفعال هستند (مستندات ویژگی keys_inactive را ببینید).

floatplacement

موقعیت شناور یک پنجره را تغییر می‌دهد. VALUE می‌تواند یکی از موارد زیر باشد:
•none موقعیت را اصلاً تغییر نمی‌دهد
•center پنجره را در مرکز مانیتور قرار می‌دهد
•smart تلاش می‌کند تا آن را با کمترین همپوشانی ممکن با سایر پنجره‌های شناور قرار دهد. اگر چندین حالت با کمترین همپوشانی وجود داشته باشد، موقعیتی با کمترین همپوشانی با پنجره‌های کاشی‌بندی‌شده انتخاب می‌شود.
•topleft, topright, bottomleft, bottomright پنجره را به گوشه مربوطه مانیتور منتقل می‌کند اما فاصله‌ای به اندازه settings.snap_gap پیکسل باقی می‌گذارد.

floating_geometry

ویژگی floating_geometry کلاینت را تنظیم می‌کند. VALUE یک مستطیل است که نسبت به مانیتور تفسیر می‌شود. اگر floatplacement نیز برای کلاینت مشخص شده باشد (احتمالاً توسط یک قانون دیگر)، تنها اندازه floating_geometry استفاده خواهد شد. به منظور تحمیل موقعیت از هندسه، لازم است floatplacement=none اضافه شود.

رفتار یک قانون را می‌توان با برخی از FLAGSهای ویژه پیکربندی کرد:

•not: CONDITION بعدی را نقیض می‌کند.
•!: همان not.
•once: این قانون را فقط یک‌بار اعمال می‌کند (و پس از آن حذفش می‌کند).
•printlabel: برچسب قانون تازه ایجاد شده را در stdout چاپ می‌کند.
•prepend: قانون را به جای الحاق به انتهای فهرست قوانین، به ابتدای آن اضافه می‌کند. بنابراین ممکن است پیامدهای آن توسط قوانین از قبل موجود بازنویسی شوند.

مثال‌ها:

•rule --class=Netscape --tag=6 --focus=off

تمام نمونه‌های Netscape را به تگ ۶ منتقل می‌کند، اما به آن‌ها فوکوس نمی‌دهد.

•rule not class~.*[Tt]erm tag=2

اگر کلاس کلاینت‌ها با term یا Term خاتمه نیابد، همه آن‌ها را به تگ ۲ منتقل می‌کند.

•rule class=Thunderbird index=/0

تمام نمونه‌های Thunderbird را در درختی که فوکوس ندارد و در آنجا در فرزند اول درج می‌کند.

•rule --windowtype=_NET_WM_WINDOW_TYPE_DIALOG --focus=on

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

چندین دستور یک پنجره را به عنوان مرجع می‌پذیرند، برای مثال close. ساختار دستوری به صورت زیر است:

•یک رشته خالی — یا آرگومان ارسال‌نشده — به پنجره دارای فوکوس فعلی ارجاع می‌دهد.
•urgent به پنجره‌ای که وضعیت فوری (urgent) دارد ارجاع می‌دهد.
•0xHEXID — که در آن HEXID یک عدد هگزادسیمال است — به پنجره‌ای با شناسه هگزادسیمال پنجره در X11 یعنی HEXID ارجاع می‌دهد.
•longest-minimized به پنجره کمینه‌شده‌ای در تگ فوکوس‌شده ارجاع می‌دهد که برای طولانی‌ترین زمان کمینه بوده است.
•last-minimized به پنجره کمینه‌شده‌ای در تگ فوکوس‌شده ارجاع می‌دهد که اخیراً کمینه شده است.
•DECID — که در آن DECID یک عدد ده‌دهی است — به پنجره‌ای با شناسه ده‌دهی پنجره در X11 یعنی DECID ارجاع می‌دهد.

درخت اشیاء مجموعه‌ای از اشیاء با ویژگی‌هایی شبیه به /sys در هسته لینوکس است. بسیاری از موجودیت‌ها (مانند برچسب‌ها، مانیتورها، کلاینت‌ها و ...) اشیایی برای دسترسی مستقیم به ویژگی‌های خود دارند. این درخت با دستور object_tree چاپ می‌شود و کم‌وبیش به صورت زیر است:

$ herbstclient object_tree
╾─┐
  ├─┐ tags
  │ ├─┐ by-name
  │ │ ├─╼ 1
  │ │ ...
  │ │ └─╼ 9
  │ └─╼ focus
  ├─┐ clients
  │ ├─╼ 0x1400022
  │ └─╼ focus
  └─┐ monitors
    ├─╼ by-name
    └─╼ focus

برای چاپ یک زیردرخت که از شیء خاصی شروع می‌شود، PATH شیء را به object_tree پاس دهید. مقدار PATH شیء، مسیری است که از جداکننده . (نقطه) استفاده می‌کند، به عنوان مثال tags.by-name:

$ herbstclient object_tree tags.by-name.
╾─┐ tags.by-name.
  ├─╼ 1
  ├─╼ 2
  ...
  └─╼ 9

برای پرس‌وجوی تمام ویژگی‌ها و فرزندان یک شیء، PATH آن را به attr پاس دهید:

$ herbstclient attr tags.
2 children:
  by-name.
  focus.
1 attributes:
 .---- type
 | .-- writable
 V V
 u - count                = 9
$ herbstclient attr tags.focus.
0 children.
6 attributes:
 .---- type
 | .-- writable
 V V
 s w name                 = "1"
 b w floating             = false
 i - frame_count          = 2
 i - client_count         = 1
 i - curframe_windex      = 0
 i - curframe_wcount      = 1

این خروجی دید خوبی از نحوه کار به دست می‌دهد: attr ابتدا نام اشیاء فرزند و سپس تمامی ویژگی‌ها را فهرست می‌کند و برای هر ویژگی موارد زیر را گزارش می‌دهد:

•نوع آن
•b برای بولی (boolean)
•c برای رنگ (color)
•i برای عدد صحیح (integer)
•r برای عبارت باقاعده (regex)
•s برای رشته متنی (string)
•u برای عدد صحیح بدون علامت (unsigned integer)
•آیا توسط کاربر قابل نوشتن است یا خیر: w در صورت مثبت بودن، - در غیر این صورت.
•نام ویژگی
•مقدار فعلی آن (فقط برای رشته‌ها درون کوتیشن قرار می‌گیرد)

برای دریافت مقدار بدون کوتیشن یک ویژگی خاص، ویژگی را با همان نحو مربوط به مسیرهای شیء آدرس‌دهی کرده و آن را به attr یا get_attr پاس دهید:

$ herbstclient attr clients.focus.title
herbstluftwm.txt = (~/dev/c/herbstluftwm/doc) - VIM
$ herbstclient get_attr  clients.focus.title
herbstluftwm.txt = (~/dev/c/herbstluftwm/doc) - VIM

برای تغییر مقدار یک ویژگی قابل نوشتن، مقدار جدید را به attr یا set_attr پاس دهید:

$ herbstclient attr tags.focus.floating
false
$ herbstclient attr tags.focus.floating true
$ herbstclient attr tags.focus.floating
true
$ herbstclient set_attr tags.focus.floating false
$ herbstclient attr tags.focus.floating
false

اطلاعات بیشتر درباره یک ویژگی یا شیء توسط دستور help ارائه می‌شود:

$ herbstclient help clients.focus

کافی است گشتی در آن بزنید تا متوجه ساختار آن شوید. نقطه ورود، شیء ریشه است که اشیاء فرزند زیر را در بر دارد:

•string global_path = globalAutostart: مسیر autostart سراسری سیستم که به عنوان جایگزین استفاده می‌شود.
•int last_status = 0: وضعیت خروج آخرین اجرای autostart. اگر autostart همچنان running باشد، این وضعیت متناظر با وضعیت خروج فراخوانی قبلی autostart خواهد بود.
•string path = autostartFromCmdLine: مسیر سفارشی به autostart کاربر. اگر خالی باشد، از autostart موجود در $XDG_CONFIG_HOME یا $HOME استفاده می‌شود.
•uint pid = 0: شناسه فرآیند (PID) آخرین فراخوانی autostart. حتی اگر autostart دیگر در حال اجرا نباشد، مقدار pid آن همچنان در اینجا باقی می‌ماند.
•bool running = false: مشخص می‌کند آیا فرآیند autostart (با pid مربوطه) همچنان در حال اجراست یا خیر.

پنجره‌های مدیریت‌شده. به ازای شناسه هر پنجره (مدیریت‌شده) یک ورودی در اینجا وجود دارد.

•dragged: شیء مربوط به کلاینتی که هم‌اکنون با ماوس کشیده می‌شود، در صورت وجود. برای مثال‌ها به مستندات دستور mousebind مراجعه کنید. برای ویژگی‌ها و فرزندان، ببینید: clients.focus
•focus: کلاینت فوکوس‌شده (تنها در صورتی وجود دارد که کلاینتی فوکوس شده باشد). یک پنجره مدیریت‌شده
•string class: کلاس آن (دومین ورودی در WM_CLASS)
•Rectangle content_geometry: ابعاد و مختصات محتوای برنامه، بدون در نظر گرفتن تزیینات پنجره. همچنین این آخرین هندسه پنجره‌ای است که به برنامه کلاینت گزارش شده است.
•bool decorated = true: آیا کادر دور پنجره و عنوان رسم شوند یا خیر
•Rectangle decoration_geometry: ابعاد و مختصات کلاینت با در نظر گرفتن تزیینات پنجره. موقعیت پنجره به صورت سراسری است، یعنی نسبت به گوشه بالا سمت چپ کل صفحه نمایش
•bool ewmhnotify = true: آیا کلاینت از طریق ewmh از وضعیت خود مطلع شود یا خیر
•bool ewmhrequests = true: آیا درخواست‌های ewmh برای این کلاینت مجاز هستند یا خیر
•bool floating = false: آیا این کلاینت به عنوان کلاینت شناور (تک‌پنجره‌ای) تنظیم شده است یا خیر. در صورت تنظیم، کلاینت بالای کلاینت‌های کاشی‌شده شناور می‌شود.
•bool floating_effectively = false: آیا این کلاینت در حال حاضر در حالت شناور قرار دارد یا خیر. این حالت زمانی برقرار است که برچسب کلاینت روی حالت شناور تنظیم شده باشد یا خود کلاینت به صورت شناور تنظیم شده باشد. مقدار آن همچنین از طریق ویژگی‌های X11 با نام‌های HLWM_FLOATING_WINDOW و HLWM_TILING_WINDOW مشخص می‌شود.
•Rectangle floating_geometry = 0: ابعاد و مختصات محتوای کلاینت در صورتی که کلاینت در حالت شناور باشد. موقعیت نسبت به مانیتور سنجیده شده و تزیینات پنجره را در نظر نمی‌گیرد.
•bool fullscreen = false: آیا این کلاینت تمام پنجره‌ها و پنل‌های دیگر را در مانیتور خود می‌پوشاند یا خیر.
•string instance: نمونه آن (اولین ورودی در WM_CLASS)
•regex keymask = "": یک عبارت باقاعده که با نمایش متنی تمامی کلیدهای میانبر (همان‌گونه که توسط list_keybinds چاپ می‌شوند) تطبیق داده می‌شود. هنگامی که فوکوس روی این کلاینت است، تنها کلیدهای میانبری که با این عبارت تطبیق داشته باشند فعال خواهند بود. سایر کلیدهای میانبر غیرفعال خواهند شد. مقدار پیش‌فرض keymask یک رشته خالی () است که هیچ کلید میانبری را غیرفعال نمی‌کند.
•regex keys_inactive = "": یک عبارت باقاعده که مشخص می‌کند هنگام فوکوس بودن روی این کلاینت، کدام کلیدهای میانبر غیرفعال هستند. اگر کلید ترکیبی فشرده شود و نمایش متنی آن (بر اساس خروجی list_keybinds) با عبارت باقاعده تطبیق یابد، فشردن کلید مستقیماً به کلاینت منتقل می‌شود.
•bool minimized = false: آیا این کلاینت کمینه‌شده است یا خیر (آیکون‌شده نیز نامیده می‌شود).
•int pgid = -1
•int pid = -1: شناسه فرآیند آن (در صورت تنظیم نشدن -1).
•bool pseudotile = false: در صورت فعال بودن، کلاینت همواره اندازه پنجره شناور خود را حفظ می‌کند، حتی اگر در حالت کاشی‌بندی باشد.
•bool sizehints_floating = true: آیا اندازه پیشنهادی پنجره (sizehints) برای این کلاینت در حالت شناور رعایت شود یا خیر
•bool sizehints_tiling = false: آیا اندازه پیشنهادی پنجره (sizehints) برای این کلاینت در حالت کاشی‌بندی رعایت شود یا خیر
•bool sticky = false: آیا این کلاینت به مانیتور پین شده است یا خیر. این بدان معناست که کلاینت روی مانیتور خود باقی می‌ماند، حتی هنگامی که مانیتور به برچسب دیگری جابجا شود.
•string tag: نام برچسبی که کلاینت هم‌اکنون روی آن قرار دارد.
•string title = "": عنوان پنجره آن
•bool urgent = false: وضعیت فوریت (همچنین شناخته‌شده به عنوان: نیازمند توجه). کلاینت دارای فوکوس نمی‌تواند وضعیت فوری داشته باشد.
•bool visible = visible_already: آیا این کلاینت در حال حاضر رندر و نمایش داده می‌شود یا خیر
•string winid = "": شناسه پنجره آن (به صورت عدد هگزادسیمال با پیشوند 0x)
•parent_frame: فریمی که این کلاینت را در بر دارد در صورتی که کلاینت کاشی‌شده باشد. برای ویژگی‌ها و فرزندان، ببینید: tags.focus.tiling.root

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

•uint count
•TagSelectionStrategy tag_selection_strategy = any_unshown: نحوه انتخاب برچسب هنگام ایجاد مانیتور جدید.
•any_unshown: انتخاب اولین برچسبی که روی هیچ مانیتوری نمایش داده نشده است
•only_empty: انتخاب اولین برچسب خالی که نمایش داده نشده است، و در صورت عدم وجود برچسب خالی عملیات متوقف می‌شود
•+prefer_empty: ترجیح دادن برچسب خالی، اما در صورت نبود برچسب خالی، هر برچسب نمایش‌داده‌نشده دیگری انتخاب می‌شود
•by-name: شامل یک ورودی name به ازای هر شیء با name مشخص‌شده است. اگر شیء نامی خالی داشته باشد در اینجا فهرست نمی‌شود.
•focus: مانیتور فوکوس‌شده. مانیتور بخشی مستطیلی روی صفحه است که در هر لحظه دقیقا یک برچسب را نگه می‌دارد. ویژگی‌های pad فضایی را در حاشیه مانیتور برای پنل‌ها رزرو می‌کنند، بنابراین این فضا (که به تعداد پیکسل تعیین می‌شود) هرگز توسط کلاینت‌های کاشی‌شده اشغال نمی‌شود.
•Rectangle content_geometry: هندسه داخلی مانیتور، یعنی ابعاد و مختصات پس از کسر فاصله‌های pad از تمام جهات. این ناحیه‌ای است که پنجره‌های کلاینت شناور و کاشی‌شده در آن قرار می‌گیرند.
•Rectangle geometry = rect_: هندسه بیرونی مانیتور
•uint index = 0: نمایه مانیتور (شروع از نمایه 0)
•bool lock_tag = false: در صورت فعال بودن، تغییر برچسب این مانیتور به برچسبی دیگر غیرممکن خواهد بود.
•string name = "": نام مانیتور (می‌تواند خالی باشد)
•int pad_down = 0: فضای رزروشده برای پنل‌ها در لبه پایینی مانیتور
•int pad_left = 0: فضای رزروشده برای پنل‌ها در لبه چپ مانیتور
•int pad_right = 0: فضای رزروشده برای پنل‌ها در لبه راست مانیتور
•int pad_up = 0: فضای رزروشده برای پنل‌ها در لبه بالایی مانیتور
•string tag: نام برچسبی که در اینجا نمایش داده می‌شود

برای هر پنجره پنل، یک ورودی با شناسه پنجره پنل در اینجا وجود دارد.

•uint count
•bool geometry_fallback = false: هنگام تشخیص خودکار پنل‌ها: اگر پنلی مقدار فضای مورد نیاز خود در حاشیه مانیتور را مشخص نکند، به عنوان راهکار جایگزین، هندسه پنل در لبه صفحه رزرو می‌شود.
•0xWindowID: یک پنل پنجره‌ای مدیریت‌نشده است که فضا را در لبه مانیتوری که روی آن قرار دارد رزرو می‌کند. این فضا به مقدار _NET_WM_STRUT تعریف‌شده توسط پنل بستگی دارد. با این حال اگر به صراحت تعریف نشده باشد، مقدار فضای رزروشده از هندسه پنجره استنباط می‌شود.
•string class: کلاس پنجره (دومین ورودی در WM_CLASS)
•Rectangle geometry: اندازه و موقعیت پنجره
•string instance: نمونه پنجره (اولین ورودی در WM_CLASS)
•WindowID winid = winid: شناسه پنجره پنل

تنظیمات رفتار کلی herbstluftwm را پیکربندی می‌کنند و می‌توان آن‌ها را از طریق دستورات set، get و toggle کنترل کرد. شیء settings. برای هر تنظیم یک صفت (attribute) دارد. بسیاری از تنظیمات پوشش‌هایی (wrapper) روی صفت‌ها هستند و صرفاً برای سازگاری باقی مانده‌اند.

•bool always_show_frame = false: منسوخ شده (DEPRECATED)، به جای آن از show_frame_decorations استفاده کنید. در صورت تنظیم، show_frame_decorations روی all تنظیم خواهد شد (یا اگر تنظیم نشده باشد روی focused ).
•bool auto_detect_monitors = false: در صورت تنظیم، هر بار که یک نمایشگر متصل، قطع یا تغییر اندازه داده شود، detect_monitors به صورت خودکار اجرا می‌شود.
•bool auto_detect_panels = true: در صورت تنظیم، پنل‌های EWMH به طور خودکار شناسایی می‌شوند و در کناره نمایشگرهایی که روی آن‌ها قرار دارند، فضا رزرو می‌کنند (از طریق صفت‌های pad در هر نمایشگر). این تنظیم به طور پیش‌فرض فعال است.
•bool default_direction_external_only = false: این تنظیم رفتار focus و shift را در صورتی که هیچ آرگومان -e یا -i داده نشده باشد، کنترل می‌کند. در صورت تنظیم، focus و shift قاب فوکوس‌شده را تغییر می‌دهند حتی اگر کلاینت‌های دیگری در این قاب در DIRECTION مشخص‌شده وجود داشته باشند. در غیر این صورت، اگر کلاینتی درون قاب جاری در DIRECTION مشخص‌شده باشد، انتخاب می‌شود.
•LayoutAlgorithm default_frame_layout = vertical: نام الگوریتم چیدمان که هنگام ایجاد یک قاب جدید (روی یک برچسب جدید یا با تقسیم غیربدیهی) استفاده می‌شود. برای فهرست الگوریتم‌های چیدمان به بخش‌های بالا مراجعه کنید.
•string ellipsis = ...: رشته‌ای که هنگام کوتاه شدن عنوان پنجره‌ها یا زبانه‌ها برای جا شدن در فضای موجود، به انتها اضافه می‌شود.
•bool focus_crosses_monitor_boundaries = true: در صورت تنظیم، دستورات focus و shift از مرزهای نمایشگر عبور می‌کنند. اگر کلاینتی در جهت داده‌شده به focus وجود نداشته باشد، نمایشگر در جهت مشخص‌شده فوکوس می‌شود. به همین ترتیب، اگر shift نتواند پنجره‌ای را درون یک برچسب جابه‌جا کند، پنجره به نمایشگر همسایه در جهت مورد نظر منتقل می‌شود.
•bool focus_follows_mouse = false: در صورت تنظیم و زمانی که مکان‌نمای ماوس روی پنجره‌ای قرار می‌گیرد، آن پنجره فوکوس می‌شود (این ویژگی به sloppy focus نیز معروف است). در صورت غیرفعال بودن، برای تغییر فوکوس پنجره با ماوس باید کلیک کنید.

اگر پنجره دیگری به دلیل تغییر فوکوس پنهان شود (مثلاً هنگام داشتن پنجره‌های شبه‌کاشی در چیدمان max)، برای تغییر فوکوس یک کلیک اضافی لازم است.

•bool focus_stealing_prevention = true: در صورت تنظیم، تنها پیجرها و نوارهای وظیفه (taskbars) مجاز به تغییر فوکوس هستند. در صورت غیرفعال بودن، همه برنامه‌ها می‌توانند درخواست تغییر فوکوس دهند.
•int frame_active_opacity = 100: میزان شفافیت قاب فوکوس‌شده به درصد. برای اعمال واقعی نیازمند یک مدیر ترکیب (compositing manager) در حال اجرا است.
•color frame_bg_active_color = black: رنگ پر کردن یک قاب فوکوس‌شده.
•color frame_bg_normal_color = black: رنگ پر کردن یک قاب غیرفوکوس‌شده (فقط در صورتی قابل مشاهده است که قاب‌های غیرفوکوس‌شده برای نمایش پیکربندی شده باشند، به show_frame_decorations مراجعه کنید).
•bool frame_bg_transparent = false: در صورت تنظیم، پس‌زمینه قاب‌ها شفاف خواهد بود. این بدان معناست که مستطیلی از داخل بریده می‌شود به طوری که فقط کادر قاب و نواری به پهنای frame_transparent_width دیده می‌شود. برای شفافیت واقعی از frame_active_opacity و frame_normal_opacity استفاده کنید.
•color frame_border_active_color = red: رنگ کادر یک قاب فوکوس‌شده.
•color frame_border_inner_color = black: رنگ کادر داخلی یک قاب.
•int frame_border_inner_width = 0: پهنای کادر داخلی یک قاب. باید کمتر از frame_border_width باشد، زیرا به پهنای کادر قاب اضافه نمی‌شود بلکه بخشی از آن است.
•color frame_border_normal_color = blue: رنگ کادر یک قاب غیرفوکوس‌شده.
•int frame_border_width = 2: پهنای کادر یک قاب.
•int frame_gap = 5: فاصله بین قاب‌ها در حالت کاشی‌کاری.
•int frame_normal_opacity = 100: میزان شفافیت قاب غیرفوکوس‌شده به درصد. برای اعمال واقعی نیازمند یک مدیر ترکیب در حال اجرا است.
•int frame_padding = 0: حاشیه داخلی (padding) درون یک قاب در حالت کاشی‌کاری، یعنی فاصله بین کادر یک قاب و پنجره‌های درون آن.
•int frame_transparent_width = 0: پهنای باقی‌مانده قاب رنگ‌آمیزی‌شده با frame_bg_active_color را در صورت تنظیم بودن frame_bg_transparent مشخص می‌کند.
•bool gapless_grid = true: این تنظیم بر اندازه آخرین کلاینت در قابی که با چیدمان شبکه‌ای (grid) مرتب شده است تأثیر می‌گذارد. در صورت تنظیم، آخرین کلاینت همیشه شکاف درون این قاب را پر می‌کند. در صورت غیرفعال بودن، آخرین کلاینت همان اندازه تمام کلاینت‌های دیگر در این قاب را خواهد داشت.
•bool hide_covered_windows = false: در صورت فعال بودن، وقتی پنجره‌ها توسط پنجره دیگری در یک قاب با چیدمان max پوشانده شوند، به طور صریح پنهان می‌شوند. این فقط در صورت استفاده از مدیر ترکیب اثر قابل مشاهده دارد. در صورت فعال بودن، سایه‌ها روی هم انباشته نمی‌شوند و پنجره‌های شفاف به جای دیگر کلاینت‌های موجود در چیدمان max، تصویر پس‌زمینه پشت خود را نشان می‌دهند.
•uint monitors_locked = 0: اگر بزرگتر از 0 باشد، کلاینت‌ها در تمام نمایشگرها دیگر جابه‌جا یا تغییر اندازه داده نمی‌شوند. اگر روی 0 تنظیم شود، چیدمان مجدد نمایشگرها دوباره فعال می‌شود و اگر محتوای نمایشگرها در این مدت تغییر کرده باشد، دوباره چیده می‌شوند. به دلیل مسائل همزمانی نباید این تنظیم را دستی تغییر دهید؛ به جای آن از دستورات lock و unlock استفاده کنید.
•int mouse_recenter_gap = 0: فاصله (gap) اطراف یک نمایشگر را مشخص می‌کند. اگر نمایشگر انتخاب شود و موقعیت ماوس قرار باشد در این فاصله بازگردانده شود، به مرکز نمایشگر منتقل می‌شود. این زمانی مفید است که نمایشگر از طریق حرکت ماوس ترک شده باشد، اما با صفحه‌کلید دوباره انتخاب شود. اگر این فاصله 0 باشد (پیش‌فرض)، ماوس هرگز به مرکز برگردانده نمی‌شود.
•int pseudotile_center_threshold = 10: اگر بزرگتر از 0 باشد، کمترین فاصله بین یک پنجره شبه‌کاشی وسط‌چین‌شده و کادر قاب یا کاشی‌ای که به آن اختصاص داده شده را مشخص می‌کند. اگر این فاصله کمتر از pseudotile_center_threshold باشد، به گوشه بالا سمت چپ کاشی کلاینت تراز می‌شود.
•bool raise_on_click = true: در صورت تنظیم، با کلیک روی یک پنجره، آن پنجره بالا آورده می‌شود (raise). مقدار این تنظیم فقط در حالت شناور لحاظ می‌شود.
•bool raise_on_focus = false: در صورت تنظیم، با فوکوس شدن روی یک پنجره، آن پنجره بالا آورده می‌شود. مقدار این تنظیم فقط در حالت شناور استفاده می‌شود.
•bool raise_on_focus_temporarily = false: در صورت تنظیم، اگر پنجره‌ای روی برچسب خود فوکوس شود، به طور موقت بالا آورده می‌شود. موقتی در این مورد به این معناست که اگر پنجره دیگری فوکوس شود، پنجره به موقعیت چینش قبلی خود در پشته بازخواهد گشت.
•ShowFrameDecorations show_frame_decorations = focused_if_multiple: این تنظیم کنترل می‌کند کدام تزیینات قاب کلاً نمایش داده شوند.
•none هیچ تزیین قابی را اصلاً نشان نمی‌دهد،
•nonempty تزیینات قاب‌هایی را نشان می‌دهد که پنجره کلاینت دارند،
•if_multiple تزیینات را روی برچسب‌هایی با حداقل دو قاب نشان می‌دهد،
•if_empty تزیینات قاب‌هایی را نشان می‌دهد که هیچ پنجره کلاینتی ندارند،
•if_multiple_empty تزیینات قاب‌هایی را نشان می‌دهد که هیچ پنجره کلاینتی روی برچسب‌هایی با حداقل دو قاب ندارند،
•focused تزیینات قاب‌های فوکوس‌شده و غیرخالی را نشان می‌دهد،
•focused_if_multiple تزیینات قاب‌های فوکوس‌شده و غیرخالی را روی برچسب‌هایی با حداقل دو قاب نشان می‌دهد.
•all تمام تزیینات قاب را نشان می‌دهد.
•SmartFrameSurroundings smart_frame_surroundings = off: اگر روی hide_all تنظیم شود، کادرها و شکاف‌های قاب در صورت عدم وجود ابهام در مورد قاب فوکوس‌شده حذف می‌شوند. اگر روی hide_gaps تنظیم شود، فقط شکاف‌های قاب در صورت عدم وجود ابهام در مورد قاب فوکوس‌شده حذف خواهند شد. برای نمایش همیشگی کادرها و شکاف‌های قاب، آن را روی off قرار دهید.
•SmartWindowSurroundings smart_window_surroundings = off: اگر روی one_window (یا on ) تنظیم شود، کادرها و شکاف‌های پنجره در هر قابی که فقط یک پنجره را نمایش می‌دهد، پنهان می‌شوند. اگر روی one_window_and_frame تنظیم شود، تنها قاب‌هایی تحت تأثیر قرار می‌گیرند که تنها قاب روی برچسب خود باشند. با این حال، این تزیینات پنهان‌شده را می‌توان از طریق شیء theme.minimal پیکربندی کرد. برای نمایش همیشگی کادرها و شکاف‌های پنجره، آن را روی off قرار دهید.
•int snap_distance = 10: اگر یک کلاینت در حالت شناور کشیده شود، چنانچه فاصله بین آن و کلاینت‌های همسایه کمتر از snap_distance باشد، به آن‌ها می‌چسبد (snap).
•int snap_gap = 5: فاصله باقی‌مانده را در صورتی که کلاینت کشیده‌شده در حالت شناور به لبه‌ای بچسبد مشخص می‌کند. اگر snap_gap روی 0 تنظیم شود، هیچ فاصله‌ای باقی نخواهد ماند.
•bool swap_monitors_to_get_tag = true: در صورت تنظیم: اگر بخواهید برچسبی را مشاهده کنید که از قبل روی نمایشگر دیگری در حال نمایش است، محتوای نمایشگرها جابه‌جا شده و برچسب مورد نظر را روی نمایشگر فوکوس‌شده مشاهده خواهید کرد. در صورت غیرفعال بودن، اگر نمایشگر دیگر برچسب مورد نظر را نشان دهد، آن نمایشگر فوکوس می‌شود.
•bool tabbed_max = true: در صورت فعال بودن، چند پنجره در یک قاب با الگوریتم چیدمان max به صورت زبانه رسم می‌شوند.
•string tree_style = "*| +`--.": شامل نویسه‌هایی است که برای چاپ یک درخت اسکی زیبا استفاده می‌شوند. باید حداقل شامل ۸ نویسه باشد. به عنوان مثال X|:#+*-. درختی شبیه به این تولید می‌کند:
X-.
  #-. child 0
  | #-* child 00
  | +-* child 01
  +-. child 1
  : #-* child 10
  : +-* child 11

مقادیر مفید برای tree_style عبارتند از: ╾│ ├└╼─┐ یا -| |'--. یا ╾│ ├╰╼─╮.

•bool update_dragged_clients = false: در صورت تنظیم، محتوای پنجره کلاینت در طول تغییر اندازه با ماوس بلافاصله به‌روزرسانی می‌شود. در صورت غیرفعال بودن، محتوای کلاینت پس از رها کردن کلید ماوس تغییر اندازه می‌یابد.
•bool verbose = false: در صورت تنظیم، خروجی با جزئیات در stderr مربوط به herbstluftwm ثبت می‌شود. مقدار پیش‌فرض توسط فلگ خط فرمان --verbose کنترل می‌شود.
•color window_border_active_color: رنگ کادر یک پنجره فوکوس‌شده.

هشدار: این مورد صرفاً به دلایل سازگاری وجود دارد؛ این فقط یک نام مستعار برای صفت theme.active.color است.

•color window_border_inner_color: رنگ کادر داخلی یک پنجره. هشدار: این مورد صرفاً به دلایل سازگاری وجود دارد؛ این فقط یک نام مستعار برای صفت theme.inner_color است.
•int window_border_inner_width: پهنای کادر داخلی یک پنجره. باید کمتر از window_border_width باشد، زیرا به پهنای کادر پنجره اضافه نمی‌شود بلکه بخشی از آن است.

هشدار: این مورد صرفاً به دلایل سازگاری وجود دارد؛ این فقط یک نام مستعار برای صفت theme.inner_width است.

•color window_border_normal_color: رنگ کادر یک پنجره غیرفوکوس‌شده.

هشدار: این مورد صرفاً به دلایل سازگاری وجود دارد؛ این فقط یک نام مستعار برای صفت theme.normal.color است.

•color window_border_urgent_color: رنگ کادر یک پنجره غیرفوکوس‌شده اما اضطراری (urgent).

هشدار: این مورد صرفاً به دلایل سازگاری وجود دارد؛ این فقط یک نام مستعار برای صفت theme.urgent.color است.

•int window_border_width: پهنای کادر یک پنجره.

هشدار: این مورد صرفاً به دلایل سازگاری وجود دارد؛ این فقط یک نام مستعار برای صفت theme.border_width است.

•int window_gap = 0: فاصله (شکاف) بین پنجره‌ها در یک قاب در حالت کاشی‌کاری.
•string wmname = herbstluftwm: مقدار ویژگی _NET_WM_NAME روی پنجره ریشه (root window) را کنترل می‌کند، که نام مدیر پنجره در حال اجرا را مشخص می‌کند. اگر ویژگی واقعی _NET_WM_NAME روی پنجره ریشه از خارج تغییر کند، مقدار این تنظیم به‌روزرسانی نمی‌شود. مثال کاربرد:
•cycle_value wmname herbstluftwm LG3D

برچسب‌ها (یا میزکارهای مجازی یا فضاهای کاری). این بخش شامل یک ورودی index به ازای هر برچسب با index داده‌شده است.

•uint count
•by-name: برای مشخصه‌ها و فرزندان، ببینید: monitors.by-name
•focus: شیء مربوط به برچسب دارای تمرکز، یا به عبارتی دیگر، برچسب روی مانیتور دارای تمرکز.
•bool at_end = false: تمام برچسب‌هایی که این ویژگی روی آن‌ها فعال باشد در انتهای فهرست برچسب‌ها نگه داشته می‌شوند. معمولاً این ویژگی برای برچسب‌های با کاربرد خاص مانند scratchpadها تنظیم می‌شود.
•int client_count: تعداد کلاینت‌های موجود روی این برچسب
•int curframe_wcount: تعداد کلاینت‌های موجود در قاب انتخاب‌شده
•int curframe_windex: نمایه کلاینت دارای تمرکز در قاب انتخاب‌شده
•bool floating = false: مشخص می‌کند آیا کل برچسب روی حالت شناور تنظیم شده است یا خیر
•bool floating_focused = false: مشخص می‌کند آیا لایه شناور دارای تمرکز است یا خیر (در غیر این صورت، لایه کاشی‌کاری دارای تمرکز است)
•int frame_count: تعداد قاب‌های موجود روی این برچسب
•uint index = 0: نمایه این برچسب (اولین نمایه 0 است)
•string name = name_: نام برچسب (نباید خالی باشد)
•int urgent_count: تعداد کلاینت‌های اضطراری روی این برچسب
•bool visible = false: مشخص می‌کند آیا این برچسب روی مانیتوری نمایش داده می‌شود یا خیر
•focused_client: برای مشخصه‌ها و فرزندان، ببینید: clients.focus
•tiling:
•focused_frame: قاب (برگ) دارای تمرکز در این درخت قاب‌ها. برای مشخصه‌ها و فرزندان، ببینید: tags.focus.tiling.root
•root می‌تواند یک برگ قاب (frame leaf) باشد.
•LayoutAlgorithm algorithm
•int client_count
•Rectangle content_geometry: هندسه و ابعاد محتویات قاب، یعنی ناحیه‌ای که توسط قاب‌های فرزند یا پنجره‌های کلاینت پر شده است.
•string index: رشته‌ای فقط شامل 0 و 1 که موقعیت قاب را در درخت توصیف می‌کند. رشته خالی نمایانگر قاب ریشه است. افزودن 0 (یا به ترتیب 1) به نمایه یک قاب، نمایه قاب زیردرخت اول (یا به ترتیب دوم) را به دست می‌دهد.
•int selection
•root می‌تواند یک تقسیم قاب (frame split) باشد.
•Rectangle content_geometry: هندسه و ابعاد محتویات قاب، یعنی ناحیه‌ای که توسط قاب‌های فرزند یا پنجره‌های کلاینت پر شده است.
•decimal fraction
•string index: رشته‌ای فقط شامل 0 و 1 که موقعیت قاب را در درخت توصیف می‌کند. رشته خالی نمایانگر قاب ریشه است. افزودن 0 (یا به ترتیب 1) به نمایه یک قاب، نمایه قاب زیردرخت اول (یا به ترتیب دوم) را به دست می‌دهد.
•int selection
•SplitAlign split_type
•0 می‌تواند یک برگ قاب باشد. برای مشخصه‌ها و فرزندان، ببینید: tags.focus.tiling.root
•0 می‌تواند یک تقسیم قاب باشد. برای مشخصه‌ها و فرزندان، ببینید: tags.focus.tiling.root
•1 می‌تواند یک برگ قاب باشد. برای مشخصه‌ها و فرزندان، ببینید: tags.focus.tiling.root
•1 می‌تواند یک تقسیم قاب باشد. برای مشخصه‌ها و فرزندان، ببینید: tags.focus.tiling.root

inner_color/inner_width
      ╻        outer_color/outer_width
      │                  ╻
      │                  │
┌────╴│╶─────────────────┷─────┐ ⎫ border_width
│     │      color             │ ⎬ + title_height + title_depth
│  ┌──┷─────────────────────┐  │ ⎭ + padding_top
│  │====================....│  │
│  │== window content ==....│  │
│  │====================..╾──────── background_color
│  │........................│  │
│  └────────────────────────┘  │ ⎱ border_width +
└──────────────────────────────┘ ⎰ padding_bottom

تنظیم یک ویژگی از شیء theme، صرفاً مقدار را به ویژگی مربوطه در اشیاء tiling و floating منتقل می‌کند. اگر ناحیه عنوان به زبانه‌ها تقسیم شده باشد، زبانه‌های انتخاب‌نشده را می‌توان با استفاده از ویژگی‌های tab_... استایل‌دهی کرد. اگر این ویژگی‌ها خالی باشند، رنگ‌ها از تم کلاینتی که زبانه به آن ارجاع دارد گرفته می‌شوند.

•color background_color = black: رنگ پشت محتویات پنجره که هنگام تغییر اندازه قابل مشاهده است
•uint border_width = 0: عرض پایه حاشیه
•color color = black: رنگ پس‌زمینه پایه حاشیه
•color inner_color = black: رنگ حاشیه داخلی
•uint inner_width = 0: عرض حاشیه اطراف محتوای کلاینت‌ها
•CssFile::Ptr name: مسیر مطلق به یک فایل تم css. اگر خالی باشد، تم توسط ویژگی‌ها تعیین می‌شود.
•color outer_color = black: رنگ حاشیه خارجی
•uint outer_width = 0: عرض حاشیه‌ای که نزدیک به لبه است
•uint padding_bottom = 0: عرض حاشیه اضافی در پایین
•uint padding_left = 0: عرض حاشیه اضافی در چپ
•uint padding_right = 0: عرض حاشیه اضافی در راست
•uint padding_top = 0: عرض حاشیه اضافی در بالا
•string reset: نوشتن روی این، تمام ویژگی‌ها را به مقدار پیش‌فرض بازنشانی می‌کند
•CssSource style_override: سورس css اضافی برای بازنویسی بخش‌هایی از تم. تمام قوانین اینجا اولویت بالاتری نسبت به تمام قوانین موجود در تم دارند
•MaybeColor tab_color = Inherit: در صورت غیرخالی بودن، رنگ زبانه‌های غیرضروری و غیرفوکوس‌شده
•MaybeColor tab_outer_color = Inherit: در صورت غیرخالی بودن، رنگ حاشیه خارجی زبانه‌های غیرضروری و غیرفوکوس‌شده؛ در صورت خالی بودن، رنگ‌ها از تنظیمات تزئینات کلاینت مربوط به زبانه گرفته می‌شوند.
•MaybeULong tab_outer_width = Inherit: در صورت غیرخالی بودن، عرض حاشیه خارجی زبانه‌های غیرضروری و غیرفوکوس‌شده
•MaybeColor tab_title_color = Inherit: در صورت غیرخالی بودن، رنگ عنوان زبانه‌های غیرضروری و غیرفوکوس‌شده
•bool tight_decoration = false: مشخص می‌کند که آیا راهنماهای اندازه (size hints) بر تزئینات پنجره نیز تأثیر می‌گذارند یا فقط بر محتوای پنجره کلاینت‌های کاشی‌بندی‌شده (نیازمند فعال بودن sizehints_tiling است)
•TextAlign title_align = left: تراز افقی عنوان در داخل زبانه یا نوار عنوان. مقدار یکی از موارد زیر است: left، center، right
•color title_color = black
•MaybeInt title_depth = 0: فضای زیر خط کرسی (baseline) عنوان پنجره، یا '' برای محاسبه خودکار بر اساس فونت.
•font title_font = fixed
•MaybeULong title_height = 0: فضای بالای خط کرسی (baseline) عنوان پنجره، یا '' برای محاسبه خودکار بر اساس فونت.
•TitleWhen title_when = always: زمان نمایش عنوان پنجره: always، never، اگر کلاینت در سناریوی زبانه‌دار مانند فریم max باشد (one_tab)، اگر multiple_tabs برای نمایش وجود داشته باشد.
•active: تزئینات کلاینت دارای فوکوس را پیکربندی می‌کند.
•color background_color = black: رنگ پشت محتویات پنجره که هنگام تغییر اندازه قابل مشاهده است
•uint border_width = 0: عرض پایه حاشیه
•color color = black: رنگ پس‌زمینه پایه حاشیه
•color inner_color = black: رنگ حاشیه داخلی
•uint inner_width = 0: عرض حاشیه اطراف محتوای کلاینت‌ها
•color outer_color = black: رنگ حاشیه خارجی
•uint outer_width = 0: عرض حاشیه‌ای که نزدیک به لبه است
•uint padding_bottom = 0: عرض حاشیه اضافی در پایین
•uint padding_left = 0: عرض حاشیه اضافی در چپ
•uint padding_right = 0: عرض حاشیه اضافی در راست
•uint padding_top = 0: عرض حاشیه اضافی در بالا
•string reset: نوشتن روی این، تمام ویژگی‌ها را به مقدار پیش‌فرض بازنشانی می‌کند
•MaybeColor tab_color = Inherit: در صورت غیرخالی بودن، رنگ زبانه‌های غیرضروری و غیرفوکوس‌شده
•MaybeColor tab_outer_color = Inherit: در صورت غیرخالی بودن، رنگ حاشیه خارجی زبانه‌های غیرضروری و غیرفوکوس‌شده؛ در صورت خالی بودن، رنگ‌ها از تنظیمات تزئینات کلاینت مربوط به زبانه گرفته می‌شوند.
•MaybeULong tab_outer_width = Inherit: در صورت غیرخالی بودن، عرض حاشیه خارجی زبانه‌های غیرضروری و غیرفوکوس‌شده
•MaybeColor tab_title_color = Inherit: در صورت غیرخالی بودن، رنگ عنوان زبانه‌های غیرضروری و غیرفوکوس‌شده
•bool tight_decoration = false: مشخص می‌کند که آیا راهنماهای اندازه (size hints) بر تزئینات پنجره نیز تأثیر می‌گذارند یا فقط بر محتوای پنجره کلاینت‌های کاشی‌بندی‌شده (نیازمند فعال بودن sizehints_tiling است)
•TextAlign title_align = left: تراز افقی عنوان در داخل زبانه یا نوار عنوان. مقدار یکی از موارد زیر است: left، center، right
•color title_color = black
•MaybeInt title_depth = 0: فضای زیر خط کرسی (baseline) عنوان پنجره، یا '' برای محاسبه خودکار بر اساس فونت.
•font title_font = fixed
•MaybeULong title_height = 0: فضای بالای خط کرسی (baseline) عنوان پنجره، یا '' برای محاسبه خودکار بر اساس فونت.
•TitleWhen title_when = always: زمان نمایش عنوان پنجره: always، never، اگر کلاینت در سناریوی زبانه‌دار مانند فریم max باشد (one_tab)، اگر multiple_tabs برای نمایش وجود داشته باشد.
•floating: رفتاری مشابه با tiling دارد.
•color background_color = black: رنگ پشت محتویات پنجره که هنگام تغییر اندازه قابل مشاهده است
•uint border_width = 0: عرض پایه حاشیه
•color color = black: رنگ پس‌زمینه پایه حاشیه
•color inner_color = black: رنگ حاشیه داخلی
•uint inner_width = 0: عرض حاشیه اطراف محتوای کلاینت‌ها
•color outer_color = black: رنگ حاشیه خارجی
•uint outer_width = 0: عرض حاشیه‌ای که نزدیک به لبه است
•uint padding_bottom = 0: عرض حاشیه اضافی در پایین
•uint padding_left = 0: عرض حاشیه اضافی در چپ
•uint padding_right = 0: عرض حاشیه اضافی در راست
•uint padding_top = 0: عرض حاشیه اضافی در بالا
•string reset: نوشتن روی این، تمام ویژگی‌ها را به مقدار پیش‌فرض بازنشانی می‌کند
•MaybeColor tab_color = Inherit: در صورت غیرخالی بودن، رنگ زبانه‌های غیرضروری و غیرفوکوس‌شده
•MaybeColor tab_outer_color = Inherit: در صورت غیرخالی بودن، رنگ حاشیه خارجی زبانه‌های غیرضروری و غیرفوکوس‌شده؛ در صورت خالی بودن، رنگ‌ها از تنظیمات تزئینات کلاینت مربوط به زبانه گرفته می‌شوند.
•MaybeULong tab_outer_width = Inherit: در صورت غیرخالی بودن، عرض حاشیه خارجی زبانه‌های غیرضروری و غیرفوکوس‌شده
•MaybeColor tab_title_color = Inherit: در صورت غیرخالی بودن، رنگ عنوان زبانه‌های غیرضروری و غیرفوکوس‌شده
•bool tight_decoration = false: مشخص می‌کند که آیا راهنماهای اندازه (size hints) بر تزئینات پنجره نیز تأثیر می‌گذارند یا فقط بر محتوای پنجره کلاینت‌های کاشی‌بندی‌شده (نیازمند فعال بودن sizehints_tiling است)
•TextAlign title_align = left: تراز افقی عنوان در داخل زبانه یا نوار عنوان. مقدار یکی از موارد زیر است: left، center، right
•color title_color = black
•MaybeInt title_depth = 0: فضای زیر خط کرسی (baseline) عنوان پنجره، یا '' برای محاسبه خودکار بر اساس فونت.
•font title_font = fixed
•MaybeULong title_height = 0: فضای بالای خط کرسی (baseline) عنوان پنجره، یا '' برای محاسبه خودکار بر اساس فونت.
•TitleWhen title_when = always: زمان نمایش عنوان پنجره: always، never، اگر کلاینت در سناریوی زبانه‌دار مانند فریم max باشد (one_tab)، اگر multiple_tabs برای نمایش وجود داشته باشد.
•active: تزئینات کلاینت دارای فوکوس را پیکربندی می‌کند. برای ویژگی‌ها و فرزندان، به theme.active مراجعه کنید
•normal: طرح تزئینات پیش‌فرض برای کلاینت‌ها. برای ویژگی‌ها و فرزندان، به theme.active مراجعه کنید
•urgent: تزئینات کلاینت‌های ضروری را پیکربندی می‌کند. برای ویژگی‌ها و فرزندان، به theme.active مراجعه کنید
•fullscreen: کلاینت‌ها را در حالت تمام‌صفحه پیکربندی می‌کند. برای ویژگی‌ها و فرزندان، به theme.floating مراجعه کنید
•minimal: کلاینت‌ها را با تزئینات حداقلی ناشی از smart_window_surroundings پیکربندی می‌کند. برای ویژگی‌ها و فرزندان، به theme.floating مراجعه کنید
•normal: طرح تزئینات پیش‌فرض برای کلاینت‌ها. برای ویژگی‌ها و فرزندان، به theme.active مراجعه کنید
•tiling: تزئینات کلاینت‌های کاشی‌بندی‌شده را پیکربندی می‌کند؛ تنظیم یکی از ویژگی‌های آن، ویژگی مربوطه در اشیاء فرزند active، normal و urgent را منتشر می‌کند. برای ویژگی‌ها و فرزندان، به theme.floating مراجعه کنید
•urgent: تزئینات کلاینت‌های ضروری را پیکربندی می‌کند. برای ویژگی‌ها و فرزندان، به theme.active مراجعه کنید

این بخش انواع داده‌ای را که برای ویژگی‌ها و آرگومان‌های دستورات به کار می‌روند، فهرست می‌کند.

•bool: نوع داده‌ای که مقادیر بولی را نشان می‌دهد، یعنی وضعیت on (روشن/فعال) یا off (خاموش/غیرفعال)، به همراه نام‌های مستعار true و false. هنگام مقداردهی به یک مقدار بولی، می‌توان مقدار toggle را نیز به منظور تغییر وضعیت معکوس مقدار آن مشخص کرد.
•string fullname: نام کامل و یکتای این نوع داده
•string shortname: یک نام کوتاه (یک‌کاراکتری) برای این نوع داده که در خروجی دستور attr استفاده می‌شود
•color: نوع داده‌ای که رنگ‌ها را نشان می‌دهد. یک رنگ می‌تواند در یکی از قالب‌های زیر تعریف شود:
1.#RRGGBB که در آن R، G، B ارقام شانزده‌شانزدهی (0-9، A-F) هستند و RR، GG، BB مقادیر مربوط به رنگ‌های قرمز، سبز و آبی را مشخص می‌کنند.
2.#RRGGBBAA یک رنگ را به همراه مقدار آلفا AA نشان می‌دهد. مقدار آلفای 00 کاملاً شفاف و FF کاملاً کدر/ناشفاف است.
3.یک نام رنگ متداول مانند red, blue, orange و غیره. برای ویژگی‌ها و فرزندان، به types.bool مراجعه کنید.
•decimal: اعداد اعشاری با دقت ثابت، مانند 0.34. برای ویژگی‌ها و فرزندان، به types.bool مراجعه کنید.
•font: مشخصات فونت (خانواده فونت به همراه اصلاح‌کننده‌های اندازه، ضخامت و غیره) در یکی از قالب‌های زیر:
•توصیف Fontconfig. این قالب از فونت‌های صاف‌شده (antialiased) پشتیبانی می‌کند، برای مثال:
•Dejavu Sans:pixelsize=12
•Bitstream Vera Sans:size=12:bold
•توصیف منطقی فونت در X یا XLFD (X logical font description)، آن‌گونه که توسط ابزار xfontsel ارائه می‌شود. در این حالت از صاف‌سازی پشتیبانی نمی‌شود، اما این حالت معمولاً برای فونت‌های بیت‌مپ مناسب‌تر است. برای مثال:
•-*-fixed-medium-r-*-*-13-*-*-*-*-*-*-* برای یک فونت بیت‌مپ استاندارد که در بیشتر سیستم‌ها موجود است. برای ویژگی‌ها و فرزندان، به types.bool مراجعه کنید.
•int: نوع داده‌ای که اعداد صحیح علامت‌دار را نشان می‌دهد. هنگام بازنویسی یک عدد صحیح، می‌توانید مقدار آن را با نوشتن +=N یا -=N (که در آن N یک عدد صحیح است) به صورت نسبی افزایش یا کاهش دهید. برای مثال، نوشتن +=3 روی یک ویژگی، مقدار آن را ۳ واحد افزایش می‌دهد. برای ویژگی‌ها و فرزندان، به types.bool مراجعه کنید.
•names: مجموعه‌ای ثابت از نام‌ها، بسته به زمینه کاربرد؛ برای مثال نام‌های الگوریتم‌های چیدمان یا نوع تقسیم‌بندی یک فریم غیربرگ (که فقط horizontal یا vertical است). برای ویژگی‌ها و فرزندان، به types.bool مراجعه کنید.
•rectangle: یک مستطیل روی صفحه نمایش که از یک اندازه و موقعیت مکانی روی صفحه تشکیل شده است. قالب آن WxH+X+Y است که در آن W عرض، H ارتفاع، و X و Y مختصات گوشه بالا و سمت چپ مستطیل هستند: X تعداد پیکسل‌ها تا لبه چپ صفحه و Y تعداد پیکسل‌ها تا لبه بالای صفحه است. (اگر X یا Y منفی باشد، علامت + به - تبدیل می‌شود). برای مثال: 800x600+800+0 یا 400x200-10+30. برای ویژگی‌ها و فرزندان، به types.bool مراجعه کنید.
•regex: یک عبارت منظم گسترش‌یافته بر پایه استاندارد POSIX (POSIX extended regular expression). توجه داشته باشید هنگام انتقال یک عبارت منظم در خط فرمان، ممکن است نقل‌قول‌گذاری اضافی لازم باشد. برای توضیحات و مثال‌ها، به بخش 9.4.6 مستندات مراجعه کنید: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04_06. برای ویژگی‌ها و فرزندان، به types.bool مراجعه کنید.
•string: نوع داده‌ای که متن معمولی را نشان می‌دهد. برای ویژگی‌ها و فرزندان، به types.bool مراجعه کنید.
•uint: نوع داده‌ای که اعداد صحیح بدون علامت (یعنی نامنفی) را نشان می‌دهد. هنگام بازنویسی یک عدد صحیح، می‌توانید مقدار آن را با نوشتن +=N یا -=N (که در آن N یک عدد صحیح است) به صورت نسبی افزایش یا کاهش دهید. برای ویژگی‌ها و فرزندان، به types.bool مراجعه کنید.
•windowid: شناسه پنجره، شماره یک پنجره است. این می‌تواند یک پنجره مدیریت‌شده (یعنی کلاینت) یا یک پنجره مدیریت‌نشده (مانند یک پنل، یک منو یا یک پنجره دسکتاپ) باشد. قالب پیش‌فرض 0xHEX است که در آن HEX یک عدد هگزادسیمال (شانزده‌شانزدهی با ارقام 0-9 و a-f) است، اما می‌توان آن را در سیستم ده‌دهی (مبنای ۱۰) یا به عنوان یک عدد هشت‌هشتی (با پیشوند 0 و در مبنای ۸) نیز مشخص کرد. هنگامی که شناسه یک پنجره چاپ می‌شود، همیشه در قالب 0xHEX و بدون هیچ صفر پیشتازی چاپ می‌گردد. برای ویژگی‌ها و فرزندان، به types.bool مراجعه کنید.

•uint count: تعداد ویژگی‌هایی که زیر نظر هستند

فایل پیکربندی جداگانه‌ای وجود ندارد، بلکه یک فایل اجرای خودکار (autostart) وجود دارد که هنگام بالا آمدن برنامه اجرا می‌شود. این فایل با دستور reload نیز اجرا می‌شود. اگر توسط آرگومان --autostart مشخص نشده باشد، فایل autostart در مسیر $XDG_CONFIG_HOME/herbstluftwm/autostart یا ~/.config/herbstluftwm/autostart قرار دارد. معمولاً این فایل از چند فراخوانی herbstclient تشکیل شده است. اگر اجرای فایل autostart در دایرکتوری خانگی کاربر با شکست مواجه شود، فایل autostart سراسری (که بیشتر در مسیر /etc/xdg/herbstluftwm/autostart قرار دارد) به عنوان جایگزین پشتیبان اجرا می‌شود.

برای نصب و راه‌اندازی سریع، فایل autostart پیش‌فرض را در مسیر ~/.config/herbstluftwm/ کپی کنید.

هنگام رخ دادن رویدادهای خاص، herbstluftwm برخی قلاب‌ها را (همراه با پارامترها) ارسال می‌کند. می‌توانید با استفاده از herbstclient(1) آن‌ها را دریافت کرده یا منتظرشان بمانید. همچنین قلاب‌های سفارشی را می‌توان با دستور emit_hook ارسال کرد. قلاب‌های زیر توسط خود herbstluftwm ارسال می‌شوند:

attribute_changed PATH OLDVALUE NEWVALUE

ویژگی PATH از OLDVALUE به NEWVALUE تغییر یافت. نیازمند این است که ویژگی PATH قبلاً به دستور watch داده شده باشد.

fullscreen [on|off] WINID

وضعیت تمام‌صفحه پنجره WINID به [on|off] تغییر یافت.

tag_changed TAG MONITOR

برچسب TAG روی مانیتور MONITOR انتخاب شد.

focus_changed WINID TITLE

پنجره WINID فوکوس را دریافت کرد. عنوان این پنجره TITLE است.

window_title_changed WINID TITLE

عنوان پنجره دارای فوکوس تغییر یافت. شناسه این پنجره WINID و عنوان جدید آن TITLE است.

tag_flags

پرچم‌ها (یعنی وضعیت اضطراری یا پر بودن برچسب) تغییر کرده‌اند.

tag_added TAG

برچسبی با نام TAG اضافه شد.

tag_removed TAG

برچسب با نام TAG حذف شد.

tag_renamed OLD NEW

نام برچسب از OLD به NEW تغییر یافت.

urgent [on|off] WINID

وضعیت اضطراری کلاینت با شناسه مشخص‌شده WINID به [on|off] تغییر یافته است.

rule NAME WINID

پنجره‌ای با شناسه WINID ظاهر شد که قانونی با پیامد hook=NAME را فعال کرد.

قلاب‌های مفید دیگری نیز وجود دارند که هرگز توسط خود herbstluftwm ارسال نخواهند شد، اما می‌توان آن‌ها را با دستور emit_hook ارسال کرد:

quit_panel

به یک پنل می‌گوید که خارج شود. اسکریپت پیش‌فرض panel.sh با دریافت این قلاب خارج می‌شود. اسکریپت‌های بسیاری از این قلاب استفاده می‌کنند.

reload

به تمام دیمن‌ها اعلام می‌کند که فایل autostart دوباره بارگذاری شده است — و به آن‌ها می‌گوید خارج شوند. این قلاب باید در خط اول هر فایل autostart ارسال شود.

ظاهر تزئینات کلاینت را می‌توان از طریق ویژگی‌های زیر شیء theme.، یا به شیوه‌ای دقیق‌تر از طریق شیوه‌نامه‌ها، با الهام از CSS کنترل کرد.

مستندات بیشتر درباره قالب پوسته به زودی ارائه خواهد شد.

هر برچسب پشته اختصاصی خود را از کلاینت‌هایی که روی آن برچسب هستند دارد. مشابه مشخصات EWMH، پشته هر برچسب شامل چندین لایه است که از بالا به پایین عبارتند از:

•کلاینت دارای فوکوس (اگر raise_on_focus_temporarily فعال باشد)
•کلاینت‌های در حالت تمام‌صفحه
•کلاینت‌های معمولی
•تزئینات فریم

تمام مانیتورها در یک پشته بزرگ مدیریت می‌شوند که فقط شامل پشته‌های برچسب‌های مرئی است که روی یکدیگر قرار گرفته‌اند. ترتیب پشته‌بندی این مانیتورها مستقل از ایندکس آن‌هاست و با استفاده از دستور raise_monitor قابل تغییر است. پشته جاری توسط دستور stack نمایش داده می‌شود.

تا جای ممکن، herbstluftwm تلاش می‌کند تا با استاندارد EWMH سازگار باشد. این شامل موارد زیر است:

•اطلاعات مربوط به نام برچسب‌ها و فهرست‌های کلاینت ارائه می‌شود.
•پنجره‌های دسکتاپ مربوط به محیط‌های رومیزی مدیریت نمی‌شوند و در زیر پنجره‌های دیگر نگه داشته می‌شوند.
•درخواست‌های کلاینت مانند گرفتن فوکوس فقط زمانی پردازش می‌شوند که تنظیم focus_stealing_prevention غیرفعال باشد.

علاوه بر این، herbstluftwm ویژگی‌های X11 با نام‌های HLWM_FLOATING_WINDOW و HLWM_TILING_WINDOW را تنظیم می‌کند تا نشان دهد آیا پنجره در حالت شناور است یا کاشی‌کاری‌شده، یعنی مقدار ویژگی floating_effectively کلاینت.

DISPLAY

متغیر DISPLAY مورد استفاده را مشخص می‌کند.

فایل‌های زیر توسط herbstluftwm استفاده می‌شوند:

•autostart، به بخش AUTOSTART FILE مراجعه کنید.

در صورت موفقیت مقدار 0 را برمی‌گرداند. اگر نتواند راه‌اندازی شود یا اگر wmexec با شکست مواجه شود، مقدار EXIT_FAILURE را برمی‌گرداند.

اشکالات (Issues) گیت‌هاب herbstluftwm را ببینید: https://github.com/herbstluftwm/herbstluftwm/issues

می‌توانید به کانال IRC با نام #herbstluftwm در irc.libera.chat بپیوندید.

herbstluftwm توسط Thorsten Wißmann نوشته شده است. همه مشارکت‌کنندگان در فایل AUTHORS توزیع herbstluftwm فهرست شده‌اند.

صفحه اصلی: http://herbstluftwm.org

صفحه گیت‌هاب: http://github.com/herbstluftwm/herbstluftwm

ارسال وصله‌ها و گزارش اشکالات:

hlwm@lists.herbstluftwm.org

کپی‌رایت 2011-2020 Thorsten Wißmann. کلیه حقوق محفوظ است.

این نرم‌افزار تحت مجوز «Simplified BSD License» منتشر شده است. برای جزئیات بیشتر به LICENSE مراجعه کنید.

2026-04-03   herbstluftwm 0.9.6