colorls
A Ruby gem that beautifies the terminal's ls command, with color and font-awesome icons. :tada:
Top Related Projects
A modern replacement for ‘ls’.
n³ The unorthodox terminal file manager
Vifm is a file manager with curses interface, which provides Vim-like environment for managing objects within file systems, extended with some useful ideas from mutt.
A VIM-inspired filemanager for the console
Quick Overview
ColorLS is a Ruby gem that enhances the standard ls
command with color-coding and icons. It provides a more visually appealing and informative directory listing, making it easier to distinguish between different types of files and folders at a glance.
Pros
- Colorful and visually appealing output
- Supports icons for different file types
- Customizable color schemes and icon sets
- Offers additional features like tree view and file/folder sorting options
Cons
- Requires Ruby installation and gem setup
- May be slower than the native
ls
command for large directories - Icons may not display correctly in all terminal emulators
- Learning curve for users accustomed to standard
ls
command
Code Examples
# Basic usage
colorls
# List all files, including hidden ones
colorls -a
# Display in tree view
colorls --tree
# Sort files by modification time
colorls -t
# Show file permissions
colorls --long
# Use a specific color scheme
colorls --light
# Display only directories
colorls --dirs
Getting Started
- Install Ruby on your system if not already installed.
- Install the ColorLS gem:
gem install colorls
- Add the following to your shell configuration file (e.g.,
.bashrc
or.zshrc
):alias ls='colorls' alias lc='colorls -lA --sd'
- Restart your terminal or source your configuration file.
- Start using ColorLS with the
ls
orlc
alias, or directly withcolorls
.
Competitor Comparisons
A modern replacement for ‘ls’.
Pros of exa
- Written in Rust, offering better performance and memory safety
- More extensive file metadata display options (e.g., Git status, extended attributes)
- Supports tree view for directory structure visualization
Cons of exa
- Less customizable color schemes compared to colorls
- Lacks some of the icon options available in colorls
- May require additional setup for icon display on some systems
Code Comparison
exa:
let mut opts = Options::default();
opts.long = true;
opts.header = true;
colorls:
@args = init_args
@colors = Colors.new(@args)
@screen = Colorls::Flags.new(@args).screen
Summary
exa and colorls are both modern alternatives to the traditional ls
command. exa focuses on performance and comprehensive file information display, while colorls emphasizes customization and visual appeal with its extensive icon and color options. exa is generally faster and more efficient, but colorls offers more flexibility in terms of appearance. The choice between the two depends on whether the user prioritizes performance or visual customization.
n³ The unorthodox terminal file manager
Pros of nnn
- Lightweight and fast file manager with minimal dependencies
- Supports a wide range of file operations and integrations
- Highly customizable with plugins and keybindings
Cons of nnn
- Less visually appealing compared to colorls's rich color output
- Steeper learning curve for users accustomed to graphical file managers
- Limited built-in icon support without additional configuration
Code Comparison
nnn (file selection):
static char *selpath;
static size_t selbuflen, selentries;
static struct entry *selentry;
colorls (color configuration):
def colors
@colors ||= {
:dirs => :blue,
:recognized_files => :green,
:executable_files => :red,
:hidden_files => :white
}
end
While nnn focuses on efficient file management with C-based implementation, colorls emphasizes visual presentation using Ruby. nnn's code demonstrates its focus on file selection and manipulation, while colorls's code showcases its emphasis on color-coding different file types for improved readability.
Vifm is a file manager with curses interface, which provides Vim-like environment for managing objects within file systems, extended with some useful ideas from mutt.
Pros of vifm
- Full-featured file manager with dual-pane interface
- Highly customizable with extensive configuration options
- Supports various file operations and integrations with external tools
Cons of vifm
- Steeper learning curve due to its complexity
- Less visually appealing out-of-the-box compared to colorls
- Requires more setup and configuration for optimal use
Code Comparison
vifm configuration example:
" Custom file associations
filetype *.pdf zathura %f &
filetype *.jpg,*.jpeg,*.png feh %f &
" Custom key mappings
nnoremap <space>c :compare<cr>
colorls configuration example:
# Custom colors for file types
files:
pdf: '#ff0000'
jpg: '#00ff00'
png: '#0000ff'
# Custom icons
icons:
pdf: ''
jpg: ''
While vifm offers more advanced configuration options for file management and key mappings, colorls focuses on visual customization of file listings. vifm's configuration is typically done in Vimscript, whereas colorls uses YAML for its configuration file.
A VIM-inspired filemanager for the console
Pros of ranger
- More feature-rich file manager with advanced functionality like file previews and bulk operations
- Highly customizable through Python configuration files
- Vim-like keybindings for efficient navigation
Cons of ranger
- Steeper learning curve due to more complex interface and keybindings
- Requires Python installation and additional dependencies
- Less visually appealing out-of-the-box compared to colorls
Code comparison
colorls:
def support_info(option)
return if @contents.empty?
info = @contents.select { |f| File.directory?(f) }.size.to_s + ' director'.pluralize(@contents.size)
info += ' and ' + (@contents.size - @contents.select { |f| File.directory?(f) }.size).to_s + ' file'.pluralize(@contents.size)
print "#{info}\n".colorize(@colors[:dirs])
end
ranger:
def draw(self):
self.win.erase()
line = 0
for dirobj in self.target.content_loaded:
self.color_at(line, 0, self.main_column.infostring(dirobj), self.main_column.color(dirobj))
self.color_file(line, dirobj)
line += 1
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Color LS
A Ruby script that colorizes the ls
output with color and icons. Here are the screenshots of working example on an iTerm2 terminal (Mac OS), oh-my-zsh
with powerlevel9k
theme and powerline nerd-font + awesome-config
font with the Solarized Dark
color theme.
If you're interested in knowing the powerlevel9k configuration to get this prompt, have a look at this gist.
Table of contents
- Usage
- Flags
-1
-a
(or)--all
-A
(or)--almost-all
-d
(or)--dirs
-f
(or)--files
--help
-l
(or)--long
--report
--tree
(or)--tree=[DEPTH]
--gs
(or)--git-status
--sd
(or)--sort-dirs
or--group-directories-first
--sf
(or)--sort-files
-t
- Combination of flags
- Flags
- Installation
- Recommended configurations
- Custom configurations
- Updating
- Uninstallation
- Contributing
- License
Usage
Man pages have been added. Checkout man colorls
.
Flags
-
With
-1
: Lists one entry per line -
With
-a
(or)--all
: Does not ignore entries starting with '.' -
With
-A
(or)--almost-all
: Does not ignore entries starting with '.', except./
and../
-
With
-d
(or)--dirs
: Shows only directories -
With
-f
(or)--files
: Shows only files -
With
--help
: Prints a very helpful help menu -
With
-l
(or)--long
: Shows in long listing format -
With
--report
: Shows brief report about number of files and folders shown -
With
--tree
(or)--tree=[DEPTH]
: Shows tree view of the directory with the specified depth (default 3) -
With
--gs
(or)--git-status
: Shows git status for each entry -
With
--sd
(or)--sort-dirs
or--group-directories-first
: Shows directories first, followed by files -
With
--sf
(or)--sort-files
: Shows files first, followed by directories -
With
-t
: Sort by modification time, newest first (NEED TO ADD IMAGE) -
With color options :
--light
or--dark
can be passed as a flag, to choose the appropriate color scheme. By default, the dark color scheme is chosen. In order to tweak any color, read Custom configurations.
Combination of flags
-
Using
--gs
with-t
: -
Using
--gs
with-l
: -
Using
--sd
with-l
and-A
: -
Using
--non-human-readable
with-l
:- This will print the file sizes in bytes (non-human readable format)
Installation
-
Install Ruby (preferably, version >= 2.6)
-
Download and install a Nerd Font. Have a look at the Nerd Font README for installation instructions.
Note for
iTerm2
users - Please enable the Nerd Font at iTerm2 > Preferences > Profiles > Text > Non-ASCII font > Hack Regular Nerd Font Complete.Note for
HyperJS
users - Please add"Hack Nerd Font"
Font as an option tofontFamily
in your~/.hyper.js
file. -
Install the colorls ruby gem with
gem install colorls
Note for
rbenv
users - In case of load error when usinglc
, please try the below patch.rbenv rehash rehash
-
Enable tab completion for flags by entering following line to your shell configuration file (
~/.bashrc
or~/.zshrc
) :source $(dirname $(gem which colorls))/tab_complete.sh
-
Start using
colorls
:tada: -
Have a look at Recommended configurations and Custom configurations.
Recommended configurations
-
To add some short command (say,
lc
) with some flag options (say,-l
,-A
,--sd
) by default, add this to your shell configuration file (~/.bashrc
,~/.zshrc
, etc.) :alias lc='colorls -lA --sd'
-
For changing the icon(s) to other unicode icons of choice (select icons from here), change the YAML files in a text editor of your choice (say,
subl
)subl $(dirname $(gem which colorls))/yaml
Custom configurations
You can overwrite the existing icons and colors mapping by copying the yaml files from $(dirname $(gem which colorls))/yaml
into ~/.config/colorls
, and changing them.
-
To overwrite color mapping :
Please have a look at the list of supported color names. You may also use a color hex code as long as it is quoted within the YAML file and prefaced with a
#
symbol.Let's say that you're using the dark color scheme and would like to change the color of untracked file (
??
) in the--git-status
flag to yellow. Copy the defautdark_colors.yaml
and change it.Check if the
~/.config/colorls
directory exists. If it doesn't exist, create it using the following command:mkdir -p ~/.config/colorls
And then
cp $(dirname $(gem which colorls))/yaml/dark_colors.yaml ~/.config/colorls/dark_colors.yaml
In the
~/.config/colorls/dark_colors.yaml
file, change the color set foruntracked
fromdarkorange
toyellow
, and save the change.untracked: yellow
Or, using hex color codes:
untracked: '#FFFF00'
-
To overwrite icon mapping :
Please have a look at the list of supported icons. Let's say you want to add an icon for swift files. Copy the default
files.yaml
and change it.cp $(dirname $(gem which colorls))/yaml/files.yaml ~/.config/colorls/files.yaml`
In the
~/.config/colorls/files.yaml
file, add a new icon / change an existing icon, and save the change.swift: "\uF179"
-
User contributed alias configurations :
Updating
Want to update to the latest version of colorls
?
gem update colorls
Uninstallation
Want to uninstall and revert back to the old style? No issues (sob). Please feel free to open an issue regarding how we can enhance colorls
.
gem uninstall colorls
Contributing
Your contributions are always welcome! Please have a look at the contribution guidelines first. :tada:
License
The MIT License (MIT) 2017 - Athitya Kumar. Please have a look at the LICENSE.md for more details.
Top Related Projects
A modern replacement for ‘ls’.
n³ The unorthodox terminal file manager
Vifm is a file manager with curses interface, which provides Vim-like environment for managing objects within file systems, extended with some useful ideas from mutt.
A VIM-inspired filemanager for the console
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot