Compare commits
305 Commits
feat-insta
...
2b806de133
Author | SHA1 | Date | |
---|---|---|---|
2b806de133 | |||
113abb3322 | |||
aa5b3e9455 | |||
109b2b1d9c | |||
f075eab78d | |||
9e6b659f48 | |||
7d8f1e440d | |||
4d3821d9aa | |||
cd5b823ff7 | |||
c604f49422 | |||
c4d48e2087 | |||
3298376f92 | |||
e8105f9ea6 | |||
dd9a85aae1 | |||
c9fb729a50 | |||
dcd662dc06 | |||
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 | |||
45bb5e24f2 | |||
cccdf03863 | |||
41a1450bd0 | |||
ad8b1cfc8e | |||
d49b60cbc5 | |||
0775e16562 | |||
7f3cdcee4d | |||
60b3e809fb | |||
2d06aa2e89 | |||
b044cb41c7 | |||
07817afe0c | |||
f540241f07 | |||
28e958e600 | |||
7d5cce374c | |||
451e7e65a3 | |||
9223ffc8ed | |||
e6d04bf8e0 | |||
3d674066c7 | |||
b0f2830224 | |||
7bae17e3a3 | |||
f4c0a454b7 | |||
b7b5b34b27 | |||
1613faba04 | |||
58c66679ab | |||
99eeac4239 | |||
3cb2e189c2 | |||
350f003d81 | |||
26a2f13815 | |||
00141f1d54 | |||
da35923df9 | |||
570badd78b | |||
2dd0980cc9 | |||
d2601efeab | |||
c0db3e4d3b | |||
a7c8d4acfe | |||
34e76f749b | |||
eaef31089c | |||
1d3e521144 | |||
6aaf7cf844 | |||
0efbd5818c | |||
20e0983a29 | |||
f01427a236 | |||
df688076b5 | |||
df56347660 | |||
3a0acff38f | |||
e224e233cc | |||
f2afc99339 | |||
1c35e76f25 | |||
08cd44f17b | |||
a5ae665582 | |||
916c1e6bd8 | |||
02b0f2856c | |||
8841b93f45 | |||
8387d287a9 |
40
.github/workflows/update-nix.yaml
vendored
Normal file
@ -0,0 +1,40 @@
|
||||
name: "Update Flake Packages"
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches: [main]
|
||||
types: [labeled]
|
||||
schedule:
|
||||
- cron: "0 10 * * 0" # https://crontab.guru/#0_10_*_*_0
|
||||
|
||||
jobs:
|
||||
build:
|
||||
if: github.event_name != 'pull_request' || contains(github.event.pull_request.labels.*.name, 'rebuild nix')
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install Nix
|
||||
uses: DeterminateSystems/nix-installer-action@main
|
||||
with:
|
||||
trust-runner-user: true
|
||||
|
||||
- name: Set up cache
|
||||
uses: cachix/cachix-action@v15
|
||||
with:
|
||||
name: winapps
|
||||
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
|
||||
|
||||
- name: Update flake packages
|
||||
uses: winapps-org/nix-update-action@v1.4.0
|
||||
with:
|
||||
extra-args: --version=branch
|
||||
skip-pr: "${{ github.event_name == 'pull_request' }}"
|
||||
|
||||
- name: Build packages
|
||||
run: nix build .#winapps .#winapps-launcher
|
37
.github/workflows/update-submodule.yaml
vendored
Normal file
@ -0,0 +1,37 @@
|
||||
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: |
|
||||
pushd WinApps-Launcher
|
||||
branch=$(git rev-parse --abbrev-ref origin/HEAD | sed "s|origin/||")
|
||||
git config remote.origin.fetch "+refs/heads/$branch:refs/remotes/origin/$branch"
|
||||
git fetch --depth=1 origin "refs/heads/$branch"
|
||||
popd
|
||||
|
||||
git submodule update --init --remote WinApps-Launcher
|
||||
|
||||
- name: Commit and push
|
||||
uses: EndBug/add-and-commit@v9
|
||||
with:
|
||||
add: WinApps-Launcher
|
||||
default_author: github_actions
|
||||
message: "Update submodules"
|
||||
push: false
|
||||
|
||||
- name: Create PR
|
||||
uses: peter-evans/create-pull-request@v7
|
||||
with:
|
||||
branch: chore/update_submodules
|
||||
delete-branch: true
|
||||
title: "Update submodules"
|
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
|
@ -1,6 +1,8 @@
|
||||
ci:
|
||||
autoupdate_branch: "rewrite"
|
||||
|
||||
exclude: ^(.+)\.patch$
|
||||
|
||||
repos:
|
||||
- repo: https://github.com/Lucas-C/pre-commit-hooks
|
||||
rev: v1.5.5
|
||||
|
133
CODE_OF_CONDUCT.md
Normal file
@ -0,0 +1,133 @@
|
||||
|
||||
# Contributor Covenant Code of Conduct
|
||||
|
||||
## Our Pledge
|
||||
|
||||
We as members, contributors, and leaders pledge to make participation in our
|
||||
community a harassment-free experience for everyone, regardless of age, body
|
||||
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
||||
identity and expression, level of experience, education, socio-economic status,
|
||||
nationality, personal appearance, race, caste, color, religion, or sexual
|
||||
identity and orientation.
|
||||
|
||||
We pledge to act and interact in ways that contribute to an open, welcoming,
|
||||
diverse, inclusive, and healthy community.
|
||||
|
||||
## Our Standards
|
||||
|
||||
Examples of behavior that contributes to a positive environment for our
|
||||
community include:
|
||||
|
||||
* Demonstrating empathy and kindness toward other people
|
||||
* Being respectful of differing opinions, viewpoints, and experiences
|
||||
* Giving and gracefully accepting constructive feedback
|
||||
* Accepting responsibility and apologizing to those affected by our mistakes,
|
||||
and learning from the experience
|
||||
* Focusing on what is best not just for us as individuals, but for the overall
|
||||
community
|
||||
|
||||
Examples of unacceptable behavior include:
|
||||
|
||||
* The use of sexualized language or imagery, and sexual attention or advances of
|
||||
any kind
|
||||
* Trolling, insulting or derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or email address,
|
||||
without their explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
|
||||
## Enforcement Responsibilities
|
||||
|
||||
Community leaders are responsible for clarifying and enforcing our standards of
|
||||
acceptable behavior and will take appropriate and fair corrective action in
|
||||
response to any behavior that they deem inappropriate, threatening, offensive,
|
||||
or harmful.
|
||||
|
||||
Community leaders have the right and responsibility to remove, edit, or reject
|
||||
comments, commits, code, wiki edits, issues, and other contributions that are
|
||||
not aligned to this Code of Conduct, and will communicate reasons for moderation
|
||||
decisions when appropriate.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies within all community spaces, and also applies when
|
||||
an individual is officially representing the community in public spaces.
|
||||
Examples of representing our community include using an official e-mail address,
|
||||
posting via an official social media account, or acting as an appointed
|
||||
representative at an online or offline event.
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported to the community leaders responsible for enforcement at
|
||||
https://matrix.to/#/#winapps:matrix.org.
|
||||
All complaints will be reviewed and investigated promptly and fairly.
|
||||
|
||||
All community leaders are obligated to respect the privacy and security of the
|
||||
reporter of any incident.
|
||||
|
||||
## Enforcement Guidelines
|
||||
|
||||
Community leaders will follow these Community Impact Guidelines in determining
|
||||
the consequences for any action they deem in violation of this Code of Conduct:
|
||||
|
||||
### 1. Correction
|
||||
|
||||
**Community Impact**: Use of inappropriate language or other behavior deemed
|
||||
unprofessional or unwelcome in the community.
|
||||
|
||||
**Consequence**: A private, written warning from community leaders, providing
|
||||
clarity around the nature of the violation and an explanation of why the
|
||||
behavior was inappropriate. A public apology may be requested.
|
||||
|
||||
### 2. Warning
|
||||
|
||||
**Community Impact**: A violation through a single incident or series of
|
||||
actions.
|
||||
|
||||
**Consequence**: A warning with consequences for continued behavior. No
|
||||
interaction with the people involved, including unsolicited interaction with
|
||||
those enforcing the Code of Conduct, for a specified period of time. This
|
||||
includes avoiding interactions in community spaces as well as external channels
|
||||
like social media. Violating these terms may lead to a temporary or permanent
|
||||
ban.
|
||||
|
||||
### 3. Temporary Ban
|
||||
|
||||
**Community Impact**: A serious violation of community standards, including
|
||||
sustained inappropriate behavior.
|
||||
|
||||
**Consequence**: A temporary ban from any sort of interaction or public
|
||||
communication with the community for a specified period of time. No public or
|
||||
private interaction with the people involved, including unsolicited interaction
|
||||
with those enforcing the Code of Conduct, is allowed during this period.
|
||||
Violating these terms may lead to a permanent ban.
|
||||
|
||||
### 4. Permanent Ban
|
||||
|
||||
**Community Impact**: Demonstrating a pattern of violation of community
|
||||
standards, including sustained inappropriate behavior, harassment of an
|
||||
individual, or aggression toward or disparagement of classes of individuals.
|
||||
|
||||
**Consequence**: A permanent ban from any sort of public interaction within the
|
||||
community.
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
||||
version 2.1, available at
|
||||
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
|
||||
|
||||
Community Impact Guidelines were inspired by
|
||||
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
|
||||
|
||||
For answers to common questions about this code of conduct, see the FAQ at
|
||||
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
|
||||
[https://www.contributor-covenant.org/translations][translations].
|
||||
|
||||
[homepage]: https://www.contributor-covenant.org
|
||||
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
|
||||
[Mozilla CoC]: https://github.com/mozilla/diversity
|
||||
[FAQ]: https://www.contributor-covenant.org/faq
|
||||
[translations]: https://www.contributor-covenant.org/translations
|
8
CONTRIBUTING.md
Normal file
@ -0,0 +1,8 @@
|
||||
# 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-assistant will prompt you and guide you through the process. However, if you contribute on behalf of a legal entity, we ask of you to sign [a different CLA](https://gist.github.com/oskardotglobal/75a8cc056e56a439fa6a1551129ae47f). In that case, please contact us.
|
||||
- Please follow code conventions enforced by `pre-commit`. To keep down CI usage, please run it locally before committing too.
|
||||
See <https://pre-commit.com> for installation, then run `pre-commit install` inside the `winapps` repository you cloned.
|
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.
|
628
LICENSE.md
Normal file
@ -0,0 +1,628 @@
|
||||
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.
|
||||
|
||||
Refer to a specific file for it's respective license.
|
||||
|
||||
# GNU AFFERO GENERAL PUBLIC LICENSE
|
||||
|
||||
Version 3, 19 November 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc.
|
||||
<https://fsf.org/>
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim copies of this
|
||||
license document, but changing it is not allowed.
|
||||
|
||||
## Preamble
|
||||
|
||||
The GNU Affero General Public License is a free, copyleft license for
|
||||
software and other kinds of works, specifically designed to ensure
|
||||
cooperation with the community in the case of network server software.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
our General Public Licenses are intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains
|
||||
free software for all its users.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
Developers that use our General Public Licenses protect your rights
|
||||
with two steps: (1) assert copyright on the software, and (2) offer
|
||||
you this License which gives you legal permission to copy, distribute
|
||||
and/or modify the software.
|
||||
|
||||
A secondary benefit of defending all users' freedom is that
|
||||
improvements made in alternate versions of the program, if they
|
||||
receive widespread use, become available for other developers to
|
||||
incorporate. Many developers of free software are heartened and
|
||||
encouraged by the resulting cooperation. However, in the case of
|
||||
software used on network servers, this result may fail to come about.
|
||||
The GNU General Public License permits making a modified version and
|
||||
letting the public access it on a server without ever releasing its
|
||||
source code to the public.
|
||||
|
||||
The GNU Affero General Public License is designed specifically to
|
||||
ensure that, in such cases, the modified source code becomes available
|
||||
to the community. It requires the operator of a network server to
|
||||
provide the source code of the modified version running there to the
|
||||
users of that server. Therefore, public use of a modified version, on
|
||||
a publicly accessible server, gives the public access to the source
|
||||
code of the modified version.
|
||||
|
||||
An older license, called the Affero General Public License and
|
||||
published by Affero, was designed to accomplish similar goals. This is
|
||||
a different license, not a version of the Affero GPL, but Affero has
|
||||
released a new version of the Affero GPL which permits relicensing
|
||||
under this license.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
## TERMS AND CONDITIONS
|
||||
|
||||
### 0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU Affero General Public
|
||||
License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds
|
||||
of works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of
|
||||
an exact copy. The resulting work is called a "modified version" of
|
||||
the earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user
|
||||
through a computer network, with no transfer of a copy, is not
|
||||
conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices" to
|
||||
the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
### 1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work for
|
||||
making modifications to it. "Object code" means any non-source form of
|
||||
a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users can
|
||||
regenerate automatically from other parts of the Corresponding Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that same
|
||||
work.
|
||||
|
||||
### 2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not convey,
|
||||
without conditions so long as your license otherwise remains in force.
|
||||
You may convey covered works to others for the sole purpose of having
|
||||
them make modifications exclusively for you, or provide you with
|
||||
facilities for running those works, provided that you comply with the
|
||||
terms of this License in conveying all material for which you do not
|
||||
control copyright. Those thus making or running the covered works for
|
||||
you must do so exclusively on your behalf, under your direction and
|
||||
control, on terms that prohibit them from making any copies of your
|
||||
copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under the
|
||||
conditions stated below. Sublicensing is not allowed; section 10 makes
|
||||
it unnecessary.
|
||||
|
||||
### 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such
|
||||
circumvention is effected by exercising rights under this License with
|
||||
respect to the covered work, and you disclaim any intention to limit
|
||||
operation or modification of the work as a means of enforcing, against
|
||||
the work's users, your or third parties' legal rights to forbid
|
||||
circumvention of technological measures.
|
||||
|
||||
### 4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
### 5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these
|
||||
conditions:
|
||||
|
||||
- a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
- b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under
|
||||
section 7. This requirement modifies the requirement in section 4
|
||||
to "keep intact all notices".
|
||||
- c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
- d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
### 6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms of
|
||||
sections 4 and 5, provided that you also convey the machine-readable
|
||||
Corresponding Source under the terms of this License, in one of these
|
||||
ways:
|
||||
|
||||
- a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
- b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the Corresponding
|
||||
Source from a network server at no charge.
|
||||
- c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
- d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
- e) Convey the object code using peer-to-peer transmission,
|
||||
provided you inform other peers where the object code and
|
||||
Corresponding Source of the work are being offered to the general
|
||||
public at no charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal,
|
||||
family, or household purposes, or (2) anything designed or sold for
|
||||
incorporation into a dwelling. In determining whether a product is a
|
||||
consumer product, doubtful cases shall be resolved in favor of
|
||||
coverage. For a particular product received by a particular user,
|
||||
"normally used" refers to a typical or common use of that class of
|
||||
product, regardless of the status of the particular user or of the way
|
||||
in which the particular user actually uses, or expects or is expected
|
||||
to use, the product. A product is a consumer product regardless of
|
||||
whether the product has substantial commercial, industrial or
|
||||
non-consumer uses, unless such uses represent the only significant
|
||||
mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to
|
||||
install and execute modified versions of a covered work in that User
|
||||
Product from a modified version of its Corresponding Source. The
|
||||
information must suffice to ensure that the continued functioning of
|
||||
the modified object code is in no case prevented or interfered with
|
||||
solely because modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or
|
||||
updates for a work that has been modified or installed by the
|
||||
recipient, or for the User Product in which it has been modified or
|
||||
installed. Access to a network may be denied when the modification
|
||||
itself materially and adversely affects the operation of the network
|
||||
or violates the rules and protocols for communication across the
|
||||
network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
### 7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders
|
||||
of that material) supplement the terms of this License with terms:
|
||||
|
||||
- a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
- b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
- c) Prohibiting misrepresentation of the origin of that material,
|
||||
or requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
- d) Limiting the use for publicity purposes of names of licensors
|
||||
or authors of the material; or
|
||||
- e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
- f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions
|
||||
of it) with contractual assumptions of liability to the recipient,
|
||||
for any liability that these contractual assumptions directly
|
||||
impose on those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions; the
|
||||
above requirements apply either way.
|
||||
|
||||
### 8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your license
|
||||
from a particular copyright holder is reinstated (a) provisionally,
|
||||
unless and until the copyright holder explicitly and finally
|
||||
terminates your license, and (b) permanently, if the copyright holder
|
||||
fails to notify you of the violation by some reasonable means prior to
|
||||
60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
### 9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or run
|
||||
a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
### 10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
### 11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims owned
|
||||
or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within the
|
||||
scope of its coverage, prohibits the exercise of, or is conditioned on
|
||||
the non-exercise of one or more of the rights that are specifically
|
||||
granted under this License. You may not convey a covered work if you
|
||||
are a party to an arrangement with a third party that is in the
|
||||
business of distributing software, under which you make payment to the
|
||||
third party based on the extent of your activity of conveying the
|
||||
work, and under which the third party grants, to any of the parties
|
||||
who would receive the covered work from you, a discriminatory patent
|
||||
license (a) in connection with copies of the covered work conveyed by
|
||||
you (or copies made from those copies), or (b) primarily for and in
|
||||
connection with specific products or compilations that contain the
|
||||
covered work, unless you entered into that arrangement, or that patent
|
||||
license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
### 12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under
|
||||
this License and any other pertinent obligations, then as a
|
||||
consequence you may not convey it at all. For example, if you agree to
|
||||
terms that obligate you to collect a royalty for further conveying
|
||||
from those to whom you convey the Program, the only way you could
|
||||
satisfy both those terms and this License would be to refrain entirely
|
||||
from conveying the Program.
|
||||
|
||||
### 13. Remote Network Interaction; Use with the GNU General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, if you modify the
|
||||
Program, your modified version must prominently offer all users
|
||||
interacting with it remotely through a computer network (if your
|
||||
version supports such interaction) an opportunity to receive the
|
||||
Corresponding Source of your version by providing access to the
|
||||
Corresponding Source from a network server at no charge, through some
|
||||
standard or customary means of facilitating copying of software. This
|
||||
Corresponding Source shall include the Corresponding Source for any
|
||||
work covered by version 3 of the GNU General Public License that is
|
||||
incorporated pursuant to the following paragraph.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the work with which it is combined will remain governed by version
|
||||
3 of the GNU General Public License.
|
||||
|
||||
### 14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions
|
||||
of the GNU Affero General Public License from time to time. Such new
|
||||
versions will be similar in spirit to the present version, but may
|
||||
differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies that a certain numbered version of the GNU Affero General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU Affero General Public License, you may choose any version ever
|
||||
published by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future versions
|
||||
of the GNU Affero General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
### 15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT
|
||||
WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
|
||||
PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE
|
||||
DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
|
||||
CORRECTION.
|
||||
|
||||
### 16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR
|
||||
CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
|
||||
ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT
|
||||
NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR
|
||||
LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM
|
||||
TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER
|
||||
PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
### 17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
306
README.md
@ -1,8 +1,8 @@
|
||||
<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="./icons/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`, `GNOME` or `XFCE`, integrated seamlessly as if they were native to the OS.
|
||||
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>
|
||||
|
||||
@ -17,6 +17,7 @@ WinApps works by:
|
||||
- The GNU/Linux `/home` directory is accessible within Windows via the `\\tsclient\home` mount.
|
||||
- Integration with `Nautilus`, allowing you to right-click files to open them with specific Windows applications based on the file MIME type.
|
||||
- The [official taskbar widget](https://github.com/winapps-org/WinApps-Launcher) enables seamless administration of the Windows subsystem and offers an easy way to launch Windows applications.
|
||||
- Microsoft Office links (e.g. ms-word://) from the host system are automatically opened in the Windows subsystem. (Note: You may need to use an [User Agent switcher](https://github.com/ray-lothian/UserAgent-Switcher/) Browser Extension and set the User-Agent to Windows, as as the Office webapps typically hide the "Open in Desktop App" option for Linux users.)
|
||||
|
||||
## Supported Applications
|
||||
**WinApps supports <u>*ALL*</u> Windows applications.**
|
||||
@ -120,7 +121,7 @@ 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>
|
||||
<!-- Command Prompt -->
|
||||
@ -254,6 +255,14 @@ Contributing to the list of supported applications is encouraged through submiss
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<!-- 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>
|
||||
<!-- PowerShell -->
|
||||
<td>
|
||||
<img src="apps/powershell/icon.svg" width="100">
|
||||
@ -262,6 +271,8 @@ Contributing to the list of supported applications is encouraged through submiss
|
||||
<b>PowerShell</b><br>
|
||||
<i><a href="https://iconduck.com/icons/102322/file-type-powershell">Icon</a> under <a href="https://iconduck.com/licenses/mit">MIT license</a>.</i>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<!-- Windows -->
|
||||
<td>
|
||||
<img src="icons/windows.svg" width="100">
|
||||
@ -282,35 +293,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 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 +348,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 +363,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 +392,21 @@ WAFLAVOR="docker"
|
||||
# - '180'
|
||||
RDP_SCALE="100"
|
||||
|
||||
# [ADDITIONAL FREERDP FLAGS & ARGUMENTS]
|
||||
# DEFAULT VALUE: '' (BLANK)
|
||||
# VALID VALUES: See https://github.com/awakecoding/FreeRDP-Manuals/blob/master/User/FreeRDP-User-Manual.markdown
|
||||
RDP_FLAGS=""
|
||||
|
||||
# [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.
|
||||
# REFERRENCE: 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:
|
||||
@ -414,12 +444,37 @@ 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"
|
||||
|
||||
```
|
||||
|
||||
> [!NOTE]
|
||||
> [!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,17 +483,69 @@ 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.
|
||||
- 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.">
|
||||
|
||||
@ -463,6 +570,121 @@ The installer can be run multiple times. To update your installation of WinApps:
|
||||
2. Pull the latest changes from the WinApps GitHub repository.
|
||||
3. Re-install WinApps using the WinApps installer by running `winapps-setup`.
|
||||
|
||||
## Installation using Nix
|
||||
|
||||
First, follow Step 1 of the normal installation guide to create your VM.
|
||||
Then, install WinApps according to the following instructions.
|
||||
|
||||
After installation, it will be available under `winapps`, with the installer being available under `winapps-setup`
|
||||
and the optional launcher being available under `winapps-launcher.`
|
||||
|
||||
### Using standalone Nix
|
||||
|
||||
First, make sure Flakes and the `nix` command are enabled.
|
||||
In your `~/.config/nix/nix.conf`:
|
||||
```
|
||||
experimental-features = nix-command flakes
|
||||
# specify to use binary cache (optional)
|
||||
extra-substituters = https://winapps.cachix.org/
|
||||
extra-trusted-public-keys = winapps.cachix.org-1:HI82jWrXZsQRar/PChgIx1unmuEsiQMQq+zt05CD36g=
|
||||
extra-trusted-users = <your-username> # replace with your username
|
||||
```
|
||||
|
||||
```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,
|
||||
...
|
||||
}:
|
||||
{
|
||||
# set up binary cache (optional)
|
||||
nix.settings = {
|
||||
substituters = [ "https://winapps.cachix.org/" ];
|
||||
trusted-public-keys = [ "winapps.cachix.org-1:HI82jWrXZsQRar/PChgIx1unmuEsiQMQq+zt05CD36g=" ];
|
||||
};
|
||||
|
||||
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,3 +1,8 @@
|
||||
# Copyright (c) 2024 Jon Champagne
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Access"
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
# Copyright (c) 2024 Fmstrat
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Access"
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
# Copyright (c) 2024 Fmstrat
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Acrobat X Pro"
|
||||
|
||||
|
3
apps/acrobat9/icon.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14">
|
||||
<path d="m 12.816862,8.6991205 c -0.355549,-0.380587 -1.083672,-0.599424 -2.115263,-0.599424 -0.550849,0 -1.1893342,0.05508 -1.882904,0.185286 C 8.4270909,7.8993875 8.0364884,7.4486925 7.6634129,6.9228805 7.3980035,6.5523095 7.1661459,6.1617065 6.952316,5.7761125 c 0.407128,-1.271962 0.6039316,-2.308561 0.6039316,-3.054712 0,-0.837292 -0.3019658,-1.710639 -1.1718075,-1.710639 -0.2669118,0 -0.5338235,0.162751 -0.6760429,0.400618 -0.3921048,0.705087 -0.2153321,2.24997 0.4592084,3.775824 -0.2518886,0.761174 -0.5182995,1.488797 -0.8513132,2.306057 -0.2894465,0.689063 -0.6229609,1.399159 -0.9629854,2.051164 -1.9550157,0.7932245 -3.2199669,1.7196525 -3.33865,2.4457735 -0.0520803,0.273922 0.037057,0.525811 0.2288531,0.72612 0.066603,0.05509 0.3184912,0.272921 0.7411432,0.272921 1.2970006,0 2.6641094,-2.143306 3.3586808,-3.4352995 0.5333227,-0.180278 1.0666454,-0.344031 1.5989665,-0.508284 0.5849022,-0.16175 1.1718075,-0.29195 1.7051302,-0.383091 1.3696122,1.253934 2.5769742,1.4522405 3.1839112,1.4522405 0.747152,0 1.013563,-0.3089765 1.103201,-0.5618675 0.140217,-0.325502 0.03505,-0.686058 -0.126194,-0.871344 l 0.01001,0.02003 z m -0.69357,0.527815 c -0.05208,0.27242 -0.319493,0.453699 -0.694071,0.453699 -0.105162,0 -0.195301,-0.01853 -0.301965,-0.03606 -0.681051,-0.162751 -1.3185339,-0.508785 -1.9545149,-1.054627 0.6259656,-0.107165 1.1567849,-0.125193 1.4923019,-0.125193 0.370571,0 0.691066,0.01602 0.906398,0.07211 0.245378,0.05308 0.635981,0.217836 0.548346,0.691066 l 0.01002,0 z M 8.3559812,8.3721165 c -0.4607106,0.09515 -0.9584785,0.20732 -1.4742741,0.347035 -0.4086303,0.111673 -0.8342869,0.237366 -1.2619466,0.385595 0.2318577,-0.451697 0.4276597,-0.88837 0.6049331,-1.303511 0.2143307,-0.510788 0.3906026,-1.036599 0.5683768,-1.525353 0.1752703,0.305472 0.3705716,0.615951 0.5658729,0.891375 0.3204943,0.435672 0.6560119,0.851314 0.9915294,1.21187 l 0,-0.01002 z M 6.0273893,1.6191995 c 0.072612,-0.145224 0.2153322,-0.218336 0.3395237,-0.218336 0.3730755,0 0.4441852,0.43467 0.4441852,0.781205 0,0.584902 -0.1772735,1.473272 -0.4807416,2.487336 C 5.7985363,3.2572265 5.7619799,2.0754035 6.0283908,1.6197005 Z M 4.0733752,10.080753 c -0.9063982,1.52385 -1.7767407,2.47031 -2.3100633,2.47031 -0.1051623,0 -0.193799,-0.03756 -0.2654094,-0.09164 C 1.3907372,12.351255 1.3376553,12.223057 1.3737109,12.078835 1.4803754,11.532993 2.4934381,10.770316 4.073876,10.080753 Z" fill="#EF4642"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2.4 KiB |
14
apps/acrobat9/info
Normal file
@ -0,0 +1,14 @@
|
||||
# GNOME shortcut name
|
||||
NAME="Acrobat 9"
|
||||
|
||||
# Used for descriptions and window class
|
||||
FULL_NAME="Acrobat 9"
|
||||
|
||||
# The executable inside windows
|
||||
WIN_EXECUTABLE="C:\Program Files (x86)\Adobe\Acrobat 9.0\Acrobat\Acrobat.exe"
|
||||
|
||||
# GNOME categories
|
||||
CATEGORIES="WinApps;Documents"
|
||||
|
||||
# GNOME mimetypes
|
||||
MIME_TYPES="application/pdf;"
|
@ -1,3 +1,8 @@
|
||||
# Copyright (c) 2024 Fmstrat
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Creative Cloud"
|
||||
|
||||
|
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,3 +1,8 @@
|
||||
# Copyright (c) 2024 Fmstrat
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="After Effects CC"
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
# Copyright (c) 2024 Fmstrat
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Audition CC"
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
# Copyright (c) 2024 Fmstrat
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Bridge CS6"
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
# Copyright (c) 2024 Fmstrat
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Bridge CS6"
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
# Copyright (c) 2024 Fmstrat
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Bridge CS6"
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
# Copyright (c) 2024 Fmstrat
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Cmd"
|
||||
|
||||
|
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"
|
@ -1,3 +1,8 @@
|
||||
# Copyright (c) 2024 Fmstrat
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Excel"
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
# Copyright (c) 2024 Jon Champagne
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Excel"
|
||||
|
||||
|
48
apps/excel-x86-2010/icon.svg
Normal file
@ -0,0 +1,48 @@
|
||||
<?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="Livello_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 2289.75 2130"
|
||||
enable-background="new 0 0 2289.75 2130" xml:space="preserve">
|
||||
<metadata>
|
||||
<sfw xmlns="&ns_sfw;">
|
||||
<slices></slices>
|
||||
<sliceSourceBounds bottomLeftOrigin="true" height="2130" width="2289.75" x="-1147.5" y="-1041"></sliceSourceBounds>
|
||||
</sfw>
|
||||
</metadata>
|
||||
<path fill="#185C37" d="M1437.75,1011.75L532.5,852v1180.393c0,53.907,43.7,97.607,97.607,97.607l0,0h1562.036
|
||||
c53.907,0,97.607-43.7,97.607-97.607l0,0V1597.5L1437.75,1011.75z"/>
|
||||
<path fill="#21A366" d="M1437.75,0H630.107C576.2,0,532.5,43.7,532.5,97.607c0,0,0,0,0,0V532.5l905.25,532.5L1917,1224.75
|
||||
L2289.75,1065V532.5L1437.75,0z"/>
|
||||
<path fill="#107C41" d="M532.5,532.5h905.25V1065H532.5V532.5z"/>
|
||||
<path opacity="0.1" enable-background="new " d="M1180.393,426H532.5v1331.25h647.893c53.834-0.175,97.432-43.773,97.607-97.607
|
||||
V523.607C1277.825,469.773,1234.227,426.175,1180.393,426z"/>
|
||||
<path opacity="0.2" enable-background="new " d="M1127.143,479.25H532.5V1810.5h594.643
|
||||
c53.834-0.175,97.432-43.773,97.607-97.607V576.857C1224.575,523.023,1180.977,479.425,1127.143,479.25z"/>
|
||||
<path opacity="0.2" enable-background="new " d="M1127.143,479.25H532.5V1704h594.643c53.834-0.175,97.432-43.773,97.607-97.607
|
||||
V576.857C1224.575,523.023,1180.977,479.425,1127.143,479.25z"/>
|
||||
<path opacity="0.2" enable-background="new " d="M1073.893,479.25H532.5V1704h541.393c53.834-0.175,97.432-43.773,97.607-97.607
|
||||
V576.857C1171.325,523.023,1127.727,479.425,1073.893,479.25z"/>
|
||||
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="203.5132" y1="1729.0183" x2="967.9868" y2="404.9817" gradientTransform="matrix(1 0 0 -1 0 2132)">
|
||||
<stop offset="0" style="stop-color:#18884F"/>
|
||||
<stop offset="0.5" style="stop-color:#117E43"/>
|
||||
<stop offset="1" style="stop-color:#0B6631"/>
|
||||
</linearGradient>
|
||||
<path fill="url(#SVGID_1_)" d="M97.607,479.25h976.285c53.907,0,97.607,43.7,97.607,97.607v976.285
|
||||
c0,53.907-43.7,97.607-97.607,97.607H97.607C43.7,1650.75,0,1607.05,0,1553.143V576.857C0,522.95,43.7,479.25,97.607,479.25z"/>
|
||||
<path fill="#FFFFFF" d="M302.3,1382.264l205.332-318.169L319.5,747.683h151.336l102.666,202.35
|
||||
c9.479,19.223,15.975,33.494,19.49,42.919h1.331c6.745-15.336,13.845-30.228,21.3-44.677L725.371,747.79h138.929l-192.925,314.548
|
||||
L869.2,1382.263H721.378L602.79,1160.158c-5.586-9.45-10.326-19.376-14.164-29.66h-1.757c-3.474,10.075-8.083,19.722-13.739,28.755
|
||||
l-122.102,223.011H302.3z"/>
|
||||
<path fill="#33C481" d="M2192.143,0H1437.75v532.5h852V97.607C2289.75,43.7,2246.05,0,2192.143,0L2192.143,0z"/>
|
||||
<path fill="#107C41" d="M1437.75,1065h852v532.5h-852V1065z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 3.5 KiB |
14
apps/excel-x86-2010/info
Normal file
@ -0,0 +1,14 @@
|
||||
# GNOME shortcut name
|
||||
NAME="Excel"
|
||||
|
||||
# Used for descriptions and window class
|
||||
FULL_NAME="Microsoft Excel"
|
||||
|
||||
# The executable inside windows
|
||||
WIN_EXECUTABLE="C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE"
|
||||
|
||||
# GNOME categories
|
||||
CATEGORIES="WinApps;Office"
|
||||
|
||||
# GNOME mimetypes
|
||||
MIME_TYPES="application/vnd.ms-excel;application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;application/vnd.openxmlformats-officedocument.spreadsheetml.template;application/vnd.ms-excel.sheet.macroEnabled.12;application/vnd.ms-excel.template.macroEnabled.12;application/vnd.ms-excel.addin.macroEnabled.12;application/vnd.ms-excel.sheet.binary.macroEnabled.12;"
|
@ -1,3 +1,8 @@
|
||||
# Copyright (c) 2024 Fmstrat
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Excel"
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
# Copyright (c) 2024 Fmstrat
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Excel"
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
# Copyright (c) 2024 Fmstrat
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Explorer"
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
# Copyright (c) 2024 Fmstrat
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Internet Explorer"
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
# Copyright (c) 2024 Fmstrat
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Illustrator CC"
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
# Copyright (c) 2024 Fmstrat
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="InDesign CC"
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
# Copyright (c) 2024 Fmstrat
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Lightroom CC"
|
||||
|
||||
|
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"
|
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;
|
56
apps/mspaint/icon.svg
Normal file
@ -0,0 +1,56 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="4096" height="4096">
|
||||
<rect width="100%" height="100%" fill="rgba(255,255,255,0)"/>
|
||||
<g transform="translate(2048.00693508 1958.53022285) scale(6.1623)">
|
||||
<linearGradient id="a" x1="198.04672" x2="309.49811" y1="93.277061" y2="236.8008" gradientTransform="translate(-601.2903 -296.4701) scale(3.7795)" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0%" stop-color="#3ac8f3"/>
|
||||
<stop offset="100%" stop-color="#1b9de3"/>
|
||||
</linearGradient>
|
||||
<path fill="url(#a)" d="M371.125.00976563C310.53187.45132284 241.55744 15.667119 183.09375 53.042969 105.14216 102.87744 45.882386 192.10557 19.28125 263.99609-7.3198864 335.88661-1.2601241 390.43565 7.2421875 430.8418 15.744499 471.24795 26.687683 497.51113 39.0625 513c12.374817 15.48887 26.180879 20.20163 40.070312 20.11719 13.889434-.08444 27.862138-4.96691 44.445308-17.59375 16.58318-12.62685 35.77543-32.99709 51.68555-49.32813 15.91012-16.33103 28.53751-28.62041 39.06055-34.76562 10.52304-6.14521 18.94029-6.14546 27.7793-3.36719 8.839 2.77827 18.09827 8.3337 24.66406 15.06836 6.56578 6.73466 10.43899 14.64741 11.61719 23.57031 1.17819 8.9229-.33728 18.85491-6.56641 27.69336-6.22914 8.83845-17.1716 16.58361-26.43164 30.89453-9.26004 14.31093-16.83777 35.18672-12.88086 54.7168 3.95691 19.53008 19.44668 37.71282 36.45117 47.98242 17.00449 10.2696 35.52263 12.62664 87.37695-8.25 51.85433-20.87663 137.04336-64.98615 191.42383-129.13086 54.38048-64.14471 77.94909-148.32234 79.46485-219.70703 1.51575-71.38469-19.02253-129.97284-51.51563-175.935546-32.4931-45.96271-76.93954-79.296896-147.48242-90.746094C410.58889 1.3564504 391.32271-.13742012 371.125.00976562zM342.90625 315.36914A42.594088 42.594088 0 0 1 385.5 357.96289a42.594088 42.594088 0 0 1-42.59375 42.5957 42.594088 42.594088 0 0 1-42.59375-42.5957 42.594088 42.594088 0 0 1 42.59375-42.59375z" style="is-custom-font:none;font-file-url:none" transform="translate(-313.6506 -317.8246)"/>
|
||||
</g>
|
||||
<path fill="gray" d="M273.18694 128.03818c-2.37244 0-4.28191 1.91001-4.28191 4.28242 0 .34907.0454.68635.12351 1.01079 3.39492 7.50647 7.92401 14.92375 11.42824 21.25659h18.34978l10.31927-19.27583c.56129-.97587 1.06508-2.05893 1.08056-2.99155 0-2.37241-1.90999-4.28242-4.28243-4.28242zm7.26984 26.55032v9.06094c-.003.0713-.004.14269-.001.21446l.001.0269v2.41484h.0925l2.38642 62.37862c4.69604-3.01908 9.38317-6.41238 13.77642-10.16785l1.99057-52.21077h.10387v-11.71711z" style="is-custom-font:none;font-file-url:none" transform="translate(-3540.28818071 -1826.91493161) scale(23.2904)"/>
|
||||
<g transform="translate(3205.26777195 2956.45801469) scale(6.1623)">
|
||||
<linearGradient id="b" x1="1179.8582" x2="1089.9546" y1="633.36566" y2="935.40125" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0%" stop-color="#78400a"/>
|
||||
<stop offset="100%" stop-color="#9a5605"/>
|
||||
</linearGradient>
|
||||
<path fill="url(#b)" d="M1106.7937 591.31055c-12.4969 0-47.3957 12.50642-46.8022 28.01757l12.1218 316.84296c.5934 15.51116 10.0617 24.98908 22.5586 24.98908 12.4968 0 21.9653-9.47784 22.5566-24.98908l12.0772-316.79832c.5913-15.51123-10.0152-28.06221-22.512-28.06221z" style="is-custom-font:none;font-file-url:none" transform="translate(-1094.6567 -776.2354)"/>
|
||||
</g>
|
||||
<g transform="translate(3205.3571253 1909.95959048) scale(23.2904)">
|
||||
<linearGradient id="c" x1="279.83121" x2="303.61819" y1="168.91434" y2="154.48178" gradientTransform="translate(-289.6318 -160.4467)" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0%" stop-color="#ececec"/>
|
||||
<stop offset="100%" stop-color="#9396a0"/>
|
||||
</linearGradient>
|
||||
<rect width="18.3497" height="11.7173" x="-9.17485" y="-5.85865" fill="url(#c)" rx="0" ry="0" style="is-custom-font:none;font-file-url:none"/>
|
||||
</g>
|
||||
<g transform="translate(3203.58669651 1464.32670368) scale(6.1623)">
|
||||
<linearGradient id="d" x1="1053.5891" x2="1154.6044" y1="481.84277" y2="582.85803" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0%" stop-color="#f0d69f"/>
|
||||
<stop offset="100%" stop-color="#c39360"/>
|
||||
</linearGradient>
|
||||
<path fill="url(#d)" d="M1032.5176 483.92383c-8.9667 0-16.1836 7.2189-16.1836 16.18555 0 1.31932.1717 2.5941.4668 3.82031 12.8312 28.37087 29.949 56.40471 43.1933 80.33984h69.3536l39.0036-72.8548c2.1214-3.68834 4.0238-7.78051 4.0823-11.30535 0-8.96665-7.2189-16.18555-16.1856-16.18555z" style="is-custom-font:none;font-file-url:none" transform="translate(-1094.3838 -534.0967)"/>
|
||||
</g>
|
||||
<circle r="15.096695" fill="gray" style="is-custom-font:none;font-file-url:none" transform="translate(698.38004403 2055.30852812) scale(23.2904)"/>
|
||||
<g transform="translate(696.98120193 2030.80845578) scale(23.2904)">
|
||||
<linearGradient id="e" x1="172.12158" x2="200.18488" y1="151.27455" y2="179.33784" gradientTransform="translate(-185.2428 -165.6356)" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0%" stop-color="#db5317"/>
|
||||
<stop offset="100%" stop-color="#c23807"/>
|
||||
</linearGradient>
|
||||
<circle r="15.096695" fill="url(#e)" style="is-custom-font:none;font-file-url:none"/>
|
||||
</g>
|
||||
<circle r="15.096695" fill="gray" style="is-custom-font:none;font-file-url:none" transform="translate(1147.34735136 1168.37793257) scale(23.2904)"/>
|
||||
<g transform="translate(1145.94850926 1143.877244) scale(23.2904)">
|
||||
<linearGradient id="f" x1="193.7704" x2="216.75558" y1="110.11504" y2="138.17834" gradientTransform="translate(-204.5196 -127.5545)" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0%" stop-color="#4fb412"/>
|
||||
<stop offset="100%" stop-color="#188313"/>
|
||||
</linearGradient>
|
||||
<circle r="15.096695" fill="url(#f)" style="is-custom-font:none;font-file-url:none"/>
|
||||
</g>
|
||||
<circle r="15.096695" fill="#666" style="is-custom-font:none;font-file-url:none" transform="translate(2115.70904403 803.04104723) scale(23.2904)"/>
|
||||
<g transform="translate(2114.31020193 778.54097489) scale(23.2904)">
|
||||
<linearGradient id="g" x1="235.19719" x2="260.5878" y1="102.89877" y2="125.61668" gradientTransform="translate(-246.0969 -111.8684)" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0%" stop-color="#fddd01"/>
|
||||
<stop offset="100%" stop-color="#f7a810"/>
|
||||
</linearGradient>
|
||||
<circle r="15.096695" fill="url(#g)" style="is-custom-font:none;font-file-url:none"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 6.2 KiB |
14
apps/mspaint/info
Normal file
@ -0,0 +1,14 @@
|
||||
# GNOME shortcut name
|
||||
NAME="Paint"
|
||||
|
||||
# Used for descriptions and window class
|
||||
FULL_NAME="Microsoft Paint"
|
||||
|
||||
# The executable inside windows
|
||||
WIN_EXECUTABLE="C:\windows\system32\mspaint.exe"
|
||||
|
||||
# GNOME categories
|
||||
CATEGORIES="WinApps;Graphics"
|
||||
|
||||
# GNOME mimetypes
|
||||
MIME_TYPES="image/png;image/bmp;image/jpeg;image/jpe;image/jpeg;image/tiff;image/tif;image/x-ms-bmp;image/dib;image/vnd.microsoft.icon;image/x-icon;image/ico;image/icon;text/ico;application/ico"
|
@ -1,3 +1,8 @@
|
||||
# Copyright (c) 2024 Fmstrat
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="OneNote"
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
# Copyright (c) 2024 Jon Champagne
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="OneNote"
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
# Copyright (c) 2024 Fmstrat
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="OneNote"
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
# Copyright (c) 2024 Fmstrat
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="OneNote"
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
# Copyright (c) 2024 Fmstrat
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Outlook"
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
# Copyright (c) 2024 Jon Champagne
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Outlook"
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
# Copyright (c) 2024 Fmstrat
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Outlook"
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
# Copyright (c) 2024 Fmstrat
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Outlook"
|
||||
|
||||
|
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"
|
@ -1,3 +1,8 @@
|
||||
# Copyright (c) 2024 Fmstrat
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Photoshop CC"
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
# Copyright (c) 2024 Fmstrat
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Photoshop CS6"
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
# Copyright (c) 2024 Fmstrat
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Photoshop CS6"
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
# Copyright (c) 2024 Fmstrat
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="PowerPoint"
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
# Copyright (c) 2024 Jon Champagne
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="PowerPoint"
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
# Copyright (c) 2024 Fmstrat
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="PowerPoint"
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
# Copyright (c) 2024 Fmstrat
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="PowerPoint"
|
||||
|
||||
|
1
apps/powershell-ide/icon.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><linearGradient id="a" gradientTransform="matrix(1 0 0 -1 0 -96)" gradientUnits="userSpaceOnUse" x1="23.325" x2="7.26" y1="-118.543" y2="-104.193"><stop offset="0" stop-color="#5391fe"/><stop offset="1" stop-color="#3e6dbf"/></linearGradient><linearGradient id="b" x1="7.1" x2="23.001" xlink:href="#a" y1="-104.002" y2="-118.292"/><g fill-rule="evenodd"><path d="m3.174 26.589a1.154 1.154 0 0 1 -.928-.423 1.234 1.234 0 0 1 -.21-1.052l4.197-18.334a1.8 1.8 0 0 1 1.681-1.37h20.912a1.157 1.157 0 0 1 .928.423 1.235 1.235 0 0 1 .21 1.052l-4.2 18.335a1.8 1.8 0 0 1 -1.681 1.37h-20.909z" fill="url(#a)"/><path d="m7.914 5.646h20.912a.913.913 0 0 1 .908 1.187l-4.2 18.334a1.575 1.575 0 0 1 -1.451 1.187h-20.909a.913.913 0 0 1 -.908-1.187l4.2-18.334a1.574 1.574 0 0 1 1.448-1.187z" fill="url(#b)"/><path d="m16.04 21.544h5.086a1.118 1.118 0 0 1 0 2.234h-5.086a1.118 1.118 0 0 1 0-2.234z" fill="#2c5591"/><path d="m19.339 16.578a1.762 1.762 0 0 1 -.591.6l-9.439 6.775a1.224 1.224 0 0 1 -1.438-1.977l8.512-6.164v-.126l-5.348-5.686a1.224 1.224 0 0 1 1.782-1.672l6.418 6.827a1.166 1.166 0 0 1 .104 1.423z" fill="#2c5591"/><g fill="#fff"><path d="m19.1 16.342a1.749 1.749 0 0 1 -.59.6l-9.436 6.776a1.225 1.225 0 0 1 -1.439-1.977l8.513-6.164v-.127l-5.348-5.689a1.224 1.224 0 0 1 1.783-1.672l6.417 6.827a1.162 1.162 0 0 1 .1 1.426z"/><path d="m15.9 21.412h5.086a1.059 1.059 0 1 1 0 2.118h-5.086a1.059 1.059 0 1 1 0-2.118z"/></g></g></svg>
|
After Width: | Height: | Size: 1.5 KiB |
14
apps/powershell-ide/info
Normal file
@ -0,0 +1,14 @@
|
||||
# GNOME shortcut name
|
||||
NAME="Powershell"
|
||||
|
||||
# Used for descriptions and window class
|
||||
FULL_NAME="Microsoft Powershell"
|
||||
|
||||
# The executable inside windows
|
||||
WIN_EXECUTABLE="C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe"
|
||||
|
||||
# GNOME categories
|
||||
CATEGORIES="WinApps;Windows"
|
||||
|
||||
# GNOME mimetypes
|
||||
MIME_TYPES=""
|
@ -1,3 +1,8 @@
|
||||
# Copyright (c) 2024 Fmstrat
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Powershell"
|
||||
|
||||
|
@ -1,4 +1,3 @@
|
||||
# GNOME shortcut name
|
||||
NAME="Project"
|
||||
|
||||
# Used for descriptions and window class
|
||||
|
@ -1,3 +1,8 @@
|
||||
# Copyright (c) 2024 Fmstrat
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Publisher"
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
# Copyright (c) 2024 Jon Champagne
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Publisher"
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
# Copyright (c) 2024 Fmstrat
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Publisher"
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
# Copyright (c) 2024 Fmstrat
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Publisher"
|
||||
|
||||
|
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,3 +1,8 @@
|
||||
# Copyright (c) 2024 Fmstrat
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Word"
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
# Copyright (c) 2024 Jon Champagne
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Word"
|
||||
|
||||
|
50
apps/word-x86-2010/icon.svg
Normal file
@ -0,0 +1,50 @@
|
||||
<?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="Livello_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 1881.25 1750"
|
||||
enable-background="new 0 0 1881.25 1750" xml:space="preserve">
|
||||
<metadata>
|
||||
<sfw xmlns="&ns_sfw;">
|
||||
<slices></slices>
|
||||
<sliceSourceBounds bottomLeftOrigin="true" height="1750" width="1881.25" x="-938.5" y="-851"></sliceSourceBounds>
|
||||
</sfw>
|
||||
</metadata>
|
||||
<path fill="#41A5EE" d="M1801.056,0H517.694C473.404,0,437.5,35.904,437.5,80.194c0,0,0,0,0,0V437.5l743.75,218.75l700-218.75
|
||||
V80.194C1881.25,35.904,1845.346,0,1801.056,0L1801.056,0z"/>
|
||||
<path fill="#2B7CD3" d="M1881.25,437.5H437.5V875l743.75,131.25l700-131.25V437.5z"/>
|
||||
<path fill="#185ABD" d="M437.5,875v437.5l700,87.5l743.75-87.5V875H437.5z"/>
|
||||
<path fill="#103F91" d="M517.694,1750h1283.363c44.29,0,80.194-35.904,80.194-80.194l0,0V1312.5H437.5v357.306
|
||||
C437.5,1714.096,473.404,1750,517.694,1750L517.694,1750z"/>
|
||||
<path opacity="0.1" enable-background="new " d="M969.806,350H437.5v1093.75h532.306c44.23-0.144,80.05-35.964,80.194-80.194
|
||||
V430.194C1049.856,385.964,1014.036,350.144,969.806,350z"/>
|
||||
<path opacity="0.2" enable-background="new " d="M926.056,393.75H437.5V1487.5h488.556c44.23-0.144,80.05-35.964,80.194-80.194
|
||||
V473.944C1006.106,429.714,970.286,393.894,926.056,393.75z"/>
|
||||
<path opacity="0.2" enable-background="new " d="M926.056,393.75H437.5V1400h488.556c44.23-0.144,80.05-35.964,80.194-80.194
|
||||
V473.944C1006.106,429.714,970.286,393.894,926.056,393.75z"/>
|
||||
<path opacity="0.2" enable-background="new " d="M882.306,393.75H437.5V1400h444.806c44.23-0.144,80.05-35.964,80.194-80.194
|
||||
V473.944C962.356,429.714,926.536,393.894,882.306,393.75z"/>
|
||||
<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"/>
|
||||
<stop offset="0.5" style="stop-color:#1A5DBE"/>
|
||||
<stop offset="1" style="stop-color:#1146AC"/>
|
||||
</linearGradient>
|
||||
<path fill="url(#SVGID_1_)" d="M80.194,393.75h802.112c44.29,0,80.194,35.904,80.194,80.194v802.113
|
||||
c0,44.29-35.904,80.194-80.194,80.194H80.194c-44.29,0-80.194-35.904-80.194-80.194V473.944C0,429.654,35.904,393.75,80.194,393.75z
|
||||
"/>
|
||||
<path fill="#FFFFFF" d="M329.088,1008.788c1.575,12.381,2.625,23.144,3.106,32.375h1.837c0.7-8.75,2.158-19.294,4.375-31.631
|
||||
c2.217-12.338,4.215-22.765,5.994-31.281l84.35-363.913h109.069l87.5,358.444c5.084,22.288,8.723,44.881,10.894,67.637h1.444
|
||||
c1.631-22.047,4.671-43.966,9.1-65.625l69.781-360.631h99.269l-122.588,521.5H577.238L494.113,790.3
|
||||
c-2.406-9.931-5.162-22.925-8.181-38.894c-3.019-15.969-4.9-27.65-5.644-35h-1.444c-0.962,8.487-2.844,21.088-5.644,37.8
|
||||
c-2.8,16.713-5.046,29.079-6.738,37.1l-78.138,344.269h-117.95L147.131,614.337h101.062l75.994,364.656
|
||||
C325.894,986.475,327.513,996.45,329.088,1008.788z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 3.7 KiB |
17
apps/word-x86-2010/info
Normal file
@ -0,0 +1,17 @@
|
||||
# GNOME shortcut name
|
||||
NAME="Word"
|
||||
|
||||
# Used for descriptions and window class
|
||||
FULL_NAME="Microsoft Word"
|
||||
|
||||
# The executable inside windows
|
||||
WIN_EXECUTABLE="C:\Program Files (x86)\Microsoft Office\Office14\WINWORD.EXE"
|
||||
|
||||
# GNOME categories
|
||||
CATEGORIES="WinApps;Office"
|
||||
|
||||
# GNOME mimetypes
|
||||
MIME_TYPES="application/msword;application/vnd.openxmlformats-officedocument.wordprocessingml.document;application/vnd.openxmlformats-officedocument.wordprocessingml.template;application/vnd.ms-word.document.macroEnabled.12;application/vnd.ms-word.template.macroEnabled.12;"
|
||||
|
||||
# System Icon
|
||||
ICON="ms-word"
|
@ -1,3 +1,8 @@
|
||||
# Copyright (c) 2024 Fmstrat
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Word"
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
# Copyright (c) 2024 Fmstrat
|
||||
# All rights reserved.
|
||||
#
|
||||
# SPDX-License-Identifier: Proprietary
|
||||
|
||||
# GNOME shortcut name
|
||||
NAME="Word"
|
||||
|
||||
|
60
bin/winapps
@ -29,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
|
||||
@ -42,15 +41,15 @@ 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=""
|
||||
|
||||
# OTHER
|
||||
FREERDP_PID=-1
|
||||
@ -123,7 +122,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."
|
||||
@ -154,9 +153,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 user left REMOVABLE_MEDIA config null,fallback to /run/media for udisks defaults ,warning.
|
||||
function waFixRemovableMedia() {
|
||||
if [ -z "$REMOVABLE_MEDIA" ]; then
|
||||
REMOVABLE_MEDIA="/run/media" # Default for udisks
|
||||
dprint "NOTICE: Using default REMOVABLE_MEDIA: $REMOVABLE_MEDIA"
|
||||
notify-send --expire-time=3000 --icon="drive-removable-media" \
|
||||
"WinApps Notice" "Using default removable media path: $REMOVABLE_MEDIA"
|
||||
fi
|
||||
}
|
||||
|
||||
# Name: 'waFixScale'
|
||||
# Role: Since FreeRDP only supports '/scale' values of 100, 140 or 180, find the closest supported argument to the user's configuration.
|
||||
function waFixScale() {
|
||||
@ -202,12 +210,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.
|
||||
@ -510,11 +516,8 @@ function waRunCommand() {
|
||||
/u:"$RDP_USER" \
|
||||
/p:"$RDP_PASS" \
|
||||
/scale:"$RDP_SCALE" \
|
||||
+dynamic-resolution \
|
||||
+auto-reconnect \
|
||||
+home-drive \
|
||||
/sound \
|
||||
/microphone \
|
||||
+dynamic-resolution \
|
||||
/wm-class:"Microsoft Windows" \
|
||||
/t:"Windows RDP Session [$RDP_IP]" \
|
||||
/v:"$RDP_IP" &>/dev/null &
|
||||
@ -525,19 +528,11 @@ function waRunCommand() {
|
||||
# Open specified application.
|
||||
dprint "MANUAL: ${2}"
|
||||
$FREERDP_COMMAND \
|
||||
/cert:tofu \
|
||||
/d:"$RDP_DOMAIN" \
|
||||
/u:"$RDP_USER" \
|
||||
/p:"$RDP_PASS" \
|
||||
/scale:"$RDP_SCALE" \
|
||||
+auto-reconnect \
|
||||
+clipboard \
|
||||
+home-drive \
|
||||
/sound \
|
||||
/microphone \
|
||||
-wallpaper \
|
||||
+dynamic-resolution \
|
||||
"$MULTI_FLAG" \
|
||||
/app:program:"$2" \
|
||||
/v:"$RDP_IP" &>/dev/null &
|
||||
|
||||
@ -570,13 +565,6 @@ function waRunCommand() {
|
||||
/p:"$RDP_PASS" \
|
||||
/scale:"$RDP_SCALE" \
|
||||
+auto-reconnect \
|
||||
+clipboard \
|
||||
+home-drive \
|
||||
/sound \
|
||||
/microphone \
|
||||
-wallpaper \
|
||||
+dynamic-resolution \
|
||||
"$MULTI_FLAG" \
|
||||
/wm-class:"$FULL_NAME" \
|
||||
/app:program:"$WIN_EXECUTABLE",icon:"$ICON",name:"$FULL_NAME" \
|
||||
/v:"$RDP_IP" &>/dev/null &
|
||||
@ -586,25 +574,19 @@ 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}"
|
||||
|
||||
$FREERDP_COMMAND \
|
||||
/cert:tofu \
|
||||
/d:"$RDP_DOMAIN" \
|
||||
/u:"$RDP_USER" \
|
||||
/p:"$RDP_PASS" \
|
||||
/scale:"$RDP_SCALE" \
|
||||
+auto-reconnect \
|
||||
+clipboard \
|
||||
+home-drive \
|
||||
/sound \
|
||||
/microphone \
|
||||
-wallpaper \
|
||||
+dynamic-resolution \
|
||||
"$MULTI_FLAG" \
|
||||
/drive:media,"$REMOVABLE_MEDIA" \
|
||||
/wm-class:"$FULL_NAME" \
|
||||
/app:program:"$WIN_EXECUTABLE",icon:"$ICON",name:$"FULL_NAME",cmd:\""$FILE_PATH"\" \
|
||||
/v:"$RDP_IP" &>/dev/null &
|
||||
|
26
compose.yaml
@ -8,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 command 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
|
||||
```
|
||||
|
||||
|
129
docs/libvirt.md
@ -28,31 +28,38 @@ 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.
|
||||
```
|
||||
|
||||
6. If relevant to your distribution, disable `AppArmor` for the `libvirt` daemon.
|
||||
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:
|
||||
1. Identify which groups are missing from the output of `groups $USER`.
|
||||
2. Use the following snippet to add each missing group to `/etc/group`. Ensure you replace "kvm" with the name of the missing group.
|
||||
|
||||
```bash
|
||||
grep -E '^kvm:' /usr/lib/group | sudo tee -a /etc/group
|
||||
sudo usermod -aG kvm $USER
|
||||
```
|
||||
|
||||
3. Reboot your system to ensure that the user is correctly added to the relevant groups.
|
||||
|
||||
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.
|
||||
```
|
||||
@ -60,12 +67,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.
|
||||
@ -125,6 +132,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]
|
||||
@ -583,21 +593,20 @@ Once you get to the point of selecting the location for installation, you will s
|
||||
<img src="./libvirt_images/20.png" width="700px"/>
|
||||
</p>
|
||||
|
||||
The next hurdle will be bypassing the network selection screen. As the `VirtIO` drivers
|
||||
for networking have not yet been loaded, the virtual machine will not be able to be connected to the internet.
|
||||
- For Windows 11: Press "Shift + F10" to open the command prompt. Type 'OOBE\BYPASSNRO' (without the surrounding quotation marks) and press Enter. The system will restart and now allow you to click `I don't have internet`.
|
||||
The next hurdle will be bypassing the network selection screen. As the `VirtIO` drivers for networking have not yet been loaded, the virtual machine will not be able to be connected to the internet.
|
||||
- For Windows 11: When prompted to select your country or region, press "Shift + F10" to open the command prompt. Enter `OOBE\BYPASSNRO` and press Enter. The system will restart, allowing you to select "I don't have internet" later on. It is crucial to run this command as soon as possible, as doing so later in the installation process will not work, and you may be required to create a Microsoft account despite not having an internet connection.
|
||||
|
||||
<p align="center">
|
||||
<img src="./libvirt_images/21.png" width="700px"/>
|
||||
</p>
|
||||
|
||||
- For Windows 10: Simply click `I don't have internet`.
|
||||
- For Windows 10: Simply click "I don't have internet".
|
||||
|
||||
<p align="center">
|
||||
<img src="./libvirt_images/22.png" width="700px"/>
|
||||
</p>
|
||||
|
||||
Following the above, choose to `Continue with limited setup`.
|
||||
Following the above, choose to "Continue with limited setup".
|
||||
|
||||
<p align="center">
|
||||
<img src="./libvirt_images/23.png" width="700px"/>
|
||||
@ -624,19 +633,32 @@ 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 the Container.reg.**
|
||||
|
||||
<p align="center">
|
||||
<img src="./libvirt_images/26.png" width="700px"/>
|
||||
</p>
|
||||
|
||||
Once you have downloaded the registry file, right-click on it, and choose `Merge`.
|
||||
Once you have downloaded all three files, right-click the install.bat and select "Run as administrator".
|
||||
|
||||
<p align="center">
|
||||
<img src="./libvirt_images/27.png" width="700px"/>
|
||||
@ -668,6 +690,59 @@ Scroll down to `Remote Desktop`, and enable `Enable Remote Desktop`.
|
||||
|
||||
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".
|
||||
|
||||
2. Add filesystem hardware by going to "Virtual Hardware Details" and selecting "Add Hardware" followed by "Filesystem". Choose `virtiofs` as the driver, enter the path to the shared folder, and provide a name for the shared folder in the target path (e.g., "Windows Shared Folder").
|
||||
|
||||
3. Install [`WinFSP`](https://github.com/winfsp/winfsp/releases/) on Windows.
|
||||
|
||||
4. Enable and start a 'VirtIO Filesystem' service within Windows by running the following commands within a PowerShell prompt.
|
||||
```PowerShell
|
||||
sc.exe create VirtioFsSvc binpath= "C:\Program Files\Virtio-Win\VioFS\virtiofs.exe" start=auto depend="WinFsp.Launcher/VirtioFsDrv" DisplayName="Virtio Filesystem Service"
|
||||
sc.exe start VirtioFsSvc
|
||||
```
|
||||
|
||||
5. Reboot Windows.
|
||||
|
||||
## (Optional) Configuring a Static IP Address
|
||||
1. Identify the Windows MAC address.
|
||||
```bash
|
||||
virsh dumpxml "RDPWindows" | grep "mac address"
|
||||
```
|
||||
|
||||
2. Edit the virtual network configuration.
|
||||
1. Identify the correct network name.
|
||||
```bash
|
||||
virsh net-list # Will likely return "default"
|
||||
```
|
||||
|
||||
2. Edit the configuration file.
|
||||
```bash
|
||||
virsh net-edit "default" # Replace "default" with the appropriate network name if different
|
||||
```
|
||||
|
||||
3. Update the `<dhcp>` section in the configuration file using the MAC address you obtained earlier. In the below example, "RDPWindows" has MAC address "df:87:4c:75:e5:fb" and is assigned the static IP address "192.168.122.2".
|
||||
```xml
|
||||
<dhcp>
|
||||
<range start="192.168.122.2" end="192.168.122.254"/>
|
||||
<host mac="df:87:4c:75:e5:fb" name="RDPWindows" ip="192.168.122.2"/>
|
||||
<host mac="53:45:6b:de:a0:7b" name="Debian" ip="192.168.122.3"/>
|
||||
<host mac="7d:62:4f:59:ef:f5" name="FreeBSD" ip="192.168.122.4"/>
|
||||
</dhcp>
|
||||
```
|
||||
|
||||
4. Restart the virtual network.
|
||||
```bash
|
||||
virsh net-destroy "default" # Replace with the correct name on your system
|
||||
virsh net-start "default" # Replace with the correct name on your system
|
||||
```
|
||||
|
||||
5. Reboot Windows.
|
||||
|
||||
## 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]
|
||||
|
Before Width: | Height: | Size: 168 KiB After Width: | Height: | Size: 56 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 |
76
flake.lock
generated
Normal file
@ -0,0 +1,76 @@
|
||||
{
|
||||
"nodes": {
|
||||
"flake-compat": {
|
||||
"locked": {
|
||||
"lastModified": 1696426674,
|
||||
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||
"revCount": 57,
|
||||
"type": "tarball",
|
||||
"url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.0.1/018afb31-abd1-7bff-a5e4-cff7e18efb7a/source.tar.gz"
|
||||
},
|
||||
"original": {
|
||||
"type": "tarball",
|
||||
"url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz"
|
||||
}
|
||||
},
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1710146030,
|
||||
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1724819573,
|
||||
"narHash": "sha256-GnR7/ibgIH1vhoy8cYdmXE6iyZqKqFxQSVkFgosBh6w=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "71e91c409d1e654808b2621f28a327acfdad8dc2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat",
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs": "nixpkgs"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
29
flake.nix
Normal file
@ -0,0 +1,29 @@
|
||||
{
|
||||
description = "WinApps Nix packages & NixOS module";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
|
||||
flake-compat.url = "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz";
|
||||
flake-utils.url = "github:numtide/flake-utils";
|
||||
};
|
||||
|
||||
outputs =
|
||||
{
|
||||
nixpkgs,
|
||||
flake-utils,
|
||||
...
|
||||
}:
|
||||
flake-utils.lib.eachDefaultSystem (
|
||||
system:
|
||||
let
|
||||
pkgs = import nixpkgs { inherit system; };
|
||||
in
|
||||
{
|
||||
formatter = pkgs.nixfmt-rfc-style;
|
||||
|
||||
packages.winapps = pkgs.callPackage ./packages/winapps { };
|
||||
packages.winapps-launcher = pkgs.callPackage ./packages/winapps-launcher { };
|
||||
}
|
||||
);
|
||||
}
|
@ -1,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.
|
||||
|
||||
##
|
||||
|
||||

|