TUIFIManager - A cross-platform terminal-based file manager

Overview

TUIFI Manager

A cross-platform terminal-based file manager (and component), meant to be used with a Uni-Curses project or as is. This project is mainly an attempt to get more attention to the Uni-Curses project.

Installation

sudo pip3 install TUIFIManager

or just pip3 install TUIFIManager if it works for you.

Usage

Run tuifi in your terminal to use it or import it in one of your Uni-Curses project as a component like:

from TUIFIManager import *

for more details look into the __main__.py

https://asciinema.org/a/gVD8T8nHCI4xaMHomwiR3m3hx

Shortcuts & Features

Shortcut Action
SHIFT + TAB Moves selected file to the previous directory
CTRL + S Goes in & out of "Select Mode" for termux
KEY_BACKSPACE Opens\Goes to the previous directory
CTRL + V Pastes the Copied or Cuted files
DEL Deletes the selected files
CTRL + C Copies the selected files
CTRL + X Cuts the selected files
ARROW KEYS Navigates files
KEY_ENTER Opens files
ESCAPE Exit
  • Supports most of the common mouse events so far
  • It is somewhat fully customizable
  • Supports Termux (Not fully yet)
  • It is quite snappy
  • Cross Platform
  • and more

Outro

Documentation and other things are coming ...

stackedit.io have been used for the editing of this MD file

Comments
  • Using EDITOR instead of tuifi_default_editor

    Using EDITOR instead of tuifi_default_editor

    Is there any benefit to using a custom variable for the editor? Using EDITOR will use the correct editor out of the box for most users, since most people heavily using the terminal will have it set. If you want to offer the ability to use an editor other than what EDITOR is set to, perhaps you could check if tuifi_default_editor is set, and otherwise fallback to EDITOR?

    opened by michaelBelsanti 3
  • ncurses not found but existing on macOS

    ncurses not found but existing on macOS

    Installed via: % pip3 install TUIFIManager --upgrade

    Run as: % tuifi

    Got:

    goetz@host ~ % tuifi
    Traceback (most recent call last):
      File "/opt/homebrew/bin/tuifi", line 5, in <module>
        from TUIFIManager.__main__ import main
      File "/opt/homebrew/lib/python3.10/site-packages/TUIFIManager/__init__.py", line 9, in <module>
        from       .TUIMenu import    *
      File "/opt/homebrew/lib/python3.10/site-packages/TUIFIManager/TUIMenu.py", line 2, in <module>
        import unicurses
      File "/opt/homebrew/lib/python3.10/site-packages/unicurses/__init__.py", line 119, in <module>
        ncurses,panel = get_libncursesw_paths()
      File "/opt/homebrew/lib/python3.10/site-packages/unicurses/__init__.py", line 79, in get_libncursesw_paths
        raise Exception('NCursesNotFound: ' + msg)
    Exception: NCursesNotFound: No version of shared-libraries of ncurses found on this system, please try `brew install ncurses` if this won't work please create an issue
    
    goetz@host ~ % brew install ncurses
    ==> Auto-updated Homebrew!
    […]
    Running `brew update --auto-update`...
    […]
    
    Warning: ncurses 6.3 is already installed and up-to-date.
    To reinstall 6.3, run:
      brew reinstall ncurses
    
    goetz@host ~ % sw_vers
    ProductName:		macOS
    ProductVersion:		13.1
    BuildVersion:		22C65
    

    … on ARM64.

    opened by ghoffart 3
  • TUIFIManager does not start in current working directory.

    TUIFIManager does not start in current working directory.

    Hello,

    I see no reason why TUIFIManager should not start in the current working directory $PWD (os.path.curdir in Python).

    Instead, it appears the default is to always start in the user's home directory ($HOME).

    Please consider changing the behavior.

    opened by paxsali 2
  • CTRL + S is default for stop processing terminal

    CTRL + S is default for stop processing terminal

    Just wanted to point out that for a terminal based utility, the default keybinding CTRL +S is highly problematic, as for most environments it means freeze / don't update / stop scrolling the terminal. (with CTRL + Q meaning continue / unfreeze / resume scrolling).

    Please consider to replace this default binding with something less irritating to most users.

    Thanks.

    opened by paxsali 2
  • Over-lapping files when exiting search mode

    Over-lapping files when exiting search mode

    Weird Issue resulting in the over-drawing of another icon, when exiting find-mode (in position 0) and then proceeding to move:

    Peek 2022-12-12 12-52

    it has been fixed, it will not be present in the next release

    bug reminder 
    opened by GiorgosXou 1
  • CTRL+C raises auto-search function

    CTRL+C raises auto-search function

    just a reminder to return when event is null 0, because i forgot about it and i was wondering why i had this issue lol

    just add this line, under the handle_events function

    if event == 0: return
    
    bug reminder shortcut 
    opened by GiorgosXou 1
  • Reminder: I forgot to remove the last line from __init__.py

    Reminder: I forgot to remove the last line from __init__.py

    If you ctrl+c and random characters appear on the side of the selected fille, it is because I forgot this line .

    I'll remove it tommorow, now I'm going to sleep.

    opened by GiorgosXou 1
  • Delete send to trash instead of a full remove

    Delete send to trash instead of a full remove

    Hello, your project got the attention from a youtuber and I thought to help a bit with an issue that he talks about.

    https://youtu.be/9laxdMKTZLA

    Still missing a confirmation prompt and implementation to handle the trash with the manager, but with this PR, will solve the issue that any file that is deleted with this app, will delete them instead of send it to the trash.

    Tested using a Fedora VM and works perfectly.

    Good work and as the youtuber said, I hope this project keeps going.

    PD: Will be nice to handle versioning using tags instead of commits, this will help to document the versions as stable as it gets, also if someone else tries to get involved into it, will help to know what's going on with more clear commit messages.

    opened by joser93 0
  • OSError

    OSError

    shell=True , make it a string and maybe remove os.system('clear') https://github.com/GiorgosXou/TUIFIManager/blob/c526026947e879ff3cf80d503371684eb18d62eb/TUIFIManager/init.py#L270 recreating the issue, open any file with DEFAULT_OPENER at least on windows

    reminder 
    opened by GiorgosXou 0
  • Oppsie | re.error

    Oppsie | re.error

    I'll just use pathlib's glob to fix it asap, my fault https://github.com/GiorgosXou/TUIFIManager/blob/c526026947e879ff3cf80d503371684eb18d62eb/TUIFIManager/init.py#L137 https://github.com/GiorgosXou/TUIFIManager/blob/c526026947e879ff3cf80d503371684eb18d62eb/TUIFIManager/init.py#L158 Reproducing the issue: create a folder named [what-ever]

    bug reminder 
    opened by GiorgosXou 0
  • Adding more file types

    Adding more file types

    I open this issue as I would present a few design a file type i made and may post more of them in the future. This issue is meant to collect every proposition instead of opening an issue for each

    opened by Sigmanificient 19
  • Extracting

    Extracting "ascii images" to files

    It would be really nice to have a separation for the ASCII files icons into their own files outside the codebase.

    This would make organization easier, adding new files type an easy manner and improve the possibility for customization. I would think of having metadata along the ascii art, such a the file extensions.

    For later on it could be a way to add better / small icons too while keeping the code clean with a simple loader helper

    opened by Sigmanificient 7
  • Deleting from SD in TERMUX

    Deleting from SD in TERMUX

    Permisions are limmited in TERMUX when it comes to the access of external storage like SD, and so send2trash fails to create a trash-folder in the root directory of the SD

    bug reminder 
    opened by GiorgosXou 0
  • Potential Issue with Open

    Potential Issue with Open

    Potential issue when opening files without extension and without DEFAULT_EDITOR https://github.com/GiorgosXou/TUIFIManager/blob/master/TUIFIManager/init.py#L253

    opened by GiorgosXou 0
  • Freeze

    Freeze

    Randomly freezes when using

    python 3.9
    tuifi from pipy 1.3.3
    unicurses from pipy 2.1.0
    ncurses6 6.3-p20220507
    alacritty 0.11.0
    

    https://user-images.githubusercontent.com/37012324/206681334-a510456e-a7cd-46a9-8af3-8df7887e416b.mp4

    opened by hissssst 3
Releases(v.2.1.9)
Owner
¿‮?poolegnartS
null
Baseline is a cross-platform library and command-line utility that creates file-oriented baselines of your systems.

Baselining, on steroids! Baseline is a cross-platform library and command-line utility that creates file-oriented baselines of your systems. The proje

Nelson 4 Dec 9, 2022
lfb (light file browser) is a terminal file browser

lfb (light file browser) is a terminal file browser. The whole program is a mess as of now. In the feature I will remove the need for external dependencies, tidy up the code, make an actual readme, add documentation, and change the name.

null 2 Apr 9, 2022
Gamestonk Terminal is an awesome stock and crypto market terminal

Gamestonk Terminal is an awesome stock and crypto market terminal. A FOSS alternative to Bloomberg Terminal.

Gamestonk Terminal 18.6k Jan 3, 2023
xonsh is a Python-powered, cross-platform, Unix-gazing shell

xonsh is a Python-powered, cross-platform, Unix-gazing shell language and command prompt.

xonsh 6.7k Dec 31, 2022
xonsh is a Python-powered, cross-platform, Unix-gazing shell language and command prompt.

xonsh xonsh is a Python-powered, cross-platform, Unix-gazing shell language and command prompt. The language is a superset of Python 3.6+ with additio

xonsh 6.7k Jan 8, 2023
liquidctl – liquid cooler control Cross-platform tool and drivers for liquid coolers and other devices

Cross-platform CLI and Python drivers for AIO liquid coolers and other devices

null 1.7k Jan 8, 2023
🖥️ A cross-platform modern shell.

Ergonomica WARNING: master on this repository is not the same as a stable release! Currently, this software is purely experimental, as I am cleaning i

null 813 Dec 27, 2022
Open a file in your locally running Visual Studio Code instance from arbitrary terminal connections.

code-connect Open a file in your locally running Visual Studio Code instance from arbitrary terminal connections. Motivation VS Code supports opening

Christian Volkmann 56 Nov 19, 2022
Alacritty terminal used with Bash, Tmux, Vim, Mutt, Lynx, etc. and the many different additions added to each configuration file

Alacritty terminal used with Bash, Tmux, Vim, Mutt, Lynx, etc. and the many different additions added to each configuration file

Carter 19 Aug 24, 2022
CLabel is a terminal-based cluster labeling tool that allows you to explore text data interactively and label clusters based on reviewing that data.

CLabel is a terminal-based cluster labeling tool that allows you to explore text data interactively and label clusters based on reviewing that

Peter Baumgartner 29 Aug 9, 2022
A CLI based task manager tool which helps you track your daily task and activity.

CLI based task manager tool This is the simple CLI tool can be helpful in increasing your productivity. More like your todolist. It uses Postgresql as

ritik 1 Jan 19, 2022
Command line tool for monitoring changes of File entities scoped in a Synapse File View

Synapse Monitoring Provides tools for monitoring and keeping track of File entity changes in Synapse with the use of File Views. Learn more about File

Sage Bionetworks 3 May 28, 2022
Bear-Shell is a shell based in the terminal or command prompt.

Bear-Shell is a shell based in the terminal or command prompt. You can navigate files, run python files, create files via the BearUtils text editor, and a lot more coming up!

MichaelBear 6 Dec 25, 2021
Bear-Shell is a shell based in the terminal or command prompt.

Bear-Shell is a shell based in the terminal or command prompt. You can navigate files, run python files, create files via the BearUtils text editor, and a lot more coming up!

MichaelBear 6 Dec 25, 2021
Terminal-based keyboard testing

kbdtest kbdtest is a simple Python program that tests keyboard input using an interactive, terminal-based, visual keyboard display. It was originally

Ruunyox 12 Jul 19, 2022
jenkins-tui is a terminal based user interface for Jenkins.

jenkins-tui ?? jenkins-tui is a terminal based user interface for Jenkins. ?? ⚠️ This app is a prototype and in very early stages of development. Ther

Craig Gumbley 22 Oct 24, 2022
term2048 is a terminal-based version of 2048.

term2048 is a terminal-based version of 2048.

Baptiste Fontaine 798 Nov 21, 2022
A simple terminal-based localhost chat application written in python

Chat House A simple terminal-based localhost chat application written in python How to Use? Clone the repo git clone https://github.com/heksadecimal/c

Heks 10 Nov 9, 2021
A terminal utility to sort image files based on their characteristics.

About A terminal utility to sort image files based on their characteristics. Motivation This program was developed after I've realized that I had too

José Ferreira 1 Dec 10, 2022