You are probably looking for "nautilus extensions". Nautilus is the real name of the file manager used in both Unity and gnome-shell desktops.
You can write extensions:
as scripts (although I think this is sort-of-deprecated)
In C using the gtk
libraries
or in various mixed languages
However, for personal experience, expect to find a lot of outdated documentation and a lack of clear, up-to-date documentation around. Probably the best way to get started is to try to dig at the sources of available extensions:
[romano:~] % wajig search nautilus | grep extens
libnautilus-extension-dev - libraries for nautilus components - development version
libnautilus-extension1a - libraries for nautilus components - runtime version
nautilus-share - Nautilus extension to share folder using Samba
nautilus-actions - nautilus extension to configure programs to launch
nautilus-compare - Context menu comparison extension for Nautilus file manager
nautilus-filename-repairer - Nautilus extension for filename encoding repair
nautilus-gtkhash - nautilus extension for computing checksums and more using gtkhash
nautilus-image-converter - nautilus extension to mass resize or rotate images
nautilus-pastebin - Nautilus extension to send files to a pastebin
nautilus-wipe - Secure deletion extension for Nautilus
rabbitvcs-nautilus - Nautilus extension for RabbitVCS
tortoisehg-nautilus - Graphical tool for working with Mercurial (Nautilus extension)
clamtk-nautilus - Nautilus MenuProvider extension for clamtk
nautilus-pushbullet - An extension for Nautilus to send files with pushbullet
..and more, like nautilus-script-manager
, nautilus-scripts-manager
(yes they're different!), or nautilus-image-manipulator
and nautilus-open-terminal
.