diff --git a/system/rmw/README b/system/rmw/README index d51625f973..9327eef2e9 100644 --- a/system/rmw/README +++ b/system/rmw/README @@ -1,6 +1,7 @@ -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 -unique features is the ability to purge files from your Waste/Trash -directories after x number of days. +rmw (ReMove to Waste) is a safe-remove utility for the command line. It +can move and restore files to and from directories specified in a +configuration file, and can also be integrated with your regular +desktop trash folder (if your desktop environment uses the +FreeDesktop.org Trash specification). One of the unique features of rmw +is the ability to purge items from your waste (or trash) directories +after x number of days. diff --git a/system/rmw/README.Slackware b/system/rmw/README.Slackware index a93201f522..0243217f0b 100644 --- a/system/rmw/README.Slackware +++ b/system/rmw/README.Slackware @@ -1,186 +1,320 @@ -# rmw-0.7.05 - +# rmw-0.8.1 ## Description -rmw (ReMove to Waste) is a safe-remove utility for the command line. -Its goal is to conform to [the FreeDesktop.org Trash -specification](https://specifications.freedesktop.org/trash-spec/trashspec-latest.html) -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. +rmw (ReMove to Waste) is a safe-remove utility for the command line. It +can move and restore files to and from directories specified in a +configuration file, and can also be integrated with your regular +desktop trash folder (if your desktop environment uses the +FreeDesktop.org Trash specification). One of the unique features of rmw +is the ability to purge items from your waste (or trash) directories +after x number of days. Web site: -## Build Status +[![codeql-badge]][codeql-url] +[![c-cpp-badge]][c-cpp-url] -* [![Build Status](https://travis-ci.org/theimpossibleastronaut/rmw.svg?branch=master)](https://travis-ci.org/theimpossibleastronaut/rmw) -* [![Build Status](https://semaphoreci.com/api/v1/andy5995/rmw-3/branches/master/badge.svg)](https://semaphoreci.com/andy5995/rmw-3) +[c-cpp-badge]: https://github.com/theimpossibleastronaut/rmw/actions/workflows/c-cpp.yml/badge.svg +[c-cpp-url]: https://github.com/theimpossibleastronaut/rmw/actions/workflows/c-cpp.yml +[codeql-badge]: https://github.com/theimpossibleastronaut/rmw/workflows/CodeQL/badge.svg +[codeql-url]: https://github.com/theimpossibleastronaut/rmw/actions?query=workflow%3ACodeQL + +rmw is for people who sometimes use rm or rmdir at the command line and +would occasionally like an alternative choice. It's not intended or +designed to act as a replacement for rm, as it's more closely related +to how the [FreeDesktop.org trash +system](https://specifications.freedesktop.org/trash-spec/trashspec-latest.html) +functions. + +## Features and Usage + + +``` +OPTIONS + -h, --help + show help for command line options + + -c, --config FILE + use an alternate configuration + + -l, --list + list waste directories + + -g[N_DAYS], --purge[=N_DAYS] + purge expired files; optional argument 'N_DAYS' overrides + 'expire_age' value from the configuration file (Examples: -g90, + --purge=90) + + By default, purging is disabled ('expire_age' is set to '0' in the + configuration file). To enable, set the 'expire_age' value in your + config file to a value greater than '0' + + You can use '-vvg' to see when the remaining files in the waste + directories will expire. + + -o, --orphaned + check for orphaned files (maintenance) + + An orphan is an item in a waste directory that has no + corresponding .trashinfo file, or vice versa. This option is + intended primarily for developers. Orphans may happen while + testing code changes or if rmw is unintentionally released with a + bug. + (see also: ) + + -f, --force + allow purging of expired files + + rmw will refuse to purge directories if they contain non-writable + files or subdirectories. rmw will show a message that tells you + "permission denied; directory still contains files". To override, + you can re-run rmw using '-ffg'. + + By default, force is not required to enable the purge feature. If + you would like to require it, add 'force_required' to your config + file. + + --empty + completely empty (purge) all waste directories + + -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 FILE(s) + + To restore items, specify the path to them in the /files + directory (wildcards ok). + + When restoring an item, if a file or directory with the same name + already exists at the destination, the item being restored will + have a time/date string (formatted as "_%H%M%S-%y%m%d") appended + to it (e.g. 'foo_164353-210508'). + + -s, --select + select files from list to restore + + Displays a list of items in your waste directories. You can use + the left/right cursor keys to switch between waste directories. + Use the space bar to select the items you wish to restore, then + press enter to restore all selected items. + + -u, --undo-last + undo last move + + Restores files that were last rmw'ed + + -m, --most-recent-list + list most recently rmw'ed files + +ENVIRONMENT + These variables are intended only to be used for testing. See the code- + testing page on the rmw website for more details. + + RMW_FAKE_HOME + + RMW_FAKE_YEAR + + RMW_FAKE_MEDIA_ROOT + +FILES + On some systems, $HOME/.config and $HOME/.local/share may be replaced + with $XDG_CONFIG_HOME and $XDG_DATA_HOME + + $HOME/.config/rmwrc + configuration file + + $HOME/.local/share/rmw/purge-time + text file that stores the time of the last purge + + $HOME/.local/share/rmw/mrl + text file containing a list of items that were last rmw'ed + +NOTES + rmw will not move items from one file system to another. If you try to + rmw a file but don't have a waste directory configured that matches the + file system on which it resides, rmw will refuse to do anything with it. + + DESKTOP INTEGRATION + Items will be moved to a waste basket in the same manner as when using + the "move to trash" option from your desktop GUI. They will be separated + from your desktop trash by default; or if you wish for them to share the + same "trash" directory, uncomment the line (in your config file): + + (Note that this does not apply to MacOS; while rmw is yet unable to + integrate with the desktop trash directory, you'll still be able to use + the default Waste directory.) + + WASTE = $HOME/.local/share/Trash + + then comment out the line + + WASTE = $HOME/.local/share/Waste + + You can reverse which directories are enabled at any time if you ever + change your mind. If both directories are on the same filesystem, rmw + will use the directory listed first in your config file. + + It can be beneficial to have them both uncommented. If your desktop trash + directory (~/.local/share/Trash) is listed after the rmw default + (~/.local/share/Waste) and uncommented, rmw will place newly rmw'ed items + into the default, and it will purge expired files from both. + + When rmw'ing an item, if a file or directory with the same name already + exists in the waste (or trash) directory, it will not be overwritten; + instead, the current file being rmw'ed will have a time/date string + (formatted as "_%H%M%S-%y%m%d") appended to it (e.g. + 'foo_164353-210508'). + + REMOVABLE MEDIA + The first time rmw is run, it will create a configuration file. Waste + directories will be created automatically (Except for when the + ',removable' option is used; see below) e.g., if + '$HOME/.local/share/Waste' is uncommented in the config file, these two + directories will be created: + + $HOME/.local/share/Waste/files + $HOME/.local/share/Waste/info + + If a WASTE directory is on removable media, you may append ',removable'. + In that case, rmw will not try to create it; it must be initially created + manually. When rmw runs, it will check to see if the directory exists + (which means the removable media containing the directory is currently + mounted). If rmw can't find the directory, it is assumed the media + containing the directory isn't mounted and that directory will not be + used for the current run of rmw. + + With the media mounted, once you manually create the waste directory for + that device (e.g. "/mnt/flash/.Trash-$UID") and run rmw, it will + automatically create the two required child directories "files" and + "info". + +EXAMPLES + RESTORING + rmw -z ~/.local/share/Waste/files/foo + rmw -z ~/.local/share/Waste/files/bars* + + CONFIGURATION + WASTE=/mnt/flash/.Trash-$UID, removable + When using the removable attribute, you must also manually create + the directory + + expire_age = 45 + rmw will permanently delete files that have been in the waste (or + trash) for more than 45 days. + +AUTHORS + Project Manager: Andy Alt + The RMW team: see AUTHORS.md + +REPORTING BUGS + Report bugs to . + +COPYRIGHT + Copyright © 2012-2021 Andy Alt + + License GPLv3+: GNU GPL version 3 or later + . + This is free software: you are free to change and redistribute it. There + is NO WARRANTY, to the extent permitted by law. +``` ## Screenshots -![rmw usage output](https://remove-to-waste.info/images/Screenshot_2020-04-11.png) - -[More Screenshots](https://remove-to-waste.info/screenshots.html) +See the [Screenshots](https://remove-to-waste.info/screenshots.html) +page on the website. ## Contact / Support * [Bug Reports and Feature Requests](https://github.com/theimpossibleastronaut/rmw/blob/master/CONTRIBUTING.md#bug-reports-and-feature-requests) * [General Help, Support, Discussion](https://remove-to-waste.info/#support) -## Required libraries +## Installation + +rmw is available in the [homebrew and +linuxbrew](https://github.com/Homebrew/) repositories; or there may may +be a binary package available for your OS. You can view a list at +[Repology](https://repology.org/project/rmw/versions) to see in which +repositories rmw is included. Since v0.7.09, x86_64 AppImages are +available. + +AppImages and maintainer-created amd64 Debian packages are available in +the [releases section][releases-url]. + +[releases-url]: https://github.com/theimpossibleastronaut/rmw/releases + +## Installing from source + +### Required libraries * libncursesw (ncurses-devel on some systems, such as CentOS) -* gettext (or use --disable-nls if you only need English language support) +* gettext (or use '-Dnls=false' if you only need English language support) -If you are building from source, you will need the libncursesw(5 or +If you're 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. -## Compiling +### Compiling -### As a normal user: +#### As a normal user: -Use `../configure --help` to view available compile-time options. +(This examples places the generated files to a separate folder, but you can +run 'configure' from any directory you like.) - mkdir build - cd build - ../configure - make +``` + meson builddir + cd builddir + ninja +``` -### Installing without superuser privileges +Use `meson configure` in the build dir to view or change available +options. + +#### 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/usr - make - make install + meson -Dprefix=$HOME/.local builddir -The rmw binary will be installed to `$HOME/usr/bin` and documentation to -`$HOME/usr/doc`. +or while in the build dir -### If configure fails + meson configure -Dprefix=$HOME/.local -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: +To install: - PKG_CONFIG_PATH="/usr/local/opt/ncurses/lib/pkgconfig" ../configure + meson install -If you can't use [brew](https://brew.sh/), or install libncursesw or -libmenuw some other way, rmw will use `ncurses` but you may experience -[this minor -bug](https://github.com/theimpossibleastronaut/rmw/issues/205). +In the example above, the rmw binary will be installed to +`$HOME/.local/bin` and documentation to `$HOME/.local/doc`. -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. +### If ncurses can't be found -## Uninstall / Cleaning up +On **macOS**, you may get a message during 'configure' that the menu +library can't be found. The ncurses menu library isn't provided by +default but can be installed using `brew install ncurses`. Then run +'configure' like this: -* make uninstall (uninstalls the program if installed with 'make install`) -* make distclean (removes files in the build directory created by -`configure` and 'make') + export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/opt/ncurses/lib/pkgconfig -## Usage -``` -== First-time use == +Or you can install [rmw using +brew](https://formulae.brew.sh/formula/rmw). -After rmw is installed, running `rmw` will create a configuration file -(rmwrc) in $HOME/.config (or $XDG_CONFIG_HOME). Edit the file as -desired. +### Uninstall -== Configuration File == + ninja uninstall (uninstalls the program if installed with 'ninja install`) -Documentation explaining the configuration can be found in your config -file. +Note that if using Meson version < 0.60.0, uninstall does not remove +any language files that were installed. To remove them: -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: -$HOME/.local/share/Waste -$HOME/.local/share/Waste/files -$HOME/.local/share/Waste/info - -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, --purge run purge even if it's been run today --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 (e.g. ~/.local/share/Waste/files/foo*) --s, --select select files from list to restore --u, --undo-last undo last ReMove - -== Purging == - -If purging is 'on', rmw will permanently delete files from the folders -specified in the configuration file after 'x' number of days. Purging can be -disabled by using 'purge_after = 0' in configuration file. rmw will only check -once per day if it's time to purge (use -g to check more often). - -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 -/files folder (wildcards ok). -e.g. 'rmw -z ~/.local/share/Waste/files/foo*' - -== -f, --force == - -A change from previous versions, purge is allowed to run without the '-f' -option. If you'd rather require the use of '-f', you can add the line -'force_required' in your configuration file. - -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 -gff). - -``` + sh uninstall_langs.sh diff --git a/system/rmw/rmw.SlackBuild b/system/rmw/rmw.SlackBuild index fe6cf613f2..1fcbab1ea8 100644 --- a/system/rmw/rmw.SlackBuild +++ b/system/rmw/rmw.SlackBuild @@ -2,7 +2,7 @@ # # Slackware build script for rmw # -# Copyright 2019-2021 / Andy Alt / United States +# Copyright 2019-2022 / Andy Alt / United States # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -25,7 +25,7 @@ cd $(dirname $0) ; CWD=$(pwd) PRGNAM=rmw -VERSION=${VERSION:-0.7.06} +VERSION=${VERSION:-0.8.1} BUILD=${BUILD:-1} TAG=${TAG:-_SBo} PKGTYPE=${PKGTYPE:-tgz} @@ -79,17 +79,20 @@ find -L . \ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; -CFLAGS="$SLKCFLAGS" \ -CXXFLAGS="$SLKCFLAGS" \ -./configure \ - --prefix=/usr \ - --mandir=/usr/man \ - --localedir=/usr/share/locale \ - --docdir=/usr/doc/$PRGNAM-$VERSION \ - --build=$ARCH-slackware-linux - -make -make install-strip DESTDIR=$PKG +mkdir build +cd build + CFLAGS="$SLKCFLAGS" \ + CXXFLAGS="$SLKCFLAGS" \ + meson .. \ + --buildtype=release \ + -Dstrip=true \ + --mandir=/usr/man \ + --prefix=/usr \ + --localedir=/usr/share/locale \ + -Ddocdir=/usr/doc/$PRGNAM-$VERSION + ninja + DESTDIR=$PKG ninja install +cd .. # # rmw no longer searches for a system-wide config file diff --git a/system/rmw/rmw.info b/system/rmw/rmw.info index 778de6ab12..d90f70a52f 100644 --- a/system/rmw/rmw.info +++ b/system/rmw/rmw.info @@ -1,8 +1,8 @@ PRGNAM="rmw" -VERSION="0.7.06" +VERSION="0.8.1" HOMEPAGE="https://remove-to-waste.info/" -DOWNLOAD="https://github.com/theimpossibleastronaut/rmw/releases/download/v0.7.06/rmw-0.7.06.tar.gz" -MD5SUM="9b5e0fcda2e32b1886efd50030e51a5e" +DOWNLOAD="https://github.com/theimpossibleastronaut/rmw/releases/download/v0.8.1/rmw-0.8.1.tar.gz" +MD5SUM="f27b7de24fec27832d2fba2091ab02f8" DOWNLOAD_x86_64="" MD5SUM_x86_64="" REQUIRES="" diff --git a/system/rmw/slack-desc b/system/rmw/slack-desc index ad3af3da9d..855e1f8b37 100644 --- a/system/rmw/slack-desc +++ b/system/rmw/slack-desc @@ -9,11 +9,11 @@ rmw: rmw (command line trash can/recycle bin) rmw: rmw: rmw (ReMove to Waste) is a safe-remove utility for the command line. -rmw: Its goal is to conform to the FreeDesktop.org Trash specification and -rmw: therefore be compatible with KDE, GNOME, XFCE, and others. Desktop -rmw: integration is optional however, and by default, rmw will only use a -rmw: waste folder separated from your desktop trash. One of its unique -rmw: features is the ability to purge files from your Waste/Trash +rmw: It can move and restore files to and from directories specified in a +rmw: configuration file, and can also be integrated with your regular +rmw: desktop trash folder (if your desktop environment uses the +rmw: FreeDesktop.org Trash specification). One of the unique features of +rmw: rmw is the ability to purge items from your waste (or trash) rmw: directories after x number of days. rmw: rmw: Homepage: https://remove-to-waste.info/