gnome-shell/js/misc/dependencies.js
Evan Welsh c2c4d84fc1 dependencies: Migrate to ES module and organize dependencies
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>
2023-07-15 02:35:56 +00:00

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.');
}