c2c4d84fc1
gi modules are always loaded (there is no API for "set version without loading"), so we need to break dependencies.js into three sections: - Required - Compile-time optional - Runtime optional Required dependencies are always imported, compile-time optional dependencies are loaded if gnome-shell is compiled with support for them, and for runtime optional dependencies we catch any errors when attempting to load them. If runtime optional dependencies fail to load we log a debug-level message. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2822>
75 lines
2.0 KiB
JavaScript
75 lines
2.0 KiB
JavaScript
import gi from 'gi';
|
|
|
|
/**
|
|
* Required dependencies
|
|
*/
|
|
|
|
import 'gi://AccountsService?version=1.0';
|
|
import 'gi://Atk?version=1.0';
|
|
import 'gi://Atspi?version=2.0';
|
|
import 'gi://Gcr?version=4';
|
|
import 'gi://Gdk?version=4.0';
|
|
import 'gi://Gdm?version=1.0';
|
|
import 'gi://Geoclue?version=2.0';
|
|
import 'gi://Gio?version=2.0';
|
|
import 'gi://GDesktopEnums?version=3.0';
|
|
import 'gi://GdkPixbuf?version=2.0';
|
|
import 'gi://GnomeBG?version=4.0';
|
|
import 'gi://GnomeDesktop?version=4.0';
|
|
import 'gi://Graphene?version=1.0';
|
|
import 'gi://GWeather?version=4.0';
|
|
import 'gi://IBus?version=1.0';
|
|
import 'gi://Pango?version=1.0';
|
|
import 'gi://Polkit?version=1.0';
|
|
import 'gi://PolkitAgent?version=1.0';
|
|
import 'gi://Rsvg?version=2.0';
|
|
import 'gi://Soup?version=3.0';
|
|
import 'gi://UPowerGlib?version=1.0';
|
|
|
|
const Config = imports.misc.config;
|
|
|
|
// Meta-related dependencies use a shared version
|
|
// from the compile-time config.
|
|
gi.require('Meta', Config.LIBMUTTER_API_VERSION);
|
|
gi.require('Clutter', Config.LIBMUTTER_API_VERSION);
|
|
gi.require('Cogl', Config.LIBMUTTER_API_VERSION);
|
|
gi.require('Shell', Config.LIBMUTTER_API_VERSION);
|
|
gi.require('St', Config.LIBMUTTER_API_VERSION);
|
|
|
|
/**
|
|
* Compile-time optional dependencies
|
|
*/
|
|
|
|
if (Config.HAVE_BLUETOOTH)
|
|
gi.require('GnomeBluetooth', '3.0');
|
|
else
|
|
console.debug('GNOME Shell was compiled without GNOME Bluetooth support');
|
|
|
|
|
|
if (Config.HAVE_NETWORKMANAGER) {
|
|
gi.require('NM', '1.0');
|
|
gi.require('NMA4', '1.0');
|
|
} else {
|
|
console.debug('GNOME Shell was compiled without Network Manager support');
|
|
}
|
|
|
|
/**
|
|
* Runtime optional dependencies
|
|
*/
|
|
|
|
try {
|
|
// Malcontent is optional, so catch any errors loading it
|
|
gi.require('Malcontent', '0');
|
|
} catch {
|
|
console.debug('Malcontent is not available, parental controls integration will be disabled.');
|
|
}
|
|
|
|
|
|
try {
|
|
// Telepathy is optional, so catch any errors loading it
|
|
gi.require('TelepathyGLib', '0.12');
|
|
gi.require('TelepathyLogger', '0.2');
|
|
} catch {
|
|
console.debug('Telepathy is not available, chat integration will be disabled.');
|
|
}
|