Как получить имя ОС при написании расширений gnome..
Например:
GLib.get_real_name()
Я прочитал этот пост Как мое расширение GNOME Shell определить версию GNOME?
Как получить имя ОС при написании расширений gnome..
Например:
GLib.get_real_name()
Я прочитал этот пост Как мое расширение GNOME Shell определить версию GNOME?
В случае получения имени операционной системы, найденного в /etc/os-release
, это не имеет особого отношения к GJS или расширениям.
Вы можете просто открыть файл /etc/os-release
напрямую, но, поскольку GKeyFile
не является интроспективным в GJS, вам придется анализировать его вручную. В качестве альтернативы вы можете использовать интерфейс org.freedesktop.hostname1
DBus, чтобы получить красивое имя, хотя я не знаю, гарантированно ли это будет доступно во всех дистрибутивах.
const GLib = imports.gi.GLib;
const Gio = imports.gi.Gio;
let osName = 'Unknown';
try {
// NOTE: this is a synchronous call that will block the main thread
// until it completes. Using `Gio.DBus.system.call()` would be
// better, but I don't know if that works for your use case.
let reply = Gio.DBus.system.call_sync(
'org.freedesktop.hostname1',
'/org/freedesktop/hostname1',
'org.freedesktop.DBus.Properties',
'Get',
new GLib.Variant('(ss)', [
'org.freedesktop.hostname1',
'OperatingSystemPrettyName'
]),
null,
Gio.DBusCallFlags.NONE,
-1,
null
);
let value = reply.deep_unpack()[0];
osName = value.unpack();
} catch (e) {
logError(e, 'Fetching OS name');
}
// Example Output: "Fedora 32 (Workstation Edition)" or "Unknown" on failure
log(osName);