diff --git a/.docker/kde/Dockerfile b/.docker/kde/Dockerfile new file mode 100644 index 0000000..13d6573 --- /dev/null +++ b/.docker/kde/Dockerfile @@ -0,0 +1,21 @@ +ARG BASE_IMAGE=m1k1o/neko:base +FROM $BASE_IMAGE + +# +# install kde +RUN set -eux; apt-get update; \ + apt-get install -y --no-install-recommends kde-full kwin-x11 sudo; \ + # + # add user to sudoers + usermod -aG sudo neko; \ + echo "neko:neko" | chpasswd; \ + echo "%sudo ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers; \ + # clean up + apt remove xserver-xorg-legacy -y; \ + apt-get clean -y; \ + rm -rf /var/lib/apt/lists/* /var/cache/apt/* + +# +# copy configuation files +COPY supervisord.conf /etc/neko/supervisord/kde.conf + diff --git a/.docker/kde/supervisord.conf b/.docker/kde/supervisord.conf new file mode 100644 index 0000000..e07b58f --- /dev/null +++ b/.docker/kde/supervisord.conf @@ -0,0 +1,23 @@ +[program:kde] +environment=HOME="/home/%(ENV_USER)s",USER="%(ENV_USER)s",DISPLAY="%(ENV_DISPLAY)s" +command=/usr/bin/startplasma-x11 +stopsignal=INT +autorestart=true +priority=500 +user=%(ENV_USER)s +stdout_logfile=/var/log/neko/kde.log +stdout_logfile_maxbytes=100MB +stdout_logfile_backups=10 +redirect_stderr=true + +[program:kwin] +environment=HOME="/home/%(ENV_USER)s",USER="%(ENV_USER)s",DISPLAY="%(ENV_DISPLAY)s" +command=/usr/bin/kwin_x11 +stopsignal=INT +autorestart=true +priority=500 +user=%(ENV_USER)s +stdout_logfile=/var/log/neko/kwin.log +stdout_logfile_maxbytes=100MB +stdout_logfile_backups=10 +redirect_stderr=true diff --git a/.github/workflows/dockerhub.yml b/.github/workflows/dockerhub.yml index 194505e..8799164 100644 --- a/.github/workflows/dockerhub.yml +++ b/.github/workflows/dockerhub.yml @@ -50,7 +50,7 @@ jobs: # Will build all images even if some fail. fail-fast: false matrix: - tags: [ firefox, chromium, google-chrome, ungoogled-chromium, microsoft-edge, brave, vivaldi, opera, tor-browser, remmina, vlc, xfce ] + tags: [ firefox, chromium, google-chrome, ungoogled-chromium, microsoft-edge, brave, vivaldi, opera, tor-browser, remmina, vlc, xfce, kde ] env: DOCKER_TAG: ${{ matrix.tags }} steps: diff --git a/.github/workflows/ghcr-amd.yml b/.github/workflows/ghcr-amd.yml index 5f1620a..c36144d 100644 --- a/.github/workflows/ghcr-amd.yml +++ b/.github/workflows/ghcr-amd.yml @@ -81,6 +81,7 @@ jobs: - tag: remmina - tag: vlc - tag: xfce + - tag: kde env: TAG_NAME: ${{ matrix.tag }} steps: diff --git a/.github/workflows/ghcr-intel.yml b/.github/workflows/ghcr-intel.yml index 67efd5d..ef07ab0 100644 --- a/.github/workflows/ghcr-intel.yml +++ b/.github/workflows/ghcr-intel.yml @@ -81,6 +81,7 @@ jobs: - tag: remmina - tag: vlc - tag: xfce + - tag: kde env: TAG_NAME: ${{ matrix.tag }} DOCKERFILE: ${{ matrix.dockerfile }} diff --git a/README.md b/README.md index 089fc6c..2012f0c 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ Then I found [this](https://github.com/nurdism/neko) project and started to dig Neko started as a virtual browser that is streamed using WebRTC to multiple users. - It is **not only limited to a browser**; it can run anything that runs on linux (e.g. VLC). Browser only happens to be the most popular and widely used use-case. -- In fact, it is not limited to a single program either; you can install a full desktop environment (e.g. XFCE). +- In fact, it is not limited to a single program either; you can install a full desktop environment (e.g. XFCE, KDE). - Speaking of limits, it does not need to run in a container; you could install neko on your host, connect to your X server and control your whole VM. - Theoretically it is not limited to only X server, anything that can be controlled and scraped periodically for images could be used instead. - Like implementing RDP or VNC protocol, where neko would only act as WebRTC relay server. This is currently only future. @@ -99,6 +99,7 @@ Compared to clientless remote desktop gateway (e.g. [Apache Guacamole](https://g + ... others in m1k1o/neko-apps diff --git a/docs/_media/icons/kde.svg b/docs/_media/icons/kde.svg new file mode 100644 index 0000000..5de2486 --- /dev/null +++ b/docs/_media/icons/kde.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/changelog.md b/docs/changelog.md index 05dbbd4..6246a29 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -4,6 +4,7 @@ ### New Features - Added AV1 tag, metadata and pipeline. Unfortunately does not work yet, since the encoding is way too slow (by @mbattista). +- Added `m1k1o/neko:kde` tag as an alternative to `m1k1o/neko:xfce`. ### Bugs - Fixed TCP mux occasional freeze by adding write buffer to it. diff --git a/docs/getting-started/README.md b/docs/getting-started/README.md index a961d98..b5ebab8 100644 --- a/docs/getting-started/README.md +++ b/docs/getting-started/README.md @@ -12,6 +12,7 @@ + Use the following docker images from [Docker Hub](https://hub.docker.com/r/m1k1o/neko) for x86_64: @@ -28,7 +29,7 @@ Use the following docker images from [Docker Hub](https://hub.docker.com/r/m1k1o - Pass env var `REMMINA_URL=://[[:]@]server[:port]` (proto being `vnc`, `rdp` or `spice`). - Or create your custom configuration with remmina locally (it's saved in `~/.local/share/remmina/path_to_profile.remmina`) and bind-mount it, then pass env var `REMMINA_PROFILE=`. - `m1k1o/neko:vlc` - for VLC Video player (needs volume mounted to `/media` with local video files, or setting `VLC_MEDIA=/media` path). -- `m1k1o/neko:xfce` - for a shared desktop / installing shared software. +- `m1k1o/neko:xfce` or `m1k1o/neko:kde` - for a shared desktop / installing shared software. - `m1k1o/neko:base` - for custom base. Dockerhub images are built using GitHub actions on every push and on weekly basis to keep all browsers up-to-date. @@ -47,6 +48,7 @@ All images are also available on [GitHub Container Registry](https://github.com/ - `ghcr.io/m1k1o/neko/remmina:latest` - `ghcr.io/m1k1o/neko/vlc:latest` - `ghcr.io/m1k1o/neko/xfce:latest` +- `ghcr.io/m1k1o/neko/kde:latest` For ARM-based images (like Raspberry Pi - with GPU hardware acceleration, Oracle Cloud ARM tier). Currently, not all images are available for ARM, because not all applications are available for ARM. @@ -70,6 +72,7 @@ For images with VAAPI GPU hardware acceleration using intel drivers use: - `ghcr.io/m1k1o/neko/intel-remmina:latest` - `ghcr.io/m1k1o/neko/intel-vlc:latest` - `ghcr.io/m1k1o/neko/intel-xfce:latest` +- `ghcr.io/m1k1o/neko/intel-kde:latest` GHCR images are built using GitHub actions for every tag.