Files
tmux-cpu-mem-monitor/main.go

59 lines
976 B
Go

package main
import (
"bufio"
"fmt"
"os"
"runtime"
"strings"
"time"
"github.com/shirou/gopsutil/v3/cpu"
"github.com/shirou/gopsutil/v3/mem"
)
func linuxID() string {
f, err := os.Open("/etc/os-release")
if err != nil {
return ""
}
defer f.Close()
sc := bufio.NewScanner(f)
for sc.Scan() {
line := sc.Text()
if strings.HasPrefix(line, "ID=") {
val := strings.TrimPrefix(line, "ID=")
val = strings.Trim(val, `"`)
return strings.ToLower(val)
}
}
return ""
}
func isSupported() bool {
switch runtime.GOOS {
case "darwin":
return true
case "linux":
id := linuxID()
return id == "ubuntu" || id == "debian" || id == "arch"
default:
return false
}
}
func main() {
if !isSupported() {
return
}
values, err := cpu.Percent(400*time.Millisecond, false)
if err != nil || len(values) == 0 {
return
}
vm, err := mem.VirtualMemory()
if err != nil {
return
}
fmt.Printf("CPU %.0f%% | RAM %.0f%% ", values[0], vm.UsedPercent)
}