A terminal based file manager

Overview

Keep those files organized

About The Project

A terminal based file manager

Built With


Installation

go install github.com/knipferrc/fm@latest

Usage

  • Start fm by running fm from your terminal

  • Navigate your files with the following keys

    Note: The currently selected file or folder will be highlighted in pink

    • h Go back to the previous directory

    • j Move down in the file tree

    • k Move up in the file tree

    • l Opens the currently selected directory

    • m Move a file or folder. Once pressed you will be prompted in the status bar to type the destination for the currently highlighted file or folder. For example, test.txt is currently highlighted, press m, type /some/new/destination and press enter

    • d Delete a file or folder. Once you have the file or folder highlighted that you wish to delete, press d, a prompt will show in the status bar, type y to delete it or n to cancel

    • r Rename a file or folder. Once you have the file or folder highlighted that you wish to rename, press r, a prompt will show in the status bar, type the new name of the file or folder and then press enter to confirm those changes

    • esc Cancel any current action. Pressing esc during any action (rename, move, or delete) will cancel that action and return you to file navigation



Local Development

Follow the instructions below to get setup for local development

  1. Clone the repo
git clone https://github.com/knipferrc/fm
  1. Run
make run
  1. Build a binary
make build

Credit

Comments
  • [Feature Request] Add Ability to Write File Path Instead of Open File

    [Feature Request] Add Ability to Write File Path Instead of Open File

    Lf for example has this feature that instead of opening files, it writes the path of the selected file onto a specified file.

    For example, when using this Lf, if lf -selection-path /tmp/tempfile is used, then instead of doing something like...

    $ $EDITOR /path/to/file
    

    when opening a file, it writes the file's path to the file specified after -selection-path...

    $ echo "/path/to/file" > /tmp/tempfile
    $ cat /tmp/tempfile
    /path/to/file
    

    This is an excerpt from the lf --help...

    -selection-path string path to the file to write selected files on open (to use as open file dialog)

    I request this feature as I really like your file manager and would like to use it with my neovim plugin called fm-nvim.

    opened by is0n 15
  • Previewing zip, rar, mp3, webm breaks UI

    Previewing zip, rar, mp3, webm breaks UI

    Trying to preview either of the listed formats breaks the UI. It would be nice if fm could at least display some meta info if it's not able to give an actual preview, like the IDv3 info for mp3s or simply just file sizes and the full name of the file (as it can be too long for the list) for others.

    opened by mrusme 12
  • Config file ignored on Windows

    Config file ignored on Windows

    ~/.config
    ❯ cat fm.yml
    settings:
      borderless: true
      enable_logging: false
      enable_mousewheel: true
      pretty_markdown: true
      show_icons: false
    

    Config is not loaded. Borders are still enabled, icons are enabled, etc.

    opened by zQueal 7
  • fm hangs when navigating to folder with vast amount of files

    fm hangs when navigating to folder with vast amount of files

    When I open my downloads folder (which contains half the internet of files of all sorts of types) fm simply hangs and won't let me do anything. Even Ctrl+C hangs.

    The folder cointains approx 857 files, many of which are images, pdfs and zips.

    opened by mrusme 5
  • ctrl+d `y` should not require CR

    ctrl+d `y` should not require CR

    When ctrl+d a file, the input prompt that asks for confirmation should not require an additional CR, but instead accept the confirmation (or rejection) with a simple key press of y or n.

    opened by mrusme 3
  • List beahviour odd

    List beahviour odd

    Talking about my folder of 800+ files, when I move down that list at some point the selected row is "below" the screen bottom, effectively making it invisible. Scrolling up two or three times brings it back into the visible area.

    Another odd behavior was when I scrolled backwards (from the first position of the list on the top pressing key up). I could only scroll to roughly half of the visible list before the selection would reset to the last element again. It would basically loop from there on.

    Maybe all these oddities have something to do with the UI breaking in between from trying to preview different file types.

    opened by mrusme 3
  • Support M1 Mac

    Support M1 Mac

    Hi,

    This project looks awesome. I do however get the error message:

    knipferrc/fm crit platform darwin/arm64 is not supported. Make sure this script is up-to-date and file request at https://github.com/knipferrc/fm/issues/new

    I have no idea how easy/hard this is but it would be really nice.

    opened by tjoskar 2
  • Update golangci-lint-action to fix builds on lint

    Update golangci-lint-action to fix builds on lint

    Golangci-lint-action fix from https://github.com/golangci/golangci-lint/pull/3025 Add setup-go to lint step https://github.com/golangci/golangci-lint/discussions/1920#discussioncomment-2873371

    opened by hartraft 1
  • Update config section in README.md

    Update config section in README.md

    I recently started using fm on Linux, macOS, and Windows. The documentation in the Configuration section was not accurate for macOS and Windows but matches the documentation for os.UserConfigDir which is used by fm:

    On Darwin, it returns $HOME/Library/Application Support. On Windows, it returns %AppData%.

    opened by citizen428 1
  • Accidentally pressing l while on a large *.img file makes CPU go brrrr

    Accidentally pressing l while on a large *.img file makes CPU go brrrr

    When highlighting a large .img file and accidentally pressing right/l the CPU goes wild but nothing really happens inside fm. One can still continue browsing.

    opened by mrusme 1
  • Added information about installation via AUR

    Added information about installation via AUR

    Hey there, I created a Arch User Repository package fm-bin to install the Release file with a package manager in Arch and thought a note in the readme might help others.

    Since there is a second AUR package to build directly from git (fm-git), I added this as well. Feel free to modify as you want.

    Best regards Sam

    opened by sam9032 1
  • feature request:  build a midnight commander tui file manager

    feature request: build a midnight commander tui file manager

    make this file manager like a tui version of

    total commander double commander midnight commander https://github.com/MidnightCommander/mc

    this tool is awesome but not as pretty as golang bubble tea framework

    opened by fastfading 2
  • Previewing gif

    Previewing gif

    Previewing a gif breaks the UI. Would it be possible to use something like chafa for previewing it? Chafa can play it and it should be possible to pipe its output into fm, I believe.

    opened by mrusme 3
  • File preview in light terminal not readable with default theme

    File preview in light terminal not readable with default theme

    If I use the default terminal on linux Gnome with a light theme, the text on the right side isn't readable:

    image

    Seems like the colors in the preview are made for dark mode, but the filebrowser on the left site got black on grey text if I switch the terminal to dark mode:

    image

    opened by sam9032 12
Releases(v0.15.10)
Owner
Tyler Knipfer
Software Engineer
Tyler Knipfer
A terminal-based download manager written in Go!

goload-manager About A terminal-based download manager written in Go! This project uses grab for downloading and tcell for the terminal interface. Hea

Manolis Skouris 4 Oct 7, 2021
Stonks is a terminal based stock visualizer and tracker that displays realtime stocks in graph format in a terminal.

Stonks is a terminal based stock visualizer and tracker. Installation Requirements: golang >= 1.13 Manual Clone the repo Run make && make install Pack

Eric Moynihan 518 Dec 16, 2022
painless task queue manager for shell commands with an intuitive cli interface (execute shell commands in distributed cloud-native queue manager).

EXEQ DOCS STILL IN PROGRESS. Execute shell commands in queues via cli or http interface. Features Simple intuitive tiny cli app. Modular queue backend

Mohammed Al Ashaal 13 Dec 14, 2022
A multiple reverse shell sessions/clients manager via terminal written in go

A multiple reverse shell sessions/clients manager via terminal written in go

Krisna Pranav 11 Nov 9, 2022
This is a Go Cli app that receives an string path to a log file, and based on it generates and prints in console an encoded polyline with the locations found in the log file.

GEOENCODE GO CLI APP DESCRIPTION This is a Go Cli app that receives an string path to a log file, and based on it generates and prints in console an e

Jose Luis Ojeda 1 Oct 1, 2021
Clones dependencies from .resolved file of Swift Package Manager.

SPM-dep-cloner Clones dependencies from .resolved file of Swift Package Manager. Useful for setup of new project with dependencies in another repos. H

Artyom Andreev 0 Nov 29, 2021
A simple command line functionality to convert your Kaspersky Password Manager exported file to CSV format

A simple command line functionality to convert your Kaspersky Password Manager exported file to CSV format

Vlad Plaiasu 7 Apr 20, 2022
This command line converts .webarchive file to resources embed .html file

webarchive-to-singlefile This command line converts Safari's .webarchive file to complete .html. Notice Only tested on MacOS. Google Chrome required.

会有猫的 7 Dec 30, 2022
CLI filters the contents of the csv file according to the filters from the another file.

filtercsv CLI filters the contents of the csv file according to the filters from the another file. Made to process big files by a lots of filters. By

null 0 Dec 2, 2021
Go-file-downloader-ftctl - A file downloader cli built using golang. Makes use of cobra for building the cli and go concurrent feature to download files.

ftctl This is a file downloader cli written in Golang which uses the concurrent feature of go to download files. The cli is built using cobra. How to

Dipto Chakrabarty 2 Jan 2, 2022
A terminal based typing test.

What A terminal based typing test. Installation Linux sudo curl -L https://github.com/lemnos/tt/releases/download/v0.4.0/tt-linux -o /usr/local/bin/tt

null 424 Dec 28, 2022
Raspberry Pi terminal based activity monitor

pitop Raspberry Pi terminal based activity monitor Yes I know there are plenty of solutions already available, but I wanted to build my own terminal b

Pierre 222 Dec 11, 2022
A modern and intuitive terminal-based text editor

micro is a terminal-based text editor that aims to be easy to use and intuitive, while also taking advantage of the capabilities of modern terminals

Zachary Yedidia 20.9k Jan 7, 2023
A collection of terminal-based widgets for richer Golang CLI apps.

Flinch A collection of terminal-based widgets for richer Golang CLI apps. Ships with a library to build your own widgets/TUIs too. Warning: This modul

Liam Galvin 41 Jan 7, 2023
A terminal based graphical activity monitor inspired by gtop and vtop

NO LONGER MAINTAINED. A maintained fork of gotop exists at https://github.com/xxxserxxx/gotop. Another terminal based graphical activity monitor, insp

Caleb Bassi 7.3k Jan 1, 2023
Terminal based dashboard.

Termdash is a cross-platform customizable terminal based dashboard. The feature set is inspired by the gizak/termui project, which in turn was inspire

Jakub Sobon 2.2k Jan 1, 2023
Terminal based presentation tool

Terminal based presentation tool

Maas Lalani 6.4k Jan 2, 2023
TScli - a very simple terminal-based client for TSWeb online judge

TScli TScli - a very simple terminal-based client for TSWeb online judge. It supports submitting problems and receiving feedback on them. Installation

Sergey Kharitontsev-Beglov 4 Oct 24, 2021