Last active
May 12, 2023 05:22
-
-
Save HoKim98/ec67b1fdf4c6d4220687af74b22f5b23 to your computer and use it in GitHub Desktop.
Multi-screen (Multi-GPU) XFCE Settings
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Copyright (c) 2023 Ho Kim ([email protected]). All rights reserved. | |
# Prehibit errors | |
set -e -o pipefail | |
# Verbose | |
set -x | |
# Configure command-line arguments | |
SCREEN=$1 | |
# Set local variables | |
DESKTOP_HOME="${HOME}/desktop/${SCREEN}" | |
# Install nvidia-ctk and generate NVIDIA GPU CDI | |
sudo dnf install -y nvidia-container-toolkit-base | |
mkdir -p /etc/cdi | |
nvidia-ctk cdi generate --device-name-strategy=type-index --format=json >/etc/cdi/nvidia.json 2>/dev/null | |
# Create a container-wise home directory | |
mkdir -p "${DESKTOP_HOME}" | |
# Build a desktop environment image | |
docker build --tag desktop . | |
# Spawn a desktop environment per screen | |
podman run -d --privileged \ | |
--device nvidia.com/gpu=all \ | |
--env "DISPLAY=:0.${SCREEN}" \ | |
--name "desktop-${SCREEN}" \ | |
--net host \ | |
--restart unless-stopped \ | |
--volume "${DESKTOP_HOME}:/root:rw" \ | |
--volume /tmp/.ICE-unix:/tmp/.ICE-unix:rw \ | |
--volume /tmp/.X11-unix:/tmp/.X11-unix:rw \ | |
--volume /var/lib/dbus/machine-id:/var/lib/dbus/machine-id:ro \ | |
--user $(id -u) \ | |
--group-add $(id -g) \ | |
desktop | |
# Finished! | |
exec echo "OK!" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Copyright (c) 2023 Ho Kim ([email protected]). All rights reserved. | |
# Configure environment variables | |
ARG ROCKYLINUX_VERSION="8" | |
# Be ready for serving | |
FROM "quay.io/rockylinux/rockylinux:${ROCKYLINUX_VERSION}" as base | |
# Install desktop environment dependencies | |
RUN dnf install -y \ | |
epel-release \ | |
&& dnf install -y \ | |
dbus-x11 \ | |
file-roller \ | |
mesa-dri-drivers \ | |
sqlite \ | |
Thunar thunar-archive-plugin thunar-volman \ | |
xfce4-appfinder xfce4-notifyd xfce4-panel xfce4-pulseaudio-plugin \ | |
xfce4-session xfce4-settings xfce4-terminal \ | |
xfconf xfdesktop xfwm4 \ | |
# Cleanup | |
&& dnf clean all \ | |
&& rm -rf /var/cache /var/log/dnf* /var/log/yum.* | |
# Execute xfce4-session after init | |
ENTRYPOINT [ "/usr/bin/env" ] | |
CMD [ "bash", "-c", "sleep 1; xfce4-session" ] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Section "ServerLayout" | |
Identifier "Layout0" | |
Screen 0 "Screen0" 0 0 | |
Screen 1 "Screen1" Below "Screen0" | |
InputDevice "Keyboard0" "CoreKeyboard" | |
InputDevice "Mouse0" "CorePointer" | |
Option "Xinerama" "0" | |
EndSection | |
Section "Files" | |
EndSection | |
Section "InputDevice" | |
# generated from default | |
Identifier "Mouse0" | |
Driver "mouse" | |
Option "Protocol" "auto" | |
Option "Device" "/dev/input/mice" | |
Option "Emulate3Buttons" "no" | |
Option "ZAxisMapping" "4 5" | |
EndSection | |
Section "InputDevice" | |
# generated from default | |
Identifier "Keyboard0" | |
Driver "kbd" | |
EndSection | |
Section "Device" | |
Identifier "Device0" | |
Driver "nvidia" | |
VendorName "NVIDIA Corporation" | |
BoardName "NVIDIA TITAN V" | |
BusID "PCI:115:0:0" | |
EndSection | |
Section "Device" | |
Identifier "Device1" | |
Driver "nvidia" | |
VendorName "NVIDIA Corporation" | |
BoardName "NVIDIA TITAN V" | |
BusID "PCI:166:0:0" | |
EndSection | |
Section "Screen" | |
Identifier "Screen0" | |
Device "Device0" | |
DefaultDepth 24 | |
Option "Stereo" "0" | |
Option "SLI" "Off" | |
Option "MultiGPU" "Off" | |
Option "BaseMosaic" "off" | |
SubSection "Display" | |
Depth 24 | |
EndSubSection | |
EndSection | |
Section "Screen" | |
Identifier "Screen1" | |
Device "Device1" | |
DefaultDepth 24 | |
Option "Stereo" "0" | |
Option "SLI" "Off" | |
Option "MultiGPU" "Off" | |
Option "BaseMosaic" "off" | |
SubSection "Display" | |
Depth 24 | |
EndSubSection | |
EndSection |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment