diff --git a/README.md b/README.md
index e442851f..8b20ef3c 100644
--- a/README.md
+++ b/README.md
@@ -101,7 +101,7 @@ It runs on Linux, macOS, Raspberry Pi, BSD, Cygwin, Linux subsystem for Windows
- Create, rename files and directories
- Select files across dirs; all/range 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)
- Create sym/hard link(s) to selection
- 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 |
| file | determine file type |
| 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 |
| 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 |
@@ -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_RESTRICT_NAV_OPEN=1` | open files on ↵, not → or l |
| `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 |
#### Help
diff --git a/src/nnn.c b/src/nnn.c
index c66a69e2..fdf43392 100644
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -1141,20 +1141,32 @@ static void mvstr(char *buf)
static void rmmulstr(char *buf)
{
- snprintf(buf, CMD_LEN_MAX,
+ if (cfg.trash) {
+ snprintf(buf, CMD_LEN_MAX,
#ifdef __linux__
- "xargs -0 -a %s rm -%cr",
+ "xargs -0 -a %s trash-put", g_cppath);
#else
- "cat %s | xargs -0 -o rm -%cr",
+ "cat %s | xargs -0 trash-put", g_cppath);
#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)
{
- char rm_opts[] = {'-', confirm_force(), 'r'};
+ if (cfg.trash)
+ spawn("trash-put", path, NULL, NULL, F_NORMAL | F_SIGINT);
+ else {
+ 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)