ORG.FREEDESKTOP.LOCALE1(5) org.freedesktop.locale1 ORG.FREEDESKTOP.LOCALE1(5)

org.freedesktop.locale1 - رابط کاربری D-Bus سرویس systemd-localed

systemd-localed.service(8) یک سرویس سیستمی است که می‌تواند برای کنترل لوکال (locale) سیستم و نگاشت صفحه‌کلید از برنامه‌های کاربری استفاده شود. این صفحه رابط D-Bus را شرح می‌دهد.

این سرویس رابط‌های زیر را در گذرگاه ارائه می‌دهد:

node /org/freedesktop/locale1 {
  interface org.freedesktop.locale1 {
    methods:
      SetLocale(in  as locale,
                in  b interactive);
      SetVConsoleKeyboard(in  s keymap,
                          in  s keymap_toggle,
                          in  b convert,
                          in  b interactive);
      SetX11Keyboard(in  s layout,
                     in  s model,
                     in  s variant,
                     in  s options,
                     in  b convert,
                     in  b interactive);
    properties:
      readonly as Locale = ['...', ...];
      readonly s X11Layout = '...';
      readonly s X11Model = '...';
      readonly s X11Variant = '...';
      readonly s X11Options = '...';
      readonly s VConsoleKeymap = '...';
      readonly s VConsoleKeymapToggle = '...';
  };
  interface org.freedesktop.DBus.Peer { ... };
  interface org.freedesktop.DBus.Introspectable { ... };
  interface org.freedesktop.DBus.Properties { ... };
};

اگر یک لوکال سیستمی جدید تنظیم کنید، تمام تنظیمات پیشین لوکال سیستم نادیده گرفته شده و تنظیمات جدید بر روی دیسک ذخیره خواهند شد. این لوکال همچنین به مدیر سیستم ارسال می‌شود و دیمن‌هایی که متعاقباً راه‌اندازی شوند، لوکال جدید سیستم را به ارث خواهند برد. توجه داشته باشید که دیمن‌هایی که از قبل در حال اجرا هستند، مقدار جدید را دریافت نخواهند کرد.

متد SetVConsoleKeyboard() می‌تواند برای تنظیم نگاشت کلید برای کنسول مجازی استفاده شود. به‌طور مشابه، متد SetX11Keyboard() می‌تواند برای تنظیم نگاشت پیش‌فرض کلید هر یک از سرورهای X11 به کار رود.

توجه داشته باشید که SetVConsoleKeyboard() نگاشت جدید کلید را فوراً روی کنسول اعمال می‌کند، در حالی که SetX11Keyboard() صرفاً یک پیش‌فرض تعیین می‌کند که ممکن است توسط نشست‌های بعدی استفاده شود.

آرگومان بولی convert می‌تواند تنظیم شود تا در صورت تمایل پیکربندی صفحه‌کلید کنسول به نگاشت‌های صفحه‌کلید X11 و برعکس تبدیل شود. اگر true باشد و SetVConsoleKeyboard() استفاده شود، نزدیک‌ترین تنظیم صفحه‌کلید X11 برای تنظیم کنسول انتخاب‌شده اعمال می‌گردد. اگر true باشد و SetX11Keyboard() استفاده شود، نزدیک‌ترین تنظیم صفحه‌کلید کنسول برای تنظیم X11 انتخاب‌شده اعمال می‌گردد. از این رو، معمولاً فراخوانی تنها یکی از این دو تابع کافی است.

برای رابط‌های گرافیکی کاربری (UI) که نیاز به تنظیم نگاشت صفحه‌کلید سیستم دارند، کافی است SetX11Keyboard() را فراخوانی کنید، convert=true را تنظیم کرده و از SetVConsoleKeyboard() صرف‌نظر کنید.

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

پارامتر بولی interactive می‌تواند برای کنترل این موضوع استفاده شود که آیا polkit[1] در صورت نیاز باید به‌صورت تعاملی اعتبارنامه‌های احراز هویت را از کاربر بخواهد یا خیر.

هر زمان که لوکال یا نگاشت کلید سیستم از طریق دیمن تغییر کند، سیگنال‌های PropertyChanged به کلاینت‌هایی که مشترک شده‌اند ارسال می‌شوند.

لوکال سیستم در ویژگی Locale نمایش داده می‌شود. این ویژگی یک آرایه شامل رشته‌هایی شبیه به تخصیص متغیرهای محیطی است. رشته‌های زیر شناخته‌شده هستند: LANG=, LC_CTYPE=, LC_NUMERIC=, LC_TIME=, LC_COLLATE=, LC_MONETARY=, LC_MESSAGES=, LC_PAPER=, LC_NAME=, LC_ADDRESS=, LC_TELEPHONE=, LC_MEASUREMENT=, LC_IDENTIFICATION=.

ویژگی‌های X11Layout, X11Model, X11Variant و X11Options مقادیر قابل پیکربندی با SetX11Keyboard() شرح‌داده‌شده در بالا (یا SetVConsoleKeyboard() همراه با convert=true) را نشان می‌دهند. ویژگی‌های VConsoleKeymap و VConsoleKeymapToggle مقادیر قابل پیکربندی با SetVConsoleKeyboard() (یا SetX11Keyboard() همراه با convert=true) را نشان می‌دهند.

تغییر لوکال یا نگاشت کلید سیستم با استفاده از این رابط از طریق polkit احراز هویت می‌شود. اقدام (action) مربوط به polkit برای SetLocale() برابر با org.freedesktop.locale1.set-locale است. اقدام polkit برای SetX11Keyboard() و SetVConsoleKeyboard() برابر با org.freedesktop.locale1.set-keyboard است.

مثال ۱. درون‌نگری org.freedesktop.locale1 در گذرگاه

$ gdbus introspect --system \
  --dest org.freedesktop.locale1 \
  --object-path /org/freedesktop/locale1

این رابط‌های D-Bus از دستورالعمل‌های معمول نسخه‌بندی رابط[2] پیروی می‌کنند.

systemd(1), systemd-localed.service(8), localectl(1)

1.
polkit
2.
دستورالعمل‌های معمول نسخه‌بندی رابط
systemd 261.2