{"id":15049462,"url":"https://github.com/sagacious-software/gosh","last_synced_at":"2025-04-12T20:13:14.860Z","repository":{"id":148124553,"uuid":"304098754","full_name":"Sagacious-Software/Gosh","owner":"Sagacious-Software","description":"Simple and lightweight, framebuffer-oriented, cross-platform windowing library.","archived":false,"fork":false,"pushed_at":"2020-11-22T23:32:17.000Z","size":119,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-12T20:13:10.217Z","etag":null,"topics":["ansi","ansi-c","api","backend","buffer","c","c89","c90","framebuffer","library","pixel-buffers","pixelbuffer","window","windowing","wrapper","wrapper-api","x11"],"latest_commit_sha":null,"homepage":"","language":"C","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/Sagacious-Software.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}},"created_at":"2020-10-14T18:14:32.000Z","updated_at":"2024-10-29T18:41:04.000Z","dependencies_parsed_at":"2023-05-19T05:00:34.253Z","dependency_job_id":null,"html_url":"https://github.com/Sagacious-Software/Gosh","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sagacious-Software%2FGosh","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sagacious-Software%2FGosh/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sagacious-Software%2FGosh/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sagacious-Software%2FGosh/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Sagacious-Software","download_url":"https://codeload.github.com/Sagacious-Software/Gosh/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248625517,"owners_count":21135514,"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":["ansi","ansi-c","api","backend","buffer","c","c89","c90","framebuffer","library","pixel-buffers","pixelbuffer","window","windowing","wrapper","wrapper-api","x11"],"created_at":"2024-09-24T21:20:35.577Z","updated_at":"2025-04-12T20:13:14.839Z","avatar_url":"https://github.com/Sagacious-Software.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Gosh\n\nSimple and easy to use cross-platform window system API.\n\nIt aims to be similar to SDL, but more lightweight, and designed around giving you easy access to the window's buffer in software.\n\n## Build\n\nYou will need `meson` in order to build the library.\n\nFirst edit `meson_options.txt` and choose which backends you would like to compile support for.\nSet the ones you would like to enable to `enabled` and the rest of them to `disabled`.\nNote that if you are on Unix and would like to use the Windows backend you have to have Wine installed (see below).\n\nThen build the library and the demos by running this in the root of the repository:\n\n```bash\nmeson builddir --buildtype release\ncd builddir\nmeson compile\n```\n\n(Optionally do `--buildtype debug` instead if you would like to keep debugging information and turn optimizations off, e.g., if you want to do development.)\n\n### Wine build\n\nIf you are on Unix and have Wine installed you can enable the Windows backend option in `meson_options.txt`.\n\nThen do this back in the root of the repository if you would like to do a Wine build:\n\n```bash\nCC=winegcc meson buildwine --buildtype release\ncd buildwine\nmeson compile\n```\n\nAgain, you can change `release` to `debug` if you like!\n\n## Try the demos\n\nTry the demos by running this in the build directory:\n\n```bash\nmeson test\n```\n\n## Install\n\nAnd when you are ready to install do this in the build directory:\n\n```bash\nmeson install\n```\n\n## TODO\n\n### General\n\n- Setup for multiple demos showcasing different features\n- Screenshot/gif\n- Proper error handling\n- Optimisations optimisations optimisanions !!!!!\n\n### X11\n\n- Complete the keycode mappings\n- Proper generic color handling in X11\n- Proper vsync!\n- Filter out repeat resize events in event queue (to avoid resize drawing lag)\n- X11 MIT-SHM extension when available\n- Fix \"BadDrawable\" on attempt to draw while window is closing\n- Mechanism for detecting when last window is closed\n- Keeping proper track of closed windows\n\n### Backends\n\n- Auto detect backend (with environment variable override)\n- Wayland backend\n- MacOS backend\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsagacious-software%2Fgosh","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsagacious-software%2Fgosh","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsagacious-software%2Fgosh/lists"}