How to Install GNOME Shell Extensions Using GUI & Command Line Interface

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.

gnome-tweak-tool

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

gnome-shell extensions

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

gnome-shell

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.

AccuWeather gnome-shell extension

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”

gnome-shell-extenions native error

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.

chrome extensions

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.

Jamie Arthur 1:49 am

About Jamie Arthur

James is a passionate Linux and Windows Systems Administrator with 4 years of experience in Linux, databases and Front-End development. He loves doing research on different Linux distributions and experimenting with installation and configuration of different services and features. His hobbies include swimming, reading novels and playing video games.

Author's All Posts
Like to become part of Linoxide Team and contribute tips? Contact us here.

Comments

Your email address will not be published. Required fields are marked *

All comments are subject to moderation.