Răsfoiți Sursa

Change MATE to Xfce

There are major issues with Xorg and NVIDIA Drivers >= 495 preventing usage of the MATE Desktop. Thus it was required to switch the desktop environment to Xfce.
ehfd 3 ani în urmă
părinte
comite
31ab0d0fc9
3 a modificat fișierele cu 104 adăugiri și 16 ștergeri
  1. 99 11
      Dockerfile
  2. 4 4
      README.md
  3. 1 1
      entrypoint.sh

+ 99 - 11
Dockerfile

@@ -1,6 +1,6 @@
 # Ubuntu release versions 18.04 and 20.04 are supported
 ARG UBUNTU_RELEASE=20.04
-ARG CUDA_VERSION=11.4.2
+ARG CUDA_VERSION=11.2.2
 FROM nvcr.io/nvidia/cudagl:${CUDA_VERSION}-runtime-ubuntu${UBUNTU_RELEASE}
 
 LABEL maintainer "https://github.com/ehfd,https://github.com/danisla"
@@ -43,22 +43,30 @@ ENV LANG en_US.UTF-8
 ENV LANGUAGE en_US:en
 ENV LC_ALL en_US.UTF-8
 
-# Install Xorg, MATE Desktop, and others
+# Install Xorg, Xfce Desktop, and others
 RUN dpkg --add-architecture i386 && \
     apt-get update && apt-get install --no-install-recommends -y \
         software-properties-common \
+        apt-transport-https \
         apt-utils \
         build-essential \
         ca-certificates \
         kmod \
         libc6:i386 \
         libc6-dev \
+        cups-filters \
+        cups-common \
+        cups-pdf \
         curl \
         file \
         wget \
+        bzip2 \
         gzip \
+        p7zip-full \
+        xz-utils \
         zip \
         unzip \
+        zstd \
         gcc \
         git \
         jq \
@@ -66,14 +74,47 @@ RUN dpkg --add-architecture i386 && \
         python \
         python-numpy \
         python3 \
+        python3-cups \
         python3-numpy \
         mlocate \
         nano \
         vim \
         htop \
         firefox \
+        transmission-gtk \
+        qpdfview \
+        xarchiver \
+        brltty \
+        brltty-x11 \
+        desktop-file-utils \
+        fonts-dejavu-core \
+        fonts-freefont-ttf \
+        fonts-noto \
+        fonts-noto-cjk \
+        fonts-noto-color-emoji \
+        fonts-noto-hinted \
+        fonts-noto-mono \
+        fonts-noto-extra \
+        fonts-opensymbol \
+        fonts-symbola \
+        fonts-ubuntu \
+        gucharmap \
+        mpd \
+        onboard \
+        orage \
+        parole \
+        policykit-desktop-privileges \
+        libpulse0 \
+        pulseaudio \
+        pavucontrol \
+        ristretto \
         supervisor \
+        thunar \
+        thunar-volman \
+        thunar-archive-plugin \
+        thunar-media-tags-plugin \
         net-tools \
+        libgtk-3-bin \
         libpci3 \
         libelf-dev \
         libglvnd-dev \
@@ -89,25 +130,69 @@ RUN dpkg --add-architecture i386 && \
         libxv1:i386 \
         libxtst6 \
         libxtst6:i386 \
+        xdg-utils \
         x11-xkb-utils \
         x11-xserver-utils \
+        x11-utils \
         x11-apps \
         dbus-x11 \
         libdbus-c++-1-0v5 \
+        dmz-cursor-theme \
+        numlockx \
         xauth \
+        xcursor-themes \
         xinit \
         xfonts-base \
         xkb-data \
         libxrandr-dev \
-        xorg-dev && \
-    apt-get install -y ubuntu-mate-desktop libreoffice && \
+        xorg \
+        xubuntu-artwork \
+        xfburn \
+        xfpanel-switch \
+        xfce4 \
+        xfdesktop4 \
+        xfwm4 \
+        xfce4-appfinder \
+        xfce4-clipman \
+        xfce4-dict \
+        xfce4-goodies \
+        xfce4-notes \
+        xfce4-notifyd \
+        xfce4-panel \
+        xfce4-screenshooter \
+        xfce4-session \
+        xfce4-settings \
+        xfce4-taskmanager \
+        xfce4-terminal \
+        xfce4-appmenu-plugin \
+        xfce4-battery-plugin \
+        xfce4-clipman-plugin \
+        xfce4-cpufreq-plugin \
+        xfce4-cpugraph-plugin \
+        xfce4-diskperf-plugin \
+        xfce4-datetime-plugin \
+        xfce4-fsguard-plugin \
+        xfce4-genmon-plugin \
+        xfce4-indicator-plugin \
+        xfce4-mpc-plugin \
+        xfce4-mount-plugin \
+        xfce4-netload-plugin \
+        xfce4-notes-plugin \
+        xfce4-places-plugin \
+        xfce4-pulseaudio-plugin \
+        xfce4-sensors-plugin \
+        xfce4-smartbookmark-plugin \
+        xfce4-statusnotifier-plugin \
+        xfce4-systemload-plugin \
+        xfce4-timer-plugin \
+        xfce4-verve-plugin \
+        xfce4-weather-plugin \
+        xfce4-whiskermenu-plugin \
+        xfce4-xkb-plugin && \
+    apt-get install -y libreoffice && \
     if [ "${UBUNTU_RELEASE}" = "18.04" ]; then apt-get install --no-install-recommends -y vulkan-utils; else apt-get install --no-install-recommends -y vulkan-tools; fi && \
     # Support libva and VA-API through NVIDIA VDPAU
     curl -fsSL -o /tmp/vdpau-va-driver.deb "https://launchpad.net/~saiarcot895/+archive/ubuntu/chromium-dev/+files/vdpau-va-driver_0.7.4-6ubuntu2~ppa1~18.04.1_amd64.deb" && apt-get install --no-install-recommends -y /tmp/vdpau-va-driver.deb && rm -rf /tmp/* && \
-    # Remove Bluetooth packages that throw errors
-    apt-get autoremove --purge -y \
-        blueman \
-        pulseaudio-module-bluetooth && \
     rm -rf /var/lib/apt/lists/*
 
 # Wine, Winetricks, and PlayOnLinux, comment out the below lines to disable
@@ -115,8 +200,11 @@ ARG WINE_BRANCH=devel
 RUN if [ "${UBUNTU_RELEASE}" = "18.04" ]; then add-apt-repository ppa:cybermax-dexter/sdl2-backport; fi && \
     curl -fsSL -o /usr/share/keyrings/winehq-archive.key "https://dl.winehq.org/wine-builds/winehq.key" && \
     curl -fsSL -o "/etc/apt/sources.list.d/winehq-$(grep VERSION_CODENAME= /etc/os-release | cut -d= -f2).sources" "https://dl.winehq.org/wine-builds/ubuntu/dists/$(grep VERSION_CODENAME= /etc/os-release | cut -d= -f2)/winehq-$(grep VERSION_CODENAME= /etc/os-release | cut -d= -f2).sources" && \
-    apt-get update && apt-get install -y \
-        winehq-${WINE_BRANCH} \
+    add-apt-repository ppa:lutris-team/lutris && \
+    apt-get update && apt-get install --install-recommends -y \
+        winehq-${WINE_BRANCH} && \
+    apt-get update && apt-get install --no-install-recommends -y \
+        lutris \
         q4wine \
         playonlinux && \
     rm -rf /var/lib/apt/lists/* && \
@@ -209,7 +297,7 @@ RUN apt-get update && apt-get install --no-install-recommends -y \
     rm -rf /var/lib/apt/lists/* && \
     groupadd -g 1000 user && \
     useradd -ms /bin/bash user -u 1000 -g 1000 && \
-    usermod -a -G adm,audio,cdrom,dialout,dip,fax,floppy,input,lp,lpadmin,netdev,plugdev,scanner,ssh,sudo,tape,tty,video,voice user && \
+    usermod -a -G adm,audio,cdrom,dialout,dip,fax,floppy,input,lp,lpadmin,plugdev,scanner,sudo,tape,tty,video,voice user && \
     echo "user ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers && \
     chown user:user /home/user && \
     echo "user:${PASSWD}" | chpasswd && \

+ 4 - 4
README.md

@@ -1,8 +1,8 @@
 # docker-nvidia-glx-desktop
 
-MATE Desktop container designed for Kubernetes supporting OpenGL GLX and Vulkan for NVIDIA GPUs with WebRTC and HTML5, providing an open source remote cloud graphics or game streaming platform. Spawns its own fully isolated X Server instead of using the host X server, therefore not requiring `/tmp/.X11-unix` host sockets or host configuration.
+Xfce Desktop container designed for Kubernetes supporting OpenGL GLX and Vulkan for NVIDIA GPUs with WebRTC and HTML5, providing an open source remote cloud graphics or game streaming platform. Spawns its own fully isolated X Server instead of using the host X server, therefore not requiring `/tmp/.X11-unix` host sockets or host configuration.
 
-Use [docker-nvidia-egl-desktop](https://github.com/ehfd/docker-nvidia-egl-desktop) for a MATE Desktop container which directly accesses NVIDIA GPUs without using an X11 Server and supports automatically falling back to software acceleration in the absence of GPUs (but without Vulkan support unlike this container).
+Use [docker-nvidia-egl-desktop](https://github.com/ehfd/docker-nvidia-egl-desktop) for an Xfce Desktop container which directly accesses NVIDIA GPUs without using an X11 Server and supports automatically falling back to software acceleration in the absence of GPUs (but without Vulkan support unlike this container).
 
 ### Usage
 
@@ -60,9 +60,9 @@ Note that this section is only required for the selkies-gstreamer WebRTC HTML5 i
 
 In most cases when either of your server or client has a permissive firewall, the default Google STUN server configuration will work without additional configuration. However, when connecting from networks that cannot be traversed with STUN, a TURN server is required. Provide the TURN server address, port, and shared secret in order to take advantage of the TURN relay capabilities and improve connection success.
 
-An open source TURN server that can be used is [coTURN](https://github.com/coturn/coturn), and an [example container implementation](https://github.com/selkies-project/selkies-gstreamer/tree/master/addons/coturn) `ghcr.io/selkies-project/selkies-gstreamer/coturn:latest` is available. For dynamic IP addresses, [dynamic-coturn](https://github.com/mreichardt95/dynamic-coturn) is a container implementation which restarts the TURN server whenever the public IP address gets changed. [Pion TURN](https://github.com/pion/turn) is another TURN server implementation compatible with all major operating systems, and [restund](https://openwrt.org/packages/pkgdata/restund) is a TURN server implementation for OpenWRT.
+An open source TURN server that can be used is [coTURN](https://github.com/coturn/coturn), and an [example container implementation](https://github.com/selkies-project/selkies-gstreamer/tree/master/addons/coturn) `ghcr.io/selkies-project/selkies-gstreamer/coturn:latest` is available. For dynamic IP addresses, [dynamic-coturn](https://github.com/mreichardt95/dynamic-coturn) is a container implementation which restarts the TURN server whenever the public IP address gets changed. [Pion TURN](https://github.com/pion/turn) is another TURN server implementation compatible with all major operating systems including Windows.
 
-The [Numb STUN/TURN Server](https://numb.viagenie.ca) is a free TURN server instance that may be used for personal purposes upon registration, but may not be optimal for production usage.
+[Open Relay](https://www.metered.ca/tools/openrelay) and the [Numb STUN/TURN Server](https://numb.viagenie.ca) are free TURN server instances that may be used for personal purposes, but may not be optimal for production usage.
 
 With Docker, use the `-e` option to add the `TURN_HOST`, `TURN_PORT` environment variables. You also require to provide either just `TURN_SHARED_SECRET` for time-limited shared secret TURN authentication, or both `TURN_USERNAME` and `TURN_PASSWORD` for legacy long term TURN authentication, depending on your TURN server configuration. Provide just one of these authentication methods, not both.
 

+ 1 - 1
entrypoint.sh

@@ -81,7 +81,7 @@ if [ "$NOVNC_ENABLE" = "true" ]; then
 fi
 
 # Add custom processes below this section or within `supervisord.conf`
-mate-session &
+startxfce4 &
 
 # Fix selkies-gstreamer keyboard mapping
 if [ "$NOVNC_ENABLE" != "true" ]; then