GNOME Shell extensions are small and lightweight pieces of codes that enhance GNOME desktop’s functionality and improves the user experience. They are the equivalent of add-ons in your browser. For instance, you can have add-ons that download videos like IDM downloader or block annoying ads such as Adblocker.
Similarly, GNOME extensions perform certain tasks e.g. Display weather and geolocation. One of the tools used to install and customize GNOME Shell extensions is the GNOME tweak tool. It comes pre-installed in the latest Linux distributions. This article we cover how to install GNOME Shell extensions from GUI and from the command line on various Linux distros.
On Ubuntu 17.10 & Debian 9
Run the command below to install gnome tweak tool
apt-get install gnome-tweak-tool
On Fedora 21 and later
Run the command below
dnf install gnome-tweak-tool
On CentOS and RHEL 7
Run the command as shown below
yum install gnome-tweak-tool
You can locate the tweak tool by searching it
Launch and navigate to the 'Extensions' tab and enable your desired gnome-shell extensions.
To know the version of GNOME shell you are running, type
gnome-shell --version
Below are other ways you can employ to install GNOME Shell extensions
- Manually downloading and installing extensions
- Adding extensions on your web browser
- Using default minimal extensions provided by your Linux distribution.
Using GNOME shell extensions
This is by far the easiest and safest way of installing shell extensions as extension packages have been tested by your Linux distribution.
For Ubuntu 17.10
apt-get install gnome-shell-extensions
For Centos & RHEL 7
yum install gnome-shell-extensions
Finally, restart your system and proceed to GNOME tweaks
Installing shell extensions from a browser
There's an entire sire purposefully dedicated to shell extensions. From the website, you can install and manage extensions without the need for gnome-tweak-tool. Visit GNOME's extensions website
To install an extension like OpenWeather for instance, click on it. A new window will open where you'll be required to turn it 'ON' and select your GNOME shell version. In my case, the shell version is 3.22
The installed OpenWeather extension can be located at the top bar. When launched, it gives detailed information about the weather condition of a given location.
Sometimes, during installation, you may get an error below..
“Although GNOME Shell integration extension is running, native host connector is not detected. Refer documentation for instructions about installing connector”
This implies you have to install a native connector.
You can also install chrome extensions by visiting the Chrome web store or using a native connector.
Using native connectors
For Ubuntu 14.04 , 16.04 , 17.10
sudo add-apt-repository ppa:ne0sight/chrome-gnome-shell sudo apt-get update sudo apt-get install chrome-gnome-shell
Debian 8, 9
A package available in Sid and Stretch: https://tracker.debian.org/pkg/chrome-gnome-shell
Fedora 21 and later
Installation steps
dnf copr enable region51/chrome-gnome-shell
dnf install chrome-gnome-shell
Arch Linux
A PKGBUILD is available in the AUR: https://aur.archlinux.org/packages/chrome-gnome-shell-git
Gentoo Linux
Install connector with the command:
emerge -av gnome-extra/chrome-gnome-shell
CMAKE Installation
Before doing anything else, ensure the following dependencies are already installed.
Build
- Python 2.7+ or 3.x (also runtime dependency)
- Cmake 2.8 (or newer)
- Coreutils
- jq - command line for JSON processor
Runtime
- GNOME Shell
- GPyGObject
- Python Requests 2.x
- DBus
Installation steps
Install git to enable us clone the repository from GitHub
yum install git
Install cmake to help us build from source
yum install cmake
Install coreutils
yum install coreutils
Install jq
yum install jq
Clone the gnome shell repository
git clone git://git.gnome.org/chrome-gnome-shell
Output
Cloning into 'chrome-gnome-shell'... remote: Counting objects: 3245, done. remote: Compressing objects: 100% (2633/2633), done. remote: Total 3245 (delta 2220), reused 627 (delta 407) Receiving objects: 100% (3245/3245), 672.91 KiB | 84.00 KiB/s, done. Resolving deltas: 100% (2220/2220), done.
Navigate to the root folder
cd chrome-gnome-shell/
ls
chrome-gnome-shell.doap connector extension NEWS README.md CMakeLists.txt contrib LICENSE po
create a build directory and navigate to it.
mkdir build && cd build
Compile from source
cmake -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_EXTENSION=OFF ../ -- Found base64: /bin/base64 -- Found sha256sum: /bin/sha256sum -- Found head: /bin/head -- Found tr: /bin/tr -- Found jq: /bin/jq -- Calculated Chrome extension id: gphhapmejobijbbhgpjhcjognlahblep -- Calculated Opera extension id: olkooankbfblcebocnkjganpdmflbnbk -- Found PythonInterp: /bin/python (found version "2.7.5") -- Configuring done -- Generating done -- Build files have been written to: /home/tarantula/Downloads/chrome-gnome-shell/build
make install
Output
Scanning dependencies of target build-connector running build running build_scripts creating build creating build/scripts-2.7 copying and adjusting /home/tarantula/Downloads/chrome-gnome-shell/connector/../build/chrome-gnome-shell -> build/scripts-2.7 changing mode of build/scripts-2.7/chrome-gnome-shell from 644 to 755 Built target build-connector Scanning dependencies of target firefox-native-manifest Built target firefox-native-manifest Install the project... -- Install configuration: "Release" running install running build running build_scripts copying and adjusting /home/tarantula/Downloads/chrome-gnome-shell/connector/../build/chrome-gnome-shell -> build/scripts-2.7 running install_scripts copying build/scripts-2.7/chrome-gnome-shell -> /usr/bin changing mode of /usr/bin/chrome-gnome-shell to 755 running install_egg_info Writing /usr/lib/python2.7/site-packages/chrome_gnome_shell-0.0.0-py2.7.egg-info -- Installing: /etc/chromium/native-messaging-hosts/org.gnome.chrome_gnome_shell.json -- Installing: /etc/opt/chrome/native-messaging-hosts/org.gnome.chrome_gnome_shell.json -- Installing: /usr/lib64/mozilla/native-messaging-hosts/org.gnome.chrome_gnome_shell.json -- Installing: /usr/share/applications/org.gnome.ChromeGnomeShell.desktop -- Installing: /usr/share/dbus-1/services/org.gnome.ChromeGnomeShell.service -- Installing: /usr/share/icons/gnome/16x16/apps/org.gnome.ChromeGnomeShell.png -- Installing: /usr/share/icons/gnome/48x48/apps/org.gnome.ChromeGnomeShell.png -- Installing: /usr/share/icons/gnome/128x128/apps/org.gnome.ChromeGnomeShell.png
Wrapping up
gnome-shell extensions offer a myriad of functionalities on your GNOME desktop and improve on user interaction and experience: from the weather display widget, screenshot capture, System monitor and so on. Install the extensions and tell us your experience.