Universal-Custom-Discord-RPC — 汎用カスタムDiscordリッチプレゼンス

Tool

概要

Universal-Custom-Discord-RPCは、任意のプログラムやゲームが起動しているかを監視し、該当アプリに合わせたDiscordのリッチプレゼンス(Rich Presence)を表示するためのPythonスクリプトです。作者は当初、Ocarina of TimeのPC移植版(Ship of Harkinian)をDiscordに表示する目的でArch Linux上で作成しましたが、その後汎用化してWindows、macOS、Linux、さらにBSD系でも動作するように設計されています。スクリプト本体(discord_rpc.py)に設定と検出ルール、RPC更新処理がまとまっており、注釈に従って簡単にカスタマイズできます。軽量でCPU負荷がほとんどかからない点、対象プロセスが存在する場合のみプレゼンスを表示する「スマート」な挙動が特徴です。

GitHub

リポジトリの統計情報

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

主な特徴

  • 汎用検出:任意の実行中プログラムを検出して専用のRPCを表示可能
  • 軽量:常駐してもほぼCPUを消費しない設計
  • スマート表示:対象アプリが起動しているときのみプレゼンスを表示
  • クロスプラットフォーム:Windows/Mac/Linux/BSDでの動作を想定

技術的なポイント

このプロジェクトの中核は単一のPythonスクリプト(discord_rpc.py)に集約されています。基本的な動作は「プロセス検出 → マッチング → DiscordへのRPC送信 → 待機ループ」の繰り返しです。プロセス検出にはOS依存の方法(例:psutilのような汎用ライブラリを利用するか、プラットフォーム固有のプロセスリスト取得手法)を想定しており、READMEとスクリプト内コメントでどのように拡張・変更するかが示されています。RPCの送信はDiscordのIPCを介したリッチプレゼンス(通常はDiscordが提供するローカルソケット/API)を利用する方式が想定され、必要な依存パッケージはrequirements.txtに記述されて管理されます。

設計上の注目点は「カスタマイズのしやすさ」と「汎用性」です。スクリプト内にはアプリ名や実行ファイル名に対するマッピングルールや、表示するステータス/ボタン/アセットIDなどを定義できるようになっており、ユーザーは単純な設定変更だけで自分の環境向けのルールを作成できます。また、無駄な更新を抑えるために状態変化があった場合のみDiscordへ更新を投げる工夫(差分検出)や、一定インターバルで監視するなど低負荷化のための基本設計が施されていることがREADMEから読み取れます。

クロスプラットフォーム対応の観点では、ファイルパスやプロセス名の扱い、ソケット接続の方法がOSごとに異なるため、スクリプトはプラットフォーム判定と分岐処理を持っているか、依存ライブラリに抽象化を委ねている可能性が高いです。セキュリティ面ではローカルのみで完結する実装のため外部のクラウドへの送信は発生せず、ユーザー側が作成するカスタム定義の内容に注意することで安全に利用できます。最後に、READMEに「Everything you need to know is inside of the .py file」とある通り、ソースを直接読んで設定を変更することが想定された初心者にも優しい構成です。(約700字)

プロジェクトの構成

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

  • LICENSE: file — ライセンス情報(利用条件の明記)
  • README.md: file — 機能説明、導入・設定方法、対応OSなどの概要
  • discord_rpc.py: file — メイン実装。プロセス検出とDiscord RPCのロジック、カスタマイズ用の注釈が含まれる
  • requirements.txt: file — 動作に必要なPythonパッケージが列挙されている(例:psutilやpypresenceなどを想定)

各ファイルはシンプルで、ユーザーはdiscord_rpc.pyの中のマッチングルール(表示させたい実行ファイル名やウィンドウタイトル)とDiscord側のアセットIDやクライアントIDを設定するだけで動作させられる構成です。動作確認やトラブルシューティング情報はREADMEにまとめられているため、まずはREADMEの手順に従って依存関係をインストールし、スクリプト中のサンプル設定を自分の環境に合わせて編集するのが早道です。

まとめ

軽量かつ汎用的で、手軽にカスタムDiscordプレゼンスを実現できる実用的なスクリプト群。

リポジトリ情報: