https://github.com/idelstak/ikonx
Simplify icon selection with IkonX - your Ikonli icon pack browser.
https://github.com/idelstak/ikonx
atlantafx icon-pack ikonli-icons java javafx-desktop-apps javafx-gui
Last synced: 6 months ago
JSON representation
Simplify icon selection with IkonX - your Ikonli icon pack browser.
- Host: GitHub
- URL: https://github.com/idelstak/ikonx
- Owner: IdelsTak
- License: mit
- Created: 2023-09-07T02:16:52.000Z (almost 3 years ago)
- Default Branch: master
- Last Pushed: 2023-09-23T13:25:41.000Z (almost 3 years ago)
- Last Synced: 2025-04-10T03:54:30.572Z (about 1 year ago)
- Topics: atlantafx, icon-pack, ikonli-icons, java, javafx-desktop-apps, javafx-gui
- Language: Java
- Homepage:
- Size: 402 KB
- Stars: 9
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Awesome Lists containing this project
README
# IkonX - Icon Pack Browser
## Why IkonX Exists
Finding the right icon for your JavaFX project can be a hassle. I know the struggle. See, there are more than 62,000 icons spread across 58 different icon packs in [Ikonli](https://github.com/kordamp/ikonli). That's a lot of icon codes to comb through!
I was inspired by the [AltantaFX sampler](https://downloads.hydraulic.dev/atlantafx/sampler/download.html), which made browsing Material icons a breeze. So, I decided to take it a step further. I created IkonX - the Icon Pack Browser. With this tool, you can easily search, preview, and copy icon codes from **all** available icon packs. No more digging through endless documents to find that perfect icon.

## What IkonX Does
Here's what you can do with IkonX:
- **One-Stop Shop:** Access icons from all 58 supported icon packs in one place.
- **Quick Search:** Find icons by searching for their icon codes.
- **Preview Icons:** See what each icon looks like before you choose.
- **Copy and Paste:** Click an icon, and its code is automatically copied to your clipboard.
- **User-Friendly:** It's simple and easy to use.
## Architecture: Model-View-Update (MVU)
IkonX follows a strict Model-View-Update (MVU) architecture, enforcing **unidirectional data flow** and a **single source of truth**.
### Core Principles
1. **Single Source of Truth**: The entire application state is stored in a single `ViewState` object. The UI is a pure function of this state.
2. **Unidirectional Data Flow**: Data flows in one direction:
* **Action**: User interactions and other events are represented as immutable `Action` objects.
* **State**: The `Update` function takes the current `ViewState` and an `Action` and produces a new `ViewState`.
* **View**: The `IconView` observes the `ViewState` and updates the UI accordingly.
3. **No Direct UI Mutation**: The UI is never mutated directly. All changes are the result of a new `ViewState` being emitted. The `render(ViewState)` method in `IconView` is the only place where the UI is updated.
### The Flow
```mermaid
flowchart LR
UI[UI] -->|Dispatch Action| Action[Action]
Action -->|Processed by| Update[Update Function]
Update -->|Produces| ViewState[ViewState]
ViewState -->|Observed by| IconView[IconView]
IconView -->|Re-renders UI| UI
```
1. The UI dispatches an `Action`.
2. The `Action` is sent to the `Update` function.
3. The `Update` function produces a new `ViewState`.
4. The `IconView` receives the new `ViewState` and re-renders itself.
This strict adherence to MVU results in a predictable, testable, and maintainable codebase.
## Getting Started with IkonX
You’ve got two ways to dive in:
**1. Grab an executable**
Quickest way. Pick your OS (Linux, Windows, or Mac) and grab the release that fits your system from [the releases page](https://github.com/IdelsTak/ikonx/releases). It comes with Java bundled, so no extra installs. Perfect if you just want to jump in and start browsing icons.
**2. Build from source**
Clone or download this repo, open it in your Java IDE, build, and run. Ideal if you like tinkering, contributing, or want the latest tweaks straight from the code.
## How to Use IkonX
1. Open the IkonX - Icon Pack Browser.
2. Search for icons using their icon codes.
3. Preview icons to find the perfect fit.
4. Click on an icon to select it; the code is automatically copied to your clipboard.
5. Paste the code into your JavaFX application, and you're good to go.
## Want to Help Improve IkonX?
I welcome contributions! If you want to enhance IkonX or add more features, here's what to do:
1. Fork the IkonX repository.
2. Create a new branch for your changes.
3. Make your changes and thoroughly test them.
4. Send me a pull request, explaining what you did and why it's awesome.
## Legal Stuff
IkonX is licensed under the [MIT License](https://opensource.org/license/mit/).
## Credits
- Huge thanks to the creators and contributors of the [Ikonli](https://github.com/kordamp/ikonli) library.
- Shoutout to [AltantaFX](https://mkpaz.github.io/atlantafx) for inspiring this project.
## Questions?
Got questions or suggestions? Reach out to me at [contact.kamau@gmail.com](mailto:contact.kamau@gmail.com). I'm here to help.