Home

Awesome

Goful

Go Report Card Go Reference MIT License

Goful is a CUI file manager written in Go.

demo

Install

Pre-build binaries

See releases.

Go version >= 1.16

$ go install github.com/anmitsu/goful@latest
...
$ goful

Go version < 1.16

$ go get github.com/anmitsu/goful
...
$ goful

Usage

keyfunction
C-n down jMove cursor down
C-p up kMove cursor up
C-a home ^Move cursor top
C-e end $Move cursor bottom
C-f C-i right lMove cursor right
C-b left hMove cursor left
C-dMore move cursor down
C-uMore move cursor up
C-v pgdnPage down
M-v pgupPage up
M-nScroll down
M-pScroll up
C-h backspace uChange to upper directory
~Change to home directory
\Change to root directory
wChange to neighbor directory
C-oCreate directory window
C-wClose directory window
M-fMove next workspace
M-bMove previous workspace
M-C-oCreate workspace
M-C-wClose workspace
spaceToggle mark
M-=Invert mark
C-lReload
C-m oOpen
iOpen by pager
sSort
vView
bBookmark
eEditor
xCommand
XExternal command
f /Find
;Shell
:Shell suspend
nMake file
KMake directory
cCopy
mMove
rRename
RBulk rename by regexp
DRemove
dChange directory
gGlob
GGlob recursive
C-g C-[Cancel
q QQuit

For more see main.go

Demos

Copy and Move

Copy (default c) and move (default m) mark (default space and invert C-space) files.

demo_copy

First input a copy source file name (or path). The default source is a file name on the cursor. If files are marked, this step is skipped.

Second input a copy destination path and start copy processing. The default destination is a neighboring directory path.

During processing draws copying file count, size and name, progress percent, gauge, bps and estimated time of arrival.

If the source file type is a directory, recursively copy. Also copy modification time and permissions.

Rise a override confirm dialog [y/n/Y/N] if the name same as source file exists in the destination. This dialog means:

Copy process works asynchronously. And processed in the order if you run multiple copies.

Note that copy process can not interrupt. If you want to interrupt, please quit the application (default q Q).

Bulk Rename

Bulk renaming (default R) for mark (default space and invert C-space) files.

Rename by the regexp pattern. Input like the vim substituting style (regexp/replaced). Display and confirm matched files and replaced names before rename.

demo_bulk

Finder (Filtering search)

The finder (default f /) filters files in the directory.

Input characters recognizes as the regexp. Case insensitive when inputs lowercase only, on the other hand case sensitive when contains uppercase.

Delete characters by C-h and backspace (default). Can select input histories by M-p and M-n (default).

Other than character inputs (exclude a space) and the finder keymap pass to the main input.

Hit reset key (default C-g C-[ means Esc) to clear filtering.

demo_finder

Glob

Glob is matched by wild card pattern in the current directory (default g and recursive G).

Hit reset key (default C-g C-[ means Esc) to clear glob patterns.

demo_glob

Layout

Directory windows position are allocated by layouts of tile, tile-top, tile-bottom, one-row, one-column and fullscreen.

View menu (default v), run layout menu and select layout:

demo_layout

Execute Terminal and Shell

Shell mode (default : and suspended ;) runs a terminal and execute shell such as bash and tmux. The cmdline completion (file names and commands in $PATH) is available (default C-i that means tab).

For example, spawns commands by bash in a gnome-terminal new tab:

demo_shell

The terminal immediately doesn't close when command finished because check outputs.

If goful is running in tmux, it creates a new window and executes the command.

Expand Macro

macroexpanded string
%f %FFile name/path on cursor
%x %XFile name/path with extension excluded on cursor
%m %MMarked file names/paths joined by spaces
%d %DDirectory name/path on cursor
%d2 %D2Neighbor directory name/path
%~f ...Expand by non quote
%&Flag to run command in background

The macro is useful if do not want to specify a file name when run the shell.

Macros starts with % are expanded surrounded by quote, and those starts with %~ are expanded by non quote. The %~ mainly uses to for cmd.exe.

Use %& when background execute the shell such as GUI apps launching.

demo_macro

<!-- demo size 120x35 -->

Customize

Goful don't have a config file, instead you can customize by edit main.go.

Examples of customizing:

Recommend remain original main.go and copy to own main.go for example:

Go to source directory

$ cd $GOPATH/src/github.com/anmitsu/goful

Copy original main.go to my/goful directory

$ mkdir -p my/goful
$ cp main.go my/goful
$ cd my/goful

Install after edit my/goful/main.go

$ go install

Contributing

Contributing Guide