我が公開 Linux アプリでまだ PyGI 化していないものがあった。
trash だ、しょーもないアプリだと思って作ったが意外に本人は結構使う。
PyGI 化だけだと二分で終わるし何かないかな。
そうだ、ゴミ箱を空にするオプションを付けちゃえ!
実際にそんな機能を使うかどうかは別の話。
Nautilus のソースを参考にすれば多分手段は解るだろう。
ということでソレっぽい名前で grep しまくる。
#!/usr/bin/env python #-*- coding:utf-8 -*- """ Empty the trash. """ from gi.repository import Gio # Get Trash URI trash_uri = Gio.file_new_for_uri("trash:") # Get Child enum = trash_uri.enumerate_children( "{0},{1}".format( Gio.FILE_ATTRIBUTE_STANDARD_NAME, Gio.FILE_ATTRIBUTE_STANDARD_TYPE ), Gio.FileQueryInfoFlags.NOFOLLOW_SYMLINKS, None ) # Delete for info in enum: f = trash_uri.get_child(info.get_name()) f.delete(None)
こんな感じでやっていた。
当然元の C 言語はもっと複雑だったけど Python は楽だ。
普通に g_file_delete しているだけなんだな。
Nautilus から Ctrl+L でロケーションバーを表示させる。
んで trash: と打ち込んで Enter するとゴミ箱が開くんだね。
Explorer の sendto みたいなことができたのか、知らなかった。
んでファイルリスト作成と同様に enum を得る。
g_file_get_child でゴミ箱内の GFile を個別で得る。
既に GFile なのでそのまま g_file_delete できる。
パス名に変換して rm コマンドに渡すとか最初は考えていたけど不要だった。
Nautilus のゴミ箱アイコンは監視しているようでしっかり連動する。
何かメッセージを送らないといけないかと思ったけどコレも不要だった。
より手段は解った。
あとはコマンドラインオプションをどう実装するか。
15.4. optparse ? より強力なコマンドラインオプション解析器 ? Python 2.6ja2 documentation
こんな便利なモンが標準モジュールにあったのか!
使わないと損だ、ということで適用。
ただバージョン情報を -V, –version にしようと思ったけど手段が無い。
書くまでもなく Python と同じにしたかっただけですけど。
自前で –version を定義するとコンフリクトしていると怒られる。
素直にあきらめよう。
ということで trash-1.0.0 公開。
全アプリの PyGI 化完了、去年からの目標だったけど長かった。