{"id":13529131,"url":"https://github.com/kotcrab/vis-ui","last_synced_at":"2026-03-12T16:13:23.264Z","repository":{"id":15456023,"uuid":"18189061","full_name":"kotcrab/vis-ui","owner":"kotcrab","description":"libGDX UI toolkit","archived":false,"fork":false,"pushed_at":"2025-07-13T17:01:03.000Z","size":22466,"stargazers_count":757,"open_issues_count":25,"forks_count":128,"subscribers_count":37,"default_branch":"master","last_synced_at":"2025-07-13T18:07:13.396Z","etag":null,"topics":["gui","java","libgdx","scene2d"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kotcrab.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":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-03-27T19:45:58.000Z","updated_at":"2025-07-13T17:01:06.000Z","dependencies_parsed_at":"2023-01-14T00:30:25.332Z","dependency_job_id":"45465c35-b22c-47b0-bcd2-451c42aef979","html_url":"https://github.com/kotcrab/vis-ui","commit_stats":null,"previous_names":["kotcrab/vis-editor","kotcrab/vissceneeditor"],"tags_count":60,"template":false,"template_full_name":null,"purl":"pkg:github/kotcrab/vis-ui","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kotcrab%2Fvis-ui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kotcrab%2Fvis-ui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kotcrab%2Fvis-ui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kotcrab%2Fvis-ui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kotcrab","download_url":"https://codeload.github.com/kotcrab/vis-ui/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kotcrab%2Fvis-ui/sbom","scorecard":{"id":568350,"data":{"date":"2025-08-11","repo":{"name":"github.com/kotcrab/vis-ui","commit":"ccd29c850f326251e7740efdce24d75a3528e4c6"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.1,"checks":[{"name":"Code-Review","score":3,"reason":"Found 9/30 approved changesets -- score normalized to 3","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":7,"reason":"8 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 7","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: topLevel 'contents' permission set to 'read': .github/workflows/pr.yml:7","Warn: no topLevel permission defined: .github/workflows/release.yml:1","Warn: no topLevel permission defined: .github/workflows/snapshot.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pr.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/kotcrab/vis-ui/pr.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pr.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/kotcrab/vis-ui/pr.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/kotcrab/vis-ui/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/kotcrab/vis-ui/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/snapshot.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/kotcrab/vis-ui/snapshot.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/snapshot.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/kotcrab/vis-ui/snapshot.yml/master?enable=pin","Info:   0 out of   6 GitHub-owned GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":9,"reason":"binaries present in source code","details":["Warn: binary detected: gradle/wrapper/gradle-wrapper.jar:1"],"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/release.yml:9"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 10 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-20T15:36:25.640Z","repository_id":15456023,"created_at":"2025-08-20T15:36:25.640Z","updated_at":"2025-08-20T15:36:25.640Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27779855,"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-12-17T02:00:08.291Z","response_time":55,"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","java","libgdx","scene2d"],"created_at":"2024-08-01T07:00:33.539Z","updated_at":"2025-12-17T08:03:19.272Z","avatar_url":"https://github.com/kotcrab.png","language":"Java","funding_links":[],"categories":["Libraries","Resources"],"sub_categories":["Java","User Interface"],"readme":"# VisUI\n\nVisUI allows to create nice looking UI in libGDX using scene2d.ui. Library contains scene2d.ui skin, useful widgets like color picker and file chooser, it also contains modified scene2d.ui widgets to provide some extra functionality like focus borders, background change on over and click, etc.\n\nVisUI is licensed under Apache2 license meaning that you can use it for free in both commercial and non-commercial projects.\n\n##### [CHANGES](https://github.com/kotcrab/vis-ui/blob/master/ui/CHANGES.md) file (definitely read before updating!)\n\n**[Web demo!](http://vis.kotcrab.com/demo/ui)** [(source code)](https://github.com/kotcrab/vis-ui/tree/master/ui/src/test/java/com/kotcrab/vis/ui/test/manual)\n\n![VisUI screenshot](http://dl.kotcrab.com/github/vis/visui2.png)\n[Bigger screenshot](http://dl.kotcrab.com/github/vis/visui2.png)\n\n## Adding VisUI to your project\n\n[![Maven Central](https://img.shields.io/maven-central/v/com.kotcrab.vis/vis-ui.svg)](https://search.maven.org/artifact/com.kotcrab.vis/vis-ui)\n\nPlease refer to [libGDX documentation](https://libgdx.com/wiki/articles/dependency-management-with-gradle) if you don't know how to manage dependencies with Gradle. Alternatively JAR can be downloaded from [Maven repository](http://search.maven.org/#search|gav|1|g%3A%22com.kotcrab.vis%22%20AND%20a%3A%22vis-ui%22). If you are creating new project, you can use gdx-setup to automatically add VisUI for you. (press 'Show Third Party Extension' button)\n\n#### Manual Gradle setup:\n\nOpen build.gradle in project root.\nIn ``ext`` section under ``allprojects`` add:\n```groovy\nvisuiVersion = '1.X.X'\n```\nLook at [CHANGES](https://github.com/kotcrab/vis-ui/blob/master/ui/CHANGES.md) file to see what version of VisUI you can use\nfor your version of libGDX. Note that using not matching versions is likely to cause runtime exceptions.\n\n**Core dependency**\n```groovy\napi \"com.kotcrab.vis:vis-ui:$visuiVersion\"\n```\n\n**HTML dependency** (only if you are using GWT):\n```groovy\napi \"com.kotcrab.vis:vis-ui:$visuiVersion:sources\"\n```\n\n``GdxDefinition.gwt.xml`` and ``GdxDefinitionSuperdev.gwt.xml``:\n```xml\n\u003cinherits name='com.kotcrab.vis.vis-ui' /\u003e\n```\n\nRefresh Gradle dependencies.\n\n## Usage\n\nUsing VisUI is pretty simple, to load or unload the skin call:\n```java\nVisUI.load();\nVisUI.dispose();\n```\n\nCreate your UI like always, for extra skin features you have to use Vis widgets instead of standard scene2d.ui:\n\n| VisUI         | Standard scene2d.ui |\n| ------------- | ------------------- |\n| VisLabel      | Label               |\n| [LinkLabel](https://github.com/kotcrab/vis-ui/wiki/LinkLabel) | -                   |\n| VisCheckBox   | CheckBox            |\n| VisList       | List                |\n| VisProgressBar| ProgressBar         |\n| VisRadioButton| -                   |\n| VisScrollPane | ScrollPane          |\n| VisSelectBox  | SelectBox           |\n| VisSlider     | Slider              |\n| VisSplitPane  | SplitPane           |\n| VisTextArea   | TextArea            |\n| VisTextButton | TextButton          |\n| VisImageTextButton | ImageTextButton |\n| VisImageButton | ImageButton        |\n| VisTextField  | TextField           |\n| [VisValidatableTextField](https://github.com/kotcrab/vis-ui/wiki/VisValidatableTextField) | -       |\n| VisTree       | Tree                |\n| VisWindow     | Window              |\n| VisTable      | Table               |\n| [DragPane](https://github.com/kotcrab/vis-ui/wiki/DragPane)  | -                   |\n| [GridGroup](https://github.com/kotcrab/vis-ui/wiki/GridGroup) | -                   |\n| [ListView](https://github.com/kotcrab/vis-ui/wiki/ListView)  | -                   |\n| [TabbedPane](https://github.com/kotcrab/vis-ui/wiki/TabbedPane)  | -                 |\n| [Spinner](https://github.com/kotcrab/vis-ui/wiki/Spinner)  | - |\n| [CollapsibleWidget](https://github.com/kotcrab/vis-ui/wiki/CollapsibleWidget) | -           |\n| [ButtonBar](https://github.com/kotcrab/vis-ui/wiki/ButtonBar) | -           |\n| [FlowGroups](https://github.com/kotcrab/vis-ui/wiki/FlowGroups) | -           |\n\nUsing Vis widgets is necessary for proper focus border management. All VisUI widgets constructors do not have Skin argument, they are using VisUI.skin field.\n\n### VisTable\n\nVisTable allows to easily set default spacing for vis components, construct it like this:\n```\nVisTable table = new VisTable(true);\n```\n\nVisTable also allows adding vertical and horizontal separators to table:\n```java\ntable.addSeparator() //horizontal\ntable.addSeparator(true) //vertical\n```\n\n### Using different `SkinScale`s\n\nDefault VisUI skin can be too small for high resolution screens or mobile devices, in that case you can load a upscaled skin version simply by calling:\n```\nVisUI.load(SkinScale.X2);\n```\n\n### Internal classes\n\nClasses inside `com.kotcrab.vis.[...].internal` packages are considered private and aren't part of public API. Changes to that classes won't be listed in change log.\n\n### Default title align\n\nDefault title align for VisWindow and VisDialog is `Align.left` this can be changed by calling:\n```java\nVisUI.setDefaultTitleAlign(int align)\n```\nCalling this method does not affect windows that have been already created.\n\n## Modifying skin\n\n[Raw skin files](https://github.com/kotcrab/vis-ui/tree/master/ui/assets-raw) are available if you would like to modify them. After you pack them using libGDX texture packer, add generated atlas to your project with [uiskin.json, default.fnt and font-small.fnt](https://github.com/kotcrab/vis-ui/tree/master/ui/src/main/resources/com/kotcrab/vis/ui/skin/x1) and load it by calling:\n```java\nVisUI.load(Gdx.files.internal(\"path/to/your/modified/files/uiskin.json\"))\n```\nConsider using USL if you want to extend existing VisUI styles. [Read more](https://github.com/kotcrab/vis-ui/wiki/USL)\n\n## See also\n\n* [vis-ui-contrib](https://github.com/kotcrab/vis-ui-contrib) - Community driven extension, utilities and skins for VisUI\n* [ktx](https://github.com/czyzby/ktx) - Kotlin utilities for libGDX applications.\n  The [ktx-vis](https://github.com/czyzby/ktx/tree/master/vis) and\n  [ktx-style-vis](https://github.com/czyzby/ktx/tree/master/vis-style) modules provide Kotlin APIs for VisUI.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkotcrab%2Fvis-ui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkotcrab%2Fvis-ui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkotcrab%2Fvis-ui/lists"}