megafile

package module
v1.2.10 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 31, 2025 License: BSD-3-Clause Imports: 10 Imported by: 1

README

MegaFile

A simple and colorful TUI shell for Linux, written in Go.

This project can be used as the github.com/xyproto/megafile package, or as a standalone exectuable.

screenshot

(screenshot of the previous version, before the project rename)

Building
make
Installation
make install
Commands
  • any filename - edit file with $EDITOR
  • cd, .. or any directory name - change directory
  • ./script.sh - execute a script named script.sh
  • ls or dir list directory (happens automatically, though)
  • q, quit or exit - exit program
Hotkeys

Navigation and Selection

  • ↑/↓/←/→ - navigate and select files
  • Page Up/Down - jump to first/last entry in current column
  • Home or ctrl-a - jump to first file (or start of line when typing)
  • End or ctrl-e - jump to last file (or end of line when typing)

Execution

  • Return - execute selected file, or run typed command
  • Esc - clear selection (first press), exit program (second press)

Text Editing

  • Backspace - delete character, or go up directory (when at start)
  • ctrl-h - delete character, or toggle hidden files (when at start)
  • ctrl-d - delete character under cursor, or exit program
  • ctrl-k - delete text to the end of the line
  • ctrl-c - clear text, or exit program

File Operations

  • Tab - cycle through files, or tab completion
  • ctrl-f - search for text in files

Directory Navigation

  • ctrl-space - enter the most recent subdirectory
  • ctrl-n - cycle to next directory
  • ctrl-p - cycle to previous directory
  • ctrl-b - go to parent directory

Display

  • ctrl-o - toggle show hidden files
  • ctrl-l - clear screen

External Tools

  • ctrl-t - run tig
  • ctrl-g - run lazygit

Exit

  • ctrl-q - exit program immediately
General info

Documentation

Overview

Package megafile provides functionality for a simple TUI for browsing files and directories

Index

Constants

This section is empty.

Variables

View Source
var ErrExit = errors.New("exit")

ErrExit is the error that is returned if the user appeared to want to exit

Functions

func Cleanup

func Cleanup(c *vt.Canvas)

Cleanup tries to set everything right in the terminal emulator before returning

Types

type FileEntry added in v1.2.0

type FileEntry struct {
	// contains filtered or unexported fields
}

FileEntry represents a file entry with position and name information

type State

type State struct {
	ShowHidden          bool
	Directories         []string
	StartMessage        string // title/header
	AngleColor          vt.AttributeColor
	PromptColor         vt.AttributeColor
	TitleColor          vt.AttributeColor
	HighlightBackground vt.AttributeColor
	Background          vt.AttributeColor
	EdgeBackground      vt.AttributeColor
	WrittenTextColor    vt.AttributeColor
	// contains filtered or unexported fields
}

State holds the current state of the shell, then canvas and the directory structures

func New added in v1.2.7

func New(c *vt.Canvas, tty *vt.TTY, startdirs []string, startMessage, editor string) *State

New creates a new MegaFile State c and tty is a canvas and TTY, initiated with the vt package startdirs is a slice of directories to browse (toggle with tab) startMessage is the string to display at the top of the screen the function returns the absolute path to the directory the user ended up in, and an error if something went wrong

func (*State) Run added in v1.2.7

func (s *State) Run() (string, error)

Run launches a file browser

Directories

Path Synopsis
cmd
megafile command
package main is the main package for the MegaFile program
package main is the main package for the MegaFile program

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL