wayBetter

(FOSS) いまや、すべてがアプリ。

いつものアプリを、 もっと、ずっと良く。

wayBetterは、いつも使っているアプリを軽いネイティブウィンドウに収め、その場で拡張します。BetterDiscordがDiscordを拡張するのと同じ発想です。タブ、分割ペイン、すべてのアカウントを横に並べて表示、テーマ、プラグイン、そしてアプリ自体のバグの修正。テーマもプラグインも、誰でも作れます。次のアプリも、誰でも作れます。

wayBetter for Xを入手

Windows版wayBetter for Xをダウンロード · 無料 · GPL-3.0-or-later · 読んだもの・投稿したものを追跡しません

  • wayBetter for Xのテーマ 14種類
  • 同梱プラグイン 14個
  • X自体のバグの修正 9件
  • ダウンロードサイズ 7.9 MB
  • 起動まで 0.23 s
  • waybetterの依存関係 0個
  • ずっと $0

01 課題

どのアプリも、必要なものの半分しか届けてくれません。

残りは手に入りません。アカウントをいくつ使えるか、どんな見た目か、バグがいつ直るかは、アプリが決めるからです。wayBetterはアプリをそのまま使い、残りの半分を足します。

  1. A

    1ウィンドウに1アカウント。ログアウトして、ログインして、の繰り返し。

    すべてのアカウントを横に並べて、同時にログインしたまま。

  2. B

    アプリにバグ?直してくれるのを待つだけ。

    あなたのマシン上で、その場で、今日直ります。

  3. C

    彼らが選んだ見た目。彼らが出した機能。

    誰でも書けるテーマとプラグイン。

  4. D

    どのデスクトップクライアントにも、ブラウザーがまるごと同梱。

    システムのWebView上で動く、軽いネイティブウィンドウがひとつ。

軽さは設計から

いまや、すべてがアプリ。しかも軽い。

アプリごとに別のブラウザーを抱え込むのではなく、システムにすでにあるWebView上のネイティブウィンドウです。

7.9 MBWindowsインストーラー全体のサイズ
0.23 s起動からウィンドウ表示まで
17 msテーマ・修正・プラグインがページに読み込まれるまで
0ページに追加されるロングタスク

Windows 11上のwayBetter for X 1.0で計測。インストーラーのサイズは公開中のダウンロードのもの、起動時間は3回の中央値、ランタイムの評価時間とロングタスク(>50 ms)はwayBetterあり・なしで計測しました。

02 ひとつのシステム

本物のアプリを包む3つのレイヤー。

wayBetterのアプリはすべて同じシステムでできています。ネイティブのシェル、ページ内のランタイム、そしてそのアプリを知っている小さなアダプターです。アプリ自体はこれまでどおり動きます。プロキシも再ホストもなく、変更はあなたのマシン上だけで行われます。

01 · シェル

軽いネイティブウィンドウ。

Tauri 2、システムのWebView上で動作。どのアプリにも欲しかったウィンドウまわりの機能:

  • タブ、ピン留めタブ、分割ペイン: タブやリンクを端までドラッグ
  • アカウントごとに専用プロファイル、並べて同時にログイン
  • リンクの開き方: 同じタブ、横、新しいタブ、またはブラウザー
  • アドレスバーとコマンドパレット Ctrl K
  • 静かにインストールされる署名付きアップデート

02 · ランタイム

テーマとプラグインを、ページの中に。

アプリ自身のページに注入され、すべてのwayBetterアプリで共有されます:

  • ひとつの色基盤に基づくテーマ(アプリのパレットのOKLabモデル)
  • 小さなヘルパーAPIを備えたBetterDiscordスタイルのJavaScriptプラグイン
  • DOMハブとリクエストハブはひとつずつ。だから機能を足しても軽いまま
  • テーマの後に適用される、あなた自身のCSS

03 · アダプター

アプリごとに小さな部品をひとつ。

アプリを知っているのはここだけ: ホスト、レイアウト、アカウントボタン、そしてアプリがすでに読み込んでいるデータ。

  • ネイティブのSiteSpecと、ページ側のSiteAdapter
  • アプリのタブが呼び出せるものを定めた、短くレビュー済みのリスト
  • それ以外はすべてシステムが用意します

03 最初のアプリ

wayBetter for X.

本物の x.com をタブと分割ペインで。すべてのアカウントを並べて、14 のテーマ、8 つのエリアプラグイン、そして X が抱えるバグの修正:競合するいいねとフォロー、消える下書き、跳ねるタイムライン。Windows、macOS、Linux で今すぐ使えます。

14内蔵テーマ、そしてあなたのテーマ
14同梱プラグイン。オンにするまではオフ
9X自体のバグの修正
36Xを隠す・表示する・変えるための調整
  • 01
    すべてのアカウントを、横に並べて

    本物のx.comをタブと分割ペインで。各アカウントは専用プロファイルで同時にログインしたまま。

  • 02
    Xのバグを、修正

    確実に届くいいねとフォロー、「戻る」で保たれる位置、跳ねないタイムライン、再試行されるアップロード。

  • 03
    下書き保管庫

    すべての下書きをリビジョン履歴ごとローカルに保存し、Xが失くしたときには元に戻します。

  • 04
    14 のテーマ、8 つのエリアプラグイン

    色だけでなく、まるごとのリデザイン。Reader+、Chat+、Media+ ほか 5 つのエリアプラグイン、機能ごとにスイッチ付き。

  • 05
    何でもCtrl+Kで

    タブ、アカウント、設定、そして演算子チップ付きのX検索に使えるコマンドパレット。

  • 06
    デッキ

    TweetDeckスタイルのデッキ: Xのカラムを横に並べ、それぞれ選んだアカウントで表示。フィルターと未読数つき。

wayBetter for X

無料 · オープンソース · 静かにアップデート

Windows版をダウンロード すべて見る

Windows · macOS · Linux

04 自分好みに

テーマもプラグインも、誰でも作れます。

テーマはJSONファイル1つ。プラグインはJavaScriptファイル1つ。使うのに審査待ちもアカウントも要りません。書いて、フォルダーに入れて、ファイルを共有するか、ストアで公開するだけ。CSSが書ければ、アプリの見た目を作り変えられます。JavaScriptが少し書ければ、いつまでも実装されなかった機能を自分で足せます。

テーマ

色、フォント、形、レイアウト、背景、エフェクト。

外観パネルでJSONをインポート・エクスポート。コントラストは自動でチェックされ、どの面の上でも文字が読みやすく保たれます。

ホームポスト
おすすめフォロー中
wayBetter@CRTkafa · 2m

14のテーマが付属します。15番目はあなたのもの。

1248♥ 101
playfishies@playfishies · 9m

JSONファイル1つ。外観 → インポートにドロップするだけ。

Night Ink
deep-sea.theme.json
{
  "name": "Deep Sea",
  "author": "@you",
  "mode": "dark",
  "colors": { "bg": "#06141b", "text": "#e6f4f1", "accent": "#2ee6c5" },
  "font": { "family": ["Geist"], "scale": 1.02 },
  "shape": { "radius": 14, "button": 9999, "avatar": "rounded" },
  "layout": { "density": "compact", "cards": true },
  "background": { "kind": "pattern", "pattern": "grid",
                  "ink": "#2ee6c5", "opacity": 0.08, "size": 28 },
  "effects": { "hover": "glow" }
}
プラグイン

ファイル1つ。start()とstop()。

BetterDiscordスタイルの*.plugin.jsをプラグインフォルダーに入れ、設定でオンにします。面倒な部分はヘルパーAPIが引き受けます。

copy-quote.plugin.js
/**
 * @name Copy Quote
 * @description y on a focused post copies "@handle: text".
 * @version 1.0.0
 * @author @you
 */
module.exports = class CopyQuote {
  start() {
    const api = window.wayBetter.api;
    this.scope = api.scope();
    this.scope.onKey((event, post) => {
      if (event.key !== 'y' || !post) return;
      const t = api.tweet(post);
      if (t) api.copyText(`@${t.handle}: ${t.text}`)
        .then(() => api.toast('Copied'));
    });
  }
  stop() { this.scope.dispose(); }
};

ヘルパーAPI

  • storage(ns)
  • observe(sel, fn)
  • onRouteChange(fn)
  • onKey(fn)
  • tweet(el)
  • copyText(s)
  • toast(msg)
  • injectCSS(id, css)
  • waitFor(sel)
  • scope()

wayBetter for Xには14個が付属

  • Thread Reader
  • Exact Timestamps
  • Clean Links
  • Copy as Markdown
  • Alt-text Reminder
  • User Notes
  • Muted Regex
  • Reading Time
  • Media Grid Focus
  • Keyboard Plus
  • Emoji Picker
  • Hide Blue Checks
  • Focus Mode
  • Reply Guard

05 この上に作る

システム全体がひとつのパッケージ。

wayBetter for Xを支えるページランタイムとシェルモデルは、waybetterとしてnpmで公開しています。型付きの素のESM、モジュールごとのサブパス、依存関係ゼロ。必要な部品だけ使うことも、アプリをまるごと作ることもできます。

ターミナル

npm i waybetter

依存関係ゼロESM + .d.tsruntime/* と shell/*GPL-3.0-or-later
adapter.ts · READMEより抜粋
import { configureRuntime, type SiteAdapter }
  from 'waybetter/runtime/site';

export const KICK: SiteAdapter = {
  product: 'wayBetter for Kick',
  hosts: ['kick.com'],
  runtimeGlobal: 'WayBetterKick',
  apiMarks: ['/api/'],
  // plugins, rail, account, links, themeSources …
};
configureRuntime(KICK);

waybetter/runtime/*

  • siteアダプターの構成ルート
  • domHubMutationObserverひとつ、フレームひとつ
  • netHubすべての機能で共有するfetch/XHRフックひとつ
  • pluginApiユーザープラグイン用のヘルパー
  • themeTokensOKLabカラーモデル
  • paneNav分割表示でナビゲーションをひとつに
  • linkRouting横、タブ、またはブラウザー
  • accountReportログイン中のアカウント

waybetter/shell/*

  • addressModelアドレスバーのチップ
  • paneModel分割ペイン、横に開くリンク
  • linkDropリンクをドロップすればペインに
  • paletteコマンドパレットのランキング
  • profileModelアカウントのプロファイル
  • updateModelアップデートチップ
  • windowControlsタイトルバーとウィンドウ操作ボタン
  • chromeタイトルバーとツールバーのサイズ

06 次の展開

最初はX。次を作るのは、あなた。

Web版のあるアプリなら、同じウィンドウ、テーマ、プラグインを手に入れられます。以下は次の候補です。いずれも発表済みではなく、日程もありません。誰かがアダプターを書くのを待っています。README自体のアダプター例はKickです。

候補

wayBetter forYouTube?

動画をタブと分割ペインで、すべてのチャンネルアカウントを横に並べ、テーマとプラグインも。

候補

wayBetter forKick?

軽いウィンドウひとつに配信を並べ、自分のチャットプラグインと自分のテーマで。

候補

wayBetter forTwitch?

複数配信を分割ペインで、すべてのアカウントでログインしたまま、チャット用プラグインも。

候補

wayBetter forDiscord?

重いクライアントの代わりに、軽いTauriウィンドウでWebアプリを。同じシェル、同じプラグイン。

wayBetter forあなたの使うアプリ。

アダプターを書くだけ。シェル、ランタイム、テーマ、プラグインは付いてきます。

npm i waybetter

次のアプリを作ろう。

パッケージとREADMEのアダプター例から始めましょう。何か作ったら、プルリクエストで「wayBetterを使っているプロジェクト」一覧に追加してください。

作り始める

次の候補であり、発表済みの製品ではありません。YouTube、Kick、Twitch、Discordは各所有者の商標であり、ロゴはサービスを示す目的でのみ表示しています。wayBetterはこれらのいずれとも提携しておらず、承認も後援も受けていません。

07 無料でオープンソース

裏はありません。一行残らず読めます。

  1. i.

    無料

    有料プランも、広告も、アップセルもありません。今も、「ベータ後」も。

  2. ii.

    オープン

    GPL-3.0-or-later。フレームワークもアプリも、ソースをgit.crt.fyiで公開しています。

  3. iii.

    プライベート

    アナリティクスなし、読んだもの・投稿したものの追跡なし。下書き、設定、プラグインはあなたのマシンに残ります。

  4. iv.

    あなたのもの

    フォークして、テーマを作って、プラグインを書いて、次のアプリを作りましょう。ライセンスが、次の人のためにもオープンなまま保ちます。

08 原則

より良く、でも別物にはしない。

本物のアプリを、その場で

ログインするのはアプリそのものです。プロキシも再ホストもなく、変更はあなたのマシン上だけで行われます。

軽い。もうひとつのブラウザーではなく

システムのWebView上のTauriウィンドウ。アプリごとにひとつ、その中にすべてのアカウント。

勝手に操作しない

修正は、あなた自身のクリックを確実に届けるためのもの。wayBetterが自分で投稿、フォロー、削除をすることはありません。

静かに最新

アップデートは署名付きで静かにインストールされるので、インストーラーをやり直さなくても修正が届きます。

まずはXから。
次を作ろう。

wayBetter for Xを見る