From 4de47581c458a57f2c57dae2ecdacb6919d46255 Mon Sep 17 00:00:00 2001 From: Rohan Barar <57999059+KernelGhost@users.noreply.github.com> Date: Thu, 31 Jul 2025 12:14:45 +1000 Subject: [PATCH 01/23] fix wrong variable quoting in file path command --- bin/winapps | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/winapps b/bin/winapps index 5779f3c..cf48202 100755 --- a/bin/winapps +++ b/bin/winapps @@ -588,7 +588,7 @@ function waRunCommand() { +auto-reconnect \ /drive:media,"$REMOVABLE_MEDIA" \ /wm-class:"$FULL_NAME" \ - /app:program:"$WIN_EXECUTABLE",icon:"$ICON",name:$"FULL_NAME",cmd:\""$FILE_PATH"\" \ + /app:program:"$WIN_EXECUTABLE",icon:"$ICON",name:"$FULL_NAME",cmd:\""$FILE_PATH"\" \ /v:"$RDP_IP" &>/dev/null & # Capture the process ID. From 6e9e633616daaacc60fe87e0c4d5755c76ab5162 Mon Sep 17 00:00:00 2001 From: Rohan Barar <57999059+KernelGhost@users.noreply.github.com> Date: Thu, 31 Jul 2025 12:19:56 +1000 Subject: [PATCH 02/23] Fix typo in EC_NO_SUDO comment --- setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.sh b/setup.sh index 7b77254..d1438a6 100755 --- a/setup.sh +++ b/setup.sh @@ -21,7 +21,7 @@ readonly EC_BAD_ARGUMENT="2" # Unsupported argument passed to script. readonly EC_EXISTING_INSTALL="3" # Existing conflicting WinApps installation. readonly EC_NO_CONFIG="4" # Absence of a valid WinApps configuration file. readonly EC_MISSING_DEPS="5" # Missing dependencies. -readonly EC_NO_SUDO="6" # Insufficient privilages to invoke superuser access. +readonly EC_NO_SUDO="6" # Insufficient privileges to invoke superuser access. readonly EC_NOT_IN_GROUP="7" # Current user not in group 'libvirt' and/or 'kvm'. readonly EC_VM_OFF="8" # Windows 'libvirt' VM powered off. readonly EC_VM_PAUSED="9" # Windows 'libvirt' VM paused. From ba2ec0a047429db57f91f93d0a190c320d0d6bed Mon Sep 17 00:00:00 2001 From: Rohan Barar <57999059+KernelGhost@users.noreply.github.com> Date: Thu, 31 Jul 2025 12:26:27 +1000 Subject: [PATCH 03/23] fix spacing for Shortcut Name comments --- setup.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.sh b/setup.sh index 7b77254..e89a602 100755 --- a/setup.sh +++ b/setup.sh @@ -1279,7 +1279,7 @@ function waConfigureApp() { # Source 'Info' File Containing: # - The Application Name (FULL_NAME) - # - The Shortcut Nsame (NAME) + # - The Shortcut Name (NAME) # - Application Categories (CATEGORIES) # - Executable Path (WIN_EXECUTABLE) # - Supported MIME Types (MIME_TYPES) @@ -1379,7 +1379,7 @@ function waConfigureApps() { for OSA in "${OSA_LIST[@]}"; do # Source 'Info' File Containing: # - The Application Name (FULL_NAME) - # - The Shortcut Nsame (NAME) + # - The Shortcut Name (NAME) # - Application Categories (CATEGORIES) # - Executable Path (WIN_EXECUTABLE) # - Supported MIME Types (MIME_TYPES) From 4136b1d6c0f2e32581416bb6c56513bf070c5ec9 Mon Sep 17 00:00:00 2001 From: Rohan Barar <57999059+KernelGhost@users.noreply.github.com> Date: Thu, 31 Jul 2025 12:55:02 +1000 Subject: [PATCH 04/23] fix spelling --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8389b90..a4dc4eb 100644 --- a/README.md +++ b/README.md @@ -398,7 +398,7 @@ RDP_SCALE="100" # This improves compatibility with most desktop environments (DEs). # ATTENTION: The Filesystem Hierarchy Standard (FHS) recommends /media instead. Verify your system's configuration. # - To manually mount devices, you may optionally use /mnt. -# REFERRENCE: https://wiki.archlinux.org/title/Udisks#Mount_to_/media +# REFERENCE: https://wiki.archlinux.org/title/Udisks#Mount_to_/media REMOVABLE_MEDIA="/run/media" # [ADDITIONAL FREERDP FLAGS & ARGUMENTS] From 0f3b43d92af096bae2e3a0a00fa984b01e947006 Mon Sep 17 00:00:00 2001 From: Rohan Barar <57999059+KernelGhost@users.noreply.github.com> Date: Thu, 31 Jul 2025 12:55:24 +1000 Subject: [PATCH 05/23] fix typo in PrintArrayData parameter comment --- install/ExtractPrograms.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/ExtractPrograms.ps1 b/install/ExtractPrograms.ps1 index fcfbf3d..b8a5333 100644 --- a/install/ExtractPrograms.ps1 +++ b/install/ExtractPrograms.ps1 @@ -49,7 +49,7 @@ Function GetApplicationIcon { # Args: # - 'Names': An array of application names. # - 'Paths': An array of executable paths. -# - 'Source': The source of the applications (e.g. Windows Registry, Package manangers, Universal Windows Platform (UWP), etc.) +# - 'Source': The source of the applications (e.g. Windows Registry, Package managers, Universal Windows Platform (UWP), etc.) function PrintArrayData { param ( [string[]]$Names, From 1c79a78c09e385f463aa03bb3beba7fe2e8f9d1d Mon Sep 17 00:00:00 2001 From: Rohan Barar <57999059+KernelGhost@users.noreply.github.com> Date: Thu, 31 Jul 2025 12:55:58 +1000 Subject: [PATCH 06/23] docs: fix typo in libvirt CPU pinning section --- docs/libvirt.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/libvirt.md b/docs/libvirt.md index 0f0ddc1..d32ef37 100644 --- a/docs/libvirt.md +++ b/docs/libvirt.md @@ -193,7 +193,7 @@ Together, these components form a powerful and flexible virtualization stack, wi Example 1: - CPU cores share the same singular L3 cache, so this cannot be optimised. - - CPU cores utilise different L1 and L2 caches, so isolatng corresponding thread pairs will help improve performance. + - CPU cores utilise different L1 and L2 caches, so isolating corresponding thread pairs will help improve performance. - Thus, if limiting the virtual machine to a maximum of 4 threads, there are 10 possible optimal configurations: - T0+T4 - T1+T5 From e4d4b915d51c7405429f6f6d1489b25fb05b53d9 Mon Sep 17 00:00:00 2001 From: Rohan Barar <57999059+KernelGhost@users.noreply.github.com> Date: Thu, 31 Jul 2025 12:57:24 +1000 Subject: [PATCH 07/23] Fix User Agent Switcher instructions --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8389b90..531869a 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ WinApps works by: - 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. - The [official taskbar widget](https://github.com/winapps-org/WinApps-Launcher) enables seamless administration of the Windows subsystem and offers an easy way to launch Windows applications. -- Microsoft Office links (e.g. ms-word://) from the host system are automatically opened in the Windows subsystem. (Note: You may need to use an [User Agent switcher](https://github.com/ray-lothian/UserAgent-Switcher/) Browser Extension and set the User-Agent to Windows, as as the Office webapps typically hide the "Open in Desktop App" option for Linux users.) +- Microsoft Office links (e.g. ms-word://) from the host system are automatically opened in the Windows subsystem. (Note: You may need to use a [User Agent Switcher](https://github.com/ray-lothian/UserAgent-Switcher/) browser extension and set the User-Agent to Windows, as the Office webapps typically hide the "Open in Desktop App" option for Linux users.) ## Supported Applications **WinApps supports *ALL* Windows applications.** From e62155cba5990391fc25061cef498824934ff0b6 Mon Sep 17 00:00:00 2001 From: Rohan Barar <57999059+KernelGhost@users.noreply.github.com> Date: Thu, 31 Jul 2025 12:57:47 +1000 Subject: [PATCH 08/23] fix: correct user source path comment --- setup.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.sh b/setup.sh index bce4b83..cd09fcc 100755 --- a/setup.sh +++ b/setup.sh @@ -40,7 +40,7 @@ readonly USER_BIN_PATH="${HOME}/.local/bin" # UNIX path to 'bin' dir readonly USER_BIN_PATH_WIN='\\tsclient\home\.local\bin' # WINDOWS path to 'bin' directory for a '--user' WinApps installation. # 'SOURCE' readonly SYS_SOURCE_PATH="${SYS_BIN_PATH}/winapps-src" # UNIX path to WinApps source directory for a '--system' WinApps installation. -readonly USER_SOURCE_PATH="${USER_BIN_PATH}/winapps-src" # UNIX path to WinApps source directory for a '--system' WinApps installation. +readonly USER_SOURCE_PATH="${USER_BIN_PATH}/winapps-src" # UNIX path to WinApps source directory for a '--user' WinApps installation. # 'APP' readonly SYS_APP_PATH="/usr/share/applications" # UNIX path to 'applications' directory for a '--system' WinApps installation. readonly USER_APP_PATH="${HOME}/.local/share/applications" # UNIX path to 'applications' directory for a '--user' WinApps installation. @@ -104,7 +104,7 @@ SUDO="" # Set to "sudo" if the user specifies '--system', or "" if the u BIN_PATH="" # Set to $SYS_BIN_PATH if the user specifies '--system', or $USER_BIN_PATH if the user specifies '--user'. APP_PATH="" # Set to $SYS_APP_PATH if the user specifies '--system', or $USER_APP_PATH if the user specifies '--user'. APPDATA_PATH="" # Set to $SYS_APPDATA_PATH if the user specifies '--system', or $USER_APPDATA_PATH if the user specifies '--user'. -SOURCE_PATH="" # Set to $SYS_SOURCE_PATH if the user specifies '--system', or $USER_SOURCE_PATH if the user specifies '--user'. +SOURCE_PATH="" # Set to $SYS_SOURCE_PATH if the user specifies '--user', or $USER_SOURCE_PATH if the user specifies '--user'. # INSTALLATION PROCESS INSTALLED_EXES=() # List of executable file names of officially supported applications that have already been configured during the current installation process. From 26854d91373c02c8a1ca4d6039e6c05a94878db4 Mon Sep 17 00:00:00 2001 From: Rohan Barar Date: Thu, 31 Jul 2025 13:06:49 +1000 Subject: [PATCH 09/23] fix erroneous change by Codex --- setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.sh b/setup.sh index cd09fcc..4ff09bf 100755 --- a/setup.sh +++ b/setup.sh @@ -104,7 +104,7 @@ SUDO="" # Set to "sudo" if the user specifies '--system', or "" if the u BIN_PATH="" # Set to $SYS_BIN_PATH if the user specifies '--system', or $USER_BIN_PATH if the user specifies '--user'. APP_PATH="" # Set to $SYS_APP_PATH if the user specifies '--system', or $USER_APP_PATH if the user specifies '--user'. APPDATA_PATH="" # Set to $SYS_APPDATA_PATH if the user specifies '--system', or $USER_APPDATA_PATH if the user specifies '--user'. -SOURCE_PATH="" # Set to $SYS_SOURCE_PATH if the user specifies '--user', or $USER_SOURCE_PATH if the user specifies '--user'. +SOURCE_PATH="" # Set to $SYS_SOURCE_PATH if the user specifies '--system', or $USER_SOURCE_PATH if the user specifies '--user'. # INSTALLATION PROCESS INSTALLED_EXES=() # List of executable file names of officially supported applications that have already been configured during the current installation process. From a23fd713e73d29dce226d173724598f86c31b4b1 Mon Sep 17 00:00:00 2001 From: Rohan Barar <57999059+KernelGhost@users.noreply.github.com> Date: Fri, 1 Aug 2025 16:50:37 +1000 Subject: [PATCH 10/23] Fix disk mapping example --- compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compose.yaml b/compose.yaml index 955f0fc..8888a01 100644 --- a/compose.yaml +++ b/compose.yaml @@ -44,6 +44,6 @@ services: # NOTE: 'disk1' will be mounted as the main drive. THIS DISK WILL BE FORMATTED BY DOCKER. # All following disks (disk2, ...) WILL NOT BE FORMATTED. # - /dev/disk/by-id/:/disk1 - # - dev/disk/by-id/:/disk2 + # - /dev/disk/by-id/:/disk2 # group_add: # uncomment this line and the next one for using rootless podman containers # - keep-groups # to make /dev/kvm work with podman. needs "crun" installed, "runc" will not work! Add your user to the 'kvm' group or another that can access /dev/kvm. From cc13aac4655b22da8f86c1cef2e698e67db38d8a Mon Sep 17 00:00:00 2001 From: Rohan Barar <57999059+KernelGhost@users.noreply.github.com> Date: Fri, 1 Aug 2025 16:51:17 +1000 Subject: [PATCH 11/23] docs: fix grammar in docker instructions --- docs/docker.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docker.md b/docs/docker.md index 47b1d5d..7b92b94 100644 --- a/docs/docker.md +++ b/docs/docker.md @@ -13,8 +13,8 @@ Although WinApps supports using `QEMU+KVM+libvirt` as a backend for running Wind > [!IMPORTANT] > The iptables kernel module must be loaded for folder sharing with the host to work. -> Check that the output of `lsmod | grep ip_tables` and `lsmod | grep iptable_nat` is non empty. -> If the output of one of the previous command is empty, run `echo -e "ip_tables\niptable_nat" | sudo tee /etc/modules-load.d/iptables.conf` and reboot. +> Check that the output of `lsmod | grep ip_tables` and `lsmod | grep iptable_nat` is non-empty. +> If the output of one of the previous commands is empty, run `echo -e "ip_tables\niptable_nat" | sudo tee /etc/modules-load.d/iptables.conf` and reboot. ## `Docker` ### Installation From 8cac5af98366aafee7bb5c3b52de3da901c101b1 Mon Sep 17 00:00:00 2001 From: Rohan Barar <57999059+KernelGhost@users.noreply.github.com> Date: Fri, 1 Aug 2025 16:51:42 +1000 Subject: [PATCH 12/23] docs: fix grammar in detected file comment --- setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.sh b/setup.sh index 4ff09bf..490f7fc 100755 --- a/setup.sh +++ b/setup.sh @@ -1156,7 +1156,7 @@ function waFindInstalled() { echo "IF EXIST \"${WIN_EXECUTABLE}\" ECHO ${APPLICATION} >> ${TMP_INST_FILE_PATH_WIN}" >>"$BATCH_SCRIPT_PATH" done - # Append a command to the batch script to run the PowerShell script and store it's output in the 'detected' file. + # Append a command to the batch script to run the PowerShell script and store its output in the 'detected' file. # shellcheck disable=SC2129 # Silence warning regarding repeated redirects. echo "powershell.exe -ExecutionPolicy Bypass -File ${PS_SCRIPT_HOME_PATH_WIN} > ${DETECTED_FILE_PATH_WIN}" >>"$BATCH_SCRIPT_PATH" From 708ad60d1cdb0d3a7e5d72b9788e0fe07ea35771 Mon Sep 17 00:00:00 2001 From: Rohan Barar <57999059+KernelGhost@users.noreply.github.com> Date: Fri, 1 Aug 2025 16:56:16 +1000 Subject: [PATCH 13/23] fix script conditional --- oem/install.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oem/install.bat b/oem/install.bat index 018c510..b387507 100644 --- a/oem/install.bat +++ b/oem/install.bat @@ -2,7 +2,7 @@ reg import %~dp0\RDPApps.reg -if exists %~dp0\Container.reg ( +if exist %~dp0\Container.reg ( reg import %~dp0\Container.reg ) From 92686f0ae44c12034d8f4deadb09dbfbfefedb84 Mon Sep 17 00:00:00 2001 From: Rohan Barar <57999059+KernelGhost@users.noreply.github.com> Date: Fri, 1 Aug 2025 17:09:05 +1000 Subject: [PATCH 14/23] Fix grammar in license --- LICENSE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE.md b/LICENSE.md index cab3299..19a36a7 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -8,7 +8,7 @@ Due to lack of a license, it is All Rights Reserved by the original author. We have tried contacting Fmstrat about this, but they abandoned the project and did not reply nor apply an open-source license to the project. However, almost all parts of the codebase have been rewritten and all new contributions require a Contributor License Agreement ([for individuals](https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5), [for legal entities](https://gist.github.com/oskardotglobal/75a8cc056e56a439fa6a1551129ae47f)) to be signed. Therefore, the below license is applied to all new contributions made to the project. -Refer to a specific file for it's respective license. +Refer to a specific file for its respective license. # GNU AFFERO GENERAL PUBLIC LICENSE From f0aa7d6fb8f024212a670f32280cdf5d42ac5b5d Mon Sep 17 00:00:00 2001 From: Rohan Barar <57999059+KernelGhost@users.noreply.github.com> Date: Fri, 1 Aug 2025 17:10:02 +1000 Subject: [PATCH 15/23] docs: clarify removable media comment --- bin/winapps | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/winapps b/bin/winapps index 1f73b5d..8781d3b 100755 --- a/bin/winapps +++ b/bin/winapps @@ -158,7 +158,7 @@ function dprint() { [ "$DEBUG" = "true" ] && echo "[$(date)-$RUNID] $1" >>"$LOG_PATH" } # Name: 'waFixRemovableMedia' -# Role: If user left REMOVABLE_MEDIA config null,fallback to /run/media for udisks defaults ,warning. +# Role: If REMOVABLE_MEDIA is empty, default to /run/media (udisks default) and show a warning. function waFixRemovableMedia() { if [ -z "$REMOVABLE_MEDIA" ]; then REMOVABLE_MEDIA="/run/media" # Default for udisks From fdecd7a8da4043d155582490b26205216e38aca6 Mon Sep 17 00:00:00 2001 From: Rohan Barar Date: Fri, 1 Aug 2025 17:17:05 +1000 Subject: [PATCH 16/23] clarified shutdown error text --- bin/winapps | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bin/winapps b/bin/winapps index 8781d3b..fc90efa 100755 --- a/bin/winapps +++ b/bin/winapps @@ -107,15 +107,15 @@ Please run: notify-send --expire-time=8000 --icon="dialog-error" --app-name="WinApps" --urgency="low" "WinApps" "Windows failed to resume." ;; "$EC_FAIL_DESTROY") - dprint "ERROR: WINDOWS FAILED TO IMMEDIATELY UNGRACEFULLY SHUT DOWN WINDOWS. EXITING." - notify-send --expire-time=8000 --icon="dialog-error" --app-name="WinApps" --urgency="low" "WinApps" "Failed to ungracefully shut down Windows." + dprint "ERROR: FAILED TO FORCE STOP WINDOWS. EXITING." + notify-send --expire-time=8000 --icon="dialog-error" --app-name="WinApps" --urgency="low" "WinApps" "Failed to forcibly stop Windows." ;; "$EC_SD_TIMEOUT") dprint "ERROR: WINDOWS TOOK TOO LONG TO SHUT DOWN. EXITING." notify-send --expire-time=8000 --icon="dialog-error" --app-name="WinApps" --urgency="low" "WinApps" "Windows took too long to shut down." ;; "$EC_DIE_TIMEOUT") - dprint "ERROR: WINDOWS TOOK TOO LONG TO SHUT DOWN. EXITING." + dprint "ERROR: WINDOWS TOOK TOO LONG TO DIE. EXITING." notify-send --expire-time=8000 --icon="dialog-error" --app-name="WinApps" --urgency="low" "WinApps" "Windows took too long to die." ;; "$EC_RESTART_TIMEOUT") From e8037948f46ff5f343204e9cee549ba1fb9a935d Mon Sep 17 00:00:00 2001 From: Rohan Barar Date: Fri, 1 Aug 2025 18:48:16 +1000 Subject: [PATCH 17/23] various improvements to install.bat --- oem/install.bat | 75 ++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 58 insertions(+), 17 deletions(-) diff --git a/oem/install.bat b/oem/install.bat index b387507..504cace 100644 --- a/oem/install.bat +++ b/oem/install.bat @@ -1,25 +1,66 @@ @echo off +title WinApps Setup Wizard -reg import %~dp0\RDPApps.reg - -if exist %~dp0\Container.reg ( - reg import %~dp0\Container.reg +REM Check for administrative privileges +fltmc >nul 2>&1 || ( + echo [INFO] Script not running as administrator. Attempting to relaunch with elevation... + powershell -Command "Start-Process '%~f0' -Verb runAs" + exit /b 0 ) -REM Create network profile cleanup scheduled task -copy %~dp0\NetProfileCleanup.ps1 %windir% -set "taskname=NetworkProfileCleanup" -set "command=powershell.exe -ExecutionPolicy Bypass -File "%windir%\NetProfileCleanup.ps1^"" +REM Confirm the user wants to proceed with setup +echo ============================================ +echo WinApps Setup Wizard +echo ============================================ +echo. +echo Press any key to continue or close this window to cancel... +pause >nul +echo. +echo [INFO] Starting setup... -schtasks /query /tn "%taskname%" >nul 2>&1 +REM Apply RDP and system configuration tweaks +echo [INFO] Importing "RDPApps.reg"... +reg import "%~dp0RDPApps.reg" >nul 2>&1 if %ERRORLEVEL% equ 0 ( - echo Task "%taskname%" already exists, deleting it first... - schtasks /delete /tn "%taskname%" /f -) - -schtasks /create /tn "%taskname%" /tr "%command%" /sc onstart /ru "SYSTEM" /rl HIGHEST /f -if %ERRORLEVEL% equ 0 ( - echo Scheduled task "%taskname%" created successfully. + echo [SUCCESS] Imported "RDPApps.reg". ) else ( - echo Failed to create scheduled task. + echo [ERROR] Failed to import "RDPApps.reg". ) + +REM Configure the system clock to use UTC instead of local time +if exist "%~dp0Container.reg" ( + echo [INFO] Importing "Container.reg"... + reg import "%~dp0Container.reg" >nul 2>&1 + if %ERRORLEVEL% equ 0 ( + echo [SUCCESS] Imported "Container.reg". + ) else ( + echo [ERROR] Failed to import "Container.reg". + ) +) else ( + echo [WARNING] "Container.reg" not found. Skipping... +) + +REM Create a startup task to clean up stale network profiles +echo [INFO] Creating network profile cleanup task... + +REM Initialise values required to create the startup task +set "scriptpath=%windir%\NetProfileCleanup.ps1" +set "taskname=WinApps_NetworkProfileCleanup" +set "command=powershell.exe -ExecutionPolicy Bypass -File ""%scriptpath%""" + +REM Copy the script to the Windows directory +copy /Y "%~dp0NetProfileCleanup.ps1" "%scriptpath%" >nul +if %ERRORLEVEL% neq 0 ( + echo [ERROR] Failed to copy "NetProfileCleanup.ps1" to "%windir%". +) else ( + schtasks /create /tn "%taskname%" /tr "%command%" /sc onstart /ru "SYSTEM" /rl HIGHEST /f >nul 2>&1 + if %ERRORLEVEL% equ 0 ( + echo [SUCCESS] Created scheduled task "%taskname%". + ) else ( + echo [ERROR] Failed to create scheduled task "%taskname%". + ) +) + +echo. +echo Press any key to exit... +pause >nul \ No newline at end of file From 6a7b57a064a2bbd4d5e52c2bb54c73127d46be59 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 1 Aug 2025 08:49:38 +0000 Subject: [PATCH 18/23] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- oem/install.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oem/install.bat b/oem/install.bat index 504cace..92bcc38 100644 --- a/oem/install.bat +++ b/oem/install.bat @@ -63,4 +63,4 @@ if %ERRORLEVEL% neq 0 ( echo. echo Press any key to exit... -pause >nul \ No newline at end of file +pause >nul From a04103b88c7b4af286d105530d08c538a47ef53f Mon Sep 17 00:00:00 2001 From: Rohan Barar <57999059+KernelGhost@users.noreply.github.com> Date: Fri, 1 Aug 2025 22:04:48 +1000 Subject: [PATCH 19/23] fix: use string compare for path check --- setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.sh b/setup.sh index 490f7fc..d514bcc 100755 --- a/setup.sh +++ b/setup.sh @@ -151,7 +151,7 @@ function waGetSourceCode() { SCRIPT_DIR_PATH=$(readlink -f "$(dirname "${BASH_SOURCE[0]}")") # Check if winapps is currently installed on $SOURCE_PATH - if [[ -f "$SCRIPT_DIR_PATH/winapps" && "$SCRIPT_DIR_PATH" -ne "$SOURCE_PATH" ]]; then + if [[ -f "$SCRIPT_DIR_PATH/winapps" && "$SCRIPT_DIR_PATH" != "$SOURCE_PATH" ]]; then # Display a warning. echo -e "${WARNING_TEXT}[WARNING]${CLEAR_TEXT} You are running a WinApps installation located outside of default location '${SOURCE_PATH}'. A new installation will be created." echo -e "${WARNING_TEXT}[WARNING]${CLEAR_TEXT} You might want to remove your old installation on '${SCRIPT_DIR_PATH}'." From 88f1e4e96e557240bf76cba890607cc4d86d6b02 Mon Sep 17 00:00:00 2001 From: Rohan Barar <57999059+KernelGhost@users.noreply.github.com> Date: Sat, 2 Aug 2025 21:42:59 +1000 Subject: [PATCH 20/23] Update ExtractPrograms.ps1 fixed erroneous comments --- install/ExtractPrograms.ps1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install/ExtractPrograms.ps1 b/install/ExtractPrograms.ps1 index b8a5333..537e94c 100644 --- a/install/ExtractPrograms.ps1 +++ b/install/ExtractPrograms.ps1 @@ -240,7 +240,7 @@ function AppSearchUWP { PrintArrayData -Names $exeNames -Paths $exePaths -Source "uwp" } -# Name: 'AppSearchWinReg' +# Name: 'AppSearchChocolatey' # Role: Search for chocolatey shims. function AppSearchChocolatey { # Initialise empty arrays. @@ -272,7 +272,7 @@ function AppSearchChocolatey { } } -# Name: 'AppSearchWinReg' +# Name: 'AppSearchScoop' # Role: Search for scoop shims. function AppSearchScoop { # Initialise empty arrays. From c25ea7c2fce28f732af2a613b18594d5670128cc Mon Sep 17 00:00:00 2001 From: Rohan Barar Date: Sat, 2 Aug 2025 22:41:32 +1000 Subject: [PATCH 21/23] integrate libvirtd group support + document in install guide + remove NixOS patch --- .DS_Store | Bin 0 -> 8196 bytes bin/winapps | 5 +++-- docs/libvirt.md | 2 ++ packages/.DS_Store | Bin 0 -> 6148 bytes packages/winapps/.DS_Store | Bin 0 -> 6148 bytes packages/winapps/default.nix | 1 - packages/winapps/winapps.patch | 11 ----------- 7 files changed, 5 insertions(+), 14 deletions(-) create mode 100644 .DS_Store create mode 100644 packages/.DS_Store create mode 100644 packages/winapps/.DS_Store delete mode 100644 packages/winapps/winapps.patch diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..d24f42c413b1b4aaac5336577b2667ab26e864d7 GIT binary patch literal 8196 zcmeHM&2AGh5FR%v-82Ov1X3?ZD{-w#soDs{CFF-v2?}Zg2muP&CbUsD>!`aSpsG^N z@D98JSDu7-;RN5Zd=n%MH*aqsLmK1x08mw1x_kVhEEt2n|Pn$=Hvz z)^HMPWPFbqS(pq(n8ZW4%A7<=Ybz}SmVrqIICsxdiw5|Fsr>x``c{9bqJSCls7pc0 z>f3ZHZxjy9yMXWB!0(39+S(5>m&wjwT5uMeyz{nxAV>A66%E63>+m(-HKg>tlk1lE zqT3lY3)d?$h+5sCbEp8_b_XVJUUq}F9F^rTXom`0*BwsI$u$ehM@Plt-4%CzbK`i$ zJ-WBPw&HFSH;#{U&W&5Q@9#Eyem{_()vQREBZV&O`&0P^S7y#1>W6_ZgMGBH^);%{ zQ>s#pn$Qm+`F;m2&vDhDRq9ha$&_r@R)r{4k zUD~EHMr=Uu(ALyZf2Pn&3jK^;DfAXSn(pl!&on-2p4#y7JvQC?|VdP1fTqg2t{NktQYAqBC>+ru|svpS-TJ*}-mU!RH?2KJ2H&%h~o9ByJ{nNX1VMySs+nSfwX3_~%n4&cCD1pa{Er zfb|OLAh{A8Z3$)px8w}-~XTUSz7lk1D1ia7!cWNy;_FF$q(VQG3VMY z>N`{}Y&X_gK_FB*4z1F0=+i$8aqYsCF(sqNTB8N!ufGVm2w91J{;Sxr;?EiQ4Vyp% A(EtDd literal 0 HcmV?d00001 diff --git a/bin/winapps b/bin/winapps index fc90efa..306890b 100755 --- a/bin/winapps +++ b/bin/winapps @@ -301,9 +301,10 @@ function waGetFreeRDPCommand() { function waCheckGroupMembership() { # Identify groups the current user belongs to. # shellcheck disable=SC2155 # Silence warnings regarding masking return values through simultaneous declaration and assignment. - local USER_GROUPS=$(groups "$(whoami)") + local USER_GROUPS=$(id -nG "$(whoami)") - if ! (echo "$USER_GROUPS" | grep -q -E "\blibvirt\b") || ! (echo "$USER_GROUPS" | grep -q -E "\bkvm\b"); then + if ! echo "$USER_GROUPS" | grep -qE '\b(libvirt|libvirtd)\b' || \ + ! echo "$USER_GROUPS" | grep -qE '\bkvm\b'; then waThrowExit "$EC_NOT_IN_GROUP" fi } diff --git a/docs/libvirt.md b/docs/libvirt.md index d32ef37..1b41038 100644 --- a/docs/libvirt.md +++ b/docs/libvirt.md @@ -46,6 +46,8 @@ Together, these components form a powerful and flexible virtualization stack, wi sudo reboot # Reboot the system to ensure the user is added to the relevant groups. ``` + Note: On NixOS, the group name for libvirt is `libvirtd` and not `libvirt`. In addition, user and group management on NixOS is handled through the Nix configuration files and not via traditional tools like `usermod`. Please see "Adding User to a group" on [this NixOS Wiki page](https://wiki.nixos.org/wiki/User_management). + Note: Due to a known bug in `rpm-ostree`, which affects various distributions such as Silverblue, Bazzite, Bluefin, Kinoite, Aurora, UCore, and others, the commands provided earlier may not properly add your user to all required groups. If the `groups $USER` command does not show your user as being part of the necessary groups, you'll need to manually add these groups to `/etc/group` if they are present in `/usr/lib/group`. To resolve this: diff --git a/packages/.DS_Store b/packages/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..b6729e2aa9bcd87fa58d4e3c560ae83e03cf6034 GIT binary patch literal 6148 zcmeH~&rjPh6vv;TqbX=o4j}btY1aY;l?ucqE9|fX1IaHN$9)Ap1 z{*wJW+xOW9t#pXnK*&#e{`$vzaq^LD$3!GLWw>H$~qT?bT#Ho(H zj|XXzkDAS2VqvlJVX5j>y%p~?yi`RvibmtS6Aiy}>sYBYeyB(Bx1?Wm{nZ1NjiMy$ z4|PJ)>m%gHNs{$c(NW{9m+Rcn40tuK*7fU?NxQwTnW) zQCB(wj=(H|Mbq^8{QvU&{eL#ewHyIQ;9U_AmBa9`gHN(&>)gljSu5dZa5j!Bjp`H> i_BhrRK8ovbZ5WeWfd*Dfqv(OT9|4WQ6^_7vCGZC{udlNJ literal 0 HcmV?d00001 diff --git a/packages/winapps/.DS_Store b/packages/winapps/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..053967660478598e167eabc9e3bdc9f4ad5074eb GIT binary patch literal 6148 zcmeHKyH3ME5S)b+k`J?H zx3}Z7r|{kZkoj(X2}}Wu>5ABE7@DrD59};5iek^$p+SooUhq7q{yw4H3D$VPBkpm` zf4gZmt7WrUvO-_)iavWc<49SrWVPgMx#O1X7AriRuns3Iqh?42Qh`(;6-WjCu>$Pb zYU7Dx##A5`NCmzW(EmfBE7riy(S98adVJUQk)j&Mc9$TQnAgD0kt;NDD$%JDR}67F z^CjwPVCU#`i0#bh#Lf~o6tUfzFIEnzju}&dRG_cGxlgCs|F7vk-2eNeoTUP(z@Jh; zMvL3UoSziEb?|Z8YYY93{%NeWa)#a^fD>)S7e{qP$E>S?oukp2H##v70;)?|D)1W$ Fd;kKuDZT&z literal 0 HcmV?d00001 diff --git a/packages/winapps/default.nix b/packages/winapps/default.nix index 75b7b64..8a48b25 100644 --- a/packages/winapps/default.nix +++ b/packages/winapps/default.nix @@ -37,7 +37,6 @@ stdenv.mkDerivation rec { ]; patches = [ - ./winapps.patch ./setup.patch ]; diff --git a/packages/winapps/winapps.patch b/packages/winapps/winapps.patch deleted file mode 100644 index 478d0ac..0000000 --- a/packages/winapps/winapps.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/bin/winapps -+++ b/bin/winapps -@@ -295,7 +295,7 @@ function waCheckGroupMembership() { - # shellcheck disable=SC2155 # Silence warnings regarding masking return values through simultaneous declaration and assignment. - local USER_GROUPS=$(groups "$(whoami)") - -- if ! (echo "$USER_GROUPS" | grep -q -E "\blibvirt\b") || ! (echo "$USER_GROUPS" | grep -q -E "\bkvm\b"); then -+ if ! (echo "$USER_GROUPS" | grep -q -E "\blibvirtd\b") || ! (echo "$USER_GROUPS" | grep -q -E "\bkvm\b"); then - waThrowExit "$EC_NOT_IN_GROUP" - fi - } From 887e282443bad6285f7cb228ca3374471cd4be11 Mon Sep 17 00:00:00 2001 From: Rohan Barar Date: Sat, 2 Aug 2025 22:48:42 +1000 Subject: [PATCH 22/23] remove '.DS_Store' files + update gitignore --- .DS_Store | Bin 8196 -> 0 bytes .gitignore | 2 ++ packages/.DS_Store | Bin 6148 -> 0 bytes packages/winapps/.DS_Store | Bin 6148 -> 0 bytes 4 files changed, 2 insertions(+) delete mode 100644 .DS_Store delete mode 100644 packages/.DS_Store delete mode 100644 packages/winapps/.DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index d24f42c413b1b4aaac5336577b2667ab26e864d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8196 zcmeHM&2AGh5FR%v-82Ov1X3?ZD{-w#soDs{CFF-v2?}Zg2muP&CbUsD>!`aSpsG^N z@D98JSDu7-;RN5Zd=n%MH*aqsLmK1x08mw1x_kVhEEt2n|Pn$=Hvz z)^HMPWPFbqS(pq(n8ZW4%A7<=Ybz}SmVrqIICsxdiw5|Fsr>x``c{9bqJSCls7pc0 z>f3ZHZxjy9yMXWB!0(39+S(5>m&wjwT5uMeyz{nxAV>A66%E63>+m(-HKg>tlk1lE zqT3lY3)d?$h+5sCbEp8_b_XVJUUq}F9F^rTXom`0*BwsI$u$ehM@Plt-4%CzbK`i$ zJ-WBPw&HFSH;#{U&W&5Q@9#Eyem{_()vQREBZV&O`&0P^S7y#1>W6_ZgMGBH^);%{ zQ>s#pn$Qm+`F;m2&vDhDRq9ha$&_r@R)r{4k zUD~EHMr=Uu(ALyZf2Pn&3jK^;DfAXSn(pl!&on-2p4#y7JvQC?|VdP1fTqg2t{NktQYAqBC>+ru|svpS-TJ*}-mU!RH?2KJ2H&%h~o9ByJ{nNX1VMySs+nSfwX3_~%n4&cCD1pa{Er zfb|OLAh{A8Z3$)px8w}-~XTUSz7lk1D1ia7!cWNy;_FF$q(VQG3VMY z>N`{}Y&X_gK_FB*4z1F0=+i$8aqYsCF(sqNTB8N!ufGVm2w91J{;Sxr;?EiQ4Vyp% A(EtDd diff --git a/.gitignore b/.gitignore index c000e0c..403937f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ /.idea /.vscode /result +.DS_Store +**/.DS_Store diff --git a/packages/.DS_Store b/packages/.DS_Store deleted file mode 100644 index b6729e2aa9bcd87fa58d4e3c560ae83e03cf6034..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~&rjPh6vv;TqbX=o4j}btY1aY;l?ucqE9|fX1IaHN$9)Ap1 z{*wJW+xOW9t#pXnK*&#e{`$vzaq^LD$3!GLWw>H$~qT?bT#Ho(H zj|XXzkDAS2VqvlJVX5j>y%p~?yi`RvibmtS6Aiy}>sYBYeyB(Bx1?Wm{nZ1NjiMy$ z4|PJ)>m%gHNs{$c(NW{9m+Rcn40tuK*7fU?NxQwTnW) zQCB(wj=(H|Mbq^8{QvU&{eL#ewHyIQ;9U_AmBa9`gHN(&>)gljSu5dZa5j!Bjp`H> i_BhrRK8ovbZ5WeWfd*Dfqv(OT9|4WQ6^_7vCGZC{udlNJ diff --git a/packages/winapps/.DS_Store b/packages/winapps/.DS_Store deleted file mode 100644 index 053967660478598e167eabc9e3bdc9f4ad5074eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKyH3ME5S)b+k`J?H zx3}Z7r|{kZkoj(X2}}Wu>5ABE7@DrD59};5iek^$p+SooUhq7q{yw4H3D$VPBkpm` zf4gZmt7WrUvO-_)iavWc<49SrWVPgMx#O1X7AriRuns3Iqh?42Qh`(;6-WjCu>$Pb zYU7Dx##A5`NCmzW(EmfBE7riy(S98adVJUQk)j&Mc9$TQnAgD0kt;NDD$%JDR}67F z^CjwPVCU#`i0#bh#Lf~o6tUfzFIEnzju}&dRG_cGxlgCs|F7vk-2eNeoTUP(z@Jh; zMvL3UoSziEb?|Z8YYY93{%NeWa)#a^fD>)S7e{qP$E>S?oukp2H##v70;)?|D)1W$ Fd;kKuDZT&z From 44f9df793dfbf8d2185cbcf49964139a0d3507cd Mon Sep 17 00:00:00 2001 From: Rohan Barar Date: Sat, 2 Aug 2025 23:03:32 +1000 Subject: [PATCH 23/23] update setup.patch to match change in 9c0564cca429d1f4eb181643dab48448d414270a --- packages/winapps/setup.patch | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/winapps/setup.patch b/packages/winapps/setup.patch index b7c95fb..ed23bfb 100644 --- a/packages/winapps/setup.patch +++ b/packages/winapps/setup.patch @@ -7,9 +7,9 @@ index 0debe4d..6aeea08 100755 readonly USER_BIN_PATH_WIN='\\tsclient\home\.local\bin' # WINDOWS path to 'bin' directory for a '--user' WinApps installation. # 'SOURCE' -readonly SYS_SOURCE_PATH="${SYS_BIN_PATH}/winapps-src" # UNIX path to WinApps source directory for a '--system' WinApps installation. --readonly USER_SOURCE_PATH="${USER_BIN_PATH}/winapps-src" # UNIX path to WinApps source directory for a '--system' WinApps installation. +-readonly USER_SOURCE_PATH="${USER_BIN_PATH}/winapps-src" # UNIX path to WinApps source directory for a '--user' WinApps installation. +readonly SYS_SOURCE_PATH="@out@/src" # UNIX path to WinApps source directory for a '--system' WinApps installation. -+readonly USER_SOURCE_PATH="@out@/src" # UNIX path to WinApps source directory for a '--system' WinApps installation. ++readonly USER_SOURCE_PATH="@out@/src" # UNIX path to WinApps source directory for a '--user' WinApps installation. # 'APP' readonly SYS_APP_PATH="/usr/share/applications" # UNIX path to 'applications' directory for a '--system' WinApps installation. readonly USER_APP_PATH="${HOME}/.local/share/applications" # UNIX path to 'applications' directory for a '--user' WinApps installation.