package app import ( "finally-a-monolithic-linux-hw-monitor/app/common" "finally-a-monolithic-linux-hw-monitor/app/mem" "finally-a-monolithic-linux-hw-monitor/app/proc" "fmt" "os" "os/signal" "syscall" "time" ) func Run() { // Clear terminal screen and hide cursor fmt.Print("\033[2J\033[?25l") // Ensure cursor is restored when exiting (Ctrl+C / SIGTERM) cleanupChannel := make(chan os.Signal, 1) signal.Notify(cleanupChannel, os.Interrupt, syscall.SIGTERM) go func() { <-cleanupChannel // Restore cursor and move below output fmt.Print("\033[?25h\n") os.Exit(0) }() term := common.NewTerminal() proc, _ := proc.GetProc() mem, _ := mem.GetMem() ticker := time.NewTicker(1 * time.Second) defer ticker.Stop() for { term.Start() proc.Render(term) mem.Render(term) term.End() <-ticker.C } }