A modern terminal-based system monitoring tool written in Go, featuring a sleek and interactive terminal user interface.
go-monitor is a lightweight system monitoring application that provides real-time insights into your system's performance. Built with Go and the Charm libraries (Bubbletea, Bubbles, and Lipgloss), it offers an elegant terminal user interface for monitoring system resources.
- Real-time Process Monitoring: View running processes in an interactive table interface
- System Resource Statistics:
- CPU usage monitoring
- Memory usage tracking (total, used, free, cached, etc.)
- Network statistics
- Modern Terminal UI:
- Responsive table layout
- Color-themed interface with light/dark mode support
- Interactive selection and navigation
- Regular updates with millisecond precision
- charmbracelet/bubbletea - Terminal UI framework
- charmbracelet/bubbles - TUI components
- charmbracelet/lipgloss - Style definitions
- shirou/gopsutil - System statistics collection
go install github.com/hambosto/go-monitor/cmd/go-monitor@latest
Or clone and build from source:
git clone https://github.com/hambosto/go-monitor.git
cd go-monitor
go build ./cmd/go-monitor
Add the flake to your inputs:
# In your flake.nix
inputs = {
wallpaper-manager.url = "github:hambosto/go-monitor";
};
Enable the module in your configuration:
# In your configuration.nix or home.nix
{ inputs, ... }: {
imports = [
inputs.go-monitor.nixosModules.default
];
programs.go-monitor.enable = true;
}
## Usage
Simply run the binary after installation:
```bash
go-monitor
- Use arrow keys to navigate through the process table
- Press
q
to quit the application - The interface updates automatically to show the latest system statistics
.
├── cmd/
│ └── go-monitor/ # Main application entry point
├── internal/
│ ├── system/ # System metrics collection
│ └── tui/ # Terminal UI components
│ ├── components/ # Reusable UI components
│ └── theme/ # UI styling and colors
Contributions are welcome! Feel free to submit issues and pull requests.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.