{"id":19137794,"url":"https://github.com/ibaryshnikov/iced-hs","last_synced_at":"2025-07-19T11:02:34.343Z","repository":{"id":228812017,"uuid":"774636114","full_name":"ibaryshnikov/iced-hs","owner":"ibaryshnikov","description":"Haskell wrapper for iced","archived":false,"fork":false,"pushed_at":"2025-04-12T10:30:22.000Z","size":559,"stargazers_count":33,"open_issues_count":13,"forks_count":5,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-06T09:04:31.266Z","etag":null,"topics":["haskell","iced","rust","tokio"],"latest_commit_sha":null,"homepage":"","language":"Haskell","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/ibaryshnikov.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","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":"2024-03-19T22:34:47.000Z","updated_at":"2025-04-30T09:50:45.000Z","dependencies_parsed_at":"2024-04-29T20:51:49.136Z","dependency_job_id":"f0644691-d6ae-46e9-b247-d656d8076f6f","html_url":"https://github.com/ibaryshnikov/iced-hs","commit_stats":null,"previous_names":["ibaryshnikov/iced-hs"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibaryshnikov%2Ficed-hs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibaryshnikov%2Ficed-hs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibaryshnikov%2Ficed-hs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibaryshnikov%2Ficed-hs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ibaryshnikov","download_url":"https://codeload.github.com/ibaryshnikov/iced-hs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252762310,"owners_count":21800289,"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","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":["haskell","iced","rust","tokio"],"created_at":"2024-11-09T06:40:37.703Z","updated_at":"2025-05-06T20:23:38.380Z","avatar_url":"https://github.com/ibaryshnikov.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# iced-hs\n\nHaskell wrapper for [iced](https://github.com/iced-rs/iced) gui library.\nVery experimental, check [Roadmap](#roadmap) to see progress. There is some\n[documentation](./docs) available.\n\n\n## Platform support\n\nDesktops - tested on Linux, and macOS should work too.\nBuild for Windows currently doesn't work, see related\n[issue](https://github.com/ibaryshnikov/iced-hs/issues/19)\nfor more details.\n\n\n## Example\n\nCheck [examples](examples) for more\n\n```haskell\nimport Iced\nimport Iced.Attribute\nimport Iced.Attribute.Alignment\nimport Iced.Theme\nimport Iced.Widget\n\ndata Message = Inc | Dec\n\nupdate :: Message -\u003e Int -\u003e Int\nupdate Inc = succ\nupdate Dec = pred\n\nview :: Int -\u003e Element\nview value =\n  container [centerX Fill, centerY Fill] $\n    column [alignX Center, spacing 10] [\n      button [onPress Inc] \"Increment\",\n      text [size 50] $ show value,\n      button [onPress Dec] \"Decrement\"\n    ]\n\nmain :: IO ()\nmain = Iced.run [theme GruvboxLight] \"Counter\" 0 update view\n```\n\n![Counter preview](examples/counter/counter.png)\n\n\n## Themes example\n\n![Themes preview](examples/themes/themes.png)\n\nBeautiful `Ferra` theme was built by [Halloy](https://github.com/squidowl/halloy) team.\nCheck the complete [example](examples/themes).\n\n\n## Required build tools\n\nRust toolchain is 1.84 or above. Haskell build uses cabal and supported versions\nare specified in `iced-hs.cabal` file. It's also possible to build with GHC alone.\nUse provided bash scripts as an example.\n\n\n## Usage\n\nRun the examples with cabal:\n\n```bash\ncabal run counter\n```\n\nOr use bash scripts:\n\n```bash\n# build `libiced_hs.a`\n./build_rust.sh\n# then pass it to ghc\nghc -ipath/to/this/repo path/to/libiced_hs.a main.hs\n```\n\n\n## Internals\n\n- [wgpu](https://github.com/gfx-rs/wgpu) - graphics\n- [winit](https://github.com/rust-windowing/winit) - windowing\n- [tokio](https://github.com/tokio-rs/tokio) - runtime\n- [cosmic-text](https://github.com/pop-os/cosmic-text) - multi-line text handling\n\n\n## Credits\n\nBelow is a list of inspiring projects\n- [Elm](https://elm-lang.org/)\n- [elm-ui](https://github.com/mdgriffith/elm-ui)\n- [elm-canvas](https://github.com/joakin/elm-canvas)\n- [webgl](https://github.com/elm-explorations/webgl)\n- [miso](https://github.com/dmjio/miso)\n- [monomer](https://github.com/fjvallarino/monomer)\n\n\n## Status\n\nThis is a research project. The api may change often.\nNot recommended for use in production. It still may be a good\noption if you need a simple way to build some ui.\n\n\n## Roadmap\n\n - [ ] Widgets\n   - [x] button\n   - [x] canvas\n   - [x] checkbox\n   - [x] column\n   - [x] comboBox\n   - [x] container\n   - [x] image\n   - [ ] keyedColumn\n   - [x] markdown\n   - [x] mouseArea\n   - [ ] paneGrid\n   - [x] progressBar\n   - [x] pickList\n   - [ ] qrCode\n   - [x] radio\n   - [x] responsive\n   - [ ] horizontalRule, verticalRule\n   - [x] row\n   - [x] scrollable\n   - [x] slider, verticalSlider\n   - [x] horizontalSpace, verticalSpace\n   - [ ] svg\n   - [x] text\n   - [x] textEditor\n   - [x] textInput\n   - [x] toggler\n   - [x] tooltip\n - [ ] Helper functions\n   - [ ] lazy\n   - [ ] themer\n   - [ ] focusNext, focusPrevious\n - [x] Themes\n - [ ] Canvas api\n   - [ ] Frame methods\n     - [x] drawImage\n     - [x] drawSvg\n     - [x] fill\n     - [x] fillText\n     - [x] pushTransform\n     - [x] popTransform\n     - [x] rotate\n     - [x] scale\n     - [x] stroke\n     - [ ] more frame methods\n   - [ ] Path methods\n     - [x] circle, lineTo, moveTo, rectangle\n     - [ ] more path methods\n - [ ] Shader\n   - [ ] shader widget\n   - [ ] attributes\n - [ ] Multi window\n - [ ] Custom widgets\n - [ ] Subscriptions\n   - [x] subscription attribute for Application\n   - [x] Time.every subscription\n   - [ ] Keyboard\n     - [x] onKeyPress\n     - [x] onKeyRelease\n     - [ ] PhysicalKey\n       - [x] KeyCode\n       - [ ] NativeKeyCode\n     - [ ] LogicalKey\n       - [x] Named\n       - [ ] Character\n   - [ ] custom subscriptions\n   - [ ] other events\n - [x] Task api\n   - [x] `Task.perform` for Rust `Future`\n   - [x] `Task.performBlocking` for blocking tasks\n - [ ] Add all attributes from iced for each widget\n - [ ] Styles for widgets\n   - [x] button\n   - [x] checkbox\n   - [x] container\n   - [x] pickList\n   - [x] progressBar\n   - [x] radio\n   - [x] text\n   - [x] textInput\n   - [x] textEditor\n   - [ ] ...\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fibaryshnikov%2Ficed-hs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fibaryshnikov%2Ficed-hs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fibaryshnikov%2Ficed-hs/lists"}