Skip to content

Fork/iced#1

Merged
mikklee merged 10 commits into
mainfrom
fork/iced
Dec 17, 2025
Merged

Fork/iced#1
mikklee merged 10 commits into
mainfrom
fork/iced

Conversation

@mikklee

@mikklee mikklee commented Dec 17, 2025

Copy link
Copy Markdown
Owner

Replace GTK with Iced

Summary

This PR is a major rewrite of Sirula, replacing the GTK framework with Iced and iced_layershell for Wayland layer shell support. The project is renamed to Cirula to distinguish it from the original.

Motivation

  • GTK has many non-Rust dependencies, making builds more complex
  • Sirula has not been actively maintained
  • Iced provides a pure-Rust UI framework with fewer external dependencies
  • Better NixOS compatibility (icons render correctly)
    • This is mainly due to NixOS storing icons in different locations than usual.

Changes

UI Framework Migration

  • Replaces GTK with Iced for the entire UI
  • Replaces gtk-layer-shell with iced_layershell
  • Removes CSS theming in favor of TOML-based configuration with built-in themes

Theming System

  • Adds 22 built-in themes (Catppuccin, Tokyo Night, Kanagawa, Dracula, Nord, Gruvbox, etc.)
    • Note! These are colour themes.
  • Adds support for custom colour palettes via [custom_palette] in config
  • Theme selection via app_theme config option

Locale Handling

  • Replaces libc with icu_collator/icu_locale for locale-aware string sorting
  • Adds locale config option to override system locale using ICU format (e.g., nb-NO)
  • Parses POSIX locale format (e.g., en_US.UTF-8) and converts to ICU format

Performance

  • ~5x faster startup by using tokio for parallel .desktop file parsing
    • Synchronous: ~268ms
    • Async parallel: ~54ms (debug build, ~200 desktop files)
    • Note! Does use more CPU.
    • Note! The results are representative of my computer HW. You may get different results.

CI/CD

  • Added GitHub Actions workflow for cargo test, cargo clippy, and cargo fmt --check

Code Quality

  • Suppressed clippy zombie_processes warnings with comment
    • I'm honestly not sure if this can be done better.

Breaking Changes

  • Config directory changed from ~/.config/sirula/ to ~/.config/cirula/
  • CSS styling no longer supported (use 'TOML theming' instead)
  • Some config options have been removed:
    • close_on_unfocus (To exit: press ESC ): Will look into how to re-implement this
    • lines: Not sure if this has much value
    • markup_default, markup_highlight, markup_extra: Will look into how to re-implement this

Dependencies

Removed Added
gtk iced
gtk-layer-shell iced_layershell
libc icu_collator
locale-types icu_locale
tokio (fs, rt-multi-thread)

Other

Example screenshots and most example configurations are removed. Will be added at a later date. The basic still looks more or less the same.

@mikklee
mikklee marked this pull request as ready for review December 17, 2025 21:42
@mikklee
mikklee merged commit 295c06e into main Dec 17, 2025
1 check passed
@mikklee
mikklee deleted the fork/iced branch December 18, 2025 06:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant