{"id":19225323,"url":"https://github.com/crramirez/jexer","last_synced_at":"2026-06-08T14:32:28.255Z","repository":{"id":327050548,"uuid":"1100652012","full_name":"crramirez/jexer","owner":"crramirez","description":null,"archived":false,"fork":false,"pushed_at":"2025-12-02T21:37:44.000Z","size":28253,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"jexer-2.0","last_synced_at":"2025-12-04T00:45:54.465Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","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/crramirez.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-20T15:12:47.000Z","updated_at":"2025-11-20T15:13:34.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/crramirez/jexer","commit_stats":null,"previous_names":["crramirez/jexer"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/crramirez/jexer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crramirez%2Fjexer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crramirez%2Fjexer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crramirez%2Fjexer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crramirez%2Fjexer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/crramirez","download_url":"https://codeload.github.com/crramirez/jexer/tar.gz/refs/heads/jexer-2.0","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crramirez%2Fjexer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34067348,"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-08T02:00:07.615Z","response_time":111,"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":"2024-11-09T15:14:35.017Z","updated_at":"2026-06-08T14:32:28.242Z","avatar_url":"https://github.com/crramirez.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"Jexer - Java Text User Interface library\n========================================\n\nThis library implements a text-based windowing system loosely\nreminiscent of Borland's [Turbo\nVision](http://en.wikipedia.org/wiki/Turbo_Vision) system.  It looks\nlike this:\n\n![WezTerm, translucent images](/screenshots/wezterm_translucent_images.png?raw=true \"WezTerm, translucent images\")\n\n...or this:\n\n![Terminal, Image, Table](/screenshots/new_demo1.png?raw=true \"Terminal, Image, Table\")\n\n...or anything in between.\n\nJexer works on both Xterm-like terminals and Swing, and supports\nimages in both Xterm and Swing.  On Swing, images are true color; on\nXterm, images are rendered as sixel, iTerm2, or Jexer images, or as\nUnicode half-block glyphs if none of those are available.  Jexer can\nbe run inside its own terminal window, with support for all of its\nfeatures including images and mouse, and of course more terminals.\n\nJexer has seen inspiration from several other projects:\n\n* Translucent windows were inspired by\n  [notcurses](https://github.com/dankamongmen/notcurses).  Translucent\n  windows and layered images generally look as one would expect in a\n  modern graphical environment...but it's mostly text.\n\n* Jexer's (multithread-safe) \"high quality\" sixel encoder\n  (HQSixelEncoder) -- which supplants its original (single-threaded)\n  2018-era design (LegacySixelEncoder) -- was inspired by\n  [chafa's](https://hpjansson.org/chafa/) high-performance principal\n  component analysis based sixel encoder.  HQSixelEncoder combined\n  with Jexer's cell-based images design approaches 20-bit color depth!\n\n* Pulsing button text, window effects, and soon-to-be desktop effects\n  were inspired by [vtm's](https://github.com/netxs-group/vtm)\n  incredibly slick game-like aesthetic.\n\n* Notcurses, chafa, and\n  [sixel-tmux](https://github.com/csdvrx/sixel-tmux) were the\n  inspiration for adding image rendering to Unicode half-block glyphs.\n\nIf you like what you see here, definitely take a look at its\ninspirations.  Again, those are:\n\n* [notcurses](https://github.com/dankamongmen/notcurses)\n\n* [chafa](https://hpjansson.org/chafa/)\n\n* [vtm](https://github.com/netxs-group/vtm)\n\n💖\n\n\n\nScreenshots\n-----------\n\n![PCA color matching with 128-color palette and translucent windows](/screenshots/pca_match.png?raw=true \"PCA color matching with 128-color palette and translucent windows\")\n\n![Jexer with Spanish-language translations, CJK text in terminal, the libsixel snake image, and an ANSI art screen](/screenshots/jexer_espanol.png?raw=true \"Jexer with Spanish-language translations, CJK text in terminal, the libsixel snake image, and an ANSI art screen\")\n\n![Unicode half-block rendering of images](/screenshots/unicode_half_blocks.png?raw=true \"Unicode half-block rendering of images\")\n\nMore screenshots and videos are [at the screenshots web\npage.](https://jexer.sourceforge.io/screenshots.html)\n\n\n\nHow...?  What...?\n-----------------\n\nWondering how I did it?  [Here you go!](https://jexer.sourceforge.io/evolution.html)\n\n\n\nLicense\n-------\n\nJexer is available to all under the MIT License.  See the file LICENSE\nfor the full license text.\n\n\n\nObtaining Jexer\n---------------\n\nJexer is available on Maven Central:\n\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003eio.gitlab.autumnmeowmeow\u003c/groupId\u003e\n  \u003cartifactId\u003ejexer\u003c/artifactId\u003e\n  \u003cversion\u003e1.7.0\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\nBinary releases are available on SourceForge:\nhttps://sourceforge.net/projects/jexer/files/jexer/\n\nThe Jexer source code is hosted at:\nhttps://gitlab.com/AutumnMeowMeow/jexer\n\n\nWhy I Do Not Post My Projects Anymore\n-------------------------------------\n\n[Why I Do Not Post My Projects\nAnymore](https://gitlab.com/AutumnMeowMeow/jexer/wikis/no-release-announcements)\n\n\nDocumentation\n-------------\n\n* [Wiki](https://gitlab.com/AutumnMeowMeow/jexer/wikis/home)\n\n* [Jexer web page](https://jexer.sourceforge.io/)\n\n* [Java API Docs](https://jexer.sourceforge.io/apidocs/api/index.html)\n\n* [Development\n  Standards](https://gitlab.com/AutumnMeowMeow/jexer/wikis/dev-standards)\n\n* [Porting Guide](https://gitlab.com/AutumnMeowMeow/jexer/wikis/porting) -\n  If you don't like writing Java, here is your map to where the key\n  features are so that you can implement them in a different\n  system/language.\n\n\n\nProgramming Examples\n--------------------\n\nSee [Xterm Window Manager](https://xtermwm.sourceforge.io) for a more\ncomprehensive demonstration of what Jexer can accomplish.  Here one\ncan see a floating terminal window over tiled terminals, two of which\nare showing images:\n\n![Floating terminal over tiled terminals](/screenshots/floating_terminal.png?raw=true \"Floating terminal over tiled terminals\")\n\nJexer's examples/ folder currently contains:\n\n  * A [prototype tiling window\n    manager](/examples/JexerTilingWindowManager.java) in less than 250\n    lines of code.\n\n  * A much slicker [prototype tiling window\n    manager](/examples/JexerTilingWindowManager2.java) in less than 200\n    lines of code.\n\n  * A [prototype image thumbnail\n    viewer](/examples/JexerImageViewer.java) in less than 350 lines of\n    code.\n\n  * A [prototype Xterm video player (using JavaCV to decode video\n    frames)](/examples/XtermVideoPlayer.java) in less than 200 lines\n    of code.\n\njexer.demos contains official demos showing all of the existing UI\ncontrols.  The demos can be run as follows:\n\n  * 'java -jar jexer.jar' .  This will use System.in/out with\n    Xterm-like sequences on non-Windows non-Mac platforms.  On Windows\n    and Mac it will use a Swing JFrame.\n\n  * 'java -Djexer.Swing=true -jar jexer.jar' .  This will always use\n    Swing on any platform.\n\n  * 'java -cp jexer.jar jexer.demos.Demo2 PORT' (where PORT is a\n    number to run the TCP daemon on).  This will use the Xterm backend\n    on a telnet server that will update with screen size changes.\n\n  * 'java -cp jexer.jar jexer.demos.Demo3' .  This will use\n    System.in/out with Xterm-like sequences.  One can see in the code\n    how to pass a different InputReader and OutputReader to\n    TApplication, permitting a different encoding than UTF-8; in this\n    case, code page 437.\n\n  * 'java -cp jexer.jar jexer.demos.Demo4' .  This demonstrates hidden\n    windows and a custom TDesktop.\n\n  * 'java -cp jexer.jar jexer.demos.Demo5' .  This demonstrates two\n    demo applications using different fonts in the same Swing frame.\n\n  * 'java -cp jexer.jar jexer.demos.Demo6' .  This demonstrates two\n    applications performing I/O across three screens: an Xterm screen\n    and Swing screen, monitored from a third Swing screen.\n\n  * 'java -cp jexer.jar jexer.demos.Demo7' .  This demonstrates the\n    BoxLayoutManager, achieving a similar result as the\n    javax.swing.BoxLayout apidocs example.\n\n  * 'java -cp jexer.jar jexer.demos.Demo8 PORT' (where PORT is a\n    number to run the TCP daemon on).  This will use the Xterm backend\n    on a telnet server to share one screen to many terminals.\n\n\n\nTerminal Support\n----------------\n\nMost popular terminals can run Jexer, but only a few support all of\nJexer's features.  Jexer is actively developed against\n[xterm](https://invisible-island.net/xterm/) and\n[wezterm](https://wezfurlong.org/wezterm/) .  The table below lists\nthe terminals last tested against Jexer:\n\n| Terminal       | Environment        | Mouse Click | Mouse Cursor | Images |\n| -------------- | ------------------ | ----------- | ------------ | ------ |\n| xterm          | X11                | yes         | yes          | yes    |\n| jexer          | CLI, X11, Windows  | yes         | yes          | yes    |\n| wezterm        | X11, Windows       | yes         | yes          | yes(7) |\n| foot(3)        | Wayland            | yes         | yes          | yes    |\n| contour(3)     | X11                | yes         | yes          | yes    |\n| mintty         | Windows            | yes         | yes          | yes    |\n| mlterm         | X11                | yes         | yes          | yes    |\n| RLogin         | Windows            | yes         | yes          | yes    |\n| xterm.js(8)    | Web                | yes         | yes          | yes    |\n| Windows Terminal(6) | Windows       | yes         | yes          | yes    |\n| alacritty(3b)  | X11                | yes         | yes          | yes    |\n| gnome-terminal | X11                | yes         | yes          | no     |\n| iTerm2         | Mac                | yes         | yes          | no(5)  |\n| kitty(3)       | X11                | yes         | yes          | no(9)  |\n| lcxterm        | CLI, Linux console | yes         | yes          | no     |\n| rxvt-unicode   | X11                | yes         | yes          | no(2)  |\n| xfce4-terminal | X11                | yes         | yes          | no     |\n| zutty          | X11                | yes         | yes          | no(2)  |\n| DomTerm(3)     | Web                | yes         | no           | yes    |\n| darktile       | X11                | yes         | no           | no(5)  |\n| konsole        | X11                | yes         | no           | no     |\n| yakuake        | X11                | yes         | no           | no     |\n| screen         | CLI                | yes(1)      | yes(1)       | no(2)  |\n| tmux           | CLI                | yes(1)      | yes(1)       | no     |\n| zellij         | CLI                | yes         | yes          | no(10) |\n| putty          | X11, Windows       | yes         | no           | no(2)  |\n| qodem(3)       | CLI, Linux console | yes         | yes(4)       | no     |\n| qodem-x11(3)   | X11                | yes         | no           | no     |\n| yaft           | Linux console (FB) | no          | no           | yes    |\n| Linux          | Linux console      | no          | no           | no(2)  |\n| MacTerm        | Mac                | no          | no           | no(2)  |\n\n1 - Requires mouse support from host terminal.\n\n2 - Also fails to filter out sixel data, leaving garbage on screen.\n\n3 - Latest in repository.\n\n3b - Latest in repository, using graphics PR branch.\n\n4 - Requires TERM=xterm-1003 before starting.\n\n5 - Sixel images can crash terminal.\n\n6 - Windows Terminal 1.22 Preview, released on August 27, 2024.\n\n7 - Both sixel and iTerm2 images.\n\n8 - Using jerch's xterm-addon-image.\n\n9 - Kitty image protocol support will never be in Jexer, as a matter\n    of principle.  Should that terminal adopt iTerm2 or sixel, then\n    images could work.  (Image support for kitty was removed on\n    February 10, 2022.)\n\n10 - zellij supports sixel, but Jexer's output can overwhelm it,\n     resulting in it becoming unresponsive to user input.\n\nSee Also\n--------\n\n* [Xterm Window Manager](https://gitlab.com/AutumnMeowMeow/xtermwm) is\n  a text-based window manager.  It has virtual desktops, tiled\n  terminals with draggable resizing, cascading terminal windows, and a\n  plugin system for adding functionality.  Add LCXterm and one can\n  have a mouse-supporting X11-like text-based \"GUI\" on the raw Linux\n  console.\n\n* [XtermDOOM](https://gitlab.com/AutumnMeowMeow/xtermdoom) is an\n  effort to make [MochaDoom](https://github.com/jendave/mochadoom) run\n  smoothly under Xterm.  The game is not yet playable, but it can show\n  off Jexer's multiplexing and multihead image capabilities.\n\n* [LCXterm](https://lcxterm.sourceforge.io) is a curses-based terminal\n  emulator that allows one to use Jexer with full support on the raw\n  Linux console.\n\n* [ptypipe](https://gitlab.com/AutumnMeowMeow/ptypipe) is a small C\n  utility that permits a Jexer TTerminalWindow to resize the running\n  shell when its window is resized.\n\n* [Tranquil Java IDE](https://tjide.sourceforge.io) is a TUI-based\n  integrated development environment for the Java language that was\n  built using a very lightly modified GPL version of Jexer.\n\n\n\nAcknowledgements\n----------------\n\nJexer makes use of the Terminus TrueType font [made available\nhere](http://files.ax86.net/terminus-ttf/) .\n\n💖\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrramirez%2Fjexer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcrramirez%2Fjexer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrramirez%2Fjexer/lists"}