linuxserver / docker-baseimage-kasmvnc

Base Images for remote web based Linux desktops using KasmVNC for many popular distros.
GNU General Public License v3.0
282 stars 48 forks source link

Debian add lang support and updates for 115 release #39

Closed thelamer closed 6 months ago

thelamer commented 6 months ago

This bumps to the current KasmVNC release and adds language support to all images based on these with LC_ALL. Previously the images were installing lang support for packages but logic was stashed at https://github.com/linuxserver/docker-mods/tree/universal-internationalization as a mod. The additions are minimal from a size standpoint adding the emoji font, core noto font, and generating locales in the base image. This does not add huge fonts for stuff like Chinese/Japanese/Korean those would still need to be added via a package mod if a user needed support.

This adds a large feature of multi monitor support which has been tested across all flavors (Displays in the menu), try it here:

docker run --rm -it --shm-size="1gb" -e LC_ALL=ru_RU.UTF-8 -p 3000:3000  taisun/random-images:debian-kde-demo bash

The PRs are focused on the current active branches:

ubuntujammy master (alpine319) debianbookworm fedora39 arch

The remaining branches will get sunsetted when I can confirm we are not using them anywhere and in the mean time receive package updates only. This will take time to waterfall to active repos using this base but some I will kick off manually post merge like webtop.

LinuxServer-CI commented 6 months ago
I am a bot, here are the test results for this PR: https://ci-tests.linuxserver.io/lspipepr/kasmvnc-base/debianbookworm-37cf15f5-pkg-37cf15f5-dev-45bf1efe3f71c22305b76b52c3fcebb09e666fed-pr-39/index.html https://ci-tests.linuxserver.io/lspipepr/kasmvnc-base/debianbookworm-37cf15f5-pkg-37cf15f5-dev-45bf1efe3f71c22305b76b52c3fcebb09e666fed-pr-39/shellcheck-result.xml Tag Passed
amd64-debianbookworm-37cf15f5-pkg-37cf15f5-dev-45bf1efe3f71c22305b76b52c3fcebb09e666fed-pr-39
arm64v8-debianbookworm-37cf15f5-pkg-37cf15f5-dev-45bf1efe3f71c22305b76b52c3fcebb09e666fed-pr-39
remcoros commented 6 months ago

Hi @thelamer I just noticed a size increase of ~140mb of the compressed image I'm building due to these changes. The installed size of "locales-all" is ~227mb alone. Was this expected? since you mention ,The additions are minimal from a size standpoint'

ty!

thelamer commented 6 months ago

So minimal is relative. At LSIO we conventionally go bare bones on all base images allowing users to leverage mods to get what they need and providing developers with the good starting point. The issue with these kasmvnc base images is previous to this merge we already made large tradeoffs like /kasmbins and a half implemented lang support via modified package rules. After the webui got expanded translations with browser detection with IME mode and Kasm baked in native support for automatically setting a users native language on workspace launch (keep in mind we maintain an image registry for their platform) users were stumbling to actually put the pieces together as reflected with just my personal anecdotal experience of providing support for non English speakers. When building docker containers locales support is low hanging fruit and an easy win for space, but when approaching it from where I am at now in my open source career I now understand the importance of not shutting 80% of the world out of your platform and have dedicated quite a bit of my time to ensuring that someone that does not speak English can use a Linux desktop and it's great library of software. For the most part the teams that maintain everything we ingest have done an amazing job translating all of their software in the desktop space (server space is lacking) and I feel this is too important to rip out. Previous to this change this mod was the solution for users https://github.com/linuxserver/docker-mods/tree/universal-internationalization it is a bit bulky and came with a learning curve for most people, a learning curve that would be insurmountable to get support for when you don't speak English.

With you maintaining a user facing application i would recommend trying to support non English speakers, but understand if you value image size as it is engrained in the docker credo. Unfortunately I do not have a magic bullet outside of what you are already doing with build stage to scratch copy. The only thing I can promise you is this will be the last bloat so creating new logic past this point to slim down this base image will not be necessary.

With that said we do a lot of stuff in this base image that is kitchen sink focused (install docker, kasmbins, video card drivers, install locales with packages, ffmpeg, noto fonts), it might be time to rip off the band aid and just use the build stage logic from this repo while making your own on top of that. From a bare minimum standpoint with just kasmvnc and kclient this base can be very small and the init related stuff will likely not be messed with.

remcoros commented 6 months ago

Thanks a lot for the explanation! I guess you already looked at what I'm working on. Using build stages and FROM scratch works great. ty!