{"id":45660586,"url":"https://github.com/relmer/rcdir","last_synced_at":"2026-04-22T06:07:43.556Z","repository":{"id":337965143,"uuid":"1152606082","full_name":"relmer/RCDir","owner":"relmer","description":"A Rust port of TCDir, a fast, multithreaded, customizable, colorized dir-style directory listing tool for Windows (x64/ARM64).","archived":false,"fork":false,"pushed_at":"2026-03-06T14:48:28.000Z","size":3260,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-03-06T18:21:28.074Z","etag":null,"topics":["ansi","arm64","color","console","directory","directory-lister","mt","multithreading","rust","spec-kit","speckit","terminal","win32","windows","x64"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/relmer.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","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":"2026-02-08T05:59:28.000Z","updated_at":"2026-03-06T14:48:30.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/relmer/RCDir","commit_stats":null,"previous_names":["relmer/rcdir"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/relmer/RCDir","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/relmer%2FRCDir","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/relmer%2FRCDir/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/relmer%2FRCDir/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/relmer%2FRCDir/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/relmer","download_url":"https://codeload.github.com/relmer/RCDir/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/relmer%2FRCDir/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30204442,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T19:07:06.838Z","status":"ssl_error","status_checked_at":"2026-03-06T18:57:34.882Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["ansi","arm64","color","console","directory","directory-lister","mt","multithreading","rust","spec-kit","speckit","terminal","win32","windows","x64"],"created_at":"2026-02-24T09:07:45.167Z","updated_at":"2026-04-22T06:07:43.542Z","avatar_url":"https://github.com/relmer.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RCDir\n\n[![CI](https://github.com/relmer/RCDir/actions/workflows/ci.yml/badge.svg)](https://github.com/relmer/RCDir/actions/workflows/ci.yml)\n[![Latest Release](https://img.shields.io/github/v/release/relmer/RCDir)](https://github.com/relmer/RCDir/releases/latest)\n[![License: MIT](https://img.shields.io/github/license/relmer/RCDir)](LICENSE)\n\u003c!--\n[![Downloads](https://img.shields.io/github/downloads/relmer/RCDir/total)](https://github.com/relmer/RCDir/releases)\n--\u003e\nThis is a Rust port of [TCDir](https://github.com/relmer/TCDir), the original C++ implementation.  Features generally show up in TCDir first, and I try to get them ported to RCDir within a week or so.\n\nRCDir (\"Rust Colorized Directory\") is a fast, colorized directory listing tool for Windows consoles.\nIt's designed as a practical `dir`-style command with useful defaults (color by extension/attributes, Nerd Font file/folder icons, sorting, recursion, wide output, and a multi-threaded enumerator).\n\n![RCDir basic listing](Assets/RCDir.png)\n\n## What's New\n\n| Version | Highlights |\n|---------|------------|\n| **5.5** | Variable-width `/W` columns, ellipsize long link targets |\n| **5.4** | Symlink, junction, and AppExecLink target display (`→ target`) |\n| **5.3** | Config file support (`.rcdirconfig`), `--config` diagnostics, `--settings` merged view |\n| **5.2** | Interactive PowerShell alias configuration (`--set-aliases`, `--get-aliases`, `--remove-aliases`) |\n| **5.1** | `--Tree` hierarchical directory view with depth control |\n| **5.0** | Nerd Font file/folder icons (~187 extensions, ~65 directories) |\n\nSee [CHANGELOG.md](CHANGELOG.md) for full release history.\n\nHat tip to [Chris Kirmse](https://github.com/ckirmse) whose excellent [ZDir](https://github.com/ckirmse/ZDir) from the '90s was the original inspiration for TCDir/RCDir.\n\n## Why RCDir?\n\n| Feature | `dir` | RCDir | [eza](https://github.com/eza-community/eza) | [lsd](https://github.com/lsd-rs/lsd) |\n| --- | :---: | :---: | :---: | :---: |\n| Color-coded by extension \u0026 attribute | — | ✅ | ✅ | ✅ |\n| Cloud sync status (OneDrive, iCloud) | — | ✅ | — | — |\n| Nerd Font file/folder icons | — | ✅ | ✅ | ✅ |\n| Tree view with full metadata | — | ✅ | ✅ | ✅ |\n| Multi-threaded enumeration | — | ✅ | — | — |\n| Native Windows (no WSL/MSYS) | ✅ | ✅ | ⚠️ | ⚠️ |\n| Familiar `dir` switch syntax | ✅ | ✅ | — | — |\n| Symlink/junction target display | — | ✅ | ✅ | ✅ |\n| ARM64 native binary | ✅ | ✅ | — | — |\n| NTFS alternate data streams | ✅ | ✅ | — | — |\n| Configurable via environment variable | — | ✅ | — | — |\n| Configurable via config file          | — | ✅ | ✅ | ✅ |\n\n## Installation\n\n### Download\n\nGrab the latest binary for your architecture:\n\n- [**rcdir.exe**](https://github.com/relmer/RCDir/releases/latest/download/rcdir.exe) — x64 (Intel/AMD 64-bit)\n- [**rcdir-ARM64.exe**](https://github.com/relmer/RCDir/releases/latest/download/rcdir-ARM64.exe) — ARM64 (Snapdragon, etc.)\n\nPlace the `.exe` somewhere on your `PATH`, or add its directory to your `PATH`.\n\nSee all releases on the [Releases page](https://github.com/relmer/RCDir/releases).\n\n\u003c!--\n### Package managers (coming soon)\n\n```powershell\nwinget install relmer.RCDir\nscoop install rcdir\n```\n--\u003e\n\n### Shell integration\n\nMake RCDir your default directory listing command:\n\n```powershell\n# Add to your PowerShell profile ($PROFILE):\nSet-Alias dir rcdir -Option AllScope\n```\n\n## Requirements\n\n- Windows 10/11\n- PowerShell 7 (`pwsh`) to run the build/test scripts\n- Rust toolchain (install from \u003chttps://rustup.rs/\u003e)\n  - Targets: `x86_64-pc-windows-msvc`, `aarch64-pc-windows-msvc`\n  - Install with: `rustup target add x86_64-pc-windows-msvc aarch64-pc-windows-msvc`\n- Optional: VS Code with rust-analyzer extension\n\n### First-time setup\n\nRun the setup script to install or verify all Rust prerequisites automatically:\n\n```powershell\n.\\scripts\\Setup.ps1\n```\n\nAlternatively, the `rust-toolchain.toml` at the repo root will prompt `rustup` to install the correct toolchain, targets, and components automatically whenever you run `cargo`.\n\n## Quick start\n\nBuild:\n\n- VS Code: run a build task (e.g. **Build Release (current arch)**)\n- Command line: `pwsh -NoProfile -ExecutionPolicy Bypass -File .\\scripts\\Build.ps1 -Configuration Release`\n\nRun:\n\n- `.\\target\\x86_64-pc-windows-msvc\\release\\rcdir.exe`\n- `.\\target\\aarch64-pc-windows-msvc\\release\\rcdir.exe`\n\n## Usage\n\nShow help:\n\n- `rcdir.exe -?`\n![RCDir help](Assets/RCDir%20Help.png)\n\nBasic syntax:\n\n- `RCDIR [drive:][path][filename] [-A[[:]attributes]] [-O[[:]sortorder]] [-T[[:]timefield]] [-S] [-W] [-B] [-P] [-M] [--Env] [--Config] [--Settings] [--Owner] [--Streams] [--Icons] [--Tree] [--Depth=N] [--TreeIndent=N] [--Size=Auto|Bytes]`\n\nCommon switches:\n\n- `-A[:]\u003cattributes\u003e`: filter by file attributes\n- `-O[:]\u003csortorder\u003e`: sort results\n  - both `-oe` and `-o:e` forms are supported\n  - `N` name, `E` extension, `S` size, `D` date/time\n  - prefix `-` to reverse\n- `-T:\u003ctimefield\u003e`: select which timestamp to display and sort by\n  - `C` creation time, `A` last access time, `W` last write time (default)\n- `-S`: recurse into subdirectories\n- `-W`: wide listing format\n- `-B`: bare listing format\n- `-P`: show performance timing information\n- `-M`: enable multi-threaded enumeration (default); use `-M-` to disable\n- `--Env`: show `RCDIR` environment variable help/syntax/current value\n- `--Config`: show config file diagnostics, syntax reference, and parse errors\n- `--Settings`: show current merged configuration for all items and extensions\n- `--Owner`: display file owner (DOMAIN\\User format); not allowed with `--Tree`\n- `--Streams`: display NTFS alternate data streams\n- `--Icons`: enable Nerd Font file/folder icons; use `--Icons-` to disable\n- `--Tree`: hierarchical directory tree view; use `--Tree-` to disable\n- `--Depth=N`: limit tree depth to N levels (requires `--Tree`)\n- `--TreeIndent=N`: tree indent width per level, 1–8, default 4 (requires `--Tree`)\n- `--Size=Auto|Bytes`: `Auto` shows abbreviated sizes (e.g., `8.90 KB`); `Bytes` shows exact comma-separated sizes. Tree mode defaults to `Auto`, non-tree defaults to `Bytes`\n\n### Attribute filters (`/A:`)\n\nStandard attributes: `D` (directory), `H` (hidden), `S` (system), `R` (read-only), `A` (archive)\n\nCloud sync attributes (OneDrive, iCloud, etc.):\n\n- `O` - cloud-only placeholder files (not locally available)\n- `L` - locally available files (hydrated, can be dehydrated)\n- `V` - pinned/always available files (won't be dehydrated)\n\nExtended attributes:\n\n- `X` - not content indexed (excluded from Windows Search)\n- `I` - integrity stream enabled (ReFS only)\n- `B` - no scrub data (ReFS only)\n- `F` - sparse file\n- `U` - unpinned (allow dehydration)\n\nUse `-` prefix to exclude (e.g., `/A:-H` excludes hidden files).\n\n### Cloud file visualization\n\nWhen browsing cloud-synced folders (OneDrive, iCloud Drive, etc.), RCDir displays sync status symbols:\n\n- `○` (hollow) - cloud-only placeholder, not available offline\n- `◐` (half) - locally available, can be dehydrated\n- `●` (solid) - pinned, always available offline\n\nWhen a Nerd Font is detected, the cloud symbols are automatically upgraded to dedicated NF glyphs (cloud-outline, cloud-check, pin).\n\n### Nerd Font icons\n\nWhen RCDir detects a [Nerd Font](https://www.nerdfonts.com/) in the console, it automatically displays file and folder icons next to each entry — in normal, wide, and bare listing modes.\n\nDetection works via:\n\n1. **GDI glyph probe** — renders a canary glyph to confirm Nerd Font symbols are available in the active console font\n2. **System font enumeration** — checks whether any installed font's name contains \"Nerd Font\" or a \"NF\", \"NFM\", or \"NFP\" suffix\n3. **WezTerm detection** — WezTerm bundles Nerd Font symbols natively, so icons are enabled automatically\n4. **ConPTY detection** — Windows Terminal, VS Code terminal, and other modern terminals are recognized\n\nIcon mappings (~187 extensions, ~65 well-known directories) are aligned with the [Terminal-Icons](https://github.com/devblackops/Terminal-Icons) PowerShell module default theme.\n\nUse `--Icons` to force icons on, or `--Icons-` to force them off, regardless of detection.\n\n### Tree view (`--Tree`)\n\nTree mode displays the directory hierarchy with Unicode box-drawing connectors (`├──`, `└──`, `│`). All metadata columns (date, time, attributes, size, cloud status) appear at every level. Directories and files are sorted together (interleaved) rather than grouped.\n\n- `rcdir --Tree` — show full tree from the current directory\n- `rcdir --Tree --Depth=2` — show only 2 levels deep\n- `rcdir --Tree --TreeIndent=2` — narrower indentation (default is 4)\n- `rcdir --Tree *.rs` — show only `.rs` files; empty subdirectories are pruned\n\nTree mode uses abbreviated file sizes (`--Size=Auto`) by default for consistent column alignment across directories. Junction points and symlinks are listed but not expanded, preventing infinite cycles.\n\nIncompatible with `-W` (wide), `-B` (bare), `-S` (recurse), `--Owner`, and `--Size=Bytes`.\n\n- Tree listing: `rcdir.exe --Tree`\n![RCDir tree listing](Assets/RCDir%20Tree.png)\n\nExamples:\n\n- Recurse through subdirectories: `rcdir.exe -s`\n![RCDir recursive listing](Assets/RCDir%20Subdirectories.png)\n\n- Wide listing: `rcdir.exe -w`\n![RCDir wide listing](Assets/RCDir%20Wide.png)\n\n## Configuration (RCDIR environment variable)\n\nRCDir supports customizing colors (and default switch behavior) via the `RCDIR` environment variable or a config file.\n\n### Config file (`.rcdirconfig`)\n\nCreate `%USERPROFILE%\\.rcdirconfig` with one setting per line, using the same syntax as the environment variable. Comments (`#`) and blank lines are supported:\n\n```ini\n# Switches\nTree\nIcons\n\n# Extension colors\n.cpp = LightGreen\n.h   = Yellow on Blue\n.rs  = LightCyan\n\n# Display attribute colors\nD = LightBlue\n\n# File attribute overrides\nAttr:H = DarkGrey\n\n# Icon overrides\n.go = LightCyan, U+e627\n\n# Parameterized settings\nDepth = 3\nSize = Auto\n```\n\nPrecedence: built-in defaults \u003c config file \u003c `RCDIR` env var \u003c CLI flags.\n\nUse `rcdir --config` to see config file diagnostics, and `rcdir --settings` to see the merged configuration from all sources.\n\n### Environment variable\n\nSyntax:\n\n- PowerShell: `$env:RCDIR = \"[\u003cSwitch\u003e] | [\u003cItem\u003e | Attr:\u003cfileattr\u003e | \u003c.ext\u003e] = \u003cFore\u003e [on \u003cBack\u003e][;...]\"`\n- CMD: `set RCDIR=[\u003cSwitch\u003e] | [\u003cItem\u003e | Attr:\u003cfileattr\u003e | \u003c.ext\u003e] = \u003cFore\u003e [on \u003cBack\u003e][;...]`\n\n**Note**: Switch names in the RCDIR variable do NOT include prefixes (`/`, `-`, `--`). Use just the switch name (e.g., `W`, `Owner`, `Streams`).\n\n### Default switches\n\nEnable default switches by including the switch name:\n\n- `W` - enable wide listing by default\n- `S` - enable subdirectory recursion by default\n- `P` - enable performance timing by default\n- `M` - enable multi-threading by default (already on by default)\n- `B` - enable bare listing by default\n- `Owner` - display file ownership by default\n- `Streams` - display NTFS alternate data streams by default\n- `Icons` - enable Nerd Font icons by default; `Icons-` to force off\n- `Tree` - enable tree view by default; `Tree-` to force off\n- `Depth=N` - set default tree depth limit\n- `TreeIndent=N` - set default tree indent width (1–8)\n- `Size=Auto` / `Size=Bytes` - set default size display format\n\n### Color customization\n\nConfigure colors for display items, file attributes, and extensions:\n\nExample:\n\n- PowerShell: `$env:RCDIR = \"W;D=LightGreen;S=Yellow;Attr:H=DarkGrey;.png=Black on Magenta\"`\n- CMD: `set RCDIR=W;D=LightGreen;S=Yellow;Attr:H=DarkGrey;.png=Black on Magenta`\n\nDecoded breakdown of the example:\n\n- `W` sets the default switch `/W` (wide listing) on\n- `D=LightGreen` sets the **Date** display item color to LightGreen\n- `S=Yellow` sets the **Size** display item color to Yellow\n- `Attr:H=DarkGrey` sets the **Hidden** file attribute color to DarkGrey\n- `.png=Black on Magenta` sets the `.png` extension color to black text on a magenta background\n\nDisplay items for color configuration:\n\n- `D` (Date), `S` (Size), `N` (Name), `Attr` (Attributes)\n- `CloudOnly`, `Local`, `Pinned` - cloud sync status symbol colors\n\nIcon override (`\u003c.ext\u003e=\u003cColor\u003e,U+\u003ccodepoint\u003e`):\n\n- Override the icon glyph for any extension: `.rs=DarkRed,U+E7A8`\n- Color-only override (keep default glyph): `.js=Yellow`\n- Glyph-only override (keep default color): `.md=,U+F48A`\n\nFile attribute colors (`Attr:\u003cletter\u003e`):\n\n- `H` (hidden), `S` (system), `R` (read-only), `D` (directory)\n\n- Here's an example of the default output, setting the RCDIR environment variable, then showing its effects:\n![RCDir with RCDIR environment variable](Assets/RCDir%20Env%20Variable.png)\n\nTo see the full list of supported colors and a nicely formatted explanation, use --Env.\n\n- Any errors in the RCDIR variable are shown at the end.\n- `rcdir.exe --Env`:\n![RCDir --Env help](Assets/RCDir%20Env.png)\n\nTo see your current color configuration, use --Config:\n\n- All configuration settings are displayed along with the source of that configuration.\n- `rcdir.exe --Config`:\n![RCDir --Config output](Assets/RCDir%20Config.png)\n\n## Building\n\n### Build options\n\n- VS Code: the repo includes `.vscode/tasks.json` with tasks wired up to `scripts/Build.ps1` and `scripts/RunTests.ps1`\n- Command line: use the PowerShell build scripts below\n\n### Build scripts\n\n- Build: `pwsh -File .\\scripts\\Build.ps1 -Configuration \u003cDebug|Release\u003e -Platform \u003cx64|ARM64\u003e -Target Build`\n- Clean: `pwsh -File .\\scripts\\Build.ps1 -Configuration \u003cDebug|Release\u003e -Platform \u003cx64|ARM64\u003e -Target Clean`\n- Rebuild: `pwsh -File .\\scripts\\Build.ps1 -Configuration \u003cDebug|Release\u003e -Platform \u003cx64|ARM64\u003e -Target Rebuild`\n- Build both Release targets: `pwsh -File .\\scripts\\Build.ps1 -Target BuildAllRelease`\n- Run clippy lints: `pwsh -File .\\scripts\\Build.ps1 -Target Clippy`\n\nBuild outputs land under:\n\n- `target\\x86_64-pc-windows-msvc\\debug\\rcdir.exe`, `target\\x86_64-pc-windows-msvc\\release\\rcdir.exe`\n- `target\\aarch64-pc-windows-msvc\\debug\\rcdir.exe`, `target\\aarch64-pc-windows-msvc\\release\\rcdir.exe`\n\n## Tests\n\nRun unit tests:\n\n- `pwsh -File .\\scripts\\RunTests.ps1`\n- Or directly: `cargo test`\n\n## Versioning\n\nThe version is managed in `Version.toml` and auto-stamped into the binary at build time by `build.rs`.\n\n## License\n\nMIT License. See `LICENSE`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frelmer%2Frcdir","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frelmer%2Frcdir","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frelmer%2Frcdir/lists"}