Convert Figma logo to code with AI

athityakumar logocolorls

A Ruby gem that beautifies the terminal's ls command, with color and font-awesome icons. :tada:

4,874
386
4,874
82

Top Related Projects

23,530

A modern replacement for ‘ls’.

18,863

n³ The unorthodox terminal file manager

2,699

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.

15,354

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

  1. Install Ruby on your system if not already installed.
  2. Install the ColorLS gem:
    gem install colorls
    
  3. Add the following to your shell configuration file (e.g., .bashrc or .zshrc):
    alias ls='colorls'
    alias lc='colorls -lA --sd'
    
  4. Restart your terminal or source your configuration file.
  5. Start using ColorLS with the ls or lc alias, or directly with colorls.

Competitor Comparisons

23,530

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.

18,863

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.

2,699

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.

15,354

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 Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Color LS

forthebadge forthebadge

Gem Version CI PRs Welcome

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.

image

If you're interested in knowing the powerlevel9k configuration to get this prompt, have a look at this gist.

Table of contents

Usage

(Back to top)

Man pages have been added. Checkout man colorls.

Flags

  • With -1 : Lists one entry per line

    image

  • With -a (or) --all : Does not ignore entries starting with '.'

    image

  • With -A (or) --almost-all : Does not ignore entries starting with '.', except ./ and ../

    image

  • With -d (or) --dirs : Shows only directories

    image

  • With -f (or) --files : Shows only files

    image

  • With --help : Prints a very helpful help menu

    image

  • With -l (or) --long : Shows in long listing format

    image

  • With --report : Shows brief report about number of files and folders shown

    image

  • With --tree (or) --tree=[DEPTH] : Shows tree view of the directory with the specified depth (default 3)

    image

  • With --gs (or) --git-status : Shows git status for each entry

    image

  • With --sd (or) --sort-dirs or --group-directories-first : Shows directories first, followed by files

    image

  • With --sf (or) --sort-files : Shows files first, followed by directories

    image

  • 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 :

    image

  • Using --gs with -l :

    image

  • Using --sd with -l and -A :

    image

  • Using --non-human-readable with -l :

    • This will print the file sizes in bytes (non-human readable format)

    image

Installation

(Back to top)

  1. Install Ruby (preferably, version >= 2.6)

  2. 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 to fontFamily in your ~/.hyper.js file.

  3. Install the colorls ruby gem with gem install colorls

    Note for rbenv users - In case of load error when using lc, please try the below patch.

    rbenv rehash
    rehash
    
  4. 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
    
  5. Start using colorls :tada:

  6. Have a look at Recommended configurations and Custom configurations.

Recommended configurations

(Back to top)

  1. 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'
    
  2. 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

(Back to top)

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 defaut dark_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 for untracked from darkorange to yellow, 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

(Back to top)

Want to update to the latest version of colorls?

gem update colorls

Uninstallation

(Back to top)

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

(Back to top)

Your contributions are always welcome! Please have a look at the contribution guidelines first. :tada:

License

(Back to top)

The MIT License (MIT) 2017 - Athitya Kumar. Please have a look at the LICENSE.md for more details.