Goful is a CUI file manager written in Go.

Goful

Go Report Card Go Reference MIT License

Goful is a CUI file manager written in Go.

  • Works on cross-platform such as gnome-terminal and cmd.exe.
  • Displays multiple windows and workspaces.
  • A command line to execute using such as bash and tmux.
  • Provides filtering search, async copy, glob, bulk rename, etc.

demo

More demos

Install

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

Usage

key function
C-n down j Move cursor down
C-p up k Move cursor up
C-a home ^ Move cursor top
C-e end $ Move cursor bottom
C-f C-i right l Move cursor right
C-b left h Move cursor left
C-d More move cursor down
C-u More move cursor up
C-v pgdn Page down
M-v pgup Page up
M-n Scroll down
M-p Scroll up
C-h backspace u Change to upper directory
~ Change to home directory
\ Change to root directory
w Change to neighbor directory
C-o Create directory window
C-w Close directory window
M-f Move next workspace
M-b Move previous workspace
M-C-o Create workspace
M-C-w Close workspace
space Toggle mark
C-space Invert mark
C-l Reload
C-m o Open
i Open by pager
s Sort
v View
b Bookmark
e Editor
x Command
X External command
f / Find
: Shell
; Shell suspend
n Make file
K Make directory
c Copy
m Move
r Rename
R Bulk rename by regexp
D Remove
d Change directory
g Glob
G Glob recursive
C-g C-[ Cancel
q Q Quit

For more see main.go

Customize

Goful customizes by edit main.go and rebuild.

For example, install your customized binary to $GOPATH/bin.

Clone source code
$ git clone https://github.com/anmitsu/goful

Copy original main.go to my/goful directory
$ cd goful
$ mkdir -p my/goful
$ cp main.go my/goful
$ cd my/goful

After edited my/goful/main.go
$ go install

Contributing

Contributing Guide

Comments
  • Provide pre built releases for the major platforms

    Provide pre built releases for the major platforms

    Describe the solution you'd like

    It would be very convenient if this project could provide pre built releases for the major platforms e.g. via GoReleaser. Installing it via go get -u or git clone and then use the custom build script is not optimal.

  • git bash cursor disappears after running goful

    git bash cursor disappears after running goful

    Describe the bug:

    To Reproduce:

    Steps to reproduce the behavior:

    1. Input key '....'
    2. Processing '....'
    3. See error

    Stack trace:

    Desktop (please complete the following information):

    • OS:
    • Terminal

    Additional context:

  • Multiple errors...

    Multiple errors...

    I'm trying to get goful but I can't.

    λ go version go version go1.15.7 windows/amd64 (Windows 10 Pro x64)

    λ go get github.com/anmitsu/goful

    runtime

    C:\programs\Go\src\runtime\hashmap.go:89:2: empty redeclared in this block previous declaration at C:\programs\Go\src\runtime\chan.go:428:22 C:\programs\Go\src\runtime\map.go:65:2: bucketCntBits redeclared in this block previous declaration at C:\programs\Go\src\runtime\hashmap.go:64:18 C:\programs\Go\src\runtime\map.go:66:2: bucketCnt redeclared in this block previous declaration at C:\programs\Go\src\runtime\hashmap.go:65:23 C:\programs\Go\src\runtime\map.go:77:2: maxKeySize redeclared in this block previous declaration at C:\programs\Go\src\runtime\hashmap.go:74:17 C:\programs\Go\src\runtime\map.go:83:2: dataOffset redeclared in this block previous declaration at C:\programs\Go\src\runtime\hashmap.go:83:4 C:\programs\Go\src\runtime\map.go:94:2: evacuatedX redeclared in this block previous declaration at C:\programs\Go\src\runtime\hashmap.go:91:19 C:\programs\Go\src\runtime\map.go:95:2: evacuatedY redeclared in this block previous declaration at C:\programs\Go\src\runtime\hashmap.go:92:19 C:\programs\Go\src\runtime\map.go:96:2: evacuatedEmpty redeclared in this block previous declaration at C:\programs\Go\src\runtime\hashmap.go:90:19 C:\programs\Go\src\runtime\map.go:97:2: minTopHash redeclared in this block previous declaration at C:\programs\Go\src\runtime\hashmap.go:93:19 C:\programs\Go\src\runtime\map.go :100 :2: iterator redeclared in this block previous declaration at C:\programs\Go\src\runtime\hashmap.go:96:17 C:\programs\Go\src\runtime\map.go :100 :2: too many errors

  • After running goful a Windows 10 window keeps popping up and disappearing

    After running goful a Windows 10 window keeps popping up and disappearing

    I LOVE goful (especially your Emacs key binding). But after I run it (Windows 10) a mysterious window keeps popping up and immediately disappearing. It's not a game changer, but I wonder if you know what might be doing it. If I restart Windows, it doesn't do it.

    Thanks! Great program.

  • adding personal bookmarks

    adding personal bookmarks

    Hi

    first of all great project I am already using it every day ^^

    It would be great to have the ability to add ones own bookmarks to the predefined list at main.go:242

  • An explorer argument problem by double quotes in Windows

    An explorer argument problem by double quotes in Windows

    https://github.com/anmitsu/goful/blob/27d6706971e2cd2261ca9d7c27961d5cdd4da9b3/cmd/goful/main.go#L74 This is not working. The macro %f is expanded to surrounded by double quotes, but explorer command also processes double quotes as the name.

  • Restore terminal title

    Restore terminal title

    First, impressive work!

    On Linux using Bash:

    This changes the terminal title: // Change a terminal title. if is_tmux { os.Stdout.WriteString("\033kgoful\033") // for tmux } else { os.Stdout.WriteString("\033]0;goful\007") // for otherwise }

    But closing Goful doesn't restore the terminal title.

Dontfile-simple - The simplest version of an online file manager

dontfile-simple The simplest version of an online file manager. Built With Golan

Jan 12, 2022
go-fastdfs 是一个简单的分布式文件系统(私有云存储),具有无中心、高性能,高可靠,免维护等优点,支持断点续传,分块上传,小文件合并,自动同步,自动修复。Go-fastdfs is a simple distributed file system (private cloud storage), with no center, high performance, high reliability, maintenance free and other advantages, support breakpoint continuation, block upload, small file merge, automatic synchronization, automatic repair.(similar fastdfs).
go-fastdfs 是一个简单的分布式文件系统(私有云存储),具有无中心、高性能,高可靠,免维护等优点,支持断点续传,分块上传,小文件合并,自动同步,自动修复。Go-fastdfs is a simple distributed file system (private cloud storage), with no center, high performance, high reliability, maintenance free and other advantages, support breakpoint continuation, block upload, small file merge, automatic synchronization, automatic repair.(similar fastdfs).

中文 English 愿景:为用户提供最简单、可靠、高效的分布式文件系统。 go-fastdfs是一个基于http协议的分布式文件系统,它基于大道至简的设计理念,一切从简设计,使得它的运维及扩展变得更加简单,它具有高性能、高可靠、无中心、免维护等优点。 大家担心的是这么简单的文件系统,靠不靠谱,可不

Jan 8, 2023
goelftools is library written in Go for parsing ELF file.

goelftools goelftools is library written in Go for parsing ELF file. This library is inspired by pyelftools and rbelftools. Motivation The motivation

Dec 5, 2022
File uploader with support for multiple hosts and progress reporting written in Go.
File uploader with support for multiple hosts and progress reporting written in Go.

go-upload File uploader with support for multiple hosts and progress reporting written in Go. Windows, Linux, macOS and Android binaries Usage Upload

Dec 18, 2022
GeeseFS is a high-performance, POSIX-ish S3 (Yandex, Amazon) file system written in Go
GeeseFS is a high-performance, POSIX-ish S3 (Yandex, Amazon) file system written in Go

GeeseFS is a high-performance, POSIX-ish S3 (Yandex, Amazon) file system written in Go Overview GeeseFS allows you to mount an S3 bucket as a file sys

Jan 1, 2023
RIFF file extractor written in Go.
RIFF file extractor written in Go.

RIFF-Extractor RIFF file extractor written in Go. This was written for Dying Light 2, but should also work for other games. I wasn't able to find any

Aug 1, 2022
Simple but powerful manager for your dotfiles
Simple but powerful manager for your dotfiles

Dotman The dotfile manager you are searching for Version v0.3 [Next] Installer scripts Bug fixes v0.2 [Now] Automatic git support added v0.1 Initial v

Dec 16, 2022
Abstract File Storage

afs - abstract file storage Please refer to CHANGELOG.md if you encounter breaking changes. Motivation Introduction Usage Matchers Content modifiers S

Dec 30, 2022
a tool for handling file uploads simple

baraka a tool for handling file uploads for http servers makes it easier to make operations with files from the http request. Contents Install Simple

Nov 30, 2022
Bigfile -- a file transfer system that supports http, rpc and ftp protocol https://bigfile.site
Bigfile -- a file transfer system that supports http, rpc and ftp protocol   https://bigfile.site

Bigfile ———— a file transfer system that supports http, rpc and ftp protocol 简体中文 ∙ English Bigfile is a file transfer system, supports http, ftp and

Dec 31, 2022
Go file operations library chasing GNU APIs.
Go file operations library chasing GNU APIs.

flop flop aims to make copying files easier in Go, and is modeled after GNU cp. Most administrators and engineers interact with GNU utilities every da

Nov 10, 2022
Read csv file from go using tags

go-csv-tag Read csv file from Go using tags The project is in maintenance mode. It is kept compatible with changes in the Go ecosystem but no new feat

Nov 16, 2022
File system event notification library on steroids.

notify Filesystem event notification library on steroids. (under active development) Documentation godoc.org/github.com/rjeczalik/notify Installation

Dec 31, 2022
Pluggable, extensible virtual file system for Go

vfs Package vfs provides a pluggable, extensible, and opinionated set of file system functionality for Go across a number of file system types such as

Jan 3, 2023
An epoll(7)-based file-descriptor multiplexer.

poller Package poller is a file-descriptor multiplexer. Download: go get github.com/npat-efault/poller Package poller is a file-descriptor multiplexer

Sep 25, 2022
QueryCSV enables you to load CSV files and manipulate them using SQL queries then after you finish you can export the new values to a CSV file
QueryCSV enables you to load CSV files and manipulate them using SQL queries then after you finish you can export the new values to a CSV file

QueryCSV enable you to load CSV files and manipulate them using SQL queries then after you finish you can export the new values to CSV file

Dec 22, 2021
Read a tar file contents using go1.16 io/fs abstraction
Read a tar file contents using go1.16 io/fs abstraction

go-tarfs Read a tar file contents using go1.16 io/fs abstraction Usage ⚠️ go-tarfs needs go>=1.16 Install: go get github.com/nlepage/go-tarfs Use: pac

Dec 1, 2022
Open Source Continuous File Synchronization
Open Source Continuous File Synchronization

Goals Syncthing is a continuous file synchronization program. It synchronizes files between two or more computers. We strive to fulfill the goals belo

Jan 9, 2023
Cross-platform file system notifications for Go.

File system notifications for Go fsnotify utilizes golang.org/x/sys rather than syscall from the standard library. Ensure you have the latest version

Jan 1, 2023