{"id":50973548,"url":"https://github.com/gnustep/libs-uikit","last_synced_at":"2026-06-19T05:02:17.453Z","repository":{"id":362195547,"uuid":"1257734861","full_name":"gnustep/libs-uikit","owner":"gnustep","description":null,"archived":false,"fork":false,"pushed_at":"2026-06-03T03:52:51.000Z","size":46,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-03T05:19:19.784Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Objective-C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gnustep.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog","contributing":null,"funding":null,"license":"COPYING.LIB","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":"2026-06-03T00:53:40.000Z","updated_at":"2026-06-03T03:52:55.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/gnustep/libs-uikit","commit_stats":null,"previous_names":["gnustep/libs-uikit"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/gnustep/libs-uikit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnustep%2Flibs-uikit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnustep%2Flibs-uikit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnustep%2Flibs-uikit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnustep%2Flibs-uikit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gnustep","download_url":"https://codeload.github.com/gnustep/libs-uikit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnustep%2Flibs-uikit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34517752,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-19T02:00:06.005Z","response_time":61,"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":"2026-06-19T05:02:12.051Z","updated_at":"2026-06-19T05:02:17.447Z","avatar_url":"https://github.com/gnustep.png","language":"Objective-C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# libs-uikit\n\n`libs-uikit` is a GNUstep Objective-C library that provides a UIKit-like API on\ntop of GNUstep Base and GUI. It is intended for code that wants familiar UIKit\nclass names and application structure while running in a GNUstep/AppKit\nenvironment.\n\nThe library currently exposes a focused subset of UIKit-style classes including\napplication/window management, views and view controllers, common controls,\ntable/navigation/tab containers, images, colors, fonts, nib loading helpers, and\nbasic device/screen abstractions.\n\nThis is currently a POC which may have significant gaps with the actual UIKit.\nIt illustrates that using AppKit to create some of the widgets needed for UIKit is\npossible.\n\n## AI Disclosure\n\nAI was used for some of the concepts of this library.  Particularly the repetative\ncoding parts.\n\n## Contents\n\n- `Headers/UIKit/` - public headers and the umbrella `UIKit.h` header.\n- `Source/` - Objective-C implementation files and the library makefile.\n- `Examples/` - a small `UIKitExample` GNUstep application using a xib file.\n- `COPYING.LIB` - GNU Lesser General Public License text.\n\n## Requirements\n\n- GNUstep Make\n- GNUstep Base\n- GNUstep GUI\n- Objective-C compiler supported by GNUstep\n\n`GNUSTEP_MAKEFILES` must be available. If it is not already exported by your\nenvironment, the top-level makefile tries to discover it with:\n\n```sh\ngnustep-config --variable=GNUSTEP_MAKEFILES\n```\n\n## Building\n\nFrom the repository root:\n\n```sh\nmake\n```\n\nThe top-level build includes both subprojects:\n\n- `Source` builds the `libs-uikit` shared library.\n- `Examples` builds the `UIKitExample` application.\n\nTo build only the library:\n\n```sh\nmake -C Source\n```\n\nTo build only the example application:\n\n```sh\nmake -C Examples\n```\n\n## Building For Android\n\nThe Android build uses the NDK CMake toolchain and builds the library target\nonly. It expects GNUstep Base, GNUstep GUI, and libobjc to already be built for\nthe same Android ABI and available in one prefix.\n\n```sh\ncmake -S . -B build-android \\\n  -DCMAKE_TOOLCHAIN_FILE=\"$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake\" \\\n  -DANDROID_ABI=arm64-v8a \\\n  -DANDROID_PLATFORM=android-24 \\\n  -DGNUSTEP_ANDROID_ROOT=/path/to/android-gnustep-prefix\n\ncmake --build build-android\n```\n\n`GNUSTEP_ANDROID_ROOT` should contain GNUstep headers under either\n`include/GNUstep` or `include`, and Android ABI libraries under either `lib` or\n`lib/\u003cabi\u003e`. If your Objective-C runtime is not libobjc2's GNUstep 2.0 runtime,\noverride `UIKIT_ANDROID_OBJC_RUNTIME`.\n\n## Running The Example\n\nAfter building, run the example application from the `Examples` directory using\nthe normal GNUstep application launch method for your environment. The example\ncreates a `UIWindow`, loads `MainView.xib` through an `ExampleViewController`,\nand demonstrates labels, text fields, sliders, switches, buttons, and control\nevents.\n\n## Using The Library\n\nImport the umbrella header:\n\n```objc\n#import \u003cUIKit/UIKit.h\u003e\n```\n\nApplications use the familiar UIKit-style entry point:\n\n```objc\nint main(int argc, char **argv)\n{\n  return UIApplicationMain(argc, argv, nil, @\"ExampleAppDelegate\");\n}\n```\n\nThe public API is intentionally modeled around UIKit names, but the underlying\ntypes are GNUstep/AppKit types. For example, `CGPoint`, `CGSize`, and `CGRect`\nare typedefs for `NSPoint`, `NSSize`, and `NSRect`.\n\n## Implemented Public Headers\n\n- `UIApplication`, `UIResponder`, `UIScreen`, `UIDevice`\n- `UIView`, `UIWindow`, `UIViewController`\n- `UIColor`, `UIImage`, `UIFont`\n- `UILabel`, `UIImageView`\n- `UIControl`, `UIButton`, `UITextField`, `UITextView`\n- `UISlider`, `UISwitch`, `UISegmentedControl`, `UIScrollView`\n- `UITableView`, `UITableViewCell`, `NSIndexPath+UIKit`\n- `UINavigationItem`, `UINavigationController`, `UITabBarController`\n- `UIActivityIndicatorView`, `UIAlertView`\n- `UINib`, `NSBundle+UIKit`\n\n## License\n\nThis project is distributed under the GNU Lesser General Public License. See\n`COPYING.LIB` for the full license text.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgnustep%2Flibs-uikit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgnustep%2Flibs-uikit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgnustep%2Flibs-uikit/lists"}