From ca4eedc0be743a49fa2be33cc61790e8aa2d9be6 Mon Sep 17 00:00:00 2001 From: Huan Truong Date: Wed, 4 Mar 2026 14:11:34 -0600 Subject: [PATCH] KASM-7900 Update OS Versions --- ci-scripts/template-vars.yaml | 53 ++++----- dockerfile-kasm-core | 2 +- docs/core-alpine-317/README.md | 7 -- docs/core-alpine-317/demo.txt | 9 -- docs/core-alpine-317/description.txt | 1 - docs/core-alpine-318/README.md | 7 -- docs/core-alpine-318/description.txt | 1 - docs/core-alpine-319/README.md | 7 -- docs/core-alpine-319/demo.txt | 9 -- docs/core-alpine-319/description.txt | 1 - docs/core-centos-7/README.md | 7 -- docs/core-centos-7/demo.txt | 9 -- docs/core-centos-7/description.txt | 1 - docs/core-fedora-37/README.md | 7 -- docs/core-fedora-37/demo.txt | 9 -- docs/core-fedora-37/description.txt | 1 - docs/core-fedora-38/README.md | 7 -- docs/core-fedora-38/demo.txt | 9 -- docs/core-fedora-38/description.txt | 1 - docs/core-fedora-39/README.md | 7 -- docs/core-fedora-39/demo.txt | 9 -- docs/core-fedora-39/description.txt | 1 - docs/core-opensuse-16/README.md | 7 ++ docs/core-opensuse-16/demo.txt | 9 ++ docs/core-opensuse-16/description.txt | 1 + docs/core-oracle-7/README.md | 7 -- docs/core-oracle-7/demo.txt | 9 -- docs/core-oracle-7/description.txt | 1 - docs/core-parrotos-6/demo.txt | 9 -- docs/core-parrotos-6/description.txt | 1 - .../README.md | 2 +- .../demo.txt | 2 +- docs/core-parrotos-7/description.txt | 1 + .../xfce-perchannel-xml/xfce4-desktop.xml | 108 ------------------ .../xfce-perchannel-xml/xfce4-panel.xml | 37 ------ .../xfconf/xfce-perchannel-xml/xfwm4.xml | 91 --------------- .../xfconf/xfce-perchannel-xml/xsettings.xml | 10 -- .../xfce-perchannel-xml/xfce4-desktop.xml | 108 ------------------ .../xfce-perchannel-xml/xfce4-panel.xml | 37 ------ .../xfconf/xfce-perchannel-xml/xfwm4.xml | 91 --------------- .../xfconf/xfce-perchannel-xml/xsettings.xml | 10 -- .../xfce-perchannel-xml/xfce4-desktop.xml | 108 ------------------ .../xfce-perchannel-xml/xfce4-panel.xml | 37 ------ .../xfconf/xfce-perchannel-xml/xfwm4.xml | 91 --------------- .../xfconf/xfce-perchannel-xml/xsettings.xml | 10 -- .../xfce-perchannel-xml/xfce4-desktop.xml | 108 ------------------ .../xfce-perchannel-xml/xfce4-panel.xml | 37 ------ .../xfconf/xfce-perchannel-xml/xfwm4.xml | 91 --------------- .../xfconf/xfce-perchannel-xml/xsettings.xml | 10 -- .../xfce-perchannel-xml/xfce4-desktop.xml | 108 ------------------ .../xfce-perchannel-xml/xfce4-panel.xml | 37 ------ .../xfconf/xfce-perchannel-xml/xfwm4.xml | 91 --------------- .../xfconf/xfce-perchannel-xml/xsettings.xml | 10 -- src/oracle7/xfce/.config/.blank | 0 .../xfce-perchannel-xml/xfce4-desktop.xml | 108 ------------------ .../xfce-perchannel-xml/xfce4-panel.xml | 59 ---------- .../xfconf/xfce-perchannel-xml/xsettings.xml | 38 ------ src/oracle8/xfce/.config/.blank | 0 .../xfce/.config/xfce4/fedora-logo-icon.png | Bin 61387 -> 0 bytes .../xfce4-desktop.xml | 62 ---------- .../xfce4-keyboard-shortcuts.xml | 93 --------------- .../xfwm4.xml | 83 -------------- .../xfce-perchannel-xml/xfce4-desktop.xml | 108 ------------------ .../xfce-perchannel-xml/xfce4-panel.xml | 59 ---------- .../xfce-perchannel-xml/xfce4-screensaver.xml | 8 -- .../xfconf/xfce-perchannel-xml/xfwm4.xml | 91 --------------- .../xfconf/xfce-perchannel-xml/xsettings.xml | 38 ------ .../panel/launcher-10/17053571248.desktop | 0 .../panel/launcher-9/17053568355.desktop | 0 .../panel/launcher-9/17053568406.desktop | 0 .../xfce/.config/xfce4/panel/whiskermenu-4.rc | 0 .../xfce-perchannel-xml/xfce4-desktop.xml | 0 .../xfce-perchannel-xml/xfce4-panel.xml | 0 .../xfconf/xfce-perchannel-xml/xsettings.xml | 0 src/ubuntu/install/audio/install_audio.sh | 32 +----- src/ubuntu/install/cleanup/cleanup.sh | 6 +- .../install/fonts/install_custom_fonts.sh | 32 ++---- .../install/kasm_vnc/install_kasm_vnc.sh | 88 +++++--------- src/ubuntu/install/kde/install_kde.sh | 20 +--- src/ubuntu/install/openbox/install_openbox.sh | 22 +--- .../install/package_rules/package_rules.sh | 12 +- src/ubuntu/install/printer/install_printer.sh | 4 +- .../profile_sync/install_profile_sync.sh | 8 +- .../install/smartcard/install_smartcard.sh | 4 +- .../install/squid/install/install_squid.sh | 12 +- .../install/squid/resources/start_squid.sh | 14 +-- src/ubuntu/install/sysbox/install_systemd.sh | 4 +- src/ubuntu/install/tools/install_tools.sh | 8 +- src/ubuntu/install/xfce/install_xfce_ui.sh | 22 +--- 89 files changed, 123 insertions(+), 2356 deletions(-) delete mode 100644 docs/core-alpine-317/README.md delete mode 100644 docs/core-alpine-317/demo.txt delete mode 100644 docs/core-alpine-317/description.txt delete mode 100644 docs/core-alpine-318/README.md delete mode 100644 docs/core-alpine-318/description.txt delete mode 100644 docs/core-alpine-319/README.md delete mode 100644 docs/core-alpine-319/demo.txt delete mode 100644 docs/core-alpine-319/description.txt delete mode 100644 docs/core-centos-7/README.md delete mode 100644 docs/core-centos-7/demo.txt delete mode 100644 docs/core-centos-7/description.txt delete mode 100644 docs/core-fedora-37/README.md delete mode 100644 docs/core-fedora-37/demo.txt delete mode 100644 docs/core-fedora-37/description.txt delete mode 100644 docs/core-fedora-38/README.md delete mode 100644 docs/core-fedora-38/demo.txt delete mode 100644 docs/core-fedora-38/description.txt delete mode 100644 docs/core-fedora-39/README.md delete mode 100644 docs/core-fedora-39/demo.txt delete mode 100644 docs/core-fedora-39/description.txt create mode 100644 docs/core-opensuse-16/README.md create mode 100644 docs/core-opensuse-16/demo.txt create mode 100644 docs/core-opensuse-16/description.txt delete mode 100644 docs/core-oracle-7/README.md delete mode 100644 docs/core-oracle-7/demo.txt delete mode 100644 docs/core-oracle-7/description.txt delete mode 100644 docs/core-parrotos-6/demo.txt delete mode 100644 docs/core-parrotos-6/description.txt rename docs/{core-parrotos-6 => core-parrotos-7}/README.md (76%) rename docs/{core-alpine-318 => core-parrotos-7}/demo.txt (81%) create mode 100644 docs/core-parrotos-7/description.txt delete mode 100644 src/fedora37/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml delete mode 100644 src/fedora37/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml delete mode 100644 src/fedora37/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml delete mode 100644 src/fedora37/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml delete mode 100644 src/fedora38/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml delete mode 100644 src/fedora38/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml delete mode 100644 src/fedora38/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml delete mode 100644 src/fedora38/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml delete mode 100644 src/fedora39/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml delete mode 100644 src/fedora39/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml delete mode 100644 src/fedora39/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml delete mode 100644 src/fedora39/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml delete mode 100644 src/fedora40/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml delete mode 100644 src/fedora40/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml delete mode 100644 src/fedora40/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml delete mode 100644 src/fedora40/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml delete mode 100644 src/fedora41/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml delete mode 100644 src/fedora41/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml delete mode 100644 src/fedora41/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml delete mode 100644 src/fedora41/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml delete mode 100644 src/oracle7/xfce/.config/.blank delete mode 100644 src/oracle7/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml delete mode 100644 src/oracle7/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml delete mode 100644 src/oracle7/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml delete mode 100644 src/oracle8/xfce/.config/.blank delete mode 100644 src/oracle8/xfce/.config/xfce4/fedora-logo-icon.png delete mode 100644 src/oracle8/xfce/.config/xfce4/xfconf/single-application-xfce-perchannel-xml/xfce4-desktop.xml delete mode 100644 src/oracle8/xfce/.config/xfce4/xfconf/single-application-xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml delete mode 100644 src/oracle8/xfce/.config/xfce4/xfconf/single-application-xfce-perchannel-xml/xfwm4.xml delete mode 100644 src/oracle8/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml delete mode 100644 src/oracle8/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml delete mode 100644 src/oracle8/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-screensaver.xml delete mode 100644 src/oracle8/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml delete mode 100644 src/oracle8/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml rename src/{parrotos6 => parrotos7}/xfce/.config/xfce4/panel/launcher-10/17053571248.desktop (100%) rename src/{parrotos6 => parrotos7}/xfce/.config/xfce4/panel/launcher-9/17053568355.desktop (100%) rename src/{parrotos6 => parrotos7}/xfce/.config/xfce4/panel/launcher-9/17053568406.desktop (100%) rename src/{parrotos6 => parrotos7}/xfce/.config/xfce4/panel/whiskermenu-4.rc (100%) rename src/{parrotos6 => parrotos7}/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml (100%) rename src/{parrotos6 => parrotos7}/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml (100%) rename src/{parrotos6 => parrotos7}/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml (100%) diff --git a/ci-scripts/template-vars.yaml b/ci-scripts/template-vars.yaml index b393b47..fb037d7 100644 --- a/ci-scripts/template-vars.yaml +++ b/ci-scripts/template-vars.yaml @@ -269,6 +269,21 @@ multiImages: - src/opensuse/xfce/.config/xfce4/xfconf/** - src/opensuse/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/** - src/ubuntu/sysbox/** + - name1: opensuse + name2: 16 + base: opensuse/leap:16.0 + bg: bg_opensuse.png + distro: opensuse + dockerfile: dockerfile-kasm-core-suse + changeFiles: + - dockerfile-kasm-core-suse + - src/opensuse/** + - src/opensuse/xfce/** + - src/opensuse/xfce/.config/** + - src/opensuse/xfce/.config/xfce4/** + - src/opensuse/xfce/.config/xfce4/xfconf/** + - src/opensuse/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/** + - src/ubuntu/sysbox/** - name1: fedora name2: 42 base: fedora:42 @@ -298,46 +313,18 @@ multiImages: - src/fedora43/xfce/.config/xfce4/xfconf/** - src/fedora43/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/** - name1: parrotos - name2: 6 - base: parrotsec/core:6 + name2: 7 + base: parrotsec/core:7.1 bg: bg_parrotos6.jpg - distro: parrotos6 + distro: parrotos7 dockerfile: dockerfile-kasm-core changeFiles: - dockerfile-kasm-core - - src/parrotos6/** + - src/parrotos7/** - src/ubuntu/nvidia/** - src/ubuntu/sysbox/** - src/ubuntu/virtualgl/** - - src/parrotos6/** - - name1: alpine - name2: 319 - base: alpine:3.19 - bg: bg_alpine.png - distro: alpine - dockerfile: dockerfile-kasm-core-alpine - changeFiles: - - dockerfile-kasm-core-alpine - - src/alpine/** - - src/alpine/xfce/** - - src/alpine/xfce/.config/** - - src/alpine/xfce/.config/xfce4/** - - src/alpine/xfce/.config/xfce4/xfconf/** - - src/alpine/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/** - - name1: alpine - name2: 320 - base: alpine:3.20 - bg: bg_alpine.png - distro: alpine - dockerfile: dockerfile-kasm-core-alpine - changeFiles: - - dockerfile-kasm-core-alpine - - src/alpine/** - - src/alpine/xfce/** - - src/alpine/xfce/.config/** - - src/alpine/xfce/.config/xfce4/** - - src/alpine/xfce/.config/xfce4/xfconf/** - - src/alpine/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/** + - src/parrotos7/** - name1: alpine name2: 321 base: alpine:3.21 diff --git a/dockerfile-kasm-core b/dockerfile-kasm-core index 74e5dd0..eb77395 100644 --- a/dockerfile-kasm-core +++ b/dockerfile-kasm-core @@ -1,5 +1,5 @@ #### Build Stage #### -ARG BASE_IMAGE="ubuntu:20.04" +ARG BASE_IMAGE="ubuntu:24.04" FROM $BASE_IMAGE AS base_layer ### Environment config diff --git a/docs/core-alpine-317/README.md b/docs/core-alpine-317/README.md deleted file mode 100644 index b88a25b..0000000 --- a/docs/core-alpine-317/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# About This Image - -This image contains a browser-accessible version of Alpine 3.17. - -![Screenshot][Image_Screenshot] - -[Image_Screenshot]: https://5856039.fs1.hubspotusercontent-na1.net/hubfs/5856039/dockerhub/image-screenshots/alpine-317-core.png "Image Screenshot" diff --git a/docs/core-alpine-317/demo.txt b/docs/core-alpine-317/demo.txt deleted file mode 100644 index bbd1f8e..0000000 --- a/docs/core-alpine-317/demo.txt +++ /dev/null @@ -1,9 +0,0 @@ -# Live Demo - -**Launch a real-time demo in a new browser window:** Live Demo. - - - -∗*This demo links to a Jammy Desktop image to show the basic functionality of Kasm Workspaces.* - -∗*Note: Demo is limited to 3 minutes and has upload/downloads restricted for security purposes.* diff --git a/docs/core-alpine-317/description.txt b/docs/core-alpine-317/description.txt deleted file mode 100644 index a0b5a2e..0000000 --- a/docs/core-alpine-317/description.txt +++ /dev/null @@ -1 +0,0 @@ -Alpine 3.17 base image for Kasm Workspaces diff --git a/docs/core-alpine-318/README.md b/docs/core-alpine-318/README.md deleted file mode 100644 index 7cb47a0..0000000 --- a/docs/core-alpine-318/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# About This Image - -This image contains a browser-accessible version of Alpine 3.18. - -![Screenshot][Image_Screenshot] - -[Image_Screenshot]: https://5856039.fs1.hubspotusercontent-na1.net/hubfs/5856039/dockerhub/image-screenshots/alpine-317-core.png "Image Screenshot" diff --git a/docs/core-alpine-318/description.txt b/docs/core-alpine-318/description.txt deleted file mode 100644 index 7185724..0000000 --- a/docs/core-alpine-318/description.txt +++ /dev/null @@ -1 +0,0 @@ -Alpine 3.18 base image for Kasm Workspaces diff --git a/docs/core-alpine-319/README.md b/docs/core-alpine-319/README.md deleted file mode 100644 index 05609a3..0000000 --- a/docs/core-alpine-319/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# About This Image - -This image contains a browser-accessible version of Alpine 3.19. - -![Screenshot][Image_Screenshot] - -[Image_Screenshot]: https://5856039.fs1.hubspotusercontent-na1.net/hubfs/5856039/dockerhub/image-screenshots/alpine-317-core.png "Image Screenshot" diff --git a/docs/core-alpine-319/demo.txt b/docs/core-alpine-319/demo.txt deleted file mode 100644 index bbd1f8e..0000000 --- a/docs/core-alpine-319/demo.txt +++ /dev/null @@ -1,9 +0,0 @@ -# Live Demo - -**Launch a real-time demo in a new browser window:** Live Demo. - - - -∗*This demo links to a Jammy Desktop image to show the basic functionality of Kasm Workspaces.* - -∗*Note: Demo is limited to 3 minutes and has upload/downloads restricted for security purposes.* diff --git a/docs/core-alpine-319/description.txt b/docs/core-alpine-319/description.txt deleted file mode 100644 index c15ac3e..0000000 --- a/docs/core-alpine-319/description.txt +++ /dev/null @@ -1 +0,0 @@ -Alpine 3.19 base image for Kasm Workspaces diff --git a/docs/core-centos-7/README.md b/docs/core-centos-7/README.md deleted file mode 100644 index 8176b6b..0000000 --- a/docs/core-centos-7/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# About This Image - -This Image contains a browser-accessible CentOS 7 with XFCE desktop environment. - -![Screenshot][Image_Screenshot] - -[Image_Screenshot]: https://f.hubspotusercontent30.net/hubfs/5856039/dockerhub/image-screenshots/core-centos-7.png "Image Screenshot" \ No newline at end of file diff --git a/docs/core-centos-7/demo.txt b/docs/core-centos-7/demo.txt deleted file mode 100644 index 0ab2276..0000000 --- a/docs/core-centos-7/demo.txt +++ /dev/null @@ -1,9 +0,0 @@ -# Live Demo - -**Launch a real-time demo in a new browser window:** Live Demo. - - - -∗*This demo links to a Centos Desktop image to show the basic functionality of Kasm Workspaces.* - -∗*Note: Demo is limited to 3 minutes and has upload/downloads restricted for security purposes.* diff --git a/docs/core-centos-7/description.txt b/docs/core-centos-7/description.txt deleted file mode 100644 index f341af3..0000000 --- a/docs/core-centos-7/description.txt +++ /dev/null @@ -1 +0,0 @@ -CentOS 7 base image for Kasm Workspaces \ No newline at end of file diff --git a/docs/core-fedora-37/README.md b/docs/core-fedora-37/README.md deleted file mode 100644 index 833a608..0000000 --- a/docs/core-fedora-37/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# About This Image - -This image contains a browser-accessible version of Fedora 37. - -![Screenshot][Image_Screenshot] - -[Image_Screenshot]: https://info.kasmweb.com/hubfs/dockerhub/fedora-37-core.png "Image Screenshot" diff --git a/docs/core-fedora-37/demo.txt b/docs/core-fedora-37/demo.txt deleted file mode 100644 index bbd1f8e..0000000 --- a/docs/core-fedora-37/demo.txt +++ /dev/null @@ -1,9 +0,0 @@ -# Live Demo - -**Launch a real-time demo in a new browser window:** Live Demo. - - - -∗*This demo links to a Jammy Desktop image to show the basic functionality of Kasm Workspaces.* - -∗*Note: Demo is limited to 3 minutes and has upload/downloads restricted for security purposes.* diff --git a/docs/core-fedora-37/description.txt b/docs/core-fedora-37/description.txt deleted file mode 100644 index 2a66ebd..0000000 --- a/docs/core-fedora-37/description.txt +++ /dev/null @@ -1 +0,0 @@ -Fedora 37 base image for Kasm Workspaces diff --git a/docs/core-fedora-38/README.md b/docs/core-fedora-38/README.md deleted file mode 100644 index 3009d68..0000000 --- a/docs/core-fedora-38/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# About This Image - -This image contains a browser-accessible version of Fedora 38. - -![Screenshot][Image_Screenshot] - -[Image_Screenshot]: https://info.kasmweb.com/hubfs/dockerhub/fedora-37-core.png "Image Screenshot" diff --git a/docs/core-fedora-38/demo.txt b/docs/core-fedora-38/demo.txt deleted file mode 100644 index bbd1f8e..0000000 --- a/docs/core-fedora-38/demo.txt +++ /dev/null @@ -1,9 +0,0 @@ -# Live Demo - -**Launch a real-time demo in a new browser window:** Live Demo. - - - -∗*This demo links to a Jammy Desktop image to show the basic functionality of Kasm Workspaces.* - -∗*Note: Demo is limited to 3 minutes and has upload/downloads restricted for security purposes.* diff --git a/docs/core-fedora-38/description.txt b/docs/core-fedora-38/description.txt deleted file mode 100644 index eb5c0fa..0000000 --- a/docs/core-fedora-38/description.txt +++ /dev/null @@ -1 +0,0 @@ -Fedora 38 base image for Kasm Workspaces diff --git a/docs/core-fedora-39/README.md b/docs/core-fedora-39/README.md deleted file mode 100644 index 3310920..0000000 --- a/docs/core-fedora-39/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# About This Image - -This image contains a browser-accessible version of Fedora 39. - -![Screenshot][Image_Screenshot] - -[Image_Screenshot]: https://info.kasmweb.com/hubfs/dockerhub/fedora-37-core.png "Image Screenshot" diff --git a/docs/core-fedora-39/demo.txt b/docs/core-fedora-39/demo.txt deleted file mode 100644 index bbd1f8e..0000000 --- a/docs/core-fedora-39/demo.txt +++ /dev/null @@ -1,9 +0,0 @@ -# Live Demo - -**Launch a real-time demo in a new browser window:** Live Demo. - - - -∗*This demo links to a Jammy Desktop image to show the basic functionality of Kasm Workspaces.* - -∗*Note: Demo is limited to 3 minutes and has upload/downloads restricted for security purposes.* diff --git a/docs/core-fedora-39/description.txt b/docs/core-fedora-39/description.txt deleted file mode 100644 index 8e591e4..0000000 --- a/docs/core-fedora-39/description.txt +++ /dev/null @@ -1 +0,0 @@ -Fedora 39 base image for Kasm Workspaces diff --git a/docs/core-opensuse-16/README.md b/docs/core-opensuse-16/README.md new file mode 100644 index 0000000..39c43cf --- /dev/null +++ b/docs/core-opensuse-16/README.md @@ -0,0 +1,7 @@ +# About This Image + +This Image contains a browser-accessible openSUSE Leap 16 with XFCE desktop environment. + +![Screenshot][Image_Screenshot] + +[Image_Screenshot]: https://5856039.fs1.hubspotusercontent-na1.net/hubfs/5856039/dockerhub/core-opensuse-15.png "Image Screenshot" diff --git a/docs/core-opensuse-16/demo.txt b/docs/core-opensuse-16/demo.txt new file mode 100644 index 0000000..34c60e4 --- /dev/null +++ b/docs/core-opensuse-16/demo.txt @@ -0,0 +1,9 @@ +# Live Demo + +**Launch a real-time demo in a new browser window:** Live Demo. + + + +∗*This demo links to a openSUSE Desktop image to show the basic functionality of Kasm Workspaces.* + +∗*Note: Demo is limited to 3 minutes and has upload/downloads restricted for security purposes.* diff --git a/docs/core-opensuse-16/description.txt b/docs/core-opensuse-16/description.txt new file mode 100644 index 0000000..1e1d2b0 --- /dev/null +++ b/docs/core-opensuse-16/description.txt @@ -0,0 +1 @@ +openSUSE Leap 16 base image for Kasm Workspaces diff --git a/docs/core-oracle-7/README.md b/docs/core-oracle-7/README.md deleted file mode 100644 index bcf704e..0000000 --- a/docs/core-oracle-7/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# About This Image - -This Image contains a browser-accessible Oracle Linux 7 with XFCE desktop environment. - -![Screenshot][Image_Screenshot] - -[Image_Screenshot]: https://5856039.fs1.hubspotusercontent-na1.net/hubfs/5856039/dockerhub/image-screenshots/core-oracle-7.png "Image Screenshot" diff --git a/docs/core-oracle-7/demo.txt b/docs/core-oracle-7/demo.txt deleted file mode 100644 index ce11e29..0000000 --- a/docs/core-oracle-7/demo.txt +++ /dev/null @@ -1,9 +0,0 @@ -# Live Demo - -**Launch a real-time demo in a new browser window:** Live Demo. - - - -∗*This demo is linked to Oracle Linux 8* - -∗*Note: Demo is limited to 3 minutes and has upload/downloads restricted for security purposes.* diff --git a/docs/core-oracle-7/description.txt b/docs/core-oracle-7/description.txt deleted file mode 100644 index 7868a9a..0000000 --- a/docs/core-oracle-7/description.txt +++ /dev/null @@ -1 +0,0 @@ -Oracle Linux 7 base image for Kasm Workspaces diff --git a/docs/core-parrotos-6/demo.txt b/docs/core-parrotos-6/demo.txt deleted file mode 100644 index bbd1f8e..0000000 --- a/docs/core-parrotos-6/demo.txt +++ /dev/null @@ -1,9 +0,0 @@ -# Live Demo - -**Launch a real-time demo in a new browser window:** Live Demo. - - - -∗*This demo links to a Jammy Desktop image to show the basic functionality of Kasm Workspaces.* - -∗*Note: Demo is limited to 3 minutes and has upload/downloads restricted for security purposes.* diff --git a/docs/core-parrotos-6/description.txt b/docs/core-parrotos-6/description.txt deleted file mode 100644 index c1634d3..0000000 --- a/docs/core-parrotos-6/description.txt +++ /dev/null @@ -1 +0,0 @@ -Parrot OS 6 base image for Kasm Workspaces diff --git a/docs/core-parrotos-6/README.md b/docs/core-parrotos-7/README.md similarity index 76% rename from docs/core-parrotos-6/README.md rename to docs/core-parrotos-7/README.md index c98ac94..fe04103 100644 --- a/docs/core-parrotos-6/README.md +++ b/docs/core-parrotos-7/README.md @@ -1,6 +1,6 @@ # About This Image -This image contains a browser-accessible version of Parrot OS 6. +This image contains a browser-accessible version of Parrot OS 7. ![Screenshot][Image_Screenshot] diff --git a/docs/core-alpine-318/demo.txt b/docs/core-parrotos-7/demo.txt similarity index 81% rename from docs/core-alpine-318/demo.txt rename to docs/core-parrotos-7/demo.txt index bbd1f8e..b4e76b3 100644 --- a/docs/core-alpine-318/demo.txt +++ b/docs/core-parrotos-7/demo.txt @@ -4,6 +4,6 @@ -∗*This demo links to a Jammy Desktop image to show the basic functionality of Kasm Workspaces.* +∗*This demo links to a ParrotOS Desktop image to show the basic functionality of Kasm Workspaces.* ∗*Note: Demo is limited to 3 minutes and has upload/downloads restricted for security purposes.* diff --git a/docs/core-parrotos-7/description.txt b/docs/core-parrotos-7/description.txt new file mode 100644 index 0000000..3c1e077 --- /dev/null +++ b/docs/core-parrotos-7/description.txt @@ -0,0 +1 @@ +Parrot OS 7 base image for Kasm Workspaces diff --git a/src/fedora37/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml b/src/fedora37/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml deleted file mode 100644 index a34dc3c..0000000 --- a/src/fedora37/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/fedora37/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml b/src/fedora37/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml deleted file mode 100644 index 690238f..0000000 --- a/src/fedora37/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/fedora37/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml b/src/fedora37/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml deleted file mode 100644 index ba3c831..0000000 --- a/src/fedora37/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/fedora37/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml b/src/fedora37/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml deleted file mode 100644 index d60e3c4..0000000 --- a/src/fedora37/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/src/fedora38/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml b/src/fedora38/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml deleted file mode 100644 index a34dc3c..0000000 --- a/src/fedora38/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/fedora38/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml b/src/fedora38/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml deleted file mode 100644 index 690238f..0000000 --- a/src/fedora38/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/fedora38/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml b/src/fedora38/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml deleted file mode 100644 index ba3c831..0000000 --- a/src/fedora38/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/fedora38/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml b/src/fedora38/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml deleted file mode 100644 index d60e3c4..0000000 --- a/src/fedora38/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/src/fedora39/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml b/src/fedora39/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml deleted file mode 100644 index a34dc3c..0000000 --- a/src/fedora39/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/fedora39/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml b/src/fedora39/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml deleted file mode 100644 index 690238f..0000000 --- a/src/fedora39/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/fedora39/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml b/src/fedora39/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml deleted file mode 100644 index ba3c831..0000000 --- a/src/fedora39/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/fedora39/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml b/src/fedora39/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml deleted file mode 100644 index d60e3c4..0000000 --- a/src/fedora39/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/src/fedora40/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml b/src/fedora40/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml deleted file mode 100644 index a34dc3c..0000000 --- a/src/fedora40/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/fedora40/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml b/src/fedora40/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml deleted file mode 100644 index 690238f..0000000 --- a/src/fedora40/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/fedora40/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml b/src/fedora40/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml deleted file mode 100644 index ba3c831..0000000 --- a/src/fedora40/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/fedora40/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml b/src/fedora40/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml deleted file mode 100644 index d60e3c4..0000000 --- a/src/fedora40/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/src/fedora41/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml b/src/fedora41/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml deleted file mode 100644 index a34dc3c..0000000 --- a/src/fedora41/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/fedora41/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml b/src/fedora41/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml deleted file mode 100644 index 690238f..0000000 --- a/src/fedora41/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/fedora41/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml b/src/fedora41/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml deleted file mode 100644 index ba3c831..0000000 --- a/src/fedora41/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/fedora41/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml b/src/fedora41/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml deleted file mode 100644 index d60e3c4..0000000 --- a/src/fedora41/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/src/oracle7/xfce/.config/.blank b/src/oracle7/xfce/.config/.blank deleted file mode 100644 index e69de29..0000000 diff --git a/src/oracle7/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml b/src/oracle7/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml deleted file mode 100644 index a34dc3c..0000000 --- a/src/oracle7/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/oracle7/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml b/src/oracle7/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml deleted file mode 100644 index 002092d..0000000 --- a/src/oracle7/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/oracle7/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml b/src/oracle7/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml deleted file mode 100644 index 8b83794..0000000 --- a/src/oracle7/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/oracle8/xfce/.config/.blank b/src/oracle8/xfce/.config/.blank deleted file mode 100644 index e69de29..0000000 diff --git a/src/oracle8/xfce/.config/xfce4/fedora-logo-icon.png b/src/oracle8/xfce/.config/xfce4/fedora-logo-icon.png deleted file mode 100644 index 92c82995ffc03684bd08f3daa31fc9048b8e63a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61387 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 hR;24CpYnypV+aV?vs68Igla*+OIcA}p<2!? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/oracle8/xfce/.config/xfce4/xfconf/single-application-xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml b/src/oracle8/xfce/.config/xfce4/xfconf/single-application-xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml deleted file mode 100644 index a3277e2..0000000 --- a/src/oracle8/xfce/.config/xfce4/xfconf/single-application-xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/oracle8/xfce/.config/xfce4/xfconf/single-application-xfce-perchannel-xml/xfwm4.xml b/src/oracle8/xfce/.config/xfce4/xfconf/single-application-xfce-perchannel-xml/xfwm4.xml deleted file mode 100644 index e82f0c6..0000000 --- a/src/oracle8/xfce/.config/xfce4/xfconf/single-application-xfce-perchannel-xml/xfwm4.xml +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/oracle8/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml b/src/oracle8/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml deleted file mode 100644 index a34dc3c..0000000 --- a/src/oracle8/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/oracle8/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml b/src/oracle8/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml deleted file mode 100644 index 34f01f3..0000000 --- a/src/oracle8/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/oracle8/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-screensaver.xml b/src/oracle8/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-screensaver.xml deleted file mode 100644 index a87af71..0000000 --- a/src/oracle8/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-screensaver.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/oracle8/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml b/src/oracle8/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml deleted file mode 100644 index ba3c831..0000000 --- a/src/oracle8/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/oracle8/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml b/src/oracle8/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml deleted file mode 100644 index 8b83794..0000000 --- a/src/oracle8/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/parrotos6/xfce/.config/xfce4/panel/launcher-10/17053571248.desktop b/src/parrotos7/xfce/.config/xfce4/panel/launcher-10/17053571248.desktop similarity index 100% rename from src/parrotos6/xfce/.config/xfce4/panel/launcher-10/17053571248.desktop rename to src/parrotos7/xfce/.config/xfce4/panel/launcher-10/17053571248.desktop diff --git a/src/parrotos6/xfce/.config/xfce4/panel/launcher-9/17053568355.desktop b/src/parrotos7/xfce/.config/xfce4/panel/launcher-9/17053568355.desktop similarity index 100% rename from src/parrotos6/xfce/.config/xfce4/panel/launcher-9/17053568355.desktop rename to src/parrotos7/xfce/.config/xfce4/panel/launcher-9/17053568355.desktop diff --git a/src/parrotos6/xfce/.config/xfce4/panel/launcher-9/17053568406.desktop b/src/parrotos7/xfce/.config/xfce4/panel/launcher-9/17053568406.desktop similarity index 100% rename from src/parrotos6/xfce/.config/xfce4/panel/launcher-9/17053568406.desktop rename to src/parrotos7/xfce/.config/xfce4/panel/launcher-9/17053568406.desktop diff --git a/src/parrotos6/xfce/.config/xfce4/panel/whiskermenu-4.rc b/src/parrotos7/xfce/.config/xfce4/panel/whiskermenu-4.rc similarity index 100% rename from src/parrotos6/xfce/.config/xfce4/panel/whiskermenu-4.rc rename to src/parrotos7/xfce/.config/xfce4/panel/whiskermenu-4.rc diff --git a/src/parrotos6/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml b/src/parrotos7/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml similarity index 100% rename from src/parrotos6/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml rename to src/parrotos7/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml diff --git a/src/parrotos6/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml b/src/parrotos7/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml similarity index 100% rename from src/parrotos6/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml rename to src/parrotos7/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml diff --git a/src/parrotos6/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml b/src/parrotos7/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml similarity index 100% rename from src/parrotos6/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml rename to src/parrotos7/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml diff --git a/src/ubuntu/install/audio/install_audio.sh b/src/ubuntu/install/audio/install_audio.sh index cd38ea9..04f2e37 100644 --- a/src/ubuntu/install/audio/install_audio.sh +++ b/src/ubuntu/install/audio/install_audio.sh @@ -4,13 +4,7 @@ set -ex ARCH=$(arch | sed 's/aarch64/arm64/g' | sed 's/x86_64/amd64/g') echo "Install Audio Requirements" -if [[ "${DISTRO}" == @(centos|oracle7) ]] ; then - yum install -y curl git - yum install -y epel-release - yum localinstall -y --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm - yum install -y ffmpeg pulseaudio-utils - sed -i '/Bluetooth/,+7d' /etc/pulse/default.pa -elif [ "${DISTRO}" == "oracle8" ]; then +if [ "${DISTRO}" == "oracle8" ]; then dnf install -y curl git dnf config-manager --set-enabled ol8_codeready_builder dnf localinstall -y --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm @@ -28,26 +22,6 @@ elif [[ "${DISTRO}" == @(rockylinux9|almalinux9) ]]; then elif [[ "${DISTRO}" == @(rockylinux8|almalinux8) ]]; then dnf localinstall -y --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm dnf install -y --allowerasing ffmpeg pulseaudio-utils pulseaudio -elif [ "${DISTRO}" == "fedora37" ]; then - dnf install -y curl git - dnf localinstall -y --nogpgcheck https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-37.noarch.rpm - dnf install -y --allowerasing ffmpeg pulseaudio pulseaudio-utils -elif [ "${DISTRO}" == "fedora38" ]; then - dnf install -y curl git - dnf localinstall -y --nogpgcheck https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-38.noarch.rpm - dnf install -y --allowerasing ffmpeg pulseaudio pulseaudio-utils -elif [ "${DISTRO}" == "fedora39" ]; then - dnf install -y curl git - dnf localinstall -y --nogpgcheck https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-39.noarch.rpm - dnf install -y --allowerasing ffmpeg pulseaudio pulseaudio-utils -elif [ "${DISTRO}" == "fedora40" ]; then - dnf install -y curl git - dnf localinstall -y --nogpgcheck https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-40.noarch.rpm - dnf install -y --allowerasing ffmpeg pulseaudio pulseaudio-utils -elif [ "${DISTRO}" == "fedora41" ]; then - dnf install -y curl git - dnf-3 localinstall -y --nogpgcheck https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-41.noarch.rpm - dnf install -y --allowerasing ffmpeg pulseaudio pulseaudio-utils elif [ "${DISTRO}" == "fedora42" ]; then dnf install -y curl git dnf-3 localinstall -y --nogpgcheck https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-42.noarch.rpm @@ -56,11 +30,11 @@ elif [ "${DISTRO}" == "fedora43" ]; then dnf install -y curl git dnf-3 localinstall -y --nogpgcheck https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-43.noarch.rpm dnf install -y --allowerasing ffmpeg pulseaudio pulseaudio-utils -elif [ "${DISTRO}" == "opensuse" ]; then +elif [ "${DISTRO}" == opensuse ]; then zypper install -ny curl git zypper install -yn ffmpeg pulseaudio-utils elif [ "${DISTRO}" == "alpine" ]; then - if grep -q v3.19 /etc/os-release || grep -q v3.20 /etc/os-release || grep -q v3.21 /etc/os-release; then + if grep -q v3.20 /etc/os-release || grep -q v3.21 /etc/os-release; then apk add --no-cache \ ffmpeg \ ffplay \ diff --git a/src/ubuntu/install/cleanup/cleanup.sh b/src/ubuntu/install/cleanup/cleanup.sh index f2e5ee0..42b273f 100644 --- a/src/ubuntu/install/cleanup/cleanup.sh +++ b/src/ubuntu/install/cleanup/cleanup.sh @@ -2,13 +2,11 @@ set -ex # Distro package cleanup -if [[ "${DISTRO}" == @(centos|oracle7) ]] ; then - yum clean all -elif [[ "${DISTRO}" == @(almalinux8|almalinux9|fedora37|fedora38|fedora39|fedora40|fedora41|oracle8|oracle9|rhel9|rockylinux8|rockylinux9) ]]; then +if [[ "${DISTRO}" == @(almalinux8|almalinux9|fedora42|fedora43|oracle8|oracle9|rhel9|rockylinux8|rockylinux9) ]]; then dnf clean all elif [ "${DISTRO}" == "opensuse" ]; then zypper clean --all -elif [[ "${DISTRO}" == @(debian|kali|parrotos6|ubuntu) ]]; then +elif [[ "${DISTRO}" == @(debian|kali|parrotos7|ubuntu) ]]; then # Uninstall unneccesary/vulnerable packages dpkg --purge ipp-usb #KASM-5266 apt-get autoremove -y diff --git a/src/ubuntu/install/fonts/install_custom_fonts.sh b/src/ubuntu/install/fonts/install_custom_fonts.sh index 3bed68d..af1e788 100644 --- a/src/ubuntu/install/fonts/install_custom_fonts.sh +++ b/src/ubuntu/install/fonts/install_custom_fonts.sh @@ -9,18 +9,7 @@ LOCALES_UBUNTU="language-pack-af language-pack-am language-pack-an language-pack LOCALES="aa_DJ aa_ER aa_ET af_ZA am_ET an_ES ar_AE ar_BH ar_DZ ar_EG ar_IN ar_IQ ar_JO ar_KW ar_LB ar_LY ar_MA ar_OM ar_QA ar_SA ar_SD ar_SY ar_TN ar_YE as_IN ast_ES ayc_PE az_AZ be_BY bem_ZM ber_DZ ber_MA bg_BG bho_IN bn_BD bn_IN bo_CN bo_IN br_FR brx_IN bs_BA byn_ER ca_AD ca_ES ca_FR ca_IT crh_UA csb_PL cs_CZ cv_RU cy_GB da_DK de_AT de_BE de_CH de_DE de_LU doi_IN dv_MV dz_BT el_CY el_GR en_AG en_AU en_BW en_CA en_DK en_GB en_HK en_IE en_IN en_NG en_NZ en_PH en_SG en_US en_ZA en_ZM en_ZW es_AR es_BO es_CL es_CO es_CR es_CU es_DO es_EC es_ES es_GT es_HN es_MX es_NI es_PA es_PE es_PR es_PY es_SV es_US es_UY es_VE et_EE eu_ES fa_IR ff_SN fi_FI fil_PH fo_FO fr_BE fr_CA fr_CH fr_FR fr_LU fur_IT fy_DE fy_NL ga_IE gd_GB gez_ER gez_ET gl_ES gu_IN gv_GB ha_NG he_IL hi_IN hne_IN hr_HR hsb_DE ht_HT hu_HU hy_AM ia_FR id_ID ig_NG ik_CA is_IS it_CH it_IT iu_CA ja_JP ka_GE kk_KZ kl_GL km_KH kn_IN kok_IN ko_KR ks_IN ku_TR kw_GB ky_KG lb_LU lg_UG li_BE lij_IT li_NL lo_LA lt_LT lv_LV mag_IN mai_IN mg_MG mhr_RU mi_NZ mk_MK ml_IN mni_IN mn_MN mr_IN ms_MY mt_MT my_MM nb_NO nds_DE nds_NL ne_NP nhn_MX niu_NU niu_NZ nl_AW nl_BE nl_NL nn_NO nr_ZA nso_ZA oc_FR om_ET om_KE or_IN os_RU pa_IN pa_PK pl_PL ps_AF pt_BR pt_PT ro_RO ru_RU ru_UA rw_RW sa_IN sat_IN sc_IT sd_IN se_NO shs_CA sid_ET si_LK sk_SK sl_SI so_DJ so_ET so_KE so_SO sq_AL sq_MK sr_ME sr_RS ss_ZA st_ZA sv_FI sv_SE sw_KE sw_TZ szl_PL ta_IN ta_LK te_IN tg_TJ th_TH ti_ER ti_ET tig_ER tk_TM tl_PH tn_ZA tr_CY tr_TR ts_ZA tt_RU ug_CN uk_UA unm_US ur_IN ur_PK uz_UZ ve_ZA vi_VN wa_BE wae_CH wal_ET wo_SN xh_ZA yi_US yo_NG yue_HK zh_CN zh_HK zh_SG zh_TW zu_ZA" echo "Installing fonts and languages" -if [[ "${DISTRO}" == "oracle7" ]]; then - yum-config-manager --enable ol7_optional_latest - yum install -y \ - google-noto-emoji-fonts \ - google-noto-sans-cjk-fonts \ - google-noto-sans-fonts -elif [[ "${DISTRO}" == "centos" ]]; then - yum install -y \ - google-noto-emoji-fonts \ - google-noto-sans-cjk-fonts \ - google-noto-sans-fonts -elif [[ "${DISTRO}" == @(fedora37|fedora38|fedora39|fedora40|fedora41|fedora42|fedora43) ]]; then +if [[ "${DISTRO}" == @(fedora42|fedora43) ]]; then dnf install -y \ glibc-locale-source \ google-noto-cjk-fonts \ @@ -43,8 +32,13 @@ elif [[ "${DISTRO}" == @(oracle8|oracle9|rhel9|rockylinux9|rockylinux8|almalinux localedef -i ${LOCALE} -f UTF-8 ${LOCALE}.UTF-8 done elif [ "${DISTRO}" == "opensuse" ]; then - zypper addrepo -G \ - https://download.opensuse.org/repositories/M17N:/fonts/15.6/ fonts-x86_64 + if $(grep -q "15.6" /etc/os-release); then + zypper addrepo -G \ + https://download.opensuse.org/repositories/M17N:/fonts/15.6/ fonts-x86_64 + elif $(grep -q "16" /etc/os-release); then + zypper addrepo -G \ + https://download.opensuse.org/repositories/M17N:/fonts/16.0/ fonts-x86_64 + fi zypper install -ny \ glibc-i18ndata \ glibc-locale \ @@ -60,7 +54,7 @@ elif [ "${DISTRO}" == "alpine" ]; then font-noto-all \ font-noto-cjk \ font-noto-emoji -elif [[ "${DISTRO}" == @(debian|parrotos6|kali) ]]; then +elif [[ "${DISTRO}" == @(debian|parrotos7|kali) ]]; then apt-get update apt-get install -y \ fonts-noto-core \ @@ -71,14 +65,6 @@ elif [[ "${DISTRO}" == @(debian|parrotos6|kali) ]]; then echo "Generating Locale for ${LOCALE}" localedef -i ${LOCALE} -f UTF-8 ${LOCALE}.UTF-8 done -elif $(grep -q Bionic /etc/os-release); then - apt-get update - apt-get install -y \ - fonts-noto-cjk \ - fonts-noto-color-emoji \ - fonts-noto-hinted \ - fonts-noto-unhinted \ - ${LOCALES_UBUNTU} else apt-get update apt-get install -y \ diff --git a/src/ubuntu/install/kasm_vnc/install_kasm_vnc.sh b/src/ubuntu/install/kasm_vnc/install_kasm_vnc.sh index 3505114..cc4d6f3 100644 --- a/src/ubuntu/install/kasm_vnc/install_kasm_vnc.sh +++ b/src/ubuntu/install/kasm_vnc/install_kasm_vnc.sh @@ -37,8 +37,6 @@ then else BUILD_URL="https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/${COMMIT_ID}/kasmvncserver_kali-rolling_${KASM_VER_NAME_PART}_arm64.deb" fi -elif [[ "${DISTRO}" == @(centos|oracle7) ]] ; then - BUILD_URL="https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/${COMMIT_ID}/kasmvncserver_centos_core_${KASM_VER_NAME_PART}_x86_64.rpm" elif [[ "${DISTRO}" == @(rockylinux8|oracle8|almalinux8) ]] ; then if [[ "$(arch)" =~ ^x86_64$ ]] ; then BUILD_URL="https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/${COMMIT_ID}/kasmvncserver_oracle_8_${KASM_VER_NAME_PART}_x86_64.rpm" @@ -52,40 +50,18 @@ elif [[ "${DISTRO}" == @(rockylinux9|oracle9|rhel9|almalinux9) ]] ; then BUILD_URL="https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/${COMMIT_ID}/kasmvncserver_oracle_9_${KASM_VER_NAME_PART}_aarch64.rpm" fi elif [[ "${DISTRO}" == "opensuse" ]] ; then - if [[ "$(arch)" =~ ^x86_64$ ]] ; then - BUILD_URL="https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/${COMMIT_ID}/kasmvncserver_opensuse_15_${KASM_VER_NAME_PART}_x86_64.rpm" - else - BUILD_URL="https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/${COMMIT_ID}/kasmvncserver_opensuse_15_${KASM_VER_NAME_PART}_aarch64.rpm" - fi -elif [[ "${DISTRO}" == "fedora37" ]] ; then - if [[ "$(arch)" =~ ^x86_64$ ]] ; then - BUILD_URL="https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/${COMMIT_ID}/kasmvncserver_fedora_thirtyseven_${KASM_VER_NAME_PART}_x86_64.rpm" - else - BUILD_URL="https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/${COMMIT_ID}/kasmvncserver_fedora_thirtyseven_${KASM_VER_NAME_PART}_aarch64.rpm" - fi -elif [[ "${DISTRO}" == "fedora38" ]] ; then - if [[ "$(arch)" =~ ^x86_64$ ]] ; then - BUILD_URL="https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/${COMMIT_ID}/kasmvncserver_fedora_thirtyeight_${KASM_VER_NAME_PART}_x86_64.rpm" - else - BUILD_URL="https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/${COMMIT_ID}/kasmvncserver_fedora_thirtyeight_${KASM_VER_NAME_PART}_aarch64.rpm" - fi -elif [[ "${DISTRO}" == "fedora39" ]] ; then - if [[ "$(arch)" =~ ^x86_64$ ]] ; then - BUILD_URL="https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/${COMMIT_ID}/kasmvncserver_fedora_thirtynine_${KASM_VER_NAME_PART}_x86_64.rpm" - else - BUILD_URL="https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/${COMMIT_ID}/kasmvncserver_fedora_thirtynine_${KASM_VER_NAME_PART}_aarch64.rpm" - fi -elif [[ "${DISTRO}" == "fedora40" ]] ; then - if [[ "$(arch)" =~ ^x86_64$ ]] ; then - BUILD_URL="https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/${COMMIT_ID}/kasmvncserver_fedora_40_${KASM_VER_NAME_PART}_x86_64.rpm" - else - BUILD_URL="https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/${COMMIT_ID}/kasmvncserver_fedora_40_${KASM_VER_NAME_PART}_aarch64.rpm" - fi -elif [[ "${DISTRO}" == "fedora41" ]] ; then - if [[ "$(arch)" =~ ^x86_64$ ]] ; then - BUILD_URL="https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/${COMMIT_ID}/kasmvncserver_fedora_41_${KASM_VER_NAME_PART}_x86_64.rpm" - else - BUILD_URL="https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/${COMMIT_ID}/kasmvncserver_fedora_41_${KASM_VER_NAME_PART}_aarch64.rpm" + if $(grep -q "15.6" /etc/os-release);then + if [[ "$(arch)" =~ ^x86_64$ ]] ; then + BUILD_URL="https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/${COMMIT_ID}/kasmvncserver_opensuse_15_${KASM_VER_NAME_PART}_x86_64.rpm" + else + BUILD_URL="https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/${COMMIT_ID}/kasmvncserver_opensuse_15_${KASM_VER_NAME_PART}_aarch64.rpm" + fi + elif $(grep -q "16" /etc/os-release);then + if [[ "$(arch)" =~ ^x86_64$ ]] ; then + BUILD_URL="https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/${COMMIT_ID}/kasmvncserver_opensuse_16_${KASM_VER_NAME_PART}_x86_64.rpm" + else + BUILD_URL="https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/${COMMIT_ID}/kasmvncserver_opensuse_16_${KASM_VER_NAME_PART}_aarch64.rpm" + fi fi elif [[ "${DISTRO}" == "fedora42" ]] ; then if [[ "$(arch)" =~ ^x86_64$ ]] ; then @@ -99,8 +75,8 @@ elif [[ "${DISTRO}" == "fedora43" ]] ; then else BUILD_URL="https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/${COMMIT_ID}/kasmvncserver_fedora_43_${KASM_VER_NAME_PART}_aarch64.rpm" fi -elif [[ "${DISTRO}" = @(debian|parrotos6) ]] ; then - if $(grep -q trixie /etc/os-release); then +elif [[ "${DISTRO}" = @(debian|parrotos7) ]] ; then + if grep -q trixie /etc/os-release || { grep -qi parrot /etc/os-release && grep -q "7.1" /etc/os-release; }; then if [[ "$(arch)" =~ ^x86_64$ ]] ; then BUILD_URL="https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/${COMMIT_ID}/kasmvncserver_trixie_${KASM_VER_NAME_PART}_amd64.deb" else @@ -120,24 +96,24 @@ elif [[ "${DISTRO}" = @(debian|parrotos6) ]] ; then fi fi elif [[ "${DISTRO}" == "alpine" ]] ; then - if grep -q v3.21 /etc/os-release; then + if grep -q v3.23 /etc/os-release; then + if [[ "$(arch)" =~ ^x86_64$ ]] ; then + BUILD_URL="https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/${COMMIT_ID}/kasmvncserver_alpine_323_${KASM_VER_NAME_PART}_x86_64.apk" + else + BUILD_URL="https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/${COMMIT_ID}/kasmvncserver_alpine_323_${KASM_VER_NAME_PART}_aarch64.apk" + fi + elif grep -q v3.22 /etc/os-release; then + if [[ "$(arch)" =~ ^x86_64$ ]] ; then + BUILD_URL="https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/${COMMIT_ID}/kasmvncserver_alpine_322_${KASM_VER_NAME_PART}_x86_64.apk" + else + BUILD_URL="https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/${COMMIT_ID}/kasmvncserver_alpine_322_${KASM_VER_NAME_PART}_aarch64.apk" + fi + elif grep -q v3.21 /etc/os-release; then if [[ "$(arch)" =~ ^x86_64$ ]] ; then BUILD_URL="https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/${COMMIT_ID}/kasmvncserver_alpine_321_${KASM_VER_NAME_PART}_x86_64.apk" else BUILD_URL="https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/${COMMIT_ID}/kasmvncserver_alpine_321_${KASM_VER_NAME_PART}_aarch64.apk" fi - elif grep -q v3.20 /etc/os-release; then - if [[ "$(arch)" =~ ^x86_64$ ]] ; then - BUILD_URL="https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/${COMMIT_ID}/kasmvncserver_alpine_320_${KASM_VER_NAME_PART}_x86_64.apk" - else - BUILD_URL="https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/${COMMIT_ID}/kasmvncserver_alpine_320_${KASM_VER_NAME_PART}_aarch64.apk" - fi - elif grep -q v3.19 /etc/os-release; then - if [[ "$(arch)" =~ ^x86_64$ ]] ; then - BUILD_URL="https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/${COMMIT_ID}/kasmvncserver_alpine_319_${KASM_VER_NAME_PART}_x86_64.apk" - else - BUILD_URL="https://kasmweb-build-artifacts.s3.amazonaws.com/kasmvnc/${COMMIT_ID}/kasmvncserver_alpine_319_${KASM_VER_NAME_PART}_aarch64.apk" - fi fi else UBUNTU_CODENAME=$(grep -Po -m 1 "(?<=_CODENAME=)\w+" /etc/os-release) @@ -150,22 +126,18 @@ fi prepare_rpm_repo_dependencies -if [[ "${DISTRO}" == @(centos|oracle7) ]] ; then - wget "${BUILD_URL}" -O kasmvncserver.rpm - yum localinstall -y kasmvncserver.rpm - rm kasmvncserver.rpm -elif [[ "${DISTRO}" == @(oracle8|oracle9|rhel9|rockylinux9|rockylinux8|almalinux8|almalinux9) ]] ; then +if [[ "${DISTRO}" == @(oracle8|oracle9|rhel9|rockylinux9|rockylinux8|almalinux8|almalinux9) ]] ; then wget "${BUILD_URL}" -O kasmvncserver.rpm dnf localinstall -y kasmvncserver.rpm dnf install -y mesa-dri-drivers rm kasmvncserver.rpm -elif [[ "${DISTRO}" == @(fedora37|fedora38|fedora39|fedora40|fedora41|fedora42|fedora43) ]] ; then +elif [[ "${DISTRO}" == @(fedora42|fedora43) ]] ; then dnf install -y xorg-x11-drv-amdgpu xorg-x11-drv-ati if [ "${BUILD_ARCH}" == "x86_64" ]; then dnf install -y xorg-x11-drv-intel fi wget "${BUILD_URL}" -O kasmvncserver.rpm - if [[ "${DISTRO}" == @(fedora41|fedora42|fedora43) ]] ; then + if [[ "${DISTRO}" == @(fedora42|fedora43) ]] ; then dnf-3 localinstall -y --allowerasing kasmvncserver.rpm dnf install -y crypto-policies-scripts update-crypto-policies --set DEFAULT:SHA1 diff --git a/src/ubuntu/install/kde/install_kde.sh b/src/ubuntu/install/kde/install_kde.sh index 5864d8d..e849f1c 100644 --- a/src/ubuntu/install/kde/install_kde.sh +++ b/src/ubuntu/install/kde/install_kde.sh @@ -30,11 +30,11 @@ EOL } echo "Install KDE UI components" -if [[ "${DISTRO}" != @(centos|oracle7|oracle8|opensuse|fedora37|fedora38|oracle9|rhel9|rockylinux9|rockylinux8|almalinux8|almalinux9|alpine) ]]; then +if [[ "${DISTRO}" != @(oracle8|opensuse|fedora42|fedora43|oracle9|rhel9|rockylinux9|rockylinux8|almalinux8|almalinux9|alpine) ]]; then apt-get update fi -if [[ "$DISTRO" = @(ubuntu|debian|parrotos5) ]]; then +if [[ "$DISTRO" = @(ubuntu|debian|parrotos7) ]]; then apt-get install -y x11-utils apt-get install -y --no-install-recommends \ curl \ @@ -62,18 +62,6 @@ if [[ "$DISTRO" = @(ubuntu|debian|parrotos5) ]]; then kde-config-screenlocker echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen locale-gen -elif [[ "${DISTRO}" == @(centos|oracle7) ]]; then - if [ "${DISTRO}" == centos ]; then - yum install -y epel-release - else - yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm - fi - disable_epel_nss_wrapper_that_breaks_firefox - yum install -y \ - curl \ - wmctrl \ - xclip \ - xset elif [ "$DISTRO" = "oracle8" ]; then dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm dnf install -y \ @@ -117,7 +105,7 @@ elif [ "$DISTRO" = "opensuse" ]; then gvfs \ xclip \ xset -elif [[ "$DISTRO" = @(fedora37|fedora38) ]]; then +elif [[ "$DISTRO" = @(fedora42|fedora43) ]]; then dnf install -y \ curl \ gvfs \ @@ -134,7 +122,7 @@ elif [ "$DISTRO" = "alpine" ]; then mesa-gl fi -if [[ "${DISTRO}" != @(centos|oracle7|oracle8|fedora37|fedora38|oracle9|rhel9|rockylinux9|rockylinux8|almalinux8|almalinux9|alpine) ]]; then +if [[ "${DISTRO}" != @(oracle8|fedora42|fedora43|oracle9|rhel9|rockylinux9|rockylinux8|almalinux8|almalinux9|alpine) ]]; then replace_default_xinit if [ "${START_XFCE4}" == "1" ] ; then replace_default_99x11_common_start diff --git a/src/ubuntu/install/openbox/install_openbox.sh b/src/ubuntu/install/openbox/install_openbox.sh index f5aa040..19b3078 100644 --- a/src/ubuntu/install/openbox/install_openbox.sh +++ b/src/ubuntu/install/openbox/install_openbox.sh @@ -30,11 +30,11 @@ EOL } echo "Install Openbox UI components" -if [[ "${DISTRO}" != @(centos|oracle7|oracle8|opensuse|fedora37|fedora38|oracle9|rhel9|rockylinux9|rockylinux8|almalinux8|almalinux9|alpine) ]]; then +if [[ "${DISTRO}" != @(oracle8|opensuse|fedora42|fedora43|oracle9|rhel9|rockylinux9|rockylinux8|almalinux8|almalinux9|alpine) ]]; then apt-get update fi -if [[ "$DISTRO" = @(ubuntu|debian|parrotos5) ]]; then +if [[ "$DISTRO" = @(ubuntu|debian|parrotos7) ]]; then apt-get install -y x11-utils apt-get install -y --no-install-recommends \ curl \ @@ -45,20 +45,6 @@ if [[ "$DISTRO" = @(ubuntu|debian|parrotos5) ]]; then xterm echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen locale-gen -elif [[ "${DISTRO}" == @(centos|oracle7) ]]; then - if [ "${DISTRO}" == centos ]; then - yum install -y epel-release - else - yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm - fi - disable_epel_nss_wrapper_that_breaks_firefox - yum install -y \ - curl \ - openbox \ - wmctrl \ - xclip \ - xset \ - xterm elif [ "$DISTRO" = "oracle8" ]; then dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm dnf install -y \ @@ -112,7 +98,7 @@ elif [ "$DISTRO" = "opensuse" ]; then xclip \ xset \ xterm -elif [[ "$DISTRO" = @(fedora37|fedora38) ]]; then +elif [[ "$DISTRO" = @(fedora42|fedora43) ]]; then dnf install -y \ curl \ gvfs \ @@ -133,7 +119,7 @@ elif [ "$DISTRO" = "alpine" ]; then xterm fi -if [[ "${DISTRO}" != @(centos|oracle7|oracle8|fedora37|fedora38|oracle9|rhel9|rockylinux9|rockylinux8|almalinux8|almalinux9|alpine) ]]; then +if [[ "${DISTRO}" != @(oracle8|fedora42|fedora43|oracle9|rhel9|rockylinux9|rockylinux8|almalinux8|almalinux9|alpine) ]]; then replace_default_xinit if [ "${START_XFCE4}" == "1" ] ; then replace_default_99x11_common_start diff --git a/src/ubuntu/install/package_rules/package_rules.sh b/src/ubuntu/install/package_rules/package_rules.sh index f34fac8..ef4042c 100644 --- a/src/ubuntu/install/package_rules/package_rules.sh +++ b/src/ubuntu/install/package_rules/package_rules.sh @@ -9,20 +9,12 @@ elif [[ "${DISTRO}" == "debian" ]] ; then sed -i \ '/locale/d' \ /etc/dpkg/dpkg.cfg.d/docker -elif [[ "${DISTRO}" == @(almalinux8|almalinux9|fedora37|fedora38|fedora39|fedora40|fedora41|fedora42|fedora43|oracle8|oracle9|rhel9|rockylinux8|rockylinux9) ]]; then +elif [[ "${DISTRO}" == @(almalinux8|almalinux9|fedora42|fedora43|oracle8|oracle9|rhel9|rockylinux8|rockylinux9) ]]; then rm -f /etc/rpm/macros.image-language-conf -elif [[ "${DISTRO}" == @(centos|oracle7) ]]; then - sed -i \ - '/override_install_langs/d' \ - /etc/yum.conf - yum reinstall -y \ - glibc-common fi echo "Upgrading packages from upstream base image" -if [[ "${DISTRO}" == @(centos|oracle7) ]] ; then - yum update -y -elif [[ "${DISTRO}" == @(fedora37|fedora38|fedora39|fedora40|fedora41|fedora42|fedora43|oracle8|oracle9|rhel9|rockylinux9|rockylinux8|almalinux8|almalinux9) ]]; then +if [[ "${DISTRO}" == @(fedora42|fedora43|oracle8|oracle9|rhel9|rockylinux9|rockylinux8|almalinux8|almalinux9) ]]; then dnf upgrade -y --refresh elif [ "${DISTRO}" == "opensuse" ]; then zypper --non-interactive patch --auto-agree-with-licenses diff --git a/src/ubuntu/install/printer/install_printer.sh b/src/ubuntu/install/printer/install_printer.sh index d270541..1045787 100755 --- a/src/ubuntu/install/printer/install_printer.sh +++ b/src/ubuntu/install/printer/install_printer.sh @@ -4,9 +4,7 @@ set -e echo $DISTRO -if [ "${DISTRO}" == "oracle7" ] || [ "${DISTRO}" == "centos" ]; then - yum install -y cups cups-client cups-pdf -elif [[ "${DISTRO}" == @(almalinux8|almalinux9|oracle8|oracle9|rhel9|rockylinux8|rockylinux9|fedora37|fedora38|fedora39|fedora40|fedora41|fedora42|fedora43) ]]; then +if [[ "${DISTRO}" == @(almalinux8|almalinux9|oracle8|oracle9|rhel9|rockylinux8|rockylinux9|fedora42|fedora43) ]]; then dnf install -y cups cups-client cups-pdf elif [ "${DISTRO}" == "opensuse" ]; then zypper install -y cups cups-client cups-pdf diff --git a/src/ubuntu/install/profile_sync/install_profile_sync.sh b/src/ubuntu/install/profile_sync/install_profile_sync.sh index 4872b0f..be51246 100755 --- a/src/ubuntu/install/profile_sync/install_profile_sync.sh +++ b/src/ubuntu/install/profile_sync/install_profile_sync.sh @@ -36,7 +36,13 @@ handle_other_distros_conversion() { case "$DISTRO" in kali) profile_distro="kali_kali-rolling" ;; - opensuse) profile_distro="opensuse_15" + opensuse) + if grep -q '15.6' /etc/os-release; then + profile_distro="opensuse_15" + fi + if grep -q '16' /etc/os-release; then + profile_distro="opensuse_16" + fi ;; alpine) if grep -q 'v3.17' /etc/os-release; then diff --git a/src/ubuntu/install/smartcard/install_smartcard.sh b/src/ubuntu/install/smartcard/install_smartcard.sh index 69a697b..6b1574c 100755 --- a/src/ubuntu/install/smartcard/install_smartcard.sh +++ b/src/ubuntu/install/smartcard/install_smartcard.sh @@ -7,9 +7,7 @@ BRANCH="main" COMMIT_ID_SHORT=$(echo "${COMMIT_ID}" | cut -c1-6) ARCH=$(arch | sed 's/aarch64/arm64/g' | sed 's/x86_64/amd64/g') -if [[ "${DISTRO}" == @(centos|oracle7) ]]; then - yum install -y wget nss-tools glib2 -elif [[ "${DISTRO}" == @(almalinux8|almalinux9|oracle8|oracle9|rhel9|rockylinux8|rockylinux9|fedora37|fedora38|fedora39|fedora40|fedora41|fedora42|fedora43) ]]; then +if [[ "${DISTRO}" == @(almalinux8|almalinux9|oracle8|oracle9|rhel9|rockylinux8|rockylinux9|fedora42|fedora43) ]]; then dnf install -y wget nss-tools glib2 elif [ "${DISTRO}" == "opensuse" ]; then zypper install -yn wget mozilla-nss-tools libglib-2_0-0 diff --git a/src/ubuntu/install/squid/install/install_squid.sh b/src/ubuntu/install/squid/install/install_squid.sh index d875d75..21c17f5 100644 --- a/src/ubuntu/install/squid/install/install_squid.sh +++ b/src/ubuntu/install/squid/install/install_squid.sh @@ -3,7 +3,7 @@ set -ex # Install openssl ARCH=$(arch | sed 's/aarch64/arm64/g' | sed 's/x86_64/amd64/g') -if [[ "${DISTRO}" == @(centos|oracle7|oracle8|oracle9|rhel9|fedora37|fedora38|fedora39|fedora40|fedora41|fedora42|fedora43|almalinux8|almalinux9|rockylinux8|rockylinux9) ]]; then +if [[ "${DISTRO}" == @(oracle8|oracle9|rhel9|fedora42|fedora43|almalinux8|almalinux9|rockylinux8|rockylinux9) ]]; then dnf install -y openssl xkbcomp rm -f /etc/X11/xinit/xinitrc elif [[ "${DISTRO}" == "alpine" ]]; then @@ -26,7 +26,7 @@ else fi # Update squid conf with user info -if [[ "${DISTRO}" == @(centos|oracle7|oracle8|oracle9|rhel9|fedora37|fedora38|fedora39|fedora40|fedora41|fedora42|fedora43|almalinux8|almalinux9|rockylinux8|rockylinux9|alpine) ]]; then +if [[ "${DISTRO}" == @(oracle8|oracle9|rhel9|fedora42|fedora43|almalinux8|almalinux9|rockylinux8|rockylinux9|alpine) ]]; then useradd --system --shell /usr/sbin/nologin --home-dir /bin proxy elif [ "${DISTRO}" == "opensuse" ]; then useradd --system --shell /usr/sbin/nologin --home-dir /bin proxy @@ -51,9 +51,7 @@ EOL chown -R proxy:proxy /etc/squid/blocked.acl -if [[ "${DISTRO}" == @(centos|oracle7) ]]; then - yum install -y memcached cyrus-sasl iproute -elif [[ "${DISTRO}" == @(oracle8|fedora37|fedora38|fedora39|fedora40|fedora41|fedora42|fedora43|oracle9|rhel9|rockylinux9|rockylinux8|almalinux9|almalinux8) ]]; then +if [[ "${DISTRO}" == @(oracle8|fedora42|fedora43|oracle9|rhel9|rockylinux9|rockylinux8|almalinux9|almalinux8) ]]; then dnf install -y memcached cyrus-sasl iproute elif [ "${DISTRO}" == "opensuse" ]; then zypper install -yn memcached cyrus-sasl iproute2 libatomic1 @@ -90,9 +88,7 @@ chmod +x /etc/squid/kasm_squid_adapter # FIXME - This likely should be moved somewhere else to be more explicit # Install Cert utilities -if [[ "${DISTRO}" == @(centos|oracle7) ]]; then - yum install -y nss-tools -elif [[ "${DISTRO}" == @(oracle8|fedora37|fedora38|fedora39|fedora40|fedora41|fedora42|fedora43|oracle9|rhel9|rockylinux9|rockylinux8|almalinux9|almalinux8) ]]; then +if [[ "${DISTRO}" == @(oracle8|fedora42|fedora43|oracle9|rhel9|rockylinux9|rockylinux8|almalinux9|almalinux8) ]]; then dnf install -y nss-tools elif [ "${DISTRO}" == "opensuse" ]; then zypper install -yn mozilla-nss-tools diff --git a/src/ubuntu/install/squid/resources/start_squid.sh b/src/ubuntu/install/squid/resources/start_squid.sh index 54f9bbc..d56e67c 100644 --- a/src/ubuntu/install/squid/resources/start_squid.sh +++ b/src/ubuntu/install/squid/resources/start_squid.sh @@ -9,21 +9,19 @@ set -ex mkdir -p /tmp/working_certs cd /tmp/working_certs - if [ -f /etc/centos-release ]; then - DISTRO=centos - elif [ -f /etc/fedora-release ]; then + if [ -f /etc/fedora-release ]; then DISTRO=fedora elif [ -f /etc/oracle-release ] || [ -f /etc/rocky-release ] || [ -f /etc/almalinux-release ] || [ -f /etc/redhat-release ]; then DISTRO=oracle7 elif [ -f /usr/bin/zypper ]; then DISTRO=opensuse elif [ -f /etc/dpkg/origins/parrot ]; then - DISTRO=parrotos6 + DISTRO=parrotos7 elif [ -f /etc/alpine-release ]; then DISTRO=alpine fi - if [[ "${DISTRO}" == @(centos|oracle7|fedora) ]]; then + if [[ "${DISTRO}" == @(fedora) ]]; then CERT_FILE=/etc/pki/ca-trust/source/anchors/squid.crt elif [ "${DISTRO}" == "opensuse" ]; then CERT_FILE=/usr/share/pki/trust/anchors/squid.crt @@ -44,7 +42,7 @@ set -ex fi chmod 644 ${CERT_FILE} - if [[ "${DISTRO}" == @(centos|oracle7|fedora) ]]; then + if [[ "${DISTRO}" == @(fedora) ]]; then update-ca-trust else update-ca-certificates @@ -63,7 +61,7 @@ set -ex export MEMCACHE_PASSWORD="$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 13 )" echo $MEMCACHE_PASSWORD | saslpasswd2 -a memcached -c -f /etc/sasl2/memcached-sasldb2 kasm - if [[ "${DISTRO}" == @(centos|oracle7|opensuse|fedora|alpine) ]]; then + if [[ "${DISTRO}" == @(opensuse|fedora|alpine) ]]; then MEMCACHE_USER=memcached else MEMCACHE_USER=memcache @@ -71,7 +69,7 @@ set -ex chown $MEMCACHE_USER:$MEMCACHE_USER /etc/sasl2/memcached-sasldb2 - if [[ "${DISTRO}" == @(centos|oracle7|fedora|parrotos6|alpine) ]]; then + if [[ "${DISTRO}" == @(fedora|parrotos7|alpine) ]]; then /usr/bin/memcached -u $MEMCACHE_USER & elif [ "${DISTRO}" == "opensuse" ]; then /usr/sbin/memcached -u $MEMCACHE_USER & diff --git a/src/ubuntu/install/sysbox/install_systemd.sh b/src/ubuntu/install/sysbox/install_systemd.sh index 373b144..386c8a4 100644 --- a/src/ubuntu/install/sysbox/install_systemd.sh +++ b/src/ubuntu/install/sysbox/install_systemd.sh @@ -2,7 +2,7 @@ set -ex # Setup systemd based on distro type -if [[ "${DISTRO}" == @(ubuntu|debian|parrotos6|kali) ]] ; then +if [[ "${DISTRO}" == @(ubuntu|debian|parrotos7|kali) ]] ; then # Install deps apt-get update apt-get install -y --no-install-recommends \ @@ -15,7 +15,7 @@ if [[ "${DISTRO}" == @(ubuntu|debian|parrotos6|kali) ]] ; then systemd \ systemd-sysv \ udev -elif [[ "${DISTRO}" == @(oracle8|oracle9|rhel9|rockylinux9|rockylinux8|almalinux9|almalinux8|fedora37|fedora38|fedora39|fedora40|fedora41) ]]; then +elif [[ "${DISTRO}" == @(oracle8|oracle9|rhel9|rockylinux9|rockylinux8|almalinux9|almalinux8|fedora42|fedora43) ]]; then # Install deps dnf install -y \ dbus \ diff --git a/src/ubuntu/install/tools/install_tools.sh b/src/ubuntu/install/tools/install_tools.sh index 976bb66..132cf4b 100644 --- a/src/ubuntu/install/tools/install_tools.sh +++ b/src/ubuntu/install/tools/install_tools.sh @@ -1,14 +1,12 @@ #!/usr/bin/env bash set -e -if [ "${DISTRO}" == "parrotos6" ]; then +if [ "${DISTRO}" == "parrotos7" ]; then PARROTEXTRA="-t lory-backports" fi echo "Install some common tools for further installation" -if [[ "${DISTRO}" == @(centos|oracle7) ]] ; then - yum install -y vim wget net-tools bzip2 ca-certificates bc vulkan-tools -elif [[ "${DISTRO}" == @(fedora37|fedora38|fedora39|fedora40|fedora41|fedora42|fedora43|oracle8|oracle9|rockylinux9|rockylinux8|almalinux8|almalinux9) ]]; then +if [[ "${DISTRO}" == @(fedora42|fedora43|oracle8|oracle9|rockylinux9|rockylinux8|almalinux8|almalinux9) ]]; then dnf install -y wget net-tools bzip2 tar vim hostname procps-ng bc vulkan-tools elif [[ "${DISTRO}" == @(rhel9) ]]; then dnf install -y wget net-tools bzip2 tar vim hostname procps-ng bc @@ -42,7 +40,7 @@ else dpkg-reconfigure --frontend noninteractive tzdata # software-properties is removed from kali-rolling and debian trixie - if grep -q "kali-rolling" /etc/os-release || grep -q "trixie" /etc/os-release; then + if grep -q "kali-rolling" /etc/os-release || grep -q "trixie" /etc/os-release || grep -qi "parrot" /etc/os-release; then apt-get install ${PARROTEXTRA} -y vim wget net-tools locales bzip2 wmctrl mesa-utils bc vulkan-tools else apt-get install ${PARROTEXTRA} -y vim wget net-tools locales bzip2 wmctrl software-properties-common mesa-utils bc vulkan-tools diff --git a/src/ubuntu/install/xfce/install_xfce_ui.sh b/src/ubuntu/install/xfce/install_xfce_ui.sh index cc2c794..02cc6dc 100644 --- a/src/ubuntu/install/xfce/install_xfce_ui.sh +++ b/src/ubuntu/install/xfce/install_xfce_ui.sh @@ -30,7 +30,7 @@ EOL } echo "Install Xfce4 UI components" -if [[ "${DISTRO}" != @(centos|oracle7|oracle8|opensuse|fedora37|fedora38|fedora39|fedora40|fedora41|fedora42|fedora43|oracle9|rhel9|rockylinux9|rockylinux8|almalinux8|almalinux9|alpine) ]]; then +if [[ "${DISTRO}" != @(oracle8|opensuse|fedora42|fedora43|oracle9|rhel9|rockylinux9|rockylinux8|almalinux8|almalinux9|alpine) ]]; then apt-get update fi @@ -72,7 +72,7 @@ elif [[ "$DISTRO" = @(ubuntu|debian) ]]; then xfce4-terminal \ xterm \ xclip -elif [[ "$DISTRO" = "parrotos6" ]]; then +elif [[ "$DISTRO" = "parrotos7" ]]; then apt-get install -y \ dbus-x11 \ desktop-base \ @@ -87,20 +87,6 @@ elif [[ "$DISTRO" = "parrotos6" ]]; then xfce4-whiskermenu-plugin echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen locale-gen -elif [[ "${DISTRO}" == @(centos|oracle7) ]]; then - if [ "${DISTRO}" == centos ]; then - yum install -y epel-release - else - yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm - fi - disable_epel_nss_wrapper_that_breaks_firefox - yum groupinstall xfce -y - yum install -y \ - gvfs \ - wmctrl \ - xclip \ - xfce4-notifyd \ - xset elif [ "$DISTRO" = "oracle8" ]; then dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm dnf group install xfce -y @@ -173,7 +159,7 @@ elif [ "$DISTRO" = "opensuse" ]; then xset # Pidof is no longer shipped in OpenSuse ln -s /usr/bin/pgrep /usr/bin/pidof -elif [[ "$DISTRO" = @(fedora37|fedora38|fedora39|fedora40|fedora41|fedora42|fedora43) ]]; then +elif [[ "$DISTRO" = @(fedora42|fedora43) ]]; then dnf install -y \ dbus-tools \ dbus-x11 \ @@ -230,7 +216,7 @@ Exec=/usr/lib/xfce4/notifyd/xfce4-notifyd EOL fi -if [[ "${DISTRO}" != @(centos|oracle7|oracle8|fedora37|fedora38|fedora39|fedora40|fedora41|fedora42|fedora43|oracle9|rhel9|rockylinux9|rockylinux8|almalinux8|almalinux9|alpine) ]]; then +if [[ "${DISTRO}" != @(oracle8|fedora42|fedora43|oracle9|rhel9|rockylinux9|rockylinux8|almalinux8|almalinux9|alpine) ]]; then replace_default_xinit if [ "${START_XFCE4}" == "1" ] ; then replace_default_99x11_common_start