I want to develop a tool to show icon overlays in Windows Explorer.
Similar to what Dropbox or TortoiseGit do, example:

icon overlays

What library would make this as easy and reliable as possible?


  • Open source (compatible with GNU-GPLv3)
  • Reliability is the most important, more important than the language
  • Ideally C#, or something that can load and call a C# DLL
  • I would prefer to avoid forcing users to install extra software such as a JRE, if possible
  • Works with Windows 7+

Take a look at the Overlay Server from TortoiseHG:

  • it is Open Source, GPL2, and as far as I know does not rely on any none free software tools
  • implemented in a single file, TortoiseHgOverlayServer.py, of, at the moment, 553 lines including comments & blank lines.
  • Works with Windows XP through 10.
  • Very reliable but subject to the limitation that all such windows tools face that there are a limited number of overly IDs available in Windows so the various overlay servers compete for the use of them.
  • Implemented in python so easy to read and uses free tools.
  • You could port it to IronPython to use it from within your C# code.

Tortoise icon overlay

  • The homepage says "Acknowledgement: The TortoiseHg installer for Windows includes the TortoiseOverlays handler, as provided by the TortoiseSVN project." so maybe I should work from that instead? Or has TortoiseHG improved on it?
    – Nicolas Raoul
    Feb 17 '16 at 7:06
  • @NicolasRaoul - Well spotted - I am not sure if that is current and the TortoiseHgOverlayServer.py has been superseded or if he comment little out of date. Feb 17 '16 at 10:10

Liferay Nativity is a cross-platform library for adding icon overlays and context menus to file browsers.

  • Open source: Yes, LGPL
  • Reliable: It is used in a commercially-supported product, so I guess, but not tested
  • Communication is made via JSON/sockets, so it can presumably talk with C# after a bit of development on the C# side
  • Unfortunately seems to require a JRE
  • Works with Windows Vista+, and even Mac OS X 10.7+ and Linux GNOME Nautilus 3.x

Liferay Sync icon overlay


OwnCloud seems to have made their own implementation of icon overlays. It is available since 1.7.0.

License: GNU-LGPL
Source: https://github.com/owncloud/client/tree/master/shell_integration
Info: https://github.com/owncloud/client/wiki/Debugging-Overlay-Icons

The technical details of implementation are explained at https://github.com/owncloud/client/wiki/Overlay-Icons


SharpShell sounds like the perfect solution: Implement an easy C# interface, and SharpShell does all of the dark C stuff.

License: MIT
Source code: https://github.com/dwmkerr/sharpshell
Tutorial: http://www.codeproject.com/Articles/545781/NET-Shell-Extensions-Shell-Icon-Overlay-Handlers

Unfortunately, even after having spent weeks developing with its icon overlay part the result is still not reliable (sometimes the overlay icons don't show up), and it has bugs. It is a unfortunate as other parts of SharpShell (like shell context menus) work very well.

SharpShell icon overlay

  • Will it work with windows folders too? Apr 15 '19 at 14:02
  • @shiv.mymail Good question, I don't know.
    – Nicolas Raoul
    Apr 16 '19 at 1:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.