{"id":23627490,"url":"https://github.com/pucklaj/odin-gtk","last_synced_at":"2025-10-08T13:21:26.580Z","repository":{"id":269544196,"uuid":"898340282","full_name":"PucklaJ/odin-gtk","owner":"PucklaJ","description":"Odin Bindings to GTK4 and libadwaita","archived":false,"fork":false,"pushed_at":"2025-09-07T08:32:47.000Z","size":6519,"stargazers_count":31,"open_issues_count":3,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-10-04T02:55:37.283Z","etag":null,"topics":["bindings","cairo","glib","gtk-layer-shell","gtk4","libadwaita","odin","pango"],"latest_commit_sha":null,"homepage":"","language":"Odin","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/PucklaJ.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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-12-04T08:13:21.000Z","updated_at":"2025-09-11T18:52:46.000Z","dependencies_parsed_at":null,"dependency_job_id":"471adeed-b683-4072-b901-047bc3ddcd2d","html_url":"https://github.com/PucklaJ/odin-gtk","commit_stats":null,"previous_names":["pucklaj/odin-gtk"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/PucklaJ/odin-gtk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PucklaJ%2Fodin-gtk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PucklaJ%2Fodin-gtk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PucklaJ%2Fodin-gtk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PucklaJ%2Fodin-gtk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PucklaJ","download_url":"https://codeload.github.com/PucklaJ/odin-gtk/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PucklaJ%2Fodin-gtk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278949791,"owners_count":26074099,"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-10-08T02:00:06.501Z","response_time":56,"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":["bindings","cairo","glib","gtk-layer-shell","gtk4","libadwaita","odin","pango"],"created_at":"2024-12-27T23:59:40.167Z","updated_at":"2025-10-08T13:21:26.534Z","avatar_url":"https://github.com/PucklaJ.png","language":"Odin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Odin GTK\n\nOdin Bindings to GTK4, libadwaita and associated libraries generated using [runic](https://github.com/Samudevv/runic)\n\n**DANGER: Variadic functions that must be terminated with NULL (nil in odin), like [`adwaita.show_about_dialog`](https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1.6/func.show_about_dialog.html), need to be treated with caution or they will segfault. Strings need to be explicitely converted to `cstring`, arrays need to be past as pointers `arr` -\u003e `\u0026arr[0]`. There may even be more things you need to pay attention to, therefore I suggest you to avoid them and use the non variadic options**\n\n| Library                                                      | Path                | License                                                                                    |\n| ------------------------------------------------------------ | ------------------- | ------------------------------------------------------------------------------------------ |\n| [glib](https://gitlab.gnome.org/GNOME/glib)                  | `glib`              | [LGPL 2.1](https://gitlab.gnome.org/GNOME/glib/-/blob/main/LICENSES/LGPL-2.1-or-later.txt) |\n| [gobject](https://gitlab.gnome.org/GNOME/glib)               | `glib/gobject`      | [LGPL 2.1](https://gitlab.gnome.org/GNOME/glib/-/blob/main/LICENSES/LGPL-2.1-or-later.txt) |\n| [gmodule](https://gitlab.gnome.org/GNOME/glib)               | `glib/gmodule`      | [LGPL 2.1](https://gitlab.gnome.org/GNOME/glib/-/blob/main/LICENSES/LGPL-2.1-or-later.txt) |\n| [gio](https://gitlab.gnome.org/GNOME/glib)                   | `glib/gio`          | [LGPL 2.1](https://gitlab.gnome.org/GNOME/glib/-/blob/main/LICENSES/LGPL-2.1-or-later.txt) |\n| [girepository](https://gitlab.gnome.org/GNOME/glib)          | `glib/girepository` | [LGPL 2.1](https://gitlab.gnome.org/GNOME/glib/-/blob/main/LICENSES/LGPL-2.1-or-later.txt) |\n| [gdk-pixbuf](https://gitlab.gnome.org/GNOME/gdk-pixbuf)      | `gdk-pixbuf`        | [LGPL 2.1](https://gitlab.gnome.org/GNOME/gdk-pixbuf/-/blob/master/COPYING)                |\n| [pango](https://gitlab.gnome.org/GNOME/pango.git)            | `pango`             | [LGPL 2](https://gitlab.gnome.org/GNOME/pango/-/blob/main/COPYING)                         |\n| [pangocairo](https://gitlab.gnome.org/GNOME/pango.git)       | `pango/pangocairo`  | [LGPL 2](https://gitlab.gnome.org/GNOME/pango/-/blob/main/COPYING)                         |\n| [cairo](https://gitlab.freedesktop.org/cairo/cairo.git)      | `cairo`             | [LGPL 2.1](https://gitlab.freedesktop.org/cairo/cairo/-/blob/master/COPYING-LGPL-2.1)      |\n| [graphene](https://github.com/ebassi/graphene)               | `graphene`          | [MIT](https://github.com/ebassi/graphene/blob/master/LICENSES/MIT.txt)                     |\n| [gtk](https://gitlab.gnome.org/GNOME/gtk)                    | `gtk`               | [LGPL 2.1](https://gitlab.gnome.org/GNOME/gtk/-/blob/main/COPYING)                         |\n| [gtk4-layer-shell](https://github.com/wmww/gtk4-layer-shell) | `gtk/layer-shell`   | [MIT](https://github.com/wmww/gtk4-layer-shell/blob/main/LICENSE)                          |\n| [libadwaita](https://gitlab.gnome.org/GNOME/libadwaita)      | `adwaita`           | [LGPL 2.1](https://gitlab.gnome.org/GNOME/libadwaita/-/blob/main/COPYING)                  |\n\n## Supported Platforms\n\n| OS      | Arch          |\n| -----   | ------------- |\n| Linux   | x86_64, arm64 |\n| Windows | x86_64        |\n\nYou could get other UNIX-like systems to work if you put in some effort, but anything else but 64-Bit won't work, since there are specific workarounds used for 64-Bit.\n\n## Usage (Linux)\n\nThe gtk package on different linux distributions:\n\n| Distribution | Package Name                              |\n| ------------ | ----------------------------------------- |\n| Arch Linux   | `gtk4`, `gtk4-layer-shell`                |\n| Ubuntu       | `libgtk-4-dev`, `libgtk4-layer-shell-dev` |\n| Alpine Linux | `gtk4.0-dev`, `gtk4-layer-shell-dev`      |\n\nThe libadwaita package on different linux distributions:\n\n| Distribution | Package Name       |\n| ------------ | ------------------ |\n| Arch Linux   | `libadwaita`       |\n| Ubuntu       | `libadwaita-1-dev` |\n| Alpine Linux | `libadwaita-dev`   |\n\nBy default all the libraries will be linked dynamically. Installing the gtk package of your linux distribution should be fine. **Library files for some wrappers are provided, therefore the package can be used as is and does not need any further effort to work on the supported platforms**. But in case you want to rebuild them you need to follow these instructions:\n\nThe build dependencies are:\n\n- [just](https://just.systems)\n- meson\n- ninja\n- python\n- gcc\n- harfbuzz\n- vulkan-headers\n\nTo install them on archlinux:\n\n```\nsudo pacman -S --needed base-devel just meson ninja python harfbuzz vulkan-headers\n```\n\non ubuntu:\n\n```\nsudo apt install -y build-essential just meson ninja-build python3 libharfbuzz-dev libvulkan-dev\n```\n\non alpine:\n\n```\nsudo apk add just meson samurai python3 build-base harfbuzz-dev vulkan-headers\n```\n\nFirst make sure that the submodules are checked out, if they aren't you can do it like this:\n\n```\ngit submodule init\ngit submodule update\n```\n\nThen execute:\n\n```\njust setup \u0026\u0026 just wrapper\n```\n\n## Usage (Windows)\n\nBinaries can be built without any further effort. The repository provides all the different library files (which have been provided by [gvsbuild](https://github.com/wingtk/gvsbuild)) by itself. But to actually run the applications, the dynamic libraries are necessary. They can be downloaded using the following just recipe:\n\n```\njust install-windows-runtime INSTALL_DIR\n```\n\nProvide a directory for `INSTALL_DIR` and all the dynamic library files of the entire gtk stack will be installed into it. If you are having trouble installing `just` on windows, you can install it using `winget install --id Casey.Just --exact` or by downloading the binary from [the releases page](https://github.com/casey/just/releases).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpucklaj%2Fodin-gtk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpucklaj%2Fodin-gtk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpucklaj%2Fodin-gtk/lists"}