3 ポイント 投稿者 GN⁺ 2025-10-03 | 2件のコメント | WhatsAppで共有
  • Firefoxベースで、TypeScript設定ファイルを通じてブラウザ自体をプログラム可能なツールにする新しいアプローチ
  • Web拡張機能が持つセキュリティ制約なしに、ブラウザUIのカスタマイズや外部プロセスの呼び出しなど、無制限の機能実装が可能
  • Vimスタイルのモードシステムとキーマッピングを提供し、マウスなしで完全なキーボード中心のブラウジングをサポート
  • ヒントモード、タブのファジーファインダー、REPLなどの開発者向け機能を標準搭載し、6か月間の実運用で検証済み
  • macOSとLinuxでアルファ版をダウンロード可能で、既存のFirefox拡張機能およびワークフローと完全互換

Glide開発の背景

  • 開発者はFirefoxでTridactyl拡張機能を使っている中で、Web拡張機能の根本的なセキュリティ制約という問題を経験
    • addons.mozilla.orgのような特定サイトでは拡張機能が完全に無効化され、すべてのキーマッピングが動作しない
    • カスタムホームページでもTridactylが動作しない問題が発生
  • こうした制約は、悪意ある拡張機能からユーザーを守るためのブラウザに不可欠なセキュリティモデルだが、同時に拡張性を大きく制限する
  • ブラウザUIそのもののカスタマイズから外部ツールの呼び出しまで、制限なく可能な真のカスタムブラウザの必要性を認識し、Glideの開発を開始

Glideの中核的な差別化要素

  • TypeScript設定ファイルベースで完全な制御権を提供
    • Web拡張機能では決してサポートできないAPIや機能を利用可能
    • エンドユーザー自身が設定ファイルを書くため、セキュリティ制約を設ける必要がないという根本的に異なるセキュリティモデル
  • 設定ファイルで可能なこと
    • カスタムキーマッピングの定義
    • Web拡張機能APIへのアクセス
    • 任意の外部プロセスの実行
    • マクロの定義 など
  • Firefoxベースで構築されており、既存のFirefox拡張機能やワークフローがそのまま動作

実用的な設定例

GitHubリポジトリを自動でクローンしてエディタを起動

glide.keymaps.set("normal", "gC", async () => {  
  // extract the owner and repo from a url like 'https://github.com/glide-browser/glide'  
  const [owner, repo] = glide.ctx.url.pathname.split("/").slice(1, 3);  
  if (!owner || !repo) throw new Error("current URL is not a github repo");  
  // * clone the current github repo to ~/github.com/$owner/$repo  
  // * start kitty with neovim open at the cloned repo  
  const repo_path = glide.path.join(glide.path.home_dir, "github.com", owner, repo);  
  await glide.process.execute("gh", ["repo", "clone", glide.ctx.url, repo_path]);  
  await glide.process.execute("kitty", ["-d", repo_path, "nvim"], { cwd: repo_path });  
}, { description: "open the GitHub repo in the focused tab in Neovim" });  
  • GitHubリポジトリのページでgCキーを押すと、自動的に次の処理を実行
    • 現在のURLからオーナー名とリポジトリ名を抽出
    • ~/github.com/$owner/$repoパスにリポジトリをクローン
    • kittyターミナルでneovimを開き、クローンしたリポジトリへ移動
  • 作業ごとに数秒を節約でき、設定の追加に必要なのは数分だけ

カレンダータブへすばやく切り替え

glide.keymaps.set("normal", "gc", async () => {  
  const tab = await glide.tabs.get_first({ url: "https://calendar.google.com/*"; });  
  assert(tab && tab.id);  
  await browser.tabs.update(tab.id, { active: true });  
}, { description: "[g]o to [c]alendar.google.com" });  
  • gcキーでGoogleカレンダーのタブへ即座に切り替え可能

モードシステム

  • Vimのモードの概念を取り入れ、すべてのキーマッピングを特定のモードに紐付け
  • ブラウザとの相互作用に応じて自動でモード切り替え
    • normalモード: 基本モード
    • insertモード: <input>要素をクリックすると自動で切り替わり、キーマッピングがテキスト入力を妨げない
    • ignoreモード: Shift+Escapeで切り替え、Webサイトがキーマッピングと衝突するときに使用

キーボードベースのナビゲーション

ヒントモード

  • fキーを押してヒントモードに入る
  • クリック可能なすべての要素(リンク、ボタンなど)の上にテキストラベルのオーバーレイを表示
  • ラベルを入力すると、その要素にフォーカスしてクリックを実行
  • マウスなしでWebページを完全に操作可能

個人的に気に入っている機能

  • gI: ページ内で最も大きく見えている入力要素に自動でフォーカスする、魔法のような機能
  • <space><space>: タブのファジーファインダーを起動し、見失ったタブを簡単に探せる
  • <c-i><c-o>: 前のタブ履歴のナビゲーションに不可欠
  • :repl: 設定変更をすばやくテスト
  • ヒントモード: マウスに手を伸ばしたくないときに便利
  • which-keyスタイルのUI: さまざまなキーマッピングを思い出させてくれるインターフェース

現在の状況と利用可能性

  • 6か月間、日常的に使用
  • まだ初期アルファ段階だが、macOSとLinuxでダウンロード可能
  • :tutorコマンドでチュートリアルの確認を推奨(まだ未完成)
  • Linuxユーザーはまだパッケージリポジトリに登録されていないため、手動で展開と設定が必要
  • Cookbook と開発者の dotfiles でさらに多くの例を確認可能
  • アルファ版のため、まだすべてのAPIが実装されているわけではないが、完全な制御権の提供が主な目標

2件のコメント

 
shakespeares 2025-10-07

かなりマニアックに使いこなさないといけない感じですね。GUIの利点を相殺できるくらい使えるなら別ですが…。

 
GN⁺ 2025-10-03
Hacker Newsのコメント
  • 自分の好みとは完全には一致しないが、Chromium ではなく Firefox をフォークしたのは新鮮に感じる。これで Zen、Floorp と合わせて、大きく改変された Firefox フォークが3つもあることになる
    • Tor もあるので、この流れに加わる
    • LibreWolf もあるが、個人的にはこれが標準になってほしいと思っている
  • アイデアはとても良いと思うし、セキュリティパッチ追従方式で維持しているというコメントを見て安心した
  • 自分も Vimium C を使うときに addons.mozilla.org の制限にぶつかったことがある。頻度はそこまで高くないのでブラウザを変えるほどではなかったが、むしろ Linux デスクトップ全体をキーボード中心にするツールのほうが惹かれる。たとえば macOS での homerow のようなものだ
  • 作者です。気になることがあればいつでも質問してください
    • Hint API が気に入った。特にブラウザ要素にもヒントを付けられる点が良い。ただ、上級ユーザーはヒントシステムでさまざまな種類の要素を選択したくなると思う。CSS セレクタを渡して、どの要素にヒントを付けるか指定できる機能に拡張してほしい。たとえば、ユーザーが特定の要素を選択して、そのテキストをコピーするコマンドを作れるようにするとか
    • DRM に対応しているのか気になる。Netflix のような商用ストリーミングサイトで使えるのか知りたい。以前は Firefox フォークでこれが大きな問題だった。また、Firefox Sync はどうなのかも気になる。さらに、外部プロセスから RPC 呼び出しが可能かも聞きたい。たとえば、現在開いているタブの URL や一覧、コンテンツを取得したり、タブをリモート操作して別の URL に移動させたりするなど、他のアプリやスクリプトと連携できるのか気になる。この分野では Firefox は弱い。最後に、セキュリティがどの程度なのかも知りたい
    • プロジェクトはとても素晴らしく見える。Helix/Kakoune スタイルのキーバインドを設定できるほど config が柔軟なのか気になる
    • config ファイルで拡張機能の自動インストールや Firefox の内蔵設定変更が可能なのか知りたい。他のプログラムは全部 dotfiles で設定しているので、Firefox にもそういう選択肢があってほしい
  • 本当に素晴らしそう。自分は今 Firefox と VimFX、それに複雑な config.js の組み合わせを長く使っている。NixOS パッケージがマージされたらぜひ試してみるつもりだ。もし標準の Firefox ESR を使い続けるなら VimFX を強く勧めたい。https://github.com/akhodakivskiy/VimFx を参考にするとよいと思う。VimFX の最大の欠点は Firefox 内部 API のドキュメント不足だ。タブ管理などの作業では、WebExtensions API なら簡単に済むことでも、ソースコードを自分で掘らなければならなかった。Glide がこうした API を config ファイルから使えるようにしてくれる点にいちばん期待している
  • ʕ•ᴥ•ʔ Bear Blog でこれを見つけて、面白く使っている。自分の zen browser のようにサイドバーと固定タブの設定を合わせて、仕事用の生産性スタックに入れて試している。glide-hint CSS も userChrome.css で自分の美的感覚に合うようにテーマ化した。これからも素晴らしい作品を作り続けてほしいし、追いかけていくつもりだ
    1. https://freeimage.host/i/KMQu3EQ
    2. https://freeimage.host/i/KMQAJ9t
    • 平均して同時に何個くらいのタブを開いているのか気になる。ファビコンだけを見てタブを探すことに不便を感じることはないのか知りたい
  • ソースコード構造を深く見たわけではないが、Firefox フォークだというなら、今後 Firefox のセキュリティパッチや修正はどう統合していく計画なのか気になる
    • 自動化されたパッチ方式と新規ファイル追加で実装している。ビルド時に Firefox のソースをダウンロードしてパッチを適用するので、Firefox のバージョンを上げるのもとても簡単だ。実際、頻繁にアップデートできるので Firefox ベータチャンネルを追っている
  • ついに compact mode が戻ってきて、本当にありがたい。Firefox フォークなのも嬉しいし、このコンセプトはとても興味深い。自分はどこでも vim を使う人間なので、ぜひ自分で試してみたいと思う
    • ただ、j/k でスクロールするときの動きがあまり滑らかでない感じがする。もっと自然なスクロールにする方法があるのか気になる(単にドキュメントを見落としただけかもしれないが)
  • かなり良いと思う。Chrome で Vimium を使ってきたが満足していた
    1. https://chromewebstore.google.com/detail/vimium/dbepggeogbaibhgnhhndojpepiihcmeb
    • chrome:// ページでも動くのか気になる。Vimium の Firefox 版ではこの点がいつも物足りなかった
  • ドキュメントをざっと読んだが、これは自分が夢見ていたブラウザのようだ。Firefox ベースで WebExt API も完全に使えて、しかもブラウザ外のコマンド実行までできる点が気に入った。Firefox Developer Edition がこうであってほしかった。今日はぜひすぐ使ってみたい