Skip to content
oteraPublic

About

Mastodon投稿専用クライアント

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

TootGun

1秒に3発、想いをブチ込め。

Mastodon向け高速投稿デスクトップクライアント。
キーボード一発で投稿できる、シンプルでスピーディーな銃口型UIが特徴。

Platform Electron React

特徴

  • ⌘Enter(Ctrl+Enter)で即投稿 — マウス不要、指が覚える
  • ハッシュタグ管理 — よく使うタグをチップ登録してトグルで切替
  • 公開範囲選択 — 公開 / 未収載 / フォロワーのみ / ダイレクト
  • カスタム絵文字挿入 — 😀ボタンでピッカーを開き、サーバー独自の絵文字を挿入(標準絵文字はIMEから)
  • ショートコード補完 — :str_ のように途中まで入力すると候補をポップアップ表示(↑↓で選択、Enter/Tabで確定)
  • 投稿エフェクト — 画面シェイク+マズルフラッシュ+スパーク
  • 投稿履歴 — 直近10件を表示
  • ガンメタルダークテーマ — 目に優しいフルダーク

動作環境

OS 対応
macOS 12+ ✅
Windows 10/11 ✅

セットアップ

  1. TootGunを起動
  2. サーバーURL(例: https://mastodon.social)を入力
  3. 接続する をクリック
  4. ブラウザが開くので、MastodonアカウントでTootGunへのアクセスを許可
  5. 自動的にアプリへ戻り、接続完了

開発

# 依存関係インストール
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

About

Mastodon投稿専用クライアント

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages