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 خود را
به درستی
تنظیم
کردهاند
اختصاص
میدهد.
درخت
اشیاء
مجموعهای
از اشیاء با
ویژگیهایی
شبیه به /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
مراجعه
کنید.
•string: نوع
دادهای که
متن معمولی
را نشان
میدهد.
برای
ویژگیها و
فرزندان،
به types.bool
مراجعه
کنید.
•uint: نوع
دادهای که
اعداد صحیح
بدون علامت
(یعنی
نامنفی) را
نشان
میدهد.
هنگام
بازنویسی
یک عدد
صحیح،
میتوانید
مقدار آن را
با نوشتن +=N
یا -=N (که در
آن N یک عدد
صحیح است) به
صورت نسبی
افزایش یا
کاهش دهید.
برای
ویژگیها و
فرزندان،
به types.bool
مراجعه
کنید.
•windowid:
شناسه
پنجره،
شماره یک
پنجره است.
این
میتواند
یک پنجره
مدیریتشده
(یعنی
کلاینت) یا
یک پنجره
مدیریتنشده
(مانند یک
پنل، یک منو
یا یک پنجره
دسکتاپ)
باشد. قالب
پیشفرض 0xHEX
است که در آن
HEX یک عدد
هگزادسیمال
(شانزدهشانزدهی
با ارقام 0-9 و a-f)
است، اما
میتوان آن
را در سیستم
دهدهی
(مبنای ۱۰) یا
به عنوان یک
عدد
هشتهشتی
(با پیشوند 0 و
در مبنای ۸)
نیز مشخص
کرد. هنگامی
که شناسه یک
پنجره چاپ
میشود،
همیشه در
قالب 0xHEX و
بدون هیچ
صفر
پیشتازی
چاپ
میگردد.
برای
ویژگیها و
فرزندان،
به types.bool
مراجعه
کنید.
•uint count:
تعداد
ویژگیهایی
که زیر نظر
هستند