Package: gnome-extensions-cli
gnome-extensions-cliInstall, update and manage your Gnome Shell extensions from your terminal !FeaturesYou can install any extension available onGnome websiteUseDBusto communicate withGnome Shelllike the Firefox addon doesAlso support non-DBus installations if neededAutomatically select the compatible version to install for your Gnome ShellUpdate all your extensions with one command:gext updateAvailable commands:gext listto list you installed extensionsgext searchto search for extensions onGnome websitegext installto install extensionsgext updateto update any or all your extensionsgext uninstallto uninstall extensionsgext showto show details about extensionsgext enableto enable extensionsgext disableto disable extensionsgext preferencesto open the extension configuration windowNote:gextis an alias ofgnome-extensions-cliInstallReleasesReleases are available onPyPINote:PipXis the recommended way to install 3rd-party apps in dedicated environments.# install using pip$pip3install--upgradegnome-extensions-cli# or using pipx (you need to install pipx first)$pipxinstallgnome-extensions-cli--system-site-packages# gext is an alias for gnome-extensions-cli$gnome-extensions-cli--help
$gext--helpFrom the sourceYou can also install thelatestversion from the Git repository:$pip3install--upgradegit+https://github.com/essembeh/gnome-extensions-cliYou can setup a development environment with, requiresPoetry# dependencies to install PyGObject with pip$sudoaptinstalllibgirepository1.0-devgcclibcairo2-devpkg-configpython3-devgir1.2-gtk-3.0# clone the repository$gitclonehttps://github.com/essembeh/gnome-extensions-cli
$cdgnome-extensions-cli# install poetry if you don't have it yet$pipxinstallpoetry# create the venv using poetry$poetryinstall
$poetryshell(.venv)$gnome-extensions-cli--helpUsingList your extensionsBy default, thelistcommand only display theenabledextensions, using-a|--allargument also displaysdisabledones.Install, update or uninstall extensionsTheinstallcommands allows you to install extensions from theiruuidorpk.Note: You can usesearchcommand to find extensions,gextprintsuuidsinyellow.# Install extension by its UUID$gextinstalldash-to-panel@jderose9.github.com# or use its package number from https://extensions.gnome.org$gextinstall1160# You can also install multiple extensions at once$gextinstall1160todo.txt@bart.libert.gmail.com# Uninstall extensions$gextuninstalltodo.txt@bart.libert.gmail.com# You can enable and disable extensions$gextenabletodo.txt@bart.libert.gmail.com
$gextdisabletodo.txt@bart.libert.gmail.comdash-to-panel@jderose9.github.comTheupdatecommand without arguments updates allenabledextensions.
You can alsoupdatea specific extension by giving itsuuid.Note: the--installargument allow you toinstallextensions given toupdatecommand if they are not installed.Search for extensions and show detailsThesearchcommand searches fromGnome websiteand prints results in your terminal:Theshowcommand fetches details fromGnome websiteand prints them:Under the hood: DBus vs Filesystemgextcan interact with Gnome Shell using two different implementations, usingdbusor using afilesystemoperations.Note: By default, it usesdbus(as it is the official way), but switches tofilesystemifdbusis not available (like withsshsessions)DBusUsing--dbus, the application usesdbusmessages with DBus Python API to communicate with Gnome Shell directly.Installations are interactive, like when you install extensions from your browser on Gnome website, you are prompted with a GnomeYes/Nodialog before installing the extensionsPros:You are using the exact same way to install extensions as the Firefox addonAutomatically restart the Gnome Shell when neededVery stableYou can open the extension preference dialog withgext edit EXTENSION_UUIDCons:You need to have a running Gnome sessionFilesystem backendUsing--filesystem, the application uses unzip packages fromGnome websitedirectly in you~/.local/share/gnome-shell/extensions/folder, enable/disable them and restarting the Gnome Shell using subprocesses.Pros:You can install extensions without any Gnome session running (usingsshfor example)Manygextalternatives CLI tools use this methodCons:Some extensions might not install well