| RIVERCTL(1) | General Commands Manual | RIVERCTL(1) |
نام (NAME)
riverctl - رابط خط فرمان برای کنترل و پیکربندی ریور (river)
خلاصه دستور (SYNOPSIS)
riverctl [گزینهها] command [آرگومانهای ویژه دستور]
توضیحات (DESCRIPTION)
ابزار riverctl یک ابزار خط فرمانی است که برای کنترل و پیکربندی river از طریق پروتکل ویلند (Wayland) به کار میرود.
گزینهها (OPTIONS)
-h
-version
اصطلاحات (TERMINOLOGY)
این صفحه راهنما از اصطلاحاتی استفاده میکند که ممکن است برای برخی گیجکننده باشد، چرا که بیشتر از کاربرد آنها در سایر پروژههای ویلند سرچشمه میگیرند.
واژههای کامپوزیتور (compositor)، کارساز نمایش (display server)، کارساز ویلند (Wayland server) و غیره روشهایی برای اشاره به خود river هستند.
یک نما (view) (یا toplevel) چیزی است که بیشتر افراد آن را پنجره مینامند.
یک خروجی (output) مترادفی برای یک صفحهنمایش یا نمایشگر (مانیتور) است.
برچسبها (Tags) روش river برای تقسیم نماهای یک خروجی به گروهها (نه لزوماً مجزا) هستند که مشابه میزکارهای مجازی (workspaces) عمل میکنند.
دستورات (COMMANDS)
عملیات (ACTIONS)
close
exit
focus-output next|previous|up|right|down|left|name
focus-view [-skip-floating] next|previous|up|down|left|right
- •
- -skip-floating: نادیده گرفتن نماهای شناور و انتقال فوکوس فقط به نماهای کاشیشده (tiled).
move up|down|left|right delta
resize horizontal|vertical delta
snap up|down|left|right
send-to-output [-current-tags] next|previous|up|right|down|left|name
- •
- -current-tags: اختصاص برچسبهای دارای فوکوس فعلی خروجی مقصد به نما.
spawn shell_command
swap next|previous|up|down|left|right
toggle-float
toggle-fullscreen
zoom
default-layout namespace
output-layout namespace
send-layout-cmd namespace command
مدیریت برچسبها (TAG MANAGEMENT)
برچسبها شبیه به فضاهای کاری (workspaces) هستند اما انعطافپذیری بیشتری دارند. شما میتوانید چند برچسب را به یک نما اختصاص دهید و همزمان چند برچسب را فوکوس کنید. هنگام تعامل با river، از فیلدهای بیتی (bitfields) برای توصیف مجموعهای از برچسبها استفاده میشود. بنابراین دستورات زیر یک عدد معمولی در مبنای ۱۰ را به عنوان آرگومان دریافت میکنند، اما معنای آنها در قالب دودویی (باینری) به بهترین شکل فهمیده میشود. عدد دودویی 000000001 نمایانگر مجموعهای است که فقط شامل برچسب ۱ است، در حالی که 100001101 مجموعهای شامل برچسبهای ۱، ۳، ۴ و ۹ را نشان میدهد.
هنگامی که یک نما ایجاد میشود، برچسبهای دارای فوکوس فعلی خروجی به آن اختصاص مییابد.
همواره باید حداقل یک برچسب فوکوس داشته باشد و به هر نما باید حداقل یک برچسب اختصاص داده شود. عملیاتی که هر یک از این شرایط را نقض کند توسط river نادیده گرفته میشود.
set-focused-tags tags
set-view-tags tags
toggle-focused-tags tags
toggle-view-tags tags
spawn-tagmask tagmask
focus-previous-tags
send-to-previous-tags
نگاشت کلیدها و رویدادها (MAPPINGS)
نگاشتها در river حالتی (modal) هستند. هر نگاشت با یک حالت (mode) پیوند دارد و تنها زمانی فعال است که در آن حالت باشید. دو حالت ویژه وجود دارد: "normal" و "locked". حالت normal حالت اولیه هنگام راهاندازی است. حالت locked هنگام قفل شدن نشست (مثلاً به دلیل فعال شدن قفل صفحه) به طور خودکار وارد میشود. ورود یا خروج دستی از این حالت امکانپذیر نیست.
کلیدهای تغییردهنده (modifiers) زیر برای استفاده در نگاشتها در دسترس هستند:
- Shift
- Control
- Mod1 (Alt)
- Mod3
- Mod4 (Super)
- Mod5
- None
کلیدهای Alt و Super به ترتیب نامهای مستعار برای Mod1 و Mod4 هستند. کلید None امکان ایجاد نگاشت بدون کلید تغییردهنده را فراهم میآورد.
کلیدها بر اساس نام keysym در XKB مشخص میشوند. برای مشاهده فهرست کامل به /usr/include/xkbcommon/xkbcommon-keysyms.h مراجعه کنید.
دکمههای ماوس با نامهای کدهای رویداد ورودی لینوکس (Linux input event code) مشخص میشوند. پرکاربردترین مقادیر عبارتند از:
- BTN_LEFT - دکمه چپ ماوس
- BTN_RIGHT - دکمه راست ماوس
- BTN_MIDDLE - دکمه وسط ماوس
فهرست کامل را میتوانید در /usr/include/linux/input-event-codes.h بیابید.
declare-mode name
enter-mode name
map [-release|-repeat|-layout index] mode modifiers key command
- -release: در صورت ارسال، فعالسازی با رها کردن کلید به جای فشردن آن انجام میشود
- -repeat: در صورت ارسال، فعالسازی مکرر تا زمان رها کردن کلید ادامه مییابد؛ نمیتوان آن را همراه با -release استفاده کرد
- -layout: در صورت ارسال، یک چیدمان خاص به این نگاشت سنجاق میشود. هنگامی که نگاشت با کلید فشردهشده مقایسه میشود، این چیدمان برای ترجمه کلید صرفنظر از چیدمان فعال به کار میرود
- •
- index: نمایه برمبنای صفر از یک چیدمان که با دستور keyboard-layout تنظیم شده است. اگر نمایه خارج از محدوده باشد، گزینه -layout هیچ تأثیری نخواهد داشت
- mode: نام حالتی که نگاشت برای آن ایجاد میشود
- modifiers: یک یا چند کلید تغییردهنده از فهرست بالا که با علامت جمع (+) از هم جدا شدهاند.
- key: نام keysym مربوط به XKB همانگونه که در بالا شرح داده شد
- command: هر دستوری که قابلیت اجرا با riverctl را داشته باشد
map-pointer mode modifiers button action|command
- mode: نام حالتی که نگاشت برای آن ایجاد میشود
- modifiers: یک یا چند کلید تغییردهنده از موارد فهرستشده در بالا، جداشده با علامت جمع (+).
- button: نام یک کد رویداد ورودی لینوکس همانگونه که در بالا شرح داده شد
- action: یکی از مقادیر زیر:
- move-view
- resize-view
- •
- command: هر دستوری که قابلیت اجرا با riverctl را داشته باشد
map-switch mode lid|tablet state command
- mode: نام حالتی که نگاشت برای آن ایجاد میشود
- lid|tablet: کلیدهای 'lid switch' (سوییچ درب لپتاپ) و 'tablet mode switch' (سوییچ حالت تبلت) پشتیبانی میشوند
- state:
- •
- حالتهای ممکن برای lid:
- close
- open
- •
- حالتهای ممکن برای tablet:
- on
- off
- •
- command: هر دستوری که قابلیت اجرا با riverctl را داشته باشد
unmap [-release] mode modifiers key
- -release: در صورت ارسال، لغو نگاشت رها کردن کلید به جای فشردن آن انجام میشود
- mode: نام حالتی که نگاشت از آن حذف میشود
- modifiers: یک یا چند کلید تغییردهنده از موارد ذکرشده در بالا، جداشده با علامت جمع (+).
- key: نام keysym مربوط به XKB همانگونه که در بالا شرح داده شد
unmap-pointer mode modifiers button
- mode: نام حالتی که نگاشت از آن حذف میشود
- modifiers: یک یا چند کلید تغییردهنده از موارد ذکرشده در بالا، جداشده با علامت جمع (+).
- button: نام یک کد رویداد ورودی لینوکس همانگونه که در بالا شرح داده شد
unmap-switch mode lid|tablet state
- mode: نام حالتی که نگاشت از آن حذف میشود
- lid|tablet: سوییچی که نگاشت آن باید حذف شود
- state: حالتی مطابق موارد ذکرشده در بالا
قوانین (RULES)
قوانین، app-id و عنوان (title) نماها را با یک الگوی glob تطبیق میدهند. یک glob رشتهای است که میتواند به طور اختیاری دارای علامت * در ابتدا و/یا انتها باشد. یک * در یک glob با صفر یا چند نویسه دلخواه در app-id یا عنوان تطبیق مییابد.
برای نمونه، abc با الگوهای a*، *a*، *b*، *c، abc و * تطبیق دارد اما با *a، b*، *b، c* یا ab تطبیق نمییابد. توجه داشته باشید که * با همهچیز تطبیق دارد در حالی که ** و رشته خالی نامعتبر هستند.
rule-add [-app-id glob|-title glob] action [arguments]
انواع action پشتیبانیشده عبارتند از:
- float: شناور کردن نما. تنها بر نماهای جدید اعمال میشود.
- no-float: عدم شناور کردن نما. تنها بر نماهای جدید اعمال میشود.
- ssd: استفاده از تزئینات سمت کارساز (server-side decorations) برای نما. بر نماهای جدید و موجود اعمال میشود.
- csd: استفاده از تزئینات سمت کلاینت (client-side decorations) برای نما. بر نماهای جدید و موجود اعمال میشود.
- tags: تنظیم برچسبهای اولیه نما. نیازمند برچسبها به عنوان آرگومان است. تنها بر نماهای جدید اعمال میشود.
- output: تنظیم خروجی اولیه نما. نیازمند خروجی به عنوان آرگومان است. تنها بر نماهای جدید اعمال میشود. خروجی میتواند از طریق نام اتصالدهنده (مانند HDMI-A-1 یا DP-2) یا از طریق شناسه به فرمت MAKE MODEL SERIAL مشخص شود؛ به عنوان مثال برای خروجی با سازنده: HP Inc.، مدل: HP 22w و سریال: CNC93720WF، شناسه برابر خواهد بود با: HP Inc. HP 22w CNC93720WF. اگر سازنده، مدل یا سریال نامشخص باشد، واژه "Unknown" به جای آن استفاده میشود.
- position: تنظیم موقعیت مکانی اولیه نما، با محدود شدن به کادر خروجی. نیازمند مختصات x و y نما به عنوان آرگومان است که هر دو باید نامنفی باشند. تنها بر نماهای جدید اعمال میشود.
- dimensions: تنظیم ابعاد اولیه نما، با رعایت محدودیتهای نما. نیازمند عرض و ارتفاع نما به عنوان آرگومان است که هر دو باید نامنفی باشند. تنها بر نماهای جدید اعمال میشود.
- fullscreen: تمامصفحه کردن نما. تنها بر نماهای جدید اعمال میشود.
- no-fullscreen: عدم تمامصفحه کردن نما. تنها بر نماهای جدید اعمال میشود.
- tearing: مجاز دانستن پارگی تصویر (tearing) برای نما در حالت تمامصفحه، صرفنظر از ترجیح خود نما. بر نماهای جدید و موجود اعمال میشود.
- no-tearing: غیرفعال کردن پارگی تصویر برای نما، صرفنظر از ترجیح خود نما. بر نماهای جدید و موجود اعمال میشود.
هر دو قانون float و no-float به یک فهرست افزوده میشوند، به این معنی که افزودن یک قانون no-float با آرگومانهای یکسان با یک قانون float، آن را بازنویسی میکند. همین اصل برای قوانین ssd و csd، fullscreen و no-fullscreen، و همچنین tearing و no-tearing نیز صادق است.
اگر چندین قانون در یک فهرست با یک نمای مشخص تطبیق یابند، خاصترین (دقیقترین) قانون اعمال خواهد شد. برای نمونه در قوانین زیر
app-id title action foo bar ssd foo * csd * bar csd * baz ssd
اگر یک نما با هیچ قانونی تطبیق نیابد، river به خواستههای csd/ssd کلاینت احترام میگذارد و ممکن است بر اساس روشهای مکاشفهای (heuristics) ساده که برای تشخیص نماهای شبه-پاپآپ طراحی شدهاند، نما را در وضعیت شناور آغاز کند.
اگر یک نما به صورت تمامصفحه آغاز شود یا شناور نباشد، قوانین position و dimensions هیچ تأثیری نخواهند داشت. برای اثرگذاری آنها، نما باید حتماً با یک قانون float تطبیق داده شود.
rule-del [-app-id glob|-title glob] action
list-rules float|ssd|tags|position|dimensions|fullscreen
پیکربندی (CONFIGURATION)
default-attach-mode top|bottom|above|below|after <N>
مقادیر ممکن:
- top: افزودن نمای جدید به بالای پشته.
- bottom: افزودن نمای جدید به انتهای پشته.
- above: درج نمای جدید بالای نمای دارای فوکوس فعلی.
- below: درج نمای جدید زیر نمای دارای فوکوس فعلی.
- after <N>: درج نمای جدید پس از N نما در پشته.
توجه داشته باشید که دستور منسوخشده attach-mode به منظور حفظ سازگاری عقبرو به default-attach-mode نام مستعار داده شده است.
output-attach-mode top|bottom|above|below|after <N>
allow-tearing enabled|disabled
background-color 0xRRGGBB|0xRRGGBBAA
border-color-focused 0xRRGGBB|0xRRGGBBAA
border-color-unfocused 0xRRGGBB|0xRRGGBBAA
border-color-urgent 0xRRGGBB|0xRRGGBBAA
border-width pixels
focus-follows-cursor disabled|normal|always
- disabled: حرکت مکاننما بر فوکوس تأثیری نمیگذارد. این حالت پیشفرض است.
- normal: حرکت مکاننما روی یک نما باعث فوکوس شدن آن نما میشود. حرکت مکاننما در داخل یک نما، در صورتی که فوکوس به جای دیگری منتقل شده باشد، آن نما را مجدداً فوکوس نمیکند.
- always: حرکت مکاننما همیشه نمایی را که زیر مکاننما قرار دارد فوکوس میکند.
اگر نمایی که باید فوکوس شود روی خروجیای باشد که فوکوس ندارد، فوکوس به آن خروجی تغییر مییابد.
hide-cursor timeout timeout
hide-cursor when-typing enabled|disabled
set-cursor-warp disabled|on-output-change|on-focus-change
- disabled: مکاننما پرش نخواهد داشت. این حالت پیشفرض است.
- on-output-change: هنگامی که خروجی دیگری فوکوس شود، مکاننما به مرکز آن پرش میکند.
- on-focus-change: هنگامی که نما/خروجی دیگری فوکوس شود، مکاننما به مرکز آن پرش میکند.
set-repeat rate delay
xcursor-theme theme_name [size]
پیکربندی ورودی (INPUT CONFIGURATION)
list-inputs
list-input-configs
keyboard-layout [-rules rules] [-model model] [-variant variant] [-options options] layout
keyboard-layout-file path
دستور input میتواند برای ایجاد یک قانون پیکربندی برای یک دستگاه ورودی که با name مشخص میشود، مورد استفاده قرار گیرد. نام (name) یک دستگاه ورودی شامل نوع آن، شناسه دهدهی تولیدکننده (vendor id)، شناسه دهدهی محصول (product id) و سرانجام نام اعلامشده توسط خودش است که با خط تیره (-) از هم جدا میشوند. الگوهای ساده انطباق (globbing) پشتیبانی میشوند؛ برای اطلاعات بیشتر درباره globها بخش قوانین را ببینید.
فهرستی از تمام ویژگیهای قابل پیکربندی دستگاه در زیر آمده است. با این حال توجه داشته باشید که هر دستگاه ورودی ممکن است از تمام ویژگیها پشتیبانی نکند.
input name events enabled|disabled|disabled-on-external-mouse
input name accel-profile none|flat|adaptive
input name pointer-accel factor
input name click-method none|button-areas|clickfinger
input name drag enabled|disabled
input name drag-lock enabled|disabled
input name disable-while-typing enabled|disabled
input name disable-while-trackpointing enabled|disabled
input name middle-emulation enabled|disabled
input name natural-scroll enabled|disabled
input name scroll-factor factor
input name left-handed enabled|disabled
input name tap enabled|disabled
input name tap-button-map left-right-middle|left-middle-right
- left-right-middle: ضربه با ۱ انگشت معادل کلیک چپ، ضربه با ۲ انگشت معادل کلیک راست، ضربه با ۳ انگشت معادل کلیک وسط.
- left-middle-right: ضربه با ۱ انگشت معادل کلیک چپ، ضربه با ۲ انگشت معادل کلیک وسط، ضربه با ۳ انگشت معادل کلیک راست.
input name scroll-method none|two-finger|edge|button
- none: بدون پیمایش
- two-finger: پیمایش با کشیدن همزمان دو انگشت
- edge: پیمایش با کشیدن انگشت در امتداد لبه
- button: پیمایش با حرکت اشارهگر در حین نگه داشتن یک دکمه
input name scroll-button button
input name scroll-button-lock enabled|disabled
input name map-to-output output|disabled
مثالها (EXAMPLES)
پیوند دادن Super+Return در حالت normal برای اجرای یک ترمینال foot(1):
پیوند دادن Super+Shift+J برای تعویض نمای دارای فوکوس با نمای نمایان بعدی:
نویسندگان (AUTHORS)
نگهداریشده توسط Isaac Freund <mail@isaacfreund.com> با همکاری مشارکتکنندگان متنباز. برای کسب اطلاعات بیشتر درباره توسعه river به https://isaacfreund.com/software/river مراجعه کنید.
همچنین ببینید (SEE ALSO)
| 2026-05-07 |