{"id":13501235,"url":"https://github.com/GiorgosXou/TUIFIManager","last_synced_at":"2025-03-29T08:32:16.340Z","repository":{"id":37312863,"uuid":"443239513","full_name":"GiorgosXou/TUIFIManager","owner":"GiorgosXou","description":"A cross-platform terminal-based termux-oriented file manager (and component), meant to be used with a Uni-Curses project or as is. ","archived":false,"fork":false,"pushed_at":"2025-01-19T14:37:55.000Z","size":6900,"stargazers_count":739,"open_issues_count":15,"forks_count":16,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-03-23T06:06:51.765Z","etag":null,"topics":["cross-platform","filemanager","filemanager-ui","ncurses","pdcurses","terminal","terminal-based","termux","tui","unicurses","vi-motion","vim","vim-motions"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GiorgosXou.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}},"created_at":"2021-12-31T03:05:40.000Z","updated_at":"2025-03-18T08:16:12.000Z","dependencies_parsed_at":"2024-01-07T21:02:25.286Z","dependency_job_id":"e89f8a14-5f3b-4126-94fe-a585c5b44df1","html_url":"https://github.com/GiorgosXou/TUIFIManager","commit_stats":{"total_commits":380,"total_committers":6,"mean_commits":"63.333333333333336","dds":"0.18947368421052635","last_synced_commit":"f1ece01860d10af1dd5323e2550843efd61b31e9"},"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GiorgosXou%2FTUIFIManager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GiorgosXou%2FTUIFIManager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GiorgosXou%2FTUIFIManager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GiorgosXou%2FTUIFIManager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GiorgosXou","download_url":"https://codeload.github.com/GiorgosXou/TUIFIManager/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246162092,"owners_count":20733351,"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":["cross-platform","filemanager","filemanager-ui","ncurses","pdcurses","terminal","terminal-based","termux","tui","unicurses","vi-motion","vim","vim-motions"],"created_at":"2024-07-31T22:01:30.074Z","updated_at":"2025-03-29T08:32:16.334Z","avatar_url":"https://github.com/GiorgosXou.png","language":"Python","funding_links":["https://www.paypal.com/donate/?hosted_button_id=QNQN23M55EJVS"],"categories":["Python","\u003ca name=\"file-manager\"\u003e\u003c/a\u003eFile manager","Table of Contents"],"sub_categories":[],"readme":"\n\n\u003cdiv align=\"center\"\u003e\n\u003ch1\u003eTUIFI Manager\u003c/h1\u003e\n\u003cp\u003e\n    \u003ca href=\"https://github.com/GiorgosXou/TUIFIManager/pulse\"\u003e\n      \u003cimg src=\"https://img.shields.io/github/last-commit/GiorgosXou/TUIFIManager?color=%4dc71f\u0026label=Last%20Commit\u0026logo=github\u0026style=flat-square\"/\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/GiorgosXou/TUIFIManager/blob/master/LICENSE\"\u003e\n      \u003cimg src=\"https://img.shields.io/github/license/GiorgosXou/TUIFIManager?label=License\u0026logo=GNU\u0026style=flat-square\"/\u003e\n\t\u003c/a\u003e\n\u003c/p\u003e\n\u003c/div\u003e\n\nA cross-platform terminal-based termux-oriented file manager *(and component)*, meant to be used with a [Uni-Curses](https://github.com/unicurses/unicurses) project or as is. This project is mainly an attempt to get more attention to the [Uni-Curses](https://github.com/unicurses/unicurses) project. \n\n##\n\u003cdiv align=\"center\"\u003e\n\u003cp\u003e\n\u003cimg src=\"./Peek.gif\"\u003e\n\u003c/p\u003e\n\u003cp\u003e\n\u003csub\u003eFONT: Cartograph CF\u003c/sub\u003e\n\u003c/p\u003e\n\u003c/div\u003e\n\n\n# ⚙️ Installation\n```terminal\nsudo pip3 install tuifimanager --upgrade\n```\n```terminal\npip3 install TUIFIManager --upgrade\n```\nor just ^^^ if it works for you. *(eg. on termux?)*\n\n\n# 💥 Usage\nRun `tuifi` in your terminal to use it as is or import it in one of your [Uni-Curses](https://github.com/unicurses/unicurses) project as a component like:\n```python\nfrom TUIFIManager import *\n```\nfor more details look into the `__main__.py`\n\n\n# 📦 Features \n### • 📌 *Current:*\n- [Supports X11 Drag\u0026Drop from terminals](#-customization 'set `tuifi_synth_dnd` enviroment variable to `True`. `pip install requests pynput PySide6 python-xlib`...')\n- Supports most common mouse events \n- Can be used as a component\n- Uses about [35MB](## '80mb with synthetic xdnd, python... :P') of RAM\n- Strong [C TUI backend](https://github.com/unicurses/unicurses 'Via Uni-Curses, a NCurses\\\\PDCurses wrapper')\n- It is pretty snappy ! \u003c!-- Kinda lol --\u003e\n- Supports [Termux](https://github.com/termux) \n- Cross Platform \n- and more\n\n### • 🔮 *Desired:*\n- Macros\n- [Treeview](## 'Via a `WindowPad`')\n- Undo\\Redo\n- Improved UI\n- Multiple tabs\n- [Image\\Sixel support](https://github.com/GiorgosXou/TUIFIManager/issues/86#issuecomment-2016846146)\n- Effect on cutted Files\n- Multithread performance\n\n# ⌨️ Keybindings\nIn `vim_mode` both normal and vim shortcuts work \n| Normal      | vim_mode | Action                                        |\n|----         | ---- |----                                          |\n|`SHIFT + TAB`  |   |Moves selected file to the previous directory |\n|`KEY_BACKSPACE`| `J` |Opens\\Goes to the previous directory          |\n|`ALT + DOWN`   |   |Opens\\Closes the \"right-click menu\"           |\n|`KEY_HOME`     | `H`  |Navigates to the $HOME directory              |\n|`KEY_F5`       |   |Reload\\Refresh current directory              |\n|`KEY_F3`       | `o`  |(descending) order-type switch|\n|`KEY_F1`       | `O`  |(ascending) order-type switch|\n|`CTRL + V`     | `p` |Pastes the Copied or Cuted files              |\n|`DEL`          | `CTRL+d`  |Deletes the selected files                    |\n|`CTRL + F`     | `i`  |Find Files *(if not auto_find_on_typing)*     |\n|`CTRL + O`     |   |Open whole directory in editor                |\n|`CTRL + A`     |  |Select all files in current folder|\n|`CTRL + C`     | `yy`  |Copies the selected files                     |\n|`CTRL + K`     |   |Copies the selected files                     |\n|`CTRL + X`     | `c`  |Cuts the selected files                       |\n|`CTRL + R`     | `r` |Rename selected file                          | \n|`CTRL + T`     | | Toggle hidden files|\n|`CTRL + N`     | `W` |Create new folder                             |\n|`CTRL + P`     | | Show properties|\n|`CTRL + W`     | `w` |Create new file                               |\n|`ARROW KEYS`   | `l` `k` `j` `h`  |Navigates files                               |\n|`KEY_ENTER`    | `K`|Opens files                                   |\n|`CTRL + E`     | `e` |[Exit with `cd`](https://github.com/GiorgosXou/TUIFIManager/tree/master/etc)                                  |\n|`ESCAPE`       |   |Exit                                          |\n\n**(*TIP:** 🐁 use `ALT + CLICK` for multiple mouse selection if `SHIFT` not working. You can also use `s i m a c` to copy individual properties when you have them opened)*\n\n***TERMUX only Shortcuts\\Keybindings***\n| Shortcut    | Action                                                                         |\n|----         |:----                                                                           |\n|`CTRL + DOWN`| Goes in\u0026out of select-mode while also automatically copies the selected file(s)|\n|`CTRL + LEFT`| Goes out of select-mode while also cuts the seleccted file(s)                  |\n|`CTRL + END` | Goes out of select-mode while also deleting the selected file(s)               |\n|`CTRL + UP`  | Same as `CTRL + V`, Pastes the Copied or Cuted files                           |\n|`END`        | Deletes selected files                                                         |\n\n\n# 👨‍💻 Commands\n**(Default \u0026 Custom Comands)** - To perform a command under the normal-mode, you first have to press the space-bar and then type the command. Alternatively, use `vim_mode` or enable the `tuifi_auto_command_on_typing` env-variable *(notice: it disables `tuifi_auto_find_on_typing`)*. **The default commands can be seen below and can be found under the `~/.config/tuifi/cmds.conf` where you can add your custom ones too:**\n\n| Cmd | Type | Attributes | Label Information|\n|---|---|---|---|\n|`gt` | open | 'directory':'~/.config/tuifi'           | - tuifi -|\n|`gh` | open | 'directory':'~/'                        | - Home -|\n|`owv` | open | 'directory':None,'\\_with':'vim'         |Opened With Vim|\n|`yat` | copy | 'pattern':'.+\\\\\\\\.txt'                     ||\n|`yy` | copy | 'pattern':None                          ||\n\n**Available Type-keywords:** `open`, `copy`, `cut`, [`find`](## 'Attributes: `filename`')\n\n**important note:** `o` is also used for ordering in `vim_mode`. In this case you can first press space-bar before proceeding with `owv` or with any other already reserved starting key, or just change it. \n\n**Additionally** there are also some hardcoded ones, like the `m`+character: which marks the current directory into the character, so you can navigate back to it by using \\` or `;`+that_character. `yp` and `yd` to copy either the file-path or directory-path to clipboard. `F` and `f` for finding\\\\jumping-to the first filename-ocurance of the next letter you type, backwards or forwards\n\n\n\n# 📜 Documentation\n\u003csub\u003eWork in progress 🛠️🏗 ...\u003c/sub\u003e\n\n\n# 💭 Customization \n\u003cdetails\u003e\n\u003csummary\u003e\u003ci\u003eHow do I change theme?\u003c/i\u003e\u003c/summary\u003e\n\n\u003e You either [download](https://github.com/GiorgosXou/our-tuifi-themes) one or make your own based on this [how-to](https://github.com/GiorgosXou/our-tuifi-themes/blob/main/TUTORIAL.md). \u003c!-- [.](https://github.com/GiorgosXou/TUIFIManager/issues/38) --\u003e\n\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\u003ci\u003eHow do I enable vim_mode?\u003c/i\u003e\u003c/summary\u003e\n\n\u003e Set `tuifi_vim_mode` enviroment variable to `True`\n\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\u003ci\u003eHow do I enable transparency?\u003c/i\u003e\u003c/summary\u003e\n\n\u003e Set `tuitilities_default_background` enviroment variable to `True`\n\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\u003ci\u003eHow do I enable synthetic XDND?\u003c/i\u003e\u003c/summary\u003e\n\n\u003e set `tuifi_synth_dnd` enviroment variable to `True`. `pip install requests pynput PySide6 python-xlib`. Know it's expirimental! You'll need to adapt to it slightly, **use it as: Drag\u0026drop + click afterwords where you want the file to be dropped.** [See also](https://github.com/GiorgosXou/TUIFIManager/discussions/92) and [this issue](https://github.com/GiorgosXou/TUIFIManager/issues/21)\n\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\u003ci\u003eHow do I set the default editor?\u003c/i\u003e\u003c/summary\u003e\n\n\u003e Set `tuifi_default_editor` enviroment variable to `vim` or whatever you prefer\n\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\u003ci\u003eHow do I disable the auto-find-mode?\u003c/i\u003e\u003c/summary\u003e\n\n\u003e You can just set `tuifi_auto_find_on_typing` enviroment variable to `False`\n\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\u003ci\u003eHow do I change the scroll sensitivity?\u003c/i\u003e\u003c/summary\u003e\n\n\u003e You can set either or both `tuifi_scroll_sensitivity`, `tuifi_ctrl_scroll_sensitivity` enviromental variables, to the disered number of characters per scroll action *(they default to 1 and 7)*\n\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\u003ci\u003eHow do I enable single-click navigation mode?\u003c/i\u003e\u003c/summary\u003e\n\n\u003e You just set `tuifi_has_single_click` enviroment variable to `True`\n\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\u003ci\u003eHow do I change the default keys (besides commands)?\u003c/i\u003e\u003c/summary\u003e\n\n\u003e This is not possible right now althought you could play around with the content of `toggle_vim_mode` function under `__init__.py`\n\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\u003ci\u003eHow do I change the number of visible lines of filenames that are visible?\u003c/i\u003e\u003c/summary\u003e\n\n\u003e You can set how mnay lines you want using `tuifi_visible_filename_lines` *(Defaults to 4)*\n\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\u003ci\u003eHow do I change the default configuration path?\u003c/i\u003e\u003c/summary\u003e\n\n\u003e Set `tuifi_config_path` enviroment variable to whatever you prefer most\n\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\u003ci\u003eHow do I toggle hidden files/folders?\u003c/i\u003e\u003c/summary\u003e\n\n\u003e You can either `CTRL + T` or set `tuifi_show_hidden` enviroment variable to `True`\n\n\u003c/details\u003e\n\n\n# 💗 Donation\nI do really need money to survive, I have no job, living in a basement, making things for free, because I love to.\n- [***Paypal Address***](https://www.paypal.com/donate/?hosted_button_id=QNQN23M55EJVS)\n- ***Monero Address:*** `897ehhSQJQpGF7tYDhQM51jiX7nnHmzuYAW4q8JGwJxu8JKXvaK6AivCzatuJxnifjZ2qy98ks2g2PhmTaYCMMta2Ga2LJx`\n\n\u003cdiv align=\"center\"\u003e\n\u003cimg src='./TUIFI.png'\u003e\n\u003c/div\u003e\n\n\n# 🫶 Special thanks to\n- [@KORBEN for this article](https://korben.info/gestionnaire-fichiers-terminal-tuifimanager-multiplateforme-leger-personnalisable.html)\n- [Bryan Lunduke for this article](https://lunduke.substack.com/p/tuifi-manager-a-file-manager-in-the)\n- [Brodie Robertson for this video](https://youtu.be/9laxdMKTZLA)\n- [r/linux community for their comments](https://www.reddit.com/r/linux/comments/zzf5rx)\n- [r/cyberDeck community for their comments](https://www.reddit.com/r/cyberDeck/comments/zttur0)\n- [r/commandline community for their comments](https://www.reddit.com/r/commandline/comments/zt30v9)\n\n# 🕳️ Outro\n- Any Idea with this issue https://github.com/unicurses/unicurses/issues/21 ?\n- Btw I use TUIFI in a daily basis. As crazy as it might sound: It's my primary file manager.\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FGiorgosXou%2FTUIFIManager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FGiorgosXou%2FTUIFIManager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FGiorgosXou%2FTUIFIManager/lists"}