Support trash-cli to trash

This commit is contained in:
Arun Prakash Jana 2019-03-09 09:05:32 +05:30
parent 090e55c74a
commit 5dd5710b31
No known key found for this signature in database
GPG key ID: A75979F35C080412
2 changed files with 21 additions and 9 deletions

View file

@ -101,7 +101,7 @@ It runs on Linux, macOS, Raspberry Pi, BSD, Cygwin, Linux subsystem for Windows
- Create, rename files and directories - Create, rename files and directories
- Select files across dirs; all/range selection - Select files across dirs; all/range selection
- Copy, move, delete, archive selection - Copy, move, delete, archive selection
- Freedeskp compliant trash (needs trash-cli) - FreeDesktop compliant trash (needs trash-cli)
- Show copy, move progress on Linux (needs avdcpmv) - Show copy, move progress on Linux (needs avdcpmv)
- Create sym/hard link(s) to selection - Create sym/hard link(s) to selection
- Transfer files using lftp - Transfer files using lftp
@ -136,7 +136,7 @@ It runs on Linux, macOS, Raspberry Pi, BSD, Cygwin, Linux subsystem for Windows
| xdg-open (Linux), open(1) (macOS), cygstart (Cygwin) | desktop opener | | xdg-open (Linux), open(1) (macOS), cygstart (Cygwin) | desktop opener |
| file | determine file type | | file | determine file type |
| coreutils (cp, mv, rm), findutils (xargs) | copy, move and remove files | | coreutils (cp, mv, rm), findutils (xargs) | copy, move and remove files |
| trash-cli | trash files instead of delete | | trash-cli | trash files (instead of delete) |
| mediainfo or exiftool | multimedia file details | | mediainfo or exiftool | multimedia file details |
| atool, patool ([integration](https://github.com/jarun/nnn/wiki/How-to#integrate-patool)) | create, list and extract archives | | atool, patool ([integration](https://github.com/jarun/nnn/wiki/How-to#integrate-patool)) | create, list and extract archives |
| vidir (from moreutils) | batch rename dir entries | | vidir (from moreutils) | batch rename dir entries |
@ -378,7 +378,7 @@ The following indicators are used in the detail view:
| `NNN_NO_AUTOSELECT=1` | do not auto-select matching dir in _nav-as-you-type` mode | | `NNN_NO_AUTOSELECT=1` | do not auto-select matching dir in _nav-as-you-type` mode |
| `NNN_RESTRICT_NAV_OPEN=1` | open files on <kbd></kbd>, not <kbd></kbd> or <kbd>l</kbd> | | `NNN_RESTRICT_NAV_OPEN=1` | open files on <kbd></kbd>, not <kbd></kbd> or <kbd>l</kbd> |
| `NNN_RESTRICT_0B=1` | do not open 0-byte files | | `NNN_RESTRICT_0B=1` | do not open 0-byte files |
| `NNN_TRASH=1` | trash (instead of _delete_) files to desktop Trash | | `NNN_TRASH=1` | trash files to the desktop Trash [default: delete] |
| `NNN_CP_MV_PROG=1` | show copy, move progress on Linux | | `NNN_CP_MV_PROG=1` | show copy, move progress on Linux |
#### Help #### Help

View file

@ -1141,21 +1141,33 @@ static void mvstr(char *buf)
static void rmmulstr(char *buf) static void rmmulstr(char *buf)
{ {
if (cfg.trash) {
snprintf(buf, CMD_LEN_MAX, snprintf(buf, CMD_LEN_MAX,
#ifdef __linux__ #ifdef __linux__
"xargs -0 -a %s rm -%cr", "xargs -0 -a %s trash-put", g_cppath);
#else #else
"cat %s | xargs -0 -o rm -%cr", "cat %s | xargs -0 trash-put", g_cppath);
#endif #endif
g_cppath, confirm_force()); } else {
snprintf(buf, CMD_LEN_MAX,
#ifdef __linux__
"xargs -0 -a %s rm -%cr", g_cppath, confirm_force());
#else
"cat %s | xargs -0 -o rm -%cr", g_cppath, confirm_force());
#endif
}
} }
static void xrm(char *path) static void xrm(char *path)
{ {
if (cfg.trash)
spawn("trash-put", path, NULL, NULL, F_NORMAL | F_SIGINT);
else {
char rm_opts[] = {'-', confirm_force(), 'r'}; char rm_opts[] = {'-', confirm_force(), 'r'};
spawn("rm", rm_opts, path, NULL, F_NORMAL | F_SIGINT); spawn("rm", rm_opts, path, NULL, F_NORMAL | F_SIGINT);
} }
}
static void archive_selection(const char *archive, const char *curpath) static void archive_selection(const char *archive, const char *curpath)
{ {