WSL File and Directory Colors
Some of this is unavoidable: Windows has files that Linux isn't able to access, and
ls will always complain. However, the colors are something we can address with a little legwork on out part.
What's the Problem?
There's two contributing factors here: one having to do with
ls itself, and the other having to do with funky WSL internals.
The first is easy:
ls has no idea we've set up colors in Cmder. Our Zsh setup is actually aliasing
ls --color=tty, which is why we are seeing colors at all, but even Zsh isn't aware of what we've done with Cmder.
The second factor is trickier. To make Linux able to understand the Windows filesystem, there's a variety of workarounds in place.
- The most obvious and prevalent one is WSL seeing files and directories as being executable. This is partially addressed by the
wsl.conffile I suggested adding in my guide to installing WSL, since that addition of metadata fixes some permissions. It doesn't quite fix all of them, though.
- WSL also can't properly understand Windows symbolic links, so it sees them as being broken or orphaned.
ls is, of course, optimized for normal Linux computers, where executability or broken links would be the most important trait of an entry. Here, though, so many things are executable and so many links are broken that it doesn't have any meaning.
Starting from a file
If you're using solarized dark like I am, I'll go through instructions here for starting from a file that will fix a lot of things already. If you are using a different color scheme, you can certainly follow along or skip to the next section.
Sebastian Tramp has made a great starting point for solarized dark (or light) directory colors. I prefer his
dircolors.ansi-dark file, but these instructions are the same for the other
dircolors. files he has in the repository.
- Download the file of your choice to our Linux home folder so it doesn't bother us:
curl https://raw.githubusercontent.com/seebi/dircolors-solarized/master/dircolors.ansi-dark --output ~/.dircolors
- Load in the file in upon startup by editing
vimand adding the following lines:
# Set up dircolors eval `dircolors ~/.dircolors`
- Reload the changes with
Now to see the changes:
Well, still ugly, but at least now the ugliness is readable.
If you skipped the above part, I recommend looking up instructions on changing directory colors since you won't have a place already set up for you to change colors.
The process for editing colors is fairly simple: edit the file that the colors are being sourced from and then re-source
.zshrc. However, I suggest you use
vim: it not might be your text editor of choice, but it has automatic syntax highlighting for this so you can see colors as you type them.
Another tip is that the file from the above section has comments in it on what different colors are and where they're useful. If you skipped that section, the article I linked has similar info.
That all being said, my customization steps were as follows:
vim ~/.dircolors(different if you skipped the file section)
That results in the following output from