{"id":50317678,"url":"https://github.com/totalcross/totalcross","last_synced_at":"2026-07-01T23:01:48.211Z","repository":{"id":48575396,"uuid":"247139556","full_name":"TotalCross/totalcross","owner":"TotalCross","description":"TotalCross is a Software Development Kit that helps cross platform application development. Currently supported platforms are: Windows, Wince, Android, iOS, Linux and Linux ARM for embedded systems.","archived":false,"fork":false,"pushed_at":"2026-06-25T18:49:06.000Z","size":230143,"stargazers_count":224,"open_issues_count":109,"forks_count":42,"subscribers_count":16,"default_branch":"master","last_synced_at":"2026-06-25T19:14:11.039Z","etag":null,"topics":["c","embedded-systems","gui","iot","java","java-api","java-graphics","java-gui-application","linux-arm","totalcross"],"latest_commit_sha":null,"homepage":"https://www.totalcross.com","language":"Java","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/TotalCross.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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":"AGENTS.md","dco":null,"cla":null}},"created_at":"2020-03-13T18:41:56.000Z","updated_at":"2026-06-25T18:35:29.000Z","dependencies_parsed_at":"2022-09-02T20:21:37.514Z","dependency_job_id":null,"html_url":"https://github.com/TotalCross/totalcross","commit_stats":null,"previous_names":[],"tags_count":61,"template":false,"template_full_name":null,"purl":"pkg:github/TotalCross/totalcross","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TotalCross%2Ftotalcross","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TotalCross%2Ftotalcross/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TotalCross%2Ftotalcross/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TotalCross%2Ftotalcross/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TotalCross","download_url":"https://codeload.github.com/TotalCross/totalcross/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TotalCross%2Ftotalcross/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35025983,"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-07-01T02:00:05.325Z","response_time":130,"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":["c","embedded-systems","gui","iot","java","java-api","java-graphics","java-gui-application","linux-arm","totalcross"],"created_at":"2026-05-29T01:03:29.971Z","updated_at":"2026-07-01T23:01:48.206Z","avatar_url":"https://github.com/TotalCross.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e \u003ca href=\"https://totalcross.com/\" target=\"_blank\"\u003e \u003cimg src=\"./totalcross.gif\" alt=\"totalcross logo\"/\u003e\u003c/a\u003e\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e \n\u003ch1\u003e TotalCross\u003c/h1\u003e \u003c/div\u003e\n\u003cp align=\"center\"\u003eThe fastest way to build GUI for embedded devices\u003c/strong\u003e\u003c/em\u003e\u003c/p\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://learn.totalcross.com/documentation/get-started\" target=\"_blank\"\u003eGet Started\u003c/a\u003e\n  \u003cspan\u003e\u0026nbsp;\u0026nbsp;•\u0026nbsp;\u0026nbsp;\u003c/span\u003e\n  \u003ca href=\"https://totalcross.com/\" target=\"_blank\"\u003eWebsite\u003c/a\u003e\n  \u003cspan\u003e\u0026nbsp;\u0026nbsp;•\u0026nbsp;\u0026nbsp;\u003c/span\u003e\n  \u003ca href=\"http://learn.totalcross.com/\" target=\"_blank\"\u003eDocs\u003c/a\u003e\n  \u003cspan\u003e\u0026nbsp;\u0026nbsp;•\u0026nbsp;\u0026nbsp;\u003c/span\u003e\n  \u003ca href=\"https://medium.com/totalcross-community\" target=\"_blank\"\u003eBlog\u003c/a\u003e\n  \u003cspan\u003e\u0026nbsp;\u0026nbsp;•\u0026nbsp;\u0026nbsp;\u003c/span\u003e\n  \u003ca href=\"https://t.me/totalcrosscommunity\" target=\"_blank\"\u003eTelegram\u003c/a\u003e\n  \u003cspan\u003e\u0026nbsp;\u0026nbsp;•\u0026nbsp;\u0026nbsp;\u003c/span\u003e\n  \u003ca href=\"https://www.youtube.com/c/totalcross\" target=\"_blank\"\u003eVideos\u003c/a\u003e\n  \u003cspan\u003e\u0026nbsp;\u0026nbsp;•\u0026nbsp;\u0026nbsp;\u003c/span\u003e\n  \u003ca href=\"https://totalcross.com/community/\" target=\"_blank\"\u003eCommunity\u003c/a\u003e\n\u003c/div\u003e\n\n\n\n\u003cbr\u003e\n\u003cdiv align=\"center\"\u003e\n\n[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2FTotalCross%2Ftotalcross.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2FTotalCross%2Ftotalcross?ref=badge_shield)\n![build](https://github.com/TotalCross/totalcross/workflows/build/badge.svg)\n\n\u003c/div\u003e\n\n## Install\n\nTotalCross exists to make Graphical User Interface creation easy.\n\nTo start you only need to install it on your machine, and you have two options:\n\n### Install TotalCross VSCode plugin\n\nThe quickest way to start using TotalCross is to download the [VSCode plugin](https://marketplace.visualstudio.com/items?itemName=totalcross.vscode-totalcross). We highly recommend this route as it is a smoother process.\n\nMake sure all dependencies are fulfilled ([Java JDK 11+](https://www.azul.com/downloads/zulu-community/?version=java-11-lts\u0026architecture=x86-64-bit\u0026package=jdk), [Maven 3.6.2+](https://maven.apache.org/download.cgi), and\n[Microsoft Java Extension Plugin](https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-pack)), create a new project, and you are ready to go!\n\n### ... or run TotalCross from scratch yourself!\n\nIf you prefer to run TotalCross yourself so you can develop on your choice of IDE, clone our [HelloWorld](https://github.com/TotalCross/HelloWorld) repository, make sure you have all dependencies listed above in place, run `mvn package` and you are ready to go!\n\n## Usage\n\nThis is how you create a button with TotalCross:\n\n```java\npackage com.totalcross;\nimport totalcross.ui.gfx.Color;\nimport totalcross.sys.Settings;\nimport totalcross.ui.Button;\nimport totalcross.ui.MainWindow;\npublic class HelloWorld extends MainWindow {\n\n    private Button btnRed;\n    public HelloWorld(){\n        setUIStyle(Settings.MATERIAL_UI);\n    }\n    @Override\n    public void initUI(){\n        btnRed = new Button(\"Red\");\n        btnRed.setBackForeColors(Color.RED, Color.WHITE);\n        add(btnRed, CENTER,CENTER );\n    }\n}\n```\n\nThis is how you extend a button to full screen width:\n\n```java\n     public void initUI() {\n        btnRed = new Button(\"Red\");\n        btnRed.setBackForeColors(Color.RED, Color.WHITE);\n        add(btnRed, CENTER, CENTER, PARENTSIZE, PREFERRED);\n    }\n```\n\nThis is how you round borders on a button:\n\n```java\n     public void initUI() {\n        btnRed = new Button(\"Red\", Button.BORDER_ROUND);\n        btnRed.setBackForeColors(Color.RED, Color.WHITE);\n        add(btnRed, CENTER, CENTER, PARENTSIZE, PREFERRED);\n    }\n```\n\nThis is how event handling happens:\n\n```java\n     public void initUI() {\n        btnRed = new Button(\"Red\", Button.BORDER_ROUND);\n        btnRed.setBackForeColors(Color.RED, Color.WHITE);\n        btnRed.addPressListener((event) -\u003e {\n            // DO SOMETHING\n        });\n        add(btnRed, CENTER, CENTER, PARENTSIZE, PREFERRED);\n    }\n\n```\n\nCool, right? Easy as pie! :)\n\n## What next?\n\nCheck out our [documentation](https://learn.totalcross.com/documentation/components) or read through a [quick starting guide](https://learn.totalcross.com/documentation/get-started) (aprox. 8 minutes) and learn how TotalCross Components will save you tons of time when you build your GUI.\n\n## Have any questions?\n\nJoin our [Telegram group](https://t.me/totalcrosscommunity). We are super quick to welcome and provide help to new users :sweat_smile:.\n\nThere's also a handy [FAQ.md](./FAQ.md) file with all sorts of useful information, as what is inside this repo, how TotalCross works, how to become a contributor, and more.\n\n## Our contributors\n\nWe'd like to give a BIG shout-out to our three first external contributors! These people have helped make TotalCross better by enriching ongoing discussions, reporting bugs, opening issues, and publishing relevant content (videos, articles and etc):\n\n- [@otavio](https://github.com/otavio)\n- [@jeffque](https://github.com/jeffque)\n- [@microhobby](https://github.com/microhobby)\n\nGuys, you rock!\n\n## RoadMap\n\nFind out what TotalCross world domination plans are by clicking [here](https://learn.totalcross.com/roadmap).\n\n### Where you can find us:\n\n- [Docs](learn.totalcross.com);\n- [Issues](gitlab.com/totalcross/totalcross/issues);\n- [Telegram](https://t.me/totalcrosscommunity);\n- [Medium](https://medium.com/totalcross-community/about);\n- [Youtube](https://www.youtube.com/channel/UCSXUBRBC4Ec3_o9R7-3XX-w);\n- [Twitter](https://twitter.com/TotalCross);\n- [Instagram](https://www.instagram.com/totalcross/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftotalcross%2Ftotalcross","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftotalcross%2Ftotalcross","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftotalcross%2Ftotalcross/lists"}