Resolve KASM-2598 "Feature/ more images"

This commit is contained in:
Ryan Kuba 2022-05-11 10:00:10 +00:00 committed by Justin Travis
parent bb39c3a4dc
commit e6b0c218f3
39 changed files with 1171 additions and 6 deletions

View File

@ -4,21 +4,27 @@ services:
variables: variables:
DOCKER_AUTH_CONFIG: ${_DOCKER_AUTH_CONFIG} DOCKER_AUTH_CONFIG: ${_DOCKER_AUTH_CONFIG}
PLATFORM: "linux/amd64" PLATFORM: "linux/amd64"
ARM_BUILDS: ",chromium,firefox,gimp,rdesktop,remmina,terminal,ubuntu-bionic-desktop,ubuntu-focal-desktop,vlc,vs-code,doom,sublime-text,tor-browser,java-dev,telegram,opensuse-15-desktop,oracle-8-desktop,libre-office,thunderbird," ARM_BUILDS: ",chromium,firefox,gimp,rdesktop,remmina,terminal,ubuntu-bionic-desktop,ubuntu-focal-desktop,vlc,vs-code,doom,sublime-text,tor-browser,java-dev,telegram,opensuse-15-desktop,oracle-8-desktop,libre-office,thunderbird,audacity,deluge,filezilla,inkscape,pinta,qbittorrent,"
CORE_IMAGE_TAG: "develop" CORE_IMAGE_TAG: "develop"
CORE_IMAGE: "core-ubuntu-focal" CORE_IMAGE: "core-ubuntu-focal"
USE_PRIVATE_IMAGES: 0 USE_PRIVATE_IMAGES: 0
# YAML level anchors # YAML level anchors
.MULTI_ARCH_BUILDS: &MULTI_ARCH_BUILDS .MULTI_ARCH_BUILDS: &MULTI_ARCH_BUILDS
- audacity
- chromium - chromium
- deluge
- doom - doom
- filezilla
- firefox - firefox
- gimp - gimp
- inkscape
- java-dev - java-dev
- libre-office - libre-office
- opensuse-15-desktop - opensuse-15-desktop
- oracle-8-desktop - oracle-8-desktop
- pinta
- qbittorrent
- rdesktop - rdesktop
- remmina - remmina
- sublime-text - sublime-text
@ -31,6 +37,7 @@ variables:
- vs-code - vs-code
.SINGLE_ARCH_BUILDS: &SINGLE_ARCH_BUILDS .SINGLE_ARCH_BUILDS: &SINGLE_ARCH_BUILDS
- atom
- brave - brave
- centos-7-desktop - centos-7-desktop
- chrome - chrome
@ -124,7 +131,7 @@ build_app_images:
- aws-autoscale - aws-autoscale
parallel: parallel:
matrix: matrix:
- KASM_IMAGE: [doom, sublime-text, gimp, vs-code, slack, teams, only-office, zoom, signal, steam, postman, insomnia, zsnes, vlc, maltego, telegram, hunchly, java-dev, terminal, vmware-horizon, remmina, rdesktop, discord, libre-office, thunderbird] - KASM_IMAGE: [doom, sublime-text, gimp, vs-code, slack, teams, only-office, zoom, signal, steam, postman, insomnia, zsnes, vlc, maltego, telegram, hunchly, java-dev, terminal, vmware-horizon, remmina, rdesktop, discord, libre-office, thunderbird, atom, audacity, deluge, filezilla, inkscape, pinta, qbittorrent]
build_ubuntu_desktop_images: build_ubuntu_desktop_images:
stage: build stage: build
@ -349,7 +356,7 @@ build_schedules_browser_images:
- ls docs/$KASM_IMAGE/README.md - ls docs/$KASM_IMAGE/README.md
- ls docs/$KASM_IMAGE/description.txt - ls docs/$KASM_IMAGE/description.txt
# Check for private variable to build against private core images # Check for private variable to build against private core images
- if [[ $USE_PRIVATE_IMAGES -eq 1 ]]; then CORE_IMAGE=$CORE_IMAGE-private; fi; - if [[ $USE_PRIVATE_IMAGES -eq 1 ]]; then CORE_IMAGE=$CORE-IMAGE-private; fi;
# Equivalent to docker build and docker push. Builds amd64 natively uses qemu for arm64. # Equivalent to docker build and docker push. Builds amd64 natively uses qemu for arm64.
# The only way to push multiple architectures to the same tag is to use buildx. # The only way to push multiple architectures to the same tag is to use buildx.
@ -361,7 +368,6 @@ build_schedules_browser_images:
parallel: parallel:
matrix: matrix:
- KASM_IMAGE: [chrome, chromium, firefox, firefox-mobile, tor-browser, edge, brave] - KASM_IMAGE: [chrome, chromium, firefox, firefox-mobile, tor-browser, edge, brave]
CORE_IMAGE: [core-ubuntu-bionic, core-ubuntu-focal]
build_schedules_app_images: build_schedules_app_images:
image: ${ORG_NAME}/docker-buildx-private:develop image: ${ORG_NAME}/docker-buildx-private:develop
@ -389,8 +395,7 @@ build_schedules_app_images:
- aws-autoscale - aws-autoscale
parallel: parallel:
matrix: matrix:
- KASM_IMAGE: [doom, sublime-text, gimp, vs-code, slack, teams, only-office, zoom, signal, steam, postman, insomnia, zsnes, vlc, maltego, telegram, hunchly, java-dev, terminal, vmware-horizon, remmina, rdesktop, discord, libre-office, thunderbird] - KASM_IMAGE: [doom, sublime-text, gimp, vs-code, slack, teams, only-office, zoom, signal, steam, postman, insomnia, zsnes, vlc, maltego, telegram, hunchly, java-dev, terminal, vmware-horizon, remmina, rdesktop, discord, libre-office, thunderbird, atom, audacity, deluge, filezilla, inkscape, pinta, qbittorrent]
CORE_IMAGE: [core-ubuntu-bionic, core-ubuntu-focal]
build_schedules_ubuntu_desktop_images: build_schedules_ubuntu_desktop_images:
image: ${ORG_NAME}/docker-buildx-private:develop image: ${ORG_NAME}/docker-buildx-private:develop
@ -486,19 +491,24 @@ update_readmes:
parallel: parallel:
matrix: matrix:
- KASM_IMAGE: - KASM_IMAGE:
- atom
- audacity
- brave - brave
- centos-7-desktop - centos-7-desktop
- chrome - chrome
- chromium - chromium
- deluge
- desktop - desktop
- desktop-deluxe - desktop-deluxe
- discord - discord
- doom - doom
- edge - edge
- filezilla
- firefox - firefox
- firefox-mobile - firefox-mobile
- gimp - gimp
- hunchly - hunchly
- inkscape
- insomnia - insomnia
- java-dev - java-dev
- libre-office - libre-office
@ -507,7 +517,9 @@ update_readmes:
- opensuse-15-desktop - opensuse-15-desktop
- oracle-7-desktop - oracle-7-desktop
- oracle-8-desktop - oracle-8-desktop
- pinta
- postman - postman
- qbittorrent
- rdesktop - rdesktop
- remmina - remmina
- signal - signal

35
dockerfile-kasm-atom Normal file
View File

@ -0,0 +1,35 @@
ARG BASE_TAG="develop"
ARG BASE_IMAGE="core-ubuntu-focal"
FROM kasmweb/$BASE_IMAGE:$BASE_TAG
USER root
ENV HOME /home/kasm-default-profile
ENV STARTUPDIR /dockerstartup
ENV INST_SCRIPTS $STARTUPDIR/install
WORKDIR $HOME
######### Customize Container Here ###########
COPY ./src/ubuntu/install/atom $INST_SCRIPTS/atom/
RUN bash $INST_SCRIPTS/atom/install_atom.sh && rm -rf $INST_SCRIPTS/atom/
COPY ./src/ubuntu/install/atom/custom_startup.sh $STARTUPDIR/custom_startup.sh
RUN chmod +x $STARTUPDIR/custom_startup.sh
RUN chmod 755 $STARTUPDIR/custom_startup.sh
# Update the desktop environment to be optimized for a single application
RUN cp $HOME/.config/xfce4/xfconf/single-application-xfce-perchannel-xml/* $HOME/.config/xfce4/xfconf/xfce-perchannel-xml/
RUN cp /usr/share/extra/backgrounds/bg_kasm.png /usr/share/extra/backgrounds/bg_default.png
RUN apt-get remove -y xfce4-panel
######### End Customizations ###########
RUN chown 1000:0 $HOME
ENV HOME /home/kasm-user
WORKDIR $HOME
RUN mkdir -p $HOME && chown -R 1000:0 $HOME
USER 1000

35
dockerfile-kasm-audacity Normal file
View File

@ -0,0 +1,35 @@
ARG BASE_TAG="develop"
ARG BASE_IMAGE="core-ubuntu-focal"
FROM kasmweb/$BASE_IMAGE:$BASE_TAG
USER root
ENV HOME /home/kasm-default-profile
ENV STARTUPDIR /dockerstartup
ENV INST_SCRIPTS $STARTUPDIR/install
WORKDIR $HOME
######### Customize Container Here ###########
COPY ./src/ubuntu/install/audacity $INST_SCRIPTS/audacity/
RUN bash $INST_SCRIPTS/audacity/install_audacity.sh && rm -rf $INST_SCRIPTS/audacity/
COPY ./src/ubuntu/install/audacity/custom_startup.sh $STARTUPDIR/custom_startup.sh
RUN chmod +x $STARTUPDIR/custom_startup.sh
RUN chmod 755 $STARTUPDIR/custom_startup.sh
# Update the desktop environment to be optimized for a single application
RUN cp $HOME/.config/xfce4/xfconf/single-application-xfce-perchannel-xml/* $HOME/.config/xfce4/xfconf/xfce-perchannel-xml/
RUN cp /usr/share/extra/backgrounds/bg_kasm.png /usr/share/extra/backgrounds/bg_default.png
RUN apt-get remove -y xfce4-panel
######### End Customizations ###########
RUN chown 1000:0 $HOME
ENV HOME /home/kasm-user
WORKDIR $HOME
RUN mkdir -p $HOME && chown -R 1000:0 $HOME
USER 1000

35
dockerfile-kasm-deluge Normal file
View File

@ -0,0 +1,35 @@
ARG BASE_TAG="develop"
ARG BASE_IMAGE="core-ubuntu-focal"
FROM kasmweb/$BASE_IMAGE:$BASE_TAG
USER root
ENV HOME /home/kasm-default-profile
ENV STARTUPDIR /dockerstartup
ENV INST_SCRIPTS $STARTUPDIR/install
WORKDIR $HOME
######### Customize Container Here ###########
COPY ./src/ubuntu/install/deluge $INST_SCRIPTS/deluge/
RUN bash $INST_SCRIPTS/deluge/install_deluge.sh && rm -rf $INST_SCRIPTS/deluge/
COPY ./src/ubuntu/install/deluge/custom_startup.sh $STARTUPDIR/custom_startup.sh
RUN chmod +x $STARTUPDIR/custom_startup.sh
RUN chmod 755 $STARTUPDIR/custom_startup.sh
# Update the desktop environment to be optimized for a single application
RUN cp $HOME/.config/xfce4/xfconf/single-application-xfce-perchannel-xml/* $HOME/.config/xfce4/xfconf/xfce-perchannel-xml/
RUN cp /usr/share/extra/backgrounds/bg_kasm.png /usr/share/extra/backgrounds/bg_default.png
RUN apt-get remove -y xfce4-panel
######### End Customizations ###########
RUN chown 1000:0 $HOME
ENV HOME /home/kasm-user
WORKDIR $HOME
RUN mkdir -p $HOME && chown -R 1000:0 $HOME
USER 1000

35
dockerfile-kasm-filezilla Normal file
View File

@ -0,0 +1,35 @@
ARG BASE_TAG="develop"
ARG BASE_IMAGE="core-ubuntu-focal"
FROM kasmweb/$BASE_IMAGE:$BASE_TAG
USER root
ENV HOME /home/kasm-default-profile
ENV STARTUPDIR /dockerstartup
ENV INST_SCRIPTS $STARTUPDIR/install
WORKDIR $HOME
######### Customize Container Here ###########
COPY ./src/ubuntu/install/filezilla $INST_SCRIPTS/filezilla/
RUN bash $INST_SCRIPTS/filezilla/install_filezilla.sh && rm -rf $INST_SCRIPTS/filezilla/
COPY ./src/ubuntu/install/filezilla/custom_startup.sh $STARTUPDIR/custom_startup.sh
RUN chmod +x $STARTUPDIR/custom_startup.sh
RUN chmod 755 $STARTUPDIR/custom_startup.sh
# Update the desktop environment to be optimized for a single application
RUN cp $HOME/.config/xfce4/xfconf/single-application-xfce-perchannel-xml/* $HOME/.config/xfce4/xfconf/xfce-perchannel-xml/
RUN cp /usr/share/extra/backgrounds/bg_kasm.png /usr/share/extra/backgrounds/bg_default.png
RUN apt-get remove -y xfce4-panel
######### End Customizations ###########
RUN chown 1000:0 $HOME
ENV HOME /home/kasm-user
WORKDIR $HOME
RUN mkdir -p $HOME && chown -R 1000:0 $HOME
USER 1000

35
dockerfile-kasm-inkscape Normal file
View File

@ -0,0 +1,35 @@
ARG BASE_TAG="develop"
ARG BASE_IMAGE="core-ubuntu-focal"
FROM kasmweb/$BASE_IMAGE:$BASE_TAG
USER root
ENV HOME /home/kasm-default-profile
ENV STARTUPDIR /dockerstartup
ENV INST_SCRIPTS $STARTUPDIR/install
WORKDIR $HOME
######### Customize Container Here ###########
COPY ./src/ubuntu/install/inkscape $INST_SCRIPTS/inkscape/
RUN bash $INST_SCRIPTS/inkscape/install_inkscape.sh && rm -rf $INST_SCRIPTS/inkscape/
COPY ./src/ubuntu/install/inkscape/custom_startup.sh $STARTUPDIR/custom_startup.sh
RUN chmod +x $STARTUPDIR/custom_startup.sh
RUN chmod 755 $STARTUPDIR/custom_startup.sh
# Update the desktop environment to be optimized for a single application
RUN cp $HOME/.config/xfce4/xfconf/single-application-xfce-perchannel-xml/* $HOME/.config/xfce4/xfconf/xfce-perchannel-xml/
RUN cp /usr/share/extra/backgrounds/bg_kasm.png /usr/share/extra/backgrounds/bg_default.png
RUN apt-get remove -y xfce4-panel
######### End Customizations ###########
RUN chown 1000:0 $HOME
ENV HOME /home/kasm-user
WORKDIR $HOME
RUN mkdir -p $HOME && chown -R 1000:0 $HOME
USER 1000

35
dockerfile-kasm-pinta Normal file
View File

@ -0,0 +1,35 @@
ARG BASE_TAG="develop"
ARG BASE_IMAGE="core-ubuntu-focal"
FROM kasmweb/$BASE_IMAGE:$BASE_TAG
USER root
ENV HOME /home/kasm-default-profile
ENV STARTUPDIR /dockerstartup
ENV INST_SCRIPTS $STARTUPDIR/install
WORKDIR $HOME
######### Customize Container Here ###########
COPY ./src/ubuntu/install/pinta $INST_SCRIPTS/pinta/
RUN bash $INST_SCRIPTS/pinta/install_pinta.sh && rm -rf $INST_SCRIPTS/pinta/
COPY ./src/ubuntu/install/pinta/custom_startup.sh $STARTUPDIR/custom_startup.sh
RUN chmod +x $STARTUPDIR/custom_startup.sh
RUN chmod 755 $STARTUPDIR/custom_startup.sh
# Update the desktop environment to be optimized for a single application
RUN cp $HOME/.config/xfce4/xfconf/single-application-xfce-perchannel-xml/* $HOME/.config/xfce4/xfconf/xfce-perchannel-xml/
RUN cp /usr/share/extra/backgrounds/bg_kasm.png /usr/share/extra/backgrounds/bg_default.png
RUN apt-get remove -y xfce4-panel
######### End Customizations ###########
RUN chown 1000:0 $HOME
ENV HOME /home/kasm-user
WORKDIR $HOME
RUN mkdir -p $HOME && chown -R 1000:0 $HOME
USER 1000

View File

@ -0,0 +1,35 @@
ARG BASE_TAG="develop"
ARG BASE_IMAGE="core-ubuntu-focal"
FROM kasmweb/$BASE_IMAGE:$BASE_TAG
USER root
ENV HOME /home/kasm-default-profile
ENV STARTUPDIR /dockerstartup
ENV INST_SCRIPTS $STARTUPDIR/install
WORKDIR $HOME
######### Customize Container Here ###########
COPY ./src/ubuntu/install/qbittorrent $INST_SCRIPTS/qbittorrent/
RUN bash $INST_SCRIPTS/qbittorrent/install_qbittorrent.sh && rm -rf $INST_SCRIPTS/qbittorrent/
COPY ./src/ubuntu/install/qbittorrent/custom_startup.sh $STARTUPDIR/custom_startup.sh
RUN chmod +x $STARTUPDIR/custom_startup.sh
RUN chmod 755 $STARTUPDIR/custom_startup.sh
# Update the desktop environment to be optimized for a single application
RUN cp $HOME/.config/xfce4/xfconf/single-application-xfce-perchannel-xml/* $HOME/.config/xfce4/xfconf/xfce-perchannel-xml/
RUN cp /usr/share/extra/backgrounds/bg_kasm.png /usr/share/extra/backgrounds/bg_default.png
RUN apt-get remove -y xfce4-panel
######### End Customizations ###########
RUN chown 1000:0 $HOME
ENV HOME /home/kasm-user
WORKDIR $HOME
RUN mkdir -p $HOME && chown -R 1000:0 $HOME
USER 1000

11
docs/atom/README.md Normal file
View File

@ -0,0 +1,11 @@
# About This Image
This Image contains a browser-accessible version of [ATOM](https://atom.io/).
![Screenshot][Image_Screenshot]
[Image_Screenshot]: https://5856039.fs1.hubspotusercontent-na1.net/hubfs/5856039/dockerhub/atom.png "Image Screenshot"
# Environment Variables
* `APP_ARGS` - Additional arguments to pass to the application when launched.

View File

@ -0,0 +1 @@
Atom Editor for Kasm Workspaces

11
docs/audacity/README.md Normal file
View File

@ -0,0 +1,11 @@
# About This Image
This Image contains a browser-accessible version of [Audacity](https://www.audacityteam.org/).
![Screenshot][Image_Screenshot]
[Image_Screenshot]: https://5856039.fs1.hubspotusercontent-na1.net/hubfs/5856039/dockerhub/audacity.png "Image Screenshot"
# Environment Variables
* `APP_ARGS` - Additional arguments to pass to the application when launched.

View File

@ -0,0 +1 @@
Audacity for Kasm Workspaces

11
docs/deluge/README.md Normal file
View File

@ -0,0 +1,11 @@
# About This Image
This Image contains a browser-accessible version of [Deluge](https://deluge-torrent.org/).
![Screenshot][Image_Screenshot]
[Image_Screenshot]: https://5856039.fs1.hubspotusercontent-na1.net/hubfs/5856039/dockerhub/deluge.png "Image Screenshot"
# Environment Variables
* `APP_ARGS` - Additional arguments to pass to the application when launched.

View File

@ -0,0 +1 @@
Deluge for Kasm Workspaces

11
docs/filezilla/README.md Normal file
View File

@ -0,0 +1,11 @@
# About This Image
This Image contains a browser-accessible version of [FileZilla](https://filezilla-project.org/).
![Screenshot][Image_Screenshot]
[Image_Screenshot]: https://5856039.fs1.hubspotusercontent-na1.net/hubfs/5856039/dockerhub/filezilla.png "Image Screenshot"
# Environment Variables
* `APP_ARGS` - Additional arguments to pass to the application when launched.

View File

@ -0,0 +1 @@
FileZilla for Kasm Workspaces

11
docs/inkscape/README.md Normal file
View File

@ -0,0 +1,11 @@
# About This Image
This Image contains a browser-accessible version of [Inkscape](https://inkscape.org/).
![Screenshot][Image_Screenshot]
[Image_Screenshot]: https://5856039.fs1.hubspotusercontent-na1.net/hubfs/5856039/dockerhub/inkscape.png "Image Screenshot"
# Environment Variables
* `APP_ARGS` - Additional arguments to pass to the application when launched.

View File

@ -0,0 +1 @@
Inkscape for Kasm Workspaces

11
docs/pinta/README.md Normal file
View File

@ -0,0 +1,11 @@
# About This Image
This Image contains a browser-accessible version of [Pinta](https://www.pinta-project.com/).
![Screenshot][Image_Screenshot]
[Image_Screenshot]: https://5856039.fs1.hubspotusercontent-na1.net/hubfs/5856039/dockerhub/pinta.png "Image Screenshot"
# Environment Variables
* `APP_ARGS` - Additional arguments to pass to the application when launched.

View File

@ -0,0 +1 @@
Pinta for Kasm Workspaces

View File

@ -0,0 +1,11 @@
# About This Image
This Image contains a browser-accessible version of [qBittorrent](https://www.qbittorrent.org/).
![Screenshot][Image_Screenshot]
[Image_Screenshot]: https://5856039.fs1.hubspotusercontent-na1.net/hubfs/5856039/dockerhub/qbittorrent.png "Image Screenshot"
# Environment Variables
* `APP_ARGS` - Additional arguments to pass to the application when launched.

View File

@ -0,0 +1 @@
qBittorrent for Kasm Workspaces

View File

@ -0,0 +1,84 @@
#!/usr/bin/env bash
set -ex
START_COMMAND="atom --no-sandbox --disable-setuid-sandbox"
PGREP="atom"
export MAXIMIZE="true"
export MAXIMIZE_NAME="Atom"
MAXIMIZE_SCRIPT=$STARTUPDIR/maximize_window.sh
DEFAULT_ARGS=""
ARGS=${APP_ARGS:-$DEFAULT_ARGS}
options=$(getopt -o gau: -l go,assign,url: -n "$0" -- "$@") || exit
eval set -- "$options"
while [[ $1 != -- ]]; do
case $1 in
-g|--go) GO='true'; shift 1;;
-a|--assign) ASSIGN='true'; shift 1;;
-u|--url) OPT_URL=$2; shift 2;;
*) echo "bad option: $1" >&2; exit 1;;
esac
done
shift
# Process non-option arguments.
for arg; do
echo "arg! $arg"
done
FORCE=$2
kasm_exec() {
if [ -n "$OPT_URL" ] ; then
URL=$OPT_URL
elif [ -n "$1" ] ; then
URL=$1
fi
# Since we are execing into a container that already has the browser running from startup,
# when we don't have a URL to open we want to do nothing. Otherwise a second browser instance would open.
if [ -n "$URL" ] ; then
/usr/bin/filter_ready
/usr/bin/desktop_ready
bash ${MAXIMIZE_SCRIPT} &
$START_COMMAND $ARGS $OPT_URL
else
echo "No URL specified for exec command. Doing nothing."
fi
}
kasm_startup() {
if [ -n "$KASM_URL" ] ; then
URL=$KASM_URL
elif [ -z "$URL" ] ; then
URL=$LAUNCH_URL
fi
if [ -z "$DISABLE_CUSTOM_STARTUP" ] || [ -n "$FORCE" ] ; then
echo "Entering process startup loop"
set +x
while true
do
if ! pgrep -x $PGREP > /dev/null
then
/usr/bin/filter_ready
/usr/bin/desktop_ready
set +e
bash ${MAXIMIZE_SCRIPT} &
$START_COMMAND $ARGS $URL
set -e
fi
sleep 1
done
set -x
fi
}
if [ -n "$GO" ] || [ -n "$ASSIGN" ] ; then
kasm_exec
else
kasm_startup
fi

View File

@ -0,0 +1,12 @@
#!/usr/bin/env bash
set -ex
wget -qO - https://packagecloud.io/AtomEditor/atom/gpgkey | apt-key add -
echo "deb [arch=amd64] https://packagecloud.io/AtomEditor/atom/any/ any main" \
> /etc/apt/sources.list.d/atom.list
apt-get update
apt-get install -y atom
# Desktop Icon
cp /usr/share/applications/atom.desktop $HOME/Desktop/
chmod +x $HOME/Desktop/atom.desktop

View File

@ -0,0 +1,2 @@
[GUI]
ShowSplashScreen=0

View File

@ -0,0 +1,84 @@
#!/usr/bin/env bash
set -ex
START_COMMAND="audacity"
PGREP="audacity"
export MAXIMIZE="true"
export MAXIMIZE_NAME="Audacity"
MAXIMIZE_SCRIPT=$STARTUPDIR/maximize_window.sh
DEFAULT_ARGS=""
ARGS=${APP_ARGS:-$DEFAULT_ARGS}
options=$(getopt -o gau: -l go,assign,url: -n "$0" -- "$@") || exit
eval set -- "$options"
while [[ $1 != -- ]]; do
case $1 in
-g|--go) GO='true'; shift 1;;
-a|--assign) ASSIGN='true'; shift 1;;
-u|--url) OPT_URL=$2; shift 2;;
*) echo "bad option: $1" >&2; exit 1;;
esac
done
shift
# Process non-option arguments.
for arg; do
echo "arg! $arg"
done
FORCE=$2
kasm_exec() {
if [ -n "$OPT_URL" ] ; then
URL=$OPT_URL
elif [ -n "$1" ] ; then
URL=$1
fi
# Since we are execing into a container that already has the browser running from startup,
# when we don't have a URL to open we want to do nothing. Otherwise a second browser instance would open.
if [ -n "$URL" ] ; then
/usr/bin/filter_ready
/usr/bin/desktop_ready
bash ${MAXIMIZE_SCRIPT} &
$START_COMMAND $ARGS $OPT_URL
else
echo "No URL specified for exec command. Doing nothing."
fi
}
kasm_startup() {
if [ -n "$KASM_URL" ] ; then
URL=$KASM_URL
elif [ -z "$URL" ] ; then
URL=$LAUNCH_URL
fi
if [ -z "$DISABLE_CUSTOM_STARTUP" ] || [ -n "$FORCE" ] ; then
echo "Entering process startup loop"
set +x
while true
do
if ! pgrep -x $PGREP > /dev/null
then
/usr/bin/filter_ready
/usr/bin/desktop_ready
set +e
bash ${MAXIMIZE_SCRIPT} &
$START_COMMAND $ARGS $URL
set -e
fi
sleep 1
done
set -x
fi
}
if [ -n "$GO" ] || [ -n "$ASSIGN" ] ; then
kasm_exec
else
kasm_startup
fi

View File

@ -0,0 +1,14 @@
#!/usr/bin/env bash
set -ex
apt-get update
apt-get install -y audacity
rm -rf \
/var/lib/apt/lists/* \
/var/tmp/*
# Default settings and desktop icon
mkdir -p $HOME/.audacity-data/
cp /dockerstartup/install/audacity/audacity.cfg $HOME/.audacity-data/
cp /usr/share/applications/audacity.desktop $HOME/Desktop/
chmod +x $HOME/Desktop/audacity.desktop

View File

@ -0,0 +1,84 @@
#!/usr/bin/env bash
set -ex
START_COMMAND="deluge"
PGREP="deluge"
export MAXIMIZE="true"
export MAXIMIZE_NAME="Deluge"
MAXIMIZE_SCRIPT=$STARTUPDIR/maximize_window.sh
DEFAULT_ARGS=""
ARGS=${APP_ARGS:-$DEFAULT_ARGS}
options=$(getopt -o gau: -l go,assign,url: -n "$0" -- "$@") || exit
eval set -- "$options"
while [[ $1 != -- ]]; do
case $1 in
-g|--go) GO='true'; shift 1;;
-a|--assign) ASSIGN='true'; shift 1;;
-u|--url) OPT_URL=$2; shift 2;;
*) echo "bad option: $1" >&2; exit 1;;
esac
done
shift
# Process non-option arguments.
for arg; do
echo "arg! $arg"
done
FORCE=$2
kasm_exec() {
if [ -n "$OPT_URL" ] ; then
URL=$OPT_URL
elif [ -n "$1" ] ; then
URL=$1
fi
# Since we are execing into a container that already has the browser running from startup,
# when we don't have a URL to open we want to do nothing. Otherwise a second browser instance would open.
if [ -n "$URL" ] ; then
/usr/bin/filter_ready
/usr/bin/desktop_ready
bash ${MAXIMIZE_SCRIPT} &
$START_COMMAND $ARGS $OPT_URL
else
echo "No URL specified for exec command. Doing nothing."
fi
}
kasm_startup() {
if [ -n "$KASM_URL" ] ; then
URL=$KASM_URL
elif [ -z "$URL" ] ; then
URL=$LAUNCH_URL
fi
if [ -z "$DISABLE_CUSTOM_STARTUP" ] || [ -n "$FORCE" ] ; then
echo "Entering process startup loop"
set +x
while true
do
if ! pgrep -x $PGREP > /dev/null
then
/usr/bin/filter_ready
/usr/bin/desktop_ready
set +e
bash ${MAXIMIZE_SCRIPT} &
$START_COMMAND $ARGS $URL
set -e
fi
sleep 1
done
set -x
fi
}
if [ -n "$GO" ] || [ -n "$ASSIGN" ] ; then
kasm_exec
else
kasm_startup
fi

View File

@ -0,0 +1,13 @@
#!/usr/bin/env bash
set -ex
apt-get update
apt-get install -y software-properties-common
add-apt-repository -y ppa:deluge-team/stable
apt-get update
apt-get install -y deluge
# Desktop Icon
cp /usr/share/applications/deluge.desktop $HOME/Desktop/
chmod +x $HOME/Desktop/deluge.desktop

View File

@ -0,0 +1,84 @@
#!/usr/bin/env bash
set -ex
START_COMMAND="filezilla"
PGREP="filezilla"
export MAXIMIZE="true"
export MAXIMIZE_NAME="FileZilla"
MAXIMIZE_SCRIPT=$STARTUPDIR/maximize_window.sh
DEFAULT_ARGS=""
ARGS=${APP_ARGS:-$DEFAULT_ARGS}
options=$(getopt -o gau: -l go,assign,url: -n "$0" -- "$@") || exit
eval set -- "$options"
while [[ $1 != -- ]]; do
case $1 in
-g|--go) GO='true'; shift 1;;
-a|--assign) ASSIGN='true'; shift 1;;
-u|--url) OPT_URL=$2; shift 2;;
*) echo "bad option: $1" >&2; exit 1;;
esac
done
shift
# Process non-option arguments.
for arg; do
echo "arg! $arg"
done
FORCE=$2
kasm_exec() {
if [ -n "$OPT_URL" ] ; then
URL=$OPT_URL
elif [ -n "$1" ] ; then
URL=$1
fi
# Since we are execing into a container that already has the browser running from startup,
# when we don't have a URL to open we want to do nothing. Otherwise a second browser instance would open.
if [ -n "$URL" ] ; then
/usr/bin/filter_ready
/usr/bin/desktop_ready
bash ${MAXIMIZE_SCRIPT} &
$START_COMMAND $ARGS $OPT_URL
else
echo "No URL specified for exec command. Doing nothing."
fi
}
kasm_startup() {
if [ -n "$KASM_URL" ] ; then
URL=$KASM_URL
elif [ -z "$URL" ] ; then
URL=$LAUNCH_URL
fi
if [ -z "$DISABLE_CUSTOM_STARTUP" ] || [ -n "$FORCE" ] ; then
echo "Entering process startup loop"
set +x
while true
do
if ! pgrep -x $PGREP > /dev/null
then
/usr/bin/filter_ready
/usr/bin/desktop_ready
set +e
bash ${MAXIMIZE_SCRIPT} &
$START_COMMAND $ARGS $URL
set -e
fi
sleep 1
done
set -x
fi
}
if [ -n "$GO" ] || [ -n "$ASSIGN" ] ; then
kasm_exec
else
kasm_startup
fi

View File

@ -0,0 +1,139 @@
<?xml version="1.0" encoding="UTF-8"?>
<FileZilla3 version="3.46.3" platform="*nix">
<Settings>
<Setting name="Use Pasv mode">1</Setting>
<Setting name="Limit local ports">0</Setting>
<Setting name="Limit ports low">6000</Setting>
<Setting name="Limit ports high">7000</Setting>
<Setting name="Limit ports offset">0</Setting>
<Setting name="External IP mode">0</Setting>
<Setting name="External IP"></Setting>
<Setting name="External address resolver">http://ip.filezilla-project.org/ip.php</Setting>
<Setting name="Last resolved IP"></Setting>
<Setting name="No external ip on local conn">1</Setting>
<Setting name="Pasv reply fallback mode">0</Setting>
<Setting name="Timeout">20</Setting>
<Setting name="Logging Debug Level">0</Setting>
<Setting name="Logging Raw Listing">0</Setting>
<Setting name="fzsftp executable"></Setting>
<Setting name="fzstorj executable"></Setting>
<Setting name="Allow transfermode fallback">1</Setting>
<Setting name="Reconnect count">2</Setting>
<Setting name="Reconnect delay">5</Setting>
<Setting name="Enable speed limits">0</Setting>
<Setting name="Speedlimit inbound">1000</Setting>
<Setting name="Speedlimit outbound">100</Setting>
<Setting name="Speedlimit burst tolerance">0</Setting>
<Setting name="Preallocate space">0</Setting>
<Setting name="View hidden files">0</Setting>
<Setting name="Preserve timestamps">0</Setting>
<Setting name="Socket recv buffer size (v2)">4194304</Setting>
<Setting name="Socket send buffer size (v2)">262144</Setting>
<Setting name="FTP Keep-alive commands">0</Setting>
<Setting name="FTP Proxy type">0</Setting>
<Setting name="FTP Proxy host"></Setting>
<Setting name="FTP Proxy user"></Setting>
<Setting name="FTP Proxy password"></Setting>
<Setting name="FTP Proxy login sequence"></Setting>
<Setting name="SFTP keyfiles"></Setting>
<Setting name="SFTP compression">0</Setting>
<Setting name="Proxy type">0</Setting>
<Setting name="Proxy host"></Setting>
<Setting name="Proxy port">0</Setting>
<Setting name="Proxy user"></Setting>
<Setting name="Proxy password"></Setting>
<Setting name="Logging file"></Setting>
<Setting name="Logging filesize limit">10</Setting>
<Setting name="Logging show detailed logs">0</Setting>
<Setting name="Size format">3</Setting>
<Setting name="Size thousands separator">1</Setting>
<Setting name="Size decimal places">1</Setting>
<Setting name="TCP Keepalive Interval">15</Setting>
<Setting name="Cache TTL">600</Setting>
<Setting name="Number of Transfers">2</Setting>
<Setting name="Ascii Binary mode">0</Setting>
<Setting name="Auto Ascii files">am|asp|bat|c|cfm|cgi|conf|cpp|css|dhtml|diz|h|hpp|htm|html|in|inc|java|js|jsp|lua|m4|mak|md5|nfo|nsi|pas|patch|pem|php|phtml|pl|po|py|qmail|sh|sha1|sha256|sha512|shtml|sql|svg|tcl|tpl|txt|vbs|xhtml|xml|xrc</Setting>
<Setting name="Auto Ascii no extension">1</Setting>
<Setting name="Auto Ascii dotfiles">1</Setting>
<Setting name="Language Code"></Setting>
<Setting name="Concurrent download limit">0</Setting>
<Setting name="Concurrent upload limit">0</Setting>
<Setting name="Update Check">1</Setting>
<Setting name="Update Check Interval">7</Setting>
<Setting name="Last automatic update check"></Setting>
<Setting name="Last automatic update version"></Setting>
<Setting name="Update Check New Version"></Setting>
<Setting name="Update Check Check Beta">0</Setting>
<Setting name="Show debug menu">0</Setting>
<Setting name="File exists action download">0</Setting>
<Setting name="File exists action upload">0</Setting>
<Setting name="Allow ascii resume">0</Setting>
<Setting name="Greeting version">3.46.3</Setting>
<Setting name="Greeting resources"></Setting>
<Setting name="Onetime Dialogs"></Setting>
<Setting name="Show Tree Local">1</Setting>
<Setting name="Show Tree Remote">1</Setting>
<Setting name="File Pane Layout">0</Setting>
<Setting name="File Pane Swap">0</Setting>
<Setting name="Filelist directory sort">0</Setting>
<Setting name="Filelist name sort">1</Setting>
<Setting name="Queue successful autoclear">0</Setting>
<Setting name="Local filelist sortorder">0 0</Setting>
<Setting name="Remote filelist sortorder">0 0</Setting>
<Setting name="Time Format"></Setting>
<Setting name="Date Format"></Setting>
<Setting name="Show message log">1</Setting>
<Setting name="Show queue">1</Setting>
<Setting name="Default editor"></Setting>
<Setting name="Always use default editor">0</Setting>
<Setting name="Inherit system associations">1</Setting>
<Setting name="Custom file associations"></Setting>
<Setting name="Comparison mode">1</Setting>
<Setting name="Comparison threshold">1</Setting>
<Setting name="Site Manager position"></Setting>
<Setting name="Icon theme">default</Setting>
<Setting name="Icon scale">125</Setting>
<Setting name="Timestamp in message log">0</Setting>
<Setting name="Sitemanager last selected"></Setting>
<Setting name="Local filelist shown columns">1111</Setting>
<Setting name="Remote filelist shown columns">111111</Setting>
<Setting name="Local filelist column order">0,1,2,3</Setting>
<Setting name="Remote filelist column order">0,1,2,3,4,5</Setting>
<Setting name="Filelist status bar">1</Setting>
<Setting name="Filter toggle state">0</Setting>
<Setting name="Show quickconnect bar">1</Setting>
<Setting name="Messagelog position">0</Setting>
<Setting name="File doubleclick action">0</Setting>
<Setting name="Dir doubleclick action">0</Setting>
<Setting name="Minimize to tray">0</Setting>
<Setting name="Search column widths"></Setting>
<Setting name="Search column shown"></Setting>
<Setting name="Search column order"></Setting>
<Setting name="Search window size"></Setting>
<Setting name="Comparison hide identical">0</Setting>
<Setting name="Search sort order"></Setting>
<Setting name="Edit track local">1</Setting>
<Setting name="Prevent idle sleep">1</Setting>
<Setting name="Filteredit window size"></Setting>
<Setting name="Enable invalid char filter">1</Setting>
<Setting name="Invalid char replace">_</Setting>
<Setting name="Already connected choice">0</Setting>
<Setting name="Edit status dialog size"></Setting>
<Setting name="Display current speed">0</Setting>
<Setting name="Toolbar hidden">0</Setting>
<Setting name="Strip VMS revisions">0</Setting>
<Setting name="Startup action">0</Setting>
<Setting name="Prompt password save">1</Setting>
<Setting name="Persistent Choices">0</Setting>
<Setting name="Queue completion action">1</Setting>
<Setting name="Queue completion command"></Setting>
<Setting name="Drag and Drop disabled">0</Setting>
<Setting name="Disable update footer">0</Setting>
<Setting name="Master password encryptor"></Setting>
<Setting name="Config Location">/home/kasm-user/.config/filezilla/</Setting>
<Setting name="Kiosk mode">0</Setting>
<Setting name="Disable update check">1</Setting>
<Setting name="Cache directory"></Setting>
</Settings>
</FileZilla3>

View File

@ -0,0 +1,14 @@
#!/usr/bin/env bash
set -ex
apt-get update
apt-get install -y filezilla
rm -rf \
/var/lib/apt/lists/* \
/var/tmp/*
# Default settings and desktop icon
mkdir -p $HOME/.config/filezilla
cp /dockerstartup/install/filezilla/filezilla.xml $HOME/.config/filezilla
cp /usr/share/applications/filezilla.desktop $HOME/Desktop/
chmod +x $HOME/Desktop/filezilla.desktop

View File

@ -0,0 +1,84 @@
#!/usr/bin/env bash
set -ex
START_COMMAND="inkscape"
PGREP="inkscape"
export MAXIMIZE="true"
export MAXIMIZE_NAME="Inkscape"
MAXIMIZE_SCRIPT=$STARTUPDIR/maximize_window.sh
DEFAULT_ARGS=""
ARGS=${APP_ARGS:-$DEFAULT_ARGS}
options=$(getopt -o gau: -l go,assign,url: -n "$0" -- "$@") || exit
eval set -- "$options"
while [[ $1 != -- ]]; do
case $1 in
-g|--go) GO='true'; shift 1;;
-a|--assign) ASSIGN='true'; shift 1;;
-u|--url) OPT_URL=$2; shift 2;;
*) echo "bad option: $1" >&2; exit 1;;
esac
done
shift
# Process non-option arguments.
for arg; do
echo "arg! $arg"
done
FORCE=$2
kasm_exec() {
if [ -n "$OPT_URL" ] ; then
URL=$OPT_URL
elif [ -n "$1" ] ; then
URL=$1
fi
# Since we are execing into a container that already has the browser running from startup,
# when we don't have a URL to open we want to do nothing. Otherwise a second browser instance would open.
if [ -n "$URL" ] ; then
/usr/bin/filter_ready
/usr/bin/desktop_ready
bash ${MAXIMIZE_SCRIPT} &
$START_COMMAND $ARGS $OPT_URL
else
echo "No URL specified for exec command. Doing nothing."
fi
}
kasm_startup() {
if [ -n "$KASM_URL" ] ; then
URL=$KASM_URL
elif [ -z "$URL" ] ; then
URL=$LAUNCH_URL
fi
if [ -z "$DISABLE_CUSTOM_STARTUP" ] || [ -n "$FORCE" ] ; then
echo "Entering process startup loop"
set +x
while true
do
if ! pgrep -x $PGREP > /dev/null
then
/usr/bin/filter_ready
/usr/bin/desktop_ready
set +e
bash ${MAXIMIZE_SCRIPT} &
$START_COMMAND $ARGS $URL
set -e
fi
sleep 1
done
set -x
fi
}
if [ -n "$GO" ] || [ -n "$ASSIGN" ] ; then
kasm_exec
else
kasm_startup
fi

View File

@ -0,0 +1,13 @@
#!/usr/bin/env bash
set -ex
apt-get update
apt-get install -y software-properties-common
add-apt-repository -y ppa:inkscape.dev/stable
apt-get update
apt-get install -y inkscape
# Default settings and desktop icon
cp /usr/share/applications/org.inkscape.Inkscape.desktop $HOME/Desktop/
chmod +x $HOME/Desktop/org.inkscape.Inkscape.desktop

View File

@ -0,0 +1,84 @@
#!/usr/bin/env bash
set -ex
START_COMMAND="pinta"
PGREP="pinta"
export MAXIMIZE="true"
export MAXIMIZE_NAME="Pinta"
MAXIMIZE_SCRIPT=$STARTUPDIR/maximize_window.sh
DEFAULT_ARGS=""
ARGS=${APP_ARGS:-$DEFAULT_ARGS}
options=$(getopt -o gau: -l go,assign,url: -n "$0" -- "$@") || exit
eval set -- "$options"
while [[ $1 != -- ]]; do
case $1 in
-g|--go) GO='true'; shift 1;;
-a|--assign) ASSIGN='true'; shift 1;;
-u|--url) OPT_URL=$2; shift 2;;
*) echo "bad option: $1" >&2; exit 1;;
esac
done
shift
# Process non-option arguments.
for arg; do
echo "arg! $arg"
done
FORCE=$2
kasm_exec() {
if [ -n "$OPT_URL" ] ; then
URL=$OPT_URL
elif [ -n "$1" ] ; then
URL=$1
fi
# Since we are execing into a container that already has the browser running from startup,
# when we don't have a URL to open we want to do nothing. Otherwise a second browser instance would open.
if [ -n "$URL" ] ; then
/usr/bin/filter_ready
/usr/bin/desktop_ready
bash ${MAXIMIZE_SCRIPT} &
$START_COMMAND $ARGS $OPT_URL
else
echo "No URL specified for exec command. Doing nothing."
fi
}
kasm_startup() {
if [ -n "$KASM_URL" ] ; then
URL=$KASM_URL
elif [ -z "$URL" ] ; then
URL=$LAUNCH_URL
fi
if [ -z "$DISABLE_CUSTOM_STARTUP" ] || [ -n "$FORCE" ] ; then
echo "Entering process startup loop"
set +x
while true
do
if ! pgrep -x $PGREP > /dev/null
then
/usr/bin/filter_ready
/usr/bin/desktop_ready
set +e
bash ${MAXIMIZE_SCRIPT} &
$START_COMMAND $ARGS $URL
set -e
fi
sleep 1
done
set -x
fi
}
if [ -n "$GO" ] || [ -n "$ASSIGN" ] ; then
kasm_exec
else
kasm_startup
fi

View File

@ -0,0 +1,12 @@
#!/usr/bin/env bash
set -ex
apt-get update
apt-get install -y pinta
rm -rf \
/var/lib/apt/lists/* \
/var/tmp/*
# Default settings and desktop icon
cp /usr/share/applications/pinta.desktop $HOME/Desktop/
chmod +x $HOME/Desktop/pinta.desktop

View File

@ -0,0 +1,84 @@
#!/usr/bin/env bash
set -ex
START_COMMAND="qbittorrent --no-splash"
PGREP="qbittorrent"
export MAXIMIZE="true"
export MAXIMIZE_NAME="qBittorrent"
MAXIMIZE_SCRIPT=$STARTUPDIR/maximize_window.sh
DEFAULT_ARGS=""
ARGS=${APP_ARGS:-$DEFAULT_ARGS}
options=$(getopt -o gau: -l go,assign,url: -n "$0" -- "$@") || exit
eval set -- "$options"
while [[ $1 != -- ]]; do
case $1 in
-g|--go) GO='true'; shift 1;;
-a|--assign) ASSIGN='true'; shift 1;;
-u|--url) OPT_URL=$2; shift 2;;
*) echo "bad option: $1" >&2; exit 1;;
esac
done
shift
# Process non-option arguments.
for arg; do
echo "arg! $arg"
done
FORCE=$2
kasm_exec() {
if [ -n "$OPT_URL" ] ; then
URL=$OPT_URL
elif [ -n "$1" ] ; then
URL=$1
fi
# Since we are execing into a container that already has the browser running from startup,
# when we don't have a URL to open we want to do nothing. Otherwise a second browser instance would open.
if [ -n "$URL" ] ; then
/usr/bin/filter_ready
/usr/bin/desktop_ready
bash ${MAXIMIZE_SCRIPT} &
$START_COMMAND $ARGS $OPT_URL
else
echo "No URL specified for exec command. Doing nothing."
fi
}
kasm_startup() {
if [ -n "$KASM_URL" ] ; then
URL=$KASM_URL
elif [ -z "$URL" ] ; then
URL=$LAUNCH_URL
fi
if [ -z "$DISABLE_CUSTOM_STARTUP" ] || [ -n "$FORCE" ] ; then
echo "Entering process startup loop"
set +x
while true
do
if ! pgrep -x $PGREP > /dev/null
then
/usr/bin/filter_ready
/usr/bin/desktop_ready
set +e
bash ${MAXIMIZE_SCRIPT} &
$START_COMMAND $ARGS $URL
set -e
fi
sleep 1
done
set -x
fi
}
if [ -n "$GO" ] || [ -n "$ASSIGN" ] ; then
kasm_exec
else
kasm_startup
fi

View File

@ -0,0 +1,15 @@
#!/usr/bin/env bash
set -ex
apt-get update
apt-get install -y software-properties-common
add-apt-repository -y ppa:qbittorrent-team/qbittorrent-stable
apt-get update
apt-get install -y qbittorrent
# Default settings and desktop icon
mkdir -p $HOME/.config/qBittorrent
cp /dockerstartup/install/qbittorrent/qBittorrent.conf $HOME/.config/qBittorrent
cp /usr/share/applications/org.qbittorrent.qBittorrent.desktop $HOME/Desktop/
chmod +x $HOME/Desktop/org.qbittorrent.qBittorrent.desktop

View File

@ -0,0 +1,2 @@
[LegalNotice]
Accepted=true