mirror of
https://github.com/winapps-org/winapps.git
synced 2025-09-03 08:16:34 +02:00
Compare commits
79 Commits
add-contri
...
doc-instal
Author | SHA1 | Date | |
---|---|---|---|
![]() |
8e3a3bfc9c | ||
![]() |
564d28bb7f | ||
![]() |
9e9eae842d | ||
![]() |
152cd3e292 | ||
![]() |
a06a28b8ad | ||
![]() |
275d0cb975 | ||
![]() |
d3167845c6 | ||
![]() |
c065c0decb | ||
![]() |
3f44fc3b0f | ||
![]() |
6be98c5224 | ||
![]() |
220bd55964 | ||
![]() |
f326126705 | ||
![]() |
a2fb111506 | ||
![]() |
43dc3c29f4 | ||
![]() |
1594b388c7 | ||
![]() |
556095a684 | ||
![]() |
a061cf1ba2 | ||
![]() |
8c3a8f8611 | ||
![]() |
fe6fa6220b | ||
![]() |
122053a078 | ||
![]() |
68b13b2da1 | ||
![]() |
9073afa69d | ||
![]() |
3779f507c9 | ||
![]() |
5fb2c7b0fd | ||
![]() |
fca2618dee | ||
![]() |
dd89b2748a | ||
![]() |
6fb023a1c6 | ||
![]() |
c330e29f27 | ||
![]() |
3865e2abe7 | ||
![]() |
be5d020a04 | ||
![]() |
e93cf9a535 | ||
![]() |
b49979e6ce | ||
![]() |
6dd5038c46 | ||
![]() |
b9aa42856d | ||
![]() |
b18efc4497 | ||
![]() |
2dafe2d7a1 | ||
![]() |
df54d08955 | ||
![]() |
7277f71b9c | ||
![]() |
e630b5a898 | ||
![]() |
e8fbc95e3e | ||
![]() |
9d455ba753 | ||
![]() |
c8dcccad08 | ||
![]() |
9ca357642a | ||
![]() |
e8dc55a83a | ||
![]() |
d248abcc64 | ||
![]() |
64478a87a4 | ||
![]() |
2211d9f78e | ||
![]() |
406c7c0213 | ||
![]() |
0a7bf57a13 | ||
![]() |
49a2dd91e9 | ||
![]() |
602aee2b9b | ||
![]() |
39063a3fff | ||
![]() |
93bdf8856f | ||
![]() |
7cbe3ff07c | ||
![]() |
b4c32b09b9 | ||
![]() |
86bfd8bdf1 | ||
![]() |
2a70f7f3a2 | ||
![]() |
fd90dd837d | ||
![]() |
e6e1e26c14 | ||
![]() |
b854224cef | ||
![]() |
cd2a73ff30 | ||
![]() |
4b22993e9c | ||
![]() |
0468d3b4cb | ||
![]() |
6d67815c9c | ||
![]() |
e839d1fdcd | ||
![]() |
90b3422709 | ||
![]() |
1496041b48 | ||
![]() |
509a782a4a | ||
![]() |
7f3cdcee4d | ||
![]() |
60b3e809fb | ||
![]() |
b044cb41c7 | ||
![]() |
28e958e600 | ||
![]() |
7d5cce374c | ||
![]() |
b0f2830224 | ||
![]() |
f4c0a454b7 | ||
![]() |
b7b5b34b27 | ||
![]() |
26a2f13815 | ||
![]() |
00141f1d54 | ||
![]() |
da35923df9 |
21
.github/workflows/lictool.yaml
vendored
21
.github/workflows/lictool.yaml
vendored
@@ -1,21 +0,0 @@
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches: [main]
|
||||
|
||||
jobs:
|
||||
lictool:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: 3.x
|
||||
|
||||
- uses: pre-commit/action@v3.0.1
|
||||
with:
|
||||
extra_args: license-tools
|
||||
|
||||
- uses: pre-commit-ci/lite-action@v1.0.2
|
||||
if: always()
|
28
.github/workflows/update-nix.yaml
vendored
Normal file
28
.github/workflows/update-nix.yaml
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
name: "Update Flake Packages"
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: "0 10 * * 0" # https://crontab.guru/#0_10_*_*_0
|
||||
|
||||
jobs:
|
||||
updateFlakePackages:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install Nix
|
||||
uses: DeterminateSystems/nix-installer-action@main
|
||||
|
||||
- name: Set up Nix cache
|
||||
uses: DeterminateSystems/magic-nix-cache-action@main
|
||||
|
||||
- name: Update flake packages
|
||||
uses: winapps-org/nix-update-action@v1.3.0
|
||||
with:
|
||||
extra-args: --version=branch
|
@@ -1,70 +0,0 @@
|
||||
{
|
||||
"author": {
|
||||
"from_git": true,
|
||||
"latest_year_only": true
|
||||
},
|
||||
"title": false,
|
||||
"style_override_for_suffix": {
|
||||
".yaml": "POUND_STYLE",
|
||||
".ps1": "POUND_STYLE",
|
||||
".bat": "BATCH_STYLE",
|
||||
"": "POUND_STYLE"
|
||||
},
|
||||
"exclude": [
|
||||
"^\\.[^/]+",
|
||||
"/\\.[^/]+",
|
||||
"^(.+)\\.(md|svg|png|reg|gif)",
|
||||
"^(fonts|WinApps-Launcher)(/.*)?",
|
||||
"apps/access/info",
|
||||
"apps/access-o365-x86/info",
|
||||
"apps/access-x86/info",
|
||||
"apps/acrobat-x-pro/info",
|
||||
"apps/adobe-cc/info",
|
||||
"apps/aftereffects-cc/info",
|
||||
"apps/audition-cc/info",
|
||||
"apps/bridge-cc/info",
|
||||
"apps/bridge-cs6/info",
|
||||
"apps/bridge-cs6-x86/info",
|
||||
"apps/cmd/info",
|
||||
"apps/excel/info",
|
||||
"apps/excel-o365-x86/info",
|
||||
"apps/excel-x86/info",
|
||||
"apps/explorer/info",
|
||||
"apps/iexplorer/info",
|
||||
"apps/illustrator-cc/info",
|
||||
"apps/indesign-cc/info",
|
||||
"apps/lightroom-cc/info",
|
||||
"apps/onenote/info",
|
||||
"apps/onenote-o365-x86/info",
|
||||
"apps/onenote-x86/info",
|
||||
"apps/outlook/info",
|
||||
"apps/outlook-o365-x86/info",
|
||||
"apps/outlook-x86/info",
|
||||
"apps/photoshop-cc/info",
|
||||
"apps/photoshop-cs6/info",
|
||||
"apps/photoshop-cs6-x86/info",
|
||||
"apps/powerpoint/info",
|
||||
"apps/powerpoint-o365-x86/info",
|
||||
"apps/powerpoint-x86/info",
|
||||
"apps/powershell/info",
|
||||
"apps/publisher/info",
|
||||
"apps/publisher-o365-x86/info",
|
||||
"apps/publisher-x86/info",
|
||||
"apps/word/info",
|
||||
"apps/word-o365-x86/info",
|
||||
"apps/word-x86/info",
|
||||
"apps/access-o365/info",
|
||||
"apps/excel-o365/info",
|
||||
"apps/onenote-o365/info",
|
||||
"apps/outlook-o365/info",
|
||||
"apps/powerpoint-o365/info",
|
||||
"apps/publisher-o365/info",
|
||||
"apps/word-o365/info",
|
||||
"install/inquirer.sh",
|
||||
"oem/RDPApps.reg"
|
||||
],
|
||||
"license": false,
|
||||
"force_author": false,
|
||||
"force_license": true,
|
||||
"custom_license": "SPDX-License-Identifier: AGPL-3.0-or-later"
|
||||
}
|
@@ -1,6 +1,7 @@
|
||||
ci:
|
||||
autoupdate_branch: "rewrite"
|
||||
skip: [license-tools]
|
||||
|
||||
exclude: ^(.+)\.patch$
|
||||
|
||||
repos:
|
||||
- repo: https://github.com/Lucas-C/pre-commit-hooks
|
||||
@@ -49,8 +50,3 @@ repos:
|
||||
rev: v0.10.0.1
|
||||
hooks:
|
||||
- id: shellcheck
|
||||
|
||||
- repo: https://github.com/emzeat/mz-lictools
|
||||
rev: v2.7.0
|
||||
hooks:
|
||||
- id: license-tools
|
||||
|
@@ -3,9 +3,6 @@
|
||||
Thank you for contributing to winapps! Before you can contribute, we ask some things of you:
|
||||
|
||||
- Please follow our Code of Conduct, the Contributor Covenant. You can find a copy in this repository or under https://www.contributor-covenant.org/
|
||||
- All Contributors have to sign [a CLA](https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5) for legal reasons. When opening a PR, @cla-assitant will prompt you and guide you through the process. However, if you contribute on behalf of a legal entity, we ask of you to sign [a different CLA](https://gist.github.com/oskardotglobal/75a8cc056e56a439fa6a1551129ae47f). In that case, please contact us.
|
||||
- All Contributors have to sign [a CLA](https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5) for legal reasons. When opening a PR, @cla-assistant will prompt you and guide you through the process. However, if you contribute on behalf of a legal entity, we ask of you to sign [a different CLA](https://gist.github.com/oskardotglobal/75a8cc056e56a439fa6a1551129ae47f). In that case, please contact us.
|
||||
- Please follow code conventions enforced by `pre-commit`. To keep down CI usage, please run it locally before committing too.
|
||||
See <https://pre-commit.com> for installation, then run `pre-commit install` inside the `winapps` repository you cloned.
|
||||
|
||||
All source code files shall have a valid SPDX-Identifier. For more information, see <https://spdx.dev/learn/handling-license-info/>.
|
||||
This identifier will be generated by a pre-commit hook most of the time.
|
||||
|
8
COPYRIGHT.md
Normal file
8
COPYRIGHT.md
Normal file
@@ -0,0 +1,8 @@
|
||||
Some of the files are
|
||||
|
||||
Copyright (c) 2024 fmstrat
|
||||
|
||||
Many files also contain contributions from third parties.
|
||||
In this case the original copyright of the contributions can be traced through the history of the source version control system.
|
||||
|
||||
When that is not the case, the files contain a prominent notice stating the original copyright and applicable license, or come with their own dedicated COPYRIGHT and/or LICENSE file.
|
@@ -1,3 +1,5 @@
|
||||
For copyright information, please see the [COPYRIGHT.md](./COPYRIGHT.md) file.
|
||||
|
||||
This project has files licensed under different licenses.
|
||||
|
||||
The original project by Fmstrat <https://github.com/Fmstrat/winapps/> is not free software.
|
||||
|
121
README.md
121
README.md
@@ -282,35 +282,43 @@ The following guides are available:
|
||||
- [Creating a Windows VM with `Docker` or `Podman`](docs/docker.md)
|
||||
- [Creating a Windows VM with `libvirt`](docs/libvirt.md)
|
||||
|
||||
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.
|
||||
If you already have a Windows VM or server you wish to use with WinApps, you will still have to follow the [final steps described in the `libvirt` documentation](docs/libvirt.md#final-configuration-steps).
|
||||
|
||||
### Step 2: Install Dependencies
|
||||
Install the required dependencies.
|
||||
- Debian/Ubuntu:
|
||||
```bash
|
||||
sudo apt install -y dialog freerdp3-x11 iproute2 libnotify-bin netcat
|
||||
sudo apt install -y dialog freerdp3-x11 iproute2 libnotify-bin netcat-openbsd
|
||||
```
|
||||
|
||||
> [!NOTE]
|
||||
> On Debian you need to enable the `backports` repository for the `freerdp3-x11` package to become available.
|
||||
> For instructions, see https://backports.debian.org/Instructions.
|
||||
|
||||
- Fedora/RHEL:
|
||||
```bash
|
||||
sudo dnf install -y dialog freerdp iproute libnotify nmap-ncat
|
||||
```
|
||||
- Arch Linux:
|
||||
```bash
|
||||
sudo pacman -Syu --needed -y dialog freerdp iproute2 libnotify
|
||||
gnu-netcat
|
||||
sudo pacman -Syu --needed -y dialog freerdp iproute2 libnotify gnu-netcat
|
||||
```
|
||||
- OpenSUSE:
|
||||
```bash
|
||||
sudo zypper install -y dialog freerdp iproute2 libnotify netcat-openbsd
|
||||
```
|
||||
- Gentoo Linux:
|
||||
```bash
|
||||
sudo emerge --ask=n sys-libs/dialog net-misc/freerdp:3 net-misc/iproute2 x11-libs/libnotify net-analyzer/netcat
|
||||
sudo emerge --ask=n dev-util/dialog net-misc/freerdp:3 sys-apps/iproute2 x11-libs/libnotify net-analyzer/openbsd-netcat
|
||||
```
|
||||
|
||||
> [!NOTE]
|
||||
> 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
|
||||
flatpak install flathub com.freerdp.FreeRDP
|
||||
sudo flatpak override --filesystem=home com.freerdp.FreeRDP # To use `+home-drive`
|
||||
```
|
||||
> 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
|
||||
> flatpak install flathub com.freerdp.FreeRDP
|
||||
> sudo flatpak override --filesystem=home com.freerdp.FreeRDP # To use `+home-drive`
|
||||
> ```
|
||||
> 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
|
||||
Create a configuration file at `~/.config/winapps/winapps.conf` containing the following:
|
||||
@@ -329,6 +337,8 @@ Create a configuration file at `~/.config/winapps/winapps.conf` containing the f
|
||||
RDP_USER="MyWindowsUser"
|
||||
|
||||
# [WINDOWS PASSWORD]
|
||||
# NOTES:
|
||||
# - If using FreeRDP v3.9.0 or greater, you *have* to set a password
|
||||
RDP_PASS="MyWindowsPassword"
|
||||
|
||||
# [WINDOWS DOMAIN]
|
||||
@@ -365,6 +375,8 @@ WAFLAVOR="docker"
|
||||
RDP_SCALE="100"
|
||||
|
||||
# [ADDITIONAL FREERDP FLAGS & ARGUMENTS]
|
||||
# NOTES:
|
||||
# - You can try adding /network:lan to these flags in order to increase performance, however, some users have faced issues with this.
|
||||
# DEFAULT VALUE: '/cert:tofu /sound /microphone'
|
||||
# VALID VALUES: See https://github.com/awakecoding/FreeRDP-Manuals/blob/master/User/FreeRDP-User-Manual.markdown
|
||||
RDP_FLAGS="/cert:tofu /sound /microphone"
|
||||
@@ -463,6 +475,93 @@ The installer can be run multiple times. To update your installation of WinApps:
|
||||
2. Pull the latest changes from the WinApps GitHub repository.
|
||||
3. Re-install WinApps using the WinApps installer by running `winapps-setup`.
|
||||
|
||||
## Installation using Nix
|
||||
|
||||
First, follow Step 1 of the normal installation guide to create your VM.
|
||||
Then, install WinApps according to the following instructions.
|
||||
|
||||
After installation, it will be available under `winapps`, with the installer being available under `winapps-setup`
|
||||
and the optional launcher being available under `winapps-launcher.`
|
||||
|
||||
### Using standalone Nix
|
||||
|
||||
First, make sure Flakes and the `nix` command are enabled.
|
||||
In your `~/.config/nix/nix.conf`:
|
||||
```
|
||||
experimental-features = nix-command flakes
|
||||
```
|
||||
|
||||
```bash
|
||||
nix profile install github:winapps-org/winapps#winapps
|
||||
nix profile install github:winapps-org/winapps#winapps-launcher # optional
|
||||
```
|
||||
|
||||
### On NixOS using Flakes
|
||||
|
||||
```nix
|
||||
# flake.nix
|
||||
{
|
||||
description = "My configuration";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
|
||||
winapps = {
|
||||
url = "github:winapps-org/winapps";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
};
|
||||
|
||||
outputs =
|
||||
{
|
||||
nixpkgs,
|
||||
winapps,
|
||||
...
|
||||
}:
|
||||
{
|
||||
nixosConfigurations.hostname = nixpkgs.lib.nixosSystem rec {
|
||||
system = "x86_64-linux";
|
||||
|
||||
modules = [
|
||||
./configuration.nix
|
||||
(
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
environment.systemPackages = [
|
||||
winapps.packages.${system}.winapps
|
||||
winapps.packages.${system}.winapps-launcher # optional
|
||||
];
|
||||
}
|
||||
)
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
### On NixOS without Flakes
|
||||
|
||||
[Flakes aren't real and they can't hurt you.](https://jade.fyi/blog/flakes-arent-real/).
|
||||
However, if you still don't want to use flakes, you can use WinApps with flake-compat like:
|
||||
|
||||
```nix
|
||||
# configuration.nix
|
||||
{ ... }:
|
||||
{
|
||||
|
||||
environment.systemPackages =
|
||||
let
|
||||
winapps =
|
||||
(import (builtins.fetchTarball "https://github.com/winapps-org/winapps/archive/main.tar.gz"))
|
||||
.packages."${system}";
|
||||
in
|
||||
[
|
||||
winapps.winapps
|
||||
winapps.winapps-launcher # optional
|
||||
];
|
||||
}
|
||||
```
|
||||
|
||||
## Star History
|
||||
<a href="https://star-history.com/#winapps-org/winapps&Date">
|
||||
<picture>
|
||||
|
@@ -1,8 +1,3 @@
|
||||
# Copyright (c) 2024 Fmstrat
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Access"
|
||||
|
||||
|
@@ -1,8 +1,3 @@
|
||||
# Copyright (c) 2024 Fmstrat
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Access"
|
||||
|
||||
|
@@ -1,9 +1,3 @@
|
||||
# Copyright (c) 2024 Adam
|
||||
# Copyright (c) 2024 Oskar Manhart
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Acrobat 9"
|
||||
|
||||
|
@@ -1,9 +1,3 @@
|
||||
# Copyright (c) 2024 Adam
|
||||
# Copyright (c) 2024 Oskar Manhart
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Excel"
|
||||
|
||||
|
1
apps/linqpad8/icon.svg
Normal file
1
apps/linqpad8/icon.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg height="512" width="485" xmlns="http://www.w3.org/2000/svg"><path d="m70.9856796.099867 147.1711121 21.1684494c4.9958038.7186089 9.4206696 3.6028881 12.0942841 7.8835335l186.6232452 298.7956543 57.4749451 24.1019287c7.645813 3.2071838 11.9003601 11.4268799 10.1008911 19.5205688l-28.2246018 127.0107173c-1.741394 7.8406982-8.6961365 13.419281-16.7278442 13.419281h-99.7940979c-7.125061 0-13.5059204-4.4081116-16.026947-11.0715027l-64.8904114-171.496521-33.5339355 10.1796265-70.4281006 162.0817871c-2.7193909 6.257782-8.8930359 10.3066101-15.7168732 10.3066101h-96.77005c-7.6413727 0-14.3593845-5.0597839-16.4699287-12.4033813l-25.2005348-87.697876c-1.6572304-5.7675781-.1771913-11.9810791 3.9016533-16.3813171l182.9347229-197.3772888-20.0501709-34.7536011-57.9149628-11.582901c-5.8025284-1.1605988-10.5960388-5.2325439-12.6790237-10.7717438l-44.3529436-117.9385052c-3.7618599-11.4255447 3.7893296-24.361076 18.4795723-22.9935187zm280.5562821 477.6273974h74.2096558l22.1351318-99.6100159-49.2886963-20.6693725c-3.268219-1.3702698-6.030426-3.7200317-7.9076538-6.7254028l-185.2913666-296.663929-110.6150894-15.9103012 30.805191 81.9140472 56.1917801 11.2383575c4.8348541.9671631 9.0185394 3.969574 11.4824829 8.2403717l30.2406464 52.4171143c3.7544861 6.5073547 2.8321075 14.7019501-2.2749481 20.2121124l-184.9527245 199.5542717 18.9663582 66.0027466h72.6262665l69.107048-159.0409546c2.0032501-4.6099243 5.9295197-8.1074829 10.7392731-9.5673523l56.4487152-17.1363525c8.6380615-2.6244202 17.8136292 1.8988953 21.0050354 10.3322144z"/></svg>
|
After Width: | Height: | Size: 1.5 KiB |
14
apps/linqpad8/info
Normal file
14
apps/linqpad8/info
Normal file
@@ -0,0 +1,14 @@
|
||||
# GNOME shortcut name
|
||||
NAME="LINQPad8"
|
||||
|
||||
# Used for descriptions and window class
|
||||
FULL_NAME="LINQPad 8"
|
||||
|
||||
# The executable inside windows
|
||||
WIN_EXECUTABLE="C:\Program Files\LINQPad8\LINQPad8.exe"
|
||||
|
||||
# GNOME categories
|
||||
CATEGORIES="WinApps;Development"
|
||||
|
||||
# GNOME mimetypes
|
||||
MIME_TYPES="text/cs"
|
@@ -1,9 +1,3 @@
|
||||
# Copyright (c) 2024 Adam
|
||||
# Copyright (c) 2024 Oskar Manhart
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Paint"
|
||||
|
||||
|
@@ -1,9 +1,3 @@
|
||||
# Copyright (c) 2024 Adam
|
||||
# Copyright (c) 2024 Oskar Manhart
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Powershell"
|
||||
|
||||
|
@@ -1,9 +1,3 @@
|
||||
# Copyright (c) 2024 Oskar Manhart
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Project"
|
||||
|
||||
# Used for descriptions and window class
|
||||
|
@@ -1,9 +1,3 @@
|
||||
# Copyright (c) 2024 Gordon Cheong
|
||||
# Copyright (c) 2024 Oskar Manhart
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Project"
|
||||
|
||||
|
61
apps/ssms20/icon.svg
Normal file
61
apps/ssms20/icon.svg
Normal file
@@ -0,0 +1,61 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="200px" height="200px" version="1.1" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd" viewBox="0 0 8.53 8.53" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
.fil0 {fill:none}
|
||||
.fil7 {fill:#007400}
|
||||
.fil6 {fill:#017901}
|
||||
.fil5 {fill:#107B10}
|
||||
.fil3 {fill:#3C3C41}
|
||||
.fil12 {fill:#439043}
|
||||
.fil10 {fill:#5EA05E}
|
||||
.fil8 {fill:#6EA76E}
|
||||
.fil9 {fill:#78AC78}
|
||||
.fil11 {fill:#94BC94}
|
||||
.fil13 {fill:#B9B9BB}
|
||||
.fil2 {fill:#D2D2D2}
|
||||
.fil1 {fill:#FEB900}
|
||||
.fil4 {fill:#FFDC80}
|
||||
]]>
|
||||
</style>
|
||||
</defs>
|
||||
<g id="Layer_x0020_1">
|
||||
<metadata id="CorelCorpID_0Corel-Layer"/>
|
||||
<g id="_2075241592848">
|
||||
<rect class="fil0" width="8.53" height="8.53"/>
|
||||
<g>
|
||||
<path class="fil1" d="M1.74 1.57c0.26,-0.2 0.37,-0.27 0.77,-0.35 1.81,-0.4 3.75,0.46 1.87,0.85 -0.64,0.13 -1.36,0.13 -1.99,-0.03 -0.24,-0.07 -0.65,-0.17 -0.65,-0.47zm1.92 2.92l0.13 0.11c0.07,-0.07 0.03,0.02 0.05,-0.12 0,-0.01 0,-0.11 0,-0.12l0 -1.95c0.18,-0.04 0.39,-0.04 0.58,-0.08 0.16,-0.04 0.38,-0.13 0.51,-0.14l-0.01 1.9c0.32,0.1 0.4,0.44 0.49,0.55 0.03,-0.74 0.01,-2.1 0,-2.94 0,-0.32 -0.18,-0.45 -0.42,-0.57 -0.81,-0.38 -2.52,-0.39 -3.24,0.09 -0.24,0.17 -0.28,0.3 -0.28,0.67l0 2.96c0,0.38 0.08,0.5 0.32,0.65 0.19,0.11 0.48,0.2 0.74,0.26 0.59,0.12 1.2,0.11 1.82,0 -0.58,-0.26 -0.85,-0.46 -0.69,-1.27z"/>
|
||||
<path class="fil2" d="M1.74 1.57c0,0.3 0.41,0.4 0.65,0.47 0.63,0.16 1.35,0.16 1.99,0.03 1.88,-0.39 -0.06,-1.25 -1.87,-0.85 -0.4,0.08 -0.51,0.15 -0.77,0.35z"/>
|
||||
<path class="fil3" d="M5.81 6.23c0.25,-0.15 0.23,-0.41 0.33,-0.52 0.08,-0.1 0.14,-0.09 0.3,-0.14 0.15,-0.05 1.03,-0.96 1.06,-1.04l-0.61 -0.53c-0.19,0.29 -0.58,0.59 -0.83,0.83 -0.2,0.18 -0.15,0.11 -0.18,0.26 -0.08,0.39 -0.3,0.29 -0.45,0.37 -0.08,0.05 -0.13,0.14 -0.21,0.19 0.07,0.09 0.12,0.11 0.2,0.21 -0.07,0.07 -0.12,0.15 -0.2,0.22 -0.2,0.19 -0.48,0.41 -0.63,0.6 -0.3,0.38 -0.15,-0.12 -0.63,0.6 -0.13,0.2 -0.13,0.19 -0.09,0.24 0.09,0.09 0.16,0 0.28,-0.08 0.27,-0.18 0.3,-0.12 0.43,-0.38 0.04,-0.08 0.09,-0.12 0.17,-0.19l0.4 -0.43c0.13,-0.13 0.28,-0.32 0.44,-0.41l0.22 0.2z"/>
|
||||
<path class="fil4" d="M3.79 4.6c0.37,0.3 0.25,0.5 0.75,0.31l0.1 -0.31c-0.15,-0.25 -0.39,-0.36 -0.53,-0.56 0.24,-0.04 0.6,-0.13 0.81,0.05l0.01 -1.9c-0.13,0.01 -0.35,0.1 -0.51,0.14 -0.19,0.04 -0.4,0.04 -0.58,0.08l0 1.95c0,0.01 0,0.11 0,0.12 -0.02,0.14 0.02,0.05 -0.05,0.12z"/>
|
||||
<path class="fil3" d="M4.31 4.15l0.44 0.39 -0.13 0.45 -0.45 0.1 -0.46 -0.42c-0.08,0.47 0.15,0.78 0.46,0.92 0.27,0.11 0.52,0.02 0.6,0.05 0.11,0.05 0.23,0.25 0.36,0.31l0.09 -0.07c-0.05,-0.12 -0.11,-0.14 -0.19,-0.23 0.04,-0.07 0.03,-0.06 0.09,-0.13l0.24 -0.2c0.14,-0.07 0.08,0.03 0.11,-0.04 0,0 0.01,0 0.02,0 -0.16,-0.23 -0.2,-0.09 -0.18,-0.37 0.04,-0.57 -0.39,-0.83 -0.95,-0.84 -0.06,0.03 -0.01,0 -0.05,0.08z"/>
|
||||
<path class="fil3" d="M5.84 6.42c-0.17,-0.08 -0.23,-0.27 -0.3,-0.14 -0.03,0.04 -0.02,0 -0.01,0.07 0,0.04 0.05,0.08 0.08,0.11 0.3,0.27 0.76,0.69 1.02,0.98 0.22,0.25 0.7,0.13 0.69,-0.25 -0.01,-0.31 -0.67,-0.73 -1.1,-1.24 -0.01,0.01 -0.01,0.02 -0.02,0.02 -0.11,0.23 -0.1,0.17 -0.36,0.45z"/>
|
||||
<polygon class="fil5" points="0.85,7.67 1.09,7.67 1.1,7.42 0.84,7.42 "/>
|
||||
<polygon class="fil5" points="7.43,1.1 7.68,1.1 7.68,0.85 7.44,0.85 "/>
|
||||
<polygon class="fil5" points="0.84,6.82 1.07,6.83 1.07,6.57 0.84,6.57 "/>
|
||||
<polygon class="fil5" points="7.45,2.39 7.59,2.38 7.68,2.38 7.68,2.26 7.68,2.13 7.45,2.13 "/>
|
||||
<polygon class="fil5" points="0.84,7.25 1.07,7.25 1.07,7 0.84,7 "/>
|
||||
<polygon class="fil5" points="7.45,1.53 7.5,1.53 7.68,1.53 7.68,1.4 7.68,1.27 7.45,1.27 "/>
|
||||
<polygon class="fil5" points="0.84,6.4 1.07,6.4 1.07,6.14 0.85,6.14 "/>
|
||||
<polygon class="fil5" points="7.45,1.96 7.68,1.96 7.68,1.83 7.68,1.7 7.45,1.7 "/>
|
||||
<polygon class="fil5" points="1.28,7.67 1.52,7.67 1.51,7.45 1.27,7.45 "/>
|
||||
<path class="fil6" d="M7.22 0.91l0 0.12 -0.19 0 0 -0.12 0.19 0zm-0.22 0.17l0.26 0 -0.01 -0.23 -0.24 0 -0.01 0.23z"/>
|
||||
<path class="fil6" d="M1.89 7.49l0 0.13 -0.15 0 0 -0.13 0.15 0zm-0.2 0.17l0.24 0 0.01 -0.19 -0.24 0 -0.01 0.19z"/>
|
||||
<path class="fil6" d="M2.17 7.49l0.15 0 0 0.13 -0.15 0 0 -0.13zm-0.03 0.17l0.21 0 0 -0.2 -0.21 0.01 0 0.19z"/>
|
||||
<path class="fil6" d="M6.79 0.91l0 0.12 -0.16 0 0 -0.12 0.16 0zm-0.19 0.15l0.22 0 -0.01 -0.19 -0.21 0.01 0 0.18z"/>
|
||||
<polygon class="fil5" points="7.03,1.03 7.22,1.03 7.22,0.91 7.03,0.91 "/>
|
||||
<path class="fil7" d="M6.36 0.9l0 0.13 -0.16 0 0 -0.13 0.16 0zm-0.19 0.16l0.22 0 -0.01 -0.2 -0.21 0 0 0.2z"/>
|
||||
<path class="fil8" d="M2.14 7.47l0.21 -0.01 0 0.2 -0.21 0 0 -0.19zm-0.03 0.22l0.27 -0.02 -0.01 -0.23 -0.26 0 0 0.25z"/>
|
||||
<path class="fil9" d="M6.17 0.86l0.21 0 0.01 0.2 -0.22 0 0 -0.2zm-0.02 0.22l0.26 0.01 0.01 -0.24 -0.27 -0.01 0 0.24z"/>
|
||||
<polygon class="fil5" points="6.2,1.03 6.36,1.03 6.36,0.9 6.2,0.9 "/>
|
||||
<polygon class="fil5" points="2.32,7.62 2.32,7.49 2.17,7.49 2.17,7.62 "/>
|
||||
<polygon class="fil5" points="1.74,7.62 1.89,7.62 1.89,7.49 1.74,7.49 "/>
|
||||
<polygon class="fil5" points="6.63,1.03 6.79,1.03 6.79,0.91 6.63,0.91 "/>
|
||||
<path class="fil10" d="M1.69 7.66c0.1,0.04 0.16,0.03 0.27,0.02l-0.01 -0.24c-0.16,0 -0.16,-0.02 -0.25,0.03l0.24 0 -0.01 0.19 -0.24 0z"/>
|
||||
<path class="fil11" d="M6.6 1.06l-0.03 0c0.05,0.06 0.18,0.04 0.26,0.01 0.01,-0.04 0.02,-0.06 0.02,-0.1 -0.01,-0.14 0,-0.08 -0.04,-0.12l0 0.02 0.01 0.19 -0.22 0z"/>
|
||||
<polygon class="fil12" points="6.57,1.06 6.6,1.06 6.6,0.88 6.81,0.87 6.81,0.85 6.58,0.85 "/>
|
||||
<path class="fil13" d="M4.31 4.15c0.04,-0.08 -0.01,-0.05 0.05,-0.08l-0.06 0.01 0.01 0.07z"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 5.6 KiB |
14
apps/ssms20/info
Normal file
14
apps/ssms20/info
Normal file
@@ -0,0 +1,14 @@
|
||||
# GNOME shortcut name
|
||||
NAME="SQL Server Management Studio"
|
||||
|
||||
# Used for descriptions and window class
|
||||
FULL_NAME="SQL Server Management Studio"
|
||||
|
||||
# The executable inside windows
|
||||
WIN_EXECUTABLE="C:\Program Files (x86)\Microsoft SQL Server Management Studio 20\Common7\IDE\Ssms.exe"
|
||||
|
||||
# GNOME categories
|
||||
CATEGORIES="Development"
|
||||
|
||||
# GNOME mimetypes
|
||||
MIME_TYPES="text/sql"
|
@@ -1,9 +1,3 @@
|
||||
# Copyright (c) 2024 Gordon Cheong
|
||||
# Copyright (c) 2024 Oskar Manhart
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Visio"
|
||||
|
||||
|
@@ -1,9 +1,3 @@
|
||||
# Copyright (c) 2024 Gordon Cheong
|
||||
# Copyright (c) 2024 Oskar Manhart
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Visio"
|
||||
|
||||
|
@@ -1,9 +1,3 @@
|
||||
# Copyright (c) 2024 Gordon Cheong
|
||||
# Copyright (c) 2024 Oskar Manhart
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Visual Studio Community"
|
||||
|
||||
|
@@ -1,9 +1,3 @@
|
||||
# Copyright (c) 2024 Gordon Cheong
|
||||
# Copyright (c) 2024 Oskar Manhart
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Visual Studio Enterprise"
|
||||
|
||||
|
@@ -1,9 +1,3 @@
|
||||
# Copyright (c) 2024 Gordon Cheong
|
||||
# Copyright (c) 2024 Oskar Manhart
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Visual Studio Professional"
|
||||
|
||||
|
@@ -1,9 +1,3 @@
|
||||
# Copyright (c) 2024 Adam
|
||||
# Copyright (c) 2024 Oskar Manhart
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Word"
|
||||
|
||||
|
12
bin/winapps
12
bin/winapps
@@ -1,12 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright (c) 2024 Felix Bartels
|
||||
# Copyright (c) 2024 Rhea Barar
|
||||
# Copyright (c) 2024 Rohan Barar
|
||||
# Copyright (c) 2024 Oskar Manhart
|
||||
# Copyright (c) 2024 escapefreeg
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
### GLOBAL CONSTANTS ###
|
||||
# ERROR CODES
|
||||
@@ -42,7 +34,7 @@ readonly CONTAINER_NAME="WinApps" # FOR 'docker' AND 'podman' ONLY
|
||||
readonly RDP_PORT=3389
|
||||
readonly DOCKER_IP="127.0.0.1"
|
||||
# shellcheck disable=SC2155 # Silence warnings regarding masking return values through simultaneous declaration and assignment.
|
||||
readonly RUN="$(date)-${RANDOM}"
|
||||
readonly RUNID="${RANDOM}"
|
||||
|
||||
### GLOBAL VARIABLES ###
|
||||
# WINAPPS CONFIGURATION FILE
|
||||
@@ -162,7 +154,7 @@ Please run:
|
||||
# Name: 'dprint'
|
||||
# Role: Conditionally print debug messages to a log file, creating it if it does not exist.
|
||||
function dprint() {
|
||||
[ "$DEBUG" = "true" ] && echo "[$RUN] $1" >>"$LOG_PATH"
|
||||
[ "$DEBUG" = "true" ] && echo "[$(date)-$RUNID] $1" >>"$LOG_PATH"
|
||||
}
|
||||
|
||||
# Name: 'waFixScale'
|
||||
|
@@ -1,9 +1,3 @@
|
||||
# Copyright (c) 2024 Oskar Manhart
|
||||
# Copyright (c) 2024 Rohan Barar
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
# For documentation, FAQ, additional configuration options and technical help, visit: https://github.com/dockur/windows
|
||||
|
||||
name: "winapps" # Docker Compose Project Name.
|
||||
@@ -14,7 +8,7 @@ volumes:
|
||||
data:
|
||||
services:
|
||||
windows:
|
||||
image: dockurr/windows # https://hub.docker.com/r/dockurr/windows
|
||||
image: ghcr.io/dockur/windows:latest
|
||||
container_name: WinApps # Created Docker VM Name.
|
||||
environment:
|
||||
# Version of Windows to configure. For valid options, visit:
|
||||
|
11
default.nix
Normal file
11
default.nix
Normal file
@@ -0,0 +1,11 @@
|
||||
(import (
|
||||
let
|
||||
lock = builtins.fromJSON (builtins.readFile ./flake.lock);
|
||||
in
|
||||
fetchTarball {
|
||||
url =
|
||||
lock.nodes.flake-compat.locked.url
|
||||
or "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz";
|
||||
sha256 = lock.nodes.flake-compat.locked.narHash;
|
||||
}
|
||||
) { src = ./.; }).defaultNix
|
@@ -12,7 +12,7 @@ Although WinApps supports using `QEMU+KVM+libvirt` as a backend for running Wind
|
||||
You can find a guide for installing `Docker Engine` [here](https://docs.docker.com/engine/install/).
|
||||
|
||||
### Setup `Docker` Container
|
||||
WinApps utilises `docker compose` to configure Windows VMs. A template [`compose.yaml`](https://github.com/winapps-org/winapps/blob/main/compose.yaml) is provided.
|
||||
WinApps utilises `docker compose` to configure Windows VMs. A template [`compose.yaml`](../compose.yaml) is provided.
|
||||
|
||||
Prior to installing Windows, you can modify the RAM and number of CPU cores available to the Windows VM by changing `RAM_SIZE` and `CPU_CORES` within `compose.yaml`.
|
||||
|
||||
@@ -49,15 +49,6 @@ docker compose --file ./compose.yaml down
|
||||
docker compose --file ~/.config/winapps/compose.yaml up
|
||||
```
|
||||
|
||||
### Installing WinApps
|
||||
`Docker` simplifies the WinApps installation process by eliminating the need for any additional configuration of the Windows virtual machine. Once the Windows virtual machine is up and running, you can directly launch the WinApps installer, which should automatically detect and interface with Windows.
|
||||
|
||||
> [!NOTE]
|
||||
> Since no Windows user password is set by default, Windows may automatically log in, which may cause the WinApps installation to fail due to complications establishing an RDP connection. To avoid this issue, please use the VNC connection to ensure that the Windows user is logged out before starting the WinApps installation.
|
||||
|
||||
```bash
|
||||
bash <(curl https://raw.githubusercontent.com/winapps-org/winapps/main/setup.sh)
|
||||
```
|
||||
|
||||
### Changing `compose.yaml`
|
||||
Changes to `compose.yaml` require the Windows virtual machine to be removed and re-created. This should __NOT__ affect your data.
|
||||
@@ -121,9 +112,6 @@ podman-compose --file ./compose.yaml down
|
||||
podman-compose --file ~/.config/winapps/compose.yaml up
|
||||
```
|
||||
|
||||
### Installing WinApps
|
||||
Please follow the [`docker` instructions](#installing-winapps).
|
||||
|
||||
### Changing `compose.yaml`
|
||||
Changes to `compose.yaml` require the Windows virtual machine to be removed and re-created. This should __NOT__ affect your data.
|
||||
|
||||
|
@@ -28,9 +28,17 @@ Together, these components form a powerful and flexible virtualization stack, wi
|
||||
|
||||
3. Configure `libvirt` to use the 'system' URI by adding the line `LIBVIRT_DEFAULT_URI="qemu:///system"` to your preferred shell profile file (e.g., `.bashrc`, `.zshrc`, etc.).
|
||||
```bash
|
||||
echo "export LIBVIRT_DEFAULT_URI=\"qemu:///system\"" >> ~/.bashrc
|
||||
echo 'export LIBVIRT_DEFAULT_URI="qemu:///system"' >> ~/.bashrc
|
||||
```
|
||||
|
||||
> [!NOTE]
|
||||
> WinApps may not read your shell's configuration. If you're having issues getting the installer to detect your VM, try adding
|
||||
> `LIBVIRT_DEFAULT_URI="qemu:///system"` to your `/etc/environment` like:
|
||||
> ```bash
|
||||
> echo 'LIBVIRT_DEFAULT_URI="qemu:///system"' | sudo tee -a /etc/environment
|
||||
> ```
|
||||
> Thanks to imoize for pointing this out: https://github.com/winapps-org/winapps/issues/310#issuecomment-2505348088
|
||||
|
||||
4. Install `QEMU Guest Agent`.
|
||||
```bash
|
||||
sudo apt install qemu-guest-agent # Debian/Ubuntu
|
||||
@@ -642,13 +650,13 @@ You can then test whether the host GNU/Linux system can communicate with Windows
|
||||
{"return":{"version":"107.0.1","supported_commands":[{"enabled":true,"name":"guest-get-cpustats","success-response":true},{"enabled":true,"name":"guest-get-diskstats","success-response":true},{"enabled":true,"name":"guest-get-devices","success-response":true},{"enabled":true,"name":"guest-get-osinfo","success-response":true},{"enabled":true,"name":"guest-get-timezone","success-response":true},{"enabled":true,"name":"guest-get-users","success-response":true},{"enabled":true,"name":"guest-get-host-name","success-response":true},{"enabled":true,"name":"guest-exec","success-response":true},{"enabled":true,"name":"guest-exec-status","success-response":true},{"enabled":false,"name":"guest-get-memory-block-info","success-response":true},{"enabled":false,"name":"guest-set-memory-blocks","success-response":true},{"enabled":false,"name":"guest-get-memory-blocks","success-response":true},{"enabled":true,"name":"guest-set-user-password","success-response":true},{"enabled":true,"name":"guest-get-fsinfo","success-response":true},{"enabled":true,"name":"guest-get-disks","success-response":true},{"enabled":false,"name":"guest-set-vcpus","success-response":true},{"enabled":true,"name":"guest-get-vcpus","success-response":true},{"enabled":true,"name":"guest-network-get-interfaces","success-response":true},{"enabled":false,"name":"guest-suspend-hybrid","success-response":false},{"enabled":true,"name":"guest-suspend-ram","success-response":false},{"enabled":true,"name":"guest-suspend-disk","success-response":false},{"enabled":true,"name":"guest-fstrim","success-response":true},{"enabled":true,"name":"guest-fsfreeze-thaw","success-response":true},{"enabled":true,"name":"guest-fsfreeze-freeze-list","success-response":true},{"enabled":true,"name":"guest-fsfreeze-freeze","success-response":true},{"enabled":true,"name":"guest-fsfreeze-status","success-response":true},{"enabled":true,"name":"guest-file-flush","success-response":true},{"enabled":true,"name":"guest-file-seek","success-response":true},{"enabled":true,"name":"guest-file-write","success-response":true},{"enabled":true,"name":"guest-file-read","success-response":true},{"enabled":true,"name":"guest-file-close","success-response":true},{"enabled":true,"name":"guest-file-open","success-response":true},{"enabled":true,"name":"guest-shutdown","success-response":false},{"enabled":true,"name":"guest-info","success-response":true},{"enabled":true,"name":"guest-set-time","success-response":true},{"enabled":true,"name":"guest-get-time","success-response":true},{"enabled":true,"name":"guest-ping","success-response":true},{"enabled":true,"name":"guest-sync","success-response":true},{"enabled":true,"name":"guest-sync-delimited","success-response":true}]}}
|
||||
```
|
||||
|
||||
Next, you will need to make some registry changes to enable RDP Applications to run on the system. Start by downloading the [RDPApps.reg](https://github.com/winapps-org/winapps/blob/main/oem/RDPApps.reg) file, right-clicking on the `Raw` button, and clicking on `Save target as`.
|
||||
Next, you will need to make some registry changes to enable RDP Applications to run on the system. Start by downloading the [RDPApps.reg](../oem/RDPApps.reg) file, right-clicking on the `Raw` button, and clicking on `Save target as`. Repeat the same thing for the [install.bat](../oem/install.bat) and the [NetProfileCleanup.ps1](../oem/NetProfileCleanup.ps1). **Do not download the Container.reg.**
|
||||
|
||||
<p align="center">
|
||||
<img src="./libvirt_images/26.png" width="700px"/>
|
||||
</p>
|
||||
|
||||
Once you have downloaded the registry file, right-click on it, and choose `Merge`.
|
||||
Once you have downloaded all three files, right-click the install.bat and select "Run as administrator".
|
||||
|
||||
<p align="center">
|
||||
<img src="./libvirt_images/27.png" width="700px"/>
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 168 KiB After Width: | Height: | Size: 56 KiB |
76
flake.lock
generated
Normal file
76
flake.lock
generated
Normal file
@@ -0,0 +1,76 @@
|
||||
{
|
||||
"nodes": {
|
||||
"flake-compat": {
|
||||
"locked": {
|
||||
"lastModified": 1696426674,
|
||||
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||
"revCount": 57,
|
||||
"type": "tarball",
|
||||
"url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.0.1/018afb31-abd1-7bff-a5e4-cff7e18efb7a/source.tar.gz"
|
||||
},
|
||||
"original": {
|
||||
"type": "tarball",
|
||||
"url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz"
|
||||
}
|
||||
},
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1710146030,
|
||||
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1724819573,
|
||||
"narHash": "sha256-GnR7/ibgIH1vhoy8cYdmXE6iyZqKqFxQSVkFgosBh6w=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "71e91c409d1e654808b2621f28a327acfdad8dc2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat",
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs": "nixpkgs"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
29
flake.nix
Normal file
29
flake.nix
Normal file
@@ -0,0 +1,29 @@
|
||||
{
|
||||
description = "WinApps Nix packages & NixOS module";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
|
||||
flake-compat.url = "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz";
|
||||
flake-utils.url = "github:numtide/flake-utils";
|
||||
};
|
||||
|
||||
outputs =
|
||||
{
|
||||
nixpkgs,
|
||||
flake-utils,
|
||||
...
|
||||
}:
|
||||
flake-utils.lib.eachDefaultSystem (
|
||||
system:
|
||||
let
|
||||
pkgs = import nixpkgs { inherit system; };
|
||||
in
|
||||
{
|
||||
formatter = pkgs.nixfmt-rfc-style;
|
||||
|
||||
packages.winapps = pkgs.callPackage ./packages/winapps { };
|
||||
packages.winapps-launcher = pkgs.callPackage ./packages/winapps-launcher { };
|
||||
}
|
||||
);
|
||||
}
|
@@ -1,9 +1,3 @@
|
||||
# Copyright (c) 2024 Rohan Barar
|
||||
# Copyright (c) 2024 Oskar Manhart
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
### FUNCTIONS ###
|
||||
# Name: 'GetApplicationIcon'
|
||||
# Role: Extract the icon from a given executable file as a base-64 string.
|
||||
|
4
oem/Container.reg
Normal file
4
oem/Container.reg
Normal file
@@ -0,0 +1,4 @@
|
||||
Windows Registry Editor Version 5.00
|
||||
|
||||
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation]
|
||||
"RealTimeIsUniversal"=dword:00000001
|
30
oem/NetProfileCleanup.ps1
Normal file
30
oem/NetProfileCleanup.ps1
Normal file
@@ -0,0 +1,30 @@
|
||||
# Get the current network profile name
|
||||
$currentProfile = ^(Get-NetConnectionProfile^).Name
|
||||
|
||||
# Get all profiles from the registry
|
||||
$profilesKey = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles"
|
||||
$profiles = Get-ChildItem -Path $profilesKey
|
||||
|
||||
foreach ^($profile in $profiles^) {
|
||||
$profilePath = "$profilesKey\$($profile.PSChildName)"
|
||||
$profileName = ^(Get-ItemProperty -Path $profilePath^).ProfileName
|
||||
|
||||
# Remove profiles that don't match the current one
|
||||
if ^($profileName -ne $currentProfile^) {
|
||||
Remove-Item -Path $profilePath -Recurse
|
||||
Write-Host "Deleted profile: $profileName"
|
||||
}
|
||||
}
|
||||
|
||||
# Change the current profile name to "WinApps"
|
||||
$profiles = Get-ChildItem -Path $profilesKey
|
||||
foreach ^($profile in $profiles^) {
|
||||
$profilePath = "$profilesKey\$($profile.PSChildName)"
|
||||
$profileName = ^(Get-ItemProperty -Path $profilePath^).ProfileName
|
||||
|
||||
if ^($profileName -eq $currentProfile^) {
|
||||
# Update the profile name
|
||||
Set-ItemProperty -Path $profilePath -Name "ProfileName" -Value "WinApps"
|
||||
Write-Host "Renamed profile to: WinApps"
|
||||
}
|
||||
}
|
@@ -1,14 +1,20 @@
|
||||
; Copyright (c) 2024 Fmstrat
|
||||
; All rights reserved.
|
||||
;
|
||||
; SPDX-License-Identifier: Proprietary
|
||||
Windows Registry Editor Version 5.00
|
||||
|
||||
; Disable RemoteApp allowlist so all applications can be used in Remote Desktop sessions
|
||||
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList]
|
||||
"fDisabledAllowList"=dword:00000001
|
||||
|
||||
; Allow unlisted programs to be run in Remote Desktop sessions
|
||||
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services]
|
||||
"fAllowUnlistedRemotePrograms"=dword:00000001
|
||||
|
||||
; Disable automatic administrator logon at startup
|
||||
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
|
||||
"AutoAdminLogon"="0"
|
||||
|
||||
; Always use the server's keyboard layout
|
||||
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
|
||||
"IgnoreRemoteKeyboardLayout"=dword:00000001
|
||||
|
||||
; Disable "Do you want your PC to be discoverable" prompt after each host system reboot
|
||||
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff]
|
||||
|
@@ -1,7 +1,25 @@
|
||||
@echo off
|
||||
REM Copyright (c) 2024 Oskar Manhart
|
||||
REM All rights reserved.
|
||||
REM
|
||||
REM SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
REG IMPORT C:\OEM\RDPApps.reg
|
||||
reg import %~dp0\RDPApps.reg
|
||||
|
||||
if exists %~dp0\Container.reg (
|
||||
reg import %~dp0\Container.reg
|
||||
)
|
||||
|
||||
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^""
|
||||
|
||||
schtasks /query /tn "%taskname%" >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.
|
||||
) else (
|
||||
echo Failed to create scheduled task.
|
||||
)
|
||||
|
11
packages/winapps-launcher/WinAppsLauncher.patch
Normal file
11
packages/winapps-launcher/WinAppsLauncher.patch
Normal file
@@ -0,0 +1,11 @@
|
||||
--- a/WinAppsLauncher.sh
|
||||
+++ b/WinAppsLauncher.sh
|
||||
@@ -19,7 +19,7 @@ declare -rx EC_WIN_NOT_SPEC=6
|
||||
declare -rx EC_NO_WIN_FOUND=7
|
||||
|
||||
# Paths
|
||||
-declare -rx ICONS_PATH="./Icons"
|
||||
+declare -rx ICONS_PATH="@out@/Icons"
|
||||
declare -rx APPDATA_PATH="${HOME}/.local/share/winapps"
|
||||
declare -rx CONFIG_PATH="${HOME}/.config/winapps"
|
||||
declare -rx CONFIG_FILE="${CONFIG_PATH}/winapps.conf"
|
72
packages/winapps-launcher/default.nix
Normal file
72
packages/winapps-launcher/default.nix
Normal file
@@ -0,0 +1,72 @@
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
makeWrapper,
|
||||
makeDesktopItem,
|
||||
callPackage,
|
||||
yad,
|
||||
...
|
||||
}:
|
||||
let
|
||||
rev = "9f5fbcb57f2932b260202fb582f9adcf28df5f1c";
|
||||
hash = "sha256-cShXlcFHTryxKLKxdoqZSge2oyGgeuFPW9Nxg+gSjB4=";
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "winapps-launcher";
|
||||
version = "0-unstable-2024-10-01";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "winapps-org";
|
||||
repo = "WinApps-Launcher";
|
||||
|
||||
inherit rev hash;
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
buildInputs = [
|
||||
yad
|
||||
(callPackage ../winapps { })
|
||||
];
|
||||
|
||||
patches = [ ./WinAppsLauncher.patch ];
|
||||
|
||||
postPatch = ''
|
||||
substituteAllInPlace WinAppsLauncher.sh
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out
|
||||
cp -r ./Icons $out/Icons
|
||||
|
||||
install -m755 -D WinAppsLauncher.sh $out/bin/winapps-launcher
|
||||
install -Dm444 -T Icons/AppIcon.svg $out/share/pixmaps/winapps.svg
|
||||
|
||||
wrapProgram $out/bin/winapps-launcher \
|
||||
--set LIBVIRT_DEFAULT_URI "qemu:///system" \
|
||||
--prefix PATH : "${lib.makeBinPath buildInputs}"
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
desktopItems = [
|
||||
(makeDesktopItem {
|
||||
name = "winapps";
|
||||
exec = "winapps-launcher";
|
||||
icon = "winapps";
|
||||
comment = meta.description;
|
||||
desktopName = "WinApps";
|
||||
categories = [ "Utility" ];
|
||||
})
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/winapps-org/WinApps-Launcher";
|
||||
description = "Graphical launcher for WinApps. Run Windows applications (including Microsoft 365 and Adobe Creative Cloud) on GNU/Linux with KDE, GNOME or XFCE, integrated seamlessly as if they were native to the OS. Wayland is currently unsupported.";
|
||||
mainProgram = "winapps-launcher";
|
||||
platforms = platforms.linux;
|
||||
license = licenses.gpl3;
|
||||
};
|
||||
}
|
75
packages/winapps/default.nix
Normal file
75
packages/winapps/default.nix
Normal file
@@ -0,0 +1,75 @@
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
makeWrapper,
|
||||
freerdp3,
|
||||
dialog,
|
||||
libnotify,
|
||||
netcat,
|
||||
iproute2,
|
||||
...
|
||||
}:
|
||||
let
|
||||
rev = "3f44fc3b0fbe1437f2fb39b178fee63f81e34bbb";
|
||||
hash = "sha256-5YOzr/Q7qfokQolTu285OPi+7cMvAiAsOP1o9nvyqPE=";
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "winapps";
|
||||
version = "0-unstable-2024-12-07";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "winapps-org";
|
||||
repo = "winapps";
|
||||
|
||||
inherit rev hash;
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
buildInputs = [
|
||||
freerdp3
|
||||
libnotify
|
||||
dialog
|
||||
netcat
|
||||
iproute2
|
||||
];
|
||||
|
||||
patches = [
|
||||
./winapps.patch
|
||||
./setup.patch
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteAllInPlace bin/winapps
|
||||
substituteAllInPlace setup.sh
|
||||
patchShebangs install/inquirer.sh
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out
|
||||
mkdir -p $out/src
|
||||
|
||||
cp -r ./ $out/src/
|
||||
|
||||
install -m755 -D bin/winapps $out/bin/winapps
|
||||
install -m755 -D setup.sh $out/bin/winapps-setup
|
||||
|
||||
for f in winapps-setup winapps; do
|
||||
wrapProgram $out/bin/$f \
|
||||
--set LIBVIRT_DEFAULT_URI "qemu:///system" \
|
||||
--prefix PATH : "${lib.makeBinPath buildInputs}"
|
||||
done
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/winapps-org/winapps";
|
||||
description = "Run Windows applications (including Microsoft 365 and Adobe Creative Cloud) on GNU/Linux with KDE, GNOME or XFCE, integrated seamlessly as if they were native to the OS. Wayland is currently unsupported.";
|
||||
mainProgram = "winapps";
|
||||
platforms = platforms.linux;
|
||||
license = licenses.agpl3Plus;
|
||||
};
|
||||
}
|
165
packages/winapps/setup.patch
Normal file
165
packages/winapps/setup.patch
Normal file
@@ -0,0 +1,165 @@
|
||||
diff --git a/setup.sh b/setup.sh
|
||||
index 6aa9b574..9fbefe65 100755
|
||||
--- a/setup.sh
|
||||
+++ b/setup.sh
|
||||
@@ -48,8 +48,8 @@ readonly SYS_BIN_PATH="/usr/local/bin" # UNIX path to 'bin' dir
|
||||
readonly USER_BIN_PATH="${HOME}/.local/bin" # UNIX path to 'bin' directory for a '--user' WinApps installation.
|
||||
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 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.
|
||||
# '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.
|
||||
@@ -79,7 +79,7 @@ readonly TEST_PATH_WIN="${USER_APPDATA_PATH_WIN}\\FreeRDP_Connection_Test" # WIN
|
||||
# 'WinApps Configuration File'
|
||||
readonly CONFIG_PATH="${HOME}/.config/winapps/winapps.conf" # UNIX path to the WinApps configuration file.
|
||||
# 'Inquirer Bash Script'
|
||||
-readonly INQUIRER_PATH="./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
|
||||
readonly VM_NAME="RDPWindows" # Name of the Windows VM (FOR 'libvirt' ONLY).
|
||||
@@ -139,13 +139,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}winapps-setup --user${CLEAR_TEXT} # Install WinApps and selected applications in ${HOME}
|
||||
+ ${COMMAND_TEXT}winapps-setup --system${CLEAR_TEXT} # Install WinApps and selected applications in /usr
|
||||
+ ${COMMAND_TEXT}winapps-setup --user --setupAllOfficiallySupportedApps${CLEAR_TEXT} # Install WinApps and all officially supported applications in ${HOME}
|
||||
+ ${COMMAND_TEXT}winapps-setup --system --setupAllOfficiallySupportedApps${CLEAR_TEXT} # Install WinApps and all officially supported applications in /usr
|
||||
+ ${COMMAND_TEXT}winapps-setup --user --uninstall${CLEAR_TEXT} # Uninstall everything in ${HOME}
|
||||
+ ${COMMAND_TEXT}winapps-setup --system --uninstall${CLEAR_TEXT} # Uninstall everything in /usr
|
||||
+ ${COMMAND_TEXT}winapps-setup --help${CLEAR_TEXT} # Display this usage message."
|
||||
}
|
||||
|
||||
# Name: 'waGetSourceCode'
|
||||
@@ -168,7 +168,7 @@ function waGetSourceCode() {
|
||||
$SUDO git clone --recurse-submodules --remote-submodules https://github.com/winapps-org/winapps.git "$SOURCE_PATH"
|
||||
else
|
||||
echo -e "${INFO_TEXT}WinApps installation already present at ${CLEAR_TEXT}${COMMAND_TEXT}${SOURCE_PATH}${CLEAR_TEXT}${INFO_TEXT}. Updating...${CLEAR_TEXT}"
|
||||
- $SUDO git -C "$SOURCE_PATH" pull --no-rebase
|
||||
+
|
||||
fi
|
||||
|
||||
# Silently change the working directory.
|
||||
@@ -395,7 +395,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.
|
||||
@@ -415,7 +415,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.
|
||||
@@ -810,7 +810,7 @@ function waCheckGroupMembership() {
|
||||
# Identify groups the current user belongs to.
|
||||
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
|
||||
# Complete the previous line.
|
||||
echo -e "${FAIL_TEXT}Failed!${CLEAR_TEXT}\n"
|
||||
|
||||
@@ -1244,11 +1244,11 @@ function waConfigureWindows() {
|
||||
# Populate variables.
|
||||
WIN_BASH="\
|
||||
#!/usr/bin/env bash
|
||||
-${BIN_PATH}/winapps windows"
|
||||
+@out@/bin/winapps windows"
|
||||
WIN_DESKTOP="\
|
||||
[Desktop Entry]
|
||||
Name=Windows
|
||||
-Exec=${BIN_PATH}/winapps windows %F
|
||||
+Exec=@out/bin/winapps windows %F
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Icon=${APPDATA_PATH}/icons/windows.svg
|
||||
@@ -1295,13 +1295,13 @@ function waConfigureApp() {
|
||||
# Determine the content of the bash script for the application.
|
||||
APP_BASH="\
|
||||
#!/usr/bin/env bash
|
||||
-${BIN_PATH}/winapps ${1}"
|
||||
+@out@/bin/winapps ${1}"
|
||||
|
||||
# Determine the content of the '.desktop' file for the application.
|
||||
APP_DESKTOP_FILE="\
|
||||
[Desktop Entry]
|
||||
Name=${NAME}
|
||||
-Exec=${BIN_PATH}/winapps ${1} %F
|
||||
+Exec=@out@/bin/winapps ${1} %F
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Icon=${APP_ICON}
|
||||
@@ -1631,8 +1631,8 @@ function waInstall() {
|
||||
waFindInstalled
|
||||
|
||||
# Install the WinApps bash scripts.
|
||||
- $SUDO ln -sf "${SOURCE_PATH}/bin/winapps" "${BIN_PATH}/winapps"
|
||||
- $SUDO ln -sf "${SOURCE_PATH}/setup.sh" "${BIN_PATH}/winapps-setup"
|
||||
+
|
||||
+
|
||||
|
||||
# Configure the Windows RDP session application launcher.
|
||||
waConfigureWindows
|
||||
@@ -1682,18 +1682,15 @@ function waUninstall() {
|
||||
local DESKTOP_FILE_NAME="" # Stores the name of the '.desktop' file for the application.
|
||||
local BASH_SCRIPT_NAME="" # Stores the name of the application.
|
||||
|
||||
- # Remove the 'WinApps' bash scripts.
|
||||
- $SUDO rm -f "${BIN_PATH}/winapps"
|
||||
- $SUDO rm -f "${BIN_PATH}/winapps-setup"
|
||||
-
|
||||
# Remove WinApps configuration data, temporary files and logs.
|
||||
+ chmod -R +rw "$USER_APPDATA_PATH"
|
||||
rm -rf "$USER_APPDATA_PATH"
|
||||
|
||||
# Remove application icons and shortcuts.
|
||||
$SUDO rm -rf "$APPDATA_PATH"
|
||||
|
||||
# Store '.desktop' files containing "${BIN_PATH}/winapps" in an array, returning an empty array if no such files exist.
|
||||
- readarray -t WINAPPS_DESKTOP_FILES < <(grep -l -d skip "${BIN_PATH}/winapps" "${APP_PATH}/"* 2>/dev/null || true)
|
||||
+ readarray -t WINAPPS_DESKTOP_FILES < <(grep -l -d skip "@out@/bin/winapps" "${APP_PATH}/"* 2>/dev/null || true)
|
||||
|
||||
# Remove each '.desktop' file.
|
||||
for DESKTOP_FILE_PATH in "${WINAPPS_DESKTOP_FILES[@]}"; do
|
||||
@@ -1714,7 +1711,7 @@ function waUninstall() {
|
||||
done
|
||||
|
||||
# Store the paths of bash scripts calling 'WinApps' to launch specific applications in an array, returning an empty array if no such files exist.
|
||||
- readarray -t WINAPPS_APP_BASH_SCRIPTS < <(grep -l -d skip "${BIN_PATH}/winapps" "${BIN_PATH}/"* 2>/dev/null || true)
|
||||
+ readarray -t WINAPPS_APP_BASH_SCRIPTS < <(grep -l -d skip "@out@/bin/winapps" "${BIN_PATH}/"* 2>/dev/null || true)
|
||||
|
||||
# Remove each bash script.
|
||||
for BASH_SCRIPT_PATH in "${WINAPPS_APP_BASH_SCRIPTS[@]}"; do
|
||||
@@ -1735,10 +1732,9 @@ function waUninstall() {
|
||||
done
|
||||
|
||||
# Print caveats.
|
||||
- echo -e "\n${INFO_TEXT}Please note that your WinApps configuration and the WinApps source code were not removed.${CLEAR_TEXT}"
|
||||
- echo -e "${INFO_TEXT}You can remove these manually by running:${CLEAR_TEXT}"
|
||||
+ echo -e "\n${INFO_TEXT}Please note that your WinApps configuration and the WinApps package were not removed.${CLEAR_TEXT}"
|
||||
+ echo -e "${INFO_TEXT}You can remove your config manually by running:${CLEAR_TEXT}"
|
||||
echo -e "${COMMAND_TEXT}rm -r $(dirname "$CONFIG_PATH")${CLEAR_TEXT}"
|
||||
- echo -e "${COMMAND_TEXT}rm -r ${SOURCE_PATH}${CLEAR_TEXT}\n"
|
||||
|
||||
# Print feedback.
|
||||
echo -e "${SUCCESS_TEXT}UNINSTALLATION COMPLETE.${CLEAR_TEXT}"
|
11
packages/winapps/winapps.patch
Normal file
11
packages/winapps/winapps.patch
Normal file
@@ -0,0 +1,11 @@
|
||||
--- 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
|
||||
}
|
9
setup.sh
9
setup.sh
@@ -1,13 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright (c) 2024 Felix Bartels
|
||||
# Copyright (c) 2024 Coruscant11
|
||||
# Copyright (c) 2024 escapefreeg
|
||||
# Copyright (c) 2024 Rohan Barar
|
||||
# Copyright (c) 2024 Oskar Manhart
|
||||
# Copyright (c) 2024 Sebastien Bürky
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
# shellcheck disable=SC2034 # Silence warnings regarding unused variables globally.
|
||||
|
||||
|
Reference in New Issue
Block a user