{"id":23711457,"url":"https://github.com/canta2899/logo-ls","last_synced_at":"2026-06-30T13:00:48.514Z","repository":{"id":41359729,"uuid":"472901155","full_name":"canta2899/logo-ls","owner":"canta2899","description":"A minimal ls replacement, with git status indicators and configurable Nerd Font icons","archived":false,"fork":false,"pushed_at":"2026-06-30T11:32:11.000Z","size":8926,"stargazers_count":30,"open_issues_count":0,"forks_count":7,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-06-30T12:23:33.951Z","etag":null,"topics":["cli-tool","nerd-fonts"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"Yash-Handa/logo-ls","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/canta2899.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-03-22T19:04:01.000Z","updated_at":"2026-06-30T11:32:00.000Z","dependencies_parsed_at":"2024-06-09T02:39:07.418Z","dependency_job_id":"faa8c845-ed78-42f7-b39a-72dad75ea452","html_url":"https://github.com/canta2899/logo-ls","commit_stats":null,"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/canta2899/logo-ls","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/canta2899%2Flogo-ls","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/canta2899%2Flogo-ls/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/canta2899%2Flogo-ls/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/canta2899%2Flogo-ls/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/canta2899","download_url":"https://codeload.github.com/canta2899/logo-ls/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/canta2899%2Flogo-ls/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34967619,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-30T02:00:05.919Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli-tool","nerd-fonts"],"created_at":"2024-12-30T19:49:46.771Z","updated_at":"2026-06-30T13:00:48.501Z","avatar_url":"https://github.com/canta2899.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"![License](https://img.shields.io/badge/License-MIT-green?style=for-the-badge)\n![Version](https://img.shields.io/github/v/release/canta2899/logo-ls?style=for-the-badge)\n![Tests](https://img.shields.io/github/actions/workflow/status/canta2899/logo-ls/test.yml?label=Tests\u0026style=for-the-badge)\n\n\u003cdiv align=\"center\"\u003e\n\u003cimg src=\"./.github/assets/output.png\" alt=\"logo-ls screenshot\" width=\"600\"/\u003e\n\u003c/div\u003e\n\n\u003ch1 align=\"center\"\u003e\n    logo-ls\n\u003c/h1\u003e\n\nA fork of [logo-ls](https://github.com/Yash-Handa/logo-ls) which I ended up maintaining since the original repository went unmaintained some years ago. Contributions are welcome (see [CONTRIBUTING.md](CONTRIBUTING.md)).\n\n---\n\n## Installation\n\n### Prerequisites\n\n- Ensure your terminal is using a Nerd Font to see the icons properly. You can download your favourite Nerd Font from [here](https://www.nerdfonts.com/font-downloads). Some terminal emulators such as [Ghostty](https://ghostty.org) come with built in support for Nerd Fonts, so you don't have to worry about it.\n- The command will be installed as `logo-ls`, you can optionally set an alias for `ls` to `logo-ls` if you want to use it as a drop in replacement for `ls`.\n\n### Arch Linux\n\nInstall the logo-ls [AUR package](https://aur.archlinux.org/packages/logo-ls).\n\n```bash\nyay -S logo-ls\n```\n\n### Homebrew (tap)\n\n```bash\nbrew install canta2899/homebrew-tap/logo-ls\n```\n\n### Binary Release (Linux/OSX/Windows)\n\n#### Linux/OSX\n\n```bash\ncurl -L https://raw.githubusercontent.com/canta2899/logo-ls/refs/heads/main/get.sh | sh\n```\n\n#### Windows\n\n```powershell\nSet-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass\nirm https://raw.githubusercontent.com/canta2899/logo-ls/main/get.ps1 | iex\n```\n\nOptionally, you can set these variables:\n\n- `LOGO_LS_INSTALL_DIR` (to specify a different installation directory, defaults to `~/.local/bin`)\n- `LOGO_LS_VERSION` to specify a version (defaults to the latest one)\n\n#### Manual Install\n\nYou can download the binary for your platform from the [releases page](https://github.com/canta2899/logo-ls/releases/).\n\n### Build from source\n\nClone the repository\n\n```bash\ngit clone https://github.com/canta2899/logo-ls\n```\n\nBuild the binary, which is outputted to the root directory of the repository:\n\n```bash\nmake logo-ls\n```\n---\n\n## Icons\n\n`logo-ls` comes with a huge built in set of icons for common file types and directories. However, you can also add your own custom icons or override existing ones with the built-in override system.\n\nYou can drop a YAML file in either of the following locations:\n\n- `$XDG_CONFIG_HOME/logo-ls/logo-ls-overrides.yaml` (defaults to `~/.config/logo-ls/logo-ls-overrides.yaml`)\n- `~/.logo-ls-overrides.yaml`\n\nThe first existing file wins. The file is read **once at startup** and merged with the built-in icon set, so it does not impact per-directory listing speed. If the file is missing or empty the loader just skips it, if it cannot be parsed `logo-ls` prints a single warning and continues with built-in icons only.\n\n#### Schema\n\nEach entry can set a `glyph`, a `color`, or both. Whichever field you leave out keeps the built-in value for that match, so you can just recolor an existing icon, swap only its glyph, or define a brand-new icon by setting both.\n\n```yaml\nextensions:        # matched by file extension (without the leading dot)\n  rs:\n    glyph: \"U+E7A8\"    # full override: new glyph and new color\n    color: \"#dea584\"\n  go:\n    color: \"#ff5555\"   # color-only: keep the built-in Go glyph, just recolor it\n  py:\n    glyph: \"0xE606\"    # glyph-only: keep the built-in Python color\n\nfiles:             # matched by full file name (case-insensitive)\n  .envrc:\n    glyph: \"U+E60B\"\n    color: \"#ecd53f\"\n\ndirectories:       # matched by full directory name (case-insensitive)\n  myproject:\n    color: \"#42a5f5\" # recolor a directory without changing its glyph\n\nsub_extensions:    # matched by \"\u003clast-segment\u003e\u003cext\u003e\"\n  d.ts:\n    glyph: \"U+E628\"\n    color: \"#3178c6\"\n```\n\nGlyphs can be written as `U+XXXX` or `0xXXXX` (parsed as hex codepoints) or as literal strings. Colors are `#RRGGBB` (or the shorthand `#RGB`). User entries take priority over the built-in icons. Glyphs can also be emojis or any other unicode character, but Nerd Font glyphs are recommended for the best visual consistency.\n\n#### Flags\n\nTwo flags control the override loader:\n\n- `--no-override` skips override loading entirely and forces built-in icons only.\n- `--override-file \u003cpath\u003e` loads overrides from an explicit YAML path instead of the default discovery locations.\n\nIf neither flag is passed the default discovery paths above are used.\n\n---\n\n## Benchmarks\n\nThe repo ships with a small benchmark harness that compares `logo-ls` (plain and `-D` git-status modes) against the system `ls`, across directories of increasing size. It uses [`hyperfine`](https://github.com/sharkdp/hyperfine) under the hood and is driven by two python scripts.\n\n```sh\nmake benchmark       # builds logo-ls, runs hyperfine, writes .benchmark_results.json\nmake benchmark-plot  # renders benchmark.png from the saved results\n```\n\n![Benchmark on MacBook Pro M4](.github/assets/benchmark_mbm4pro.png)\n\nOn my machine, `logo-ls` is slightly slower than `/bin/ls` (imperceptibly so), and `-D` git-status mode is bottlenecked by `git` itself, but it all still lands comfortably in the imperceptible range.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcanta2899%2Flogo-ls","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcanta2899%2Flogo-ls","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcanta2899%2Flogo-ls/lists"}