Ubuntu – How to move the Trash into /tmp or automatically empty trash on reboot

tmptrash

I rarely use Trash. (I use Shift+Delete) But recently, I found I often remove some important files by mistake. So I want to use Trash now.

But as we all know, my limited disk space will be filled with files in Trash if I don't clear the Trash by myself.

So I have an idea. I want to move my Trash into /tmp , so that I won't have to clear it myself.

I wrote some code into ~/.bash_profile like this:

mkdir /tmp/my-trash

I made a symbol link pointing to /tmp/my-trash. I removed the directory ~/.local/share/Trash/files, and moved my symbol link into ~/.local/share/Trash, and renamed it into files.

But it doesn't work! I put some files into /tmp/my-trash, clicked the Trash icon in the lower right corner. But there is nothing. I chose a file and pressed Delete , but it said that it cannot move the file into Trash and asked me to permanent remove the file.

Best Answer

Why don't you use another approach:

Crontab combined with command line client for trash

  • Install trash-cli Install trash-cli / sudo apt-get install trash-cli, which will allow you to control your trash folder from shell.
  • Open your crontab with crontab -e in shell (will open your default shell editor chosen by select-editor)
  • Add an entry like

    # In your crontab
    @reboot    empty-trash > /dev/null
    

Now on every reboot your trash will be emptied. You can specify other times to empty trash. Just look at a crontab tutorial to learn how.


Of course you can use your link approach from above just as well. The problem with your approach was that you copied the link. Most likely that broke the link. Also your newly created folder /tmp/my-trash/ didn't have the proper directory structure of a trash folder specified by the free desktop standard. That can be remedied in the following way: (FIRST empty the trash manually)

mv -r ~/.local/share/Trash/ ~/.trashcopy
cp -r ~/.trashcopy /tmp/.trashcopy
ln -s /tmp/.trashcopy ~/.local/share/Trash

To make that change persistent, you have to include the following line in your user's crontab with crontab -e or just the part without @reboot in your ~/.bashrc.

@reboot  rm -r ~/,local/share/Trash; cp -r ~/.trashcopy /tmp/.trashcopy; ln -s /tmp/.trashcopy ~/.local/share/Trash
Related Question