site top fluxbox tips contact blog

Okumatsu_Hiroshi Website

last update 2010/6/20

trash-cliを使ってroxにゴミ箱機能を実現

右クリックメニューからゴミ箱へ送るスクリプト





fluxboxには、標準のファイルマネジャーというものがありません。従って、何を使ってもいいわけですが、ファイルマネジャー にも長短様々あって、これが決定版と言うのもなかなか決められません。結局は使う人の好みによるのでしょう。

私の好きな rox-filer にはゴミ箱の機能がありません。pcmanfm にもなし。ゴミ箱の機能がある nautilusthunar を使えば良さそうなものですが、重かったり、使い勝手が気に入らなかったり。人間は贅沢な生き物です。

そこで、trash-cli というコマンドラインアプリを使って、rox-filerの右クリックメニューに「ゴミ箱へ送る」と言うのを 追加してみようと思います。この trash-cli は、python のスクリプトで、nautilus や thunar と共通のゴミ箱を使いますので、とても便利です。 コマンドラインから、削除、リスト表示、復元、ゴミ箱を空にする、などのコマンドを実行できます。

以下で紹介するスクリプトは、削除(ゴミ箱へ送る)の機能だけを使っています。

trash-cliをインストールする

trash-cli というパッケージが Ubuntu のリポジトリからインストールできます。

$ sudo aptitude install trash-cli

シェルスクリプトをつくる

ファイルやフォルダをゴミ箱に送るとき、確認ダイアログを表示したいと思います。

以下のようなスクリプトを作ってください。

#!/bin/bash

# = Trash.sh
# version:: 10.426
# date   :: 2010/4/26
# author :: okumatsu hiroshi
#
# マウスで選択したファイル(ディレクトリ)をゴミ箱へ送るスクリプト
#

IFS_BK=$IFS
IFS=,
files="$@"
message=""
script_name=`basename ${0}`

if zenity --question --title="Send to Trash" --text="このファイル(ディレクトリ)をゴミ箱に送ってもいいですか?"; then
  message=`trash ${files}`
fi

if [ "${message}" != "" ]; then
  message="${script_name}: Error message!\n${message}"
  zenity --error --title="Error - Trash.sh" --text="$(echo ${message})"
fi

IFS=$IFS_BK

確認ダイアログでOKをクリックしたときだけ、ファイル(フォルダ)をゴミ箱に送ります。複数のファイルでも、ファイル名に 空白を含んでいても動きます。何らかのエラーがあった場合には、エラーダイアログを表示します。

このスクリプトは、マウスで選択したファイル(フォルダ)をゴミ箱に送るためのものなので、roxの右クリックメニューに 追加しないと意味がありません。

roxのメニューに追加する

~/.config/rox.sourceforge.net/SendTo を開き、この中にスクリプト本体またはシンボリックリンク を置きます。ターミナルで操作するなら以下のように、

$ cd ~/.config/rox.sourceforge.net/SendTo
$ ln -s ~/bin/Trash.sh ./.

シンボリックリンクを作り、わかりやすくリネームするといいでしょう。

$ mv ./Trash.sh ./ゴミ箱へ送る

rox-filer の右クリックメニューで、「次のクリック」=>「アプリに送る」を選ぶと、「ゴミ箱へ送る」がメニューに 現れるはずです。

trash-cliの他のコマンド

上記のスクリプトは、「ゴミ箱へ送る」しかコマンドを使えませんが、trash-cli をインストールすると、

    • list-trash : ゴミ箱内のファイルをリストで表示する
    • restore-trash : ゴミ箱内のファイルを復元する
    • empty-trash : ゴミ箱を空にする

他にこれらのコマンドが利用できます。