mirror of
https://github.com/winapps-org/winapps.git
synced 2025-07-30 23:46:42 +02:00
Compare commits
114 Commits
doc-correc
...
113abb3322
Author | SHA1 | Date | |
---|---|---|---|
![]() |
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 | ||
![]() |
74f0624fad | ||
![]() |
22032284fc | ||
![]() |
993129af37 |
@@ -24,8 +24,14 @@ jobs:
|
||||
- name: Commit and push
|
||||
uses: EndBug/add-and-commit@v9
|
||||
with:
|
||||
add: "WinApps-Launcher"
|
||||
add: WinApps-Launcher
|
||||
default_author: github_actions
|
||||
message: "Update submodules"
|
||||
push: true
|
||||
fetch: true
|
||||
push: false
|
||||
|
||||
- name: Create PR
|
||||
uses: peter-evans/create-pull-request@v7
|
||||
with:
|
||||
branch: chore/update_submodules
|
||||
delete-branch: true
|
||||
title: "Update submodules"
|
71
README.md
71
README.md
@@ -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">
|
||||
@@ -301,7 +312,7 @@ Install the required dependencies.
|
||||
```
|
||||
- Arch Linux:
|
||||
```bash
|
||||
sudo pacman -Syu --needed -y curl dialog freerdp git iproute2 libnotify gnu-netcat
|
||||
sudo pacman -Syu --needed -y curl dialog freerdp git iproute2 libnotify openbsd-netcat
|
||||
```
|
||||
- OpenSUSE:
|
||||
```bash
|
||||
@@ -354,6 +365,13 @@ RDP_DOMAIN=""
|
||||
# - 'libvirt': '' (BLANK)
|
||||
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'
|
||||
# VALID VALUES:
|
||||
@@ -374,21 +392,21 @@ WAFLAVOR="docker"
|
||||
# - '180'
|
||||
RDP_SCALE="100"
|
||||
|
||||
# [MOUNTING REMOVABLE PATHS FOR FILES]
|
||||
# NOTES:
|
||||
# - By default, `udisks` (which you most likely have installed) uses /run/media for mounting removable devices.
|
||||
# This improves compatibility with most desktop environments (DEs).
|
||||
# ATTENTION: The Filesystem Hierarchy Standard (FHS) recommends /media instead. Verify your system's configuration.
|
||||
# - To manually mount devices, you may optionally use /mnt.
|
||||
# REFERRENCE: https://wiki.archlinux.org/title/Udisks#Mount_to_/media
|
||||
REMOVABLE_MEDIA="/run/media"
|
||||
|
||||
# [ADDITIONAL FREERDP FLAGS & ARGUMENTS]
|
||||
# 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'
|
||||
# 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"
|
||||
|
||||
# [MULTIPLE MONITORS]
|
||||
# NOTES:
|
||||
# - If enabled, a FreeRDP bug *might* produce a black screen.
|
||||
# DEFAULT VALUE: 'false'
|
||||
# VALID VALUES:
|
||||
# - 'true'
|
||||
# - 'false'
|
||||
MULTIMON="false"
|
||||
RDP_FLAGS="/cert:tofu /sound /microphone +home-drive"
|
||||
|
||||
# [DEBUG WINAPPS]
|
||||
# NOTES:
|
||||
@@ -426,6 +444,31 @@ 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"
|
||||
|
||||
```
|
||||
|
||||
> [!IMPORTANT]
|
||||
@@ -440,7 +483,7 @@ 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`.
|
||||
|
||||
|
Submodule WinApps-Launcher updated: ae1a9e9ea7...9b3f6c5817
29
apps/adobe-digital-editions-4.5/icon.svg
Normal file
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
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"
|
40
apps/dymo-connect/icon.svg
Normal file
40
apps/dymo-connect/icon.svg
Normal file
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 8.3 KiB |
17
apps/dymo-connect/info
Normal file
17
apps/dymo-connect/info
Normal file
@@ -0,0 +1,17 @@
|
||||
# GNOME shortcut name
|
||||
NAME="DYMO Connect"
|
||||
|
||||
# Used for descriptions and window class
|
||||
FULL_NAME="Software for DYMO label printers"
|
||||
|
||||
# The executable inside windows
|
||||
WIN_EXECUTABLE="C:\Program Files (x86)\DYMO\DYMO Connect\DYMOConnect.exe"
|
||||
|
||||
# GNOME categories
|
||||
CATEGORIES="WinApps;Office"
|
||||
|
||||
# GNOME mimetypes
|
||||
MIME_TYPES=""
|
||||
|
||||
# System Icon
|
||||
ICON="DYMOConnect"
|
24
apps/mirc/icon.svg
Normal file
24
apps/mirc/icon.svg
Normal file
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 54 KiB |
17
apps/mirc/info
Normal file
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
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;
|
37
apps/photoshop-2022/icon.svg
Normal file
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
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"
|
48
bin/winapps
48
bin/winapps
@@ -29,7 +29,6 @@ readonly COMPOSE_PATH="${HOME}/.config/winapps/compose.yaml"
|
||||
readonly SCRIPT_DIR_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"
|
||||
|
||||
# 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"
|
||||
@@ -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."
|
||||
@@ -156,7 +155,16 @@ Please run:
|
||||
function dprint() {
|
||||
[ "$DEBUG" = "true" ] && echo "[$(date)-$RUNID] $1" >>"$LOG_PATH"
|
||||
}
|
||||
|
||||
# Name: 'waFixRemovableMedia'
|
||||
# Role: If user left REMOVABLE_MEDIA config null,fallback to /run/media for udisks defaults ,warning.
|
||||
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 \
|
||||
+clipboard \
|
||||
-wallpaper \
|
||||
+dynamic-resolution \
|
||||
/wm-class:"Microsoft Windows" \
|
||||
/t:"Windows RDP Session [$RDP_IP]" \
|
||||
/v:"$RDP_IP" &>/dev/null &
|
||||
@@ -529,12 +532,7 @@ function waRunCommand() {
|
||||
/u:"$RDP_USER" \
|
||||
/p:"$RDP_PASS" \
|
||||
/scale:"$RDP_SCALE" \
|
||||
+dynamic-resolution \
|
||||
+auto-reconnect \
|
||||
+home-drive \
|
||||
+clipboard \
|
||||
-wallpaper \
|
||||
"$MULTI_FLAG" \
|
||||
/app:program:"$2" \
|
||||
/v:"$RDP_IP" &>/dev/null &
|
||||
|
||||
@@ -566,12 +564,7 @@ function waRunCommand() {
|
||||
/u:"$RDP_USER" \
|
||||
/p:"$RDP_PASS" \
|
||||
/scale:"$RDP_SCALE" \
|
||||
+dynamic-resolution \
|
||||
+auto-reconnect \
|
||||
+home-drive \
|
||||
+clipboard \
|
||||
-wallpaper \
|
||||
"$MULTI_FLAG" \
|
||||
/wm-class:"$FULL_NAME" \
|
||||
/app:program:"$WIN_EXECUTABLE",icon:"$ICON",name:"$FULL_NAME" \
|
||||
/v:"$RDP_IP" &>/dev/null &
|
||||
@@ -581,7 +574,8 @@ function waRunCommand() {
|
||||
else
|
||||
# Convert path from UNIX to Windows style.
|
||||
FILE_PATH=$(echo "$2" | sed \
|
||||
-e 's|'"${HOME}"'|\\\\tsclient\\home|' \
|
||||
-e 's|^'"${HOME}"'|\\\\tsclient\\home|' \
|
||||
-e 's|^\('"${REMOVABLE_MEDIA//|/\\|}"'\)/[^/]*|\\\\tsclient\\media|' \
|
||||
-e 's|/|\\|g')
|
||||
dprint "UNIX_FILE_PATH: ${2}"
|
||||
dprint "WINDOWS_FILE_PATH: ${FILE_PATH}"
|
||||
@@ -591,12 +585,8 @@ function waRunCommand() {
|
||||
/u:"$RDP_USER" \
|
||||
/p:"$RDP_PASS" \
|
||||
/scale:"$RDP_SCALE" \
|
||||
+dynamic-resolution \
|
||||
+auto-reconnect \
|
||||
+home-drive \
|
||||
+clipboard \
|
||||
-wallpaper \
|
||||
"$MULTI_FLAG" \
|
||||
/drive:media,"$REMOVABLE_MEDIA" \
|
||||
/wm-class:"$FULL_NAME" \
|
||||
/app:program:"$WIN_EXECUTABLE",icon:"$ICON",name:$"FULL_NAME",cmd:\""$FILE_PATH"\" \
|
||||
/v:"$RDP_IP" &>/dev/null &
|
||||
|
20
compose.yaml
20
compose.yaml
@@ -14,28 +14,36 @@ services:
|
||||
# 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.
|
||||
# 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. THIS DISK WILL BE FORMATTED BY DOCKER).
|
||||
#- /dev/sdY:/disk2 # Uncomment to mount a disk directly within the Windows VM (Note: 'disk2' and higher will be mounted as secondary drives. THIS DISK WILL NOT BE FORMATTED).
|
||||
- /dev/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.
|
||||
|
@@ -7,11 +7,14 @@ 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 download the ISO from a reputed source, as the built in downloader from dockur (default set to `tiny11`) will take longer than it would to download from a browser/torrent.
|
||||
> - 'Professional', 'Enterprise' or 'Server' editions of Windows are required to run RDP applications. Windows 'Home' will __NOT__ suffice.
|
||||
> - It is recommended to edit the initial `compose.yaml` file to keep your required username and password from the beginning.
|
||||
> - It is recommended to 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
|
||||
@@ -24,9 +27,6 @@ Prior to installing Windows, you can modify the RAM and number of CPU cores avai
|
||||
|
||||
It is also possible to specify the version of Windows you wish to install within `compose.yaml` by modifying `VERSION`.
|
||||
|
||||
> [!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]
|
||||
@@ -44,36 +44,19 @@ docker compose --file ./compose.yaml up
|
||||
|
||||
You can then access the Windows virtual machine via a VNC connection to complete the Windows setup by navigating to http://127.0.0.1:8006 in your web browser.
|
||||
|
||||
After installing Windows, comment out the following lines in the `compose.yaml` file by prepending a '#':
|
||||
- `- ./oem:/oem`
|
||||
- `- /path/to/windows/install/media.iso:/custom.iso` (if relevant)
|
||||
|
||||
Then, copy this modified `compose.yaml` file to `~/.config/winapps/compose.yaml`.
|
||||
|
||||
```bash
|
||||
cp ./compose.yaml ~/.config/winapps/compose.yaml
|
||||
```
|
||||
|
||||
Finally, ensure the new configuration is applied by running the following:
|
||||
|
||||
```bash
|
||||
docker compose --file ./compose.yaml down
|
||||
docker compose --file ~/.config/winapps/compose.yaml up
|
||||
```
|
||||
|
||||
|
||||
### Changing `compose.yaml`
|
||||
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
|
||||
```
|
||||
|
||||
@@ -95,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`.
|
||||
|
||||
@@ -107,35 +96,18 @@ podman-compose --file ./compose.yaml up
|
||||
|
||||
You can then access the Windows virtual machine via a VNC connection to complete the Windows setup by navigating to http://127.0.0.1:8006 in your web browser.
|
||||
|
||||
After installing Windows, comment out the following lines in the `compose.yaml` file by prepending a '#':
|
||||
- `- ./oem:/oem`
|
||||
- `- /path/to/windows/install/media.iso:/custom.iso` (if relevant)
|
||||
|
||||
Then, copy this modified `compose.yaml` file to `~/.config/winapps/compose.yaml`.
|
||||
|
||||
```bash
|
||||
cp ./compose.yaml ~/.config/winapps/compose.yaml
|
||||
```
|
||||
|
||||
Finally, ensure the new configuration is applied by running the following:
|
||||
|
||||
```bash
|
||||
podman-compose --file ./compose.yaml down
|
||||
podman-compose --file ~/.config/winapps/compose.yaml up
|
||||
```
|
||||
|
||||
### Changing `compose.yaml`
|
||||
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
|
||||
```
|
||||
|
||||
|
@@ -132,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]
|
||||
|
@@ -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.
|
||||
|
||||
##
|
||||
|
||||

|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -9,12 +9,12 @@
|
||||
...
|
||||
}:
|
||||
let
|
||||
rev = "ae1a9e9ea7c958255905cfd056196b3bdc4aad45";
|
||||
hash = "sha256-tpEnMyJh6tutZKLNJi64V89QvZStdkyzZBuMQz6RPHw=";
|
||||
rev = "9b3f6c581791222a3a04508606755d6d0519f322";
|
||||
hash = "sha256-Hy/o5IY9HmTWaX54Ek5ABmppPpzgM+MdCrhzEzVmtwY=";
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "winapps-launcher";
|
||||
version = "0-unstable-2025-02-02";
|
||||
version = "0-unstable-2025-03-11";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "winapps-org";
|
||||
|
@@ -11,12 +11,12 @@
|
||||
...
|
||||
}:
|
||||
let
|
||||
rev = "73e71aff80eec564a154a5aca92cba901370a3c5";
|
||||
hash = "sha256-vUsVmyjkBQEIsa3La4dsLpLNsyfJPNHFjH5TXhLT+EE=";
|
||||
rev = "aa5b3e945526800da1b8891fd8b38272a4a6189d";
|
||||
hash = "sha256-nB56x76W+eyMqIturj26zDbKEMvp/IgDud/twz6pwCY=";
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "winapps";
|
||||
version = "0-unstable-2025-02-01";
|
||||
version = "0-unstable-2025-06-20";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "winapps-org";
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/setup.sh b/setup.sh
|
||||
index b7d930d6..18000c65 100755
|
||||
index 0debe4d..6aeea08 100755
|
||||
--- a/setup.sh
|
||||
+++ b/setup.sh
|
||||
@@ -39,8 +39,8 @@ readonly SYS_BIN_PATH="/usr/local/bin" # UNIX path to 'bin' dir
|
||||
@@ -21,7 +21,7 @@ index b7d930d6..18000c65 100755
|
||||
+readonly INQUIRER_PATH="@out@/src/install/inquirer.sh" # UNIX path to the 'inquirer' script, which is used to produce selection menus.
|
||||
|
||||
# REMOTE DESKTOP CONFIGURATION
|
||||
readonly VM_NAME="RDPWindows" # Name of the Windows VM (FOR 'libvirt' ONLY).
|
||||
readonly RDP_PORT=3389 # Port used for RDP on Windows.
|
||||
@@ -155,13 +155,6 @@ function waGetSourceCode() {
|
||||
echo -e "${WARNING_TEXT}[WARNING]${CLEAR_TEXT} You might want to remove your old installation on '${SCRIPT_DIR_PATH}'."
|
||||
fi
|
||||
|
84
setup.sh
84
setup.sh
@@ -73,7 +73,6 @@ readonly CONFIG_PATH="${HOME}/.config/winapps/winapps.conf" # UNIX path to the W
|
||||
readonly INQUIRER_PATH="./install/inquirer.sh" # UNIX path to the 'inquirer' script, which is used to produce selection menus.
|
||||
|
||||
# REMOTE DESKTOP CONFIGURATION
|
||||
readonly VM_NAME="RDPWindows" # Name of the Windows VM (FOR 'libvirt' ONLY).
|
||||
readonly RDP_PORT=3389 # Port used for RDP on Windows.
|
||||
readonly DOCKER_IP="127.0.0.1" # Localhost.
|
||||
|
||||
@@ -85,17 +84,20 @@ OPT_UNINSTALL=0 # Set to '1' if the user specifies '--uninstall'.
|
||||
OPT_AOSA=0 # Set to '1' if the user specifies '--setupAllOfficiallySupportedApps'.
|
||||
|
||||
# WINAPPS CONFIGURATION FILE
|
||||
RDP_USER="" # Imported variable.
|
||||
RDP_PASS="" # Imported variable.
|
||||
RDP_DOMAIN="" # Imported variable.
|
||||
RDP_IP="" # Imported variable.
|
||||
WAFLAVOR="docker" # Imported variable.
|
||||
RDP_SCALE=100 # Imported variable.
|
||||
RDP_FLAGS="" # Imported variable.
|
||||
MULTIMON="false" # Imported variable.
|
||||
DEBUG="true" # Imported variable.
|
||||
FREERDP_COMMAND="" # Imported variable.
|
||||
MULTI_FLAG="" # Set based on value of $MULTIMON.
|
||||
RDP_USER="" # Imported variable.
|
||||
RDP_PASS="" # Imported variable.
|
||||
RDP_DOMAIN="" # Imported variable.
|
||||
RDP_IP="" # Imported variable.
|
||||
VM_NAME="RDPWindows" # Name of the Windows VM (FOR 'libvirt' ONLY).
|
||||
WAFLAVOR="docker" # Imported variable.
|
||||
RDP_SCALE=100 # Imported variable.
|
||||
RDP_FLAGS="" # Imported variable.
|
||||
DEBUG="true" # Imported variable.
|
||||
FREERDP_COMMAND="" # Imported variable.
|
||||
|
||||
PORT_TIMEOUT=5 # Default port check timeout.
|
||||
RDP_TIMEOUT=30 # Default RDP connection test timeout.
|
||||
APP_SCAN_TIMEOUT=60 # Default application scan timeout.
|
||||
|
||||
# PERMISSIONS AND DIRECTORIES
|
||||
SUDO="" # Set to "sudo" if the user specifies '--system', or "" if the user specifies '--user'.
|
||||
@@ -988,7 +990,7 @@ function waCheckPortOpen() {
|
||||
fi
|
||||
|
||||
# Check for an open RDP port.
|
||||
if ! timeout 5 nc -z "$RDP_IP" "$RDP_PORT" &>/dev/null; then
|
||||
if ! timeout "$PORT_TIMEOUT" nc -z "$RDP_IP" "$RDP_PORT" &>/dev/null; then
|
||||
# Complete the previous line.
|
||||
echo -e "${FAIL_TEXT}Failed!${CLEAR_TEXT}\n"
|
||||
|
||||
@@ -1001,6 +1003,7 @@ function waCheckPortOpen() {
|
||||
# Display the suggested action(s).
|
||||
echo "--------------------------------------------------------------------------------"
|
||||
echo "Please ensure Remote Desktop is configured on Windows as per the WinApps README."
|
||||
echo -e "Then you can try increasing the ${COMMAND_TEXT}PORT_TIMEOUT${CLEAR_TEXT} in ${COMMAND_TEXT}${CONFIG_PATH}${CLEAR_TEXT}."
|
||||
echo "--------------------------------------------------------------------------------"
|
||||
|
||||
# Terminate the script.
|
||||
@@ -1043,10 +1046,7 @@ function waCheckRDPAccess() {
|
||||
/p:"$RDP_PASS" \
|
||||
/scale:"$RDP_SCALE" \
|
||||
+auto-reconnect \
|
||||
+home-drive \
|
||||
-wallpaper \
|
||||
+dynamic-resolution \
|
||||
/app:program:"C:\Windows\System32\cmd.exe",cmd:"/C type NUL > "$TEST_PATH_WIN" && tsdiscon" \
|
||||
/app:program:"C:\Windows\System32\cmd.exe",cmd:"/C type NUL > $TEST_PATH_WIN && tsdiscon" \
|
||||
/v:"$RDP_IP" &>"$FREERDP_LOG" &
|
||||
|
||||
# Store the FreeRDP process ID.
|
||||
@@ -1055,8 +1055,8 @@ function waCheckRDPAccess() {
|
||||
# Initialise the time counter.
|
||||
ELAPSED_TIME=0
|
||||
|
||||
# Wait a maximum of 30 seconds for the background process to complete.
|
||||
while [ "$ELAPSED_TIME" -lt 30 ]; do
|
||||
# Wait a maximum of $RDP_TIMEOUT seconds for the background process to complete.
|
||||
while [ "$ELAPSED_TIME" -lt "$RDP_TIMEOUT" ]; do
|
||||
# Check if the FreeRDP process is complete or if the test file exists.
|
||||
if ! ps -p "$FREERDP_PROC" &>/dev/null || [ -f "$TEST_PATH" ]; then
|
||||
break
|
||||
@@ -1091,6 +1091,7 @@ function waCheckRDPAccess() {
|
||||
echo " - Ensure the user is logged out of Windows prior to initiating the WinApps installation."
|
||||
echo " - Ensure the credentials within the WinApps configuration file are correct."
|
||||
echo -e " - Utilise a new certificate by removing relevant certificate(s) in ${COMMAND_TEXT}${HOME}/.config/freerdp/server${CLEAR_TEXT}."
|
||||
echo -e " - Try increasing the ${COMMAND_TEXT}RDP_TIMEOUT${CLEAR_TEXT} in ${COMMAND_TEXT}${CONFIG_PATH}${CLEAR_TEXT}."
|
||||
echo " - If using 'libvirt', ensure the Windows VM is correctly named as specified within the README."
|
||||
echo " - If using 'libvirt', ensure 'Remote Desktop' is enabled within the Windows VM."
|
||||
echo " - If using 'libvirt', ensure you have merged 'RDPApps.reg' into the Windows VM's registry."
|
||||
@@ -1137,6 +1138,10 @@ function waFindInstalled() {
|
||||
# Extract the name of the application from the absolute path of the folder.
|
||||
APPLICATION="$(basename "$APPLICATION")"
|
||||
|
||||
if [[ "$APPLICATION" == "ms-office-protocol-handler.desktop" ]]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
# Source 'Info' File Containing:
|
||||
# - The Application Name (FULL_NAME)
|
||||
# - The Shortcut Name (NAME)
|
||||
@@ -1172,9 +1177,6 @@ function waFindInstalled() {
|
||||
/p:"$RDP_PASS" \
|
||||
/scale:"$RDP_SCALE" \
|
||||
+auto-reconnect \
|
||||
+home-drive \
|
||||
-wallpaper \
|
||||
+dynamic-resolution \
|
||||
/app:program:"C:\Windows\System32\cmd.exe",cmd:"/C "$BATCH_SCRIPT_PATH_WIN"" \
|
||||
/v:"$RDP_IP" &>"$FREERDP_LOG" &
|
||||
|
||||
@@ -1184,8 +1186,8 @@ function waFindInstalled() {
|
||||
# Initialise the time counter.
|
||||
ELAPSED_TIME=0
|
||||
|
||||
# Wait a maximum of 60 seconds for the batch script to finish running.
|
||||
while [ $ELAPSED_TIME -lt 60 ]; do
|
||||
# Wait a maximum of $APP_SCAN_TIMEOUT seconds for the batch script to finish running.
|
||||
while [ $ELAPSED_TIME -lt "$APP_SCAN_TIMEOUT" ]; do
|
||||
# Check if the FreeRDP process is complete or if the 'installed' file exists.
|
||||
if ! ps -p "$FREERDP_PROC" &>/dev/null || [ -f "$INST_FILE_PATH" ]; then
|
||||
break
|
||||
@@ -1216,6 +1218,7 @@ function waFindInstalled() {
|
||||
# Display the suggested action(s).
|
||||
echo "--------------------------------------------------------------------------------"
|
||||
echo -e "Please view the log at ${COMMAND_TEXT}${FREERDP_LOG}${CLEAR_TEXT}."
|
||||
echo -e "You can try increasing the ${COMMAND_TEXT}APP_SCAN_TIMEOUT${CLEAR_TEXT} in ${COMMAND_TEXT}${CONFIG_PATH}${CLEAR_TEXT}."
|
||||
echo "--------------------------------------------------------------------------------"
|
||||
|
||||
# Terminate the script.
|
||||
@@ -1320,9 +1323,9 @@ MimeType=${MIME_TYPES}"
|
||||
function waConfigureOfficiallySupported() {
|
||||
# Declare variables.
|
||||
local OSA_LIST=() # Stores a list of all officially supported applications installed on Windows.
|
||||
local OFFICE_APPS=("access" "access-o365" "access-o365-x86" "access-x86" "adobe-cc" "acrobat9" "acrobat-x-pro" "aftereffects-cc" "audition-cc" "bridge-cc" "bridge-cc-x86" "bridge-cs6" "bridge-cs6-x86" "cmd" "dymo-connect" "excel" "excel-o365" "excel-o365-x86" "excel-x86" "excel-x86-2010" "explorer" "iexplorer" "illustrator-cc" "lightroom-cc" "linqpad8" "mirc" "mspaint" "onenote" "onenote-o365" "onenote-o365-x86" "onenote-x86" "outlook" "outlook-o365" "outlook-o365-x86" "powerpoint" "powerpoint-o365" "powerpoint-o365-x86" "powerpoint-x86" "publisher" "publisher-o365" "publisher-o365-x86" "publisher-x86" "project" "project-x86" "remarkable-desktop" "ssms20" "visual-studio-comm" "visual-studio-ent" "visual-studio-pro" "visio" "visio-x86" "word" "word-o365" "word-o365-x86" "word-x86" "word-x86-2010")
|
||||
|
||||
# Read the list of officially supported applications that are installed on Windows into an array, returning an empty array if no such files exist.
|
||||
# This will remove leading and trailing whitespace characters as well as ignore empty lines.
|
||||
readarray -t OSA_LIST < <(grep -v '^[[:space:]]*$' "$INST_FILE_PATH" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' 2>/dev/null || true)
|
||||
|
||||
# Create application entries for each officially supported application.
|
||||
@@ -1336,6 +1339,19 @@ function waConfigureOfficiallySupported() {
|
||||
# Configure the application.
|
||||
waConfigureApp "$OSA" svg
|
||||
|
||||
# Check if the application is an Office app and copy the protocol handler.
|
||||
if [[ " ${OFFICE_APPS[*]} " == *" $OSA "* ]]; then
|
||||
# Determine the target directory based on whether the installation is for the system or user.
|
||||
if [[ "$OPT_SYSTEM" -eq 1 ]]; then
|
||||
TARGET_DIR="$SYS_APP_PATH"
|
||||
else
|
||||
TARGET_DIR="$USER_APP_PATH"
|
||||
fi
|
||||
|
||||
# Copy the protocol handler to the appropriate directory.
|
||||
$SUDO cp "./apps/ms-office-protocol-handler.desktop" "$TARGET_DIR/ms-office-protocol-handler.desktop"
|
||||
fi
|
||||
|
||||
# Print feedback.
|
||||
echo -e "${DONE_TEXT}Done!${CLEAR_TEXT}"
|
||||
done
|
||||
@@ -1558,13 +1574,6 @@ function waInstall() {
|
||||
# Check for missing dependencies.
|
||||
waCheckInstallDependencies
|
||||
|
||||
# Update $MULTI_FLAG.
|
||||
if [[ $MULTIMON == "true" ]]; then
|
||||
MULTI_FLAG="/multimon"
|
||||
else
|
||||
MULTI_FLAG="+span"
|
||||
fi
|
||||
|
||||
# Update $RDP_SCALE.
|
||||
waFixScale
|
||||
|
||||
@@ -1667,10 +1676,21 @@ function waEnsureOnPath() {
|
||||
# Name: 'waUninstall'
|
||||
# Role: Uninstalls WinApps.
|
||||
function waUninstall() {
|
||||
|
||||
# Print feedback.
|
||||
[ "$OPT_SYSTEM" -eq 1 ] && echo -e "${BOLD_TEXT}REMOVING SYSTEM INSTALLATION.${CLEAR_TEXT}"
|
||||
[ "$OPT_USER" -eq 1 ] && echo -e "${BOLD_TEXT}REMOVING USER INSTALLATION.${CLEAR_TEXT}"
|
||||
|
||||
# Determine the target directory for the protocol handler based on the installation type.
|
||||
if [[ "$OPT_SYSTEM" -eq 1 ]]; then
|
||||
TARGET_DIR="$SYS_APP_PATH"
|
||||
else
|
||||
TARGET_DIR="$USER_APP_PATH"
|
||||
fi
|
||||
|
||||
# Remove the 'ms-office-protocol-handler.desktop' file if it exists.
|
||||
$SUDO rm -f "$TARGET_DIR/ms-office-protocol-handler.desktop"
|
||||
|
||||
# Declare variables.
|
||||
local WINAPPS_DESKTOP_FILES=() # Stores a list of '.desktop' file paths.
|
||||
local WINAPPS_APP_BASH_SCRIPTS=() # Stores a list of bash script paths.
|
||||
|
Reference in New Issue
Block a user