Compare commits
	
		
			64 Commits
		
	
	
		
			feat-dco
			...
			oskardotgl
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					02a26efb70 | ||
| 
						 | 
					3b0f785651 | ||
| 
						 | 
					305b2c2fef | ||
| 
						 | 
					9ff17d1baa | ||
| 
						 | 
					666981f6bf | ||
| 
						 | 
					b03c1654eb | ||
| 
						 | 
					d083db1cc0 | ||
| 
						 | 
					acba10d245 | ||
| 
						 | 
					1578e9ba08 | ||
| 
						 | 
					7bda63e2db | ||
| 
						 | 
					848a57f780 | ||
| 
						 | 
					3cecd3d101 | ||
| 
						 | 
					1a8ab1cb88 | ||
| 
						 | 
					7018afa1bd | ||
| 
						 | 
					1ef12a0308 | ||
| 
						 | 
					80ff5568fa | ||
| 
						 | 
					fd838be7e6 | ||
| 
						 | 
					20a5866eaf | ||
| 
						 | 
					c11a0b872f | ||
| 
						 | 
					33b13ed510 | ||
| 
						 | 
					471bfdce58 | ||
| 
						 | 
					ec292002f9 | ||
| 
						 | 
					8fcca24586 | ||
| 
						 | 
					af32e7a43f | ||
| 
						 | 
					5b2caa744a | ||
| 
						 | 
					74c7c1e40a | ||
| 
						 | 
					30f46e8c8c | ||
| 
						 | 
					32a93f5800 | ||
| 
						 | 
					af2871b808 | ||
| 
						 | 
					b6bb7ca37f | ||
| 
						 | 
					e5e83fee30 | ||
| 
						 | 
					e6870012ed | ||
| 
						 | 
					7d3a9e9126 | ||
| 
						 | 
					c2e662ad0e | ||
| 
						 | 
					748f3e2251 | ||
| 
						 | 
					1c2f3b77ca | ||
| 
						 | 
					3ac8765a76 | ||
| 
						 | 
					88b6ee00a0 | ||
| 
						 | 
					104b7c16c9 | ||
| 
						 | 
					982de8a0f8 | ||
| 
						 | 
					43f86b9821 | ||
| 
						 | 
					cdb5c3ef7f | ||
| 
						 | 
					b53682be6c | ||
| 
						 | 
					fbb382e1e8 | ||
| 
						 | 
					a04f5db39a | ||
| 
						 | 
					9708ca2825 | ||
| 
						 | 
					3f909c5ec0 | ||
| 
						 | 
					836f3703f6 | ||
| 
						 | 
					53e980a8e8 | ||
| 
						 | 
					bc8ac155d4 | ||
| 
						 | 
					5104e0d400 | ||
| 
						 | 
					a6a51b2ccf | ||
| 
						 | 
					b203b6d252 | ||
| 
						 | 
					abb3d56b7e | ||
| 
						 | 
					fd1676092a | ||
| 
						 | 
					d66d41ed9a | ||
| 
						 | 
					97d10a5724 | ||
| 
						 | 
					b704593972 | ||
| 
						 | 
					e6440a3923 | ||
| 
						 | 
					d919fb8e64 | ||
| 
						 | 
					1a0029ad47 | ||
| 
						 | 
					3f5bba7f0e | ||
| 
						 | 
					aa96e56130 | ||
| 
						 | 
					dcb75c29f4 | 
							
								
								
									
										4
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,4 @@
 | 
			
		||||
# Ensure Windows-friendly line endings and encoding for batch and registry files
 | 
			
		||||
*.bat text eol=crlf
 | 
			
		||||
*.cmd text eol=crlf
 | 
			
		||||
*.reg text eol=crlf working-tree-encoding=UTF-16LE-BOM
 | 
			
		||||
							
								
								
									
										19
									
								
								.github/CONTRIBUTING.md
									
									
									
									
										vendored
									
									
								
							
							
						
						@@ -7,6 +7,25 @@ Thank you for contributing to winapps! Before you can contribute, we ask some th
 | 
			
		||||
- 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.
 | 
			
		||||
 | 
			
		||||
## About using Artificial Intelligence for pull requests
 | 
			
		||||
 | 
			
		||||
> [!IMPORTANT]
 | 
			
		||||
> If you are using any kind of AI assistance to contribute to WinApps, it must be disclosed in the pull request.
 | 
			
		||||
 | 
			
		||||
### AI-generated code
 | 
			
		||||
 | 
			
		||||
When using AI assistance, we expect contributors to understand the code that is produced and be able to answer critical questions about it. It isn't a maintainers job to review a PR so broken that it requires significant rework to be acceptable. In a perfect world, AI assistance would produce equal or higher quality work than any human. That isn't the world we live in today, and in most cases it's generating slop. A good rule of thumb is that if another person can easily tell a pull request is AI-generated, it needs some more work.
 | 
			
		||||
 | 
			
		||||
### Other kinds of AI assistance
 | 
			
		||||
 | 
			
		||||
Currently, [CodeRabbit](https://coderabbit.ai) is configured to review pull requests *on demand* when `@coderabbitai review` is commented on pull requests.
 | 
			
		||||
However, we ask of you to not use it for PRs of which you are the authors unless asked to. Additionally, please do not AI-generate descriptions for larger pull requests or reviews by hand. This does not include things like commit messages.
 | 
			
		||||
 | 
			
		||||
### AI "Art"
 | 
			
		||||
 | 
			
		||||
We do not condone AI-generated "art", including AI-written and AI-produced tutorials, as well as AI-generated icons for contributed applications.
 | 
			
		||||
Additionally, please do not share these kinds of media on any official WinApps channel.
 | 
			
		||||
 | 
			
		||||
## Guidelines for pre-defined applications
 | 
			
		||||
 | 
			
		||||
Some pre-defined applications contain a header like:
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										126
									
								
								.github/cla-signatures.csv
									
									
									
									
										vendored
									
									
								
							
							
						
						@@ -1,65 +1,65 @@
 | 
			
		||||
User Name;Repository Owner;Repository Name;CLA Title;Gist URL;Gist Version;Signed At;Revoked At;Signed for Organization
 | 
			
		||||
sparky3387;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-08-31T12:31:32.643Z;;TRUE
 | 
			
		||||
matheusmelo18;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-08-30T15:57:01.072Z;;TRUE
 | 
			
		||||
Libadoxon;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-08-29T09:53:59.385Z;;TRUE
 | 
			
		||||
Dreamail;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-08-29T06:43:07.752Z;;TRUE
 | 
			
		||||
queenkjuul;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-08-27T16:19:30.937Z;;TRUE
 | 
			
		||||
DevZiaus;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-08-25T21:17:17.792Z;;TRUE
 | 
			
		||||
nlogozzo;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-08-24T15:25:25.197Z;;TRUE
 | 
			
		||||
osalbahr;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-08-24T15:09:01.053Z;;TRUE
 | 
			
		||||
9Morello;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-08-19T12:14:39.707Z;;TRUE
 | 
			
		||||
Sunrongguo2008;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-08-06T15:56:33.681Z;;TRUE
 | 
			
		||||
wovw;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-07-31T04:14:50.710Z;;TRUE
 | 
			
		||||
denisstrizhkin;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-07-07T14:43:28.482Z;;TRUE
 | 
			
		||||
joeshachaf;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-06-29T21:17:46.041Z;;TRUE
 | 
			
		||||
Aldo-f;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-06-19T19:26:32.522Z;;TRUE
 | 
			
		||||
Mr-MyDooM;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-06-10T03:01:36.680Z;;TRUE
 | 
			
		||||
Theowulf-dev;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-06-10T00:44:09.838Z;;TRUE
 | 
			
		||||
JoAllg;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-06-04T21:04:46.931Z;;TRUE
 | 
			
		||||
sears-s;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-05-24T02:56:00.518Z;;TRUE
 | 
			
		||||
egvrl;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-05-15T14:33:38.598Z;;TRUE
 | 
			
		||||
thefiredragon;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-04-19T19:06:36.941Z;;TRUE
 | 
			
		||||
arwarw;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-04-19T16:12:55.873Z;;TRUE
 | 
			
		||||
linull24;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-04-11T17:32:09.319Z;;TRUE
 | 
			
		||||
kroese;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-04-02T15:26:03.840Z;;TRUE
 | 
			
		||||
dasinking;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-03-25T00:54:49.660Z;;TRUE
 | 
			
		||||
tstormn3tw0rk;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-03-21T07:08:26.583Z;;TRUE
 | 
			
		||||
limemane;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-03-10T16:38:38.276Z;;TRUE
 | 
			
		||||
borekon;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-02-24T11:40:24.101Z;;TRUE
 | 
			
		||||
whitewolf101;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-02-23T03:29:22.061Z;;TRUE
 | 
			
		||||
raffaem;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-02-16T14:28:21.523Z;;TRUE
 | 
			
		||||
mbekkomo;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-02-02T11:40:36.462Z;;TRUE
 | 
			
		||||
toastedcrumpets;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-01-16T13:53:21.167Z;;TRUE
 | 
			
		||||
starbr3aker;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-01-12T17:30:37.473Z;;TRUE
 | 
			
		||||
Deluxe-7;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-01-11T01:48:33.638Z;;TRUE
 | 
			
		||||
stceum;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-01-03T07:14:43.695Z;;TRUE
 | 
			
		||||
molostovvs;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-12-13T07:48:02.950Z;;TRUE
 | 
			
		||||
mindset-tk;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-11-25T22:30:30.062Z;;TRUE
 | 
			
		||||
lunatic-gh;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-11-18T20:39:24.413Z;;TRUE
 | 
			
		||||
Username404-59;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-10-08T21:06:39.926Z;;TRUE
 | 
			
		||||
CHN-beta;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-10-05T06:12:56.133Z;;TRUE
 | 
			
		||||
eylenburg;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-10-02T13:49:45.131Z;;TRUE
 | 
			
		||||
tristanRW;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-09-23T14:48:15.158Z;;TRUE
 | 
			
		||||
MopigamesYT;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-09-19T14:54:16.014Z;;TRUE
 | 
			
		||||
queler;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-09-09T03:33:59.760Z;;TRUE
 | 
			
		||||
C0rn3j;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-09-01T22:30:46.600Z;;TRUE
 | 
			
		||||
FixeQyt;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-08-30T14:22:17.912Z;;TRUE
 | 
			
		||||
RheaBarar;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-08-19T07:36:53.003Z;;TRUE
 | 
			
		||||
Coruscant11;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-08-18T12:46:39.393Z;;TRUE
 | 
			
		||||
escapefreeg;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-08-11T03:04:17.227Z;;TRUE
 | 
			
		||||
itiligent;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-07-26T04:13:53.616Z;;TRUE
 | 
			
		||||
gordoncheong;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-07-25T11:14:28.928Z;;TRUE
 | 
			
		||||
bkanuka;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-07-08T19:31:49.299Z;;TRUE
 | 
			
		||||
Kazevic;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-07-02T06:46:56.451Z;;TRUE
 | 
			
		||||
KernelGhost;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-07-01T06:44:06.681Z;;TRUE
 | 
			
		||||
MrTumnis;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-06-13T00:24:25.715Z;;TRUE
 | 
			
		||||
Alchemi1963;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-05-30T21:48:08.692Z;;TRUE
 | 
			
		||||
sparky3387;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-08-31T12:31:32.643Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
matheusmelo18;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-08-30T15:57:01.072Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
Libadoxon;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-08-29T09:53:59.385Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
Dreamail;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-08-29T06:43:07.752Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
queenkjuul;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-08-27T16:19:30.937Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
DevZiaus;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-08-25T21:17:17.792Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
nlogozzo;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-08-24T15:25:25.197Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
osalbahr;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-08-24T15:09:01.053Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
9Morello;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-08-19T12:14:39.707Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
Sunrongguo2008;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-08-06T15:56:33.681Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
wovw;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-07-31T04:14:50.710Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
denisstrizhkin;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-07-07T14:43:28.482Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
joeshachaf;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-06-29T21:17:46.041Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
Aldo-f;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-06-19T19:26:32.522Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
Mr-MyDooM;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-06-10T03:01:36.680Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
Theowulf-dev;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-06-10T00:44:09.838Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
JoAllg;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-06-04T21:04:46.931Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
sears-s;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-05-24T02:56:00.518Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
egvrl;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-05-15T14:33:38.598Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
thefiredragon;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-04-19T19:06:36.941Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
arwarw;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-04-19T16:12:55.873Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
linull24;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-04-11T17:32:09.319Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
kroese;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-04-02T15:26:03.840Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
dasinking;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-03-25T00:54:49.660Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
tstormn3tw0rk;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-03-21T07:08:26.583Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
limemane;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-03-10T16:38:38.276Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
borekon;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-02-24T11:40:24.101Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
whitewolf101;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-02-23T03:29:22.061Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
raffaem;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-02-16T14:28:21.523Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
mbekkomo;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-02-02T11:40:36.462Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
toastedcrumpets;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-01-16T13:53:21.167Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
starbr3aker;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-01-12T17:30:37.473Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
Deluxe-7;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-01-11T01:48:33.638Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
stceum;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2025-01-03T07:14:43.695Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
molostovvs;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-12-13T07:48:02.950Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
mindset-tk;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-11-25T22:30:30.062Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
lunatic-gh;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-11-18T20:39:24.413Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
Username404-59;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-10-08T21:06:39.926Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
CHN-beta;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-10-05T06:12:56.133Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
eylenburg;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-10-02T13:49:45.131Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
tristanRW;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-09-23T14:48:15.158Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
MopigamesYT;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-09-19T14:54:16.014Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
queler;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-09-09T03:33:59.760Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
C0rn3j;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-09-01T22:30:46.600Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
FixeQyt;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-08-30T14:22:17.912Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
RheaBarar;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-08-19T07:36:53.003Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
Coruscant11;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-08-18T12:46:39.393Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
escapefreeg;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-08-11T03:04:17.227Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
itiligent;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-07-26T04:13:53.616Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
gordoncheong;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-07-25T11:14:28.928Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
bkanuka;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-07-08T19:31:49.299Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
Kazevic;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-07-02T06:46:56.451Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
KernelGhost;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-07-01T06:44:06.681Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
MrTumnis;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-06-13T00:24:25.715Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
Alchemi1963;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-05-30T21:48:08.692Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
GreatNovaDragon;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2024-04-20T20:34:17.381Z;2024-09-21T21:48:55.765Z;TRUE
 | 
			
		||||
Matt-M-3;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2023-12-04T17:31:44.383Z;;TRUE
 | 
			
		||||
Hyperspeed1313;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2023-11-10T18:19:32.080Z;;TRUE
 | 
			
		||||
notPlancha;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2023-09-04T18:07:58.859Z;;TRUE
 | 
			
		||||
freechelmi;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2023-07-16T08:31:50.083Z;;TRUE
 | 
			
		||||
LDprg;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2023-07-16T07:08:14.876Z;;TRUE
 | 
			
		||||
fbartels;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2023-07-15T19:49:07.019Z;;TRUE
 | 
			
		||||
oskardotglobal;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2023-07-15T15:09:49.368Z;;TRUE
 | 
			
		||||
Leonardo-DGS;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2023-07-15T15:07:40.778Z;;TRUE
 | 
			
		||||
Matt-M-3;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2023-12-04T17:31:44.383Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
Hyperspeed1313;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2023-11-10T18:19:32.080Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
notPlancha;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2023-09-04T18:07:58.859Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
freechelmi;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2023-07-16T08:31:50.083Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
LDprg;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2023-07-16T07:08:14.876Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
fbartels;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2023-07-15T19:49:07.019Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
oskardotglobal;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2023-07-15T15:09:49.368Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
Leonardo-DGS;winapps-org;;fcla.md;https://gist.github.com/oskardotglobal/35f0a72eb45fcc7087e535561383dbc5;1f2d08888e405a91582607bf95176a5755363929;2023-07-15T15:07:40.778Z;2025-09-04T11:04:01.000Z;TRUE
 | 
			
		||||
 
 | 
			
		||||
		
		
			
  | 
@@ -8,13 +8,15 @@ repos:
 | 
			
		||||
        args: [ "775" ]
 | 
			
		||||
        files: (\.sh|winapps)$
 | 
			
		||||
      - id: forbid-crlf
 | 
			
		||||
        exclude: '\.(bat|cmd|reg)$'
 | 
			
		||||
      - id: remove-crlf
 | 
			
		||||
        exclude: '\.(bat|cmd|reg)$'
 | 
			
		||||
      - id: forbid-tabs
 | 
			
		||||
      - id: remove-tabs
 | 
			
		||||
        args: [ --whitespaces-count, "4" ]
 | 
			
		||||
 | 
			
		||||
  - repo: https://github.com/pre-commit/pre-commit-hooks
 | 
			
		||||
    rev: v4.6.0
 | 
			
		||||
    rev: v6.0.0
 | 
			
		||||
    hooks:
 | 
			
		||||
      - id: check-added-large-files
 | 
			
		||||
      - id: check-case-conflict
 | 
			
		||||
@@ -32,18 +34,19 @@ repos:
 | 
			
		||||
      - id: end-of-file-fixer
 | 
			
		||||
      - id: fix-byte-order-marker
 | 
			
		||||
      - id: mixed-line-ending
 | 
			
		||||
        exclude: '\.(bat|cmd|reg)$'
 | 
			
		||||
      - id: pretty-format-json
 | 
			
		||||
        args: [ "--autofix", "--no-sort-keys" ]
 | 
			
		||||
      - id: sort-simple-yaml
 | 
			
		||||
      - id: trailing-whitespace
 | 
			
		||||
 | 
			
		||||
  - repo: https://github.com/scop/pre-commit-shfmt
 | 
			
		||||
    rev: v3.8.0-1
 | 
			
		||||
    rev: v3.12.0-2
 | 
			
		||||
    hooks:
 | 
			
		||||
      - id: shfmt
 | 
			
		||||
        args: ["-i", "4", "-ci", "-s"]
 | 
			
		||||
 | 
			
		||||
  - repo: https://github.com/shellcheck-py/shellcheck-py
 | 
			
		||||
    rev: v0.10.0.1
 | 
			
		||||
    rev: v0.11.0.1
 | 
			
		||||
    hooks:
 | 
			
		||||
      - id: shellcheck
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										71
									
								
								README.md
									
									
									
									
									
								
							
							
						
						@@ -124,6 +124,33 @@ Contributing to the list of supported applications is encouraged through submiss
 | 
			
		||||
            (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>
 | 
			
		||||
        <!-- Affinity Designer 2 -->
 | 
			
		||||
        <td>
 | 
			
		||||
            <img src="apps/afdesign/icon.svg" width="100">
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
            <b>Affinity Designer 2</b><br>
 | 
			
		||||
            <i><a href="https://commons.wikimedia.org/wiki/File:Affinity_Designer_V2_icon.svg">Icon</a> under CC-BY-SA 4.0 via Serif Ltd.</i>
 | 
			
		||||
        </td>
 | 
			
		||||
    </tr>
 | 
			
		||||
    <tr>
 | 
			
		||||
        <!-- Affinity Photo 2 -->
 | 
			
		||||
        <td>
 | 
			
		||||
            <img src="apps/afphoto/icon.svg" width="100">
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
            <b>Affinity Photo 2</b><br>
 | 
			
		||||
            <i><a href="https://commons.wikimedia.org/wiki/File:Affinity_Photo_V2_icon.svg">Icon</a> under CC-BY-SA 4.0 via Serif Ltd.</i>
 | 
			
		||||
        </td>
 | 
			
		||||
        <!-- Affinity Publisher 2 -->
 | 
			
		||||
        <td>
 | 
			
		||||
            <img src="apps/afpub/icon.svg" width="100">
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
            <b>Affinity Publisher 2</b><br>
 | 
			
		||||
            <i><a href="https://commons.wikimedia.org/wiki/File:Affinity_Publisher_V2_icon.svg">Icon</a> under CC-BY-SA 4.0 via Serif Ltd.</i>
 | 
			
		||||
        </td>
 | 
			
		||||
    <tr>
 | 
			
		||||
        <!-- Command Prompt -->
 | 
			
		||||
        <td>
 | 
			
		||||
            <img src="apps/cmd/icon.svg" width="100">
 | 
			
		||||
@@ -133,8 +160,6 @@ Contributing to the list of supported applications is encouraged through submiss
 | 
			
		||||
            (cmd.exe)<br>
 | 
			
		||||
            <i><a href="https://github.com/microsoft/terminal/blob/main/res/terminal/Terminal.svg">Icon</a> under <a href="https://github.com/microsoft/terminal/blob/main/LICENSE">MIT license</a>.</i>
 | 
			
		||||
        </td>
 | 
			
		||||
    </tr>
 | 
			
		||||
    <tr>
 | 
			
		||||
        <!-- File Explorer -->
 | 
			
		||||
        <td>
 | 
			
		||||
            <img src="apps/explorer/icon.svg" width="100">
 | 
			
		||||
@@ -144,6 +169,8 @@ Contributing to the list of supported applications is encouraged through submiss
 | 
			
		||||
            (Windows Explorer)<br>
 | 
			
		||||
            <i><a href="https://commons.wikimedia.org/wiki/File:Windows_Explorer.svg">Icon</a> in the Public Domain.</i>
 | 
			
		||||
        </td>
 | 
			
		||||
    </tr>
 | 
			
		||||
    <tr>
 | 
			
		||||
        <!-- Internet Explorer -->
 | 
			
		||||
        <td>
 | 
			
		||||
            <img src="apps/iexplorer/icon.svg" width="100">
 | 
			
		||||
@@ -153,8 +180,6 @@ Contributing to the list of supported applications is encouraged through submiss
 | 
			
		||||
            (11)<br>
 | 
			
		||||
            <i><a href="https://commons.wikimedia.org/wiki/File:Internet_Explorer_10%2B11_logo.svg">Icon</a> in the Public Domain.</i>
 | 
			
		||||
        </td>
 | 
			
		||||
    </tr>
 | 
			
		||||
    <tr>
 | 
			
		||||
         <!-- Microsoft Access -->
 | 
			
		||||
        <td>
 | 
			
		||||
            <img src="apps/access/icon.svg" width="100">
 | 
			
		||||
@@ -164,6 +189,8 @@ Contributing to the list of supported applications is encouraged through submiss
 | 
			
		||||
            (2016, 2019, o365)<br>
 | 
			
		||||
            <i><a href="https://commons.wikimedia.org/wiki/File:Microsoft_Office_Access_(2019-present).svg">Icon</a> in the Public Domain.</i>
 | 
			
		||||
        </td>
 | 
			
		||||
    </tr>
 | 
			
		||||
    <tr>
 | 
			
		||||
        <!-- Microsoft Excel -->
 | 
			
		||||
        <td>
 | 
			
		||||
            <img src="apps/excel/icon.svg" width="100">
 | 
			
		||||
@@ -173,8 +200,6 @@ Contributing to the list of supported applications is encouraged through submiss
 | 
			
		||||
            (2016, 2019, o365)<br>
 | 
			
		||||
            <i><a href="https://en.m.wikipedia.org/wiki/File:Microsoft_Office_Excel_(2019%E2%80%93present).svg">Icon</a> in the Public Domain.</i>
 | 
			
		||||
        </td>
 | 
			
		||||
    </tr>
 | 
			
		||||
    <tr>
 | 
			
		||||
        <!-- Microsoft Word -->
 | 
			
		||||
        <td>
 | 
			
		||||
            <img src="apps/word/icon.svg" width="100">
 | 
			
		||||
@@ -184,6 +209,8 @@ Contributing to the list of supported applications is encouraged through submiss
 | 
			
		||||
            (2016, 2019, o365)<br>
 | 
			
		||||
            <i><a href="https://en.m.wikipedia.org/wiki/File:Microsoft_Office_Word_(2019%E2%80%93present).svg">Icon</a> in the Public Domain.</i>
 | 
			
		||||
        </td>
 | 
			
		||||
    </tr>
 | 
			
		||||
    <tr>
 | 
			
		||||
        <!-- Microsoft OneNote -->
 | 
			
		||||
        <td>
 | 
			
		||||
            <img src="apps/onenote/icon.svg" width="100">
 | 
			
		||||
@@ -193,8 +220,6 @@ Contributing to the list of supported applications is encouraged through submiss
 | 
			
		||||
            (2016, 2019, o365)<br>
 | 
			
		||||
            <i><a href="https://en.m.wikipedia.org/wiki/File:Microsoft_Office_OneNote_(2019%E2%80%93present).svg">Icon</a> in the Public Domain.</i>
 | 
			
		||||
        </td>
 | 
			
		||||
    </tr>
 | 
			
		||||
    <tr>
 | 
			
		||||
        <!-- Microsoft Outlook -->
 | 
			
		||||
        <td>
 | 
			
		||||
            <img src="apps/outlook/icon.svg" width="100">
 | 
			
		||||
@@ -204,6 +229,8 @@ Contributing to the list of supported applications is encouraged through submiss
 | 
			
		||||
            (2016, 2019, o365)<br>
 | 
			
		||||
            <i><a href="https://en.m.wikipedia.org/wiki/File:Microsoft_Office_Outlook_(2018%E2%80%93present).svg">Icon</a> in the Public Domain.</i>
 | 
			
		||||
        </td>
 | 
			
		||||
    </tr>
 | 
			
		||||
    <tr>
 | 
			
		||||
        <!-- Microsoft PowerPoint -->
 | 
			
		||||
        <td>
 | 
			
		||||
            <img src="apps/powerpoint/icon.svg" width="100">
 | 
			
		||||
@@ -213,8 +240,6 @@ Contributing to the list of supported applications is encouraged through submiss
 | 
			
		||||
            (2016, 2019, o365)<br>
 | 
			
		||||
            <i><a href="https://en.m.wikipedia.org/wiki/File:Microsoft_Office_PowerPoint_(2019%E2%80%93present).svg">Icon</a> in the Public Domain.</i>
 | 
			
		||||
            </td>
 | 
			
		||||
    </tr>
 | 
			
		||||
    <tr>
 | 
			
		||||
        <!-- Microsoft Publisher -->
 | 
			
		||||
        <td>
 | 
			
		||||
            <img src="apps/publisher/icon.svg" width="100">
 | 
			
		||||
@@ -224,6 +249,8 @@ Contributing to the list of supported applications is encouraged through submiss
 | 
			
		||||
            (2016, 2019, o365)<br>
 | 
			
		||||
            <i><a href="https://en.m.wikipedia.org/wiki/File:Microsoft_Office_Publisher_(2019-present).svg">Icon</a> in the Public Domain.</i>
 | 
			
		||||
        </td>
 | 
			
		||||
    </tr>
 | 
			
		||||
    <tr>
 | 
			
		||||
        <!-- Microsoft Visio -->
 | 
			
		||||
        <td>
 | 
			
		||||
            <img src="apps/visio/icon.svg" width="100">
 | 
			
		||||
@@ -233,8 +260,6 @@ Contributing to the list of supported applications is encouraged through submiss
 | 
			
		||||
            (Standard/Pro. 2021, Plan 2)<br>
 | 
			
		||||
            <i><a href="https://en.m.wikipedia.org/wiki/File:Microsoft_Office_Visio_(2019).svg">Icon</a> in the Public Domain.</i>
 | 
			
		||||
        </td>
 | 
			
		||||
    </tr>
 | 
			
		||||
    <tr>
 | 
			
		||||
        <!-- Microsoft Project -->
 | 
			
		||||
        <td>
 | 
			
		||||
            <img src="apps/project/icon.svg" width="100">
 | 
			
		||||
@@ -244,6 +269,8 @@ Contributing to the list of supported applications is encouraged through submiss
 | 
			
		||||
            (Standard/Pro. 2021, Plan 3/5)<br>
 | 
			
		||||
            <i><a href="https://en.m.wikipedia.org/wiki/File:Microsoft_Project_(2019–present).svg">Icon</a> in the Public Domain.</i>
 | 
			
		||||
        </td>
 | 
			
		||||
    </tr>
 | 
			
		||||
    <tr>
 | 
			
		||||
        <!-- Microsoft Visual Studio -->
 | 
			
		||||
        <td>
 | 
			
		||||
            <img src="apps/visual-studio-pro/icon.svg" width="100">
 | 
			
		||||
@@ -253,6 +280,14 @@ Contributing to the list of supported applications is encouraged through submiss
 | 
			
		||||
            (Comm./Pro./Ent. 2022)<br>
 | 
			
		||||
            <i><a href="https://en.m.wikipedia.org/wiki/File:Visual_Studio_Icon_2022.svg">Icon</a> in the Public Domain.</i>
 | 
			
		||||
        </td>
 | 
			
		||||
        <!-- Autodesk Fusion 360 -->
 | 
			
		||||
        <td>
 | 
			
		||||
            <img src="apps/fusion-360/icon.svg" width="100">
 | 
			
		||||
        </td>
 | 
			
		||||
        <td>
 | 
			
		||||
            <b>Autodesk Fusion 360</b><br>
 | 
			
		||||
            <i><a href="https://commons.wikimedia.org/wiki/File:Fusion360_Logo.svg">Icon</a> in the Public Domain.</i>
 | 
			
		||||
        </td>
 | 
			
		||||
    </tr>
 | 
			
		||||
    <tr>
 | 
			
		||||
        <!-- mIRC -->
 | 
			
		||||
@@ -283,7 +318,7 @@ Contributing to the list of supported applications is encouraged through submiss
 | 
			
		||||
            <i><a href="url">Icon</a> in the Public Domain.</i>
 | 
			
		||||
        </td>
 | 
			
		||||
    </tr>
 | 
			
		||||
</table>
 | 
			
		||||
        </table>
 | 
			
		||||
 | 
			
		||||
## Installation
 | 
			
		||||
### Step 1: Configure a Windows VM
 | 
			
		||||
@@ -404,6 +439,7 @@ 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.
 | 
			
		||||
#   If this does not work or if it does not work without the flag, you can try adding /nsc and /gfx.
 | 
			
		||||
# 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"
 | 
			
		||||
@@ -472,6 +508,12 @@ APP_SCAN_TIMEOUT="60"
 | 
			
		||||
# - The maximum time (in seconds) to wait for the Windows VM to boot if it is not running, before attempting to launch an application.
 | 
			
		||||
# DEFAULT VALUE: '120'
 | 
			
		||||
BOOT_TIMEOUT="120"
 | 
			
		||||
 | 
			
		||||
# FREERDP RAIL HIDEF
 | 
			
		||||
# - This option controls the value of the `hidef` option passed to the /app parameter of the FreeRDP command.
 | 
			
		||||
# - Setting this option to 'off' may resolve window misalignment issues related to maximized windows.
 | 
			
		||||
# DEFAULT VALUE: 'on'
 | 
			
		||||
HIDEF="on"
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
> [!IMPORTANT]
 | 
			
		||||
@@ -504,6 +546,9 @@ BOOT_TIMEOUT="120"
 | 
			
		||||
    ```bash
 | 
			
		||||
    xfreerdp3 /u:"Your Windows Username" /p:"Your Windows Password" /v:192.168.122.2 /cert:tofu
 | 
			
		||||
 | 
			
		||||
    # Or, if you are using Podman
 | 
			
		||||
    podman unshare --rootless-netns xfreerdp3 /u:"Your Windows Username" /p:"Your Windows Password" /v:127.0.0.1 /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
 | 
			
		||||
    ```
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										19
									
								
								apps/afdesign/icon.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,19 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 | 
			
		||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
 | 
			
		||||
<svg width="100%" height="100%" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
 | 
			
		||||
    <g transform="matrix(1,0,0,1,-1528,0)">
 | 
			
		||||
        <g transform="matrix(1.024,0,0,1.024,1528,0)">
 | 
			
		||||
            <g id="designer_icon_marketing" transform="matrix(2.79101,0,0,2.77709,-106.854,-106.797)">
 | 
			
		||||
                <g transform="matrix(0.349896,0,0,0.351649,38.2852,38.4565)">
 | 
			
		||||
                    <path d="M1024,100C1024,44.808 979.192,0 924,0L100,0C44.808,0 0,44.808 0,100L0,924C0,979.192 44.808,1024 100,1024L924,1024C979.192,1024 1024,979.192 1024,924L1024,100Z" style="fill:rgb(19,72,129);"/>
 | 
			
		||||
                </g>
 | 
			
		||||
                <g transform="matrix(0.349896,0,0,0.351649,-496.356,38.4565)">
 | 
			
		||||
                    <path d="M2477,909.311C2476.83,931.245 2458.97,949 2437,949L2033.31,949L1860.76,650.124L2477,650.124L2477,909.311ZM1603,909L1603,733.513L1983.19,75L2131.77,75L1810.58,631.33L1993.98,949L1643,949C1620.92,949 1603,931.077 1603,909ZM2090.17,616.044L1939.95,616.044C1923.18,616.044 1907.68,607.244 1899.3,592.717C1890.91,578.199 1890.91,560.3 1899.3,545.782C1932.67,487.982 1974.45,415.612 1974.45,415.612L2090.17,616.044ZM2437,75C2458.97,75 2476.83,92.755 2477,114.689L2477,616.044L2129.52,616.044L1994.11,381.549L2171.1,75L2437,75Z" style="fill:url(#_Radial1);"/>
 | 
			
		||||
                </g>
 | 
			
		||||
            </g>
 | 
			
		||||
        </g>
 | 
			
		||||
    </g>
 | 
			
		||||
    <defs>
 | 
			
		||||
        <radialGradient id="_Radial1" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1038.26,0,0,1038.26,2271.03,-89.2591)"><stop offset="0" style="stop-color:rgb(107,225,251);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(56,189,250);stop-opacity:1"/></radialGradient>
 | 
			
		||||
    </defs>
 | 
			
		||||
</svg>
 | 
			
		||||
| 
		 After Width: | Height: | Size: 2.0 KiB  | 
							
								
								
									
										22
									
								
								apps/afdesign/info
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,22 @@
 | 
			
		||||
# Copyright (c) 2024 Fmstrat
 | 
			
		||||
# All rights reserved.
 | 
			
		||||
#
 | 
			
		||||
# SPDX-License-Identifier: Proprietary
 | 
			
		||||
 | 
			
		||||
# GNOME shortcut name
 | 
			
		||||
NAME="Designer"
 | 
			
		||||
 | 
			
		||||
# Used for descriptions and window class
 | 
			
		||||
FULL_NAME="Affinity Designer"
 | 
			
		||||
 | 
			
		||||
# The executable inside windows
 | 
			
		||||
WIN_EXECUTABLE="C:\Program Files\Affinity\Designer 2\Designer.exe"
 | 
			
		||||
 | 
			
		||||
# GNOME categories
 | 
			
		||||
CATEGORIES="WinApps;Affinity"
 | 
			
		||||
 | 
			
		||||
# GNOME mimetypes
 | 
			
		||||
MIME_TYPES=""
 | 
			
		||||
 | 
			
		||||
# System Icon
 | 
			
		||||
ICON="AffinityDesigner"
 | 
			
		||||
							
								
								
									
										19
									
								
								apps/afphoto/icon.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,19 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 | 
			
		||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
 | 
			
		||||
<svg width="100%" height="100%" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
 | 
			
		||||
    <g transform="matrix(1,0,0,1,-2598,0)">
 | 
			
		||||
        <g transform="matrix(1.024,0,0,1.024,2598,0)">
 | 
			
		||||
            <g id="photo_icon_marketing" transform="matrix(2.79101,0,0,2.77709,-106.854,-106.797)">
 | 
			
		||||
                <g transform="matrix(0.349896,0,0,0.351649,38.2852,38.4565)">
 | 
			
		||||
                    <path d="M1024,100C1024,44.808 979.192,0 924,0L100,0C44.808,0 0,44.808 0,100L0,924C0,979.192 44.808,1024 100,1024L924,1024C979.192,1024 1024,979.192 1024,924L1024,100Z" style="fill:rgb(78,49,136);"/>
 | 
			
		||||
                </g>
 | 
			
		||||
                <g transform="matrix(0.349896,0,0,0.351649,-870.745,38.4565)">
 | 
			
		||||
                    <path d="M3547,650.087L3547,909C3547,930.809 3529.51,948.566 3507.8,948.992L3243.38,948.991L3070.74,650.087L3547,650.087ZM3204.04,948.991L2736.26,948.991L2970.28,544.277L3204.04,948.991ZM2698.7,946.362C2684.55,940.937 2674.26,927.71 2673.11,911.965L2673,733.502L2863.17,404.251L3011.81,404.251L2698.7,946.362ZM3147.75,403.636C3160.7,403.69 3173.09,411.297 3179.78,422.571C3179.85,422.685 3179.98,422.915 3179.98,422.915L3219.28,490.967C3219.28,490.967 3219.51,491.348 3219.62,491.531C3226.04,502.765 3226.29,516.92 3219.87,528.358C3206.7,551.4 3193.32,574.331 3180.04,597.318C3173.52,608.497 3161.18,615.791 3148.06,615.954C3123.03,616.059 3072.84,616.001 3072.77,616.001C3059.82,615.947 3047.23,609.042 3040.53,597.768C3040.38,597.524 3040.1,597.025 3040.1,597.025C3040.1,597.025 3000.78,528.966 3000.7,528.808C2994.27,517.574 2994.28,503.061 3000.7,491.623C3000.79,491.455 3000.99,491.119 3000.99,491.119C3000.99,491.119 3027.3,445.481 3040.47,422.662C3046.99,411.483 3059.36,403.792 3072.47,403.628C3072.69,403.627 3073.13,403.617 3073.13,403.617L3147.3,403.636L3147.75,403.636ZM3519.89,77.126L3208.64,616.001L3547,616.001L3547,115C3547,97.434 3535.65,82.497 3519.89,77.126ZM3053.34,75L3481.77,75L3250.07,476.157L3035.86,105.276L3053.34,75ZM3149.52,370.191L2882.84,370.191L3016.18,139.336L3149.52,370.191Z" style="fill:url(#_Radial1);"/>
 | 
			
		||||
                </g>
 | 
			
		||||
            </g>
 | 
			
		||||
        </g>
 | 
			
		||||
    </g>
 | 
			
		||||
    <defs>
 | 
			
		||||
        <radialGradient id="_Radial1" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1038.25,0,0,1038.25,3341.03,-89.2588)"><stop offset="0" style="stop-color:rgb(249,166,255);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(234,115,255);stop-opacity:1"/></radialGradient>
 | 
			
		||||
    </defs>
 | 
			
		||||
</svg>
 | 
			
		||||
| 
		 After Width: | Height: | Size: 2.7 KiB  | 
							
								
								
									
										22
									
								
								apps/afphoto/info
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,22 @@
 | 
			
		||||
# Copyright (c) 2024 Fmstrat
 | 
			
		||||
# All rights reserved.
 | 
			
		||||
#
 | 
			
		||||
# SPDX-License-Identifier: Proprietary
 | 
			
		||||
 | 
			
		||||
# GNOME shortcut name
 | 
			
		||||
NAME="Photo"
 | 
			
		||||
 | 
			
		||||
# Used for descriptions and window class
 | 
			
		||||
FULL_NAME="Affinity Photo"
 | 
			
		||||
 | 
			
		||||
# The executable inside windows
 | 
			
		||||
WIN_EXECUTABLE="C:\Program Files\Affinity\Photo 2\Photo.exe"
 | 
			
		||||
 | 
			
		||||
# GNOME categories
 | 
			
		||||
CATEGORIES="WinApps;Affinity"
 | 
			
		||||
 | 
			
		||||
# GNOME mimetypes
 | 
			
		||||
MIME_TYPES=""
 | 
			
		||||
 | 
			
		||||
# System Icon
 | 
			
		||||
ICON="AffinityPhoto"
 | 
			
		||||
							
								
								
									
										19
									
								
								apps/afpub/icon.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,19 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 | 
			
		||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
 | 
			
		||||
<svg width="100%" height="100%" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
 | 
			
		||||
    <g transform="matrix(1,0,0,1,-3679,0)">
 | 
			
		||||
        <g transform="matrix(1.024,0,0,1.024,3679,0)">
 | 
			
		||||
            <g id="publisher_icon_marketing" transform="matrix(2.79101,0,0,2.77709,-106.854,-106.797)">
 | 
			
		||||
                <g transform="matrix(0.349896,0,0,0.351649,38.2852,38.4565)">
 | 
			
		||||
                    <path d="M1024,100C1024,44.808 979.192,0 924,0L100,0C44.808,0 0,44.808 0,100L0,924C0,979.192 44.808,1024 100,1024L924,1024C979.192,1024 1024,979.192 1024,924L1024,100Z" style="fill:rgb(137,27,38);"/>
 | 
			
		||||
                </g>
 | 
			
		||||
                <g transform="matrix(0.349896,0,0,0.351649,-1248.98,38.4565)">
 | 
			
		||||
                    <path d="M4145.14,949L3887.34,502.652L3754,733.508L3754,909C3754,931.077 3771.92,949 3794,949L4145.14,949ZM4333.13,949L4184.49,949C4184.49,949 3991.94,615.513 3927.43,503.943C3914.78,482.065 3914.78,455.101 3927.42,433.219C3950.75,392.851 3981.34,339.909 3981.34,339.909L4333.13,949ZM4521.12,949L4372.48,949L4003.19,302.072L4075.33,177.182L4521.12,949ZM4628,808.578L4628,909C4628,931.077 4610.08,949 4588,949L4560.47,949L4095,143.121L4134.35,75L4204.3,75L4628,808.578ZM4588,75L4243.64,75L4628,740.456L4628,115C4628,92.923 4610.08,75 4588,75Z" style="fill:url(#_Radial1);"/>
 | 
			
		||||
                </g>
 | 
			
		||||
            </g>
 | 
			
		||||
        </g>
 | 
			
		||||
    </g>
 | 
			
		||||
    <defs>
 | 
			
		||||
        <radialGradient id="_Radial1" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1038.26,0,0,1038.26,4421.95,-89.2604)"><stop offset="0" style="stop-color:rgb(255,174,113);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(255,147,80);stop-opacity:1"/></radialGradient>
 | 
			
		||||
    </defs>
 | 
			
		||||
</svg>
 | 
			
		||||
| 
		 After Width: | Height: | Size: 2.0 KiB  | 
							
								
								
									
										22
									
								
								apps/afpub/info
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,22 @@
 | 
			
		||||
# Copyright (c) 2024 Fmstrat
 | 
			
		||||
# All rights reserved.
 | 
			
		||||
#
 | 
			
		||||
# SPDX-License-Identifier: Proprietary
 | 
			
		||||
 | 
			
		||||
# GNOME shortcut name
 | 
			
		||||
NAME="Publisher"
 | 
			
		||||
 | 
			
		||||
# Used for descriptions and window class
 | 
			
		||||
FULL_NAME="Affinity Publisher"
 | 
			
		||||
 | 
			
		||||
# The executable inside windows
 | 
			
		||||
WIN_EXECUTABLE="C:\Program Files\Affinity\Publisher 2\Publisher.exe"
 | 
			
		||||
 | 
			
		||||
# GNOME categories
 | 
			
		||||
CATEGORIES="WinApps;Affinity"
 | 
			
		||||
 | 
			
		||||
# GNOME mimetypes
 | 
			
		||||
MIME_TYPES=""
 | 
			
		||||
 | 
			
		||||
# System Icon
 | 
			
		||||
ICON="AffinityPublisher"
 | 
			
		||||
							
								
								
									
										90
									
								
								apps/fusion-360/icon.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,90 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 | 
			
		||||
<svg
 | 
			
		||||
   width="256pt"
 | 
			
		||||
   height="256pt"
 | 
			
		||||
   viewBox="0 0 256 256"
 | 
			
		||||
   version="1.1"
 | 
			
		||||
   id="svg7"
 | 
			
		||||
   sodipodi:docname="Fusion360-82.svg"
 | 
			
		||||
   inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
 | 
			
		||||
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
 | 
			
		||||
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
 | 
			
		||||
   xmlns="http://www.w3.org/2000/svg"
 | 
			
		||||
   xmlns:svg="http://www.w3.org/2000/svg">
 | 
			
		||||
  <defs
 | 
			
		||||
     id="defs7" />
 | 
			
		||||
  <sodipodi:namedview
 | 
			
		||||
     id="namedview7"
 | 
			
		||||
     pagecolor="#ffffff"
 | 
			
		||||
     bordercolor="#000000"
 | 
			
		||||
     borderopacity="0.25"
 | 
			
		||||
     inkscape:showpageshadow="2"
 | 
			
		||||
     inkscape:pageopacity="0.0"
 | 
			
		||||
     inkscape:pagecheckerboard="0"
 | 
			
		||||
     inkscape:deskcolor="#d1d1d1"
 | 
			
		||||
     inkscape:document-units="pt"
 | 
			
		||||
     showgrid="false"
 | 
			
		||||
     inkscape:zoom="1.4142136"
 | 
			
		||||
     inkscape:cx="228.74904"
 | 
			
		||||
     inkscape:cy="139.30004"
 | 
			
		||||
     inkscape:window-width="1418"
 | 
			
		||||
     inkscape:window-height="892"
 | 
			
		||||
     inkscape:window-x="0"
 | 
			
		||||
     inkscape:window-y="0"
 | 
			
		||||
     inkscape:window-maximized="1"
 | 
			
		||||
     inkscape:current-layer="g8" />
 | 
			
		||||
  <g
 | 
			
		||||
     id="g8">
 | 
			
		||||
    <path
 | 
			
		||||
       style="fill:#ff9548;stroke-width:0.75;fill-opacity:1"
 | 
			
		||||
       d="M 46.79097,-0.00247339 7.8151404,23.849982 8.0231482,23.990607 15.67377,23.310848 45.733663,5.9498164 Z"
 | 
			
		||||
       id="path8"
 | 
			
		||||
       sodipodi:nodetypes="cccccc" />
 | 
			
		||||
    <path
 | 
			
		||||
       fill="#ff9548"
 | 
			
		||||
       opacity="1"
 | 
			
		||||
       d="M 46.398594,0.36621094 46.78,0 C 46.69,59.94 46.65,119.88 46.8,179.82 40.173599,183.81384 12.241533,200.6415 7.83,203.25 7.82,143.45 7.84,83.65 7.82,23.85 16.708712,15.663236 38.795821,8.8363876 46.398594,0.36621094 Z"
 | 
			
		||||
       id="path1"
 | 
			
		||||
       sodipodi:nodetypes="cccccc" />
 | 
			
		||||
  </g>
 | 
			
		||||
  <g
 | 
			
		||||
     id="#ff6b00ff"
 | 
			
		||||
     style="display:inline">
 | 
			
		||||
    <path
 | 
			
		||||
       fill="#ff6b00"
 | 
			
		||||
       opacity="1"
 | 
			
		||||
       d="m 46.78,0 h 171.61 c 6.13,1.02 11.96,5.71 12.23,12.27 0.19,9.33 0.01,18.66 0.07,28 0.01,46.5 -0.01,93.01 0.01,139.51 -61.3,0.1 -122.6,0.02 -183.9,0.04 C 46.65,119.88 46.69,59.94 46.78,0 m 64.99,40.53 c 0.03,33.12 0,66.25 0.02,99.37 8.3,-0.02 16.6,0.05 24.9,-0.04 -0.06,-13.36 -0.02,-26.73 -0.03,-40.1 10.87,0.02 21.74,-0.07 32.62,0.04 0.1,-5.89 0.16,-11.8 -0.04,-17.69 -10.86,0.12 -21.71,0.03 -32.57,0.05 -0.06,-7.88 0.07,-15.76 -0.08,-23.65 12.91,-0.24 25.83,-0.03 38.74,-0.1 -0.01,-5.96 -0.01,-11.93 0,-17.89 -21.18,-0.01 -42.37,-0.02 -63.56,0.01 z"
 | 
			
		||||
       id="path2" />
 | 
			
		||||
  </g>
 | 
			
		||||
  <g
 | 
			
		||||
     id="#933c00ff">
 | 
			
		||||
    <path
 | 
			
		||||
       fill="#933c00"
 | 
			
		||||
       opacity="1.00"
 | 
			
		||||
       d=" M 230.69 40.27 C 236.63 40.33 242.56 40.12 248.50 40.40 C 248.26 112.26 248.46 184.13 248.40 256.00 L 40.90 256.00 C 35.09 254.75 29.45 250.32 29.18 243.98 C 29.00 226.15 29.15 208.31 29.11 190.47 C 35.01 186.93 40.91 183.37 46.80 179.82 C 108.10 179.80 169.40 179.88 230.70 179.78 C 230.68 133.28 230.70 86.77 230.69 40.27 M 163.04 199.06 C 157.06 202.24 156.37 212.16 162.15 215.83 C 166.41 218.38 171.48 218.99 175.96 221.04 C 178.76 222.05 179.00 226.25 176.91 228.06 C 172.76 230.53 165.86 228.94 165.73 223.33 C 162.83 223.33 159.94 223.34 157.04 223.33 C 157.25 226.60 158.35 229.96 160.90 232.17 C 164.97 235.91 170.93 236.24 176.16 235.69 C 181.07 235.18 186.33 232.16 187.38 226.99 C 187.94 223.28 187.75 218.80 184.56 216.28 C 180.18 212.67 174.15 212.48 169.26 209.85 C 167.07 208.83 166.95 205.27 168.99 204.06 C 172.69 201.92 178.42 203.55 178.83 208.32 C 181.69 208.34 184.56 208.34 187.42 208.32 C 187.18 204.06 184.77 199.89 180.69 198.28 C 175.11 196.05 168.36 196.14 163.04 199.06 M 92.12 197.62 C 92.29 210.14 92.16 222.67 92.19 235.19 C 95.27 235.19 98.35 235.19 101.43 235.28 C 101.77 230.14 101.46 225.00 101.60 219.86 C 105.70 219.87 109.80 219.87 113.90 219.86 C 113.90 217.65 113.90 215.45 113.89 213.25 C 109.78 213.26 105.68 213.26 101.57 213.26 C 101.60 210.33 101.59 207.39 101.49 204.47 C 106.40 204.20 111.32 204.41 116.24 204.34 C 116.24 202.07 116.24 199.80 116.25 197.54 C 108.20 197.58 100.16 197.42 92.12 197.62 M 121.04 197.58 C 121.38 207.36 120.57 217.21 121.49 226.96 C 123.25 236.40 136.36 238.70 142.71 232.48 C 142.97 233.38 143.24 234.28 143.53 235.18 C 146.16 235.19 148.79 235.19 151.42 235.30 C 151.84 222.72 151.56 210.10 151.55 197.51 C 148.42 197.54 145.29 197.53 142.16 197.62 C 142.32 206.42 142.16 215.22 142.25 224.03 C 143.08 230.29 130.91 231.38 130.55 224.88 C 130.27 215.78 130.50 206.66 130.44 197.56 C 127.31 197.53 124.18 197.53 121.04 197.58 Z"
 | 
			
		||||
       id="path3" />
 | 
			
		||||
  </g>
 | 
			
		||||
  <g
 | 
			
		||||
     id="#ffffffff">
 | 
			
		||||
    <path
 | 
			
		||||
       fill="#ffffff"
 | 
			
		||||
       opacity="1.00"
 | 
			
		||||
       d=" M 111.77 40.53 C 132.96 40.50 154.15 40.51 175.33 40.52 C 175.32 46.48 175.32 52.45 175.33 58.41 C 162.42 58.48 149.50 58.27 136.59 58.51 C 136.74 66.40 136.61 74.28 136.67 82.16 C 147.53 82.14 158.38 82.23 169.24 82.11 C 169.44 88.00 169.38 93.91 169.28 99.80 C 158.40 99.69 147.53 99.78 136.66 99.76 C 136.67 113.13 136.63 126.50 136.69 139.86 C 128.39 139.95 120.09 139.88 111.79 139.90 C 111.77 106.78 111.80 73.65 111.77 40.53 Z"
 | 
			
		||||
       id="path4" />
 | 
			
		||||
    <path
 | 
			
		||||
       fill="#ffffff"
 | 
			
		||||
       opacity="1.00"
 | 
			
		||||
       d=" M 163.04 199.06 C 168.36 196.14 175.11 196.05 180.69 198.28 C 184.77 199.89 187.18 204.06 187.42 208.32 C 184.56 208.34 181.69 208.34 178.83 208.32 C 178.42 203.55 172.69 201.92 168.99 204.06 C 166.95 205.27 167.07 208.83 169.26 209.85 C 174.15 212.48 180.18 212.67 184.56 216.28 C 187.75 218.80 187.94 223.28 187.38 226.99 C 186.33 232.16 181.07 235.18 176.16 235.69 C 170.93 236.24 164.97 235.91 160.90 232.17 C 158.35 229.96 157.25 226.60 157.04 223.33 C 159.94 223.34 162.83 223.33 165.73 223.33 C 165.86 228.94 172.76 230.53 176.91 228.06 C 179.00 226.25 178.76 222.05 175.96 221.04 C 171.48 218.99 166.41 218.38 162.15 215.83 C 156.37 212.16 157.06 202.24 163.04 199.06 Z"
 | 
			
		||||
       id="path5" />
 | 
			
		||||
    <path
 | 
			
		||||
       fill="#ffffff"
 | 
			
		||||
       opacity="1.00"
 | 
			
		||||
       d=" M 92.12 197.62 C 100.16 197.42 108.20 197.58 116.25 197.54 C 116.24 199.80 116.24 202.07 116.24 204.34 C 111.32 204.41 106.40 204.20 101.49 204.47 C 101.59 207.39 101.60 210.33 101.57 213.26 C 105.68 213.26 109.78 213.26 113.89 213.25 C 113.90 215.45 113.90 217.65 113.90 219.86 C 109.80 219.87 105.70 219.87 101.60 219.86 C 101.46 225.00 101.77 230.14 101.43 235.28 C 98.35 235.19 95.27 235.19 92.19 235.19 C 92.16 222.67 92.29 210.14 92.12 197.62 Z"
 | 
			
		||||
       id="path6" />
 | 
			
		||||
    <path
 | 
			
		||||
       fill="#ffffff"
 | 
			
		||||
       opacity="1.00"
 | 
			
		||||
       d=" M 121.04 197.58 C 124.18 197.53 127.31 197.53 130.44 197.56 C 130.50 206.66 130.27 215.78 130.55 224.88 C 130.91 231.38 143.08 230.29 142.25 224.03 C 142.16 215.22 142.32 206.42 142.16 197.62 C 145.29 197.53 148.42 197.54 151.55 197.51 C 151.56 210.10 151.84 222.72 151.42 235.30 C 148.79 235.19 146.16 235.19 143.53 235.18 C 143.24 234.28 142.97 233.38 142.71 232.48 C 136.36 238.70 123.25 236.40 121.49 226.96 C 120.57 217.21 121.38 207.36 121.04 197.58 Z"
 | 
			
		||||
       id="path7" />
 | 
			
		||||
  </g>
 | 
			
		||||
</svg>
 | 
			
		||||
| 
		 After Width: | Height: | Size: 6.7 KiB  | 
							
								
								
									
										14
									
								
								apps/fusion-360/info
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,14 @@
 | 
			
		||||
# GNOME shortcut name
 | 
			
		||||
NAME="Fusion 360"
 | 
			
		||||
 | 
			
		||||
# Used for descriptions and window class
 | 
			
		||||
FULL_NAME="Autodesk Fusion 360"
 | 
			
		||||
 | 
			
		||||
# The executable inside windows
 | 
			
		||||
WIN_EXECUTABLE="C:\Users\%USERNAME%\AppData\Local\Autodesk\webdeploy\production\6a0c9611291d45bb9226980209917c3d\FusionLauncher.exe"
 | 
			
		||||
 | 
			
		||||
# GNOME categories
 | 
			
		||||
CATEGORIES="WinApps;Graphics;3DGraphics"
 | 
			
		||||
 | 
			
		||||
# GNOME mimetypes
 | 
			
		||||
MIME_TYPES="application/fusion"
 | 
			
		||||
							
								
								
									
										42
									
								
								apps/lightroom-classic/icon.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,42 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<!-- Generator: Adobe Illustrator 23.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
 | 
			
		||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
 | 
			
		||||
    <!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
 | 
			
		||||
    <!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
 | 
			
		||||
    <!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
 | 
			
		||||
    <!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
 | 
			
		||||
    <!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
 | 
			
		||||
    <!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
 | 
			
		||||
    <!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
 | 
			
		||||
    <!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
 | 
			
		||||
]>
 | 
			
		||||
<svg version="1.1" id="Layer_1" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
 | 
			
		||||
     xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 256.4 250"
 | 
			
		||||
     enable-background="new 0 0 256.4 250" xml:space="preserve">
 | 
			
		||||
<metadata>
 | 
			
		||||
    <sfw  xmlns="&ns_sfw;">
 | 
			
		||||
        <slices></slices>
 | 
			
		||||
        <sliceSourceBounds  bottomLeftOrigin="true" height="250" width="256.4" x="-8.2" y="-8"></sliceSourceBounds>
 | 
			
		||||
    </sfw>
 | 
			
		||||
</metadata>
 | 
			
		||||
<g id="Layer_2_1_">
 | 
			
		||||
    <path fill="#001E36" d="M45.4,0H211c25.1,0,45.4,20.3,45.4,45.4v159.2c0,25.1-20.3,45.4-45.4,45.4H45.4C20.3,250,0,229.7,0,204.6
 | 
			
		||||
        V45.4C0,20.3,20.3,0,45.4,0z"/>
 | 
			
		||||
    <g id="LrC">
 | 
			
		||||
        <path fill="#31A8FF" d="M90,176.7H29c-1.1,0-1.5-0.6-1.5-1.9V65.6c0-1.1,0.4-1.5,1.4-1.5h18.9c0.7,0,1.1,0.4,1.1,1.2V155h44.4
 | 
			
		||||
            c1,0,1.3,0.5,1.1,1.5l-2.8,18.6c-0.1,0.6-0.3,1.1-0.6,1.3S90.3,176.7,90,176.7z"/>
 | 
			
		||||
        <path fill="#31A8FF" d="M105.2,91.2h16.9c1,0,1.6,0.5,2,1.7c0.3,0.7,0.6,1.6,0.7,2.5c0.2,1.1,0.3,2.2,0.4,3.3
 | 
			
		||||
            c0.1,1.2,0.1,2.5,0.1,3.8c2.8-3.6,6.3-6.8,10.3-9.2c4.3-2.6,9.3-4,14.3-3.8c1,0,1.4,0.5,1.4,1.5v20.8c0,0.9-0.5,1.2-1.5,1.2
 | 
			
		||||
            c-3.4-0.2-6.8,0-10.1,0.7c-2.8,0.6-5.4,1.6-8,2.9c-1.9,1-3.7,2.4-5.2,4v54.5c0,1.1-0.4,1.5-1.3,1.5h-18.6c-1.1,0-1.5-0.5-1.5-1.7
 | 
			
		||||
            v-59.2c0-2.6,0-5.2-0.1-8c0-2.8-0.1-5.6-0.2-8.3c-0.1-2.4-0.3-4.7-0.6-7.1c0-0.3,0-0.6,0.2-1C104.7,91.2,104.9,91.1,105.2,91.2z"
 | 
			
		||||
            />
 | 
			
		||||
        <path fill="#31A8FF" d="M227.1,75.4c-2.2-1-4.7-1.5-7.2-1.8c-3.6-0.4-7.3-0.6-10.9-0.6c-10.5,0-19.7,2.2-27.2,6.6
 | 
			
		||||
            s-13.7,10.9-17.7,18.7c-4.2,7.9-6.2,17.3-6.2,27.8c-0.1,6.3,0.7,12.6,2.4,18.8c1.5,5.2,3.7,10.1,6.8,14.6
 | 
			
		||||
            c2.9,4.2,6.4,7.7,10.5,10.6s8.7,5.1,13.6,6.4c5,1.4,10.4,2.1,15.6,2.1c3.7,0,7.4-0.2,11-0.7c3-0.3,5.9-1.1,8.7-2.1
 | 
			
		||||
            c1.1-0.5,1.7-1.6,1.6-2.9v-15.9c0.1-0.5-0.1-1.2-0.5-1.6c-0.3-0.2-0.9-0.5-1.7,0.1c-2.4,0.9-4.9,1.5-7.5,1.8
 | 
			
		||||
            c-3.1,0.3-6.2,0.4-9.3,0.4c-2.8,0-5.7-0.4-8.3-1.2c-2.9-0.7-5.6-1.9-8.1-3.4c-2.7-1.6-4.9-3.7-6.7-6.2c-2-2.8-3.6-5.9-4.7-9.2
 | 
			
		||||
            c-1.2-4.1-1.8-8.2-1.7-12.5c-0.1-5.9,1.1-11.8,3.5-17.1c2.2-4.6,5.7-8.5,10-11.2c4.7-2.8,10.1-4.2,15.6-4.1c3.3,0,6.7,0.2,10,0.9
 | 
			
		||||
            c2.7,0.4,5.2,1.3,7.7,2.6c0.4,0.2,1,0.2,1.4,0c0.4-0.4,0.7-1,0.6-1.6V78C228.4,76.9,228,76,227.1,75.4z"/>
 | 
			
		||||
    </g>
 | 
			
		||||
</g>
 | 
			
		||||
</svg>
 | 
			
		||||
| 
		 After Width: | Height: | Size: 3.0 KiB  | 
							
								
								
									
										17
									
								
								apps/lightroom-classic/info
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,17 @@
 | 
			
		||||
# GNOME shortcut name
 | 
			
		||||
NAME="Lightroom Classic"
 | 
			
		||||
 | 
			
		||||
# Used for descriptions and window class
 | 
			
		||||
FULL_NAME="Adobe Lightroom Classic"
 | 
			
		||||
 | 
			
		||||
# The executable inside windows
 | 
			
		||||
WIN_EXECUTABLE="C:\Program Files\Adobe\Adobe Lightroom Classic\Lightroom.exe"
 | 
			
		||||
 | 
			
		||||
# GNOME categories
 | 
			
		||||
CATEGORIES="WinApps;Adobe"
 | 
			
		||||
 | 
			
		||||
# GNOME mimetypes
 | 
			
		||||
MIME_TYPES=""
 | 
			
		||||
 | 
			
		||||
# System Icon
 | 
			
		||||
ICON="AdobeLightroom"
 | 
			
		||||
							
								
								
									
										37
									
								
								apps/photoshop-2025/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-2025/info
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,17 @@
 | 
			
		||||
# GNOME shortcut name
 | 
			
		||||
NAME="Photoshop 2025"
 | 
			
		||||
 | 
			
		||||
# Used for descriptions and window class
 | 
			
		||||
FULL_NAME="Adobe Photoshop 2025"
 | 
			
		||||
 | 
			
		||||
# The executable inside windows
 | 
			
		||||
WIN_EXECUTABLE="C:\Program Files\Adobe\Adobe Photoshop 2025\Photoshop.exe"
 | 
			
		||||
 | 
			
		||||
# GNOME categories
 | 
			
		||||
CATEGORIES="WinApps;Adobe"
 | 
			
		||||
 | 
			
		||||
# GNOME mimetypes
 | 
			
		||||
MIME_TYPES="image/vnd.adobe.photoshop;"
 | 
			
		||||
 | 
			
		||||
# System Icon
 | 
			
		||||
ICON="AdobePhotoshop"
 | 
			
		||||
							
								
								
									
										80
									
								
								bin/winapps
									
									
									
									
									
								
							
							
						
						@@ -27,6 +27,8 @@ readonly CONFIG_PATH="${HOME}/.config/winapps/winapps.conf"
 | 
			
		||||
readonly COMPOSE_PATH="${HOME}/.config/winapps/compose.yaml"
 | 
			
		||||
# shellcheck disable=SC2155 # Silence warnings regarding masking return values through simultaneous declaration and assignment.
 | 
			
		||||
readonly SCRIPT_DIR_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"
 | 
			
		||||
readonly SLEEP_DETECT_PATH="${APPDATA_PATH}/last_activity"
 | 
			
		||||
readonly SLEEP_MARKER="${APPDATA_PATH}/sleep_marker"
 | 
			
		||||
 | 
			
		||||
# OTHER
 | 
			
		||||
readonly CONTAINER_NAME="WinApps" # FOR 'docker' AND 'podman' ONLY
 | 
			
		||||
@@ -51,6 +53,7 @@ AUTOPAUSE="off"
 | 
			
		||||
AUTOPAUSE_TIME="300"
 | 
			
		||||
DEBUG="true"
 | 
			
		||||
BOOT_TIMEOUT=120
 | 
			
		||||
HIDEF="on"
 | 
			
		||||
 | 
			
		||||
# OTHER
 | 
			
		||||
FREERDP_PID=-1
 | 
			
		||||
@@ -322,28 +325,28 @@ function waCheckVMRunning() {
 | 
			
		||||
 | 
			
		||||
    # Attempt to run the Windows virtual machine.
 | 
			
		||||
    # Note: States 'running' and 'idle' do not require intervention, and are not checked for.
 | 
			
		||||
    if (virsh list --all --name | xargs | grep -wq "$VM_NAME"); then
 | 
			
		||||
        if (virsh list --state-shutoff --name | xargs | grep -wq "$VM_NAME"); then
 | 
			
		||||
    if (virsh list --all --name | grep -Fxq -- "$VM_NAME"); then
 | 
			
		||||
        if (virsh list --state-shutoff --name | grep -Fxq -- "$VM_NAME"); then
 | 
			
		||||
            dprint "WINDOWS SHUT OFF. BOOTING WINDOWS."
 | 
			
		||||
            notify-send --expire-time=4000 --icon="dialog-info" --app-name="WinApps" --urgency="low" "WinApps" "Booting Windows."
 | 
			
		||||
            NEEDED_BOOT=true
 | 
			
		||||
            virsh start "$VM_NAME" &>/dev/null || EXIT_STATUS=$EC_FAIL_START
 | 
			
		||||
            if (virsh list --state-paused --name | xargs | grep -wq "$VM_NAME"); then
 | 
			
		||||
            if (virsh list --state-paused --name | grep -Fxq -- "$VM_NAME"); then
 | 
			
		||||
                dprint "WINDOWS PAUSED. RESUMING WINDOWS."
 | 
			
		||||
                notify-send --expire-time=4000 --icon="dialog-info" --app-name="WinApps" --urgency="low" "WinApps" "Resuming Windows."
 | 
			
		||||
                virsh resume "$VM_NAME" &>/dev/null || EXIT_STATUS=$EC_FAIL_RESUME
 | 
			
		||||
            fi
 | 
			
		||||
        elif (virsh list --state-paused --name | xargs | grep -wq "$VM_NAME"); then
 | 
			
		||||
        elif (virsh list --state-paused --name | grep -Fxq -- "$VM_NAME"); then
 | 
			
		||||
            dprint "WINDOWS PAUSED. RESUMING WINDOWS."
 | 
			
		||||
            notify-send --expire-time=4000 --icon="dialog-info" --app-name="WinApps" --urgency="low" "WinApps" "Resuming Windows."
 | 
			
		||||
            virsh resume "$VM_NAME" &>/dev/null || EXIT_STATUS=$EC_FAIL_RESUME
 | 
			
		||||
        elif (virsh list --state-other --name | xargs | grep -wq "$VM_NAME"); then
 | 
			
		||||
            if (virsh domstate "$VM_NAME" | xargs | grep -wq "shutdown"); then
 | 
			
		||||
        elif (virsh list --state-other --name | grep -Fxq -- "$VM_NAME"); then
 | 
			
		||||
            if (virsh domstate "$VM_NAME" | grep -Fxq "in shutdown"); then
 | 
			
		||||
                dprint "WINDOWS SHUTTING DOWN. WAITING."
 | 
			
		||||
                notify-send --expire-time=4000 --icon="dialog-info" --app-name="WinApps" --urgency="low" "WinApps" "Windows is currently shutting down.\nIt will automatically restart once the shutdown process is complete."
 | 
			
		||||
                EXIT_STATUS=$EC_SD_TIMEOUT
 | 
			
		||||
                while (( TIME_ELAPSED < TIME_LIMIT )); do
 | 
			
		||||
                    if (virsh list --state-shutoff --name | xargs | grep -wq "$VM_NAME"); then
 | 
			
		||||
                    if (virsh list --state-shutoff --name | grep -Fxq -- "$VM_NAME"); then
 | 
			
		||||
                        EXIT_STATUS=0
 | 
			
		||||
                        dprint "WINDOWS SHUT OFF. BOOTING WINDOWS."
 | 
			
		||||
                        notify-send --expire-time=4000 --icon="dialog-info" --app-name="WinApps" --urgency="low" "WinApps" "Booting Windows."
 | 
			
		||||
@@ -354,7 +357,7 @@ function waCheckVMRunning() {
 | 
			
		||||
                    sleep $TIME_INTERVAL
 | 
			
		||||
                    TIME_ELAPSED=$((TIME_ELAPSED + TIME_INTERVAL))
 | 
			
		||||
                done
 | 
			
		||||
            elif (virsh domstate "$VM_NAME" | xargs | grep -wq "crashed"); then
 | 
			
		||||
            elif (virsh domstate "$VM_NAME" | grep -Fxq "crashed"); then
 | 
			
		||||
                dprint "WINDOWS CRASHED. DESTROYING WINDOWS."
 | 
			
		||||
                notify-send --expire-time=4000 --icon="dialog-info" --app-name="WinApps" --urgency="low" "WinApps" "Windows experienced an unexpected crash.\nAttempting to restart Windows."
 | 
			
		||||
                virsh destroy "$VM_NAME" &>/dev/null || EXIT_STATUS=$EC_FAIL_DESTROY
 | 
			
		||||
@@ -364,12 +367,12 @@ function waCheckVMRunning() {
 | 
			
		||||
                    virsh start "$VM_NAME" &>/dev/null || EXIT_STATUS=$EC_FAIL_START
 | 
			
		||||
                    NEEDED_BOOT=true
 | 
			
		||||
                fi
 | 
			
		||||
            elif (virsh domstate "$VM_NAME" | xargs | grep -wq "dying"); then
 | 
			
		||||
            elif (virsh domstate "$VM_NAME" | grep -Fxq "dying"); then
 | 
			
		||||
                dprint "WINDOWS DYING. WAITING."
 | 
			
		||||
                notify-send --expire-time=4000 --icon="dialog-info" --app-name="WinApps" --urgency="low" "WinApps" "Windows is currently shutting down unexpectedly.\nIt will try to restart once the shutdown process finishes."
 | 
			
		||||
                EXIT_STATUS=$EC_DIE_TIMEOUT
 | 
			
		||||
                while (( TIME_ELAPSED < TIME_LIMIT )); do
 | 
			
		||||
                    if (virsh domstate "$VM_NAME" | xargs | grep -wq "crashed"); then
 | 
			
		||||
                    if (virsh domstate "$VM_NAME" | grep -Fxq "crashed"); then
 | 
			
		||||
                        EXIT_STATUS=0
 | 
			
		||||
                        dprint "WINDOWS CRASHED. DESTROYING WINDOWS."
 | 
			
		||||
                        notify-send --expire-time=4000 --icon="dialog-info" --app-name="WinApps" --urgency="low" "WinApps" "Windows experienced an unexpected crash.\nAttempting to restart Windows."
 | 
			
		||||
@@ -381,7 +384,7 @@ function waCheckVMRunning() {
 | 
			
		||||
                            NEEDED_BOOT=true
 | 
			
		||||
                        fi
 | 
			
		||||
                        break
 | 
			
		||||
                    elif (virsh list --state-shutoff --name | xargs | grep -wq "$VM_NAME"); then
 | 
			
		||||
                    elif (virsh list --state-shutoff --name | grep -Fxq -- "$VM_NAME"); then
 | 
			
		||||
                        EXIT_STATUS=0
 | 
			
		||||
                        dprint "WINDOWS SHUT OFF. BOOTING WINDOWS."
 | 
			
		||||
                        notify-send --expire-time=4000 --icon="dialog-info" --app-name="WinApps" --urgency="low" "WinApps" "Booting Windows."
 | 
			
		||||
@@ -392,7 +395,7 @@ function waCheckVMRunning() {
 | 
			
		||||
                    sleep $TIME_INTERVAL
 | 
			
		||||
                    TIME_ELAPSED=$((TIME_ELAPSED + TIME_INTERVAL))
 | 
			
		||||
                done
 | 
			
		||||
            elif (virsh domstate "$VM_NAME" | xargs | grep -wq "pmsuspended" ); then
 | 
			
		||||
            elif (virsh domstate "$VM_NAME" | grep -Fxq "pmsuspended" ); then
 | 
			
		||||
                dprint "WINDOWS SUSPENDED. RESUMING WINDOWS."
 | 
			
		||||
                virsh resume "$VM_NAME" &>/dev/null || EXIT_STATUS=$EC_FAIL_RESUME
 | 
			
		||||
            fi
 | 
			
		||||
@@ -413,7 +416,7 @@ function waCheckVMRunning() {
 | 
			
		||||
 | 
			
		||||
        while (( TIME_ELAPSED < BOOT_TIMEOUT )); do
 | 
			
		||||
            # Check if VM is running
 | 
			
		||||
            if (virsh list --state-running --name | xargs | grep -wq "$VM_NAME"); then
 | 
			
		||||
            if (virsh list --state-running --name | grep -Fxq -- "$VM_NAME"); then
 | 
			
		||||
                # Try to connect to RDP port to verify it's ready
 | 
			
		||||
                if timeout 1 bash -c ">/dev/tcp/$RDP_IP/$RDP_PORT" 2>/dev/null; then
 | 
			
		||||
                    dprint "VM IS READY"
 | 
			
		||||
@@ -623,7 +626,7 @@ function waRunCommand() {
 | 
			
		||||
            /p:"$RDP_PASS" \
 | 
			
		||||
            /scale:"$RDP_SCALE" \
 | 
			
		||||
            +auto-reconnect \
 | 
			
		||||
            /app:program:"$2" \
 | 
			
		||||
            /app:program:"$2",hidef:"$HIDEF" \
 | 
			
		||||
            /v:"$RDP_IP" &>/dev/null &
 | 
			
		||||
 | 
			
		||||
        # Capture the process ID.
 | 
			
		||||
@@ -656,7 +659,7 @@ function waRunCommand() {
 | 
			
		||||
                /scale:"$RDP_SCALE" \
 | 
			
		||||
                +auto-reconnect \
 | 
			
		||||
                /wm-class:"$FULL_NAME" \
 | 
			
		||||
                /app:program:"$WIN_EXECUTABLE",icon:"$ICON",name:"$FULL_NAME" \
 | 
			
		||||
                /app:program:"$WIN_EXECUTABLE",hidef:"$HIDEF",icon:"$ICON",name:"$FULL_NAME" \
 | 
			
		||||
                /v:"$RDP_IP" &>/dev/null &
 | 
			
		||||
 | 
			
		||||
            # Capture the process ID.
 | 
			
		||||
@@ -678,7 +681,7 @@ function waRunCommand() {
 | 
			
		||||
                +auto-reconnect \
 | 
			
		||||
                /drive:media,"$REMOVABLE_MEDIA" \
 | 
			
		||||
                /wm-class:"$FULL_NAME" \
 | 
			
		||||
                /app:program:"$WIN_EXECUTABLE",icon:"$ICON",name:"$FULL_NAME",cmd:\""$FILE_PATH"\" \
 | 
			
		||||
                /app:program:"$WIN_EXECUTABLE",hidef:"$HIDEF",icon:"$ICON",name:"$FULL_NAME",cmd:\""$FILE_PATH"\" \
 | 
			
		||||
                /v:"$RDP_IP" &>/dev/null &
 | 
			
		||||
 | 
			
		||||
            # Capture the process ID.
 | 
			
		||||
@@ -736,6 +739,50 @@ function waCheckIdle() {
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Name: 'waTimeSync'
 | 
			
		||||
# Role: Detect if system went to sleep by comparing uptime progression, then sync time in Windows VM
 | 
			
		||||
function waTimeSync() {
 | 
			
		||||
    local CURRENT_TIME
 | 
			
		||||
    local CURRENT_UPTIME
 | 
			
		||||
    local STORED_TIME=0
 | 
			
		||||
    local STORED_UPTIME=0
 | 
			
		||||
    local EXPECTED_UPTIME=0
 | 
			
		||||
    local UPTIME_DIFF=0
 | 
			
		||||
 | 
			
		||||
    CURRENT_TIME=$(date +%s)
 | 
			
		||||
    CURRENT_UPTIME=$(awk '{print int($1)}' /proc/uptime)
 | 
			
		||||
 | 
			
		||||
    # Read stored values if file exists
 | 
			
		||||
    if [ -f "$SLEEP_DETECT_PATH" ]; then
 | 
			
		||||
        STORED_TIME=$(head -n1 "$SLEEP_DETECT_PATH" 2>/dev/null || echo 0)
 | 
			
		||||
        STORED_UPTIME=$(tail -n1 "$SLEEP_DETECT_PATH" 2>/dev/null || echo 0)
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    if [ "$STORED_TIME" -gt 0 ] && [ "$STORED_UPTIME" -gt 0 ]; then
 | 
			
		||||
        # Calculate what uptime should be now
 | 
			
		||||
        EXPECTED_UPTIME=$((STORED_UPTIME + CURRENT_TIME - STORED_TIME))
 | 
			
		||||
        UPTIME_DIFF=$((EXPECTED_UPTIME - CURRENT_UPTIME))
 | 
			
		||||
 | 
			
		||||
        dprint "UPTIME_DIFF: ${UPTIME_DIFF} seconds"
 | 
			
		||||
 | 
			
		||||
        # If uptime is significantly less than expected, system likely slept
 | 
			
		||||
        if [[ "$UPTIME_DIFF" -gt 30 && ! -f "$SLEEP_MARKER" ]]; then
 | 
			
		||||
            dprint "DETECTED SLEEP/WAKE CYCLE (uptime gap: ${UPTIME_DIFF}s). CREATING SLEEP MARKER TO SYNC WINDOWS TIME."
 | 
			
		||||
 | 
			
		||||
            # Create sleep marker which will be monitored by Windows VM to trigger time sync
 | 
			
		||||
            touch "$SLEEP_MARKER"
 | 
			
		||||
 | 
			
		||||
            dprint "CREATED SLEEP MARKER"
 | 
			
		||||
        fi
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    # Store current values
 | 
			
		||||
    {
 | 
			
		||||
        echo "$CURRENT_TIME"
 | 
			
		||||
        echo "$CURRENT_UPTIME"
 | 
			
		||||
    } > "$SLEEP_DETECT_PATH"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
### MAIN LOGIC ###
 | 
			
		||||
#set -x # Enable for debugging.
 | 
			
		||||
dprint "START"
 | 
			
		||||
@@ -765,6 +812,7 @@ else
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
waCheckPortOpen
 | 
			
		||||
waTimeSync
 | 
			
		||||
waRunCommand "$@"
 | 
			
		||||
 | 
			
		||||
if [[ "$AUTOPAUSE" == "on" ]]; then
 | 
			
		||||
 
 | 
			
		||||
@@ -82,7 +82,7 @@ Please follow the [`docker` instructions](#setup-docker-container).
 | 
			
		||||
> #### 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.
 | 
			
		||||
> 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, and add `[]`.
 | 
			
		||||
 | 
			
		||||
> [!IMPORTANT]
 | 
			
		||||
> Ensure `WAFLAVOR` is set to `"podman"` in `~/.config/winapps/winapps.conf`.
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2048 2048" width="2048" height="2048">
 | 
			
		||||
  <title>POO</title>
 | 
			
		||||
  <title>Windows</title>
 | 
			
		||||
  <defs>
 | 
			
		||||
    <linearGradient id="g1" x2="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-2048,-2048,2048,-2048,2048,2048)">
 | 
			
		||||
      <stop offset="0" stop-color="#067cd6"/>
 | 
			
		||||
@@ -7,8 +7,5 @@
 | 
			
		||||
      <stop offset="1" stop-color="#7adcff"/>
 | 
			
		||||
    </linearGradient>
 | 
			
		||||
  </defs>
 | 
			
		||||
  <style>
 | 
			
		||||
    .s0 { fill: url(#g1) }
 | 
			
		||||
  </style>
 | 
			
		||||
  <path id="Windows" fill-rule="evenodd" class="s0" d="m228 0h746v974h-974v-746c0-125.9 102.1-228 228-228zm746 2048h-746c-125.9 0-228-102.1-228-228v-746h974zm846-2048c125.9 0 228 102.1 228 228v746h-974v-974zm228 1820c0 125.9-102.1 228-228 228h-746v-974h974z"/>
 | 
			
		||||
  <path id="Windows" fill="url(#g1)" fill-rule="evenodd" class="s0" d="m228 0h746v974h-974v-746c0-125.9 102.1-228 228-228zm746 2048h-746c-125.9 0-228-102.1-228-228v-746h974zm846-2048c125.9 0 228 102.1 228 228v746h-974v-974zm228 1820c0 125.9-102.1 228-228 228h-746v-974h974z"/>
 | 
			
		||||
</svg>
 | 
			
		||||
 
 | 
			
		||||
| 
		 Before Width: | Height: | Size: 751 B After Width: | Height: | Size: 723 B  | 
							
								
								
									
										32
									
								
								oem/TimeSync.ps1
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,32 @@
 | 
			
		||||
# Script to monitor if there is a sleep_marker created by WinApps (indicating the Linux host was suspended) in order to trigger a time sync as the time in the Windows VM will otherwise drift while Linux is suspended.
 | 
			
		||||
 | 
			
		||||
# Define the path to monitor. Make sure this matches the location for the sleep_marker in the Winapps script (need to match the APPDATA path).
 | 
			
		||||
$filePath = "\\tsclient\home\.local\share\winapps\sleep_marker"
 | 
			
		||||
$networkPath = "\\tsclient\home"
 | 
			
		||||
 | 
			
		||||
# Function to check and handle file
 | 
			
		||||
function Monitor-File {
 | 
			
		||||
    while ($true) {
 | 
			
		||||
        # Check if network location is available
 | 
			
		||||
        try {
 | 
			
		||||
            $null = Test-Path -Path $networkPath -ErrorAction Stop
 | 
			
		||||
            # Check if file exists
 | 
			
		||||
            if (Test-Path -Path $filePath) {
 | 
			
		||||
                # Run time resync silently
 | 
			
		||||
                w32tm /resync /quiet
 | 
			
		||||
 | 
			
		||||
                # Remove the file
 | 
			
		||||
                Remove-Item -Path $filePath -Force
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        catch {
 | 
			
		||||
            # Network location not available, continue monitoring silently
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        # Wait 5 minutes before next check
 | 
			
		||||
        Start-Sleep -Seconds 3000
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Start monitoring silently
 | 
			
		||||
Monitor-File
 | 
			
		||||
@@ -40,7 +40,7 @@ if %ERRORLEVEL% equ 0 (
 | 
			
		||||
        echo [SUCCESS] Firewall changes applied successfully.
 | 
			
		||||
    ) else (
 | 
			
		||||
        echo [ERROR] Failed to apply firewall changes.
 | 
			
		||||
        echo         Please manually enable Remote Desktop via 'Settings ► System ► Remote Desktop'.
 | 
			
		||||
        echo         Please manually enable Remote Desktop via 'Settings --> System --> Remote Desktop'.
 | 
			
		||||
    )
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@@ -77,3 +77,20 @@ if %ERRORLEVEL% neq 0 (
 | 
			
		||||
        echo [ERROR] Failed to create scheduled task "%taskname%".
 | 
			
		||||
    )
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
REM Create time sync task to be run by the user at login
 | 
			
		||||
copy %~dp0\TimeSync.ps1 %windir%
 | 
			
		||||
set "taskname2=TimeSync"
 | 
			
		||||
set "command2=powershell.exe -WindowStyle Hidden -ExecutionPolicy Bypass -File \"%windir%\TimeSync.ps1\""
 | 
			
		||||
 | 
			
		||||
schtasks /query /tn "%taskname2%" >nul
 | 
			
		||||
if %ERRORLEVEL% equ 0 (
 | 
			
		||||
    echo %DATE% %TIME% Task "%taskname2%" already exists, skipping creation.
 | 
			
		||||
) else (
 | 
			
		||||
    schtasks /create /tn "%taskname2%" /tr "%command2%" /sc onlogon /rl HIGHEST /f
 | 
			
		||||
    if %ERRORLEVEL% equ 0 (
 | 
			
		||||
        echo %DATE% %TIME% Scheduled task "%taskname2%" created successfully.
 | 
			
		||||
    ) else (
 | 
			
		||||
        echo %DATE% %TIME% Failed to create scheduled task %taskname2%.
 | 
			
		||||
    )
 | 
			
		||||
)
 | 
			
		||||
 
 | 
			
		||||
@@ -1,11 +1,13 @@
 | 
			
		||||
diff --git a/WinApps-Launcher.sh b/WinApps-Launcher.sh
 | 
			
		||||
index 1d3a929..a5d7d4c 100755
 | 
			
		||||
--- a/WinApps-Launcher.sh
 | 
			
		||||
+++ b/WinApps-Launcher.sh
 | 
			
		||||
@@ -19,7 +19,7 @@ declare -rx EC_WIN_NOT_SPEC=6
 | 
			
		||||
 declare -rx EC_NO_WIN_FOUND=7
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
 # Paths
 | 
			
		||||
-declare -rx ICONS_PATH="./Icons"
 | 
			
		||||
+declare -rx ICONS_PATH="@out@/Icons"
 | 
			
		||||
 declare -rx APPDATA_PATH="${HOME}/.local/share/winapps"
 | 
			
		||||
 declare -rx CONFIG_PATH="${HOME}/.config/winapps"
 | 
			
		||||
 declare -rx APPDATA_PATH="${XDG_DATA_HOME:-$HOME/.local/share}/winapps"
 | 
			
		||||
 declare -rx CONFIG_PATH="${XDG_CONFIG_HOME:-$HOME/.config}/winapps"
 | 
			
		||||
 declare -rx CONFIG_FILE="${CONFIG_PATH}/winapps.conf"
 | 
			
		||||
 
 | 
			
		||||
@@ -9,12 +9,12 @@
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
let
 | 
			
		||||
  rev = "9b3f6c581791222a3a04508606755d6d0519f322";
 | 
			
		||||
  hash = "sha256-Hy/o5IY9HmTWaX54Ek5ABmppPpzgM+MdCrhzEzVmtwY=";
 | 
			
		||||
  rev = "87f92a80c7e421ab7d1b8801e647dcbfaaa6ee34";
 | 
			
		||||
  hash = "sha256-aZ8uusg5yQOD1xYfaX2IQCbcPdHuVA0tiy1NDkdGCCs=";
 | 
			
		||||
in
 | 
			
		||||
stdenv.mkDerivation rec {
 | 
			
		||||
  pname = "winapps-launcher";
 | 
			
		||||
  version = "0-unstable-2025-03-11";
 | 
			
		||||
  version = "0-unstable-2025-09-01";
 | 
			
		||||
 | 
			
		||||
  src = fetchFromGitHub {
 | 
			
		||||
    owner = "winapps-org";
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
diff --git a/setup.sh b/setup.sh
 | 
			
		||||
index d514bcc..ff53ead 100755
 | 
			
		||||
index 3a871c8..71a8fa0 100755
 | 
			
		||||
--- a/setup.sh
 | 
			
		||||
+++ b/setup.sh
 | 
			
		||||
@@ -39,8 +39,8 @@ readonly SYS_BIN_PATH="/usr/local/bin"                  # UNIX path to 'bin' dir
 | 
			
		||||
@@ -68,7 +68,7 @@ index d514bcc..ff53ead 100755
 | 
			
		||||
         # Complete the previous line.
 | 
			
		||||
         echo -e "${FAIL_TEXT}Failed!${CLEAR_TEXT}\n"
 | 
			
		||||
 
 | 
			
		||||
@@ -1242,11 +1222,11 @@ function waConfigureWindows() {
 | 
			
		||||
@@ -1239,11 +1219,11 @@ function waConfigureWindows() {
 | 
			
		||||
     # Populate variables.
 | 
			
		||||
     WIN_BASH="\
 | 
			
		||||
 #!/usr/bin/env bash
 | 
			
		||||
@@ -82,7 +82,7 @@ index d514bcc..ff53ead 100755
 | 
			
		||||
 Terminal=false
 | 
			
		||||
 Type=Application
 | 
			
		||||
 Icon=${APPDATA_PATH}/icons/windows.svg
 | 
			
		||||
@@ -1293,13 +1273,13 @@ function waConfigureApp() {
 | 
			
		||||
@@ -1290,13 +1270,13 @@ function waConfigureApp() {
 | 
			
		||||
     # Determine the content of the bash script for the application.
 | 
			
		||||
     APP_BASH="\
 | 
			
		||||
 #!/usr/bin/env bash
 | 
			
		||||
@@ -98,16 +98,17 @@ index d514bcc..ff53ead 100755
 | 
			
		||||
 Terminal=false
 | 
			
		||||
 Type=Application
 | 
			
		||||
 Icon=${APP_ICON}
 | 
			
		||||
@@ -1349,6 +1329,8 @@ function waConfigureOfficiallySupported() {
 | 
			
		||||
@@ -1364,7 +1344,9 @@ function waConfigureOfficiallySupported() {
 | 
			
		||||
             fi
 | 
			
		||||
 
 | 
			
		||||
             # Copy the protocol handler to the appropriate directory.
 | 
			
		||||
+            # Fix permissions for nix.
 | 
			
		||||
+            $SUDO chmod u+w "$TARGET_DIR/ms-office-protocol-handler.desktop"
 | 
			
		||||
             $SUDO cp "./apps/ms-office-protocol-handler.desktop" "$TARGET_DIR/ms-office-protocol-handler.desktop"
 | 
			
		||||
+            $SUDO chmod u+w "$TARGET_DIR/ms-office-protocol-handler.desktop"
 | 
			
		||||
         fi
 | 
			
		||||
 
 | 
			
		||||
@@ -1566,7 +1548,7 @@ function waInstall() {
 | 
			
		||||
         # Print feedback.
 | 
			
		||||
@@ -1596,7 +1578,7 @@ function waInstall() {
 | 
			
		||||
     echo -e "${BOLD_TEXT}Installing WinApps.${CLEAR_TEXT}"
 | 
			
		||||
 
 | 
			
		||||
     # Check for existing conflicting WinApps installations.
 | 
			
		||||
@@ -116,21 +117,19 @@ index d514bcc..ff53ead 100755
 | 
			
		||||
 
 | 
			
		||||
     # Load the WinApps configuration file.
 | 
			
		||||
     waLoadConfig
 | 
			
		||||
@@ -1635,8 +1617,11 @@ function waInstall() {
 | 
			
		||||
@@ -1664,9 +1646,8 @@ function waInstall() {
 | 
			
		||||
     # Check for installed applications.
 | 
			
		||||
     waFindInstalled
 | 
			
		||||
 
 | 
			
		||||
     # Install the WinApps bash scripts.
 | 
			
		||||
-    # Install the WinApps bash scripts.
 | 
			
		||||
-    $SUDO ln -sf "${SOURCE_PATH}/bin/winapps" "${BIN_PATH}/winapps"
 | 
			
		||||
-    $SUDO ln -sf "${SOURCE_PATH}/setup.sh" "${BIN_PATH}/winapps-setup"
 | 
			
		||||
+
 | 
			
		||||
+
 | 
			
		||||
+
 | 
			
		||||
+    # Fix permissions for nix.
 | 
			
		||||
+    $SUDO chmod u+w -R "${APPDATA_PATH}"
 | 
			
		||||
 
 | 
			
		||||
     # Configure the Windows RDP session application launcher.
 | 
			
		||||
     waConfigureWindows
 | 
			
		||||
@@ -1697,18 +1682,15 @@ function waUninstall() {
 | 
			
		||||
@@ -1727,18 +1708,15 @@ function waUninstall() {
 | 
			
		||||
     local DESKTOP_FILE_NAME=""        # Stores the name of the '.desktop' file for the application.
 | 
			
		||||
     local BASH_SCRIPT_NAME=""         # Stores the name of the application.
 | 
			
		||||
 
 | 
			
		||||
@@ -151,7 +150,7 @@ index d514bcc..ff53ead 100755
 | 
			
		||||
 
 | 
			
		||||
     # Remove each '.desktop' file.
 | 
			
		||||
     for DESKTOP_FILE_PATH in "${WINAPPS_DESKTOP_FILES[@]}"; do
 | 
			
		||||
@@ -1729,7 +1711,7 @@ function waUninstall() {
 | 
			
		||||
@@ -1759,7 +1737,7 @@ function waUninstall() {
 | 
			
		||||
     done
 | 
			
		||||
 
 | 
			
		||||
     # Store the paths of bash scripts calling 'WinApps' to launch specific applications in an array, returning an empty array if no such files exist.
 | 
			
		||||
@@ -160,7 +159,7 @@ index d514bcc..ff53ead 100755
 | 
			
		||||
 
 | 
			
		||||
     # Remove each bash script.
 | 
			
		||||
     for BASH_SCRIPT_PATH in "${WINAPPS_APP_BASH_SCRIPTS[@]}"; do
 | 
			
		||||
@@ -1750,10 +1732,9 @@ function waUninstall() {
 | 
			
		||||
@@ -1780,10 +1758,9 @@ function waUninstall() {
 | 
			
		||||
     done
 | 
			
		||||
 
 | 
			
		||||
     # Print caveats.
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										76
									
								
								setup.sh
									
									
									
									
									
								
							
							
						
						@@ -116,7 +116,7 @@ trap "waTerminateScript" ERR # Catch non-zero return values.
 | 
			
		||||
### FUNCTIONS ###
 | 
			
		||||
# Name: 'waTerminateScript'
 | 
			
		||||
# Role: Terminates the script when a non-zero return value is encountered.
 | 
			
		||||
# shellcheck disable=SC2317 # Silence warning regarding this function being unreachable.
 | 
			
		||||
# shellcheck disable=SC2329 # Silence warning regarding this function never being invoked (shellCheck is currently bad at figuring out functions that are invoked via trap).
 | 
			
		||||
function waTerminateScript() {
 | 
			
		||||
    # Store the non-zero exit status received by the trap.
 | 
			
		||||
    local EXIT_STATUS=$?
 | 
			
		||||
@@ -838,16 +838,13 @@ function waCheckVMRunning() {
 | 
			
		||||
    # Print feedback.
 | 
			
		||||
    echo -n "Checking the status of the Windows VM... "
 | 
			
		||||
 | 
			
		||||
    # Declare variables.
 | 
			
		||||
    local VM_STATE="" # Stores the state of the Windows VM.
 | 
			
		||||
 | 
			
		||||
    # Obtain VM Status
 | 
			
		||||
    VM_PAUSED=0
 | 
			
		||||
    virsh list --state-paused | grep -wq "$VM_NAME" || VM_PAUSED="$?"
 | 
			
		||||
    virsh list --state-paused --name | grep -Fxq -- "$VM_NAME" || VM_PAUSED="$?"
 | 
			
		||||
    VM_RUNNING=0
 | 
			
		||||
    virsh list --state-running | grep -wq "$VM_NAME" || VM_RUNNING="$?"
 | 
			
		||||
    virsh list --state-running --name | grep -Fxq -- "$VM_NAME" || VM_RUNNING="$?"
 | 
			
		||||
    VM_SHUTOFF=0
 | 
			
		||||
    virsh list --state-shutoff | grep -wq "$VM_NAME" || VM_SHUTOFF="$?"
 | 
			
		||||
    virsh list --state-shutoff --name | grep -Fxq -- "$VM_NAME" || VM_SHUTOFF="$?"
 | 
			
		||||
 | 
			
		||||
    if [[ $VM_SHUTOFF == "0" ]]; then
 | 
			
		||||
        # Complete the previous line.
 | 
			
		||||
@@ -1046,6 +1043,7 @@ function waCheckRDPAccess() {
 | 
			
		||||
        /p:"$RDP_PASS" \
 | 
			
		||||
        /scale:"$RDP_SCALE" \
 | 
			
		||||
        +auto-reconnect \
 | 
			
		||||
        +home-drive \
 | 
			
		||||
        /app:program:"C:\Windows\System32\cmd.exe",cmd:"/C type NUL > $TEST_PATH_WIN && tsdiscon" \
 | 
			
		||||
        /v:"$RDP_IP" &>"$FREERDP_LOG" &
 | 
			
		||||
 | 
			
		||||
@@ -1153,7 +1151,7 @@ function waFindInstalled() {
 | 
			
		||||
        source "./apps/${APPLICATION}/info"
 | 
			
		||||
 | 
			
		||||
        # Append commands to batch file.
 | 
			
		||||
        echo "IF EXIST \"${WIN_EXECUTABLE}\" ECHO ${APPLICATION} >> ${TMP_INST_FILE_PATH_WIN}" >>"$BATCH_SCRIPT_PATH"
 | 
			
		||||
        echo "IF EXIST \"${WIN_EXECUTABLE}\" ECHO ${APPLICATION}^|^|^|${WIN_EXECUTABLE} >> ${TMP_INST_FILE_PATH_WIN}" >>"$BATCH_SCRIPT_PATH"
 | 
			
		||||
    done
 | 
			
		||||
 | 
			
		||||
    # Append a command to the batch script to run the PowerShell script and store its output in the 'detected' file.
 | 
			
		||||
@@ -1177,6 +1175,7 @@ function waFindInstalled() {
 | 
			
		||||
        /p:"$RDP_PASS" \
 | 
			
		||||
        /scale:"$RDP_SCALE" \
 | 
			
		||||
        +auto-reconnect \
 | 
			
		||||
        +home-drive \
 | 
			
		||||
        /app:program:"C:\Windows\System32\cmd.exe",cmd:"/C "$BATCH_SCRIPT_PATH_WIN"" \
 | 
			
		||||
        /v:"$RDP_IP" &>"$FREERDP_LOG" &
 | 
			
		||||
 | 
			
		||||
@@ -1330,17 +1329,35 @@ function waConfigureOfficiallySupported() {
 | 
			
		||||
 | 
			
		||||
    # Create application entries for each officially supported application.
 | 
			
		||||
    for OSA in "${OSA_LIST[@]}"; do
 | 
			
		||||
        # Print feedback.
 | 
			
		||||
        echo -n "Creating an application entry for ${OSA}... "
 | 
			
		||||
        # Split the line by the '|||' delimiter
 | 
			
		||||
        local APP_NAME="${OSA%%|||*}"
 | 
			
		||||
        local ACTUAL_WIN_EXECUTABLE="${OSA##*|||}"
 | 
			
		||||
 | 
			
		||||
        # Copy application icon and information.
 | 
			
		||||
        $SUDO cp -r "./apps/${OSA}" "${APPDATA_PATH}/apps"
 | 
			
		||||
        # If splitting failed for some reason, skip this line to be safe.
 | 
			
		||||
        if [[ -z "$APP_NAME" || -z "$ACTUAL_WIN_EXECUTABLE" ]]; then
 | 
			
		||||
            continue
 | 
			
		||||
        fi
 | 
			
		||||
 | 
			
		||||
        # Configure the application.
 | 
			
		||||
        waConfigureApp "$OSA" svg
 | 
			
		||||
        # Print feedback using the clean application name.
 | 
			
		||||
        echo -n "Creating an application entry for ${APP_NAME}... "
 | 
			
		||||
 | 
			
		||||
        # Copy the original, unmodified application assets.
 | 
			
		||||
        $SUDO cp -r "./apps/${APP_NAME}" "${APPDATA_PATH}/apps"
 | 
			
		||||
 | 
			
		||||
        local DESTINATION_INFO_FILE="${APPDATA_PATH}/apps/${APP_NAME}/info"
 | 
			
		||||
 | 
			
		||||
        # Sanitize the string using pure Bash. This is fast and safe.
 | 
			
		||||
        local SED_SAFE_PATH="${ACTUAL_WIN_EXECUTABLE//&/\\&}"
 | 
			
		||||
        SED_SAFE_PATH="${SED_SAFE_PATH//\\/\\\\}"
 | 
			
		||||
 | 
			
		||||
        # Use the sanitized string to safely edit the file.
 | 
			
		||||
        $SUDO sed -i "s|^WIN_EXECUTABLE=.*|WIN_EXECUTABLE=\"${SED_SAFE_PATH}\"|" "$DESTINATION_INFO_FILE"
 | 
			
		||||
 | 
			
		||||
        # Configure the application using the clean name.
 | 
			
		||||
        waConfigureApp "$APP_NAME" svg
 | 
			
		||||
 | 
			
		||||
        # Check if the application is an Office app and copy the protocol handler.
 | 
			
		||||
        if [[ " ${OFFICE_APPS[*]} " == *" $OSA "* ]]; then
 | 
			
		||||
        if [[ " ${OFFICE_APPS[*]} " == *" $APP_NAME "* ]]; 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"
 | 
			
		||||
@@ -1370,6 +1387,7 @@ function waConfigureApps() {
 | 
			
		||||
    local APP_INSTALL=""   # Stores the option selected by the user.
 | 
			
		||||
    local SELECTED_APPS=() # Stores the officially supported applications selected by the user.
 | 
			
		||||
    local TEMP_ARRAY=()    # Temporary array used for sorting elements of an array.
 | 
			
		||||
    declare -A APP_DATA_MAP # Associative array to map short names back to their full data line.
 | 
			
		||||
 | 
			
		||||
    # 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.
 | 
			
		||||
@@ -1384,14 +1402,28 @@ function waConfigureApps() {
 | 
			
		||||
        # - Executable Path               (WIN_EXECUTABLE)
 | 
			
		||||
        # - Supported MIME Types          (MIME_TYPES)
 | 
			
		||||
        # - Application Icon              (ICON)
 | 
			
		||||
 | 
			
		||||
        # Split the line to get the clean application name
 | 
			
		||||
        local APP_NAME="${OSA%%|||*}"
 | 
			
		||||
        local ACTUAL_WIN_EXECUTABLE="${OSA##*|||*}"
 | 
			
		||||
 | 
			
		||||
        # If splitting failed, skip this entry.
 | 
			
		||||
        if [[ -z "$APP_NAME" ]]; then
 | 
			
		||||
            continue
 | 
			
		||||
        fi
 | 
			
		||||
 | 
			
		||||
        # Use the clean APP_NAME to source the info file
 | 
			
		||||
        # shellcheck source=/dev/null # Exclude this file from being checked by ShellCheck.
 | 
			
		||||
        source "./apps/${OSA}/info"
 | 
			
		||||
        source "./apps/${APP_NAME}/info"
 | 
			
		||||
 | 
			
		||||
        # Add both the simplified and full name of the application to an array.
 | 
			
		||||
        APPS+=("${FULL_NAME} (${OSA})")
 | 
			
		||||
        APPS+=("${FULL_NAME} (${APP_NAME})")
 | 
			
		||||
 | 
			
		||||
        # Store the original data line in our map so we can retrieve it later.
 | 
			
		||||
        APP_DATA_MAP["$APP_NAME"]="$OSA"
 | 
			
		||||
 | 
			
		||||
        # Extract the executable file name (e.g. 'MyApp.exe') from the absolute path.
 | 
			
		||||
        WIN_EXECUTABLE="${WIN_EXECUTABLE##*\\}"
 | 
			
		||||
        WIN_EXECUTABLE="${ACTUAL_WIN_EXECUTABLE##*\\}"
 | 
			
		||||
 | 
			
		||||
        # Trim any leading or trailing whitespace characters from the executable file name.
 | 
			
		||||
        read -r WIN_EXECUTABLE <<<"$(echo "$WIN_EXECUTABLE" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')"
 | 
			
		||||
@@ -1426,11 +1458,11 @@ function waConfigureApps() {
 | 
			
		||||
        for SELECTED_APP in "${SELECTED_APPS[@]}"; do
 | 
			
		||||
            # Capture the substring within (but not including) the parentheses.
 | 
			
		||||
            # This substring represents the officially supported application name (see above loop).
 | 
			
		||||
            SELECTED_APP="${SELECTED_APP##*(}"
 | 
			
		||||
            SELECTED_APP="${SELECTED_APP%%)}"
 | 
			
		||||
            local SHORT_NAME="${SELECTED_APP##*(}"
 | 
			
		||||
            SHORT_NAME="${SHORT_NAME%%)}"
 | 
			
		||||
 | 
			
		||||
            # Add the substring back to the 'install' file.
 | 
			
		||||
            echo "$SELECTED_APP" >>"$INST_FILE_PATH"
 | 
			
		||||
            # Use the map to find the original data line (e.g., "word|||C:\...") and write it back.
 | 
			
		||||
            echo "${APP_DATA_MAP[$SHORT_NAME]}" >>"$INST_FILE_PATH"
 | 
			
		||||
        done
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||