labwc-config(5) File Formats Manual labwc-config(5)

labwc-config - فایل‌های پیکربندی labwc

ابزار labwc از مشخصات openbox-3.6 برای پیکربندی و شخصی‌سازی پوسته استفاده می‌کند، اما از تمامی گزینه‌ها پشتیبانی نمی‌کند. فایل‌های زیر پایه و اساس پیکربندی labwc را تشکیل می‌دهند: rc.xml، menu.xml، autostart، shutdown، environment و xinitrc.

برای شروع و اجرای labwc به هیچ فایل پیکربندی نیازی نیست.

مطابق با «مشخصات دایرکتوری پایه XDG» (XDG Base Directory Specification)، فایل‌های پیکربندی با ترتیب زیر جستجو می‌شوند:

  • ${XDG_CONFIG_HOME:-$HOME/.config}/labwc
  • ${XDG_CONFIG_DIRS:-/etc/xdg}/labwc

هنگامی که $XDG_CONFIG_HOME تعریف شده باشد، جایگزین $HOME/.config می‌شود (به جای اینکه به آن افزوده شود). همین وضعیت برای $XDG_CONFIG_DIRS و /etc/xdg نیز برقرار است.

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

به‌طور پیش‌فرض، labwc از گزینه (الف) استفاده می‌کند و فقط اولین فایل شناسایی‌شده را می‌خواند. با گزینه --merge-config، ترتیب جستجو معکوس می‌شود، اما هر فایل پیکربندی که با آن مواجه شود به نوبت پردازش می‌گردد. بنابراین، فایل‌های اختصاصی کاربر، پیکربندی‌های سراسری سیستم را تکمیل می‌کنند و در صورت بروز تعارض، اولویت با پیکربندی اختصاصی کاربر خواهد بود.

مکان دایرکتوری پیکربندی را می‌توان با گزینه خط فرمان -C بازنویسی کرد.

تمام فایل‌های پیکربندی و پوسته به جز autostart و shutdown پس از دریافت سیگنال SIGHUP مجدداً بارگذاری می‌شوند.

متغیرهای محیطی را می‌توان در فایل‌های environment تنظیم کرد، که در آن‌ها هر خط متغیرهای پوسته را در قالب variable=value تعریف می‌کند. توصیه می‌شود تنظیمات چیدمان صفحه‌کلید و اندازه/پوسته مکان‌نما را در اینجا مشخص کنید؛ برای جزئیات به بخش متغیرهای محیطی در زیر مراجعه کنید. در یک «دایرکتوری پایه XDG»، ابتدا فایلی با نام «environment» تجزیه می‌شود و سپس هر فایلی که با الگوی تطبیق "environment.d/*.env" مطابقت داشته باشد پردازش خواهد شد. فایل‌های درون دایرکتوری environment.d به ترتیب حروف الفبا تجزیه می‌شوند. مگر اینکه گزینه --merge-config مشخص شده باشد، اگر دایرکتوری شامل فایل "environment" یا حداقل یک فایل "environment.d/*.env" باشد، labwc فرض می‌کند آن دایرکتوری پایه XDG یک فایل محیطی ارائه داده است.

نکته: فایل‌های محیطی در Openbox رفتار متفاوتی دارند، چرا که Openbox فایل را به سادگی به عنوان یک اسکریپت پوسته معتبر قبل از اجرای مدیر پنجره source می‌کند. این فایل‌ها در عوض مستقیماً توسط labwc تجزیه می‌شوند تا متغیرهای محیطی بتوانند در هنگام --reconfigure دوباره بارگذاری شوند.

هر متغیر محیطی که به صورت $VARIABLE یا ${VARIABLE} ارجاع داده شود جایگزین خواهد شد و علامت مدک (~) به عنوان دایرکتوری خانگی کاربر گسترش می‌یابد.

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

لطفاً توجه داشته باشید از آنجا که labwc فایل(های) محیطی را هنگام پیکربندی مجدد بازخوانی می‌کند، نباید از انتساب‌های بازگشتی/حلقه‌ای (مانند FOO=$FOO:bar) استفاده شود.

فایل autostart به عنوان یک اسکریپت پوسته پس از اینکه labwc پیکربندی خود را خواند و متغیرهای تعریف‌شده در فایل محیطی را تنظیم کرد، اجرا می‌شود. علاوه بر این، متغیرهای محیطی WAYLAND_DISPLAY و (در صورتی که labwc با پشتیبانی از Xwayland ساخته شده باشد) DISPLAY تعریف خواهند شد. اینجا مکانی است برای اجرای برنامه‌های کلاینت مربوط به مدیریت تصویر پس‌زمینه، پنل‌ها و سایر وظایفی که باید به طور خودکار هنگام راه‌اندازی labwc اجرا شوند.

فایل shutdown هنگامی که labwc آماده خاتمه دادن به کار خود است، به عنوان یک اسکریپت پوسته اجرا می‌شود. تمامی متغیرهای محیطی، از جمله WAYLAND_DISPLAY و DISPLAY، در دسترس اسکریپت خواهند بود. با این حال، از آنجا که این اسکریپت به صورت ناهمگام با سایر وظایف پایان کار اجرا می‌شود، نباید فرض کرد که نمایشگر همچنان قابل استفاده خواهد بود. این فایل برای انجام هرگونه عملیات سفارشی لازم جهت نهایی‌سازی نشست labwc مفید است.

فایل menu.xml منوهای زمینه‌ای/ریشه را تعریف می‌کند و در labwc-menu(5) توضیح داده شده است.

یک بخش کوچک <theme> در rc.xml وجود دارد، برای مثال برای تنظیم گوشه‌های گرد، اما بقیه مشخصات پوسته و فایل‌های مرتبط در labwc-theme(5) توضیح داده شده‌اند.

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

فایل xinitrc هر زمان که labwc کارساز X11 مربوط به Xwayland را راه‌اندازی کند، به عنوان یک اسکریپت پوسته اجرا می‌شود. اگر Xwayland طوری پیکربندی نشده باشد که در زمان عدم اتصال کلاینت‌های X11 همچنان فعال بماند، این امر ممکن است چندین بار در طول نشست رخ دهد.

این بخش گزینه‌های پیکربندی rc.xml را شرح می‌دهد.

پیکربندی باید مانند نمونه زیر درون یک عنصر ریشه <labwc_config> قرار گیرد:

<?xml version="1.0"?>
<labwc_config>
<!-- settings -->
</labwc_config>

ابزار labwc فایل XML را بدون وابستگی به تفاوت میان عنصر یا مشخصه (attribute/element agnostic) تجزیه می‌کند. این یک تصمیم طراحی برای افزایش انعطاف‌پذیری فایل پیکربندی و ساده نگه داشتن کد است. در عمل، این بدان معناست که `<a><b>c</b></a>` معمولاً معادل `<a b="c" />` است. با این حال، چند نکته وجود دارد:

1. در menu.xml، مشخصه‌های id، label و execute باید به جای عناصر فرزند مجزا، حتماً به صورت مشخصه (attribute) بیان شوند.

2. ترتیب مشخصه‌ها گاهی اوقات می‌تواند تعیین‌کننده باشد. برای مثال، هنگام تنظیم قلم‌ها از طریق مشخصه‌ها به جای فرزندان،

<font place="ActiveWindow" name="..." size="..." />

قلم را برای عنوان پنجره‌های فعال تنظیم می‌کند، در حالی که

<font name="..." size="..." place="ActiveWindow" />

قلم را به گونه‌ای تنظیم می‌کند که گویی place مشخص نشده است، زیرا name و size قبل از place پردازش می‌شوند.

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

بنابراین سه مورد زیر یکسان در نظر گرفته می‌شوند:

<action>
  <name>Execute</name>
  <command>foot</command>
</action>
<action name="Execute">
  <command>foot</command>
</action>
<action name="Execute" command="foot" />

مزیت مورد آخر کوتاهی آن است، در حالی که مزیت دو مورد اول این است که می‌توانید نویسه‌های ' و " را در بلوک `<command>` اضافه کنید، برای مثال:

<command>sh -c 'grim -g "`slurp`"'</command>

عناصر در یک سطح می‌توانند نام یکسانی داشته باشند، در حالی که مشخصه‌ها نمی‌توانند. بنابراین، در جاهایی که چندین شیء از یک نوع مورد نیاز است (برای مثال <action> و <keybind>)، گره بالایی شیء باید یک عنصر (element) باشد.

توجه داشته باشید که در این راهنما، برای سادگی مقادیر بولی به صورت [yes|no] فهرست شده‌اند، اما استفاده از [true|false] و/یا [on|off] نیز امکان‌پذیر است؛ این موضوع برای سازگاری با Openbox لحاظ شده است.

<core>
  <decoration>server</decoration>
  <gap>0</gap>
  <adaptiveSync>no</adaptiveSync>
  <allowTearing>no</allowTearing>
  <autoEnableOutputs>yes</autoEnableOutputs>
  <hdr>no</hdr>
  <reuseOutputMode>no</reuseOutputMode>
  <xwaylandPersistence>no</xwaylandPersistence>
  <primarySelection>yes</primarySelection>
  <promptCommand>[see details below]</promptCommand>
  <errorCommand>[see details below]</errorCommand>
</core>

<core><decoration> [server|client]

تزیینات سمت سرور (server side) یا سمت کلاینت (client side) را برای پنجره‌های xdg-shell مشخص می‌کند. توجه داشته باشید که همیشه امکان غیرفعال کردن تزیینات سمت کلاینت وجود ندارد. پیش‌فرض server است.

<core><gap>

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

<core><adaptiveSync> [yes|no|fullscreen]

همگام‌سازی تطبیقی (adaptive sync) را فعال می‌کند. پیش‌فرض no است.

مقدار fullscreen همگام‌سازی تطبیقی را هر زمان که پنجره در حالت تمام‌صفحه باشد فعال می‌سازد.

<core><allowTearing> [yes|no|fullscreen|fullscreenForced]

اجازه پارگی تصویر (tearing) را برای کاهش تأخیر ورودی می‌دهد. پیش‌فرض no است.

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

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

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

از اکشن ToggleTearing برای فعال‌سازی اجباری پارگی تصویر استفاده کنید.

نکته: فعال کردن این گزینه با تنظیم حالت اتمیک (atomic mode setting) آزمایشی است. اگر هنگام مجاز بودن پارگی تصویر با اثرات جانبی نامطلوب روبرو شدید، متغیر محیطی WLR_DRM_NO_ATOMIC=1 را هنگام اجرای labwc تنظیم کنید.

<core><autoEnableOutputs> [yes|no]

خروجی‌ها را هنگام راه‌اندازی و هنگام اتصال خروجی‌های جدید به طور خودکار فعال می‌کند. این گزینه فقط برای خروجی‌های drm اعمال می‌شود. پیش‌فرض yes است.

هشدار: غیرفعال کردن این گزینه نشست labwc را غیرقابل استفاده می‌کند مگر اینکه از ابزاری خارجی مانند `wlr-randr` یا `kanshi` برای مدیریت خروجی‌ها استفاده شود.

دلیل وجود این گزینه این است که برخی مانیتورها پس از قطع سیگنال از کامپیوتر (مثلاً با `wlopm -off`)، عمل تشخیص ورودی را انجام می‌دهند که باعث می‌شود (از دید کامپیوتر) چند ثانیه بعد مانیتور قطع و مجدداً وصل به نظر برسد؛ این امر موجب روشن شدن دوباره مانیتور می‌شود (چون labwc خروجی‌های تازه‌متصل‌شده را به‌طور پیش‌فرض خودکار فعال می‌کند).

یک الگوی استفاده نمونه برای جلوگیری از رفتار فوق به صورت زیر است:

  • تنظیم <core><autoEnableOutputs> روی no
  • اجرای kanshi (مثلاً از autostart) و تکیه بر آن برای فعال‌سازی خروجی‌های جدید
  • تنظیم swayidle برای متوقف کردن و راه‌اندازی مجدد kanshi هنگام ورود به حالت صرفه‌جویی در مصرف انرژی به صورت زیر:
swayidle -w timeout 600     'pkill kanshi ; wlopm --off *' resume 'kanshi & wlopm --on *'

<core><hdr> [yes|no]

پشتیبانی از HDR را در خروجی‌ها هنگام پیکربندی آن‌ها در صورت پشتیبانی توسط دستگاه خروجی و نمایشگر خاص، به طور خودکار فعال می‌کند. پیش‌فرض no است. همچنین نیازمند بک‌اند Vulkan است. می‌توان آن را از طریق `WLR_RENDERER=vulkan` در `~/.config/labwc/environment` تنظیم کرد.

<core><reuseOutputMode> [yes|no]

تلاش می‌کند از حالت خروجی موجود (وضوح تصویر / نرخ نوسازی) دوباره استفاده کند. این کار ممکن است از تأخیرهای غیرضروری سیاه شدن صفحه هنگام شروع labwc جلوگیری کند (که به عنوان بوت بدون سوسو یا flicker free boot نیز شناخته می‌شود). اگر حالت خروجی موجود نتواند با labwc استفاده شود، حالت ترجیحی مانیتور به جای آن استفاده می‌شود. پیش‌فرض no است.

<core><xwaylandPersistence> [yes|no]

کارساز XWayland را حتی زمانی که هیچ کلاینتی متصل نیست زنده نگه می‌دارد، به جای اینکه از یک سیاست تنبل (lazy) استفاده کند که به کارساز اجازه می‌دهد بر حسب تقاضا اجرا شود و وقتی دیگر نیازی به آن نیست پایان یابد. پیش‌فرض no است.

نکته: تغییر این تنظیم نیازمند راه‌اندازی مجدد labwc است.

<core><primarySelection> [yes|no]

کلیپ‌بورد انتخاب اولیه (primary selection) را فعال یا غیرفعال می‌کند. فقط در زمان راه‌اندازی قابل پیکربندی است. این گزینه پیمایش خودکار (کلیک میانی برای پیمایش به بالا/پایین) را در کلاینت‌های مبتنی بر Chromium و electron بدون جای‌گذاری ناخواسته کلیپ‌بورد اولیه ممکن می‌سازد. پیش‌فرض yes است.

<core><promptCommand>

دستوری را مشخص می‌کند که برای اعلانات تأیید یک اکشن (<action><prompt>) فراخوانی می‌شود.

مشخص‌کننده‌های تبدیل زیر پشتیبانی می‌شوند:

  • %m: گزینه پیام <prompt>
  • %n: «خیر» (در صورت وجود ترجمه به زبان محلی)
  • %y: «بله» (در صورت وجود ترجمه به زبان محلی)
  • %b: osd.bg.color
  • %t: osd.label.text.color

دستور اعلان پیش‌فرض عبارت است از:

labnag 	--message '%m' 	--button-dismiss '%n' 	--button-dismiss '%y' 	--background-color '%b' 	--text-color '%t' 	--button-border-color '%t' 	--border-bottom-color '%t' 	--button-background-color '%b' 	--button-text-color '%t' 	--border-bottom-size 1 	--button-border-size 3 	--keyboard-focus on-demand 	--layer overlay 	--timeout 0

مثال ۱: اعلان را می‌توان طوری پیکربندی کرد که از یک کلاینت دیالوگ متفاوت استفاده کند:

<core>
  <promptCommand>zenity --question --text="%m"</promptCommand>
</core>

مثال ۲: می‌توان از یک دستور پیچیده‌تر zenity استفاده کرد:

zenity 	--question 	--title="" 	--text="%m" 	--ok-label="%y" 	--cancel-label="%n"

<core><errorCommand>

دستوری را مشخص می‌کند که برای نمایش خطاهای فایل‌های پیکربندی فراخوانی می‌شود؛ این دستور زمانی اجرا می‌شود که هنگام راه‌اندازی یا پیکربندی مجدد خطایی شناسایی شود. خطاها به ورودی استاندارد (STDIN) برنامه ارسال می‌شوند، و اگر فرایند در زمان فعال شدن پیکربندی مجدد همچنان در حال اجرا باشد، سیگنال SIGTERM به آن ارسال خواهد شد.

دستور خطای پیش‌فرض عبارت است از:

labnag 	--message 'Config errors detected' 	--button-dismiss 'Close' 	--layer overlay 	--timeout 0 	--detailed-message

مثال با استفاده از `zenity`:

<core>
  <errorCommand>zenity --title='Config Error' --text-info</errorCommand>
</core>

<placement>
  <policy>cascade</policy>
  <cascadeOffset x="40" y="30" />
</placement>

<placement><policy> [center|automatic|cursor|cascade]

سیاست جای‌گذاری پنجره‌های جدید را تعیین می‌کند. سیاست "center" همیشه پنجره‌ها را در مرکز خروجی فعال قرار می‌دهد. سیاست "automatic" تلاش می‌کند پنجره‌های جدید را به گونه‌ای قرار دهد که کمترین هم‌پوشانی را با پنجره‌های موجود داشته باشند. سیاست "cursor" پنجره‌های جدید را زیر نشانگر متمرکز می‌کند. سیاست "cascade" تلاش می‌کند پنجره‌های جدید را در مرکز خروجی فعال قرار دهد، اما احتمالاً موقعیت آن را به سمت پایین-راست تغییر می‌دهد تا پنجره‌های موجود را نپوشاند. پیش‌فرض "cascade" است.

<placement><cascadeOffset><x>
<placement><cascadeOffset><y>

میزان فاصله‌ای (offset) را تعیین می‌کند که پنجره جدید می‌تواند نسبت به پنجره موجود در صورت تنظیم <placement><policy> روی "cascade" جابه‌جا شود. این مقادیر باید مثبت باشند. پیش‌فرض ارتفاع نوار عنوان (مجموع titlebar.height و border.width از پوسته) به علاوه ۵ برای هر دو مقدار x و y است.

<windowSwitcher preview="yes" outlines="yes">
  <osd show="yes" style="classic" output="all" thumbnailLabelFormat="%T" />
  <fields>
    <field content="icon" width="5%" />
    <field content="desktop_entry_name" width="30%" />
    <field content="title" width="65%" />
  </fields>
</windowSwitcher>

<windowSwitcher preview="" outlines="" unshade="" order="">

preview [yes|no] پیش‌نمایش محتوای پنجره انتخاب‌شده هنگام جابه‌جایی میان پنجره‌ها. پیش‌فرض yes است.

outlines [yes|no] رسم یک کادر دور پنجره انتخاب‌شده هنگام جابه‌جایی میان پنجره‌ها. پیش‌فرض yes است.

unshade [yes|no] خارج کردن موقت پنجره‌ها از حالت سایه‌خورده (unshade) هنگام سوییچ میان آن‌ها و خارج کردن دائمی با انتخاب نهایی. پیش‌فرض yes است.

order [focus|age] ترتیبی که پنجره‌ها در آن پیمایش می‌شوند. مقدار focus بر اساس تاریخچه تمرکز اخیر پیمایش می‌کند، با شروع از پنجره‌ای که پیش‌تر روی آن تمرکز بوده است. مقدار age بر اساس ترتیب ایجاد/باز شدن پیمایش می‌کند، که یک ترتیب پایدار به سبک نوار وظیفه است و با تمرکز تغییر نمی‌کند. پیش‌فرض focus است.

<windowSwitcher><osd show="" style="" output="" thumbnailLabelFormat="" />

show [yes|no] نمایش پیام روی صفحه (OnScreenDisplay یا OSD) هنگام سوییچ میان پنجره‌ها. پیش‌فرض yes است.

style [classic|thumbnail] سبک OSD را پیکربندی می‌کند. مقدار "classic" اطلاعات پنجره مانند آیکون‌ها و عناوین را در یک فهرست عمودی نمایش می‌دهد. مقدار "thumbnail" تصویر بندانگشتی، آیکون و عنوان پنجره را در یک شبکه نمایش می‌دهد.

output [all|focused|cursor] نمایشگری را که OSD روی آن نشان داده می‌شود تنظیم می‌کند. مقدار "all" پیام OSD را روی همه مانیتورها نمایش می‌دهد. مقدار "focused" پیام OSD را روی مانیتوری که تمرکز صفحه‌کلید روی آن است نشان می‌دهد. مقدار "cursor" پیام OSD را روی مانیتوری که نشانگر ماوس در آن قرار دارد نمایش می‌دهد. پیش‌فرض "all" است.

thumbnailLabelFormat قالبی که طبق فیلد custom زیر برای برچسب تصویر بندانگشتی استفاده می‌شود، و فقط هنگام استفاده از <osd style="thumbnail" /> اعمال می‌گردد. پیش‌فرض "%T" است.

<windowSwitcher><fields><field content="" width="%">

فیلدهای تعویض‌کننده پنجره را هنگام استفاده از <osd style="classic" /> تعریف می‌کند.

مشخصه content تعیین می‌کند که فیلد چه چیزی را نشان دهد و می‌تواند هر یک از موارد زیر باشد:

•
type نمایش نوع پنجره ("xdg-shell" یا "xwayland")
•
identifier نمایش شناسه (app_id برای پنجره‌های بومی Wayland و WM_CLASS برای کلاینت‌های XWayland)
•
trimmed_identifier نمایش شناسه پیراسته‌شده. پیراستن، دو بخش ابتدایی رشته‌های 'org.' را حذف می‌کند.
•
icon نمایش آیکون برنامه
•
desktop_entry_name نمایش نام برنامه از مدخل دسکتاپ freedesktop.org. در صورت عدم دسترسی، به شناسه پیراسته‌شده (trimmed_identifier) بازمی‌گردد.
•
title نمایش عنوان پنجره
•
workspace نمایش نام فضای کاری
•
state نمایش وضعیت پنجره، M/m/F (بزرگ‌شده/کوچک‌شده/تمام‌صفحه)
•
type_short نمایش نوع پنجره به شکل کوتاه ("W" یا "X")
•
output نمایش شناسه خروجی
•
custom یک پیکربندی به سبک printf که می‌تواند جایگزین تمام فیلدهای فوق شود، شامل موارد زیر است:
  • 'B' - نوع شل، مقادیر [xwayland|xdg-shell]
  • 'b' - نوع شل (حالت کوتاه)، مقادیر [X|W]
  • 'S' - وضعیت پنجره، مقادیر [m|s|M|F] (۴ فاصله اختصاص داده شده)
    (کوچک‌شده، سایه‌خورده، بزرگ‌شده، تمام‌صفحه)
  • 's' - وضعیت پنجره (حالت کوتاه)، مقادیر [m|s|M|F] (۱ فاصله)
  • 'I' - مقدار wm-class/app-id
  • 'i' - مقدار wm-class/app-id پیراسته‌شده، حذف "org." در صورت موجود بودن
  • 'n' - نام برنامه در فایل دسکتاپ، با بازگشت به wm-class/app-id پیراسته‌شده
  • 'W' - نام فضای کاری
  • 'w' - نام فضای کاری (اگر بیش از ۱ فضای کاری پیکربندی شده باشد)
  • 'O' - نام خروجی
  • 'o' - نام خروجی (در صورت فعال بودن بیش از ۱ مانیتور نمایش داده می‌شود)
  • 'T' - عنوان پنجره
  • 't' - عنوان پنجره (در صورتی که با wm-class/app-id متفاوت باشد)
توصیه می‌شود برای حفظ تراز ستون‌ها از یک قلم تک‌فاصله (monospace) استفاده شود.
•
custom - زیرمجموعه‌ای از گزینه‌های مجاز printf -- رجوع به man 3 printf
  • امکان درج متن دلخواه وجود دارد
  • طول فیلد، برای مثال "%10" از ۱۰ فاصله استفاده می‌کند، حتی اگر طول متن کمتر باشد
  • چپ‌چین کردن متن، مثال "%-"
  • راست‌چین کردن متن، مثال "%" به جای "%-"
  • برای مثال، %-10 متن را چپ‌چین کرده و فضایی به اندازه ۱۰ نویسه ایجاد می‌کند
•
در حال حاضر تنها یک قالب سفارشی مجاز است. بهبودهای آینده ممکن است امکان استفاده از بیش از یک مورد را فراهم کند.

مشخصه width عرض فیلد را به صورت درصدی از عرض کل تعویض‌کننده پنجره تعیین می‌کند. نویسه "%" الزامی است.

<resistance><screenEdgeStrength>
<resistance><windowEdgeStrength>

به ترتیب در برابر جابه‌جایی و تغییر اندازه تعاملی یک پنجره در لبه‌های صفحه نمایش یا لبه‌های هر پنجره دیگر مقاومت ایجاد می‌کند.

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

هنگامی که مقاومت منفی باشد، هرگونه جابه‌جایی یا تغییر اندازه تعاملی که نشانگر را به قدر مطلق فاصله مشخص‌شده (بر حسب پیکسل) از هر لبه مربوطه برساند، عملیات را به آن لبه می‌چسباند (snap). بنابراین، با نزدیک شدن جابه‌جایی یا تغییر اندازه به یک لبه، در محدوده فاصله مشخص‌شده نشانگر را به آن لبه «جذب» می‌کند. با ادامه جابه‌جایی یا تغییر اندازه به آن سوی لبه، تا زمانی که نشانگر فراتر از فاصله حرکت نکرده باشد مقاومت ایجاد خواهد کرد.

مقدار صفر مقاومت، اثر مقاومت متناظر را غیرفعال می‌سازد.

مقدار پیش‌فرض برای هر دو پارامتر ۲۰ پیکسل است.

<resistance><unSnapThreshold>

میزان حرکت نشانگر بر حسب پیکسل را تعیین می‌کند که برای حرکت دادن یک پنجره کاشی‌کاری‌شده یا بزرگ‌شده با یک جابه‌جایی تعاملی لازم است. پیش‌فرض 20 است.

<resistance><unMaximizeThreshold>

میزان حرکت یک‌بعدی نشانگر بر حسب پیکسل را تعیین می‌کند که برای حرکت دادن یک پنجره بزرگ‌شده به صورت عمودی یا افقی با یک جابه‌جایی تعاملی لازم است. پیش‌فرض 150 است.

<focus><followMouse> [yes|no]

تنظیم می‌کند که تمرکز به دنبال ماوس حرکت کند؛ یعنی تمرکز به پنجره زیر نشانگر ماوس داده شود. پیش‌فرض no است.

<focus><followMouseRequiresMovement> [yes|no]

در صورت فعال بودن followMouse، نیازمند حرکت نشانگر است. این تنظیم مشابه تنظیم "underMouse" در Openbox است. اگر روی "no" تنظیم شود، labwc در تمامی شرایطی که موقعیت پنجره تغییر می‌کند (مانند تغییر فضاهای کاری، باز/بسته کردن پنجره‌ها) پنجره زیر نشانگر را نیز در کانون تمرکز قرار می‌دهد. تمرکز روی پنجره‌ای دیگر از طریق A-Tab حتی با تنظیم این گزینه روی "no" همچنان امکان‌پذیر است. پیش‌فرض yes است.

<focus><raiseOnFocus> [yes|no]

هنگام تمرکز روی پنجره، آن را به بالاترین لایه می‌آورد. پیش‌فرض no است.

<focus><raiseOnFocusDelay> [میلی‌ثانیه]

هنگامی که raiseOnFocus فعال است، بالا آمدن واقعی پنجره را به این تعداد میلی‌ثانیه به تأخیر می‌اندازد. پیش‌فرض 0 است (بالا آمدن فوری). هرگونه تغییر تمرکز بعدی قبل از اتمام زمان‌سنج، فرایند بالا آمدن در انتظار را مجدداً راه‌اندازی یا لغو می‌کند. این ویژگی همراه با followMouse برای جلوگیری از عبورهای سریع نشانگر که باعث تغییر لایه‌بندی z-order می‌شوند بسیار مفید است.

پنجره‌ها را می‌توان با فعال‌سازی از طریق اکشن‌های SnapToEdge یا به‌صورت اختیاری با کشیدن پنجره‌ها به لبه‌های خروجی، به یک لبه یا ناحیه تعریف‌شده توسط کاربر از خروجی چسباند («snap» کرد). چسبیدن به لبه باعث می‌شود پنجره نیمی از خروجی خود را اشغال کرده و از لبه چسبیده‌شده به سمت بیرون گسترش یابد.

<snapping><range><inner>
<snapping><range><outer>
<snapping><cornerRange>

اگر یک جابه‌جایی تعاملی در فاصله‌ای به اندازه پیکسل‌های inner یا outer از لبه خروجی به پایان برسد، پنجره به لبه می‌چسبد. لبه‌های inner لبه‌هایی با یک خروجی مجاور هستند و لبه‌های outer لبه‌های بدون خروجی مجاور می‌باشند. اگر نشانگر در فاصله <cornerRange> پیکسل از گوشه خروجی نیز باشد، پنجره به جای لبه به گوشه می‌چسبد. اگر inner و outer صفر باشند، چسباندن غیرفعال می‌شود. مقدار پیش‌فرض برای <range><inner> و <range><outer> برابر با 10 و برای <cornerRange> برابر با 50 است.

<snapping><overlay><enabled> [yes|no]

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

<snapping><overlay><delay><inner>
<snapping><overlay><delay><outer>

میزان تأخیر برای نمایش لایه پوششی هنگام چسباندن پنجره به هر نوع لبه را تنظیم می‌کند. مقادیر پیش‌فرض 500 میلی‌ثانیه هستند. لبه‌های inner لبه‌هایی با خروجی مجاور و لبه‌های outer لبه‌های بدون خروجی مجاور هستند.

<snapping><topMaximize> [yes|no]

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

<snapping><notifyClient> [always|region|edge|never]

چسباندن پنجره‌ها می‌تواند رویدادهای کاشی‌کاری (tiling) متناظر را برای کلاینت‌های بومی Wayland صادر کند. کلاینت‌ها ممکن است از این رویدادها استفاده کنند تا رندرینگ خود را بر اساس این آگاهی که برخی لبه‌های پنجره به لبه‌های یک ناحیه چسبنده یا خروجی محدود شده‌اند تغییر دهند. برای مثال، گوشه‌های گرد ممکن است هنگام کاشی‌کاری مربعی شوند، یا پخش‌کننده‌های چندرسانه‌ای ممکن است ویدیو را به صورت letter-box یا pillar-box نمایش دهند به جای اینکه نسبت‌های ابعاد صلب را بر پنجره‌هایی تحمیل کنند که محدودیت‌های چسباندن پنجره را نقض می‌نمایند.
•
هنگامی که always مشخص شود، هر پنجره‌ای که به لبه خروجی یا یک ناحیه تعریف‌شده توسط کاربر چسبانده شود رویداد کاشی‌کاری را دریافت می‌کند.
•
هنگامی که region مشخص شود، فقط پنجره‌هایی که به یک ناحیه تعریف‌شده توسط کاربر چسبانده شده‌اند رویداد را دریافت می‌کنند.
•
هنگامی که edge مشخص شود، فقط پنجره‌هایی که به لبه خروجی چسبانده شده‌اند رویداد را دریافت خواهند کرد.
•
هنگامی که never مشخص شود، رویدادهای کاشی‌کاری هرگز ایجاد نخواهند شد.

پیش‌فرض "always" است.

<regions><region name="snap-1" x="10%" y="10%" width="80%" height="80%">

ناحیه‌های چسباندن را تعریف می‌کند. ناحیه‌ها بر اساس فضای قابل استفاده هر خروجی محاسبه می‌شوند. فضای قابل استفاده در این زمینه به معنای فضایی است که منحصراً توسط کلاینت‌های layershell مانند پنل‌ها استفاده نشده باشد. نویسه "%" الزامی است. پنجره‌ها را می‌توان با نگه داشتن یک کلید تبدیل صفحه‌کلید هنگام حرکت دادن پنجره (Ctrl، Alt، Shift، Logo) یا با استفاده از اکشن SnapToRegion به ناحیه‌ها چسباند. به‌طور پیش‌فرض هیچ ناحیه‌ای تعریف نشده است.

<desktops number=""><names><name>

فضاهای کاری را تعریف می‌کند. یک فضای کاری تمام خروجی‌ها را پوشش می‌دهد. فضاهای کاری را می‌توان با GoToDesktop تغییر داد و پنجره‌ها را می‌توان با SendToDesktop منتقل کرد. برای اطلاعات بیشتر درباره آرگومان‌های آن‌ها به labwc-actions(5) مراجعه کنید.

مشخصه number حداقل تعداد فضاهای کاری را تعریف می‌کند. پیش‌فرض 1 است. مشخصه number اختیاری است. در صورت مشخص شدن مشخصه number، بخش names.name الزامی نیست.

<desktops><initial>

فضای کاری شروع اولیه را تعریف می‌کند. این مقدار باید با یکی از نام‌های تعریف‌شده در <names> مطابقت داشته باشد یا اندیسی برابر یا کمتر از <number> باشد. در صورت عدم تنظیم، اولین فضای کاری استفاده می‌شود.

<desktops><popupTime>

مدت زمان پنهان شدن OSD فضای کاری را تعیین می‌کند. تنظیم روی 0 نمایش OSD را غیرفعال می‌کند. پیش‌فرض 1000 میلی‌ثانیه است.

<desktops><prefix>

پیشوندی را که هنگام استفاده از "number" فوق به کار می‌رود تنظیم می‌کند. پیش‌فرض "Workspace" است.

<theme><name>

نام پوسته Openbox برای استفاده. به‌طور پیش‌فرض تنظیم نشده است.

<theme><icon>

نام پوسته آیکون برای استفاده. در صورت عدم تنظیم، از <theme><name> ارث‌بری می‌کند.

<theme><fallbackAppIcon>

نام آیکونی که در صورت عدم دسترسی به آیکون برنامه (مثلاً آیکون پنجره در نوار عنوان) به عنوان جایگزین (fallback) استفاده می‌شود. نام از موارد مشخص‌شده در مدخل‌های "=Icon" در فایل‌های دسکتاپ پیروی می‌کند. پیش‌فرض 'labwc' است.

<theme><titlebar><layout>

انتخاب و ترتیب دکمه‌ها در نوار عنوان پنجره. از شناسه‌های زیر می‌توان استفاده کرد، هر کدام فقط یک بار:
  • 'icon': آیکون پنجره
  • 'menu': منوی پنجره
  • 'iconify': کوچک کردن پنجره (minimize)
  • 'max': تغییر وضعیت بزرگ‌نمایی (maximize toggle)
  • 'close': بستن
  • 'shade': تغییر وضعیت سایه (shade toggle)
  • 'desk': تغییر وضعیت حضور در همه دسکتاپ‌ها (all-desktops toggle)

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

پیش‌فرض: icon:iconify,max,close

<theme><titlebar><showTitle> [yes|no]

نمایش عنوان پنجره در نوار عنوان. پیش‌فرض yes است.

<theme><cornerRadius>

شعاع گوشه‌های بالایی تزیینات سمت سرور. پیش‌فرض 8 است.

<theme><keepBorder> [yes|no]

حتی هنگام غیرفعال کردن تزیینات سمت سرور از طریق ToggleDecorations، یک حاشیه کوچک (و ناحیه تغییر اندازه) دور پنجره نگه داشته شود. پیش‌فرض yes است.

<theme><maximizedDecoration> [titlebar|none]

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

<theme><dropShadows> [yes|no]

آیا سایه‌های افتان (drop-shadows) پشت پنجره‌ها رندر شوند یا خیر. پیش‌فرض no است.

<theme><dropShadowsOnTiled> [yes|no]

آیا سایه‌های افتان پشت پنجره‌های کاشی‌کاری‌شده رندر شوند یا خیر. این تنظیم در صورتی که <core><gap> کوچکتر از window.active.shadow.size در پوسته باشد اعمال نخواهد شد.

پیش‌فرض no است.

<theme><font place="">

قلم مورد استفاده برای یک عنصر خاص از پنجره، منو یا OSD. مکان‌ها (places) می‌توانند هر یک از موارد زیر باشند:
  • ActiveWindow - نوار عنوان پنجره فعال
  • InactiveWindow - نوار عنوان تمامی پنجره‌هایی که نشانگر روی آن‌ها تمرکز ندارد
  • MenuHeader - عنوان منو
  • MenuItem - آیتم منو (در حال حاضر فقط منوی ریشه)
  • OnScreenDisplay - موارد موجود در پیام روی صفحه (OSD)
اگر مشخصه place ارائه نشود، تنظیمات روی همه
مکان‌ها اعمال خواهد شد.

<theme><font place=""><name>

نام قلم را توصیف می‌کند. پیش‌فرض sans است.

<theme><font place=""><size>

اندازه قلم بر حسب پیکسل. پیش‌فرض 10 است.

<theme><font place=""><slant>

شیب قلم (normal، oblique یا italic). پیش‌فرض normal است.

<theme><font place=""><weight>

وزن قلم (normal، thin، ultralight، light، semilight، book، medium، semibold، bold، ultrabold، heavy، ultraheavy). پیش‌فرض normal است.

<margin top="" bottom="" left="" right="" output="" />

تعداد پیکسل‌های رزروشده در لبه‌های یک خروجی (معمولاً یک صفحه نمایش/مانیتور) را مشخص می‌کند. پنجره‌های جدید، بزرگ‌شده و کاشی‌کاری‌شده در این نواحی قرار نخواهند گرفت. کاربرد <margin> به عنوان راهکاری موقت برای کلاینت‌هایی مانند پنل‌ها است که از پروتکل wlr-layer-shell پشتیبانی نمی‌کنند.

مشخصه output اختیاری است؛ اگر این مشخصه ارائه نشود (به جای اینکه یک رشته خالی باشد)، حاشیه برای تمامی خروجی‌ها اعمال خواهد شد.

<resize><popupShow> [Never|Always|Nonpixel]

نمایش یک نشانگر کوچک در بالای پنجره هنگام تغییر اندازه یا جابه‌جایی. هنگامی که برنامه راهنمایی اندازه (size-hints) تنظیم می‌کند (معمولاً شبیه‌سازهای ترمینال X11)، نشانگر ابعاد تقسیم‌شده بر راهنماهای اندازه را به جای ابعاد پیکسلی نشان می‌دهد. در مورد شبیه‌سازهای ترمینال، این معمولاً به معنای ستون‌ها در سطرها است.

معانی مقادیر مختلف:

  • Never نشانگر را رندر نکن
  • Always نشانگر را هنگام جابه‌جایی و تغییر اندازه پنجره‌ها رندر کن
  • Nonpixel فقط هنگام تغییر اندازه برای پنجره‌هایی که از size-hints استفاده می‌کنند نشانگر را رندر کن

پیش‌فرض Never است.

<resize><drawContents> [yes|no]

به برنامه اجازه می‌دهد تا محتویات خود را هنگام تغییر اندازه مجدداً ترسیم کند. در صورت غیرفعال بودن، یک مستطیل کادربندی‌شده برای نشان دادن هندسه پنجره تغییر اندازه یافته نمایش داده می‌شود. پیش‌فرض yes است.

<resize><cornerRange>

اندازه نواحی گوشه که زمینه‌های اتصال ماوس 'TLCorner'، 'TRCorner'، 'BLCorner' و 'RLCorner' برای آن‌ها اعمال می‌شود، و همچنین اندازه ناحیه حاشیه که تغییر اندازه با ماوس هم به صورت افقی و هم عمودی اعمال خواهد شد به جای اینکه فقط در یکی از جهت‌ها اعمال شود. پیش‌فرض نصف ارتفاع نوار عنوان است.

<resize><minimumArea>

با حاشیه‌های تزیینات سمت سرور طوری رفتار می‌کند که گویی حداقل ضخامت مشخص‌شده را دارند، صرف‌نظر از اندازه بصری آن‌ها. حاشیه‌هایی که از نظر بصری باریک‌تر از حداقل ضخامت مؤثر هستند، با نواحی نامرئی فراتر از پنجره تقویت می‌شوند که به عنوان اهداف کلیک برای اکشن‌های ماوس عمل می‌کنند. پیش‌فرض 8 است.

این بخش پیکربندی دستگاه‌های ورودی را شرح می‌دهد، از جمله:

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

هدف این بخش روشن ساختن اصطلاحات مرتبط و تفکیک وظایف است.

صفحه‌کلیدها در بخش <keyboard> زیر پیکربندی می‌شوند و از این لحاظ ساده هستند.

تاچ‌پدها و ماوس‌ها پیچیده‌ترند. هر دوی آن‌ها از دید کامپوزیتور دستگاه‌های نشانگر (pointer) محسوب می‌شوند و می‌توانند در بخش‌های <mouse> و <libinput> پیکربندی شوند. هر تنظیمی که توسط libinput پشتیبانی شود در بخش <libinput> پیکربندی می‌گردد و سایر موارد در <mouse> قرار دارند. دستگاه‌های تاچ‌پد می‌توانند رویدادهای اشاره و ژست (gesture)، مانند کشیدن انگشت (swipe) و نیشگون (pinch) تولید کنند. برخی تنظیمات مرتبط (مانند threeFingerDrag و twoFingerScroll) در بخش <libinput> قرار دارند.

در قلمرو کامپوزیتور Wayland، رویدادهای مرتبط با صفحه‌های لمسی گاهی به سادگی به عنوان رویدادهای لمسی (touch) نامیده می‌شوند. صفحه‌های لمسی را می‌توان در هر دو بخش <touch> و <libinput> پیکربندی کرد. توجه داشته باشید که ژست‌های حرکتی صفحه لمسی توسط libinput یا labwc تفسیر نمی‌شوند. هر نقطه تماس به کلاینت (برنامه) ارسال می‌شود تا هرگونه تفسیر ژست‌ها توسط خود آن انجام شود.

تبلت‌ها توسط libinput به عنوان دستگاه‌هایی خاص در نظر گرفته می‌شوند، اگرچه از نظر پروتکل Wayland آن‌ها صرفاً دارای قابلیت لمسی هستند. تبلت‌ها و ابزارهای مرتبط با تبلت در بخش‌های <tablet>، <tablettool> و <libinput> پیکربندی می‌شوند. توجه داشته باشید که اصطلاح tablet در libinput (و labwc) فقط به تبلت‌های گرافیکی و طراحی (مانند Wacom Intuos) اشاره دارد، نه به دستگاه‌های تبلت مانند Apple iPad.

مراجع:

<keyboard><numlock> [on|off]

هنگام شناسایی یک صفحه‌کلید جدید، Num Lock را فعال یا غیرفعال می‌کند. پیش‌فرض تنظیم‌نشده است.

<keyboard layoutScope=""> [global|window]

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

<keyboard><keybind key="" layoutDependent="" onRelease="" allowWhenLocked="" overrideInhibition="">

یک کلید میانبر (key) را در قالب modifier-key تعریف می‌کند، که در آن کلیدهای تبدیل (modifier) پشتیبانی‌شده عبارتند از:
  • S (کلید شیفت - shift)
  • C (کلید کنترل - control)
  • A یا Mod1 (کلید الت - alt)
  • H یا Mod3 (هایپر - hyper)
  • W یا Mod4 (سوپر / کلید لوگو - super / logo)
  • M یا Mod5 (متا - meta)

می‌توان چندین کلید تبدیل را با هم ترکیب کرد مانند A-S-f برای Alt-Shift-f. خود کلید می‌تواند هر نویسه یونیکد یا یک نام کلید مانند Return باشد.

برخلاف Openbox، ترکیب‌های چندگانه کلیدی که با فاصله جدا شده باشند و زنجیره‌های کلید پشتیبانی نمی‌شوند. برنامه "wev" (نمایشگر رویداد wayland) در بسیاری از توزیع‌ها بسته‌بندی شده است و می‌تواند برای مشاهده تمام نام‌های کلید در دسترس استفاده شود.

هنگام تطبیق با میانبرها، کلیدهای ورودی با ترتیب اولویت زیر پردازش می‌شوند:

  • کد کلید (Keycode) فیزیکی (مگر اینکه میانبر کلید layoutDependent باشد)
  • نماد کلید ترجمه‌شده (keysym) با احتساب کلیدهای تبدیل (بنابراین اگر Shift+1 روی صفحه‌کلید us فشرده شود، keysym برابر '!' خواهد بود)
  • نماد کلید خام (raw keysym) با نادیده گرفتن کلیدهای تبدیل مانند شیفت (بنابراین در مثال بالا نماد کلید صرفاً '1' خواهد بود)

دلایل این رویکرد عبارتند از:

  • مستقل کردن میانبرها از چیدمان صفحه‌کلید (با بررسی کدهای کلید قبل از نمادهای کلید). این بدان معناست که در شرایط چند چیدمانی، میانبرها بدون توجه به اینکه کدام چیدمان در زمان فشردن کلید فعال است، کار می‌کنند.
  • پشتیبانی از میانبرهای مربوط به نمادهای کلیدی که فقط در یک چیدمان خاص در دسترس هستند، برای مثال å، ä و ö.
  • پشتیبانی از میانبرهایی که فقط با یک کلید تبدیل معتبر هستند، برای مثال کلیدهای صفحه‌کلید عددی (numpad) در زمان فعال بودن NumLock: مانند KP_x. این موارد فقط با نمادهای کلید ترجمه‌شده مطابقت داده می‌شوند.
  • پشتیبانی از میانبرهایی مانند `S-1` (با بررسی نمادهای کلید خام).

layoutDependent [yes|no] این میانبر خاص را وابسته به چیدمان صفحه‌کلید فعال فعلی می‌کند. در صورت فعال بودن، میانبری که از کلیدی استفاده می‌کند که در چیدمان فعال فعلی وجود ندارد اجرا نخواهد شد. کلید فیزیکی برای راه‌اندازی یک میانبر نیز ممکن است همراه با چیدمان فعال تغییر کند. اگر روی "no" تنظیم شود (یا وجود نداشته باشد)، میانبر مستقل از چیدمان خواهد بود. پیش‌فرض no است.

allowWhenLocked [yes|no] باعث می‌شود این میانبر حتی در صورت قفل بودن صفحه کار کند. پیش‌فرض no است.

overrideInhibition [yes|no] باعث می‌شود این میانبر حتی اگر نما مانع میانبرها شود (inhibit کند) کار کند. از این گزینه می‌توان برای جلوگیری از تحویل W-Tab و میانبرهای مشابه به ماشین‌های مجازی، کلاینت‌های VNC یا کامپوزیتورهای تودرتو استفاده کرد. پیش‌فرض no است.

onRelease [yes|no] هنگامی که yes باشد، اکشن میانبر را زمانی اجرا می‌کند که کلید یا ترکیب کلیدها رها شود، نه هنگام فشردن اولیه. این ویژگی برای اتصال اکشن‌ها صرفاً به کلیدهای تبدیل مفید است، جایی که اکشن باید زمانی اجرا شود که کلید تبدیل بدون کلید دیگری استفاده و رها شود. پیش‌فرض no است.

مثال زیر هنگام فشردن و رها شدن کلید سوپر (Super)، اجرای rofi را بدون تداخل با سایر ترکیب‌های چندکلیدی شامل کلید سوپر فعال می‌کند:

<keybind key="Super_L" onRelease="yes">
  <action name="Execute" command="rofi -show drun" />
</keybind>

<keyboard><keybind key=""><action name="">

اکشن میانبر کلید. به labwc-actions(5) مراجعه کنید.

<keyboard><default />

میانبرهای پیش‌فرض فهرست‌شده در زیر را بارگذاری می‌کند. این یک افزونه به مشخصات openbox است و روشی را برای ساده‌تر نگه داشتن فایل‌های پیکربندی ضمن امکان استفاده از میانبرهای خاص شما فراهم می‌سازد. توجه داشته باشید که اگر هیچ rc.xml یافت نشود، یا اگر هیچ مدخل <keyboard><keybind> وجود نداشته باشد، همان میانبرهای پیش‌فرض حتی در صورت عدم ارائه عنصر <default /> بارگذاری خواهند شد.
A-Tab - پنجره بعدی
A-S-Tab - پنجره قبلی
W-Return - lab-sensible-terminal
A-F4 - بستن پنجره
W-a - تغییر وضعیت بزرگ‌نمایی (maximize)
W-d - تغییر وضعیت نمایش دسکتاپ (show-desktop)
W-<arrow> - تغییر اندازه پنجره برای پر کردن نصف یا یک‌چهارم خروجی
A-Space - نمایش منوی پنجره
کلیدهای Audio و MonBrightness نیز به ترتیب به pactl و brightnessctl متصل شده‌اند.

<keyboard><repeatRate>

نرخ تکرار فشردن کلیدها در ثانیه را تنظیم می‌کند. پیش‌فرض 25 است.

<keyboard><repeatDelay>

میزان تأخیر قبل از تکرار کلیدها را بر حسب میلی‌ثانیه تنظیم می‌کند. پیش‌فرض 600 است.

این بخش مربوط به ماوس‌ها و تاچ‌پدها است - که هر دو طبق پروتکل Wayland به عنوان دستگاه‌های ورودی نشانگر (pointer) در نظر گرفته می‌شوند.

<mouse><doubleClickTime>

زمان دوبار کلیک را بر حسب میلی‌ثانیه تنظیم می‌کند. پیش‌فرض 500 است.

<mouse><context name=""><mousebind button="" direction="" action=""><action>

چندین <mousebind> می‌توانند درون یک <context> وجود داشته باشند؛ و چندین <action> می‌توانند درون یک <mousebind> قرار گیرند.

تعریف میانبر ماوس. نام‌های زمینه (context-names) پشتیبانی‌شده عبارتند از:

  • TitleBar: تزیینات بالای پنجره، جایی که دکمه‌های پنجره و عنوان پنجره نمایش داده می‌شوند.
  • Title: ناحیه‌ای از نوار عنوان (شامل فضای خالی) بین دکمه‌های پنجره، که در آن عنوان پنجره نمایش داده می‌شود.
  • Icon: آیکون پنجره که به‌طور پیش‌فرض منوی پنجره را نمایش می‌دهد.
  • WindowMenu: دکمه‌ای که به‌طور پیش‌فرض منوی پنجره را نمایش می‌دهد.
  • Iconify: دکمه‌ای که به‌طور پیش‌فرض پنجره را کوچک (minimize) می‌کند.
  • Maximize: دکمه‌ای که به‌طور پیش‌فرض بزرگ‌نمایی پنجره را تغییر وضعیت می‌دهد.
  • Shade: دکمه‌ای که به‌طور پیش‌فرض حالت سایه پنجره را تغییر وضعیت می‌دهد.
  • AllDesktops: دکمه‌ای که به‌طور پیش‌فرض حضور پنجره در همه دسکتاپ‌ها را تغییر وضعیت می‌دهد.
  • Close: دکمه‌ای که به‌طور پیش‌فرض پنجره را می‌بندد.
  • Border: حاشیه پنجره شامل Top...BRCorner در زیر.
  • Top: لبه بالایی حاشیه پنجره.
  • Bottom: لبه پایینی حاشیه پنجره.
  • Left: لبه سمت چپ حاشیه پنجره.
  • Right: لبه سمت راست حاشیه پنجره.
  • TRCorner: گوشه بالا-راست حاشیه پنجره.
  • TLCorner: گوشه بالا-چپ حاشیه پنجره.
  • BLCorner: گوشه پایین-چپ حاشیه پنجره.
  • BRCorner: گوشه پایین-راست حاشیه پنجره.
  • Client: ناحیه کلاینت پنجره، درون تزیینات آن. رویدادهای متصل به Client به برنامه‌ها نیز ارسال می‌شوند.
  • Frame: هر بخشی از پنجره، اما رویدادهای متصل به Frame به برنامه ارسال نمی‌شوند.
  • Desktop: پس‌زمینه دسکتاپ، جایی که پنجره‌ای وجود ندارد.
  • Root: مترادفی برای Desktop (جهت سازگاری).
  • All: هر جای صفحه نمایش.

دکمه‌های ماوس (buttons) پشتیبانی‌شده عبارتند از:

  • Left
  • Middle
  • Right
  • Side
  • Extra
  • Forward
  • Back
  • Task

جهت‌های پیمایش (directions) پشتیبانی‌شده عبارتند از:

  • Up
  • Down
  • Left
  • Right

دکمه‌ها و جهت‌های ماوس را می‌توان با کلیدهای تبدیل (shift (S)، super/logo (W)، control (C)، alt (A)، meta (M) و hyper (H)) ترکیب کرد، برای مثال:

<mousebind button="A-Right" action="Press">...
<mousebind direction="W-Up" action="Scroll">...
اکشن‌های ماوس (actions) پشتیبانی‌شده عبارتند از:
  • Press: فشردن دکمه مشخص‌شده در زمینه مورد نظر.
  • Release: رها کردن دکمه مشخص‌شده در زمینه مورد نظر.
  • Click: فشردن و سپس رها کردن در درون زمینه.
  • DoubleClick: دو بار فشردن در بازه زمانی doubleClickTime.
  • Drag: فشردن دکمه درون زمینه و سپس حرکت دادن نشانگر.
  • Scroll: پیمایش در جهت (direction) مشخص‌شده درون زمینه.

مثال برای تغییر اندازه پنجره با Logo + Shift + ScrollUp:

<?xml version="1.0"?>
<labwc_config>
<mouse>
  <default />
  <context name="Frame">
    <mousebind direction="W-S-Up" action="Scroll">
      <action name="ResizeRelative" left="10%" right="10%" top="10%" bottom="10%" />
    </mousebind>
    <mousebind button="W-Left" action="Drag">
      <action name="Move" />
    </mousebind>
  </context>
</mouse>
</labwc_config>
مثال برای حذف اتصال میانبر پیش‌فرض Super + فشردن کلید چپ ماوس برای جابه‌جایی پنجره:
<mouse>
  <default />
  <context name="Frame">
    <mousebind button="W-Left" action="Press" />
    <mousebind button="W-Left" action="Drag" />
  </context>
</mouse>

<mouse><default />

میانبرهای پیش‌فرض ماوس را بارگذاری می‌کند. این یک افزونه به مشخصات openbox است و روشی را برای ساده‌تر نگه داشتن فایل‌های پیکربندی ضمن امکان استفاده از میانبرهای اختصاصی کاربر فراهم می‌کند. توجه داشته باشید که اگر هیچ rc.xml یافت نشود، یا اگر هیچ مدخل <mouse><mousebind> وجود نداشته باشد، همان میانبرهای پیش‌فرض ماوس حتی در صورت عدم ارائه عنصر <default /> بارگذاری خواهند شد.

این بخش مربوط به صفحه‌های لمسی (touchscreens) است و نه تاچ‌پدها.

نکته: برای چرخش رویدادهای لمسی همراه با چرخش خروجی، از تنظیم calibrationMatrix در libinput استفاده کنید.

<touch deviceName="" mapToOutput="" mouseEmulation="no" />

<touch deviceName="" />

یک پیکربندی لمسی را می‌توان به یک دستگاه خاص متصل کرد. اگر نام دستگاه خالی بماند، پیکربندی لمسی برای تمامی دستگاه‌های لمسی اعمال می‌شود یا به عنوان حالت جایگزین (fallback) عمل می‌کند. چندین پیکربندی لمسی می‌توانند وجود داشته باشند. برای به دست آوردن نام‌های دستگاه به بخش دستگاه‌های libinput مراجعه کنید.

<touch mapToOutput="" />

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

<touch mouseEmulation="" />

اگر mouseEmulation فعال باشد، تمام رویدادهای لمسی up/down/motion به رویدادهای دکمه و حرکت ماوس ترجمه می‌شوند.

<tablet mapToOutput="" rotate="0" mouseEmulation="no">
  <area top="0.0" left="0.0" width="0.0" height="0.0" />
  <map button="Tip" to="Left" />
  <map button="Stylus" to="Right" />
  <map button="Stylus2" to="Middle" />
</tablet>

<tablet mapToOutput="" />

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

نشانگر تبلت به طور خودکار جهت/چرخش یک خروجی نگاشت‌شده را برای حرکت مطلق اعمال می‌کند.

<tablet rotate="" /> [0|90|180|270]

جهت‌گیری تبلت را می‌توان در گام‌های ۹۰ درجه تغییر داد. پیش‌فرض بدون چرخش (0) است. چرخش پیش از اعمال تبدیل ناحیه تبلت اعمال خواهد شد.

همچنین برای تبدیلات پیشرفته به calibrationMatrix در بخش libinput در زیر مراجعه کنید.

<tablet><area top="mm" left="mm" width="mm" height="mm" />

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

ناحیه فعال تبلت را می‌توان با تنظیم مختصات top/left (بر حسب میلی‌متر) و/یا width/height (بر حسب میلی‌متر) مشخص کرد. اگر width یا height حذف شوند یا پیش‌فرض (0.0) باشند، width/height روی عرض/ارتفاع باقی‌مانده از دید top/left تنظیم خواهد شد.

مثال نسبت ابعاد: ابعاد تبلت ۲۱۵ میلی‌متر در ۱۱۵ میلی‌متر است و خروجی دارای وضوح ۳۴۴۰x۱۴۴۰ است. هنگام تنظیم height روی "90"، زیرا 215 * 1440 / 3440 = 90 است، ارتفاع ناحیه فعال تبلت برای مطابقت با نسبت ابعاد ۲۱:۹ خروجی بریده می‌شود. با تنظیم اضافی top روی "12.5"، ناحیه فعال به طور عمودی در مرکز سطح تبلت قرار می‌گیرد.

<tablet mouseEmulation="" /> [yes|no]

تبلت را می‌توان مجبور کرد همیشه از شبیه‌سازی ماوس استفاده کند. این کار از محدودیت‌های خاص تبلت جلوگیری می‌کند، مانند عدم پشتیبانی از کشیدن و رها کردن (drag-and-drop)، اما همچنین ویژگی‌های خاص تبلت مانند گزارش فشار قلم را حذف می‌نماید.

از اکشن ToggleTabletMouseEmulation برای تغییر وضعیت شبیه‌سازی ماوس بین روشن و خاموش استفاده کنید.

<tablet><map button="" to="" />

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

دکمه‌های نگاشت پشتیبانی‌شده (buttons) عبارتند از:

  • Stylus
  • Stylus2
  • Stylus3

دکمه‌های قلم نوری را می‌توان به موارد زیر نگاشت کرد (to):

  • Right
  • Middle
  • Side

نوک قلم (Tip) را نمی‌توان دوباره نگاشت کرد.

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

دکمه‌های نگاشت پشتیبانی‌شده (buttons) برای شبیه‌سازی ماوس عبارتند از:

  • Tip
  • Stylus
  • Stylus2
  • Stylus3
  • Left..Task
  • Pad
  • Pad2..Pad9

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

<tabletTool motion="absolute" relativeMotionSensitivity="1.0"
				minPressure="0.0" maxPressure="1.0" />

<tabletTool motion=""> [absolute|relative]

تمام ابزارهای تبلت، به جز نوع mouse و lens، به‌طور پیش‌فرض از موقعیت‌یابی مطلق ("absolute") استفاده می‌کنند. مشخصه motion امکان تنظیم ابزارها روی حرکت نسبی را فراهم می‌کند. موقعیت‌یابی برای یک تبلت‌ماوس یا تبلت‌لنز قابل تغییر نیست، این ابزارها همیشه از حالت نسبی استفاده می‌کنند.

<tabletTool relativeMotionSensitivity="">

هنگام استفاده از حرکت نسبی، relativeMotionSensitivity سرعت نشانگر را کنترل می‌کند. استفاده از مقدار کمتر از 1.0 سرعت را کاهش می‌دهد و استفاده از مقدار بیشتر از 1.0 سرعت نشانگر را افزایش می‌دهد. پیش‌فرض "1.0" است.

<tabletTool minPressure="">
<tabletTool maxPressure="">

محدوده فشار ابزار تبلت را می‌توان با تنظیم minPressure و maxPressure کنترل کرد. تنظیم حداقل فشار روی مقداری بیشتر از صفر نیازمند فشار بیشتری برای آستانه نوک قلم است؛ تنظیم حداکثر فشار روی مقداری کمتر از 1.0 نیازمند فشار کمتری از سوی کاربر قبل از رسیدن به حداکثر است. مقدار پیش‌فرض 0 برای حداقل فشار و 1.0 برای حداکثر فشار است.

<libinput>
  <device category="CATEGORY">
    <naturalScroll></naturalScroll>
    <leftHanded></leftHanded>
    <pointerSpeed></pointerSpeed>
    <accelProfile></accelProfile>
    <tap>yes</tap>
    <tapButtonMap></tapButtonMap>
    <tapAndDrag></tapAndDrag>
    <dragLock></dragLock>
    <threeFingerDrag></threeFingerDrag>
    <middleEmulation></middleEmulation>
    <disableWhileTyping></disableWhileTyping>
    <clickMethod></clickMethod>
    <scrollMethod></scrollMethod>
    <scrollButton></scrollButton>
    <sendEventsMode></sendEventsMode>
    <calibrationMatrix></calibrationMatrix>
    <scrollFactor>1.0</scrollFactor>
  </device>
</libinput>

<libinput><device>

تعریف یک دسته‌بندی (پروفایل) پیکربندی جدید libinput.

CATEGORY یک دسته‌بندی از دستگاه‌ها را (بر اساس نوع یا نام) برای اعمال تنظیمات بعدی تعریف می‌کند. مشخصه category اختیاری است. اگر مشخصه category ارائه نشود، یک پروفایل دستگاه 'default' ایجاد می‌شود که به عنوان fallback برای تمامی دستگاه‌های libinput عمل خواهد کرد. مشخصه Category می‌تواند روی هر یک از انواع زیر تنظیم شود:

  • touch - شامل صفحه‌های لمسی و تبلت‌های طراحی.
  • touchpad - شامل تاچ‌پدها (ترک‌پدهای لپ‌تاپ).
  • non-touch - شامل ماوس‌های سنتی.
  • default - دسته‌بندی دستگاهی قابل اعمال بر تمام دستگاه‌هایی که با هیچ چیز دیگری مطابقت ندارند را تعریف می‌کند. این می‌تواند به عنوان fallback یا زمانی که می‌خواهید همان تنظیمات برای تمام دستگاه‌ها اعمال شود مفید باشد.

اگر مقدار category ارائه‌شده با تمام کلمات کلیدی فوق متفاوت باشد، برای تطبیق مستقیم با نام دستگاه استفاده خواهد شد.

فهرستی از نام‌های دستگاه‌ها را می‌توان با اجرای دستور libinput list-devices به دست آورد (ممکن است برای انجام این کار نیاز به دسترسی root یا عضویت در گروه input داشته باشید).

<libinput><device><naturalScroll> [yes|no]

در صورت موجود بودن، از پیمایش طبیعی (natural scrolling) برای این دسته‌بندی استفاده می‌کند.

<libinput><device><leftHanded> [yes|no]

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

<libinput><device><pointerSpeed> [-1.0 تا 1.0]

سرعت نشانگر را برای این دسته‌بندی تنظیم می‌کند. سرعت عددی بین -1.0 و 1.0 است، که 0.0 در اکثر موارد پیش‌فرض و 1.0 سریع‌ترین حالت است.

<libinput><device><accelProfile> [flat|adaptive]

پروفایل شتاب نشانگر را برای این دسته‌بندی تنظیم می‌کند. حالت Flat هیچ شتابی اعمال نمی‌کند (سرعت نشانگر ثابت است)، در حالی که adaptive سرعت نشانگر را بر اساس سرعت واقعی ماوس یا انگشت شما روی تاچ‌پد تغییر می‌دهد.

<libinput><device><tap> [yes|no]

ضربه برای کلیک (tap-to-click) را برای این دسته‌بندی فعال یا غیرفعال می‌کند. این ویژگی به‌طور پیش‌فرض برای تمامی دسته‌بندی‌ها فعال است.

<libinput><device><tapButtonMap> [lrm|lmr]

دکمه‌های نگاشت‌شده به ضربه‌های یک، دو و سه انگشتی را به ترتیب به دکمه چپ، دکمه راست و دکمه میانی (lrm) (پیش‌فرض)، یا به دکمه چپ، دکمه میانی و دکمه راست (lmr) تنظیم می‌کند.

<libinput><device><tapAndDrag> [yes|no]

ضربه و کشیدن (tap-and-drag) را برای این دسته‌بندی فعال یا غیرفعال می‌کند. ویژگی tap-and-drag ضربه‌ای را که بلافاصله با پایین آمدن انگشت همراه باشد به عنوان شروع یک کشیدن پردازش می‌کند.

<libinput><device><dragLock> [yes|no|timeout]

قفل کشیدن (drag lock) را برای این دسته‌بندی فعال یا غیرفعال می‌کند. قفل کشیدن، رها شدن موقت انگشت را در حین tap-and-drag نادیده می‌گیرد.

مقدار timeout نیز قفل کشیدن را فعال می‌کند اما با مهلت زمانی: اگر انگشتان شما برای مدت مشخصی رها شوند، ژست کشیدن لغو می‌شود. در نسخه‌های libinput < 1.27، رفتار yes معادل timeout است.

<libinput><device><threeFingerDrag> [yes|no|3|4]

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

گزینه‌های موجود عبارتند از:

  • no - غیرفعال کردن کشیدن با سه انگشت.
  • yes | 3 - فعال کردن کشیدن با ۳ انگشت.
  • 4 - فعال کردن کشیدن با ۴ انگشت.

<libinput><device><middleEmulation> [yes|no]

شبیه‌سازی دکمه میانی را برای این دسته‌بندی فعال یا غیرفعال می‌کند. شبیه‌سازی میانی کلیک همزمان چپ و راست را به عنوان فشردن دکمه میانی ماوس (چرخ پیمایش) پردازش می‌کند.

<libinput><device><disableWhileTyping> [yes|no]

غیرفعال‌سازی هنگام تایپ (disable while typing یا DWT) را برای این دسته‌بندی فعال یا غیرفعال می‌کند. ویژگی DWT هرگونه رویداد حرکتی را در حین تایپ با صفحه‌کلید و همچنین برای مدت کوتاهی پس از آن نادیده می‌گیرد.

<libinput><device><clickMethod> [none|buttonAreas|clickfinger]

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

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

  • buttonAreas - پایین تاچ‌پد به نواحی متمایز مربوط به دکمه‌های چپ، میانی و راست تقسیم می‌شود؛ کلیک درون هر ناحیه رویداد مربوطه را ایجاد می‌کند. کلیک روی ناحیه اصلی بالاتر یک رویداد دکمه چپ تولید می‌کند.
  • clickfinger - کلیک با یک، دو یا سه انگشت بدون توجه به محل کلیک، رویداد دکمه چپ، راست یا میانی تولید می‌کند.
  • none - کلیک‌های فیزیکی هیچ رویداد دکمه‌ای ایجاد نمی‌کنند.

روش پیش‌فرض به سخت‌افزار تاچ‌پد بستگی دارد.

<libinput><device><scrollMethod> [none|twofinger|edge|onbutton]

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

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

  • twofinger - پیمایش با قرار دادن دو انگشت روی سطح تاچ‌پد و سپس حرکت دادن آن انگشتان به صورت عمودی یا افقی.
  • edge - پیمایش با حرکت دادن یک انگشت در امتداد لبه راست (پیمایش عمودی) یا لبه پایین (پیمایش افقی).
  • onbutton - پیمایش با فشردن یک دکمه.
  • none - هیچ رویداد پیمایشی ایجاد نخواهد شد.

روش پیش‌فرض به سخت‌افزار تاچ‌پد بستگی دارد.

<libinput><device><scrollButton> [button]

دکمه مورد استفاده برای روش پیمایش onbutton را تنظیم می‌کند.

مقدار button فرم ده‌دهی یک مقدار از `linux/input-event-codes.h` است.

<libinput><device><sendEventsMode> [yes|no|disabledOnExternalMouse]

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

گزینه‌های موجود عبارتند از:

  • yes - رویدادها طبق معمول ارسال می‌شوند
  • no - هیچ رویدادی از این دستگاه ارسال نمی‌شود
  • disabledOnExternalMouse - در صورت شناسایی ماوس خارجی، این دستگاه رویدادی ارسال نمی‌کند.

می‌توان مانع ارسال رویدادها از یک دستگاه در پیکربندی شد و سپس با Reconfigure دستگاه‌های خاص را موقتاً فعال / غیرفعال کرد.

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

<libinput><device><calibrationMatrix> [شش مقدار اعشاری جداشده با فاصله]

ماتریس تبدیل ۳x۳ را برای مختصات مطلق دستگاه اعمال می‌کند. این ماتریس هیچ تأثیری بر رویدادهای نسبی ندارد.

با در نظر گرفتن یک آرایه ۶ عنصری [a b c d e f]، ماتریس به صورت زیر اعمال می‌شود:

    [ a  b  c ]   [ x ]
    [ d  e  f ] * [ y ]
    [ 0  0  1 ]   [ 1 ]
The most common matrices are:
    90 deg cw:      180 deg cw:     270 deg cw:     reflect along y axis:
    [ 0 -1 1]       [ -1  0 1]      [  0 1 0 ]      [ -1 0 1 ]
    [ 1  0 0]       [  0 -1 1]      [ -1 0 1 ]      [  1 0 0 ]
    [ 0  0 1]       [  0  0 1]      [  0 0 1 ]      [  0 0 1 ]

<libinput><scrollFactor>

ضریب پیمایش را تنظیم می‌کند. پیش‌فرض 1.0 است.

دو نوع قانون پنجره پشتیبانی می‌شود: اکشن‌ها و ویژگی‌ها. آن‌ها همان‌طور که در زیر نشان داده شده تعریف می‌شوند.

<windowRules>
  <!-- Action -->
  <windowRule identifier="" title="" type="">
    <action name="" />
  </windowRule>
  <!-- Property -->
  <windowRule identifier="" serverDecoration="" />
</windowRules>

معیارها (Criteria)

<windowRules><windowRule identifier="" title="" sandboxEngine="" sandboxAppId="" type="" matchOnce="">

یک قانون پنجره برای هر پنجره‌ای که با معیارهای تعریف‌شده توسط مشخصه‌های identifier، title یا type مطابقت داشته باشد تعریف می‌کند. اگر بیش از یک مورد تعریف شود، منطق AND به کار می‌رود؛ بنابراین همه باید مطابقت داشته باشند. تطبیق بدون توجه به بزرگی و کوچکی حروف (case-insensitive) است و با استفاده از الگوهای وایلدکارد شل انجام می‌شود (به glob(7) مراجعه کنید)، بنابراین نویسه '*' (خارج از قلاب‌ها) با هر رشته‌ای و نویسه '?' با هر نویسه تکی مطابقت پیدا می‌کند.

مشخصه identifier مربوط به app_id برای پنجره‌های بومی Wayland و WM_CLASS برای کلاینت‌های XWayland است.

مشخصه title عنوان پنجره است.

مشخصه sandboxEngine نام موتور ساندباکس از زمینه امنیتی (security context) است.

مشخصه sandboxAppId یک شناسه مختص ساندباکس برای یک برنامه از زمینه امنیتی است.

مشخصه type [desktop|dock|toolbar|menu|utility|splash|dialog|dropdown_menu| popup_menu|tooltip|notification|combo|dnd|normal] مربوط به NET_WM_WINDOW_TYPE برای کلاینت‌های XWayland است. کلاینت‌های بومی Wayland در صورتی که والد یا اندازه ثابت داشته باشند دارای نوع "dialog" هستند، و در غیر این صورت دارای نوع "normal" خواهند بود.

مشخصه matchOnce می‌تواند true|false باشد. در صورت true بودن، قانون فقط برای اولین نمونه از پنجره با شناسه یا عنوان مشخص‌شده اعمال خواهد شد.

ویژگی‌ها (Properties)

اکثر مقادیر ویژگی‌ها می‌توانند yes، no یا default باشند.

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

<windowRules><windowRule serverDecoration=""> [yes|no|default]

مشخصه serverDecoration هر تنظیم دیگری را برای تزیینات پنجره سمت سرور در اولین نمایش لغو می‌کند (over-rule).

<windowRules><windowRule skipTaskbar=""> [yes|no|default]

مشخصه skipTaskbar دسته پروتکل foreign-toplevel پنجره را حذف می‌کند تا پنجره در کلاینت‌هایی مانند پنل‌ها و نوارهای وظیفه که از آن پروتکل استفاده می‌کنند ظاهر نشود.

<windowRules><windowRule skipWindowSwitcher=""> [yes|no|default]

مشخصه skipWindowSwitcher پنجره را از تعویض‌کننده پنجره (نمایش OSD میانبر alt-tab) حذف می‌کند.

<windowRules><windowRule ignoreFocusRequest=""> [yes|no|default]

مشخصه ignoreFocusRequest از فعال کردن خودکار پنجره توسط خودش جلوگیری می‌کند.

<windowRules><windowRule ignoreConfigureRequest=""> [yes|no|default]

مشخصه ignoreConfigureRequest از موقعیت‌یابی و تعیین اندازه خود توسط یک پنجره X11 جلوگیری می‌کند.

<windowRules><windowRule allowAlwaysOnTop=""> [yes|no|default]

مشخصه allowAlwaysOnTop به یک پنجره X11 اجازه می‌دهد وضعیت «همیشه در بالا» بودن خود ('above' در اصطلاح X11) را کنترل کند.

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

<windowRules><windowRule fixedPosition=""> [yes|no|default]

مشخصه fixedPosition جابه‌جایی/تغییر اندازه تعاملی را غیرمجاز کرده و از تغییر موقعیت در واکنش به تغییرات فضای رزروشده خروجی (که می‌تواند ناشی از تنظیمات <margin> یا کلاینت‌های لایه‌شل اختصاصی مانند پنل‌ها باشد) جلوگیری می‌کند.

<windowRules><windowRule iconPriority=""> [client|server]

به طور پیش‌فرض، labwc سعی می‌کند آیکون‌های برنامه را بر اساس app-id آن‌ها پیدا کند، یا از طریق فایل .desktop یا با یافتن آیکونی با همان نام. اگر این کار ناموفق باشد، labwc تلاش می‌کند از آیکون‌های ارائه‌شده توسط کلاینت استفاده کند، که این کار با پروتکل xdg-toplevel-icon برای برنامه‌های بومی wayland یا ویژگی _NET_WM_ICON برای برنامه‌های X11 انجام می‌شود.

این ویژگی امکان اولویت‌بندی آیکون‌های ارائه‌شده توسط کلاینت را برای برنامه‌های خاص فراهم می‌سازد. پیش‌فرض server است.

<menu>
  <ignoreButtonReleasePeriod>250</ignoreButtonReleasePeriod>
  <showIcons>yes</showIcons>
</menu>

<menu><ignoreButtonReleasePeriod>

مدت زمانی (بر حسب میلی‌ثانیه) که طی آن رویداد اولیه رها کردن دکمه نادیده گرفته می‌شود. دلیل این منطق و رفتار، جلوگیری از یک توالی سریع فشردن-حرکت-رها کردن است که تنها قصد باز کردن منو را داشته اما ممکن است منجر به بسته شدن منو یا انتخاب ناخواسته یکی از موارد منو (معمولاً اولین مورد) شود. این رفتار فقط بر اولین رها کردن دکمه تأثیر می‌گذارد. انتظار نمی‌رود اکثر کاربران بخواهند این مقدار را تغییر دهند، اما این گزینه پیکربندی برای موارد استفاده خاص در دسترس قرار گرفته است. این معادل `<hideDelay>` در Openbox است. پیش‌فرض 250 میلی‌ثانیه است.

<menu><showIcons>

نمایش آیکون‌های منو بر اساس مشخصه `icon` عناصر برچسب منو. پیش‌فرض yes است. نیازمند libsfdo است؛ در صورتی که labwc بدون آن ساخته شده باشد، هیچ آیکونی نمایش داده نخواهد شد.

<magnifier>
  <width>400</width>
  <height>400</height>
  <initScale>2</initScale>
  <increment>0.2</increment>
  <useFilter>true</useFilter>
</magnifier>

<magnifier><width>

عرض پنجره ذره‌بین بر حسب پیکسل. پیش‌فرض 400 است. برای استفاده از ذره‌بین تمام‌صفحه مقدار آن را روی -1 تنظیم کنید.

<magnifier><height>

ارتفاع پنجره ذره‌بین بر حسب پیکسل. پیش‌فرض 400 است. برای استفاده از ذره‌بین تمام‌صفحه مقدار آن را روی -1 تنظیم کنید.

<magnifier><initScale>

ضریب بزرگ‌نمایی اولیه تصویر. این مقدار پیش‌فرض هنگام راه‌اندازی است؛ می‌توان آن را در زمان اجرا در یک میانبر صفحه‌کلید یا ماوس با فراخوانی 'ZoomIn' یا 'ZoomOut' تغییر داد. پیش‌فرض x2.0 است.

<magnifier><increment>

گامی که بزرگ‌نمایی با هر بار فراخوانی 'ZoomIn' یا 'ZoomOut' تغییر می‌کند. پیش‌فرض 0.2 است.

<magnifier><useFilter> [yes|no|default]

اعمال فیلتر دوخطی (bilinear) روی تصویر بزرگ‌شده یا صرفاً استفاده از نزدیک‌ترین همسایه (nearest-neighbour). پیش‌فرض true است - یعنی فیلتر دوخطی اعمال می‌شود.

ابزار labwc از مجموعه کوچکی از رابط‌های ممتاز wayland پشتیبانی می‌کند. همه این رابط‌ها به‌طور پیش‌فرض برای برنامه‌ها فعال هستند، مگر اینکه برنامه‌ها در یک محیط ساندباکس با پشتیبانی از پروتکل security-context-v1 اجرا شوند.

به کاربرانی که به مسائل امنیتی اهمیت می‌دهند پیشنهاد می‌شود از یک چارچوب ساندباکس برای اجرای برنامه‌های بالقوه غیرقابل‌اعتماد استفاده کنند، زیرا این کار علاوه بر این، دسترسی به سیستم فایل (شامل پیکربندی labwc) و سایر سرویس‌ها مانند dbus را محدود می‌سازد.

علاوه بر این، پروتکل‌های ممتاز را می‌توان برای کلاینت‌های غیر ساندباکس با تعریف یک بلوک `<privilegedInterfaces>` محدود کرد:

<privilegedInterfaces>
  <allow>zwlr_layer_shell_v1</allow>
  <allow>zwlr_virtual_pointer_manager_v1</allow>
</privilegedInterfaces>

<privilegedInterfaces><allow>

نام رابطی که باید مجاز باشد.

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

  • `wp_drm_lease_device_v1`
  • `zwlr_gamma_control_manager_v1`
  • `zwlr_output_manager_v1`
  • `zwlr_output_power_manager_v1`
  • `zwp_input_method_manager_v2`
  • `zwlr_virtual_pointer_manager_v1`
  • `zwp_virtual_keyboard_manager_v1`
  • `zwlr_export_dmabuf_manager_v1`
  • `zwlr_screencopy_manager_v1`
  • `ext_data_control_manager_v1`
  • `zwlr_data_control_manager_v1`
  • `wp_security_context_manager_v1`
  • `ext_idle_notifier_v1`
  • `zwlr_foreign_toplevel_manager_v1`
  • `ext_foreign_toplevel_list_v1`
  • `ext_session_lock_manager_v1`
  • `zwlr_layer_shell_v1`
  • `ext_workspace_manager_v1`
  • `ext_image_copy_capture_manager_v1`
  • `ext_output_image_capture_source_manager_v1`

XCURSOR_PATH

فهرستی از مسیرهای جداشده با دونقطه (:) را برای جستجوی مکان‌نماهای ماوس مشخص می‌کند. پیش‌فرض عبارت است از: ~/.local/share/icons: ~/.icons: /usr/share/icons: /usr/share/pixmaps: ~/.cursors: /usr/share/cursors/xorg-x11: /usr/X11R6/lib/X11/icons:

XCURSOR_SIZE

اندازه دلخواه مکان‌نما را بر حسب پیکسل مشخص می‌کند. نیازمند این است که XCURSOR_THEME نیز تنظیم شده باشد. پیش‌فرض 24 است.

XCURSOR_THEME

پوسته مکان‌نمای ماوس را درون XCURSOR_PATH مشخص می‌کند.

پوسته‌های مکان‌نمای سیستم معمولاً با دستوری مانند زیر یافت می‌شوند:

find /usr/share/icons/ -type d -name "cursors"

متغیرهای پیکربندی صفحه‌کلید زیر پشتیبانی می‌شوند: XKB_DEFAULT_RULES، XKB_DEFAULT_MODEL، XKB_DEFAULT_LAYOUT، XKB_DEFAULT_VARIANT و XKB_DEFAULT_OPTIONS.

برای جزئیات بیشتر به xkeyboard-config(7) مراجعه کنید.

labwc(1), labwc-actions(5), labwc-theme(5)

2026-08-22