Mullion — ページだけを映すフレームレスブラウザ

アプリケーション
2026-08-11 (3 days ago)
Mullion — ページだけを映すフレームレスブラウザ

動画や BGM を流しっぱなしにしたいだけなのに、ブラウザで開くとタブバーもツールバーもブックマークバーも付いてくる。ウィンドウの上半分が「ページを見るための道具」に占められ、肝心のページが縮む。

Mullion は、URL やローカルファイルを ページだけ のウィンドウで開く Electron 製のフレームレスブラウザ。ナビゲーションバーは呼んだときだけ現れ、用が済めばまた引っ込む。ページ読み込み後にスクリプトを流すこともできるし、Dock ではなくメニューバーに常駐させることもできる。

名前は、窓を細く分ける方立 (mullion) から。窓を構成する部品のうち、唯一「気付かれないこと」を期待されているもの。

ダウンロード・ソース

macOS 版は Apple Developer ID 署名 + 公証済みの universal build (Intel / Apple Silicon)。

主な機能

  • タイトルバーは 30px の 1 行だけ — ウィンドウボタン・favicon・タイトルのみ。オーバーレイではなく確保された行なので、ページの上に何も乗らない。タイトルをクリックするとナビゲーションバーが開閉する
  • 呼べば出るナビゲーションバー — 画面上端に 300ms ポインタを置く / Cmd+L / タイトルクリックで出現し、ページをクリックすれば消える。タブが 2 つ以上あってもバーごと引っ込むので、放っておいたウィンドウにはページしか映らない
  • メニューバーモード (--menubar) — トレイアイコンに紐づくポップオーバーになる。左クリックで開閉、右クリックでメニュー
  • 読み込み後のスクリプト実行 (--js / --playwright) — 「開いたら再生ボタンを押す」までを起動時に済ませられる。Playwright 互換 API を DOM 上に再実装しているので、page.click()expect(...).toBeVisible() を含む既存のコードがそのまま動く。既定ではコマンドラインで指定したページにだけ適用され、リンクを辿った先には引き継がない
  • ページ右クリックメニュー — スクリーンショット保存、既定ブラウザで開く、URL の QR コード表示 (生成はプロセス内で完結し、URL を外部へ送らない)、コマンドライン指定のページへの Restart
  • タブとセッション復元 (--restore)、--always-on-top / --zoom / --title などの見た目の固定
  • ローカルファイル — PDF・画像・音声・動画・HTML は Chromium 内蔵ビューアに渡す。標準入力から HTML を流し込むこともできる

実装上の判断

タイトルバーの favicon は、メインプロセスがページ自身のセッションで取得してデコード済み PNG として渡す。タイトルバーに URL を直接持たせるとリクエストがコンテンツパーティションの外に出てしまうため。取得するのは http(s) のみで、file: やカスタムプロトコルを辿らせない。表示するのも PNG だけ — 画像はデコード前にサイズを測る必要があり (256KB のデータが数 GB のキャンバスを宣言できる)、PNG はサイズを 1 箇所で 1 度しか名乗らないのに対し、JPEG は名乗り方も偽り方も複数あるため、測らずに拒否している。

CLI パーサ・ターゲット判定・スクリプト包み・QR エンコーダ・PNG ヘッダ解析は Electron に依存しない純粋なモジュールに切り出してあり、ブラウザを起動せず node --test で検証できる。

技術スタック: Electron / Chromium。macOS 向けに署名・公証済みの universal dmg を GitHub Releases と Homebrew cask で配布。MIT ライセンス。

アーカイブ