A simple Iced application that I wrote as a learning activity, which allows you to browse the full list of regular Material Icons.

Overview

Iced Material Icon Browser

Iced Material Icon Browser is a simple Iced application that I wrote as a learning activity, which allows you to browse the full list of regular Material Icons (by Google). The design is inspired by macOS' SF Symbols application.

UI screenshot

Quick preview

UI preview

Target audience

This project is mainly targeted at Rust programmers who are in the process of learning Iced. It makes use of concepts such as:

  • performing custom styling,
  • using scrollers,
  • creating and using commands,
  • importing and configuring custom fonts (text and icons),
  • creating custom widgets,
  • using Iced's subscription method,
  • and other stuff.

Disclaimer

I, myself, am in the process of learning Iced, so it is possible that some of the patterns I am using in this project don't 100% make sense.

How to build the project

A note to Windows users: I have yet to confirm that the calls I'm making to the include_bytes! macro in ./src/main.rs will work as intended on Windows systems. Please let me know if it doesn't.

  1. Clone the Git repository from GitHub:
git clone https://github.com/BB-301/iced-material-icon-browser.git
  1. Build the project:
cd iced-material-icon-browser
cargo build --release
  1. Run the application:
cargo run --release

Still to do...

  • When in a grid view mode and clicking on an item, the content view will be split in two, which will likely result in the selected item in the list getting redrawn out of view (the other way around is also possible; i.e. when closing the preview). In a next version, I want to track the active item's position in the scroller and use a command to bring it back into view.
  • I acknowledge that there is a fair amount of repetitive code in some of the methods of my impl MyApp, which could be refactored into other helper methods to enable reuse. The view_item_preview method is a good example of that.

Contact

Please feel free to contact me by opening an issue on the repository if you have any questions, issues or suggestions for this project.

License

I am releasing this project under the MIT License.

You might also like...
A simple UI framework for Rust built on top of IUP (http://webserver2.tecgraf.puc-rio.br/iup/)

KISS-UI A UI framework for Rust based on the KISS (Keep It Simple, Stupid!) philosophy. Powered by the IUP GUI library for C by Tecgraf, via the bindi

Simple and portable (but not inflexible) GUI library in C that uses the native GUI technologies of each platform it supports.
Simple and portable (but not inflexible) GUI library in C that uses the native GUI technologies of each platform it supports.

libui: a portable GUI library for C This README is being written. Status It has come to my attention that I have not been particularly clear about how

Marko Editor is a simple WYSIWYG editor for note taking.
Marko Editor is a simple WYSIWYG editor for note taking.

Marko Editor Marko Editor is a simple WYSIWYG editor for note taking written in Rust and GTK 4. It uses Markdown as storage format and can read simple

A simple news reading GUI app built in Rust
A simple news reading GUI app built in Rust

Headlines [WIP] A native GUI app built with Rust using egui. Uses newsapi.org as the source to fetch news articles. This is a WIP and the current stat

A simple, efficient spring animation library for smooth, natural motion in Rust
A simple, efficient spring animation library for smooth, natural motion in Rust

Natura A simple, efficient spring animation library for smooth, natural motion in Rust Usage Natura is framework-agnostic and works well in 2D and 3D

A simple GUI version of the pH calibration tool written in egui, based on the eframe template.

caliphui A simple GUI version of the pH calibration tool written in egui, based on the eframe template. Usage Native binaries are provided under relea

Szyszka is a simple but powerful and fast bulk file renamer.
Szyszka is a simple but powerful and fast bulk file renamer.

Szyszka is a simple but powerful and fast bulk file renamer. Features Written in Rust Available for Linux, Mac and Windows Simple GUI created

A simple, clean, and beautiful WYSIWYG Markdown editor and content-management system
A simple, clean, and beautiful WYSIWYG Markdown editor and content-management system

ScribeDown Current version: v0.0.1 Feature level: See the roadmap Beautiful, Clean, Writer-Oriented The goal of ScribeDown is to make Markdown the bes

Deno is a simple, modern and secure runtime for JavaScript and TypeScript that uses V8 and is built in Rust.

Deno Deno is a simple, modern and secure runtime for JavaScript and TypeScript that uses V8 and is built in Rust. Features Secure by default. No file,

Owner
BB-301
BB-301
Termbox is a library that provides minimalistic API which allows the programmer to write text-based user interfaces.

Termbox is a library that provides minimalistic API which allows the programmer to write text-based user interfaces.

null 1.9k Dec 22, 2022
Simple GTK Rust Fuzzer which aims to test all available classes and functions in GTK.

Gtk Rust Fuzzer Simple GTK Rust Fuzzer which aims to test all available classes and functions in GTK. It finds bugs inside GTK functions, GTK exported

Rafał Mikrut 8 Nov 19, 2022
A simple note taking application written in Rust and GTK4

Rnote A simple note taking application written in Rust and GTK4. Rnote aims to be a simple but functional note taking application for freehand drawing

Felix Zwettler 3.4k Jan 5, 2023
This is a demo Library of fltk-rs, which is used to learn various new gadgets of experimental fltk-rs.

fltk-rs Demo This is a demo Library of fltk-rs, which is used to learn various new gadgets of experimental fltk-rs. Demos demo9 Demo9 is an applicatio

WumaCoder 6 Dec 28, 2022
ZeroTier Desktop Tray Application and UI

ZeroTier Desktop Tray Application and User Interface This is (as of ZeroTier 1.8) the system tray application and user interface for controlling a loc

ZeroTier, Inc. 102 Dec 20, 2022
A desktop application wrapper for CovidValidator.app

A desktop application wrapper for CovidValidator.app Check EU Digitial Covid Certificates with ease and validate them against local or country rules.

Timo Koenig 2 Mar 15, 2022
A lightweight cross-platform system-monitoring fltk gui application based on sysinfo

Sysinfo-gui A lightweight cross-platform system-monitoring fltk gui application based on sysinfo. The UI design is inspired by stacer. The svg icons a

Mohammed Alyousef 22 Dec 31, 2022
nats-spy is a terminal tool to help you to monitor NATS messages.

nats-spy nats-spy is a terminal tool to help you to monitor NATS messages. Install Homebrew (macOS) brew install alihanyalcin/nats-spy/nats-spy Usage

Alihan Doğuş Yalçın 23 Oct 23, 2022
With Dejavu, you can have a perfect memory by capturing and organizing your visual recordings efficiently.

Dejavu The content in README.md is assisted by ChatGPT. Overview Dejavu is an open-source, cross-platform tool designed to help you record and search

Zhou Zhiqiang 127 Jul 31, 2023
A simple, cross-platform GUI automation module for Rust.

AutoPilot AutoPilot is a Rust port of the Python C extension AutoPy, a simple, cross-platform GUI automation library for Python. For more information,

null 271 Dec 27, 2022