What is ripdrag?

Crates.io GitHub top language Crates.io

ripdrag is an application that lets you drag and drop files from and to the terminal.

It's designed to be feature to feature* compatible with dragon, while being written in modern Rust and GTK4.

https://user-images.githubusercontent.com/10795335/189587471-7ed26f71-3f5e-4d8d-8048-7539e429531f.mp4

*some features like --on-top can't be ported over because of limitations in gtk4

Use cases

Many applications expect files to be dragged into them. Normally you would have to put your beloved terminal aside and open a file manager to that, but now you can just type ripdrag FILENAME and be done.

Used in combination with a fuzzy finder like fzf - e.g. ripdrag $(fzf) - can make for an amazingly quick and painless terminal experience.

Installation

Install the required dependencies

Ubuntu 22.04 or later

sudo apt install cargo libgtk-4-dev build-essential

Fedora\CentOS\RHEL

sudo dnf install cargo gdk-pixbuf2-devel pango-devel graphene-devel cargo-devel cairo-gobject-devel cairo-devel python2-cairo-devel gtk4-devel

Arch Linux

sudo pacman -S rust gtk4 base-devel

Install the binary (Do not use sudo, if you don't want it to be installed on root)

cargo install ripdrag

Add cargo to path (Not added by default)

PATH=$PATH:~/.cargo/bin

Usage

``` USAGE: ripdrag [OPTIONS] [PATHS]...

ARGS: ... Paths to the files you want to drag

OPTIONS: -a, --all Drag all the items together -A, --all-compact Show only the number of items and drag them together -d, --disable-thumbnails Don't load thumbnails from images -h, --content-height Default height of the main window [default: 360] --help Print help information -i, --icons-only Only display icons, no labels -I, --from-stdin Accept paths from stdin -k, --keep With --target, keep files to drag out -p, --print-path With --target, keep files to drag out -r, --resizable Make the window resizable -s, --icon-size Size of icons and thumbnails [default: 32] -t, --target Act as a target instead of source -v, --verbose Be verbose -w, --content-width Min width of the main window [default: 360] -x, --and-exit Exit after first successful drag or drop ```

TODO

There are still lots of thing to be done! Mainly: - clean up code - pacman, deb, rpm, windows and macos build scripts - automated builds

Feel free to contribute ;)