{"id":14966026,"url":"https://github.com/finanalyst/gtk-simple","last_synced_at":"2025-10-25T13:31:07.528Z","repository":{"id":16398588,"uuid":"19149437","full_name":"finanalyst/GTK-Simple","owner":"finanalyst","description":"Simplistic GTK bindings for Rakudo","archived":false,"fork":false,"pushed_at":"2023-02-25T10:23:22.000Z","size":271,"stargazers_count":49,"open_issues_count":2,"forks_count":26,"subscribers_count":124,"default_branch":"master","last_synced_at":"2025-01-31T07:21:25.429Z","etag":null,"topics":["raku"],"latest_commit_sha":null,"homepage":"","language":"Raku","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"artistic-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/finanalyst.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2014-04-25T14:45:27.000Z","updated_at":"2024-01-03T16:31:21.000Z","dependencies_parsed_at":"2024-09-14T01:22:19.651Z","dependency_job_id":"ca47970b-21f0-491f-9b15-ac46c5ba468b","html_url":"https://github.com/finanalyst/GTK-Simple","commit_stats":{"total_commits":267,"total_committers":34,"mean_commits":7.852941176470588,"dds":0.7228464419475655,"last_synced_commit":"4419b07827b6ef2d7cf989e3ff7b6c8490812a78"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/finanalyst%2FGTK-Simple","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/finanalyst%2FGTK-Simple/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/finanalyst%2FGTK-Simple/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/finanalyst%2FGTK-Simple/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/finanalyst","download_url":"https://codeload.github.com/finanalyst/GTK-Simple/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238147581,"owners_count":19424287,"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":["raku"],"created_at":"2024-09-24T13:35:43.167Z","updated_at":"2025-10-25T13:31:07.522Z","avatar_url":"https://github.com/finanalyst.png","language":"Raku","funding_links":[],"categories":[],"sub_categories":[],"readme":"![badge](https://github.com/finanalyst/GTK-Simple/actions/workflows/test.yaml/badge.svg)\n## GTK::Simple \n\nGTK::Simple is a set of simple [GTK 3](http://www.gtk.org/) bindings using\nNativeCall. Only some GTK widgets are currently implemented. However, these are\nenough to create a reasonable interactive GUI for an idiomatic Raku program.\n\nThe GTK Widgets in this distribution include the following:\n\nWidget            | Description\n----------------- | -------------------------------------------------------------------\nActionBar         | Group multiple buttons and arrange in 'left', 'middle', and 'right'\nButton            | A simple button with a label and a callback\nCalendar          | A calendar for selecting a date\nCheckButton       | A check button with a label\nCheckMenuItem     | A checkable menu item\nComboBoxText      | A simple combo box\nDrawingArea       | A drawing area (requires the 'Cairo' module)\nEntry             | Allows for text to be provided by the user\nFileChooserButton | A button that opens a file chooser dialog\nFrame             | A bin with a decorative frame and optional label\nGrid              | A table-like container for widgets for window design\nImage             | An image widget\nLabel             | Adds a line of text\nLevelBar          | A bar that can used as a level indicator\nLinkButton        | Create buttons bound to a URL\nListBox           | A vertical listbox where each row is selectable\nMarkUpLabel       | Adds text with GTK mark up (e.g. color and font manipulation)\nMenu              | A simple menu with a menu item label\nMenuBar           | A simple menu bar that contain one or more menus\nMenuItem          | A simple menu item that can have a sub menu\nMenuToolButton    | A menu tool button with a label or an icon\nPlacesSidebar     | Sidebar that displays frequently-used places in the file system\nProgressBar       | Show progress via a filling bar\nScale             | Allows for a number to be provided by the user\nScrolledWindow    | Container for widgets needing scrolling, eg., multiline texts\nRadioButton       | A choice from multiple radio buttons\nSpinner           | Showing that something is happening\nTextView          | Adds multiple lines of text\nToggleButton      | A toggle-able button\nToolbar           | A tool bar that can contain one or more menu tool buttons\nVBox, HBox        | Widget containers which enable window layout design\n\n## Example\n\n```raku\nuse GTK::Simple;\n\nmy $app = GTK::Simple::App.new( title =\u003e \"Hello GTK!\" );\n\n$app.set-content(\n    GTK::Simple::VBox.new(\n        my $button = GTK::Simple::Button.new(label =\u003e \"Hello World!\"),\n        my $second = GTK::Simple::Button.new(label =\u003e \"Goodbye!\")\n    )\n);\n\n$app.border-width = 20;\n$second.sensitive = False;\n$button.clicked.tap({ .sensitive = False; $second.sensitive = True });\n$second.clicked.tap({ $app.exit; });\n$app.run;\n```\n\n### Using :subs option\n\nAnother approach is to specify `:subs` on import. This provides subroutine aliases for the constructors\nof all of the available `GTK::Simple` widgets, converted from CamelCase to kebab-case.\n\n`GTK::Simple::MenuToolButton` becomes `menu-tool-button`, `GTK::Simple::ProgressBar` becomes `progress-bar`, etc.\n\nThe above example can be equivalently written as:\n\n```raku\nuse GTK::Simple :subs;\n\nmy $app = app(title =\u003e \"Hello GTK!\");\n\n$app.set-content(\n    v-box(\n        my $button1 = button(label =\u003e \"Hello World\"),\n        my $button2 = button(label =\u003e \"Goodbye!\")\n    )\n);\n\n# ...\n```\n\n### Further examples\n\nThe first four examples were written as mini tutorials to show how the\nsystem works:\n- [Hello world](https://github.com/finanalyst/GTK-Simple/blob/master/examples/01-hello-world.raku)\n- [Toggles](https://github.com/finanalyst/GTK-Simple/blob/master/examples/02-toggles.raku)\n- [A simple grid](https://github.com/finanalyst/GTK-Simple/blob/master/examples/03-grid.raku)\n- [Marked Scales](https://github.com/finanalyst/GTK-Simple/blob/master/examples/04-marked-scale.raku)\n\nFor more examples, please see the [examples/](https://github.com/finanalyst/GTK-Simple/blob/master/examples) folder.\n\n## Limitations\n\nThe full functionality of [GTK 3](http://www.gtk.org/) is not available in\nthis module.\n\n## Prerequisites\n\nThis module requires the GTK3 library to be installed. Please follow the\ninstructions below based on your platform:\n\n### Debian Linux\n\n```\nsudo apt-get install libgtk-3-dev\n```\n\n### Mac OS X\n\n```\nbrew update\nbrew install gtk+3\n```\n\n## Windows\n\nThe GTK team describes how to do this for Windows at\n[Setting up GTK for Window](https://www.gtk.org/docs/installations/windows/)\n\n## Installation and sanity tests\n\nUse the zef package manager\n\n```\n$ zef install GTK::Simple\n```\n\n## Author\n\nJonathan Worthington, jnthn on #raku, https://github.com/jnthn/\n\n## Contributors\n\nThe Raku team\n\n## License\n\nThe Artistic License 2.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffinanalyst%2Fgtk-simple","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffinanalyst%2Fgtk-simple","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffinanalyst%2Fgtk-simple/lists"}