/escher

An x11 client written in java.

Primary LanguageJavaBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

Escher

Java CI with Gradle Quality Gate Status

Escher is a fork from the original escher project. It is an X11 client implementation written in java. This project directly connects to the X11 server rather than binding to a native library. Applications using this library do not need to worry about compatibility with a native library.

Development Ending

After working on this library for a few weeks I am deciding to stop. This library has too many issues for me to deal with. This library does not follow basic encapsulation and lose-coupling. Multithreaded support is majorly flawed. There are too many failed attempts at making things better in the existing classes to deal with. A new x11 client should be developed for java which abstracts different levels of functionality.

Versions

0.5.0

Updated XAuthority to properly detect the Auth Family. There were also some bugs when reading the file. Referencing libXau made debugging much easier.

0.4.0

Goals of release

  • setup reckon plugin
  • add github actions
    • run test
    • sonar scan
    • publish release to github
    • publish snapshots to maven central
    • publish release to maven central
  • fix new issues in sonar

Changes

The first release from this fork. Includes previously unreleased code from the original sourceforge repository. A lot has changed in the unreleased code but this is a summary of what was changed in this fork:

  • converted project to gradle
  • fixed critical bug where all Input events where LAST_EVENT
  • added demo code back in as a separate sourceSet
  • added unit tests using junit5!
  • added XephyrRunner which can be used to start and X11 server before tests and stop it after tests.
  • added integration tests!
  • demo code can now be run from the demoTest source set.
  • Standardized exceptions on two RuntimeExceptions (X11ClientException and X11ServiceException)
    • The old exceptions were "checked" exceptions or extensions of Error which makes error handling tedious
  • Added use of junixsocket since unixsocket is the dominate means of connecting
  • small changes to api to use standard camelCase and allow demos to run
  • Added CI through github actions
  • Added project to sonarqube