Skip to content

TylerCode/cycles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Snap Build AppImage

cycles

Desktop CPU Monitor I threw together while trying to debug some issues with my computer. Have not been dedicating a lot of time to this lately since I'm not on a machine with Snap access anymore.

image

Overview

This application provides a real-time graphical representation of CPU utilization for each logical core. It displays the utilization percentage and frequency of each core with history going back 30 measurements.

The ultimate goal is to have something more akin to the performance tab in Windows Task Manager.

image

Features

  • Displays CPU core utilization and frequency in real-time
  • Customizable update interval (default: every 2 seconds)
  • Utilization graphs showing historical data
  • Command-line flags for customization:
    • --columns: Number of columns in the grid layout (default: 4)
    • --interval: Update interval (default: 2s)
    • --history: Number of historical data points to keep (default: 30)
    • --logical: Show logical cores vs physical cores (default: true)
  • Improved error handling and logging
  • Modular code structure for easier maintenance

Installation

Currently, this application is only available on x86 machines running linux. ARM64 is available via snap with the --edge flag but it's untested.

Snap Store

  • Install the snap package with
sudo snap install tylercode-cycles
  • A "Release" build will be out once I've tested it on a few other machines.

FlatPak

  • Coming in 0.5

AppImage

  • Download the latest .AppImage from the releases page.
  • Run the AppImage

Plain old executable

  • Download the latest release on the github release page. Found here...
  • Download the "cycles" file or the entire zip
  • Make it executable if it isn't already
chmod +x cycles
  • Run it! (double click or ./cycles)

Contributing

Prerequisites

  • Go (Golang) installed on your system.
  • Fyne library for UI development in Go.
  • gopsutil library for accessing system information.

Quick Start (Automated Setup)

The easiest way to get started developing:

  1. Clone the repository (I would make a fork and clone that to contribute):
git clone https://github.com/TylerCode/cycles
cd cycles
  1. Run automated setup (detects your OS and installs all dependencies):
make setup
  1. Build and run:
make run

That's it! The make setup command will:

  • Detect your Linux distribution (Ubuntu/Debian/Zorin/Pop, Fedora/RHEL, Arch)
  • Install all required system dependencies
  • Download and verify Go dependencies
  • Test that everything builds correctly

Note: If your specific distribution isn't recognized, the script will automatically detect your package manager (apt-get, dnf, or pacman) and use the appropriate installation method.

Manual Setup

If you prefer manual installation or the automated setup doesn't work:

  1. Clone the repository:
git clone https://github.com/TylerCode/cycles
cd cycles
  1. Install system dependencies:

Ubuntu/Debian:

sudo apt-get install libgl1-mesa-dev libxcursor-dev libxrandr-dev libxinerama-dev libxi-dev libglfw3-dev libxxf86vm-dev pkg-config gcc make

Fedora/RHEL:

sudo dnf install mesa-libGL-devel libXcursor-devel libXrandr-devel libXinerama-devel libXi-devel glfw-devel libXxf86vm-devel pkg-config gcc gcc-c++ make

Arch Linux:

sudo pacman -S mesa libxcursor libxrandr libxinerama libxi glfw-x11 pkg-config gcc make
  1. Install Go dependencies:
make install-deps
  1. Build the application:
make build
  1. Run it:
make run
  1. Run tests:
make test

Build System Commands

make build      # Build optimized binary
make run        # Build and run
make test       # Run all tests
make check      # Format, vet, and test
make clean      # Remove build artifacts
make help       # Show all available commands

Command-Line Options

Cycles supports several command-line flags for customization:

./cycles --columns 8 --interval 1s --history 60 --logical=false

Contrib Notes

Contributions to this project will be welcome probably after 0.6!

Please follow these steps:

  1. Fork the repository.
  2. Create a new branch (git checkout -b feature/YourFeature).
  3. Make your changes.
  4. Commit your changes (git commit -am 'Add some feature').
  5. Push to the branch (git push origin feature/YourFeature).
  6. Open a Pull Request.

License

MIT

Acknowledgments

  • Fyne team for an incredible cross-platform ui kit.
  • The gopsutil library for system information access.

About

Desktop CPU Monitor. Now on the snap store!

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •