I've recently made the switch from Cmder with PowerShell to Window Terminal with WSL2 as my go to command line environment. It's great except for one thing, I find the way the ls
command displays directories really hard to read the highlight colour mixed with the directory name has really low contrast. Changing the theme under the Windows Terminal settings changes the colours as a whole the highlighted style of the directories remains and is still difficult for me to read.
The display style is actually set by the Ubuntu environment. All the configuration for how the ls
command should display variables is set in an environment variable LS_COLORS
to see what is in there run echo $LS_COLORS
the output will look like this:
$ echo $LS_COLORS
rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
This is a list of all the display information on how the different types of files should be displayed. It's in one of the format ext=x;yy;zz:
where ext
is the file type or extension x
is a one digit representation of how to display the font, yy
and zz
are a 2 digit representation of the colour of the font and background respectively, ;
delimits parameters within a set and :
delimits between sets. All of the parameters are optional and the system seems to decide on the which to use based on if it's a valid input for that position, eg ext=1:
will set the font weight to bold and ext=36:
will set the colour to blue.
To make the directories display in a more readable fashion update the other writeable or ow
property. This can be overwritten by adding it to the end of the environment variable string. LS_COLORS=$LS_COLORS:'ow36:'
to set the out put for other writeable to blue with no background and make the text much more legible.
To make this change across all future terminal windows add export LS_COLORS=$LS_COLORS:'ow=36:'
to the end of the ~/.bashrc
file using echo "export LS_COLORS=\$LS_COLORS:'ow=36:'">>~/.bashrc
. Don't forget to escape the $
or the current value of LS_COLORS
will be exported instead of the variable name.
For more information on which codes relate to each colour see this answer on stack overflow
Top comments (0)