Skip to content

Instantly share code, notes, and snippets.

@yskszk63
Last active August 18, 2019 06:22
Show Gist options
  • Save yskszk63/4d825d01577330e95aa8f98c74d55f9d to your computer and use it in GitHub Desktop.
Save yskszk63/4d825d01577330e95aa8f98c74d55f9d to your computer and use it in GitHub Desktop.
desktop
FROM base/archlinux:latest
RUN set -x && \
pacman -Syu --noconfirm && \
pacman -S --needed --noconfirm --noprogressbar \
tigervnc \
python \
python2-xdg \
archlinux-xdg-menu \
openbox \
gnome-terminal \
fcitx-mozc \
fcitx-gtk2 \
fcitx-gtk3 \
fcitx-configtool \
fbpanel \
neovim \
unzip \
chromium \
adobe-source-han-sans-jp-fonts \
otf-fira-mono && \
python -mvenv /opt/websockify && \
/opt/websockify/bin/pip install websockify && \
# locale gen
echo 'ja_JP UTF-8' > /etc/locale.gen && \
echo 'en_US UTF-8' >> /etc/locale.gen && \
LANG=ja_JP.UTF-8 locale-gen && \
# fontconfig
f=/etc/fonts/local.conf && \
echo '<fontconfig>' > $f && \
echo ' <match target="pattern">' >> $f && \
echo ' <test qual="any" name="family">' >> $f && \
echo ' <string>monospace</string>' >> $f && \
echo ' </test>' >> $f && \
echo ' <edit name="family" mode="assign" binding="same">' >> $f && \
echo ' <string>Fira Mono</string>' >> $f && \
echo ' </edit>' >> $f && \
echo ' </match>' >> $f && \
echo '</fontconfig>' >> $f && \
fc-cache && \
# setup skel
mkdir /etc/skel/.vnc && \
# vnc config
f=/etc/skel/.vnc/config && \
echo 'securitytypes=none' > $f && \
echo 'localhost' >> $f && \
# vnc xstartup
f=/etc/skel/.vnc/xstartup && \
echo '#!/bin/sh' > $f && \
echo 'export GTK_IM_MODULE=fcitx' >> $f && \
echo 'export QT_IM_MODULE=fcitx' >> $f && \
echo 'export XMODIFIERS=@im=fcitx' >> $f && \
echo 'export LANG=ja_JP.UTF-8' >> $f && \
echo 'exec dbus-launch openbox-session' >> $f && \
chmod +x $f && \
# autostart
mkdir -p /etc/skel/.config/openbox && \
f=/etc/skel/.config/openbox/autostart && \
echo 'fbpanel &' > $f && \
# menu.xml
f=/etc/skel/.config/openbox/menu.xml && \
echo '<?xml version="1.0" encoding="UTF-8"?>' > $f && \
echo '' >> $f && \
echo '<openbox_menu xmlns="http://openbox.org/3.4/menu">' >> $f && \
echo '' >> $f && \
echo '<menu id="root-menu" label="Openbox 3">' >> $f && \
echo ' <menu id="applications" label="Applications" execute="xdg_menu --format openbox3-pipe --root-menu /etc/xdg/menus/arch-applications.menu" />' >> $f && \
echo ' <separator />' >> $f && \
echo ' <item label="Log Out">' >> $f && \
echo ' <action name="Exit">' >> $f && \
echo ' <prompt>yes</prompt>' >> $f && \
echo ' </action>' >> $f && \
echo ' </item>' >> $f && \
echo '</menu>' >> $f && \
echo '' >> $f && \
echo '</openbox_menu>' >> $f && \
# fbpanel
mkdir /etc/skel/.config/fbpanel -p && \
f=/etc/skel/.config/fbpanel/default && \
echo 'Global {' > $f && \
echo ' edge = bottom' >> $f && \
echo ' allign = center' >> $f && \
echo ' margin = 0' >> $f && \
echo ' widthtype = percent' >> $f && \
echo ' width = 100' >> $f && \
echo ' height = 32' >> $f && \
echo ' transparent = true' >> $f && \
echo ' tintcolor = #ffffff' >> $f && \
echo ' alpha = 28' >> $f && \
echo ' setdocktype = true' >> $f && \
echo ' setpartialstruct = true' >> $f && \
echo ' autohide = false' >> $f && \
echo ' heightWhenHidden = 2' >> $f && \
echo ' roundcorners = false' >> $f && \
echo ' roundcornersradius = 7' >> $f && \
echo ' layer = none' >> $f && \
echo ' MaxElemHeight = 32' >> $f && \
echo '}' >> $f && \
echo 'Plugin {' >> $f && \
echo ' type = space' >> $f && \
echo ' config {' >> $f && \
echo ' size = 2' >> $f && \
echo ' }' >> $f && \
echo '}' >> $f && \
echo 'Plugin {' >> $f && \
echo ' type = menu' >> $f && \
echo ' config {' >> $f && \
echo ' IconSize = 32' >> $f && \
echo ' icon = logo' >> $f && \
echo ' systemmenu {' >> $f && \
echo ' }' >> $f && \
echo ' }' >> $f && \
echo '}' >> $f && \
echo 'Plugin {' >> $f && \
echo ' type = space' >> $f && \
echo ' config {' >> $f && \
echo ' size = 15' >> $f && \
echo ' }' >> $f && \
echo '}' >> $f && \
echo 'Plugin {' >> $f && \
echo ' type = launchbar' >> $f && \
echo ' config {' >> $f && \
echo ' button {' >> $f && \
echo ' icon = terminal' >> $f && \
echo ' tooltip = terminal' >> $f && \
echo ' action = gnome-terminal' >> $f && \
echo ' }' >> $f && \
echo ' button {' >> $f && \
echo ' icon = web-browser' >> $f && \
echo ' tooltip = web browser' >> $f && \
echo ' action = chromium' >> $f && \
echo ' }' >> $f && \
echo ' }' >> $f && \
echo '}' >> $f && \
echo 'Plugin {' >> $f && \
echo ' type = space' >> $f && \
echo ' config {' >> $f && \
echo ' size = 15' >> $f && \
echo ' }' >> $f && \
echo '}' >> $f && \
echo 'Plugin {' >> $f && \
echo ' type = taskbar' >> $f && \
echo ' expand = true' >> $f && \
echo ' config {' >> $f && \
echo ' ShowIconified = true' >> $f && \
echo ' ShowMapped = true' >> $f && \
echo ' ShowAllDesks = true' >> $f && \
echo ' tooltips = true' >> $f && \
echo ' IconsOnly = false' >> $f && \
echo ' MaxTaskWidth = 150' >> $f && \
echo ' }' >> $f && \
echo '}' >> $f && \
echo 'Plugin {' >> $f && \
echo ' type = space' >> $f && \
echo ' config {' >> $f && \
echo ' size = 15' >> $f && \
echo ' }' >> $f && \
echo '}' >> $f && \
echo 'Plugin {' >> $f && \
echo ' type = tray' >> $f && \
echo '}' >> $f && \
echo 'Plugin {' >> $f && \
echo ' type = space' >> $f && \
echo ' config {' >> $f && \
echo ' size = 15' >> $f && \
echo ' }' >> $f && \
echo '}' >> $f && \
echo 'Plugin {' >> $f && \
echo ' type = dclock' >> $f && \
echo ' config {' >> $f && \
echo ' ShowSeconds = false' >> $f && \
echo ' HoursView = 24' >> $f && \
echo ' TooltipFmt = %A %x' >> $f && \
echo ' }' >> $f && \
echo '}' >> $f && \
# clear pacman cache
pacman -Scc --noconfirm && \
# useradd
useradd -m user
USER user
EXPOSE 8080
CMD /opt/websockify/bin/websockify 8080 localhost:5901 & \
vncserver :1 -fg -log '*:stdout:100' && \
pkill websockify
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment