{"id":15055894,"url":"https://github.com/idelstak/ikonx","last_synced_at":"2026-01-12T13:30:20.591Z","repository":{"id":193299853,"uuid":"688269848","full_name":"IdelsTak/ikonx","owner":"IdelsTak","description":"Simplify icon selection with IkonX - your Ikonli icon pack browser.","archived":false,"fork":false,"pushed_at":"2023-09-23T13:25:41.000Z","size":412,"stargazers_count":9,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-10T03:54:30.572Z","etag":null,"topics":["atlantafx","icon-pack","ikonli-icons","java","javafx-desktop-apps","javafx-gui"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/IdelsTak.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-09-07T02:16:52.000Z","updated_at":"2024-04-29T19:39:06.000Z","dependencies_parsed_at":"2025-02-17T19:45:56.322Z","dependency_job_id":null,"html_url":"https://github.com/IdelsTak/ikonx","commit_stats":null,"previous_names":["idelstak/ikonx"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/IdelsTak/ikonx","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IdelsTak%2Fikonx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IdelsTak%2Fikonx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IdelsTak%2Fikonx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IdelsTak%2Fikonx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IdelsTak","download_url":"https://codeload.github.com/IdelsTak/ikonx/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IdelsTak%2Fikonx/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273409452,"owners_count":25100444,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-03T02:00:09.631Z","response_time":76,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["atlantafx","icon-pack","ikonli-icons","java","javafx-desktop-apps","javafx-gui"],"created_at":"2024-09-24T21:46:59.257Z","updated_at":"2026-01-12T13:30:20.560Z","avatar_url":"https://github.com/IdelsTak.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# IkonX - Icon Pack Browser\n\n## Why IkonX Exists\n\nFinding 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!\n\nI 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.\n\n![Screencast](assets/showcase-big.gif)\n\n## What IkonX Does\n\nHere's what you can do with IkonX:\n\n- **One-Stop Shop:** Access icons from all 58 supported icon packs in one place.\n- **Quick Search:** Find icons by searching for their icon codes.\n- **Preview Icons:** See what each icon looks like before you choose.\n- **Copy and Paste:** Click an icon, and its code is automatically copied to your clipboard.\n- **User-Friendly:** It's simple and easy to use.\n\n## Architecture: Model-View-Update (MVU)\n\nIkonX follows a strict Model-View-Update (MVU) architecture, enforcing **unidirectional data flow** and a **single source of truth**.\n\n### Core Principles\n\n1. **Single Source of Truth**: The entire application state is stored in a single `ViewState` object. The UI is a pure function of this state.\n\n2. **Unidirectional Data Flow**: Data flows in one direction:\n\n   * **Action**: User interactions and other events are represented as immutable `Action` objects.\n   * **State**: The `Update` function takes the current `ViewState` and an `Action` and produces a new `ViewState`.\n   * **View**: The `IconView` observes the `ViewState` and updates the UI accordingly.\n\n3. **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.\n\n### The Flow\n\n```mermaid\nflowchart LR\n    UI[UI] --\u003e|Dispatch Action| Action[Action]\n    Action --\u003e|Processed by| Update[Update Function]\n    Update --\u003e|Produces| ViewState[ViewState]\n    ViewState --\u003e|Observed by| IconView[IconView]\n    IconView --\u003e|Re-renders UI| UI\n```\n\n1. The UI dispatches an `Action`.\n2. The `Action` is sent to the `Update` function.\n3. The `Update` function produces a new `ViewState`.\n4. The `IconView` receives the new `ViewState` and re-renders itself.\n\nThis strict adherence to MVU results in a predictable, testable, and maintainable codebase.\n\n## Getting Started with IkonX\n\nYou’ve got two ways to dive in:\n\n**1. Grab an executable**\n\nQuickest 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.\n\n**2. Build from source**\n\nClone 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.\n\n## How to Use IkonX\n\n1. Open the IkonX - Icon Pack Browser.\n2. Search for icons using their icon codes.\n3. Preview icons to find the perfect fit.\n4. Click on an icon to select it; the code is automatically copied to your clipboard.\n5. Paste the code into your JavaFX application, and you're good to go.\n\n## Want to Help Improve IkonX?\n\nI welcome contributions! If you want to enhance IkonX or add more features, here's what to do:\n\n1. Fork the IkonX repository.\n2. Create a new branch for your changes.\n3. Make your changes and thoroughly test them.\n4. Send me a pull request, explaining what you did and why it's awesome.\n\n## Legal Stuff\n\nIkonX is licensed under the [MIT License](https://opensource.org/license/mit/).\n\n## Credits\n\n- Huge thanks to the creators and contributors of the [Ikonli](https://github.com/kordamp/ikonli) library.\n- Shoutout to [AltantaFX](https://mkpaz.github.io/atlantafx) for inspiring this project.\n\n## Questions?\n\nGot questions or suggestions? Reach out to me at [contact.kamau@gmail.com](mailto:contact.kamau@gmail.com). I'm here to help.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fidelstak%2Fikonx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fidelstak%2Fikonx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fidelstak%2Fikonx/lists"}