What are the extensions changing?
This may seem like an irrelevant question but as you start troubleshooting, you need to know this. Any extension is actually adding code to the gnome-shell. Due to this, your desktop will crash due to a bad extension so test carefully before trusting any code. It is a good idea to remember this both when you are installing other people’s extensions and when you are coding yourself.
How do you install other people’s extensions?
Before you decide to make your own extension, it is a good idea to see what is already around. This way, you also have an opportunity to check out how they are written. The best way to learn to program is to combine tutorials with seeing others code. The official way to install an extension is to use the GNOME extensions webpage. With the help of a plugin, you can control your extensions using your browser (Firefox and Chrome). You also have the option to download the whole directory tree yourself. If you do, you need to place the whole thing under your home directory. The files go in its own directory under: ‘~/.local/share/gnome-shell/extensions/’. For system configurations, you put it in ‘usr/share/gnome-shell/extensions‘, but only do that after you have validated it and if you are administering the computer for many users. You can find many extensions on GitHub and other similar sites. In this case, you really must try it under your user, or even a temporary user.
What has been done before?
You may wonder what extensions people have designed before you? Some interesting ones are; Weather indicator in the taskbar, Pomodoro Timers, and systems indicators. You can also find a drawing program Draw On The Screen, which you call with Super-Shift-D. Very handy if you want to annotate a screenshot. If anything about the GNOME desktop annoys you, like a notification you would like to avoid. Look around, most things have tweaks in the shape of an extension. The activities button is not appreciated by all, so hide it with an extension. You can even get assistance when making your tea!
The best way to start
Clutter – Lays out the graphical components. St – GNOME Toolkit, use these to create Boxes, Bins and more. Tweener – Commonly used for animations, not part of GNOME.
These are the three main components that you can use to make an extension. The documentation is very technical so look for examples wherever you can. The best way to learn is to use one part at a time.
It can be very helpful to follow a few tutorials, just don’t overdo it, the best way to learn is to make mistakes. Still, it is easier to climb the learning curve with a tutorial.