All Projects → udevbe → westford

udevbe / westford

Licence: AGPL-3.0 license
Westford Wayland Compositor

Programming Languages

kotlin
9241 projects
java
68154 projects - #9 most used programming language
c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to westford

Ksnip
ksnip the cross-platform screenshot and annotation tool
Stars: ✭ 776 (+1889.74%)
Mutual labels:  x11, wayland
Picom
A lightweight compositor for X11
Stars: ✭ 2,299 (+5794.87%)
Mutual labels:  x11, compositor
Vkmark
Vulkan benchmark
Stars: ✭ 80 (+105.13%)
Mutual labels:  x11, wayland
Farge
Click on a pixel on your screen and show its color value
Stars: ✭ 307 (+687.18%)
Mutual labels:  x11, wayland
X11docker
Run GUI applications and desktops in docker and podman containers. Focus on security.
Stars: ✭ 3,797 (+9635.9%)
Mutual labels:  x11, wayland
Rofimoji
An emoji and character picker for rofi 😁
Stars: ✭ 319 (+717.95%)
Mutual labels:  x11, wayland
Wallutils
🌆 Utilities for handling monitors, resolutions, wallpapers and timed wallpapers
Stars: ✭ 145 (+271.79%)
Mutual labels:  x11, wayland
gnome-gesture-improvements
Touchpad gesture improvements for GNOME on Wayland/X11
Stars: ✭ 53 (+35.9%)
Mutual labels:  x11, wayland
Kime
Korean IME
Stars: ✭ 208 (+433.33%)
Mutual labels:  x11, wayland
Glmark2
glmark2 is an OpenGL 2.0 and ES 2.0 benchmark
Stars: ✭ 199 (+410.26%)
Mutual labels:  x11, wayland
Gromit Mpx
Gromit-MPX is an on-screen annotation tool that works with any Unix desktop environment under X11 as well as Wayland.
Stars: ✭ 287 (+635.9%)
Mutual labels:  x11, wayland
asc
A simple (Wayland) compositor
Stars: ✭ 26 (-33.33%)
Mutual labels:  wayland-compositor, wayland
X11vnc
a VNC server for real X displays
Stars: ✭ 272 (+597.44%)
Mutual labels:  x11, wayland
Imv
Image viewer for X11/Wayland
Stars: ✭ 652 (+1571.79%)
Mutual labels:  x11, wayland
gobble
Rust rewrite of Devour
Stars: ✭ 23 (-41.03%)
Mutual labels:  x11, wayland
Wayst
A simple terminal emulator
Stars: ✭ 117 (+200%)
Mutual labels:  x11, wayland
Way Cooler
Wayland compositor for AwesomeWM
Stars: ✭ 2,132 (+5366.67%)
Mutual labels:  wayland-compositor, wayland
nextshot
A simple tool for taking screenshots on Linux and sharing via Nextcloud
Stars: ✭ 37 (-5.13%)
Mutual labels:  x11, wayland
Chamferwm
A tiling X11 window manager with Vulkan compositor.
Stars: ✭ 200 (+412.82%)
Mutual labels:  x11, compositor
lucurious
😱 Lucurious -> [Library] for building advanced DRM/KMS Vulkan Renderers 😱
Stars: ✭ 18 (-53.85%)
Mutual labels:  kms, compositor

Westford

A Wayland compositor written in Kotlin.

This is a work in progress and not ready for day to day use, however certain features like client movement and render output on X are considered ready.

This compositor was originally written in Java. The latest Java commit can still be found here

KDoc

Not available yet.

Building

Prerequisites:

  • gradle
  • cmake
  • docker (optional, needed for build-in cross compilation)

Run gradle build in the root of the project. Westford is still under heavy development, so occasionally tests might fail. If this is the case you can run the build with gradle build -x test.

To cross compile for a specific architecture, set the corresponding arch variable in the gradle build command. Available profiles are:

Architecture arch
aarch64 linux-aarch64
armv7hf linux-armv7hf
armv7sf linux-armv7sf
armv6hf linux-armv6hf
x86_64 linux-x86_64
i686 linux-i686
all of above all

So if we were to build for armv7hf, our build command would becomes gradle build -x test -Parch=linux-armv7hf. This will trigger a cross compilation inside a cleanly isolated docker container.

If no profile is selected, the gradle build will default to the native profile, which corresponds to the architecture that you're currently building on, without the use of docker.

Running

Westford can be launched using different back-ends and configurations. These live as separate projects under launch

Currently the following back-ends exist:

  • launch.x11A back-end that outputs to a regular X11 window, one window per (virtual) screen. Ideal for quick testing.
  • launch.drm.direct Uses the kernel's drm/kms system to directly output to the screen, without the use of X11. Root user only.
  • launch.drm.indirectUses the kernel's drm/kms system to directly output to the screen, without the use of X11. All users. Uses setuid.

Running under X11

To create an runnable distribution, go into the launch.x11 folder. Type gradle installDist. This will create an executable launch.x11 in build/install/launch.x11/bin Next fire up some test clients from the Weston compositor (eg weston-terminal). Make sure you use Weston 1.4 as more recent versions depend on xdg-shell which is not yet implemented by Westford.

To configure the X11 back-end, open up X11PlatformConfigSimple.kt found in westford/launch.x11/src/main/kotlin/org/westford/compositor/launch/x11 and adjust as required.

Running with drm/kms

//TODO

Dependencies

The following native libraries are expected, depending on the features used:

  • libc (core)
  • pixman-1 (core)
  • EGL (core)
  • GLESv2 (core)
  • libdrm (drm)
  • libudev (drm)
  • libinput (drm)
  • X11 (x11)
  • xcb (x11)
  • X11-xcb (x11)
  • xkbcommon (core)
  • xkbcommon-x11 (x11)
  • linux (core)

State

Build Status

Functionality Implemented
OpenGL on HTML5 (experimental) ✔️
OpenGL on X ✔️
OpenGL on KMS ✔️
Software rendering on X
Software rendering on KMS
Window moving ✔️
Window resizing ✔️
Mouse input ✔️
Keyboard input ✔️
Touch input ✔️
Drag and Drop

Known Issues

  • None.

Roadmap

Topic Progress
unit tests 90%
core protocol 80%
wl_shell 60%
sw rendering 0%
xdg_shell 0%
xwayland 0%
DRM/KMS 90%
multi seat 100%

License

Westford Wayland Compositor. Copyright (C) 2016 Erik De Rijcke

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].