{"id":14008053,"url":"https://github.com/darkhz/adbtuifm","last_synced_at":"2025-10-22T02:49:12.428Z","repository":{"id":50719181,"uuid":"382926757","full_name":"darkhz/adbtuifm","owner":"darkhz","description":"A TUI File Manager for ADB","archived":false,"fork":false,"pushed_at":"2022-03-16T10:04:16.000Z","size":23604,"stargazers_count":119,"open_issues_count":2,"forks_count":2,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-08-11T11:02:40.462Z","etag":null,"topics":["adb","filemanager","filemanager-ui","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/darkhz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-07-04T18:54:33.000Z","updated_at":"2024-08-10T12:10:12.000Z","dependencies_parsed_at":"2022-09-26T21:31:32.371Z","dependency_job_id":null,"html_url":"https://github.com/darkhz/adbtuifm","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darkhz%2Fadbtuifm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darkhz%2Fadbtuifm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darkhz%2Fadbtuifm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darkhz%2Fadbtuifm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/darkhz","download_url":"https://codeload.github.com/darkhz/adbtuifm/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":227410427,"owners_count":17774743,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["adb","filemanager","filemanager-ui","tui"],"created_at":"2024-08-10T11:01:11.277Z","updated_at":"2025-10-22T02:49:12.336Z","avatar_url":"https://github.com/darkhz.png","language":"Go","funding_links":[],"categories":["Go","Table of Contents","\u003ca name=\"file-manager\"\u003e\u003c/a\u003eFile manager"],"sub_categories":[],"readme":"\n\n[![Go Report Card](https://goreportcard.com/badge/github.com/darkhz/adbtuifm)](https://goreportcard.com/report/github.com/darkhz/adbtuifm)\n# adbtuifm\n\n![demo](demo/demo.gif)\n\nadbtuifm is a TUI-based file manager for the Android Debug Bridge, to make transfers\nbetween the device and client easier.\n\nIt has been tested only on Linux. Windows/Mac is currently not supported.\n\nThis is a work in progress.\n\n# Features\n- Multiselection support, with a selections editor\n\n- Transferring files/folders between the device and the local machine\n\n- Open files of any file type from the device or local machine\n\n- Copy, move, and delete operations on the device and the local machine\u003cbr /\u003eseparately\n\n- View file operations separately on a different screen, with ability to monitor\u003cbr /\u003eprogress and  cancel operation\n\n- Execute commands on the device or local machine, with toggleable\u003cbr /\u003eforeground/background execution modes\n\n- Filter entries in each directory\n\n- Rename files/folders or create directories\n\n- Switch between adbtuifm and shell easily\n\n- Change to any directory via an inputbox, with autocompletion support\n\n# Installation\n```\ngo get -u github.com/darkhz/adbtuifm\n```\n# Usage\n```\nadbtuifm [\u003cflags\u003e]\n\nFlags:\n  --remote=\u003cpath\u003e     Specify the remote(ADB) path to start in\n  --local=\u003cpath\u003e      Specify the local path to start in\n  ```\n\n# Keybindings\n\n## Main Page\n|Operation                                 |Key                                                     |\n|------------------------------------------|--------------------------------------------------------|\n|Switch between panes                      |\u003ckbd\u003eTab\u003c/kbd\u003e                                          |\n|Navigate between entries                  |\u003ckbd\u003eUp\u003c/kbd\u003e/\u003ckbd\u003eDown\u003c/kbd\u003e                           |\n|Change directory to highlighted entry     |\u003ckbd\u003eEnter\u003c/kbd\u003e/\u003ckbd\u003eRight\u003c/kbd\u003e                       |\n|Change one directory back                 |\u003ckbd\u003eBackspace\u003c/kbd\u003e/\u003ckbd\u003eLeft\u003c/kbd\u003e                    |\n|Switch to operations page                 |\u003ckbd\u003eo\u003c/kbd\u003e                                            |\n|Switch between ADB/Local (in each pane)   |\u003ckbd\u003es\u003c/kbd\u003e/\u003ckbd\u003e\u003c\u003c/kbd\u003e                               |\n|Change to any directory                   |\u003ckbd\u003eg\u003c/kbd\u003e/\u003ckbd\u003e\u003e\u003c/kbd\u003e                               |\n|Toggle hidden files                       |\u003ckbd\u003eh\u003c/kbd\u003e/\u003ckbd\u003e.\u003c/kbd\u003e                               |\n|Execute command                           |\u003ckbd\u003e!\u003c/kbd\u003e                                            |\n|Refresh                                   |\u003ckbd\u003er\u003c/kbd\u003e                                            |\n|Move                                      |\u003ckbd\u003em\u003c/kbd\u003e                                            |\n|Put/Paste (duplicate existing entry)      |\u003ckbd\u003ep\u003c/kbd\u003e                                            |\n|Put/Paste (don't duplicate existing entry)|\u003ckbd\u003eP\u003c/kbd\u003e                                            |\n|Delete                                    |\u003ckbd\u003ed\u003c/kbd\u003e                                            |\n|Open files                                |\u003ckbd\u003eCtrl\u003c/kbd\u003e+\u003ckbd\u003eo\u003c/kbd\u003e                            |\n|Filter entries                            |\u003ckbd\u003e/\u003c/kbd\u003e                                            |\n|Toggle filtering modes (normal/regex)     |\u003ckbd\u003eCtrl\u003c/kbd\u003e+\u003ckbd\u003ef\u003c/kbd\u003e                            |\n|Sort entries                              |\u003ckbd\u003e;\u003c/kbd\u003e                                            |\n|Clear filtered entries                    |\u003ckbd\u003eCtrl\u003c/kbd\u003e+\u003ckbd\u003er\u003c/kbd\u003e                            |\n|Select one item                           |\u003ckbd\u003eSpace\u003c/kbd\u003e                                        |\n|Inverse selection                         |\u003ckbd\u003ea\u003c/kbd\u003e                                            |\n|Select all items                          |\u003ckbd\u003eA\u003c/kbd\u003e                                            |\n|Edit selection list                       |\u003ckbd\u003eS\u003c/kbd\u003e                                            |\n|Make directory                            |\u003ckbd\u003eM\u003c/kbd\u003e                                            |\n|Toggle top-down/right-left layout         |\u003ckbd\u003e[\u003c/kbd\u003e                                            |\n|Swap panes                                |\u003ckbd\u003e]\u003c/kbd\u003e                                            |\n|Rename files/folders                      |\u003ckbd\u003eR\u003c/kbd\u003e                                            |\n|Reset selections                          |\u003ckbd\u003eEsc\u003c/kbd\u003e                                          |\n|Suspend to shell                          |\u003ckbd\u003eCtrl\u003c/kbd\u003e+\u003ckbd\u003ez\u003c/kbd\u003e                            |\n|Launch local/ADB shell                    |\u003ckbd\u003eCtrl\u003c/kbd\u003e+\u003ckbd\u003ed\u003c/kbd\u003e/\u003ckbd\u003eAlt\u003c/kbd\u003e+\u003ckbd\u003ed\u003c/kbd\u003e|\n|Help                                      |\u003ckbd\u003e?\u003c/kbd\u003e                                            |\n|Quit                                      |\u003ckbd\u003eq\u003c/kbd\u003e                                            |\n\n## Operations Page\n|Operation                |Key                          |\n|-------------------------|-----------------------------|\n|Navigate between entries |\u003ckbd\u003eUp\u003c/kbd\u003e/\u003ckbd\u003eDown\u003c/kbd\u003e|\n|Cancel selected operation|\u003ckbd\u003ex\u003c/kbd\u003e                 |\n|Cancel all operations    |\u003ckbd\u003eX\u003c/kbd\u003e                 |\n|Switch to main page      |\u003ckbd\u003eo\u003c/kbd\u003e/\u003ckbd\u003eEsc\u003c/kbd\u003e  |\n\n## Change Directory Selector\n|Operation                            |Key                          |\n|-------------------------------------|-----------------------------|\n|Navigate between entries             |\u003ckbd\u003eUp\u003c/kbd\u003e/\u003ckbd\u003eDown\u003c/kbd\u003e|\n|Autocomplete                         |\u003ckbd\u003eTab\u003c/kbd\u003e               |\n|Change directory to highlighted entry|\u003ckbd\u003eEnter\u003c/kbd\u003e             |\n|Move back a directory                |\u003ckbd\u003eCtrl\u003c/kbd\u003e+\u003ckbd\u003ew\u003c/kbd\u003e |\n|Switch to main page                  |\u003ckbd\u003eEsc\u003c/kbd\u003e               |\n\n## Selections Editor\n|Operation          |Key                            |\n|-------------------|-------------------------------|\n|Select one item    |\u003ckbd\u003eAlt\u003c/kbd\u003e+\u003ckbd\u003eSpace\u003c/kbd\u003e|\n|Inverse selection  |\u003ckbd\u003eAlt\u003c/kbd\u003e+\u003ckbd\u003ea\u003c/kbd\u003e    |\n|Select all items   |\u003ckbd\u003eAlt\u003c/kbd\u003e+\u003ckbd\u003eA\u003c/kbd\u003e    |\n|Save edited list   |\u003ckbd\u003eCtrl\u003c/kbd\u003e+\u003ckbd\u003es\u003c/kbd\u003e   |\n|Cancel editing list|\u003ckbd\u003eEsc\u003c/kbd\u003e                 |\n\n## Execution mode\n|Operation                                     |Key                         |\n|----------------------------------------------|----------------------------|\n|Switch between Local/Adb execution            |\u003ckbd\u003eCtrl\u003c/kbd\u003e+\u003ckbd\u003ea\u003c/kbd\u003e|\n|Switch between Foreground/Background execution|\u003ckbd\u003eCtrl\u003c/kbd\u003e+\u003ckbd\u003eq\u003c/kbd\u003e|\n\n# Notes\n- As of v0.5.5, keybindings have been revised and the UI has been revamped.\u003cbr /\u003e\n\n- More information about an entry will be shown only in the **top-down** layout.\u003cbr /\u003e\n\n- **Only Copy operations are cancellable**. Move and Delete operations will persist.\u003cbr /\u003e\n\n- The current method to open files is via **xdg-open**. In certain cases, after opening\u003cbr /\u003e and modifying a file, the application may take time to exit, and as a result no operations\u003cbr /\u003e can be performed on the currently edited file until the application exits. For example, after\u003cbr /\u003e opening a zip file via file-roller, modifying it and closing the file-roller GUI, file-roller takes some\u003cbr /\u003e time to fully exit, and since the UI is waiting for file-roller to exit, the user cannot perform operations\u003cbr /\u003e on the currently modified file until file-roller exits.\n\n# Bugs\n-  In directories with a huge amount of entries, autocompletion will lag.\n   This happens only on the device side (i.e ADB mode), where there is\n   significant latency in transferring and processing the directory listing\n   to the client.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdarkhz%2Fadbtuifm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdarkhz%2Fadbtuifm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdarkhz%2Fadbtuifm/lists"}