'\" t .TH "ORG\&.FREEDESKTOP\&.LOGIN1" "5" "" "systemd 261.2" "org.freedesktop.login1" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "نام (NAME)" org.freedesktop.login1 \- رابط کاربری D-Bus سرویس systemd-logind .SH "توضیحات (DESCRIPTION)" .PP \fBsystemd-logind.service\fR(8) یک سرویس سیستمی است که ورودهای کاربر و جایگاه‌ها (seats) را پیگیری می‌کند\&. .PP این دیمن هم یک رابط کتابخانهٔ C و هم یک رابط D\-Bus ارائه می‌دهد\&. رابط کتابخانه ممکن است برای درون‌نگری و مشاهدهٔ وضعیت ورودهای کاربر و جایگاه‌ها استفاده شود\&. رابط گذرگاه همان قابلیت‌ها را ارائه می‌دهد، اما علاوه بر آن می‌تواند برای ایجاد تغییرات در وضعیت سیستم نیز به کار رود\&. برای اطلاعات بیشتر لطفاً به \fBsd-login\fR(3)\& مراجعه کنید\&. .SH "شیء MANAGER (THE MANAGER OBJECT)" .PP این سرویس رابط‌های زیر را روی شیء Manager در گذرگاه ارائه می‌دهد: .sp .if n \{\ .RS 4 .\} .nf node /org/freedesktop/login1 { interface org\&.freedesktop\&.login1\&.Manager { methods: GetSession(in s session_id, out o object_path); GetSessionByPID(in u pid, out o object_path); GetUser(in u uid, out o object_path); GetUserByPID(in u pid, out o object_path); GetSeat(in s seat_id, out o object_path); ListSessions(out a(susso) sessions); ListSessionsEx(out a(sussussbto) sessions); ListUsers(out a(uso) users); ListSeats(out a(so) seats); ListInhibitors(out a(ssssuu) inhibitors); @org\&.freedesktop\&.systemd1\&.Privileged("true") CreateSession(in u uid, in u pid, in s service, in s type, in s class, in s desktop, in s seat_id, in u vtnr, in s tty, in s display, in b remote, in s remote_user, in s remote_host, in a(sv) properties, out s session_id, out o object_path, out s runtime_path, out h fifo_fd, out u uid, out s seat_id, out u vtnr, out b existing); @org\&.freedesktop\&.systemd1\&.Privileged("true") CreateSessionWithPIDFD(in u uid, in h pidfd, in s service, in s type, in s class, in s desktop, in s seat_id, in u vtnr, in s tty, in s display, in b remote, in s remote_user, in s remote_host, in t flags, in a(sv) properties, out s session_id, out o object_path, out s runtime_path, out h fifo_fd, out u uid, out s seat_id, out u vtnr, out b existing); ReleaseSession(in s session_id); ActivateSession(in s session_id); ActivateSessionOnSeat(in s session_id, in s seat_id); LockSession(in s session_id); UnlockSession(in s session_id); LockSessions(); UnlockSessions(); KillSession(in s session_id, in s whom, in i signal_number); KillUser(in u uid, in i signal_number); TerminateSession(in s session_id); TerminateUser(in u uid); TerminateSeat(in s seat_id); SetUserLinger(in u uid, in b enable, in b interactive); AttachDevice(in s seat_id, in s sysfs_path, in b interactive); FlushDevices(in b interactive); PowerOff(in b interactive); PowerOffWithFlags(in t flags); Reboot(in b interactive); RebootWithFlags(in t flags); Halt(in b interactive); HaltWithFlags(in t flags); Suspend(in b interactive); SuspendWithFlags(in t flags); Hibernate(in b interactive); HibernateWithFlags(in t flags); HybridSleep(in b interactive); HybridSleepWithFlags(in t flags); SuspendThenHibernate(in b interactive); SuspendThenHibernateWithFlags(in t flags); Sleep(in t flags); CanPowerOff(out s result); CanReboot(out s result); CanHalt(out s result); CanSuspend(out s result); CanHibernate(out s result); CanHybridSleep(out s result); CanSuspendThenHibernate(out s result); CanSleep(out s result); ScheduleShutdown(in s type, in t usec); CancelScheduledShutdown(out b cancelled); Inhibit(in s what, in s who, in s why, in s mode, out h pipe_fd); CanRebootParameter(out s result); SetRebootParameter(in s parameter); CanRebootToFirmwareSetup(out s result); SetRebootToFirmwareSetup(in b enable); CanRebootToBootLoaderMenu(out s result); SetRebootToBootLoaderMenu(in t timeout); CanRebootToBootLoaderEntry(out s result); SetRebootToBootLoaderEntry(in s boot_loader_entry); SetWallMessage(in s wall_message, in b enable); signals: SecureAttentionKey(s seat_id, o object_path); SessionNew(s session_id, o object_path); SessionRemoved(s session_id, o object_path); UserNew(u uid, o object_path); UserRemoved(u uid, o object_path); SeatNew(s seat_id, o object_path); SeatRemoved(s seat_id, o object_path); PrepareForShutdown(b start); PrepareForShutdownWithMetadata(b start, a{sv} metadata); PrepareForSleep(b start); properties: @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("false") @org\&.freedesktop\&.systemd1\&.Privileged("true") readwrite b EnableWallMessages = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("false") @org\&.freedesktop\&.systemd1\&.Privileged("true") readwrite s WallMessage = \*(Aq\&.\&.\&.\*(Aq; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly u NAutoVTs = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly as KillOnlyUsers = [\*(Aq\&.\&.\&.\*(Aq, \&.\&.\&.]; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly as KillExcludeUsers = [\*(Aq\&.\&.\&.\*(Aq, \&.\&.\&.]; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly b KillUserProcesses = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("false") readonly s RebootParameter = \*(Aq\&.\&.\&.\*(Aq; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("false") readonly b RebootToFirmwareSetup = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("false") readonly t RebootToBootLoaderMenu = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("false") readonly s RebootToBootLoaderEntry = \*(Aq\&.\&.\&.\*(Aq; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly as BootLoaderEntries = [\*(Aq\&.\&.\&.\*(Aq, \&.\&.\&.]; readonly b IdleHint = \&.\&.\&.; readonly t IdleSinceHint = \&.\&.\&.; readonly t IdleSinceHintMonotonic = \&.\&.\&.; readonly s BlockInhibited = \*(Aq\&.\&.\&.\*(Aq; readonly s BlockWeakInhibited = \*(Aq\&.\&.\&.\*(Aq; readonly s DelayInhibited = \*(Aq\&.\&.\&.\*(Aq; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly t InhibitDelayMaxUSec = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly t UserStopDelayUSec = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly as SleepOperation = [\*(Aq\&.\&.\&.\*(Aq, \&.\&.\&.]; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly s HandlePowerKey = \*(Aq\&.\&.\&.\*(Aq; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly s HandlePowerKeyLongPress = \*(Aq\&.\&.\&.\*(Aq; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly s HandleRebootKey = \*(Aq\&.\&.\&.\*(Aq; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly s HandleRebootKeyLongPress = \*(Aq\&.\&.\&.\*(Aq; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly s HandleSuspendKey = \*(Aq\&.\&.\&.\*(Aq; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly s HandleSuspendKeyLongPress = \*(Aq\&.\&.\&.\*(Aq; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly s HandleHibernateKey = \*(Aq\&.\&.\&.\*(Aq; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly s HandleHibernateKeyLongPress = \*(Aq\&.\&.\&.\*(Aq; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly s HandleLidSwitch = \*(Aq\&.\&.\&.\*(Aq; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly s HandleLidSwitchExternalPower = \*(Aq\&.\&.\&.\*(Aq; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly s HandleLidSwitchDocked = \*(Aq\&.\&.\&.\*(Aq; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly s HandleSecureAttentionKey = \*(Aq\&.\&.\&.\*(Aq; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly t HoldoffTimeoutUSec = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly s IdleAction = \*(Aq\&.\&.\&.\*(Aq; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly t IdleActionUSec = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("false") readonly b PreparingForShutdown = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("false") readonly a{sv} PreparingForShutdownWithMetadata = [\&.\&.\&.]; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("false") readonly b PreparingForSleep = \&.\&.\&.; readonly (st) ScheduledShutdown = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly s DesignatedMaintenanceTime = \*(Aq\&.\&.\&.\*(Aq; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("false") readonly b Docked = \&.\&.\&.; readonly b LidClosed = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("false") readonly b OnExternalPower = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly b RemoveIPC = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly t RuntimeDirectorySize = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly t RuntimeDirectoryInodesMax = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly t InhibitorsMax = \&.\&.\&.; readonly t NCurrentInhibitors = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly t SessionsMax = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("false") readonly t NCurrentSessions = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly t StopIdleSessionUSec = \&.\&.\&.; }; interface org\&.freedesktop\&.DBus\&.Peer { \&.\&.\&. }; interface org\&.freedesktop\&.DBus\&.Introspectable { \&.\&.\&. }; interface org\&.freedesktop\&.DBus\&.Properties { \&.\&.\&. }; }; .fi .if n \{\ .RE .\} .SS "متدها (Methods)" .PP \fBGetSession()\fR ممکن است برای دریافت مسیر شیء نشست برای نشست با شناسهٔ مشخص‌شده استفاده شود\&. به طور مشابه، \fBGetUser()\fR و \fBGetSeat()\fR به ترتیب اشیاء کاربر و جایگاه (seat) را دریافت می‌کنند\&. \fBGetSessionByPID()\fR و \fBGetUserByPID()\fR شیء نشست/کاربری را که PID مشخص‌شده به آن تعلق دارد (در صورت وجود) دریافت می‌کنند\&. .PP \fBListSessions()\fR آرایه‌ای از تمام نشست‌های جاری را برمی‌گرداند\&. ساختارهای موجود در آرایه از فیلدهای زیر تشکیل شده‌اند: \fIsession id\fR (شناسه نشست)، \fIuser id\fR (شناسه کاربر)، \fIuser name\fR (نام کاربر)، \fIseat id\fR (شناسه جایگاه)، و \fIsession object path\fR (مسیر شیء نشست)\&. اگر نشستی جایگاهی متصل نداشته باشد، فیلد شناسه جایگاه یک رشتهٔ خالی خواهد بود\&. .PP \fBListSessionsEx()\fR آرایه‌ای از تمام نشست‌های جاری را با فراداده‌های بیشتر نسبت به \fBListSessions()\fR برمی‌گرداند\&. ساختارهای موجود در آرایه شامل فیلدهای زیر هستند: \fIsession id\fR، \fIuser id\fR، \fIuser name\fR، \fIseat id\fR، \fIleader pid\fR، \fIsession class\fR، \fItty name\fR، \fIidle hint\fR، \fIidle hint monotonic timestamp\fR، و \fIsession object path\fR\&. فیلدهای \fItty\fR و \fIseat id\fR در صورتی که نشست به ترتیب tty مرتبطی نداشته باشد یا جایگاهی به نشست متصل نباشد، می‌توانند خالی باشند\&. .PP \fBListUsers()\fR آرایه‌ای از تمام کاربرانی که در حال حاضر وارد سیستم شده‌اند را برمی‌گرداند\&. ساختارهای موجود در آرایه از فیلدهای زیر تشکیل شده‌اند: شناسه کاربر، نام کاربر، مسیر شیء کاربر\&. .PP \fBListSeats()\fR آرایه‌ای از تمام جایگاه‌های موجود در حال حاضر را برمی‌گرداند\&. ساختار موجود در آرایه از فیلدهای زیر تشکیل شده است: شناسه جایگاه، مسیر شیء جایگاه\&. .PP \fBListInhibitors()\fR تمام مهارکننده‌های (inhibitors) فعال کنونی را فهرست می‌کند\&. این متد آرایه‌ای از ساختارها شامل \fIwhat\fR (چه چیزی)، \fIwho\fR (چه کسی)، \fIwhy\fR (چرا)، \fImode\fR (حالت)، \fIuid\fR (شناسه کاربر)، و \fIpid\fR (شناسه فرایند) را برمی‌گرداند\&. .PP \fBCreateSession()\fR، \fBCreateSessionWithPIDFD()\fR، و \fBReleaseSession()\fR ممکن است برای باز کردن یا بستن نشست‌های ورود استفاده شوند\&. این فراخوانی‌ها \fIهرگز\fR نباید مستقیماً توسط کلاینت‌ها فراخوانی شوند\&. ایجاد/بستن نشست‌ها منحصراً وظیفهٔ PAM و ماژول \fBpam_systemd\fR(8) آن است\&. .PP \fBActivateSession()\fR نشست با شناسهٔ مشخص‌شده را به پیش‌زمینه می‌آورد\&. \fBActivateSessionOnSeat()\fR همین کار را انجام می‌دهد، اما تنها در صورتی که شناسه جایگاه مطابقت داشته باشد\&. .PP \fBLockSession()\fR از نشست با شناسهٔ مشخص‌شده درخواست می‌کند که قفل صفحه را فعال کند\&. \fBUnlockSession()\fR از نشست با شناسهٔ مشخص‌شده درخواست می‌کند تا در صورت وجود قفل صفحهٔ فعال، آن را حذف کند\&. این کار با ارسال سیگنال‌های Lock() و Unlock() از شیء نشست مربوطه پیاده‌سازی شده است که مدیران نشست باید آن‌ها را شنود کنند\&. .PP \fBLockSessions()\fR از تمام نشست‌ها می‌خواهد قفل صفحهٔ خود را فعال کنند\&. این متد می‌تواند برای قفل کردن دسترسی به کل ماشین در یک اقدام استفاده شود\&. به طور مشابه، \fBUnlockSessions()\fR از تمام نشست‌ها درخواست می‌کند که قفل صفحهٔ خود را غیرفعال کنند\&. .PP \fBKillSession()\fR ممکن است برای ارسال یک سیگنال یونیکس به یک یا تمام فرایندهای یک نشست استفاده شود\&. به عنوان آرگومان، شناسه نشست، یکی از رشته‌های "leader" یا "all" و یک شماره سیگنال را می‌گیرد\&. اگر "leader" ارسال شود، فقط فرایند پیشگام (leader) نشست متوقف می‌شود\&. اگر "all" ارسال شود، تمام فرایندهای نشست متوقف می‌شوند\&. .PP \fBKillUser()\fR ممکن است برای ارسال یک سیگنال یونیکس به تمام فرایندهای یک کاربر استفاده شود\&. به عنوان آرگومان، شناسه کاربر و یک شماره سیگنال را می‌گیرد\&. .PP \fBTerminateSession()\fR، \fBTerminateUser()\fR، \fBTerminateSeat()\fR ممکن است به ترتیب برای پایان دادن اجباری به یک نشست مشخص، تمام فرایندهای یک کاربر، و تمام نشست‌های متصل به یک جایگاه مشخص استفاده شوند\&. نشست، کاربر و جایگاه با شناسه‌های مربوط به خود مشخص می‌شوند\&. .PP \fBSetUserLinger()\fR ماندگاری کاربر (user lingering) را فعال یا غیرفعال می‌کند\&. در صورت فعال بودن، دایرکتوری زمان اجرای کاربر نگه‌داشته می‌شود و کاربر می‌تواند پس از خروج از سیستم (log out) نیز به اجرای فرایندها ادامه دهد\&. در صورت غیرفعال بودن، دایرکتوری زمان اجرا به محض خروج کاربر از بین می‌رود\&. \fBSetUserLinger()\fR سه آرگومان می‌پذیرد: UID، یک مقدار بولی برای فعال/غیرفعال کردن و یک مقدار بولی که تعاملی بودن مجوزدهی \m[blue]\fBpolkit\fR\m[]\&\s-2\u[1]\d\s+2 را کنترل می‌کند (به زیر مراجعه کنید)\&. توجه داشته باشید که وضعیت ماندگاری کاربر به صورت ماندگار روی دیسک ذخیره می‌شود\&. .PP \fBAttachDevice()\fR ممکن است برای اختصاص یک دستگاه خاص به یک جایگاه خاص استفاده شود\&. دستگاه توسط مسیر /sys/ آن شناسایی می‌شود و باید واجد شرایط اختصاص به جایگاه باشد\&. \fBAttachDevice()\fR سه آرگومان می‌گیرد: شناسه جایگاه، مسیر sysfs، و یک مقدار بولی برای کنترل تعاملی بودن polkit (به زیر مراجعه کنید)\&. تخصیص‌های دستگاه به صورت پایدار روی دیسک ذخیره می‌شوند\&. برای ایجاد یک جایگاه جدید، کافی است یک شناسه جایگاه استفاده‌نشده از قبل را مشخص کنید\&. برای اطلاعات بیشتر درباره منطق انتساب جایگاه به \fBsd-login\fR(3) مراجعه کنید\&. .PP \fBFlushDevices()\fR تمام انتساب‌های صریح دستگاه‌ها به جایگاه‌ها را حذف کرده و همهٔ انتساب‌ها را به مقادیر پیش‌فرض خودکار بازنشانی می‌کند\&. تنها آرگومانی که می‌گیرد مقدار بولی تعاملی بودن polkit است (به زیر مراجعه کنید)\&. .PP \fBPowerOff()\fR، \fBReboot()\fR، \fBHalt()\fR، \fBSuspend()\fR، و \fBHibernate()\fR منجر به خاموش شدن سیستم، راه‌اندازی مجدد (reboot)، متوقف شدن (halt - خاموش شدن بدون قطع برق)، تعلیق (suspend - ذخیره وضعیت سیستم در RAM و خاموش شدن CPU)، یا خواب زمستانی (hibernate - ذخیره وضعیت سیستم روی دیسک و خاموش شدن ماشین) می‌شوند\&. \fBHybridSleep()\fR باعث می‌شود سیستم وارد حالت خواب ترکیبی (hybrid-sleep) شود، یعنی سیستم هم در حالت خواب زمستانی و هم در حالت تعلیق قرار می‌گیرد\&. \fBSuspendThenHibernate()\fR باعث می‌شود سیستم ابتدا به حالت تعلیق درآید و سپس بعداً با استفاده از یک تایمر RTC بیدار شده و به حالت خواب زمستانی برود\&. تنها آرگومان آن مقدار بولی تعاملی بودن polkit یعنی \fIinteractive\fR است (به زیر مراجعه کنید)\&. هدف اصلی این فراخوانی‌ها این است که خط‌مشی polkit را اعمال می‌کنند و در نتیجه به کاربران غیرمجاز نیز اجازهٔ خاموش کردن/راه‌اندازی مجدد/تعلیق/خواب زمستانی را می‌دهند\&. آن‌ها همچنین قفل‌های مهارکننده را برای کاربران غیرمجاز اعمال می‌کنند\&. \fBSleep()\fR به طور خودکار مناسب‌ترین عملیات خواب پشتیبانی‌شده توسط ماشین را انتخاب می‌کند\&. عملیات نامزد خواب برای بررسی پشتیبانی را می‌توان از طریق تنظیم \fISleepOperation=\fR در \fBlogind.conf\fR(5) پیکربندی کرد\&. رابط‌های کاربری باید این فراخوانی‌ها را به عنوان سازوکار اصلی برای خاموش کردن/راه‌اندازی مجدد/تعلیق/خواب زمستانی ماشین ارائه دهند\&. متدهای \fBPowerOffWithFlags()\fR، \fBRebootWithFlags()\fR، \fBHaltWithFlags()\fR، \fBSuspendWithFlags()\fR، \fBHibernateWithFlags()\fR، \fBHybridSleepWithFlags()\fR، \fBSuspendThenHibernateWithFlags()\fR، و \fBSleep()\fR برای امکان گسترش‌پذیری، آرگومان \fIflags\fR را می‌پذیرند که به شرح زیر تعریف شده است: .sp .if n \{\ .RS 4 .\} .nf #define SD_LOGIND_ROOT_CHECK_INHIBITORS (UINT64_C(1) << 0) #define SD_LOGIND_KEXEC_REBOOT (UINT64_C(1) << 1) #define SD_LOGIND_SOFT_REBOOT (UINT64_C(1) << 2) #define SD_LOGIND_SOFT_REBOOT_IF_NEXTROOT_SET_UP (UINT64_C(1) << 3) #define SD_LOGIND_SKIP_INHIBITORS (UINT64_C(1) << 4) .fi .if n \{\ .RE .\} .PP هنگامی که \fIflags\fR برابر 0 باشد، این متدها دقیقاً مانند نسخه‌های بدون پرچم رفتار می‌کنند\&. از نسخهٔ 257 سیستم‌دی، مهارکننده‌های از نوع "block" روی عملیات درخواستی توسط هر دو دسته کاربران مجاز و غیرمجاز اعمال می‌شوند\&. پیش از این، آن‌ها فقط توسط کاربران غیرمجاز رعایت می‌شدند، به استثنای کاربری که مالک مهارکننده بود\&. رفتار اخیر اکنون از طریق نوع قفل مهارکنندهٔ "block-weak" در دسترس است\&. \fBSD_LOGIND_ROOT_CHECK_INHIBITORS\fR (0x01) باعث می‌شود قفل‌های "block-weak" مانند قفل‌های معمولی "block" رفتار کنند، یعنی تضمین می‌کند که برای هر کاربری رعایت شوند\&. پرچم \fBSD_LOGIND_SKIP_INHIBITORS\fR (0x10) می‌تواند برای نادیده گرفتن هر دو نوع مهارکنندهٔ "block" و "block-weak" مشخص شود (روی مهارکننده‌های "delay" تأثیری ندارد)\&. هنگامی که \fBSD_LOGIND_KEXEC_REBOOT\fR (0x02) تنظیم شود، \fBRebootWithFlags()\fR در صورت بارگذاری بودن هسته kexec، راه‌اندازی مجدد kexec را انجام می‌دهد\&. هنگامی که \fBSD_LOGIND_SOFT_REBOOT\fR (0x04) تنظیم شود، یا \fBSD_LOGIND_SOFT_REBOOT_IF_NEXTROOT_SET_UP\fR (0x08) تنظیم شده و یک سیستم فایل ریشه جدید روی "/run/nextroot/" راه‌اندازی شده باشد، \fBRebootWithFlags()\fR تنها یک راه‌اندازی مجدد در فضای کاربری (userspace reboot) انجام می‌دهد\&. \fBSD_LOGIND_SOFT_REBOOT_IF_NEXTROOT_SET_UP\fR و \fBSD_LOGIND_KEXEC_REBOOT\fR می‌توانند با هم ترکیب شوند که در این حالت soft-reboot اولویت دارد\&. .PP \fBSetRebootParameter()\fR پارامتری را برای عملیات راه‌اندازی مجدد بعدی تنظیم می‌کند\&. برای اطلاعات بیشتر شرح \fBreboot\fR در \fBsystemctl\fR(1) و \fBreboot\fR(2) را ببینید\&. .PP \fBSetRebootToFirmwareSetup()\fR، \fBSetRebootToBootLoaderMenu()\fR، و \fBSetRebootToBootLoaderEntry()\fR اقدامی را که باید پس از راه‌اندازی مجدد از بوت‌لودر انجام شود پیکربندی می‌کنند: به ترتیب ورود به حالت تنظیمات میان‌افزار (firmware setup mode)، منوی بوت‌لودر، یا یک مدخل خاص در بوت‌لودر\&. برای رابط خط فرمان متناظر به \fBsystemctl\fR(1) مراجعه کنید\&. .PP \fBCanPowerOff()\fR، \fBCanReboot()\fR، \fBCanHalt()\fR، \fBCanSuspend()\fR، \fBCanHibernate()\fR، \fBCanHybridSleep()\fR، \fBCanSuspendThenHibernate()\fR، \fBCanSleep()\fR، \fBCanRebootParameter()\fR، \fBCanRebootToFirmwareSetup()\fR، \fBCanRebootToBootLoaderMenu()\fR، و \fBCanRebootToBootLoaderEntry()\fR آزمایش می‌کنند که آیا سیستم از عملیات مربوطه پشتیبانی می‌کند و آیا کاربر فراخواننده مجاز به اجرای آن است یا خیر\&. یکی از مقادیر "na"، "yes"، "no"، "challenge"، "inhibited"، "inhibitor-blocked"، و "challenge-inhibitor-blocked" را برمی‌گردانند\&. اگر "na" برگردانده شود، عملیات به دلیل عدم پشتیبانی سخت‌افزار، هسته یا درایورها در دسترس نیست\&. اگر "yes" برگردانده شود، عملیات پشتیبانی می‌شود و کاربر می‌تواند بدون نیاز به احراز هویت بیشتر عملیات را اجرا کند\&. اگر "no" برگردانده شود، عملیات در دسترس است اما کاربر مجاز به اجرای آن نیست\&. اگر "challenge" برگردانده شود، عملیات در دسترس است اما فقط پس از احراز هویت\&. اگر "inhibited" برگردانده شود، عملیات معمولاً بدون احراز هویت در دسترس است اما در حال حاضر مهار شده است\&. این عملیات فقط در صورتی در دسترس است که مهارکننده‌ها نادیده گرفته شوند و پس از احراز هویت\&. اگر "inhibitor-blocked" برگردانده شود، عملیات معمولاً بدون احراز هویت در دسترس است اما در حال حاضر مهار شده است\&. تا زمانی که مهارکننده فعال بماند، کاربر مجاز به اجرای عملیات نیست\&. "challenge-inhibitor-blocked" نیز مشابه است: عملیات معمولاً پس از احراز هویت در دسترس است اما یک مهارکننده فعال مانع اجرای عملیات توسط کاربر می‌شود\&. .PP \fBScheduleShutdown()\fR یک عملیات خاموش‌سازی \fItype\fR را برای زمان \fIusec\fR به میکروثانیه از مبدأ زمان یونیکس (UNIX epoch) زمان‌بندی می‌کند\&. متناوباً، اگر \fIusec\fR برابر "UINT64_MAX" باشد و یک بازهٔ نگهداری پیکربندی شده باشد، systemd-logind به جای آن از زمان بعدی بازهٔ نگهداری استفاده خواهد کرد\&. \fItype\fR می‌تواند یکی از مقادیر "poweroff"، "dry-poweroff"، "reboot"، "dry-reboot"، "halt"، و "dry-halt" باشد\&. (انواع "dry-" در عمل اقدام خاموش‌سازی را اجرا نمی‌کنند\&.) \fBCancelScheduledShutdown()\fR یک خاموش‌سازی زمان‌بندی‌شده را لغو می‌کند\&. پارامتر خروجی \fIcancelled\fR در صورتی که عملیات خاموش‌سازی زمان‌بندی شده بود، true است\&. .PP توجه داشته باشید که \fIusec\fR تنها یک حد پایین است: عملیات خاموش‌سازی در اسرع وقت اجرا می‌شود، اما نه پیش از زمان مشخص‌شده\&. برچسب زمانی در گذشته یک خطا نیست، بلکه صرفاً به این معنی است که عملیات فوراً اجرا می‌شود\&. این امر مهم است، زیرا درخواست برای خاموش شدن فوری، یا مدت زمان بسیار کوتاهی در آینده، معمولاً در زمان پردازش، مربوط به گذشته است\&. .PP \fBSetWallMessage()\fR پیام همگانی (wall message - پیامی که به تمام پایانه‌ها فرستاده می‌شود و در یک رکورد \fButmp\fR(5) ذخیره می‌گردد) را برای عملیات خاموش‌سازی زمان‌بندی‌شدهٔ بعدی تنظیم می‌کند\&. پارامتر \fIwall_message\fR دلیل خاموش‌سازی را مشخص می‌کند (و ممکن است خالی باشد) که در پیام خاموش‌سازی گنجانده خواهد شد\&. پارامتر \fIenable\fR مشخص می‌کند که آیا پیام همگانی در هنگام خاموش شدن چاپ شود یا خیر\&. .PP \fBInhibit()\fR یک قفل مهارکننده ایجاد می‌کند\&. این متد چهار پارامتر می‌گیرد: \fIwhat\fR، \fIwho\fR، \fIwhy\fR، و \fImode\fR\&. \fIwhat\fR یک یا چند مورد از "shutdown"، "sleep"، "idle"، "handle-power-key"، "handle-suspend-key"، "handle-hibernate-key"، "handle-lid-switch" است که با دو نقطه (:) از هم جدا شده‌اند، برای مهار کردن خاموش شدن/راه‌اندازی مجدد، تعلیق/خواب زمستانی، منطق خودکار بیکاری، یا مدیریت کلیدهای سخت‌افزاری\&. \fIwho\fR باید یک رشتهٔ کوتاه و خوانا برای انسان باشد که برنامه‌ای را که قفل را می‌گیرد شناسایی کند\&. \fIwhy\fR باید یک رشتهٔ کوتاه و خوانا برای انسان باشد که دلیل گرفتن قفل را مشخص کند\&. در نهایت، \fImode\fR یکی از مقادیر "block" یا "delay" است که کدگذاری می‌کند آیا مهار باید اجباری در نظر گرفته شود یا این که فقط باید عملیات را تا یک حداکثر زمان معین به تأخیر بیندازد، در حالی که "block-weak" و انواع آن مهارکننده‌ای ایجاد می‌کنند که در برخی شرایط به طور خودکار نادیده گرفته می‌شود\&. این متد یک توصیف‌گر فایل (file descriptor) برمی‌گرداند\&. قفل در همان لحظه‌ای که این توصیف‌گر فایل و تمام کپی‌های آن بسته شوند، آزاد می‌شود\&. برای اطلاعات بیشتر در مورد منطق مهار به \m[blue]\fBقفل‌های مهارکننده (Inhibitor Locks)\fR\m[]\&\s-2\u[2]\d\s+2\& مراجعه کنید\&. .SS "سیگنال‌ها (Signals)" .PP هر زمان که وضعیت مهار یا وضعیت بیکاری تغییر کند، سیگنال‌های \fBPropertyChanged\fR به کلاینت‌هایی که مشترک شده‌اند ارسال می‌شوند\&. .PP سیگنال \fBSecureAttentionKey()\fR هنگامی ارسال می‌شود که کاربر کلیدهای ترکیبی Ctrl+Alt+Shift+Esc را فشار دهد تا از مدیر ورود بخواهد صفحهٔ خوش‌آمدگویی (greeter) را نمایش دهد، به عنوان مثال در صورت قفل شدن یا بن‌بست کامپوزیتور گرافیکی (deadlocked compositor)\&. .PP سیگنال‌های \fBSessionNew()\fR، \fBSessionRemoved()\fR، \fBUserNew()\fR، \fBUserRemoved()\fR، \fBSeatNew()\fR، و \fBSeatRemoved()\fR هر بار که یک نشست ایجاد یا حذف شود، یک کاربر وارد یا خارج شود، یا یک جایگاه اضافه یا حذف شود، ارسال می‌شوند\&. هر کدام از آن‌ها شامل شناسه شیء به همراه مسیر شیء هستند\&. .PP سیگنال‌های \fBPrepareForShutdown()\fR، \fBPrepareForShutdownWithMetadata()\fR، و \fBPrepareForSleep()\fR دقیقاً قبل از (با آرگومان "true" ) یا بعد از (با آرگومان "false" ) اینکه سیستم به ترتیب برای راه‌اندازی مجدد/خاموش شدن و تعلیق/خواب زمستانی خاموش شود، ارسال می‌شوند\&. این سیگنال‌ها ممکن است توسط برنامه‌ها برای ذخیره داده‌ها روی دیسک، آزادسازی حافظه، یا انجام کارهای دیگری که باید اندکی قبل از خاموش‌سازی/خواب انجام شوند، در ارتباط با قفل‌های مهارکنندهٔ تأخیری (delay inhibitor locks) استفاده شوند\&. پس از تکمیل این کار، آن‌ها باید قفل‌های مهارکننده خود را آزاد کنند تا عملیات بیش از این به تأخیر نیفتد\&. برای اطلاعات بیشتر به \m[blue]\fBقفل‌های مهارکننده (Inhibitor Locks)\fR\m[]\&\s-2\u[2]\d\s+2\& مراجعه کنید\&. سیگنال \fBPrepareForShutdownWithMetadata()\fR علاوه بر این، فهرستی از فیلدهای متادیتای جفت کلید/مقدار را ارسال می‌کند\&. در حال حاضر این سیگنال یک رشتهٔ \fItype\fR ارسال می‌کند که نوع خاموش‌سازی را مشخص می‌سازد\&. نوع می‌تواند یکی از موارد "power-off"، "reboot"، "halt"، "kexec" یا "soft-reboot" باشد\&. این سیگنال ابتدا ارسال می‌شود و به دنبال آن \fBPrepareForShutdown()\fR (برای سازگاری با گذشته) ارسال می‌گردد\&. .SS "ویژگی‌ها (Properties)" .PP بیشتر ویژگی‌ها صرفاً پیکربندی را منعکس می‌کنند، به \fBlogind.conf\fR(5) مراجعه کنید\&. این شامل موارد زیر است: \fINAutoVTs\fR، \fIKillOnlyUsers\fR، \fIKillExcludeUsers\fR، \fIKillUserProcesses\fR، \fIIdleAction\fR، \fIInhibitDelayMaxUSec\fR، \fIInhibitorsMax\fR، \fIUserStopDelayUSec\fR، \fIHandlePowerKey\fR، \fIHandleSuspendKey\fR، \fIHandleHibernateKey\fR، \fIHandleLidSwitch\fR، \fIHandleLidSwitchExternalPower\fR، \fIHandleLidSwitchDocked\fR، \fIIdleActionUSec\fR، \fIHoldoffTimeoutUSec\fR، \fIRemoveIPC\fR، \fIRuntimeDirectorySize\fR، \fIRuntimeDirectoryInodesMax\fR، \fIInhibitorsMax\fR، و \fISessionsMax\fR\&. .PP ویژگی \fIIdleHint\fR وضعیت نشانهٔ بیکاری (idle hint) سیستم را منعکس می‌کند\&. اگر سیستم بیکار باشد، بسته به پیکربندی ممکن است وارد تعلیق یا خاموش‌سازی خودکار شود\&. .PP \fIIdleSinceHint\fR و \fIIdleSinceHintMonotonic\fR برچسب‌های زمانی آخرین تغییر مقدار بولی نشانهٔ بیکاری را به ترتیب در ساعت‌های \fBCLOCK_REALTIME\fR و \fBCLOCK_MONOTONIC\fR به میکروثانیه از مبدأ زمان کدگذاری می‌کنند\&. .PP ویژگی‌های \fIBlockInhibited\fR، \fIBlockWeakInhibited\fR، و \fIDelayInhibited\fR قفل‌های فعال کنونی در حالت‌های مربوطه را کدگذاری می‌کنند\&. آن‌ها فهرست‌هایی با جداکننده دو نقطه از "shutdown"، "sleep"، و "idle" هستند (به بالا مراجعه کنید)\&. .PP \fINCurrentSessions\fR و \fINCurrentInhibitors\fR شامل تعداد نشست‌ها و مهارکننده‌های ثبت‌شدهٔ فعلی هستند\&. .PP ویژگی \fIBootLoaderEntries\fR حاوی فهرستی از مدخل‌های بوت‌لودر است\&. این شامل مدخل‌های بوت‌لودر تعریف‌شده در پیکربندی و هر مدخل بارگذار اضافی گزارش‌شده توسط بوت‌لودر است\&. برای اطلاعات بیشتر به \fBsystemd-boot\fR(7) مراجعه کنید\&. .PP ویژگی‌های بولی \fIPreparingForShutdown\fR و \fIPreparingForSleep\fR در فاصلهٔ زمانی بین دو سیگنال \fBPrepareForShutdown()\fR و \fBPrepareForSleep()\fR به ترتیب true هستند\&. ویژگی \fIPreparingForShutdownWithMetadata\fR فهرستی از فیلدهای متادیتای جفت کلید/مقدار را ارائه می‌دهد\&. در حال حاضر این ویژگی یک بولی \fIpreparing\fR را فهرست می‌کند که متناظر با ویژگی \fIPreparingForShutdown\fR است، و در صورتی که یک خاموش‌سازی در حال آماده‌سازی باشد، همچنین شامل یک رشتهٔ \fItype\fR خواهد بود که نوع خاموش‌سازی را مشخص می‌کند\&. نوع می‌تواند یکی از موارد "power-off"، "reboot"، "halt"، "kexec" یا "soft-reboot" باشد\&. توجه داشته باشید که این ویژگی‌ها سیگنال‌های \fBPropertyChanged\fR ارسال نمی‌کنند\&. .PP ویژگی \fIRebootParameter\fR مقداری را که با متد \fBSetRebootParameter()\fR شرح داده شده در بالا تنظیم شده است نشان می‌دهد\&. .PP \fIScheduledShutdown\fR جفت مقدار تنظیم‌شده با متد \fBScheduleShutdown()\fR شرح داده شده در بالا را نشان می‌دهد\&. .PP \fIRebootToFirmwareSetup\fR، \fIRebootToBootLoaderMenu\fR، و \fIRebootToBootLoaderEntry\fR هنگامی true هستند که عملیات پس از راه‌اندازی مجدد مربوطه به ترتیب با \fBSetRebootToFirmwareSetup()\fR، \fBSetRebootToBootLoaderMenu()\fR، یا \fBSetRebootToBootLoaderEntry()\fR انتخاب شده باشد\&. .PP ویژگی‌های \fIWallMessage\fR و \fIEnableWallMessages\fR دلیل خاموش‌سازی و کلید فعال‌سازی پیام همگانی را منعکس می‌کنند که می‌توانند با متد \fBSetWallMessage()\fR شرح داده شده در بالا تنظیم شوند\&. .PP \fIDocked\fR در صورتی که ماشین به یک داک متصل باشد true است\&. \fILidClosed\fR هنگامی که درب (لپ‌تاپ) بسته باشد true است\&. \fIOnExternalPower\fR هنگامی که ماشین به یک منبع برق خارجی متصل باشد true است\&. .SS "امنیت (Security)" .PP شماری از عملیات از طریق سیستم امتیازات polkit محافظت می‌شوند\&. \fBSetUserLinger()\fR نیازمند امتیاز org\&.freedesktop\&.login1\&.set-user-linger است\&. \fBAttachDevice()\fR نیازمند org\&.freedesktop\&.login1\&.attach-device و \fBFlushDevices()\fR نیازمند org\&.freedesktop\&.login1\&.flush-devices است\&. \fBPowerOff()\fR، \fBReboot()\fR، \fBHalt()\fR، \fBSuspend()\fR، \fBHibernate()\fR بسته به اینکه آیا نشست‌های دیگری وجود دارند یا مهارکننده‌های فعال حاضر هستند، به ترتیب نیازمند org\&.freedesktop\&.login1\&.power-off، org\&.freedesktop\&.login1\&.power-off-multiple-sessions، org\&.freedesktop\&.login1\&.power-off-ignore-inhibit، org\&.freedesktop\&.login1\&.reboot، org\&.freedesktop\&.login1\&.reboot-multiple-sessions، org\&.freedesktop\&.login1\&.reboot-ignore-inhibit، org\&.freedesktop\&.login1\&.halt، org\&.freedesktop\&.login1\&.halt-multiple-sessions، org\&.freedesktop\&.login1\&.halt-ignore-inhibit، org\&.freedesktop\&.login1\&.suspend، org\&.freedesktop\&.login1\&.suspend-multiple-sessions، org\&.freedesktop\&.login1\&.suspend-ignore-inhibit، org\&.freedesktop\&.login1\&.hibernate، org\&.freedesktop\&.login1\&.hibernate-multiple-sessions، org\&.freedesktop\&.login1\&.hibernate-ignore-inhibit هستند\&. \fBHybridSleep()\fR و \fBSuspendThenHibernate()\fR از همان امتیازات \fBHibernate()\fR استفاده می‌کنند\&. \fBSleep()\fR از مهارکننده‌های عملیات خواب انتخاب‌شده به‌صورت خودکار استفاده می‌کند\&. \fBSetRebootParameter()\fR نیازمند org\&.freedesktop\&.login1\&.set-reboot-parameter است\&. .PP \fBSetRebootToFirmwareSetup()\fR نیازمند org\&.freedesktop\&.login1\&.set-reboot-to-firmware-setup است\&. \fBSetRebootToBootLoaderMenu()\fR نیازمند org\&.freedesktop\&.login1\&.set-reboot-to-boot-loader-menu است\&. \fBSetRebootToBootLoaderEntry()\fR نیازمند org\&.freedesktop\&.login1\&.set-reboot-to-boot-loader-entry است\&. .PP \fBScheduleShutdown()\fR و \fBCancelScheduledShutdown()\fR نیازمند همان امتیازات (فهرست‌شده در بالا) برای عملیات فوری خاموش‌سازی/راه‌اندازی مجدد/توقف سیستم هستند\&. .PP \fBInhibit()\fR بسته به نوع و حالت قفل گرفته‌شده، از طریق یکی از امتیازهای org\&.freedesktop\&.login1\&.inhibit-block-shutdown، org\&.freedesktop\&.login1\&.inhibit-delay-shutdown، org\&.freedesktop\&.login1\&.inhibit-block-sleep، org\&.freedesktop\&.login1\&.inhibit-delay-sleep، org\&.freedesktop\&.login1\&.inhibit-block-idle، org\&.freedesktop\&.login1\&.inhibit-handle-power-key، org\&.freedesktop\&.login1\&.inhibit-handle-suspend-key، org\&.freedesktop\&.login1\&.inhibit-handle-hibernate-key، org\&.freedesktop\&.login1\&.inhibit-handle-lid-switch محافظت می‌شود\&. .PP پارامترهای بولی \fIinteractive\fR می‌توانند برای کنترل اینکه آیا polkit در صورت نیاز باید از کاربر به صورت تعاملی گواهی‌های احراز هویت بخواهد یا خیر، استفاده شوند\&. .SH "اشیاء SEAT (SEAT OBJECTS)" .sp .if n \{\ .RS 4 .\} .nf node /org/freedesktop/login1/seat/seat0 { interface org\&.freedesktop\&.login1\&.Seat { methods: Terminate(); ActivateSession(in s session_id); SwitchTo(in u vtnr); SwitchToNext(); SwitchToPrevious(); properties: @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly s Id = \*(Aq\&.\&.\&.\*(Aq; readonly (so) ActiveSession = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly b CanTTY = \&.\&.\&.; readonly b CanGraphical = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("false") readonly a(so) Sessions = [\&.\&.\&.]; readonly b IdleHint = \&.\&.\&.; readonly t IdleSinceHint = \&.\&.\&.; readonly t IdleSinceHintMonotonic = \&.\&.\&.; }; interface org\&.freedesktop\&.DBus\&.Peer { \&.\&.\&. }; interface org\&.freedesktop\&.DBus\&.Introspectable { \&.\&.\&. }; interface org\&.freedesktop\&.DBus\&.Properties { \&.\&.\&. }; }; .fi .if n \{\ .RE .\} .SS "متدها (Methods)" .PP \fBTerminate()\fR و \fBActivateSession()\fR مشابه با \fBTerminateSeat()\fR و \fBActivationSessionOnSeat()\fR روی شیء Manager کار می‌کنند\&. .PP \fBSwitchTo()\fR به نشست روی ترمینال مجازی \fIvtnr\fR سوییچ می‌کند\&. \fBSwitchToNext()\fR و \fBSwitchToPrevious()\fR به ترتیب به نشست‌های بعدی و قبلی روی جایگاه بر اساس ترتیب ترمینال‌های مجازی سوییچ می‌کنند\&. اگر نشست فعالی وجود نداشته باشد، آن‌ها به ترتیب به اولین و آخرین نشست روی جایگاه سوییچ می‌کنند\&. .SS "سیگنال‌ها (Signals)" .PP هر زمان که \fBActiveSession\fR، \fBSessions\fR، \fBCanGraphical\fR، \fBCanTTY\fR، یا وضعیت بیکاری تغییر کند، سیگنال‌های \fBPropertyChanged\fR به کلاینت‌هایی که مشترک شده‌اند ارسال می‌شوند\&. .PP سیگنال‌ها تنها روی اشیائی که به یک شناسه جایگاه خاص ارجاع دارند صادر می‌شوند، نه روی اشیاء تسهیل‌کنندهٔ "/org/freedesktop/login1/seat/self" یا "/org/freedesktop/login1/seat/auto" چرا که آن‌ها فقط نسبت به فراخوانندهٔ متد قابل ارجاع‌گشایی هستند\&. .SS "ویژگی‌ها (Properties)" .PP ویژگی \fIId\fR شناسهٔ جایگاه را کدگذاری می‌کند\&. .PP \fIActiveSession\fR نشست فعال کنونی را در صورت وجود کدگذاری می‌کند\&. این ویژگی ساختاری متشکل از شناسه نشست و مسیر شیء است\&. .PP \fICanTTY\fR کدگذاری می‌کند که آیا نشست برای ورودهای متنی مناسب است یا خیر، و \fICanGraphical\fR مشخص می‌سازد که آیا برای نشست‌های گرافیکی مناسب است یا خیر\&. .PP ویژگی \fISessions\fR آرایه‌ای از تمام نشست‌های جاری این جایگاه است که هر کدام در ساختاری متشکل از شناسه و مسیر شیء کدگذاری شده‌اند\&. .PP ویژگی‌های \fIIdleHint\fR، \fIIdleSinceHint\fR، و \fIIdleSinceHintMonotonic\fR وضعیت بیکاری را کدگذاری می‌کنند، مشابه مواردی که روی شیء Manager ارائه شده‌اند، اما به طور خاص برای این جایگاه\&. .SH "اشیاء USER (USER OBJECTS)" .sp .if n \{\ .RS 4 .\} .nf node /org/freedesktop/login1/user/_1000 { interface org\&.freedesktop\&.login1\&.User { methods: Terminate(); Kill(in i signal_number); properties: @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly u UID = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly u GID = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly s Name = \*(Aq\&.\&.\&.\*(Aq; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly t Timestamp = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly t TimestampMonotonic = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly s RuntimePath = \*(Aq\&.\&.\&.\*(Aq; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly s Service = \*(Aq\&.\&.\&.\*(Aq; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly s Slice = \*(Aq\&.\&.\&.\*(Aq; readonly (so) Display = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("false") readonly s State = \*(Aq\&.\&.\&.\*(Aq; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("false") readonly a(so) Sessions = [\&.\&.\&.]; readonly b IdleHint = \&.\&.\&.; readonly t IdleSinceHint = \&.\&.\&.; readonly t IdleSinceHintMonotonic = \&.\&.\&.; readonly b Linger = \&.\&.\&.; }; interface org\&.freedesktop\&.DBus\&.Peer { \&.\&.\&. }; interface org\&.freedesktop\&.DBus\&.Introspectable { \&.\&.\&. }; interface org\&.freedesktop\&.DBus\&.Properties { \&.\&.\&. }; }; .fi .if n \{\ .RE .\} .SS "متدها (Methods)" .PP \fBTerminate()\fR و \fBKill()\fR مشابه با متدهای \fBTerminateUser()\fR و \fBKillUser()\fR روی شیء manager عمل می‌کنند\&. .SS "سیگنال‌ها (Signals)" .PP هر زمان که \fISessions\fR یا وضعیت بیکاری تغییر کند، سیگنال‌های \fBPropertyChanged\fR به کلاینت‌هایی که مشترک شده‌اند ارسال می‌شوند\&. .PP سیگنال‌ها فقط روی اشیائی که به یک UID خاص ارجاع دارند صادر می‌شوند، نه روی شیء تسهیل‌کنندهٔ "/org/freedesktop/login1/user/self" چرا که \fIself\fR تنها نسبت به فراخوانندهٔ متد قابل ارجاع‌گشایی است\&. .SS "ویژگی‌ها (Properties)" .PP ویژگی‌های \fIUID\fR و \fIGID\fR شناسهٔ عددی کاربر (UID) و شناسهٔ گروه اصلی (GID) یونیکس کاربر را کدگذاری می‌کنند\&. .PP ویژگی \fIName\fR نام کاربری را کدگذاری می‌کند\&. .PP \fITimestamp\fR و \fITimestampMonotonic\fR زمان ورود کاربر را به میکروثانیه از مبدأ زمان به ترتیب در ساعت‌های \fBCLOCK_REALTIME\fR و \fBCLOCK_MONOTONIC\fR کدگذاری می‌کنند\&. .PP \fIRuntimePath\fR مسیر زمان اجرای کاربر را کدگذاری می‌کند، یعنی \fI$XDG_RUNTIME_DIR\fR\&. برای جزئیات به \m[blue]\fBمشخصات دایرکتوری پایه XDG\fR\m[]\&\s-2\u[3]\d\s+2\& مراجعه کنید\&. .PP \fIService\fR شامل نام واحد سرویس سیستم‌دی کاربری این کاربر است\&. به هر کاربر وارد شده یک سرویس کاربری اختصاص داده می‌شود که یک نمونهٔ systemd کاربری را اجرا می‌کند\&. این معمولاً نمونه‌ای از user@\&.service است\&. .PP \fISlice\fR شامل نام واحد برش (slice) سیستم‌دی کاربری این کاربر است\&. هر کاربر واردشده یک برش اختصاصی دریافت می‌کند\&. .PP \fIDisplay\fR کدگذاری می‌کند که کدام نشست گرافیکی باید به عنوان نمایشگر اصلی رابط کاربری (UI) برای کاربر استفاده شود\&. این ساختاری است که شناسه نشست و مسیر شیء نشست مورد استفاده را کدگذاری می‌کند\&. .PP \fIState\fR وضعیت کاربر را کدگذاری می‌کند و یکی از مقادیر "offline"، "lingering"، "online"، "active"، یا "closing" است\&. برای اطلاعات بیشتر در مورد وضعیت‌ها به \fBsd_uid_get_state\fR(3) مراجعه کنید\&. .PP \fISessions\fR آرایه‌ای از ساختارها است که تمام نشست‌های جاری کاربر را کدگذاری می‌کند\&. هر ساختار از شناسه و مسیر شیء تشکیل شده است\&. .PP ویژگی‌های \fIIdleHint\fR، \fIIdleSinceHint\fR، و \fIIdleSinceHintMonotonic\fR وضعیت نشانهٔ بیکاری کاربر را کدگذاری می‌کنند، مشابه ویژگی‌های Manager\*(Aqs، اما مختص این کاربر\&. .PP ویژگی \fILinger\fR نشان می‌دهد که آیا ماندگاری (lingering) برای این کاربر فعال است یا خیر\&. .SH "اشیاء SESSION (SESSION OBJECTS)" .sp .if n \{\ .RS 4 .\} .nf node /org/freedesktop/login1/session/1 { interface org\&.freedesktop\&.login1\&.Session { methods: Terminate(); Activate(); Lock(); Unlock(); SetIdleHint(in b idle); SetLockedHint(in b locked); Kill(in s whom, in i signal_number); TakeControl(in b force); ReleaseControl(); SetType(in s type); SetClass(in s class); SetDisplay(in s display); SetTTY(in h tty_fd); TakeDevice(in u major, in u minor, out h fd, out b inactive); ReleaseDevice(in u major, in u minor); PauseDeviceComplete(in u major, in u minor); SetBrightness(in s subsystem, in s name, in u brightness); signals: PauseDevice(u major, u minor, s type); ResumeDevice(u major, u minor, h fd); Lock(); Unlock(); properties: @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly s Id = \*(Aq\&.\&.\&.\*(Aq; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly (uo) User = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly s Name = \*(Aq\&.\&.\&.\*(Aq; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly t Timestamp = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly t TimestampMonotonic = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly u VTNr = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly (so) Seat = \&.\&.\&.; readonly s TTY = \*(Aq\&.\&.\&.\*(Aq; readonly s Display = \*(Aq\&.\&.\&.\*(Aq; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly b Remote = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly s RemoteHost = \*(Aq\&.\&.\&.\*(Aq; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly s RemoteUser = \*(Aq\&.\&.\&.\*(Aq; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly as ExtraDeviceAccess = [\*(Aq\&.\&.\&.\*(Aq, \&.\&.\&.]; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly s Service = \*(Aq\&.\&.\&.\*(Aq; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly s Desktop = \*(Aq\&.\&.\&.\*(Aq; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly s Scope = \*(Aq\&.\&.\&.\*(Aq; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly u Leader = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly t LeaderPIDFDId = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly u Audit = \&.\&.\&.; readonly s Type = \*(Aq\&.\&.\&.\*(Aq; readonly s Class = \*(Aq\&.\&.\&.\*(Aq; readonly b Active = \&.\&.\&.; readonly s State = \*(Aq\&.\&.\&.\*(Aq; readonly b IdleHint = \&.\&.\&.; readonly t IdleSinceHint = \&.\&.\&.; readonly t IdleSinceHintMonotonic = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly b CanIdle = \&.\&.\&.; @org\&.freedesktop\&.DBus\&.Property\&.EmitsChangedSignal("const") readonly b CanLock = \&.\&.\&.; readonly b LockedHint = \&.\&.\&.; }; interface org\&.freedesktop\&.DBus\&.Peer { \&.\&.\&. }; interface org\&.freedesktop\&.DBus\&.Introspectable { \&.\&.\&. }; interface org\&.freedesktop\&.DBus\&.Properties { \&.\&.\&. }; }; .fi .if n \{\ .RE .\} .SS "متدها (Methods)" .PP \fBTerminate()\fR، \fBActivate()\fR، \fBLock()\fR، \fBUnlock()\fR، و \fBKill()\fR مشابه با فراخوانی‌های متناظر روی شیء Manager عمل می‌کنند\&. .PP \fBSetIdleHint()\fR توسط شیء نشست فراخوانی می‌شود تا وضعیت بیکاری نشست را در هر بار تغییر، به‌روزرسانی کند\&. .PP \fBTakeControl()\fR به یک فرایند اجازه می‌دهد کنترل دسترسی مدیریت‌شدهٔ انحصاری به دستگاه‌ها را برای آن نشست در دست بگیرد\&. در هر زمان تنها یک اتصال D\-Bus می‌تواند کنترل‌کنندهٔ یک نشست معین باشد\&. اگر آرگومان \fIforce\fR تنظیم شده باشد (فقط ریشه/root)، کنترل‌کنندهٔ موجود اخراج شده و جایگزین می‌شود\&. در غیر این صورت، اگر از قبل یک کنترل‌کننده وجود داشته باشد، این متد شکست می‌خورد\&. توجه داشته باشید که این متد به کاربران D\-Bus محدود است که UID مؤثر آن‌ها روی کاربر نشست یا ریشه تنظیم شده باشد\&. .PP \fBReleaseControl()\fR کنترل یک نشست معین را رها می‌کند\&. بستن اتصال D\-Bus نیز به طور ضمنی کنترل را آزاد می‌سازد\&. برای اطلاعات بیشتر به \fBTakeControl()\fR مراجعه کنید\&. این متد همچنین تمام دستگاه‌هایی را که کنترل‌کننده از طریق \fBTakeDevice()\fR درخواست مالکیت آن‌ها را کرده بود، آزاد می‌کند\&. .PP \fBSetType()\fR اجازه می‌دهد نوع نشست به صورت پویا تغییر یابد\&. این متد تنها توسط کنترل‌کنندهٔ کنونی نشست قابل فراخوانی است\&. اگر \fBTakeControl()\fR فراخوانی نشده باشد، این متد شکست خواهد خورد\&. علاوه بر این، به محض اینکه کنترل آزاد شود (چه با فراخوانی \fBReleaseControl()\fR یا بستن اتصال D\-Bus)، نوع نشست به مقدار اصلی خود بازنشانی خواهد شد\&. این امر به جلوگیری از ورود نشست به یک وضعیت ناسازگار، مثلاً در صورت خرابی و کرش کردن کنترل‌کننده، کمک می‌کند\&. تنها آرگومان \fItype\fR نوع نشست جدید است\&. .PP \fBSetClass()\fR به فراخواننده اجازه می‌دهد کلاس نشست را به صورت پویا تغییر دهد\&. این متد ممکن است تنها توسط کاربری که مالک نشست است فراخوانی شود\&. در حال حاضر، این فراخوانی ممکن است منحصراً برای تغییر کلاس از "user-incomplete" به "user" استفاده شود\&. فراخوانی همگام (synchronous) است، و تنها پس از اینکه مدیر سرویس کاربر در صورت لزوم با موفقیت راه‌اندازی شد بازمی‌گردد\&. تنها آرگومان \fItype\fR نوع جدید نشست است\&. .PP \fBSetDisplay()\fR اجازه می‌دهد نام نمایشگر نشست گرافیکی تغییر داده شود\&. این زمانی مفید است که سرور نمایشگر به عنوان بخشی از نشست راه‌اندازی شود\&. این متد تنها می‌تواند توسط کنترل‌کنندهٔ کنونی نشست فراخوانی شود\&. اگر \fBTakeControl()\fR فراخوانی نشده باشد، این متد شکست خواهد خورد\&. تنها آرگومان \fIdisplay\fR نام نمایشگر جدید است\&. .PP \fBSetTTY()\fR اجازه می‌دهد نام دستگاه نشست تغییر داده شود\&. این زمانی مفید است که دستگاه tty تنها پس از احراز هویت شناخته شود\&. این متد تنها توسط کنترل‌کنندهٔ کنونی نشست قابل فراخوانی است\&. اگر \fBTakeControl()\fR فراخوانی نشده باشد، این متد شکست خواهد خورد\&. تنها آرگومان \fItty_fd\fR یک دستهٔ فایل (file handle) به دستگاه tty جدید است\&. .PP \fBTakeDevice()\fR به یک کنترل‌کنندهٔ نشست اجازه می‌دهد توصیف‌گر فایل (file descriptor) را برای یک دستگاه خاص دریافت کند\&. شماره‌های اصلی و فرعی (major and minor) دستگاه نویسه‌ای (character device) را وارد کنید و systemd-logind یک توصیف‌گر فایل برای دستگاه بازمی‌گرداند\&. در حال حاضر تنها مجموعهٔ محدودی از انواع دستگاه‌ها پشتیبانی می‌شوند (اما ممکن است گسترش یابد)\&. systemd-logind در صورتی که نشست غیرفعال باشد، به طور خودکار توصیف‌گر فایل را بی‌صدا (mute) می‌کند و به محض فعال شدن مجدد نشست، آن را از سر می‌گیرد\&. این تضمین می‌کند که یک نشست تنها در صورتی می‌تواند به دستگاه‌های نشست دسترسی داشته باشد که نشست فعال باشد\&. توجه داشته باشید که این سازوکار لغو/ازسرگیری ناهمگام (asynchronous) است و ممکن است در هر زمان معینی رخ دهد\&. این قابلیت تنها روی دستگاه‌هایی کار می‌کند که به جایگاه نشست داده‌شده متصل باشند\&. نیازی نیست که یک فرایند دسترسی مستقیم به گره دستگاه داشته باشد\&. systemd-logind تنها نیاز دارد که شما کنترل‌کنندهٔ نشست فعال باشید (به \fBTakeControl()\fR مراجعه کنید)\&. همچنین توجه داشته باشید که هر دستگاه تنها می‌تواند یک بار درخواست شود\&. تا زمانی که آن را آزاد نکنید، فراخوانی‌های بعدی \fBTakeDevice()\fR شکست خواهند خورد\&. .PP \fBReleaseDevice()\fR یک دستگاه را دوباره آزاد می‌کند (به \fBTakeDevice()\fR مراجعه کنید)\&. این کار همچنین به طور ضمنی توسط \fBReleaseControl()\fR یا هنگام بستن اتصال D\-Bus انجام می‌شود\&. .PP \fBPauseDeviceComplete()\fR به یک کنترل‌کنندهٔ نشست اجازه می‌دهد پس از دریافت یک سیگنال \fBPauseDevice(\fR\fB"pause"\fR\fB)\fR یک دستگاه را به صورت همگام متوقف (pause) کند\&. سیگنال‌های اجباری (یا پس از یک مهلت زمانی داخلی) به طور خودکار توسط systemd-logind به صورت ناهمگام تکمیل می‌شوند\&. .PP \fBSetLockedHint()\fR ممکن است برای تنظیم "نشانهٔ قفل" (locked hint) به \fIlocked\fR استفاده شود، یعنی اطلاعاتی در این مورد که آیا نشست قفل است یا خیر\&. این متد برای استفاده توسط محیط رومیزی در نظر گرفته شده تا به \fBsystemd-logind\fR اطلاع دهد که چه زمانی نشست قفل و بازگشایی شده است\&. .PP \fBSetBrightness()\fR ممکن است برای تنظیم روشنایی صفحه نمایش استفاده شود\&. این متد برای استفاده توسط محیط رومیزی در نظر گرفته شده و به برنامه‌های غیرمجاز اجازه می‌دهد به روشی کنترل‌شده به تنظیمات سخت‌افزاری دسترسی پیدا کنند\&. پارامتر \fIsubsystem\fR یک زیرسیستم هسته را مشخص می‌کند، یا "backlight" یا "leds"\&. پارامتر \fIname\fR نام یک دستگاه را تحت زیرسیستم مشخص‌شده تعیین می‌کند\&. پارامتر \fIbrightness\fR روشنایی را مشخص می‌کند\&. محدوده توسط درایورهای اختصاصی تعریف می‌شود، به /sys/class/\fIsubsystem\fR/\fIname\fR/max_brightness مراجعه کنید\&. .SS "سیگنال‌ها (Signals)" .PP کنترل‌کنندهٔ نشست فعال منحصراً رویدادهای \fBPauseDevice()\fR و \fBResumeDevice()\fR را برای هر دستگاهی که از طریق \fBTakeDevice()\fR درخواست کرده بود دریافت می‌کند\&. آن‌ها هر زمان که دستگاهی متوقف یا از سر گرفته شود، کنترل‌کننده را مطلع می‌سازند\&. اگر نشست یک دستگاه غیرفعال باشد، آن دستگاه هرگز از سر گرفته نمی‌شود\&. همچنین توجه داشته باشید که سیگنال‌های \fBPauseDevice()\fR قبل از سیگنال \fBPropertyChanged\fR برای وضعیت \fBActive\fR ارسال می‌شوند\&. عکس این قضیه برای \fBResumeDevice()\fR صادق است\&. یک دستگاه ممکن است به دلایل نامعلومی با وجود فعال بودن Session همچنان در حالت تعلیق/توقف باقی بماند\&. .PP یک سیگنال \fBPauseDevice()\fR شماره‌های اصلی و فرعی و یک رشتهٔ توصیف‌کنندهٔ نوع را به عنوان آرگومان حمل می‌کند\&. \fBforce\fR به این معنی است که دستگاه از قبل توسط systemd-logind متوقف شده بود و سیگنال صرفاً یک اعلان ناهمگام است\&. \fBpause\fR به این معنی است که systemd-logind به شما مقدار محدودی زمان می‌دهد تا دستگاه را متوقف کنید\&. شما باید از طریق \fBPauseDeviceComplete()\fR به این سیگنال پاسخ دهید\&. این سازوکار توقف همگام برای سازگاری با گذشته در برابر VTها استفاده می‌شود و systemd-logind مختار است که از آن استفاده نکند\&. همچنین در صورتی که در زمان مناسب پاسخ ندهید (یا به هر دلیل دیگری) مختار است یک \fBPauseDevice()\fR اجباری ارسال کند\&. \fBgone\fR به این معنی است که دستگاه از سیستم جدا شده است و دیگر هیچ اعلانی در مورد آن دریافت نخواهید کرد\&. نیازی به فراخوانی \fBReleaseDevice()\fR نیست\&. در صورتی که دستگاه جدیدی به ترکیب شماره‌های اصلی+فرعی اختصاص یابد، می‌توانید مجدداً \fBTakeDevice()\fR را فراخوانی کنید\&. .PP \fBResumeDevice()\fR هر زمان که یک نشست فعال باشد و یک دستگاه از سر گرفته شود ارسال می‌گردد\&. این سیگنال شماره‌های اصلی/فرعی را به عنوان آرگومان حمل کرده و یک توصیف‌گر فایل باز جدید ارائه می‌دهد\&. شما باید به توصیف‌گر جدید سوییچ کرده و توصیف‌گر قدیمی را ببندید\&. تضمین نمی‌شود که آن‌ها در هسته توصیف‌گر فایل باز زیرین یکسانی داشته باشند (به جز برای مجموعه محدودی از انواع دستگاه‌ها)\&. .PP هر زمان که \fBActive\fR یا وضعیت بیکاری تغییر کند، سیگنال‌های \fBPropertyChanged\fR به کلاینت‌هایی که مشترک شده‌اند ارسال می‌شوند\&. .PP \fBLock()\fR/\fBUnlock()\fR زمانی ارسال می‌شود که از نشست درخواست شود صفحه قفل/بازگشایی شود\&. مدیر نشست باید به این سیگنال گوش دهد و بر اساس آن عمل کند\&. این سیگنال در نتیجهٔ متدهای \fBLock()\fR و \fBUnlock()\fR به ترتیب ارسال می‌شود\&. .PP سیگنال‌ها فقط روی اشیائی که به یک شناسه نشست خاص ارجاع دارند صادر می‌شوند، نه روی اشیاء تسهیل‌کنندهٔ "/org/freedesktop/login1/session/self" یا "/org/freedesktop/login1/session/auto" چرا که آن‌ها تنها نسبت به فراخوانندهٔ متد قابل ارجاع‌گشایی هستند\&. .SS "ویژگی‌ها (Properties)" .PP \fIId\fR شناسه نشست را کدگذاری می‌کند\&. .PP \fIUser\fR شناسه کاربریِ کاربری را که این نشست متعلق به اوست کدگذاری می‌کند\&. این یک ساختار متشکل از UID یونیکس و مسیر شیء است\&. .PP \fIName\fR نام کاربری را کدگذاری می‌کند\&. .PP \fITimestamp\fR و \fITimestampMonotonic\fR میکروثانیه‌ها را از مبدأ زمان هنگام ایجاد نشست، به ترتیب در \fBCLOCK_REALTIME\fR یا \fBCLOCK_MONOTONIC\fR کدگذاری می‌کنند\&. .PP \fIVTNr\fR شماره ترمینال مجازی نشست را در صورت وجود، و در غیر این صورت 0 کدگذاری می‌کند\&. .PP \fISeat\fR جایگاهی را که این نشست متعلق به آن است (در صورت وجود) کدگذاری می‌کند\&. این ساختاری متشکل از شناسه و مسیر شیء جایگاه است\&. .PP \fITTY\fR مسیر TTY هستهٔ نشست را در صورتی که این یک ورود متنی باشد کدگذاری می‌کند\&. اگر نباشد، این یک رشتهٔ خالی است\&. .PP \fIDisplay\fR نام نمایشگر X11 را در صورتی که این یک ورود گرافیکی باشد کدگذاری می‌کند\&. اگر نباشد، این یک رشتهٔ خالی است\&. .PP \fIRemote\fR کدگذاری می‌کند که آیا نشست محلی است یا از راه دور (remote)\&. .PP \fIRemoteHost\fR و \fIRemoteUser\fR در صورتی که این یک نشست از راه دور باشد، میزبان و کاربر از راه دور را کدگذاری می‌کنند، یا در غیر این صورت یک رشتهٔ خالی خواهند بود\&. .PP \fIExtraDeviceAccess\fR مجموعه دستگاه‌های سخت‌افزاری اضافی را که به نشست اجازهٔ دسترسی به آن‌ها داده شده است کدگذاری می‌کند\&. برای هر "\fIID\fR" در فهرست، نشست اجازهٔ دسترسی به تمام دستگاه‌های برچسب‌گذاری‌شده با "xaccess-\fIID\fR" در udev را دریافت می‌کند\&. .PP \fIService\fR نام سرویس PAM را که نشست را ثبت کرده است کدگذاری می‌کند\&. .PP \fIDesktop\fR محیط رومیزی در حال اجرا در نشست را توصیف می‌کند (در صورت مشخص بودن)\&. .PP \fIScope\fR شامل نام واحد scope سیستم‌دی این نشست است\&. .PP \fILeader\fR PID فرایندی را که نشست را ثبت کرده است کدگذاری می‌کند\&. .PP \fILeaderPIDFDId\fR شناسه inode مربوط به pidfd لینوکس برای فرایندی که نشست را ثبت کرده است کدگذاری می‌کند\&. .PP \fIAudit\fR شناسه نشست Kernel Audit را برای نشست در صورت در دسترس بودن حسابرسی کدگذاری می‌کند\&. .PP \fIType\fR نوع نشست را کدگذاری می‌کند\&. این یکی از موارد "unspecified" (برای نشست‌های PAM مربوط به cron و مانند آن)، "tty" (برای ورودهای متنی)، "web" (برای ورودهای مبتنی بر وب)، یا "x11"/"mir"/"wayland" (برای ورودهای گرافیکی) است\&. .PP \fIClass\fR کلاس نشست را کدگذاری می‌کند\&. این یکی از موارد "user" (برای نشست‌های کاربری عادی)، "greeter" (برای شبه‌نشست‌های مدیر نمایشگر)، یا "lock-screen" (برای صفحات قفل نمایشگر) است\&. .PP \fIActive\fR یک مقدار بولی است که در صورت فعال بودن نشست (یعنی در حال حاضر در پیش‌زمینه بودن)، true است\&. این فیلد به دلیل وجود \fIState\fR تا حدی مازاد است\&. .PP \fIState\fR وضعیت نشست را کدگذاری می‌کند و یکی از مقادیر "online"، "active"، یا "closing" است\&. برای اطلاعات بیشتر در مورد وضعیت‌ها به \fBsd_session_get_state\fR(3) مراجعه کنید\&. .PP \fIIdleHint\fR، \fIIdleSinceHint\fR، و \fIIdleSinceHintMonotonic\fR وضعیت نشانهٔ بیکاری این نشست را در بر می‌گیرند، مشابه شیوه‌ای که ویژگی‌های متناظر روی شیء manager این کار را برای کل سیستم انجام می‌دهند\&. .PP \fILockedHint\fR وضعیت نشانهٔ قفل این نشست را نشان می‌دهد، همان‌طور که توسط متد \fBSetLockedHint()\fR شرح داده شده در بالا تنظیم شده است\&. .PP \fICanIdle\fR نشان می‌دهد که آیا نشست از مفهوم نشانهٔ بیکاری پشتیبانی می‌کند یا خیر\&. به طور مشابه، \fICanLock\fR نشان می‌دهد که آیا نشست از مفهوم قفل صفحه پشتیبانی می‌کند یا خیر\&. .SH "مثال‌ها (EXAMPLES)" .PP \fBمثال\ \&۱.\ \&درون‌نگری مدیر logind روی گذرگاه\fR .sp .if n \{\ .RS 4 .\} .nf $ gdbus introspect \-\-system \-\-dest org\&.freedesktop\&.login1 \e \-\-object\-path /org/freedesktop/login1 .fi .if n \{\ .RE .\} .PP یا .sp .if n \{\ .RS 4 .\} .nf $ busctl introspect org\&.freedesktop\&.login1 /org/freedesktop/login1 .fi .if n \{\ .RE .\} .PP \fBمثال\ \&۲.\ \&درون‌نگری جایگاه پیش‌فرض روی گذرگاه\fR .sp .if n \{\ .RS 4 .\} .nf $ gdbus introspect \-\-system \-\-dest org\&.freedesktop\&.login1 \e \-\-object\-path /org/freedesktop/login1/seat/seat0 .fi .if n \{\ .RE .\} .PP یا .sp .if n \{\ .RS 4 .\} .nf $ busctl introspect org\&.freedesktop\&.login1 /org/freedesktop/login1/seat/seat0 .fi .if n \{\ .RE .\} .PP جایگاه "seat0" جایگاه پیش‌فرض است، بنابراین وجود خواهد داشت مگر اینکه پیکربندی محلی برای اختصاص مجدد همهٔ دستگاه‌ها به یک جایگاه متفاوت انجام شده باشد\&. فهرست جایگاه‌ها و کاربران را می‌توان با \fBloginctl list\-sessions\fR\& به دست آورد\&. .PP \fBمثال\ \&۳.\ \&درون‌نگری یک کاربر منفرد روی گذرگاه\fR .sp .if n \{\ .RS 4 .\} .nf $ gdbus introspect \-\-system \-\-dest org\&.freedesktop\&.login1 \e \-\-object\-path /org/freedesktop/login1/user/_1000 .fi .if n \{\ .RE .\} .PP یا .sp .if n \{\ .RS 4 .\} .nf $ busctl introspect org\&.freedesktop\&.login1 /org/freedesktop/login1/user/_1000 .fi .if n \{\ .RE .\} .PP \fBمثال\ \&۴.\ \&درون‌نگری org\&.freedesktop\&.login1\&.Session روی گذرگاه\fR .sp .if n \{\ .RS 4 .\} .nf $ gdbus introspect \-\-system \-\-dest org\&.freedesktop\&.login1 \e \-\-object\-path /org/freedesktop/login1/session/45 .fi .if n \{\ .RE .\} .PP یا .sp .if n \{\ .RS 4 .\} .nf $ busctl introspect org\&.freedesktop\&.login1 /org/freedesktop/login1/session/45 .fi .if n \{\ .RE .\} .SH "نسخه‌بندی (VERSIONING)" .PP این رابط‌های D\-Bus از \m[blue]\fBدستورالعمل‌های معمول نسخه‌بندی رابط\fR\m[]\&\s-2\u[4]\d\s+2 پیروی می‌کنند\&. .SH "تاریخچه (HISTORY)" .SS "شیء Manager" .PP \fIHandlePowerKeyLongPress\fR، \fIHandleRebootKey\fR، \fIHandleRebootKeyLongPress\fR، \fIHandleSuspendKeyLongPress\fR، و \fIHandleHibernateKeyLongPress\fR در نسخهٔ 251 اضافه شدند\&. .PP \fIStopIdleSessionUSec\fR در نسخهٔ 252 اضافه شد\&. .PP \fBPrepareForShutdownWithMetadata()\fR و \fBCreateSessionWithPIDFD()\fR در نسخهٔ 255 اضافه شدند\&. .PP \fBSleep()\fR، \fBCanSleep()\fR، \fISleepOperation\fR، و \fBListSessionsEx()\fR در نسخهٔ 256 اضافه شدند\&. .PP \fIHandleSecureAttentionKey\fR، \fBSecureAttentionKey()\fR، \fIPreparingForShutdownWithMetadata\fR، \fIDesignatedMaintenanceTime\fR، \fICanIdle\fR، \fICanLock\fR، و \fIBlockWeakInhibited\fR در نسخهٔ 257 اضافه شدند\&. .SS "اشیاء Session" .PP \fBSetDisplay()\fR در نسخهٔ 252 اضافه شد\&. .PP \fBSetTTY()\fR در نسخهٔ 254 اضافه شد\&. .PP \fBSetClass()\fR در نسخهٔ 256 اضافه شد\&. .PP \fILeaderPIDFDId\fR در نسخهٔ 258 اضافه شد\&. .PP \fIExtraDeviceAccess\fR در نسخهٔ 260 اضافه شد\&. .SH "همچنین ببینید (SEE ALSO)" .PP \fBsystemd\fR(1), \fBsystemd-logind.service\fR(8), \fBloginctl\fR(1) .SH "نکات (NOTES)" .IP " 1." 4 polkit .RS 4 \%https://www.freedesktop.org/software/polkit/docs/latest .RE .IP " 2." 4 قفل‌های مهارکننده (Inhibitor Locks) .RS 4 \%https://systemd.io/INHIBITOR_LOCKS .RE .IP " 3." 4 مشخصات دایرکتوری پایه XDG .RS 4 \%https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html .RE .IP " 4." 4 دستورالعمل‌های معمول نسخه‌بندی رابط .RS 4 \%https://0pointer.de/blog/projects/versioning-dbus.html .RE