| labwc-config(5) | File Formats Manual | labwc-config(5) |
نام (NAME)
labwc-config - فایلهای پیکربندی labwc
توضیحات (DESCRIPTION)
ابزار 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 همچنان فعال بماند، این امر ممکن است چندین بار در طول نشست رخ دهد.
پیکربندی (CONFIGURATION)
این بخش گزینههای پیکربندی rc.xml را شرح میدهد.
نحو (SYNTAX)
پیکربندی باید مانند نمونه زیر درون یک عنصر ریشه <labwc_config> قرار گیرد:
<?xml version="1.0"?> <labwc_config> <!-- settings --> </labwc_config>
ابزار labwc فایل XML را بدون وابستگی به تفاوت میان عنصر یا مشخصه (attribute/element agnostic) تجزیه میکند. این یک تصمیم طراحی برای افزایش انعطافپذیری فایل پیکربندی و ساده نگه داشتن کد است. در عمل، این بدان معناست که `<a><b>c</b></a>` معمولاً معادل `<a b="c" />` است. با این حال، چند نکته وجود دارد:
2. ترتیب مشخصهها گاهی اوقات میتواند تعیینکننده باشد. برای مثال، هنگام تنظیم قلمها از طریق مشخصهها به جای فرزندان،
قلم را برای عنوان پنجرههای فعال تنظیم میکند، در حالی که
قلم را به گونهای تنظیم میکند که گویی 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) باشد.
مقادیر بولی (BOOLEANS)
توجه داشته باشید که در این راهنما، برای سادگی مقادیر بولی به صورت [yes|no] فهرست شدهاند، اما استفاده از [true|false] و/یا [on|off] نیز امکانپذیر است؛ این موضوع برای سازگاری با Openbox لحاظ شده است.
هسته (CORE)
<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]
<core><gap>
<core><adaptiveSync> [yes|no|fullscreen]
مقدار fullscreen همگامسازی تطبیقی را هر زمان که پنجره در حالت تمامصفحه باشد فعال میسازد.
<core><allowTearing> [yes|no|fullscreen|fullscreenForced]
مقدار yes در صورت درخواست پنجره فعال، اجازه پارگی تصویر را صادر میکند.
مقدار fullscreen در صورت درخواست پنجره فعال، اما فقط زمانی که پنجره در حالت تمامصفحه باشد، اجازه پارگی تصویر را میدهد.
مقدار fullscreenForced پارگی تصویر را هر زمان که پنجره فعال در حالت تمامصفحه باشد، بدون در نظر گرفتن اینکه آیا برنامه درخواست پارگی کرده یا خیر، فعال میکند.
از اکشن ToggleTearing برای فعالسازی اجباری پارگی تصویر استفاده کنید.
نکته: فعال کردن این گزینه با تنظیم حالت اتمیک (atomic mode setting) آزمایشی است. اگر هنگام مجاز بودن پارگی تصویر با اثرات جانبی نامطلوب روبرو شدید، متغیر محیطی WLR_DRM_NO_ATOMIC=1 را هنگام اجرای labwc تنظیم کنید.
<core><autoEnableOutputs> [yes|no]
هشدار: غیرفعال کردن این گزینه نشست 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]
<core><reuseOutputMode> [yes|no]
<core><xwaylandPersistence> [yes|no]
نکته: تغییر این تنظیم نیازمند راهاندازی مجدد labwc است.
<core><primarySelection> [yes|no]
<core><promptCommand>
مشخصکنندههای تبدیل زیر پشتیبانی میشوند:
- %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>
دستور خطای پیشفرض عبارت است از:
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)
<placement> <policy>cascade</policy> <cascadeOffset x="40" y="30" /> </placement>
<placement><policy> [center|automatic|cursor|cascade]
<placement><cascadeOffset><x>
<placement><cascadeOffset><y>
تعویضکننده پنجره (WINDOW SWITCHER)
<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="">
outlines [yes|no] رسم یک کادر دور پنجره انتخابشده هنگام جابهجایی میان پنجرهها. پیشفرض yes است.
unshade [yes|no] خارج کردن موقت پنجرهها از حالت سایهخورده (unshade) هنگام سوییچ میان آنها و خارج کردن دائمی با انتخاب نهایی. پیشفرض yes است.
order [focus|age] ترتیبی که پنجرهها در آن پیمایش میشوند. مقدار focus بر اساس تاریخچه تمرکز اخیر پیمایش میکند، با شروع از پنجرهای که پیشتر روی آن تمرکز بوده است. مقدار age بر اساس ترتیب ایجاد/باز شدن پیمایش میکند، که یک ترتیب پایدار به سبک نوار وظیفه است و با تمرکز تغییر نمیکند. پیشفرض focus است.
<windowSwitcher><osd show="" style="" output="" thumbnailLabelFormat="" />
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="%">
مشخصه 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 متفاوت باشد)
- •
- custom - زیرمجموعهای از گزینههای مجاز printf -- رجوع به man 3 printf
- امکان درج متن دلخواه وجود دارد
- طول فیلد، برای مثال "%10" از ۱۰ فاصله استفاده میکند، حتی اگر طول متن کمتر باشد
- چپچین کردن متن، مثال "%-"
- راستچین کردن متن، مثال "%" به جای "%-"
- برای مثال، %-10 متن را چپچین کرده و فضایی به اندازه ۱۰ نویسه ایجاد میکند
- •
- در حال حاضر تنها یک قالب سفارشی مجاز است. بهبودهای آینده ممکن است امکان استفاده از بیش از یک مورد را فراهم کند.
مشخصه width عرض فیلد را به صورت درصدی از عرض کل تعویضکننده پنجره تعیین میکند. نویسه "%" الزامی است.
مقاومت لبهها (RESISTANCE)
<resistance><screenEdgeStrength>
<resistance><windowEdgeStrength>
هنگامی که مقاومت یک لبه مثبت باشد، فاصلهای بر حسب پیکسل را نشان میدهد که نشانگر ماوس باید فراتر از هر لبه مربوطه برخوردکرده حرکت کند تا عملیات جابهجایی یا تغییر اندازه تعاملی در آن لبه ادامه یابد.
هنگامی که مقاومت منفی باشد، هرگونه جابهجایی یا تغییر اندازه تعاملی که نشانگر را به قدر مطلق فاصله مشخصشده (بر حسب پیکسل) از هر لبه مربوطه برساند، عملیات را به آن لبه میچسباند (snap). بنابراین، با نزدیک شدن جابهجایی یا تغییر اندازه به یک لبه، در محدوده فاصله مشخصشده نشانگر را به آن لبه «جذب» میکند. با ادامه جابهجایی یا تغییر اندازه به آن سوی لبه، تا زمانی که نشانگر فراتر از فاصله حرکت نکرده باشد مقاومت ایجاد خواهد کرد.
مقدار صفر مقاومت، اثر مقاومت متناظر را غیرفعال میسازد.
مقدار پیشفرض برای هر دو پارامتر ۲۰ پیکسل است.
<resistance><unSnapThreshold>
<resistance><unMaximizeThreshold>
تمرکز (FOCUS)
<focus><followMouse> [yes|no]
<focus><followMouseRequiresMovement> [yes|no]
<focus><raiseOnFocus> [yes|no]
<focus><raiseOnFocusDelay> [میلیثانیه]
چسباندن پنجرهها (WINDOW SNAPPING)
پنجرهها را میتوان با فعالسازی از طریق اکشنهای SnapToEdge یا بهصورت اختیاری با کشیدن پنجرهها به لبههای خروجی، به یک لبه یا ناحیه تعریفشده توسط کاربر از خروجی چسباند («snap» کرد). چسبیدن به لبه باعث میشود پنجره نیمی از خروجی خود را اشغال کرده و از لبه چسبیدهشده به سمت بیرون گسترش یابد.
<snapping><range><inner>
<snapping><range><outer>
<snapping><cornerRange>
<snapping><overlay><enabled> [yes|no]
<snapping><overlay><delay><inner>
<snapping><overlay><delay><outer>
<snapping><topMaximize> [yes|no]
<snapping><notifyClient> [always|region|edge|never]
- •
- هنگامی که always مشخص شود، هر پنجرهای که به لبه خروجی یا یک ناحیه تعریفشده توسط کاربر چسبانده شود رویداد کاشیکاری را دریافت میکند.
- •
- هنگامی که region مشخص شود، فقط پنجرههایی که به یک ناحیه تعریفشده توسط کاربر چسبانده شدهاند رویداد را دریافت میکنند.
- •
- هنگامی که edge مشخص شود، فقط پنجرههایی که به لبه خروجی چسبانده شدهاند رویداد را دریافت خواهند کرد.
- •
- هنگامی که never مشخص شود، رویدادهای کاشیکاری هرگز ایجاد نخواهند شد.
پیشفرض "always" است.
ناحیهها (REGIONS)
<regions><region name="snap-1" x="10%" y="10%" width="80%" height="80%">
فضاهای کاری (WORKSPACES)
<desktops number=""><names><name>
مشخصه number حداقل تعداد فضاهای کاری را تعریف میکند. پیشفرض 1 است. مشخصه number اختیاری است. در صورت مشخص شدن مشخصه number، بخش names.name الزامی نیست.
<desktops><initial>
<desktops><popupTime>
<desktops><prefix>
پوسته (THEME)
<theme><name>
<theme><icon>
<theme><fallbackAppIcon>
<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]
<theme><cornerRadius>
<theme><keepBorder> [yes|no]
<theme><maximizedDecoration> [titlebar|none]
<theme><dropShadows> [yes|no]
<theme><dropShadowsOnTiled> [yes|no]
پیشفرض no است.
<theme><font place="">
- ActiveWindow - نوار عنوان پنجره فعال
- InactiveWindow - نوار عنوان تمامی پنجرههایی که نشانگر روی آنها تمرکز ندارد
- MenuHeader - عنوان منو
- MenuItem - آیتم منو (در حال حاضر فقط منوی ریشه)
- OnScreenDisplay - موارد موجود در پیام روی صفحه (OSD)
<theme><font place=""><name>
<theme><font place=""><size>
<theme><font place=""><slant>
<theme><font place=""><weight>
حاشیه (MARGIN)
<margin top="" bottom="" left="" right="" output="" />
مشخصه output اختیاری است؛ اگر این مشخصه ارائه نشود (به جای اینکه یک رشته خالی باشد)، حاشیه برای تمامی خروجیها اعمال خواهد شد.
تغییر اندازه (RESIZE)
<resize><popupShow> [Never|Always|Nonpixel]
معانی مقادیر مختلف:
- Never نشانگر را رندر نکن
- Always نشانگر را هنگام جابهجایی و تغییر اندازه پنجرهها رندر کن
- Nonpixel فقط هنگام تغییر اندازه برای پنجرههایی که از size-hints استفاده میکنند نشانگر را رندر کن
پیشفرض Never است.
<resize><drawContents> [yes|no]
<resize><cornerRange>
<resize><minimumArea>
پیکربندی ورودی (INPUT CONFIGURATION)
این بخش پیکربندی دستگاههای ورودی را شرح میدهد، از جمله:
- صفحهکلیدها
- موشوارهها (ماوسها)
- تاچپدها (گاهی به عنوان ترکپد لپتاپ نامیده میشوند)
- صفحههای لمسی (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.
مراجع:
- https://wayland.freedesktop.org/libinput/doc/latest/tablet-support.html
- https://wayland.freedesktop.org/libinput/doc/latest/gestures.html
صفحهکلید (KEYBOARD)
<keyboard><numlock> [on|off]
<keyboard layoutScope=""> [global|window]
<keyboard><keybind key="" layoutDependent="" onRelease="" allowWhenLocked="" overrideInhibition="">
- 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="">
<keyboard><default />
A-Tab - پنجره بعدی A-S-Tab - پنجره قبلی W-Return - lab-sensible-terminal A-F4 - بستن پنجره W-a - تغییر وضعیت بزرگنمایی (maximize) W-d - تغییر وضعیت نمایش دسکتاپ (show-desktop) W-<arrow> - تغییر اندازه پنجره برای پر کردن نصف یا یکچهارم خروجی A-Space - نمایش منوی پنجره
<keyboard><repeatRate>
<keyboard><repeatDelay>
موشواره (MOUSE)
این بخش مربوط به ماوسها و تاچپدها است - که هر دو طبق پروتکل Wayland به عنوان دستگاههای ورودی نشانگر (pointer) در نظر گرفته میشوند.
<mouse><doubleClickTime>
<mouse><context name=""><mousebind button="" direction="" action=""><action>
تعریف میانبر ماوس. نامهای زمینه (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">...
- 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>
<mouse>
<default />
<context name="Frame">
<mousebind button="W-Left" action="Press" />
<mousebind button="W-Left" action="Drag" />
</context>
</mouse>
<mouse><default />
لمسی (TOUCH)
این بخش مربوط به صفحههای لمسی (touchscreens) است و نه تاچپدها.
نکته: برای چرخش رویدادهای لمسی همراه با چرخش خروجی، از تنظیم calibrationMatrix در libinput استفاده کنید.
<touch deviceName="" mapToOutput="" mouseEmulation="no" />
<touch deviceName="" />
<touch mapToOutput="" />
<touch mouseEmulation="" />
تبلت (TABLET)
<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]
همچنین برای تبدیلات پیشرفته به calibrationMatrix در بخش libinput در زیر مراجعه کنید.
<tablet><area top="mm" left="mm" width="mm" height="mm" />
ناحیه فعال تبلت را میتوان با تنظیم مختصات 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]
از اکشن ToggleTabletMouseEmulation برای تغییر وضعیت شبیهسازی ماوس بین روشن و خاموش استفاده کنید.
<tablet><map button="" to="" />
دکمههای نگاشت پشتیبانیشده (buttons) عبارتند از:
- Stylus
- Stylus2
- Stylus3
دکمههای قلم نوری را میتوان به موارد زیر نگاشت کرد (to):
- Right
- Middle
- Side
نوک قلم (Tip) را نمیتوان دوباره نگاشت کرد.
هنگام استفاده از شبیهسازی ماوس، تمام دکمههای قلم دکمههای معمولی ماوس را شبیهسازی میکنند. دکمههای نوک قلم، استایلوس و پد را میتوان به تمامی دکمههای موجود ماوس نگاشت کرد. در صورت عدم تعیین خلاف آن، نوک قلم به کلیک چپ ماوس نگاشت میشود، اولین دکمه قلم (Stylus) به کلیک دکمه راست ماوس نگاشت میشود و دومین دکمه قلم (Stylus2) کلیک دکمه میانی ماوس را شبیهسازی میکند. دکمههای ماوس ابزار تبلت بهطور پیشفرض به معادلهای ماوس (معمولی) خود نگاشت میشوند.
دکمههای نگاشت پشتیبانیشده (buttons) برای شبیهسازی ماوس عبارتند از:
- Tip
- Stylus
- Stylus2
- Stylus3
- Left..Task
- Pad
- Pad2..Pad9
برای تمام دکمههای ماوس پشتیبانیشده به بخش ماوس در بالا مراجعه کنید.
ابزار تبلت (TABLET TOOL)
<tabletTool motion="absolute" relativeMotionSensitivity="1.0" minPressure="0.0" maxPressure="1.0" />
<tabletTool motion=""> [absolute|relative]
<tabletTool relativeMotionSensitivity="">
<tabletTool minPressure="">
<tabletTool maxPressure="">
کتابخانه LIBINPUT
<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>
CATEGORY یک دستهبندی از دستگاهها را (بر اساس نوع یا نام) برای اعمال تنظیمات بعدی تعریف میکند. مشخصه category اختیاری است. اگر مشخصه category ارائه نشود، یک پروفایل دستگاه 'default' ایجاد میشود که به عنوان fallback برای تمامی دستگاههای libinput عمل خواهد کرد. مشخصه Category میتواند روی هر یک از انواع زیر تنظیم شود:
- touch - شامل صفحههای لمسی و تبلتهای طراحی.
- touchpad - شامل تاچپدها (ترکپدهای لپتاپ).
- non-touch - شامل ماوسهای سنتی.
- default - دستهبندی دستگاهی قابل اعمال بر تمام دستگاههایی که با هیچ چیز دیگری مطابقت ندارند را تعریف میکند. این میتواند به عنوان fallback یا زمانی که میخواهید همان تنظیمات برای تمام دستگاهها اعمال شود مفید باشد.
اگر مقدار category ارائهشده با تمام کلمات کلیدی فوق متفاوت باشد، برای تطبیق مستقیم با نام دستگاه استفاده خواهد شد.
فهرستی از نامهای دستگاهها را میتوان با اجرای دستور libinput list-devices به دست آورد (ممکن است برای انجام این کار نیاز به دسترسی root یا عضویت در گروه input داشته باشید).
<libinput><device><naturalScroll> [yes|no]
<libinput><device><leftHanded> [yes|no]
<libinput><device><pointerSpeed> [-1.0 تا 1.0]
<libinput><device><accelProfile> [flat|adaptive]
<libinput><device><tap> [yes|no]
<libinput><device><tapButtonMap> [lrm|lmr]
<libinput><device><tapAndDrag> [yes|no]
<libinput><device><dragLock> [yes|no|timeout]
مقدار 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]
<libinput><device><clickMethod> [none|buttonAreas|clickfinger]
روشهای کلیک موجود عبارتند از:
- buttonAreas - پایین تاچپد به نواحی متمایز مربوط به دکمههای چپ، میانی و راست تقسیم میشود؛ کلیک درون هر ناحیه رویداد مربوطه را ایجاد میکند. کلیک روی ناحیه اصلی بالاتر یک رویداد دکمه چپ تولید میکند.
- clickfinger - کلیک با یک، دو یا سه انگشت بدون توجه به محل کلیک، رویداد دکمه چپ، راست یا میانی تولید میکند.
- none - کلیکهای فیزیکی هیچ رویداد دکمهای ایجاد نمیکنند.
روش پیشفرض به سختافزار تاچپد بستگی دارد.
<libinput><device><scrollMethod> [none|twofinger|edge|onbutton]
روشهای پیمایش موجود عبارتند از:
- twofinger - پیمایش با قرار دادن دو انگشت روی سطح تاچپد و سپس حرکت دادن آن انگشتان به صورت عمودی یا افقی.
- edge - پیمایش با حرکت دادن یک انگشت در امتداد لبه راست (پیمایش عمودی) یا لبه پایین (پیمایش افقی).
- onbutton - پیمایش با فشردن یک دکمه.
- none - هیچ رویداد پیمایشی ایجاد نخواهد شد.
روش پیشفرض به سختافزار تاچپد بستگی دارد.
<libinput><device><scrollButton> [button]
مقدار button فرم دهدهی یک مقدار از `linux/input-event-codes.h` است.
<libinput><device><sendEventsMode> [yes|no|disabledOnExternalMouse]
گزینههای موجود عبارتند از:
- yes - رویدادها طبق معمول ارسال میشوند
- no - هیچ رویدادی از این دستگاه ارسال نمیشود
- disabledOnExternalMouse - در صورت شناسایی ماوس خارجی، این دستگاه رویدادی ارسال نمیکند.
میتوان مانع ارسال رویدادها از یک دستگاه در پیکربندی شد و سپس با Reconfigure دستگاههای خاص را موقتاً فعال / غیرفعال کرد.
بهطور پیشفرض، این تنظیم پیکربندی نشده است.
<libinput><device><calibrationMatrix> [شش مقدار اعشاری جداشده با فاصله]
با در نظر گرفتن یک آرایه ۶ عنصری [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>
قوانین پنجره (WINDOW RULES)
دو نوع قانون پنجره پشتیبانی میشود: اکشنها و ویژگیها. آنها همانطور که در زیر نشان داده شده تعریف میشوند.
<windowRules>
<!-- Action -->
<windowRule identifier="" title="" type="">
<action name="" />
</windowRule>
<!-- Property -->
<windowRule identifier="" serverDecoration="" />
</windowRules>
معیارها (Criteria)
<windowRules><windowRule identifier="" title="" sandboxEngine="" sandboxAppId="" type="" matchOnce="">
مشخصه 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]
<windowRules><windowRule skipTaskbar=""> [yes|no|default]
<windowRules><windowRule skipWindowSwitcher=""> [yes|no|default]
<windowRules><windowRule ignoreFocusRequest=""> [yes|no|default]
<windowRules><windowRule ignoreConfigureRequest=""> [yes|no|default]
<windowRules><windowRule allowAlwaysOnTop=""> [yes|no|default]
نکته: درخواستهای همیشه در بالا بودن پنجرههای X11 بهطور پیشفرض غیرمجاز هستند. این قانون پنجره روشی را برای مجاز ساختن آن فراهم میکند.
<windowRules><windowRule fixedPosition=""> [yes|no|default]
<windowRules><windowRule iconPriority=""> [client|server]
این ویژگی امکان اولویتبندی آیکونهای ارائهشده توسط کلاینت را برای برنامههای خاص فراهم میسازد. پیشفرض server است.
منو (MENU)
<menu> <ignoreButtonReleasePeriod>250</ignoreButtonReleasePeriod> <showIcons>yes</showIcons> </menu>
<menu><ignoreButtonReleasePeriod>
<menu><showIcons>
ذرهبین (MAGNIFIER)
<magnifier> <width>400</width> <height>400</height> <initScale>2</initScale> <increment>0.2</increment> <useFilter>true</useFilter> </magnifier>
<magnifier><width>
<magnifier><height>
<magnifier><initScale>
<magnifier><increment>
<magnifier><useFilter> [yes|no|default]
رابطهای ممتاز (PRIVILEGED INTERFACES)
ابزار 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`
متغیرهای محیطی (ENVIRONMENT VARIABLES)
XCURSOR_PATH
XCURSOR_SIZE
XCURSOR_THEME
پوستههای مکاننمای سیستم معمولاً با دستوری مانند زیر یافت میشوند:
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) مراجعه کنید.
همچنین ببینید (SEE ALSO)
labwc(1), labwc-actions(5), labwc-theme(5)
| 2026-08-22 |