USBIPを操作するWindows GUIアプリを作った

ryochack
·

USBIP を Windows で簡単に操作するために、UsbipdGui というシンプルな GUI アプリケーションを作った。

先日のポスト「USBデバイスを他のPCに共有する」では、Windows 上で USBIP を使うために、dorssel/usbipd-win というとても便利な CUI ツールを利用している。

UsbipdGui は usbipd-win のミニマムな Windows GUI ラッパーだ。メインウインドウは持たず、システムトレイ上でのみ動作し、操作は全てコンテキストメニュー経由で行う。

このアプリでできることは、主にUSBデバイスの表示と、各USBデバイスの共有開始と停止くらいだが、UsbipdGui 独自の機能として「USBデバイスの非表示機能」と「自動起動設定」を追加している。

そんな小さな Windows GUI アプリケーションだが、いくつかこだわったところがあるのでここに書いておく。

アプリケーションアイコンのデザイン

最初は Inkscape を使って次のような解像度の高いアイコンを作っていた。

しかし、これを Windows のシステムトレイに表示すると 16x16 サイズに縮小されてしまい、次のようにボケボケになってしまった。

そこで、アイコンの作成をはじめから 16x16 のドット絵で行うことにした。

16x16 の解像度では細かい表現が不可能なため、最低限表現したいこととして、「USBデバイスであることがわかること」と「IPの表現を入れること」の2つに絞って、シンプルな形状まで情報をそぎ落とした。

※ドット絵の作成には「ミニドット絵メーカー3」を使わせていただいた。必要十分な機能でとても使いやすかった。

これにより、システムトレイ上でもクッキリと表示できるアイコンが作成できた。

状態アイコンのデザイン

USBIP では主に次の3つの状態が存在する。

  • ① USBデバイスを共有していない状態 (Not Shared)

  • ② USBデバイスを共有している状態 (Shared)

  • ③ 他のPCから接続されている状態 (Attached)

このうち「②共有状態」と「③接続状態」については、コンテキストメニュー上でコンパクトにわかりやすく表現したかったため次のようなアイコンを作成した。

これも頭を悩ませて作成したもので、ここに至るまでに次のようなよくあるWi-Fiアイコンのようなものを作ったりしていた。

共有状態とは?接続状態とは?と迷いながら作成を進め、最終的には前述のような未接続の USB デバイスと、接続されてチェックマークがついた USB デバイスという表現に落ち着いた。

Widnows テーマの変更に対応

Windows であるなら、ライトテーマとダークテーマで変更されることもあるだろうということで、テーマの変更を検知して UsbipdGui のアイコンをテーマに対応したものに自動的に変更されるようにした。(稀に検知できないことがあるが、まだ原因がわかっていない)