https://github.com/mviereck/dockerfile-x11docker-xwayland
Xwayland X server in docker image
https://github.com/mviereck/dockerfile-x11docker-xwayland
Last synced: 6 months ago
JSON representation
Xwayland X server in docker image
- Host: GitHub
- URL: https://github.com/mviereck/dockerfile-x11docker-xwayland
- Owner: mviereck
- License: mit
- Created: 2018-02-25T16:48:47.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2021-09-12T13:37:53.000Z (about 4 years ago)
- Last Synced: 2025-03-26T04:42:22.861Z (7 months ago)
- Language: Dockerfile
- Size: 30.3 KB
- Stars: 17
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# x11docker/xwayland
Run Xwayland in a Docker container.
You don't need an X server on host, you only need either `weston` or `kwin_wayland` to be installed.
You can run in X, in Wayland or from tty / console.- Use x11docker to run image: https://github.com/mviereck/x11docker
# Examples- `x11docker --wayland --weston --gpu x11docker/xwayland`
To run empty Xwayland without a window manager:
- `x11docker --wayland --weston --gpu x11docker/xwayland sleep infinity`This example runs an X server (`Xwayland`) in container without needing any X server on host.
As a sample X application it runs `fvwm` window manager.
Adjust Dockerfile with your desired window manager or desktop environment, or create a new Dockerfile with `x11docker/xwayland` as a base:
```
# afterstep window manager on Xwayland
FROM x11docker/xwayland
RUN apt-get update
RUN apt-get install -y --no-install-recommends afterstep
CMD afterstep
```# Options
- Persistent home folder stored on host with `--home`
- Shared host folder with `--share DIR`
- Hardware acceleration with option `--gpu`
- Clipboard sharing with option `--clipboard`
- Sound support with option `--alsa`
- With pulseaudio in image, sound support with `--pulseaudio`
- Language locale settings with `--lang [=$LANG]`Look at `x11docker --help` for further options.
# Host applications on containered X server
You can run host applications on Xwayland in docker with:
```
mkdir /tmp/.X11-unix && chmod 1777 /tmp/.X11-unix # just to make sure it exists
read Xenv < <(x11docker --wayland --gpu --share /tmp/.X11-unix x11docker/xwayland)
env $Xenv libreoffice
```
Be aware that directory `/tmp/.X11-unix` must already exist on host with permission `1777`.`Xenv` will contain `DISPLAY` of Xwayland. You can specify a custom display number with option `--display N`.
You can also run a panel or another launcher to have access to all host applications.
A quite well integration provides [`launchy`](https://www.launchy.net/) that creates a working tray icon in container desktop or can be called with ``.***Warning***: Be aware that `--sharedir /tmp/.X11-unix` shares host X unix socket, too.
If your host X allows access with `xhost` (check output of plain `xhost`), container applications can access it, too.
Evil applications can abuse that for keylogging and other awfull stuff.
***Solution:*** You can remove `xhost` authentication on host X with x11docker option `--clean-xhost`.
Host applications then use the cookie in `XAUTHORITY` that is not available for container applications.A one-liner using options `--display` and `--clean-xhost`, and running `launchy` from host after a delay to wait for Xwayland:
```
x11docker --display 50 \
--clean-xhost \
--runfromhost 'sleep 3 && DISPLAY=:50 launchy &' \
--share /tmp/.X11-unix \
--wayland \
--weston \
--gpu \
x11docker/xwayland
```# Screenshot
Xwayland in Docker container running window manager `fvwm` and providing `launchy` from host:
