diff --git a/Dockerfile b/Dockerfile index 782709a..11e19b8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,7 @@ FROM node:12-buster as wwwstage -ARG KASMWEB_RELEASE="9aca68d9fe343215096ec2af5be688fc55e0a73b" +ARG KASMWEB_RELEASE="2b7e3321ae81cff99510738c2ecee1bcd2853d9b" RUN \ echo "**** build clientside ****" && \ @@ -29,7 +29,7 @@ RUN \ FROM ghcr.io/linuxserver/baseimage-alpine:3.18 as buildstage -ARG KASMVNC_RELEASE="1.1.0" +ARG KASMVNC_RELEASE="v1.2.0" COPY --from=wwwstage /build-out /www @@ -236,7 +236,7 @@ FROM ghcr.io/linuxserver/baseimage-alpine:3.18 # set version label ARG BUILD_DATE ARG VERSION -ARG KASMBINS_RELEASE="1.13.0" +ARG KASMBINS_RELEASE="1.14.0" LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}" LABEL maintainer="thelamer" LABEL "com.kasmweb.image"="true" @@ -249,7 +249,7 @@ ENV DISPLAY=:1 \ HOME=/config \ START_DOCKER=true \ PULSE_RUNTIME_PATH=/defaults \ - NVIDIA_DRIVER_CAPABILITIES=${NVIDIA_DRIVER_CAPABILITIES:+$NVIDIA_DRIVER_CAPABILITIES,}graphics,compat32,utility + NVIDIA_DRIVER_CAPABILITIES=all # copy over build output COPY --from=nodebuilder /kclient /kclient @@ -260,6 +260,8 @@ RUN \ apk add --no-cache \ bash \ ca-certificates \ + cups \ + cups-client \ dbus-x11 \ docker \ docker-cli-compose \ @@ -313,6 +315,15 @@ RUN \ xkbcomp \ xkeyboard-config \ xterm && \ + apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing/ \ + cups-pdf && \ + echo "**** printer config ****" && \ + sed -i \ + "s:^#Out.*:Out /home/kasm-user/PDF:" \ + /etc/cups/cups-pdf.conf && \ + sed -i \ + 's/^SystemGroup .*/SystemGroup lpadmin root/' \ + /etc/cups/cups-files.conf && \ echo "**** filesystem setup ****" && \ ln -s /usr/local/share/kasmvnc /usr/share/kasmvnc && \ ln -s /usr/local/etc/kasmvnc /etc/kasmvnc && \ diff --git a/Dockerfile.aarch64 b/Dockerfile.aarch64 index 7574854..3c1aa1d 100644 --- a/Dockerfile.aarch64 +++ b/Dockerfile.aarch64 @@ -2,7 +2,7 @@ FROM node:12-buster as wwwstage -ARG KASMWEB_RELEASE="9aca68d9fe343215096ec2af5be688fc55e0a73b" +ARG KASMWEB_RELEASE="2b7e3321ae81cff99510738c2ecee1bcd2853d9b" RUN \ echo "**** install build deps ****" && \ @@ -34,7 +34,7 @@ RUN \ FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-3.18 as buildstage -ARG KASMVNC_RELEASE="1.1.0" +ARG KASMVNC_RELEASE="v1.2.0" COPY --from=wwwstage /build-out /www @@ -246,7 +246,7 @@ FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-3.18 # set version label ARG BUILD_DATE ARG VERSION -ARG KASMBINS_RELEASE="1.13.0" +ARG KASMBINS_RELEASE="1.14.0" LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}" LABEL maintainer="thelamer" LABEL "com.kasmweb.image"="true" @@ -259,7 +259,7 @@ ENV DISPLAY=:1 \ HOME=/config \ START_DOCKER=true \ PULSE_RUNTIME_PATH=/defaults \ - NVIDIA_DRIVER_CAPABILITIES=${NVIDIA_DRIVER_CAPABILITIES:+$NVIDIA_DRIVER_CAPABILITIES,}graphics,compat32,utility + NVIDIA_DRIVER_CAPABILITIES=all # copy over build output COPY --from=nodebuilder /kclient /kclient @@ -270,6 +270,8 @@ RUN \ apk add --no-cache \ bash \ ca-certificates \ + cups \ + cups-client \ dbus-x11 \ docker \ docker-cli-compose \ @@ -317,6 +319,15 @@ RUN \ xkbcomp \ xkeyboard-config \ xterm && \ + apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing/ \ + cups-pdf && \ + echo "**** printer config ****" && \ + sed -i \ + "s:^#Out.*:Out /home/kasm-user/PDF:" \ + /etc/cups/cups-pdf.conf && \ + sed -i \ + 's/^SystemGroup .*/SystemGroup lpadmin root/' \ + /etc/cups/cups-files.conf && \ echo "**** filesystem setup ****" && \ ln -s /usr/local/share/kasmvnc /usr/share/kasmvnc && \ ln -s /usr/local/etc/kasmvnc /etc/kasmvnc && \ diff --git a/README.md b/README.md index b500616..20e556b 100644 --- a/README.md +++ b/README.md @@ -158,6 +158,10 @@ This feature only supports **Open Source** GPU drivers: The `DRINODE` environment variable can be used to point to a specific GPU. Up to date information can be found [here](https://www.kasmweb.com/kasmvnc/docs/master/gpu_acceleration.html) +### Display Compositing (desktop effects) + +When using this image in tandem with a supported video card, compositing will function albeit with a performance hit when syncing the frames with pixmaps for the applications using it. This can greatly increase app compatibility if the application in question requires compositing, but requires a real GPU to be mounted into the container. By default we disable compositing at a DE level for performance reasons on our downstream images, but it can be enabled by the user and programs using compositing will still function even if the DE has it disabled in its settings. When building desktop images be sure you understand that with it enabled by default only users that have a compatible GPU mounted in will be able to use your image. + ## Lossless These images support all the native KasmVNC encoding methods including a true 24 bit RGB lossless mode using the [Quite OK Image Format](https://qoiformat.org/). This mode will use all the bandwidth you give it so just keep that in mind for remote sessions. This mode also might require special configuration depending on how you are accessing the container. Lossless will only work over http (default port 3000) on localhost, when accessing remotely or even over a local network you need to use https (default port 3001) to support [SharedArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer). This is needed to leverage a fast memory pipeline in the browser during the threaded WebAssembly based decoding. This can be enabled in the sidebar under settings>stream quality>lossless. diff --git a/readme-vars.yml b/readme-vars.yml index 9ad76b3..e7ee2d6 100644 --- a/readme-vars.yml +++ b/readme-vars.yml @@ -160,6 +160,10 @@ full_custom_readme: | The `DRINODE` environment variable can be used to point to a specific GPU. Up to date information can be found [here](https://www.kasmweb.com/kasmvnc/docs/master/gpu_acceleration.html) + + ### Display Compositing (desktop effects) + + When using this image in tandem with a supported video card, compositing will function albeit with a performance hit when syncing the frames with pixmaps for the applications using it. This can greatly increase app compatibility if the application in question requires compositing, but requires a real GPU to be mounted into the container. By default we disable compositing at a DE level for performance reasons on our downstream images, but it can be enabled by the user and programs using compositing will still function even if the DE has it disabled in its settings. When building desktop images be sure you understand that with it enabled by default only users that have a compatible GPU mounted in will be able to use your image. ## Lossless diff --git a/root/etc/cups/ppd/kasm.ppd b/root/etc/cups/ppd/kasm.ppd new file mode 100644 index 0000000..4e54c37 --- /dev/null +++ b/root/etc/cups/ppd/kasm.ppd @@ -0,0 +1,362 @@ +*PPD-Adobe: "4.3" +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "kasm.PPD" +*Manufacturer: "Kasm" +*Product: "(CUPS v1.1)" +*ModelName: "Kasm Virtual Printer" +*ShortNickName: "Kasm Virtual Printer" +*NickName: "Kasm Virtual Printer (no options)" +*1284DeviceID: "MFG:Kasm;MDL:Kasm Virtual Printer;DES:Kasm Virtual Printer Printer;CLS:PRINTER;CMD:POSTSCRIPT;" +*% cupsFilter: "application/vnd.cups-postscript 0 pstitleiconv" +*PSVersion: "(2017.000) 0" +*LanguageLevel: "2" +*ColorDevice: True +*DefaultColorSpace: RGB +*FileSystem: False +*Throughput: "8" +*LandscapeOrientation: Plus90 +*TTRasterizer: Type42 + +*HWMargins: 0 0 0 0 +*VariablePaperSize: True +*MaxMediaWidth: 100000 +*MaxMediaHeight: 100000 +*NonUIOrderDependency: 100 AnySetup *CustomPageSize +*CustomPageSize True: "pop pop pop +<>setpagedevice" +*End +*ParamCustomPageSize Width: 1 points 36 100000 +*ParamCustomPageSize Height: 2 points 36 100000 +*ParamCustomPageSize Orientation: 3 int 0 3 +*ParamCustomPageSize WidthOffset: 4 points 0 0 +*ParamCustomPageSize HeightOffset: 5 points 0 0 + +*OpenGroup: General/General + +*OpenUI *PageSize/Page Size: PickOne +*OrderDependency: 100 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize 11x14/11x14: "<>setpagedevice" +*PageSize 11x17/11x17: "<>setpagedevice" +*PageSize 13x19/13x19: "<>setpagedevice" +*PageSize 16x20/16x20: "<>setpagedevice" +*PageSize 16x24/16x24: "<>setpagedevice" +*PageSize 2A/2A: "<>setpagedevice" +*PageSize 4A/4A: "<>setpagedevice" +*PageSize 8x10/8x10: "<>setpagedevice" +*PageSize 8x12/8x12: "<>setpagedevice" +*PageSize A0/A0: "<>setpagedevice" +*PageSize A1/A1: "<>setpagedevice" +*PageSize A2/A2: "<>setpagedevice" +*PageSize A3/A3: "<>setpagedevice" +*PageSize A4/A4: "<>setpagedevice" +*PageSize A5/A5: "<>setpagedevice" +*PageSize AnsiA/ANSI A: "<>setpagedevice" +*PageSize AnsiB/ANSI B: "<>setpagedevice" +*PageSize AnsiC/ANSI C: "<>setpagedevice" +*PageSize AnsiD/ANSI D: "<>setpagedevice" +*PageSize AnsiE/ANSI E: "<>setpagedevice" +*PageSize ArchA/Arch A: "<>setpagedevice" +*PageSize ArchB/Arch B: "<>setpagedevice" +*PageSize ArchC/Arch C: "<>setpagedevice" +*PageSize ArchD/Arch D: "<>setpagedevice" +*PageSize ArchE/Arch E: "<>setpagedevice" +*PageSize C0/C0: "<>setpagedevice" +*PageSize C1/C1: "<>setpagedevice" +*PageSize C2/C2: "<>setpagedevice" +*PageSize C3/C3: "<>setpagedevice" +*PageSize C4/C4: "<>setpagedevice" +*PageSize C5/C5: "<>setpagedevice" +*PageSize Env10/Envelope #10: "<>setpagedevice" +*PageSize EnvC5/Envelope C5: "<>setpagedevice" +*PageSize EnvDL/Envelope DL: "<>setpagedevice" +*PageSize EnvMonarch/Envelope Monarch: "<>setpagedevice" +*PageSize Executive/Executive: "<>setpagedevice" +*PageSize ISOB0/B0 (ISO): "<>setpagedevice" +*PageSize ISOB1/B1 (ISO): "<>setpagedevice" +*PageSize ISOB2/B2 (ISO): "<>setpagedevice" +*PageSize ISOB3/B3 (ISO): "<>setpagedevice" +*PageSize ISOB4/B4 (ISO): "<>setpagedevice" +*PageSize ISOB5/B5 (ISO): "<>setpagedevice" +*PageSize JISB0/B0 (JIS): "<>setpagedevice" +*PageSize JISB1/B1 (JIS): "<>setpagedevice" +*PageSize JISB2/B2 (JIS): "<>setpagedevice" +*PageSize JISB3/B3 (JIS): "<>setpagedevice" +*PageSize JISB4/B4 (JIS): "<>setpagedevice" +*PageSize JISB5/B5 (JIS): "<>setpagedevice" +*PageSize Ledger/Ledger: "<>setpagedevice" +*PageSize Legal/US Legal: "<>setpagedevice" +*PageSize Letter/US Letter: "<>setpagedevice" +*PageSize RA0/RA0: "<>setpagedevice" +*PageSize RA1/RA1: "<>setpagedevice" +*PageSize RA2/RA2: "<>setpagedevice" +*PageSize RA3/RA3: "<>setpagedevice" +*PageSize RA4/RA4: "<>setpagedevice" +*PageSize SRA0/SRA0: "<>setpagedevice" +*PageSize SRA1/SRA1: "<>setpagedevice" +*PageSize SRA2/SRA2: "<>setpagedevice" +*PageSize SRA3/SRA3: "<>setpagedevice" +*PageSize SRA4/SRA4: "<>setpagedevice" +*PageSize SuperA/Super A: "<>setpagedevice" +*PageSize SuperB/Super B: "<>setpagedevice" +*PageSize TabloidExtra/Tabloid Extra: "<>setpagedevice" +*PageSize Tabloid/Tabloid: "<>setpagedevice" +*CloseUI: *PageSize + +*OpenUI *PageRegion: PickOne +*OrderDependency: 100 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion 11x14/11x14: "<>setpagedevice" +*PageRegion 11x17/11x17: "<>setpagedevice" +*PageRegion 13x19/13x19: "<>setpagedevice" +*PageRegion 16x20/16x20: "<>setpagedevice" +*PageRegion 16x24/16x24: "<>setpagedevice" +*PageRegion 2A/2A: "<>setpagedevice" +*PageRegion 4A/4A: "<>setpagedevice" +*PageRegion 8x10/8x10: "<>setpagedevice" +*PageRegion 8x12/8x12: "<>setpagedevice" +*PageRegion A0/A0: "<>setpagedevice" +*PageRegion A1/A1: "<>setpagedevice" +*PageRegion A2/A2: "<>setpagedevice" +*PageRegion A3/A3: "<>setpagedevice" +*PageRegion A4/A4: "<>setpagedevice" +*PageRegion A5/A5: "<>setpagedevice" +*PageRegion AnsiA/ANSI A: "<>setpagedevice" +*PageRegion AnsiB/ANSI B: "<>setpagedevice" +*PageRegion AnsiC/ANSI C: "<>setpagedevice" +*PageRegion AnsiD/ANSI D: "<>setpagedevice" +*PageRegion AnsiE/ANSI E: "<>setpagedevice" +*PageRegion ArchA/Arch A: "<>setpagedevice" +*PageRegion ArchB/Arch B: "<>setpagedevice" +*PageRegion ArchC/Arch C: "<>setpagedevice" +*PageRegion ArchD/Arch D: "<>setpagedevice" +*PageRegion ArchE/Arch E: "<>setpagedevice" +*PageRegion C0/C0: "<>setpagedevice" +*PageRegion C1/C1: "<>setpagedevice" +*PageRegion C2/C2: "<>setpagedevice" +*PageRegion C3/C3: "<>setpagedevice" +*PageRegion C4/C4: "<>setpagedevice" +*PageRegion C5/C5: "<>setpagedevice" +*PageRegion Env10/Envelope #10: "<>setpagedevice" +*PageRegion EnvC5/Envelope C5: "<>setpagedevice" +*PageRegion EnvDL/Envelope DL: "<>setpagedevice" +*PageRegion EnvMonarch/Envelope Monarch: "<>setpagedevice" +*PageRegion Executive/Executive: "<>setpagedevice" +*PageRegion ISOB0/B0 (ISO): "<>setpagedevice" +*PageRegion ISOB1/B1 (ISO): "<>setpagedevice" +*PageRegion ISOB2/B2 (ISO): "<>setpagedevice" +*PageRegion ISOB3/B3 (ISO): "<>setpagedevice" +*PageRegion ISOB4/B4 (ISO): "<>setpagedevice" +*PageRegion ISOB5/B5 (ISO): "<>setpagedevice" +*PageRegion JISB0/B0 (JIS): "<>setpagedevice" +*PageRegion JISB1/B1 (JIS): "<>setpagedevice" +*PageRegion JISB2/B2 (JIS): "<>setpagedevice" +*PageRegion JISB3/B3 (JIS): "<>setpagedevice" +*PageRegion JISB4/B4 (JIS): "<>setpagedevice" +*PageRegion JISB5/B5 (JIS): "<>setpagedevice" +*PageRegion Ledger/Ledger: "<>setpagedevice" +*PageRegion Legal/US Legal: "<>setpagedevice" +*PageRegion Letter/US Letter: "<>setpagedevice" +*PageRegion RA0/RA0: "<>setpagedevice" +*PageRegion RA1/RA1: "<>setpagedevice" +*PageRegion RA2/RA2: "<>setpagedevice" +*PageRegion RA3/RA3: "<>setpagedevice" +*PageRegion RA4/RA4: "<>setpagedevice" +*PageRegion SRA0/SRA0: "<>setpagedevice" +*PageRegion SRA1/SRA1: "<>setpagedevice" +*PageRegion SRA2/SRA2: "<>setpagedevice" +*PageRegion SRA3/SRA3: "<>setpagedevice" +*PageRegion SRA4/SRA4: "<>setpagedevice" +*PageRegion SuperA/Super A: "<>setpagedevice" +*PageRegion SuperB/Super B: "<>setpagedevice" +*PageRegion TabloidExtra/Tabloid Extra: "<>setpagedevice" +*PageRegion Tabloid/Tabloid: "<>setpagedevice" +*CloseUI: *PageRegion + +*DefaultImageableArea: Letter +*ImageableArea 11x14/11x14: "0 0 792 1008" +*ImageableArea 11x17/11x17: "0 0 792 1224" +*ImageableArea 13x19/13x19: "0 0 936 1368" +*ImageableArea 16x20/16x20: "0 0 1152 1440" +*ImageableArea 16x24/16x24: "0 0 1152 1728" +*ImageableArea 2A/2A: "0 0 3370 4768" +*ImageableArea 4A/4A: "0 0 4768 6749" +*ImageableArea 8x10/8x10: "0 0 576 720" +*ImageableArea 8x12/8x12: "0 0 576 864" +*ImageableArea A0/A0: "0 0 2384 3370" +*ImageableArea A1/A1: "0 0 1684 2384" +*ImageableArea A2/A2: "0 0 1191 1684" +*ImageableArea A3/A3: "0 0 842 1191" +*ImageableArea A4/A4: "0 0 595 842" +*ImageableArea A5/A5: "0 0 421 595" +*ImageableArea AnsiA/ANSI A: "0 0 612 792" +*ImageableArea AnsiB/ANSI B: "0 0 792 1224" +*ImageableArea AnsiC/ANSI C: "0 0 1224 1584" +*ImageableArea AnsiD/ANSI D: "0 0 1584 2448" +*ImageableArea AnsiE/ANSI E: "0 0 2448 3168" +*ImageableArea ArchA/Arch A: "0 0 648 864" +*ImageableArea ArchB/Arch B: "0 0 864 1296" +*ImageableArea ArchC/Arch C: "0 0 1296 1728" +*ImageableArea ArchD/Arch D: "0 0 1728 2592" +*ImageableArea ArchE/Arch E: "0 0 2592 3456" +*ImageableArea C0/C0: "0 0 2599 3676" +*ImageableArea C1/C1: "0 0 1836 2599" +*ImageableArea C2/C2: "0 0 1298 1836" +*ImageableArea C3/C3: "0 0 918 1298" +*ImageableArea C4/C4: "0 0 649 918" +*ImageableArea C5/C5: "0 0 459 649" +*ImageableArea Env10/Envelope #10: "0 0 297 684" +*ImageableArea EnvC5/Envelope C5: "0 0 459 649" +*ImageableArea EnvDL/Envelope DL: "0 0 312 624" +*ImageableArea EnvMonarch/Envelope Monarch: "0 0 279 540" +*ImageableArea Executive/Executive: "0 0 522 756" +*ImageableArea ISOB0/B0 (ISO): "0 0 2834 4008" +*ImageableArea ISOB1/B1 (ISO): "0 0 2004 2834" +*ImageableArea ISOB2/B2 (ISO): "0 0 1417 2004" +*ImageableArea ISOB3/B3 (ISO): "0 0 1000 1417" +*ImageableArea ISOB4/B4 (ISO): "0 0 708 1000" +*ImageableArea ISOB5/B5 (ISO): "0 0 498 708" +*ImageableArea JISB0/B0 (JIS): "0 0 2919 4127" +*ImageableArea JISB1/B1 (JIS): "0 0 2063 2919" +*ImageableArea JISB2/B2 (JIS): "0 0 1459 2063" +*ImageableArea JISB3/B3 (JIS): "0 0 1029 1459" +*ImageableArea JISB4/B4 (JIS): "0 0 727 1029" +*ImageableArea JISB5/B5 (JIS): "0 0 518 727" +*ImageableArea Ledger/Ledger: "0 0 1224 792" +*ImageableArea Legal/US Legal: "0 0 612 1008" +*ImageableArea Letter/US Letter: "0 0 612 792" +*ImageableArea RA0/RA0: "0 0 2437 3458" +*ImageableArea RA1/RA1: "0 0 1729 2437" +*ImageableArea RA2/RA2: "0 0 1218 1729" +*ImageableArea RA3/RA3: "0 0 864 1218" +*ImageableArea RA4/RA4: "0 0 609 864" +*ImageableArea SRA0/SRA0: "0 0 2551 3628" +*ImageableArea SRA1/SRA1: "0 0 1814 2551" +*ImageableArea SRA2/SRA2: "0 0 1275 1814" +*ImageableArea SRA3/SRA3: "0 0 907 1275" +*ImageableArea SRA4/SRA4: "0 0 637 907" +*ImageableArea SuperA/Super A: "0 0 644 1008" +*ImageableArea SuperB/Super B: "0 0 936 1368" +*ImageableArea TabloidExtra/Tabloid Extra: "0 0 864 1296" +*ImageableArea Tabloid/Tabloid: "0 0 792 1224" + +*DefaultPaperDimension: Letter +*PaperDimension 11x14/11x14: "792 1008" +*PaperDimension 11x17/11x17: "792 1224" +*PaperDimension 13x19/13x19: "936 1368" +*PaperDimension 16x20/16x20: "1152 1440" +*PaperDimension 16x24/16x24: "1152 1728" +*PaperDimension 2A/2A: "3370 4768" +*PaperDimension 4A/4A: "4768 6749" +*PaperDimension 8x10/8x10: "576 720" +*PaperDimension 8x12/8x12: "576 864" +*PaperDimension A0/A0: "2384 3370" +*PaperDimension A1/A1: "1684 2384" +*PaperDimension A2/A2: "1191 1684" +*PaperDimension A3/A3: "842 1191" +*PaperDimension A4/A4: "595 842" +*PaperDimension A5/A5: "421 595" +*PaperDimension AnsiA/ANSI A: "612 792" +*PaperDimension AnsiB/ANSI B: "792 1224" +*PaperDimension AnsiC/ANSI C: "1224 1584" +*PaperDimension AnsiD/ANSI D: "1584 2448" +*PaperDimension AnsiE/ANSI E: "2448 3168" +*PaperDimension ArchA/Arch A: "648 864" +*PaperDimension ArchB/Arch B: "864 1296" +*PaperDimension ArchC/Arch C: "1296 1728" +*PaperDimension ArchD/Arch D: "1728 2592" +*PaperDimension ArchE/Arch E: "2592 3456" +*PaperDimension C0/C0: "2599 3676" +*PaperDimension C1/C1: "1836 2599" +*PaperDimension C2/C2: "1298 1836" +*PaperDimension C3/C3: "918 1298" +*PaperDimension C4/C4: "649 918" +*PaperDimension C5/C5: "459 649" +*PaperDimension Env10/Envelope #10: "297 684" +*PaperDimension EnvC5/Envelope C5: "459 649" +*PaperDimension EnvDL/Envelope DL: "312 624" +*PaperDimension EnvMonarch/Envelope Monarch: "279 540" +*PaperDimension Executive/Executive: "522 756" +*PaperDimension ISOB0/B0 (ISO): "2834 4008" +*PaperDimension ISOB1/B1 (ISO): "2004 2834" +*PaperDimension ISOB2/B2 (ISO): "1417 2004" +*PaperDimension ISOB3/B3 (ISO): "1000 1417" +*PaperDimension ISOB4/B4 (ISO): "708 1000" +*PaperDimension ISOB5/B5 (ISO): "498 708" +*PaperDimension JISB0/B0 (JIS): "2919 4127" +*PaperDimension JISB1/B1 (JIS): "2063 2919" +*PaperDimension JISB2/B2 (JIS): "1459 2063" +*PaperDimension JISB3/B3 (JIS): "1029 1459" +*PaperDimension JISB4/B4 (JIS): "727 1029" +*PaperDimension JISB5/B5 (JIS): "518 727" +*PaperDimension Ledger/Ledger: "1224 792" +*PaperDimension Legal/US Legal: "612 1008" +*PaperDimension Letter/US Letter: "612 792" +*PaperDimension RA0/RA0: "2437 3458" +*PaperDimension RA1/RA1: "1729 2437" +*PaperDimension RA2/RA2: "1218 1729" +*PaperDimension RA3/RA3: "864 1218" +*PaperDimension RA4/RA4: "609 864" +*PaperDimension SRA0/SRA0: "2551 3628" +*PaperDimension SRA1/SRA1: "1814 2551" +*PaperDimension SRA2/SRA2: "1275 1814" +*PaperDimension SRA3/SRA3: "907 1275" +*PaperDimension SRA4/SRA4: "637 907" +*PaperDimension SuperA/Super A: "644 1008" +*PaperDimension SuperB/Super B: "936 1368" +*PaperDimension TabloidExtra/Tabloid Extra: "864 1296" +*PaperDimension Tabloid/Tabloid: "792 1224" + +*OpenUI *Resolution/Output Resolution: PickOne +*OrderDependency: 100 AnySetup *Resolution +*DefaultResolution: 2400dpi +*Resolution 150dpi/150 DPI: "<>setpagedevice" +*Resolution 300dpi/300 DPI: "<>setpagedevice" +*Resolution 600dpi/600 DPI: "<>setpagedevice" +*Resolution 1200dpi/1200 DPI: "<>setpagedevice" +*Resolution 2400dpi/2400 DPI: "<>setpagedevice" +*CloseUI: *Resolution + +*CloseGroup: General + +*DefaultFont: Courier +*Font AvantGarde-Book: Standard "(001.006S)" Standard ROM +*Font AvantGarde-BookOblique: Standard "(001.006S)" Standard ROM +*Font AvantGarde-Demi: Standard "(001.007S)" Standard ROM +*Font AvantGarde-DemiOblique: Standard "(001.007S)" Standard ROM +*Font Bookman-Demi: Standard "(001.004S)" Standard ROM +*Font Bookman-DemiItalic: Standard "(001.004S)" Standard ROM +*Font Bookman-Light: Standard "(001.004S)" Standard ROM +*Font Bookman-LightItalic: Standard "(001.004S)" Standard ROM +*Font Courier: Standard "(002.004S)" Standard ROM +*Font Courier-Bold: Standard "(002.004S)" Standard ROM +*Font Courier-BoldOblique: Standard "(002.004S)" Standard ROM +*Font Courier-Oblique: Standard "(002.004S)" Standard ROM +*Font Helvetica: Standard "(001.006S)" Standard ROM +*Font Helvetica-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow: Standard "(001.006S)" Standard ROM +*Font Helvetica-Narrow-Bold: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-BoldOblique: Standard "(001.007S)" Standard ROM +*Font Helvetica-Narrow-Oblique: Standard "(001.006S)" Standard ROM +*Font Helvetica-Oblique: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Bold: Standard "(001.009S)" Standard ROM +*Font NewCenturySchlbk-BoldItalic: Standard "(001.007S)" Standard ROM +*Font NewCenturySchlbk-Italic: Standard "(001.006S)" Standard ROM +*Font NewCenturySchlbk-Roman: Standard "(001.007S)" Standard ROM +*Font Palatino-Bold: Standard "(001.005S)" Standard ROM +*Font Palatino-BoldItalic: Standard "(001.005S)" Standard ROM +*Font Palatino-Italic: Standard "(001.005S)" Standard ROM +*Font Palatino-Roman: Standard "(001.005S)" Standard ROM +*Font Symbol: Special "(001.007S)" Special ROM +*Font Times-Bold: Standard "(001.007S)" Standard ROM +*Font Times-BoldItalic: Standard "(001.009S)" Standard ROM +*Font Times-Italic: Standard "(001.007S)" Standard ROM +*Font Times-Roman: Standard "(001.007S)" Standard ROM +*Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM +*Font ZapfDingbats: Special "(001.004S)" Standard ROM +*% +*% End of "$Id: postscript.ppd,v 1.1.1.1 2000/08/24 19:23:13 goffioul Exp $". diff --git a/root/etc/cups/start_cups.sh b/root/etc/cups/start_cups.sh new file mode 100755 index 0000000..8b19823 --- /dev/null +++ b/root/etc/cups/start_cups.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash +set -ex +{ + PRINTER_NAME=${KASM_PRINTER_NAME:-Kasm-Printer} + + echo "Starting cups" + # HACK: Some versions of cupsd cannot handle unlimited file descriptor limit + # that docker sets.. + ulimit -n 1024 &&/usr/sbin/cupsd -f & + until [[ "$(lpstat -r)" == "scheduler is running" ]]; do sleep 15; done + + echo "Creating a virtual printer: $PRINTER_NAME" + lpadmin -p $PRINTER_NAME -E -v cups-pdf:/ -P /etc/cups/ppd/kasm.ppd + lpadmin -p $PRINTER_NAME -o print-color-mode-default=color + + echo "Done!" +} 2>&1 | tee /tmp/start_cups.log diff --git a/root/kasminit b/root/kasminit index d37f93a..dc21574 100755 --- a/root/kasminit +++ b/root/kasminit @@ -92,7 +92,8 @@ vncserver $DISPLAY \ -DynamicQualityMin=4 \ -DynamicQualityMax=7 \ -DLP_ClipDelay=0 \ - -sslOnly + -sslOnly \ + -UnixRelay printer:/tmp/printer ## Microservice Init ## # Audio @@ -135,7 +136,18 @@ if [[ ${KASM_SVC_GAMEPAD:-1} == 1 ]]; then --cert ${HOME}/.vnc/self.pem \ --certkey ${HOME}/.vnc/self.pem & fi - +# Webcam +if [[ -e /dev/video0 ]]; then + /kasmbins/kasm_webcam_server \ + --port 4905 \ + --ssl \ + --cert ${HOME}/.vnc/self.pem \ + --certkey ${HOME}/.vnc/self.pem & +fi +# Printer +/kasmbins/kasm_printer_service \ + --directory $HOME/PDF \ + --relay /tmp/printer & # Show KasmVNC Logs tail -f $HOME/.vnc/*$DISPLAY.log