a safe-remove utility for the command line https://remove-to-waste.info/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Andy Alt d883e36193
Create c-cpp.yml
5 days ago
.github/workflows Create c-cpp.yml 5 days ago
build-aux remove unneeded m4 file 5 months ago
docs bundle update 5 days ago
man release v0.7.06 2 months ago
packaging add to release-checklist 2 months ago
po update pot and po files 2 months ago
src newline after fatal err msg 1 week ago
test tests: make sure test.h is included with distribution 2 months ago
.editorconfig add .editorconfig (closes #259) [skip ci] 2 years ago
.gitattributes add m4 2 years ago
.gitignore .gitignore:remove external/ 2 years ago
.travis.yml only show test-suite log if error... 7 days ago
ABOUT-NLS add ABOUT-NLS (more of fixing make distcheck #216) 2 years ago
AUTHORS.md Adding Hindi translation 1 year ago
CODE_OF_CONDUCT.md COC:review and update [skip ci] 2 years ago
CONTRIBUTING.md doc:adds GitHub Discussions link 4 months ago
COPYING change dev version 5 years ago
ChangeLog release v0.7.06 2 months ago
Makefile.am use different data dirs, rename and data files 2 years ago
Makefile.in add extra gcc options (#286) 10 months ago
README.md doc fixes 1 week ago
ReleaseNotes release v0.7.06 2 months ago
THANKS Add @shiftkey and http://up-for-grabs.net/ to THANKS file 5 years ago
aclocal.m4 add extra gcc options (#286) 10 months ago
config.in libs no longer an option, makefile rules removed 2 years ago
configure bump version to 0.7.07-dev 2 months ago
configure.ac bump version to 0.7.07-dev 2 months ago
rmwrc.example use different data dirs, rename and data files 2 years ago



This README applies to the current development version and some information it contains may not apply to the last release.


rmw (ReMove to Waste) is a safe-remove utility for the command line. Its goal is to conform to the FreeDesktop.org Trash specification and therefore be compatible with KDE, GNOME, XFCE, and others. Desktop integration is optional however, and by default, rmw will only use a waste folder separated from your desktop trash. One of its unique features is the ability to purge files from your Waste/Trash directories after x number of days.

Web site: https://remove-to-waste.info/

Build Status

  • Build Status
  • CodeQL
  • Build Status


rmw usage output

More Screenshots

Contact / Support

Required libraries

  • libncursesw (ncurses-devel on some systems, such as CentOS)
  • gettext (or use --disable-nls if you only need English language support)

If you are building from source, you will need the libncursesw(5 or 6)-dev package from your operating system distribution. On some systems just the ncurses packages is needed, and it's often already installed.


As a normal user:

Use ../configure --help to view available compile-time options.

mkdir build
cd build

Installing without superuser privileges

If you would like to install rmw without superuser privileges, use a prefix that you have write access to. Example:

../configure --prefix=$HOME/.local
make install

The rmw binary will be installed to $HOME/.local/bin and documentation to $HOME/.local/doc.

If configure fails

On OSX, ncursesw isn't provided by default but can be installed using brew install ncurses. Then precede ./configure with PKG_CONFIG_PATH="/usr/local/opt/ncurses/lib/pkgconfig" Example:

PKG_CONFIG_PATH="/usr/local/opt/ncurses/lib/pkgconfig" ../configure

If you can't use brew, or install libncursesw or libmenuw some other way, rmw will use ncurses but you may experience this minor bug.

Note: rmw was built on Windows 2 years ago using Cygwin but it didn't use the proper directories. We have no Windows developers working on this project and are hoping that some will join soon!. As stated in the description, the goal of this project is a "cross-platform" utility; so getting rmw to work on Windows is still on the TODO list.

Uninstall / Cleaning up

  • make uninstall (uninstalls the program if installed with 'make install`)
  • make distclean (removes files in the build directory created by configure and 'make')


== First-time use ==

After rmw is installed, running `rmw` will create a configuration file
(rmwrc) in $HOME/.config (or $XDG_CONFIG_HOME). Edit the file as

== Configuration File ==

Documentation explaining the configuration can be found in your config

Waste folders will be created automatically; e.g. if '$HOME/.local/share/Waste'
is uncommented in the config file, these 3 directories will be created:

If one of the WASTE folders is on removable media, then the user has the
option of appending ',removable'.

If a folder has ',removable' appended to it, rmw will not try to create
it; it must be initially created manually. If  the folder exists when
rmw is run, it will be used; if not, it will be skipped. Once you
create "example_waste", rmw will automatically create
example_waste/info and example_waste/files

    e.g.: WASTE=/mnt/sda10000/example_waste, removable

== Features and Options ==

Usage: rmw [OPTION]... FILE...
ReMove the FILE(s) to a WASTE directory listed in configuration file

   or: rmw -s
   or: rmw -u
   or: rmw -z FILE...
Restore FILE(s) from a WASTE directory

-h, --help
-c, --config filename     use an alternate configuration
-l, --list                list waste directories
-g[N_DAYS], --purge[=N_DAYS]
                          run purge even if it's been run today;
                          optional argument 'N_DAYS' overrides 'purge_after'
                          value from the configuration file
                          (Examples: -g90, --purge=90)
-o, --orphaned            check for orphaned files (maintenance)
-f, --force               allow purge to run
-e, --empty               completely empty (purge) all waste folders
-r, -R, --recursive       option used for compatibility with rm
                          (recursive operation is enabled by default)
-v, --verbose             increase output messages
-w, --warranty            display warranty
-V, --version             display version and license information

    ===] Restoring [===

-z, --restore <wildcard filename(s) pattern> (e.g. ~/.local/share/Waste/files/foo*)
-s, --select              select files from list to restore
-u, --undo-last           undo last ReMove
-m, --most-recent-list    list most recently rmw'ed files

== Purging ==

If purging is enabled, rmw will permanently delete files from the
folders specified in the configuration file after 'x' number of days.
By default, purging is disabled ('purge_after' is set to '0' in the
configuration file). To enable, use a value greater than '0' (Example:
If '45' is specified, rmw will permanently delete files that have been
in the waste (or trash) for more than 45 days.

The value of 'purge_after' can be temporarily overridden by using -g
[N_DAYS] or --purge[=NDAYS].

The time of the last automatic purge check is stored in `purge-time`,
located in $HOME/.local/share/rmw (or $XDG_DATA_HOME/rmw).

== -e, --empty ==

Completely empty (purge) all waste folders

== -u, --undo ==

Restores files that were last rmw'ed. No arguments for `-u` are
necessary. The list of files that were last rmw'ed is stored in `mrl`, located in
$HOME/.local/share/rmw (or $XDG_DATA_HOME/rmw).

== -z, --restore ==

To restore a file, or multiple files, specify the path to them in the
<WASTE>/files folder (wildcards ok).
e.g. 'rmw -z ~/.local/share/Waste/files/foo*'

== -f, --force ==

rmw will refuse to purge directories if they contain non-writable
subdirectories. You can use -f 2 times if you ever see a message that tells
you "permission denied; directory still contains files" (e.g. rwm -ffg).