mirror of
https://github.com/winapps-org/winapps.git
synced 2025-08-05 18:28:26 +02:00
Compare commits
49 Commits
chore/upda
...
013cc42e07
Author | SHA1 | Date | |
---|---|---|---|
![]() |
013cc42e07 | ||
![]() |
885d02079a | ||
![]() |
b3969aa3b7 | ||
![]() |
4019f9cb81 | ||
![]() |
a2568be16f | ||
![]() |
b9ef076dc8 | ||
![]() |
1edae785f4 | ||
![]() |
9d025fbdcb | ||
![]() |
997909b4a4 | ||
![]() |
a4d30724b5 | ||
![]() |
e2ac7f3749 | ||
![]() |
70ee239f90 | ||
![]() |
3677c87865 | ||
![]() |
2a7b1504d7 | ||
![]() |
21304d2299 | ||
![]() |
de68c79876 | ||
![]() |
9795c1b642 | ||
![]() |
335b9f7c8d | ||
![]() |
167e6a68e6 | ||
![]() |
d6cc8480c1 | ||
![]() |
04e52f18ce | ||
![]() |
268445aade | ||
![]() |
f6d56fdf50 | ||
![]() |
994dcc28f3 | ||
![]() |
92c9a01385 | ||
![]() |
d3d2fc232e | ||
![]() |
ee9523ee39 | ||
![]() |
e5929a134d | ||
![]() |
e83cd5ac68 | ||
![]() |
2f8d27ccad | ||
![]() |
5004e4a5ed | ||
![]() |
12cf5ce3be | ||
![]() |
9b1908b616 | ||
![]() |
d322050d5a | ||
![]() |
1887e5567f | ||
![]() |
b18a388cf4 | ||
![]() |
2751ba360a | ||
![]() |
dca4ccefd9 | ||
![]() |
a316c5adcc | ||
![]() |
3a1915fd7a | ||
![]() |
1c75c7161f | ||
![]() |
606282e838 | ||
![]() |
ae6e15ef15 | ||
![]() |
1f9f25e938 | ||
![]() |
4e7328d94d | ||
![]() |
dd744822a3 | ||
![]() |
6cf1846594 | ||
![]() |
2c2679aa1b | ||
![]() |
65ec4f032b |
16
README.md
16
README.md
@@ -364,6 +364,13 @@ RDP_DOMAIN=""
|
|||||||
# - 'libvirt': '' (BLANK)
|
# - 'libvirt': '' (BLANK)
|
||||||
RDP_IP="127.0.0.1"
|
RDP_IP="127.0.0.1"
|
||||||
|
|
||||||
|
# [VM NAME]
|
||||||
|
# NOTES:
|
||||||
|
# - Only applicable when using 'libvirt'
|
||||||
|
# - The libvirt VM name must match so that WinApps can determine VM IP, start the VM, etc.
|
||||||
|
# DEFAULT VALUE: 'RDPWindows'
|
||||||
|
VM_NAME="RDPWindows"
|
||||||
|
|
||||||
# [WINAPPS BACKEND]
|
# [WINAPPS BACKEND]
|
||||||
# DEFAULT VALUE: 'docker'
|
# DEFAULT VALUE: 'docker'
|
||||||
# VALID VALUES:
|
# VALID VALUES:
|
||||||
@@ -384,6 +391,15 @@ WAFLAVOR="docker"
|
|||||||
# - '180'
|
# - '180'
|
||||||
RDP_SCALE="100"
|
RDP_SCALE="100"
|
||||||
|
|
||||||
|
# [MOUNTING REMOVABLE PATHS FOR FILES]
|
||||||
|
# NOTES:
|
||||||
|
# - By default, `udisks` (which you most likely have installed) uses /run/media for mounting removable devices.
|
||||||
|
# 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
|
||||||
|
REMOVABLE_MEDIA="/run/media"
|
||||||
|
|
||||||
# [ADDITIONAL FREERDP FLAGS & ARGUMENTS]
|
# [ADDITIONAL FREERDP FLAGS & ARGUMENTS]
|
||||||
# NOTES:
|
# NOTES:
|
||||||
# - You can try adding /network:lan to these flags in order to increase performance, however, some users have faced issues with this.
|
# - You can try adding /network:lan to these flags in order to increase performance, however, some users have faced issues with this.
|
||||||
|
40
apps/dymo-connect/icon.svg
Normal file
40
apps/dymo-connect/icon.svg
Normal file
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 8.3 KiB |
17
apps/dymo-connect/info
Normal file
17
apps/dymo-connect/info
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
# GNOME shortcut name
|
||||||
|
NAME="DYMO Connect"
|
||||||
|
|
||||||
|
# Used for descriptions and window class
|
||||||
|
FULL_NAME="Software for DYMO label printers"
|
||||||
|
|
||||||
|
# The executable inside windows
|
||||||
|
WIN_EXECUTABLE="C:\Program Files (x86)\DYMO\DYMO Connect\DYMOConnect.exe"
|
||||||
|
|
||||||
|
# GNOME categories
|
||||||
|
CATEGORIES="WinApps;Office"
|
||||||
|
|
||||||
|
# GNOME mimetypes
|
||||||
|
MIME_TYPES=""
|
||||||
|
|
||||||
|
# System Icon
|
||||||
|
ICON="DYMOConnect"
|
23
bin/winapps
23
bin/winapps
@@ -29,7 +29,6 @@ readonly COMPOSE_PATH="${HOME}/.config/winapps/compose.yaml"
|
|||||||
readonly SCRIPT_DIR_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"
|
readonly SCRIPT_DIR_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"
|
||||||
|
|
||||||
# OTHER
|
# OTHER
|
||||||
readonly VM_NAME="RDPWindows" # FOR 'libvirt' ONLY
|
|
||||||
readonly CONTAINER_NAME="WinApps" # FOR 'docker' AND 'podman' ONLY
|
readonly CONTAINER_NAME="WinApps" # FOR 'docker' AND 'podman' ONLY
|
||||||
readonly RDP_PORT=3389
|
readonly RDP_PORT=3389
|
||||||
readonly DOCKER_IP="127.0.0.1"
|
readonly DOCKER_IP="127.0.0.1"
|
||||||
@@ -42,9 +41,11 @@ RDP_USER=""
|
|||||||
RDP_PASS=""
|
RDP_PASS=""
|
||||||
RDP_DOMAIN=""
|
RDP_DOMAIN=""
|
||||||
RDP_IP=""
|
RDP_IP=""
|
||||||
|
VM_NAME="RDPWindows" # FOR 'libvirt' ONLY
|
||||||
WAFLAVOR="docker"
|
WAFLAVOR="docker"
|
||||||
RDP_FLAGS=""
|
RDP_FLAGS=""
|
||||||
FREERDP_COMMAND=""
|
FREERDP_COMMAND=""
|
||||||
|
REMOVABLE_MEDIA=""
|
||||||
RDP_SCALE=100
|
RDP_SCALE=100
|
||||||
AUTOPAUSE="off"
|
AUTOPAUSE="off"
|
||||||
AUTOPAUSE_TIME="300"
|
AUTOPAUSE_TIME="300"
|
||||||
@@ -123,7 +124,7 @@ Please run:
|
|||||||
;;
|
;;
|
||||||
"$EC_NOT_EXIST")
|
"$EC_NOT_EXIST")
|
||||||
dprint "ERROR: WINDOWS NONEXISTENT. EXITING."
|
dprint "ERROR: WINDOWS NONEXISTENT. EXITING."
|
||||||
notify-send --expire-time=8000 --icon="dialog-error" --app-name="WinApps" --urgency="low" "WinApps" "Windows does not exist."
|
notify-send --expire-time=8000 --icon="dialog-error" --app-name="WinApps" --urgency="low" "WinApps" "Windows VM named '${VM_NAME}' does not exist."
|
||||||
;;
|
;;
|
||||||
"$EC_UNKNOWN")
|
"$EC_UNKNOWN")
|
||||||
dprint "ERROR: UNKNOWN CONTAINER ERROR. EXITING."
|
dprint "ERROR: UNKNOWN CONTAINER ERROR. EXITING."
|
||||||
@@ -156,7 +157,16 @@ Please run:
|
|||||||
function dprint() {
|
function dprint() {
|
||||||
[ "$DEBUG" = "true" ] && echo "[$(date)-$RUNID] $1" >>"$LOG_PATH"
|
[ "$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.
|
||||||
|
function waFixRemovableMedia() {
|
||||||
|
if [ -z "$REMOVABLE_MEDIA" ]; then
|
||||||
|
REMOVABLE_MEDIA="/run/media" # Default for udisks
|
||||||
|
dprint "NOTICE: Using default REMOVABLE_MEDIA: $REMOVABLE_MEDIA"
|
||||||
|
notify-send --expire-time=3000 --icon="drive-removable-media" \
|
||||||
|
"WinApps Notice" "Using default removable media path: $REMOVABLE_MEDIA"
|
||||||
|
fi
|
||||||
|
}
|
||||||
# Name: 'waFixScale'
|
# Name: 'waFixScale'
|
||||||
# Role: Since FreeRDP only supports '/scale' values of 100, 140 or 180, find the closest supported argument to the user's configuration.
|
# Role: Since FreeRDP only supports '/scale' values of 100, 140 or 180, find the closest supported argument to the user's configuration.
|
||||||
function waFixScale() {
|
function waFixScale() {
|
||||||
@@ -207,7 +217,8 @@ function waLoadConfig() {
|
|||||||
|
|
||||||
# Update $RDP_SCALE.
|
# Update $RDP_SCALE.
|
||||||
waFixScale
|
waFixScale
|
||||||
|
# Update when $REMOVABLE_MEDIA is null
|
||||||
|
waFixRemovableMedia
|
||||||
# Update $AUTOPAUSE_TIME.
|
# Update $AUTOPAUSE_TIME.
|
||||||
# RemoteApp RDP sessions take, at minimum, 20 seconds to be terminated by the Windows server.
|
# RemoteApp RDP sessions take, at minimum, 20 seconds to be terminated by the Windows server.
|
||||||
# Hence, subtract 20 from the timeout specified by the user, as a 'built in' timeout of 20 seconds will occur.
|
# Hence, subtract 20 from the timeout specified by the user, as a 'built in' timeout of 20 seconds will occur.
|
||||||
@@ -581,7 +592,8 @@ function waRunCommand() {
|
|||||||
else
|
else
|
||||||
# Convert path from UNIX to Windows style.
|
# Convert path from UNIX to Windows style.
|
||||||
FILE_PATH=$(echo "$2" | sed \
|
FILE_PATH=$(echo "$2" | sed \
|
||||||
-e 's|'"${HOME}"'|\\\\tsclient\\home|' \
|
-e 's|^'"${HOME}"'|\\\\tsclient\\home|' \
|
||||||
|
-e 's|^\('"${REMOVABLE_MEDIA//|/\\|}"'\)/[^/]*|\\\\tsclient\\media|' \
|
||||||
-e 's|/|\\|g')
|
-e 's|/|\\|g')
|
||||||
dprint "UNIX_FILE_PATH: ${2}"
|
dprint "UNIX_FILE_PATH: ${2}"
|
||||||
dprint "WINDOWS_FILE_PATH: ${FILE_PATH}"
|
dprint "WINDOWS_FILE_PATH: ${FILE_PATH}"
|
||||||
@@ -595,6 +607,7 @@ function waRunCommand() {
|
|||||||
+auto-reconnect \
|
+auto-reconnect \
|
||||||
+home-drive \
|
+home-drive \
|
||||||
+clipboard \
|
+clipboard \
|
||||||
|
/drive:media,"$REMOVABLE_MEDIA" \
|
||||||
-wallpaper \
|
-wallpaper \
|
||||||
"$MULTI_FLAG" \
|
"$MULTI_FLAG" \
|
||||||
/wm-class:"$FULL_NAME" \
|
/wm-class:"$FULL_NAME" \
|
||||||
|
@@ -14,7 +14,7 @@ services:
|
|||||||
# Version of Windows to configure. For valid options, visit:
|
# Version of Windows to configure. For valid options, visit:
|
||||||
# https://github.com/dockur/windows?tab=readme-ov-file#how-do-i-select-the-windows-version
|
# https://github.com/dockur/windows?tab=readme-ov-file#how-do-i-select-the-windows-version
|
||||||
# https://github.com/dockur/windows?tab=readme-ov-file#how-do-i-install-a-custom-image
|
# https://github.com/dockur/windows?tab=readme-ov-file#how-do-i-install-a-custom-image
|
||||||
VERSION: "tiny11"
|
VERSION: "11"
|
||||||
RAM_SIZE: "4G" # RAM allocated to the Windows VM.
|
RAM_SIZE: "4G" # RAM allocated to the Windows VM.
|
||||||
CPU_CORES: "4" # CPU cores allocated to the Windows VM.
|
CPU_CORES: "4" # CPU cores allocated to the Windows VM.
|
||||||
DISK_SIZE: "64G" # Size of the primary hard disk.
|
DISK_SIZE: "64G" # Size of the primary hard disk.
|
||||||
@@ -22,11 +22,12 @@ services:
|
|||||||
USERNAME: "MyWindowsUser" # Edit here to set a custom Windows username. The default is 'MyWindowsUser'.
|
USERNAME: "MyWindowsUser" # Edit here to set a custom Windows username. The default is 'MyWindowsUser'.
|
||||||
PASSWORD: "MyWindowsPassword" # Edit here to set a password for the Windows user. The default is 'MyWindowsPassword'.
|
PASSWORD: "MyWindowsPassword" # Edit here to set a password for the Windows user. The default is 'MyWindowsPassword'.
|
||||||
HOME: "${HOME}" # Set path to Linux user home folder.
|
HOME: "${HOME}" # Set path to Linux user home folder.
|
||||||
privileged: true # Grant the Windows VM extended privileges.
|
|
||||||
ports:
|
ports:
|
||||||
- 8006:8006 # Map '8006' on Linux host to '8006' on Windows VM --> For VNC Web Interface @ http://127.0.0.1:8006.
|
- 8006:8006 # Map '8006' on Linux host to '8006' on Windows VM --> For VNC Web Interface @ http://127.0.0.1:8006.
|
||||||
- 3389:3389/tcp # Map '3389' on Linux host to '3389' on Windows VM --> For Remote Desktop Protocol (RDP).
|
- 3389:3389/tcp # Map '3389' on Linux host to '3389' on Windows VM --> For Remote Desktop Protocol (RDP).
|
||||||
- 3389:3389/udp # Map '3389' on Linux host to '3389' on Windows VM --> For Remote Desktop Protocol (RDP).
|
- 3389:3389/udp # Map '3389' on Linux host to '3389' on Windows VM --> For Remote Desktop Protocol (RDP).
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN # Add network permission
|
||||||
stop_grace_period: 120s # Wait 120 seconds before sending SIGTERM when attempting to shut down the Windows VM.
|
stop_grace_period: 120s # Wait 120 seconds before sending SIGTERM when attempting to shut down the Windows VM.
|
||||||
restart: on-failure # Restart the Windows VM if the exit code indicates an error.
|
restart: on-failure # Restart the Windows VM if the exit code indicates an error.
|
||||||
volumes:
|
volumes:
|
||||||
@@ -37,5 +38,8 @@ services:
|
|||||||
#- /path/to/windows/install/media.iso:/custom.iso # Uncomment to use a custom Windows ISO. If specified, 'VERSION' (e.g. 'tiny11') will be ignored.
|
#- /path/to/windows/install/media.iso:/custom.iso # Uncomment to use a custom Windows ISO. If specified, 'VERSION' (e.g. 'tiny11') will be ignored.
|
||||||
devices:
|
devices:
|
||||||
- /dev/kvm # Enable KVM.
|
- /dev/kvm # Enable KVM.
|
||||||
|
- /dev/net/tun # Enable tuntap
|
||||||
#- /dev/sdX:/disk1 # Uncomment to mount a disk directly within the Windows VM (Note: 'disk1' will be mounted as the main drive. THIS DISK WILL BE FORMATTED BY DOCKER).
|
#- /dev/sdX:/disk1 # Uncomment to mount a disk directly within the Windows VM (Note: 'disk1' will be mounted as the main drive. THIS DISK WILL BE FORMATTED BY DOCKER).
|
||||||
#- /dev/sdY:/disk2 # Uncomment to mount a disk directly within the Windows VM (Note: 'disk2' and higher will be mounted as secondary drives. THIS DISK WILL NOT BE FORMATTED).
|
#- /dev/sdY:/disk2 # Uncomment to mount a disk directly within the Windows VM (Note: 'disk2' and higher will be mounted as secondary drives. THIS DISK WILL NOT BE FORMATTED).
|
||||||
|
#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.
|
||||||
|
@@ -7,7 +7,7 @@ Although WinApps supports using `QEMU+KVM+libvirt` as a backend for running Wind
|
|||||||
> [!IMPORTANT]
|
> [!IMPORTANT]
|
||||||
> WinApps does __NOT__ officially support versions of Windows prior to Windows 10. Despite this, it may be possible to achieve a successful installation with some additional experimentation. If you find a way to achieve this, please share your solution through a pull request for the benefit of other users.
|
> WinApps does __NOT__ officially support versions of Windows prior to Windows 10. Despite this, it may be possible to achieve a successful installation with some additional experimentation. If you find a way to achieve this, please share your solution through a pull request for the benefit of other users.
|
||||||
> Possible setup instructions for Windows 10:
|
> Possible setup instructions for Windows 10:
|
||||||
> - 'Professional', 'Enterprise' or 'Server' editions of Windows are required to run RDP applications. Windows 'Home' will __NOT__ suffice. It is recommended to download the ISO from a reputed source, as the built in downloader from dockur (default set to `tiny11`) will take longer than it would to download from a browser/torrent.
|
> - 'Professional', 'Enterprise' or 'Server' editions of Windows are required to run RDP applications. Windows 'Home' will __NOT__ suffice.
|
||||||
> - It is recommended to edit the initial `compose.yaml` file to keep your required username and password from the beginning.
|
> - It is recommended to edit the initial `compose.yaml` file to keep your required username and password from the beginning.
|
||||||
> - It is recommended to not use `sudo` to force commands to run. Add your user to the relevant permissions group wherever possible.
|
> - It is recommended to not use `sudo` to force commands to run. Add your user to the relevant permissions group wherever possible.
|
||||||
|
|
||||||
@@ -27,9 +27,6 @@ Prior to installing Windows, you can modify the RAM and number of CPU cores avai
|
|||||||
|
|
||||||
It is also possible to specify the version of Windows you wish to install within `compose.yaml` by modifying `VERSION`.
|
It is also possible to specify the version of Windows you wish to install within `compose.yaml` by modifying `VERSION`.
|
||||||
|
|
||||||
> [!NOTE]
|
|
||||||
> WinApps uses a stripped-down Windows installation by default. Although this is recommended, you can request a stock Windows installation by changing `VERSION` to one of the versions listed in the README of the [original GitHub repository](https://github.com/dockur/windows).
|
|
||||||
|
|
||||||
Please refer to the [original GitHub repository](https://github.com/dockur/windows) for more information on additional configuration options.
|
Please refer to the [original GitHub repository](https://github.com/dockur/windows) for more information on additional configuration options.
|
||||||
|
|
||||||
> [!NOTE]
|
> [!NOTE]
|
||||||
@@ -47,36 +44,19 @@ docker compose --file ./compose.yaml up
|
|||||||
|
|
||||||
You can then access the Windows virtual machine via a VNC connection to complete the Windows setup by navigating to http://127.0.0.1:8006 in your web browser.
|
You can then access the Windows virtual machine via a VNC connection to complete the Windows setup by navigating to http://127.0.0.1:8006 in your web browser.
|
||||||
|
|
||||||
After installing Windows, comment out the following lines in the `compose.yaml` file by prepending a '#':
|
|
||||||
- `- ./oem:/oem`
|
|
||||||
- `- /path/to/windows/install/media.iso:/custom.iso` (if relevant)
|
|
||||||
|
|
||||||
Then, copy this modified `compose.yaml` file to `~/.config/winapps/compose.yaml`.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cp ./compose.yaml ~/.config/winapps/compose.yaml
|
|
||||||
```
|
|
||||||
|
|
||||||
Finally, ensure the new configuration is applied by running the following:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
docker compose --file ./compose.yaml down
|
|
||||||
docker compose --file ~/.config/winapps/compose.yaml up
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
### Changing `compose.yaml`
|
### Changing `compose.yaml`
|
||||||
Changes to `compose.yaml` require the Windows virtual machine to be removed and re-created. This should __NOT__ affect your data.
|
Changes to `compose.yaml` require the container to be removed and re-created. This should __NOT__ affect your data.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Stop and remove the existing Windows virtual machine.
|
# Stop and remove the existing container.
|
||||||
docker compose --file ~/.config/winapps/compose.yaml down
|
docker compose --file ~/.config/winapps/compose.yaml down
|
||||||
|
|
||||||
# Remove the existing FreeRDP certificate (if required).
|
# Remove the existing FreeRDP certificate (if required).
|
||||||
# Note: A new certificate will be created when connecting via RDP for the first time.
|
# Note: A new certificate will be created when connecting via RDP for the first time.
|
||||||
rm ~/.config/freerdp/server/127.0.0.1_3389.pem
|
rm ~/.config/freerdp/server/127.0.0.1_3389.pem
|
||||||
|
|
||||||
# Re-create the virtual machine with the updated configuration.
|
# Re-create the container with the updated configuration.
|
||||||
|
# Add the -d flag at the end to run the container in the background.
|
||||||
docker compose --file ~/.config/winapps/compose.yaml up
|
docker compose --file ~/.config/winapps/compose.yaml up
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -98,6 +78,12 @@ docker compose --file ~/.config/winapps/compose.yaml kill # Force shut down the
|
|||||||
### Setup `Podman` Container
|
### Setup `Podman` Container
|
||||||
Please follow the [`docker` instructions](#setup-docker-container).
|
Please follow the [`docker` instructions](#setup-docker-container).
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> #### Rootless `podman` containers
|
||||||
|
> If you are invoking podman as a user, your container will be "rootless". This can be desirable as a security feature. However, you may encounter an error about missing permissions to /dev/kvm as a consequence.
|
||||||
|
>
|
||||||
|
> For rootless podman to work, you need to add your user to the `kvm` group (depending on your distribution) to be able to access `/dev/kvm`. Make sure that you are using `crun` as your container runtime, not `runc`. Usually this is done by stopping all containers and (de-)installing the corresponding packages. Then either invoke podman-compose as `podman-compose --file ./compose.yaml --podman-create-args '--group-add keep-groups' up`. Or edit `compose.yaml` and uncomment the `group_add:` section at the end.
|
||||||
|
|
||||||
> [!IMPORTANT]
|
> [!IMPORTANT]
|
||||||
> Ensure `WAFLAVOR` is set to `"podman"` in `~/.config/winapps/winapps.conf`.
|
> Ensure `WAFLAVOR` is set to `"podman"` in `~/.config/winapps/winapps.conf`.
|
||||||
|
|
||||||
@@ -110,35 +96,18 @@ podman-compose --file ./compose.yaml up
|
|||||||
|
|
||||||
You can then access the Windows virtual machine via a VNC connection to complete the Windows setup by navigating to http://127.0.0.1:8006 in your web browser.
|
You can then access the Windows virtual machine via a VNC connection to complete the Windows setup by navigating to http://127.0.0.1:8006 in your web browser.
|
||||||
|
|
||||||
After installing Windows, comment out the following lines in the `compose.yaml` file by prepending a '#':
|
|
||||||
- `- ./oem:/oem`
|
|
||||||
- `- /path/to/windows/install/media.iso:/custom.iso` (if relevant)
|
|
||||||
|
|
||||||
Then, copy this modified `compose.yaml` file to `~/.config/winapps/compose.yaml`.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cp ./compose.yaml ~/.config/winapps/compose.yaml
|
|
||||||
```
|
|
||||||
|
|
||||||
Finally, ensure the new configuration is applied by running the following:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
podman-compose --file ./compose.yaml down
|
|
||||||
podman-compose --file ~/.config/winapps/compose.yaml up
|
|
||||||
```
|
|
||||||
|
|
||||||
### Changing `compose.yaml`
|
### Changing `compose.yaml`
|
||||||
Changes to `compose.yaml` require the Windows virtual machine to be removed and re-created. This should __NOT__ affect your data.
|
Changes to `compose.yaml` require the container to be removed and re-created. This should __NOT__ affect your data.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Stop and remove the existing Windows virtual machine.
|
# Stop and remove the existing container.
|
||||||
podman-compose --file ~/.config/winapps/compose.yaml down
|
podman-compose --file ~/.config/winapps/compose.yaml down
|
||||||
|
|
||||||
# Remove the existing FreeRDP certificate (if required).
|
# Remove the existing FreeRDP certificate (if required).
|
||||||
# Note: A new certificate will be created when connecting via RDP for the first time.
|
# Note: A new certificate will be created when connecting via RDP for the first time.
|
||||||
rm ~/.config/freerdp/server/127.0.0.1_3389.pem
|
rm ~/.config/freerdp/server/127.0.0.1_3389.pem
|
||||||
|
|
||||||
# Re-create the virtual machine with the updated configuration.
|
# Re-create the container with the updated configuration.
|
||||||
podman-compose --file ~/.config/winapps/compose.yaml up
|
podman-compose --file ~/.config/winapps/compose.yaml up
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@@ -132,6 +132,9 @@ Together, these components form a powerful and flexible virtualization stack, wi
|
|||||||
<img src="./libvirt_images/07.png" width="500px"/>
|
<img src="./libvirt_images/07.png" width="500px"/>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> A name other than `RDPWindows` can be used if `VM_NAME` is set in `~/.config/winapps/winapps.conf`.
|
||||||
|
|
||||||
9. After clicking `Finish`, select `Copy host CPU configuration` under 'CPUs', and then click `Apply`.
|
9. After clicking `Finish`, select `Copy host CPU configuration` under 'CPUs', and then click `Apply`.
|
||||||
|
|
||||||
> [!NOTE]
|
> [!NOTE]
|
||||||
|
@@ -9,12 +9,12 @@
|
|||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
rev = "a1e5eeb7921d70890a38cbf45b768ff19728db97";
|
rev = "9b3f6c581791222a3a04508606755d6d0519f322";
|
||||||
hash = "sha256-oDeNL3YxiI4PruCVwYP54o+tOJx4Q6GXcevJk1tM0KE=";
|
hash = "sha256-Hy/o5IY9HmTWaX54Ek5ABmppPpzgM+MdCrhzEzVmtwY=";
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "winapps-launcher";
|
pname = "winapps-launcher";
|
||||||
version = "0-unstable-2025-02-25";
|
version = "0-unstable-2025-03-11";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "winapps-org";
|
owner = "winapps-org";
|
||||||
|
@@ -11,12 +11,12 @@
|
|||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
rev = "8be1cd7101c0da32755e044b6a973531d4156f97";
|
rev = "885d02079a36aa9696de46440c5b29b95278f904";
|
||||||
hash = "sha256-oIlIm2yIAx3SnJHILVo/wPyZX1z3UDtHMN3HcnsyzlE=";
|
hash = "sha256-hkD1siuwlRNOnXpDETZEQlIb/j91hkCspAUl/m5BB6g=";
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "winapps";
|
pname = "winapps";
|
||||||
version = "0-unstable-2025-02-26";
|
version = "0-unstable-2025-05-26";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "winapps-org";
|
owner = "winapps-org";
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
diff --git a/setup.sh b/setup.sh
|
diff --git a/setup.sh b/setup.sh
|
||||||
index b7d930d6..18000c65 100755
|
index 0debe4d..6aeea08 100755
|
||||||
--- a/setup.sh
|
--- a/setup.sh
|
||||||
+++ b/setup.sh
|
+++ b/setup.sh
|
||||||
@@ -39,8 +39,8 @@ readonly SYS_BIN_PATH="/usr/local/bin" # UNIX path to 'bin' dir
|
@@ -39,8 +39,8 @@ readonly SYS_BIN_PATH="/usr/local/bin" # UNIX path to 'bin' dir
|
||||||
@@ -21,7 +21,7 @@ index b7d930d6..18000c65 100755
|
|||||||
+readonly INQUIRER_PATH="@out@/src/install/inquirer.sh" # UNIX path to the 'inquirer' script, which is used to produce selection menus.
|
+readonly INQUIRER_PATH="@out@/src/install/inquirer.sh" # UNIX path to the 'inquirer' script, which is used to produce selection menus.
|
||||||
|
|
||||||
# REMOTE DESKTOP CONFIGURATION
|
# REMOTE DESKTOP CONFIGURATION
|
||||||
readonly VM_NAME="RDPWindows" # Name of the Windows VM (FOR 'libvirt' ONLY).
|
readonly RDP_PORT=3389 # Port used for RDP on Windows.
|
||||||
@@ -155,13 +155,6 @@ function waGetSourceCode() {
|
@@ -155,13 +155,6 @@ function waGetSourceCode() {
|
||||||
echo -e "${WARNING_TEXT}[WARNING]${CLEAR_TEXT} You might want to remove your old installation on '${SCRIPT_DIR_PATH}'."
|
echo -e "${WARNING_TEXT}[WARNING]${CLEAR_TEXT} You might want to remove your old installation on '${SCRIPT_DIR_PATH}'."
|
||||||
fi
|
fi
|
||||||
|
4
setup.sh
4
setup.sh
@@ -73,7 +73,6 @@ readonly CONFIG_PATH="${HOME}/.config/winapps/winapps.conf" # UNIX path to the W
|
|||||||
readonly INQUIRER_PATH="./install/inquirer.sh" # UNIX path to the 'inquirer' script, which is used to produce selection menus.
|
readonly INQUIRER_PATH="./install/inquirer.sh" # UNIX path to the 'inquirer' script, which is used to produce selection menus.
|
||||||
|
|
||||||
# REMOTE DESKTOP CONFIGURATION
|
# REMOTE DESKTOP CONFIGURATION
|
||||||
readonly VM_NAME="RDPWindows" # Name of the Windows VM (FOR 'libvirt' ONLY).
|
|
||||||
readonly RDP_PORT=3389 # Port used for RDP on Windows.
|
readonly RDP_PORT=3389 # Port used for RDP on Windows.
|
||||||
readonly DOCKER_IP="127.0.0.1" # Localhost.
|
readonly DOCKER_IP="127.0.0.1" # Localhost.
|
||||||
|
|
||||||
@@ -89,6 +88,7 @@ RDP_USER="" # Imported variable.
|
|||||||
RDP_PASS="" # Imported variable.
|
RDP_PASS="" # Imported variable.
|
||||||
RDP_DOMAIN="" # Imported variable.
|
RDP_DOMAIN="" # Imported variable.
|
||||||
RDP_IP="" # Imported variable.
|
RDP_IP="" # Imported variable.
|
||||||
|
VM_NAME="RDPWindows" # Name of the Windows VM (FOR 'libvirt' ONLY).
|
||||||
WAFLAVOR="docker" # Imported variable.
|
WAFLAVOR="docker" # Imported variable.
|
||||||
RDP_SCALE=100 # Imported variable.
|
RDP_SCALE=100 # Imported variable.
|
||||||
RDP_FLAGS="" # Imported variable.
|
RDP_FLAGS="" # Imported variable.
|
||||||
@@ -1046,7 +1046,7 @@ function waCheckRDPAccess() {
|
|||||||
+home-drive \
|
+home-drive \
|
||||||
-wallpaper \
|
-wallpaper \
|
||||||
+dynamic-resolution \
|
+dynamic-resolution \
|
||||||
/app:program:"C:\Windows\System32\cmd.exe",cmd:"/C type NUL > "$TEST_PATH_WIN" && tsdiscon" \
|
/app:program:"C:\Windows\System32\cmd.exe",cmd:"/C type NUL > $TEST_PATH_WIN && tsdiscon" \
|
||||||
/v:"$RDP_IP" &>"$FREERDP_LOG" &
|
/v:"$RDP_IP" &>"$FREERDP_LOG" &
|
||||||
|
|
||||||
# Store the FreeRDP process ID.
|
# Store the FreeRDP process ID.
|
||||||
|
Reference in New Issue
Block a user