{"id":14128160,"url":"https://github.com/udevbe/westford","last_synced_at":"2025-08-03T22:32:30.115Z","repository":{"id":26379225,"uuid":"29828558","full_name":"udevbe/westford","owner":"udevbe","description":"Westford Wayland Compositor","archived":false,"fork":false,"pushed_at":"2017-05-31T20:17:01.000Z","size":4036,"stargazers_count":44,"open_issues_count":0,"forks_count":7,"subscribers_count":11,"default_branch":"master","last_synced_at":"2024-08-16T16:22:18.527Z","etag":null,"topics":["compositor","java","kms","kotlin","wayland","wayland-compositor","x11"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/udevbe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-01-25T19:58:45.000Z","updated_at":"2024-07-17T08:18:51.000Z","dependencies_parsed_at":"2022-08-29T05:41:15.376Z","dependency_job_id":null,"html_url":"https://github.com/udevbe/westford","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/udevbe%2Fwestford","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/udevbe%2Fwestford/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/udevbe%2Fwestford/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/udevbe%2Fwestford/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/udevbe","download_url":"https://codeload.github.com/udevbe/westford/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228571844,"owners_count":17938772,"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":["compositor","java","kms","kotlin","wayland","wayland-compositor","x11"],"created_at":"2024-08-15T16:01:21.197Z","updated_at":"2024-12-07T06:30:56.968Z","avatar_url":"https://github.com/udevbe.png","language":"Kotlin","funding_links":[],"categories":["Kotlin"],"sub_categories":[],"readme":"Westford\n=====================\n\nA Wayland compositor written in Kotlin.\n\nThis is a work in progress and not ready for day to day use, however\ncertain features like client movement and render output on X are considered ready.\n\nThis compositor was originally written in Java. The latest Java commit can still be found [here](https://github.com/udevbe/westford/tree/8510ee7b3387a8693a2fa364a590e6b7caf0784a)\n\nKDoc\n=======\nNot available yet.\n\nBuilding\n========\nPrerequisites: \n- gradle\n- cmake \n- docker (optional, needed for build-in cross compilation) \n\nRun `gradle build` in the root of the project. Westford is still under heavy \ndevelopment, so occasionally tests might fail. If this is the case you can run the build\nwith `gradle build -x test`.\n\nTo cross compile for a specific architecture, set the corresponding arch variable in the gradle build command.\nAvailable profiles are:\n\n| Architecture | arch        |\n|:------------:|:-----------:|\n| aarch64      |linux-aarch64|\n| armv7hf      |linux-armv7hf| \n| armv7sf      |linux-armv7sf|\n| armv6hf      |linux-armv6hf|\n| x86_64       |linux-x86_64 |\n| i686         |linux-i686   |\n| all of above |all          |\n\nSo if we were to build for `armv7hf`, our build command would becomes `gradle build -x test -Parch=linux-armv7hf`.\nThis will trigger a cross compilation inside a cleanly isolated docker container.\n\nIf no profile is selected, the gradle build will default to the `native` profile, which corresponds to\nthe architecture that you're currently building on, without the use of docker.\n\nRunning\n=======\nWestford can be launched using different back-ends and configurations. These live as separate projects\nunder `launch`\n\nCurrently the following back-ends exist:\n- `launch.x11`A back-end that outputs to a regular X11 window, one window per (virtual) screen. Ideal for quick testing.\n- `launch.drm.direct` Uses the kernel's drm/kms system to directly output to the screen, without the use of X11. Root user only.\n- `launch.drm.indirect`Uses the kernel's drm/kms system to directly output to the screen, without the use of X11. All users. Uses setuid.\n\n\nRunning under X11\n=================\nTo create an runnable distribution, go into the `launch.x11` folder. Type `gradle installDist`.\nThis will create an executable `launch.x11` in `build/install/launch.x11/bin`\nNext fire up some test clients from the Weston compositor (eg `weston-terminal`). \nMake sure you use Weston 1.4 as more recent versions depend on xdg-shell which is not \nyet implemented by Westford.\n\nTo configure the X11 back-end, open up `X11PlatformConfigSimple.kt` \nfound in `westford/launch.x11/src/main/kotlin/org/westford/compositor/launch/x11` and adjust as required.\n\nRunning with drm/kms\n====================\n//TODO\n\nDependencies\n============\nThe following native libraries are expected, depending on the features used:\n - libc (core)\n - pixman-1 (core)\n - EGL (core)\n - GLESv2 (core)\n - libdrm (drm)\n - libudev (drm)\n - libinput (drm)\n - X11 (x11)\n - xcb (x11)\n - X11-xcb (x11)\n - xkbcommon (core)\n - xkbcommon-x11 (x11)\n - linux (core)\n\nState\n=====\n[![Build Status](https://travis-ci.org/udevbe/westford.svg?branch=master)](https://travis-ci.org/udevbe/westford)\n\n| Functionality                  | Implemented        |\n| :-------------------------:    | :----------------: |\n| OpenGL on HTML5 (experimental) | :heavy_check_mark: |\n| OpenGL on X                    | :heavy_check_mark: |\n| OpenGL on KMS                  | :heavy_check_mark: |\n| Software rendering on X        | :x:                |\n| Software rendering on KMS      | :x:                |\n| Window moving                  | :heavy_check_mark: |\n| Window resizing                | :heavy_check_mark: |\n| Mouse input                    | :heavy_check_mark: |\n| Keyboard input                 | :heavy_check_mark: |\n| Touch input                    | :heavy_check_mark: |\n| Drag and Drop                  | :x:                |\n\nKnown Issues\n============\n - None.\n\nRoadmap\n====\n| Topic         | Progress  |\n| :-----------: | :-------: |\n| unit tests    | 90%       |\n| core protocol | 80%       |\n| wl_shell      | 60%       |\n| sw rendering  | 0%        |\n| xdg_shell     | 0%        |\n| xwayland      | 0%        |\n| DRM/KMS       | 90%       |\n| multi seat    | 100%      |\n\nLicense\n=======\n\nWestford Wayland Compositor.\nCopyright (C) 2016  Erik De Rijcke\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU Affero General Public License as\npublished by the Free Software Foundation, either version 3 of the\nLicense, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU Affero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public License\nalong with this program.  If not, see \u003chttp://www.gnu.org/licenses/\u003e.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fudevbe%2Fwestford","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fudevbe%2Fwestford","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fudevbe%2Fwestford/lists"}