From 09db504e419205d99b4e4b31cc0eb87c284ff67c Mon Sep 17 00:00:00 2001 From: Noxy <107372460+noxygalaxy@users.noreply.github.com> Date: Mon, 11 Nov 2024 09:39:10 +0200 Subject: [PATCH 01/15] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1c5c7dd..2695811 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,2 @@ # Installer -CLI installation tool that automates the installation, removal and maintenance of themes. +GUI/PS installation tool that automates the installation, removal and maintenance of themes. From ca4955e823acd404eaca5f40fc2166febb51097a Mon Sep 17 00:00:00 2001 From: Noxy <107372460+noxygalaxy@users.noreply.github.com> Date: Mon, 11 Nov 2024 09:39:17 +0200 Subject: [PATCH 02/15] Delete steam.ps1 --- steam.ps1 | 38 -------------------------------------- 1 file changed, 38 deletions(-) delete mode 100644 steam.ps1 diff --git a/steam.ps1 b/steam.ps1 deleted file mode 100644 index 180e7dd..0000000 --- a/steam.ps1 +++ /dev/null @@ -1,38 +0,0 @@ -$tempPath = "$env:TEMP\SpaceTheme_for_Steam.zip" -$skinsFolder = "C:\Program Files (x86)\Steam\steamui\skins" -$extractedFolderPath = "$skinsFolder\Steam-main" -$destinationFolder = "$skinsFolder\SpaceTheme For Steam" - -if (Test-Path $skinsFolder) { - Write-Output "Millennium installed! Proceeding with SpaceTheme installation..." - - Write-Output "Downloading SpaceTheme for Steam..." - Invoke-WebRequest -Uri "https://github.com/SpaceTheme/Steam/archive/refs/heads/main.zip" -OutFile $tempPath - - Write-Output "Extracting files..." - Add-Type -AssemblyName System.IO.Compression.FileSystem - [System.IO.Compression.ZipFile]::ExtractToDirectory($tempPath, $skinsFolder) - - if (Test-Path $extractedFolderPath) { - if (!(Test-Path $destinationFolder)) { - New-Item -ItemType Directory -Path $destinationFolder | Out-Null - } - Get-ChildItem -Path $extractedFolderPath -Recurse | ForEach-Object { - Move-Item -Path $_.FullName -Destination $destinationFolder -Force - } - - Write-Output "SpaceTheme for Steam installed successfully." - - Remove-Item $extractedFolderPath -Recurse -Force - } else { - Write-Output "Failed to find the extracted 'Steam-main' folder." - } - - Remove-Item $tempPath -Force -} else { - Write-Output "You don't have Millennium installed." - - if (Test-Path $tempPath) { - Remove-Item $tempPath -Force - } -} From 274e884cc1e251dd05badc6e339083bb1c5bae6b Mon Sep 17 00:00:00 2001 From: Noxy <107372460+noxygalaxy@users.noreply.github.com> Date: Mon, 11 Nov 2024 09:39:23 +0200 Subject: [PATCH 03/15] Delete discord.ps1 --- discord.ps1 | 25 ------------------------- 1 file changed, 25 deletions(-) delete mode 100644 discord.ps1 diff --git a/discord.ps1 b/discord.ps1 deleted file mode 100644 index 39a837f..0000000 --- a/discord.ps1 +++ /dev/null @@ -1,25 +0,0 @@ -$betterDiscordThemes = "$env:APPDATA\BetterDiscord\themes" -$vencordThemes = "$env:APPDATA\Vencord\themes" - -$themeUrl = "https://raw.githubusercontent.com/SpaceTheme/Discord/refs/heads/main/SpaceTheme.theme.css" - -function Install-Theme ($themePath) { - $themeFile = Join-Path -Path $themePath -ChildPath "SpaceTheme.theme.css" - Invoke-RestMethod -Uri $themeUrl -OutFile $themeFile - Write-Host "SpaceTheme for Discord installed in $themePath" -} - -$betterDiscordExists = Test-Path -Path $betterDiscordThemes -$vencordExists = Test-Path -Path $vencordThemes - -if ($betterDiscordExists) { - Install-Theme $betterDiscordThemes -} - -if ($vencordExists) { - Install-Theme $vencordThemes -} - -if (-not $betterDiscordExists -and -not $vencordExists) { - Write-Host "You don't have BetterDiscord or Vencord installed! Install them from the official website." -} From 8da021054e353f93e0c9215535f535377ce45668 Mon Sep 17 00:00:00 2001 From: Noxy <107372460+noxygalaxy@users.noreply.github.com> Date: Mon, 11 Nov 2024 09:40:29 +0200 Subject: [PATCH 04/15] Add files via upload --- ps-installer/discord.ps1 | 25 +++++++++++++++++++++++++ ps-installer/steam.ps1 | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 ps-installer/discord.ps1 create mode 100644 ps-installer/steam.ps1 diff --git a/ps-installer/discord.ps1 b/ps-installer/discord.ps1 new file mode 100644 index 0000000..39a837f --- /dev/null +++ b/ps-installer/discord.ps1 @@ -0,0 +1,25 @@ +$betterDiscordThemes = "$env:APPDATA\BetterDiscord\themes" +$vencordThemes = "$env:APPDATA\Vencord\themes" + +$themeUrl = "https://raw.githubusercontent.com/SpaceTheme/Discord/refs/heads/main/SpaceTheme.theme.css" + +function Install-Theme ($themePath) { + $themeFile = Join-Path -Path $themePath -ChildPath "SpaceTheme.theme.css" + Invoke-RestMethod -Uri $themeUrl -OutFile $themeFile + Write-Host "SpaceTheme for Discord installed in $themePath" +} + +$betterDiscordExists = Test-Path -Path $betterDiscordThemes +$vencordExists = Test-Path -Path $vencordThemes + +if ($betterDiscordExists) { + Install-Theme $betterDiscordThemes +} + +if ($vencordExists) { + Install-Theme $vencordThemes +} + +if (-not $betterDiscordExists -and -not $vencordExists) { + Write-Host "You don't have BetterDiscord or Vencord installed! Install them from the official website." +} diff --git a/ps-installer/steam.ps1 b/ps-installer/steam.ps1 new file mode 100644 index 0000000..180e7dd --- /dev/null +++ b/ps-installer/steam.ps1 @@ -0,0 +1,38 @@ +$tempPath = "$env:TEMP\SpaceTheme_for_Steam.zip" +$skinsFolder = "C:\Program Files (x86)\Steam\steamui\skins" +$extractedFolderPath = "$skinsFolder\Steam-main" +$destinationFolder = "$skinsFolder\SpaceTheme For Steam" + +if (Test-Path $skinsFolder) { + Write-Output "Millennium installed! Proceeding with SpaceTheme installation..." + + Write-Output "Downloading SpaceTheme for Steam..." + Invoke-WebRequest -Uri "https://github.com/SpaceTheme/Steam/archive/refs/heads/main.zip" -OutFile $tempPath + + Write-Output "Extracting files..." + Add-Type -AssemblyName System.IO.Compression.FileSystem + [System.IO.Compression.ZipFile]::ExtractToDirectory($tempPath, $skinsFolder) + + if (Test-Path $extractedFolderPath) { + if (!(Test-Path $destinationFolder)) { + New-Item -ItemType Directory -Path $destinationFolder | Out-Null + } + Get-ChildItem -Path $extractedFolderPath -Recurse | ForEach-Object { + Move-Item -Path $_.FullName -Destination $destinationFolder -Force + } + + Write-Output "SpaceTheme for Steam installed successfully." + + Remove-Item $extractedFolderPath -Recurse -Force + } else { + Write-Output "Failed to find the extracted 'Steam-main' folder." + } + + Remove-Item $tempPath -Force +} else { + Write-Output "You don't have Millennium installed." + + if (Test-Path $tempPath) { + Remove-Item $tempPath -Force + } +} From ea9882dbedb477e5813af611b0cfac33473670a7 Mon Sep 17 00:00:00 2001 From: Noxy <107372460+noxygalaxy@users.noreply.github.com> Date: Mon, 11 Nov 2024 09:42:19 +0200 Subject: [PATCH 05/15] Add files via upload --- gui-installer/main.js | 244 +++++++++ gui-installer/package.json | 36 ++ .../src/assets/arrow-left-disabled.svg | 7 + gui-installer/src/assets/arrow-left.svg | 7 + .../src/assets/arrow-right-disabled.svg | 7 + gui-installer/src/assets/arrow-right.svg | 7 + gui-installer/src/assets/checkmark.svg | 7 + gui-installer/src/assets/close-icon.svg | 8 + gui-installer/src/assets/discord.svg | 7 + gui-installer/src/assets/donate.svg | 7 + gui-installer/src/assets/github.svg | 7 + .../src/assets/installation-icon.svg | 7 + .../src/assets/installdone-disabled.svg | 7 + gui-installer/src/assets/installdone.svg | 7 + gui-installer/src/assets/logo.ico | Bin 0 -> 3626 bytes gui-installer/src/assets/logo.png | Bin 0 -> 9032 bytes gui-installer/src/assets/minimize-icon.svg | 7 + gui-installer/src/assets/mit-icon.svg | 7 + gui-installer/src/assets/website.svg | 7 + gui-installer/src/index.html | 150 ++++++ gui-installer/src/logs.html | 159 ++++++ gui-installer/src/preload.js | 5 + gui-installer/src/select-theme.html | 196 +++++++ gui-installer/src/style.css | 485 ++++++++++++++++++ 24 files changed, 1381 insertions(+) create mode 100644 gui-installer/main.js create mode 100644 gui-installer/package.json create mode 100644 gui-installer/src/assets/arrow-left-disabled.svg create mode 100644 gui-installer/src/assets/arrow-left.svg create mode 100644 gui-installer/src/assets/arrow-right-disabled.svg create mode 100644 gui-installer/src/assets/arrow-right.svg create mode 100644 gui-installer/src/assets/checkmark.svg create mode 100644 gui-installer/src/assets/close-icon.svg create mode 100644 gui-installer/src/assets/discord.svg create mode 100644 gui-installer/src/assets/donate.svg create mode 100644 gui-installer/src/assets/github.svg create mode 100644 gui-installer/src/assets/installation-icon.svg create mode 100644 gui-installer/src/assets/installdone-disabled.svg create mode 100644 gui-installer/src/assets/installdone.svg create mode 100644 gui-installer/src/assets/logo.ico create mode 100644 gui-installer/src/assets/logo.png create mode 100644 gui-installer/src/assets/minimize-icon.svg create mode 100644 gui-installer/src/assets/mit-icon.svg create mode 100644 gui-installer/src/assets/website.svg create mode 100644 gui-installer/src/index.html create mode 100644 gui-installer/src/logs.html create mode 100644 gui-installer/src/preload.js create mode 100644 gui-installer/src/select-theme.html create mode 100644 gui-installer/src/style.css diff --git a/gui-installer/main.js b/gui-installer/main.js new file mode 100644 index 0000000..c742939 --- /dev/null +++ b/gui-installer/main.js @@ -0,0 +1,244 @@ +const { app, BrowserWindow, ipcMain } = require('electron'); +const path = require('path'); +const fs = require('fs'); +const https = require('https'); +const AdmZip = require('adm-zip'); + +function createWindow() { + const win = new BrowserWindow({ + width: 750, + height: 500, + webPreferences: { + nodeIntegration: true, + contextIsolation: false, + preload: path.join(__dirname, 'src/preload.js') + }, + icon: path.join(__dirname, 'src/assets/logo.png'), + frame: false, + transparent: true, + backgroundColor: '#00000000', + autoHideMenuBar: true, + resizable: false + }); + + win.loadFile('src/index.html'); +} + +const delay = ms => new Promise(resolve => setTimeout(resolve, ms)); + +ipcMain.on('start-installation', async (event, data) => { + const appData = process.env.APPDATA; + + function sendLog(message) { + console.log('Debug:', message); + event.reply('installation-logs', [message]); + } + + sendLog('Preparing installation...'); + await delay(1000); + + if (data.theme === 'DiscordTheme') { + const betterDiscordPath = path.join(appData, 'BetterDiscord', 'themes'); + const vencordPath = path.join(appData, 'Vencord', 'themes'); + const vencordThemePath = path.join(vencordPath, 'SpaceTheme.theme.css'); + const betterDiscordThemePath = path.join(betterDiscordPath, 'SpaceTheme.theme.css'); + const themeUrl = 'https://raw.githubusercontent.com/SpaceTheme/Discord/refs/heads/main/SpaceTheme.theme.css'; + + async function installTheme(themePath, clientName) { + try { + if (!fs.existsSync(themePath)) { + fs.mkdirSync(themePath, { recursive: true }); + sendLog(`Created directory for ${clientName}`); + } + + const themeFile = path.join(themePath, 'SpaceTheme.theme.css'); + const file = fs.createWriteStream(themeFile); + + return new Promise((resolve, reject) => { + sendLog(`Downloading theme for ${clientName}...`); + https.get(themeUrl, response => { + response.pipe(file); + file.on('finish', () => { + sendLog(`SpaceTheme.theme.css downloaded successfully in ${themePath}`); + file.close(); + sendLog(`SpaceTheme installed successfully for ${clientName}`); + resolve(); + }); + }).on('error', error => { + sendLog(`Error downloading theme for ${clientName}: ${error.message}`); + reject(error); + }); + }); + } catch (error) { + sendLog(`Error installing theme for ${clientName}: ${error.message}`); + throw error; + } + } + + try { + if (data.option === 'uninstall-theme') { + let uninstalled = false; + if (fs.existsSync(vencordThemePath)) { + fs.unlinkSync(vencordThemePath); + sendLog('SpaceTheme uninstalled successfully from Vencord'); + uninstalled = true; + } + if (fs.existsSync(betterDiscordThemePath)) { + fs.unlinkSync(betterDiscordThemePath); + sendLog('SpaceTheme uninstalled successfully from BetterDiscord'); + uninstalled = true; + } + if (!uninstalled) { + sendLog('Discord theme not found in any supported client'); + } + return; + } + + if (data.option === 'reset-theme') { + sendLog('Starting theme reset process...'); + if (fs.existsSync(vencordThemePath)) { + fs.unlinkSync(vencordThemePath); + sendLog('Removed existing Vencord theme'); + } + if (fs.existsSync(betterDiscordThemePath)) { + fs.unlinkSync(betterDiscordThemePath); + sendLog('Removed existing BetterDiscord theme'); + } + } + + let installed = false; + if (fs.existsSync(betterDiscordPath)) { + await installTheme(betterDiscordPath, 'BetterDiscord'); + installed = true; + } + if (fs.existsSync(vencordPath)) { + await installTheme(vencordPath, 'Vencord'); + installed = true; + } + if (!installed) { + sendLog('Neither BetterDiscord nor Vencord is installed. Please install one of them first.'); + } + } catch (error) { + sendLog(`Installation failed: ${error.message}`); + } + + } else if (data.theme === 'SteamTheme') { + await delay(1000); + + const skinsFolder = 'C:\\Program Files (x86)\\Steam\\steamui\\skins'; + const destinationFolder = path.join(skinsFolder, 'SpaceTheme For Steam'); + const tempPath = path.join(process.env.TEMP, 'SpaceTheme_for_Steam.zip'); + const extractedFolderPath = path.join(skinsFolder, 'Steam-main'); + + function cleanup() { + try { + if (fs.existsSync(tempPath)) { + fs.unlinkSync(tempPath); + } + if (fs.existsSync(extractedFolderPath)) { + fs.rmSync(extractedFolderPath, { recursive: true, force: true }); + } + } catch (error) { + sendLog(`Cleanup error: ${error.message}`); + } + } + + try { + if (data.option === 'uninstall-theme') { + sendLog('Starting Steam theme uninstallation...'); + sendLog('Trying to see if you have SteamTheme installed...'); + if (fs.existsSync(destinationFolder)) { + fs.rmSync(destinationFolder, { recursive: true, force: true }); + sendLog('SteamTheme path was found and deleted!'); + sendLog('SpaceTheme uninstalled successfully for Steam.'); + } else { + sendLog('Steam theme not found'); + } + return; + } + + if (data.option === 'reset-theme') { + sendLog('Starting Steam theme reset...'); + if (fs.existsSync(destinationFolder)) { + fs.rmSync(destinationFolder, { recursive: true, force: true }); + sendLog('Removed existing Steam theme installation'); + sendLog('Starting installation...'); + } else { + sendLog('No existing Steam theme found, proceeding with installation...'); + } + } + + if (!fs.existsSync(skinsFolder)) { + sendLog('Steam skins folder not found. Please install Steam first.'); + return; + } + + sendLog('Downloading SpaceTheme for Steam...'); + const file = fs.createWriteStream(tempPath); + + await new Promise((resolve, reject) => { + sendLog('Checking website availability...'); + https.get('https://github.com/SpaceTheme/Steam/archive/refs/heads/main.zip', response => { + if (response.statusCode === 302 || response.statusCode === 301) { + https.get(response.headers.location, redirectResponse => { + if (redirectResponse.statusCode !== 200) { + reject(new Error(`Download failed with status ${redirectResponse.statusCode}`)); + return; + } + redirectResponse.pipe(file); + file.on('finish', () => { + file.close(); + resolve(); + }); + }).on('error', reject); + } else if (response.statusCode === 200) { + response.pipe(file); + file.on('finish', () => { + file.close(); + resolve(); + }); + } else { + reject(new Error(`Unexpected status code: ${response.statusCode}`)); + } + }).on('error', reject); + }); + + sendLog('Website is available for you!'); + sendLog(`SpaceTheme for Steam was successfully installed in ${tempPath} folder.`); + sendLog('Extracting files... '); + const zip = new AdmZip(tempPath); + zip.extractAllTo(skinsFolder, true); + sendLog(`SpaceTheme for Steam was successfully extracted to ${skinsFolder} folder.`); + + if (fs.existsSync(extractedFolderPath)) { + fs.renameSync(extractedFolderPath, destinationFolder); + sendLog('SpaceTheme installed successfully for Steam.'); + } else { + throw new Error('Failed to extract theme files'); + } + } catch (error) { + sendLog(`Error during Steam theme operation: ${error.message}`); + } finally { + cleanup(); + } + } +}); + +ipcMain.on('close-window', () => { + const win = BrowserWindow.getFocusedWindow(); + if (win) win.close(); +}); + +app.whenReady().then(createWindow); + +app.on('window-all-closed', () => { + if (process.platform !== 'darwin') { + app.quit(); + } +}); + +app.on('activate', () => { + if (BrowserWindow.getAllWindows().length === 0) { + createWindow(); + } +}); \ No newline at end of file diff --git a/gui-installer/package.json b/gui-installer/package.json new file mode 100644 index 0000000..264f8d4 --- /dev/null +++ b/gui-installer/package.json @@ -0,0 +1,36 @@ +{ + "name": "spacetheme-installer", + "private": true, + "version": "1.0.1", + "main": "main.js", + "scripts": { + "start": "electron .", + "build": "electron-builder" + }, + "dependencies": { + "adm-zip": "^0.5.16" + }, + "keywords": [], + "author": "", + "license": "MIT", + "description": "", + "build": { + "appId": "com.noxy.st-installer", + "productName": "SpaceTheme-Installer", + "copyright": "Copyright © 2024 SpaceEnergy", + "win": { + "target": [ + "nsis", + "portable" + ], + "icon": "src/assets/logo.png" + }, + "directories": { + "buildResources": "public" + } + }, + "devDependencies": { + "electron": "^29.1.0", + "electron-builder": "^25.1.8" + } +} diff --git a/gui-installer/src/assets/arrow-left-disabled.svg b/gui-installer/src/assets/arrow-left-disabled.svg new file mode 100644 index 0000000..e5ef17e --- /dev/null +++ b/gui-installer/src/assets/arrow-left-disabled.svg @@ -0,0 +1,7 @@ + + + Created with Pixso. + + + + diff --git a/gui-installer/src/assets/arrow-left.svg b/gui-installer/src/assets/arrow-left.svg new file mode 100644 index 0000000..741a6e0 --- /dev/null +++ b/gui-installer/src/assets/arrow-left.svg @@ -0,0 +1,7 @@ + + + Created with Pixso. + + + + diff --git a/gui-installer/src/assets/arrow-right-disabled.svg b/gui-installer/src/assets/arrow-right-disabled.svg new file mode 100644 index 0000000..e7f8ad5 --- /dev/null +++ b/gui-installer/src/assets/arrow-right-disabled.svg @@ -0,0 +1,7 @@ + + + Created with Pixso. + + + + diff --git a/gui-installer/src/assets/arrow-right.svg b/gui-installer/src/assets/arrow-right.svg new file mode 100644 index 0000000..b01f107 --- /dev/null +++ b/gui-installer/src/assets/arrow-right.svg @@ -0,0 +1,7 @@ + + + Created with Pixso. + + + + diff --git a/gui-installer/src/assets/checkmark.svg b/gui-installer/src/assets/checkmark.svg new file mode 100644 index 0000000..3e6cba5 --- /dev/null +++ b/gui-installer/src/assets/checkmark.svg @@ -0,0 +1,7 @@ + + + Created with Pixso. + + + + diff --git a/gui-installer/src/assets/close-icon.svg b/gui-installer/src/assets/close-icon.svg new file mode 100644 index 0000000..ade0b03 --- /dev/null +++ b/gui-installer/src/assets/close-icon.svg @@ -0,0 +1,8 @@ + + + Created with Pixso. + + + + + diff --git a/gui-installer/src/assets/discord.svg b/gui-installer/src/assets/discord.svg new file mode 100644 index 0000000..8e68cbd --- /dev/null +++ b/gui-installer/src/assets/discord.svg @@ -0,0 +1,7 @@ + + + Created with Pixso. + + + + diff --git a/gui-installer/src/assets/donate.svg b/gui-installer/src/assets/donate.svg new file mode 100644 index 0000000..4136659 --- /dev/null +++ b/gui-installer/src/assets/donate.svg @@ -0,0 +1,7 @@ + + + Created with Pixso. + + + + diff --git a/gui-installer/src/assets/github.svg b/gui-installer/src/assets/github.svg new file mode 100644 index 0000000..1731e64 --- /dev/null +++ b/gui-installer/src/assets/github.svg @@ -0,0 +1,7 @@ + + + Created with Pixso. + + + + diff --git a/gui-installer/src/assets/installation-icon.svg b/gui-installer/src/assets/installation-icon.svg new file mode 100644 index 0000000..f4f0e94 --- /dev/null +++ b/gui-installer/src/assets/installation-icon.svg @@ -0,0 +1,7 @@ + + + Created with Pixso. + + + + diff --git a/gui-installer/src/assets/installdone-disabled.svg b/gui-installer/src/assets/installdone-disabled.svg new file mode 100644 index 0000000..6e5a7bf --- /dev/null +++ b/gui-installer/src/assets/installdone-disabled.svg @@ -0,0 +1,7 @@ + + + Created with Pixso. + + + + diff --git a/gui-installer/src/assets/installdone.svg b/gui-installer/src/assets/installdone.svg new file mode 100644 index 0000000..6e5a7bf --- /dev/null +++ b/gui-installer/src/assets/installdone.svg @@ -0,0 +1,7 @@ + + + Created with Pixso. + + + + diff --git a/gui-installer/src/assets/logo.ico b/gui-installer/src/assets/logo.ico new file mode 100644 index 0000000000000000000000000000000000000000..a00e712f0fab9fa056954a6dc6c1186cef1ebce1 GIT binary patch literal 3626 zcmcgvM^9Bj6u$ldT^ToSNZhz`=?}7k1vV~B6ajr8y$S@7E*MJ;h>>WFihu;^AOZ^! zR60rx9Y4>iuVTO2TuAr4%AiwS*buq^1pLt3Q(8_)IA19hJo#EC!+oRV;(3k0n(Cy^xNTM zo=48f02-eGi;Fg<*=uVBQaoy{-V?4?>yw%YJgD(6Lsth-SqfB_hvu3}z~n%CD((Vz zvb}9e8J;%)TU(~~z|Ib^u_3%3oR^n?rZ?&gp40pmSXuGEXKf9bnpAdYENDCAq^o%F zmf+96=)d@Dz=bnF)M>yIr|^UA-r7|1(w~%pEo0IREiNehi)WP#d-%(tPnw(n@-l6F z-U~P67JqdWC@r#Mfp^>uxy9$cqI?@aSMH-5a*N;Ft@4@ne^r?qbYN*e{!IU`O8f_+ z-CbbxGf-S$>rNS3-}&y~9h{$2cZ2eFcY1SA7ce#oBwPnHequZ@J_c~kxxS-a#l4vW z82ii%3qQT_C%ysC>Lp+2Dm(eheU!Vc1-Kb&<0mDEF3n0ee|wm3IIiuUD|cY{lZ{RL z^z{G*f@`kjdMEQu3WV=mYkm`-XA`5p7x*QZnuZ1e#-b^smcywJ&kTg`T&uq+b3qQ! zPzQV$8=J&8udLV`o4%qS+TR28pUIscfG-kDPX99|IA^Y9pKl8Fo10bn-Na_U>9uWR z%3D&XVwFA#M1LFqfzIK$sXO0?fxcj?)tuY=@9$*hK>Aec&bKWTg%e-LDDinG*X6wo zMd8HH%d+)njLy!4LYLab<@@LFg47~2)Aqbx=WJP5?Mi+(iD%b8QMt*C1?J%Da#iE;oyr&A z=y~S*=qTXQImI#3XAai$fm+5`OOuJN`piN1Dtu+&dYuQ8Zvj_gRK3HxOJnPnW1%?m z6!5aq7oQ`P;i=dmTYN!W9~~rzdTs!h&--F)8G^Nx%@YSqPx;5^D1ALR06e-cHS_+x cFy)|)O}hufGv}fsl};l=KG^#Iu>aBi21*LnKL7v# literal 0 HcmV?d00001 diff --git a/gui-installer/src/assets/logo.png b/gui-installer/src/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..09fbdd1b0dcd1a18f057ac85d65c39e156ce5a3e GIT binary patch literal 9032 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 F{vZE!{gnU! literal 0 HcmV?d00001 diff --git a/gui-installer/src/assets/minimize-icon.svg b/gui-installer/src/assets/minimize-icon.svg new file mode 100644 index 0000000..cb3aeaa --- /dev/null +++ b/gui-installer/src/assets/minimize-icon.svg @@ -0,0 +1,7 @@ + + + Created with Pixso. + + + + diff --git a/gui-installer/src/assets/mit-icon.svg b/gui-installer/src/assets/mit-icon.svg new file mode 100644 index 0000000..f3a0bad --- /dev/null +++ b/gui-installer/src/assets/mit-icon.svg @@ -0,0 +1,7 @@ + + + Created with Pixso. + + + + diff --git a/gui-installer/src/assets/website.svg b/gui-installer/src/assets/website.svg new file mode 100644 index 0000000..3a3aab9 --- /dev/null +++ b/gui-installer/src/assets/website.svg @@ -0,0 +1,7 @@ + + + Created with Pixso. + + + + diff --git a/gui-installer/src/index.html b/gui-installer/src/index.html new file mode 100644 index 0000000..22203f6 --- /dev/null +++ b/gui-installer/src/index.html @@ -0,0 +1,150 @@ + + + + + + SpaceTheme Installer + + + + + +
+
+
+
+
Space
+
Theme
+
+
+
+ +
+
+
+ +
+
+
+
+
+ +
+ MIT License +
+ +
+
MIT License + +Copyright (c) 2024 SpaceTheme + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE.
+
+ + +
+
+
+ + + + \ No newline at end of file diff --git a/gui-installer/src/logs.html b/gui-installer/src/logs.html new file mode 100644 index 0000000..82ae83f --- /dev/null +++ b/gui-installer/src/logs.html @@ -0,0 +1,159 @@ + + + + + + SpaceTheme Installer + + + + + +
+
+
+
+
Space
+
Theme
+
+
+
+ +
+
+
+ +
+
+
+
+
+ +
+ Installation +
+
+
+
+ + +
+
+
+ + + + + \ No newline at end of file diff --git a/gui-installer/src/preload.js b/gui-installer/src/preload.js new file mode 100644 index 0000000..d5095e7 --- /dev/null +++ b/gui-installer/src/preload.js @@ -0,0 +1,5 @@ +const { ipcRenderer } = require('electron'); + +window.closeWindow = () => ipcRenderer.send('close-window'); + +console.log('preload script finally loaded!'); \ No newline at end of file diff --git a/gui-installer/src/select-theme.html b/gui-installer/src/select-theme.html new file mode 100644 index 0000000..d71bc0d --- /dev/null +++ b/gui-installer/src/select-theme.html @@ -0,0 +1,196 @@ + + + + + + SpaceTheme Installer + + + + + +
+
+
+
+
Space
+
Theme
+
+
+
+ +
+
+
+ +
+
+
+ Select theme + + +
+ + + +
+
+
Please select a theme to install
+
+ +
+
Please select a theme to reset
+
+ +
+
Please select a theme to uninstall
+
+
+
+ + +
+
+
+ + + + \ No newline at end of file diff --git a/gui-installer/src/style.css b/gui-installer/src/style.css new file mode 100644 index 0000000..f9d4bad --- /dev/null +++ b/gui-installer/src/style.css @@ -0,0 +1,485 @@ +@import url('https://fonts.googleapis.com/css2?family=Be+Vietnam+Pro:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap'); + +* { + margin: 0; + padding: 0; + box-sizing: border-box; + user-select: none; +} + +body { + background-color: rgba(0,0,0,0); + font-family: Be Vietnam Pro; + height: 100vh; + display: flex; + justify-content: center; + align-items: center; + color: #fff; + overflow: hidden; +} + + +*::-webkit-scrollbar { + width: 14px !important; +} + +*::-webkit-scrollbar-track { + border-radius: 8px !important; +} + +*::-webkit-scrollbar-thumb { + border-radius: 8px !important; + border: 4px solid transparent !important; + background-clip: content-box !important; + background-color: rgb(102, 108, 255) !important; +} + +*::-webkit-scrollbar-thumb:hover { + border: 3px solid transparent !important; + background-color: rgb(135, 140, 255) !important; +} + + +.window { + width: 750px; + height: 500px; + background-color: rgb(10, 10, 10); + display: flex; + flex-direction: column; + border: 2px solid rgb(60, 58, 61); + border-radius: 10px; + overflow: hidden; +} + +.everything { + display: flex; + flex-direction: column; + flex: 1; +} + +.title-bar { + padding: 12px 16px; + display: flex; + justify-content: space-between; + align-items: center; + background-color: rgb(10, 10, 10); + -webkit-app-region: drag; + height: 48px; +} + +.title { + font-size: 18px; + line-height: 123%; + letter-spacing: 0%; + text-align: center; + flex-direction: row; + display: flex; +} + +.title-first { + color: rgb(135, 140, 255); + font-weight: 500; +} + +.title-second { + color: rgb(102, 108, 255); + font-weight: 900; +} + +.window-controls { + -webkit-app-region: no-drag; + display: flex; + gap: 16px; +} + +.closeButt { + cursor: pointer; + width: 16px; + height: 16px; + display: flex; + align-items: center; + justify-content: center; +} + +.close-icon { + width: 16px; + height: 16px; +} + +.main-content { + flex: 1; + padding: 0 16px 16px; + display: flex; + flex-direction: column; + gap: 16px; + background-color: rgb(10, 10, 10); +} + +.outer-container { + background-color: rgb(17, 17, 17); + border-radius: 8px; + padding: 16px; + display: flex; + flex-direction: column; + gap: 16px; + flex: 1; +} + + + +.license-header { + display: flex; + justify-content: space-between; + align-items: center; + background-color: rgb(17, 17, 17); +} + +.license-title { + display: flex; + align-items: center; + gap: 12px; + font-size: 16px; + color: rgb(255, 255, 255); + font-weight: 400; +} + +.license-icon-bg { + width: 25px; + height: 25px; + border-radius: 4px; + background: rgb(30, 30, 30); + display: flex; + justify-content: center; + align-items: center; +} + +.license-icon { + width: 15px; + height: 15px; +} + +.checkbox-wrapper { + display: flex; + align-items: center; + gap: 8px; + color: #fff; + font-size: 14px; + font-weight: 400; + line-height: 123%; + letter-spacing: 0%; + text-align: right; +} + +.custom-checkbox { + width: 25px; + height: 25px; + border-radius: 4px; + border: 2px solid rgb(42, 42, 42); + appearance: none; + background: rgb(30, 30, 30); + cursor: pointer; + position: relative; + background-repeat: no-repeat; + background-position: center; + background-size: 16px; + transition: all 0.5s ease; +} + +.custom-checkbox:checked { + background-color: rgb(102, 108, 255); + border-color: rgb(102, 108, 255); + background-image: url('assets/checkmark.svg'); +} + +.custom-checkbox:hover { + box-sizing: border-box; + border: 2px solid rgb(102, 108, 255); +} + +.license-content { + height: 100%; + background: rgb(30, 30, 30); + border-radius: 8px; + padding: 16px; + flex: 1; + overflow-y: auto; + color: #fff; + font-size: 12px; + line-height: 1.6; + white-space: pre-wrap; + max-height: 300px; + font-weight: 300; +} + + + +.theme-selector { + background: rgb(30, 30, 30); + border-radius: 8px; + padding: 12px 16px; + display: flex; + justify-content: space-between; + align-items: center; + cursor: pointer; + transition: background 0.3s ease; + position: relative; +} + +.theme-selector-arrow { + color: #666; + transition: transform 0.3s ease; +} + +.theme-selector.active .theme-selector-arrow { + transform: rotate(90deg); +} + +.dropdown-menu { + max-height: 222px; + overflow-y: auto; + position: absolute; + top: calc(100% + 6px); + left: 0; + right: 0; + display: flex; + flex-direction: column; + gap: 6px; + padding: 6px; + background: rgb(30, 30, 30); + border-radius: 8px; + border: 2px solid rgb(60, 58, 61); + overflow: hidden; + opacity: 0; + pointer-events: none; + transition: all 0.3s ease; + z-index: 1000; +} + +.dropdown-menu.active { + opacity: 1; + transform: translateY(0); + pointer-events: all; +} + +.dropdown-item { + font-weight: 400; + color: #888; + transition: all 0.3s ease; + cursor: pointer; + background: rgb(17, 17, 17); + padding: 7.5px 16px; + border-radius: 5px; +} + +.dropdown-item:hover { + background: rgb(35, 35, 35); + color: #fff; +} + +.theme-selector-text { + color: #888; + font-weight: 400; +} + +.theme-selector-arrow { + color: #888; + transition: transform 0.3s ease; +} + +.dropdown-item:hover { + background: rgb(40, 40, 40); +} + +.theme-selector:hover { + background: rgb(25, 25, 25); +} + +.theme-options { + flex: 1; + display: flex; + flex-direction: column; + gap: 12px; +} + +.theme-option { + background: rgb(30, 30, 30); + border-radius: 8px; + padding: 18px; + cursor: pointer; + transition: background 0.3s ease; +} + +.theme-option:hover { + background: rgb(25, 25, 25); +} + +.theme-text { + color: #888; + font-weight: 400; + font-size: 14px; + align-items: center; + text-align: center; +} + + + +.installation-header { + display: flex; + justify-content: space-between; + align-items: center; + background-color: rgb(17, 17, 17); +} + +.installation-title { + display: flex; + align-items: center; + gap: 12px; + font-size: 16px; + color: rgb(255, 255, 255); + font-weight: 400; +} + +.installation-icon-bg { + width: 25px; + height: 25px; + border-radius: 4px; + background: rgb(30, 30, 30); + display: flex; + justify-content: center; + align-items: center; +} + +.installation-icon { + width: 15px; + height: 15px; +} + +.logs-content { + background: rgb(30, 30, 30); + border-radius: 8px; + padding: 16px; + flex: 1; + overflow-y: auto; + color: #fff; + font-size: 12px; + white-space: pre-wrap; + max-height: 275px; + font-weight: 300; +} + + + +.footer { + background: rgb(30, 30, 30); + border-radius: 8px; + padding: 6px; + margin: 0; + display: flex; + justify-content: space-between; + align-items: center; + margin-top: auto; +} + +.social-links { + display: flex; + gap: 7.5px; +} + +.social-link { + width: 30px; + height: 30px; + border: 2px solid rgb(17, 17, 17); + border-radius: 4px; + background: rgb(17, 17, 17); + display: flex; + justify-content: center; + align-items: center; + transition: all 0.5s ease; + cursor: pointer; +} + +.social-link:hover img { + filter: brightness(1.3); +} + +.social-link-icon { + width: 18px; + height: 18px; +} + +.nav-buttons { + display: flex; + gap: 8px; +} + +.nav-button { + opacity: 1; + padding: 2px 18px; + border-radius: 6px; + border: none; + cursor: pointer; + font-size: 14px; +} +.nav-button.disabled { + opacity: 0.5; +} + +.arrow-left, +.arrow-right { + width: 20px; + height: 20px; + top: 1px; + position: relative; + justify-content: center; + align-items: center; +} + + +.next { + border: 2px solid rgb(102, 108, 255); + background-color: rgb(102, 108, 255); + color: #fff; + transition: all 0.5s ease; +} +.next.disabled { + cursor: not-allowed; +} + +.back { + border: 2px solid rgb(17, 17, 17); + background-color: rgb(17, 17, 17); + color: #fff; + transition: all 0.5s ease; +} +.back.disabled { + cursor: not-allowed; + background-color: unset; +} + + +.popup { + position: fixed; + top: 20px; + left: 50%; + transform: translateX(-50%); + background: rgba(255, 0, 0, 0.8); + padding: 10px 20px; + border-radius: 8px; + display: none; + z-index: 1001; + color: white; +} + +.theme-option.active { + background: rgb(102, 108, 255) !important; + color: white; +} + +.theme-option.active .theme-text { + color: white; +} + +.nav-button.next.available { + cursor: pointer; + opacity: 1; +} \ No newline at end of file From bdfd64738da673fe47cc6dc5badb5f3b65354eeb Mon Sep 17 00:00:00 2001 From: Noxy <107372460+noxygalaxy@users.noreply.github.com> Date: Mon, 11 Nov 2024 15:08:22 +0200 Subject: [PATCH 06/15] Delete ps-installer directory --- ps-installer/discord.ps1 | 25 ------------------------- ps-installer/steam.ps1 | 38 -------------------------------------- 2 files changed, 63 deletions(-) delete mode 100644 ps-installer/discord.ps1 delete mode 100644 ps-installer/steam.ps1 diff --git a/ps-installer/discord.ps1 b/ps-installer/discord.ps1 deleted file mode 100644 index 39a837f..0000000 --- a/ps-installer/discord.ps1 +++ /dev/null @@ -1,25 +0,0 @@ -$betterDiscordThemes = "$env:APPDATA\BetterDiscord\themes" -$vencordThemes = "$env:APPDATA\Vencord\themes" - -$themeUrl = "https://raw.githubusercontent.com/SpaceTheme/Discord/refs/heads/main/SpaceTheme.theme.css" - -function Install-Theme ($themePath) { - $themeFile = Join-Path -Path $themePath -ChildPath "SpaceTheme.theme.css" - Invoke-RestMethod -Uri $themeUrl -OutFile $themeFile - Write-Host "SpaceTheme for Discord installed in $themePath" -} - -$betterDiscordExists = Test-Path -Path $betterDiscordThemes -$vencordExists = Test-Path -Path $vencordThemes - -if ($betterDiscordExists) { - Install-Theme $betterDiscordThemes -} - -if ($vencordExists) { - Install-Theme $vencordThemes -} - -if (-not $betterDiscordExists -and -not $vencordExists) { - Write-Host "You don't have BetterDiscord or Vencord installed! Install them from the official website." -} diff --git a/ps-installer/steam.ps1 b/ps-installer/steam.ps1 deleted file mode 100644 index 180e7dd..0000000 --- a/ps-installer/steam.ps1 +++ /dev/null @@ -1,38 +0,0 @@ -$tempPath = "$env:TEMP\SpaceTheme_for_Steam.zip" -$skinsFolder = "C:\Program Files (x86)\Steam\steamui\skins" -$extractedFolderPath = "$skinsFolder\Steam-main" -$destinationFolder = "$skinsFolder\SpaceTheme For Steam" - -if (Test-Path $skinsFolder) { - Write-Output "Millennium installed! Proceeding with SpaceTheme installation..." - - Write-Output "Downloading SpaceTheme for Steam..." - Invoke-WebRequest -Uri "https://github.com/SpaceTheme/Steam/archive/refs/heads/main.zip" -OutFile $tempPath - - Write-Output "Extracting files..." - Add-Type -AssemblyName System.IO.Compression.FileSystem - [System.IO.Compression.ZipFile]::ExtractToDirectory($tempPath, $skinsFolder) - - if (Test-Path $extractedFolderPath) { - if (!(Test-Path $destinationFolder)) { - New-Item -ItemType Directory -Path $destinationFolder | Out-Null - } - Get-ChildItem -Path $extractedFolderPath -Recurse | ForEach-Object { - Move-Item -Path $_.FullName -Destination $destinationFolder -Force - } - - Write-Output "SpaceTheme for Steam installed successfully." - - Remove-Item $extractedFolderPath -Recurse -Force - } else { - Write-Output "Failed to find the extracted 'Steam-main' folder." - } - - Remove-Item $tempPath -Force -} else { - Write-Output "You don't have Millennium installed." - - if (Test-Path $tempPath) { - Remove-Item $tempPath -Force - } -} From 8ca7fc92c53c17fcd332beeb10df0b5fe25071c4 Mon Sep 17 00:00:00 2001 From: Noxy <107372460+noxygalaxy@users.noreply.github.com> Date: Mon, 11 Nov 2024 15:08:29 +0200 Subject: [PATCH 07/15] Delete gui-installer directory --- gui-installer/main.js | 244 --------- gui-installer/package.json | 36 -- .../src/assets/arrow-left-disabled.svg | 7 - gui-installer/src/assets/arrow-left.svg | 7 - .../src/assets/arrow-right-disabled.svg | 7 - gui-installer/src/assets/arrow-right.svg | 7 - gui-installer/src/assets/checkmark.svg | 7 - gui-installer/src/assets/close-icon.svg | 8 - gui-installer/src/assets/discord.svg | 7 - gui-installer/src/assets/donate.svg | 7 - gui-installer/src/assets/github.svg | 7 - .../src/assets/installation-icon.svg | 7 - .../src/assets/installdone-disabled.svg | 7 - gui-installer/src/assets/installdone.svg | 7 - gui-installer/src/assets/logo.ico | Bin 3626 -> 0 bytes gui-installer/src/assets/logo.png | Bin 9032 -> 0 bytes gui-installer/src/assets/minimize-icon.svg | 7 - gui-installer/src/assets/mit-icon.svg | 7 - gui-installer/src/assets/website.svg | 7 - gui-installer/src/index.html | 150 ------ gui-installer/src/logs.html | 159 ------ gui-installer/src/preload.js | 5 - gui-installer/src/select-theme.html | 196 ------- gui-installer/src/style.css | 485 ------------------ 24 files changed, 1381 deletions(-) delete mode 100644 gui-installer/main.js delete mode 100644 gui-installer/package.json delete mode 100644 gui-installer/src/assets/arrow-left-disabled.svg delete mode 100644 gui-installer/src/assets/arrow-left.svg delete mode 100644 gui-installer/src/assets/arrow-right-disabled.svg delete mode 100644 gui-installer/src/assets/arrow-right.svg delete mode 100644 gui-installer/src/assets/checkmark.svg delete mode 100644 gui-installer/src/assets/close-icon.svg delete mode 100644 gui-installer/src/assets/discord.svg delete mode 100644 gui-installer/src/assets/donate.svg delete mode 100644 gui-installer/src/assets/github.svg delete mode 100644 gui-installer/src/assets/installation-icon.svg delete mode 100644 gui-installer/src/assets/installdone-disabled.svg delete mode 100644 gui-installer/src/assets/installdone.svg delete mode 100644 gui-installer/src/assets/logo.ico delete mode 100644 gui-installer/src/assets/logo.png delete mode 100644 gui-installer/src/assets/minimize-icon.svg delete mode 100644 gui-installer/src/assets/mit-icon.svg delete mode 100644 gui-installer/src/assets/website.svg delete mode 100644 gui-installer/src/index.html delete mode 100644 gui-installer/src/logs.html delete mode 100644 gui-installer/src/preload.js delete mode 100644 gui-installer/src/select-theme.html delete mode 100644 gui-installer/src/style.css diff --git a/gui-installer/main.js b/gui-installer/main.js deleted file mode 100644 index c742939..0000000 --- a/gui-installer/main.js +++ /dev/null @@ -1,244 +0,0 @@ -const { app, BrowserWindow, ipcMain } = require('electron'); -const path = require('path'); -const fs = require('fs'); -const https = require('https'); -const AdmZip = require('adm-zip'); - -function createWindow() { - const win = new BrowserWindow({ - width: 750, - height: 500, - webPreferences: { - nodeIntegration: true, - contextIsolation: false, - preload: path.join(__dirname, 'src/preload.js') - }, - icon: path.join(__dirname, 'src/assets/logo.png'), - frame: false, - transparent: true, - backgroundColor: '#00000000', - autoHideMenuBar: true, - resizable: false - }); - - win.loadFile('src/index.html'); -} - -const delay = ms => new Promise(resolve => setTimeout(resolve, ms)); - -ipcMain.on('start-installation', async (event, data) => { - const appData = process.env.APPDATA; - - function sendLog(message) { - console.log('Debug:', message); - event.reply('installation-logs', [message]); - } - - sendLog('Preparing installation...'); - await delay(1000); - - if (data.theme === 'DiscordTheme') { - const betterDiscordPath = path.join(appData, 'BetterDiscord', 'themes'); - const vencordPath = path.join(appData, 'Vencord', 'themes'); - const vencordThemePath = path.join(vencordPath, 'SpaceTheme.theme.css'); - const betterDiscordThemePath = path.join(betterDiscordPath, 'SpaceTheme.theme.css'); - const themeUrl = 'https://raw.githubusercontent.com/SpaceTheme/Discord/refs/heads/main/SpaceTheme.theme.css'; - - async function installTheme(themePath, clientName) { - try { - if (!fs.existsSync(themePath)) { - fs.mkdirSync(themePath, { recursive: true }); - sendLog(`Created directory for ${clientName}`); - } - - const themeFile = path.join(themePath, 'SpaceTheme.theme.css'); - const file = fs.createWriteStream(themeFile); - - return new Promise((resolve, reject) => { - sendLog(`Downloading theme for ${clientName}...`); - https.get(themeUrl, response => { - response.pipe(file); - file.on('finish', () => { - sendLog(`SpaceTheme.theme.css downloaded successfully in ${themePath}`); - file.close(); - sendLog(`SpaceTheme installed successfully for ${clientName}`); - resolve(); - }); - }).on('error', error => { - sendLog(`Error downloading theme for ${clientName}: ${error.message}`); - reject(error); - }); - }); - } catch (error) { - sendLog(`Error installing theme for ${clientName}: ${error.message}`); - throw error; - } - } - - try { - if (data.option === 'uninstall-theme') { - let uninstalled = false; - if (fs.existsSync(vencordThemePath)) { - fs.unlinkSync(vencordThemePath); - sendLog('SpaceTheme uninstalled successfully from Vencord'); - uninstalled = true; - } - if (fs.existsSync(betterDiscordThemePath)) { - fs.unlinkSync(betterDiscordThemePath); - sendLog('SpaceTheme uninstalled successfully from BetterDiscord'); - uninstalled = true; - } - if (!uninstalled) { - sendLog('Discord theme not found in any supported client'); - } - return; - } - - if (data.option === 'reset-theme') { - sendLog('Starting theme reset process...'); - if (fs.existsSync(vencordThemePath)) { - fs.unlinkSync(vencordThemePath); - sendLog('Removed existing Vencord theme'); - } - if (fs.existsSync(betterDiscordThemePath)) { - fs.unlinkSync(betterDiscordThemePath); - sendLog('Removed existing BetterDiscord theme'); - } - } - - let installed = false; - if (fs.existsSync(betterDiscordPath)) { - await installTheme(betterDiscordPath, 'BetterDiscord'); - installed = true; - } - if (fs.existsSync(vencordPath)) { - await installTheme(vencordPath, 'Vencord'); - installed = true; - } - if (!installed) { - sendLog('Neither BetterDiscord nor Vencord is installed. Please install one of them first.'); - } - } catch (error) { - sendLog(`Installation failed: ${error.message}`); - } - - } else if (data.theme === 'SteamTheme') { - await delay(1000); - - const skinsFolder = 'C:\\Program Files (x86)\\Steam\\steamui\\skins'; - const destinationFolder = path.join(skinsFolder, 'SpaceTheme For Steam'); - const tempPath = path.join(process.env.TEMP, 'SpaceTheme_for_Steam.zip'); - const extractedFolderPath = path.join(skinsFolder, 'Steam-main'); - - function cleanup() { - try { - if (fs.existsSync(tempPath)) { - fs.unlinkSync(tempPath); - } - if (fs.existsSync(extractedFolderPath)) { - fs.rmSync(extractedFolderPath, { recursive: true, force: true }); - } - } catch (error) { - sendLog(`Cleanup error: ${error.message}`); - } - } - - try { - if (data.option === 'uninstall-theme') { - sendLog('Starting Steam theme uninstallation...'); - sendLog('Trying to see if you have SteamTheme installed...'); - if (fs.existsSync(destinationFolder)) { - fs.rmSync(destinationFolder, { recursive: true, force: true }); - sendLog('SteamTheme path was found and deleted!'); - sendLog('SpaceTheme uninstalled successfully for Steam.'); - } else { - sendLog('Steam theme not found'); - } - return; - } - - if (data.option === 'reset-theme') { - sendLog('Starting Steam theme reset...'); - if (fs.existsSync(destinationFolder)) { - fs.rmSync(destinationFolder, { recursive: true, force: true }); - sendLog('Removed existing Steam theme installation'); - sendLog('Starting installation...'); - } else { - sendLog('No existing Steam theme found, proceeding with installation...'); - } - } - - if (!fs.existsSync(skinsFolder)) { - sendLog('Steam skins folder not found. Please install Steam first.'); - return; - } - - sendLog('Downloading SpaceTheme for Steam...'); - const file = fs.createWriteStream(tempPath); - - await new Promise((resolve, reject) => { - sendLog('Checking website availability...'); - https.get('https://github.com/SpaceTheme/Steam/archive/refs/heads/main.zip', response => { - if (response.statusCode === 302 || response.statusCode === 301) { - https.get(response.headers.location, redirectResponse => { - if (redirectResponse.statusCode !== 200) { - reject(new Error(`Download failed with status ${redirectResponse.statusCode}`)); - return; - } - redirectResponse.pipe(file); - file.on('finish', () => { - file.close(); - resolve(); - }); - }).on('error', reject); - } else if (response.statusCode === 200) { - response.pipe(file); - file.on('finish', () => { - file.close(); - resolve(); - }); - } else { - reject(new Error(`Unexpected status code: ${response.statusCode}`)); - } - }).on('error', reject); - }); - - sendLog('Website is available for you!'); - sendLog(`SpaceTheme for Steam was successfully installed in ${tempPath} folder.`); - sendLog('Extracting files... '); - const zip = new AdmZip(tempPath); - zip.extractAllTo(skinsFolder, true); - sendLog(`SpaceTheme for Steam was successfully extracted to ${skinsFolder} folder.`); - - if (fs.existsSync(extractedFolderPath)) { - fs.renameSync(extractedFolderPath, destinationFolder); - sendLog('SpaceTheme installed successfully for Steam.'); - } else { - throw new Error('Failed to extract theme files'); - } - } catch (error) { - sendLog(`Error during Steam theme operation: ${error.message}`); - } finally { - cleanup(); - } - } -}); - -ipcMain.on('close-window', () => { - const win = BrowserWindow.getFocusedWindow(); - if (win) win.close(); -}); - -app.whenReady().then(createWindow); - -app.on('window-all-closed', () => { - if (process.platform !== 'darwin') { - app.quit(); - } -}); - -app.on('activate', () => { - if (BrowserWindow.getAllWindows().length === 0) { - createWindow(); - } -}); \ No newline at end of file diff --git a/gui-installer/package.json b/gui-installer/package.json deleted file mode 100644 index 264f8d4..0000000 --- a/gui-installer/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "spacetheme-installer", - "private": true, - "version": "1.0.1", - "main": "main.js", - "scripts": { - "start": "electron .", - "build": "electron-builder" - }, - "dependencies": { - "adm-zip": "^0.5.16" - }, - "keywords": [], - "author": "", - "license": "MIT", - "description": "", - "build": { - "appId": "com.noxy.st-installer", - "productName": "SpaceTheme-Installer", - "copyright": "Copyright © 2024 SpaceEnergy", - "win": { - "target": [ - "nsis", - "portable" - ], - "icon": "src/assets/logo.png" - }, - "directories": { - "buildResources": "public" - } - }, - "devDependencies": { - "electron": "^29.1.0", - "electron-builder": "^25.1.8" - } -} diff --git a/gui-installer/src/assets/arrow-left-disabled.svg b/gui-installer/src/assets/arrow-left-disabled.svg deleted file mode 100644 index e5ef17e..0000000 --- a/gui-installer/src/assets/arrow-left-disabled.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - Created with Pixso. - - - - diff --git a/gui-installer/src/assets/arrow-left.svg b/gui-installer/src/assets/arrow-left.svg deleted file mode 100644 index 741a6e0..0000000 --- a/gui-installer/src/assets/arrow-left.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - Created with Pixso. - - - - diff --git a/gui-installer/src/assets/arrow-right-disabled.svg b/gui-installer/src/assets/arrow-right-disabled.svg deleted file mode 100644 index e7f8ad5..0000000 --- a/gui-installer/src/assets/arrow-right-disabled.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - Created with Pixso. - - - - diff --git a/gui-installer/src/assets/arrow-right.svg b/gui-installer/src/assets/arrow-right.svg deleted file mode 100644 index b01f107..0000000 --- a/gui-installer/src/assets/arrow-right.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - Created with Pixso. - - - - diff --git a/gui-installer/src/assets/checkmark.svg b/gui-installer/src/assets/checkmark.svg deleted file mode 100644 index 3e6cba5..0000000 --- a/gui-installer/src/assets/checkmark.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - Created with Pixso. - - - - diff --git a/gui-installer/src/assets/close-icon.svg b/gui-installer/src/assets/close-icon.svg deleted file mode 100644 index ade0b03..0000000 --- a/gui-installer/src/assets/close-icon.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - Created with Pixso. - - - - - diff --git a/gui-installer/src/assets/discord.svg b/gui-installer/src/assets/discord.svg deleted file mode 100644 index 8e68cbd..0000000 --- a/gui-installer/src/assets/discord.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - Created with Pixso. - - - - diff --git a/gui-installer/src/assets/donate.svg b/gui-installer/src/assets/donate.svg deleted file mode 100644 index 4136659..0000000 --- a/gui-installer/src/assets/donate.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - Created with Pixso. - - - - diff --git a/gui-installer/src/assets/github.svg b/gui-installer/src/assets/github.svg deleted file mode 100644 index 1731e64..0000000 --- a/gui-installer/src/assets/github.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - Created with Pixso. - - - - diff --git a/gui-installer/src/assets/installation-icon.svg b/gui-installer/src/assets/installation-icon.svg deleted file mode 100644 index f4f0e94..0000000 --- a/gui-installer/src/assets/installation-icon.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - Created with Pixso. - - - - diff --git a/gui-installer/src/assets/installdone-disabled.svg b/gui-installer/src/assets/installdone-disabled.svg deleted file mode 100644 index 6e5a7bf..0000000 --- a/gui-installer/src/assets/installdone-disabled.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - Created with Pixso. - - - - diff --git a/gui-installer/src/assets/installdone.svg b/gui-installer/src/assets/installdone.svg deleted file mode 100644 index 6e5a7bf..0000000 --- a/gui-installer/src/assets/installdone.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - Created with Pixso. - - - - diff --git a/gui-installer/src/assets/logo.ico b/gui-installer/src/assets/logo.ico deleted file mode 100644 index a00e712f0fab9fa056954a6dc6c1186cef1ebce1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3626 zcmcgvM^9Bj6u$ldT^ToSNZhz`=?}7k1vV~B6ajr8y$S@7E*MJ;h>>WFihu;^AOZ^! zR60rx9Y4>iuVTO2TuAr4%AiwS*buq^1pLt3Q(8_)IA19hJo#EC!+oRV;(3k0n(Cy^xNTM zo=48f02-eGi;Fg<*=uVBQaoy{-V?4?>yw%YJgD(6Lsth-SqfB_hvu3}z~n%CD((Vz zvb}9e8J;%)TU(~~z|Ib^u_3%3oR^n?rZ?&gp40pmSXuGEXKf9bnpAdYENDCAq^o%F zmf+96=)d@Dz=bnF)M>yIr|^UA-r7|1(w~%pEo0IREiNehi)WP#d-%(tPnw(n@-l6F z-U~P67JqdWC@r#Mfp^>uxy9$cqI?@aSMH-5a*N;Ft@4@ne^r?qbYN*e{!IU`O8f_+ z-CbbxGf-S$>rNS3-}&y~9h{$2cZ2eFcY1SA7ce#oBwPnHequZ@J_c~kxxS-a#l4vW z82ii%3qQT_C%ysC>Lp+2Dm(eheU!Vc1-Kb&<0mDEF3n0ee|wm3IIiuUD|cY{lZ{RL z^z{G*f@`kjdMEQu3WV=mYkm`-XA`5p7x*QZnuZ1e#-b^smcywJ&kTg`T&uq+b3qQ! zPzQV$8=J&8udLV`o4%qS+TR28pUIscfG-kDPX99|IA^Y9pKl8Fo10bn-Na_U>9uWR z%3D&XVwFA#M1LFqfzIK$sXO0?fxcj?)tuY=@9$*hK>Aec&bKWTg%e-LDDinG*X6wo zMd8HH%d+)njLy!4LYLab<@@LFg47~2)Aqbx=WJP5?Mi+(iD%b8QMt*C1?J%Da#iE;oyr&A z=y~S*=qTXQImI#3XAai$fm+5`OOuJN`piN1Dtu+&dYuQ8Zvj_gRK3HxOJnPnW1%?m z6!5aq7oQ`P;i=dmTYN!W9~~rzdTs!h&--F)8G^Nx%@YSqPx;5^D1ALR06e-cHS_+x cFy)|)O}hufGv}fsl};l=KG^#Iu>aBi21*LnKL7v# diff --git a/gui-installer/src/assets/logo.png b/gui-installer/src/assets/logo.png deleted file mode 100644 index 09fbdd1b0dcd1a18f057ac85d65c39e156ce5a3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9032 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 F{vZE!{gnU! diff --git a/gui-installer/src/assets/minimize-icon.svg b/gui-installer/src/assets/minimize-icon.svg deleted file mode 100644 index cb3aeaa..0000000 --- a/gui-installer/src/assets/minimize-icon.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - Created with Pixso. - - - - diff --git a/gui-installer/src/assets/mit-icon.svg b/gui-installer/src/assets/mit-icon.svg deleted file mode 100644 index f3a0bad..0000000 --- a/gui-installer/src/assets/mit-icon.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - Created with Pixso. - - - - diff --git a/gui-installer/src/assets/website.svg b/gui-installer/src/assets/website.svg deleted file mode 100644 index 3a3aab9..0000000 --- a/gui-installer/src/assets/website.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - Created with Pixso. - - - - diff --git a/gui-installer/src/index.html b/gui-installer/src/index.html deleted file mode 100644 index 22203f6..0000000 --- a/gui-installer/src/index.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - SpaceTheme Installer - - - - - -
-
-
-
-
Space
-
Theme
-
-
-
- -
-
-
- -
-
-
-
-
- -
- MIT License -
- -
-
MIT License - -Copyright (c) 2024 SpaceTheme - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE.
-
- - -
-
-
- - - - \ No newline at end of file diff --git a/gui-installer/src/logs.html b/gui-installer/src/logs.html deleted file mode 100644 index 82ae83f..0000000 --- a/gui-installer/src/logs.html +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - SpaceTheme Installer - - - - - -
-
-
-
-
Space
-
Theme
-
-
-
- -
-
-
- -
-
-
-
-
- -
- Installation -
-
-
-
- - -
-
-
- - - - - \ No newline at end of file diff --git a/gui-installer/src/preload.js b/gui-installer/src/preload.js deleted file mode 100644 index d5095e7..0000000 --- a/gui-installer/src/preload.js +++ /dev/null @@ -1,5 +0,0 @@ -const { ipcRenderer } = require('electron'); - -window.closeWindow = () => ipcRenderer.send('close-window'); - -console.log('preload script finally loaded!'); \ No newline at end of file diff --git a/gui-installer/src/select-theme.html b/gui-installer/src/select-theme.html deleted file mode 100644 index d71bc0d..0000000 --- a/gui-installer/src/select-theme.html +++ /dev/null @@ -1,196 +0,0 @@ - - - - - - SpaceTheme Installer - - - - - -
-
-
-
-
Space
-
Theme
-
-
-
- -
-
-
- -
-
-
- Select theme - - -
- - - -
-
-
Please select a theme to install
-
- -
-
Please select a theme to reset
-
- -
-
Please select a theme to uninstall
-
-
-
- - -
-
-
- - - - \ No newline at end of file diff --git a/gui-installer/src/style.css b/gui-installer/src/style.css deleted file mode 100644 index f9d4bad..0000000 --- a/gui-installer/src/style.css +++ /dev/null @@ -1,485 +0,0 @@ -@import url('https://fonts.googleapis.com/css2?family=Be+Vietnam+Pro:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap'); - -* { - margin: 0; - padding: 0; - box-sizing: border-box; - user-select: none; -} - -body { - background-color: rgba(0,0,0,0); - font-family: Be Vietnam Pro; - height: 100vh; - display: flex; - justify-content: center; - align-items: center; - color: #fff; - overflow: hidden; -} - - -*::-webkit-scrollbar { - width: 14px !important; -} - -*::-webkit-scrollbar-track { - border-radius: 8px !important; -} - -*::-webkit-scrollbar-thumb { - border-radius: 8px !important; - border: 4px solid transparent !important; - background-clip: content-box !important; - background-color: rgb(102, 108, 255) !important; -} - -*::-webkit-scrollbar-thumb:hover { - border: 3px solid transparent !important; - background-color: rgb(135, 140, 255) !important; -} - - -.window { - width: 750px; - height: 500px; - background-color: rgb(10, 10, 10); - display: flex; - flex-direction: column; - border: 2px solid rgb(60, 58, 61); - border-radius: 10px; - overflow: hidden; -} - -.everything { - display: flex; - flex-direction: column; - flex: 1; -} - -.title-bar { - padding: 12px 16px; - display: flex; - justify-content: space-between; - align-items: center; - background-color: rgb(10, 10, 10); - -webkit-app-region: drag; - height: 48px; -} - -.title { - font-size: 18px; - line-height: 123%; - letter-spacing: 0%; - text-align: center; - flex-direction: row; - display: flex; -} - -.title-first { - color: rgb(135, 140, 255); - font-weight: 500; -} - -.title-second { - color: rgb(102, 108, 255); - font-weight: 900; -} - -.window-controls { - -webkit-app-region: no-drag; - display: flex; - gap: 16px; -} - -.closeButt { - cursor: pointer; - width: 16px; - height: 16px; - display: flex; - align-items: center; - justify-content: center; -} - -.close-icon { - width: 16px; - height: 16px; -} - -.main-content { - flex: 1; - padding: 0 16px 16px; - display: flex; - flex-direction: column; - gap: 16px; - background-color: rgb(10, 10, 10); -} - -.outer-container { - background-color: rgb(17, 17, 17); - border-radius: 8px; - padding: 16px; - display: flex; - flex-direction: column; - gap: 16px; - flex: 1; -} - - - -.license-header { - display: flex; - justify-content: space-between; - align-items: center; - background-color: rgb(17, 17, 17); -} - -.license-title { - display: flex; - align-items: center; - gap: 12px; - font-size: 16px; - color: rgb(255, 255, 255); - font-weight: 400; -} - -.license-icon-bg { - width: 25px; - height: 25px; - border-radius: 4px; - background: rgb(30, 30, 30); - display: flex; - justify-content: center; - align-items: center; -} - -.license-icon { - width: 15px; - height: 15px; -} - -.checkbox-wrapper { - display: flex; - align-items: center; - gap: 8px; - color: #fff; - font-size: 14px; - font-weight: 400; - line-height: 123%; - letter-spacing: 0%; - text-align: right; -} - -.custom-checkbox { - width: 25px; - height: 25px; - border-radius: 4px; - border: 2px solid rgb(42, 42, 42); - appearance: none; - background: rgb(30, 30, 30); - cursor: pointer; - position: relative; - background-repeat: no-repeat; - background-position: center; - background-size: 16px; - transition: all 0.5s ease; -} - -.custom-checkbox:checked { - background-color: rgb(102, 108, 255); - border-color: rgb(102, 108, 255); - background-image: url('assets/checkmark.svg'); -} - -.custom-checkbox:hover { - box-sizing: border-box; - border: 2px solid rgb(102, 108, 255); -} - -.license-content { - height: 100%; - background: rgb(30, 30, 30); - border-radius: 8px; - padding: 16px; - flex: 1; - overflow-y: auto; - color: #fff; - font-size: 12px; - line-height: 1.6; - white-space: pre-wrap; - max-height: 300px; - font-weight: 300; -} - - - -.theme-selector { - background: rgb(30, 30, 30); - border-radius: 8px; - padding: 12px 16px; - display: flex; - justify-content: space-between; - align-items: center; - cursor: pointer; - transition: background 0.3s ease; - position: relative; -} - -.theme-selector-arrow { - color: #666; - transition: transform 0.3s ease; -} - -.theme-selector.active .theme-selector-arrow { - transform: rotate(90deg); -} - -.dropdown-menu { - max-height: 222px; - overflow-y: auto; - position: absolute; - top: calc(100% + 6px); - left: 0; - right: 0; - display: flex; - flex-direction: column; - gap: 6px; - padding: 6px; - background: rgb(30, 30, 30); - border-radius: 8px; - border: 2px solid rgb(60, 58, 61); - overflow: hidden; - opacity: 0; - pointer-events: none; - transition: all 0.3s ease; - z-index: 1000; -} - -.dropdown-menu.active { - opacity: 1; - transform: translateY(0); - pointer-events: all; -} - -.dropdown-item { - font-weight: 400; - color: #888; - transition: all 0.3s ease; - cursor: pointer; - background: rgb(17, 17, 17); - padding: 7.5px 16px; - border-radius: 5px; -} - -.dropdown-item:hover { - background: rgb(35, 35, 35); - color: #fff; -} - -.theme-selector-text { - color: #888; - font-weight: 400; -} - -.theme-selector-arrow { - color: #888; - transition: transform 0.3s ease; -} - -.dropdown-item:hover { - background: rgb(40, 40, 40); -} - -.theme-selector:hover { - background: rgb(25, 25, 25); -} - -.theme-options { - flex: 1; - display: flex; - flex-direction: column; - gap: 12px; -} - -.theme-option { - background: rgb(30, 30, 30); - border-radius: 8px; - padding: 18px; - cursor: pointer; - transition: background 0.3s ease; -} - -.theme-option:hover { - background: rgb(25, 25, 25); -} - -.theme-text { - color: #888; - font-weight: 400; - font-size: 14px; - align-items: center; - text-align: center; -} - - - -.installation-header { - display: flex; - justify-content: space-between; - align-items: center; - background-color: rgb(17, 17, 17); -} - -.installation-title { - display: flex; - align-items: center; - gap: 12px; - font-size: 16px; - color: rgb(255, 255, 255); - font-weight: 400; -} - -.installation-icon-bg { - width: 25px; - height: 25px; - border-radius: 4px; - background: rgb(30, 30, 30); - display: flex; - justify-content: center; - align-items: center; -} - -.installation-icon { - width: 15px; - height: 15px; -} - -.logs-content { - background: rgb(30, 30, 30); - border-radius: 8px; - padding: 16px; - flex: 1; - overflow-y: auto; - color: #fff; - font-size: 12px; - white-space: pre-wrap; - max-height: 275px; - font-weight: 300; -} - - - -.footer { - background: rgb(30, 30, 30); - border-radius: 8px; - padding: 6px; - margin: 0; - display: flex; - justify-content: space-between; - align-items: center; - margin-top: auto; -} - -.social-links { - display: flex; - gap: 7.5px; -} - -.social-link { - width: 30px; - height: 30px; - border: 2px solid rgb(17, 17, 17); - border-radius: 4px; - background: rgb(17, 17, 17); - display: flex; - justify-content: center; - align-items: center; - transition: all 0.5s ease; - cursor: pointer; -} - -.social-link:hover img { - filter: brightness(1.3); -} - -.social-link-icon { - width: 18px; - height: 18px; -} - -.nav-buttons { - display: flex; - gap: 8px; -} - -.nav-button { - opacity: 1; - padding: 2px 18px; - border-radius: 6px; - border: none; - cursor: pointer; - font-size: 14px; -} -.nav-button.disabled { - opacity: 0.5; -} - -.arrow-left, -.arrow-right { - width: 20px; - height: 20px; - top: 1px; - position: relative; - justify-content: center; - align-items: center; -} - - -.next { - border: 2px solid rgb(102, 108, 255); - background-color: rgb(102, 108, 255); - color: #fff; - transition: all 0.5s ease; -} -.next.disabled { - cursor: not-allowed; -} - -.back { - border: 2px solid rgb(17, 17, 17); - background-color: rgb(17, 17, 17); - color: #fff; - transition: all 0.5s ease; -} -.back.disabled { - cursor: not-allowed; - background-color: unset; -} - - -.popup { - position: fixed; - top: 20px; - left: 50%; - transform: translateX(-50%); - background: rgba(255, 0, 0, 0.8); - padding: 10px 20px; - border-radius: 8px; - display: none; - z-index: 1001; - color: white; -} - -.theme-option.active { - background: rgb(102, 108, 255) !important; - color: white; -} - -.theme-option.active .theme-text { - color: white; -} - -.nav-button.next.available { - cursor: pointer; - opacity: 1; -} \ No newline at end of file From c60308717d4723f8d0ee04f97e3303374cf74c7b Mon Sep 17 00:00:00 2001 From: Noxy <107372460+noxygalaxy@users.noreply.github.com> Date: Mon, 11 Nov 2024 15:09:16 +0200 Subject: [PATCH 08/15] v1.0.1 GUI installer --- gui/main.js | 244 ++++++++++++ gui/package.json | 36 ++ gui/src/assets/arrow-left-disabled.svg | 7 + gui/src/assets/arrow-left.svg | 7 + gui/src/assets/arrow-right-disabled.svg | 7 + gui/src/assets/arrow-right.svg | 7 + gui/src/assets/checkmark.svg | 7 + gui/src/assets/close-icon.svg | 8 + gui/src/assets/discord.svg | 7 + gui/src/assets/donate.svg | 7 + gui/src/assets/github.svg | 7 + gui/src/assets/installation-icon.svg | 7 + gui/src/assets/installdone-disabled.svg | 7 + gui/src/assets/installdone.svg | 7 + gui/src/assets/logo.ico | Bin 0 -> 3626 bytes gui/src/assets/logo.png | Bin 0 -> 9032 bytes gui/src/assets/minimize-icon.svg | 7 + gui/src/assets/mit-icon.svg | 7 + gui/src/assets/website.svg | 7 + gui/src/index.html | 150 ++++++++ gui/src/logs.html | 159 ++++++++ gui/src/preload.js | 5 + gui/src/select-theme.html | 196 ++++++++++ gui/src/style.css | 485 ++++++++++++++++++++++++ ps/discord.ps1 | 25 ++ ps/steam.ps1 | 38 ++ 26 files changed, 1444 insertions(+) create mode 100644 gui/main.js create mode 100644 gui/package.json create mode 100644 gui/src/assets/arrow-left-disabled.svg create mode 100644 gui/src/assets/arrow-left.svg create mode 100644 gui/src/assets/arrow-right-disabled.svg create mode 100644 gui/src/assets/arrow-right.svg create mode 100644 gui/src/assets/checkmark.svg create mode 100644 gui/src/assets/close-icon.svg create mode 100644 gui/src/assets/discord.svg create mode 100644 gui/src/assets/donate.svg create mode 100644 gui/src/assets/github.svg create mode 100644 gui/src/assets/installation-icon.svg create mode 100644 gui/src/assets/installdone-disabled.svg create mode 100644 gui/src/assets/installdone.svg create mode 100644 gui/src/assets/logo.ico create mode 100644 gui/src/assets/logo.png create mode 100644 gui/src/assets/minimize-icon.svg create mode 100644 gui/src/assets/mit-icon.svg create mode 100644 gui/src/assets/website.svg create mode 100644 gui/src/index.html create mode 100644 gui/src/logs.html create mode 100644 gui/src/preload.js create mode 100644 gui/src/select-theme.html create mode 100644 gui/src/style.css create mode 100644 ps/discord.ps1 create mode 100644 ps/steam.ps1 diff --git a/gui/main.js b/gui/main.js new file mode 100644 index 0000000..c742939 --- /dev/null +++ b/gui/main.js @@ -0,0 +1,244 @@ +const { app, BrowserWindow, ipcMain } = require('electron'); +const path = require('path'); +const fs = require('fs'); +const https = require('https'); +const AdmZip = require('adm-zip'); + +function createWindow() { + const win = new BrowserWindow({ + width: 750, + height: 500, + webPreferences: { + nodeIntegration: true, + contextIsolation: false, + preload: path.join(__dirname, 'src/preload.js') + }, + icon: path.join(__dirname, 'src/assets/logo.png'), + frame: false, + transparent: true, + backgroundColor: '#00000000', + autoHideMenuBar: true, + resizable: false + }); + + win.loadFile('src/index.html'); +} + +const delay = ms => new Promise(resolve => setTimeout(resolve, ms)); + +ipcMain.on('start-installation', async (event, data) => { + const appData = process.env.APPDATA; + + function sendLog(message) { + console.log('Debug:', message); + event.reply('installation-logs', [message]); + } + + sendLog('Preparing installation...'); + await delay(1000); + + if (data.theme === 'DiscordTheme') { + const betterDiscordPath = path.join(appData, 'BetterDiscord', 'themes'); + const vencordPath = path.join(appData, 'Vencord', 'themes'); + const vencordThemePath = path.join(vencordPath, 'SpaceTheme.theme.css'); + const betterDiscordThemePath = path.join(betterDiscordPath, 'SpaceTheme.theme.css'); + const themeUrl = 'https://raw.githubusercontent.com/SpaceTheme/Discord/refs/heads/main/SpaceTheme.theme.css'; + + async function installTheme(themePath, clientName) { + try { + if (!fs.existsSync(themePath)) { + fs.mkdirSync(themePath, { recursive: true }); + sendLog(`Created directory for ${clientName}`); + } + + const themeFile = path.join(themePath, 'SpaceTheme.theme.css'); + const file = fs.createWriteStream(themeFile); + + return new Promise((resolve, reject) => { + sendLog(`Downloading theme for ${clientName}...`); + https.get(themeUrl, response => { + response.pipe(file); + file.on('finish', () => { + sendLog(`SpaceTheme.theme.css downloaded successfully in ${themePath}`); + file.close(); + sendLog(`SpaceTheme installed successfully for ${clientName}`); + resolve(); + }); + }).on('error', error => { + sendLog(`Error downloading theme for ${clientName}: ${error.message}`); + reject(error); + }); + }); + } catch (error) { + sendLog(`Error installing theme for ${clientName}: ${error.message}`); + throw error; + } + } + + try { + if (data.option === 'uninstall-theme') { + let uninstalled = false; + if (fs.existsSync(vencordThemePath)) { + fs.unlinkSync(vencordThemePath); + sendLog('SpaceTheme uninstalled successfully from Vencord'); + uninstalled = true; + } + if (fs.existsSync(betterDiscordThemePath)) { + fs.unlinkSync(betterDiscordThemePath); + sendLog('SpaceTheme uninstalled successfully from BetterDiscord'); + uninstalled = true; + } + if (!uninstalled) { + sendLog('Discord theme not found in any supported client'); + } + return; + } + + if (data.option === 'reset-theme') { + sendLog('Starting theme reset process...'); + if (fs.existsSync(vencordThemePath)) { + fs.unlinkSync(vencordThemePath); + sendLog('Removed existing Vencord theme'); + } + if (fs.existsSync(betterDiscordThemePath)) { + fs.unlinkSync(betterDiscordThemePath); + sendLog('Removed existing BetterDiscord theme'); + } + } + + let installed = false; + if (fs.existsSync(betterDiscordPath)) { + await installTheme(betterDiscordPath, 'BetterDiscord'); + installed = true; + } + if (fs.existsSync(vencordPath)) { + await installTheme(vencordPath, 'Vencord'); + installed = true; + } + if (!installed) { + sendLog('Neither BetterDiscord nor Vencord is installed. Please install one of them first.'); + } + } catch (error) { + sendLog(`Installation failed: ${error.message}`); + } + + } else if (data.theme === 'SteamTheme') { + await delay(1000); + + const skinsFolder = 'C:\\Program Files (x86)\\Steam\\steamui\\skins'; + const destinationFolder = path.join(skinsFolder, 'SpaceTheme For Steam'); + const tempPath = path.join(process.env.TEMP, 'SpaceTheme_for_Steam.zip'); + const extractedFolderPath = path.join(skinsFolder, 'Steam-main'); + + function cleanup() { + try { + if (fs.existsSync(tempPath)) { + fs.unlinkSync(tempPath); + } + if (fs.existsSync(extractedFolderPath)) { + fs.rmSync(extractedFolderPath, { recursive: true, force: true }); + } + } catch (error) { + sendLog(`Cleanup error: ${error.message}`); + } + } + + try { + if (data.option === 'uninstall-theme') { + sendLog('Starting Steam theme uninstallation...'); + sendLog('Trying to see if you have SteamTheme installed...'); + if (fs.existsSync(destinationFolder)) { + fs.rmSync(destinationFolder, { recursive: true, force: true }); + sendLog('SteamTheme path was found and deleted!'); + sendLog('SpaceTheme uninstalled successfully for Steam.'); + } else { + sendLog('Steam theme not found'); + } + return; + } + + if (data.option === 'reset-theme') { + sendLog('Starting Steam theme reset...'); + if (fs.existsSync(destinationFolder)) { + fs.rmSync(destinationFolder, { recursive: true, force: true }); + sendLog('Removed existing Steam theme installation'); + sendLog('Starting installation...'); + } else { + sendLog('No existing Steam theme found, proceeding with installation...'); + } + } + + if (!fs.existsSync(skinsFolder)) { + sendLog('Steam skins folder not found. Please install Steam first.'); + return; + } + + sendLog('Downloading SpaceTheme for Steam...'); + const file = fs.createWriteStream(tempPath); + + await new Promise((resolve, reject) => { + sendLog('Checking website availability...'); + https.get('https://github.com/SpaceTheme/Steam/archive/refs/heads/main.zip', response => { + if (response.statusCode === 302 || response.statusCode === 301) { + https.get(response.headers.location, redirectResponse => { + if (redirectResponse.statusCode !== 200) { + reject(new Error(`Download failed with status ${redirectResponse.statusCode}`)); + return; + } + redirectResponse.pipe(file); + file.on('finish', () => { + file.close(); + resolve(); + }); + }).on('error', reject); + } else if (response.statusCode === 200) { + response.pipe(file); + file.on('finish', () => { + file.close(); + resolve(); + }); + } else { + reject(new Error(`Unexpected status code: ${response.statusCode}`)); + } + }).on('error', reject); + }); + + sendLog('Website is available for you!'); + sendLog(`SpaceTheme for Steam was successfully installed in ${tempPath} folder.`); + sendLog('Extracting files... '); + const zip = new AdmZip(tempPath); + zip.extractAllTo(skinsFolder, true); + sendLog(`SpaceTheme for Steam was successfully extracted to ${skinsFolder} folder.`); + + if (fs.existsSync(extractedFolderPath)) { + fs.renameSync(extractedFolderPath, destinationFolder); + sendLog('SpaceTheme installed successfully for Steam.'); + } else { + throw new Error('Failed to extract theme files'); + } + } catch (error) { + sendLog(`Error during Steam theme operation: ${error.message}`); + } finally { + cleanup(); + } + } +}); + +ipcMain.on('close-window', () => { + const win = BrowserWindow.getFocusedWindow(); + if (win) win.close(); +}); + +app.whenReady().then(createWindow); + +app.on('window-all-closed', () => { + if (process.platform !== 'darwin') { + app.quit(); + } +}); + +app.on('activate', () => { + if (BrowserWindow.getAllWindows().length === 0) { + createWindow(); + } +}); \ No newline at end of file diff --git a/gui/package.json b/gui/package.json new file mode 100644 index 0000000..264f8d4 --- /dev/null +++ b/gui/package.json @@ -0,0 +1,36 @@ +{ + "name": "spacetheme-installer", + "private": true, + "version": "1.0.1", + "main": "main.js", + "scripts": { + "start": "electron .", + "build": "electron-builder" + }, + "dependencies": { + "adm-zip": "^0.5.16" + }, + "keywords": [], + "author": "", + "license": "MIT", + "description": "", + "build": { + "appId": "com.noxy.st-installer", + "productName": "SpaceTheme-Installer", + "copyright": "Copyright © 2024 SpaceEnergy", + "win": { + "target": [ + "nsis", + "portable" + ], + "icon": "src/assets/logo.png" + }, + "directories": { + "buildResources": "public" + } + }, + "devDependencies": { + "electron": "^29.1.0", + "electron-builder": "^25.1.8" + } +} diff --git a/gui/src/assets/arrow-left-disabled.svg b/gui/src/assets/arrow-left-disabled.svg new file mode 100644 index 0000000..e5ef17e --- /dev/null +++ b/gui/src/assets/arrow-left-disabled.svg @@ -0,0 +1,7 @@ + + + Created with Pixso. + + + + diff --git a/gui/src/assets/arrow-left.svg b/gui/src/assets/arrow-left.svg new file mode 100644 index 0000000..741a6e0 --- /dev/null +++ b/gui/src/assets/arrow-left.svg @@ -0,0 +1,7 @@ + + + Created with Pixso. + + + + diff --git a/gui/src/assets/arrow-right-disabled.svg b/gui/src/assets/arrow-right-disabled.svg new file mode 100644 index 0000000..e7f8ad5 --- /dev/null +++ b/gui/src/assets/arrow-right-disabled.svg @@ -0,0 +1,7 @@ + + + Created with Pixso. + + + + diff --git a/gui/src/assets/arrow-right.svg b/gui/src/assets/arrow-right.svg new file mode 100644 index 0000000..b01f107 --- /dev/null +++ b/gui/src/assets/arrow-right.svg @@ -0,0 +1,7 @@ + + + Created with Pixso. + + + + diff --git a/gui/src/assets/checkmark.svg b/gui/src/assets/checkmark.svg new file mode 100644 index 0000000..3e6cba5 --- /dev/null +++ b/gui/src/assets/checkmark.svg @@ -0,0 +1,7 @@ + + + Created with Pixso. + + + + diff --git a/gui/src/assets/close-icon.svg b/gui/src/assets/close-icon.svg new file mode 100644 index 0000000..ade0b03 --- /dev/null +++ b/gui/src/assets/close-icon.svg @@ -0,0 +1,8 @@ + + + Created with Pixso. + + + + + diff --git a/gui/src/assets/discord.svg b/gui/src/assets/discord.svg new file mode 100644 index 0000000..8e68cbd --- /dev/null +++ b/gui/src/assets/discord.svg @@ -0,0 +1,7 @@ + + + Created with Pixso. + + + + diff --git a/gui/src/assets/donate.svg b/gui/src/assets/donate.svg new file mode 100644 index 0000000..4136659 --- /dev/null +++ b/gui/src/assets/donate.svg @@ -0,0 +1,7 @@ + + + Created with Pixso. + + + + diff --git a/gui/src/assets/github.svg b/gui/src/assets/github.svg new file mode 100644 index 0000000..1731e64 --- /dev/null +++ b/gui/src/assets/github.svg @@ -0,0 +1,7 @@ + + + Created with Pixso. + + + + diff --git a/gui/src/assets/installation-icon.svg b/gui/src/assets/installation-icon.svg new file mode 100644 index 0000000..f4f0e94 --- /dev/null +++ b/gui/src/assets/installation-icon.svg @@ -0,0 +1,7 @@ + + + Created with Pixso. + + + + diff --git a/gui/src/assets/installdone-disabled.svg b/gui/src/assets/installdone-disabled.svg new file mode 100644 index 0000000..6e5a7bf --- /dev/null +++ b/gui/src/assets/installdone-disabled.svg @@ -0,0 +1,7 @@ + + + Created with Pixso. + + + + diff --git a/gui/src/assets/installdone.svg b/gui/src/assets/installdone.svg new file mode 100644 index 0000000..6e5a7bf --- /dev/null +++ b/gui/src/assets/installdone.svg @@ -0,0 +1,7 @@ + + + Created with Pixso. + + + + diff --git a/gui/src/assets/logo.ico b/gui/src/assets/logo.ico new file mode 100644 index 0000000000000000000000000000000000000000..a00e712f0fab9fa056954a6dc6c1186cef1ebce1 GIT binary patch literal 3626 zcmcgvM^9Bj6u$ldT^ToSNZhz`=?}7k1vV~B6ajr8y$S@7E*MJ;h>>WFihu;^AOZ^! zR60rx9Y4>iuVTO2TuAr4%AiwS*buq^1pLt3Q(8_)IA19hJo#EC!+oRV;(3k0n(Cy^xNTM zo=48f02-eGi;Fg<*=uVBQaoy{-V?4?>yw%YJgD(6Lsth-SqfB_hvu3}z~n%CD((Vz zvb}9e8J;%)TU(~~z|Ib^u_3%3oR^n?rZ?&gp40pmSXuGEXKf9bnpAdYENDCAq^o%F zmf+96=)d@Dz=bnF)M>yIr|^UA-r7|1(w~%pEo0IREiNehi)WP#d-%(tPnw(n@-l6F z-U~P67JqdWC@r#Mfp^>uxy9$cqI?@aSMH-5a*N;Ft@4@ne^r?qbYN*e{!IU`O8f_+ z-CbbxGf-S$>rNS3-}&y~9h{$2cZ2eFcY1SA7ce#oBwPnHequZ@J_c~kxxS-a#l4vW z82ii%3qQT_C%ysC>Lp+2Dm(eheU!Vc1-Kb&<0mDEF3n0ee|wm3IIiuUD|cY{lZ{RL z^z{G*f@`kjdMEQu3WV=mYkm`-XA`5p7x*QZnuZ1e#-b^smcywJ&kTg`T&uq+b3qQ! zPzQV$8=J&8udLV`o4%qS+TR28pUIscfG-kDPX99|IA^Y9pKl8Fo10bn-Na_U>9uWR z%3D&XVwFA#M1LFqfzIK$sXO0?fxcj?)tuY=@9$*hK>Aec&bKWTg%e-LDDinG*X6wo zMd8HH%d+)njLy!4LYLab<@@LFg47~2)Aqbx=WJP5?Mi+(iD%b8QMt*C1?J%Da#iE;oyr&A z=y~S*=qTXQImI#3XAai$fm+5`OOuJN`piN1Dtu+&dYuQ8Zvj_gRK3HxOJnPnW1%?m z6!5aq7oQ`P;i=dmTYN!W9~~rzdTs!h&--F)8G^Nx%@YSqPx;5^D1ALR06e-cHS_+x cFy)|)O}hufGv}fsl};l=KG^#Iu>aBi21*LnKL7v# literal 0 HcmV?d00001 diff --git a/gui/src/assets/logo.png b/gui/src/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..09fbdd1b0dcd1a18f057ac85d65c39e156ce5a3e GIT binary patch literal 9032 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 F{vZE!{gnU! literal 0 HcmV?d00001 diff --git a/gui/src/assets/minimize-icon.svg b/gui/src/assets/minimize-icon.svg new file mode 100644 index 0000000..cb3aeaa --- /dev/null +++ b/gui/src/assets/minimize-icon.svg @@ -0,0 +1,7 @@ + + + Created with Pixso. + + + + diff --git a/gui/src/assets/mit-icon.svg b/gui/src/assets/mit-icon.svg new file mode 100644 index 0000000..f3a0bad --- /dev/null +++ b/gui/src/assets/mit-icon.svg @@ -0,0 +1,7 @@ + + + Created with Pixso. + + + + diff --git a/gui/src/assets/website.svg b/gui/src/assets/website.svg new file mode 100644 index 0000000..3a3aab9 --- /dev/null +++ b/gui/src/assets/website.svg @@ -0,0 +1,7 @@ + + + Created with Pixso. + + + + diff --git a/gui/src/index.html b/gui/src/index.html new file mode 100644 index 0000000..22203f6 --- /dev/null +++ b/gui/src/index.html @@ -0,0 +1,150 @@ + + + + + + SpaceTheme Installer + + + + + +
+
+
+
+
Space
+
Theme
+
+
+
+ +
+
+
+ +
+
+
+
+
+ +
+ MIT License +
+ +
+
MIT License + +Copyright (c) 2024 SpaceTheme + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE.
+
+ + +
+
+
+ + + + \ No newline at end of file diff --git a/gui/src/logs.html b/gui/src/logs.html new file mode 100644 index 0000000..82ae83f --- /dev/null +++ b/gui/src/logs.html @@ -0,0 +1,159 @@ + + + + + + SpaceTheme Installer + + + + + +
+
+
+
+
Space
+
Theme
+
+
+
+ +
+
+
+ +
+
+
+
+
+ +
+ Installation +
+
+
+
+ + +
+
+
+ + + + + \ No newline at end of file diff --git a/gui/src/preload.js b/gui/src/preload.js new file mode 100644 index 0000000..d5095e7 --- /dev/null +++ b/gui/src/preload.js @@ -0,0 +1,5 @@ +const { ipcRenderer } = require('electron'); + +window.closeWindow = () => ipcRenderer.send('close-window'); + +console.log('preload script finally loaded!'); \ No newline at end of file diff --git a/gui/src/select-theme.html b/gui/src/select-theme.html new file mode 100644 index 0000000..d71bc0d --- /dev/null +++ b/gui/src/select-theme.html @@ -0,0 +1,196 @@ + + + + + + SpaceTheme Installer + + + + + +
+
+
+
+
Space
+
Theme
+
+
+
+ +
+
+
+ +
+
+
+ Select theme + + +
+ + + +
+
+
Please select a theme to install
+
+ +
+
Please select a theme to reset
+
+ +
+
Please select a theme to uninstall
+
+
+
+ + +
+
+
+ + + + \ No newline at end of file diff --git a/gui/src/style.css b/gui/src/style.css new file mode 100644 index 0000000..f9d4bad --- /dev/null +++ b/gui/src/style.css @@ -0,0 +1,485 @@ +@import url('https://fonts.googleapis.com/css2?family=Be+Vietnam+Pro:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap'); + +* { + margin: 0; + padding: 0; + box-sizing: border-box; + user-select: none; +} + +body { + background-color: rgba(0,0,0,0); + font-family: Be Vietnam Pro; + height: 100vh; + display: flex; + justify-content: center; + align-items: center; + color: #fff; + overflow: hidden; +} + + +*::-webkit-scrollbar { + width: 14px !important; +} + +*::-webkit-scrollbar-track { + border-radius: 8px !important; +} + +*::-webkit-scrollbar-thumb { + border-radius: 8px !important; + border: 4px solid transparent !important; + background-clip: content-box !important; + background-color: rgb(102, 108, 255) !important; +} + +*::-webkit-scrollbar-thumb:hover { + border: 3px solid transparent !important; + background-color: rgb(135, 140, 255) !important; +} + + +.window { + width: 750px; + height: 500px; + background-color: rgb(10, 10, 10); + display: flex; + flex-direction: column; + border: 2px solid rgb(60, 58, 61); + border-radius: 10px; + overflow: hidden; +} + +.everything { + display: flex; + flex-direction: column; + flex: 1; +} + +.title-bar { + padding: 12px 16px; + display: flex; + justify-content: space-between; + align-items: center; + background-color: rgb(10, 10, 10); + -webkit-app-region: drag; + height: 48px; +} + +.title { + font-size: 18px; + line-height: 123%; + letter-spacing: 0%; + text-align: center; + flex-direction: row; + display: flex; +} + +.title-first { + color: rgb(135, 140, 255); + font-weight: 500; +} + +.title-second { + color: rgb(102, 108, 255); + font-weight: 900; +} + +.window-controls { + -webkit-app-region: no-drag; + display: flex; + gap: 16px; +} + +.closeButt { + cursor: pointer; + width: 16px; + height: 16px; + display: flex; + align-items: center; + justify-content: center; +} + +.close-icon { + width: 16px; + height: 16px; +} + +.main-content { + flex: 1; + padding: 0 16px 16px; + display: flex; + flex-direction: column; + gap: 16px; + background-color: rgb(10, 10, 10); +} + +.outer-container { + background-color: rgb(17, 17, 17); + border-radius: 8px; + padding: 16px; + display: flex; + flex-direction: column; + gap: 16px; + flex: 1; +} + + + +.license-header { + display: flex; + justify-content: space-between; + align-items: center; + background-color: rgb(17, 17, 17); +} + +.license-title { + display: flex; + align-items: center; + gap: 12px; + font-size: 16px; + color: rgb(255, 255, 255); + font-weight: 400; +} + +.license-icon-bg { + width: 25px; + height: 25px; + border-radius: 4px; + background: rgb(30, 30, 30); + display: flex; + justify-content: center; + align-items: center; +} + +.license-icon { + width: 15px; + height: 15px; +} + +.checkbox-wrapper { + display: flex; + align-items: center; + gap: 8px; + color: #fff; + font-size: 14px; + font-weight: 400; + line-height: 123%; + letter-spacing: 0%; + text-align: right; +} + +.custom-checkbox { + width: 25px; + height: 25px; + border-radius: 4px; + border: 2px solid rgb(42, 42, 42); + appearance: none; + background: rgb(30, 30, 30); + cursor: pointer; + position: relative; + background-repeat: no-repeat; + background-position: center; + background-size: 16px; + transition: all 0.5s ease; +} + +.custom-checkbox:checked { + background-color: rgb(102, 108, 255); + border-color: rgb(102, 108, 255); + background-image: url('assets/checkmark.svg'); +} + +.custom-checkbox:hover { + box-sizing: border-box; + border: 2px solid rgb(102, 108, 255); +} + +.license-content { + height: 100%; + background: rgb(30, 30, 30); + border-radius: 8px; + padding: 16px; + flex: 1; + overflow-y: auto; + color: #fff; + font-size: 12px; + line-height: 1.6; + white-space: pre-wrap; + max-height: 300px; + font-weight: 300; +} + + + +.theme-selector { + background: rgb(30, 30, 30); + border-radius: 8px; + padding: 12px 16px; + display: flex; + justify-content: space-between; + align-items: center; + cursor: pointer; + transition: background 0.3s ease; + position: relative; +} + +.theme-selector-arrow { + color: #666; + transition: transform 0.3s ease; +} + +.theme-selector.active .theme-selector-arrow { + transform: rotate(90deg); +} + +.dropdown-menu { + max-height: 222px; + overflow-y: auto; + position: absolute; + top: calc(100% + 6px); + left: 0; + right: 0; + display: flex; + flex-direction: column; + gap: 6px; + padding: 6px; + background: rgb(30, 30, 30); + border-radius: 8px; + border: 2px solid rgb(60, 58, 61); + overflow: hidden; + opacity: 0; + pointer-events: none; + transition: all 0.3s ease; + z-index: 1000; +} + +.dropdown-menu.active { + opacity: 1; + transform: translateY(0); + pointer-events: all; +} + +.dropdown-item { + font-weight: 400; + color: #888; + transition: all 0.3s ease; + cursor: pointer; + background: rgb(17, 17, 17); + padding: 7.5px 16px; + border-radius: 5px; +} + +.dropdown-item:hover { + background: rgb(35, 35, 35); + color: #fff; +} + +.theme-selector-text { + color: #888; + font-weight: 400; +} + +.theme-selector-arrow { + color: #888; + transition: transform 0.3s ease; +} + +.dropdown-item:hover { + background: rgb(40, 40, 40); +} + +.theme-selector:hover { + background: rgb(25, 25, 25); +} + +.theme-options { + flex: 1; + display: flex; + flex-direction: column; + gap: 12px; +} + +.theme-option { + background: rgb(30, 30, 30); + border-radius: 8px; + padding: 18px; + cursor: pointer; + transition: background 0.3s ease; +} + +.theme-option:hover { + background: rgb(25, 25, 25); +} + +.theme-text { + color: #888; + font-weight: 400; + font-size: 14px; + align-items: center; + text-align: center; +} + + + +.installation-header { + display: flex; + justify-content: space-between; + align-items: center; + background-color: rgb(17, 17, 17); +} + +.installation-title { + display: flex; + align-items: center; + gap: 12px; + font-size: 16px; + color: rgb(255, 255, 255); + font-weight: 400; +} + +.installation-icon-bg { + width: 25px; + height: 25px; + border-radius: 4px; + background: rgb(30, 30, 30); + display: flex; + justify-content: center; + align-items: center; +} + +.installation-icon { + width: 15px; + height: 15px; +} + +.logs-content { + background: rgb(30, 30, 30); + border-radius: 8px; + padding: 16px; + flex: 1; + overflow-y: auto; + color: #fff; + font-size: 12px; + white-space: pre-wrap; + max-height: 275px; + font-weight: 300; +} + + + +.footer { + background: rgb(30, 30, 30); + border-radius: 8px; + padding: 6px; + margin: 0; + display: flex; + justify-content: space-between; + align-items: center; + margin-top: auto; +} + +.social-links { + display: flex; + gap: 7.5px; +} + +.social-link { + width: 30px; + height: 30px; + border: 2px solid rgb(17, 17, 17); + border-radius: 4px; + background: rgb(17, 17, 17); + display: flex; + justify-content: center; + align-items: center; + transition: all 0.5s ease; + cursor: pointer; +} + +.social-link:hover img { + filter: brightness(1.3); +} + +.social-link-icon { + width: 18px; + height: 18px; +} + +.nav-buttons { + display: flex; + gap: 8px; +} + +.nav-button { + opacity: 1; + padding: 2px 18px; + border-radius: 6px; + border: none; + cursor: pointer; + font-size: 14px; +} +.nav-button.disabled { + opacity: 0.5; +} + +.arrow-left, +.arrow-right { + width: 20px; + height: 20px; + top: 1px; + position: relative; + justify-content: center; + align-items: center; +} + + +.next { + border: 2px solid rgb(102, 108, 255); + background-color: rgb(102, 108, 255); + color: #fff; + transition: all 0.5s ease; +} +.next.disabled { + cursor: not-allowed; +} + +.back { + border: 2px solid rgb(17, 17, 17); + background-color: rgb(17, 17, 17); + color: #fff; + transition: all 0.5s ease; +} +.back.disabled { + cursor: not-allowed; + background-color: unset; +} + + +.popup { + position: fixed; + top: 20px; + left: 50%; + transform: translateX(-50%); + background: rgba(255, 0, 0, 0.8); + padding: 10px 20px; + border-radius: 8px; + display: none; + z-index: 1001; + color: white; +} + +.theme-option.active { + background: rgb(102, 108, 255) !important; + color: white; +} + +.theme-option.active .theme-text { + color: white; +} + +.nav-button.next.available { + cursor: pointer; + opacity: 1; +} \ No newline at end of file diff --git a/ps/discord.ps1 b/ps/discord.ps1 new file mode 100644 index 0000000..39a837f --- /dev/null +++ b/ps/discord.ps1 @@ -0,0 +1,25 @@ +$betterDiscordThemes = "$env:APPDATA\BetterDiscord\themes" +$vencordThemes = "$env:APPDATA\Vencord\themes" + +$themeUrl = "https://raw.githubusercontent.com/SpaceTheme/Discord/refs/heads/main/SpaceTheme.theme.css" + +function Install-Theme ($themePath) { + $themeFile = Join-Path -Path $themePath -ChildPath "SpaceTheme.theme.css" + Invoke-RestMethod -Uri $themeUrl -OutFile $themeFile + Write-Host "SpaceTheme for Discord installed in $themePath" +} + +$betterDiscordExists = Test-Path -Path $betterDiscordThemes +$vencordExists = Test-Path -Path $vencordThemes + +if ($betterDiscordExists) { + Install-Theme $betterDiscordThemes +} + +if ($vencordExists) { + Install-Theme $vencordThemes +} + +if (-not $betterDiscordExists -and -not $vencordExists) { + Write-Host "You don't have BetterDiscord or Vencord installed! Install them from the official website." +} diff --git a/ps/steam.ps1 b/ps/steam.ps1 new file mode 100644 index 0000000..180e7dd --- /dev/null +++ b/ps/steam.ps1 @@ -0,0 +1,38 @@ +$tempPath = "$env:TEMP\SpaceTheme_for_Steam.zip" +$skinsFolder = "C:\Program Files (x86)\Steam\steamui\skins" +$extractedFolderPath = "$skinsFolder\Steam-main" +$destinationFolder = "$skinsFolder\SpaceTheme For Steam" + +if (Test-Path $skinsFolder) { + Write-Output "Millennium installed! Proceeding with SpaceTheme installation..." + + Write-Output "Downloading SpaceTheme for Steam..." + Invoke-WebRequest -Uri "https://github.com/SpaceTheme/Steam/archive/refs/heads/main.zip" -OutFile $tempPath + + Write-Output "Extracting files..." + Add-Type -AssemblyName System.IO.Compression.FileSystem + [System.IO.Compression.ZipFile]::ExtractToDirectory($tempPath, $skinsFolder) + + if (Test-Path $extractedFolderPath) { + if (!(Test-Path $destinationFolder)) { + New-Item -ItemType Directory -Path $destinationFolder | Out-Null + } + Get-ChildItem -Path $extractedFolderPath -Recurse | ForEach-Object { + Move-Item -Path $_.FullName -Destination $destinationFolder -Force + } + + Write-Output "SpaceTheme for Steam installed successfully." + + Remove-Item $extractedFolderPath -Recurse -Force + } else { + Write-Output "Failed to find the extracted 'Steam-main' folder." + } + + Remove-Item $tempPath -Force +} else { + Write-Output "You don't have Millennium installed." + + if (Test-Path $tempPath) { + Remove-Item $tempPath -Force + } +} From b0130ad4553170103dcfed8afb7ddab5b407e997 Mon Sep 17 00:00:00 2001 From: Noxy <107372460+noxygalaxy@users.noreply.github.com> Date: Mon, 11 Nov 2024 15:14:06 +0200 Subject: [PATCH 09/15] Delete ps directory --- ps/discord.ps1 | 25 ------------------------- ps/steam.ps1 | 38 -------------------------------------- 2 files changed, 63 deletions(-) delete mode 100644 ps/discord.ps1 delete mode 100644 ps/steam.ps1 diff --git a/ps/discord.ps1 b/ps/discord.ps1 deleted file mode 100644 index 39a837f..0000000 --- a/ps/discord.ps1 +++ /dev/null @@ -1,25 +0,0 @@ -$betterDiscordThemes = "$env:APPDATA\BetterDiscord\themes" -$vencordThemes = "$env:APPDATA\Vencord\themes" - -$themeUrl = "https://raw.githubusercontent.com/SpaceTheme/Discord/refs/heads/main/SpaceTheme.theme.css" - -function Install-Theme ($themePath) { - $themeFile = Join-Path -Path $themePath -ChildPath "SpaceTheme.theme.css" - Invoke-RestMethod -Uri $themeUrl -OutFile $themeFile - Write-Host "SpaceTheme for Discord installed in $themePath" -} - -$betterDiscordExists = Test-Path -Path $betterDiscordThemes -$vencordExists = Test-Path -Path $vencordThemes - -if ($betterDiscordExists) { - Install-Theme $betterDiscordThemes -} - -if ($vencordExists) { - Install-Theme $vencordThemes -} - -if (-not $betterDiscordExists -and -not $vencordExists) { - Write-Host "You don't have BetterDiscord or Vencord installed! Install them from the official website." -} diff --git a/ps/steam.ps1 b/ps/steam.ps1 deleted file mode 100644 index 180e7dd..0000000 --- a/ps/steam.ps1 +++ /dev/null @@ -1,38 +0,0 @@ -$tempPath = "$env:TEMP\SpaceTheme_for_Steam.zip" -$skinsFolder = "C:\Program Files (x86)\Steam\steamui\skins" -$extractedFolderPath = "$skinsFolder\Steam-main" -$destinationFolder = "$skinsFolder\SpaceTheme For Steam" - -if (Test-Path $skinsFolder) { - Write-Output "Millennium installed! Proceeding with SpaceTheme installation..." - - Write-Output "Downloading SpaceTheme for Steam..." - Invoke-WebRequest -Uri "https://github.com/SpaceTheme/Steam/archive/refs/heads/main.zip" -OutFile $tempPath - - Write-Output "Extracting files..." - Add-Type -AssemblyName System.IO.Compression.FileSystem - [System.IO.Compression.ZipFile]::ExtractToDirectory($tempPath, $skinsFolder) - - if (Test-Path $extractedFolderPath) { - if (!(Test-Path $destinationFolder)) { - New-Item -ItemType Directory -Path $destinationFolder | Out-Null - } - Get-ChildItem -Path $extractedFolderPath -Recurse | ForEach-Object { - Move-Item -Path $_.FullName -Destination $destinationFolder -Force - } - - Write-Output "SpaceTheme for Steam installed successfully." - - Remove-Item $extractedFolderPath -Recurse -Force - } else { - Write-Output "Failed to find the extracted 'Steam-main' folder." - } - - Remove-Item $tempPath -Force -} else { - Write-Output "You don't have Millennium installed." - - if (Test-Path $tempPath) { - Remove-Item $tempPath -Force - } -} From d803d1dde21c54b8e4818563fcbbe97e72526d33 Mon Sep 17 00:00:00 2001 From: Noxy <107372460+noxygalaxy@users.noreply.github.com> Date: Mon, 11 Nov 2024 15:14:38 +0200 Subject: [PATCH 10/15] CLI Installer [PowerShell] --- cli/discord.ps1 | 25 +++++++++++++++++++++++++ cli/steam.ps1 | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 cli/discord.ps1 create mode 100644 cli/steam.ps1 diff --git a/cli/discord.ps1 b/cli/discord.ps1 new file mode 100644 index 0000000..39a837f --- /dev/null +++ b/cli/discord.ps1 @@ -0,0 +1,25 @@ +$betterDiscordThemes = "$env:APPDATA\BetterDiscord\themes" +$vencordThemes = "$env:APPDATA\Vencord\themes" + +$themeUrl = "https://raw.githubusercontent.com/SpaceTheme/Discord/refs/heads/main/SpaceTheme.theme.css" + +function Install-Theme ($themePath) { + $themeFile = Join-Path -Path $themePath -ChildPath "SpaceTheme.theme.css" + Invoke-RestMethod -Uri $themeUrl -OutFile $themeFile + Write-Host "SpaceTheme for Discord installed in $themePath" +} + +$betterDiscordExists = Test-Path -Path $betterDiscordThemes +$vencordExists = Test-Path -Path $vencordThemes + +if ($betterDiscordExists) { + Install-Theme $betterDiscordThemes +} + +if ($vencordExists) { + Install-Theme $vencordThemes +} + +if (-not $betterDiscordExists -and -not $vencordExists) { + Write-Host "You don't have BetterDiscord or Vencord installed! Install them from the official website." +} diff --git a/cli/steam.ps1 b/cli/steam.ps1 new file mode 100644 index 0000000..180e7dd --- /dev/null +++ b/cli/steam.ps1 @@ -0,0 +1,38 @@ +$tempPath = "$env:TEMP\SpaceTheme_for_Steam.zip" +$skinsFolder = "C:\Program Files (x86)\Steam\steamui\skins" +$extractedFolderPath = "$skinsFolder\Steam-main" +$destinationFolder = "$skinsFolder\SpaceTheme For Steam" + +if (Test-Path $skinsFolder) { + Write-Output "Millennium installed! Proceeding with SpaceTheme installation..." + + Write-Output "Downloading SpaceTheme for Steam..." + Invoke-WebRequest -Uri "https://github.com/SpaceTheme/Steam/archive/refs/heads/main.zip" -OutFile $tempPath + + Write-Output "Extracting files..." + Add-Type -AssemblyName System.IO.Compression.FileSystem + [System.IO.Compression.ZipFile]::ExtractToDirectory($tempPath, $skinsFolder) + + if (Test-Path $extractedFolderPath) { + if (!(Test-Path $destinationFolder)) { + New-Item -ItemType Directory -Path $destinationFolder | Out-Null + } + Get-ChildItem -Path $extractedFolderPath -Recurse | ForEach-Object { + Move-Item -Path $_.FullName -Destination $destinationFolder -Force + } + + Write-Output "SpaceTheme for Steam installed successfully." + + Remove-Item $extractedFolderPath -Recurse -Force + } else { + Write-Output "Failed to find the extracted 'Steam-main' folder." + } + + Remove-Item $tempPath -Force +} else { + Write-Output "You don't have Millennium installed." + + if (Test-Path $tempPath) { + Remove-Item $tempPath -Force + } +} From 3051225d9889898a30bca498d52630ae0537d9a0 Mon Sep 17 00:00:00 2001 From: Noxy <107372460+noxygalaxy@users.noreply.github.com> Date: Mon, 11 Nov 2024 15:22:42 +0200 Subject: [PATCH 11/15] Update package.json --- gui/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gui/package.json b/gui/package.json index 264f8d4..5baf538 100644 --- a/gui/package.json +++ b/gui/package.json @@ -17,7 +17,7 @@ "build": { "appId": "com.noxy.st-installer", "productName": "SpaceTheme-Installer", - "copyright": "Copyright © 2024 SpaceEnergy", + "copyright": "Copyright © 2024 SpaceTheme", "win": { "target": [ "nsis", From b27f327e596a522f5fd15afe35c5380f035746fe Mon Sep 17 00:00:00 2001 From: Noxy <107372460+noxygalaxy@users.noreply.github.com> Date: Mon, 11 Nov 2024 15:22:53 +0200 Subject: [PATCH 12/15] Update package.json --- gui/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gui/package.json b/gui/package.json index 5baf538..54f4990 100644 --- a/gui/package.json +++ b/gui/package.json @@ -30,7 +30,7 @@ } }, "devDependencies": { - "electron": "^29.1.0", + "electron": "^29.1.0" "electron-builder": "^25.1.8" } } From c0df8a14ccae2b535cc61012ecb1edf315b58210 Mon Sep 17 00:00:00 2001 From: Noxy <107372460+noxygalaxy@users.noreply.github.com> Date: Mon, 11 Nov 2024 15:27:13 +0200 Subject: [PATCH 13/15] Update package.json --- gui/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gui/package.json b/gui/package.json index 54f4990..5baf538 100644 --- a/gui/package.json +++ b/gui/package.json @@ -30,7 +30,7 @@ } }, "devDependencies": { - "electron": "^29.1.0" + "electron": "^29.1.0", "electron-builder": "^25.1.8" } } From d891727e373d4bb55ad288ccfa2513842943deec Mon Sep 17 00:00:00 2001 From: Noxy <107372460+noxygalaxy@users.noreply.github.com> Date: Mon, 11 Nov 2024 15:27:49 +0200 Subject: [PATCH 14/15] v1.0.1 GUI Installer --- gui/main.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gui/main.js b/gui/main.js index c742939..dd4112b 100644 --- a/gui/main.js +++ b/gui/main.js @@ -126,7 +126,7 @@ ipcMain.on('start-installation', async (event, data) => { await delay(1000); const skinsFolder = 'C:\\Program Files (x86)\\Steam\\steamui\\skins'; - const destinationFolder = path.join(skinsFolder, 'SpaceTheme For Steam'); + const destinationFolder = path.join(skinsFolder, 'SpaceTheme for Steam'); const tempPath = path.join(process.env.TEMP, 'SpaceTheme_for_Steam.zip'); const extractedFolderPath = path.join(skinsFolder, 'Steam-main'); @@ -241,4 +241,4 @@ app.on('activate', () => { if (BrowserWindow.getAllWindows().length === 0) { createWindow(); } -}); \ No newline at end of file +}); From fbb588745a49239cf55c6c522c6052f7a53d17a9 Mon Sep 17 00:00:00 2001 From: Noxy <107372460+noxygalaxy@users.noreply.github.com> Date: Mon, 11 Nov 2024 15:28:22 +0200 Subject: [PATCH 15/15] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2695811..7b17232 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,2 @@ # Installer -GUI/PS installation tool that automates the installation, removal and maintenance of themes. +GUI/CLI installation tool that automates the installation, removal and maintenance of themes.