fman's new context menu
fman 1.0.8 is out. It implements fman's most-requested feature: Context menu support!
fman's features are prioritised by the number of votes they receive on the issue tracker. You can see in this screenshot from last week that context menu support was nearly twice as popular as the next most-requested feature:
The implementation journey for this feature was very interesting. Users clearly wanted it. But as I started working on it, I realized: Did they vote for it because they want to rightclick? Or because they were missing a feature from their OS's native context menu? For example, many people on Windows use TortoiseSVN. Could it be people wanted the context menu just so they can use TortoiseSVN from within fman? Because there is already a user-contributed plugin for this.
Another important question was how the context menu should actually be implemented. On Windows, it's possible for applications to show the "native" context menu. This gives you exactly the same options as Explorer. But several fman users warned that this menu is bloated and frequently crashes other file managers. The reason for this is that invoking the native CM on Windows loads external DLLs into your app's process. I read on the blog of another file manager that users often complained it was crashing when in fact those crashes were caused by such external DLLs.
On Mac, it is simply not possible to display Finder's context menu in another app. That's why alternative file managers on Mac all have their own context menu implementation. Similarly on Linux.
So it was clear that fman needed its own context menu implementation on Mac and Linux. Because of the problems associated with the native context menu on Windows, I decided to use the same approach there as well. This has the disadvantage that you don't immediately get entries you might expect, such as TortoiseSVN, 7-Zip or Dropbox. But you avoid random crashes and a slow and bloated menu. And there's a way to get the "missing" entries back.
Following fman's focus on extensibility, the context menu is completely customizable. Everybody (including you!) can add commands to it. My hope is that over time, plugins will appear that give you all the entries you'd ever need. For more information on how you can customize the context menu, please see this page. I think it's pretty powerful.
The next big improvement will be better progress feedback for file operations. It's not the most-requested feature but really must be there in a file manager. Stay tuned!