Magnetism — macOS用オープンソース・ウィンドウマネージャ

Tool

概要

Magnetismは、macOS上でウィンドウを素早く整列させるためのオープンソースツールです。キーボードショートカット(Magnetと互換のデフォルト)、ドラッグでの画面端スナップ、複数ディスプレイのサポートなどを備え、ウィンドウを「左右半分」「四分割」「三分割」「三分の二」や「最大化」「中央配置」「復元」など計18種の位置に素早く配置できます。ネイティブなSwift実装で、軽量なメニューバーアプリとして動作することが想定されています。GitHub上でソースが公開されており、自分でビルドしてカスタマイズすることも可能です。

GitHub

リポジトリの統計情報

  • スター数: 9
  • フォーク数: 0
  • ウォッチャー数: 9
  • コミット数: 6
  • ファイル数: 10
  • メインの言語: Swift

主な特徴

  • 18種類のウィンドウ配置(半分、四分割、三分割、三分の二、最大化、中央、復元など)
  • Magnetと互換のキーボードショートカットを備え、完全にカスタマイズ可能
  • マウスでウィンドウを画面端にドラッグしてスナップするドラッグ-to-edge機能
  • 複数ディスプレイ対応とネイティブSwiftによる軽量実装

技術的なポイント

MagnetismはmacOS向けにSwift + AppKitで実装されるウィンドウマネージャで、以下の技術要素が主に関係します。まずウィンドウ操作にはAccessibility API(AXUIElementなど)やQuartzウィンドウサービスを使い、ウィンドウの位置・サイズを読み書きしてスナップや復元を実現します。複数ディスプレイ対応ではNSScreenやスクリーンのフレーム/ワーキングエリア(メニューとDockを考慮した領域)を正しく扱い、座標系の変換(バックバッファのスケールや原点の差)に気をつける必要があります。キーボードショートカットはCarbonイベントや独自のホットキー実装、もしくは既存のHotKeyライブラリを通してグローバルに取得し、ショートカット設定はユーザ設定として永続化します。ドラッグによるスナップはマウスイベント(CGEventTapやグローバルマウスフック)でウィンドウのドラッグを検知し、一定のエリアに入った段階で候補の配置にスナップさせるロジックが必要です。最大化・復元機能は操作前のウィンドウフレームを保存しておき、元に戻せるようにするのが一般的です。加えて、メニューバー常駐型のUI(NSStatusItem)で設定メニューやショートカット編集画面を提供する実装が多く、実行にはシステム環境設定のアクセシビリティ許可が必要です。パフォーマンス面はUIスレッドとイベント処理を分離し、頻繁なウィンドウ更新でも滑らかに動作するよう最適化が求められます。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .gitignore: file
  • CLAUDE.md: file
  • LICENSE: file
  • Magnetism.xcodeproj: dir
  • Magnetism: dir

説明(主要項目):

  • Magnetism.xcodeproj:Xcodeプロジェクトファイル。ビルド設定やターゲット定義が含まれます。
  • Magnetism(ディレクトリ):アプリ本体のソースコードとリソース(Swiftファイル、Assets、StoryboardやXIB、スクリーンショットなど)が格納されている想定のディレクトリです。
  • LICENSE:オープンソースライセンス。利用や再配布のルールが記載されています。
  • CLAUDE.md:プロジェクト固有のドキュメントや補足情報(コントリビューション方針やメモ)と推測されます。
  • .gitignore:ビルド成果物や一時ファイルの除外設定。

…他 5 ファイル

使い方メモ(README抜粋に基づく補足)

  • ビルド:Xcodeでプロジェクトを開きビルド。署名やビルド設定に注意。
  • 実行:初回はシステム環境設定 → セキュリティとプライバシー → アクセシビリティで本アプリの許可が必要(ウィンドウ操作に必須)。
  • 操作:デフォルトでMagnet互換のショートカットが設定されているため、既存Magnetユーザは違和感なく移行可能。ショートカットはアプリ内で変更できることが想定されます。
  • 注意点:macOSのバージョン差やウィンドウ管理の権限により挙動が異なる場合があります。自己ビルドの際はXcodeの設定とサンドボックスの有無を確認してください。

まとめ

軽量なSwift製オープンソースで、Magnet互換の機能を求めるユーザに適したウィンドウマネージャです。(約50字)

リポジトリ情報:

READMEの抜粋:

Magnetism

A free, open-source window manager for macOS. Snap windows to halves, quarters, thirds, and more — using keyboard shortcuts or by dragging to screen edges. A native Swift alternative to Magnet.

menu

Features

  • 18 window positions — halves, quarters, thirds, two-thirds, maximize, center, restore
  • Keyboard shortcuts — Magnet-compatible defaults, fully customizable
  • Drag-to-edge snapping — drag a window to an…