From 35c5a1dc6cad011402a6ff6183ce8b753483cbe5 Mon Sep 17 00:00:00 2001 From: Rohan Barar Date: Sun, 2 Feb 2025 15:33:28 +1100 Subject: [PATCH 1/7] Correct reference to light-mode banner image in README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f9e9ffb..afbc508 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@

-

+


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. From b678a9f130e0efb84633ade85ee4078ac475b780 Mon Sep 17 00:00:00 2001 From: Rohan Barar Date: Sun, 2 Feb 2025 15:37:01 +1100 Subject: [PATCH 2/7] Add 'curl' and 'git' as required dependencies in README --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index afbc508..f3f0a5f 100644 --- a/README.md +++ b/README.md @@ -288,7 +288,7 @@ If you already have a Windows VM or server you wish to use with WinApps, you wil Install the required dependencies. - Debian/Ubuntu: ```bash - sudo apt install -y dialog freerdp3-x11 iproute2 libnotify-bin netcat-openbsd + sudo apt install -y curl dialog freerdp3-x11 git iproute2 libnotify-bin netcat-openbsd ``` > [!NOTE] @@ -297,19 +297,19 @@ Install the required dependencies. - Fedora/RHEL: ```bash - sudo dnf install -y dialog freerdp iproute libnotify nmap-ncat + sudo dnf install -y curl dialog freerdp git iproute libnotify nmap-ncat ``` - Arch Linux: ```bash - sudo pacman -Syu --needed -y dialog freerdp iproute2 libnotify gnu-netcat + sudo pacman -Syu --needed -y curl dialog freerdp git iproute2 libnotify gnu-netcat ``` - OpenSUSE: ```bash - sudo zypper install -y dialog freerdp iproute2 libnotify netcat-openbsd + sudo zypper install -y curl dialog freerdp git iproute2 libnotify netcat-openbsd ``` - Gentoo Linux: ```bash - sudo emerge --ask=n dev-util/dialog net-misc/freerdp:3 sys-apps/iproute2 x11-libs/libnotify net-analyzer/openbsd-netcat + sudo emerge --ask=n net-misc/curl dev-util/dialog net-misc/freerdp:3 dev-vcs/git sys-apps/iproute2 x11-libs/libnotify net-analyzer/openbsd-netcat ``` > [!NOTE] From d3d97d7d35bdc5493c4cc3fd1e68204643ce80d9 Mon Sep 17 00:00:00 2001 From: Rohan Barar Date: Sun, 2 Feb 2025 17:30:07 +1100 Subject: [PATCH 3/7] Improve instructions for identifying and correcting RDP TLS certificate issues during WinApps setup --- README.md | 68 ++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 57 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index f3f0a5f..f63387f 100644 --- a/README.md +++ b/README.md @@ -428,18 +428,12 @@ AUTOPAUSE_TIME="300" FREERDP_COMMAND="" ``` -> [!NOTE] +> [!IMPORTANT] > `RDP_USER` and `RDP_PASS` must correspond to a complete Windows user account and password, such as those created during Windows setup or for a domain user. User/PIN combinations are not valid for RDP access. -> [!NOTE] +> [!IMPORTANT] > If you wish to use an alternative WinApps backend (other than `Docker`), uncomment and change `WAFLAVOR="docker"` to `WAFLAVOR="podman"` or `WAFLAVOR="libvirt"`. -> [!NOTE] -> If you encounter issues with tls certificate getting rejected, delete the existing `.pem` file with -> `rm ~/.config/freerdp/server/127.0.0.1_3389.pem` and run -> `xfreerdp3 /u:MyWindowsUser /p:MyWindowsPassword /v:127.0.0.1 /cert:tofu` -> to set up Trust On First Authentication. Then retry the `setup.sh` script. - #### 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. @@ -450,13 +444,65 @@ 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 -Run the WinApps installer. +### Step 4: Test FreeRDP +1. Test establishing an RDP session by running the following command, replacing the `/u:`, `/p:`, and `/v:` values with the correct values specified in `~/.config/winapps/winapps.conf`. + + ```bash + xfreerdp3 /u:"Your Windows Username" /p:"Your Windows Password" /v:192.168.122.2 /cert:tofu + + # Or, if you installed FreeRDP using Flatpak + flatpak run --command=xfreerdp com.freerdp.FreeRDP /u:"Your Windows Username" /p:"Your Windows Password" /v:192.168.122.2 /cert:tofu + ``` + + - Please note that the correct `FreeRDP` command may vary depending on your system (e.g. `xfreerdp`, `xfreerdp3`, etc.). + - Ensure you use the correct IP address for your Windows instance in the above command. + - If prompted within the terminal window, choose to accept the certificate permanently. + + If the Windows desktop appears in a `FreeRDP` window, the configuration was successful and the correct RDP TLS certificate was enrolled on the Linux host. Disconnect from the RDP session and skip the following debugging step. + +2. [DEBUGGING STEP] If an outdated or expired certificate is detected, the `FreeRDP` command will display output resembling the following. In this case, the old certificate will need to be removed and a new RDP TLS certificate installed. + + ``` + @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + @ WARNING: CERTIFICATE NAME MISMATCH! @ + @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + + The hostname used for this connection (192.168.122.2:3389) + does not match the name given in the certificate: + Common Name (CN): + RDPWindows + A valid certificate for the wrong name should NOT be trusted! + + The host key for 192.168.122.2:3389 has changed + + @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ + @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + + IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! + Someone could be eavesdropping on you right now (man-in-the-middle attack)! + It is also possible that a host key has just been changed. + The fingerprint for the host key sent by the remote host is 8e:b4:d2:8e:4e:14:e7:4e:82:9b:07:5b:e1:68:40:18:bc:db:5f:bc:29:0d:91:83:f9:17:f9:13:e6:51:dc:36 + Please contact your system administrator. + Add correct host key in /home/rohanbarar/.config/freerdp/server/192.168.122.2_3389.pem to get rid of this message. + ``` + + If you experience the above error, delete any old or outdated RDP TLS certificates associated with Windows, as they can prevent `FreeRDP` from establishing a connection. + + These certificates are located within `~/.config/freerdp/server/` and follow the naming format `_.pem` (e.g., `192.168.122.2_3389.pem`, `127.0.0.1_3389.pem`, etc.). + + If you use FreeRDP for purposes other than WinApps, ensure you only remove certificates related to the relevant Windows VM. If no relevant certificates are found, no action is needed. + + Following deletion, re-attempt establishing an RDP session. + +### Step 5: Run the WinApps Installer +With Windows still powered on, run the WinApps installer. + ```bash bash <(curl https://raw.githubusercontent.com/winapps-org/winapps/main/setup.sh) ``` -A list of supported additional arguments can be accessed by running `./setup.sh --help`. +Once WinApps is installed, a list of additional arguments can be accessed by running `winapps-setup --help`. WinApps Installer Animation. From 7e657c58a740c7017959ff48ab21161113ca8e8e Mon Sep 17 00:00:00 2001 From: Rohan Barar Date: Sun, 2 Feb 2025 17:42:24 +1100 Subject: [PATCH 4/7] Updated setup script to reference 'winapps-setup' instead of './setup' + Added sourcing of shell configuration files to apply PATH modifications immediately --- setup.sh | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/setup.sh b/setup.sh index 5ca6cf1..063060f 100755 --- a/setup.sh +++ b/setup.sh @@ -130,13 +130,13 @@ function waTerminateScript() { # Role: Displays usage information for the script. function waUsage() { echo -e "Usage: - ${COMMAND_TEXT}./setup.sh --user${CLEAR_TEXT} # Install WinApps and selected applications in ${HOME} - ${COMMAND_TEXT}./setup.sh --system${CLEAR_TEXT} # Install WinApps and selected applications in /usr - ${COMMAND_TEXT}./setup.sh --user --setupAllOfficiallySupportedApps${CLEAR_TEXT} # Install WinApps and all officially supported applications in ${HOME} - ${COMMAND_TEXT}./setup.sh --system --setupAllOfficiallySupportedApps${CLEAR_TEXT} # Install WinApps and all officially supported applications in /usr - ${COMMAND_TEXT}./setup.sh --user --uninstall${CLEAR_TEXT} # Uninstall everything in ${HOME} - ${COMMAND_TEXT}./setup.sh --system --uninstall${CLEAR_TEXT} # Uninstall everything in /usr - ${COMMAND_TEXT}./setup.sh --help${CLEAR_TEXT} # Display this usage message." + ${COMMAND_TEXT} --user${CLEAR_TEXT} # Install WinApps and selected applications in ${HOME} + ${COMMAND_TEXT} --system${CLEAR_TEXT} # Install WinApps and selected applications in /usr + ${COMMAND_TEXT} --user --setupAllOfficiallySupportedApps${CLEAR_TEXT} # Install WinApps and all officially supported applications in ${HOME} + ${COMMAND_TEXT} --system --setupAllOfficiallySupportedApps${CLEAR_TEXT} # Install WinApps and all officially supported applications in /usr + ${COMMAND_TEXT} --user --uninstall${CLEAR_TEXT} # Uninstall everything in ${HOME} + ${COMMAND_TEXT} --system --uninstall${CLEAR_TEXT} # Uninstall everything in /usr + ${COMMAND_TEXT} --help${CLEAR_TEXT} # Display this usage message." } # Name: 'waGetSourceCode' @@ -390,7 +390,7 @@ function waCheckExistingInstall() { # Display the suggested action(s). echo "--------------------------------------------------------------------------------" - echo -e "Please remove the existing WinApps installation using ${COMMAND_TEXT}./setup.sh --user --uninstall${CLEAR_TEXT}." + echo -e "Please remove the existing WinApps installation using ${COMMAND_TEXT}winapps-setup --user --uninstall${CLEAR_TEXT}." echo "--------------------------------------------------------------------------------" # Terminate the script. @@ -410,7 +410,7 @@ function waCheckExistingInstall() { # Display the suggested action(s). echo "--------------------------------------------------------------------------------" - echo -e "Please remove the existing WinApps installation using ${COMMAND_TEXT}./setup.sh --system --uninstall${CLEAR_TEXT}." + echo -e "Please remove the existing WinApps installation using ${COMMAND_TEXT}winapps-setup --system --uninstall${CLEAR_TEXT}." echo "--------------------------------------------------------------------------------" # Terminate the script. @@ -1657,9 +1657,9 @@ function waEnsureOnPath() { echo -e "${WARNING_TEXT}[WARNING]${CLEAR_TEXT} It seems like '${BIN_PATH}' is not on PATH." echo -e "${WARNING_TEXT}[WARNING]${CLEAR_TEXT} You can add it by running:" # shellcheck disable=SC2086 - echo -e "${WARNING_TEXT}[WARNING]${CLEAR_TEXT} - For Bash: ${COMMAND_TEXT}echo 'export PATH="${BIN_PATH}:\$PATH"' >> ~/.bashrc${CLEAR_TEXT}" + echo -e "${WARNING_TEXT}[WARNING]${CLEAR_TEXT} - For Bash: ${COMMAND_TEXT}echo 'export PATH="${BIN_PATH}:\$PATH"' >> ~/.bashrc && source ~/.bashrc${CLEAR_TEXT}" # shellcheck disable=SC2086 - echo -e "${WARNING_TEXT}[WARNING]${CLEAR_TEXT} - For ZSH: ${COMMAND_TEXT}echo 'export PATH="${BIN_PATH}:\$PATH"' >> ~/.zshrc${CLEAR_TEXT}" + echo -e "${WARNING_TEXT}[WARNING]${CLEAR_TEXT} - For ZSH: ${COMMAND_TEXT}echo 'export PATH="${BIN_PATH}:\$PATH"' >> ~/.zshrc && source ~/.zshrc${CLEAR_TEXT}" echo -e "${WARNING_TEXT}[WARNING]${CLEAR_TEXT} Make sure to restart your Terminal afterwards.\n" fi } From b0a0993afcae9072cbb49109475826fed4e1db2b Mon Sep 17 00:00:00 2001 From: Rohan Barar Date: Sun, 2 Feb 2025 17:50:51 +1100 Subject: [PATCH 5/7] Improved virtualisation stack diagram readability for GitHub light mode --- docs/libvirt_images/Virtualisation_Stack.svg | 40 ++++++++++++-------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/docs/libvirt_images/Virtualisation_Stack.svg b/docs/libvirt_images/Virtualisation_Stack.svg index 9ebb272..1cf451b 100644 --- a/docs/libvirt_images/Virtualisation_Stack.svg +++ b/docs/libvirt_images/Virtualisation_Stack.svg @@ -6,7 +6,7 @@ height="394.31107" id="svg171" sodipodi:docname="Virtualisation_Stack.svg" - inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)" + inkscape:version="1.4 (e7c3feb1, 2024-10-09)" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg" @@ -27,14 +27,14 @@ inkscape:deskcolor="#d1d1d1" showgrid="false" inkscape:zoom="1.4142136" - inkscape:cx="157.68481" - inkscape:cy="190.56528" - inkscape:window-width="1920" - inkscape:window-height="1003" + inkscape:cx="158.03836" + inkscape:cy="190.56527" + inkscape:window-width="1680" + inkscape:window-height="1050" inkscape:window-x="0" inkscape:window-y="0" - inkscape:window-maximized="1" - inkscape:current-layer="Hardware" /> + inkscape:window-maximized="0" + inkscape:current-layer="svg171" /> Open-source-virtualization-stack