{"id":23892182,"url":"https://github.com/nykenik24/glideui","last_synced_at":"2026-04-21T03:31:29.981Z","repository":{"id":270911556,"uuid":"911621685","full_name":"Nykenik24/GlideUI","owner":"Nykenik24","description":"A lightweight Love2d GUI library","archived":false,"fork":false,"pushed_at":"2025-02-17T19:32:50.000Z","size":134,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-17T20:27:10.775Z","etag":null,"topics":["gui","interface","library","lightweight","love2d"],"latest_commit_sha":null,"homepage":"","language":"Lua","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/Nykenik24.png","metadata":{"files":{"readme":"README.md","changelog":null,"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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-01-03T13:00:34.000Z","updated_at":"2025-02-17T19:32:53.000Z","dependencies_parsed_at":"2025-01-18T23:21:44.319Z","dependency_job_id":"cc99a8a7-e3c4-4eec-b0a0-5731209f52b4","html_url":"https://github.com/Nykenik24/GlideUI","commit_stats":null,"previous_names":["nykenik24/glideui"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/Nykenik24/GlideUI","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nykenik24%2FGlideUI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nykenik24%2FGlideUI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nykenik24%2FGlideUI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nykenik24%2FGlideUI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Nykenik24","download_url":"https://codeload.github.com/Nykenik24/GlideUI/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nykenik24%2FGlideUI/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279018215,"owners_count":26086307,"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-14T02:00:06.444Z","response_time":60,"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":["gui","interface","library","lightweight","love2d"],"created_at":"2025-01-04T13:39:32.745Z","updated_at":"2025-10-14T07:40:40.051Z","avatar_url":"https://github.com/Nykenik24.png","language":"Lua","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- TOC start (generated with https://github.com/derlin/bitdowntoc) --\u003e\n- [Overview](#overview)\n   * [Disclaimer](#disclaimer)\n      + [Helping in development](#helping-in-development)\n- [Features](#features)\n   * [Elements 🟦](#elements-)\n   * [Frames 🖼️](#frames-)\n   * [Flexible and Powerful UIs 🔨](#flexible-and-powerful-uis-)\n   * [Events 📥](#events-)\n- [Simple GUI example](#simple-gui-example)\n- [Installation](#installation)\n- [Roadmap](#roadmap)\n- [More](#more)\n   * [Demo](#demo)\n   * [Recipes](#recipes)\n\n\n\u003c!-- TOC end --\u003e\n\n![GitHub Downloads (all assets, all releases)](https://img.shields.io/github/downloads/Nykenik24/GlideUI/total) ![GitHub Repo stars](https://img.shields.io/github/stars/Nykenik24/GlideUI?style=flat) ![GitHub last commit](https://img.shields.io/github/last-commit/Nykenik24/GlideUI) ![GitHub Release Date](https://img.shields.io/github/release-date/Nykenik24/GlideUI)\n        \n### GlideUI is under the MIT license.\n# Overview\nA lightweight Love2d GUI library with the purpose of creating easy and fast interfaces for quick debugging, ultra-customizable menus and more.\n\n## Disclaimer\nGlideUI is currently **W.I.P** *(Work In Progress)*, so expect bugs and missing features. I am working hard on making it fully stable, but for now, do not expect perfect behavior from the library.\n\n### Helping in development\n- If you encounter any bug or have suggestions, you can [open an issue](https://github.com/Nykenik24/GlideUI/issues).\n- If you want to contribute, please see [CONTRIBUTING.md](./CONTRIBUTING.md).\n\n# Features\n## Elements 🟦\nGlide's elements are not `button`, `slider`, etc. They are objects with various useful events, methods, style options, and basic parameters. This makes it so you can build your GUI elements step by step, but without being too tedious, allowing for incredible customization.\n\n## Frames 🖼️\nFrames in Glide act as element containers. You can align (more easily) or attach (more precisely) an element to a frame, and then move the frame with `Frame:Drag()` or by manually changing `frame.x` and `frame.y`. Frames also have mouse grabbing (with `Frame:GrabMouse(true)`).\n\n## Flexible and Powerful UIs 🔨\nGlideUI allows for infinite customization of [elements](README.md#elements) and [frames](README.md#frames). You can lighten or darken your elements with methods, or restore their color completely. Set and adjust properties as needed. Set and align the text inside elements, or align elements inside frames. The possibilites are infinite!\n\n## Events 📥\nGlide's elements have easy-to-use events, such as `OnPress(button: number, func: function)`, `OnHover(func: function)`, `OnUnhover(func: function)`, `OnHold(button: number, func: function)`, and more.\n\n# Simple GUI example\nThis will produce a GUI with a button in the middle of a draggable frame.\n```lua\nfunction love.load()\n    glide = require(\"lib.glide\")\n\n    --make a new element\n    --parameters: x, y, width, height, color\n    BUTTON = glide.New(200, 300, 125, 25, {0.25, 0.25, 0.75})\n    BUTTON:SetText(\"Press me!\") --set the button's text\n\n    --make a new frame\n    --parameters: x, y, width, height, color\n    FRAME = glide.NewFrame(100, 200, 200, 200, {0.5, 0.5, 0.5})\nend\n\nfunction love.update(dt) -- called every frame\n\n    glide.Update() --IMPORTANT: call this before any other glide call\n\n    --use the button's OnPress event\n    BUTTON:OnPress(1, function()\n        BUTTON:SetText(\"Pressed!\")\n    end)\n\n    --make the button be in the middle of the frame\n    BUTTON:AlignToFrameX(FRAME, \"center\")\n    BUTTON:AlignToFrameY(FRAME, \"center\")\n\n    --make the frame draggable\n    FRAME:Drag()\nend\n\nfunction love.draw()\n    --draw both button and frame\n    --draw first the frame to not make it draw over the button\n    FRAME:Draw() \n    BUTTON:Draw()\nend\n```\n\n# Installation\n1. ## Download the library:\nThere are three methods to download the library:\n### Clone the library:\n\u003cdetails\u003e\n\u003csummary\u003ePros/Cons\u003c/summary\u003e\n    \n#### Pros:\n- Easy to use.\n- Doesn't require a git repository.\n#### Cons:\n- Has to be manually updated.\n- Harder to manage long-term.\n\u003c/details\u003e\n\n```bash\ngit clone https://github.com/Nykenik24/GlideUI.git path/to/glide\n```\n### Add as a submodule **(recommended)**:\n\u003cdetails\u003e\n\u003csummary\u003ePros/Cons\u003c/summary\u003e\n    \n#### Pros:\n- Easier to update.\n- Easy to use.\n#### Cons:\n- A git repository is necessary.\n\u003c/details\u003e\n\n```bash\ngit submodule add https://github.com/Nykenik24/GlideUI.git path/to/glide\n```\n### Download the latest release.\n- Go to the repository main page.\n- At the bottom-right, go to the latest release.\n- Download the `.zip` file attached.\n- Put it in your project.\n- Extract it.\n\u003cdetails\u003e\n\u003csummary\u003ePros/Cons\u003c/summary\u003e\n    \n#### Pros:\n- Releases are usually stable and rarely have bugs.\n#### Cons:\n- You don't have the latest features.\n\u003c/details\u003e\n\n2. ## Require the library:\n```lua\nlocal glide = require(\"path.to.glide\")\n```\nNow you can use GlideUI!\n\n# Roadmap\n- ~Make a better frame dragging system.~\n- Make all the functionality you need.\n- Make it as stable as possible.\n\u003c!--\n- Make a layer system for frames and elements.\nI want GlideUI to not have any element/frame registry or table, so making a layer system is basically impossible. I also don't want to interfere\non how you draw and manage your UIs\n--\u003e\n\u003c!-- \n- Fix all visual and interactive bugs (Such as dragging multiple elements at the same time unintentionally).\nThis doesn't make sense as bugs will appear and disappear over time, so it's not really an objective; it is a task.\n--\u003e\n\n# More\n\n## Demo\nTo run the demo, run the `main.lua` file with `love`.\n\n## Recipes\n\u003cdetails\u003e\n\u003csummary\u003eButton with hover\u003c/summary\u003e\n\n```lua\nfunction love.load()\n    local glide = require(\"glide\")\n    BUTTON = glide.New(200, 300, 125, 25, {1, 0, 0})\nend\n\nfunction love.update()\n    glide.Update()\n\n    BUTTON:OnHover(function()\n        BUTTON:Darken(0.25)\n    end)\n    BUTTON:OnUnhover(function()\n        BUTTON:RestoreColor()\n    end)\nend\n\nfunction love.draw()\n    BUTTON:Draw()\nend\n```\n\n![Hovered](screenshots/hover_button_1.png) ![Not hovered](screenshots/hover_button_2.png)\n\u003c/details\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnykenik24%2Fglideui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnykenik24%2Fglideui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnykenik24%2Fglideui/lists"}