file manager on terminal written in Go

ff

ff is file manager written in Go.

Features

  • preview file/directory
  • copy/paste file
  • make a new file/directory
  • rename a file/directory
  • edit file with $EDITOR
  • open file/directory
  • bookmark directory

Go version

  • 1.13~

Support OS

  • Linux/Unix
  • Mac

Installtion

$ git clone https://github.com/skanehira/ff
$ cd ff
$ go install

NOTE: Installation with go get is not recommended because libraries's version is not locked.

Usage

Settings

If your terminal LC_CTYPE is not en_US.UTF-8, please set as following.

export LC_CTYPE=en_US.UTF-8

Options

$ ff -h
Usage of ff:
  -ignorecase
        ignore case when searching
  -log
        enable log
  -preview
        enable preview panel
  -show-hidden
        show hidden files
  -tree
        use tree mode

If you use -log that will print log. If log file not exists, then will be create in $XDG_CONFIG_HOME/ff/ff.log.

-preview is enable preview panel that you can preview file or directories.

Config

You can using config.yaml to config log, preview, etc...

# print log to file
log:
  enable: true
  file: $XDG_CONFIG_HOME/ff/ff.log

# preview the contents of file or directory
preview:
  enable: true
  # preview colorscheme. you can use colorscheme following
  # https://xyproto.github.io/splash/docs/all.html
  colorscheme: monokai

# if ignore_case is true, ignore case when searching
ignore_case: true

# if show_hidden is true, ff will display hidden files
show_hiddne: false

# if enable is true, can use bookmark
bookmark:
  enable: true
  file: $XDG_CONFIG_HOME/ff/bookmark.db

# if you use `o` to open file or directory, default ff will using `open` in MacOS, `xdg-open` in Linux.
# you can set this option to change open command.
open_mcd: open

The config.yaml should be placed in the following path.

OS path
MacOS $HOME/Library/Application Support/ff/config.yaml
Linux/Unix $XDG_CONFIG_HOME/ff/config.yaml

About bookmark

ff can use b to bookmark directory. bookmark will be stored sqlite3 database. If you want enable bookmark, you have to specify database file.

Database file will auto create when ff starting. If ff can't create database file, then will use inmemory mode.

The inmemory mode will save bookmark to memory, so if ff quit bookmarks will lost.

About Edit file

If you runing ff in Vim's terminal and $EDITOR is vim, ff will use running Vim to edit file.

Keybinding

path

key operation
Enter change directory
F1 open help panel

files

key operation
tab focus to files
j move to next
k move to previous
g move to top
G move to bottom
ctrl-b move previous page
ctrl-f move netxt page
h cd to parent path
l cd to specified path
y copy selected file or directory
x move file or directory
p paste file or directory
d delete selected file or directory
m make a new directory
n make a new file
r rename a directory or file
e edit file with $EDITOR
o open file or directory
f or / search files or directories
ctrl-j scroll preview panel down
ctrl-k scroll preview panel up
. edit config.yaml
b bookmark dirctory
B open bookmarks panel
F1 or ? open help panel

files(tree mode)

key operation
tab focus to files
j move to next
k move to previous
g move to top
G move to bottom
h cd to parent path
l cd to specified path
H move to parent path
L move to specified path
y copy selected file or directory
x move file or directory
p paste file or directory
d delete selected file or directory
m make a new directory
n make a new file
r rename a directory or file
e edit file with $EDITOR
o open file or directory
f or / search files or directories
ctrl-j scroll preview panel down
ctrl-k scroll preview panel up
. edit config.yaml
b bookmark dirctory
B open bookmarks panel
F1 or ? open help panel

bookmark

key operation
a add bookmark
d delete bookmark
q close bookmarks panel
ctrl-g go to bookmark
f// search bookmarks
F1 or ? open help panel

Author

skanehira

Owner
skanehira
Like Vim, Go. Many CLI/TUI Tools, Vim plugin author.
skanehira
Similar Resources

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.

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

Oct 1, 2021

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.

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

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

Jan 2, 2022

Terminal UI library with rich, interactive widgets — written in Golang

Terminal UI library with rich, interactive widgets — written in Golang

Rich Interactive Widgets for Terminal UIs This Go package provides commonly needed components for terminal based user interfaces. Among these componen

Jan 7, 2023

basic terminal based chat application written in go

basic terminal based chat application written in go

this app uses websocket protocol to communicate in real time. both the client and the server are written in golang. it uses: gorilla/websocket package

Nov 4, 2021

Terminal Quiz Application Written in Go

Terminal Quiz Application Written in Go

Term Quiz A Quiz application made for your terminal Installation go get github.com/crazcalm/term-quiz Question Types Include A B C D True and False F

Sep 27, 2022

Light weight Terminal User Interface (TUI) to pick material colors written by Go.

Light weight Terminal User Interface (TUI) to pick material colors written by Go.

mcpick Light weight Terminal User Interface (TUI) to pick material colors. You do NOT need to take your hands off the keyboard to pick colors. Getting

Dec 27, 2022
Comments
  • Add feature of bookmark

    Add feature of bookmark

    • files keybinding b: bookmark selecting entry B: open bookmark list

    • bookmark list keybinding /: search bookmark Enter: open directory d: delete bookmark a: add bookmark

  •  Paste before selecting a copy file and down

    Paste before selecting a copy file and down

    OS: WSL ubuntu 18.04 go version: go1.13.4 linux/amd64

    If you enter the p key before selecting a copy file, ff goes down with an exception. If you put it after yunk, it will work without problems.

    error messages.

    panic: runtime error: invalid memory address or nil pointer dereference [recovered]
            panic: runtime error: invalid memory address or nil pointer dereference
    [signal SIGSEGV: segmentation violation code=0x1 addr=0x8 pc=0x7660bd]
    
    goroutine 1 [running]:
    github.com/rivo/tview.(*Application).Run.func1(0xc000265000)
            /home/user/go/pkg/mod/github.com/rivo/[email protected]/application.go:149 +0x82
    panic(0x7a5160, 0xb7efc0)
            /usr/local/go/src/runtime/panic.go:679 +0x1b2
    github.com/skanehira/ff/gui.(*Gui).EntryManagerKeybinding.func2(0xc0003d0540, 0xc000290001)
            /home/user/ff/gui/keybindings.go:159 +0x4ad
    github.com/rivo/tview.(*Box).WrapInputHandler.func1(0xc0003d0540, 0xc000290090)
            /home/user/go/pkg/mod/github.com/rivo/[email protected]/box.go:149 +0x75
    github.com/rivo/tview.(*Application).Run(0xc000265000, 0x0, 0x0)
            /home/user/go/pkg/mod/github.com/rivo/[email protected]/application.go:234 +0x415
    github.com/skanehira/ff/gui.(*Gui).Run(0xc0001e0700, 0xc0001e0700, 0x7aad00)
            /home/user/ff/gui/gui.go:207 +0x7da
    main.run(0xc000098120)
            /home/user/ff/main.go:33 +0xb7
    main.main()
            /home/user/ff/main.go:66 +0x79
    
  • disable to use 'l' when opening help view

    disable to use 'l' when opening help view

    When the terminal width is not enough, the help description is cut off lengthwise and 'l' key shows unnecessarily behavior like below.

    before

    I fixed that by minor change.

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

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

Nov 9, 2022
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

Oct 7, 2021
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

Dec 14, 2022
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 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

Dec 16, 2022
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

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

Apr 20, 2022
Command Line Alias Manager and Plugin System - Written in Golang
Command Line Alias Manager and Plugin System - Written in Golang

aly - Command Line Alias Manager and Packager Aly offers the simplest way to manage, share, and obtain command line aliases! Warning: This project is

Jun 16, 2022
A CLI password manager written in Go

vlt A CLI password vault written in Go vlt is a command line tool for storing passwords in encrypted files. Files are stored on a per-user basis in $H

Oct 23, 2021
Simple command-line snippet manager, written in Go.
Simple command-line snippet manager, written in Go.

pet : CLI Snippet Manager Simple command-line snippet manager, written in Go You can use variables (<param> or <param=default_value> ) in snippets. Ab

Dec 29, 2022
Termux theme manager written in go

Termux theme manager written in go

Dec 10, 2022