Skip to content

ウィンドウ背景にブラー(Vibrancy)効果を追加 #11

@j4rviscmd

Description

@j4rviscmd

概要

ウィンドウ背後のコンテンツ(デスクトップ壁紙や他アプリ)にブラー(すりガラス)効果を適用し、モダンな外観を実現する。

背景

  • 元の要望: electron-vibrancy の導入
  • electron-vibrancy は最終更新が古く(Electron 1.6.8時代)、現在の Electron 39 ではmacOS向けにビルトイン vibrancy オプションが存在する
  • Windows向けは別途ネイティブライブラリが必要

対応方針

macOS

  • Electron標準の BrowserWindowvibrancy オプションを使用
  • ネイティブの NSVisualEffectView ベースでGPUアクセラレーション済み、パフォーマンス影響ほぼなし
  • マテリアル種別: appearance-based, light, dark, titlebar, selection, menu, popover, sidebar, medium-light, ultra-dark

Windows

  • glasstron を採用候補とする
    • acrylic(Windows 10 1803+)/ blurbehind 両対応
    • BrowserWindow拡張型で導入が比較的容易
    • 他候補(electron-vibrancy, windows10-fluently-vibrancy)は最終更新が古く不採用
  • DWM(Desktop Window Manager)のコンポジション機能を使用するためGPU処理

設定プロパティ(案)

coderm.window.vibrancy (string, default: "none")
説明
"none" 効果無効(デフォルト)
"auto" テーマに追従
"light" ライト系マテリアル
"dark" ダーク系マテリアル

懸念事項

  • transparent: true が必要: Electronのレンダリングパイプラインに影響する可能性あり
    • macOS: ネイティブウィンドウシャドウが表示されなくなる制限あり
    • Windows: リサイズ時の再描画コスト増、スナップ機能への影響(glasstron内部でハック処理あり)
  • パフォーマンス: blur計算自体は軽い(GPU処理)だが、Chromiumの中間レイヤーを通るためWezTerm等のネイティブアプリよりはオーバーヘッドあり
  • 設定変更時の再起動要否: 要検討

参考リンク

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions