Featured

KDE Plasma環境に完全に調和する。PythonとQt6で開発したLinux向けISO書き込みツール「IsoKast」を公開しました

開発の背景とLinuxにおけるストレージ操作のジレンマ

Linuxデスクトップ環境を日常的に利用している皆様、とりわけKDE Plasma環境を愛用している皆様にとって、システムツールの選択は常に悩ましい問題ではないでしょうか。USBメモリを初期化して新しいファイルシステムを構築したり、新しいOSを試すためにインストール用ISOメディアを作成したりする作業は、Linuxユーザーであれば誰もが定期的に行うタスクです。

これまで、多くのユーザーはターミナルを開いて dd コマンドや mkfs コマンドを直接入力してきました。確かにコマンドラインは強力ですが、デバイス名を一つ間違えるだけでシステム全体を破壊してしまう危険性を常に孕んでおり、実行時に毎回神経をすり減らす作業でもあります。

一方で、安全のために既存のGUIツールを使おうとすると、今度は別の不満が生まれます。機能が多すぎて操作が複雑であったり、Web技術をベースにしたElectron製で動作が重かったりします。何より、普段美しくカスタマイズしているKDEデスクトップのテーマから、そのツールだけが不自然に浮いてしまうという視覚的な違和感は、多くのLinux愛好家が感じてきたことでしょう。

IsoKastとは何か:直感的な操作とKDE環境への完全な調和

IsoKast


このような長年の課題を解決し、日常的なストレージ操作をより安全で、直感的で、そして美しい体験に変えるために開発したのが、新しいネイティブアプリケーション 「IsoKast」 です。

IsoKastは、USBドライブの多機能フォーマッターとISOイメージの書き込みツールを一つに統合したソフトウェアです。開発言語にはPython(バージョン3.11以上)を採用し、ユーザーインターフェースの構築にはPyQt6を用いています。バージョン1.0.4として、MITライセンスのもとGitHubで公開しました。

本ツールの最大のコンセプトであり、最もこだわった部分は、KDE環境への完全な調和です。IsoKastは独自の奇抜なデザインを持たず、システムのカラーパレットやBreezeテーマ、標準のアイコンセットを自動的に引き継ぎます。これにより、まるで最初からKDEに組み込まれていた公式システムツールであるかのような、自然で洗練された操作感を提供します。

ユーザー体験を損なわないスマートな挙動と主要機能


ユーザー体験を損なわないための工夫は、見た目だけにとどまりません。例えば、USBメモリをパソコンに接続したり取り外したりした際の挙動です。IsoKastは、pyudev というライブラリを利用してバックグラウンドでデバイスの状態を常に監視しています。そのため、USBを挿し込んだ瞬間にアプリケーションの画面がフリーズすることなく、対象ドライブのドロップダウンリストがリアルタイムで更新されます。手動で更新ボタンを探して押す手間はもう必要ありません。

実用性の面でも、プロフェッショナルな要求に応える機能を備えています。

  • 用途に合わせて選べる9種類のファイルシステム WindowsやMacとのデータ受け渡しに必須となるFAT32、exFAT、NTFSはもちろんのこと、Linuxネイティブの安定した標準フォーマットであるext4、さらにはスナップショット機能などで注目されるBtrfsやXFS、フラッシュメモリに最適化されたF2FSなど、合計9種類の幅広いファイルシステムを簡単なメニューから選択してフォーマットできます。

  • 容量不足を未然に防ぐ安全なISO書き込み設計 OSのイメージファイルを書き込む際にも安全面を深く考慮しました。選択したISOファイルのサイズと、対象となるUSBドライブの物理的な容量をプログラムが事前に比較します。これにより、数十分かけて書き込みを行った後に容量不足で失敗するという悲劇や、誤ったドライブを選択してしまうリスクを大幅に軽減しています。

  • 技術的工夫:特権昇格パスワードの要求を1回に抑えるアーキテクチャ
    LinuxでのGUIシステムツール開発において、root権限の扱いは非常に難しい問題です。通常、マウント解除、パーティションテーブルの作成、フォーマット処理といったコマンドを順番に実行すると、その都度パスワードを求められてしまい、ユーザーの作業を著しく阻害します。

IsoKastでは、これら一連のコマンドをバックグラウンドで単一のBashスクリプトとして動的に生成し、一括で実行する独自のアーキテクチャを採用しました。これにより、pkexec によるパスワード入力画面の表示を最初の1回のみに抑え、非常にスムーズな作業フローを実現しました。さらに、重い処理中も非同期のワーカースレッドを使用しているため、進捗を示すプログレスバーが滑らかに動き続けます。

導入方法とNixOS環境へのネイティブなサポート


IsoKastの導入は非常に簡単です。Python環境と、バックグラウンドで処理を行うための一般的なシステムツール(parted や各種 mkfs コマンド群)がインストールされていれば、UbuntuやArch Linux、Fedoraなどの主要なLinuxディストリビューションですぐに実行可能です。

Bash

git clone https://github.com/forestnote/IsoKast.git
cd IsoKast
python IsoKast.py

 

また、システム環境を汚さずに隔離された状態でテストを行いたい開発者のために、依存パッケージやQt6のWayland環境変数を完璧に設定した shell.nix ファイルも同梱しています。これにより、再現性の高いクリーンな環境で即座にアプリケーションを試すことができます。

おわりに


コマンドラインの強力さと、ネイティブGUIの親しみやすさを両立させたIsoKastが、皆様のLinuxデスクトップでの作業をよりスマートで快適なものにすることを願っています。ぜひ一度お手元の環境で動作を試し、その使い心地を体感してみてください。

もし気に入っていただけましたら、GitHubのスターを押していただけると、今後の機能追加や改善に向けた大きな開発のモチベーションになります。皆様からのフィードバックをお待ちしております。

IsoKastのGitHubリポジトリはこちら https://github.com/forestnote/IsoKast