Compare commits
2 Commits
dbccffd3a4
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
0132ceb835
|
|||
|
7064e8aeee
|
@@ -9,23 +9,23 @@
|
|||||||
"astro": "astro"
|
"astro": "astro"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@astrojs/mdx": "^4.3.6",
|
"@astrojs/mdx": "^4.3.13",
|
||||||
"@astrojs/solid-js": "^5.1.1",
|
"@astrojs/solid-js": "^5.1.3",
|
||||||
"@tailwindcss/vite": "^4.1.13",
|
"@tailwindcss/vite": "^4.1.18",
|
||||||
"astro": "^5.14.1",
|
"astro": "^5.17.0",
|
||||||
"fuse.js": "^7.1.0",
|
"fuse.js": "^7.1.0",
|
||||||
"party-js": "^2.2.0",
|
"party-js": "^2.2.0",
|
||||||
"qrcode-generator": "^2.0.4",
|
"qrcode-generator": "^2.0.4",
|
||||||
"sharp": "^0.34.4",
|
"sharp": "^0.34.5",
|
||||||
"solid-js": "^1.9.9",
|
"solid-js": "^1.9.11",
|
||||||
"tailwindcss": "^4.1.13"
|
"tailwindcss": "^4.1.18"
|
||||||
},
|
},
|
||||||
"packageManager": "pnpm@10.17.1+sha512.17c560fca4867ae9473a3899ad84a88334914f379be46d455cbf92e5cf4b39d34985d452d2583baf19967fa76cb5c17bc9e245529d0b98745721aa7200ecaf7a",
|
"packageManager": "pnpm@10.28.2+sha512.41872f037ad22f7348e3b1debbaf7e867cfd448f2726d9cf74c08f19507c31d2c8e7a11525b983febc2df640b5438dee6023ebb1f84ed43cc2d654d2bc326264",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^24.5.2",
|
"@types/node": "^25.1.0",
|
||||||
"typescript": "^5.9.2",
|
"typescript": "^5.9.3",
|
||||||
"typescript-plugin-toml": "^0.5.0",
|
"typescript-plugin-toml": "^0.5.0",
|
||||||
"vite-plugin-toml": "^0.8.4",
|
"vite-plugin-toml": "^0.8.7",
|
||||||
"wrangler": "^4.40.2"
|
"wrangler": "^4.61.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
<?xml version="1.0" standalone="no"?>
|
<?xml version="1.0" standalone="no"?>
|
||||||
<svg class="pf-v6-svg" viewBox="0 0 512 512" fill="currentColor" aria-hidden="true" role="img" width="100%" height="100%" color="" xmlns="http://www.w3.org/2000/svg"><path d="M200 288H88c-21.4 0-32.1 25.8-17 41l32.9 31-99.2 99.3c-6.2 6.2-6.2 16.4 0 22.6l25.4 25.4c6.2 6.2 16.4 6.2 22.6 0L152 408l31.1 33c15.1 15.1 40.9 4.4 40.9-17V312c0-13.3-10.7-24-24-24zm112-64h112c21.4 0 32.1-25.9 17-41l-33-31 99.3-99.3c6.2-6.2 6.2-16.4 0-22.6L481.9 4.7c-6.2-6.2-16.4-6.2-22.6 0L360 104l-31.1-33C313.8 55.9 288 66.6 288 88v112c0 13.3 10.7 24 24 24zm96 136l33-31.1c15.1-15.1 4.4-40.9-17-40.9H312c-13.3 0-24 10.7-24 24v112c0 21.4 25.9 32.1 41 17l31-32.9 99.3 99.3c6.2 6.2 16.4 6.2 22.6 0l25.4-25.4c6.2-6.2 6.2-16.4 0-22.6L408 360zM183 71.1L152 104 52.7 4.7c-6.2-6.2-16.4-6.2-22.6 0L4.7 30.1c-6.2 6.2-6.2 16.4 0 22.6L104 152l-33 31.1C55.9 198.2 66.6 224 88 224h112c13.3 0 24-10.7 24-24V88c0-21.3-25.9-32-41-16.9z"></path></svg>
|
<svg class="pf-v6-svg" viewBox="0 0 512 512" fill="currentColor" aria-hidden="true" role="img" width="100%" height="100%" color="" xmlns="http://www.w3.org/2000/svg"><path d="M200 288H88c-21.4 0-32.1 25.8-17 41l32.9 31-99.2 99.3c-6.2 6.2-6.2 16.4 0 22.6l25.4 25.4c6.2 6.2 16.4 6.2 22.6 0L152 408l31.1 33c15.1 15.1 40.9 4.4 40.9-17V312c0-13.3-10.7-24-24-24zm112-64h112c21.4 0 32.1-25.9 17-41l-33-31 99.3-99.3c6.2-6.2 6.2-16.4 0-22.6L481.9 4.7c-6.2-6.2-16.4-6.2-22.6 0L360 104l-31.1-33C313.8 55.9 288 66.6 288 88v112c0 13.3 10.7 24 24 24zm96 136l33-31.1c15.1-15.1 4.4-40.9-17-40.9H312c-13.3 0-24 10.7-24 24v112c0 21.4 25.9 32.1 41 17l31-32.9 99.3 99.3c6.2 6.2 16.4 6.2 22.6 0l25.4-25.4c6.2-6.2 6.2-16.4 0-22.6L408 360zM183 71.1L152 104 52.7 4.7c-6.2-6.2-16.4-6.2-22.6 0L4.7 30.1c-6.2 6.2-6.2 16.4 0 22.6L104 152l-33 31.1C55.9 198.2 66.6 224 88 224h112c13.3 0 24-10.7 24-24V88c0-21.3-25.9-32-41-16.9z"></path></svg>
|
||||||
|
After Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 45 KiB |
|
After Width: | Height: | Size: 149 KiB |
|
After Width: | Height: | Size: 7.6 KiB |
|
After Width: | Height: | Size: 7.3 KiB |
|
After Width: | Height: | Size: 165 KiB |
|
After Width: | Height: | Size: 181 KiB |
|
After Width: | Height: | Size: 1.0 MiB |
|
After Width: | Height: | Size: 1.0 MiB |
@@ -23,6 +23,7 @@ const fuseOptions: IFuseOptions<Task> = {
|
|||||||
const AppList: Component<{ lang: string }> = ({ lang }) => {
|
const AppList: Component<{ lang: string }> = ({ lang }) => {
|
||||||
const [currentPlaceholder, setCurrentPlaceholder] = createSignal("");
|
const [currentPlaceholder, setCurrentPlaceholder] = createSignal("");
|
||||||
const [searchQuery, setSearchQuery] = createSignal("");
|
const [searchQuery, setSearchQuery] = createSignal("");
|
||||||
|
const [flathub, setFlathub] = createSignal(false);
|
||||||
const fuse = new Fuse(appData.tasks as Task[], fuseOptions);
|
const fuse = new Fuse(appData.tasks as Task[], fuseOptions);
|
||||||
const searchResults = createMemo(() => {
|
const searchResults = createMemo(() => {
|
||||||
if (searchQuery().trim() === "") {
|
if (searchQuery().trim() === "") {
|
||||||
@@ -38,18 +39,19 @@ const AppList: Component<{ lang: string }> = ({ lang }) => {
|
|||||||
|
|
||||||
onMount(async () => {
|
onMount(async () => {
|
||||||
setCurrentPlaceholder(
|
setCurrentPlaceholder(
|
||||||
appData.tasks[Math.floor(Math.random() * appData.tasks.length)].name
|
appData.tasks[Math.floor(Math.random() * appData.tasks.length)]
|
||||||
|
.name,
|
||||||
);
|
);
|
||||||
setInterval(() => {
|
setInterval(() => {
|
||||||
const cats = Object.values(strings().categories);
|
const cats = Object.values(strings().categories);
|
||||||
|
|
||||||
setCurrentPlaceholder(
|
setCurrentPlaceholder(
|
||||||
cats[Math.floor(Math.random() * cats.length)]
|
cats[Math.floor(Math.random() * cats.length)],
|
||||||
);
|
);
|
||||||
}, 3000);
|
}, 3000);
|
||||||
|
|
||||||
setStrings(
|
setStrings(
|
||||||
(await import(`@/data/strings/${lang}.toml`)).default.appList
|
(await import(`@/data/strings/${lang}.toml`)).default.appList,
|
||||||
);
|
);
|
||||||
|
|
||||||
if (lang === "en") return;
|
if (lang === "en") return;
|
||||||
@@ -58,7 +60,7 @@ const AppList: Component<{ lang: string }> = ({ lang }) => {
|
|||||||
(appData.tasks as Task[]).map((task) => ({
|
(appData.tasks as Task[]).map((task) => ({
|
||||||
...task,
|
...task,
|
||||||
name: strings().categories[task.key] ?? task.name,
|
name: strings().categories[task.key] ?? task.name,
|
||||||
}))
|
})),
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -68,7 +70,10 @@ const AppList: Component<{ lang: string }> = ({ lang }) => {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div id="searchBox" class="my-4 flex justify-center items-center">
|
<div
|
||||||
|
id="searchBox"
|
||||||
|
class="mt-4 mb-2 flex justify-center items-center"
|
||||||
|
>
|
||||||
<span>{strings().todo}</span>
|
<span>{strings().todo}</span>
|
||||||
<input
|
<input
|
||||||
type="search"
|
type="search"
|
||||||
@@ -80,6 +85,15 @@ const AppList: Component<{ lang: string }> = ({ lang }) => {
|
|||||||
class="ml-4 px-4 py-2 border rounded dark:border-slate-600 border-gray-400"
|
class="ml-4 px-4 py-2 border rounded dark:border-slate-600 border-gray-400"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="mb-4 flex justify-center items-center gap-2">
|
||||||
|
<input
|
||||||
|
type="checkbox"
|
||||||
|
id="flathub"
|
||||||
|
checked={flathub()}
|
||||||
|
oninput={(e) => setFlathub(e.target.checked)}
|
||||||
|
/>
|
||||||
|
<label>Link to Flathub (if available)</label>
|
||||||
|
</div>
|
||||||
<div
|
<div
|
||||||
id="appList"
|
id="appList"
|
||||||
class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4"
|
class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4"
|
||||||
@@ -90,11 +104,15 @@ const AppList: Component<{ lang: string }> = ({ lang }) => {
|
|||||||
<div class="font-bold border-r dark:border-slate-600 border-gray-400 w-[30%] pr-4 mr-4">
|
<div class="font-bold border-r dark:border-slate-600 border-gray-400 w-[30%] pr-4 mr-4">
|
||||||
{getTaskName(item.key) ?? item.name}
|
{getTaskName(item.key) ?? item.name}
|
||||||
</div>
|
</div>
|
||||||
<ul class="flex gap-4">
|
<ul class="flex gap-x-4 flex-wrap">
|
||||||
{item.apps.map((app) => (
|
{item.apps.map((app) => (
|
||||||
<li>
|
<li>
|
||||||
<a
|
<a
|
||||||
href={app.url}
|
href={
|
||||||
|
flathub()
|
||||||
|
? (app.flathub ?? app.url)
|
||||||
|
: app.url
|
||||||
|
}
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noopener"
|
rel="noopener"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -21,6 +21,11 @@ name = "OpenToonz"
|
|||||||
url = "https://opentoonz.github.io/e/"
|
url = "https://opentoonz.github.io/e/"
|
||||||
flathub = "https://flathub.org/en/apps/io.github.OpenToonz"
|
flathub = "https://flathub.org/en/apps/io.github.OpenToonz"
|
||||||
|
|
||||||
|
[[tasks.apps]]
|
||||||
|
name = "Krita"
|
||||||
|
url = "https://krita.org/"
|
||||||
|
flathub = "https://flathub.org/en/apps/org.kde.krita"
|
||||||
|
|
||||||
[[tasks]]
|
[[tasks]]
|
||||||
name = "Drawing"
|
name = "Drawing"
|
||||||
key = "drawing"
|
key = "drawing"
|
||||||
@@ -135,6 +140,11 @@ flathub = "https://flathub.org/en/apps/com.visualstudio.code"
|
|||||||
name = "JetBrains IDEs"
|
name = "JetBrains IDEs"
|
||||||
url = "https://www.jetbrains.com/"
|
url = "https://www.jetbrains.com/"
|
||||||
|
|
||||||
|
[[tasks.apps]]
|
||||||
|
name = "Zed"
|
||||||
|
url = "https://zed.dev/"
|
||||||
|
flathub = "https://flathub.org/en/apps/dev.zed.Zed"
|
||||||
|
|
||||||
[[tasks]]
|
[[tasks]]
|
||||||
name = "Video Editing"
|
name = "Video Editing"
|
||||||
key = "video"
|
key = "video"
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ title: Choose your flavor
|
|||||||
import { Picture } from "astro:assets";
|
import { Picture } from "astro:assets";
|
||||||
import ChoiceList from "@/components/ChoiceList.astro";
|
import ChoiceList from "@/components/ChoiceList.astro";
|
||||||
import fedoraWorkstation from "@/assets/imgs/Fedora/fedora42_workstation.png";
|
import fedoraWorkstation from "@/assets/imgs/Fedora/fedora42_workstation.png";
|
||||||
import fedoraPlasma from "@/assets/imgs/Fedora/fedora42_kdeplasma.png";
|
import fedoraPlasma from "@/assets/imgs/Fedora/fedora43_kdeplasma.png";
|
||||||
|
|
||||||
Choose a desktop environment, pick whatever you like based on
|
Choose a desktop environment, pick whatever you like based on
|
||||||
appearance. KDE Plasma (Right) may be more familiar for Windows users.
|
appearance. KDE Plasma (Right) may be more familiar for Windows users.
|
||||||
@@ -28,7 +28,7 @@ appearance. KDE Plasma (Right) may be more familiar for Windows users.
|
|||||||
src={fedoraPlasma}
|
src={fedoraPlasma}
|
||||||
formats={["avif"]}
|
formats={["avif"]}
|
||||||
width="1280"
|
width="1280"
|
||||||
alt="Fedora KDE Plasma Desktop 42"
|
alt="Fedora KDE Plasma Desktop 43"
|
||||||
/>
|
/>
|
||||||
<figcaption>Fedora KDE Plasma Desktop</figcaption>
|
<figcaption>Fedora KDE Plasma Desktop</figcaption>
|
||||||
</figure>
|
</figure>
|
||||||
|
|||||||
@@ -4,13 +4,13 @@ title: Fedora KDE Plasma Desktop
|
|||||||
|
|
||||||
import { Picture } from "astro:assets";
|
import { Picture } from "astro:assets";
|
||||||
import ChoiceList from "@/components/ChoiceList.astro";
|
import ChoiceList from "@/components/ChoiceList.astro";
|
||||||
import fedoraPlasma from "@/assets/imgs/Fedora/fedora42_kdeplasma.png";
|
import fedoraPlasma from "@/assets/imgs/Fedora/fedora43_kdeplasma.png";
|
||||||
|
|
||||||
<Picture
|
<Picture
|
||||||
src={fedoraPlasma}
|
src={fedoraPlasma}
|
||||||
formats={["avif"]}
|
formats={["avif"]}
|
||||||
width="1280"
|
width="1280"
|
||||||
alt="Fedora KDE Plasma Desktop 42"
|
alt="Fedora KDE Plasma Desktop 43"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<ChoiceList>
|
<ChoiceList>
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
---
|
||||||
|
title: Fedora Media Writer
|
||||||
|
description: Choosing to download Fedora automatically.
|
||||||
|
continueTo: distro/fedora/plasma/1/
|
||||||
|
---
|
||||||
|
|
||||||
|
import { Picture } from "astro:assets";
|
||||||
|
import selectImageSource from "@/assets/imgs/Fedora/FedoraMediaWriter/SelectImageSource.png";
|
||||||
|
|
||||||
|
<div class="flex justify-center">
|
||||||
|
<Picture
|
||||||
|
src={selectImageSource}
|
||||||
|
formats={["avif"]}
|
||||||
|
alt="Fedora Media Writer's Select Image Source page"
|
||||||
|
class="h-72 w-auto"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
Select "Download automatically" and click Next.
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
---
|
||||||
|
title: Select Fedora Release
|
||||||
|
description: Select the Fedora release according to your choosing.
|
||||||
|
continueTo: distro/fedora/plasma/2/
|
||||||
|
---
|
||||||
|
|
||||||
|
import { Picture } from "astro:assets";
|
||||||
|
import selectImageSource from "@/assets/imgs/Fedora/FedoraMediaWriter/SelectFedoraRelease_Plasma.png";
|
||||||
|
|
||||||
|
<div class="flex justify-center">
|
||||||
|
<Picture
|
||||||
|
src={selectImageSource}
|
||||||
|
formats={["avif"]}
|
||||||
|
alt="Fedora Media Writer's Select Fedora Release page"
|
||||||
|
class="h-72 w-auto"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
Select "Fedora KDE Plasma Desktop" and click Next.
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
---
|
||||||
|
title: Write Options
|
||||||
|
description: Selecting the USB flash drive write options
|
||||||
|
continueTo: distro/fedora/plasma/3/
|
||||||
|
---
|
||||||
|
|
||||||
|
import { Picture } from "astro:assets";
|
||||||
|
import writeOptions from "@/assets/imgs/Fedora/FedoraMediaWriter/WriteOptions.png";
|
||||||
|
|
||||||
|
<div class="flex justify-center">
|
||||||
|
<Picture
|
||||||
|
src={writeOptions}
|
||||||
|
formats={["avif"]}
|
||||||
|
alt="Fedora Media Writer's Write Options page"
|
||||||
|
class="h-72 w-auto"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
Select the latest version available (as of writing, is version 43) and make
|
||||||
|
sure you're choosing the right device in the USB Drive dropdown.
|
||||||
|
|
||||||
|
Optionally, check "Delete download after writing" if you'd like to save space
|
||||||
|
and do not plan to format a USB flash drive again with Fedora anytime soon.
|
||||||
|
|
||||||
|
Then, Click "Write"
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
---
|
||||||
|
title: Erase Confirmation
|
||||||
|
description: Confirming the formatting of the USB drive.
|
||||||
|
continueTo: distro/fedora/plasma/4/
|
||||||
|
---
|
||||||
|
|
||||||
|
import { Picture } from "astro:assets";
|
||||||
|
import ChoiceList from "@/components/ChoiceList.astro";
|
||||||
|
import eraseConfirmation from "@/assets/imgs/Fedora/FedoraMediaWriter/EraseConfirmation.png";
|
||||||
|
|
||||||
|
<div class="flex justify-center">
|
||||||
|
<Picture
|
||||||
|
src={eraseConfirmation}
|
||||||
|
formats={["avif"]}
|
||||||
|
alt="Fedora Media Writer's Erase Confirmation dialog"
|
||||||
|
class="h-48 w-auto"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
**The entire device that you have selected will be wiped.** Click "Write" if
|
||||||
|
you have absolutely made sure that the selected device does not have important
|
||||||
|
data on it. This action is **irreversible.**
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
---
|
||||||
|
title: Wait
|
||||||
|
description: Wait while Fedora Media Writer does its thing.
|
||||||
|
continueTo: distro/fedora/plasma/5/
|
||||||
|
---
|
||||||
|
|
||||||
|
import { Picture } from "astro:assets";
|
||||||
|
import writing from "@/assets/imgs/Fedora/FedoraMediaWriter/Writing.png";
|
||||||
|
|
||||||
|
<div class="flex justify-center">
|
||||||
|
<Picture
|
||||||
|
src={writing}
|
||||||
|
formats={["avif"]}
|
||||||
|
alt="Fedora Media Writer's Writing page"
|
||||||
|
class="h-72 w-auto"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
Now, wait while Fedora Media Writer is downloading and writing to your USB
|
||||||
|
flash drive. You can do something else while it does its thing.
|
||||||
|
|
||||||
|
_Yes, The screenshot above is reused from the Workstation guide._
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
---
|
||||||
|
title: Finished
|
||||||
|
description: Finished! Get ready to install.
|
||||||
|
continueTo: distro/fedora/plasma/install/0/
|
||||||
|
---
|
||||||
|
|
||||||
|
import { Picture } from "astro:assets";
|
||||||
|
import finished from "@/assets/imgs/Fedora/FedoraMediaWriter/Finished.png";
|
||||||
|
|
||||||
|
<div class="flex justify-center">
|
||||||
|
<Picture
|
||||||
|
src={finished}
|
||||||
|
formats={["avif"]}
|
||||||
|
alt="Fedora Media Writer's Finished page"
|
||||||
|
class="h-72 w-auto"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
Done! Next, We'll start the real installation process.
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
title: Installation
|
||||||
|
description: The steps of installing Fedora Linux
|
||||||
|
continueTo: distro/fedora/plasma/install/1/
|
||||||
|
---
|
||||||
|
|
||||||
|
import QRCode from "@/components/QRCode.astro";
|
||||||
|
|
||||||
|
The steps after this will require you to restart the machine you're going to
|
||||||
|
install Linux on. If that is the machine you're viewing this guide on, You
|
||||||
|
should likely switch to a phone or other devices.
|
||||||
|
|
||||||
|
<div class="flex justify-center">
|
||||||
|
<QRCode msg="/en/distro/fedora/plasma/install/0/" width="164" />
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
title: Restart
|
||||||
|
description: Restarting your machine to boot from the USB flash drive
|
||||||
|
aliasOf: common/boot/bootmenukey
|
||||||
|
continueTo: distro/fedora/plasma/install/2/
|
||||||
|
---
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
title: Boot Menu
|
||||||
|
description: Choose your USB flash drive
|
||||||
|
aliasOf: common/boot/bootmenuselect
|
||||||
|
continueTo: distro/fedora/plasma/install/3/
|
||||||
|
---
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
---
|
||||||
|
title: Boot Option Restoration
|
||||||
|
continueTo: distro/fedora/plasma/install/4/
|
||||||
|
---
|
||||||
|
|
||||||
|
import { Picture } from "astro:assets";
|
||||||
|
import bootOption from "@/assets/imgs/Fedora/Boot/BootOptionRestoration_Cropped.png";
|
||||||
|
|
||||||
|
<div class="relative">
|
||||||
|
<Picture
|
||||||
|
src={bootOption}
|
||||||
|
formats={["avif"]}
|
||||||
|
alt="A photo of the boot option menu"
|
||||||
|
/>
|
||||||
|
<div class="absolute bottom-1/4 max-w-3/4 left-1/8 translate-y-3/8 bg-black/30 rounded p-4 text-white">
|
||||||
|
You _may_ see this screen if you have secure boot enabled, Press any key on
|
||||||
|
your keyboard to stop your system from restarting.
|
||||||
|
|
||||||
|
You can ignore this step (and the next) if you do not face this screen.
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
---
|
||||||
|
title: Continue Boot
|
||||||
|
continueTo: distro/fedora/plasma/install/5/
|
||||||
|
---
|
||||||
|
|
||||||
|
import { Picture } from "astro:assets";
|
||||||
|
import continueBoot from "@/assets/imgs/Fedora/Boot/ContinueBootOption_Cropped.png";
|
||||||
|
|
||||||
|
<div class="relative">
|
||||||
|
<Picture
|
||||||
|
src={continueBoot}
|
||||||
|
formats={["avif"]}
|
||||||
|
alt="A photo of the boot option menu"
|
||||||
|
/>
|
||||||
|
<div class="absolute bottom-1/4 max-w-3/4 left-1/8 translate-y-1/2 bg-black/30 text-white rounded p-4">
|
||||||
|
After that, press the arrow down key to select "Continue boot" and then
|
||||||
|
press Enter.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
title: GRUB Menu
|
||||||
|
description: Entering Fedora Linux
|
||||||
|
continueTo: distro/fedora/plasma/install/6/
|
||||||
|
---
|
||||||
|
|
||||||
|
import { Picture } from "astro:assets";
|
||||||
|
import continueBoot from "@/assets/imgs/Fedora/Plasma/Install/GRUB_Cropped.png";
|
||||||
|
|
||||||
|
<div class="relative">
|
||||||
|
<Picture
|
||||||
|
src={continueBoot}
|
||||||
|
formats={["avif"]}
|
||||||
|
alt="A photo of the boot loader, showing a list with 3 items"
|
||||||
|
/>
|
||||||
|
<div class="absolute top-1/2 w-3/4 left-1/8 -translate-y-1/2 text-white">
|
||||||
|
You can simply press Enter to continue. However, If your machine is
|
||||||
|
slow, You could skip the test by pressing the arrow up key and Enter to
|
||||||
|
directly enter the desktop.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
title: Integrity Check
|
||||||
|
continueTo: distro/fedora/plasma/install/7/
|
||||||
|
---
|
||||||
|
|
||||||
|
import { Picture } from "astro:assets";
|
||||||
|
import check from "@/assets/imgs/Fedora/Install/Check_Cropped.png";
|
||||||
|
|
||||||
|
<Picture
|
||||||
|
src={check}
|
||||||
|
formats={["avif"]}
|
||||||
|
alt="A photo of a running integrity check"
|
||||||
|
/>
|
||||||
|
|
||||||
|
If you didn't skip the test, You will see this screen.
|
||||||
|
Simply wait for it to complete and you'll go right into
|
||||||
|
the desktop.
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
title: Welcome
|
||||||
|
continueTo: distro/fedora/plasma/install/8/
|
||||||
|
---
|
||||||
|
|
||||||
|
import { Picture } from "astro:assets";
|
||||||
|
import ChoiceList from "@/components/ChoiceList.astro";
|
||||||
|
import overview from "@/assets/imgs/Fedora/Plasma/Install/Welcome.png";
|
||||||
|
|
||||||
|
<Picture
|
||||||
|
src={overview}
|
||||||
|
formats={["avif"]}
|
||||||
|
alt="The desktop view, with a Welcome window"
|
||||||
|
width="1280"
|
||||||
|
/>
|
||||||
|
|
||||||
|
Welcome to the desktop! You can optionally explore the desktop first, or
|
||||||
|
directly click the big "Install to Hard Drive" button
|
||||||
@@ -16,7 +16,7 @@ import writeOptions from "@/assets/imgs/Fedora/FedoraMediaWriter/WriteOptions.pn
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
Select the latest version available (as of writing, is version 42) and make
|
Select the latest version available (as of writing, is version 43) and make
|
||||||
sure you're choosing the right device in the USB Drive dropdown.
|
sure you're choosing the right device in the USB Drive dropdown.
|
||||||
|
|
||||||
Optionally, check "Delete download after writing" if you'd like to save space
|
Optionally, check "Delete download after writing" if you'd like to save space
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ title: เลือกรสชาติที่คุณชอบ
|
|||||||
import { Picture } from "astro:assets";
|
import { Picture } from "astro:assets";
|
||||||
import ChoiceList from "@/components/ChoiceList.astro";
|
import ChoiceList from "@/components/ChoiceList.astro";
|
||||||
import fedoraWorkstation from "@/assets/imgs/Fedora/fedora42_workstation.png";
|
import fedoraWorkstation from "@/assets/imgs/Fedora/fedora42_workstation.png";
|
||||||
import fedoraPlasma from "@/assets/imgs/Fedora/fedora42_kdeplasma.png";
|
import fedoraPlasma from "@/assets/imgs/Fedora/fedora43_kdeplasma.png";
|
||||||
|
|
||||||
เลือกสภาพแวดล้อมเดสก์ท็อปของคุณ เลือกอะไรก็ได้จากหน้าตาของมัน KDE Plasma
|
เลือกสภาพแวดล้อมเดสก์ท็อปของคุณ เลือกอะไรก็ได้จากหน้าตาของมัน KDE Plasma
|
||||||
(รูปด้านขวา) อาจมีการทำงานที่ผู้ใช้ Windows จะคุ้นชินมากกว่า
|
(รูปด้านขวา) อาจมีการทำงานที่ผู้ใช้ Windows จะคุ้นชินมากกว่า
|
||||||
@@ -28,7 +28,7 @@ import fedoraPlasma from "@/assets/imgs/Fedora/fedora42_kdeplasma.png";
|
|||||||
src={fedoraPlasma}
|
src={fedoraPlasma}
|
||||||
formats={["avif"]}
|
formats={["avif"]}
|
||||||
width="1280"
|
width="1280"
|
||||||
alt="Fedora KDE Plasma Desktop 42"
|
alt="Fedora KDE Plasma Desktop 43"
|
||||||
/>
|
/>
|
||||||
<figcaption>Fedora KDE Plasma Desktop</figcaption>
|
<figcaption>Fedora KDE Plasma Desktop</figcaption>
|
||||||
</figure>
|
</figure>
|
||||||
|
|||||||
@@ -4,13 +4,13 @@ title: Fedora KDE Plasma Desktop
|
|||||||
|
|
||||||
import { Picture } from "astro:assets";
|
import { Picture } from "astro:assets";
|
||||||
import ChoiceList from "@/components/ChoiceList.astro";
|
import ChoiceList from "@/components/ChoiceList.astro";
|
||||||
import fedoraPlasma from "@/assets/imgs/Fedora/fedora42_kdeplasma.png";
|
import fedoraPlasma from "@/assets/imgs/Fedora/fedora43_kdeplasma.png";
|
||||||
|
|
||||||
<Picture
|
<Picture
|
||||||
src={fedoraPlasma}
|
src={fedoraPlasma}
|
||||||
formats={["avif"]}
|
formats={["avif"]}
|
||||||
width="1280"
|
width="1280"
|
||||||
alt="Fedora KDE Plasma Desktop 42"
|
alt="Fedora KDE Plasma Desktop 43"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<ChoiceList>
|
<ChoiceList>
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import writeOptions from "@/assets/imgs/Fedora/FedoraMediaWriter/WriteOptions.pn
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
เลือกเวอร์ชันล่าสุด (ณ เวลาที่เขียนคือ 42) และทำให้แน่ใจว่าเลือกแฟลชไดรฟ์ถูก
|
เลือกเวอร์ชันล่าสุด (ณ เวลาที่เขียนคือ 43) และทำให้แน่ใจว่าเลือกแฟลชไดรฟ์ถูก
|
||||||
|
|
||||||
คลิก "Delete download after writing" ถ้าอยากลบไฟล์ระบบหลังโปรแกรม
|
คลิก "Delete download after writing" ถ้าอยากลบไฟล์ระบบหลังโปรแกรม
|
||||||
ทำการฟอร์แมตไดรฟ์เสร็จ
|
ทำการฟอร์แมตไดรฟ์เสร็จ
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ action = "continue"
|
|||||||
[[dialogs.choices]]
|
[[dialogs.choices]]
|
||||||
text = "Just recommend me one"
|
text = "Just recommend me one"
|
||||||
action = "jump"
|
action = "jump"
|
||||||
data = 3
|
data = 5
|
||||||
|
|
||||||
[[dialogs]]
|
[[dialogs]]
|
||||||
title = "In the sea of distributions"
|
title = "In the sea of distributions"
|
||||||
@@ -70,3 +70,26 @@ content = ""
|
|||||||
text = "Continue"
|
text = "Continue"
|
||||||
action = "link"
|
action = "link"
|
||||||
data = "https://archlinux.org/"
|
data = "https://archlinux.org/"
|
||||||
|
|
||||||
|
[[dialogs]]
|
||||||
|
title = "What matters most to you?"
|
||||||
|
content = "Would you prefer a modern interface with up-to-date software or having a rock-solid system?"
|
||||||
|
|
||||||
|
[[dialogs.choices]]
|
||||||
|
text = "Modernness"
|
||||||
|
action = "jump"
|
||||||
|
data = 3
|
||||||
|
|
||||||
|
[[dialogs.choices]]
|
||||||
|
text = "Absolute stability"
|
||||||
|
action = "jump"
|
||||||
|
data = 6
|
||||||
|
|
||||||
|
[[dialogs]]
|
||||||
|
title = "Linux Mint"
|
||||||
|
content = "A stable and user-friendly Linux distribution."
|
||||||
|
|
||||||
|
[[dialogs.choices]]
|
||||||
|
text = "Continue"
|
||||||
|
action = "link"
|
||||||
|
data = "https://linuxmint.com/"
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ action = "continue"
|
|||||||
[[dialogs.choices]]
|
[[dialogs.choices]]
|
||||||
text = "แนะนำมาอย่างเดียวก็พอ"
|
text = "แนะนำมาอย่างเดียวก็พอ"
|
||||||
action = "jump"
|
action = "jump"
|
||||||
data = 3
|
data = 5
|
||||||
|
|
||||||
[[dialogs]]
|
[[dialogs]]
|
||||||
title = "ในทะเลแห่งการแจกจ่าย Linux"
|
title = "ในทะเลแห่งการแจกจ่าย Linux"
|
||||||
@@ -70,3 +70,26 @@ content = ""
|
|||||||
text = "ดำเนินการต่อ"
|
text = "ดำเนินการต่อ"
|
||||||
action = "link"
|
action = "link"
|
||||||
data = "https://archlinux.org/"
|
data = "https://archlinux.org/"
|
||||||
|
|
||||||
|
[[dialogs]]
|
||||||
|
title = "อะไรสำคัญสำหรับคุณมากที่สุด"
|
||||||
|
content = "คุณเลือกอะไรระหว่างหน้าตาที่ทันสมัยที่มาพร้อมกับซอฟต์แวร์ล่าสุดหรือระบบที่สเถียรมากที่สุด"
|
||||||
|
|
||||||
|
[[dialogs.choices]]
|
||||||
|
text = "ความทันสมัย"
|
||||||
|
action = "jump"
|
||||||
|
data = 3
|
||||||
|
|
||||||
|
[[dialogs.choices]]
|
||||||
|
text = "สเถียรภาพสูงสุด"
|
||||||
|
action = "jump"
|
||||||
|
data = 6
|
||||||
|
|
||||||
|
[[dialogs]]
|
||||||
|
title = "Linux Mint"
|
||||||
|
content = "การแจกจ่าย Linux ที่เสถียรและใช้งานง่าย"
|
||||||
|
|
||||||
|
[[dialogs.choices]]
|
||||||
|
text = "ดำเนินการต่อ"
|
||||||
|
action = "link"
|
||||||
|
data = "https://linuxmint.com/"
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ const site = ORIGIN ?? Astro.url.host;
|
|||||||
<meta property="og:image" content={banner.src} />
|
<meta property="og:image" content={banner.src} />
|
||||||
|
|
||||||
<!-- X (Twitter) -->
|
<!-- X (Twitter) -->
|
||||||
<meta property="twitter:card" content="summary" />
|
<meta property="twitter:card" content="summary_large_image" />
|
||||||
<meta property="twitter:url" content={site} />
|
<meta property="twitter:url" content={site} />
|
||||||
<meta property="twitter:title" content={shownTitle} />
|
<meta property="twitter:title" content={shownTitle} />
|
||||||
<meta property="twitter:description" content={shownDescription} />
|
<meta property="twitter:description" content={shownDescription} />
|
||||||
|
|||||||
@@ -1,8 +1,15 @@
|
|||||||
---
|
---
|
||||||
import { ClientRouter } from "astro:transitions";
|
import { ClientRouter } from "astro:transitions";
|
||||||
|
import { ORIGIN } from "astro:env/server";
|
||||||
|
import banner from "@/assets/imgs/site/banner_1280x720.png";
|
||||||
import "../styles/global.css";
|
import "../styles/global.css";
|
||||||
|
|
||||||
const { title, description } = Astro.props;
|
const { title, description } = Astro.props;
|
||||||
|
const shownTitle = title ?? "Move to Linux";
|
||||||
|
const shownDescription =
|
||||||
|
description ??
|
||||||
|
"A guide on moving to Linux. Installation, Usage, and Applications.";
|
||||||
|
const site = ORIGIN ?? Astro.url.host;
|
||||||
---
|
---
|
||||||
|
|
||||||
<html lang="en" transition:name="root" transition:animate="none">
|
<html lang="en" transition:name="root" transition:animate="none">
|
||||||
@@ -11,9 +18,25 @@ const { title, description } = Astro.props;
|
|||||||
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
||||||
<meta name="viewport" content="width=device-width" />
|
<meta name="viewport" content="width=device-width" />
|
||||||
<meta name="generator" content={Astro.generator} />
|
<meta name="generator" content={Astro.generator} />
|
||||||
{description ? <meta name="description" content={description} /> : null}
|
|
||||||
|
|
||||||
<title>{title ?? "Move to Linux"}</title>
|
<!-- Primary Meta Tags -->
|
||||||
|
<title>{shownTitle}</title>
|
||||||
|
<meta name="title" content={shownTitle} />
|
||||||
|
<meta name="description" content={shownDescription} />
|
||||||
|
|
||||||
|
<!-- Open Graph / Facebook -->
|
||||||
|
<meta property="og:type" content="website" />
|
||||||
|
<meta property="og:url" content={site} />
|
||||||
|
<meta property="og:title" content={shownTitle} />
|
||||||
|
<meta property="og:description" content={shownDescription} />
|
||||||
|
<meta property="og:image" content={banner.src} />
|
||||||
|
|
||||||
|
<!-- X (Twitter) -->
|
||||||
|
<meta property="twitter:card" content="summary_large_image" />
|
||||||
|
<meta property="twitter:url" content={site} />
|
||||||
|
<meta property="twitter:title" content={shownTitle} />
|
||||||
|
<meta property="twitter:description" content={shownDescription} />
|
||||||
|
<meta property="twitter:image" content={banner.src} />
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<slot />
|
<slot />
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
import PocketBase from "pocketbase";
|
|
||||||
|
|
||||||
export const pb = new PocketBase("http://127.0.0.1:8090");
|
|
||||||
|
|
||||||
export const apps = pb.collection("apps");
|
|
||||||
|
|
||||||
export const appDetails = pb.collection("app_details");
|
|
||||||
@@ -64,9 +64,15 @@ function visualizeTree(tree: Tree, key: string | null, prefix: string): string {
|
|||||||
const value = tree[key];
|
const value = tree[key];
|
||||||
|
|
||||||
if (typeof value === "string") {
|
if (typeof value === "string") {
|
||||||
children.push(`<li>
|
if (prefix === "distroquiz/") {
|
||||||
<a href="${`/${lang}/distro/${prefix}${key}`}">${value}</a>
|
children.push(`<li>
|
||||||
</li>`);
|
<a href="${`/${lang}/${prefix}${key}`}">${value}</a>
|
||||||
|
</li>`);
|
||||||
|
} else {
|
||||||
|
children.push(`<li>
|
||||||
|
<a href="${`/${lang}/distro/${prefix}${key}`}">${value}</a>
|
||||||
|
</li>`);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
subcategories.push(visualizeTree(value, key, `${prefix}${key}/`));
|
subcategories.push(visualizeTree(value, key, `${prefix}${key}/`));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ const startLink = getRelativeLocaleUrl("en", "start");
|
|||||||
class="min-h-[60vh] flex justify-center items-center flex-col gap-2 bg-amber-50 dark:bg-amber-950"
|
class="min-h-[60vh] flex justify-center items-center flex-col gap-2 bg-amber-50 dark:bg-amber-950"
|
||||||
>
|
>
|
||||||
<h1
|
<h1
|
||||||
class="text-5xl font-bold bg-gradient-to-r from-amber-700 to-amber-900 dark:from-amber-400 dark:to-amber-600 bg-clip-text text-transparent"
|
class="text-5xl font-bold bg-linear-to-r from-amber-700 to-amber-900 dark:from-amber-400 dark:to-amber-600 bg-clip-text text-transparent"
|
||||||
>
|
>
|
||||||
Move to Linux
|
Move to Linux
|
||||||
</h1>
|
</h1>
|
||||||
@@ -76,7 +76,9 @@ const startLink = getRelativeLocaleUrl("en", "start");
|
|||||||
<p class="max-w-[50vw] text-center">
|
<p class="max-w-[50vw] text-center">
|
||||||
This site is not perfect. If you found any outdated, invalid, or
|
This site is not perfect. If you found any outdated, invalid, or
|
||||||
information which can be possibly misunderstood, send an email
|
information which can be possibly misunderstood, send an email
|
||||||
to <code>linesofcodes at dailitation dot xyz</code> (<a
|
to <a href="mailto:linesofcodes@dailitation.xyz"
|
||||||
|
>linesofcodes@dailitation.xyz</a
|
||||||
|
> (<a
|
||||||
href="https://keys.openpgp.org/vks/v1/by-fingerprint/8A487B532BEF7B324339AC1CFBE9E5E346F3DDE8"
|
href="https://keys.openpgp.org/vks/v1/by-fingerprint/8A487B532BEF7B324339AC1CFBE9E5E346F3DDE8"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noopener">PGP Keys Available</a
|
rel="noopener">PGP Keys Available</a
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"$schema": "node_modules/wrangler/config-schema.json",
|
"$schema": "node_modules/wrangler/config-schema.json",
|
||||||
"name": "movetolinux",
|
"name": "movetolinux",
|
||||||
// Update to today's date
|
// Update to today's date
|
||||||
"compatibility_date": "2025-09-15",
|
"compatibility_date": "2026-01-29",
|
||||||
"assets": {
|
"assets": {
|
||||||
"directory": "./dist"
|
"directory": "./dist"
|
||||||
}
|
}
|
||||||
|
|||||||