# What is ripdrag?
![Crates.io](https://img.shields.io/crates/d/ripdrag?style=for-the-badge)
![GitHub top language](https://img.shields.io/github/languages/top/nik012003/ripdrag?color=dea584&style=for-the-badge)
![Crates.io](https://img.shields.io/crates/v/ripdrag?style=for-the-badge)
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](https://github.com/mwh/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](https://github.com/junegunn/fzf) - e.g. ```ripdrag $(fzf)``` - can make for an amazingly quick and painless terminal experience.
# Installation
Click to see the installation guide
### Install the required dependencies
#### Ubuntu 22.04 or later
```
sudo apt install libgtk-4-dev build-essential curl
curl --proto '=https' --tlsv1.3 https://sh.rustup.rs -sSf | sh
```
#### Fedora\CentOS\RHEL
```
sudo dnf install cargo gdk-pixbuf2-devel pango-devel graphene-devel cairo-gobject-devel cairo-devel python2-cairo-devel gtk4-devel
```
#### Arch Linux
ripdrag is on the AUR: [ripdrag-git](https://aur.archlinux.org/packages/ripdrag-git)
If you want to install it manually, you need to install the requirements:
```
sudo pacman -Sy --needed rust gtk4 base-devel
```
#### MacOS
You need to have [homebrew](https://brew.sh) installed.
```
brew install rustup gtk4
rustup-init
```
#### NetBSD
A pre-compiled binary is available from the official repositories. To install it simply run,
```
pkgin install ripdrag
```
### 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] [PATH]...
Arguments:
[PATH]... Paths to the files you want to drag
Options:
-v, --verbose Be verbose
-t, --target Act as a target instead of source
-k, --keep With --target, keep files to drag out
-r, --resizable Make the window resizable
-x, --and-exit Exit after first successful drag or drop
-i, --icons-only Only display icons, no labels
-d, --disable-thumbnails Don't load thumbnails from images
-s, --icon-size Size of icons and thumbnails [default: 32]
-W, --content-width Min width of the main window [default: 360]
-H, --content-height Default height of the main window [default: 360]
-I, --from-stdin Accept paths from stdin
-a, --all Show a drag all button
-A, --all-compact Show only the number of items and drag them together
-n, --no-click Don't open files on click
-b, --basename Always show basename of each file
-h, --help Print help
-V, --version Print version
```
# 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 ;)