This commit is contained in:
firebadnofire 2024-05-28 14:22:47 -04:00
parent 39b1e89d94
commit a143f399e1
Signed by: firebadnofire
SSH Key Fingerprint: SHA256:bnN1TGRauJN84CxL1IZ/2uHNvJualwYkFjOKaaOilJE
7 changed files with 2758 additions and 0 deletions

View File

@ -1,2 +1,3 @@
# any-app
any-app is a FOSS electron application to turn ANY webpage into an APP

15
index.html Normal file
View File

@ -0,0 +1,15 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My Electron App</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<h1><span style="color: LimeGreen">Error!</span></h1>
<p>Looks like you forgot to specify a URL when launching the election app. Please rerun with --url="https://yourURL.com"</p>
<p>If you are running this from a shortcut in windows, just add --url="https://yourURL.com" after the "target" command. It should look like this:</p>
<img src="target.png">
</body>
</html>

65
main.js Normal file
View File

@ -0,0 +1,65 @@
const { app, BrowserWindow, nativeImage } = require('electron');
const path = require('path');
const axios = require('axios');
const argv = require('yargs')
.option('url', {
alias: 'u',
description: 'URL to open',
type: 'string',
})
.argv;
function createWindow() {
const mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: false,
contextIsolation: true,
},
autoHideMenuBar: true,
title: 'any-app',
});
const targetUrl = argv.url || `file://${path.join(__dirname, 'index.html')}`;
mainWindow.loadURL(targetUrl);
mainWindow.webContents.on('did-finish-load', async () => {
try {
const faviconUrl = await mainWindow.webContents.executeJavaScript(`
(() => {
const link = document.querySelector('link[rel~="icon"]');
return link ? link.href : '';
})()
`);
if (faviconUrl) {
const response = await axios.get(faviconUrl, { responseType: 'arraybuffer' });
const icon = nativeImage.createFromBuffer(Buffer.from(response.data, 'binary'));
mainWindow.setIcon(icon);
}
} catch (error) {
console.error('Failed to set favicon:', error);
}
});
mainWindow.on('closed', () => {
app.quit();
});
mainWindow.maximize();
}
app.on('ready', createWindow);
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit();
}
});
app.on('activate', () => {
if (BrowserWindow.getAllWindows().length === 0) {
createWindow();
}
});

2649
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

27
package.json Normal file
View File

@ -0,0 +1,27 @@
{
"name": "any-app",
"version": "1.0.0",
"description": "any-app is a FOSS electron application to turn ANY webpage into an APP",
"main": "main.js",
"scripts": {
"start": "electron .",
"package-win": "electron-packager . any-app --platform=win32 --arch=x64 --prune=true --out=release-builds",
"package-lin": "electron-packager . any-app --platform=linux --arch=x64 --prune=true --out=release-builds",
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "firebadnofire",
"license": "MIT",
"repository": {
"type": "git",
"url": "https://codeberg.org/firebadnofire/any-app"
},
"devDependencies": {
"@electron/packager": "^18.3.2",
"electron": "^30.0.8"
},
"dependencies": {
"axios": "^1.7.2",
"yargs": "^17.7.2"
}
}

1
styles.css Normal file
View File

@ -0,0 +1 @@
pre,code{font-family:Menlo,Monaco,courier new,monospace}pre{padding:.5rem;line-height:1.25;overflow-x:scroll}@media print{*,*:before,*:after{background:0 0!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}}a,a:visited{color:#01ff70}a:hover,a:focus,a:active{color:#2ecc40}.retro-no-decoration{text-decoration:none}html{font-size:12px}@media screen and (min-width:32rem) and (max-width:48rem){html{font-size:15px}}@media screen and (min-width:48rem){html{font-size:16px}}body{line-height:1.85}p,.retro-p{font-size:1rem;margin-bottom:1.3rem}h1,.retro-h1,h2,.retro-h2,h3,.retro-h3,h4,.retro-h4{margin:1.414rem 0 .5rem;font-weight:inherit;line-height:1.42}h1,.retro-h1{margin-top:0;font-size:3.998rem}h2,.retro-h2{font-size:2.827rem}h3,.retro-h3{font-size:1.999rem}h4,.retro-h4{font-size:1.414rem}h5,.retro-h5{font-size:1.121rem}h6,.retro-h6{font-size:.88rem}small,.retro-small{font-size:.707em}img,canvas,iframe,video,svg,select,textarea{max-width:100%}html,body{background-color:#222;min-height:100%}html{font-size:18px}body{color:#fafafa;font-family:courier new;line-height:1.45;margin:6rem auto 1rem;max-width:48rem;padding:.25rem}pre{background-color:#333}blockquote{border-left:3px solid #01ff70;padding-left:1rem}

BIN
target.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB