{"id":44254917,"url":"https://github.com/sanohiro/bcon","last_synced_at":"2026-04-17T11:01:58.872Z","repository":{"id":337645531,"uuid":"1154445441","full_name":"sanohiro/bcon","owner":"sanohiro","description":"GPU-accelerated terminal emulator for Linux console (TTY) — no X11/Wayland required","archived":false,"fork":false,"pushed_at":"2026-03-30T22:12:07.000Z","size":7355,"stargazers_count":16,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-01T16:50:32.850Z","etag":null,"topics":["ai-coding","cli","console","drm","fcitx5","framebuffer","gpu","japanese-input","kitty-graphics","kms","linux","opengl-es","rust","sixel","terminal","terminal-emulator","tty"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sanohiro.png","metadata":{"files":{"readme":"README.ja.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-10T11:53:49.000Z","updated_at":"2026-04-01T14:48:47.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/sanohiro/bcon","commit_stats":null,"previous_names":["sanohiro/bcon"],"tags_count":60,"template":false,"template_full_name":null,"purl":"pkg:github/sanohiro/bcon","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sanohiro%2Fbcon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sanohiro%2Fbcon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sanohiro%2Fbcon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sanohiro%2Fbcon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sanohiro","download_url":"https://codeload.github.com/sanohiro/bcon/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sanohiro%2Fbcon/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31403952,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T10:20:44.708Z","status":"ssl_error","status_checked_at":"2026-04-04T10:20:06.846Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-coding","cli","console","drm","fcitx5","framebuffer","gpu","japanese-input","kitty-graphics","kms","linux","opengl-es","rust","sixel","terminal","terminal-emulator","tty"],"created_at":"2026-02-10T16:22:45.396Z","updated_at":"2026-04-04T15:01:00.373Z","avatar_url":"https://github.com/sanohiro.png","language":"Rust","readme":"# bcon\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![CI](https://github.com/sanohiro/bcon/actions/workflows/ci.yml/badge.svg)](https://github.com/sanohiro/bcon/actions/workflows/ci.yml)\n[![Release](https://img.shields.io/github/v/release/sanohiro/bcon)](https://github.com/sanohiro/bcon/releases/latest)\n\nLinux コンソール (TTY) 用 GPU アクセラレーション対応ターミナルエミュレータ — X11/Wayland 不要\n\n**[ドキュメント](docs/)** · **[インストール](docs/installation.md)** · **[設定](docs/configuration.md)** · **[English](README.md)**\n\n- **GPU レンダリング** — DRM/KMS 上の OpenGL ES でシャープ＆スムーズな描画\n- **Sixel \u0026 Kitty グラフィックス** — ターミナル上で直接画像を表示\n- **内蔵ペイン分割 \u0026 タブ** — tmux 不要、グラフィックスパススルー問題なし\n- **日本語入力** — D-Bus 経由の fcitx5 統合、ベアコンソールで動作\n\n![bcon — Linux TTY 上で Claude Code、yazi（画像プレビュー付き）、vim を分割ペインで表示](demo/screenshot-split-panes.png)\n\n## なぜ bcon？\n\nAI コーディングツール（Claude Code、Codex、Gemini CLI など）の登場により、開発ワークフローは大きく変わりました。VSCode を開く機会は減り、ターミナルで過ごす時間が増えています。\n\nふと気づくと、X11/Wayland 上で動かしているのはターミナルエミュレータだけ — それなら、デスクトップ環境ごと省略できるのでは？\n\n**bcon** はその答えです。Ghostty や Alacritty のようなモダンなターミナル体験を、Linux コンソール上で直接実現します。GPU アクセラレーション、True Color、Sixel/Kitty グラフィックス、日本語入力 — X11 なしで。\n\n### bcon の役割\n\nbcon は**画面分割とタブを内蔵**しています — 基本的なマルチプレクシングに tmux や screen は不要です。ターミナルマルチプレクサは Kitty graphics protocol のパススルーを壊すことが多く、bcon の画像表示機能が活かせなくなるため、内蔵分割が重要です。\n\n**楽しい CLI ライフを。**\n\n| | 実 TTY | GPU アクセラレーション | Kitty graphics | IME | 画面分割 |\n|---|:---:|:---:|:---:|:---:|:---:|\n| **bcon** | Yes | Yes | Yes | Yes | 内蔵 |\n| kitty / alacritty / ghostty | No (X11/Wayland 必須) | Yes | ツールによる | デスクトップ IME | ツールによる |\n| tmux / screen | Yes | No | パススルー制約あり | N/A | Yes |\n\n## デモ\n\n### スクリプト \u0026 基本機能\n\nhttps://github.com/user-attachments/assets/8576c907-1f7b-4582-8eb8-de04a853b604\n\n### 実用例 (yazi, btop, Claude Code など)\n\nhttps://github.com/user-attachments/assets/ebff498c-25b7-4662-8750-8d6e35661963\n\n## 機能\n\n### レンダリング\n- **GPU レンダリング**: DRM/KMS + EGL + GBM 経由の OpenGL ES\n- **シャープなテキスト**: ピクセルアライン済みグリフレンダリング\n- **True Color**: 24bit フルカラーサポート\n- **リガチャ**: フォントリガチャ対応 (リガチャフォントが必要 — [推奨フォント](docs/configuration.md#recommended-fonts)参照)\n- **絵文字**: カラー絵文字レンダリング (Noto Color Emoji)\n- **Powerline**: ピクセル精度の Powerline/Nerd Font グリフ\n- **HiDPI スケーリング**: 設定可能な表示倍率 (1.0x - 2.0x)\n- **HDR 検出**: EDID から HDR 対応を自動検出\n\n### グラフィックス\n- **Sixel グラフィックス**: ターミナル内画像表示\n- **Kitty グラフィックスプロトコル**: 高速画像転送\n\n### ターミナル\n- **スクロールバック**: 設定可能なバッファ (デフォルト: 10,000 行)\n- **マウスサポート**: 選択、ホイールスクロール、ボタンイベント (X10/SGR/URXVT/SGR-Pixels)\n- **OSC 52 クリップボード**: エスケープシーケンスでクリップボード操作\n- **ブラケットペースト**: セキュアなペーストモード\n- **カラーアンダーライン**: SGR 58/59 対応 — 5 種のスタイル (単線/二重線/波線/点線/破線) + カラー指定\n- **同期出力**: Mode 2026 — 高速更新アプリのちらつき防止\n- **OSC 4/10/11/12**: パレット、前景色、背景色、カーソル色の動的変更\n- **通知**: OSC 9 (iTerm2) / OSC 99 (Kitty) 通知プロトコル — トーストオーバーレイ＋プログレスバー\n\n### 入力\n- **キーボード**: evdev + xkbcommon による完全キーボードサポート\n- **Kitty キーボードプロトコル**: モダンエディタ向けプログレッシブキーボードプロトコル (CSI u)\n- **日本語入力**: D-Bus 経由の fcitx5 統合\n- **IME 自動無効化**: vim/emacs などで自動的に IME を無効化\n- **キーリピート**: 設定可能な遅延/レート\n\n### 画面分割 \u0026 タブ\n- **ペイン分割**: 二分木レイアウトによる水平・垂直分割\n- **ペインナビゲーション**: 矢印キーまたは hjkl (vim プリセット) でフォーカス移動\n- **ペインリサイズ**: キーボードショートカットで分割比を調整\n- **ペインズーム**: アクティブペインをフルスクリーンに拡大/復元\n- **タブ**: 複数タブ、タブバー表示\n- **自動クローズ**: 終了したペインは自動的に閉じる\n- **マウスフォーカス**: クリックでペインフォーカス切替\n\n### UX\n- **コピーモード**: Vim ライクなキーボードナビゲーション\n- **テキスト検索**: スクロールバック内インクリメンタル検索 (Ctrl+Shift+F)\n- **スクリーンショット**: PNG で保存 (PrintScreen または Ctrl+Shift+S)\n- **フォント拡大縮小**: 実行時フォントサイズ変更 (Ctrl+Plus/Minus)\n- **通知パネル**: 通知履歴の閲覧 (Ctrl+Shift+N)、ミュート切替 (Ctrl+Shift+M)\n- **モニターホットプラグ**: モニター接続/切断を自動検知・切替\n- **外部モニター優先**: HDMI/DP 接続時に自動切り替え (ラップトップ向け)\n- **ビジュアルベル**: ベル文字で画面フラッシュ\n- **URL 検出**: Ctrl+クリックで URL をコピー\n\n## クイックスタート\n\n日本語環境（CJK フォント + fcitx5 IME）が必要な場合は [日本語環境セットアップ](docs/installation.md#japanese-environment-setup) を参照してください。\n\n```bash\n# 1. インストール\ncurl -fsSL https://sanohiro.github.io/bcon/install.sh | sudo sh\nsudo apt install bcon\n\n# 2. (任意) Nerd Font をインストール (yazi, lsd 等のアイコン表示用)\n#    詳細: docs/configuration.md#nerd-fonts-icons\n\n# 3. 設定生成 \u0026 サービス有効化\nsudo bcon --init-config=system,vim,jp  # または: system,emacs,jp / system,jp\nsudo systemctl disable getty@tty2\nsudo systemctl enable --now bcon@tty2\n\n# 4. bcon に切り替え: Ctrl+Alt+F2\n```\n\n## ドキュメント\n\n| ドキュメント | 内容 |\n|-------------|------|\n| **[インストールガイド](docs/installation.ja.md)** | apt、日本語環境、ログインセッション、ソースビルド、rootless |\n| **[設定リファレンス](docs/configuration.ja.md)** | 設定ファイル詳細、プリセット、フォント、Nerd Fonts |\n| **[キーバインド](docs/keybinds.ja.md)** | キーバインド一覧 (Default / Vim / Emacs) + コピーモード |\n\n## 動作要件\n\n- DRM/KMS サポートのある Linux (Debian/Ubuntu 推奨)\n- OpenGL ES 3.0+ 対応 GPU\n\n## 制限事項\n\n- **マルチシート (DRM リース)**: 非対応。bcon は GPU を排他的に使用します。\n- **マルチモニタ**: 現在は1つのモニタにのみ出力。\n\n## ライセンス\n\nMIT\n\n## 謝辞\n\nインスピレーション:\n- [Ghostty](https://github.com/ghostty-org/ghostty)\n- [foot](https://codeberg.org/dnkl/foot)\n- [yaft](https://github.com/uobikiemukot/yaft)\n- [Alacritty](https://github.com/alacritty/alacritty)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsanohiro%2Fbcon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsanohiro%2Fbcon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsanohiro%2Fbcon/lists"}