Robinwaita is user-friendly round-robin process scheduler for Linux written in C. It comes with a modern Libadwaita & GTK 4-based user interface.
- Easily add processes to the scheduling queue
- Round-robin scheduling algorithm, with context switches initiated by
timerfd
- Bundled Python processes to test CPU-bound, I/O-bound, and "mixed"-bound operations
- See how processes get managed by the algorithm in real-time
- Modern GTK 4 & Libadwaita interface with light and dark modes
- Check basic statistics like total context switches in a separate tab
- Given the additional low-level programming experience I've been getting recently, as well as my growing experience with operating systems concepts, I wanted to challenge myself by programming a process scheduler from scratch.
- I've also loved GNOME and its technologies like GTK for several years. I've thought about making a GTK app for a while now, so combining the two seemed like a fun fit. While the user interface for this project wasn't the focus, I'm still really happy with how it turned out.
- Robinwaita has been developed with the following versions of these packages:
libadwaita
/libadwaita-devel
version 1.5libgtk-4-dev
/gtk4-devel
4.14libglib2.0-dev
/glib2-devel
libgio-unix-2.0-dev
/gio-unix-devel
2.0libgraphene-1.0-dev
/graphene-devel
1.0python3-dev
/python3-devel
3.12.6gcc
14.2.1cmake
3.28.2pkg-config
/pkgconf-pkg-config
- Other versions may work, but I provide no guarantees.
- I provide an ARM64 build under Releases, but it's expected your system still satisfies dependencies above.
- My build environment was a Fedora 40 VM under Parallels on my M2 Pro-based MacBook Pro.
- Clone the repository:
git clone https://github.com/lolrepeatlol/Robinwaita.git
cd robinwaita
- Install dependencies: Install the dependencies noted above. Keep in mind these instructions are different across distributions, so instructions aren't provided here.
- Generate the build system using CMake, and build:
mkdir build
cd build
cmake ..
cmake --build .
- Run the application:
chmod +x robinwaita # set file as executable
./robinwaita # run it! (you can also open it from your file manager)