diff --git a/.m1k1o/build b/.m1k1o/build
index c342a7f1..3764076a 100755
--- a/.m1k1o/build
+++ b/.m1k1o/build
@@ -25,11 +25,21 @@ build_chromium() {
docker build -t m1k1o/neko:chromium -f chromium/Dockerfile chromium/
}
+build_wesnoth() {
+ docker build -t m1k1o/neko:wesnoth -f wesnoth/Dockerfile wesnoth/
+}
+
+build_vlc() {
+ docker build -t m1k1o/neko:vlc -f vlc/Dockerfile vlc/
+}
+
case $1 in
client) build_client;;
serve) build_server;;
base) build_base;;
firefox) build_firefox;;
chromium) build_chromium;;
+ wesnoth) build_wesnoth;;
+ vlc) build_vlc;;
*) echo "Unknown $1";;
esac
diff --git a/.m1k1o/vlc/Dockerfile b/.m1k1o/vlc/Dockerfile
new file mode 100644
index 00000000..a40b17b1
--- /dev/null
+++ b/.m1k1o/vlc/Dockerfile
@@ -0,0 +1,15 @@
+FROM m1k1o1/neko:base
+
+#
+# install firefox-esr
+RUN set -eux; apt-get update; \
+ apt-get install -y --no-install-recommends openbox vlc; \
+ #
+ # clean up
+ apt-get clean -y; \
+ rm -rf /var/lib/apt/lists/* /var/cache/apt/*
+
+#
+# copy configuation files
+COPY supervisord.conf /etc/neko/supervisord/vlc.conf
+COPY openbox.xml /etc/neko/openbox.xml
diff --git a/.m1k1o/vlc/openbox.xml b/.m1k1o/vlc/openbox.xml
new file mode 100644
index 00000000..95376a7e
--- /dev/null
+++ b/.m1k1o/vlc/openbox.xml
@@ -0,0 +1,763 @@
+
+
+
+
+
+
+
+ 10
+ 20
+
+
+
+
+
+ no
+ true
+ yes
+ normal
+
+
+
+
+ yes
+
+ no
+
+ yes
+
+ no
+
+ 200
+
+ no
+
+
+
+
+ Smart
+
+ yes
+
+ Primary
+
+ 1
+
+
+
+
+ Clearlooks
+ NLIMC
+
+ yes
+ yes
+
+ sans
+ 8
+
+ bold
+
+ normal
+
+
+
+ sans
+ 8
+
+ bold
+
+ normal
+
+
+
+ sans
+ 9
+
+ normal
+
+ normal
+
+
+
+ sans
+ 9
+
+ normal
+
+ normal
+
+
+
+ sans
+ 9
+
+ bold
+
+ normal
+
+
+
+ sans
+ 9
+
+ bold
+
+ normal
+
+
+
+
+
+
+ 1
+ 1
+
+
+
+ 875
+
+
+
+
+ yes
+ Nonpixel
+
+ Center
+
+
+
+
+ 10
+
+ 10
+
+
+
+
+
+
+ 0
+ 0
+ 0
+ 0
+
+
+
+ TopLeft
+
+ 0
+ 0
+ no
+ Above
+
+ Vertical
+
+ no
+ 300
+
+ 300
+
+ Middle
+
+
+
+
+ C-g
+
+
+
+ leftno
+
+
+ rightno
+
+
+ upno
+
+
+ downno
+
+
+ leftno
+
+
+ rightno
+
+
+ upno
+
+
+ downno
+
+
+ 1
+
+
+ 2
+
+
+ 3
+
+
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ scrot -s
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ yesyes
+
+
+
+
+
+
+
+
+
+
+
+ right
+
+
+
+
+ left
+
+
+
+
+ up
+
+
+
+
+ down
+
+
+
+
+
+
+
+ true
+ Konqueror
+
+ kfmclient openProfile filemanagement
+
+
+
+
+ scrot
+
+
+
+
+ 1
+
+ 500
+
+ 400
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ previous
+
+
+ next
+
+
+ previous
+
+
+ next
+
+
+ previous
+
+
+ next
+
+
+
+
+
+
+
+
+
+
+
+
+
+ no
+
+
+
+
+
+
+
+
+
+
+ yes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ top
+
+
+
+
+
+ left
+
+
+
+
+
+ right
+
+
+
+
+
+ bottom
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ vertical
+
+
+ horizontal
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ previous
+
+
+ next
+
+
+
+ previous
+
+
+ next
+
+
+ previous
+
+
+ next
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ previous
+
+
+ next
+
+
+ previous
+
+
+ next
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.m1k1o/vlc/supervisord.conf b/.m1k1o/vlc/supervisord.conf
new file mode 100644
index 00000000..dd5d9915
--- /dev/null
+++ b/.m1k1o/vlc/supervisord.conf
@@ -0,0 +1,21 @@
+[program:vlc]
+environment=HOME="/home/%(ENV_USER)s",USER="%(ENV_USER)s",DISPLAY="%(ENV_DISPLAY)s"
+command=/usr/bin/vlc --x11-display=%(ENV_DISPLAY)s
+autorestart=true
+priority=800
+user=%(ENV_USER)s
+stdout_logfile=/var/log/neko/vlc.log
+stdout_logfile_maxbytes=100MB
+stdout_logfile_backups=10
+redirect_stderr=true
+
+[program:openbox]
+environment=HOME="/home/%(ENV_USER)s",USER="%(ENV_USER)s",DISPLAY="%(ENV_DISPLAY)s"
+command=/usr/bin/openbox --config-file /etc/neko/openbox.xml
+autorestart=true
+priority=300
+user=%(ENV_USER)s
+stdout_logfile=/var/log/neko/openbox.log
+stdout_logfile_maxbytes=100MB
+stdout_logfile_backups=10
+redirect_stderr=true
diff --git a/.m1k1o/wesnoth/Dockerfile b/.m1k1o/wesnoth/Dockerfile
new file mode 100644
index 00000000..e1d4daa0
--- /dev/null
+++ b/.m1k1o/wesnoth/Dockerfile
@@ -0,0 +1,16 @@
+FROM m1k1o/neko:base
+
+#
+# install firefox-esr
+RUN set -eux; apt-get update; \
+ apt-get install -y --no-install-recommends openbox; \
+ apt-get install -y wesnoth; \
+ #
+ # clean up
+ apt-get clean -y; \
+ rm -rf /var/lib/apt/lists/* /var/cache/apt/*
+
+#
+# copy configuation files
+COPY supervisord.conf /etc/neko/supervisord/wesnoth.conf
+COPY openbox.xml /etc/neko/openbox.xml
diff --git a/.m1k1o/wesnoth/openbox.xml b/.m1k1o/wesnoth/openbox.xml
new file mode 100644
index 00000000..b27311bd
--- /dev/null
+++ b/.m1k1o/wesnoth/openbox.xml
@@ -0,0 +1,763 @@
+
+
+
+
+
+
+
+ 10
+ 20
+
+
+
+
+
+ no
+ true
+ yes
+ normal
+
+
+
+
+ yes
+
+ no
+
+ yes
+
+ no
+
+ 200
+
+ no
+
+
+
+
+ Smart
+
+ yes
+
+ Primary
+
+ 1
+
+
+
+
+ Clearlooks
+ NLIMC
+
+ yes
+ yes
+
+ sans
+ 8
+
+ bold
+
+ normal
+
+
+
+ sans
+ 8
+
+ bold
+
+ normal
+
+
+
+ sans
+ 9
+
+ normal
+
+ normal
+
+
+
+ sans
+ 9
+
+ normal
+
+ normal
+
+
+
+ sans
+ 9
+
+ bold
+
+ normal
+
+
+
+ sans
+ 9
+
+ bold
+
+ normal
+
+
+
+
+
+
+ 1
+ 1
+
+
+
+ 875
+
+
+
+
+ yes
+ Nonpixel
+
+ Center
+
+
+
+
+ 10
+
+ 10
+
+
+
+
+
+
+ 0
+ 0
+ 0
+ 0
+
+
+
+ TopLeft
+
+ 0
+ 0
+ no
+ Above
+
+ Vertical
+
+ no
+ 300
+
+ 300
+
+ Middle
+
+
+
+
+ C-g
+
+
+
+ leftno
+
+
+ rightno
+
+
+ upno
+
+
+ downno
+
+
+ leftno
+
+
+ rightno
+
+
+ upno
+
+
+ downno
+
+
+ 1
+
+
+ 2
+
+
+ 3
+
+
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ scrot -s
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ yesyes
+
+
+
+
+
+
+
+
+
+
+
+ right
+
+
+
+
+ left
+
+
+
+
+ up
+
+
+
+
+ down
+
+
+
+
+
+
+
+ true
+ Konqueror
+
+ kfmclient openProfile filemanagement
+
+
+
+
+ scrot
+
+
+
+
+ 1
+
+ 500
+
+ 400
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ previous
+
+
+ next
+
+
+ previous
+
+
+ next
+
+
+ previous
+
+
+ next
+
+
+
+
+
+
+
+
+
+
+
+
+
+ no
+
+
+
+
+
+
+
+
+
+
+ yes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ top
+
+
+
+
+
+ left
+
+
+
+
+
+ right
+
+
+
+
+
+ bottom
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ vertical
+
+
+ horizontal
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ previous
+
+
+ next
+
+
+
+ previous
+
+
+ next
+
+
+ previous
+
+
+ next
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ previous
+
+
+ next
+
+
+ previous
+
+
+ next
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.m1k1o/wesnoth/supervisord.conf b/.m1k1o/wesnoth/supervisord.conf
new file mode 100644
index 00000000..f32ed855
--- /dev/null
+++ b/.m1k1o/wesnoth/supervisord.conf
@@ -0,0 +1,21 @@
+[program:wesnoth]
+environment=HOME="/home/%(ENV_USER)s",USER="%(ENV_USER)s",DISPLAY="%(ENV_DISPLAY)s"
+command=/usr/games/wesnoth -w
+autorestart=true
+priority=800
+user=%(ENV_USER)s
+stdout_logfile=/var/log/neko/wesnoth.log
+stdout_logfile_maxbytes=100MB
+stdout_logfile_backups=10
+redirect_stderr=true
+
+[program:openbox]
+environment=HOME="/home/%(ENV_USER)s",USER="%(ENV_USER)s",DISPLAY="%(ENV_DISPLAY)s"
+command=/usr/bin/openbox --config-file /etc/neko/openbox.xml
+autorestart=true
+priority=300
+user=%(ENV_USER)s
+stdout_logfile=/var/log/neko/openbox.log
+stdout_logfile_maxbytes=100MB
+stdout_logfile_backups=10
+redirect_stderr=true
diff --git a/README.md b/README.md
index 13d762a7..51616387 100644
--- a/README.md
+++ b/README.md
@@ -138,8 +138,111 @@ services:
NEKO_NAT1TO1:
```
+## VLC
+
+```yaml
+version: "3.4"
+services:
+ neko:
+ image: "m1k1o/neko:vlc"
+ restart: "unless-stopped"
+ shm_size: "2gb"
+ volumes:
+ - ":/video"
+ ports:
+ - "8080:8080"
+ - "52000-52100:52000-52100/udp"
+ cap_add:
+ - SYS_ADMIN
+ environment:
+ NEKO_SCREEN: '1920x1080@30'
+ NEKO_PASSWORD: neko
+ NEKO_PASSWORD_ADMIN: admin
+ NEKO_EPR: 52000-52100
+ NEKO_NAT1TO1:
+```
+
+## Wesnoth
+Neko can share any application via docker.
+For example the round-based strategy game wesnoth.
+
+```yaml
+version: "3.4"
+services:
+ neko:
+ image: "m1k1o/neko:wesnoth"
+ restart: "unless-stopped"
+ shm_size: "2gb"
+ ports:
+ - "8080:8080"
+ - "52000-52100:52000-52100/udp"
+ cap_add:
+ - SYS_ADMIN
+ environment:
+ NEKO_SCREEN: '1920x1080@30'
+ NEKO_PASSWORD: neko
+ NEKO_PASSWORD_ADMIN: admin
+ NEKO_EPR: 52000-52100
+ NEKO_NAT1TO1:
+```
+
## Mobile support
Neko is now working on iOS and Android! Also, the UI screens have been fixed for small screens.
![mobile-screens](https://i.imgur.com/K9gfscU.png)
+
+## Docker-Compose Enviroment Options
+
+```code
+NEKO_SCREEN:
+ - Resolution after startup. Only Admins can change this later.
+ - e.g. '1920x1080@30'
+NEKO_PASSWORD:
+ - Password for the user login
+ - e.g. 'user_password'
+NEKO_PASSWORD_ADMIN
+ - Password for the admin login
+ - e.g. 'admin_password'
+NEKO_EPR:
+ - For WebRTC needed range of ports
+ - e.g. 52000-52100
+NEKO_VP8:
+ - If vp8 should be used as video encoder for the stream (default encoder)
+ - e.g. 'true'
+NEKO_VP9:
+ - If vp9 should be used as video encoder for the stream (Parameter not optimized yet)
+ - e.g. 'false'
+NEKO_H264:
+ - If h264 should be used as video encoder for the stream (second best option)
+ - e.g. 'false'
+NEKO_VIDEO_BITRATE:
+ - Bitrate of the video stream in kb/s
+ - e.g. 3500
+NEKO_VIDEO:
+ - Makes it possible to create custom gstreamer pipelines. With this you could find the best quality for your CPU
+ - Installed are gstreamer1.0-plugins-base / gstreamer1.0-plugins-good / gstreamer1.0-plugins-bad / gstreamer1.0-plugins-ugly
+ - e.g. ' ximagesrc display-name=%s show-pointer=true use-damage=false ! video/x-raw,framerate=30/1 ! videoconvert ! queue ! video/x-raw,format=NV12 ! x264enc threads=4 bitrate=3500 key-int-max=60 vbv-buf-capacity=4000 byte-stream=true tune=zerolatency speed-preset=veryfast ! video/x-h264,stream-format=byte-stream '
+NEKO_MAX_FPS:
+ - The resulting stream frames per seconds should be capped (0 for uncapped)
+ - e.g. 0
+NEKO_OPUS:
+ - If opus should be used as audio encoder for the stream (default encoder)
+ - e.g. 'true'
+NEKO_G722:
+ - If g722 should be used as audio encoder for the stream
+ - e.g. 'false'
+NEKO_PCMU:
+ - If pcmu should be used as audio encoder for the stream
+ - e.g. 'false'
+NEKO_PCMA:
+ - If pcma should be used as audio encoder for the stream
+ - e.g. 'false'
+NEKO_CERT:
+ - Path to the SSL-Certificate
+ - e.g. '/certs/cert.pem'
+NEKO_KEY:
+ - Path to the SSL-Certificate private key
+ - e.g. '/certs/key.pem'
+
+```