Skip to content

Latest commit

 

History

History
178 lines (134 loc) · 5.23 KB

README.md

File metadata and controls

178 lines (134 loc) · 5.23 KB

🗑️ A Safer Alternative to the UNIX rm Command!

gomi (meaning "trash" in Japanese) is a simple CLI tool written in Go that adds trash can functionality to the command line.

In a typical CLI, there’s no "trash" folder like in graphical file managers. This means if you accidentally delete important files using the rm command, restoring them can be very difficult. That's where gomi comes in. Unlike rm, which permanently deletes files, gomi moves them to the trash, allowing you to easily restore files whenever necessary. If you’re used to rm in the shell, gomi works as a more convenient, safer alternative.

demo

Go Release

Features

  • Functions like the rm command but moves files to the trash instead of permanently deleting them.
  • Simple and intuitive restoration process with a user-friendly interface.
  • Compatible with most of the flags available for the rm command.
  • Allows easy searching of deleted files using fuzzy search.
  • Customizable via a YAML configuration file:
    • Filter what files to show (using regexp patterns, file globs, file size, etc.).
    • Customize file content colorization.
    • Define the command to list directory contents.
    • Customize visual styles (e.g., color of selected files).

Usage

gomi is compatible with rm flags (like -i, -f, and -r), so you can easily replace rm by setting up an alias:

alias rm=gomi

I developed gomi as a safer replacement for rm, so setting up the alias is recommended. However, feel free to adjust to your preferences. The instructions below assume the alias is set.

Move files to the trash:

rm files

Restore a file to its original location. The --restore flag is a bit long, so you can use the shorthand -b:

rm -b

Installation

From Binaries

Download a precompiled binary directly from GitHub Releases and place it in your $PATH.

Using a CLI Package Manager

With afx:

github:
- name: babarot/gomi
  description: Trash can in CLI
  owner: babarot
  repo: gomi
  release:
    name: gomi
    tag: v1.2.3
  command:
    link:
    - from: gomi
    alias:
      rm: gomi
afx install

AUR (Arch User Repository)

You can install gomi using an AUR helper:

yay -S gomi
paru -S gomi

Find it here on AUR.

Configuration

You can customize gomi's behavior and appearance with a YAML configuration file. The first time you run gomi, a default config will be automatically generated at ~/.config/gomi/config.yaml.

Here is an example of the default config:

core:
  restore:
    confirm: false  # If true, prompts for confirmation before restoring (yes/no)
    verbose: true   # If true, displays detailed restoration information

ui:
  density: spacious # or compact
  preview:
    syntax_highlight: true
    colorscheme: nord  # Available themes: https://xyproto.github.io/splash/docs/index.html
    directory_command: ls -F -A --color=always
  style:
    list_view:
      cursor: "#AD58B4"   # purple
      selected: "#5FB458" # green
      indent_on_select: false
    detail_view:
      border: "#FFFFFF"
      info_pane:
        deleted_from:
          fg: "#EEEEEE"
          bg: "#1C1C1C"
        deleted_at:
          fg: "#EEEEEE"
          bg: "#1C1C1C"
      preview_pane:
        border: "#3C3C3C"
        size:
          fg: "#EEEEDD"
          bg: "#3C3C3C"
        scroll:
          fg: "#EEEEDD"
          bg: "#3C3C3C"
  exit_message: bye!   # Customizable exit message
  paginator_type: dots # or arabic

history:
  include:
    within_days: 100 # Only show files deleted in the last 100 days
  exclude:
    files:
    - .DS_Store      # Exclude .DS_Store files
    patterns:
    - "^go\\..*"     # Exclude files starting with "go."
    globs:
    - "*.jpg"        # Exclude JPEG files
    size:
      min: 0KB       # Exclude empty files
      max: 10GB      # Exclude files larger than 10GB

Tips

To get extra debug output (not shown in the official help), use the --debug flag:

gomi --debug

This command will stream log output, similar to tail -f. While running gomi --debug, you can open another terminal or console and execute gomi commands to view live updates in the log as they happen. This is useful for debugging and monitoring gomi's actions in real time.

If you prefer JSON formatted output, use:

gomi --debug=json

Related

License

MIT