{"id":14449561,"url":"https://github.com/KINGTUT10101/TuxRedux","last_synced_at":"2025-08-28T03:31:56.216Z","repository":{"id":245037356,"uuid":"817061117","full_name":"KINGTUT10101/TuxRedux","owner":"KINGTUT10101","description":"An immediate-mode UI system for LOVE2D inspired by SUIT.","archived":false,"fork":false,"pushed_at":"2025-08-08T02:23:47.000Z","size":141,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-08T04:22:49.600Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/KINGTUT10101.png","metadata":{"files":{"readme":"README.md","changelog":null,"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,"zenodo":null}},"created_at":"2024-06-19T00:14:59.000Z","updated_at":"2025-08-08T02:23:51.000Z","dependencies_parsed_at":"2024-06-19T08:23:30.396Z","dependency_job_id":"67bcb60e-c0cb-45fd-ac46-cbe3de3d45ba","html_url":"https://github.com/KINGTUT10101/TuxRedux","commit_stats":null,"previous_names":["kingtut10101/tuxredux"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/KINGTUT10101/TuxRedux","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KINGTUT10101%2FTuxRedux","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KINGTUT10101%2FTuxRedux/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KINGTUT10101%2FTuxRedux/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KINGTUT10101%2FTuxRedux/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KINGTUT10101","download_url":"https://codeload.github.com/KINGTUT10101/TuxRedux/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KINGTUT10101%2FTuxRedux/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272430634,"owners_count":24933899,"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-08-28T02:00:10.768Z","response_time":74,"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":[],"created_at":"2024-09-01T08:01:21.766Z","updated_at":"2025-08-28T03:31:56.194Z","avatar_url":"https://github.com/KINGTUT10101.png","language":"Lua","funding_links":[],"categories":["Recently Updated","UI"],"sub_categories":["[Aug 30, 2024](/content/2024/08/30/README.md)"],"readme":"## TuxRedux\n\n\u003e **NOTE: This project is still in early development and is lacking documentation. It will be developed over time as I finish up Just Another Sand Game v1.0**\n\n\u003e **WARNING: It is recommended that you use this library with LOVE2D v11.5 or newer. There is a known bug with LuaJIT in older versions of LOVE2D v11 that may break the layout system. If you want to use this library with older versions of LOVE2D v11, it is recommended that you either disable LuaJIT or avoid using the layout functions.**\n\nTux Redux is an immediate-mode UI system for LOVE2D inspired by [SUIT](https://github.com/vrld/suit). It is a continuation of my original extension to SUIT called [Tux](https://github.com/KINGTUT10101/tux/tree/master).\n\nIf you'd like an example of Tux Redux in action, check out my weekend game jam project, [Verify You're Human](https://github.com/KINGTUT10101/VerifyYoureHuman).\n\n![image](https://github.com/user-attachments/assets/b011325a-9cfd-4a6d-8b05-c4199ef9fcf5)\n```lua\nlocal tux = require (\"tux\")\n\nlocal checkboxData = {checked = false}\nlocal checkColor = {\n    on = {0, 1, 0, 1},\n    off = {1, 0, 0, 1},\n}\nlocal sliderData = {value = 0}\nlocal singleInputData = {\n    text = \"First data\",\n    inFocus = false,\n}\n\nfunction love.update (dt)\n    tux.callbacks.update (dt)\n\n    tux.show.label ({colors = {1, 0, 0, 1},}, 100, 100, 250, 100)\n    tux.show.label ({\n        colors = {1, 0, 1, 1},\n        tooltip = {\n            text = \"This is a test\"\n        }\n    }, 150, 150, 250, 100)\n\n    if tux.show.button (nil, 400, 300, 100, 200) == \"end\" then\n        print (\"end\")\n    end\n    if tux.show.button (nil, 450, 350, 100, 200) == \"start\" then\n        print (\"start\")\n    end\n\n    tux.show.noPressZone (nil, 550, 100, 100, 100)\n    if tux.show.button (nil, 600, 150, 100, 200) == \"held\" then\n        print (\"held\")\n    end\n\n    if tux.show.button ({text=\"Debug mode\"}, 25, 525, 50, 50) == \"start\" then\n        tux.utils.setDebugMode (not tux.utils.getDebugMode ())\n    end\n    \n    tux.show.checkbox ({data = checkboxData, mark = \"cross\"}, 500, 25, 100, 50)\n\n    tux.show.toggle ({data = checkboxData, checkColor = checkColor, style = \"round\"}, 25, 350, 50, 50)\n\n    tux.show.slider ({data = sliderData}, 150, 300, 200, 50)\n\n    tux.show.label ({\n        text = math.floor (sliderData.value * 100) / 100,\n        colors = {1, 0, 1, 1},\n    }, 25, 25, 50, 25)\n\n    tux.show.singleInput ({data = singleInputData}, 150, 400, 200, 50)\nend\n\nfunction love.draw ()\n    tux.callbacks.draw ()\n\n    -- Prints the cursor coordinates\n    local mx, my = love.mouse.getPosition ()\n    love.graphics.setColor (1, 1, 1, 1)\n    love.graphics.print (mx .. \", \" .. my, 700, 25)\n\n    -- Prints the current debug mode\n    love.graphics.print (\"Debug: \" .. tostring (tux.utils.getDebugMode ()), 700, 50)\nend\n\nfunction love.textinput (text)\n    tux.callbacks.textinput (text)\nend\n\nfunction love.keypressed (key, scancode, isrepeat)\n    tux.callbacks.keypressed (key, scancode, isrepeat)\nend\n```\n\n### Project Goals\n\nThe following is a list of goals that I intend to fulfill with this project in the future:\n\n*   A familiar and intuitive interface inspired by SUIT\n    *   UI components can be be shown by simply executing a function\n    *   The state of the UI component is returned as a string and can be easily integrated with your existing logic\n*   Better documentation and more examples\n*   More base components\n    *   Multiline text fields\n    *   Toggle switches\n    *   Drop-downs\n*   New UI options\n    *   Icon support\n    *   Padding\n    *   Nineslices\n    *   Better text alignment\n    *   Automatic font sizing\n*   Improved layout system\n*   High extensibility\n    *   New components only require a couple functions and attributes to create\n    *   Registering components is as easy as calling tux.utils.register\n    *   Internal rendering behavior is easily accessible/replaceable and well-documented\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FKINGTUT10101%2FTuxRedux","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FKINGTUT10101%2FTuxRedux","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FKINGTUT10101%2FTuxRedux/lists"}