<div align="center">
<h1>TUIFI Manager</h1>
<p>
<a href="https://github.com/GiorgosXou/TUIFIManager/pulse">
<img src="https://img.shields.io/github/last-commit/GiorgosXou/TUIFIManager?color=%4dc71f&label=Last%20Commit&logo=github&style=flat-square"/>
</a>
<a href="https://github.com/GiorgosXou/TUIFIManager/blob/master/LICENSE">
<img src="https://img.shields.io/github/license/GiorgosXou/TUIFIManager?label=License&logo=GNU&style=flat-square"/>
</a>
</p>
</div>
A 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.
##
<div align="center">
<p>
<img src="./Peek.gif">
</p>
<p>
<sub>FONT: Cartograph CF</sub>
</p>
</div>
# ⚙️ Installation
```terminal
sudo pip3 install tuifimanager --upgrade
```
```terminal
pip3 install TUIFIManager --upgrade
```
or just ^^^ if it works for you. *(eg. on termux?)*
# 💥 Usage
Run `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:
```python
from TUIFIManager import *
```
for more details look into the `__main__.py`
# 📦 Features
### • 📌 *Current:*
- [Supports X11 Drag&Drop from terminals](#-customization 'set `tuifi_synth_dnd` enviroment variable to `True`. `pip install requests pynput PySide6 python-xlib`...')
- Supports most common mouse events
- Can be used as a component
- Uses about [35MB](## '80mb with synthetic xdnd, python... :P') of RAM
- Strong [C TUI backend](https://github.com/unicurses/unicurses 'Via Uni-Curses, a NCurses\\PDCurses wrapper')
- It is pretty snappy ! <!-- Kinda lol -->
- Supports [Termux](https://github.com/termux)
- Cross Platform
- and more
### • 🔮 *Desired:*
- Macros
- [Treeview](## 'Via a `WindowPad`')
- Undo\Redo
- Improved UI
- Multiple tabs
- [Image\Sixel support](https://github.com/GiorgosXou/TUIFIManager/issues/86#issuecomment-2016846146)
- Effect on cutted Files
- Multithread performance
# ⌨️ Keybindings
In `vim_mode` both normal and vim shortcuts work
| Normal | vim_mode | Action |
|---- | ---- |---- |
|`SHIFT + TAB` | |Moves selected file to the previous directory |
|`KEY_BACKSPACE`| `J` |Opens\Goes to the previous directory |
|`ALT + DOWN` | |Opens\Closes the "right-click menu" |
|`KEY_HOME` | `H` |Navigates to the $HOME directory |
|`KEY_F5` | |Reload\Refresh current directory |
|`KEY_F3` | `o` |(descending) order-type switch|
|`KEY_F1` | `O` |(ascending) order-type switch|
|`CTRL + V` | `p` |Pastes the Copied or Cuted files |
|`DEL` | `CTRL+d` |Deletes the selected files |
|`CTRL + F` | `i` |Find Files *(if not auto_find_on_typing)* |
|`CTRL + O` | |Open whole directory in editor |
|`CTRL + A` | |Select all files in current folder|
|`CTRL + C` | `yy` |Copies the selected files |
|`CTRL + K` | |Copies the selected files |
|`CTRL + X` | `c` |Cuts the selected files |
|`CTRL + R` | `r` |Rename selected file |
|`CTRL + T` | | Toggle hidden files|
|`CTRL + N` | `W` |Create new folder |
|`CTRL + P` | | Show properties|
|`CTRL + W` | `w` |Create new file |
|`ARROW KEYS` | `l` `k` `j` `h` |Navigates files |
|`KEY_ENTER` | `K`|Opens files |
|`CTRL + E` | `e` |Exit with `cd` |
|`ESCAPE` | |Exit |
**(*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)*
***TERMUX only Shortcuts\Keybindings***
| Shortcut | Action |
|---- |:---- |
|`CTRL + DOWN`| Goes in&out of select-mode while also automatically copies the selected file(s)|
|`CTRL + LEFT`| Goes out of select-mode while also cuts the seleccted file(s) |
|`CTRL + END` | Goes out of select-mode while also deleting the selected file(s) |
|`CTRL + UP` | Same as `CTRL + V`, Pastes the Copied or Cuted files |
|`END` | Deletes selected files |
# 👨💻 Commands
**(Default & 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:**
| Cmd | Type | Attributes | Label Information|
|---|---|---|---|
|`gt` | open | 'directory':'~/.config/tuifi' | - tuifi -|
|`gh` | open | 'directory':'~/' | - Home -|
|`owv` | open | 'directory':None,'\_with':'vim' |Opened With Vim|
|`yat` | copy | 'pattern':'.+\\\\.txt' ||
|`yy` | copy | 'pattern':None ||
**Available Type-keywords:** `open`, `copy`, `cut`, [`find`](## 'Attributes: `filename`')
**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.
**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.
# 📜 Documentation
<sub>Work in progress 🛠️🏗 ...</sub>
# 💭 Customization
<details>
<summary><i>How do I change theme?</i></summary>
> 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). <!-- [.](https://github.com/GiorgosXou/TUIFIManager/issues/38) -->
</details>
<details>
<summary><i>How do I enable vim_mode?</i></summary>
> Set `tuifi_vim_mode` enviroment variable to `True`
</details>
<details>
<summary><i>How do I enable transparency?</i></summary>
> Set `tuitilities_default_background` enviroment variable to `True`
</details>
<details>
<summary><i>How do I enable synthetic XDND?</i></summary>
> 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&drop + 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)
</details>
<details>
<summary><i>How do I set the default editor?</i></summary>
> Set `tuifi_default_editor` enviroment variable to `vim` or whatever you prefer
</details>
<details>
<summary><i>How do I disable the auto-find-mode?</i></summary>
> You can just set `tuifi_auto_find_on_typing` enviroment variable to `False`
</details>
<details>
<summary><i>How do I change the scroll sensitivity?</i></summary>
> 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)*
</details>
<details>
<summary><i>How do I change the default keys (besides commands)?</i></summary>
> This is not possible right now althought you could play around with the content of `toggle_vim_mode` function under `__init__.py`
</details>
<details>
<summary><i>How do I change the number of visible lines of filenames that are visible?</i></summary>
> You can set how mnay lines you want using `tuifi_visible_filename_lines` *(Defaults to 4)*
</details>
<details>
<summary><i>How do I change the default configuration path?</i></summary>
> Set `tuifi_config_path` enviroment variable to whatever you prefer most
</details>
<details>
<summary><i>How do I toggle hidden files/folders?</i></summary>
> You can either `CTRL + T` or set `tuifi_show_hidden` enviroment variable to `True`
</details>
# 💗 Donation
I do really need money to survive, I have no job, living in a basement, making things for free, because I love to.
- [***Paypal Address***](https://www.paypal.com/donate/?hosted_button_id=QNQN23M55EJVS)
- ***Monero Address:*** `897ehhSQJQpGF7tYDhQM51jiX7nnHmzuYAW4q8JGwJxu8JKXvaK6AivCzatuJxnifjZ2qy98ks2g2PhmTaYCMMta2Ga2LJx`
<div align="center">
<img src='./TUIFI.png'>
</div>
# 🫶 Special thanks to
- [@KORBEN for this article](https://korben.info/gestionnaire-fichiers-terminal-tuifimanager-multiplateforme-leger-personnalisable.html)
- [Bryan Lunduke for this article](https://lunduke.substack.com/p/tuifi-manager-a-file-manager-in-the)
- [Brodie Robertson for this video](https://youtu.be/9laxdMKTZLA)
- [r/linux community for their comments](https://www.reddit.com/r/linux/comments/zzf5rx)
- [r/cyberDeck community for their comments](https://www.reddit.com/r/cyberDeck/comments/zttur0)
- [r/commandline community for their comments](https://www.reddit.com/r/commandline/comments/zt30v9)
# 🕳️ Outro
- Any Idea with this issue https://github.com/unicurses/unicurses/issues/21 ?
- Btw I use TUIFI in a daily basis. As crazy as it might sound: It's my primary file manager.
Raw data
{
"_id": null,
"home_page": "https://github.com/GiorgosXou/TUIFIManager",
"name": "TUIFIManager",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "file-manager, terminal, tui, ncurses, pdcurses, uni-curses, termux, vim, vim-motions, cross-platform",
"author": "George Chousos",
"author_email": "gxousos@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/d4/2e/cf498e9496f9e56df0ceec61da296cabe10096f2b33cb0eaa013a646dee6/tuifimanager-5.0.0.tar.gz",
"platform": "unix",
"description": "\n\n<div align=\"center\">\n<h1>TUIFI Manager</h1>\n<p>\n <a href=\"https://github.com/GiorgosXou/TUIFIManager/pulse\">\n <img src=\"https://img.shields.io/github/last-commit/GiorgosXou/TUIFIManager?color=%4dc71f&label=Last%20Commit&logo=github&style=flat-square\"/>\n </a>\n <a href=\"https://github.com/GiorgosXou/TUIFIManager/blob/master/LICENSE\">\n <img src=\"https://img.shields.io/github/license/GiorgosXou/TUIFIManager?label=License&logo=GNU&style=flat-square\"/>\n\t</a>\n</p>\n</div>\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<div align=\"center\">\n<p>\n<img src=\"./Peek.gif\">\n</p>\n<p>\n<sub>FONT: Cartograph CF</sub>\n</p>\n</div>\n\n\n# \u2699\ufe0f 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# \ud83d\udca5 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# \ud83d\udce6 Features \n### \u2022 \ud83d\udccc *Current:*\n- [Supports X11 Drag&Drop 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 ! <!-- Kinda lol -->\n- Supports [Termux](https://github.com/termux) \n- Cross Platform \n- and more\n\n### \u2022 \ud83d\udd2e *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# \u2328\ufe0f 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` |\n|`ESCAPE` | |Exit |\n\n**(*TIP:** \ud83d\udc01 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&out 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# \ud83d\udc68\u200d\ud83d\udcbb Commands\n**(Default & 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.\n\n\n\n# \ud83d\udcdc Documentation\n<sub>Work in progress \ud83d\udee0\ufe0f\ud83c\udfd7 ...</sub>\n\n\n# \ud83d\udcad Customization \n<details>\n<summary><i>How do I change theme?</i></summary>\n\n> 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). <!-- [.](https://github.com/GiorgosXou/TUIFIManager/issues/38) -->\n\n</details>\n<details>\n<summary><i>How do I enable vim_mode?</i></summary>\n\n> Set `tuifi_vim_mode` enviroment variable to `True`\n\n</details>\n<details>\n<summary><i>How do I enable transparency?</i></summary>\n\n> Set `tuitilities_default_background` enviroment variable to `True`\n\n</details>\n<details>\n<summary><i>How do I enable synthetic XDND?</i></summary>\n\n> 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&drop + 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</details>\n<details>\n<summary><i>How do I set the default editor?</i></summary>\n\n> Set `tuifi_default_editor` enviroment variable to `vim` or whatever you prefer\n\n</details>\n<details>\n<summary><i>How do I disable the auto-find-mode?</i></summary>\n\n> You can just set `tuifi_auto_find_on_typing` enviroment variable to `False`\n\n</details>\n<details>\n<summary><i>How do I change the scroll sensitivity?</i></summary>\n\n> 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</details>\n<details>\n<summary><i>How do I change the default keys (besides commands)?</i></summary>\n\n> This is not possible right now althought you could play around with the content of `toggle_vim_mode` function under `__init__.py`\n\n</details>\n<details>\n<summary><i>How do I change the number of visible lines of filenames that are visible?</i></summary>\n\n> You can set how mnay lines you want using `tuifi_visible_filename_lines` *(Defaults to 4)*\n\n</details>\n<details>\n<summary><i>How do I change the default configuration path?</i></summary>\n\n> Set `tuifi_config_path` enviroment variable to whatever you prefer most\n\n</details>\n<details>\n<summary><i>How do I toggle hidden files/folders?</i></summary>\n\n> You can either `CTRL + T` or set `tuifi_show_hidden` enviroment variable to `True`\n\n</details>\n\n\n# \ud83d\udc97 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<div align=\"center\">\n<img src='./TUIFI.png'>\n</div>\n\n\n# \ud83e\udef6 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# \ud83d\udd73\ufe0f 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",
"bugtrack_url": null,
"license": "General Public License v3.0",
"summary": "A cross-platform terminal-based termux-oriented file manager.",
"version": "5.0.0",
"project_urls": {
"Homepage": "https://github.com/GiorgosXou/TUIFIManager"
},
"split_keywords": [
"file-manager",
" terminal",
" tui",
" ncurses",
" pdcurses",
" uni-curses",
" termux",
" vim",
" vim-motions",
" cross-platform"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "d42ecf498e9496f9e56df0ceec61da296cabe10096f2b33cb0eaa013a646dee6",
"md5": "7d3bf1ef17e6970bff6255a72be5c41c",
"sha256": "4757d0347dd769417d8da5211fc3a30d71f8dd3ff5ea0049c4e5ce19ffb5f4a5"
},
"downloads": -1,
"filename": "tuifimanager-5.0.0.tar.gz",
"has_sig": false,
"md5_digest": "7d3bf1ef17e6970bff6255a72be5c41c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 1920223,
"upload_time": "2024-10-18T13:34:58",
"upload_time_iso_8601": "2024-10-18T13:34:58.912008Z",
"url": "https://files.pythonhosted.org/packages/d4/2e/cf498e9496f9e56df0ceec61da296cabe10096f2b33cb0eaa013a646dee6/tuifimanager-5.0.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-10-18 13:34:58",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "GiorgosXou",
"github_project": "TUIFIManager",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "tuifimanager"
}