From f7a464c6c23ead35c8240bd91cddef0e6251792c Mon Sep 17 00:00:00 2001 From: MB <michael.blaschek@univie.ac.at> Date: Fri, 17 Jan 2025 14:18:23 +0100 Subject: [PATCH] Add WinApps configuration and setup instructions for IMGW --- README.md | 46 +++++++++++++++++++++++------ compose.yaml | 7 +++++ icons/winapps-desktop.png | Bin 0 -> 33281 bytes setup.sh | 59 +++++++++++++++++++++++++++++++++++++- 4 files changed, 102 insertions(+), 10 deletions(-) create mode 100644 icons/winapps-desktop.png diff --git a/README.md b/README.md index a4c5968..6dc5896 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,7 @@ # Adapted Version of Winapps to IMGW @UNIVIE +**Be warned this does not work well on Laptop with too little Memory. 4GB for Windows is required.** Run Windows applications (including [Microsoft 365](https://www.microsoft365.com/) and [Adobe Creative Cloud](https://www.adobe.com/creativecloud.html)) on GNU/Linux with `KDE Plasma`, `GNOME` or `XFCE`, integrated seamlessly as if they were native to the OS. @@ -280,12 +281,16 @@ Contributing to the list of supported applications is encouraged through submiss ### IMGW setup -Please folow these steps to make it work: +Please follow these steps to make it work: + 1. install podman and podman compose for the Virtualization of Windows -2. Download preconfigured windows+office image +2. Download preconfigured windows+office image (IMGW only) 3. install winapps on your computer -It is necessary to install podman on your system. +It is necessary to install a container manager (here: podman) on your system. The advantage is that we can use these containers as user, not root required. + +The example here gives commands for Ubuntu, other distributions should work as well. + ```sh # install podman and its dependencies # maybe find information here: https://podman.io/docs/installation @@ -293,6 +298,8 @@ It is necessary to install podman on your system. # for ubuntu: sudo apt-get install podman slirp4netns # install dependencies for winapps (or see below for other distros) + +# if you can not install freerdp3 then use the flatpak version (see below) sudo apt-get install dialog freerdp3-x11 iproute2 libnotify-bin netcat-openbsd # install podman compose script pip3 install --user podman-compose @@ -337,12 +344,33 @@ X/Twitter: @Podman_io Mastodon: @Podman_io@fosstodon.org ``` -now you are ready to download the specific windows and office image +now you are ready to download the specific windows and office image. Open a terminal and run the following commands. + +```sh +# get the bootstrap script and execute +curl -o bootstrap_winapps.sh http://fileserverup.devx1.img.univie.ac.at/bootstrap_winapps.sh +# execute the script using bash in a terminal +bash bootstrap_winapps.sh +# this will do a lot. +``` + +now you should be finished. There should be a few new apps on your desktop: + + +1. WinApps +2. Windows +3. Excel +4. Word +5. Powerpoint +6. Explorer +7. Publisher +The WinApps desktop application is just a wrapper for you to start up and shutdown the windows virtual machine. So what WinApps does, is to launch a VM inside a container and allow forwarding a virtual desktop for just the applications (e.g. Word, ...). They will seem native. +### Normal Setup -### Step 1: Configure a Windows VM +#### Step 1: Configure a Windows VM Both `Docker` and `Podman` are recommended backends for running the Windows virtual machine, as they facilitate an automated Windows installation process. WinApps is also compatible with `libvirt`. While this method requires considerably more manual configuration, it also provides greater virtual machine customisation options. All three methods leverage the `KVM` hypervisor, ensuring excellent virtual machine performance. Ultimately, the choice of backend depends on your specific use case. The following guides are available: @@ -351,7 +379,7 @@ The following guides are available: If you already have a Windows VM or server you wish to use with WinApps, you will need to merge `install/RDPApps.reg` into the Windows Registry manually. -### Step 2: Install Dependencies +#### Step 2: Install Dependencies Install the required dependencies. - Debian/Ubuntu: ```bash @@ -378,7 +406,7 @@ Install the required dependencies. > ``` > However, if you have weird issues like [#233](https://github.com/winapps-org/winapps/issues/233) when running Flatpak, please compile FreeRDP from source according to [this guide](https://github.com/FreeRDP/FreeRDP/wiki/Compilation). -### Step 3: Create a WinApps Configuration File +#### Step 3: Create a WinApps Configuration File Create a configuration file at `~/.config/winapps/winapps.conf` containing the following: ```bash ################################## @@ -488,7 +516,7 @@ FREERDP_COMMAND="" > [!NOTE] > If you wish to use an alternative WinApps backend (other than `Docker`), uncomment and change `WAFLAVOR="docker"` to `WAFLAVOR="podman"` or `WAFLAVOR="libvirt"`. -#### Configuration Options Explained +##### Configuration Options Explained - If using a pre-existing Windows RDP server on your LAN, you must use `RDP_IP` to specify the location of the Windows server. You may also wish to configure a static IP address for this server. - If running a Windows VM using `libvirt` with NAT enabled, leave `RDP_IP` commented out and WinApps will auto-detect the local IP address for the VM. - For domain users, you can uncomment and change `RDP_DOMAIN`. @@ -498,7 +526,7 @@ FREERDP_COMMAND="" - If you enable `DEBUG`, a log will be created on each application start in `~/.local/share/winapps/winapps.log`. - If using a system on which the FreeRDP command is not `xfreerdp` or `xfreerdp3`, the correct command can be specified using `FREERDP_COMMAND`. -### Step 4: Run the WinApps Installer +#### Step 4: Run the WinApps Installer Run the WinApps installer. ```bash bash <(curl https://gitlab.phaidra.org/imgw/winapps/-/raw/main/setup.sh) diff --git a/compose.yaml b/compose.yaml index d5d8c7f..3bd9357 100644 --- a/compose.yaml +++ b/compose.yaml @@ -6,6 +6,8 @@ # For documentation, FAQ, additional configuration options and technical help, visit: https://github.com/dockur/windows +# Modified for IMGW + name: "winapps" # Docker Compose Project Name. volumes: # Create Volume 'data'. @@ -46,3 +48,8 @@ services: - /dev/kvm # Enable KVM. #- /dev/sdX:/disk1 # Uncomment to mount a disk directly within the Windows VM (Note: 'disk1' will be mounted as the main drive). #- /dev/sdY:/disk2 # Uncomment to mount a disk directly within the Windows VM (Note: 'disk2' and higher will be mounted as secondary drives). + #annotations: + # Maybe this allows the container to be correctly shutdown. + #org.systemd.property.KillMode: "none" + #org.systemd.property.TimeoutStopSec: 420 + diff --git a/icons/winapps-desktop.png b/icons/winapps-desktop.png new file mode 100644 index 0000000000000000000000000000000000000000..c6ca06e9164dc39cfe66dbc6a55ec88d64193b5a GIT binary patch literal 33281 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%0DE@hY?Z!RYO=?Qi$K<~^Oi_lMM< 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 E0B!Vw_y7O^ literal 0 HcmV?d00001 diff --git a/setup.sh b/setup.sh index 34a04e9..f4b3895 100755 --- a/setup.sh +++ b/setup.sh @@ -1294,6 +1294,62 @@ Comment=Microsoft Windows RDP Session" echo -e "${DONE_TEXT}Done!${CLEAR_TEXT}" } +# Name: 'waConfigureWinApps' +# Role: Create an application entry for launching the WinApps container +function waConfigureWinApps() { + # Print feedback. + echo -n "Creating an application entry for WinApps... " + + # Declare variables. + local WIN_DESKTOP="" # Stores the '.desktop' file to launch a Windows RDP session. + local WIN_BASH="" # Stores the bash script to launch a Windows RDP session. + + # Determine the compose command. + case "$WAFLAVOR" in + "docker") COMPOSE_COMMAND="docker compose" ;; + "podman") COMPOSE_COMMAND="podman-compose" ;; + esac + WIN_BASH="\ +#!/usr/bin/env bash +if ${WAFAVOR} ps | grep -q 'WinApps'; then + read -p 'WinApps is running. Would you like to stop it? [y/N] ' -r + if [[ \$REPLY =~ ^[Yy]\$ ]]; then + echo 'Stopping WinApps...this might take a bit (up 2min)' + ${COMPOSE_COMMAND} --file ${SOURCE_PATH}/compose.yaml down + fi +else + echo 'Launching WinApps...' + ${COMPOSE_COMMAND} --file ${SOURCE_PATH}/compose.yaml up -d +fi" + + # Populate variables. + WIN_DESKTOP="\ +[Desktop Entry] +Name=WinApps +Exec=${BIN_PATH}/winapps-container +Terminal=false +Type=Application +Icon=${APPDATA_PATH}/icons/winapps.svg +StartupWMClass=Microsoft Windows +Comment=Microsoft Windows RDP Session" + + # Copy the 'Windows' icon. + $SUDO cp "./icons/winapps.svg" "${APPDATA_PATH}/icons/winapps.svg" + + # Write the desktop entry content to a file. + echo "$WIN_DESKTOP" | $SUDO tee "${APP_PATH}/winapps.desktop" &>/dev/null + + # Write the bash script to a file. + echo "$WIN_BASH" | $SUDO tee "${BIN_PATH}/winapps-container" &>/dev/null + + # Mark the bash script as executable. + $SUDO chmod a+x "${BIN_PATH}/winapps-container" + + # Print feedback. + echo -e "${DONE_TEXT}Done!${CLEAR_TEXT}" +} + + # Name: 'waConfigureApp' # Role: Create application entries for a given application installed on Windows. function waConfigureApp() { @@ -1659,6 +1715,7 @@ function waInstall() { # Configure the Windows RDP session application launcher. waConfigureWindows + waConfigureWinApps if [ "$OPT_AOSA" -eq 1 ]; then # Automatically configure all officially supported applications. @@ -1707,7 +1764,7 @@ function waUninstall() { # Remove the 'WinApps' bash scripts. $SUDO rm -f "${BIN_PATH}/winapps" - $SUDO rm -f "${BIN_PATH}/winapps-setup" + # $SUDO rm -f "${BIN_PATH}/winapps-setup" # Remove WinApps configuration data, temporary files and logs. rm -rf "$USER_APPDATA_PATH" -- GitLab