我が公開 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 化完了、去年からの目標だったけど長かった。