{"id":36454129,"url":"https://github.com/lepergnome/bt","last_synced_at":"2026-01-11T23:01:06.678Z","repository":{"id":251129941,"uuid":"836482875","full_name":"LeperGnome/bt","owner":"LeperGnome","description":"Interactive tree-like terminal file manager","archived":false,"fork":false,"pushed_at":"2025-09-14T20:40:52.000Z","size":4135,"stargazers_count":135,"open_issues_count":7,"forks_count":6,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-09-14T22:19:16.622Z","etag":null,"topics":["bubbletea","filemanager","tree","tui"],"latest_commit_sha":null,"homepage":"","language":"Go","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/LeperGnome.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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":"2024-08-01T00:23:06.000Z","updated_at":"2025-09-14T20:40:50.000Z","dependencies_parsed_at":"2024-11-08T03:30:17.389Z","dependency_job_id":"7dd1e6b2-6864-4333-b920-1fe8bc75527d","html_url":"https://github.com/LeperGnome/bt","commit_stats":null,"previous_names":["lepergnome/tr","lepergnome/bt"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/LeperGnome/bt","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LeperGnome%2Fbt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LeperGnome%2Fbt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LeperGnome%2Fbt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LeperGnome%2Fbt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LeperGnome","download_url":"https://codeload.github.com/LeperGnome/bt/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LeperGnome%2Fbt/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28326166,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-11T22:11:01.104Z","status":"ssl_error","status_checked_at":"2026-01-11T22:10:58.990Z","response_time":60,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["bubbletea","filemanager","tree","tui"],"created_at":"2026-01-11T23:01:05.918Z","updated_at":"2026-01-11T23:01:06.664Z","avatar_url":"https://github.com/LeperGnome.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Better tree (arguably)\n\nManipulate file tree in terminal.\n\n\u003cimg alt=\"Preview\" src=\"assets/preview-w-hl.gif\" width=\"600\" /\u003e\n\n## Installation\n\n`bt` is currently only supported on linux and macOS. Windows support is on todo list.\n\n```bash\ngo install github.com/LeperGnome/bt/cmd/bt@v1.2.2\n```\n\nOr from source\n\n```bash\nmake install\n```\n\nOr download prebuilt binaries from the [latest release](https://github.com/LeperGnome/bt/releases).\n\n## Usage\n\n```bash\nbt [flags] [directory]\n\nUsage of bt:\n      --file_preview       Enable file previews (default true)\n      --highlight_indent   Highlight current indent (default true)\n  -i, --in_place_render    In-place render (without alternate screen)\n  -p, --padding uint       Edge padding for top and bottom (default 5)\n```\n\nKey bindings:\n\n| key           | desc                                                           |\n| ------------- | -------------------------------------------------------------- |\n| j / arr down  | Select next child                                              |\n| k / arr up    | Select previous child                                          |\n| h / arr left  | Move up a dir                                                  |\n| l / arr right | Enter selected directory                                       |\n| tab           | Mark selected child and move down                              |\n| shift+tab     | Mark selected child and move up                                |\n| d             | Move marked children (then 'p' to paste)                       |\n| y             | Copy marked children (then 'p' to paste)                       |\n| D             | Delete marked child                                            |\n| if / id       | Create file (if) / directory (id) in current directory         |\n| r             | Rename selected child                                          |\n| e             | Edit selected file in $EDITOR                                  |\n| gg            | Go to top most child in current directory                      |\n| G             | Go to last child in current directory                          |\n| H             | Toggle hidden files in current directory                       |\n| enter         | Open / close selected directory or open file (xdg-open / open) |\n| esc           | Clear error message / stop current operation / drop marks      |\n| ?             | Toggle help                                                    |\n| q / ctrl+c    | Exit                                                           |\n\n## Configuration\n\nYou can configure `bt` via configuration file at `$HOME/.config/bt/conf.yaml`\n\n```yaml\n\npadding: 5\nfile_preview: true\nhighlight_indent: true\nin_place_render: false\n\n```\n\n## Motivation\n\nI find myself disliking a majority of column-based terminal file managers.\nThe reason for that is - when I need to copy/move some files across nested subdirectories,\nI constantly lose context of where I am currently, because columns always go left and right.\nEven though those file managers are really mature and loaded with features (e.g. [ranger](https://github.com/ranger/ranger), [lf](https://github.com/gokcehan/lf), [xplr](https://github.com/sayanarijit/xplr), [nnn](https://github.com/jarun/nnn)), it's uneasy for me to perform simple tasks.\n\nI like how [broot](https://github.com/Canop/broot) renders the ui, but I guess that it's mainly usable for exploring a file tree, but not manipulating it (at least I found it this way, when I had to type a target directory for `move`).\n\nThat's why I'm writing my own simple tool for simple use cases. It's currently lacking a bunch of features (see todo list below), but the fundamentals are here.\n\n## TODO\n\n```\nFunctional:\n- [x] Tree rendering\n- [x] File preview\n- [x] Scrolling trees, that don't fit the screen\n- [x] Move files\n- [x] Jump into empty directories\n- [x] Copy / paste files\n- [x] Not reading whole file contents, only fix size\n- [x] Remove files\n- [~] Resolve filename conflicts (kinda done)\n- [x] Sorting\n- [x] \"G\" to go bottom and \"gg\" to go top\n- [x] Creating files and directories\n- [x] Renaming files and directories\n- [x] Handle fs updates\n- [~] Error handling (permissions denied, etc) (kinda)\n- [x] File permission in status bar\n- [x] Stylesheets\n- [x] Edit selected file in editor of choice\n- [x] Help\n- [x] Toggle hidden directories\n- [x] Image preview (half-block only)\n- [x] xdg-open files\n- [x] Async preview\n- [x] Mark multiple files\n- [ ] Image preview TGP\n- [ ] Custom delete cmd\n- [ ] Search\n- [ ] Marked to stdout on exit\n- [ ] Jump to current directory\n- [ ] Go higher then local root\n- [ ] Make current directory a local root\n- [ ] Windows support\n\nFixes:\n- [x] Fix size notation\n- [x] Check existing name on rename\n- [x] \"gg\" drops previous operation\n- [ ] File preview ignore control chars\n\nMaintenance:\n- [x] Tests (at least a little bit)\n- [x] Release artifacts\n- [x] CI\n- [ ] Distribution\n- [ ] CONTRIBUTING.md\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flepergnome%2Fbt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flepergnome%2Fbt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flepergnome%2Fbt/lists"}