init
This commit is contained in:
commit
903e3e2e5a
26
Dockerfile
Normal file
26
Dockerfile
Normal file
@ -0,0 +1,26 @@
|
||||
FROM archlinux
|
||||
|
||||
ARG USER_ID=1000
|
||||
ARG GROUP_ID=100
|
||||
|
||||
RUN cat >> /etc/pacman.conf <<EOF
|
||||
[multilib]
|
||||
Include = /etc/pacman.d/mirrorlist
|
||||
EOF
|
||||
|
||||
RUN pacman -Syu --noconfirm && \
|
||||
pacman -S --noconfirm --asdeps base-devel sudo vim \
|
||||
pulseaudio-jack \
|
||||
bubblewrap gnu-free-fonts amdvlk lib32-amdvlk steam
|
||||
|
||||
RUN cat > /etc/sudoers <<EOF
|
||||
root ALL=(ALL:ALL) NOPASSWD: ALL
|
||||
%users ALL=(ALL:ALL) NOPASSWD: ALL
|
||||
EOF
|
||||
|
||||
RUN groupmod -g ${GROUP_ID} users
|
||||
RUN useradd -m -g ${GROUP_ID} -u ${USER_ID} someone
|
||||
|
||||
|
||||
COPY setup_runtime.sh /setup_runtime.sh
|
||||
ENTRYPOINT ["/bin/bash", "/setup_runtime.sh"]
|
||||
38
README.md
Normal file
38
README.md
Normal file
@ -0,0 +1,38 @@
|
||||
# docker-wayland-x-gui
|
||||
|
||||
This repository provides a reference setup to enable graphical applications (Wayland, X11, or XWayland) to be displayed on the host's compositor/display server. It also includes PipeWire and ALSA connections/pass-through for audio support.
|
||||
|
||||
## Features
|
||||
|
||||
* **Wayland, X11, and XWayland** app support
|
||||
* **PipeWire** and **ALSA** integration for sound
|
||||
* Launch GUI apps from a Docker container directly on your host display
|
||||
* Configurable **UID/GID** and mount paths to match your host environment
|
||||
|
||||
## Prerequisites
|
||||
|
||||
* Docker installed and configured
|
||||
* A Wayland-compatible host compositor (e.g., Sway, GNOME Shell, KDE, etc.)
|
||||
* PipeWire and/or ALSA installed and running on the host
|
||||
|
||||
## Configuration Notes
|
||||
|
||||
Depending on your system setup, you may need to adjust:
|
||||
|
||||
* Mount paths for Wayland/X11 sockets, sound devices, and config directories
|
||||
* UID/GID inside the container to match your host user
|
||||
|
||||
By default:
|
||||
|
||||
* **UID:** `1000`
|
||||
* **GID:** `100`
|
||||
|
||||
These can be overridden using environment variables.
|
||||
|
||||
## Usage
|
||||
|
||||
You can launch apps from the host system into the running container using:
|
||||
|
||||
```bash
|
||||
docker exec <container-name> <app>
|
||||
```
|
||||
53
compose.yaml
Normal file
53
compose.yaml
Normal file
@ -0,0 +1,53 @@
|
||||
services:
|
||||
archSysGui:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
args:
|
||||
- "USER_ID=${UID:-1000}"
|
||||
- "GROUP_ID=${GID:-100}"
|
||||
pull_policy: build
|
||||
image: katzenkralle/archsysv2:latest
|
||||
|
||||
environment:
|
||||
- GDK_BACKEND=wayland
|
||||
- QT_QPA_PLATFORM=wayland
|
||||
- WAYLAND_DISPLAY=$WAYLAND_DISPLAY
|
||||
- XDG_BACKEND=wayland
|
||||
- XDG_SESSION_TYPE=wayland
|
||||
- XDG_RUNTIME_DIR=/tmp/xdg_runtime
|
||||
|
||||
- PULSE_SERVER=unix:${XDG_RUNTIME_DIR}/pulse/native
|
||||
- DBUS_SESSION_BUS_ADDRESS=unix:path=/tmp/dbus
|
||||
|
||||
- DISPLAY=$DISPLAY
|
||||
|
||||
# Needed by steam for user namespacing
|
||||
cap_add:
|
||||
- SYS_ADMIN
|
||||
security_opt:
|
||||
- seccomp=unconfined
|
||||
|
||||
volumes:
|
||||
- $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY:/tmp/xdg_runtime/$WAYLAND_DISPLAY
|
||||
- /tmp/.X11-unix:/tmp/.X11-unix:rw
|
||||
- ${XDG_RUNTIME_DIR}/pulse/native:${XDG_RUNTIME_DIR}/pulse/native
|
||||
|
||||
# Add further directories to the container as needed
|
||||
- ~/.local/share/icons:/home/someone/.local/share/icons
|
||||
- ~/.local/share/themes:/home/someone/.local/share/themes
|
||||
- ~/.config:/home/someone/.config
|
||||
|
||||
- ~/.local/share/Steam/steamapps/:/home/someone/.local/share/Steam/steamapps/
|
||||
- /mnt/DT01ACA1/SteamLibrary/:/mnt/DT01ACA1/SteamLibrary
|
||||
- /mnt/DT01ACA3/SteamLibrary/:/mnt/DT01ACA3/SteamLibrary
|
||||
ipc: host
|
||||
user: ${UID:-1000}:${GID:-100}
|
||||
|
||||
# Alternativly use: LIBGL_ALWAYS_SOFTWARE=1 steam to launch steam, no GPU
|
||||
devices:
|
||||
- /dev/kfd
|
||||
- /dev/dri
|
||||
- /dev/snd # ALSA sound
|
||||
|
||||
|
||||
10
setup_runtime.sh
Executable file
10
setup_runtime.sh
Executable file
@ -0,0 +1,10 @@
|
||||
#!/usr/share/env bash
|
||||
user=$(id -u)
|
||||
group=$(id -g)
|
||||
|
||||
mkdir -p $XDG_RUNTIME_DIR > /dev/null 2>&1
|
||||
sudo chown "$user:$group" $XDG_RUNTIME_DIR > /dev/null 2>&1
|
||||
dbus-daemon --config-file=/usr/share/dbus-1/session.conf --address=$(echo "$DBUS_SESSION_BUS_ADDRESS" | sed 's/"/\\"/g') --print-address;
|
||||
|
||||
while true; do sleep 1000; done
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user