pls is a better ls for developers. The "p" stands for ("pro" as in "professional"/"programmer") or "prettier".
It works in a manner similar to ls, in that it lists directories and files in a given directory, but it adds many more developer-friendly features.
Note that pls is not a replacement for ls. ls is a tried, tested and trusted tool with lots of features. pls, on the other hand, is a simple tool for people who just want to see the contents of their directories.
Features
pls provides many features over ls command. pls can:
- show Nerd Font icons or emoji next to files and directories making it easier to grep the output
- colour output to elevate important files or dim unimportant ones
- use a more nuanced approach to hidden files than plainly hiding files with a leading dot
. - group directories and shows them all before files
- ignore leading dots
.and normalise case when sorting files - align files names by first character
- cascade formatting rule specs by based on specificity levels
- read
.pls.ymlfiles from the directory to augment its configuration - show more details like permissions, owner and size in columns
- run quite fast, thanks to multiprocessing
The icon, color and most behaviour in the application can be configured using plain-text YAML files for the pros who prefer to tweak their tools.
Upcoming features
In the future pls will be able to
- generate visibility rules by parsing
.gitignore - add MIME type as another method for matching files to specs
- use complete path based matching for files
- link files and hide derived files behind the main ones
- generate tree-like output for subdirectories
If you want to help implement any of these features, feel free to submit a PR. pls is free and open-source software.
Comparison with similar tools
There are a lot of ls replacements. Here are some of the most popular ones.
pls aims to stand out because of some very specific choices.
- Does not intend to replace
ls.pls, as a command, is just as easy to type. - Targets a more tech-savvy audience in its features.
- Intelligently maps file type. Just comparing the file extension would be too generic.
- Meticulously chosen iconography for the appreciating eyes.
- Highly customisable at a project level using a simple
.pls.ymlfile. - Built in a friendly language, Python. This makes it easy to fork and change it yourself.
Installation
To get the best of pls, install a Nerd Font on your computer. Nerd Fonts come patched with many icons from different popular icon sets. If you're a "pro" (the target audience for pls) these fonts are basically a must.
pls is a pure-Python codebase and is deployed to PyPI. So installing it on any system with a supported Python version is quite straightforward.
$ python3 -m pip install --user pls
There are no native packages yet.
Usage
pls has a very simple API with easy to memorise flags. There are no mandatory arguments. Just run pls anywhere on your disk.
$ pls
There are a few optional arguments and flags you can use to tweak the behaviour. You can see the complete list of arguments and their description by passing the --help or -h flags.
$ pls --help
Directory
The only positional argument is a directory. Pass this to see the contents of a different folder rather than the current working directory.
$ pls path/to/somewhere/else
Icons
pls supports many icons for popular languages out of the box and will show icons by default. If you don't have a Nerd Font (why?), you can switch to emoji icons using --icons emoji or -iemoji. Be warned they are quite bad. If you are a sad person, you turn icons off using --icon none or -inone.
Note: The built-in icon configuration is intentionally lean. The whole idea is for pls to be customisable by you.
Filtering
You can choose to hide files or folders from the output using --no-files and --no-dirs respectively. Passing both will lead to a blank output. On the other hand if you want to see files and directories that pls would not show otherwise, pass --all.
Sorting
By default pls will place all directories first, followed by files with both sorted alphabetically from A to Z. You can prevent folders from being first by passing the --no-dirs-first flag. You can change the sort to go from Z to A using --sort desc or -sdesc. Leading dots are ignored during sorting.
Alignment
A lot of code related files start with a leading dot . for no valid reason. pls by default
- moves their name left by one character to line up the actual alphabets
- dims their leading dot
If you don't like this, you can set --no-align to turn off all this behaviour in one swoop.
Details
When you need more infomation about your files, pass the --details flag. This expands the list into a table, with
- permissions
- owner name
- size
added to the output. The permissions are presented as rwx triplets. The size is presented in binary compound-units (the ones with the "i" like "*iB"). You can switch to decimal units by passing --units decimal or -udecimal. This flag has no effect unless the --detail flag is passed too.
