UWSM(1) General Commands Manual UWSM(1)

UWSM - مدیر نشست جامع ویلند (Wayland).

uwsm [-h|-v] {subcommand} [options ...]

کامپوزیتور دلخواه Wayland را از طریق مجموعه‌ای از واحدهای کاربری systemd راه‌اندازی می‌کند تا یک نشست کاربری گرافیکی همراه با مدیریت محیط، پشتیبانی از شروع خودکار (autostart) استاندارد XDG و خاتمه پاکیزه فراهم سازد. همچنین ابزارهای کمکی برای راه‌اندازی برنامه‌ها در قالب scopeها یا serviceها ارائه می‌دهد.

select انتخاب مدخل (Entry) پیش‌فرض کامپوزیتور.
start شروع کامپوزیتور و نشست گرافیکی.
finalize ارسال متغیرهای تنظیم‌شده توسط کامپوزیتور و اعلان راه‌اندازی واحد به مدیر کاربری systemd.
stop توقف نشست گرافیکی و کامپوزیتور.
app راه‌انداز واحدهای برنامه‌ها (با پشتیبانی از Desktop Entry).
check انجام بررسی‌های وضعیت (برای اسکریپت‌نویسی و دریافت اطلاعات).
aux توابع فنی برای استفاده درون واحدها.

برای اطلاعات بیشتر، زیربخش‌های مربوط به SUBCOMMANDS را در ادامه مشاهده کنید.

راهنمای هر زیردستور با اجرای «uwsm {subcommand} -h» قابل دسترسی است.

در سلسله‌مراتب پیکربندی XDG:

uwsm/env
uwsm/env.d/*
uwsm/env-${compositor}
uwsm/env-${compositor}.d/* محیط (shell) که باید برای نشست گرافیکی فراخوانی (source) شود. از دایرکتوری‌هایی با اولویت افزایشی فراخوانی می‌شود؛ در هر دایرکتوری ابتدا فایل مشترک خوانده می‌شود، سپس فایل‌های پسونددار به ترتیب موارد ذکر شده در متغیر XDG_CURRENT_SESSION (با حروف کوچک).
uwsm/default-id شناسه Desktop Entry کامپوزیتور پیش‌فرض را ذخیره می‌کند.

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

UWSM_UNIT_RUNG (run|home)
کدام سطح از سلسله‌مراتب systemd/user/ برای مدیریت فایل‌های unit و drop-in تولیدشده استفاده شود: $XDG_RUNTIME_DIR یا $XDG_CONFIG_HOME.
UWSM_TWEAKS (مقدار بولی)
برای حذف و تولید نکردن drop-inهای بهینه‌ساز (tweak) برای سایر نرم‌افزارها، روی False تنظیم شود.
UWSM_FINALIZE_VARNAMES (نام متغیرهای محیطی جداشده با فاصله)
متغیرهای اضافی برای «uwsm finalize».
UWSM_WAIT_VARNAMES (نام متغیرهای محیطی جداشده با فاصله)
متغیرهایی که پیش از رفتن به نشست گرافیکی، باید در محیط فعال‌سازی منتظر آن‌ها ماند (علاوه بر WAYLAND_DISPLAY).
UWSM_WAIT_VARNAMES_TIMEOUT (مقدار صحیح)
مدت‌زمان (به ثانیه) برای انتظار جهت ظاهر شدن متغیرها در محیط فعال‌سازی. در اصل، مهلت زمانی راه‌اندازی (پیش‌فرض: 10).
UWSM_WAIT_VARNAMES_SETTLETIME (مقدار اعشاری)
مدت‌زمان توقف (به ثانیه) پس از پیدا شدن تمام متغیرهای مورد انتظار در محیط فعال‌سازی (پیش‌فرض: 0.2).
UWSM_APP_UNIT_TYPE (scope|service)
نوع unit پیش‌فرض برای اجرای برنامه‌ها (پیش‌فرض: scope).
UWSM_SILENT_START (مقدار صحیح یا بولی)
مقدار True یا 1 برای جلوگیری از پیام‌های stdout حاصل از «uwsm start». مقدار 2 برای مهار هشدارها نیز به‌کار می‌رود.
DEBUG (مقدار صحیح یا بولی)
مقدار True یا یک عدد مثبت برای ارسال اطلاعات اشکال‌زدایی به stderr.

uwsm می‌تواند با استفاده از دستور شرطی exec در نمایه شل (shell profile) به منظور جایگزین شدن با شل ورود راه‌اندازی شود (بخش Shell Profile Integration را ببینید).

همچنین می‌توان دستور «uwsm start ...» را در Desktop Entry نشست Wayland قرار داد تا توسط یک مدیر نمایش (display manager) راه‌اندازی شود (بخش Use Inside Desktop Entry را ببینید).

uwsm می‌تواند خط فرمان دلخواهی از کامپوزیتور یا یک Desktop Entry را بر اساس شناسه (ID) اجرا کند (مشخص کردن Action ID نیز پشتیبانی می‌شود).

همچنین Desktop Entry را می‌توان از طریق یک منوی whiptail انتخاب کرد (بخش زیرفرمان select را ببینید).

برای ساختار دستوری، بخش زیرفرمان start را ببینید.

ابزار UWSM از مجموعه‌ای از واحدها استفاده می‌کند که به تارگت‌های استاندارد نشست کاربر مقید شده‌اند:

•
wayland-session-pre@.target (متصل به graphical-session-pre.target)
•
wayland-wm-env@.service (سرویس پیش‌بارگذار محیط)
•
wayland-session@.target (متصل به graphical-session.target)
•
wayland-wm@.service (سرویس کامپوزیتور انتخاب‌شده)
  • wayland-session-xdg-autostart@.target (متصل به xdg-desktop-autostart.target)
  • wayland-session-envelope@.target (در تمام طول چرخه حیات فعال می‌ماند)
  • wayland-session-shutdown.target (برای خاموش‌سازی، با تارگت‌های بالا در تداخل است)
  • wayland-session-bindpid@.service (کلید قطع اضطراری نشست با ردگیری PID)
  • wayland-session-waitenv.service (نشست گرافیکی را تا زمان پدیدار شدن متغیرها به تأخیر می‌اندازد)

شناسه کامپوزیتور (شناسه Desktop Entry یا نام فایل اجرایی) به مشخص‌کننده (specifier) برای تمام واحدهای قالب‌بندی‌شده تبدیل می‌شود.

در مرحلهٔ graphical-session-pre.target، متغیرهای محیطی ذخیره‌شده از زمینهٔ «uwsm start» بارگذاری می‌شوند (یا نمایه شل POSIX با دستور source فراخوانی می‌شود)، و فایل‌های محیطی uwsm نیز سورس می‌شوند. تفاضل ایجادشده (delta) توسط سرویس پیش‌بارگذار محیط به محیط‌های فعال‌سازی systemd و D-Bus صادر شده و برای پاک‌سازی در مرحلهٔ خاموش‌سازی نشانه‌گذاری می‌شود. در زمینه شل پیش‌بارگذار جهت سهولت، متغیر IN_UWSM_ENV_PRELOADER بر روی true تنظیم شده است.

در مرحلهٔ graphical-session.target (پیش از آن)، واحد اصلی کامپوزیتور wayland-wm@${ID}.service و wayland-session-waitenv.service راه‌اندازی می‌شوند.

کامپوزیتور باید دست‌کم متغیر WAYLAND_DISPLAY را در محیط فعال‌سازی systemd قرار دهد. این کار منطق نهایی‌سازی خودکار uwsm را فعال می‌کند. بدون وجود WAYLAND_DISPLAY در محیط فعال‌سازی، فرایند راه‌اندازی پس از ۱۰ ثانیه با اتمام مهلت زمانی (timeout) مواجه خواهد شد.

نهایی‌سازی دستی با اجرای دستور «uwsm finalize» امکان‌پذیر است (بخش زیرفرمان finalize را ببینید)، و همچنین می‌توان آن را با دستکاری متغیرهای UWSM_WAIT_VARNAMES و UWSM_WAIT_VARNAMES_SETTLETIME ترکیب کرد (بخش Environment vars را ببینید).

فعال‌سازی موفق واحد کامپوزیتور و وجود WAYLAND_DISPLAY در محیط فعال‌سازی به graphical-session.target اجازه می‌دهد تا به‌عنوان محقق‌شده اعلام شود.

در نهایت، xdg-desktop-autostart.target فعال می‌شود.

اکیداً توصیه می‌شود که کامپوزیتور یا راه‌انداز برنامه (app launcher) را طوری پیکربندی کنید که برنامه‌ها را به‌صورت scope یا service در اسلایس‌های ویژهٔ نشست کاربر (app.slice، background.slice، session.slice) اجرا کند. uwsm اسلایس‌های تودرتوی سفارشی را فراهم می‌کند تا برنامه‌ها درون آن‌ها قرار گیرند و با پایان نشست متوقف شوند:

  • app-graphical.slice
  • background-graphical.slice
  • session-graphical.slice

یک زیرفرمان کمکی app برای مدیریت تمام فراخوانی‌های systemd-run برای شما در نظر گرفته شده است (بخش زیرفرمان app را ببینید).

کامپوزیتور به‌طور پیش‌فرض در session.slice اجرا می‌شود (همان‌طور که توسط systemd.special(7) توصیه شده است).

می‌تواند با هر یک از موارد زیر آغاز شود:

  • اجرای uwsm stop
  • متوقف کردن wayland-wm@*.service یا wayland-session-envelope@*.target
  • شروع wayland-session-shutdown.target

Systemd طبق معمول تمام واحدهای کاربری را به ترتیب معکوس متوقف می‌کند. در حین غیرفعال‌سازی graphical-session-pre.target، سرویس پیش‌بارگذار محیط با لغو مقدار (unset کردن) تمام متغیرهایی که در مراحل راه‌اندازی و نهایی‌سازی برای حذف علامت‌گذاری شده بودند، محیط‌های فعال‌سازی را پاک‌سازی می‌کند.

از سازوکار خروج بومی کامپوزیتور استفاده نکنید و فرایند آن را مستقیماً خاتمه ندهید (kill نکنید).

مدخل دسکتاپ (Desktop Entry) پیش‌فرض کامپوزیتور نشست wayland را انتخاب می‌کند.

uwsm select

یک منوی whiptail را برای انتخاب نشست پیش‌فرض از میان Desktop Entryها در سلسله‌مراتب داده‌های XDG در wayland-sessions فراخوانی می‌کند. مقدار انتخابی را در ${XDG_CONFIG_HOME}/uwsm/default-id می‌نویسد. اقدام دیگری انجام نمی‌شود. در صورت لغو انتخاب، مقدار 1 را برمی‌گرداند. می‌تواند برای اسکریپت‌نویسیِ شرط اجرا در پروفایل شل (shell profile) استفاده شود.

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

is-active:

uwsm check is-active [-h] [-v] [compositor]
-v نمایش اطلاعات اضافی
compositor بررسی برای کامپوزیتور مشخص

بررسی می‌کند که آیا واحد مربوط به compositor مشخص یا به‌طور کلی graphical-session*.target در وضعیت فعال (active) یا در حال فعال‌سازی (activating) است یا خیر.

may-start:

uwsm check may-start [-h] [-g [S]] [-v|-q] [N ...]
N ... شماره‌های مجاز VT (پیش‌فرض: 1)
-g S به مدت S ثانیه در صف منتظر graphical.target می‌ماند (پیش‌فرض: 60؛ 0 یا کمتر بررسی را غیرفعال می‌کند).
-i عدم بررسی برای شل ورود (login shell)
-r عدم بررسی برای نشست محلی (مجاز دانستن نشست از راه دور)
-v نمایش تمام آزمون‌های ناموفق
-q حالت بی‌صدا

بررسی می‌کند که آیا راه‌اندازی یک نشست wayland با توجه به شرایط زیر مجاز است یا خیر:

  • متغیر DBUS_SESSION_BUS_ADDRESS تنظیم شده باشد
  • اجرا از یک شل ورود (login shell) باشد
  • سیستم در graphical.target باشد
  • واحدهای کاربری graphical-session*.target هنوز فعال نشده باشند
  • مقدار VT پیش‌زمینه در میان موارد مجاز باشد (پیش‌فرض: 1)
  • مقدار VT نشست ورود مطابقت داشته باشد

برای خط فرمان یا Desktop Entry کامپوزیتور داده‌شده، فایل‌های واحد (units) را تولید کرده و آن‌ها را راه‌اندازی می‌کند.

uwsm start [-h] [-D name[:name...]] [-a|-e] [-N Name] [-C Comment] [-U {run|home}] [-t] [-o] [-n] -- compositor [args ...]
-F حالت hardcode، همواره خط فرمان را در drop-inهای واحد می‌نویسد و از مسیرهای کامل استفاده می‌کند.
-D name[:name...] نام‌هایی برای پر کردن XDG_CURRENT_DESKTOP (جداشده با :). در صورتی که هیچ نشست فعالی در حال اجرا نباشد، محتوای فعلی متغیر به عنوان نقطه شروع استفاده می‌شود.
-a افزودن نام‌های میزکار تعیین‌شده با -D به سایر منابع (پیش‌فرض).
-e استفاده انحصاری از نام‌های میزکار تعیین‌شده با -D و نادیده گرفتن سایر منابع.
-N Name نام نمایشی کامپوزیتور (به‌طور پیش‌فرض از Desktop Entry خوانده می‌شود).
-C Comment توضیحات نمایشی برای کامپوزیتور (به‌طور پیش‌فرض از Desktop Entry خوانده می‌شود).
-U {run|home} انتخاب رده (rung) برای فایل‌های واحد تولیدشده: run: مسیر $XDG_RUNTIME_DIR/systemd/user (پیش‌فرض)، یا home: مسیر $XDG_CONFIG_HOME/systemd/user. مقصد دائمی با برطرف کردن نیاز به بارگذاری مجدد systemd مقداری در زمان صرفه‌جویی می‌کند. فایل‌های مدیریت‌شده از رده دیگر حذف خواهند شد. می‌تواند با متغیر محیطی UWSM_UNIT_RUNG از پیش تعیین شود.
-t تولید نکردن (و حذف) فایل‌های واحد بهینه‌ساز (tweak). می‌تواند با متغیر محیطی UWSM_TWEAKS=false از پیش تعیین شود.
-T تولید فایل‌های واحد بهینه‌ساز (tweak) برای سایر نرم‌افزارها. این رفتار پیش‌فرض است.
-g S انتظار به مدت S ثانیه برای قرار گرفتن graphical.target سیستم در صف و هشدار در صورت اتمام مهلت یا عدم حضور در صف (پیش‌فرض: 60، مقدار منفی برای غیرفعال‌سازی).
-G S انتظار به مدت S ثانیه برای قرار گرفتن graphical.target سیستم در صف و لغو عملیات در صورت اتمام مهلت یا عدم حضور در صف (تنظیم -g را نادیده می‌گیرد، پیش‌فرض: -1، (غیرفعال)).
-o فقط فایل‌های واحد را تولید می‌کند، اما آن‌ها را راه‌اندازی نمی‌کند.
-n اجرای آزمایشی (Dry run)، هیچ چیزی نوشته یا راه‌اندازی نمی‌شود.

نخستین آرگومان خط فرمان کامپوزیتور به عنوان یک شناسه (ID) عمل می‌کند و باید یکی از موارد زیر باشد:

  • نام فایل اجرایی
  • شناسه Desktop Entry (اختیاراً همراه با شناسه عملیات جداشده با «:»)
  • مقدار ویژه:
  • select - فراخوانی منو برای انتخاب کامپوزیتور.
  • default - اجرای کامپوزیتور انتخاب‌شده پیشین (یا باز کردن منوی انتخاب در صورت عدم ذخیره انتخاب).

اگر به عنوان مسیر داده شود، حالت hardcode به طور ضمنی استفاده خواهد شد.

همواره از «--» برای رفع ابهام در آرگومان‌های دارای خط تیره که برای خود کامپوزیتور در نظر گرفته شده‌اند، استفاده کنید.

پس از تولید (مجدد) واحدها، سرویس wayland-session-bindpid@${PID}.service جهت رهگیری PID فراخوانندهٔ uwsm راه‌اندازی می‌شود، سپس فرایند uwsm جای خود را به اجرای systemctl می‌دهد که سرویس wayland-wm@${ID}.service را آغاز کرده و تا پایان آن منتظر می‌ماند.

به منظور تکمیل توالی راه‌اندازی، کامپوزیتور باید WAYLAND_DISPLAY را در محیط فعال‌سازی systemd قرار دهد. این کار می‌تواند به طور صریح با اجرای دستور «uwsm finalize» توسط کامپوزیتور انجام شود (به زیربخش بعدی مراجعه کنید).

برای اجرا توسط یک کامپوزیتور در هنگام راه‌اندازی.

uwsm finalize [-h] [VAR_NAME ...]

متغیرهای WAYLAND_DISPLAY، DISPLAY و هر متغیر تعریف‌شده‌ای که نام آن‌ها در آرگومان‌ها یا در متغیر UWSM_FINALIZE_VARNAMES (جداشده با نویسه‌های فاصله) ذکر شده باشد را صادر (export) می‌کند. سپس اعلان راه‌اندازی واحد را به مدیر کاربری systemd ارسال می‌نماید.

این مورد الزامی است اگر خود کامپوزیتور WAYLAND_DISPLAY را در محیط فعال‌سازی systemd قرار ندهد، در غیر این صورت واحد wayland-session@.service یا یک واحد اختصاصی wayland-session-waitenv.service به دلیل اتمام مهلت زمانی راه‌اندازی متوقف خواهد شد.

متغیر UWSM_FINALIZE_VARNAMES می‌تواند توسط پلاگین‌ها از پیش پر شود.

انتساب مستقیم به صورت VAR_NAME=value نیز ممکن است، اما تنها برای ساخت پرچم‌ها جهت سازوکار UWSM_WAIT_VARNAMES توصیه می‌شود.

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

uwsm stop [-h] [-r [compositor] [-U {run|home}] [-n]
-r [compositor] همچنین واحدها را حذف می‌کند (همه یا تنها موارد مختص به compositor).
-U {run|home} انتخاب رده (rung) برای فایل‌های واحد تولیدشده: run: $XDG_RUNTIME_DIR/systemd/user (پیش‌فرض)، یا home: $XDG_CONFIG_HOME/systemd/user. مقصد دائمی با رفع نیاز به بارگذاری مجدد systemd در زمان صرفه‌جویی می‌کند. فایل‌های مدیریت‌شده از رده دیگر حذف خواهند شد. می‌تواند از پیش با متغیر محیطی UWSM_UNIT_RUNG تنظیم شود.
-n اجرای آزمایشی (dry run)، هیچ چیز را متوقف یا حذف نمی‌کند.

راه‌انداز برنامه-به-واحد با پشتیبانی از Desktop Entry.

uwsm app [-h] [-s {a,b,s,custom.slice}] [-t {scope,service}] [-a app_name] [-u unit_name] [-d unit_description] [-S ] [-T] -- application [args ...]
-s {a,b,s,custom.slice} انتخاب‌گر slice (پیش‌فرض: a):
a - app-graphical.slice
b - background-graphical.slice
s - session-graphical.slice
هر slice با نام کامل
-t {scope,service} نوع واحد جهت راه‌اندازی (پیش‌فرض: scope، قابل تنظیم از پیش با متغیر محیطی UWSM_APP_UNIT_TYPE).
-a app_name بازنویسی نام برنامه (یک زیررشته در نام واحد).
-u unit_name بازنویسی تمام نام واحد خودکار تولیدشده.
-d unit_description توضیحات واحد.
-p Property=value تنظیم مشخصه اضافی برای واحد (گزینه تکرارپذیر است).
-S {out,err,both} بی‌صدا کردن stdout، stderr، یا هر دو.
-T راه‌اندازی برنامه در یک ترمینال. این امکان را می‌دهد که دستور خالی باشد تا صرفاً یک ترمینال راه‌اندازی شود.

برنامه می‌تواند به صورت یک دستور با آرگومان‌های اختیاری، یا یک شناسه Desktop Entry ارائه شود که به صورت اختیاری با یک شناسه Action که با ":" جدا شده پسوند می‌یابد. در صورت راه‌اندازی یک Desktop Entry، آرگومان‌ها باید با آن سازگار باشند.

همیشه از "--" برای رفع ابهام آرگومان‌های دارای خط تیره که برای خود برنامه در نظر گرفته شده‌اند استفاده کنید.

برای استفاده در سرویس‌های کاربری systemd. تنها توسط مدیر کاربر systemd قابل فراخوانی است.

prepare-env محیط را آماده می‌کند (برای استفاده در ExecStart در wayland-wm-env@.service متصل به wayland-session-pre@.target).
cleanup-env محیط را پاک‌سازی می‌کند (برای استفاده در ExecStop در wayland-wm-env@.service متصل به wayland-session-pre@.target).
exec دستوری را همراه با آرگومان‌ها یا یک ورودی دسکتاپ اجرا می‌کند (برای استفاده در Exec در wayland-wm@.service متصل به wayland-session@.target).
app-daemon دیمنی برای تولید سریع‌تر آرگومان‌های برنامه، مورد استفاده توسط کلاینت uwsm-app.

به صورت wayland-wm-app-daemon.service ارائه شده است تا برحسب‌تقاضا راه‌اندازی شود.

دیمن آرگومان‌های برنامه را از لوله ${XDG_RUNTIME_DIR}/uwsm-app-daemon-in دریافت می‌کند. آرگومان‌های حاصل به عنوان کد شل قالب‌بندی شده و در لوله ${XDG_RUNTIME_DIR}/uwsm-app-daemon-out نوشته می‌شوند.

انتظار می‌رود آرگومان‌ها با \0 از هم تفکیک شده باشند؛ \0های ابتدایی حذف می‌شوند. در ازای هر نوشتن و بستن (write+close) یک دستور دریافت می‌شود.

آرگومان نخست رفتار را مشخص می‌کند:

  • app بقیه موارد همانند "uwsm app" پردازش می‌شود
  • ping تنها "pong" برگردانده می‌شود
  • stop دیمن متوقف می‌شود

دستورهای تکی با پیشوند exec همراه می‌شوند، و دستورهای تکرارشونده هر یک با یک & پایانی سرهم‌بندی شده و با wait دنبال می‌شوند.

هدف همه این‌ها گذر از فرآیندهای سنگین راه‌اندازی و بارگذاری کتابخانه‌های پایتون است که با هر بار فراخوانی «uwsm app» کارایی را کاهش می‌دهند. در عوض، دیمن این کار را یک‌بار انجام داده و سپس به درخواست‌ها گوش می‌دهد، در حالی که یک اسکریپت شل ساده می‌تواند آرگومان‌ها را درون یک لوله ریخته و کد دریافت‌شده از لوله دیگر را از طریق eval اجرا کند که بسیار سریع‌تر است.

ساده‌ترین اسکریپت عبارت است از:

#!/bin/sh
printf '0%s' app "$@" > "${XDG_RUNTIME_DIR}/uwsm-app-daemon-in"
IFS='' read -r cmd < "${XDG_RUNTIME_DIR}/uwsm-app-daemon-out"
eval "$cmd"

اسکریپت کلاینت ارائه‌شده uwsm-app کمی هوشمندانه‌تر است: می‌تواند دیمن را راه‌اندازی کند، زمان‌های انقضا را اعمال نماید و از خط‌های جدید در آرگومان‌های بازگشتی پشتیبانی کند.

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

این مورد هنگام ورود در VT 1، درخواست انتخاب یک کامپوزیتور (یا رد کردن و ادامه با شل ورود) را اعلام می‌کند:

if uwsm check may-start && uwsm select; then
	exec systemd-cat -t uwsm_start uwsm start default
fi

این مورد صرفاً بسته به VT پیش‌زمینه، یک کامپوزیتور مشخص را راه‌اندازی می‌کند:

if uwsm check may-start 1; then
	exec systemd-cat -t uwsm_start uwsm start sway.desktop
elif uwsm check may-start 2; then
	exec systemd-cat -t uwsm_start uwsm start labwc.desktop
fi

استفاده از «uwsm check may-start» به عنوان یک شرط ضروری است؛ نه تنها برای جلوگیری از تلاش‌های تصادفی برای راه‌اندازی در شرایط نامناسب، بلکه به این دلیل که راه‌اندازی ممکن است شامل سورس کردن مجدد پروفایل شل باشد که می‌تواند منجر به حلقه‌های بی‌پایان ناخواسته شود.

برای آگاهی از جزئیات بررسی‌کننده may-start، بخش زیرفرمان check را ببینید.

دستور exec به uwsm اجازه می‌دهد تا جایگزین شل ورود شود تا به درستی به نشست کاربر متصل گردد و خاتمه نشست را مدیریت کند.

عبارت «systemd-cat -t uwsm_start» (اختیاری) دستور داده‌شده به آن (uwsm) را طوری اجرا می‌کند که خروجی استاندارد (stdout) و خطای استاندارد (stderr) آن به ژورنال systemd متصل شده و با شناسه «uwsm_start» برچسب‌گذاری شوند. برای گزینه‌های بیشتر systemd-cat(1) را ببینید.

برای راه‌اندازی uwsm از طریق یک مدیر نمایش/ورود (display/login manager)، می‌توان از «uwsm start» درون مدخل‌های میزکار (Desktop Entries) استفاده کرد. برای نمونه در /usr/local/share/wayland-sessions/my-compositor.desktop:

[Desktop Entry]
Name=My compositor (with UWSM)
Comment=My cool compositor
Exec=uwsm start -N "My compositor" -D mycompositor -C "My cool compositor" mywm
DesktopNames=mycompositor
Type=Application

نکاتی که باید در نظر داشته باشید:

  • برای حفظ یکپارچگی، آرگومان‌های خط فرمان باید بازتاب‌دهنده کلیدهای مدخل باشند
  • دستور موجود در Exec= باید با «uwsm start» آغاز شود
  • نباید به خودش اشاره کند (به عنوان ترکیبی از Desktop Entry ID و Action ID)
  • نباید به یک Desktop Entry ID و Action ID اشاره کند که آن هم از `uwsm` استفاده می‌کند

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

uwsm-plugins(3), systemd-run(1), systemd-cat(1), systemd.special(7)

2026-08-24