mirror of
https://github.com/saymrwulf/powermetrics.git
synced 2026-05-14 20:48:06 +00:00
71 lines
2.4 KiB
Bash
Executable file
71 lines
2.4 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
session_name="${TMUX_SESSION_NAME:-powermetrics}"
|
|
window_name="${TMUX_WINDOW_NAME:-wall}"
|
|
recreate_session="${TMUX_RECREATE:-0}"
|
|
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
sample_ms="${SAMPLE_MS:-5000}"
|
|
hold_sec="${HOLD_SEC:-6}"
|
|
display_bias_w="${DISPLAY_BIAS_W:-}"
|
|
clamshell_factor="${CLAMSHELL_FACTOR:-}"
|
|
ambient_c="${AMBIENT_C:-}"
|
|
idle_offset_c="${IDLE_OFFSET_C:-}"
|
|
cpu_theta="${CPU_THETA_C_PER_W:-}"
|
|
gpu_theta="${GPU_THETA_C_PER_W:-}"
|
|
|
|
if [[ "${EUID}" -ne 0 ]]; then
|
|
exec sudo --preserve-env=TMUX_SESSION_NAME,TMUX_WINDOW_NAME,TMUX_RECREATE,SAMPLE_MS,HOLD_SEC,DISPLAY_BIAS_W,CLAMSHELL_FACTOR,AMBIENT_C,IDLE_OFFSET_C,CPU_THETA_C_PER_W,GPU_THETA_C_PER_W bash "$0" "$@"
|
|
fi
|
|
|
|
if ! command -v tmux >/dev/null 2>&1; then
|
|
echo "tmux is not installed." >&2
|
|
exit 1
|
|
fi
|
|
|
|
if ! command -v powermetrics >/dev/null 2>&1; then
|
|
echo "powermetrics is not available on this system." >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [[ ! -x "${script_dir}/CPUwall.sh" || ! -x "${script_dir}/GPUwall.sh" ]]; then
|
|
echo "CPUwall.sh and GPUwall.sh must be executable. Run: chmod +x CPUwall.sh GPUwall.sh tmux-wall.sh" >&2
|
|
exit 1
|
|
fi
|
|
|
|
env_prefix="SAMPLE_MS=${sample_ms} HOLD_SEC=${hold_sec}"
|
|
if [[ -n "${display_bias_w}" ]]; then
|
|
env_prefix="${env_prefix} DISPLAY_BIAS_W=${display_bias_w}"
|
|
fi
|
|
if [[ -n "${clamshell_factor}" ]]; then
|
|
env_prefix="${env_prefix} CLAMSHELL_FACTOR=${clamshell_factor}"
|
|
fi
|
|
if [[ -n "${ambient_c}" ]]; then
|
|
env_prefix="${env_prefix} AMBIENT_C=${ambient_c}"
|
|
fi
|
|
if [[ -n "${idle_offset_c}" ]]; then
|
|
env_prefix="${env_prefix} IDLE_OFFSET_C=${idle_offset_c}"
|
|
fi
|
|
if [[ -n "${cpu_theta}" ]]; then
|
|
env_prefix="${env_prefix} CPU_THETA_C_PER_W=${cpu_theta}"
|
|
fi
|
|
if [[ -n "${gpu_theta}" ]]; then
|
|
env_prefix="${env_prefix} GPU_THETA_C_PER_W=${gpu_theta}"
|
|
fi
|
|
|
|
if tmux has-session -t "${session_name}" 2>/dev/null; then
|
|
if [[ "${recreate_session}" == "1" ]]; then
|
|
tmux kill-session -t "${session_name}"
|
|
else
|
|
exec tmux attach -t "${session_name}"
|
|
fi
|
|
fi
|
|
|
|
tmux new-session -d -s "${session_name}" -n "${window_name}" -c "${script_dir}"
|
|
tmux send-keys -t "${session_name}:${window_name}.0" "${env_prefix} ./CPUwall.sh" C-m
|
|
tmux split-window -h -t "${session_name}:${window_name}" -c "${script_dir}"
|
|
tmux send-keys -t "${session_name}:${window_name}.1" "${env_prefix} ./GPUwall.sh" C-m
|
|
tmux select-layout -t "${session_name}:${window_name}" even-horizontal
|
|
|
|
exec tmux attach -t "${session_name}"
|