useSystemMonitor

Fluxlay デスクトップアプリからストリーミングされるシステム&ハードウェア情報をサブスクライブします。サイバーパンク風 HUD やシステムモニター壁紙の構築に使用します。

インポート

import { useSystemMonitor } from "@fluxlay/react";

シグネチャ

function useSystemMonitor(options?: SystemMonitorOptions): SystemMonitorInfo;

引数

SystemMonitorOptions

各カテゴリのポーリング間隔をミリ秒単位で指定します。省略したフィールドにはデフォルト値が使われます。

プロパティデフォルト説明
cpuIntervalMsnumber500CPU 使用率、コア別使用率、周波数。
memoryIntervalMsnumber1000メモリとスワップの使用状況。
networkIntervalMsnumber1000ネットワーク受信/送信速度。
diskIoIntervalMsnumber2000ディスク読み書き速度。
diskSpaceIntervalMsnumber30000マウントポイントごとのディスク容量。
batteryIntervalMsnumber10000バッテリー残量と充電ステータス。
processIntervalMsnumber10000実行中のプロセス数。
loadAverageIntervalMsnumber5000システムのロードアベレージ。

間隔を短くするとデータの反応性が上がりますが、CPU 使用率が増加します。壁紙の用途に合わせてバランスを調整してください。

戻り値

CPU

プロパティ説明
cpuUsagenumberCPU 全体の使用率(0.0 – 100.0)。
cpuPerCorenumber[]コアごとの使用率(0.0 – 100.0)。
cpuFrequencyMhznumber[]コアごとの現在クロック周波数(MHz)。

メモリ

プロパティ説明
memoryTotalnumber物理メモリ合計(バイト)。
memoryUsednumber物理メモリ使用量(バイト)。
memoryUsagenumberメモリ使用率(0.0 – 100.0)。
swapTotalnumberスワップ合計(バイト)。
swapUsednumberスワップ使用量(バイト)。
swapUsagenumberスワップ使用率(0.0 – 100.0)。

バッテリー

プロパティ説明
batteryLevelnumber | nullバッテリー残量(0.0 – 100.0)。バッテリーがなければ null
batteryChargingboolean | null充電中かどうか。バッテリーがなければ null

ネットワーク

プロパティ説明
networkRxBytesPerSecnumberネットワーク受信速度(バイト/秒)。
networkTxBytesPerSecnumberネットワーク送信速度(バイト/秒)。

ディスク

プロパティ説明
diskReadBytesPerSecnumberディスク読み取り速度(バイト/秒)。
diskWriteBytesPerSecnumberディスク書き込み速度(バイト/秒)。
disksDiskInfo[]マウントポイントごとのディスク容量情報。

DiskInfo:

プロパティ説明
mountPointstringマウントポイント(例: "/")。
namestringディスク名。
totalBytesnumber合計容量(バイト)。
availableBytesnumber空き容量(バイト)。
usagenumber使用率(0.0 – 100.0)。

システム情報

プロパティ説明
loadAverage[number, number, number]ロードアベレージ(1 分 / 5 分 / 15 分)。
processCountnumber実行中のプロセス数。
uptimeSecsnumberシステム起動からの経過時間(秒)。
hostnamestringホスト名。
osNamestringOS 名とバージョン。
cpuBrandstringCPU モデル名(例: "Apple M2 Pro")。
physicalCoreCountnumber物理コア数。
logicalCoreCountnumber論理コア数。
cpuArchstringCPU アーキテクチャ(例: "aarch64")。
kernelVersionstringカーネルバージョン。

使用例

function Wallpaper() {
  const { cpuUsage, memoryUsage, batteryLevel, batteryCharging } = useSystemMonitor({
    cpuIntervalMs: 500,
    memoryIntervalMs: 1000,
    batteryIntervalMs: 10000
  });
 
  // CPU 負荷に応じて背景色を変化
  const bg = cpuUsage > 80 ? "#1a0000" : "#000a1a";
 
  return (
    <div style={{ background: bg, color: "white", padding: 32, fontFamily: "monospace" }}>
      <p>CPU: {cpuUsage.toFixed(1)}%</p>
      <p>Memory: {memoryUsage.toFixed(1)}%</p>
      <p>
        Battery: {batteryLevel !== null ? `${batteryLevel.toFixed(0)}%` : "N/A"}
        {batteryCharging ? " ⚡" : ""}
      </p>
    </div>
  );
}

useProperties と組み合わせる

useProperties と組み合わせることで、エンドユーザーがポーリング間隔を変更できるようになります。

function Wallpaper() {
  const props = useProperties();
  const info = useSystemMonitor({
    cpuIntervalMs: props.cpuInterval as number
  });
  // ...
}

備考

  • 各カテゴリは設定された間隔でのみ refresh と値の読み取りが行われます。間隔外のティックではキャッシュ値が使われます。
  • データの更新がないティックではストリームへの送信がスキップされるため、受信頻度は設定した最短間隔と一致します。
  • ホスト名、OS 名、CPU モデル等の静的情報はアプリ起動時に 1 回だけ取得され、以降は変化しません。
  • モニタリングは最初のサブスクライバー接続時に開始し、全てのサブスクライバー切断時に停止します。
  • このフックは Fluxlay デスクトップアプリ内でのみ動作します。通常のブラウザでは初期値のゼロ値を返します。
  • options の値が変更されると、ストリームが自動的に再接続されます。