From d63a37f7ad89435f35f7febcdc99ee36219069e9 Mon Sep 17 00:00:00 2001 From: snailed Date: Fri, 21 Oct 2022 18:24:59 +0000 Subject: [PATCH] Create trash-put A trashing script that is near xdg trash spec compliant. The only thing missing is updating a file listing directory sizes --- .local/share/trash-put | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 .local/share/trash-put diff --git a/.local/share/trash-put b/.local/share/trash-put new file mode 100644 index 00000000..11e48c64 --- /dev/null +++ b/.local/share/trash-put @@ -0,0 +1,28 @@ +#!/bin/sh +set -e +[ -e "$1" ] || exit 1 +getfsroot() { + printf "%s" "$(df "$1" --output=target | tail -1)" +} + +filepath="$(realpath "$1")" +filename="$(basename "$1")" +fsroot="$(getfsroot "$1")" +[ "$fsroot" = "$(getfsroot "${XDG_DATA_HOME:-$HOME/.local/share}")" ] \ + && basedir="${XDG_DATA_HOME:-$HOME/.local/share}/Trash" \ + || basedir="${fsroot}/.Trash" +infodir="$basedir/info" +filedir="$basedir/files" + +mkdir -p "$infodir" 1>/dev/null 2>&1 +mkdir -p "$filedir" 1>/dev/null 2>&1 +find "$filedir" -regex ".*$filename.*" | grep -oP '\d' | sort -n | tail -1 | ( +ext=$(($(cat /dev/stdin)+1)) +filedest="$filedir/$filename.~${ext:-1}~"; +command mv -f "$filepath" "$filedest"; +cat < "$infodir/$(basename "$filedest")" +[Trash Info] +Path=$filepath +DeletionDate=$(date +%Y%m%dT%T) +EOF +)