1秒に3発、想いをブチ込め。
Mastodon向け高速投稿デスクトップクライアント。
キーボード一発で投稿できる、シンプルでスピーディーな銃口型UIが特徴。
- ⌘Enter(Ctrl+Enter)で即投稿 — マウス不要、指が覚える
- ハッシュタグ管理 — よく使うタグをチップ登録してトグルで切替
- 公開範囲選択 — 公開 / 未収載 / フォロワーのみ / ダイレクト
- カスタム絵文字挿入 — 😀ボタンでピッカーを開き、サーバー独自の絵文字を挿入(標準絵文字はIMEから)
- ショートコード補完 —
:str_のように途中まで入力すると候補をポップアップ表示(↑↓で選択、Enter/Tabで確定) - 投稿エフェクト — 画面シェイク+マズルフラッシュ+スパーク
- 投稿履歴 — 直近10件を表示
- ガンメタルダークテーマ — 目に優しいフルダーク
| OS | 対応 |
|---|---|
| macOS 12+ | ✅ |
| Windows 10/11 | ✅ |
- TootGunを起動
- サーバーURL(例:
https://mastodon.social)を入力 - 接続する をクリック
- ブラウザが開くので、MastodonアカウントでTootGunへのアクセスを許可
- 自動的にアプリへ戻り、接続完了
# 依存関係インストール
npm install
# 開発サーバー起動(ホットリロード)
npm run dev
# Lint / 型チェック / フォーマット / テストをまとめて実行
npm run check
# テストのみ
npm run test
# ビルド
npm run build
# パッケージ作成
npm run dist:mac # macOS (.dmg)
npm run dist:win # Windows (.exe)- Electron — クロスプラットフォームデスクトップ
- electron-vite — 高速ビルド&HMR
- React — UI
- electron-store — 設定永続化(サーバーURL、OAuthトークン、ハッシュタグ、履歴)
src/
├── shared/types.ts # main / preload / renderer で共有する型
├── main/ # メインプロセス
│ ├── index.ts # エントリ(アプリのライフサイクル、ディープリンク)
│ ├── ipc.ts # renderer から呼べる IPC の登録
│ ├── mastodon.ts # Mastodon API 呼び出し
│ ├── oauth.ts # OAuth(PKCE)フロー
│ ├── store.ts # 設定の永続化(electron-store)。認証情報はここに閉じる
│ └── window.ts # メインウィンドウの生成・サイズ管理
├── preload/
│ ├── index.ts # コンテキストブリッジ(window.api)
│ └── global.d.ts # renderer 向けの window.api 型宣言
└── renderer/src/
├── App.tsx # 画面ルーティング
├── components/
│ ├── Settings.tsx # 接続設定
│ ├── Composer.tsx # 投稿画面
│ ├── HistoryPanel.tsx # 投稿ログ
│ ├── AttachmentList.tsx
│ ├── UndoBar.tsx # 投稿の取り消し
│ ├── HashtagPanel.tsx
│ ├── EmojiPicker.tsx # 絵文字ピッカー
│ ├── EmojiAutocomplete.tsx # ショートコード補完
│ └── SparkEffect.tsx
├── hooks/ # Composer から切り出した状態管理
│ ├── useAttachments.ts
│ ├── useCustomEmojis.ts
│ ├── useEmojiInput.ts
│ ├── useHistoryPanel.ts
│ └── useFireEffect.ts
├── emoji/emojiIndex.ts # ショートコード検出・検索
└── utils/formatTime.ts
MIT