diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index f570dd9..811e1b4 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -12,7 +12,7 @@ repos:
- id: remove-crlf
- id: forbid-tabs
- id: remove-tabs
- args: [ --whitespaces-count, "2" ]
+ args: [ --whitespaces-count, "4" ]
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.6.0
@@ -43,7 +43,8 @@ repos:
- repo: https://github.com/scop/pre-commit-shfmt
rev: v3.8.0-1
hooks:
- - id: shfmt
+ - id: shfmt
+ args: ["-i", "4", "-ci", "-s"]
- repo: https://github.com/shellcheck-py/shellcheck-py
rev: v0.10.0.1
diff --git a/README.md b/README.md
index a86767b..acb2e1c 100644
--- a/README.md
+++ b/README.md
@@ -1,114 +1,121 @@
# WinApps
+*The WinApps project, forked from Fmstrat's [original repository](https://github.com/Fmstrat/winapps).*
-The WinApps main project, [originally created by Fmstrat](https://github.com/Fmstrat/winapps)
+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` or `GNOME`, integrated seamlessly as if they were native to the OS.
-Run Windows apps such as Microsoft Office/Adobe in Linux (Ubuntu/Fedora) and GNOME/KDE as if they were a part of the native OS,
-including Nautilus integration for right-clicking on files of specific mime types to open them.
+
-
+## Underlying Mechanism
+WinApps works by:
+1. Running Windows in a `Docker` or `libvirt + KVM/QEMU` virtual machine (deprecated).
+2. Querying Windows for all installed applications.
+3. Creating shortcuts to selected Windows applications on the host GNU/Linux OS.
+4. Using [`FreeRDP`](https://www.freerdp.com/) as a backend to seamlessly render Windows applications alongside GNU/Linux applications.
-## How it works
+## Additional Features
+- The GNU/Linux `/home` directory is accessible within Windows via the `\\tsclient\home` mount.
+- Integration with `Nautilus`, allowing you to right-click files to open them with specific Windows applications based on the file MIME type.
-WinApps was created as an easy, one-command way to include apps running inside a VM (or on any RDP server) directly into GNOME as if they were native applications. WinApps works by:
+## Supported Applications
+**WinApps supports *ALL* Windows applications.**
-- Running a Windows RDP server in a background VM container
-- Checking the RDP server for installed applications such as Microsoft Office
-- If those programs are installed, it creates shortcuts leveraging FreeRDP for both the CLI and the GNOME tray
-- Files in your home directory are accessible via the `\\tsclient\home` mount inside the VM
-- You can right-click on any files in your home directory to open with an application, too
+Universal application support is achieved by:
+1. Scanning Windows for any officially supported applications (list below).
+2. Scanning Windows for any other `.exe` files listed within the Windows Registry.
-## Currently supported applications
+Officially supported applications benefit from high-resolution icons and pre-populated MIME types. This enables file managers to determine which Windows applications should open files based on file extensions. Icons for other detected applications are pulled from `.exe` files.
-### WinApps supports **_ANY_** installed application on your system.
+Contributing to the list of supported applications is encouraged through submission of pull requests! Please help us grow the WinApps community.
-It does this by:
-
-1. Scanning your system for the officially configured applications (below)
-2. Scanning your system for any other EXE files with install records in the Windows Registry
-
-Any officially configured applications will have support for high-resolution icons and mime types for automatically detecting what files can be opened by each application. Any other detected executable files will leverage the icons pulled from the EXE.
-
-Note: The officially configured application list below is fueled by the community, and therefore some apps may be untested by the WinApps team.
+*Please note that the provided list of officially supported applications is community-driven. As such, some applications may not be tested and verified by the WinApps team.*
+### Officially Supported Applications
-
-  | Adobe Acrobat Pro (X) |
-  | Adobe Acrobat Reader (DC) |
-
-
-  | Adobe After Effects (CC) |
-  | Adobe Audition (CC) |
-
-
-  | Adobe Bridge (CS6, CC) |
-  | Adobe Creative Cloud (CC) |
-
-
-  | Adobe Illustrator (CC) |
-  | Adobe InDesign (CC) |
-
-
-  | Adobe Lightroom (CC) |
-  | Command Prompt (cmd.exe) |
-
-
-  | Explorer (File Manager) |
-  | Internet Explorer (11) |
-
-
-  | Microsoft Access (2016, 2019, o365) |
-  | Microsoft Excel (2016, 2019, o365) |
-
-
-  | Microsoft Word (2016, 2019, o365) |
-  | Microsoft OneNote (2016, 2019, o365) |
-
-
-  | Microsoft Outlook (2016, 2019, o365) |
-  | Microsoft PowerPoint (2016, 2019, o365) |
-
-
-  | Microsoft Publisher (2016, 2019, o365) |
-  | PowerShell |
-
-
-  | Windows (Full RDP session) |
- | |
-
+
+  | Adobe Acrobat Pro (X) |
+  | Adobe After Effects (CC) |
+
+
+  | Adobe Audition (CC) |
+  | Adobe Bridge (CS6, CC) |
+
+
+  | Adobe Creative Cloud (CC) |
+  | Adobe Illustrator (CC) |
+
+
+  | Adobe InDesign (CC) |
+  | Adobe Lightroom (CC) |
+
+
+  | Command Prompt (cmd.exe) |
+  | Explorer (File Manager) |
+
+
+  | Internet Explorer (11) |
+  | Microsoft Access (2016, 2019, o365) |
+
+
+  | Microsoft Excel (2016, 2019, o365) |
+  | Microsoft Word (2016, 2019, o365) |
+
+
+  | Microsoft OneNote (2016, 2019, o365) |
+  | Microsoft Outlook (2016, 2019, o365) |
+
+
+  | Microsoft PowerPoint (2016, 2019, o365) |
+  | Microsoft Publisher (2016, 2019, o365) |
+
+
+  | PowerShell |
+  | Windows (Full RDP session) |
+
## Installation
+### Step 1: Configure a Windows VM
+The optimal choice for running a Windows VM as a subsystem for WinApps is `Docker`. `Docker` facilitates automated installation processes while leveraging a `KVM/QEMU` backend. Despite continuing to provide documentation for configuring a Windows VM using `libvirt` and `virt-manager`, this method is now considered deprecated.
-### Step 1: Set up a Windows virtual machine
+The following guides are available:
+- [Creating a Windows VM with `Docker`](docs/docker.md)
+- [Creating a Windows VM with `virt-manager`](docs/KVM.md) (Deprecated)
-The best solution for running a VM as a subsystem for WinApps would be Docker.
-Docker allows automizing the installation process and still uses KVM/QEMU under the hood.
-We still provide the outdated KVM install instructions.
-To set up the VM for WinApps, follow this guide:
+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.
-- [Creating a virtual machine with Docker](docs/docker.md)
-- [Creating a virtual machine in KVM (outdated)](docs/KVM.md)
+### Step 2: Clone WinApps Repository and Dependencies
+1. Clone the WinApps GitHub repository.
+ ```bash
+ git clone https://github.com/winapps-org/winapps.git && cd winapps
+ ```
-If you already have a virtual machine or server you wish to use with WinApps, you will need to merge `install/RDPApps.reg` into the VM's Windows Registry.
+2. Install the required dependencies.
+ - Debian/Ubuntu:
+ ```bash
+ sudo apt install -y dialog freerdp3-x11
+ ```
+ - Fedora/RHEL:
+ ```bash
+ sudo dnf install -y dialog freerdp
+ ```
+ - Arch Linux:
+ ```bash
+ sudo pacman -Syu --needed -y dialog freerdp
+ ```
+ - Gentoo Linux:
+ ```bash
+ sudo emerge --ask=n sys-libs/dialog net-misc/freerdp:3
+ ```
-### Step 2: Download the repo and prerequisites
-
-To get things going, use:
+Please note that WinApps requires `FreeRDP` version 3 or later. If not available for your distribution through your package manager, you can install the [Flatpak](https://flathub.org/apps/com.freerdp.FreeRDP).
```bash
-sudo apt install -y freerdp3-x11
-git clone https://github.com/winapps-org/winapps.git
-cd winapps
+flatpak install flathub com.freerdp.FreeRDP
+sudo flatpak override --filesystem=home com.freerdp.FreeRDP # To use `+home-drive`
```
-> [!note]
-> Requires FreeRDP 3.0.0 or later.
-> If not included in your distribution, you can download the Flatpak from here: https://github.com/FreeRDP/FreeRDP/wiki/Prebuilds
-
-### Step 3: Creating your WinApps configuration file
-
-You will need to create a `~/.config/winapps/winapps.conf` configuration file with the following information in it:
-
+### Step 3: Create a WinApps Configuration File
+Create a configuration file at `~/.config/winapps/winapps.conf` containing the following:
```bash
RDP_USER="MyWindowsUser"
RDP_PASS="MyWindowsPassword"
@@ -121,95 +128,52 @@ RDP_PASS="MyWindowsPassword"
#FREERDP_COMMAND="xfreerdp"
```
-The username and password should be a full user account and password, such as the one created when setting up Windows
-or a domain user. It can't be a user/PIN combination as those aren't valid for RDP access.
+`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.
-Options:
-
-- When using a pre-existing non-KVM RDP server, you must use the `RDP_IP` to specify its location
-- If you're running a VM in KVM with NAT enabled, leave `RDP_IP` commented out and WinApps will auto-detect the right local IP
-- For domain users, you can uncomment and change `RDP_DOMAIN`
-- On high-resolution (UHD) displays, you can set `RDP_SCALE` to the scale you would like [100|140|160|180]
-- To add flags to the FreeRDP call, such as `/audio-mode:1` to pass in a mic, use the `RDP_FLAGS` configuration option
-- For multi-monitor setups, you can try enabling `MULTIMON`, however, if you get a black screen (FreeRDP bug) you will need to revert
+#### Configuration Options Explained
+- When using a pre-existing non-KVM RDP server, you must use `RDP_IP` to specify the location of the Windows server.
+- If running a Windows VM in KVM 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`.
+- On high-resolution (UHD) displays, you can set `RDP_SCALE` to the scale you would like to use [100|140|160|180].
+- To add flags to the FreeRDP call, such as `/audio-mode:1` to pass in a microphone, uncomment and use the `RDP_FLAGS` configuration option.
+- For multi-monitor setups, you can try enabling `MULTIMON`. A FreeRDP bug may result in a black screen however, in which case you should revert this change.
- If you enable `DEBUG`, a log will be created on each application start in `~/.local/share/winapps/winapps.log`
-- If you're on a system, where the command for freerdp is not xfreerdp, change `FREERDP_COMMAND` to it.
-
-### Step 4: Run the WinApps installer
-
-Lastly, check if FreeRDP can connect with:
-
-```
-bin/winapps check
-```
-
-You will see output from FreeRDP, as well as potentially have to accept the initial certificate. After that, a Windows Explorer window should pop up. You can close this window and press `Ctrl-C` to cancel out of FreeRDP.
-
-If this step fails, try restarting the VM, or your problem could be related to:
-
-- You need to accept the security cert the first time you connect (with 'check')
-- Not enabling RDP in the Windows VM
-- Not being able to connect to the IP of the VM
-- Incorrect user credentials in `~/.config/winapps/winapps.conf`
-- Not merging `install/RDPApps.reg` into the VM
-
-Then the final step is to run the installer which will prompt you to a system or user install:
+- If using a system on which the FreeRDP command is not `xfreerdp`, the correct command can be specified using `FREERDP_COMMAND`.
+### Step 4: Run the WinApps Installer
+Run the WinApps installer.
```bash
./installer.sh
```
-This will take you through the following process:
+A list of supported additional arguments can be accessed by running `./installer.sh --help`.