Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/adokitkat/dnd
Bi-directional drag and drop source/target
https://github.com/adokitkat/dnd
drag-and-drop drag-drop nim terminal
Last synced: about 2 months ago
JSON representation
Bi-directional drag and drop source/target
- Host: GitHub
- URL: https://github.com/adokitkat/dnd
- Owner: adokitkat
- Created: 2022-01-24T16:42:31.000Z (about 3 years ago)
- Default Branch: master
- Last Pushed: 2022-09-24T19:56:59.000Z (over 2 years ago)
- Last Synced: 2024-10-29T10:13:07.788Z (3 months ago)
- Topics: drag-and-drop, drag-drop, nim, terminal
- Language: Nim
- Homepage:
- Size: 36.1 KB
- Stars: 11
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# dnd
![dnd logo](resources/dnd.png "dnd logo")
Bi-directional drag and drop source / target
Key features:
- Run `dnd` without arguments and blank window with target area appears
- Run `dnd` with arguments, e.g. `dnd file1.txt file2.html`, `dnd *` or pipe into it like `find . -name "*.txt" | dnd file2.html` and window with both drag and drop source files & target area appears
- Configure default options (flags) in `dnd.cfg` file located in the same directory as the executable or `~/.config/dnd/dnd.cfg.` (after installation) so you dont have to type them every time
- Save different setting presets in `dnd.cfg` and switch between them by running the program like `dnd --preset=Alt`
- Run `dnd --help` to see all options or look at [usage](#Usage) below
- You can quit by hitting `Esc` or `Q` key also## Requirements
- GTK+ 3
### Build Requirements
- GTK+ 3 dev packages
- [Nim compiler 1.6.2+](https://nim-lang.org/)
- [gintro](https://github.com/StefanSalewski/gintro/) (automatically downloaded via nimble)## Getting Started
You can install it via 2 methods:
- Manual (Makefile) - Nim not required (when not building)
- Nim's package manager `nimble`### Manual (Makefile)
Download [the latest release](https://github.com/adokitkat/dnd/releases) and unpack it to a folder (`tar -zxf FILENAME`)
To install:
```sh
make install
```To uninstall:
```sh
make uninstall
```- `dnd` executable is installed to `~/.local/bin/dnd`
- `dnd.cfg` is installed to `~/.config/dnd/dnd.cfg`
- Desktop entry is installed to `~/.local/share/applications/dnd.desktop`
- Icon `dnd.xpm` is installed to `~/.local/share/icons/dnd.xpm`### Nimble
```sh
nimble install dnd
```- `dnd` symlink is installed to `~/.nimble/bin/dnd` and executable to `~/.nimble/pkgs/dnd-VERSION/dnd`
- `dnd.cfg` is installed to `~/.nimble/pkgs/dnd-VERSION/dnd.cfg`
- Desktop entry is installed to `~/.local/share/applications/dnd.desktop` - `nimble uninstall dnd` cannot remove it automatically?
- Icon `dnd.xpm` is installed to `~/.nimble/pkgs/dnd-VERSION/resources/dnd.xpm`## Usage
```man
dnd - bi-directional drag and drip source / target
Usage: dnd [options] [file...]
-a, --all=true Drag all files at once
-k, --keep=true Keep dropped files in for a drag out
-t, --top=true Keep the program window always on top
-c, --center-mouse=true Center the program on the mouse
-C, --center-screen=true Center the program in the middle of the screen
-f=NAME, --cfg=NAME Load a different config file
-p=NAME, --preset=NAME Load different preset from config file
-d, --decorated=true Let the program window be decorated by the window manager
-o=FLOAT, --opacity=FLOAT Change the program window opacity
-v, --version Show version info
-h, --help Show this messagePresets in current loaded dnd.cfg file:
[Default]
w = 200 # Width
h = 200 # Height
keep = false
always_on_top = true
center_mouse = false
center_screen = true
decorated = true
opacity = 1.0
```## Examples
- `dnd` - shows a blank `dnd` window with drag-and-drop area, drag media into it and an URL/URI address is printed to `stdout`
- `dnd *` - shows a drag area for every file in the folder and drop area at the bottom
- `dnd .` - shows a drag area for the current folder and drop area at the bottom
- `dnd file1 file2` - shows a drag area for `file1`, `file2` and drop area at the bottom
- `find . -name "*.txt" | dnd file2.html` - shows a drag area for `file.html`, every file output by the pipe (every `txt` file in current folder and subfolders) and drop area at the bottom
- `dnd | while read url; do wget "$url"; done` - drag media from browser (a picture) into `dnd` drop area, it captures the URL address and uses `wget` to download the media to current folder (also in `examples/dnd_wget.sh`)## Thanks
Thanks to [mwh](https://github.com/mwh) and his [dragon](https://github.com/mwh/dragon) for inspiration and [Dr. Stefan Salewski](https://github.com/StefanSalewski) for help with GTK and [gintro](https://github.com/StefanSalewski/gintro/).
## License
GNU GPL version 3