TUIFIManager


NameTUIFIManager JSON
Version 4.0.5 PyPI version JSON
download
home_pagehttps://github.com/GiorgosXou/TUIFIManager
SummaryA cross-platform terminal-based termux-oriented file manager.
upload_time2024-04-23 17:46:25
maintainerNone
docs_urlNone
authorGeorge Chousos
requires_python>=3.8
licenseGeneral Public License v3.0
keywords file-manager terminal tui ncurses pdcurses uni-curses termux vim vim-motions cross-platform
VCS
bugtrack_url
requirements uni-curses Send2Trash
Travis-CI No Travis.
coveralls test coverage No coveralls.
            

<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 [~30MB](## '80mb with synthetic xdnd') 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
- [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 + 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)*

***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 "static" 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 



# 📜 Documentation
<sub>Work in progress 🛠️🏗 ...</sub>


# 💭 Customization 
<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 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>
<details>
<summary><i>How do I change the default colors?</i></summary>

> [look here for more informations](https://github.com/GiorgosXou/TUIFIManager/issues/38)

</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/70/45/8e00c44908c6be15e861fbfe039a8e6db3ef7b6b1c488ecd1095f3a7d4d3/TUIFIManager-4.0.5.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 [~30MB](## '80mb with synthetic xdnd') 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- [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 + 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)*\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 \"static\" 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 \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 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 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<details>\n<summary><i>How do I change the default colors?</i></summary>\n\n> [look here for more informations](https://github.com/GiorgosXou/TUIFIManager/issues/38)\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": "4.0.5",
    "project_urls": {
        "Github": "https://github.com/GiorgosXou/TUIFIManager",
        "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": "70458e00c44908c6be15e861fbfe039a8e6db3ef7b6b1c488ecd1095f3a7d4d3",
                "md5": "5535bee2b12c7fa6a6f88241d84e2c1c",
                "sha256": "5a7fe26c173e848cd359e539ab548f13158befb9acf9a2ca5a4552c2fcd23e9e"
            },
            "downloads": -1,
            "filename": "TUIFIManager-4.0.5.tar.gz",
            "has_sig": false,
            "md5_digest": "5535bee2b12c7fa6a6f88241d84e2c1c",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 1910676,
            "upload_time": "2024-04-23T17:46:25",
            "upload_time_iso_8601": "2024-04-23T17:46:25.127928Z",
            "url": "https://files.pythonhosted.org/packages/70/45/8e00c44908c6be15e861fbfe039a8e6db3ef7b6b1c488ecd1095f3a7d4d3/TUIFIManager-4.0.5.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-23 17:46:25",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "GiorgosXou",
    "github_project": "TUIFIManager",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "uni-curses",
            "specs": [
                [
                    ">=",
                    "2.1.3"
                ]
            ]
        },
        {
            "name": "Send2Trash",
            "specs": [
                [
                    ">=",
                    "1.8.0"
                ]
            ]
        }
    ],
    "lcname": "tuifimanager"
}
        
Elapsed time: 0.24012s