generated from oci/template
update to use i3 instead of openbox
All checks were successful
Build Docker Image on Commit / build-and-publish (push) Successful in 29s
All checks were successful
Build Docker Image on Commit / build-and-publish (push) Successful in 29s
This commit is contained in:
parent
eb937f0aab
commit
b46f9fccce
3 changed files with 67 additions and 27 deletions
37
Dockerfile
37
Dockerfile
|
@ -1,33 +1,46 @@
|
||||||
FROM alpine:latest
|
FROM alpine:latest
|
||||||
|
|
||||||
# Set environment for non-interactive installs
|
# Set environment for non-interactive installs
|
||||||
ENV VNC_BUILTIN_WIDTH=1280
|
ENV VNC_BUILTIN_WIDTH=1024
|
||||||
ENV VNC_BUILTIN_HEIGHT=720
|
ENV VNC_BUILTIN_HEIGHT=768
|
||||||
ENV VNC_BUILTIN_PIXELDEPTH=24
|
ENV VNC_BUILTIN_PIXELDEPTH=32
|
||||||
ENV VNC_BUILTIN_DISABLED=false
|
ENV VNC_BUILTIN_DISABLED=true
|
||||||
ENV DISPLAY=:0
|
ENV DISPLAY=:0
|
||||||
|
|
||||||
# Install required packages
|
# Install X/VNC packages
|
||||||
|
|
||||||
RUN apk add --no-cache \
|
RUN apk add --no-cache \
|
||||||
openbox \
|
|
||||||
x11vnc \
|
x11vnc \
|
||||||
xvfb \
|
xvfb \
|
||||||
xterm \
|
xterm \
|
||||||
|
bash \
|
||||||
procps \
|
procps \
|
||||||
iproute2 \
|
iproute2 \
|
||||||
inetutils-telnet \
|
inetutils-telnet \
|
||||||
xdpyinfo \
|
xdpyinfo \
|
||||||
bash \
|
|
||||||
wget
|
wget
|
||||||
|
|
||||||
# Create working directory
|
# Create working directory and expose volume for user data
|
||||||
WORKDIR /
|
WORKDIR /
|
||||||
|
|
||||||
# Make sure userdata is stored
|
# Install Fonts
|
||||||
VOLUME /root
|
RUN apk add --no-cache \
|
||||||
|
font-noto \
|
||||||
|
font-noto-cjk \
|
||||||
|
font-noto-emoji \
|
||||||
|
fontconfig
|
||||||
|
|
||||||
# Copy entrypoint script
|
# Intall and Setup i3 window manager
|
||||||
|
RUN apk add --no-cache \
|
||||||
|
i3wm \
|
||||||
|
i3blocks \
|
||||||
|
i3status\
|
||||||
|
htop
|
||||||
|
|
||||||
|
# Copy minimal config
|
||||||
|
RUN mkdir -p /root/.config/i3
|
||||||
|
COPY i3.config /root/.config/i3/config
|
||||||
|
|
||||||
|
# Copy and prepare entrypoint script
|
||||||
COPY ./vnc.sh /vnc.sh
|
COPY ./vnc.sh /vnc.sh
|
||||||
RUN chmod +x /vnc.sh
|
RUN chmod +x /vnc.sh
|
||||||
|
|
||||||
|
|
29
i3.config
Normal file
29
i3.config
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
set $mod Mod1
|
||||||
|
|
||||||
|
# Terminal
|
||||||
|
bindsym $mod+Return exec xterm
|
||||||
|
|
||||||
|
# Restart i3 inplace (preserves layout/session)
|
||||||
|
bindsym $mod+Shift+r restart
|
||||||
|
|
||||||
|
# Workspace switching (workspaces 1 to 4)
|
||||||
|
bindsym $mod+1 workspace 1
|
||||||
|
bindsym $mod+2 workspace 2
|
||||||
|
bindsym $mod+3 workspace 3
|
||||||
|
|
||||||
|
# Move focused container to workspace
|
||||||
|
bindsym $mod+Shift+1 move container to workspace 1
|
||||||
|
bindsym $mod+Shift+2 move container to workspace 2
|
||||||
|
bindsym $mod+Shift+3 move container to workspace 3
|
||||||
|
|
||||||
|
focus_follows_mouse no
|
||||||
|
|
||||||
|
# Set default layout tabbed
|
||||||
|
workspace_layout tabbed
|
||||||
|
|
||||||
|
exec /entrypoint.sh
|
||||||
|
|
||||||
|
bar {
|
||||||
|
position top
|
||||||
|
status_command i3status
|
||||||
|
}
|
26
vnc.sh
26
vnc.sh
|
@ -1,10 +1,10 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Prepare variables
|
# Prepare variables
|
||||||
: "${VNC_BUILTIN_WIDTH:=1280}"
|
: "${VNC_BUILTIN_WIDTH:=1024}"
|
||||||
: "${VNC_BUILTIN_HEIGHT:=720}"
|
: "${VNC_BUILTIN_HEIGHT:=786}"
|
||||||
: "${VNC_BUILTIN_PIXELDEPTH:=24}"
|
: "${VNC_BUILTIN_PIXELDEPTH:=32}"
|
||||||
: "${VNC_BUILTIN_DISABLED:=false}"
|
: "${VNC_BUILTIN_DISABLED:=true}"
|
||||||
|
|
||||||
if [ "${VNC_BUILTIN_DISABLED}" = true ]; then
|
if [ "${VNC_BUILTIN_DISABLED}" = true ]; then
|
||||||
echo "Builtin VNC is disabled. You must ensure the DISPLAY variable is set and the target display is accessible"
|
echo "Builtin VNC is disabled. You must ensure the DISPLAY variable is set and the target display is accessible"
|
||||||
|
@ -18,21 +18,19 @@ else
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Wait for the display to become ready
|
# Wait for the display to become ready
|
||||||
while true
|
while ! xdpyinfo -display "${DISPLAY}" > /dev/null 2>&1; do
|
||||||
do
|
|
||||||
if xdpyinfo -display "${DISPLAY}" > /dev/null 2>&1; then
|
|
||||||
echo "Display ${DISPLAY} is ready!"
|
|
||||||
break
|
|
||||||
else
|
|
||||||
echo "Waiting for display ${DISPLAY} to become ready..."
|
echo "Waiting for display ${DISPLAY} to become ready..."
|
||||||
sleep 0.25
|
sleep 1
|
||||||
fi
|
|
||||||
done
|
done
|
||||||
|
echo "Display ${DISPLAY} is ready!"
|
||||||
|
|
||||||
# Launch the VNC server if enabled
|
# Launch the VNC server if enabled
|
||||||
if [ "${VNC_BUILTIN_DISABLED}" != true ]; then
|
if [ "${VNC_BUILTIN_DISABLED}" != true ]; then
|
||||||
x11vnc -bg -forever -nopw -display ${DISPLAY} &
|
x11vnc -bg -forever -nopw -display ${DISPLAY} &
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Launch OpenBox
|
# Launch i3 window manager
|
||||||
openbox &
|
/usr/bin/i3
|
||||||
|
|
||||||
|
echo "i3 exited unexpectedly"
|
||||||
|
sleep infinity
|
Loading…
Reference in a new issue