Compare commits
394 Commits
add-contri
...
fix-setup-
Author | SHA1 | Date | |
---|---|---|---|
![]() |
53e980a8e8 | ||
![]() |
bc8ac155d4 | ||
![]() |
5104e0d400 | ||
![]() |
a6a51b2ccf | ||
![]() |
b203b6d252 | ||
![]() |
abb3d56b7e | ||
![]() |
fd1676092a | ||
![]() |
d66d41ed9a | ||
![]() |
97d10a5724 | ||
![]() |
1dba0991ec | ||
![]() |
8619510aa6 | ||
![]() |
7b0c55130f | ||
![]() |
3875a33307 | ||
![]() |
41957ed4cb | ||
![]() |
3545364cbf | ||
![]() |
b704593972 | ||
![]() |
e6440a3923 | ||
![]() |
d919fb8e64 | ||
![]() |
1a0029ad47 | ||
![]() |
3f5bba7f0e | ||
![]() |
aa96e56130 | ||
![]() |
a67b692f3e | ||
![]() |
ac22b1b4e6 | ||
![]() |
b7a3eaa784 | ||
![]() |
5ec2479df6 | ||
![]() |
f26d28b561 | ||
![]() |
dcb75c29f4 | ||
![]() |
94466f9a9b | ||
![]() |
d7ab869a74 | ||
![]() |
0bdd907959 | ||
![]() |
2e0f059868 | ||
![]() |
0ef690635f | ||
![]() |
5c5b1e8a1d | ||
![]() |
def1d60326 | ||
![]() |
63e94e277f | ||
![]() |
fc9d558288 | ||
![]() |
cb7b3c7b13 | ||
![]() |
7d26cecad4 | ||
![]() |
d7e86124ed | ||
![]() |
02966c8440 | ||
![]() |
71d2abde6d | ||
![]() |
d1eca20976 | ||
![]() |
d00439bb97 | ||
![]() |
60905ccf20 | ||
![]() |
420712a69e | ||
![]() |
da736a9175 | ||
![]() |
6771f8645f | ||
![]() |
f47519106e | ||
![]() |
e7651b18b8 | ||
![]() |
720b72b1e1 | ||
![]() |
cba641f1cf | ||
![]() |
3e76e102f5 | ||
![]() |
8f0bf1074e | ||
![]() |
09288b135e | ||
![]() |
03d996725a | ||
![]() |
82f0a0b843 | ||
![]() |
a2515b3ce5 | ||
![]() |
650e32dfdf | ||
![]() |
1ab992ca1c | ||
![]() |
c5bdc1eee4 | ||
![]() |
cab82a24dd | ||
![]() |
2c081f218c | ||
![]() |
60f0456d44 | ||
![]() |
b5cb322827 | ||
![]() |
44f9df793d | ||
![]() |
887e282443 | ||
![]() |
c25ea7c2fc | ||
![]() |
88f1e4e96e | ||
![]() |
ab496b9ade | ||
![]() |
a04103b88c | ||
![]() |
6a7b57a064 | ||
![]() |
e8037948f4 | ||
![]() |
fdecd7a8da | ||
![]() |
bbf2da803f | ||
![]() |
7abe89ec3a | ||
![]() |
f0aa7d6fb8 | ||
![]() |
92686f0ae4 | ||
![]() |
ff0cef7841 | ||
![]() |
050384d255 | ||
![]() |
3ea6c614b3 | ||
![]() |
e5d6f60cc8 | ||
![]() |
708ad60d1c | ||
![]() |
8cac5af983 | ||
![]() |
cc13aac465 | ||
![]() |
a23fd713e7 | ||
![]() |
1c4b38b7ec | ||
![]() |
34c8168548 | ||
![]() |
9c0564cca4 | ||
![]() |
26854d9137 | ||
![]() |
f1441a5c12 | ||
![]() |
12530a6da1 | ||
![]() |
2f184cb525 | ||
![]() |
c6a8a43fdc | ||
![]() |
e62155cba5 | ||
![]() |
e4d4b915d5 | ||
![]() |
1c79a78c09 | ||
![]() |
0f3b43d92a | ||
![]() |
4136b1d6c0 | ||
![]() |
82b4d8bdfb | ||
![]() |
4b4fe93d86 | ||
![]() |
ba2ec0a047 | ||
![]() |
6e9e633616 | ||
![]() |
078c9b01c9 | ||
![]() |
4de47581c4 | ||
![]() |
03dff50916 | ||
![]() |
4010972963 | ||
![]() |
01d72eac5b | ||
![]() |
223ba8ecb0 | ||
![]() |
8e0ef40b1f | ||
![]() |
8796615775 | ||
![]() |
e48d50ff78 | ||
![]() |
5908f88ac5 | ||
![]() |
2068ab71ab | ||
![]() |
edca9d5b9a | ||
![]() |
ee967296a6 | ||
![]() |
abf4c7ae66 | ||
![]() |
d250907a3c | ||
![]() |
efa348d1b3 | ||
![]() |
ce9a84dc52 | ||
![]() |
7188ed4072 | ||
![]() |
fd5e7f0a90 | ||
![]() |
60b6c1215c | ||
![]() |
7548950a5e | ||
![]() |
051e2e5852 | ||
![]() |
0c057b722d | ||
![]() |
17a511230c | ||
![]() |
8ea5c2e079 | ||
![]() |
3e84f5efdf | ||
![]() |
3a71065db7 | ||
![]() |
2b806de133 | ||
![]() |
113abb3322 | ||
![]() |
aa5b3e9455 | ||
![]() |
109b2b1d9c | ||
![]() |
f075eab78d | ||
![]() |
9e6b659f48 | ||
![]() |
8b8e50aeaf | ||
![]() |
7d8f1e440d | ||
![]() |
12dee36bdc | ||
![]() |
4d3821d9aa | ||
![]() |
cd5b823ff7 | ||
![]() |
c604f49422 | ||
![]() |
c4d48e2087 | ||
![]() |
3298376f92 | ||
![]() |
e8105f9ea6 | ||
![]() |
dd9a85aae1 | ||
![]() |
c9fb729a50 | ||
![]() |
dcd662dc06 | ||
![]() |
9a0e9ee58e | ||
![]() |
e2e9fd9b7b | ||
![]() |
5594a23298 | ||
![]() |
a317ba41f4 | ||
![]() |
a7e465c704 | ||
![]() |
c3affa75a8 | ||
![]() |
2b2f4cea69 | ||
![]() |
026325d2bf | ||
![]() |
e7dfd56515 | ||
![]() |
27da810f34 | ||
![]() |
8ecb806b97 | ||
![]() |
fc3e5e0839 | ||
![]() |
b42449459e | ||
![]() |
b300444e15 | ||
![]() |
46de8a8caa | ||
![]() |
84308118c6 | ||
![]() |
805b479e45 | ||
![]() |
013cc42e07 | ||
![]() |
885d02079a | ||
![]() |
b3969aa3b7 | ||
![]() |
4019f9cb81 | ||
![]() |
a2568be16f | ||
![]() |
b9ef076dc8 | ||
![]() |
5946444c63 | ||
![]() |
afb333ab4f | ||
![]() |
97a3889ecc | ||
![]() |
c06ae550bc | ||
![]() |
bac0d08cf2 | ||
![]() |
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 | ||
![]() |
e96f080602 | ||
![]() |
f3d3d53f3a | ||
![]() |
35c181d721 | ||
![]() |
40ef5803bf | ||
![]() |
61af2140a1 | ||
![]() |
61d092f1a3 | ||
![]() |
ee0b168466 | ||
![]() |
8be1cd7101 | ||
![]() |
4e9a416e5f | ||
![]() |
74cd9d93fe | ||
![]() |
821bbcdadc | ||
![]() |
f9b8a13fdc | ||
![]() |
f42c49ec75 | ||
![]() |
109cd696eb | ||
![]() |
d962654fe5 | ||
![]() |
3c1038bb7e | ||
![]() |
1ffa6f5053 | ||
![]() |
7d1a986c90 | ||
![]() |
e4eb78a0ce | ||
![]() |
ab3916f1d2 | ||
![]() |
3bd48b7211 | ||
![]() |
d7156d3640 | ||
![]() |
6b17de3771 | ||
![]() |
206da93530 | ||
![]() |
c42bf78be5 | ||
![]() |
6379d8f00e | ||
![]() |
879e27272b | ||
![]() |
4bc58dd488 | ||
![]() |
b87ba41bad | ||
![]() |
290226aec7 | ||
![]() |
5831696ead | ||
![]() |
e164a6b5ef | ||
![]() |
0b6eed0a04 | ||
![]() |
c033d7c4a8 | ||
![]() |
a00939164d | ||
![]() |
d122319392 | ||
![]() |
b0a0993afc | ||
![]() |
7e657c58a7 | ||
![]() |
d3d97d7d35 | ||
![]() |
b678a9f130 | ||
![]() |
35c5a1dc6c | ||
![]() |
73e71aff80 | ||
![]() |
963e74b90e | ||
![]() |
26c3ae12ca | ||
![]() |
b2e2d946c8 | ||
![]() |
8c4a695a9f | ||
![]() |
01f070b701 | ||
![]() |
e20e3423fb | ||
![]() |
1ffdff8fbe | ||
![]() |
d12b400730 | ||
![]() |
db7562aec5 | ||
![]() |
373c85aeb2 | ||
![]() |
6e0da93a4a | ||
![]() |
6103770f0b | ||
![]() |
4884cc97ca | ||
![]() |
7b939fc541 | ||
![]() |
ad443a5a97 | ||
![]() |
6df306f32a | ||
![]() |
fe6322c585 | ||
![]() |
99fcee0982 | ||
![]() |
df3548778c | ||
![]() |
6c3d582406 | ||
![]() |
09abdb747e | ||
![]() |
06a112d012 | ||
![]() |
af1ba31334 | ||
![]() |
3290965614 | ||
![]() |
405e61d122 | ||
![]() |
80ba2ad378 | ||
![]() |
9a1ed82053 | ||
![]() |
9c0c39845c | ||
![]() |
8a4d8906d3 | ||
![]() |
0826a238bc | ||
![]() |
8cd9dd7919 | ||
![]() |
4ce6204881 | ||
![]() |
a060947ac5 | ||
![]() |
a98589ba14 | ||
![]() |
c98938776d | ||
![]() |
e897292a34 | ||
![]() |
f4f4d30998 | ||
![]() |
03c702a662 | ||
![]() |
b76598b3bb | ||
![]() |
7a59b3b9b7 | ||
![]() |
c554632fe1 | ||
![]() |
996ff12c7f | ||
![]() |
983a305518 | ||
![]() |
8e85c63ee5 | ||
![]() |
f25f319efa | ||
![]() |
854bc4e85f | ||
![]() |
ea1bd4f319 | ||
![]() |
dd2c5ee25d | ||
![]() |
a78982bda6 | ||
![]() |
b1e2107b8f | ||
![]() |
f27c3482a3 | ||
![]() |
af238bd4ba | ||
![]() |
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 | ||
![]() |
74f0624fad | ||
![]() |
22032284fc | ||
![]() |
993129af37 | ||
![]() |
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 |
59
.github/CONTRIBUTING.md
vendored
Normal file
@@ -0,0 +1,59 @@
|
||||
# Contribution Guidelines
|
||||
|
||||
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 Developer Certificate of Origin, agreeing to license their contribution under the AGPLv3. Historically, we used to require a CLA because we had to relicense the codebase from ARR to AGPLv3; however, this is being phased out. You can find a copy of the DCO below or under https://developercertificate.org/.
|
||||
- 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.
|
||||
|
||||
## Guidelines for pre-defined applications
|
||||
|
||||
Some pre-defined applications contain a header like:
|
||||
|
||||
```
|
||||
# Copyright (c) 2024 Fmstrat
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
```
|
||||
|
||||
This is for historic reasons, see [LICENSE.md](../LICENSE.md) and [COPYRIGHT.md](../COPYRIGHT.md).
|
||||
When contributing new applications, please *do not* include such a header.
|
||||
|
||||
## Developer Certificate of Origin
|
||||
|
||||
Developer Certificate of Origin
|
||||
Version 1.1
|
||||
|
||||
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim copies of this
|
||||
license document, but changing it is not allowed.
|
||||
|
||||
|
||||
Developer's Certificate of Origin 1.1
|
||||
|
||||
By making a contribution to this project, I certify that:
|
||||
|
||||
(a) The contribution was created in whole or in part by me and I
|
||||
have the right to submit it under the open source license
|
||||
indicated in the file; or
|
||||
|
||||
(b) The contribution is based upon previous work that, to the best
|
||||
of my knowledge, is covered under an appropriate open source
|
||||
license and I have the right under that license to submit that
|
||||
work with modifications, whether created in whole or in part
|
||||
by me, under the same open source license (unless I am
|
||||
permitted to submit under a different license), as indicated
|
||||
in the file; or
|
||||
|
||||
(c) The contribution was provided directly to me by some other
|
||||
person who certified (a), (b) or (c) and I have not modified
|
||||
it.
|
||||
|
||||
(d) I understand and agree that this project and the contribution
|
||||
are public and that a record of the contribution (including all
|
||||
personal information I submit with it, including my sign-off) is
|
||||
maintained indefinitely and may be redistributed consistent with
|
||||
this project or the open source license(s) involved.
|
65
.github/ISSUE_TEMPLATE/1-bug.yml
vendored
Normal file
@@ -0,0 +1,65 @@
|
||||
name: Bug Report
|
||||
description: File a bug report.
|
||||
labels: ["triage"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
We cannot fix nor support all bugs caused by FreeRDP, especially on Wayland.
|
||||
If you experience visual bugs, please open a discussion instead.
|
||||
|
||||
- type: textarea
|
||||
id: what-happened
|
||||
attributes:
|
||||
label: What happened?
|
||||
description: Also tell us, what did you expect to happen?
|
||||
placeholder: Tell us what you see!
|
||||
value: "A bug happened!"
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
id: freerdp
|
||||
attributes:
|
||||
label: Your FreeRDP version and where you got it from
|
||||
placeholder: "FreeRDP 3.10 (Debian Backports)"
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
id: distro
|
||||
attributes:
|
||||
label: Your Linux distribution and version
|
||||
placeholder: "Debian Trixie"
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: config
|
||||
attributes:
|
||||
label: Your `winapps.conf`
|
||||
description: Please copy and paste your `winapps.conf`. Make sure to not include any sensible data. This will be automatically formatted into code, so no need for backticks.
|
||||
render: shell
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: logs
|
||||
attributes:
|
||||
label: Logs
|
||||
description: Give the output of WinApps, FreeRDP etc. where / if applicable.
|
||||
render: shell
|
||||
|
||||
- type: checkboxes
|
||||
id: terms
|
||||
attributes:
|
||||
label: Terms
|
||||
options:
|
||||
- label: I am running the latest version.
|
||||
required: true
|
||||
- label: To the best of my knowledge, this is a bug and not a setup nor a FreeRDP problem.
|
||||
required: true
|
||||
- label: I have checked for duplicate issues.
|
||||
required: true
|
||||
- label: I agree to follow this project's Code of Conduct.
|
||||
required: true
|
5
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: Community Support
|
||||
url: https://github.com/winapps-org/winapps/discussions
|
||||
about: Get help with non-bug issues here. Please use this instead of filing bug reports.
|
65
.github/cla-signatures.csv
vendored
Normal file
@@ -0,0 +1,65 @@
|
||||
User Name;Repository Owner;Repository Name;CLA Title;Gist URL;Gist Version;Signed At;Revoked At;Signed for Organization
|
||||
sparky3387;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-08-31T12:31:32.643Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
matheusmelo18;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-08-30T15:57:01.072Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
Libadoxon;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-08-29T09:53:59.385Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
Dreamail;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-08-29T06:43:07.752Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
queenkjuul;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-08-27T16:19:30.937Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
DevZiaus;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-08-25T21:17:17.792Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
nlogozzo;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-08-24T15:25:25.197Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
osalbahr;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-08-24T15:09:01.053Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
9Morello;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-08-19T12:14:39.707Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
Sunrongguo2008;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-08-06T15:56:33.681Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
wovw;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-07-31T04:14:50.710Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
denisstrizhkin;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-07-07T14:43:28.482Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
joeshachaf;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-06-29T21:17:46.041Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
Aldo-f;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-06-19T19:26:32.522Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
Mr-MyDooM;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-06-10T03:01:36.680Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
Theowulf-dev;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-06-10T00:44:09.838Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
JoAllg;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-06-04T21:04:46.931Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
sears-s;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-05-24T02:56:00.518Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
egvrl;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-05-15T14:33:38.598Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
thefiredragon;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-04-19T19:06:36.941Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
arwarw;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-04-19T16:12:55.873Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
linull24;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-04-11T17:32:09.319Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
kroese;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-04-02T15:26:03.840Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
dasinking;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-03-25T00:54:49.660Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
tstormn3tw0rk;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-03-21T07:08:26.583Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
limemane;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-03-10T16:38:38.276Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
borekon;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-02-24T11:40:24.101Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
whitewolf101;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-02-23T03:29:22.061Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
raffaem;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-02-16T14:28:21.523Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
mbekkomo;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-02-02T11:40:36.462Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
toastedcrumpets;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-01-16T13:53:21.167Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
starbr3aker;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-01-12T17:30:37.473Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
Deluxe-7;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-01-11T01:48:33.638Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
stceum;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-01-03T07:14:43.695Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
molostovvs;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-12-13T07:48:02.950Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
mindset-tk;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-11-25T22:30:30.062Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
lunatic-gh;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-11-18T20:39:24.413Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
Username404-59;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-10-08T21:06:39.926Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
CHN-beta;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-10-05T06:12:56.133Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
eylenburg;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-10-02T13:49:45.131Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
tristanRW;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-09-23T14:48:15.158Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
MopigamesYT;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-09-19T14:54:16.014Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
queler;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-09-09T03:33:59.760Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
C0rn3j;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-09-01T22:30:46.600Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
FixeQyt;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-08-30T14:22:17.912Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
RheaBarar;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-08-19T07:36:53.003Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
Coruscant11;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-08-18T12:46:39.393Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
escapefreeg;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-08-11T03:04:17.227Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
itiligent;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-07-26T04:13:53.616Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
gordoncheong;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-07-25T11:14:28.928Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
bkanuka;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-07-08T19:31:49.299Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
Kazevic;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-07-02T06:46:56.451Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
KernelGhost;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-07-01T06:44:06.681Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
MrTumnis;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-06-13T00:24:25.715Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
Alchemi1963;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-05-30T21:48:08.692Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
GreatNovaDragon;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-04-20T20:34:17.381Z;2024-09-21T21:48:55.765Z;TRUE
|
||||
Matt-M-3;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2023-12-04T17:31:44.383Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
Hyperspeed1313;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2023-11-10T18:19:32.080Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
notPlancha;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2023-09-04T18:07:58.859Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
freechelmi;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2023-07-16T08:31:50.083Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
LDprg;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2023-07-16T07:08:14.876Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
fbartels;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2023-07-15T19:49:07.019Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
oskardotglobal;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2023-07-15T15:09:49.368Z;2025-09-04T11:04:01.000Z;TRUE
|
||||
Leonardo-DGS;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2023-07-15T15:07:40.778Z;2025-09-04T11:04:01.000Z;TRUE
|
|
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()
|
25
.github/workflows/update.yaml
vendored
@@ -1,25 +0,0 @@
|
||||
name: Update submodules
|
||||
on:
|
||||
repository_dispatch:
|
||||
types: update
|
||||
|
||||
jobs:
|
||||
update:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Update module
|
||||
run: |
|
||||
git submodule update --init --recursive --checkout -f
|
||||
|
||||
- name: Commit and push
|
||||
uses: EndBug/add-and-commit@v9
|
||||
with:
|
||||
add: "WinApps-Launcher"
|
||||
default_author: github_actions
|
||||
message: "Update submodules"
|
||||
push: true
|
||||
fetch: true
|
5
.gitignore
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
/.idea
|
||||
/.vscode
|
||||
/result
|
||||
.DS_Store
|
||||
**/.DS_Store
|
3
.gitmodules
vendored
@@ -1,3 +0,0 @@
|
||||
[submodule "WinApps-Launcher"]
|
||||
path = WinApps-Launcher
|
||||
url = https://github.com/winapps-org/WinApps-Launcher.git
|
@@ -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,4 @@
|
||||
ci:
|
||||
autoupdate_branch: "rewrite"
|
||||
skip: [license-tools]
|
||||
exclude: ^(.+)\.patch$
|
||||
|
||||
repos:
|
||||
- repo: https://github.com/Lucas-C/pre-commit-hooks
|
||||
@@ -49,8 +47,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
|
||||
|
@@ -1,11 +0,0 @@
|
||||
# Contribution Guidelines
|
||||
|
||||
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.
|
||||
- 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
@@ -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,12 +1,14 @@
|
||||
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.
|
||||
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.
|
||||
However, almost all parts of the codebase have been rewritten and all new contributions require signing a Developer Certificate of Origin (or historically, a CLA; see [CONTRIBUTING.md](./.github/CONTRIBUTING.md)), making most parts of the codebase AGPLv3.
|
||||
|
||||
Refer to a specific file for it's respective license.
|
||||
Refer to a specific file for its respective license.
|
||||
|
||||
# GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
|
||||
|
366
README.md
@@ -1,10 +1,10 @@
|
||||
<p align="center"><img align="center" width="700" src="./icons/banner_dark.svg#gh-dark-mode-only"/></p>
|
||||
<p align="center"><img align="center" width="700" src="./icons/banner_dark.svg#gh-light-mode-only"/></p>
|
||||
<p align="center"><img align="center" width="700" src="./docs/readme/banner_dark.svg#gh-dark-mode-only"/></p>
|
||||
<p align="center"><img align="center" width="700" src="./docs/readme/banner_light.svg#gh-light-mode-only"/></p>
|
||||
<hr>
|
||||
|
||||
Run Windows applications (including [Microsoft 365](https://www.microsoft365.com/) and [Adobe Creative Cloud](https://www.adobe.com/creativecloud.html)) on GNU/Linux with `KDE Plasma`, `GNOME` or `XFCE`, integrated seamlessly as if they were native to the OS.
|
||||
|
||||
<p align="center"><img src="./demo/demo.png" width=1000 alt="WinApps Demonstration."></p>
|
||||
<p align="center"><img src="./docs/readme/demo.png" width=1000 alt="WinApps Demonstration."></p>
|
||||
|
||||
## Underlying Mechanism
|
||||
WinApps works by:
|
||||
@@ -17,21 +17,22 @@ 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 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 <u>*ALL*</u> Windows applications.**
|
||||
**WinApps supports <u>*ALL*</u> Windows applications.** Support does not, however, extend to kernel-level anti-cheat systems (e.g. Riot Vanguard).
|
||||
|
||||
Universal application support is achieved by:
|
||||
1. Scanning Windows for any officially supported applications (list below).
|
||||
1. Scanning Windows for any community tested applications (list below).
|
||||
2. Scanning Windows for any other `.exe` files listed within the Windows Registry.
|
||||
|
||||
Officially supported applications benefit from high-resolution icons and pre-populated MIME types. This enables file managers to determine which Windows applications should open files based on file extensions. Icons for other detected applications are pulled from `.exe` files.
|
||||
Community tested applications benefit from high-resolution icons and pre-populated MIME types. This enables file managers to determine which Windows applications should open files based on file extensions. Icons for other detected applications are pulled from `.exe` files.
|
||||
|
||||
Contributing to the list of supported applications is encouraged through submission of pull requests! Please help us grow the WinApps community.
|
||||
|
||||
*Please note that the provided list of officially supported applications is community-driven. As such, some applications may not be tested and verified by the WinApps team.*
|
||||
*Please note that the provided list of community tested applications is community-driven. As such, some applications may not be tested and verified by the WinApps team.*
|
||||
|
||||
### Officially Supported Applications
|
||||
### Community Tested Applications
|
||||
<table cellpadding="10" cellspacing="0" border="0">
|
||||
<tr>
|
||||
<!-- Adobe Acrobat Pro -->
|
||||
@@ -120,9 +121,19 @@ Contributing to the list of supported applications is encouraged through submiss
|
||||
</td>
|
||||
<td>
|
||||
<b>Adobe Photoshop</b><br>
|
||||
(CS6, CC)<br>
|
||||
(CS6, CC, 2022)<br>
|
||||
<i><a href="https://commons.wikimedia.org/wiki/File:Adobe_Photoshop_CC_icon.svg">Icon</a> in the Public Domain.</i>
|
||||
</td>
|
||||
<!-- Autodesk Fusion 360 -->
|
||||
<td>
|
||||
<img src="apps/fusion-360/icon.svg" width="100">
|
||||
</td>
|
||||
<td>
|
||||
<b>Autodesk Fusion 360</b><br>
|
||||
<i><a href="https://commons.wikimedia.org/wiki/File:Fusion360_Logo.svg">Icon</a> in the Public Domain.</i>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<!-- Command Prompt -->
|
||||
<td>
|
||||
<img src="apps/cmd/icon.svg" width="100">
|
||||
@@ -132,8 +143,6 @@ Contributing to the list of supported applications is encouraged through submiss
|
||||
(cmd.exe)<br>
|
||||
<i><a href="https://github.com/microsoft/terminal/blob/main/res/terminal/Terminal.svg">Icon</a> under <a href="https://github.com/microsoft/terminal/blob/main/LICENSE">MIT license</a>.</i>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<!-- File Explorer -->
|
||||
<td>
|
||||
<img src="apps/explorer/icon.svg" width="100">
|
||||
@@ -143,6 +152,8 @@ Contributing to the list of supported applications is encouraged through submiss
|
||||
(Windows Explorer)<br>
|
||||
<i><a href="https://commons.wikimedia.org/wiki/File:Windows_Explorer.svg">Icon</a> in the Public Domain.</i>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<!-- Internet Explorer -->
|
||||
<td>
|
||||
<img src="apps/iexplorer/icon.svg" width="100">
|
||||
@@ -152,8 +163,6 @@ Contributing to the list of supported applications is encouraged through submiss
|
||||
(11)<br>
|
||||
<i><a href="https://commons.wikimedia.org/wiki/File:Internet_Explorer_10%2B11_logo.svg">Icon</a> in the Public Domain.</i>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<!-- Microsoft Access -->
|
||||
<td>
|
||||
<img src="apps/access/icon.svg" width="100">
|
||||
@@ -163,6 +172,8 @@ Contributing to the list of supported applications is encouraged through submiss
|
||||
(2016, 2019, o365)<br>
|
||||
<i><a href="https://commons.wikimedia.org/wiki/File:Microsoft_Office_Access_(2019-present).svg">Icon</a> in the Public Domain.</i>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<!-- Microsoft Excel -->
|
||||
<td>
|
||||
<img src="apps/excel/icon.svg" width="100">
|
||||
@@ -172,8 +183,6 @@ Contributing to the list of supported applications is encouraged through submiss
|
||||
(2016, 2019, o365)<br>
|
||||
<i><a href="https://en.m.wikipedia.org/wiki/File:Microsoft_Office_Excel_(2019%E2%80%93present).svg">Icon</a> in the Public Domain.</i>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<!-- Microsoft Word -->
|
||||
<td>
|
||||
<img src="apps/word/icon.svg" width="100">
|
||||
@@ -183,6 +192,8 @@ Contributing to the list of supported applications is encouraged through submiss
|
||||
(2016, 2019, o365)<br>
|
||||
<i><a href="https://en.m.wikipedia.org/wiki/File:Microsoft_Office_Word_(2019%E2%80%93present).svg">Icon</a> in the Public Domain.</i>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<!-- Microsoft OneNote -->
|
||||
<td>
|
||||
<img src="apps/onenote/icon.svg" width="100">
|
||||
@@ -192,8 +203,6 @@ Contributing to the list of supported applications is encouraged through submiss
|
||||
(2016, 2019, o365)<br>
|
||||
<i><a href="https://en.m.wikipedia.org/wiki/File:Microsoft_Office_OneNote_(2019%E2%80%93present).svg">Icon</a> in the Public Domain.</i>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<!-- Microsoft Outlook -->
|
||||
<td>
|
||||
<img src="apps/outlook/icon.svg" width="100">
|
||||
@@ -203,6 +212,8 @@ Contributing to the list of supported applications is encouraged through submiss
|
||||
(2016, 2019, o365)<br>
|
||||
<i><a href="https://en.m.wikipedia.org/wiki/File:Microsoft_Office_Outlook_(2018%E2%80%93present).svg">Icon</a> in the Public Domain.</i>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<!-- Microsoft PowerPoint -->
|
||||
<td>
|
||||
<img src="apps/powerpoint/icon.svg" width="100">
|
||||
@@ -212,8 +223,6 @@ Contributing to the list of supported applications is encouraged through submiss
|
||||
(2016, 2019, o365)<br>
|
||||
<i><a href="https://en.m.wikipedia.org/wiki/File:Microsoft_Office_PowerPoint_(2019%E2%80%93present).svg">Icon</a> in the Public Domain.</i>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<!-- Microsoft Publisher -->
|
||||
<td>
|
||||
<img src="apps/publisher/icon.svg" width="100">
|
||||
@@ -223,6 +232,8 @@ Contributing to the list of supported applications is encouraged through submiss
|
||||
(2016, 2019, o365)<br>
|
||||
<i><a href="https://en.m.wikipedia.org/wiki/File:Microsoft_Office_Publisher_(2019-present).svg">Icon</a> in the Public Domain.</i>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<!-- Microsoft Visio -->
|
||||
<td>
|
||||
<img src="apps/visio/icon.svg" width="100">
|
||||
@@ -232,8 +243,6 @@ Contributing to the list of supported applications is encouraged through submiss
|
||||
(Standard/Pro. 2021, Plan 2)<br>
|
||||
<i><a href="https://en.m.wikipedia.org/wiki/File:Microsoft_Office_Visio_(2019).svg">Icon</a> in the Public Domain.</i>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<!-- Microsoft Project -->
|
||||
<td>
|
||||
<img src="apps/project/icon.svg" width="100">
|
||||
@@ -243,6 +252,8 @@ Contributing to the list of supported applications is encouraged through submiss
|
||||
(Standard/Pro. 2021, Plan 3/5)<br>
|
||||
<i><a href="https://en.m.wikipedia.org/wiki/File:Microsoft_Project_(2019–present).svg">Icon</a> in the Public Domain.</i>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<!-- Microsoft Visual Studio -->
|
||||
<td>
|
||||
<img src="apps/visual-studio-pro/icon.svg" width="100">
|
||||
@@ -252,6 +263,14 @@ Contributing to the list of supported applications is encouraged through submiss
|
||||
(Comm./Pro./Ent. 2022)<br>
|
||||
<i><a href="https://en.m.wikipedia.org/wiki/File:Visual_Studio_Icon_2022.svg">Icon</a> in the Public Domain.</i>
|
||||
</td>
|
||||
<!-- mIRC -->
|
||||
<td>
|
||||
<img src="apps/mirc/icon.svg" width="100">
|
||||
</td>
|
||||
<td>
|
||||
<b>mIRC</b><br>
|
||||
<i><a href="https://en.wikipedia.org/wiki/MIRC#/media/File:Mircnewlogo.png">Icon</a> in the Public Domain.</i>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<!-- PowerShell -->
|
||||
@@ -264,7 +283,7 @@ Contributing to the list of supported applications is encouraged through submiss
|
||||
</td>
|
||||
<!-- Windows -->
|
||||
<td>
|
||||
<img src="icons/windows.svg" width="100">
|
||||
<img src="install/windows.svg" width="100">
|
||||
</td>
|
||||
<td>
|
||||
<b>Windows</b><br>
|
||||
@@ -282,35 +301,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
|
||||
```
|
||||
- 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
|
||||
```
|
||||
- Gentoo Linux:
|
||||
```bash
|
||||
sudo emerge --ask=n sys-libs/dialog net-misc/freerdp:3 net-misc/iproute2 x11-libs/libnotify net-analyzer/netcat
|
||||
sudo apt install -y curl dialog freerdp3-x11 git iproute2 libnotify-bin netcat-openbsd
|
||||
```
|
||||
|
||||
> [!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).
|
||||
> On Debian 12 (_"bookworm"_), you need to enable the `backports` repository for the `freerdp3-x11` package to become available.
|
||||
> For instructions, see https://backports.debian.org/Instructions.
|
||||
|
||||
```bash
|
||||
flatpak install flathub com.freerdp.FreeRDP
|
||||
sudo flatpak override --filesystem=home com.freerdp.FreeRDP # To use `+home-drive`
|
||||
```
|
||||
- Fedora/RHEL:
|
||||
```bash
|
||||
sudo dnf install -y curl dialog freerdp git iproute libnotify nmap-ncat
|
||||
```
|
||||
- Arch Linux:
|
||||
```bash
|
||||
sudo pacman -Syu --needed -y curl dialog freerdp git iproute2 libnotify openbsd-netcat
|
||||
```
|
||||
- openSUSE:
|
||||
```bash
|
||||
sudo zypper install -y curl dialog freerdp git iproute2 libnotify-tools netcat-openbsd
|
||||
```
|
||||
- Gentoo Linux:
|
||||
```bash
|
||||
sudo emerge --ask=n net-misc/curl dev-util/dialog net-misc/freerdp:3 dev-vcs/git sys-apps/iproute2 x11-libs/libnotify net-analyzer/openbsd-netcat
|
||||
```
|
||||
|
||||
> [!NOTE]
|
||||
> 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 +356,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]
|
||||
@@ -342,7 +371,14 @@ RDP_DOMAIN=""
|
||||
# - 'docker': '127.0.0.1'
|
||||
# - 'podman': '127.0.0.1'
|
||||
# - 'libvirt': '' (BLANK)
|
||||
RDP_IP=""
|
||||
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]
|
||||
# DEFAULT VALUE: 'docker'
|
||||
@@ -364,19 +400,21 @@ WAFLAVOR="docker"
|
||||
# - '180'
|
||||
RDP_SCALE="100"
|
||||
|
||||
# [ADDITIONAL FREERDP FLAGS & ARGUMENTS]
|
||||
# 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"
|
||||
|
||||
# [MULTIPLE MONITORS]
|
||||
# [MOUNTING REMOVABLE PATHS FOR FILES]
|
||||
# NOTES:
|
||||
# - If enabled, a FreeRDP bug *might* produce a black screen.
|
||||
# DEFAULT VALUE: 'false'
|
||||
# VALID VALUES:
|
||||
# - 'true'
|
||||
# - 'false'
|
||||
MULTIMON="false"
|
||||
# - 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.
|
||||
# REFERENCE: https://wiki.archlinux.org/title/Udisks#Mount_to_/media
|
||||
REMOVABLE_MEDIA="/run/media"
|
||||
|
||||
# [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 +home-drive'
|
||||
# VALID VALUES: See https://github.com/awakecoding/FreeRDP-Manuals/blob/master/User/FreeRDP-User-Manual.markdown
|
||||
RDP_FLAGS="/cert:tofu /sound /microphone +home-drive"
|
||||
|
||||
# [DEBUG WINAPPS]
|
||||
# NOTES:
|
||||
@@ -389,8 +427,7 @@ DEBUG="true"
|
||||
|
||||
# [AUTOMATICALLY PAUSE WINDOWS]
|
||||
# NOTES:
|
||||
# - This is currently INCOMPATIBLE with 'docker' and 'manual'.
|
||||
# - See https://github.com/dockur/windows/issues/674
|
||||
# - This is currently INCOMPATIBLE with 'manual'.
|
||||
# DEFAULT VALUE: 'off'
|
||||
# VALID VALUES:
|
||||
# - 'on'
|
||||
@@ -414,12 +451,48 @@ AUTOPAUSE_TIME="300"
|
||||
# DEFAULT VALUE: '' (BLANK)
|
||||
# VALID VALUES: The command required to run FreeRDPv3 on your system (e.g., 'xfreerdp', 'xfreerdp3', etc.).
|
||||
FREERDP_COMMAND=""
|
||||
|
||||
# [TIMEOUTS]
|
||||
# NOTES:
|
||||
# - These settings control various timeout durations within the WinApps setup.
|
||||
# - Increasing the timeouts is only necessary if the corresponding errors occur.
|
||||
# - Ensure you have followed all the Troubleshooting Tips in the error message first.
|
||||
|
||||
# PORT CHECK
|
||||
# - The maximum time (in seconds) to wait when checking if the RDP port on Windows is open.
|
||||
# - Corresponding error: "NETWORK CONFIGURATION ERROR" (exit status 13).
|
||||
# DEFAULT VALUE: '5'
|
||||
PORT_TIMEOUT="5"
|
||||
|
||||
# RDP CONNECTION TEST
|
||||
# - The maximum time (in seconds) to wait when testing the initial RDP connection to Windows.
|
||||
# - Corresponding error: "REMOTE DESKTOP PROTOCOL FAILURE" (exit status 14).
|
||||
# DEFAULT VALUE: '30'
|
||||
RDP_TIMEOUT="30"
|
||||
|
||||
# APPLICATION SCAN
|
||||
# - The maximum time (in seconds) to wait for the script that scans for installed applications on Windows to complete.
|
||||
# - Corresponding error: "APPLICATION QUERY FAILURE" (exit status 15).
|
||||
# DEFAULT VALUE: '60'
|
||||
APP_SCAN_TIMEOUT="60"
|
||||
|
||||
# WINDOWS BOOT
|
||||
# - The maximum time (in seconds) to wait for the Windows VM to boot if it is not running, before attempting to launch an application.
|
||||
# DEFAULT VALUE: '120'
|
||||
BOOT_TIMEOUT="120"
|
||||
```
|
||||
|
||||
> [!NOTE]
|
||||
> [!IMPORTANT]
|
||||
> To safeguard your Windows password, ensure `~/.config/winapps/winapps.conf` is accessible only by your user account.
|
||||
> ```bash
|
||||
> chown $(whoami):$(whoami) ~/.config/winapps/winapps.conf
|
||||
> chmod 600 ~/.config/winapps/winapps.conf
|
||||
> ```
|
||||
|
||||
> [!IMPORTANT]
|
||||
> `RDP_USER` and `RDP_PASS` must correspond to a complete Windows user account and password, such as those created during Windows setup or for a domain user. User/PIN combinations are not valid for RDP access.
|
||||
|
||||
> [!NOTE]
|
||||
> [!IMPORTANT]
|
||||
> If you wish to use an alternative WinApps backend (other than `Docker`), uncomment and change `WAFLAVOR="docker"` to `WAFLAVOR="podman"` or `WAFLAVOR="libvirt"`.
|
||||
|
||||
#### Configuration Options Explained
|
||||
@@ -428,26 +501,79 @@ FREERDP_COMMAND=""
|
||||
- For domain users, you can uncomment and change `RDP_DOMAIN`.
|
||||
- On high-resolution (UHD) displays, you can set `RDP_SCALE` to the scale you would like to use (100, 140 or 180).
|
||||
- To add additional flags to the FreeRDP call (e.g. `/prevent-session-lock 120`), uncomment and use the `RDP_FLAGS` configuration option.
|
||||
- For multi-monitor setups, you can try enabling `MULTIMON`. A FreeRDP bug may result in a black screen however, in which case you should revert this change.
|
||||
- For multi-monitor setups, you can try adding `/multimon` to `RDP_FLAGS`. A FreeRDP bug may result in a black screen however, in which case you should revert this change.
|
||||
- To enable non-English input and seamless language switching, you can try adding `/kbd:unicode` to `RDP_FLAGS`. This ensures client inputs are sent as Unicode sequences.
|
||||
- If you enable `DEBUG`, a log will be created on each application start in `~/.local/share/winapps/winapps.log`.
|
||||
- If using a system on which the FreeRDP command is not `xfreerdp` or `xfreerdp3`, the correct command can be specified using `FREERDP_COMMAND`.
|
||||
|
||||
### Step 4: Run the WinApps Installer
|
||||
Run the WinApps installer.
|
||||
### Step 4: Test FreeRDP
|
||||
1. Test establishing an RDP session by running the following command, replacing the `/u:`, `/p:`, and `/v:` values with the correct values specified in `~/.config/winapps/winapps.conf`.
|
||||
|
||||
```bash
|
||||
xfreerdp3 /u:"Your Windows Username" /p:"Your Windows Password" /v:192.168.122.2 /cert:tofu
|
||||
|
||||
# Or, if you installed FreeRDP using Flatpak
|
||||
flatpak run --command=xfreerdp com.freerdp.FreeRDP /u:"Your Windows Username" /p:"Your Windows Password" /v:192.168.122.2 /cert:tofu
|
||||
```
|
||||
|
||||
- Please note that the correct `FreeRDP` command may vary depending on your system (e.g. `xfreerdp`, `xfreerdp3`, etc.).
|
||||
- Ensure you use the correct IP address for your Windows instance in the above command.
|
||||
- If prompted within the terminal window, choose to accept the certificate permanently.
|
||||
|
||||
If the Windows desktop appears in a `FreeRDP` window, the configuration was successful and the correct RDP TLS certificate was enrolled on the Linux host. Disconnect from the RDP session and skip the following debugging step.
|
||||
|
||||
2. [DEBUGGING STEP] If an outdated or expired certificate is detected, the `FreeRDP` command will display output resembling the following. In this case, the old certificate will need to be removed and a new RDP TLS certificate installed.
|
||||
|
||||
```
|
||||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
@ WARNING: CERTIFICATE NAME MISMATCH! @
|
||||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
|
||||
The hostname used for this connection (192.168.122.2:3389)
|
||||
does not match the name given in the certificate:
|
||||
Common Name (CN):
|
||||
RDPWindows
|
||||
A valid certificate for the wrong name should NOT be trusted!
|
||||
|
||||
The host key for 192.168.122.2:3389 has changed
|
||||
|
||||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
|
||||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||
|
||||
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
|
||||
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
|
||||
It is also possible that a host key has just been changed.
|
||||
The fingerprint for the host key sent by the remote host is 8e:b4:d2:8e:4e:14:e7:4e:82:9b:07:5b:e1:68:40:18:bc:db:5f:bc:29:0d:91:83:f9:17:f9:13:e6:51:dc:36
|
||||
Please contact your system administrator.
|
||||
Add correct host key in /home/rohanbarar/.config/freerdp/server/192.168.122.2_3389.pem to get rid of this message.
|
||||
```
|
||||
|
||||
If you experience the above error, delete any old or outdated RDP TLS certificates associated with Windows, as they can prevent `FreeRDP` from establishing a connection.
|
||||
|
||||
These certificates are located within `~/.config/freerdp/server/` and follow the naming format `<Windows-VM-IPv4-Address>_<RDP-Port>.pem` (e.g., `192.168.122.2_3389.pem`, `127.0.0.1_3389.pem`, etc.).
|
||||
|
||||
If you use FreeRDP for purposes other than WinApps, ensure you only remove certificates related to the relevant Windows VM. If no relevant certificates are found, no action is needed.
|
||||
|
||||
Following deletion, re-attempt establishing an RDP session.
|
||||
|
||||
### Step 5: Run the WinApps Installer
|
||||
With Windows still powered on, run the WinApps installer.
|
||||
|
||||
```bash
|
||||
bash <(curl https://raw.githubusercontent.com/winapps-org/winapps/main/setup.sh)
|
||||
```
|
||||
|
||||
A list of supported additional arguments can be accessed by running `./setup.sh --help`.
|
||||
Once WinApps is installed, a list of additional arguments can be accessed by running `winapps-setup --help`.
|
||||
|
||||
<img src="./demo/installer.gif" width=1000 alt="WinApps Installer Animation.">
|
||||
<img src="./docs/readme/installer.gif" width=1000 alt="WinApps Installer Animation.">
|
||||
|
||||
## Adding Additional Pre-defined Applications
|
||||
Adding your own applications with custom icons and MIME types to the installer is easy. Simply copy one of the application configurations in the `apps` folder located within the WinApps repository, and:
|
||||
1. Modify the name and variables to reflect the appropriate/desired values for your application.
|
||||
2. Replace `icon.svg` with an SVG for your application (ensuring the icon is appropriately licensed).
|
||||
3. Remove and reinstall WinApps.
|
||||
4. Submit a pull request to add your application to WinApps as an officially supported application once you have tested and verified your configuration (optional, but encouraged).
|
||||
4. Submit a pull request to add your application to WinApps as a community tested application once you have tested and verified your configuration (optional, but encouraged).
|
||||
|
||||
## Running Applications Manually
|
||||
WinApps offers a manual mode for running applications that were not configured by the WinApps installer. This is completed with the `manual` flag. Executables that are in the Windows PATH do not require full path definition.
|
||||
@@ -463,6 +589,116 @@ 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`.
|
||||
|
||||
## WinApps Launcher (Optional)
|
||||
The [WinApps Launcher](https://github.com/winapps-org/winapps-launcher) provides a simple system tray menu that makes it easy to launch your installed Windows applications, open a full desktop RDP session, and control your Windows VM or container. You can start, stop, pause, reboot or hibernate Windows, as well as access your installed applications from a convenient list. This lightweight, optional tool helps streamline your overall WinApps experience.
|
||||
|
||||
<img src="./docs/readme/launcher.gif" width=1000 alt="WinApps Launcher Animation.">
|
||||
|
||||
## 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 =
|
||||
inputs@{
|
||||
nixpkgs,
|
||||
winapps,
|
||||
...
|
||||
}:
|
||||
{
|
||||
nixosConfigurations.hostname = nixpkgs.lib.nixosSystem rec {
|
||||
system = "x86_64-linux";
|
||||
|
||||
specialArgs = {
|
||||
inherit inputs system;
|
||||
};
|
||||
|
||||
modules = [
|
||||
./configuration.nix
|
||||
(
|
||||
{
|
||||
pkgs,
|
||||
system ? pkgs.system,
|
||||
...
|
||||
}:
|
||||
{
|
||||
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
|
||||
{
|
||||
pkgs,
|
||||
system ? pkgs.system,
|
||||
...
|
||||
}:
|
||||
{
|
||||
# set up binary cache (optional)
|
||||
nix.settings = {
|
||||
substituters = [ "https://winapps.cachix.org/" ];
|
||||
trusted-public-keys = [ "winapps.cachix.org-1:HI82jWrXZsQRar/PChgIx1unmuEsiQMQq+zt05CD36g=" ];
|
||||
trusted-users = [ "<your username>" ]; # replace with your username
|
||||
};
|
||||
|
||||
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"
|
||||
|
||||
|
29
apps/adobe-digital-editions-4.5/icon.svg
Normal file
@@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 20.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="ai_x5F_cc_x5F_app_x5F_RGB.svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 240 234" width="320" height="312" enable-background="new 0 0 240 234" xml:space="preserve">
|
||||
<path fill="#260C00" d="M41.9,7.5C13.8,7.5,7.3,24.2,7.3,52.4L7.4,189c0,28.2,8.8,37.6,36.9,37.6H195c28.1,0,37.6-9.4,37.6-37.5
|
||||
V47.2c0-28.2-10.5-39.7-38.6-39.7C194,7.5,41.9,7.5,41.9,7.5z"/>
|
||||
<g>
|
||||
<g>
|
||||
<path fill="#FF6000" d="M0,43.1v148.2C0,214.9,18.2,234,41.9,234h155.3c23.7,0,42.9-19.1,42.9-42.8V42.8C240,19.2,220.8,0,197.1,0
|
||||
H41.9C18.2,0,0,19.2,0,42.8V43.1z M194,10.1c19.1,0,35.9,15.7,35.9,34.8v142.3c0,19.1-15.5,36.7-34.6,36.7H44.7
|
||||
c-19.1,0-34.6-16.2-34.6-35.3l0-141.7c0-19,15.5-36.8,34.5-36.8L194,10.1L194,10.1z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<g>
|
||||
<path fill="#FEDCCA" d="M182.3,171.3H57.7c-7.4,0-9.7-2.4-9.7-9.8V71.1c0-7.4,2.4-9.8,9.7-9.8h124.5c7.4,0,9.7,2.4,9.7,9.8v90.5
|
||||
C192,168.9,189.6,171.3,182.3,171.3z M57.7,65.3c-5.1,0-5.7,0.6-5.7,5.8v90.5c0,5.2,0.6,5.8,5.7,5.8h124.5c5.1,0,5.7-0.6,5.7-5.8
|
||||
V71.1c0-5.2-0.6-5.8-5.7-5.8H57.7z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path fill="#FF6000" d="M57,162.3h61v-92H57V162.3z M67,93h44v2H67V93z M67,102.1h44v2H67V102.1z M67,111h44v2H67V111z M67,120h44
|
||||
v2H67V120z M67,129.1h44v2H67V129.1z M67,138h44v2H67V138z"/>
|
||||
<path fill="#FF6000" d="M158.7,70.3H122v92h61V94.2L158.7,70.3z M129.3,92.5h24.5v2h-24.5V92.5z M129.3,101.6l43.6,0.2l0,2
|
||||
l-43.6-0.2L129.3,101.6z M173.3,139.5h-44.1v-2h44.1V139.5z M173.3,130.6h-44.1v-2h44.1V130.6z M173.3,121.5h-44.1v-2h44.1V121.5z
|
||||
M173.3,112.5h-44.1v-2h44.1V112.5z M158.3,94.6V72.4L181,94.6H158.3z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.9 KiB |
17
apps/adobe-digital-editions-4.5/info
Normal file
@@ -0,0 +1,17 @@
|
||||
# GNOME shortcut name
|
||||
NAME="Adobe Digital Editions"
|
||||
|
||||
# Used for descriptions and window class
|
||||
FULL_NAME="Adobe Digital Editions"
|
||||
|
||||
# The executable inside windows
|
||||
WIN_EXECUTABLE="C:\Program Files (x86)\Adobe\Adobe Digital Editions 4.5\DigitalEditions.exe"
|
||||
|
||||
# GNOME categories
|
||||
CATEGORIES="WinApps;Adobe"
|
||||
|
||||
# GNOME mimetypes
|
||||
MIME_TYPES="application/epub+zip;application/vnd.adobe.adept+xml;"
|
||||
|
||||
# System Icon
|
||||
ICON="AdobeDigitalEditions"
|
1
apps/aftereffects-2024/icon.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg fill="none" height="32" viewBox="0 0 32 32" width="32" xmlns="http://www.w3.org/2000/svg"><path d="m2 12.1333c0-3.54697 0-5.32047.69029-6.67524.6072-1.19169 1.57608-2.16057 2.76777-2.76777 1.35477-.69029 3.12827-.69029 6.67524-.69029h7.7334c3.547 0 5.3205 0 6.6752.69029 1.1917.6072 2.1606 1.57608 2.7678 2.76777.6903 1.35477.6903 3.12827.6903 6.67524v7.7334c0 3.547 0 5.3205-.6903 6.6752-.6072 1.1917-1.5761 2.1606-2.7678 2.7678-1.3547.6903-3.1282.6903-6.6752.6903h-7.7334c-3.54697 0-5.32047 0-6.67524-.6903-1.19169-.6072-2.16057-1.5761-2.76777-2.7678-.69029-1.3547-.69029-3.1282-.69029-6.6752z" fill="#00005b"/><g fill="#99f"><path d="m13.7893 19.5638h-4.3389l-.88281 2.8181c-.02451.1045-.12074.1785-.22541.1734h-2.19764c-.12532 0-.16915-.0706-.13148-.2119l3.75663-11.0508c.0376-.1155.07514-.2285.11274-.3763.04913-.2571.07429-.5183.07513-.7802-.01076-.0774.05604-.14596.13144-.1349h2.9866c.0875 0 .1375.0321.1502.0963l4.2639 12.2651c.0375.1286-.0001.1928-.1127.1927h-2.4419c-.0856.0097-.1674-.049-.1878-.1349zm-3.6627-2.3761h2.9678c-.4876-1.6662-1.0379-3.3104-1.4839-4.9896-.5054 1.7418-.9721 3.3572-1.4839 4.9896z"/><path d="m20.6608 18.4757c.1727 1.4309 1.3743 2.1131 2.7048 2.084.7503-.0147 1.5521-.1312 2.2532-.4149.0624-.0511.0939-.0192.0939.0964v1.8301c.0059.0952-.0339.1803-.1127.2312-.8714.3958-1.8716.5152-2.8167.5-2.8178 0-4.7529-1.9854-4.7521-4.874-.0074-2.7374 1.7685-5.0468 4.5267-5.0468 2.3381-.0606 3.9568 1.8113 3.9633 4.1414 0 .4243-.0237.8502-.0751 1.2714-.01.0868-.0839.1542-.1691.1542-1.8673 0-3.7437.027-5.6162.027zm0-1.755c1.0407 0 2.0874.0368 3.1274-.0096.1563-.016.2724-.0457.2724-.2082-.0217-.8638-.7507-1.5743-1.5966-1.5412-1.022-.0634-1.6761.7994-1.8032 1.759z"/></g></svg>
|
After Width: | Height: | Size: 1.7 KiB |
17
apps/aftereffects-2024/info
Normal file
@@ -0,0 +1,17 @@
|
||||
# GNOME shortcut name
|
||||
NAME="After Effects 2024"
|
||||
|
||||
# Used for descriptions and window class
|
||||
FULL_NAME="Adobe After Effects 2024"
|
||||
|
||||
# The executable inside windows
|
||||
WIN_EXECUTABLE="C:\Program Files\Adobe\Adobe After Effects 2024\Support Files\AfterFX.exe"
|
||||
|
||||
# GNOME categories
|
||||
CATEGORIES="WinApps;Adobe"
|
||||
|
||||
# GNOME mimetypes
|
||||
MIME_TYPES="application/vnd.adobe.aftereffects.project;application/vnd.adobe.aftereffects.template;"
|
||||
|
||||
# System Icon
|
||||
ICON="AdobeAfterEffects"
|
39
apps/audition-2024/icon.svg
Normal file
@@ -0,0 +1,39 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 23.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
|
||||
<!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
|
||||
<!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
|
||||
<!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
|
||||
<!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
|
||||
<!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
|
||||
<!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
|
||||
<!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
|
||||
<!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
|
||||
]>
|
||||
<svg version="1.1" id="Layer_1" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 256.4 250"
|
||||
enable-background="new 0 0 256.4 250" xml:space="preserve">
|
||||
<metadata>
|
||||
<sfw xmlns="&ns_sfw;">
|
||||
<slices></slices>
|
||||
<sliceSourceBounds bottomLeftOrigin="true" height="250" width="256.4" x="-8.2" y="-8"></sliceSourceBounds>
|
||||
</sfw>
|
||||
</metadata>
|
||||
<g>
|
||||
<path fill="#00005B" d="M45.4,0H211c25.1,0,45.4,20.3,45.4,45.4v159.2c0,25.1-20.3,45.4-45.4,45.4H45.4C20.3,250,0,229.7,0,204.6
|
||||
V45.4C0,20.3,20.3,0,45.4,0z"/>
|
||||
<g>
|
||||
<path fill="#9999FF" d="M100.7,149.6H61l-8.1,25.2c-0.2,1-1.1,1.6-2,1.5H30.8c-1.2,0-1.5-0.6-1.2-1.9L64,75.6
|
||||
c0.3-1.1,0.6-2.2,1.1-3.5c0.5-2.2,0.9-4.5,0.9-6.8c-0.1-0.5,0.3-1.1,0.9-1.2c0.1,0,0.2,0,0.3,0h27.4c0.7,0,1.3,0.3,1.4,0.9
|
||||
l38.8,109.6c0.3,1.2,0,1.7-1.1,1.7h-22.3c-0.7,0.1-1.5-0.4-1.7-1.2L100.7,149.6z M67.2,128.3h27.1c-0.6-2.2-1.5-4.9-2.5-7.7
|
||||
c-1-2.9-1.9-6-2.9-9.2c-1.1-3.3-2-6.5-3.1-9.8s-2-6.4-2.9-9.5c-0.9-3-1.6-5.8-2.4-8.3h-0.2c-1,4.6-2.1,9.2-3.6,13.8
|
||||
c-1.6,5.1-3.2,10.5-4.9,15.8C70.5,118.8,68.8,123.8,67.2,128.3L67.2,128.3z"/>
|
||||
<path fill="#9999FF" d="M216.7,92.1v65.5c0,2.9,0,5.4,0.1,7.7c0.1,2.2,0.2,4.2,0.3,5.9c0.2,1.7,0.3,2.7,0.4,3.8
|
||||
c0.1,1-0.3,1.4-1.2,1.4H198c-0.9,0.1-1.7-0.4-2-1.2c-0.2-0.9-0.4-1.8-0.6-2.7c-0.2-0.7-0.2-1.5-0.2-2.2c-3.4,3.1-7.6,5.3-12.1,6.6
|
||||
c-3.8,1.1-7.9,1.6-11.9,1.6c-4,0-7.9-0.5-11.6-1.8c-3.4-1.2-6.6-3.2-9.1-5.9c-2.8-3-4.8-6.5-6-10.4c-1.5-4.9-2.2-10-2.1-15.2v-53
|
||||
c-0.1-0.6,0.3-1.3,1.1-1.4c0.1,0,0.2,0,0.3,0h20.4c0.6-0.1,1.3,0.3,1.4,1.1c0,0.1,0,0.2,0,0.3v50.2c0,4.7,1.1,8.4,3.1,11.1
|
||||
c2,2.7,6.2,4.1,11,4.1c2.5,0,4.9-0.4,7.3-1.3c2.5-0.9,4.7-2,6.7-3.5V92.1c0-0.7,0.5-1.2,1.5-1.2h20.4c0.5-0.1,1.2,0.3,1.2,0.9
|
||||
C216.7,91.9,216.7,92,216.7,92.1z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.7 KiB |
17
apps/audition-2024/info
Normal file
@@ -0,0 +1,17 @@
|
||||
# GNOME shortcut name
|
||||
NAME="Audition 2024"
|
||||
|
||||
# Used for descriptions and window class
|
||||
FULL_NAME="Adobe Audition 2024"
|
||||
|
||||
# The executable inside windows
|
||||
WIN_EXECUTABLE="C:\Program Files\Adobe\Adobe Audition 2024\Adobe Audition.exe"
|
||||
|
||||
# GNOME categories
|
||||
CATEGORIES="WinApps;Adobe"
|
||||
|
||||
# GNOME mimetypes
|
||||
MIME_TYPES=""
|
||||
|
||||
# System Icon
|
||||
ICON="AdobeAudition"
|
40
apps/dymo-connect/icon.svg
Normal file
After Width: | Height: | Size: 8.3 KiB |
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"
|
9
apps/emclient/icon.svg
Normal file
After Width: | Height: | Size: 20 KiB |
17
apps/emclient/info
Normal file
@@ -0,0 +1,17 @@
|
||||
# GNOME shortcut name
|
||||
NAME="eM Client"
|
||||
|
||||
# Used for descriptions and window class
|
||||
FULL_NAME="eM Client"
|
||||
|
||||
# The executable inside windows
|
||||
WIN_EXECUTABLE="C:\Program Files (x86)\eM Client\mailclient.exe"
|
||||
|
||||
# GNOME categories
|
||||
CATEGORIES="WinApps;Network;Office;"
|
||||
|
||||
# GNOME mimetypes
|
||||
MIME_TYPES=""
|
||||
|
||||
# System Icon
|
||||
ICON="eM Client"
|
@@ -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"
|
||||
|
||||
|
90
apps/fusion-360/icon.svg
Normal file
@@ -0,0 +1,90 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
width="256pt"
|
||||
height="256pt"
|
||||
viewBox="0 0 256 256"
|
||||
version="1.1"
|
||||
id="svg7"
|
||||
sodipodi:docname="Fusion360-82.svg"
|
||||
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs7" />
|
||||
<sodipodi:namedview
|
||||
id="namedview7"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
inkscape:document-units="pt"
|
||||
showgrid="false"
|
||||
inkscape:zoom="1.4142136"
|
||||
inkscape:cx="228.74904"
|
||||
inkscape:cy="139.30004"
|
||||
inkscape:window-width="1418"
|
||||
inkscape:window-height="892"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="g8" />
|
||||
<g
|
||||
id="g8">
|
||||
<path
|
||||
style="fill:#ff9548;stroke-width:0.75;fill-opacity:1"
|
||||
d="M 46.79097,-0.00247339 7.8151404,23.849982 8.0231482,23.990607 15.67377,23.310848 45.733663,5.9498164 Z"
|
||||
id="path8"
|
||||
sodipodi:nodetypes="cccccc" />
|
||||
<path
|
||||
fill="#ff9548"
|
||||
opacity="1"
|
||||
d="M 46.398594,0.36621094 46.78,0 C 46.69,59.94 46.65,119.88 46.8,179.82 40.173599,183.81384 12.241533,200.6415 7.83,203.25 7.82,143.45 7.84,83.65 7.82,23.85 16.708712,15.663236 38.795821,8.8363876 46.398594,0.36621094 Z"
|
||||
id="path1"
|
||||
sodipodi:nodetypes="cccccc" />
|
||||
</g>
|
||||
<g
|
||||
id="#ff6b00ff"
|
||||
style="display:inline">
|
||||
<path
|
||||
fill="#ff6b00"
|
||||
opacity="1"
|
||||
d="m 46.78,0 h 171.61 c 6.13,1.02 11.96,5.71 12.23,12.27 0.19,9.33 0.01,18.66 0.07,28 0.01,46.5 -0.01,93.01 0.01,139.51 -61.3,0.1 -122.6,0.02 -183.9,0.04 C 46.65,119.88 46.69,59.94 46.78,0 m 64.99,40.53 c 0.03,33.12 0,66.25 0.02,99.37 8.3,-0.02 16.6,0.05 24.9,-0.04 -0.06,-13.36 -0.02,-26.73 -0.03,-40.1 10.87,0.02 21.74,-0.07 32.62,0.04 0.1,-5.89 0.16,-11.8 -0.04,-17.69 -10.86,0.12 -21.71,0.03 -32.57,0.05 -0.06,-7.88 0.07,-15.76 -0.08,-23.65 12.91,-0.24 25.83,-0.03 38.74,-0.1 -0.01,-5.96 -0.01,-11.93 0,-17.89 -21.18,-0.01 -42.37,-0.02 -63.56,0.01 z"
|
||||
id="path2" />
|
||||
</g>
|
||||
<g
|
||||
id="#933c00ff">
|
||||
<path
|
||||
fill="#933c00"
|
||||
opacity="1.00"
|
||||
d=" M 230.69 40.27 C 236.63 40.33 242.56 40.12 248.50 40.40 C 248.26 112.26 248.46 184.13 248.40 256.00 L 40.90 256.00 C 35.09 254.75 29.45 250.32 29.18 243.98 C 29.00 226.15 29.15 208.31 29.11 190.47 C 35.01 186.93 40.91 183.37 46.80 179.82 C 108.10 179.80 169.40 179.88 230.70 179.78 C 230.68 133.28 230.70 86.77 230.69 40.27 M 163.04 199.06 C 157.06 202.24 156.37 212.16 162.15 215.83 C 166.41 218.38 171.48 218.99 175.96 221.04 C 178.76 222.05 179.00 226.25 176.91 228.06 C 172.76 230.53 165.86 228.94 165.73 223.33 C 162.83 223.33 159.94 223.34 157.04 223.33 C 157.25 226.60 158.35 229.96 160.90 232.17 C 164.97 235.91 170.93 236.24 176.16 235.69 C 181.07 235.18 186.33 232.16 187.38 226.99 C 187.94 223.28 187.75 218.80 184.56 216.28 C 180.18 212.67 174.15 212.48 169.26 209.85 C 167.07 208.83 166.95 205.27 168.99 204.06 C 172.69 201.92 178.42 203.55 178.83 208.32 C 181.69 208.34 184.56 208.34 187.42 208.32 C 187.18 204.06 184.77 199.89 180.69 198.28 C 175.11 196.05 168.36 196.14 163.04 199.06 M 92.12 197.62 C 92.29 210.14 92.16 222.67 92.19 235.19 C 95.27 235.19 98.35 235.19 101.43 235.28 C 101.77 230.14 101.46 225.00 101.60 219.86 C 105.70 219.87 109.80 219.87 113.90 219.86 C 113.90 217.65 113.90 215.45 113.89 213.25 C 109.78 213.26 105.68 213.26 101.57 213.26 C 101.60 210.33 101.59 207.39 101.49 204.47 C 106.40 204.20 111.32 204.41 116.24 204.34 C 116.24 202.07 116.24 199.80 116.25 197.54 C 108.20 197.58 100.16 197.42 92.12 197.62 M 121.04 197.58 C 121.38 207.36 120.57 217.21 121.49 226.96 C 123.25 236.40 136.36 238.70 142.71 232.48 C 142.97 233.38 143.24 234.28 143.53 235.18 C 146.16 235.19 148.79 235.19 151.42 235.30 C 151.84 222.72 151.56 210.10 151.55 197.51 C 148.42 197.54 145.29 197.53 142.16 197.62 C 142.32 206.42 142.16 215.22 142.25 224.03 C 143.08 230.29 130.91 231.38 130.55 224.88 C 130.27 215.78 130.50 206.66 130.44 197.56 C 127.31 197.53 124.18 197.53 121.04 197.58 Z"
|
||||
id="path3" />
|
||||
</g>
|
||||
<g
|
||||
id="#ffffffff">
|
||||
<path
|
||||
fill="#ffffff"
|
||||
opacity="1.00"
|
||||
d=" M 111.77 40.53 C 132.96 40.50 154.15 40.51 175.33 40.52 C 175.32 46.48 175.32 52.45 175.33 58.41 C 162.42 58.48 149.50 58.27 136.59 58.51 C 136.74 66.40 136.61 74.28 136.67 82.16 C 147.53 82.14 158.38 82.23 169.24 82.11 C 169.44 88.00 169.38 93.91 169.28 99.80 C 158.40 99.69 147.53 99.78 136.66 99.76 C 136.67 113.13 136.63 126.50 136.69 139.86 C 128.39 139.95 120.09 139.88 111.79 139.90 C 111.77 106.78 111.80 73.65 111.77 40.53 Z"
|
||||
id="path4" />
|
||||
<path
|
||||
fill="#ffffff"
|
||||
opacity="1.00"
|
||||
d=" M 163.04 199.06 C 168.36 196.14 175.11 196.05 180.69 198.28 C 184.77 199.89 187.18 204.06 187.42 208.32 C 184.56 208.34 181.69 208.34 178.83 208.32 C 178.42 203.55 172.69 201.92 168.99 204.06 C 166.95 205.27 167.07 208.83 169.26 209.85 C 174.15 212.48 180.18 212.67 184.56 216.28 C 187.75 218.80 187.94 223.28 187.38 226.99 C 186.33 232.16 181.07 235.18 176.16 235.69 C 170.93 236.24 164.97 235.91 160.90 232.17 C 158.35 229.96 157.25 226.60 157.04 223.33 C 159.94 223.34 162.83 223.33 165.73 223.33 C 165.86 228.94 172.76 230.53 176.91 228.06 C 179.00 226.25 178.76 222.05 175.96 221.04 C 171.48 218.99 166.41 218.38 162.15 215.83 C 156.37 212.16 157.06 202.24 163.04 199.06 Z"
|
||||
id="path5" />
|
||||
<path
|
||||
fill="#ffffff"
|
||||
opacity="1.00"
|
||||
d=" M 92.12 197.62 C 100.16 197.42 108.20 197.58 116.25 197.54 C 116.24 199.80 116.24 202.07 116.24 204.34 C 111.32 204.41 106.40 204.20 101.49 204.47 C 101.59 207.39 101.60 210.33 101.57 213.26 C 105.68 213.26 109.78 213.26 113.89 213.25 C 113.90 215.45 113.90 217.65 113.90 219.86 C 109.80 219.87 105.70 219.87 101.60 219.86 C 101.46 225.00 101.77 230.14 101.43 235.28 C 98.35 235.19 95.27 235.19 92.19 235.19 C 92.16 222.67 92.29 210.14 92.12 197.62 Z"
|
||||
id="path6" />
|
||||
<path
|
||||
fill="#ffffff"
|
||||
opacity="1.00"
|
||||
d=" M 121.04 197.58 C 124.18 197.53 127.31 197.53 130.44 197.56 C 130.50 206.66 130.27 215.78 130.55 224.88 C 130.91 231.38 143.08 230.29 142.25 224.03 C 142.16 215.22 142.32 206.42 142.16 197.62 C 145.29 197.53 148.42 197.54 151.55 197.51 C 151.56 210.10 151.84 222.72 151.42 235.30 C 148.79 235.19 146.16 235.19 143.53 235.18 C 143.24 234.28 142.97 233.38 142.71 232.48 C 136.36 238.70 123.25 236.40 121.49 226.96 C 120.57 217.21 121.38 207.36 121.04 197.58 Z"
|
||||
id="path7" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 6.7 KiB |
14
apps/fusion-360/info
Normal file
@@ -0,0 +1,14 @@
|
||||
# GNOME shortcut name
|
||||
NAME="Fusion 360"
|
||||
|
||||
# Used for descriptions and window class
|
||||
FULL_NAME="Autodesk Fusion 360"
|
||||
|
||||
# The executable inside windows
|
||||
WIN_EXECUTABLE="C:\Users\%USERNAME%\AppData\Local\Autodesk\webdeploy\production\6a0c9611291d45bb9226980209917c3d\FusionLauncher.exe"
|
||||
|
||||
# GNOME categories
|
||||
CATEGORIES="WinApps;Graphics;3DGraphics"
|
||||
|
||||
# GNOME mimetypes
|
||||
MIME_TYPES="application/fusion"
|
5
apps/illustrator-2024/icon.svg
Normal file
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="0 0 240 234">
|
||||
<path fill="#300" d="M42.5 0h155C221 0 240 19 240 42.5v149c0 23.5-19 42.5-42.5 42.5h-155C19 234 0 215 0 191.5v-149C0 19 19 0 42.5 0z"/>
|
||||
<path fill="#ff9a00" d="M116 140H78.8l-7.6 23.5c-.2.9-1 1.5-1.9 1.4H50.5c-1.1 0-1.4-.6-1.1-1.8l32.2-92.7c.3-1 .6-2.1 1-3.3.4-2.1.6-4.3.6-6.5-.1-.5.3-1 .8-1.1h25.9c.8 0 1.2.3 1.3.8l36.5 103c.3 1.1 0 1.6-1 1.6h-20.9c-.7.1-1.4-.4-1.6-1.1L116 140zm-31.4-20.3H110c-.6-2.1-1.4-4.6-2.3-7.2-.9-2.7-1.8-5.6-2.7-8.6-1-3.1-1.9-6.1-2.9-9.2s-1.9-6-2.7-8.9c-.8-2.8-1.5-5.4-2.2-7.8H97c-.9 4.3-2 8.6-3.4 12.9-1.5 4.8-3 9.8-4.6 14.8-1.4 5.1-2.9 9.8-4.4 14zM170 77c-3.3.1-6.5-1.2-8.9-3.5-2.3-2.5-3.5-5.8-3.4-9.2-.1-3.4 1.2-6.6 3.6-8.9s5.6-3.5 8.9-3.5c3.9 0 6.9 1.2 9.1 3.5 2.2 2.4 3.4 5.6 3.3 8.9.1 3.4-1.1 6.7-3.5 9.2-2.3 2.4-5.7 3.7-9.1 3.5zm-11.2 86.8v-77c0-1 .4-1.4 1.3-1.4h19.8c.9 0 1.3.5 1.3 1.4v77c0 1.1-.4 1.6-1.3 1.6h-19.6c-1 0-1.5-.6-1.5-1.6z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1008 B |
17
apps/illustrator-2024/info
Normal file
@@ -0,0 +1,17 @@
|
||||
# GNOME shortcut name
|
||||
NAME="Illustrator 2024"
|
||||
|
||||
# Used for descriptions and window class
|
||||
FULL_NAME="Adobe Illustrator 2024"
|
||||
|
||||
# The executable inside windows
|
||||
WIN_EXECUTABLE="C:\Program Files\Adobe\Adobe Illustrator 2024\Support Files\Contents\Windows\Illustrator.exe"
|
||||
|
||||
# GNOME categories
|
||||
CATEGORIES="WinApps;Adobe"
|
||||
|
||||
# GNOME mimetypes
|
||||
MIME_TYPES="application/illustrator;"
|
||||
|
||||
# System Icon
|
||||
ICON="AdobeIllustrator"
|
16
apps/indesign-2024/icon.svg
Normal file
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg style="enable-background:new 0 0 240 234" version="1.1" viewBox="0 0 240 234" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
<title>Adobe InDesign CC logo</title>
|
||||
<style type="text/css">
|
||||
.st0{fill:#49021F;}
|
||||
.st1{fill:#FF3366;}
|
||||
</style>
|
||||
<path class="st0" d="M42.5,0h155C221,0,240,19,240,42.5v149c0,23.5-19,42.5-42.5,42.5h-155C19,234,0,215,0,191.5v-149 C0,19,19,0,42.5,0z"/>
|
||||
<g id="vlpa">
|
||||
<g id="vlpb">
|
||||
<path class="st1" d="m87.2 61.2v103c0 1.1-0.5 1.6-1.4 1.6h-19.6c-0.9 0-1.3-0.5-1.3-1.6v-103c0-0.9 0.5-1.3 1.4-1.3h19.5c0.6-0.1 1.2 0.3 1.3 1 0.1 0.1 0.1 0.2 0.1 0.3z"/>
|
||||
<path class="st1" d="m145 167c-7.4 0.1-14.8-1.4-21.5-4.5-6.3-2.9-11.5-7.7-15.1-13.6-3.7-6.1-5.5-13.7-5.5-22.8-0.1-7.4 1.8-14.7 5.5-21.1 3.8-6.5 9.3-11.9 15.9-15.5 7-3.9 15.4-5.8 25.3-5.8 0.5 0 1.2 0 2.1 0.1s1.9 0.1 3.1 0.2v-31.6c0-0.7 0.3-1.1 1-1.1h20.3c0.5-0.1 0.9 0.3 1 0.7v0.2 95.2c0 1.8 0.1 3.8 0.2 6 0.2 2.1 0.3 4.1 0.4 5.8 0 0.7-0.3 1.3-1 1.6-5.2 2.2-10.7 3.8-16.3 4.8-5 0.9-10.2 1.4-15.4 1.4zm9.8-20v-44c-0.9-0.2-1.8-0.4-2.7-0.5-1.1-0.1-2.2-0.2-3.3-0.2-3.9 0-7.8 0.8-11.3 2.6-3.4 1.7-6.3 4.2-8.5 7.4s-3.3 7.5-3.3 12.7c-0.1 3.5 0.5 7 1.7 10.3 1 2.7 2.5 5.1 4.5 7.1 1.9 1.8 4.2 3.2 6.8 4 2.7 0.9 5.5 1.3 8.3 1.3 1.5 0 2.9-0.1 4.2-0.2 1.3 0.1 2.5-0.1 3.6-0.5z"/>
|
||||
</g>
|
||||
</g>
|
||||
|
||||
</svg>
|
After Width: | Height: | Size: 1.3 KiB |
17
apps/indesign-2024/info
Normal file
@@ -0,0 +1,17 @@
|
||||
# GNOME shortcut name
|
||||
NAME="InDesign 2024"
|
||||
|
||||
# Used for descriptions and window class
|
||||
FULL_NAME="Adobe InDesign 2024"
|
||||
|
||||
# The executable inside windows
|
||||
WIN_EXECUTABLE="C:\Program Files\Adobe\Adobe InDesign 2024\InDesign.exe"
|
||||
|
||||
# GNOME categories
|
||||
CATEGORIES="WinApps;Adobe"
|
||||
|
||||
# GNOME mimetypes
|
||||
MIME_TYPES="application/x-adobe-indesign-interchange;application/x-adobe-indesign;"
|
||||
|
||||
# System Icon
|
||||
ICON="AdobeIndesign"
|
42
apps/lightroom-classic/icon.svg
Normal file
@@ -0,0 +1,42 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 23.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
|
||||
<!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
|
||||
<!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
|
||||
<!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
|
||||
<!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
|
||||
<!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
|
||||
<!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
|
||||
<!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
|
||||
<!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
|
||||
]>
|
||||
<svg version="1.1" id="Layer_1" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 256.4 250"
|
||||
enable-background="new 0 0 256.4 250" xml:space="preserve">
|
||||
<metadata>
|
||||
<sfw xmlns="&ns_sfw;">
|
||||
<slices></slices>
|
||||
<sliceSourceBounds bottomLeftOrigin="true" height="250" width="256.4" x="-8.2" y="-8"></sliceSourceBounds>
|
||||
</sfw>
|
||||
</metadata>
|
||||
<g id="Layer_2_1_">
|
||||
<path fill="#001E36" d="M45.4,0H211c25.1,0,45.4,20.3,45.4,45.4v159.2c0,25.1-20.3,45.4-45.4,45.4H45.4C20.3,250,0,229.7,0,204.6
|
||||
V45.4C0,20.3,20.3,0,45.4,0z"/>
|
||||
<g id="LrC">
|
||||
<path fill="#31A8FF" d="M90,176.7H29c-1.1,0-1.5-0.6-1.5-1.9V65.6c0-1.1,0.4-1.5,1.4-1.5h18.9c0.7,0,1.1,0.4,1.1,1.2V155h44.4
|
||||
c1,0,1.3,0.5,1.1,1.5l-2.8,18.6c-0.1,0.6-0.3,1.1-0.6,1.3S90.3,176.7,90,176.7z"/>
|
||||
<path fill="#31A8FF" d="M105.2,91.2h16.9c1,0,1.6,0.5,2,1.7c0.3,0.7,0.6,1.6,0.7,2.5c0.2,1.1,0.3,2.2,0.4,3.3
|
||||
c0.1,1.2,0.1,2.5,0.1,3.8c2.8-3.6,6.3-6.8,10.3-9.2c4.3-2.6,9.3-4,14.3-3.8c1,0,1.4,0.5,1.4,1.5v20.8c0,0.9-0.5,1.2-1.5,1.2
|
||||
c-3.4-0.2-6.8,0-10.1,0.7c-2.8,0.6-5.4,1.6-8,2.9c-1.9,1-3.7,2.4-5.2,4v54.5c0,1.1-0.4,1.5-1.3,1.5h-18.6c-1.1,0-1.5-0.5-1.5-1.7
|
||||
v-59.2c0-2.6,0-5.2-0.1-8c0-2.8-0.1-5.6-0.2-8.3c-0.1-2.4-0.3-4.7-0.6-7.1c0-0.3,0-0.6,0.2-1C104.7,91.2,104.9,91.1,105.2,91.2z"
|
||||
/>
|
||||
<path fill="#31A8FF" d="M227.1,75.4c-2.2-1-4.7-1.5-7.2-1.8c-3.6-0.4-7.3-0.6-10.9-0.6c-10.5,0-19.7,2.2-27.2,6.6
|
||||
s-13.7,10.9-17.7,18.7c-4.2,7.9-6.2,17.3-6.2,27.8c-0.1,6.3,0.7,12.6,2.4,18.8c1.5,5.2,3.7,10.1,6.8,14.6
|
||||
c2.9,4.2,6.4,7.7,10.5,10.6s8.7,5.1,13.6,6.4c5,1.4,10.4,2.1,15.6,2.1c3.7,0,7.4-0.2,11-0.7c3-0.3,5.9-1.1,8.7-2.1
|
||||
c1.1-0.5,1.7-1.6,1.6-2.9v-15.9c0.1-0.5-0.1-1.2-0.5-1.6c-0.3-0.2-0.9-0.5-1.7,0.1c-2.4,0.9-4.9,1.5-7.5,1.8
|
||||
c-3.1,0.3-6.2,0.4-9.3,0.4c-2.8,0-5.7-0.4-8.3-1.2c-2.9-0.7-5.6-1.9-8.1-3.4c-2.7-1.6-4.9-3.7-6.7-6.2c-2-2.8-3.6-5.9-4.7-9.2
|
||||
c-1.2-4.1-1.8-8.2-1.7-12.5c-0.1-5.9,1.1-11.8,3.5-17.1c2.2-4.6,5.7-8.5,10-11.2c4.7-2.8,10.1-4.2,15.6-4.1c3.3,0,6.7,0.2,10,0.9
|
||||
c2.7,0.4,5.2,1.3,7.7,2.6c0.4,0.2,1,0.2,1.4,0c0.4-0.4,0.7-1,0.6-1.6V78C228.4,76.9,228,76,227.1,75.4z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.0 KiB |
17
apps/lightroom-classic/info
Normal file
@@ -0,0 +1,17 @@
|
||||
# GNOME shortcut name
|
||||
NAME="Lightroom Classic"
|
||||
|
||||
# Used for descriptions and window class
|
||||
FULL_NAME="Adobe Lightroom Classic"
|
||||
|
||||
# The executable inside windows
|
||||
WIN_EXECUTABLE="C:\Program Files\Adobe\Adobe Lightroom Classic\Lightroom.exe"
|
||||
|
||||
# GNOME categories
|
||||
CATEGORIES="WinApps;Adobe"
|
||||
|
||||
# GNOME mimetypes
|
||||
MIME_TYPES=""
|
||||
|
||||
# System Icon
|
||||
ICON="AdobeLightroom"
|
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
@@ -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
apps/mediaencoder-2024/icon.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 240 234"><path fill="#00005B" d="M42.5,0h155C221,0,240,19,240,42.5v149c0,23.5-19,42.5-42.5,42.5h-155C19,234,0,215,0,191.5v-149C0,19,19,0,42.5,0z"/><path fill="#9999FF" d="M33.8,60.9c0.1-0.6,0.6-1,1.2-1c0,0,0,0,0,0h28.1c0.8-0.1,1.5,0.4,1.7,1.1c0.7,2.8,1.6,6.1,2.6,10.1c1,3.9,2.1,8.2,3.3,13c1.2,4.7,2.4,9.6,3.6,14.5c1.2,4.9,2.4,9.7,3.6,14.4c1.2,4.7,2.2,9,3,12.9c0.8,3.9,1.5,7.2,2,9.7h0.2c0.4-2.3,1.1-5.3,2.1-9c1-3.8,2.2-8,3.5-12.6c1.3-4.7,2.7-9.5,4.1-14.4c1.4-4.9,2.7-9.8,4.1-14.7c1.3-4.8,2.6-9.3,3.7-13.4c1.2-4.1,2.1-7.6,2.8-10.4c0.1-0.7,0.7-1.2,1.4-1.1h27.4c0.7-0.1,1.3,0.4,1.4,1c0,0,0,0.1,0,0.1l3.7,102.9c0.1,0.4,0,0.8-0.2,1c-0.3,0.3-0.6,0.4-1,0.4h-19.9c-0.3,0-0.5-0.1-0.8-0.2c-0.2-0.2-0.3-0.6-0.3-0.9c0-5.5,0-11.2-0.1-17.2c-0.1-6-0.1-12-0.2-18.1c-0.1-6.1-0.1-11.9,0-17.5c0.1-5.6,0.2-10.7,0.2-15.5c0-4.7,0-8.8,0.1-12.3c0.1-3.5,0.1-6.1,0.1-7.8h-0.2c-0.6,2.7-1.4,6.2-2.4,10.5c-1,4.3-2.2,9.2-3.6,14.7c-1.4,5.4-2.9,11-4.4,16.8c-1.6,5.8-3.1,11.5-4.6,17.2c-1.5,5.7-2.9,11-4.3,15.9c-1.4,4.9-2.5,9.3-3.4,13c-0.2,0.8-0.9,1.3-1.7,1.3H73.1c-0.9,0.1-1.7-0.4-1.8-1.3c-0.9-3.8-2-8.1-3.1-13c-1.2-4.9-2.4-10.1-3.6-15.5c-1.2-5.4-2.5-10.9-3.9-16.5c-1.4-5.6-2.7-11.1-3.9-16.3c-1.2-5.3-2.3-10.2-3.3-14.8c-1-4.6-1.9-8.7-2.7-12.2h-0.3v12.7c0,4.9-0.1,10.4-0.2,16.3c-0.2,6-0.3,12.2-0.5,18.7c-0.2,6.5-0.3,13.2-0.5,20.1c-0.2,6.9-0.5,13.8-0.8,20.5c0,0.9-0.4,1.3-1.2,1.3H29.6c-0.3,0-0.7-0.1-1-0.2c-0.3-0.2-0.3-0.6-0.2-1.2L33.8,60.9zM196.7,130.3H165c0.4,3,1.4,5.9,3.1,8.5c1.8,2.7,4.3,4.8,7.3,6c3.3,1.5,7.5,2.3,12.8,2.3c3.5,0,7-0.3,10.4-0.9c3.2-0.6,6.4-1.5,9.4-2.8c0.5-0.4,0.8-0.2,0.8,0.8v15.3c0,0.4-0.1,0.8-0.2,1.2c-0.2,0.3-0.4,0.5-0.7,0.7c-3.3,1.6-6.8,2.7-10.5,3.5c-4.7,0.9-9.4,1.3-14.2,1.2c-7.6,0-14-1.2-19.2-3.5c-4.9-2.1-9.2-5.4-12.6-9.5c-3.2-3.9-5.5-8.3-6.9-13.1c-1.4-4.7-2.1-9.6-2.1-14.6c0-5.4,0.8-10.7,2.5-15.9c1.6-5,4.1-9.6,7.5-13.7c3.3-4,7.4-7.2,12.1-9.5c5.2-2.4,11-3.6,16.7-3.5c5.3-0.1,10.6,0.9,15.5,3.1c4.1,1.9,7.8,4.7,10.5,8.3c2.6,3.4,4.7,7.2,6,11.4c1.3,4,1.9,8.1,1.9,12.2c0,2.4-0.1,4.5-0.2,6.4c-0.2,1.9-0.3,3.3-0.4,4.2c-0.1,0.7-0.7,1.3-1.4,1.3c-0.6,0-1.7,0.1-3.3,0.2c-1.6,0.2-3.5,0.3-5.8,0.3C201.7,130.2,199.2,130.3,196.7,130.3z M165,114.6H186c2.6,0,4.5,0,5.7-0.1c0.8,0,1.6-0.1,2.3-0.2v-1c0-1.3-0.2-2.5-0.6-3.7c-1.8-5.6-7.1-9.4-13-9.2c-5.5-0.3-10.7,2.6-13.3,7.6C166,110.1,165.3,112.3,165,114.6z"/></svg>
|
After Width: | Height: | Size: 2.3 KiB |
17
apps/mediaencoder-2024/info
Normal file
@@ -0,0 +1,17 @@
|
||||
# GNOME shortcut name
|
||||
NAME="Media Encoder 2024"
|
||||
|
||||
# Used for descriptions and window class
|
||||
FULL_NAME="Adobe Media Encoder 2024"
|
||||
|
||||
# The executable inside windows
|
||||
WIN_EXECUTABLE="C:\Program Files\Adobe\Adobe Media Encoder 2024\Adobe Media Encoder.exe"
|
||||
|
||||
# GNOME categories
|
||||
CATEGORIES="WinApps;Adobe"
|
||||
|
||||
# GNOME mimetypes
|
||||
MIME_TYPES=""
|
||||
|
||||
# System Icon
|
||||
ICON="AdobeMediaEncoder"
|
24
apps/mirc/icon.svg
Normal file
After Width: | Height: | Size: 54 KiB |
17
apps/mirc/info
Normal file
@@ -0,0 +1,17 @@
|
||||
# GNOME shortcut name
|
||||
NAME="mIRC"
|
||||
|
||||
# Used for descriptions and window class
|
||||
FULL_NAME="mIRC"
|
||||
|
||||
# The executable inside windows
|
||||
WIN_EXECUTABLE="C:\Program Files (x86)\mIRC\mirc.exe"
|
||||
|
||||
# GNOME categories
|
||||
CATEGORIES="WinApps;Network;IRCclient;"
|
||||
|
||||
# GNOME mimetypes
|
||||
MIME_TYPES=""
|
||||
|
||||
# System Icon
|
||||
ICON="mIRC"
|
9
apps/ms-office-protocol-handler.desktop
Normal file
@@ -0,0 +1,9 @@
|
||||
[Desktop Entry]
|
||||
Name=Microsoft Office Protocol Handler
|
||||
Comment=Handle Microsoft Office URI schemes via WinApps
|
||||
Exec=winapps manual %u
|
||||
Terminal=false
|
||||
Type=Application
|
||||
MimeType=x-scheme-handler/ms-word;x-scheme-handler/ms-excel;x-scheme-handler/ms-powerpoint;x-scheme-handler/ms-outlook;x-scheme-handler/ms-access;x-scheme-handler/ms-visio;x-scheme-handler/ms-project;x-scheme-handler/ms-teams;x-scheme-handler/ms-whiteboard;x-scheme-handler/ms-officeapp;
|
||||
NoDisplay=true
|
||||
Categories=Office;Utility;
|
@@ -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
apps/paint.net/icon.svg
Normal file
After Width: | Height: | Size: 46 KiB |
17
apps/paint.net/info
Normal file
@@ -0,0 +1,17 @@
|
||||
# GNOME shortcut name
|
||||
NAME="Paint.NET"
|
||||
|
||||
# Used for descriptions and window class
|
||||
FULL_NAME="Paint.NET"
|
||||
|
||||
# The executable inside windows
|
||||
WIN_EXECUTABLE="C:\Program Files\Paint.NET\paintdotnet.exe"
|
||||
|
||||
# GNOME categories
|
||||
CATEGORIES="WinApps;Graphic;"
|
||||
|
||||
# GNOME mimetypes
|
||||
MIME_TYPES=""
|
||||
|
||||
# System Icon
|
||||
ICON="Paint.Net"
|
1
apps/pdfgear/icon.svg
Normal file
After Width: | Height: | Size: 60 KiB |
14
apps/pdfgear/info
Normal file
@@ -0,0 +1,14 @@
|
||||
# GNOME shortcut name
|
||||
NAME="pdfgear"
|
||||
|
||||
# Used for descriptions and window class
|
||||
FULL_NAME="PDF Gear"
|
||||
|
||||
# The executable inside windows
|
||||
WIN_EXECUTABLE="C:\Program Files\PDFgear\PDFLauncher.exe"
|
||||
|
||||
# GNOME categories
|
||||
CATEGORIES="Office;Viewer;Graphics;pdf"
|
||||
|
||||
# GNOME mimetypes
|
||||
MIME_TYPES="application/pdf;"
|
37
apps/photoshop-2022/icon.svg
Normal file
@@ -0,0 +1,37 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 24.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 240 234" style="enable-background:new 0 0 240 234;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#001E36;}
|
||||
.st1{fill:#31A8FF;}
|
||||
</style>
|
||||
<g id="Layer_2_1_">
|
||||
<g id="Surfaces">
|
||||
<g id="Photo_Surface">
|
||||
<g id="Outline_no_shadow">
|
||||
<path class="st0" d="M42.5,0h155C221,0,240,19,240,42.5v149c0,23.5-19,42.5-42.5,42.5h-155C19,234,0,215,0,191.5v-149
|
||||
C0,19,19,0,42.5,0z"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Outlined_Mnemonics_Logos">
|
||||
<g id="Ps">
|
||||
<path class="st1" d="M54,164.1V61.2c0-0.7,0.3-1.1,1-1.1c1.7,0,3.3,0,5.6-0.1c2.4-0.1,4.9-0.1,7.6-0.2c2.7-0.1,5.6-0.1,8.7-0.2
|
||||
c3.1-0.1,6.1-0.1,9.1-0.1c8.2,0,15,1,20.6,3.1c5,1.7,9.6,4.5,13.4,8.2c3.2,3.2,5.7,7.1,7.3,11.4c1.5,4.2,2.3,8.5,2.3,13
|
||||
c0,8.6-2,15.7-6,21.3c-4,5.6-9.6,9.8-16.1,12.2c-6.8,2.5-14.3,3.4-22.5,3.4c-2.4,0-4,0-5-0.1c-1-0.1-2.4-0.1-4.3-0.1v32.1
|
||||
c0.1,0.7-0.4,1.3-1.1,1.4c-0.1,0-0.2,0-0.4,0H55.2C54.4,165.4,54,165,54,164.1z M75.8,79.4V113c1.4,0.1,2.7,0.2,3.9,0.2H85
|
||||
c3.9,0,7.8-0.6,11.5-1.8c3.2-0.9,6-2.8,8.2-5.3c2.1-2.5,3.1-5.9,3.1-10.3c0.1-3.1-0.7-6.2-2.3-8.9c-1.7-2.6-4.1-4.6-7-5.7
|
||||
c-3.7-1.5-7.7-2.1-11.8-2c-2.6,0-4.9,0-6.8,0.1C77.9,79.2,76.5,79.3,75.8,79.4L75.8,79.4z"/>
|
||||
<path class="st1" d="M192,106.9c-3-1.6-6.2-2.7-9.6-3.4c-3.7-0.8-7.4-1.3-11.2-1.3c-2-0.1-4.1,0.2-6,0.7c-1.3,0.3-2.4,1-3.1,2
|
||||
c-0.5,0.8-0.8,1.8-0.8,2.7c0,0.9,0.4,1.8,1,2.6c0.9,1.1,2.1,2,3.4,2.7c2.3,1.2,4.7,2.3,7.1,3.3c5.4,1.8,10.6,4.3,15.4,7.3
|
||||
c3.3,2.1,6,4.9,7.9,8.3c1.6,3.2,2.4,6.7,2.3,10.3c0.1,4.7-1.3,9.4-3.9,13.3c-2.8,4-6.7,7.1-11.2,8.9c-4.9,2.1-10.9,3.2-18.1,3.2
|
||||
c-4.6,0-9.1-0.4-13.6-1.3c-3.5-0.6-7-1.7-10.2-3.2c-0.7-0.4-1.2-1.1-1.1-1.9v-17.4c0-0.3,0.1-0.7,0.4-0.9
|
||||
c0.3-0.2,0.6-0.1,0.9,0.1c3.9,2.3,8,3.9,12.4,4.9c3.8,1,7.8,1.5,11.8,1.5c3.8,0,6.5-0.5,8.3-1.4c1.6-0.7,2.7-2.4,2.7-4.2
|
||||
c0-1.4-0.8-2.7-2.4-4c-1.6-1.3-4.9-2.8-9.8-4.7c-5.1-1.8-9.8-4.2-14.2-7.2c-3.1-2.2-5.7-5.1-7.6-8.5c-1.6-3.2-2.4-6.7-2.3-10.2
|
||||
c0-4.3,1.2-8.4,3.4-12.1c2.5-4,6.2-7.2,10.5-9.2c4.7-2.4,10.6-3.5,17.7-3.5c4.1,0,8.3,0.3,12.4,0.9c3,0.4,5.9,1.2,8.6,2.3
|
||||
c0.4,0.1,0.8,0.5,1,0.9c0.1,0.4,0.2,0.8,0.2,1.2v16.3c0,0.4-0.2,0.8-0.5,1C192.9,107.1,192.4,107.1,192,106.9z"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.6 KiB |
17
apps/photoshop-2022/info
Normal file
@@ -0,0 +1,17 @@
|
||||
# GNOME shortcut name
|
||||
NAME="Photoshop 2022"
|
||||
|
||||
# Used for descriptions and window class
|
||||
FULL_NAME="Adobe Photoshop 2022"
|
||||
|
||||
# The executable inside windows
|
||||
WIN_EXECUTABLE="C:\Program Files\Adobe\Adobe Photoshop 2022\Photoshop.exe"
|
||||
|
||||
# GNOME categories
|
||||
CATEGORIES="WinApps;Adobe"
|
||||
|
||||
# GNOME mimetypes
|
||||
MIME_TYPES="image/vnd.adobe.photoshop;"
|
||||
|
||||
# System Icon
|
||||
ICON="AdobePhotoshop"
|
37
apps/photoshop-2024/icon.svg
Normal file
@@ -0,0 +1,37 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 24.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 240 234" style="enable-background:new 0 0 240 234;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#001E36;}
|
||||
.st1{fill:#31A8FF;}
|
||||
</style>
|
||||
<g id="Layer_2_1_">
|
||||
<g id="Surfaces">
|
||||
<g id="Photo_Surface">
|
||||
<g id="Outline_no_shadow">
|
||||
<path class="st0" d="M42.5,0h155C221,0,240,19,240,42.5v149c0,23.5-19,42.5-42.5,42.5h-155C19,234,0,215,0,191.5v-149
|
||||
C0,19,19,0,42.5,0z"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Outlined_Mnemonics_Logos">
|
||||
<g id="Ps">
|
||||
<path class="st1" d="M54,164.1V61.2c0-0.7,0.3-1.1,1-1.1c1.7,0,3.3,0,5.6-0.1c2.4-0.1,4.9-0.1,7.6-0.2c2.7-0.1,5.6-0.1,8.7-0.2
|
||||
c3.1-0.1,6.1-0.1,9.1-0.1c8.2,0,15,1,20.6,3.1c5,1.7,9.6,4.5,13.4,8.2c3.2,3.2,5.7,7.1,7.3,11.4c1.5,4.2,2.3,8.5,2.3,13
|
||||
c0,8.6-2,15.7-6,21.3c-4,5.6-9.6,9.8-16.1,12.2c-6.8,2.5-14.3,3.4-22.5,3.4c-2.4,0-4,0-5-0.1c-1-0.1-2.4-0.1-4.3-0.1v32.1
|
||||
c0.1,0.7-0.4,1.3-1.1,1.4c-0.1,0-0.2,0-0.4,0H55.2C54.4,165.4,54,165,54,164.1z M75.8,79.4V113c1.4,0.1,2.7,0.2,3.9,0.2H85
|
||||
c3.9,0,7.8-0.6,11.5-1.8c3.2-0.9,6-2.8,8.2-5.3c2.1-2.5,3.1-5.9,3.1-10.3c0.1-3.1-0.7-6.2-2.3-8.9c-1.7-2.6-4.1-4.6-7-5.7
|
||||
c-3.7-1.5-7.7-2.1-11.8-2c-2.6,0-4.9,0-6.8,0.1C77.9,79.2,76.5,79.3,75.8,79.4L75.8,79.4z"/>
|
||||
<path class="st1" d="M192,106.9c-3-1.6-6.2-2.7-9.6-3.4c-3.7-0.8-7.4-1.3-11.2-1.3c-2-0.1-4.1,0.2-6,0.7c-1.3,0.3-2.4,1-3.1,2
|
||||
c-0.5,0.8-0.8,1.8-0.8,2.7c0,0.9,0.4,1.8,1,2.6c0.9,1.1,2.1,2,3.4,2.7c2.3,1.2,4.7,2.3,7.1,3.3c5.4,1.8,10.6,4.3,15.4,7.3
|
||||
c3.3,2.1,6,4.9,7.9,8.3c1.6,3.2,2.4,6.7,2.3,10.3c0.1,4.7-1.3,9.4-3.9,13.3c-2.8,4-6.7,7.1-11.2,8.9c-4.9,2.1-10.9,3.2-18.1,3.2
|
||||
c-4.6,0-9.1-0.4-13.6-1.3c-3.5-0.6-7-1.7-10.2-3.2c-0.7-0.4-1.2-1.1-1.1-1.9v-17.4c0-0.3,0.1-0.7,0.4-0.9
|
||||
c0.3-0.2,0.6-0.1,0.9,0.1c3.9,2.3,8,3.9,12.4,4.9c3.8,1,7.8,1.5,11.8,1.5c3.8,0,6.5-0.5,8.3-1.4c1.6-0.7,2.7-2.4,2.7-4.2
|
||||
c0-1.4-0.8-2.7-2.4-4c-1.6-1.3-4.9-2.8-9.8-4.7c-5.1-1.8-9.8-4.2-14.2-7.2c-3.1-2.2-5.7-5.1-7.6-8.5c-1.6-3.2-2.4-6.7-2.3-10.2
|
||||
c0-4.3,1.2-8.4,3.4-12.1c2.5-4,6.2-7.2,10.5-9.2c4.7-2.4,10.6-3.5,17.7-3.5c4.1,0,8.3,0.3,12.4,0.9c3,0.4,5.9,1.2,8.6,2.3
|
||||
c0.4,0.1,0.8,0.5,1,0.9c0.1,0.4,0.2,0.8,0.2,1.2v16.3c0,0.4-0.2,0.8-0.5,1C192.9,107.1,192.4,107.1,192,106.9z"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.6 KiB |
17
apps/photoshop-2024/info
Normal file
@@ -0,0 +1,17 @@
|
||||
# GNOME shortcut name
|
||||
NAME="Photoshop 2024"
|
||||
|
||||
# Used for descriptions and window class
|
||||
FULL_NAME="Adobe Photoshop 2024"
|
||||
|
||||
# The executable inside windows
|
||||
WIN_EXECUTABLE="C:\Program Files\Adobe\Adobe Photoshop 2024\Photoshop.exe"
|
||||
|
||||
# GNOME categories
|
||||
CATEGORIES="WinApps;Adobe"
|
||||
|
||||
# GNOME mimetypes
|
||||
MIME_TYPES="image/vnd.adobe.photoshop;"
|
||||
|
||||
# System Icon
|
||||
ICON="AdobePhotoshop"
|
14
apps/powerbi-store/icon.svg
Normal file
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="100" height="100" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
|
||||
<title>Power BI Logo</title>
|
||||
<defs>
|
||||
<linearGradient id="gradient1" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" style="stop-color:#F2C94C"/>
|
||||
<stop offset="100%" style="stop-color:#F2994A"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<rect x="10" y="30" width="15" height="60" fill="url(#gradient1)" rx="2"/>
|
||||
<rect x="30" y="20" width="15" height="70" fill="url(#gradient1)" rx="2"/>
|
||||
<rect x="50" y="10" width="15" height="80" fill="url(#gradient1)" rx="2"/>
|
||||
<rect x="70" y="25" width="15" height="65" fill="url(#gradient1)" rx="2"/>
|
||||
</svg>
|
After Width: | Height: | Size: 694 B |
17
apps/powerbi-store/info
Normal file
@@ -0,0 +1,17 @@
|
||||
# GNOME shortcut name
|
||||
NAME="Power BI Desktop (Microsoft Store)"
|
||||
|
||||
# Used for descriptions and window class
|
||||
FULL_NAME="Microsoft Power BI Desktop (Store Version)"
|
||||
|
||||
# The executable inside windows
|
||||
WIN_EXECUTABLE="C:\Users\%USERNAME%\AppData\Local\Microsoft\WindowsApps\PBIDesktop.exe"
|
||||
|
||||
# GNOME categories
|
||||
CATEGORIES="WinApps;Office"
|
||||
|
||||
# GNOME mimetypes
|
||||
MIME_TYPES="application/x-powerbi;application/vnd.ms-powerbi;application/powerbi;application/x-pbix;application/vnd.powerbi.pbix"
|
||||
|
||||
# System Icon
|
||||
ICON="ms-powerbi"
|
14
apps/powerbi/icon.svg
Normal file
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="100" height="100" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
|
||||
<title>Power BI Logo</title>
|
||||
<defs>
|
||||
<linearGradient id="gradient1" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" style="stop-color:#F2C94C"/>
|
||||
<stop offset="100%" style="stop-color:#F2994A"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<rect x="10" y="30" width="15" height="60" fill="url(#gradient1)" rx="2"/>
|
||||
<rect x="30" y="20" width="15" height="70" fill="url(#gradient1)" rx="2"/>
|
||||
<rect x="50" y="10" width="15" height="80" fill="url(#gradient1)" rx="2"/>
|
||||
<rect x="70" y="25" width="15" height="65" fill="url(#gradient1)" rx="2"/>
|
||||
</svg>
|
After Width: | Height: | Size: 694 B |
17
apps/powerbi/info
Normal file
@@ -0,0 +1,17 @@
|
||||
# GNOME shortcut name
|
||||
NAME="Power BI Desktop (Traditional)"
|
||||
|
||||
# Used for descriptions and window class
|
||||
FULL_NAME="Microsoft Power BI Desktop"
|
||||
|
||||
# The executable inside windows
|
||||
WIN_EXECUTABLE="C:\Program Files\Microsoft Power BI Desktop\bin\PBIDesktop.exe"
|
||||
|
||||
# GNOME categories
|
||||
CATEGORIES="WinApps;Office"
|
||||
|
||||
# GNOME mimetypes
|
||||
MIME_TYPES="application/x-powerbi;application/vnd.ms-powerbi;application/powerbi;application/x-pbix;application/vnd.powerbi.pbix"
|
||||
|
||||
# System Icon
|
||||
ICON="ms-powerbi"
|
@@ -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"
|
||||
|
||||
|
23
apps/premierepro-2024/icon.svg
Normal file
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg style="enable-background:new 0 0 240 234" version="1.1" viewBox="0 0 240 234" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
||||
<title>Adobe Premiere Pro CC logo</title>
|
||||
<style type="text/css">
|
||||
.st0{fill:#00005B;}
|
||||
.st1{fill:#9999FF;}
|
||||
</style>
|
||||
<g id="vlpa">
|
||||
<g id="vlpb">
|
||||
<g id="vlpc">
|
||||
<g id="vlpd">
|
||||
<path class="st0" d="M42.5,0h155C221,0,240,19,240,42.5v149c0,23.5-19,42.5-42.5,42.5h-155C19,234,0,215,0,191.5v-149 C0,19,19,0,42.5,0z"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="vlpe">
|
||||
<g id="vlpf">
|
||||
<path class="st1" d="m57 164v-103c0-0.7 0.3-1.1 1-1.1 1.7 0 3.3 0 5.6-0.1 2.4-0.1 4.9-0.1 7.6-0.2s5.6-0.1 8.7-0.2 6.1-0.1 9.1-0.1c8.2 0 15 1 20.6 3.1 5 1.7 9.6 4.5 13.4 8.2 3.2 3.2 5.7 7.1 7.3 11.4 1.5 4.2 2.3 8.5 2.3 13 0 8.6-2 15.7-6 21.3s-9.6 9.8-16.1 12.2c-6.8 2.5-14.3 3.4-22.5 3.4-2.4 0-4 0-5-0.1s-2.4-0.1-4.3-0.1v32.1c0.1 0.7-0.4 1.3-1.1 1.4h-0.4-19c-0.8 0-1.2-0.4-1.2-1.3zm21.8-84.7v33.6c1.4 0.1 2.7 0.2 3.9 0.2h5.3c3.9 0 7.8-0.6 11.5-1.8 3.2-0.9 6-2.8 8.2-5.3 2.1-2.5 3.1-5.9 3.1-10.3 0.1-3.1-0.7-6.2-2.3-8.9-1.7-2.6-4.1-4.6-7-5.7-3.7-1.5-7.7-2.1-11.8-2-2.6 0-4.9 0-6.8 0.1-2-0.1-3.4 0-4.1 0.1z"/>
|
||||
<path class="st1" d="m147 85.2h17.5c1 0 1.8 0.7 2.1 1.6 0.3 0.8 0.5 1.6 0.6 2.5 0.2 1 0.4 2.1 0.5 3.1 0.1 1.1 0.2 2.3 0.2 3.6 3-3.5 6.6-6.4 10.7-8.6 4.6-2.6 9.9-3.9 15.2-3.9 0.7-0.1 1.3 0.4 1.4 1.1v0.4 19.5c0 0.8-0.5 1.1-1.6 1.1-3.6-0.1-7.3 0.2-10.8 1-2.9 0.6-5.7 1.5-8.4 2.7-1.9 0.9-3.7 2.1-5.1 3.7v51c0 1-0.4 1.4-1.3 1.4h-19.7c-0.8 0.1-1.5-0.4-1.6-1.2v-0.4-55.4c0-2.4 0-4.9-0.1-7.5s-0.1-5.2-0.2-7.8c0-2.3-0.2-4.5-0.4-6.8-0.1-0.5 0.2-1 0.7-1.1 0-0.1 0.2-0.1 0.3 0z"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.7 KiB |
17
apps/premierepro-2024/info
Normal file
@@ -0,0 +1,17 @@
|
||||
# GNOME shortcut name
|
||||
NAME="Premiere Pro 2024"
|
||||
|
||||
# Used for descriptions and window class
|
||||
FULL_NAME="Adobe Premiere Pro 2024"
|
||||
|
||||
# The executable inside windows
|
||||
WIN_EXECUTABLE="C:\Program Files\Adobe\Adobe Premiere Pro 2024\Adobe Premiere Pro.exe"
|
||||
|
||||
# GNOME categories
|
||||
CATEGORIES="WinApps;Adobe"
|
||||
|
||||
# GNOME mimetypes
|
||||
MIME_TYPES="image/vnd.adobe.premierepro.project;"
|
||||
|
||||
# System Icon
|
||||
ICON="AdobePremierePro"
|
@@ -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"
|
||||
|
||||
|
97
apps/remarkable-desktop/icon.svg
Normal file
@@ -0,0 +1,97 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Generator: Adobe Illustrator 23.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
|
||||
<svg
|
||||
version="1.1"
|
||||
id="Livello_1"
|
||||
x="0px"
|
||||
y="0px"
|
||||
viewBox="0 0 1881.25 1750"
|
||||
enable-background="new 0 0 1881.25 1750"
|
||||
xml:space="preserve"
|
||||
sodipodi:docname="icon.svg"
|
||||
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:ns="&ns_sfw;"><defs
|
||||
id="defs34" /><sodipodi:namedview
|
||||
id="namedview32"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
showgrid="false"
|
||||
inkscape:zoom="0.58685714"
|
||||
inkscape:cx="940.6037"
|
||||
inkscape:cy="800.02434"
|
||||
inkscape:window-width="2494"
|
||||
inkscape:window-height="1371"
|
||||
inkscape:window-x="66"
|
||||
inkscape:window-y="32"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="Livello_1" />
|
||||
<metadata
|
||||
id="metadata2">
|
||||
<ns:sfw>
|
||||
<ns:slices />
|
||||
<ns:sliceSourceBounds
|
||||
bottomLeftOrigin="true"
|
||||
height="1750"
|
||||
width="1881.25"
|
||||
x="-938.5"
|
||||
y="-851" />
|
||||
</ns:sfw>
|
||||
</metadata>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<linearGradient
|
||||
id="SVGID_1_"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="167.2057"
|
||||
y1="1420.9117"
|
||||
x2="795.2943"
|
||||
y2="333.0883"
|
||||
gradientTransform="matrix(1 0 0 -1 0 1752)">
|
||||
<stop
|
||||
offset="0"
|
||||
style="stop-color:#2368C4"
|
||||
id="stop20" />
|
||||
<stop
|
||||
offset="0.5"
|
||||
style="stop-color:#1A5DBE"
|
||||
id="stop22" />
|
||||
<stop
|
||||
offset="1"
|
||||
style="stop-color:#1146AC"
|
||||
id="stop24" />
|
||||
</linearGradient>
|
||||
|
||||
|
||||
<rect
|
||||
style="fill:#fff6d5"
|
||||
id="rect399"
|
||||
width="1881.25"
|
||||
height="1750"
|
||||
x="0"
|
||||
y="0"
|
||||
ry="134.62839" /><text
|
||||
xml:space="preserve"
|
||||
style="font-size:1066.67px;fill:#000000;-inkscape-font-specification:serif;font-family:serif;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal"
|
||||
x="204.01395"
|
||||
y="1266.3248"
|
||||
id="text295"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan293"
|
||||
x="204.01395"
|
||||
y="1266.3248">rM</tspan></text></svg>
|
After Width: | Height: | Size: 2.3 KiB |
17
apps/remarkable-desktop/info
Normal file
@@ -0,0 +1,17 @@
|
||||
# GNOME shortcut name
|
||||
NAME="reMarkable"
|
||||
|
||||
# Used for descriptions and window class
|
||||
FULL_NAME="reMarkable Desktop App"
|
||||
|
||||
# The executable inside windows
|
||||
WIN_EXECUTABLE="C:\Program Files\reMarkable\reMarkable.exe"
|
||||
|
||||
# GNOME categories
|
||||
CATEGORIES="WinApps;Office"
|
||||
|
||||
# GNOME mimetypes
|
||||
MIME_TYPES=""
|
||||
|
||||
# System Icon
|
||||
ICON="reMarkable"
|
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
@@ -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"
|
||||
|
||||
|
188
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
|
||||
@@ -37,12 +29,11 @@ readonly COMPOSE_PATH="${HOME}/.config/winapps/compose.yaml"
|
||||
readonly SCRIPT_DIR_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"
|
||||
|
||||
# OTHER
|
||||
readonly VM_NAME="RDPWindows" # FOR 'libvirt' ONLY
|
||||
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
|
||||
@@ -50,18 +41,20 @@ RDP_USER=""
|
||||
RDP_PASS=""
|
||||
RDP_DOMAIN=""
|
||||
RDP_IP=""
|
||||
VM_NAME="RDPWindows" # FOR 'libvirt' ONLY
|
||||
WAFLAVOR="docker"
|
||||
RDP_FLAGS=""
|
||||
FREERDP_COMMAND=""
|
||||
REMOVABLE_MEDIA=""
|
||||
RDP_SCALE=100
|
||||
AUTOPAUSE="off"
|
||||
AUTOPAUSE_TIME="300"
|
||||
MULTIMON="false"
|
||||
DEBUG="true"
|
||||
MULTI_FLAG=""
|
||||
BOOT_TIMEOUT=120
|
||||
|
||||
# OTHER
|
||||
FREERDP_PID=-1
|
||||
NEEDED_BOOT=false
|
||||
|
||||
### TRAPS ###
|
||||
# Catch SIGINT (CTRL+C) to call 'waCleanUp'.
|
||||
@@ -114,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")
|
||||
@@ -131,7 +124,7 @@ Please run:
|
||||
;;
|
||||
"$EC_NOT_EXIST")
|
||||
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")
|
||||
dprint "ERROR: UNKNOWN CONTAINER ERROR. EXITING."
|
||||
@@ -162,9 +155,18 @@ 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: 'waFixRemovableMedia'
|
||||
# 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
|
||||
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'
|
||||
# Role: Since FreeRDP only supports '/scale' values of 100, 140 or 180, find the closest supported argument to the user's configuration.
|
||||
function waFixScale() {
|
||||
@@ -210,12 +212,10 @@ function waLoadConfig() {
|
||||
waThrowExit $EC_MISSING_CONFIG
|
||||
fi
|
||||
|
||||
# Update 'MULTI_FLAG' based on 'MULTIMON'.
|
||||
MULTI_FLAG=$([[ $MULTIMON == "true" ]] && echo "/multimon" || echo "+span")
|
||||
|
||||
# Update $RDP_SCALE.
|
||||
waFixScale
|
||||
|
||||
# Update when $REMOVABLE_MEDIA is null
|
||||
waFixRemovableMedia
|
||||
# Update $AUTOPAUSE_TIME.
|
||||
# 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.
|
||||
@@ -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
|
||||
}
|
||||
@@ -321,37 +322,39 @@ function waCheckVMRunning() {
|
||||
|
||||
# Attempt to run the Windows virtual machine.
|
||||
# Note: States 'running' and 'idle' do not require intervention, and are not checked for.
|
||||
if (virsh list --all --name | xargs | grep -wq "$VM_NAME"); then
|
||||
if (virsh list --state-shutoff --name | xargs | grep -wq "$VM_NAME"); then
|
||||
if (virsh list --all --name | grep -Fxq -- "$VM_NAME"); then
|
||||
if (virsh list --state-shutoff --name | grep -Fxq -- "$VM_NAME"); then
|
||||
dprint "WINDOWS SHUT OFF. BOOTING WINDOWS."
|
||||
notify-send --expire-time=4000 --icon="dialog-info" --app-name="WinApps" --urgency="low" "WinApps" "Booting Windows."
|
||||
NEEDED_BOOT=true
|
||||
virsh start "$VM_NAME" &>/dev/null || EXIT_STATUS=$EC_FAIL_START
|
||||
if (virsh list --state-paused --name | xargs | grep -wq "$VM_NAME"); then
|
||||
if (virsh list --state-paused --name | grep -Fxq -- "$VM_NAME"); then
|
||||
dprint "WINDOWS PAUSED. RESUMING WINDOWS."
|
||||
notify-send --expire-time=4000 --icon="dialog-info" --app-name="WinApps" --urgency="low" "WinApps" "Resuming Windows."
|
||||
virsh resume "$VM_NAME" &>/dev/null || EXIT_STATUS=$EC_FAIL_RESUME
|
||||
fi
|
||||
elif (virsh list --state-paused --name | xargs | grep -wq "$VM_NAME"); then
|
||||
elif (virsh list --state-paused --name | grep -Fxq -- "$VM_NAME"); then
|
||||
dprint "WINDOWS PAUSED. RESUMING WINDOWS."
|
||||
notify-send --expire-time=4000 --icon="dialog-info" --app-name="WinApps" --urgency="low" "WinApps" "Resuming Windows."
|
||||
virsh resume "$VM_NAME" &>/dev/null || EXIT_STATUS=$EC_FAIL_RESUME
|
||||
elif (virsh list --state-other --name | xargs | grep -wq "$VM_NAME"); then
|
||||
if (virsh domstate "$VM_NAME" | xargs | grep -wq "shutdown"); then
|
||||
elif (virsh list --state-other --name | grep -Fxq -- "$VM_NAME"); then
|
||||
if (virsh domstate "$VM_NAME" | grep -Fxq "in shutdown"); then
|
||||
dprint "WINDOWS SHUTTING DOWN. WAITING."
|
||||
notify-send --expire-time=4000 --icon="dialog-info" --app-name="WinApps" --urgency="low" "WinApps" "Windows is currently shutting down.\nIt will automatically restart once the shutdown process is complete."
|
||||
EXIT_STATUS=$EC_SD_TIMEOUT
|
||||
while (( TIME_ELAPSED < TIME_LIMIT )); do
|
||||
if (virsh list --state-shutoff --name | xargs | grep -wq "$VM_NAME"); then
|
||||
if (virsh list --state-shutoff --name | grep -Fxq -- "$VM_NAME"); then
|
||||
EXIT_STATUS=0
|
||||
dprint "WINDOWS SHUT OFF. BOOTING WINDOWS."
|
||||
notify-send --expire-time=4000 --icon="dialog-info" --app-name="WinApps" --urgency="low" "WinApps" "Booting Windows."
|
||||
virsh start "$VM_NAME" &>/dev/null || EXIT_STATUS=$EC_FAIL_START
|
||||
NEEDED_BOOT=true
|
||||
break
|
||||
fi
|
||||
sleep $TIME_INTERVAL
|
||||
TIME_ELAPSED=$((TIME_ELAPSED + TIME_INTERVAL))
|
||||
done
|
||||
elif (virsh domstate "$VM_NAME" | xargs | grep -wq "crashed"); then
|
||||
elif (virsh domstate "$VM_NAME" | grep -Fxq "crashed"); then
|
||||
dprint "WINDOWS CRASHED. DESTROYING WINDOWS."
|
||||
notify-send --expire-time=4000 --icon="dialog-info" --app-name="WinApps" --urgency="low" "WinApps" "Windows experienced an unexpected crash.\nAttempting to restart Windows."
|
||||
virsh destroy "$VM_NAME" &>/dev/null || EXIT_STATUS=$EC_FAIL_DESTROY
|
||||
@@ -359,13 +362,14 @@ function waCheckVMRunning() {
|
||||
dprint "WINDOWS DESTROYED. BOOTING WINDOWS."
|
||||
notify-send --expire-time=4000 --icon="dialog-info" --app-name="WinApps" --urgency="low" "WinApps" "Booting Windows."
|
||||
virsh start "$VM_NAME" &>/dev/null || EXIT_STATUS=$EC_FAIL_START
|
||||
NEEDED_BOOT=true
|
||||
fi
|
||||
elif (virsh domstate "$VM_NAME" | xargs | grep -wq "dying"); then
|
||||
elif (virsh domstate "$VM_NAME" | grep -Fxq "dying"); then
|
||||
dprint "WINDOWS DYING. WAITING."
|
||||
notify-send --expire-time=4000 --icon="dialog-info" --app-name="WinApps" --urgency="low" "WinApps" "Windows is currently shutting down unexpectedly.\nIt will try to restart once the shutdown process finishes."
|
||||
EXIT_STATUS=$EC_DIE_TIMEOUT
|
||||
while (( TIME_ELAPSED < TIME_LIMIT )); do
|
||||
if (virsh domstate "$VM_NAME" | xargs | grep -wq "crashed"); then
|
||||
if (virsh domstate "$VM_NAME" | grep -Fxq "crashed"); then
|
||||
EXIT_STATUS=0
|
||||
dprint "WINDOWS CRASHED. DESTROYING WINDOWS."
|
||||
notify-send --expire-time=4000 --icon="dialog-info" --app-name="WinApps" --urgency="low" "WinApps" "Windows experienced an unexpected crash.\nAttempting to restart Windows."
|
||||
@@ -374,19 +378,21 @@ function waCheckVMRunning() {
|
||||
dprint "WINDOWS DESTROYED. BOOTING WINDOWS."
|
||||
notify-send --expire-time=4000 --icon="dialog-info" --app-name="WinApps" --urgency="low" "WinApps" "Booting Windows."
|
||||
virsh start "$VM_NAME" &>/dev/null || EXIT_STATUS=$EC_FAIL_START
|
||||
NEEDED_BOOT=true
|
||||
fi
|
||||
break
|
||||
elif (virsh list --state-shutoff --name | xargs | grep -wq "$VM_NAME"); then
|
||||
elif (virsh list --state-shutoff --name | grep -Fxq -- "$VM_NAME"); then
|
||||
EXIT_STATUS=0
|
||||
dprint "WINDOWS SHUT OFF. BOOTING WINDOWS."
|
||||
notify-send --expire-time=4000 --icon="dialog-info" --app-name="WinApps" --urgency="low" "WinApps" "Booting Windows."
|
||||
virsh start "$VM_NAME" &>/dev/null || EXIT_STATUS=$EC_FAIL_START
|
||||
NEEDED_BOOT=true
|
||||
break
|
||||
fi
|
||||
sleep $TIME_INTERVAL
|
||||
TIME_ELAPSED=$((TIME_ELAPSED + TIME_INTERVAL))
|
||||
done
|
||||
elif (virsh domstate "$VM_NAME" | xargs | grep -wq "pmsuspended" ); then
|
||||
elif (virsh domstate "$VM_NAME" | grep -Fxq "pmsuspended" ); then
|
||||
dprint "WINDOWS SUSPENDED. RESUMING WINDOWS."
|
||||
virsh resume "$VM_NAME" &>/dev/null || EXIT_STATUS=$EC_FAIL_RESUME
|
||||
fi
|
||||
@@ -397,6 +403,45 @@ function waCheckVMRunning() {
|
||||
|
||||
# Handle non-zero exit statuses.
|
||||
[ "$EXIT_STATUS" -ne 0 ] && waThrowExit "$EXIT_STATUS"
|
||||
|
||||
# Wait for VM to be fully ready
|
||||
if [[ "$NEEDED_BOOT" == "true" ]]; then
|
||||
dprint "WAITING FOR VM TO BE FULLY READY..."
|
||||
notify-send --expire-time=4000 --icon="dialog-info" --app-name="WinApps" --urgency="low" "WinApps" "Waiting for Windows to be ready..."
|
||||
|
||||
TIME_ELAPSED=0
|
||||
|
||||
while (( TIME_ELAPSED < BOOT_TIMEOUT )); do
|
||||
# Check if VM is running
|
||||
if (virsh list --state-running --name | grep -Fxq -- "$VM_NAME"); then
|
||||
# Try to connect to RDP port to verify it's ready
|
||||
if timeout 1 bash -c ">/dev/tcp/$RDP_IP/$RDP_PORT" 2>/dev/null; then
|
||||
dprint "VM IS READY"
|
||||
notify-send --expire-time=4000 --icon="dialog-info" --app-name="WinApps" --urgency="low" "WinApps" "Windows is ready."
|
||||
# Add a delay after Windows is ready
|
||||
if [ "$NEEDED_BOOT" = "true" ]; then
|
||||
sleep 10
|
||||
fi
|
||||
break
|
||||
fi
|
||||
fi
|
||||
|
||||
sleep 5
|
||||
TIME_ELAPSED=$((TIME_ELAPSED + 5))
|
||||
|
||||
# Show progress every 30 seconds
|
||||
if (( TIME_ELAPSED % 30 == 0 )); then
|
||||
notify-send --expire-time=4000 --icon="dialog-info" --app-name="WinApps" --urgency="low" "WinApps" "Still waiting for Windows to be ready... ($TIME_ELAPSED seconds elapsed)"
|
||||
fi
|
||||
done
|
||||
|
||||
# If we timed out waiting for the VM
|
||||
if (( TIME_ELAPSED >= BOOT_TIMEOUT )); then
|
||||
dprint "TIMEOUT WAITING FOR VM TO BE READY"
|
||||
notify-send --expire-time=4000 --icon="dialog-info" --app-name="WinApps" --urgency="low" "WinApps" "Timeout waiting for Windows to be ready. Please try again."
|
||||
waThrowExit $EC_FAIL_START
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Name: 'waCheckContainerRunning'
|
||||
@@ -428,6 +473,7 @@ function waCheckContainerRunning() {
|
||||
dprint "WINDOWS CREATED. BOOTING WINDOWS."
|
||||
notify-send --expire-time=4000 --icon="dialog-info" --app-name="WinApps" --urgency="low" "WinApps" "Booting Windows."
|
||||
$COMPOSE_COMMAND --file "$COMPOSE_PATH" start &>/dev/null
|
||||
NEEDED_BOOT=true
|
||||
;;
|
||||
"restarting")
|
||||
dprint "WINDOWS RESTARTING. WAITING."
|
||||
@@ -438,6 +484,7 @@ function waCheckContainerRunning() {
|
||||
EXIT_STATUS=0
|
||||
dprint "WINDOWS RESTARTED."
|
||||
notify-send --expire-time=4000 --icon="dialog-info" --app-name="WinApps" --urgency="low" "WinApps" "Restarted Windows."
|
||||
NEEDED_BOOT=true
|
||||
break
|
||||
fi
|
||||
sleep $TIME_INTERVAL
|
||||
@@ -453,11 +500,13 @@ function waCheckContainerRunning() {
|
||||
dprint "WINDOWS SHUT OFF. BOOTING WINDOWS."
|
||||
notify-send --expire-time=4000 --icon="dialog-info" --app-name="WinApps" --urgency="low" "WinApps" "Booting Windows."
|
||||
$COMPOSE_COMMAND --file "$COMPOSE_PATH" start &>/dev/null
|
||||
NEEDED_BOOT=true
|
||||
;;
|
||||
"dead")
|
||||
dprint "WINDOWS DEAD. RECREATING WINDOWS CONTAINER."
|
||||
notify-send --expire-time=4000 --icon="dialog-info" --app-name="WinApps" --urgency="low" "WinApps" "Re-creating and booting Windows."
|
||||
$COMPOSE_COMMAND --file "$COMPOSE_PATH" down &>/dev/null && $COMPOSE_COMMAND --file "$COMPOSE_PATH" up -d &>/dev/null
|
||||
NEEDED_BOOT=true
|
||||
;;
|
||||
"unknown")
|
||||
EXIT_STATUS=$EC_UNKNOWN
|
||||
@@ -466,6 +515,45 @@ function waCheckContainerRunning() {
|
||||
|
||||
# Handle non-zero exit statuses.
|
||||
[ "$EXIT_STATUS" -ne 0 ] && waThrowExit "$EXIT_STATUS"
|
||||
|
||||
# Wait for container to be fully ready
|
||||
if [[ "$CONTAINER_STATE" == "created" || "$CONTAINER_STATE" == "exited" || "$CONTAINER_STATE" == "dead" || "$CONTAINER_STATE" == "restarting" ]]; then
|
||||
dprint "WAITING FOR CONTAINER TO BE FULLY READY..."
|
||||
notify-send --expire-time=4000 --icon="dialog-info" --app-name="WinApps" --urgency="low" "WinApps" "Waiting for Windows to be ready..."
|
||||
|
||||
TIME_ELAPSED=0
|
||||
|
||||
while (( TIME_ELAPSED < BOOT_TIMEOUT )); do
|
||||
# Check if container is running
|
||||
if [[ $("$WAFLAVOR" inspect --format='{{.State.Status}}' "$CONTAINER_NAME") == "running" ]]; then
|
||||
# Try to connect to RDP port to verify it's ready
|
||||
if timeout 1 bash -c ">/dev/tcp/$RDP_IP/$RDP_PORT" 2>/dev/null; then
|
||||
dprint "CONTAINER IS READY"
|
||||
notify-send --expire-time=4000 --icon="dialog-info" --app-name="WinApps" --urgency="low" "WinApps" "Windows is ready."
|
||||
# Add a delay after Windows is ready
|
||||
if [ "$NEEDED_BOOT" = "true" ]; then
|
||||
sleep 10
|
||||
fi
|
||||
break
|
||||
fi
|
||||
fi
|
||||
|
||||
sleep 5
|
||||
TIME_ELAPSED=$((TIME_ELAPSED + 5))
|
||||
|
||||
# Show progress every 30 seconds
|
||||
if (( TIME_ELAPSED % 30 == 0 )); then
|
||||
notify-send --expire-time=4000 --icon="dialog-info" --app-name="WinApps" --urgency="low" "WinApps" "Still waiting for Windows to be ready... ($TIME_ELAPSED seconds elapsed)"
|
||||
fi
|
||||
done
|
||||
|
||||
# If we timed out waiting for the container
|
||||
if (( TIME_ELAPSED >= BOOT_TIMEOUT )); then
|
||||
dprint "TIMEOUT WAITING FOR CONTAINER TO BE READY"
|
||||
notify-send --expire-time=4000 --icon="dialog-info" --app-name="WinApps" --urgency="low" "WinApps" "Timeout waiting for Windows to be ready. Please try again."
|
||||
waThrowExit $EC_FAIL_START
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Name: 'waCheckPortOpen'
|
||||
@@ -518,11 +606,8 @@ function waRunCommand() {
|
||||
/u:"$RDP_USER" \
|
||||
/p:"$RDP_PASS" \
|
||||
/scale:"$RDP_SCALE" \
|
||||
+dynamic-resolution \
|
||||
+auto-reconnect \
|
||||
+home-drive \
|
||||
+clipboard \
|
||||
-wallpaper \
|
||||
+dynamic-resolution \
|
||||
/wm-class:"Microsoft Windows" \
|
||||
/t:"Windows RDP Session [$RDP_IP]" \
|
||||
/v:"$RDP_IP" &>/dev/null &
|
||||
@@ -537,12 +622,7 @@ function waRunCommand() {
|
||||
/u:"$RDP_USER" \
|
||||
/p:"$RDP_PASS" \
|
||||
/scale:"$RDP_SCALE" \
|
||||
+dynamic-resolution \
|
||||
+auto-reconnect \
|
||||
+home-drive \
|
||||
+clipboard \
|
||||
-wallpaper \
|
||||
"$MULTI_FLAG" \
|
||||
/app:program:"$2" \
|
||||
/v:"$RDP_IP" &>/dev/null &
|
||||
|
||||
@@ -574,12 +654,7 @@ function waRunCommand() {
|
||||
/u:"$RDP_USER" \
|
||||
/p:"$RDP_PASS" \
|
||||
/scale:"$RDP_SCALE" \
|
||||
+dynamic-resolution \
|
||||
+auto-reconnect \
|
||||
+home-drive \
|
||||
+clipboard \
|
||||
-wallpaper \
|
||||
"$MULTI_FLAG" \
|
||||
/wm-class:"$FULL_NAME" \
|
||||
/app:program:"$WIN_EXECUTABLE",icon:"$ICON",name:"$FULL_NAME" \
|
||||
/v:"$RDP_IP" &>/dev/null &
|
||||
@@ -589,7 +664,8 @@ function waRunCommand() {
|
||||
else
|
||||
# Convert path from UNIX to Windows style.
|
||||
FILE_PATH=$(echo "$2" | sed \
|
||||
-e 's|'"${HOME}"'|\\\\tsclient\\home|' \
|
||||
-e 's|^'"${HOME}"'|\\\\tsclient\\home|' \
|
||||
-e 's|^'"${REMOVABLE_MEDIA}"'|\\\\tsclient\\media|' \
|
||||
-e 's|/|\\|g')
|
||||
dprint "UNIX_FILE_PATH: ${2}"
|
||||
dprint "WINDOWS_FILE_PATH: ${FILE_PATH}"
|
||||
@@ -599,14 +675,10 @@ function waRunCommand() {
|
||||
/u:"$RDP_USER" \
|
||||
/p:"$RDP_PASS" \
|
||||
/scale:"$RDP_SCALE" \
|
||||
+dynamic-resolution \
|
||||
+auto-reconnect \
|
||||
+home-drive \
|
||||
+clipboard \
|
||||
-wallpaper \
|
||||
"$MULTI_FLAG" \
|
||||
/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.
|
||||
@@ -635,7 +707,7 @@ function waCheckIdle() {
|
||||
local SUSPEND_WINDOWS=0
|
||||
|
||||
# Prevent 'autopause' functionality with unsupported Windows backends.
|
||||
if [ "$WAFLAVOR" != "manual" ] && [ "$WAFLAVOR" != "docker" ]; then
|
||||
if [ "$WAFLAVOR" != "manual" ]; then
|
||||
# Check if there are no WinApps-related FreeRDP processes running.
|
||||
if ! ls "$APPDATA_PATH"/FreeRDP_Process_*.cproc &>/dev/null; then
|
||||
SUSPEND_WINDOWS=1
|
||||
|
32
compose.yaml
@@ -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,34 +8,42 @@ 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:
|
||||
# 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
|
||||
VERSION: "tiny11"
|
||||
VERSION: "11"
|
||||
RAM_SIZE: "4G" # RAM allocated to the Windows VM.
|
||||
CPU_CORES: "4" # CPU cores allocated to the Windows VM.
|
||||
DISK_SIZE: "64G" # Size of the primary hard disk.
|
||||
#DISK2_SIZE: "32G" # Uncomment to add an additional hard disk to the Windows VM. Ensure it is mounted as a volume below.
|
||||
#USERNAME: "Docker" # Uncomment to set a custom Windows username. The default is 'Docker'.
|
||||
#PASSWORD: "" # Uncomment to set a password for the Windows user. There is no default password.
|
||||
# DISK2_SIZE: "32G" # Uncomment to add an additional hard disk to the Windows VM. Ensure it is mounted as a volume below.
|
||||
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'.
|
||||
HOME: "${HOME}" # Set path to Linux user home folder.
|
||||
privileged: true # Grant the Windows VM extended privileges.
|
||||
ports:
|
||||
- 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/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.
|
||||
restart: on-failure # Restart the Windows VM if the exit code indicates an error.
|
||||
volumes:
|
||||
- data:/storage # Mount volume 'data' to use as Windows 'C:' drive.
|
||||
- ${HOME}:/shared # Mount Linux user home directory @ '\\host.lan\Data'.
|
||||
#- /path/to/second/hard/disk:/storage2 # Uncomment to mount the second hard disk within the Windows VM. Ensure 'DISK2_SIZE' is specified above.
|
||||
#- /path/to/second/hard/disk:/storage2 # Uncomment to create a virtual second hard disk and mount it within the Windows VM. Ensure 'DISK2_SIZE' is specified above.
|
||||
- ./oem:/oem # Enables automatic post-install execution of 'oem/install.bat', applying Windows registry modifications contained within 'oem/RDPApps.reg'.
|
||||
#- /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:
|
||||
- /dev/kvm # Enable KVM.
|
||||
#- /dev/sdX:/disk1 # Uncomment to mount a disk directly within the Windows VM (Note: 'disk1' will be mounted as the main drive).
|
||||
#- /dev/sdY:/disk2 # Uncomment to mount a disk directly within the Windows VM (Note: 'disk2' and higher will be mounted as secondary drives).
|
||||
- /dev/net/tun # Enable tuntap
|
||||
# Uncomment to mount a disk directly within the Windows VM.
|
||||
# WARNING: /dev/sdX paths may change after reboot. Use persistent identifiers!
|
||||
# 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/<id>:/disk1
|
||||
# - /dev/disk/by-id/<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.
|
||||
|
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
|
@@ -6,23 +6,35 @@ Although WinApps supports using `QEMU+KVM+libvirt` as a backend for running Wind
|
||||
|
||||
> [!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.
|
||||
> 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 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.
|
||||
|
||||
> [!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 commands is empty, run `echo -e "ip_tables\niptable_nat" | sudo tee /etc/modules-load.d/iptables.conf` and reboot.
|
||||
|
||||
## `Docker`
|
||||
### Installation
|
||||
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`.
|
||||
|
||||
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.
|
||||
|
||||
> [!NOTE]
|
||||
> If you want to undo all your changes and start from scratch, run the following. For `podman`, replace `docker compose` with `podman-compose`.
|
||||
> ```bash
|
||||
> docker compose down --rmi=all --volumes
|
||||
> ```
|
||||
|
||||
### Installing Windows
|
||||
You can initiate the Windows installation using `docker compose`.
|
||||
```bash
|
||||
@@ -32,45 +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.
|
||||
|
||||
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
|
||||
```
|
||||
|
||||
### 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.
|
||||
Changes to `compose.yaml` require the container to be removed and re-created. This should __NOT__ affect your data.
|
||||
|
||||
```bash
|
||||
# Stop and remove the existing Windows virtual machine.
|
||||
# Stop and remove the existing container.
|
||||
docker compose --file ~/.config/winapps/compose.yaml down
|
||||
|
||||
# Remove the existing FreeRDP certificate (if required).
|
||||
# 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
|
||||
|
||||
# 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
|
||||
```
|
||||
|
||||
@@ -92,6 +78,12 @@ docker compose --file ~/.config/winapps/compose.yaml kill # Force shut down the
|
||||
### Setup `Podman` 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]
|
||||
> Ensure `WAFLAVOR` is set to `"podman"` in `~/.config/winapps/winapps.conf`.
|
||||
|
||||
@@ -104,38 +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.
|
||||
|
||||
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
|
||||
```
|
||||
|
||||
### 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.
|
||||
Changes to `compose.yaml` require the container to be removed and re-created. This should __NOT__ affect your data.
|
||||
|
||||
```bash
|
||||
# Stop and remove the existing Windows virtual machine.
|
||||
# Stop and remove the existing container.
|
||||
podman-compose --file ~/.config/winapps/compose.yaml down
|
||||
|
||||
# Remove the existing FreeRDP certificate (if required).
|
||||
# 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
|
||||
|
||||
# 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
|
||||
```
|
||||
|
||||
|
364
docs/libvirt.md
@@ -1,6 +1,8 @@
|
||||
# Creating a `libvirt` Windows VM
|
||||
## Understanding The Virtualisation Stack
|
||||
This method of configuring a Windows virtual machine for use with WinApps is significantly more involved than utilising `Docker` or `Podman`. Nevertheless, expert users may prefer this method due to its greater flexibility and wider range of customisation options.
|
||||
This method of configuring a Windows virtual machine for use with WinApps is significantly more involved than utilising `Docker` or `Podman`. Nevertheless, expert users may prefer this method due to its greater flexibility and wider range of customisation options (e.g. GPU passthrough).
|
||||
|
||||
<details>
|
||||
<summary><strong>Understanding The Virtualisation Stack</strong></summary>
|
||||
|
||||
Before beginning, it is important to have a basic understanding of the various components involved in this particular method.
|
||||
|
||||
@@ -15,6 +17,8 @@ Together, these components form a powerful and flexible virtualization stack, wi
|
||||
<img src="./libvirt_images/Virtualisation_Stack.svg" width="500px"/>
|
||||
</p>
|
||||
|
||||
</details>
|
||||
|
||||
## Prerequisites
|
||||
1. Ensure your CPU supports hardware virtualisation extensions by [reading this article](https://wiki.archlinux.org/title/KVM).
|
||||
|
||||
@@ -28,30 +32,26 @@ 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
|
||||
```
|
||||
|
||||
4. Install `QEMU Guest Agent`.
|
||||
```bash
|
||||
sudo apt install qemu-guest-agent # Debian/Ubuntu
|
||||
sudo dnf install qemu-guest-agent # Fedora/RHEL
|
||||
sudo pacman -S qemu-guest-agent # Arch Linux
|
||||
sudo emerge app-emulation/qemu-guest-agent # Gentoo Linux
|
||||
sudo systemctl enable qemu-guest-agent
|
||||
sudo systemctl start qemu-guest-agent
|
||||
echo 'export LIBVIRT_DEFAULT_URI="qemu:///system"' >> ~/.bashrc
|
||||
```
|
||||
|
||||
> [!NOTE]
|
||||
> `QEMU Guest Agent` is a helper daemon used to exchange information and commands between host and guest operating systems.
|
||||
> You can read more about `QEMU Guest Agent` [here](https://pve.proxmox.com/wiki/Qemu-guest-agent).
|
||||
> 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
|
||||
|
||||
5. Configure rootless `libvirt` and `kvm` by adding your user to groups of the same name.
|
||||
4. Configure rootless `libvirt` and `kvm` by adding your user to groups of the same name.
|
||||
``` bash
|
||||
sudo usermod -a -G kvm $(id -un) # Add the user to the 'kvm' group.
|
||||
sudo usermod -a -G libvirt $(id -un) # Add the user to the 'libvirt' group.
|
||||
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:
|
||||
@@ -65,7 +65,7 @@ Together, these components form a powerful and flexible virtualization stack, wi
|
||||
|
||||
3. Reboot your system to ensure that the user is correctly added to the relevant groups.
|
||||
|
||||
6. If relevant to your distribution, disable `AppArmor` for the `libvirt` daemon.
|
||||
5. If relevant to your distribution, disable `AppArmor` for the `libvirt` daemon.
|
||||
``` bash
|
||||
sudo ln -s /etc/apparmor.d/usr.sbin.libvirtd /etc/apparmor.d/disable/ # Disable AppArmor for the libvirt daemon by creating a symbolic link.
|
||||
```
|
||||
@@ -73,12 +73,12 @@ Together, these components form a powerful and flexible virtualization stack, wi
|
||||
> [!NOTE]
|
||||
> Systems with `SELinux` may also require security policy adjustments if virtual machine images are stored outside the default `/var/lib/libvirt/images` directory. Read [this guide](https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/5/html/virtualization/sect-virtualization-security_for_virtualization-selinux_and_virtualization#sect-Virtualization-Security_for_virtualization-SELinux_and_virtualization) for more information.
|
||||
|
||||
7. Download a [Windows 10](https://www.microsoft.com/software-download/windows10ISO) or [Windows 11](https://www.microsoft.com/software-download/windows11) installation `.ISO` image.
|
||||
6. Download a [Windows 10](https://www.microsoft.com/software-download/windows10ISO) or [Windows 11](https://www.microsoft.com/software-download/windows11) installation `.ISO` image.
|
||||
|
||||
> [!IMPORTANT]
|
||||
> 'Professional', 'Enterprise' or 'Server' editions of Windows are required to run RDP applications. Windows 'Home' will NOT suffice.
|
||||
|
||||
8. Download [VirtIO drivers](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/virtio-win.iso) for the Windows virtual machine.
|
||||
7. Download [VirtIO drivers](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/virtio-win.iso) for the Windows virtual machine.
|
||||
|
||||
> [!NOTE]
|
||||
> VirtIO drivers enhance system performance and minimize overhead by enabling the Windows virtual machine to use specialised network and disk device drivers. These drivers are aware that they are operating inside a virtual machine, and cooperate with the hypervisor. This approach eliminates the need for the hypervisor to emulate physical hardware devices, which is a computationally expensive process. This setup allows guests to achieve high-performance network and disk operations, leveraging the benefits of paravirtualisation.
|
||||
@@ -138,6 +138,9 @@ Together, these components form a powerful and flexible virtualization stack, wi
|
||||
<img src="./libvirt_images/07.png" width="500px"/>
|
||||
</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`.
|
||||
|
||||
> [!NOTE]
|
||||
@@ -147,113 +150,7 @@ Together, these components form a powerful and flexible virtualization stack, wi
|
||||
<img src="./libvirt_images/08.png" width="700px"/>
|
||||
</p>
|
||||
|
||||
10. (Optional) Assign specific physical CPU cores to the virtual machine. This can improve performance by reducing context switching and ensuring that the virtual machine's workload consistently uses the same cores, leading to better CPU cache utilisation.
|
||||
1. Run `lscpu -e` to determine which L1, L2 and L3 caches are associated with which CPU cores.
|
||||
|
||||
Example 1 (Intel 11th Gen Core i7-1185G7):
|
||||
```
|
||||
CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE MAXMHZ MINMHZ
|
||||
0 0 0 0 0:0:0:0 yes 4800.0000 400.0000
|
||||
1 0 0 1 1:1:1:0 yes 4800.0000 400.0000
|
||||
2 0 0 2 2:2:2:0 yes 4800.0000 400.0000
|
||||
3 0 0 3 3:3:3:0 yes 4800.0000 400.0000
|
||||
4 0 0 0 0:0:0:0 yes 4800.0000 400.0000
|
||||
5 0 0 1 1:1:1:0 yes 4800.0000 400.0000
|
||||
6 0 0 2 2:2:2:0 yes 4800.0000 400.0000
|
||||
7 0 0 3 3:3:3:0 yes 4800.0000 400.0000
|
||||
```
|
||||
|
||||
- C<sub>0</sub> = T<sub>0</sub>+T<sub>4</sub> → L1<sub>0</sub>+L2<sub>0</sub>+L3<sub>0</sub>
|
||||
- C<sub>1</sub> = T<sub>1</sub>+T<sub>5</sub> → L1<sub>1</sub>+L2<sub>1</sub>+L3<sub>0</sub>
|
||||
- C<sub>2</sub> = T<sub>2</sub>+T<sub>6</sub> → L1<sub>2</sub>+L2<sub>2</sub>+L3<sub>0</sub>
|
||||
- C<sub>3</sub> = T<sub>3</sub>+T<sub>7</sub> → L1<sub>3</sub>+L2<sub>3</sub>+L3<sub>0</sub>
|
||||
|
||||
Example 2 (AMD Ryzen 5 1600):
|
||||
```
|
||||
CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE MAXMHZ MINMHZ
|
||||
0 0 0 0 0:0:0:0 yes 3800.0000 1550.0000
|
||||
1 0 0 0 0:0:0:0 yes 3800.0000 1550.0000
|
||||
2 0 0 1 1:1:1:0 yes 3800.0000 1550.0000
|
||||
3 0 0 1 1:1:1:0 yes 3800.0000 1550.0000
|
||||
4 0 0 2 2:2:2:0 yes 3800.0000 1550.0000
|
||||
5 0 0 2 2:2:2:0 yes 3800.0000 1550.0000
|
||||
6 0 0 3 3:3:3:1 yes 3800.0000 1550.0000
|
||||
7 0 0 3 3:3:3:1 yes 3800.0000 1550.0000
|
||||
8 0 0 4 4:4:4:1 yes 3800.0000 1550.0000
|
||||
9 0 0 4 4:4:4:1 yes 3800.0000 1550.0000
|
||||
10 0 0 5 5:5:5:1 yes 3800.0000 1550.0000
|
||||
11 0 0 5 5:5:5:1 yes 3800.0000 1550.0000
|
||||
```
|
||||
|
||||
- C<sub>0</sub> = T<sub>0</sub>+T<sub>1</sub> → L1<sub>0</sub>+L2<sub>0</sub>+L3<sub>0</sub>
|
||||
- C<sub>1</sub> = T<sub>2</sub>+T<sub>3</sub> → L1<sub>1</sub>+L2<sub>1</sub>+L3<sub>0</sub>
|
||||
- C<sub>2</sub> = T<sub>4</sub>+T<sub>5</sub> → L1<sub>2</sub>+L2<sub>2</sub>+L3<sub>0</sub>
|
||||
- C<sub>3</sub> = T<sub>6</sub>+T<sub>7</sub> → L1<sub>3</sub>+L2<sub>3</sub>+L3<sub>1</sub>
|
||||
- C<sub>4</sub> = T<sub>8</sub>+T<sub>9</sub> → L1<sub>4</sub>+L2<sub>4</sub>+L3<sub>1</sub>
|
||||
- C<sub>5</sub> = T<sub>10</sub>+T<sub>11</sub> → L1<sub>5</sub>+L2<sub>5</sub>+L3<sub>1</sub>
|
||||
|
||||
2. Select which CPU cores to 'pin'. You should aim to select a combination of CPU cores that minimises sharing of caches between Windows and GNU/Linux.
|
||||
|
||||
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.
|
||||
- Thus, if limiting the virtual machine to a maximum of 4 threads, there are 10 possible optimal configurations:
|
||||
- T<sub>0</sub>+T<sub>4</sub>
|
||||
- T<sub>1</sub>+T<sub>5</sub>
|
||||
- T<sub>2</sub>+T<sub>6</sub>
|
||||
- T<sub>3</sub>+T<sub>7</sub>
|
||||
- T<sub>0</sub>+T<sub>4</sub>+T<sub>1</sub>+T<sub>5</sub>
|
||||
- T<sub>0</sub>+T<sub>4</sub>+T<sub>2</sub>+T<sub>6</sub>
|
||||
- T<sub>0</sub>+T<sub>4</sub>+T<sub>3</sub>+T<sub>7</sub>
|
||||
- T<sub>1</sub>+T<sub>5</sub>+T<sub>2</sub>+T<sub>6</sub>
|
||||
- T<sub>1</sub>+T<sub>5</sub>+T<sub>3</sub>+T<sub>7</sub>
|
||||
- T<sub>2</sub>+T<sub>6</sub>+T<sub>3</sub>+T<sub>7</sub>
|
||||
|
||||
Example 2:
|
||||
- Threads 0-5 utilise one L3 cache whereas threads 6-11 utilise a different L3 cache. Thus, one of these two sets of threads should be pinned to the virtual machine.
|
||||
- Pinning and isolating fewer than these (e.g. threads 8-11) would result in the host system making use of the L3 cache in threads 6 and 7, resulting in cache evictions and therefore bad performance.
|
||||
- Thus, there are only two possible optimal configurations:
|
||||
- T<sub>0</sub>+T<sub>1</sub>+T<sub>2</sub>+T<sub>3</sub>+T<sub>4</sub>+T<sub>5</sub>
|
||||
- T<sub>6</sub>+T<sub>7</sub>+T<sub>8</sub>+T<sub>9</sub>+T<sub>10</sub>+T<sub>11</sub>
|
||||
|
||||
3. Prepare and add/modify the following to the `<vcpu>`, `<cputune>` and `<cpu>` sections, adjusting the values to match your selected threads.
|
||||
|
||||
Example 1: The following selects 'T<sub>2</sub>+T<sub>6</sub>+T<sub>3</sub>+T<sub>7</sub>'.
|
||||
|
||||
```xml
|
||||
<vcpu placement="static">4</vcpu>
|
||||
<cputune>
|
||||
<vcpupin vcpu="0" cpuset="2"/>
|
||||
<vcpupin vcpu="1" cpuset="6"/>
|
||||
<vcpupin vcpu="2" cpuset="3"/>
|
||||
<vcpupin vcpu="3" cpuset="7"/>
|
||||
</cputune>
|
||||
<cpu mode="host-passthrough" check="none" migratable="on">
|
||||
<topology sockets="1" dies="1" clusters="1" cores="2" threads="2"/>
|
||||
</cpu>
|
||||
```
|
||||
|
||||
Example 2: The following selects 'T<sub>6</sub>+T<sub>7</sub>+T<sub>8</sub>+T<sub>9</sub>+T<sub>10</sub>+T<sub>11</sub>'.
|
||||
|
||||
```xml
|
||||
<vcpu placement="static">6</vcpu>
|
||||
<cputune>
|
||||
<vcpupin vcpu="0" cpuset="6"/>
|
||||
<vcpupin vcpu="1" cpuset="7"/>
|
||||
<vcpupin vcpu="2" cpuset="8"/>
|
||||
<vcpupin vcpu="3" cpuset="9"/>
|
||||
<vcpupin vcpu="4" cpuset="10"/>
|
||||
<vcpupin vcpu="5" cpuset="11"/>
|
||||
</cputune>
|
||||
<cpu mode="host-passthrough" check="none" migratable="on">
|
||||
<topology sockets="1" dies="1" clusters="1" cores="3" threads="2"/>
|
||||
</cpu>
|
||||
```
|
||||
|
||||
> [!NOTE]
|
||||
> More information on configuring CPU pinning can be found in [this excellent guide](https://wiki.archlinux.org/title/PCI_passthrough_via_OVMF#CPU_pinning).
|
||||
|
||||
11. Navigate to the `XML` tab, and edit the `<clock>` section to disable all timers except for the hypervclock, thereby drastically reducing idle CPU usage. Once changed, click `Apply`.
|
||||
10. Navigate to the `XML` tab, and edit the `<clock>` section to disable all timers except for the hypervclock, thereby drastically reducing idle CPU usage. Once changed, click `Apply`.
|
||||
```xml
|
||||
<clock offset='localtime'>
|
||||
<timer name='rtc' present='no' tickpolicy='catchup'/>
|
||||
@@ -268,7 +165,7 @@ Together, these components form a powerful and flexible virtualization stack, wi
|
||||
<img src="./libvirt_images/09.png" width="700px"/>
|
||||
</p>
|
||||
|
||||
12. Enable Hyper-V enlightenments by adding the following to the `<hyperv>` section. Once changed, click `Apply`.
|
||||
11. Enable Hyper-V enlightenments by adding the following to the `<hyperv>` section. Once changed, click `Apply`.
|
||||
|
||||
```xml
|
||||
<hyperv>
|
||||
@@ -291,7 +188,7 @@ Together, these components form a powerful and flexible virtualization stack, wi
|
||||
> [!NOTE]
|
||||
> Hyper-V enlightenments make Windows (and other Hyper-V guests) think they are running on top of a Hyper-V compatible hypervisor. This enables use of Hyper-V specific features, allowing `KVM` to implement paravirtualised interfaces for improved virtual machine performance.
|
||||
|
||||
13. Add the following XML snippet within the `<devices>` section to enable the GNU/Linux host to communicate with Windows using `QEMU Guest Agent`.
|
||||
12. Add the following XML snippet within the `<devices>` section to enable the GNU/Linux host to communicate with Windows using `QEMU Guest Agent`.
|
||||
|
||||
```xml
|
||||
<channel type='unix'>
|
||||
@@ -301,31 +198,31 @@ Together, these components form a powerful and flexible virtualization stack, wi
|
||||
</channel>
|
||||
```
|
||||
|
||||
14. In the 'Memory' section, set the `Current allocation` to the minimum amount of memory you want the virtual machine to use, with a recommended value of `1024MB`.
|
||||
13. In the 'Memory' section, set the `Current allocation` to the minimum amount of memory you want the virtual machine to use, with a recommended value of `1024MB`.
|
||||
|
||||
<p align="center">
|
||||
<img src="./libvirt_images/10.png" width="500px"/>
|
||||
</p>
|
||||
|
||||
15. (Optional) Under `Boot Options`, enable `Start virtual machine on host boot up`.
|
||||
14. (Optional) Under `Boot Options`, enable `Start virtual machine on host boot up`.
|
||||
|
||||
<p align="center">
|
||||
<img src="./libvirt_images/11.png" width="500px"/>
|
||||
</p>
|
||||
|
||||
16. Navigate to 'SATA Disk 1' and set the `Disk bus` type to `VirtIO`. This allows disk access to be paravirtualised, improving virtual machine performance.
|
||||
15. Navigate to 'SATA Disk 1' and set the `Disk bus` type to `VirtIO`. This allows disk access to be paravirtualised, improving virtual machine performance.
|
||||
|
||||
<p align="center">
|
||||
<img src="./libvirt_images/12.png" width="500px"/>
|
||||
</p>
|
||||
|
||||
17. Navigate to 'NIC' and set the `Device model` type to `virtio` to enable paravirtualised networking.
|
||||
16. Navigate to 'NIC' and set the `Device model` type to `virtio` to enable paravirtualised networking.
|
||||
|
||||
<p align="center">
|
||||
<img src="./libvirt_images/13.png" width="500px"/>
|
||||
</p>
|
||||
|
||||
18. Click the `Add Hardware` button in the lower left, and choose `Storage`. For `Device type`, select `CDROM device` and choose the VirtIO driver `.ISO` you downloaded earlier. Click `Finish` to add the new CD-ROM device.
|
||||
17. Click the `Add Hardware` button in the lower left, and choose `Storage`. For `Device type`, select `CDROM device` and choose the VirtIO driver `.ISO` you downloaded earlier. Click `Finish` to add the new CD-ROM device.
|
||||
|
||||
> [!IMPORTANT]
|
||||
> If you skip this step, the Windows installer will fail to recognise and list the virtual hard drive you created earlier.
|
||||
@@ -334,14 +231,121 @@ Together, these components form a powerful and flexible virtualization stack, wi
|
||||
<img src="./libvirt_images/14.png" width="500px"/>
|
||||
</p>
|
||||
|
||||
19. Click `Begin Installation` in the top left.
|
||||
<details>
|
||||
<summary><strong>(Optional) Assign Specific Physical CPU Cores</strong></summary>
|
||||
|
||||
<p align="center">
|
||||
<img src="./libvirt_images/15.png" width="700px"/>
|
||||
</p>
|
||||
Assigning specific physical CPU cores to the virtual machine can improve performance by reducing context switching and ensuring that the virtual machine's workload consistently uses the same cores, leading to better CPU cache utilisation. This is an optional step.
|
||||
|
||||
1. Run `lscpu -e` to determine which L1, L2 and L3 caches are associated with which CPU cores.
|
||||
|
||||
Example 1 (Intel 11th Gen Core i7-1185G7):
|
||||
```
|
||||
CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE MAXMHZ MINMHZ
|
||||
0 0 0 0 0:0:0:0 yes 4800.0000 400.0000
|
||||
1 0 0 1 1:1:1:0 yes 4800.0000 400.0000
|
||||
2 0 0 2 2:2:2:0 yes 4800.0000 400.0000
|
||||
3 0 0 3 3:3:3:0 yes 4800.0000 400.0000
|
||||
4 0 0 0 0:0:0:0 yes 4800.0000 400.0000
|
||||
5 0 0 1 1:1:1:0 yes 4800.0000 400.0000
|
||||
6 0 0 2 2:2:2:0 yes 4800.0000 400.0000
|
||||
7 0 0 3 3:3:3:0 yes 4800.0000 400.0000
|
||||
```
|
||||
|
||||
- C<sub>0</sub> = T<sub>0</sub>+T<sub>4</sub> → L1<sub>0</sub>+L2<sub>0</sub>+L3<sub>0</sub>
|
||||
- C<sub>1</sub> = T<sub>1</sub>+T<sub>5</sub> → L1<sub>1</sub>+L2<sub>1</sub>+L3<sub>0</sub>
|
||||
- C<sub>2</sub> = T<sub>2</sub>+T<sub>6</sub> → L1<sub>2</sub>+L2<sub>2</sub>+L3<sub>0</sub>
|
||||
- C<sub>3</sub> = T<sub>3</sub>+T<sub>7</sub> → L1<sub>3</sub>+L2<sub>3</sub>+L3<sub>0</sub>
|
||||
|
||||
Example 2 (AMD Ryzen 5 1600):
|
||||
```
|
||||
CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE MAXMHZ MINMHZ
|
||||
0 0 0 0 0:0:0:0 yes 3800.0000 1550.0000
|
||||
1 0 0 0 0:0:0:0 yes 3800.0000 1550.0000
|
||||
2 0 0 1 1:1:1:0 yes 3800.0000 1550.0000
|
||||
3 0 0 1 1:1:1:0 yes 3800.0000 1550.0000
|
||||
4 0 0 2 2:2:2:0 yes 3800.0000 1550.0000
|
||||
5 0 0 2 2:2:2:0 yes 3800.0000 1550.0000
|
||||
6 0 0 3 3:3:3:1 yes 3800.0000 1550.0000
|
||||
7 0 0 3 3:3:3:1 yes 3800.0000 1550.0000
|
||||
8 0 0 4 4:4:4:1 yes 3800.0000 1550.0000
|
||||
9 0 0 4 4:4:4:1 yes 3800.0000 1550.0000
|
||||
10 0 0 5 5:5:5:1 yes 3800.0000 1550.0000
|
||||
11 0 0 5 5:5:5:1 yes 3800.0000 1550.0000
|
||||
```
|
||||
|
||||
- C<sub>0</sub> = T<sub>0</sub>+T<sub>1</sub> → L1<sub>0</sub>+L2<sub>0</sub>+L3<sub>0</sub>
|
||||
- C<sub>1</sub> = T<sub>2</sub>+T<sub>3</sub> → L1<sub>1</sub>+L2<sub>1</sub>+L3<sub>0</sub>
|
||||
- C<sub>2</sub> = T<sub>4</sub>+T<sub>5</sub> → L1<sub>2</sub>+L2<sub>2</sub>+L3<sub>0</sub>
|
||||
- C<sub>3</sub> = T<sub>6</sub>+T<sub>7</sub> → L1<sub>3</sub>+L2<sub>3</sub>+L3<sub>1</sub>
|
||||
- C<sub>4</sub> = T<sub>8</sub>+T<sub>9</sub> → L1<sub>4</sub>+L2<sub>4</sub>+L3<sub>1</sub>
|
||||
- C<sub>5</sub> = T<sub>10</sub>+T<sub>11</sub> → L1<sub>5</sub>+L2<sub>5</sub>+L3<sub>1</sub>
|
||||
|
||||
2. Select which CPU cores to 'pin'. You should aim to select a combination of CPU cores that minimises sharing of caches between Windows and GNU/Linux.
|
||||
|
||||
Example 1:
|
||||
- CPU cores share the same singular L3 cache, so this cannot be optimised.
|
||||
- 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:
|
||||
- T<sub>0</sub>+T<sub>4</sub>
|
||||
- T<sub>1</sub>+T<sub>5</sub>
|
||||
- T<sub>2</sub>+T<sub>6</sub>
|
||||
- T<sub>3</sub>+T<sub>7</sub>
|
||||
- T<sub>0</sub>+T<sub>4</sub>+T<sub>1</sub>+T<sub>5</sub>
|
||||
- T<sub>0</sub>+T<sub>4</sub>+T<sub>2</sub>+T<sub>6</sub>
|
||||
- T<sub>0</sub>+T<sub>4</sub>+T<sub>3</sub>+T<sub>7</sub>
|
||||
- T<sub>1</sub>+T<sub>5</sub>+T<sub>2</sub>+T<sub>6</sub>
|
||||
- T<sub>1</sub>+T<sub>5</sub>+T<sub>3</sub>+T<sub>7</sub>
|
||||
- T<sub>2</sub>+T<sub>6</sub>+T<sub>3</sub>+T<sub>7</sub>
|
||||
|
||||
Example 2:
|
||||
- Threads 0-5 utilise one L3 cache whereas threads 6-11 utilise a different L3 cache. Thus, one of these two sets of threads should be pinned to the virtual machine.
|
||||
- Pinning and isolating fewer than these (e.g. threads 8-11) would result in the host system making use of the L3 cache in threads 6 and 7, resulting in cache evictions and therefore bad performance.
|
||||
- Thus, there are only two possible optimal configurations:
|
||||
- T<sub>0</sub>+T<sub>1</sub>+T<sub>2</sub>+T<sub>3</sub>+T<sub>4</sub>+T<sub>5</sub>
|
||||
- T<sub>6</sub>+T<sub>7</sub>+T<sub>8</sub>+T<sub>9</sub>+T<sub>10</sub>+T<sub>11</sub>
|
||||
|
||||
3. Prepare and add/modify the following to the `<vcpu>`, `<cputune>` and `<cpu>` sections, adjusting the values to match your selected threads.
|
||||
|
||||
Example 1: The following selects 'T<sub>2</sub>+T<sub>6</sub>+T<sub>3</sub>+T<sub>7</sub>'.
|
||||
|
||||
```xml
|
||||
<vcpu placement="static">4</vcpu>
|
||||
<cputune>
|
||||
<vcpupin vcpu="0" cpuset="2"/>
|
||||
<vcpupin vcpu="1" cpuset="6"/>
|
||||
<vcpupin vcpu="2" cpuset="3"/>
|
||||
<vcpupin vcpu="3" cpuset="7"/>
|
||||
</cputune>
|
||||
<cpu mode="host-passthrough" check="none" migratable="on">
|
||||
<topology sockets="1" dies="1" clusters="1" cores="2" threads="2"/>
|
||||
</cpu>
|
||||
```
|
||||
|
||||
Example 2: The following selects 'T<sub>6</sub>+T<sub>7</sub>+T<sub>8</sub>+T<sub>9</sub>+T<sub>10</sub>+T<sub>11</sub>'.
|
||||
|
||||
```xml
|
||||
<vcpu placement="static">6</vcpu>
|
||||
<cputune>
|
||||
<vcpupin vcpu="0" cpuset="6"/>
|
||||
<vcpupin vcpu="1" cpuset="7"/>
|
||||
<vcpupin vcpu="2" cpuset="8"/>
|
||||
<vcpupin vcpu="3" cpuset="9"/>
|
||||
<vcpupin vcpu="4" cpuset="10"/>
|
||||
<vcpupin vcpu="5" cpuset="11"/>
|
||||
</cputune>
|
||||
<cpu mode="host-passthrough" check="none" migratable="on">
|
||||
<topology sockets="1" dies="1" clusters="1" cores="3" threads="2"/>
|
||||
</cpu>
|
||||
```
|
||||
|
||||
> [!NOTE]
|
||||
> More information on configuring CPU pinning can be found in [this excellent guide](https://wiki.archlinux.org/title/PCI_passthrough_via_OVMF#CPU_pinning).
|
||||
|
||||
</details>
|
||||
|
||||
### Example `.XML` File
|
||||
Below is an example `.XML` file that describes a Windows 11 virtual machine.
|
||||
<details>
|
||||
<summary><strong>Example .XML File</strong></summary>
|
||||
|
||||
```xml
|
||||
<domain type="kvm">
|
||||
@@ -564,14 +568,21 @@ Below is an example `.XML` file that describes a Windows 11 virtual machine.
|
||||
</domain>
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
## Install Windows
|
||||
Install Windows as you would on any other machine.
|
||||
Click `Begin Installation` in the top left.
|
||||
|
||||
<p align="center">
|
||||
<img src="./libvirt_images/15.png" width="700px"/>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<img src="./libvirt_images/16.png" width="700px"/>
|
||||
</p>
|
||||
|
||||
Once you get to the point of selecting the location for installation, you will see there are no disks available. This is because the `VirtIO driver` needs to be specified manually.
|
||||
|
||||
1. Select `Load driver`.
|
||||
|
||||
<p align="center">
|
||||
@@ -616,19 +627,17 @@ Following the above, choose to "Continue with limited setup".
|
||||
</p>
|
||||
|
||||
## Final Configuration Steps
|
||||
Open `File Explorer` and navigate to the drive where the `VirtIO` driver `.ISO` is mounted. Run `virtio-win-gt-x64.exe` to launch the `VirtIO` driver installer.
|
||||
Open `File Explorer` and navigate to the drive where the "virtio-win" `.iso` is mounted. Run `virtio-win-guest-tools.exe` to install all necessary drivers as well as `QEMU Guest Agent`. Leave everything as default and click `Next` through the installer.
|
||||
|
||||
<p align="center">
|
||||
<img src="./libvirt_images/24.png" width="700px"/>
|
||||
</p>
|
||||
|
||||
Leave everything as default and click `Next` through the installer. This will install all required device drivers as well as the 'Memory Ballooning' service.
|
||||
|
||||
<p align="center">
|
||||
<img src="./libvirt_images/25.png" width="700px"/>
|
||||
</p>
|
||||
|
||||
Next, install the `QEMU Guest Agent` within Windows. This agent allows the GNU/Linux host to request a graceful shutdown of the Windows system. To do this, either run `virtio-win-guest-tools.exe` or `guest-agent\qemu-ga-x86_64.msi`. You can confirm the guest agent was successfully installed by running `Get-Service QEMU-GA` within a PowerShell window. The output should resemble:
|
||||
Confirm `QEMU Guest Agent` was successfully installed by running `Get-Service QEMU-GA` within a PowerShell window. The output should resemble:
|
||||
|
||||
```
|
||||
Status Name DisplayName
|
||||
@@ -636,51 +645,42 @@ Status Name DisplayName
|
||||
Running QEMU-GA QEMU Guest Agent
|
||||
```
|
||||
|
||||
You can then test whether the host GNU/Linux system can communicate with Windows via `QEMU Guest Agent` by running `virsh qemu-agent-command RDPWindows '{"execute":"guest-info"}'`. The output should resemble:
|
||||
You can then test whether the host GNU/Linux system can communicate with Windows via `QEMU Guest Agent` by running `virsh qemu-agent-command RDPWindows '{"execute":"guest-get-osinfo"}' --pretty`. The output should resemble:
|
||||
|
||||
```
|
||||
{"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}]}}
|
||||
```json
|
||||
{
|
||||
"return": {
|
||||
"name": "Microsoft Windows",
|
||||
"kernel-release": "26100",
|
||||
"version": "Microsoft Windows 11",
|
||||
"variant": "client",
|
||||
"pretty-name": "Windows 10 Pro",
|
||||
"version-id": "11",
|
||||
"variant-id": "client",
|
||||
"kernel-version": "10.0",
|
||||
"machine": "x86_64",
|
||||
"id": "mswindows"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
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 'Container.reg'** - this file is only required for users using docker or podman.
|
||||
|
||||
<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"/>
|
||||
</p>
|
||||
|
||||
Rename the Windows virtual machine so that WinApps can locate it by navigating to the start menu and typing `About` to bring up the `About your PC` settings.
|
||||
Once this is complete, restart the Windows virtual machine.
|
||||
|
||||
<p align="center">
|
||||
<img src="./libvirt_images/28.png" width="700px"/>
|
||||
</p>
|
||||
<details>
|
||||
<summary><strong>(Optional) Configuring a Fallback Shared Folder</strong></summary>
|
||||
|
||||
Scroll down and click on `Rename this PC`.
|
||||
|
||||
<p align="center">
|
||||
<img src="./libvirt_images/29.png" width="700px"/>
|
||||
</p>
|
||||
|
||||
Rename the PC to `RDPWindows`, but **DO NOT** restart the virtual machine.
|
||||
|
||||
<p align="center">
|
||||
<img src="./libvirt_images/30.png" width="700px"/>
|
||||
</p>
|
||||
|
||||
Scroll down to `Remote Desktop`, and enable `Enable Remote Desktop`.
|
||||
|
||||
<p align="center">
|
||||
<img src="./libvirt_images/31.png" width="700px"/>
|
||||
</p>
|
||||
|
||||
At this point, you will need to restart the Windows virtual machine.
|
||||
|
||||
## (Optional) Configuring a Fallback Shared Folder
|
||||
When connecting to Windows through FreeRDP, your home folder will be shared automatically. However, this sharing setup does not apply when using Windows via virt-manager. To configure a fallback shared folder, follow these steps:
|
||||
|
||||
1. Navigate to "Virtual Hardware Details", then "Memory" and then check the box for "Enable shared memory".
|
||||
@@ -697,7 +697,11 @@ When connecting to Windows through FreeRDP, your home folder will be shared auto
|
||||
|
||||
5. Reboot Windows.
|
||||
|
||||
## (Optional) Configuring a Static IP Address
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><strong>(Optional) Configuring a Static IP Address</strong></summary>
|
||||
|
||||
1. Identify the Windows MAC address.
|
||||
```bash
|
||||
virsh dumpxml "RDPWindows" | grep "mac address"
|
||||
@@ -732,12 +736,18 @@ When connecting to Windows through FreeRDP, your home folder will be shared auto
|
||||
|
||||
5. Reboot Windows.
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><strong>(Optional) Installing Spice Guest Tools</strong></summary>
|
||||
|
||||
You may also wish to install [Spice Guest Tools](https://www.spice-space.org/download/windows/spice-guest-tools/spice-guest-tools-latest.exe) inside the virtual machine, which enables features like auto-desktop resize and cut-and-paste when accessing the virtual machine through `virt-manager`. Since WinApps uses RDP, however, this is unnecessary if you don't plan to access the virtual machine via `virt-manager`.
|
||||
|
||||
</details>
|
||||
|
||||
## Installing Windows Software and Configuring WinApps
|
||||
You may now proceed to install other applications like 'Microsoft 365', 'Adobe Creative Cloud' or any other applications you would like to use through WinApps.
|
||||
|
||||
> [!NOTE]
|
||||
> You may also wish to install [Spice Guest Tools](https://www.spice-space.org/download/windows/spice-guest-tools/spice-guest-tools-latest.exe) inside the virtual machine, which enables features like auto-desktop resize and cut-and-paste when accessing the virtual machine through `virt-manager`. Since WinApps uses RDP, however, this is unnecessary if you don't plan to access the virtual machine via `virt-manager`.
|
||||
|
||||
> [!IMPORTANT]
|
||||
> Ensure `WAFLAVOR` is set to `"libvirt"` in your `~/.config/winapps/winapps.conf` to prevent WinApps looking for a `Docker` installation instead.
|
||||
|
||||
|
Before Width: | Height: | Size: 199 KiB After Width: | Height: | Size: 236 KiB |
Before Width: | Height: | Size: 225 KiB After Width: | Height: | Size: 61 KiB |
Before Width: | Height: | Size: 168 KiB After Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 178 KiB |
Before Width: | Height: | Size: 171 KiB |
Before Width: | Height: | Size: 157 KiB |
Before Width: | Height: | Size: 160 KiB |
@@ -6,7 +6,7 @@
|
||||
height="394.31107"
|
||||
id="svg171"
|
||||
sodipodi:docname="Virtualisation_Stack.svg"
|
||||
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
|
||||
inkscape:version="1.4 (e7c3feb1, 2024-10-09)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
@@ -27,14 +27,14 @@
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
showgrid="false"
|
||||
inkscape:zoom="1.4142136"
|
||||
inkscape:cx="157.68481"
|
||||
inkscape:cy="190.56528"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1003"
|
||||
inkscape:cx="158.03836"
|
||||
inkscape:cy="190.56527"
|
||||
inkscape:window-width="1680"
|
||||
inkscape:window-height="1050"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="Hardware" />
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:current-layer="svg171" />
|
||||
<title
|
||||
id="title1">Open-source-virtualization-stack</title>
|
||||
<style
|
||||
@@ -207,13 +207,15 @@
|
||||
fill-rule="evenodd"
|
||||
class="s8"
|
||||
d="m 266.57968,306.38322 c -0.6,-0.7 -1.6,-0.7 -2.2,0 l -6.2,6.2 c -0.6,0.6 -0.6,1.6 0,2.2 0.6,0.6 1.6,0.6 2.2,0 l 3.5,-3.6 v 18 c 0,0.9 0.7,1.5 1.6,1.5 0.8,0 1.5,-0.6 1.5,-1.5 v -18 l 3.6,3.6 c 0.6,0.6 1.6,0.6 2.2,0 0.6,-0.6 0.6,-1.6 0,-2.2 0,0 -6.2,-6.2 -6.2,-6.2 z"
|
||||
inkscape:label="Arrow_Up" />
|
||||
inkscape:label="Arrow_Up"
|
||||
style="fill:#999999" />
|
||||
<path
|
||||
id="Arrow_6"
|
||||
fill-rule="evenodd"
|
||||
class="s8"
|
||||
d="m 244.37968,330.28322 c 0.6,0.6 1.6,0.6 2.2,0 l 6.2,-6.2 c 0.6,-0.6 0.6,-1.6 0,-2.2 -0.6,-0.6 -1.6,-0.6 -2.2,0 l -3.6,3.5 v -17.9 c 0,-0.9 -0.7,-1.6 -1.5,-1.6 -0.9,0 -1.6,0.7 -1.6,1.6 v 17.9 l -3.5,-3.5 c -0.6,-0.6 -1.6,-0.6 -2.2,0 -0.6,0.6 -0.6,1.6 0,2.2 z"
|
||||
inkscape:label="Arrow_Down" />
|
||||
inkscape:label="Arrow_Down"
|
||||
style="fill:#999999" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
@@ -274,13 +276,15 @@
|
||||
fill-rule="evenodd"
|
||||
class="s8"
|
||||
d="m 370.37233,213.93929 c -0.6,-0.7 -1.6,-0.7 -2.2,0 l -6.2,6.2 c -0.6,0.6 -0.6,1.6 0,2.2 0.6,0.6 1.6,0.6 2.2,0 l 3.5,-3.6 v 18 c 0,0.9 0.7,1.5 1.6,1.5 0.8,0 1.5,-0.6 1.5,-1.5 v -18 l 3.6,3.6 c 0.6,0.6 1.6,0.6 2.2,0 0.6,-0.6 0.6,-1.6 0,-2.2 0,0 -6.2,-6.2 -6.2,-6.2 z"
|
||||
inkscape:label="Up_Arrow" />
|
||||
inkscape:label="Up_Arrow"
|
||||
style="fill:#999999" />
|
||||
<path
|
||||
id="Arrow_4"
|
||||
fill-rule="evenodd"
|
||||
class="s8"
|
||||
d="m 348.17233,237.83929 c 0.6,0.6 1.6,0.6 2.2,0 l 6.2,-6.2 c 0.6,-0.6 0.6,-1.6 0,-2.2 -0.6,-0.6 -1.6,-0.6 -2.2,0 l -3.6,3.5 v -17.9 c 0,-0.9 -0.7,-1.6 -1.5,-1.6 -0.9,0 -1.6,0.7 -1.6,1.6 v 17.9 l -3.5,-3.5 c -0.6,-0.6 -1.6,-0.6 -2.2,0 -0.6,0.6 -0.6,1.6 0,2.2 0,0 6.2,6.2 6.2,6.2 z"
|
||||
inkscape:label="Down_Arrow" />
|
||||
inkscape:label="Down_Arrow"
|
||||
style="fill:#999999" />
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
@@ -492,28 +496,32 @@
|
||||
class="s8"
|
||||
d="m 185.26144,170.08528 c 0.7,-0.6 0.7,-1.6 0,-2.2 l -6.2,-6.2 c -0.6,-0.6 -1.6,-0.6 -2.2,0 -0.6,0.6 -0.6,1.6 0,2.2 l 3.6,3.6 h -18 c -0.9,0 -1.5,0.7 -1.5,1.5 0,0.9 0.6,1.6 1.5,1.6 h 18 l -3.6,3.5 c -0.6,0.6 -0.6,1.6 0,2.2 0.6,0.6 1.6,0.6 2.2,0 z"
|
||||
inkscape:label="Right_Arrow"
|
||||
transform="translate(-0.005896,-0.00237805)" />
|
||||
transform="translate(-0.005896,-0.00237805)"
|
||||
style="fill:#999999" />
|
||||
<path
|
||||
id="Arrow_3"
|
||||
fill-rule="evenodd"
|
||||
class="s8"
|
||||
d="m 161.36144,147.88528 c -0.6,0.6 -0.6,1.6 0,2.2 l 6.2,6.2 c 0.6,0.6 1.6,0.6 2.2,0 0.6,-0.6 0.6,-1.6 0,-2.2 l -3.5,-3.5 h 17.9 c 0.9,0 1.6,-0.7 1.6,-1.6 0,-0.8 -0.7,-1.5 -1.6,-1.5 h -17.9 l 3.5,-3.6 c 0.6,-0.6 0.6,-1.6 0,-2.2 -0.6,-0.6 -1.6,-0.6 -2.2,0 z"
|
||||
inkscape:label="Left_Arrow"
|
||||
transform="translate(-0.005896,-0.00237805)" />
|
||||
transform="translate(-0.005896,-0.00237805)"
|
||||
style="fill:#999999" />
|
||||
<path
|
||||
id="Arrow_0"
|
||||
fill-rule="evenodd"
|
||||
class="s8"
|
||||
d="m 93.754521,93.097776 c -0.6,-0.7 -1.6,-0.7 -2.2,0 l -6.2,6.2 c -0.6,0.6 -0.6,1.600004 0,2.200004 0.6,0.6 1.6,0.6 2.2,0 l 3.5,-3.600004 v 18.000004 c 0,0.9 0.7,1.5 1.6,1.5 0.8,0 1.5,-0.6 1.5,-1.5 V 97.897776 l 3.6,3.600004 c 0.6,0.6 1.6,0.6 2.2,0 0.599999,-0.6 0.599999,-1.600004 0,-2.200004 0,0 -6.2,-6.2 -6.2,-6.2 z"
|
||||
inkscape:label="Up_Arrow"
|
||||
transform="translate(-0.005896,-0.00237805)" />
|
||||
transform="translate(-0.005896,-0.00237805)"
|
||||
style="fill:#999999" />
|
||||
<path
|
||||
id="Arrow_1"
|
||||
fill-rule="evenodd"
|
||||
class="s8"
|
||||
d="m 71.554521,116.96028 c 0.6,0.6 1.6,0.6 2.2,0 l 6.2,-6.2 c 0.6,-0.6 0.6,-1.6 0,-2.2 -0.6,-0.6 -1.6,-0.6 -2.2,0 l -3.6,3.5 V 94.160276 c 0,-0.9 -0.7,-1.6 -1.5,-1.6 -0.9,0 -1.6,0.7 -1.6,1.6 v 17.900004 l -3.5,-3.5 c -0.6,-0.6 -1.6,-0.6 -2.2,0 -0.6,0.6 -0.6,1.6 0,2.2 z"
|
||||
inkscape:label="Down_Arrow"
|
||||
transform="translate(-0.005896,-0.00237805)" />
|
||||
transform="translate(-0.005896,-0.00237805)"
|
||||
style="fill:#999999" />
|
||||
</g>
|
||||
<g
|
||||
id="g149"
|
||||
@@ -543,7 +551,7 @@
|
||||
id="GNU/Linux_Applications_Text"
|
||||
x="-193.88689"
|
||||
y="-3.0945449"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:16px;font-family:Unageo;-inkscape-font-specification:'Unageo, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#ffffff;fill-opacity:1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:16px;font-family:Unageo;-inkscape-font-specification:'Unageo, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#808080;fill-opacity:1"
|
||||
transform="rotate(-90)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan188"
|
||||
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 184 KiB After Width: | Height: | Size: 184 KiB |
Before Width: | Height: | Size: 5.4 MiB After Width: | Height: | Size: 5.4 MiB |
BIN
docs/readme/launcher.gif
Normal file
After Width: | Height: | Size: 9.6 MiB |
Before Width: | Height: | Size: 872 B After Width: | Height: | Size: 872 B |
92
flake.lock
generated
Normal file
@@ -0,0 +1,92 @@
|
||||
{
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"nix-filter": {
|
||||
"locked": {
|
||||
"lastModified": 1731533336,
|
||||
"narHash": "sha256-oRam5PS1vcrr5UPgALW0eo1m/5/pls27Z/pabHNy2Ms=",
|
||||
"owner": "numtide",
|
||||
"repo": "nix-filter",
|
||||
"rev": "f7653272fd234696ae94229839a99b73c9ab7de0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "nix-filter",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1751984180,
|
||||
"narHash": "sha256-LwWRsENAZJKUdD3SpLluwDmdXY9F45ZEgCb0X+xgOL0=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "9807714d6944a957c2e036f84b0ff8caf9930bc0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat",
|
||||
"flake-utils": "flake-utils",
|
||||
"nix-filter": "nix-filter",
|
||||
"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
|
||||
}
|
43
flake.nix
Normal file
@@ -0,0 +1,43 @@
|
||||
{
|
||||
description = "WinApps Nix packages";
|
||||
|
||||
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";
|
||||
nix-filter.url = "github:numtide/nix-filter";
|
||||
};
|
||||
|
||||
nixConfig = {
|
||||
extra-substituters = [
|
||||
"https://cache.garnix.io"
|
||||
];
|
||||
|
||||
extra-trusted-public-keys = [
|
||||
"cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g="
|
||||
];
|
||||
};
|
||||
|
||||
outputs =
|
||||
{
|
||||
nixpkgs,
|
||||
flake-utils,
|
||||
nix-filter,
|
||||
...
|
||||
}:
|
||||
flake-utils.lib.eachDefaultSystem (
|
||||
system:
|
||||
let
|
||||
pkgs = import nixpkgs { inherit system; };
|
||||
in
|
||||
rec {
|
||||
formatter = pkgs.nixfmt-rfc-style;
|
||||
|
||||
packages.winapps = pkgs.callPackage ./packages/winapps { inherit nix-filter; };
|
||||
packages.winapps-launcher = pkgs.callPackage ./packages/winapps-launcher {
|
||||
inherit (packages) winapps;
|
||||
};
|
||||
}
|
||||
);
|
||||
}
|
@@ -1,93 +0,0 @@
|
||||
Copyright 2023 The Unageo Project Authors (https://github.com/RichardSepsi/Unageo)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://scripts.sil.org/OFL
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
@@ -1,16 +0,0 @@
|
||||
## Unageo typeface
|
||||
|
||||
Unageo is a simple, geometric typeface with variable weight and italic angle support, that was made with digital use in mind, however it works in print just as well .
|
||||
|
||||
It's designed to use perfect geometric shapes where possible while still maintaining great readability and it uses almost uniform stroke width all across each glyph on all weights.
|
||||
|
||||
Other than latin, Unageo also supports cyrillic and greek scripts.
|
||||
Unageo cyrillic was made in bulgarian style, that uses more rounded shapes and differentiated letter heights which makes it easier to tell letters apart and further improves readability.
|
||||
Greek uses the same rounded shapes and adds smooth lines to give it a more unique style.
|
||||
|
||||
### How was it made?
|
||||
Unageo is my first attempt at making a font, and since I had almost no prior experience with font creation and limited software avalability, I worked on Unageo with an unusual workflow. I designed the characters in inkscape and imported the outlines into fontforge. Since I'm familiar with inkscape, designing the glyphs wasn't too hard and inkscape has great tools for working with perfect geometry. It wasn't as great with fontforge, but I got accustomed to it quite fine and I was able to finish my font. After it was done, I used fontmake to generate my variable fonts and then fonttools mutator to generate the static fonts. Static fonts can also be exported directly from fontforge as the sources are interpolable.
|
||||
|
||||
##
|
||||
|
||||

|