{"id":50513836,"url":"https://github.com/azakidev/brush","last_synced_at":"2026-06-02T22:02:41.045Z","repository":{"id":350750189,"uuid":"1183586148","full_name":"Azakidev/Brush","owner":"Azakidev","description":"A simple image editor written in Rust and GTK","archived":false,"fork":false,"pushed_at":"2026-05-06T15:28:02.000Z","size":311,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-06T17:34:11.839Z","etag":null,"topics":["gtk","gtk-rs","libadwaita","opengl","opengl-es","paint","paint-application","painting"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Azakidev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-16T18:56:01.000Z","updated_at":"2026-05-06T15:34:09.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Azakidev/Brush","commit_stats":null,"previous_names":["azakidev/brush"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Azakidev/Brush","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Azakidev%2FBrush","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Azakidev%2FBrush/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Azakidev%2FBrush/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Azakidev%2FBrush/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Azakidev","download_url":"https://codeload.github.com/Azakidev/Brush/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Azakidev%2FBrush/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33838221,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-02T02:00:07.132Z","response_time":109,"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":["gtk","gtk-rs","libadwaita","opengl","opengl-es","paint","paint-application","painting"],"created_at":"2026-06-02T22:02:39.946Z","updated_at":"2026-06-02T22:02:41.021Z","avatar_url":"https://github.com/Azakidev.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Brush\n\nAn experimental, GPU driven, and heavily opinionated painting program built on Rust, GTK and Libadwaita.\n\nThe project is currently under heavy development and is most certainly not ready\nfor any kind of serious usage.\n\nIt won't break anything, it's just kind of useless and unfinished as you'd expect.\n\nHeavily inspired by [Krita](https://krita.org/), as is what I use day to day for my art.\n\n## Notice of LLM Usage\nPart of the code has been developed with the help of the Gemini LLM in a\nnon-integrated manner to aid me in the learning process of these graphics.\n(In other words, I asked the Gemini chat website to explain things and give me snippets)\n\nThis affects parts of the OpenGL ES renderer as this is my first real go at\nworking with graphics programming.\n\nThe code does and will eventually get completely replaced with human written work as I make my way around learning the concepts and intricacies of graphics programming.\n\n## TODO\n- [x] Saving and loading\n- [x] Alpha locking\n- [ ] Exporting\n- [ ] Brush engine\n    - [x] Paint dab blending\n    - [x] Paint stroke interpolation\n    - [ ] Paint stroke smoothing/stabilizing\n    - [ ] Brush types\n- [ ] Settings and resource handling\n    - [ ] Recently opened projects / Editor state\n    - [ ] Preferences\n    - [ ] Resources\n- [ ] Tools\n    - [ ] Fill\n    - [ ] Line\n    - [ ] Rectangle\n    - [ ] Ellipse\n    - [ ] Select box\n    - [ ] Select ellipse\n    - [ ] Select wand\n    - [ ] Transform\n- [ ] Canvas interaction\n    - [x] Middle-click / space to pan\n    - [ ] Up/down layer traversal hotkeys\n    - [ ] Mirror canvas toggles\n    - [ ] Layer dragging on the tree widget\n    - [ ] Undo/redo\n    - [ ] Layer opacity spin button\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fazakidev%2Fbrush","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fazakidev%2Fbrush","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fazakidev%2Fbrush/lists"}