- Rust 59.4%
- Kotlin 22.2%
- Shell 8.4%
- PowerShell 6.5%
- Nix 3.4%
- Other 0.1%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
Some checks failed
release-please / release-please (push) Failing after 4s
release-please / build (push) Failing after 0s
release-please / post-release (push) Has been skipped
check rustfmt / rustfmt (push) Failing after 2s
build / build (map[features:xp os:windows-2022 target:i686-pc-windows-msvc], dev) (push) Has been cancelled
build / build (map[features:xp os:windows-2022 target:i686-pc-windows-msvc], release) (push) Has been cancelled
build / build (map[os:macos-14 target:aarch64-apple-darwin], dev) (push) Has been cancelled
build / build (map[os:macos-14 target:aarch64-apple-darwin], release) (push) Has been cancelled
build / build (map[os:macos-14 target:x86_64-apple-darwin], dev) (push) Has been cancelled
build / build (map[os:macos-14 target:x86_64-apple-darwin], release) (push) Has been cancelled
build / build (map[os:ubuntu-24.04 target:aarch64-linux-android], dev) (push) Has been cancelled
build / build (map[os:ubuntu-24.04 target:aarch64-linux-android], release) (push) Has been cancelled
build / build (map[os:ubuntu-24.04 target:x86_64-unknown-linux-musl], dev) (push) Has been cancelled
build / build (map[os:ubuntu-24.04 target:x86_64-unknown-linux-musl], release) (push) Has been cancelled
build / build (map[os:ubuntu-24.04-arm target:aarch64-unknown-linux-musl], dev) (push) Has been cancelled
build / build (map[os:ubuntu-24.04-arm target:aarch64-unknown-linux-musl], release) (push) Has been cancelled
build / build (map[os:windows-2022 target:x86_64-pc-windows-msvc], dev) (push) Has been cancelled
build / build (map[os:windows-2022 target:x86_64-pc-windows-msvc], release) (push) Has been cancelled
build / library (push) Has been cancelled
Security audit / security_audit (push) Has been cancelled
build / e2e (map[os:macos-14 target:aarch64-apple-darwin]) (push) Has been cancelled
build / e2e (map[os:ubuntu-24.04 target:x86_64-unknown-linux-musl]) (push) Has been cancelled
build / e2e (map[os:ubuntu-24.04-arm target:aarch64-unknown-linux-musl]) (push) Has been cancelled
build / e2e (map[os:windows-2022 target:i686-pc-windows-msvc]) (push) Has been cancelled
build / e2e (map[os:windows-2022 target:x86_64-pc-windows-msvc]) (push) Has been cancelled
build / android-app (push) Has been cancelled
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> |
||
| .github | ||
| .release-please | ||
| .vscode | ||
| android | ||
| assets | ||
| docs/images | ||
| nix | ||
| scripts | ||
| src | ||
| .editorconfig | ||
| .gitattributes | ||
| .gitignore | ||
| build.rs | ||
| Cargo.lock | ||
| Cargo.toml | ||
| CHANGELOG.md | ||
| CODEOWNERS | ||
| Cross.toml | ||
| flake.lock | ||
| flake.nix | ||
| install.ps1 | ||
| install.sh | ||
| README.md | ||
| rust-toolchain.toml | ||
PC Status Client - Rust
PC の状態を取得し、PC Statusに送信、表示するツールです。
![]() |
![]() |
|---|
注意
ツールの性質上、以下の内容が他者に誰でも見られる状態で送信されるため、少しでも不快感を感じる場合は使用しないでください。
個人に繋がるような情報はホスト名を除き送信される事はありませんが、必要に応じて PC のホスト名を変更するか、或いは .env 内に以下の Key を追加してください。
HOSTNAME=ホスト名として表示させたい文字列
送信、表示内容
- PC のホスト名 (e.g.
assault-e5dmts)- ホスト名に個人情報などが含まれている場合は上記注意を参考にホスト名を変更してください。
- 64 文字まで受け付けますが、32 文字目以降は ... で隠されます。
マウスオーバーで全て表示されます。
- OS のバージョン (e.g.
Windows 10 Home(Windows_NT win32 x64 10.0.19044)orWindows 10 (19045)) - CPU 名、CPU 使用率 (全体, コアごと) (e.g.
AMD Ryzen 5 3500 6-Core Processor) - 物理メモリ使用量、スワップメモリ使用量
- マウントされているストレージ使用量 (実行されている root を参照)
- GPU 使用率、GPU メモリ使用量 (NVIDIA GPU は複数枚対応・温度も。Android は Adreno)
- 連続起動時間
- Load Average (Linux のみ)
- バッテリー残量、充電中かどうか (バッテリーのある PC・スマホのみ)
- センサーの温度 (CPU、NVMe など。Windows は管理者権限 (
-Systemでのインストール) のときだけ取れます。Android は CPU・GPU・メモリ・バッテリーなどにまとめて表示)
対応環境
最近の Windows (Server 含む), macOS, Linux であれば動作すると思います。Windows XP などの古い Windows では、32 ビット版 (pcsc-rs-…-i686-pc-windows-msvc.exe) を手動で入れてください。
もし動作しない場合は Issues から報告をお願いします。
使い方
Windows・Linux・macOS はコマンド1つで、Synology NAS は DSM のタスクスケジューラで、Android は PC から adb で、NixOS などの Nix では flake で入れられます。
Windows
PowerShell で最新のリリースを入れ、タスクスケジューラに登録して起動します(install.ps1)。以後の更新は pcsc-rs が自分で行います。
# このユーザーだけ(%LOCALAPPDATA%\pcsc-rs。ログオンしたら起動)
$env:PASS = "npU7pmkkYfuUdKfqzm2BtDfBPEe4pizrXyPVj8Fby3KaUtehNu3ToDtM8uEdGBr3AS9LRUkZixtZxuKTvsL2e4BVrfzWWG7RqqVThLWsVLHLaJJ8ekeGuHtLBkfZpBtv"; & ([scriptblock]::Create((irm https://raw.githubusercontent.com/Zel9278/pcsc-rs/main/install.ps1)))
# PC 全体(%ProgramFiles%\pcsc-rs。PC の起動時に SYSTEM として起動): 管理者の PowerShell で、上の行の最後に -System を付ける
- 表示する名前は
-Hostname 名前、止めて消すときは-Uninstallを最後に付けます。 - PC Status に出さない項目は
-Hide gpu_usage,temperatureのように付けます(名前は設定のPCSC_HIDE)。-Hide ""で全部出すように戻ります。 - もう一度実行すると、入っている
.envのPASSと設定のまま最新版に入れ直します($env:PASSは省略可)。 - 確認はタスクスケジューラの「pcsc-rs」(ユーザー版は「pcsc-rs (ユーザー名)」)で。
手動で入れる場合
- リリースページから最新の
pcsc-rs-…-x86_64-pc-windows-msvc.exeをダウンロードします。 - 適当なフォルダに保存し、同じフォルダに
.envファイルを作成して以下の Key を追加します。
PASS=npU7pmkkYfuUdKfqzm2BtDfBPEe4pizrXyPVj8Fby3KaUtehNu3ToDtM8uEdGBr3AS9LRUkZixtZxuKTvsL2e4BVrfzWWG7RqqVThLWsVLHLaJJ8ekeGuHtLBkfZpBtv
- ダウンロードしたファイルを実行します。
- PC Statusにアクセスし、自分の PC が表示されていれば完了です。
必要に応じて pcsc-rs.exe のショートカットを shell:startup に追加すれば、PC と同時に起動するようになります。
Linux
下のコマンドで最新のリリースを入れ、systemd に登録して起動します(install.sh)。以後の更新は pcsc-rs が自分で行います。
# システム全体(/usr/local/bin、systemd のサービス)
curl -fsSL https://raw.githubusercontent.com/Zel9278/pcsc-rs/main/install.sh | sudo PASS=npU7pmkkYfuUdKfqzm2BtDfBPEe4pizrXyPVj8Fby3KaUtehNu3ToDtM8uEdGBr3AS9LRUkZixtZxuKTvsL2e4BVrfzWWG7RqqVThLWsVLHLaJJ8ekeGuHtLBkfZpBtv sh
# このユーザーだけ(~/.local/bin、systemd --user のサービス。sudo 不要)
curl -fsSL https://raw.githubusercontent.com/Zel9278/pcsc-rs/main/install.sh | PASS=npU7pmkkYfuUdKfqzm2BtDfBPEe4pizrXyPVj8Fby3KaUtehNu3ToDtM8uEdGBr3AS9LRUkZixtZxuKTvsL2e4BVrfzWWG7RqqVThLWsVLHLaJJ8ekeGuHtLBkfZpBtv sh
- NixOS ではシステム全体には入れられません(
/etc/systemdが設定から作られるため)。Nix のモジュールを使ってください。 - 状態は
systemctl status pcsc-rs(ユーザー版はsystemctl --user status pcsc-rs)、ログはjournalctl -u pcsc-rs(ユーザー版はjournalctl --user -u pcsc-rs)で見られます。 - ユーザー版をログアウト中も動かすには
loginctl enable-lingerが必要です。 - もう一度実行すると、入っているサービスの
PASSのまま最新版に入れ直します(PASS=は省略可)。 HOSTNAMEなどの設定は、サービスにEnvironment="HOSTNAME=…"を足してください(sudo systemctl edit pcsc-rs、ユーザー版はsystemctl --user edit pcsc-rs)。- PC Status に出さない項目は、
PASS=の後ろにPCSC_HIDE=gpu_usage,temperatureを足して実行すれば入ります(名前は設定のPCSC_HIDE)。PCSC_HIDE=を付けて実行すると全部出すように戻り、付けなければ前の設定のままです。
手動で入れる場合
sudo install -D --no-target-directory pcsc-rs-* /usr/local/bin/pcsc-rs を実行し、Systemd に登録します。
sudo --preserve-env=EDITOR systemctl edit --force --full pcsc-rs.service
[Unit]
Description=PCStatus Client
Wants=network-online.target
After=network-online.target
[Service]
Environment="PASS=npU7pmkkYfuUdKfqzm2BtDfBPEe4pizrXyPVj8Fby3KaUtehNu3ToDtM8uEdGBr3AS9LRUkZixtZxuKTvsL2e4BVrfzWWG7RqqVThLWsVLHLaJJ8ekeGuHtLBkfZpBtv"
Environment="PCSC_UPDATED=terminate"
ExecStart=/usr/local/bin/pcsc-rs
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
sudo systemctl enable --now pcsc-rs
Synology NAS
SSH を有効にしなくても、DSM のタスクスケジューラで入れられます(scripts/synology.sh)。x86_64 と arm64 の機種に対応しています。
- 「コントロールパネル」→「タスクスケジューラ」→「作成」→「トリガーされたタスク」→「ユーザー指定のスクリプト」
- 「全般」でユーザーを
root、イベントを「ブートアップ」にする - 「タスク設定」のユーザー指定のスクリプトに次の1行を書く
curl -fsSL https://raw.githubusercontent.com/Zel9278/pcsc-rs/main/scripts/synology.sh | PASS=npU7pmkkYfuUdKfqzm2BtDfBPEe4pizrXyPVj8Fby3KaUtehNu3ToDtM8uEdGBr3AS9LRUkZixtZxuKTvsL2e4BVrfzWWG7RqqVThLWsVLHLaJJ8ekeGuHtLBkfZpBtv sh
- 作ったタスクを右クリックして「実行」すると、再起動しなくてもすぐ動きます
/volume1/pcsc-rsに置いて動かします(DSM の更新で消えないよう、データボリュームに置きます。PCSC_DIR=で変えられます)。ログは/volume1/pcsc-rs/pcsc-rs.logです- 落ちたとき・自動更新のあとは 5 秒後に起動し直します。以後の更新は pcsc-rs が自分で行います
- PC Status に出さない項目は
PCSC_HIDE=gpu_usage,temperatureのように付けます(名前は設定のPCSC_HIDE) - 表示名を変えるときは
PCSC_HOSTNAME=<名前>を付けます(DSM のシェルはHOSTNAMEを自分で入れるので、この名前で渡します) - 2回目からは
PASS=を省けます(置き場所の.envを使います)。止めるときは、同じ1行にPCSC_STOP=1を付けて実行します
macOS
Linux と同じコマンドで最新のリリースを入れ、launchd に登録して起動します。ログイン時に起動し、終了したら(更新のあとも)起動し直します。
# このユーザーだけ(~/.local/bin、~/Library/LaunchAgents。sudo 不要)
curl -fsSL https://raw.githubusercontent.com/Zel9278/pcsc-rs/main/install.sh | PASS=npU7pmkkYfuUdKfqzm2BtDfBPEe4pizrXyPVj8Fby3KaUtehNu3ToDtM8uEdGBr3AS9LRUkZixtZxuKTvsL2e4BVrfzWWG7RqqVThLWsVLHLaJJ8ekeGuHtLBkfZpBtv sh
# Mac 全体(/usr/local/bin、/Library/LaunchDaemons。ログインしていなくても動く)
curl -fsSL https://raw.githubusercontent.com/Zel9278/pcsc-rs/main/install.sh | sudo PASS=npU7pmkkYfuUdKfqzm2BtDfBPEe4pizrXyPVj8Fby3KaUtehNu3ToDtM8uEdGBr3AS9LRUkZixtZxuKTvsL2e4BVrfzWWG7RqqVThLWsVLHLaJJ8ekeGuHtLBkfZpBtv sh
-
状態は
launchctl print gui/$(id -u)/io.github.zel9278.pcsc-rs(Mac 全体ならsudo launchctl print system/io.github.zel9278.pcsc-rs)、ログは~/Library/Logs/pcsc-rs.log(Mac 全体なら/var/log/pcsc-rs.log)。 -
もう一度実行すると、入っている設定の
PASSとHOSTNAME・DEV_MODE・PCSC_URI・PCSC_HIDEのまま最新版に入れ直します。 -
PC Status に出さない項目は、
PASS=の後ろにPCSC_HIDE=gpu_usage,temperatureを足して実行します(名前は設定のPCSC_HIDE)。PCSC_HIDE=で全部出すように戻ります。 -
HOSTNAMEなどを足すときは、plist に書いてからもう一度実行します。plutil -insert EnvironmentVariables.HOSTNAME -string "表示したい名前" ~/Library/LaunchAgents/io.github.zel9278.pcsc-rs.plist curl -fsSL https://raw.githubusercontent.com/Zel9278/pcsc-rs/main/install.sh | sh -
止めて消すとき:
launchctl bootout gui/$(id -u)/io.github.zel9278.pcsc-rsのあと、plist と~/.local/bin/pcsc-rsを消します。 -
ブラウザでダウンロードした実行ファイルを直接使うときは、
chmod +xとxattr -d com.apple.quarantine <ファイル名>が必要です(上のコマンドでは不要)。
Android(試験的)
アプリ(ワイヤレスデバッグ・Shizuku・root)
Releases の pcsc-rs-<バージョン>-android.apk(arm64)を入れて開き、動かし方を選んで、PASS を入れて「開始」を押します。動かし方は次の3つから選べます。
| 動かし方 | 要るもの | 向いている場合 |
|---|---|---|
| ワイヤレスデバッグ | Android 11 以降・Wi-Fi。最初に一度だけペアリングする(コードは通知に入力) | root も Shizuku も無い |
| Shizuku | Shizuku が動いていること | もう Shizuku を使っている。一度起動すれば、再起動まで Wi-Fi なしで操作できる |
| root | root 化した端末(クライアントは adb と同じ shell ユーザーの権限に下げて動かす) | 再起動後の自動開始を確実にしたい |
- 動かし方は下の adb 版と同じで、
/data/local/tmp/pcsc-rsに置いて端末から切り離して動かします。アプリを閉じても動き続けます。root や、root で起動した Shizuku から動かしても、クライアントとそのファイルは shell ユーザーのものになるので、あとで別の動かし方に切り替えられます - ワイヤレスデバッグと Shizuku のときは、開発者向けオプションの USB デバッグをオンにしておいてください。オフだと、ワイヤレスデバッグがオフになったとき(Wi-Fi が切れたときも)に adbd と一緒にクライアントも止まります
- adb 版で入れていたときは、PASS と名前をそのまま読み込みます
- 「PC Status に出さない項目」で選んだ項目は送りません(設定の
PCSC_HIDEと同じ)。変えたら「再起動」で反映されます - ワイヤレスデバッグは、ペアリングしたあとはアプリが自分でオンにできます(ネットワークごとに初回だけ「このネットワークで常に許可」が要ります)
- 「スマホの再起動後に自動で開始」: root はそのまま、ワイヤレスデバッグは許可済みの Wi-Fi につながっていれば、Shizuku は Shizuku も起動時に動く(Sui や root)ときだけ効きます
自分でビルドするときは android/README.md を見てください。
PC から adb で
root なしで、PC から adb で入れます(scripts/android-adb.sh)。adb shell の権限で動くので、CPU(コアごと)・GPU(Adreno)・ロードアベレージも取れます。
# USB か、無線デバッグ(adb pair / adb connect)でつないでから
PASS=<PASS> scripts/android-adb.sh install --hostname 表示したい名前
scripts/android-adb.sh status # 動いているか
scripts/android-adb.sh log # ログ
scripts/android-adb.sh stop # 止める
scripts/android-adb.sh devices # つながっている端末とシリアル
# PC Status に出さない項目(設定の PCSC_HIDE)。PowerShell 版は -Hide gpu_usage,temperature
PCSC_HIDE=gpu_usage,temperature scripts/android-adb.sh install
Windows の PC からは PowerShell 版(scripts/android-adb.ps1)を使います。
$env:PASS = "<PASS>"; & ([scriptblock]::Create((irm https://raw.githubusercontent.com/Zel9278/pcsc-rs/main/scripts/android-adb.ps1))) install -Hostname 表示したい名前
# status / log / stop も同じ形で(install の代わりに書く)
- 端末から切り離して動くので、ケーブルを抜いても、画面を消して省電力(Doze)に入っても止まりません。落ちたとき・自動更新のあとは 5 秒後に起動し直します
- 端末を再起動すると止まるので、もう一度
installしてください(2回目からはPASSと名前を引き継ぎます) - 名前を指定しないと機種名(例:
SH-M28)になります - adb が PATH に無いときは、
--adb /path/to/adb(PowerShell 版は-Adb C:\path\to\adb.exe)か、環境変数ADBで場所を指定します - 端末が何台もつながっているときは、
--serial <シリアル>(PowerShell 版は-Serial)かANDROID_SERIALで選びます。シリアルはdevicesで一覧が出ます(無線デバッグならIP:ポート)
Nix
flake でパッケージと、NixOS・nix-darwin・home-manager 用のモジュール(services.pcsc-rs)を配っています。Nix で入れた pcsc-rs は自分では更新せず、nix flake update などで更新します。
# flake.nix
{
inputs.pcsc-rs.url = "github:Zel9278/pcsc-rs";
}
inputs.pcsc-rs.inputs.nixpkgs.follows = "nixpkgs" は付けないでください。pcsc-rs のビルドには Rust 1.98 以降が要り、安定版の nixpkgs(NixOS 26.05 は 1.95)ではビルドできません。
# NixOS(systemd のサービス): nixosConfigurations.<host>.modules に pcsc-rs.nixosModules.default
# nix-darwin(LaunchDaemon): darwinConfigurations.<host>.modules に pcsc-rs.darwinModules.default
# home-manager(Linux は systemd --user、macOS は LaunchAgent): pcsc-rs.homeManagerModules.default
{
services.pcsc-rs = {
enable = true;
# PASS=<パスワード> の1行を書いたファイル。sops-nix や agenix の出力など
passFile = "/run/secrets/pcsc-rs.env";
# または pass = "…";(Nix ストアに入り、誰でも読めます)
# hostname = "表示したい名前";
# devMode = true;
# uri = "wss://pcss.eov2.com/server";
# hide = [ "gpu_usage" "temperature" ]; # PC Status に出さない項目(その他の設定の PCSC_HIDE)
};
}
モジュールを使わずに試すだけなら PASS=… nix run github:Zel9278/pcsc-rs で動きます。
その他の設定
-
PCSC_UPDATED更新処理後の動作の設定。新しいリリースの確認は起動時と、起動中は6時間ごとに行います。
値 説明 noneなにもしない (デフォルト) terminate終了する restart再起動する -
PCSC_URI接続先のサーバー (デフォルト:
wss://pcss.eov2.com/server)
v2 から WebSocket で接続します。v1 と同じhttps://pcss.eov2.comのような形でも、wss://…/serverに読み替えて接続します。 -
DEV_MODEtrueにすると同じホスト名で複数台つなげられます。PC Status には[DEV] ホスト名_番号と表示されます。 -
HOSTNAMEPC Status に表示するホスト名 (デフォルト: PC のホスト名)
-
PCSC_HIDEPC Status に出さない項目。カンマか空白で区切って並べます (例:
PCSC_HIDE=gpu_usage,temperature)。その項目は送らず、PC Status には「非公開」と出ます。値 出さないもの osOS の名前とバージョン cpuCPU の使用率 (コアごとも) cpu_nameCPU の名前と、コアの種類 cpu_frequencyコアの最高周波数 memoryメモリとスワップ storageストレージ gpuGPU の情報すべて (下の3つと、GPU の有無) gpu_nameGPU の名前 gpu_usageGPU の使用率 gpu_memoryGPU のメモリ temperature温度 (GPU の温度も) batteryバッテリー uptime起動からの時間 loadavgロードアベレージ iowaitIO 待ち 知らない名前は起動時のログに出ます。ホスト名とクライアントのバージョンは、PC を見分けるのに使うので隠せません。


