Folcolor header

Before/after folder image

Coloring your Windows folders can help you organize and increase your productivity. Your folders instantly recognizable by color vs having to pause to read their labels.

Especially useful for programmers/developers, artists, power users, etc., that might have dozens of folders and multilevel nested folder trees to manage.


Features:

✔ Selection of 14 colors based on the pleasant Google Material Design palette.

✔ 100% Free Open Source. You can freely modify, remove, and/or add features to it.  Repo: https://github.com/kweatherman/Folcolor

✔ Minimalist, systems-level designed. Consists of a single executable with an embedded icons resource, less than one megabyte size in total.

✔ Secure design: Minimal API usage, using zero internet calls. No adware, no nag screens, no data collection, and dosn’t use an invasive Explorer shell extension like most others do.


Color selection screenshot



Requirements:

Windows 7,8, or 10 32bit or 64bit OS.


How to install:

1) Download the Folcolor.exe executable.

2) Run Folcolor.exe and click the “Install” button.

Install dialog screenshot



How to use it:

Simply right click on a folder, mouse over to "Color Folder" and choice a color of the fourteen selections in the dropdown menu.

The tool needs administrator access to set the needed folder properties so you must approve the Windows User Account Control (UAC) dialog box that pops up.

To go back to the default color/icon for a folder, select "Restore Default".

Also available from the “Launch Folcolor” option is a “Refresh Windows Icons” button. Folcolor™ does this automatically when setting a color, but it’s a handy option to have when doing icon customizations, etc.

Usage example

To uninstall:

1) Run Folcolor.exe either from a "Color Folder" folder "Launch Folcolor" dropdown, from "C:\Program Files (x86)\Folcolor\Folcolor.exe", or can be temporarily downloaded again.

2) Click the “Uninstall” button (was previously named “Install" before installation).

3) Manually delete the "C:\Program Files (x86)\Folcolor” folder to complete the uninstall. This is a necessary step since a running process can’t delete itself.


Report bugs, issues, or for feature requests:

Please use the github issue feature.


License:

MIT License

Copyright (c) 2020 Kevin Weatherman

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.




Motivation:

I tried the commercial tool Folder Marker Home. At first it seemed adequate, but it has several annoying issues that quickly became apparent. Even the paid version has pop-up adds begging you to upgrade, or buy extra icon sets, etc. Then I found it uses a Explorer shell extension executable that has a packer with anti-debugging features enabled. Occasionally when I went to debug a project, an invasive message box popped-up complaining about a "..debugger being active".

Next, I tried some free options like Folder Painter. It appeared to function okay, but I hated it's default color scheme (although it does look like it can be customized). Then curious how it was made, I looked at the executable in a disassembler. I saw that it had an alarming 517 API usage count with some dubious internet calls like “FtpOpenFile”, etc. On further investigation, the string “AutoIt v3” tipped off that the executable was made from a compiled AutoIt script. Probably the heavy API usage I saw is actually just part of the default AutoIt runtime and not an indicator of potential maliciousness. But then again, who knows all all of it's capabilities? No source code is available for review.

Curious, I searched far and wide and tried some of the few other offerings. All of the rest had the same undesirable characteristics, if not worse. None of which what I wanted for just a simple folder coloring tool.

Then there is the general security issue of using 3rd party Explorer shell extensions too. While in principle nothing wrong with this particular design approach, but the Windows Explorer is a trusted core OS component and these extensions are a vulnerabile attack surface. Also, generally, a pretty invasive thing to add (similar to adding a service) to your system. You must trust developers that they use secure design principles, that they have mostly bug free code, and that their intentions are in your best interest.

Then there’s the licensing terms. "Folder Marker", like most of the commercial offerings, are a per machine license. I use multiple machines (although just one machine at the time) and I am the sole user. I feel I shouldn't have to buy a license for every machine in my situation, especially when such a tool is so simple. There really is not much to it other than whatever fancy UI developers add.

Granted however, my Folcolor™ solution is about as simple as it gets. A lot of the other offerings have robust customization options, large selection of icons (colored and non), etc. All I wanted was the basic a folder coloring thing. Also I just didn’t like a lot of the color schemes offered in any of the free options.

Happy folder coloring!




Design notes (for Developers):

Repo: https://github.com/kweatherman/Folcolor

 I generally try to avoid Microsoft COM development but I figured I’d just bite the bullet and make a Windows Explorer Shell Extension to get the job done. While COM might be more accessible from a Visual Basic script or C#, etc., it can be quite a chore from the low-level C/C++ language. I wanted to use C/C++ for this project since it's prudent to use a systems-level design treatment for such a utility.

It turns out it's not necessary to use an actual Shell Extension at all and there is a more security conscious, less invasive way to do it. That is, using the "Shortcut Menu Handler" feature of the Windows registry. Just by structuring a registry tree entry under "HKEY_CLASSES_ROOT\Directory\shell\" we can get our up to sixteen selection right click folder interface going easily with the least complexity. The registry tree for this only needs to be created once for the installation. See “InstallRegistry()” in “Installer.cpp” to see how it's done.

The root level menu only allows up to sixteen choices and this is all Folcolor™ currently supports (two for options, leaving fourteen free for color choices). But these could however be potentially nested if more color selections are desired.

The key component to the Windows folder coloring feature is facilitated by a per folder “desktop.ini” configuration file.

The OS uses this feature in it's default setup to customize the icons of system folders like "Documents", "My Music", "My Pictures", etc.

This config file also facilitates other things like custom folder background images, etc (feature availability varies over Windows version). This "desktop.ini" is normally hidden in the Explorer file view unless you have the "Hide protected operating system files" checked under your Explorer "Folder Options".


So all we need to do programmatically is:

1) Add the "system" attribute to a folder.

2) Add a “desktop.ini” with the proper “IconResource” field setup.

Example "desktop.ini":

    [.ShellClassInfo]
    IconResource=C:\Program Files (x86)\Folcolor\Folcolor.exe,8
    

Tells the OS to use the #8 icon contained in the embedded resource in "Folcolor.exe" for the particular folder icon.

Folcolor.exe acts as both the set icon tool executable and as a static icon resource DB. Windows 10 has uses its own graphical icon set, while Windows 7 & 8 uses another to match the OS default image.

Since I’m not much of an artist, and not wanting to individually create, tweak, and edit 168 icons (14 colors times 8 different sizes for Win 10, plus 14 times 4 for Win 7/8) I created a Python project to generate the icons procedurally (See “BatchProcess.py”).

Starting with base tweaked Windows icon sets (in that familiar default orangish-tan color scheme), the images are color shifted and tweaked into the HLS color space then converted back to 8-bit RGB pixel icons. Uses the Python "Pillow" module for icon image containers.