Convoker — アプリ単位のウィンドウ制御ツール
概要
Convokerは、macOS向けの「アプリ単位ウィンドウ操作」ツールです。ユーザーはアプリ名を入力してEnterを押すだけで、そのアプリに属するすべてのウィンドウを一括で集めたり、特定ウィンドウにフォーカスしたり、ウィンドウを分割配置したりできます。ウィンドウを個別に選んで移動・最前面化する手間を省き、マルチウィンドウでの作業効率を高めることが目的です。軽量でシンプルな操作感を重視しており、配布用のリリースが用意されている点から実用を想定したユーティリティであることがうかがえます(約300字)。
リポジトリの統計情報
- スター数: 2
- フォーク数: 0
- ウォッチャー数: 2
- コミット数: 4
- ファイル数: 6
- メインの言語: Swift
主な特徴
- アプリ名で検索してEnter:そのアプリに属する全ウィンドウを対象に操作を実行
- Gather / Focus / Splitなど複数の一括操作をサポート
- macOS向けにSwiftで実装された軽量ユーティリティ
- リリース配布が用意されており即利用可能
技術的なポイント
ConvokerはmacOSのウィンドウ管理をアプリ単位で行うため、OSレベルのウィンドウ列挙と操作APIを利用する必要があります。一般的にこの種のツールでは以下の要素が重要になります。
- ウィンドウ検出:実行中のアプリケーションとそのウィンドウを列挙するには、Accessibility API(AXUIElement)やCore GraphicsのCGWindowListなどを用いるのが一般的です。アプリのバンドルIDやプロセス名、表示名でフィルタを行い、対象アプリに属するウィンドウ群を特定します。
- ウィンドウ操作:集約(全ウィンドウを画面中央や指定領域に移動)、フォーカス(ウィンドウの最前面化やキーボードフォーカス付与)、分割(複数ウィンドウを左右やグリッドに並べる)といったアクションは、ウィンドウ位置/サイズの変更、最前面フラグの操作、アクティブ化などを組み合わせて実現します。AXUIElement経由でウィンドウの位置・サイズを設定したり、NSWindowやAccessibilityのAPIでフォーカスを切り替えたりします。
- 権限とセキュリティ:ユーザーがシステム環境設定 → セキュリティとプライバシー → アクセシビリティでアプリに操作許可を与える必要があります。サンドボックス化や署名、Notarization(配布時の署名・公証)も考慮すると配布体験が向上します。一部操作はサンドボックス内では制限されるため、適切なエンタイトルメントや配布方式を選ぶ必要があります。
- UI/UX実装:READMEの説明からは、シンプルなテキスト入力+Enterで完了するワークフローが採用されています。Swiftを用いていることから、UIはAppKitかSwiftUIで実装されている可能性が高く、軽量なウィンドウ選択/コマンド実行のフローを備えていると考えられます。キーボード中心の操作を重視する設計は、作業効率を高めるうえで有利です。
- 配置アルゴリズム:Split(分割)時には複数ウィンドウのアスペクト比やスクリーンサイズを考慮したレイアウト計算が必要です。単純な左右分割だけでなく、二分割→グリッド配置などの戦略を用いることで、ウィンドウの見やすさと操作性を両立できます。
- 実装上の注意点:ウィンドウタイトルやツリー構造、ミニウィンドウ/メニューウィンドウの扱い、フルスクリーンウィンドウの例外処理など、実運用での境界条件が多く存在します。これらを丁寧に扱うことで誤操作や不意なウィンドウ移動を抑えることが重要です。
Convokerのリポジトリ自体は軽量で、アセットやアイコン、ライセンス、READMEが含まれており、初期段階のプロジェクト/ユーティリティとしての体裁を整えています。実際に利用する際は、アクセシビリティ許可の付与や動作確認を行ってください。
プロジェクトの構成
主要なファイルとディレクトリ:
- .gitignore: file
- Convoker: dir
- LICENSE: file
- README.md: file
- assets: dir
…他 1 ファイル
Convokerディレクトリにはソースコード(Swiftファイル)やアプリ本体のエントリが格納されている想定です。assetsにはアイコン画像などのリソースが含まれており、READMEには使用例やダウンロードリンクが記載されています。
まとめ
シンプルな操作でアプリ単位のウィンドウ管理を実現する、macOS向けの実用的なユーティリティです(約50字)。
リポジトリ情報:
- 名前: convoker
- 説明: Type an app name, press Enter, all its windows come to you. Per-app window control for macOS.
- スター数: 2
- 言語: Swift
- URL: https://github.com/varie-ai/convoker
- オーナー: varie-ai
- アバター: https://avatars.githubusercontent.com/u/257187343?v=4
READMEの抜粋:
Convoker
Type an app name, press Enter, all its windows come to you.
Per-app window control for macOS. Gather, focus, or split — all windows of one app at once.
Download •