diff --git a/README.md b/README.md new file mode 100644 index 0000000..20ebb3c --- /dev/null +++ b/README.md @@ -0,0 +1,160 @@ +# 12to11 for Fedora and Enterprise Linux + +This repository contains the RPM packaging for [12to11](https://github.com/fish4terrisa-MSDSM/12to11), a Wayland-to-X11 protocol translator. Packages are built in the [andersrh/12to11 COPR project](https://copr.fedorainfracloud.org/coprs/andersrh/12to11/). + +## What is 12to11? + +12to11 is a small Wayland compositor that runs as a regular X11 client. It creates a Wayland socket and displays Wayland applications as normal X11 windows. This makes it possible to run Wayland-only applications, such as [Waydroid](https://waydro.id/), from an X11 session without running Weston as a nested compositor. + +The package is built with EGL/OpenGL ES 2.0 rendering enabled. 12to11 also implements the Wayland data-device and X11 selection handling needed for clipboard integration between Wayland applications and the X11 desktop. + +This package tracks the actively developed [fish4terrisa-MSDSM fork](https://github.com/fish4terrisa-MSDSM/12to11) and is licensed under GPL-3.0-only. + +## Example: Waydroid running through 12to11 + +The following screenshot shows Waydroid running as a Wayland application through 12to11 on an X11 desktop: + +![Waydroid running through 12to11](screenshots/waydroid%20on%2012to11.png) + +## Supported targets + +The COPR project currently provides builds for: + +- Fedora 43, Fedora 44, Fedora 45, and Fedora Rawhide +- EPEL 9 and EPEL 10 +- AlmaLinux 10 with EPEL (x86_64-v2) + +The COPR builds are unofficial and are provided as-is. + +## Installation from COPR + +The `dnf copr` command is provided by `dnf-plugins-core`. Install it first if it is not already available. + +### Fedora + +```bash +sudo dnf install -y dnf-plugins-core +sudo dnf copr enable andersrh/12to11 +sudo dnf install -y 12to11 +``` + +### AlmaLinux, RHEL-compatible distributions, and EPEL + +The EL builds use `libXpresent` from the [xlibre/xlibre-xserver COPR](https://copr.fedorainfracloud.org/coprs/g/xlibre/xlibre-xserver/), because `libXpresent` is not available in the standard EL repositories. + +On AlmaLinux, install and enable EPEL if necessary, then enable both COPR repositories: + +```bash +sudo dnf install -y epel-release dnf-plugins-core +sudo dnf copr enable @xlibre/xlibre-xserver +sudo dnf copr enable andersrh/12to11 +sudo dnf install -y 12to11 +``` + +On RHEL-compatible distributions where `epel-release` is not available directly, enable EPEL using the distribution's documented procedure before installing 12to11. + +## Running 12to11 with Waydroid + +Start 12to11 in an X11 session. The `-printsocket` option prints the Wayland socket name while the compositor continues running: + +```bash +RENDERER=egl 12to11 -printsocket +``` + +For example, it may print: + +```text +wayland-1 +``` + +Keep that process running. In another terminal, use the socket name printed by 12to11: + +```bash +export WAYLAND_DISPLAY=wayland-1 +waydroid show-full-ui +``` + +If 12to11 prints a different socket name, use that name instead. Do not assume that the socket is always `wayland-1`. + +If the Waydroid session is not already running, start it before showing the UI: + +```bash +waydroid session start +``` + +The exact Waydroid setup still depends on the Android image, kernel support, graphics driver, and whether Google Apps are installed. + +## Building the RPM locally + +The spec file uses the upstream GitHub snapshot and the project's legacy `imake`/`xmkmf` build system. The package is built with EGL support enabled by the upstream `12to11.conf`. + +### 1. Install packaging tools + +Fedora: + +```bash +sudo dnf install -y rpm-build rpmdevtools dnf-plugins-core +``` + +AlmaLinux, RHEL-compatible distributions, and EPEL: + +```bash +sudo dnf install -y epel-release rpm-build rpmdevtools dnf-plugins-core +sudo dnf copr enable @xlibre/xlibre-xserver +``` + +### 2. Install the build dependencies + +Run this from the repository checkout: + +```bash +sudo dnf builddep -y 12to11.spec +``` + +On EL systems, the xlibre COPR must be enabled first so that `libXpresent-devel` can be resolved. + +### 3. Build the package + +```bash +rpmdev-setuptree +cp 12to11.spec ~/rpmbuild/SPECS/ +spectool -g --directory ~/rpmbuild/SOURCES ~/rpmbuild/SPECS/12to11.spec +rpmbuild -ba ~/rpmbuild/SPECS/12to11.spec +``` + +The resulting files are written to: + +```text +~/rpmbuild/RPMS/$(uname -m)/ +~/rpmbuild/SRPMS/ +``` + +Install the locally built package with: + +```bash +sudo dnf install ~/rpmbuild/RPMS/$(uname -m)/12to11-0-*.rpm +``` + +### Building in COPR + +COPR reads `12to11.spec`, downloads the source archive specified by `Source0`, installs the `BuildRequires`, and builds the package in a clean chroot for each enabled target. The EL builds also have the xlibre/xlibre-xserver COPR configured as an external repository so that `libXpresent-devel` is available during the build. + +To update the source snapshot, change the `commit` and `snapdate` macros in `12to11.spec`, update the changelog, and submit the changed spec file to the COPR project. + +## Known limitations + +12to11 is not a complete Wayland compositor. According to the upstream project: + +- Touchscreen support is not implemented. +- Device switching in DMA-BUF feedback is not implemented. +- It requires X.Org Server 1.20 or later. +- It works best with a compositing window manager that supports the EWMH frame-synchronization protocol. +- Upstream testing has primarily been done with GNOME Shell; other window managers may have compatibility issues. + +For Waydroid controlled with a mouse on an X11 desktop, the missing touchscreen support is usually not a problem. + +## Links + +- [12to11 upstream project](https://github.com/fish4terrisa-MSDSM/12to11) +- [12to11 COPR repository](https://copr.fedorainfracloud.org/coprs/andersrh/12to11/) +- [COPR xlibre/xlibre-xserver repository](https://copr.fedorainfracloud.org/coprs/g/xlibre/xlibre-xserver/) diff --git a/screenshots/waydroid on 12to11.png b/screenshots/waydroid on 12to11.png new file mode 100644 index 0000000..677674d Binary files /dev/null and b/screenshots/waydroid on 12to11.png differ