Contributing to ls-f
Thanks for your interest in contributing! This project aims to be a friendly, production-quality wrapper around GNU ls with icons, colors, and smart formatting.
Ways to Contribute
- Report bugs and edge cases
- Improve documentation or examples
- Implement or polish GNU
lsflags (see the compatibility table inREADME.md) - Add tests and tooling
Getting Started (Dev Setup)
- Fork and clone the repo
- Use a recent Bash (4+) and Python 3
- Run a quick local check:
./lsf --version./lsf -x./test_flags.sh(basic sanity tests)
No build step is required. The main script is lsf; column.py is a helper used for grid formatting.
Branch, Commit, and PRs
- Create a feature branch from
main - Follow Conventional Commits for messages:
feat: add -x layout by linesfix: handle escaped filenames in grid viewdocs: update installation instructionsrefactor:, test:, chore:, perf:, ci:, build:are also common
- Keep commits focused and small when possible
- Open a Pull Request with:
- A clear description of the intent and behavior change
- Notes on any user-facing changes (flags, output, defaults)
- Screenshots or examples when helpful
Coding Guidelines
- Bash
- Prefer portability and clarity over cleverness
- Keep exit codes and error messages helpful
- Be careful with quoting and spaces in filenames
- Avoid unnecessary subshells and external utilities on hot paths
- Python (
column.py)- Keep it dependency-free and fast (stdlib only)
- Support row/column layouts via
LSF_LAYOUT - Respect
LSF_TABSIZEfor alignment
Tests
- Add or update quick checks in
test_flags.sh - Include at least:
- Happy path
- One or two edge cases (hidden files, escaped names, long names)
- If you change output formatting, include before/after samples in the PR description
Documentation
- Update
README.mdtables if you add/adjust flag behavior - Add or edit docs in
docs/when appropriate (INSTALLATION, CONFIGURATION, TROUBLESHOOTING)
License and DCO
By contributing, you agree that your contributions will be licensed under the project’s MIT License (see LICENSE).
Code of Conduct
Please follow our Code of Conduct. We aim for a welcoming, respectful community.