Command line tool to manage your Gnome Shell extensions
Project description
gnome-extensions-cli
Install, update and manage your Gnome Shell extensions from your terminal !
Features
- You can install any extension available on Gnome website
- Use DBus to communicate with Gnome Shell like the Firefox addon does
- Also support non-DBus installations if needed
- Automatically select the compatible version to install for your Gnome Shell
- Update all your extensions with one command:
gext update
Available commands:
gext list
to list you installed extensionsgext search
to search for extensions on Gnome websitegext install
to install extensionsgext install
to update any or all your extensionsgext uninstall
to uninstall extensionsgext show
to show details about extensionsgext enable
to enable extensionsgext disable
to disable extensionsgext preferences
to open the extension configuration window
Note:
gext
is an alias ofgnome-extensions-cli
Install
Releases
Releases are available on PyPI
Note: PipX is the recommended way to install 3rd-party apps in dedicated environments.
# install using pip
$ pip3 install --upgrade gnome-extensions-cli
# or using pipx (you need to install pipx first)
$ pipx install gnome-extensions-cli --system-site-packages
# gext is an alias for gnome-extensions-cli
$ gnome-extensions-cli --help
$ gext --help
From the source
You can also install the latest version from the Git repository:
$ pip3 install --upgrade git+https://github.com/essembeh/gnome-extensions-cli
You can setup a development environment with, requires Poetry
# dependencies to install PyGObject with pip
$ sudo apt install libgirepository1.0-dev gcc libcairo2-dev pkg-config python3-dev gir1.2-gtk-3.0
# clone the repository
$ git clone https://github.com/essembeh/gnome-extensions-cli
$ cd gnome-extensions-cli
# install poetry if you don't have it yet
$ pipx install poetry
# create the venv using poetry
$ poetry install
$ poetry shell
(.venv) $ gnome-extensions-cli --help
Using
List your extensions
By default, the list
command only display the enabled extensions, using -a|--all
argument also displays disabled ones.
Install, update or uninstall extensions
The install
commands allows you to install extensions from their uuid or pk.
Note: You can use
search
command to find extensions,gext
prints uuids in yellow .
# Install extension by its UUID
$ gext install dash-to-panel@jderose9.github.com
# or use its package number from https://extensions.gnome.org
$ gext install 1160
# You can also install multiple extensions at once
$ gext install 1160 todo.txt@bart.libert.gmail.com
# Uninstall extensions
$ gext uninstall todo.txt@bart.libert.gmail.com
# You can enable and disable extensions
$ gext enable todo.txt@bart.libert.gmail.com
$ gext disable todo.txt@bart.libert.gmail.com dash-to-panel@jderose9.github.com
The update
command without arguments updates all enabled extensions.
You can also update
a specific extension by giving its uuid.
Note: the
--install
argument allow you to install extensions given toupdate
command if they are not installed.
Search for extensions and show details
The search
command searches from Gnome website and prints results in your terminal:
The show
command fetches details from Gnome website and prints them:
Under the hood: DBus vs Filesystem
gext
can interact with Gnome Shell using two different implementations, using dbus
or using a filesystem
operations.
Note: By default, it uses
dbus
(as it is the official way), but switches tofilesystem
ifdbus
is not available (like with ssh sessions)
DBus
Using --dbus
, the application uses dbus messages with DBus Python API to communicate with Gnome Shell directly.
Installations are interactive, like when you install extensions from your brower on Gnome website, you are prompted with a Gnome Yes/No dialog before installing the extensions
Pros:
- You are using the exact same way to install extensions as the Firefox addon
- Automatically restart the Gnome Shell when needed
- Very stable
- You can open the extension preference dialog with
gext edit EXTENSION_UUID
Cons:
- You need to have a running Gnome session
Filesystem backend
Using --filesystem
, the application uses unzip packages from Gnome website directly 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 (usign ssh for example)
- Many
gext
alternatives CLI tools use this method
Cons:
- Some extensions might not install well
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for gnome_extensions_cli-0.9.4.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6663c1848c83c117025eb6775ac01d25902215facfa045a32483bf5f589dd508 |
|
MD5 | 896daa0cd11258acaacb1e75795f76e1 |
|
BLAKE2b-256 | d5a0edc03f64dee93d1193a9b054fcb69ad5fe20f0932514801506adee79dc68 |
Hashes for gnome_extensions_cli-0.9.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5c1ca88b5f411ac11ab914cbbcf13d8b0367f5a1334578e951d644fea5084e59 |
|
MD5 | 9c0721163748e9ca96ccd6d70a4189d8 |
|
BLAKE2b-256 | 6cf33dc2314237c46738ce62d3dfbbc33b8a80f72eb5a1bc17312cc29dbd90f1 |