diff --git a/LinuxBuild/alg-welcome.desktop b/LinuxBuild/welcome.desktop similarity index 57% rename from LinuxBuild/alg-welcome.desktop rename to LinuxBuild/welcome.desktop index 78f3d20..3693e65 100644 --- a/LinuxBuild/alg-welcome.desktop +++ b/LinuxBuild/welcome.desktop @@ -3,6 +3,6 @@ Encoding=UTF-8 Version=1.0 Type=Application Terminal=false -Exec=bash -c /usr/bin/welcome +Exec=welcome Name=Welcome -Icon=/usr/share/pixmaps/alg-logo.png \ No newline at end of file +Icon=/usr/share/pixmaps/welcome.png \ No newline at end of file diff --git a/LinuxBuild/alg-logo.png b/LinuxBuild/welcome.png similarity index 100% rename from LinuxBuild/alg-logo.png rename to LinuxBuild/welcome.png diff --git a/PKGBUILD/PKGBUILD b/PKGBUILD/PKGBUILD index a6ba043..72556cb 100644 --- a/PKGBUILD/PKGBUILD +++ b/PKGBUILD/PKGBUILD @@ -5,18 +5,18 @@ pkgrel=1 destname="/usr/bin" pkgdesc="Welcome App For ALG" arch=('x86_64') -url="https://github.com/arch-linux-gui/alg-welcome" +url="https://github.com/harshau007/alg-welcome" license=('GPL3') depends=('webkit2gtk') source=("$pkgname".tar.gz::"${url}"/releases/download/latest/"${pkgname}".tar.gz) -sha256sums=('60e71779be1cf8d19375a2a69f0e4edcfabd5ce5fbd64d7eb74bbe46ff0f782e') +sha256sums=('c69bf0c41555d1c31fca41aacef9082d7496864703b478ffc29bd92c672cb5f0') package() { tar -xf "$srcdir/"${pkgname}".tar.gz" -C "$pkgdir/" - install -Dm644 "$srcdir/"${pkgname}"/build/bin/alg-logo.png" "$pkgdir/usr/share/pixmaps/alg-logo.png" + install -Dm644 "$srcdir/"${pkgname}"/build/bin/welcome.png" "$pkgdir/usr/share/pixmaps/welcome.png" - install -Dm755 "$srcdir/"${pkgname}"/build/bin/alg-welcome.desktop" "$pkgdir/usr/share/applications/alg-welcome.desktop" + install -Dm755 "$srcdir/"${pkgname}"/build/bin/welcome.desktop" "$pkgdir/usr/share/applications/welcome.desktop" install -Dm755 "$srcdir/"${pkgname}"/build/bin/welcome" "$pkgdir/usr/bin/welcome" } diff --git a/app.go b/app.go index f367ba8..1322b96 100644 --- a/app.go +++ b/app.go @@ -79,6 +79,7 @@ func getLookAndFeelPackageKDE() string { for scanner.Scan() { line := scanner.Text() if strings.HasPrefix(line, "LookAndFeelPackage=") { + fmt.Println(strings.TrimPrefix(line, "LookAndFeelPackage=")) return strings.TrimPrefix(line, "LookAndFeelPackage=") } } @@ -116,19 +117,44 @@ func (a *App) CurrentTheme() string { return currThemeName } +/* +kwriteconfig6 --file ~/.config/kwinrc --group org.kde.kdecoration2 --key theme "__aurorae__svg__Qogir-light" + +kwriteconfig6 --file ~/.config/kwinrc --group org.kde.kdecoration2 --key theme "__aurorae__svg__Qogir-circle-dark" + +qdbus6 org.kde.KWin /KWin reconfigure +*/ + func (a *App) ToggleTheme(dark bool) { var style string + var winDeco string switch desktopEnv { case "kde": - if dark { - style = "org.kde.breezedark.desktop" + isPure := getLookAndFeelPackageKDE() + if strings.Contains(isPure, "org.kde.breeze") { + if dark { + style = "org.kde.breezedark.desktop" + } else { + style = "org.kde.breeze.desktop" + } + cmd := exec.Command("lookandfeeltool", "--apply", style) + _, err := cmd.Output() + if err != nil { + fmt.Println("failed to change KDE theme:", err) + } } else { - style = "org.kde.breeze.desktop" - } - cmd := exec.Command("lookandfeeltool", "--apply", style) - _, err := cmd.Output() - if err != nil { - fmt.Println("failed to change KDE theme:", err) + if dark { + style = "Qogirdark" + winDeco = "__aurorae__svg__Qogir-dark-circle" + } else { + style = "Qogirlight" + winDeco = "__aurorae__svg__Qogir-light" + } + cmd := exec.Command("sh", "-c", fmt.Sprintf("plasma-apply-colorscheme %s && kwriteconfig6 --file %s/.config/kwinrc --group org.kde.kdecoration2 --key theme %s && qdbus6 org.kde.KWin /KWin reconfigure", style, os.Getenv("HOME"), winDeco)) + _, err := cmd.Output() + if err != nil { + fmt.Println("failed to change KDE theme:", err) + } } case "gnome": if dark { @@ -136,7 +162,7 @@ func (a *App) ToggleTheme(dark bool) { } else { style = "prefer-light" } - cmd := exec.Command("gsettings", "set", "org.gnome.desktop.interface", "color-scheme", style) + cmd := exec.Command("gsettings", "set", "org.gnome.desktop.interface", "gtk-theme", style) _, err := cmd.Output() if err != nil { fmt.Println("failed to change GNOME theme:", err) diff --git a/build/bin/welcome b/build/bin/welcome index 24e5b42..ca8a95f 100755 Binary files a/build/bin/welcome and b/build/bin/welcome differ diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index d561216..ea1527a 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -6,9 +6,8 @@ import { CheckFileExists, ToggleAutostart, } from "../wailsjs/go/main/App"; -import moon from "./assets/moon.png"; -import sun from "./assets/sun.png"; import back from "./assets/back.png"; +import backDark from "./assets/back-dark.png"; import WelcomeScreen from "./components/WelcomeScreen"; import AboutUs from "./components/AboutUs"; import CountrySelectionScreen from "./components/CountrySelectionScreen"; @@ -20,8 +19,14 @@ const App: React.FC = () => { const [currentScreen, setCurrentScreen] = useState(0); const [isDarkMode, setIsDarkMode] = useState(true); const [isNavigated, setIsNavigated] = useState(false); - const [isAutoStart, setIsAutoStart] = useState(false); // New state for auto start - const [showLogger, setShowLogger] = useState(false); // State for logger screen + const [isAutoStart, setIsAutoStart] = useState(false); + const [showLogger, setShowLogger] = useState(false); + const Themes = [ + "Adwaita-dark", + "prefer-dark", + "org.kde.breezedark.desktop", + "com.github.vinceliuice.Qogir-dark", + ]; useEffect(() => { const fetchTheme = async () => { @@ -29,11 +34,7 @@ const App: React.FC = () => { const currTheme = await CurrentTheme(); const fileExist = await CheckFileExists(); setIsAutoStart(fileExist); - setIsDarkMode( - currTheme === "Adwaita-dark" || - currTheme === "prefer-dark" || - currTheme === "org.kde.breezedark.desktop" - ); + setIsDarkMode(Themes.includes(currTheme)); } catch (error) { console.error("Failed to fetch current theme:", error); } @@ -42,9 +43,10 @@ const App: React.FC = () => { fetchTheme(); }, []); - const toggleTheme = () => { - setIsDarkMode(!isDarkMode); - ToggleTheme(!isDarkMode); + const toggleTheme = async () => { + const newThemeState = !isDarkMode; + setIsDarkMode(newThemeState); + await ToggleTheme(newThemeState); }; const toggleAutoStart = async () => { @@ -69,9 +71,22 @@ const App: React.FC = () => { setShowLogger(false); }; + const setterLogger = (log: boolean) => { + setShowLogger(log); + }; + const screens: JSX.Element[] = [ - , - , + , + , , ]; @@ -79,7 +94,7 @@ const App: React.FC = () => {
{
@@ -127,63 +154,6 @@ const App: React.FC = () => { /> )} - {currentScreen === 0 && !showLogger && ( - <> -
-
- Light - - Dark -
-
-
-
- Auto Start -
- Off - - On -
-
-
- - )}
); }; diff --git a/frontend/src/assets/back-dark.png b/frontend/src/assets/back-dark.png new file mode 100644 index 0000000..fe554fd Binary files /dev/null and b/frontend/src/assets/back-dark.png differ diff --git a/frontend/src/assets/ext-dark.png b/frontend/src/assets/ext-dark.png new file mode 100644 index 0000000..70f22db Binary files /dev/null and b/frontend/src/assets/ext-dark.png differ diff --git a/frontend/src/assets/ext-light.png b/frontend/src/assets/ext-light.png new file mode 100644 index 0000000..2e8551d Binary files /dev/null and b/frontend/src/assets/ext-light.png differ diff --git a/frontend/src/assets/images/alg-welcome-1.png b/frontend/src/assets/images/alg-welcome-1.png new file mode 100644 index 0000000..f65d240 Binary files /dev/null and b/frontend/src/assets/images/alg-welcome-1.png differ diff --git a/frontend/src/assets/images/alg-welcome.png b/frontend/src/assets/images/alg-welcome.png index f65d240..e3d494c 100644 Binary files a/frontend/src/assets/images/alg-welcome.png and b/frontend/src/assets/images/alg-welcome.png differ diff --git a/frontend/src/components/CountrySelectionScreen.tsx b/frontend/src/components/CountrySelectionScreen.tsx index ee4f212..8316ca2 100644 --- a/frontend/src/components/CountrySelectionScreen.tsx +++ b/frontend/src/components/CountrySelectionScreen.tsx @@ -3,15 +3,16 @@ import { MirrorList } from "../../wailsjs/go/main/App"; import { EventsOn } from "../../wailsjs/runtime"; import { useLogsContext } from "@/lib/LogsContext"; -const CountrySelectionScreen: React.FC<{ isDarkMode: boolean }> = ({ - isDarkMode, -}) => { +const CountrySelectionScreen: React.FC<{ + isDarkMode: boolean; + setShowLogger: (log: boolean) => void; +}> = ({ isDarkMode, setShowLogger }) => { const [selectedCountries, setSelectedCountries] = useState([]); const [includeHttps, setIncludeHttps] = useState(true); const [includeHttp, setIncludeHttp] = useState(false); const [sortBy, setSortBy] = useState("age"); const [maxMirrors, setMaxMirrors] = useState(20); - const [timeout, setTimeout] = useState(10); + const [timeout, setTimeout] = useState(30); const { addLog, clearLogs, loading, setLoading } = useLogsContext(); useEffect(() => { @@ -58,11 +59,13 @@ const CountrySelectionScreen: React.FC<{ isDarkMode: boolean }> = ({ setLoading(true); try { + setShowLogger(true); await MirrorList(command); } catch (error) { console.error("Error updating mirrors:", error); } finally { setLoading(false); + setShowLogger(false); setSelectedCountries([]); setIncludeHttps(true); setIncludeHttp(false); @@ -77,7 +80,7 @@ const CountrySelectionScreen: React.FC<{ isDarkMode: boolean }> = ({
@@ -204,8 +207,14 @@ const CountrySelectionScreen: React.FC<{ isDarkMode: boolean }> = ({ onClick={handleUpdateMirrors} className={ !selectedCountries.length - ? `w-[90%] bg-[#6a45d1] text-white mr-10 px-4 py-2 rounded-2xl opacity-50 cursor-not-allowed` - : `w-[90%] bg-[#6a45d1] text-white mr-10 px-4 py-2 rounded-2xl hover:bg-[#7c53ed]` + ? `w-[90%] ${ + isDarkMode ? "bg-gray-700" : "bg-gray-300" + } mr-10 px-4 py-2 rounded-2xl opacity-50 cursor-not-allowed` + : `w-[90%] ${ + isDarkMode + ? "bg-gray-700 hover:bg-gray-600" + : "bg-gray-300 hover:bg-gray-400" + } mr-10 px-4 py-2 rounded-2xl` } disabled={!selectedCountries.length || loading} > diff --git a/frontend/src/components/WelcomeScreen.tsx b/frontend/src/components/WelcomeScreen.tsx index 6c4ee84..e591057 100644 --- a/frontend/src/components/WelcomeScreen.tsx +++ b/frontend/src/components/WelcomeScreen.tsx @@ -1,7 +1,6 @@ import React, { useEffect, useState } from "react"; -import next from "../assets/next.png"; -import about from "../assets/about.png"; import appicon from "../assets/appicon.png"; +import { cn } from "@/lib/utils"; import { UpdateSystem, ScreenResolution, @@ -10,162 +9,258 @@ import { URL, } from "../../wailsjs/go/main/App"; import "../globals.css"; -import Modal from "./ui/modal"; +import extDark from "../assets/ext-dark.png"; +import extLight from "../assets/ext-light.png"; +import { Image } from "lucide-react"; interface ScreenProps { goToScreen: (index: number) => void; goBack?: () => void; currentScreenIndex?: number; isDarkMode: boolean; + toggleDarkMode: () => void; + isAutoStart: boolean; + toggleAutoStart: () => void; } -const WelcomeScreen: React.FC = ({ goToScreen, isDarkMode }) => { +const WelcomeScreen: React.FC = ({ + goToScreen, + isDarkMode, + toggleDarkMode, + isAutoStart, + toggleAutoStart, +}) => { const [modalVisible, setModalVisible] = useState(false); const [modalTitle, setModalTitle] = useState(""); const [modalMessage, setModalMessage] = useState(""); + const [loading, setLoading] = useState(false); const [isInstalled, setIsInstalled] = useState(false); - const [isActiveScreenRes, setIsActiveScreenRes] = useState(false); - const [isUpdating, setIsUpdating] = useState(false); - const [isActiveInstall, setIsActiveInstall] = useState(false); useEffect(() => { const checkInstallation = async () => { const isLive = await IsLiveISO(); setIsInstalled(isLive); - console.log(isLive); }; checkInstallation(); }, []); const handleInstallALG = async () => { try { - setIsActiveInstall(true); await RunCalamaresIfLiveISO(); - } finally { - setIsActiveInstall(false); + } catch (error) { + setModalTitle("Error"); + setModalMessage("Failed to install ALG."); + setModalVisible(true); } }; const handleUpdateSystem = async () => { - setIsUpdating(true); + setLoading(true); try { await UpdateSystem(); + setModalTitle("Success"); + setModalMessage("System updated successfully."); } catch (error) { setModalTitle("Error"); setModalMessage("Failed to update the system."); } finally { - setIsUpdating(false); + setLoading(false); } }; const handleScreenResolution = async () => { try { - setIsActiveScreenRes(true); await ScreenResolution(); } catch (error) { setModalTitle("Error"); - setModalMessage("Failed to update the system."); - } finally { - setIsActiveScreenRes(false); + setModalMessage("Failed to update screen resolution."); + setModalVisible(true); } }; return (
- App Icon -

Welcome to ALG

-
- {isInstalled ? ( - - ) : ( - - )} - - - - +
+ App Icon +

Welcome

+
+ +
+
+
+

Install & Setup

+ {isInstalled ? ( + + ) : ( + + )} + +
+ +
+

Basic Utilities

+ + +
+
+ +
+

Social Media Links

+
+ + +
+
+ +
+

Get Started

+
+ AutoStart : +
+
+
+
+
+ Dark Theme : +
+
+
+
+
- - {modalVisible && ( - setModalVisible(false)} - isDarkMode={isDarkMode} - /> - )}
); };