Class Central is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Coursera

Rust GUI From Zero

Pragmatic AI Labs via Coursera

Overview

Google, IBM & Meta Certificates — All 10,000+ Courses at 40% Off
One annual plan covers every course and certificate on Coursera. 40% off for a limited time.
Get Full Access
Build native desktop applications in Rust on Linux. This hands-on course walks you through five GUI frameworks — iced, FLTK, GTK4, relm4, and egui — on Kubuntu, building a portfolio of working applications: a counter, a calculator with unit tests, a to-do list, a Pong game, a password generator, Simon Says, and a quiz app. You will install Rust with rustup, configure Kate as a Rust editor with embedded terminal, and use cargo and clippy to build and lint each project. The course closes with patterns for production: choosing the right framework, persisting state to disk, keeping the UI responsive while data loads, and shipping a binary that runs on every Linux desktop. Every demo is recorded in real time on a Kubuntu 24.04 workstation, so you see the full edit-compile-run loop, including dependency wiring and clippy warnings. By the end, you will have built eight working GUIs in Rust and know which framework to reach for when the browser is the wrong surface.

Syllabus

  • GUIs for Data Engineering — Why and How
    • Frame why a native Rust GUI is the right surface when the browser is the wrong one — offline-first ingestion, microsecond latency, and data that must never leave the machine. Read CSV and query SQLite from a desktop app, plot with egui_plot and plotters, and trace the state-message-update-view loop common to retained-mode frameworks.
  • Environment Setup and Iced Hello World
    • Stand up a Kubuntu Rust development environment from scratch — install rustup and the toolchain, switch from Bash to Zsh, and configure Kate with an embedded terminal for tight edit/build cycles. Then implement the iced Sandbox trait to write a Hello World and a counter button that updates state in response to messages.
  • Building an iced Calculator
    • Build a 150-line iced calculator with a state struct, a message enum, and a view function — then add unit tests that exercise the calculator's update logic without launching a window. Walk through the core iced widgets (button, text, column, row, container) and modify each to extend the calculator's behavior.
  • An iced To-Do List
    • Extend the iced patterns from Week 3 into a list-driven application. Back the to-do list with a Vec of TodoItem values in state, wire up the iced text_input widget for new-item entry, and route per-row toggle and delete actions through the message enum so each item mutates independently.
  • A Pong Game with FLTK
    • Walk through the official FLTK Pong example, then extend it across four iterations: add a pause button that halts the game loop, a slider that varies paddle speed at runtime, and a high-score file written to disk between sessions. Each step is a concrete state-and-message extension to a working game.
  • A Password Generator with GTK4
    • Build a GTK4 password generator using the gtk4 crate's ApplicationWindow, Entry, and Button widgets, with the rand crate generating random ASCII characters. Add a ToggleButton that flips the Entry's visibility property to mask or reveal the generated password.
  • Simon Says with relm4
    • Build a Simon Says game with relm4 — a Rust GUI framework that layers an ELM-style Component trait on top of GTK4. Lay out four colored buttons in a 2 by 2 grid, then add a Vec of Color values as the sequence and a playback timer that lights each button in turn before the player has to repeat the pattern.
  • A Quiz Application with egui
    • Build a quiz application in egui — an immediate-mode framework where the entire UI is redrawn every frame from current state. Define a Question struct, run a frame-counted timer that ticks down each draw, and accumulate a score across a multi-question quiz with a restart flow at the end.
  • Patterns and Production
    • Compare iced, egui, GTK4, FLTK, and relm4 head-to-head — ergonomics, platform reach, async story, theming. Add provable contracts to GUI state with the assert_invariant macro so impossible UI states fail loudly at runtime, then ship a release with cargo-dist for cross-platform binaries, Flatpak for sandboxed Linux, and AppImage for portable distribution.
  • Capstone — Build and Ship a Rust Desktop Application
    • A culminating practice assignment that synthesizes every framework and pattern from Weeks 1 through 9 into one shippable desktop application.

Taught by

Noah Gift

Reviews

Start your review of Rust GUI From Zero

Never Stop Learning.

Get personalized course recommendations, track subjects and courses with reminders, and more.

Someone learning on their laptop while sitting on the floor.