From c358e75a7f39316362c6cc49f8009db3aba07f25 Mon Sep 17 00:00:00 2001 From: thelamer Date: Sun, 28 Dec 2025 15:59:26 -0500 Subject: [PATCH] add wayland init, rebase to 3.23 --- .github/workflows/external_trigger.yml | 4 ++-- Dockerfile | 6 +++--- Dockerfile.aarch64 | 6 +++--- Jenkinsfile | 4 ++-- README.md | 26 ++++++++++++++++++++++++++ jenkins-vars.yml | 4 ++-- readme-vars.yml | 1 + root/defaults/autostart_wayland | 1 + root/defaults/menu_wayland.xml | 8 ++++++++ 9 files changed, 48 insertions(+), 12 deletions(-) create mode 100755 root/defaults/autostart_wayland create mode 100644 root/defaults/menu_wayland.xml diff --git a/.github/workflows/external_trigger.yml b/.github/workflows/external_trigger.yml index 5decc7b..7e98625 100644 --- a/.github/workflows/external_trigger.yml +++ b/.github/workflows/external_trigger.yml @@ -29,7 +29,7 @@ jobs: echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY echo "> External trigger running off of master branch. To disable this trigger, add \`pidgin_master\` into the Github organizational variable \`SKIP_EXTERNAL_TRIGGER\`." >> $GITHUB_STEP_SUMMARY printf "\n## Retrieving external version\n\n" >> $GITHUB_STEP_SUMMARY - EXT_RELEASE=$(curl -sL "http://dl-cdn.alpinelinux.org/alpine/v3.22/community/x86_64/APKINDEX.tar.gz" | tar -xz -C /tmp \ + EXT_RELEASE=$(curl -sL "http://dl-cdn.alpinelinux.org/alpine/v3.23/community/x86_64/APKINDEX.tar.gz" | tar -xz -C /tmp \ && awk '/^P:'"pidgin"'$/,/V:/' /tmp/APKINDEX | sed -n 2p | sed 's/^V://') echo "Type is \`alpine_repo\`" >> $GITHUB_STEP_SUMMARY if grep -q "^pidgin_master_${EXT_RELEASE}" <<< "${SKIP_EXTERNAL_TRIGGER}"; then @@ -107,7 +107,7 @@ jobs: if [ "${EXT_RELEASE_SANITIZED}" == "${IMAGE_VERSION}" ]; then echo "Sanitized version \`${EXT_RELEASE_SANITIZED}\` already pushed, exiting" >> $GITHUB_STEP_SUMMARY exit 0 - elif [[ $(curl -sL "http://dl-cdn.alpinelinux.org/alpine/v3.22/community/aarch64/APKINDEX.tar.gz" | tar -xz -C /tmp && awk '/^P:'"pidgin"'$/,/V:/' /tmp/APKINDEX | sed -n 2p | sed 's/^V://') != "${EXT_RELEASE}" ]]; then + elif [[ $(curl -sL "http://dl-cdn.alpinelinux.org/alpine/v3.23/community/aarch64/APKINDEX.tar.gz" | tar -xz -C /tmp && awk '/^P:'"pidgin"'$/,/V:/' /tmp/APKINDEX | sed -n 2p | sed 's/^V://') != "${EXT_RELEASE}" ]]; then echo "New version \`${EXT_RELEASE}\` found; but not all arch repos updated yet; exiting" >> $GITHUB_STEP_SUMMARY FAILURE_REASON="New version ${EXT_RELEASE} for pidgin tag latest is detected, however not all arch repos are updated yet. Will try again later." curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903, diff --git a/Dockerfile b/Dockerfile index bb18fed..d83d6c3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ # syntax=docker/dockerfile:1 # build stage -FROM ghcr.io/linuxserver/baseimage-alpine:3.22 AS plugins +FROM ghcr.io/linuxserver/baseimage-alpine:3.23 AS plugins RUN \ echo "**** install dev deps ****" && \ @@ -104,7 +104,7 @@ RUN \ make DESTDIR="/buildout" install # runtime stage -FROM ghcr.io/linuxserver/baseimage-selkies:alpine322 +FROM ghcr.io/linuxserver/baseimage-selkies:alpine323 # set version label ARG BUILD_DATE @@ -127,7 +127,7 @@ RUN \ https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/pidgin-logo.png && \ echo "**** install packages ****" && \ if [ -z ${PIDGIN_VERSION+x} ]; then \ - PIDGIN_VERSION=$(curl -sL "http://dl-cdn.alpinelinux.org/alpine/v3.22/community/x86_64/APKINDEX.tar.gz" | tar -xz -C /tmp \ + PIDGIN_VERSION=$(curl -sL "http://dl-cdn.alpinelinux.org/alpine/v3.23/community/x86_64/APKINDEX.tar.gz" | tar -xz -C /tmp \ && awk '/^P:pidgin$/,/V:/' /tmp/APKINDEX | sed -n 2p | sed 's/^V://'); \ fi && \ apk add --no-cache \ diff --git a/Dockerfile.aarch64 b/Dockerfile.aarch64 index b2dc716..9957712 100644 --- a/Dockerfile.aarch64 +++ b/Dockerfile.aarch64 @@ -1,7 +1,7 @@ # syntax=docker/dockerfile:1 # build stage -FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-3.22 AS plugins +FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-3.23 AS plugins RUN \ echo "**** install dev deps ****" && \ @@ -104,7 +104,7 @@ RUN \ make DESTDIR="/buildout" install # runtime stage -FROM ghcr.io/linuxserver/baseimage-selkies:arm64v8-alpine322 +FROM ghcr.io/linuxserver/baseimage-selkies:arm64v8-alpine323 # set version label ARG BUILD_DATE @@ -127,7 +127,7 @@ RUN \ https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/pidgin-logo.png && \ echo "**** install packages ****" && \ if [ -z ${PIDGIN_VERSION+x} ]; then \ - PIDGIN_VERSION=$(curl -sL "http://dl-cdn.alpinelinux.org/alpine/v3.22/community/x86_64/APKINDEX.tar.gz" | tar -xz -C /tmp \ + PIDGIN_VERSION=$(curl -sL "http://dl-cdn.alpinelinux.org/alpine/v3.23/community/x86_64/APKINDEX.tar.gz" | tar -xz -C /tmp \ && awk '/^P:pidgin$/,/V:/' /tmp/APKINDEX | sed -n 2p | sed 's/^V://'); \ fi && \ apk add --no-cache \ diff --git a/Jenkinsfile b/Jenkinsfile index 2cbd2d5..1fff225 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -27,8 +27,8 @@ pipeline { DEV_DOCKERHUB_IMAGE = 'lsiodev/pidgin' PR_DOCKERHUB_IMAGE = 'lspipepr/pidgin' DIST_IMAGE = 'alpine' - DIST_TAG = '3.22' - DIST_REPO = 'http://dl-cdn.alpinelinux.org/alpine/v3.22/community/' + DIST_TAG = '3.23' + DIST_REPO = 'http://dl-cdn.alpinelinux.org/alpine/v3.23/community/' DIST_REPO_PACKAGES = 'pidgin' MULTIARCH = 'true' CI = 'true' diff --git a/README.md b/README.md index e61683d..b9ae443 100644 --- a/README.md +++ b/README.md @@ -109,6 +109,7 @@ This container is based on [Docker Baseimage Selkies](https://github.com/linuxse | Variable | Description | | :----: | --- | +| PIXELFLUX_WAYLAND | **Experimental** If set to true the container will initialize in Wayland mode running [Smithay](https://github.com/Smithay/smithay) and Labwc while enabling zero copy encoding with a GPU | | CUSTOM_PORT | Internal port the container listens on for http if it needs to be swapped from the default `3000` | | CUSTOM_HTTPS_PORT | Internal port the container listens on for https if it needs to be swapped from the default `3001` | | CUSTOM_WS_PORT | Internal port the container listens on for websockets if it needs to be swapped from the default 8082 | @@ -163,6 +164,30 @@ To launch the desktop session in a different language, set the `LC_ALL` environm * `-e LC_ALL=nl_NL.UTF-8` - Netherlands * `-e LC_ALL=it_IT.UTF-8` - Italian +### SealSkin Compatibility + +This container is compatible with [SealSkin](https://github.com/linuxserver/docker-sealskin). + +SealSkin is a self-hosted, client-server platform that provides secure authentication and collaboration features while using a browser extension to intercept user actions such as clicking a link or downloading a file and redirect them to a secure, isolated application environment running on a remote server. + +* **SealSkin Server:** [Get it Here](https://github.com/linuxserver/docker-sealskin) +* **Browser Extension:** [Install Here](https://chromewebstore.google.com/detail/sealskin-isolation/lclgfmnljgacfdpmmmjmfpdelndbbfhk) + +### All GPU Acceleration - use sane resolutions + +When using 3d acceleration via Nvidia DRM or DRI3 it is important to clamp the virtual display to a reasonable max resolution. This can be achieved with the environment setting: + +* `-e MAX_RESOLUTION=3840x2160` + +This will set the total virtual framebuffer to 4K, you can also set a manual resolution to achieve this. +By default the virtual monitor in the session is 16K to support large monitors and dual display configurations. Leaving it this large has no impact on CPU based performance but costs GPU memory usage and memory bandwidth when leveraging one for acceleration. If you have performance issues in an accelerated session, try clamping the resolution to 1080p and work up from there: + +``` +-e SELKIES_MANUAL_WIDTH=1920 +-e SELKIES_MANUAL_HEIGHT=1080 +-e MAX_RESOLUTION=1920x1080 +``` + ### DRI3 GPU Acceleration For accelerated apps or games, render devices can be mounted into the container and leveraged by applications using: @@ -552,6 +577,7 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64 ## Versions +* **28.12.25:** - Add Wayland init logic, rebase to Alpine 3.23. * **12.07.25:** - Rebase to Selkies and Alpine 3.22, HTTPS IS NOW REQUIRED. * **06.12.24:** - Rebase to Alpine 3.21. * **23.05.24:** - Rebase to Alpine 3.20. diff --git a/jenkins-vars.yml b/jenkins-vars.yml index 63a094a..d4a0a6a 100644 --- a/jenkins-vars.yml +++ b/jenkins-vars.yml @@ -16,8 +16,8 @@ repo_vars: - DEV_DOCKERHUB_IMAGE = 'lsiodev/pidgin' - PR_DOCKERHUB_IMAGE = 'lspipepr/pidgin' - DIST_IMAGE = 'alpine' - - DIST_TAG = '3.22' - - DIST_REPO = 'http://dl-cdn.alpinelinux.org/alpine/v3.22/community/' + - DIST_TAG = '3.23' + - DIST_REPO = 'http://dl-cdn.alpinelinux.org/alpine/v3.23/community/' - DIST_REPO_PACKAGES = 'pidgin' - MULTIARCH = 'true' - CI = 'true' diff --git a/readme-vars.yml b/readme-vars.yml index fa6a740..4417bbd 100644 --- a/readme-vars.yml +++ b/readme-vars.yml @@ -123,6 +123,7 @@ init_diagram: | "pidgin:latest" <- Base Images # changelog changelogs: + - {date: "28.12.25:", desc: "Add Wayland init logic, rebase to Alpine 3.23."} - {date: "12.07.25:", desc: "Rebase to Selkies and Alpine 3.22, HTTPS IS NOW REQUIRED."} - {date: "06.12.24:", desc: "Rebase to Alpine 3.21."} - {date: "23.05.24:", desc: "Rebase to Alpine 3.20."} diff --git a/root/defaults/autostart_wayland b/root/defaults/autostart_wayland new file mode 100755 index 0000000..05af7b0 --- /dev/null +++ b/root/defaults/autostart_wayland @@ -0,0 +1 @@ +pidgin diff --git a/root/defaults/menu_wayland.xml b/root/defaults/menu_wayland.xml new file mode 100644 index 0000000..5850e42 --- /dev/null +++ b/root/defaults/menu_wayland.xml @@ -0,0 +1,8 @@ + + + +/usr/bin/pidgin +/usr/bin/foot +/usr/bin/firefox + +