Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

Jump to content

Draft:Iced (GUI library)

From Wikipedia, the free encyclopedia


Iced
DevelopersHéctor Ramón Jiménez and contributors
ReleaseSeptember 5, 2019; 6 years ago (2019-09-05)
Stable release
0.14.0 / December 7, 2025; 7 months ago (2025-12-07)
Written inRust
Operating systemCross-platform (Windows, macOS, Linux, Web)
TypeWidget toolkit
LicenseMIT License
Websiteiced.rs
Repositorygithub.com/iced-rs/iced

Iced is a cross-platform GUI library for the Rust programming language, which emphasizes simplicity and type safety.[1][2] It was created by Héctor Ramón Jiménez in 2019 and is inspired by Elm and The Elm Architecture.[3] Rather than wrapping native platform widgets, Iced uses its own rendering pipeline. It is most notably used as the GUI foundation for System76's COSMIC desktop environment.[2][4][5]

History

[edit]

Iced originated as an attempt to bring the simplicity of Elm and The Elm Architecture into Coffee, a 2D game engine Jiménez was developing in Rust.[1] The core of the library was implemented during May 2019 as a user interface module within Coffee. The first alpha version was released as a renderer-agnostic GUI library, which did not include its own renderer and was instead implemented on top of ggez, a Rust game library.[1]

Since then, the focus shifted towards providing a batteries-included, end-user-oriented GUI library while keeping its ecosystem modular.[1] The name "Iced" was chosen simply because Jiménez enjoys iced coffee.[3]

In 2022, System76 announced that its new COSMIC desktop environment would use Iced instead of GTK.[4][2][5] Development of Iced has been sponsored by the Cryptowatch team at Kraken.[6]

Architecture

[edit]

Iced's architecture is based on The Elm Architecture, which splits an application into four concepts: state, messages, update logic, and view logic.[7] The state serves as the single source of truth for the application. The view reads the state and constructs the user interface, but cannot modify the state directly. Instead, user interactions generate messages, which are passed to the update function to modify the state accordingly.[7]

Iced also introduces subscriptions, which allow applications to listen for external events such as elapsed time or system events and send messages in response.[7]

Version 0.14 introduced time-travel debugging, allowing developers to step backward and forward through an application's state history.[8][9]

Rendering

[edit]

Iced uses wgpu as its default rendering backend for GPU-accelerated graphics, supporting Vulkan, Metal, DirectX 12, OpenGL and OpenGL ES.[10] If no compatible GPU device is available, Iced falls back to tiny-skia for software rendering.[10] The rendering backend can be selected manually through the library's feature flags.[10]

System76 engineer Jeremy Soller developed iced-dyrend, a dynamic renderer that determines at runtime whether to use GPU rendering via wgpu or software rendering via tiny-skia. This dynamic renderer was later integrated into the Iced toolkit itself.[11]

Notable uses

[edit]

The most prominent user of Iced is System76's COSMIC desktop environment, which adopted the toolkit in 2022 after evaluating it against GTK.[4][2] COSMIC is a desktop environment for Linux written entirely in Rust, and uses Iced for its applications including a text editor, terminal emulator, file manager, and settings application.[12]

Other notable applications built with Iced include Sniffnet, a cross-platform network traffic monitor[13] and Kraken's desktop trading application.[6]

See also

[edit]

References

[edit]
  1. ^ a b c d "iced-rs/iced: A cross-platform GUI library for Rust, inspired by Elm". GitHub. Retrieved 2026-04-09.
  2. ^ a b c d "System76's COSMIC Desktop Ditched GTK in Favor of Iced". Linuxiac. 2022-10-04. Retrieved 2026-04-10.
  3. ^ a b "SE Radio 713: Héctor Ramón Jiménez on Building a GUI library in Rust". Software Engineering Radio. 2026-03-25. Retrieved 2026-04-09.
  4. ^ a b c "System76's Pop!_OS COSMIC Desktop to make use of Iced Rust toolkit rather than GTK". OSnews. 2022-10-05. Retrieved 2026-04-09.
  5. ^ a b "System76's Pop!_OS COSMIC Desktop To Make Use Of Iced Rust Toolkit Rather Than GTK". Phoronix. 2022-10-01. Retrieved 2026-04-10.
  6. ^ a b "Kraken's Cryptowatch ships desktop trading terminal for expert traders". Cointelegraph. 2020-10-20. Retrieved 2026-04-10.
  7. ^ a b c "Introduction - iced — A Cross-Platform GUI Library for Rust". book.iced.rs. Retrieved 2026-04-09.
  8. ^ "Iced 0.14 Released For Popular Rust Cross-Platform GUI Library". Phoronix. 2025-12-07. Retrieved 2026-04-09.
  9. ^ "Iced 0.14: Rust GUI Gets Reactive Rendering & Time Travel". byteiota.com. 2025-12-08. Retrieved 2026-04-09.
  10. ^ a b c "iced - Rust". docs.rs. Retrieved 2026-04-09.
  11. ^ "More On COSMIC DE To Kick Off 2023!". System76 Blog. 2023-01-31. Retrieved 2026-04-09.
  12. ^ "System76's Rust-Based COSMIC Desktop Promises HDR Support, Smooth NVIDIA Experience". 9to5Linux. 2022-12-01. Retrieved 2026-04-09.
  13. ^ "Console #154 - An Interview with Giuliano of Sniffnet". Console. 2023-04-23. Retrieved 2026-04-09.
[edit]