Packaging - GSConnect/gnome-shell-extension-gsconnect GitHub Wiki
Note to Users
This documentation is meant for distribution packagers. If you encounter a packaging bug with GSConnect, you should file a downstream bug report with the distribution or package maintainer.
Contents
GSConnect uses a complete meson build that can produce a user Zip or system package.
Dependencies
The only true dependencies of GSConnect are the current stable release of gnome-shell and openssl. All dependent libraries are dependencies of gnome-shell and most distributions ship openssl by default (except Fedora Silverblue).
All features below are optional. Each lists the precise shared objects (.so), typelibs (.typelib) or binaries required, and briefly describes what plugin or functionality requires it.
Contacts Integration
REQUIRES: EBook-1.2.typelib, EBookContacts-1.2.typelib, EDataServer-1.2.typelib
GSConnect supports integrating desktop contacts using evolution-data-server, which can source contacts from GNOME Online Accounts, Evolution and other providers. Typically GNOME Shell ships with the required TypeLib files, except on distributions that package them separately (eg. Ubuntu).
File Manager Integration
REQUIRES: Nautilus-3.0.typelib, libnautilus-python.so
GSConnect includes a Nautilus (Files) extension written using the Python bindings allowing files to be sent from the context menu of selected items.
See the meson notes for File Browser Extensions below for more information.
Sound Effects
REQUIRES: GSound-1.0.typelib or canberra-gtk-play
GSConnect plays sounds from the sound-theme-spec and most GNOME Shell users will have libcanberra and canberra-gtk-play installed already. libgsound will be used if available.
If neither are available, GSConnect will attempt to fallback to using gdk_display_beep().
The Find My Phone plugin loops a sound effect when receiving a location request.
Notes on meson Options
If you need additional build options to package GSConnect for your distribution, consider opening a New Issue describing your requirements before maintaining a downstream patch. If the required changes don't break compatibility for another packager, they will probably be approved.
firewalld
-
-Dfirewalld=falseDefault is
false. Iftruea firewalld service file will be installed toPREFIX/LIBDIR/firewalld/services. The service requires ports1716(UDP & TCP) and1739-1764(TCP & UDP) for full functionality.
gnome_shell_libdir
-
-Dgnome_shell_libdir=PATHDefault is
PREFIX/LIBDIR, whereLIBDIRis as defined by--libdir. If provided this should be a complete, absolute path to be used when searching forGvc-1.0.typelibso that the result is:GNOME_SHELL_LIBDIR/gnome-shell/Gvc-1.0.typelibWhen installed as a user extension
PREFIX/LIBDIRis inferred fromgjs's GIRepository search path.When building as a system package, this option MUST be correctly defined for volume control support.
gsettings_schemadir
-
-Dgsettings_schemadir=PATHDefault is
PREFIX/DATADIR/glib-2.0/schemas. If provided it will override the path when compiling and loading the GSchema so that the result is:GSETTINGS_SCHEMADIR/gschemas.compiled
post_install
-
-Dpost_install=falseDefault is
false. Iftruethe scriptmeson/post-install.shwill be run at the end of theinstalltarget. Currently, this compiles the GSchemas inGSETTINGS_SCHEMADIRusingglib-compile-schemas.
session_bus_services_dir
-
-Dsession_bus_services_dir=PATHGSConnect uses DBus Activation so that the Shell extension can start the service at login and restart it if updated.
When installed as a user extension the service file is installed to
XDG_DATA_HOME/dbus-1/services/by the Shell extension when it is loaded (not enabled/disabled). When building as a system package the default is to checkpkg-config, then fallback back toPREFIX/DATADIR/dbus-1/services.
External Binaries
-
-Dopenssl_path=openssl
-Dsshadd_path=ssh-add
-Dsshkeygen_path=ssh-keygenWhen building as a system package, each option will override the default behaviour of searching
PATHwhen spawning an external process. In other words, the default is the executable name (eg.openssl), but may be overriden with an absolute path to the executable (eg./usr/bin/openssl).
File Manager Extensions
-
-Dnautilus=true
-Dnemo=trueDefault is
true. Iffalsea helper extension will not be installed for the corresponding file manager.When installed as a user extension soft-links to the file manager helpers are created by the Shell extension when it is loaded (not enabled/disabled) at the following locations:
XDG_DATA_HOME/nautilus-python/extensions/nautilus-gsconnect.py XDG_DATA_HOME/nemo-python/extensions/nemo-gsconnect.pyWhen building as a system package:
PREFIX/DATADIR/nautilus-python/extensions/nautilus-gsconnect.py PREFIX/DATADIR/nemo-python/extensions/nemo-gsconnect.pyAlthough there is currently no build target for producing a separate package for the Nautilus or Nemo extensions, if that's appropriate for your distribution you are welcome to do so. The extensions depend on the
nautilus-python/nemo-pythonfile manager extension framework, and only require access to the Session DBus and translations.
WebExtension Manifests
-
-Dwebextension=trueDefault is
true. Iffalsethe WebExtension manifests will not be installed, making it impossible for the Native Messaging Host to be started by the Chrome Extension or Firefox Add-On. Although there is currently no build target for producing a separate package for the manifests it is possible, although the WebExtension itself will always be distributed from the browser's extension or add-on website.When installed as a user extension the manifests are installed by the Shell extension when it is loaded (not enabled/disabled) in the following locations:
XDG_CONFIG_HOME/google-chrome{,-beta,-unstable}/NativeMessagingHosts/ XDG_CONFIG_HOME/chromium/NativeMessagingHosts/ HOME/.mozilla/native-messaging-hosts/When building as a system package:
SYSCONFDIR/opt/chrome/native-messaging-hosts/ SYSCONFDIR/chromium/native-messaging-hosts/ PREFIX/LIBDIR/mozilla/native-messaging-hosts/ -
-Dchrome_nmhdir=PATH
-Dchromium_nmhdir=PATH
-Dmozilla_nmhdir=PATHWhen building as a system package, these three options override the install path for the native messaging hosts so that the destination is:
CHROME_NMHDIR/org.gnome.shell.extensions.gsconnect.json CHROMIUM_NMHDIR/org.gnome.shell.extensions.gsconnect.json MOZILLA_NMHDIR/org.gnome.shell.extensions.gsconnect.json