smtty — ミニマルな TTY 用 Steam Machine ランチャー

Tool

概要

smtty は「Steam Machine」的な使い方を目指した、非常にシンプルな TTY(仮想コンソール)向けランチャーです。目的は Steam の Big Picture モードを Valve の gamescope(ゲーム向けの軽量コンポジタ/スケーラー)内で指定したモニターに表示し、内部レンダリング解像度やアスペクト比のストレッチ(4:3/16:10 など)をユーザー単位で保存して再利用できるようにすること。最小限のシェルスクリプトで構成され、導入や監査が容易です。ただし Steam が別セッションで実行中だと動作しない点や、Steam の Web ビューで GPU レンダリングを有効にしておかないと通知が黒画面になる問題があるため注意が必要です。

GitHub

リポジトリの統計情報

  • スター数: 4
  • フォーク数: 0
  • ウォッチャー数: 4
  • コミット数: 6
  • ファイル数: 6
  • メインの言語: Shell

主な特徴

  • gamescope 内で Steam Big Picture を直接起動して隔離された表示環境を提供
  • 起動時に表示するモニターを選択可能
  • 内部レンダリング解像度を設定でき、4:3/16:10 のストレッチ指定をサポート
  • ユーザー単位で設定を保存し、次回以降の起動を簡単に

技術的なポイント

smtty は言語を Shell に絞った非常にシンプルな実装で、主役は gamescope と Steam の組み合わせです。gamescope はゲーム向けの軽量コンポジタ/スケーラーで、指定した内部解像度でレンダリングした内容をターゲットモニターにスケーリング出力できます。これにより、内蔵解像度(たとえば 1280×960 の 4:3)でゲームを動かしつつ、外部モニターでフルスクリーン表示するときにアスペクト比をストレッチして表示する、といった用途が可能になります。smtty のスクリプトは gamescope をラップして Steam をその中で起動する流れを自動化し、ユーザーが指定したモニター・内部解像度・ストレッチ設定を反映します。

運用上の重要点は二つ。ひとつは「Steam は別のセッションで動かしてはいけない」ということ。Steam は同一アカウントの重複実行やセッション間のリソース競合を起こしやすく、smtty は gamescope セッション内専用の実行を前提にしています。もうひとつは Steam の Web ビューに関する設定で、「Enable GPU accelerated rendering in web views」を有効にしておかないと、gamescope のコンポジット環境下で Steam の通知が黒いフレームで全画面を覆うなどの視覚的問題が発生する旨が README に明記されています。smtty 自体は小さなシェルスクリプトとインストーラ(install.sh)で構成され、導入が軽量でコードレビューやカスタマイズが容易です。依存としては gamescope と Steam、そして適切に設定された環境(X/Wayland 関連やグラフィックドライバ)が必要です。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .github: dir(GitHub ワークフローや issue テンプレート等を置くディレクトリ)
  • LICENSE: file(ライセンス情報)
  • README.md: file(プロジェクト説明と重要な注意事項)
  • install.sh: file(インストール用スクリプト。コピーやパーミッション設定等を行う)
  • smtty: file(メインのランチャースクリプト。gamescope と Steam の起動をラップ) …他 1 ファイル

まとめ

シンプルで監査しやすい gamescope ベースの Big Picture ランチャー。

リポジトリ情報:

README の抜粋(重要ポイント):

  • Steam を他のセッションで実行していると smtty は失敗する。
  • Steam の「Web ビューで GPU アクセラレーションを有効」にしておくこと(通知が黒い画像で画面を覆う問題を回避)。
  • gamescope と組み合わせることで内部解像度やアスペクト比の調整が可能。