dwgx@blog:~$dwgx
> cd ../posts

Dustman: PyQt で書いた Windows ローカルクリーンアップツール

// created

Dustman は Windows のローカルクリーンアップツールで、PyQt で書いた GUI パネルだ。普段ならコマンドを打ったり設定を掘り返したりする作業、つまりゴミ掃除、ネットワーク修復、パフォーマンス調整といった手間を一つの画面にまとめ、選んでクリックするだけで使える。全部ローカルで完結し、余計な抱き合わせもなく、クラウドへデータを送りもしない。

クリーンアップは普段いちばんゴミが溜まりやすい場所をカバーする: 各種 TEMP/TMP、Windows Temp、LocalAppData の一時ディレクトリ、Recent、INetCache、Chrome のキャッシュ、Prefetch、DirectX の shader キャッシュ。ワンクリックの深掃除もできるし、単一項目だけ消すこともできる。削除や変更のような不可逆な操作はすべて先にスキャンして一覧で見せ、うなずいてから実際に消す。黙って掃除したりはしない。この習慣はファイルを消し間違えた痛い目と引き換えに身についたものだ。

ネットワーク修復は自分がいちばん使っている部分だ。proxy や DNS が不調になっても、根っこはその数本のコマンドに尽きる。ipconfig /release/renewnetsh int ip reset all、DNS のフラッシュ、Winsock のリセット、PAC のリセット、これを全部ボタンに包んだ。ついでに DNS 管理も作った。Google、Cloudflare、114、Alibaba、Tencent のいくつかのプリセットをそのまま主系・副系で切り替えられ、さらに速度テストを添えて、遅延とパケットロスがひと目でわかる。どこが速いかが見える。

パフォーマンス周りはむしろ気休めのマッサージに近い: プロセスを片付けてメモリを解放し、それから powercfg で卓越パフォーマンスに切り替える。パネルには CPU とメモリのリアルタイムメーターも載せていて、裏では psutil がバックグラウンドスレッドを立ててデータを採っている。

UI は PyQt5 に PyQt-Fluent-Widgets を組み合わせた。Fluent の見た目は欲しいが、コントロールを自分で描きたくはなかったからだ。重い処理は基本的に Windows 付属の ipconfignetshpingpowercfgreg を叩くことで、Python は段取りとガワを担うだけ。アプリ全体は main.py 一つ、設定はローカルの config.json に置いている。単一ファイルと聞くと雑に思えるが、一人でメンテするならむしろ手に馴染むし、足したいものはそのまま突っ込める。依存をインストールすれば python main.py で起動する。ネットワーク修復、深掃除、電源プランの切り替えには管理者権限が要るので、ターミナルは管理者で開くのを忘れずに。