{"id":18556613,"url":"https://github.com/valkryst/vterminal","last_synced_at":"2025-04-06T12:08:10.602Z","repository":{"id":21241014,"uuid":"91964549","full_name":"Valkryst/VTerminal","owner":"Valkryst","description":"A new Look-and-Feel (LaF) for Java, which allows for a grid-based display of Unicode characters with custom fore/background colors, font sizes, and pseudo-shaders. Originally designed for developing Roguelike/lite games.","archived":false,"fork":false,"pushed_at":"2025-03-21T12:56:53.000Z","size":21010,"stargazers_count":86,"open_issues_count":0,"forks_count":8,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-03-30T11:06:39.454Z","etag":null,"topics":["2d","2d-framework","2d-game","2d-game-engine","2d-graphics","ascii","discord","font","game-engine","gamedev","hacktoberfest","laf","look-and-feel","roguelike","roguelike-library","roguelike-tiles","swing","terminal","tiles","unicode"],"latest_commit_sha":null,"homepage":"https://www.valkryst.com/posts?search=VTerminal","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/Valkryst.png","metadata":{"files":{"readme":"README.MD","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.md","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},"funding":{"github":"Valkryst"}},"created_at":"2017-05-21T14:45:20.000Z","updated_at":"2025-03-26T12:44:38.000Z","dependencies_parsed_at":"2023-09-21T22:53:13.320Z","dependency_job_id":"75a81175-4704-49de-b2ac-6eefb133ac89","html_url":"https://github.com/Valkryst/VTerminal","commit_stats":null,"previous_names":[],"tags_count":136,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Valkryst%2FVTerminal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Valkryst%2FVTerminal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Valkryst%2FVTerminal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Valkryst%2FVTerminal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Valkryst","download_url":"https://codeload.github.com/Valkryst/VTerminal/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247478321,"owners_count":20945266,"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":["2d","2d-framework","2d-game","2d-game-engine","2d-graphics","ascii","discord","font","game-engine","gamedev","hacktoberfest","laf","look-and-feel","roguelike","roguelike-library","roguelike-tiles","swing","terminal","tiles","unicode"],"created_at":"2024-11-06T21:32:20.762Z","updated_at":"2025-04-06T12:08:10.570Z","avatar_url":"https://github.com/Valkryst.png","language":"Java","funding_links":["https://github.com/sponsors/Valkryst"],"categories":[],"sub_categories":[],"readme":"![Java CI with Maven](https://github.com/Valkryst/VTerminal/workflows/Java%20CI%20with%20Maven/badge.svg?branch=master)\n\nThis project does not require frequent updates as it is a look and feel for Swing, which is a stable framework. You can assume it works unless otherwise stated.\n\n## Table of Contents\n\n* [Links](https://github.com/Valkryst/VTerminal#links)\n* [Installation](https://github.com/Valkryst/VTerminal#installation)\n\t* [Gradle](https://github.com/Valkryst/VTerminal#-gradle)\n\t* [Maven](https://github.com/Valkryst/VTerminal#-maven)\n\t* [sbt](https://github.com/Valkryst/VTerminal#-scala-sbt)\n* [Media (Screenshots \u0026 Videos)](https://github.com/Valkryst/VTerminal#media)\n* [Supported Components](https://github.com/Valkryst/VTerminal#supported-components)\n* [Enhanced Components](https://github.com/Valkryst/VTerminal#enhanced-components)\n* [Credits \u0026 Inspiration](https://github.com/Valkryst/VTerminal#credits--inspiration)\n\n## Links\n\n* [Discussions/Forum](https://github.com/Valkryst/VTerminal/discussions)\n* Documentation\n\t* [Usage Guide](https://github.com/Valkryst/VTerminal/wiki)\n* Related Projects\n    * [VTerminalPaletteEditor](https://github.com/Valkryst/VTerminalPaletteEditor), which can be used to create or edit custom palettes for use with VTerminal. \n    * [VTerminalTestGUI](https://github.com/Valkryst/VTerminalTestGUI), which I use to visually test VTerminal.\n    *  Chris Reuter's [demo](https://codeberg.org/suetanvil/vterm-demo-jruby), showing how VTerminal can be used with JRuby.\n* [Performance Tips](https://www.valkryst.com/posts/13)\n* [Resolving Compatibility \u0026 Render Issues](https://www.valkryst.com/posts/10)\n\n## Installation\n\nVTerminal is hosted on the [JitPack package repository](https://jitpack.io/#Valkryst/VTerminal)\nwhich supports Gradle, Maven, and sbt.\n\n### ![Gradle](https://i.imgur.com/qtc6bXq.png?1) Gradle\n\nAdd JitPack to your `build.gradle` at the end of repositories.\n\n```\nallprojects {\n\trepositories {\n\t\t...\n\t\tmaven { url 'https://jitpack.io' }\n\t}\n}\n```\n\nAdd VTerminal as a dependency.\n\n```\ndependencies {\n\timplementation 'com.github.Valkryst:VTerminal:2024.11.14'\n}\n```\n\n### ![Maven](https://i.imgur.com/2TZzobp.png?1) Maven\n\nAdd JitPack as a repository.\n\n``` xml\n\u003crepositories\u003e\n    \u003crepository\u003e\n        \u003cid\u003ejitpack.io\u003c/id\u003e\n        \u003curl\u003ehttps://jitpack.io\u003c/url\u003e\n    \u003c/repository\u003e\n\u003c/repositories\u003e\n```\nAdd VTerminal as a dependency.\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.github.Valkryst\u003c/groupId\u003e\n    \u003cartifactId\u003eVTerminal\u003c/artifactId\u003e\n    \u003cversion\u003e2024.11.14\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n### ![Scala SBT](https://i.imgur.com/Nqv3mVd.png?1) Scala SBT\n\nAdd JitPack as a resolver.\n\n```\nresolvers += \"jitpack\" at \"https://jitpack.io\"\n```\n\nAdd VTerminal as a dependency.\n\n```\nlibraryDependencies += \"com.github.Valkryst\" % \"VTerminal\" % \"2024.11.14\"\n```\n\n## Media\n\nPlease note that all screenshots and videos _will_ look worse than if you were to run the example GUI yourself. This is primarily due to compression.\n\n### Screenshots\n\n* [JButton](https://i.imgur.com/cPxSsMt.png)\n* [JCheckBox](https://i.imgur.com/wgAhykm.png)\n* [JLabel](https://i.imgur.com/xLgL7ei.png)\n* [JLayeredPane](https://i.imgur.com/eXLpSAU.png)\n* [JPasswordField](https://i.imgur.com/pJ1krjB.png)\n* [JProgressBar](https://i.imgur.com/YBuP0L7.png)\n* [JRadioButton](https://i.imgur.com/Tt4UlLv.png)\n* [JScrollPane](https://i.imgur.com/x0mFMsq.png)\n* [VEditorPane](https://i.imgur.com/xTdco5g.png)\n* [VPanel](https://i.imgur.com/9JOYN1e.png)\n\t* [With a blur shader.](https://i.imgur.com/0DK4WQj.png)\n* [VTextArea](https://i.imgur.com/ZX9DkA7.png)\n* [VTextField](https://i.imgur.com/FAKN1yP.png)\n* [VTextPane](https://i.imgur.com/sxNXgjV.png)\n\n### Videos\n\n* [Click-through of the example GUI](https://youtu.be/dH1yRMyEL0s) used for\n  testing VTerminal. This covers most, if not all the supported components.\n\n## Supported Components\n\nIf there is a component that you'd like VTerminal to support, or if you're\nexperiencing any issues with the supported components, then please feel free to\n[open an issue](https://github.com/Valkryst/VTerminal/issues/new).\n\n* [JButton](https://docs.oracle.com/en/java/javase/15/docs/api/java.desktop/javax/swing/JButton.html)\n* [JCheckBox](https://docs.oracle.com/en/java/javase/15/docs/api/java.desktop/javax/swing/JCheckBox.html)\n* [JEditorPane](https://docs.oracle.com/en/java/javase/15/docs/api/java.desktop/javax/swing/JEditorPane.html)\n* [JLabel](https://docs.oracle.com/en/java/javase/15/docs/api/java.desktop/javax/swing/JLabel.html)\n* [JPanel](https://docs.oracle.com/en/java/javase/15/docs/api/java.desktop/javax/swing/JPanel.html)\n* [JPasswordField](https://docs.oracle.com/en/java/javase/15/docs/api/java.desktop/javax/swing/JPasswordField.html)\n* [JProgressBar](https://docs.oracle.com/en/java/javase/15/docs/api/java.desktop/javax/swing/JProgressBar.html)\n* [JRadioButton](https://docs.oracle.com/en/java/javase/15/docs/api/java.desktop/javax/swing/JRadioButton.html)\n* [JScrollPane](https://docs.oracle.com/en/java/javase/15/docs/api/java.desktop/javax/swing/JScrollPane.html)\n* [JTextArea](https://docs.oracle.com/en/java/javase/15/docs/api/java.desktop/javax/swing/JTextArea.html)\n* [JTextField](https://docs.oracle.com/en/java/javase/15/docs/api/java.desktop/javax/swing/JTextField.html)\n* [JTextPane](https://docs.oracle.com/en/java/javase/15/docs/api/java.desktop/javax/swing/JTextPane.html)\n* [JToolTip](https://docs.oracle.com/en/java/javase/15/docs/api/java.desktop/javax/swing/JToolTip.html)\n* [VFrame](https://github.com/Valkryst/VTerminal/tree/master/src/main/java/com/valkryst/VTerminal/component/VFrame.java)\n\t* A subclass of _JFrame_ which allows for easier en/disabling of full screen\n\t  mode and which has a number of convenience methods.\n* [VPanel](https://github.com/Valkryst/VTerminal/tree/master/src/main/java/com/valkryst/VTerminal/component/VPanel.java)\n\t* A subclass of _JPanel_ which allows for displaying a 2D grid of characters\n\t  in which each cell can display a unique fore/background color and\n\t  [code point](https://en.wikipedia.org/wiki/Code_point) (Unicode character).\n\t  \n## Enhanced Components\n\nUnless otherwise specified, the following components have an overridden\n`paintComponent` method which ensures the component is rendered at a higher\nquality than its default counterpart.\n\nThe following image shows a `JEditorPane` and a `VEditorPane` side-by-side.\n\n![](https://i.imgur.com/6XfbVar.png)\n\nUnfortunately, I was unable to find a fool-proof way of ensuring that all\ncomponents render with high-quality [RenderingHints](https://docs.oracle.com/en/java/javase/15/docs/api/java.desktop/java/awt/RenderingHints.html).\nIf a method is ever discovered, then these classes _may_ be depreciated and/or\nremoved from this repository.\n\n* [VEditorPane](https://github.com/Valkryst/VTerminal/tree/master/src/main/java/com/valkryst/VTerminal/component/VEditorPane.java)\n* [VPasswordField](https://github.com/Valkryst/VTerminal/tree/master/src/main/java/com/valkryst/VTerminal/component/VPasswordField.java)\n* [VTextArea](https://github.com/Valkryst/VTerminal/tree/master/src/main/java/com/valkryst/VTerminal/component/VTextArea.java)\n* [VTextField](https://github.com/Valkryst/VTerminal/tree/master/src/main/java/com/valkryst/VTerminal/component/VTextField.java)\n* [VTextPane](https://github.com/Valkryst/VTerminal/tree/master/src/main/java/com/valkryst/VTerminal/component/VTextPane.java)\n\t  \n## Credits \u0026 Inspiration\n\n* Architecture\n  * Robert Eckstein's [\"Java SE Application Design With MVC\"](https://www.oracle.com/technical-resources/articles/javase/application-design-with-mvc.html).\n  * Juri Strumpflohner's [\"Logical separation with MVC\"](https://juristr.com/blog/2008/03/logical-separation-with-mvc/), a follow-up to Eckstein's article.\n* [Filthy Rich Clients: Developing Animated and Graphical Effects for Desktop Java™ Applications](https://www.amazon.ca/Filthy-Rich-Clients-Developing-Applications/dp/0132413930/)\n* Trystan's [AsciiPanel](https://github.com/trystan/AsciiPanel).\n* [VFont](https://github.com/Valkryst/VTerminal/tree/master/src/main/java/com/valkryst/VTerminal/font/VFont.java)\n\t* The [FontGenerator](https://github.com/ZenDarva/AsylumRLE/blob/FpsRefactor/src/main/java/xyz/theasylum/zendarva/rle/FontGenerator.java) from ZenDarva's [AsylumRLE](https://github.com/ZenDarva/AsylumRLE).\n\t* The [FontRenderer](https://github.com/sunenielsen/tribaltrouble/blob/master/tools/classes/com/oddlabs/fontutil/FontRenderer.java) from Oddlabs' [Tribal Trouble](https://github.com/sunenielsen/tribaltrouble).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvalkryst%2Fvterminal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvalkryst%2Fvterminal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvalkryst%2Fvterminal/lists"}