---
import AppList from "@/components/AppList";
import BasicLayout from "@/layouts/BasicLayout.astro";
---

<BasicLayout title="Linux Applications">
	<main class="my-8 mx-16">
		<section id="appList">
			<h1>I need to do ..., Does Linux have an app for it?</h1>
			<p>
				Below is a short list of common tasks and native Linux apps that
				can be used for it.
			</p>
			<div class="mb-4">
				<span class="text-amber-600 dark:text-yellow-400">Warning:</span
				> This is not and can never be a 100% complete list.
			</div>
			<AppList lang="en" client:load />
		</section>
		<section id="compatQuestions" class="mt-4">
			<h1>Software Compatibility</h1>
			<p>A short section about software compatibility in Linux.</p>
			<details>
				<summary
					>Does web applications work? (Canva, Google Docs, Notion,
					etc.)</summary
				>
				<p>
					These apps are the least concerning and if you use these
					apps, you'll do just fine.
				</p>
			</details>
			<details>
				<summary>Does Adobe apps work?</summary>
				<p>
					It is known to not work very well, however, you can try if
					you wish.
				</p>
			</details>
			<details>
				<summary
					>Can I run Windows apps/games that aren't native on Linux?</summary
				>
				<p>
					It is possible, however, not everything will work perfectly.
					See the
					<a href="https://appdb.winehq.org/"
						>Wine Application Database</a
					> for regular applications and
					<a href="https://www.protondb.com/">ProtonDB</a> for Steam games.
				</p>
			</details>
		</section>
		<section id="buzzwords" class="mt-4">
			<h1>Buzzwords Explained</h1>
			<p>
				Here are some words that you will encounter in the (Linux)
				software world. You don't have to remember all of this, but you
				can refer back to this site if you want a short definition.
			</p>
			<dl>
				<dt>package</dt>
				<dd>
					Imagine a box which contains software files. You could
					install a package, Which would mean copying the files inside
					it onto your system.
				</dd>
				<dt>package manager</dt>
				<dd>
					A software that helps you manage packages. It is specific to
					each Linux distribution and thus each distribution may have
					different package formats.
				</dd>
				<dt>system package</dt>
				<dd>
					A package that is installed on your system. Also commonly
					referred to as one of the ways to distribute software on
					Linux, in that context, the word would mean creating a
					package for a system.
				</dd>
				<dt>package repository</dt>
				<dd>
					If a package is a box, then a package repository is a
					warehouse.
				</dd>
				<dt>binary</dt>
				<dd>
					A file that is already compiled and ready to run. Also known
					as an "executable".
				</dd>
				<dt>AppImage</dt>
				<dd>
					A software distribution format. It is a single file that you
					can download and run on any Linux distribution with minimal
					reliance on the system. Specifically, it only requires FUSE
					(Filesystem in Userspace) to be installed, and that's it.
					The file extension of this format is <code>.AppImage</code>
				</dd>
				<dt>Flatpak</dt>
				<dd>
					A software distribution format. When an application is
					packaged this way, the application will be ran inside a
					sandbox to ensure security, and it will also have minimal
					reliance on system packages. This is becoming the most
					popular way to distribute software as it is distro-neutral.
					The most popular Flatpak repository (and thus is recognized
					as the central repository) is <a
						href="https://flathub.org/"
						target="_blank"
						rel="noopener">Flathub</a
					>.
				</dd>
				<dt>Wine</dt>
				<dd>
					Wine is originally an acronym for "Wine Is Not an Emulator",
					and it is a compatibility layer (<strong>not</strong> an emulator)
					capable of running Windows applications. A simple way of explaining
					what it does would be that it translates Windows language into
					Linux language on-the-fly, minimizing the performance overhead
					other methods such as virtual machines and emulators may introduce.
					(Just for correctness, Wine is not limited to Linux, it can also
					work on other Unix-like systems such as FreeBSD and macOS)
				</dd>
				<dt>Proton</dt>
				<dd>
					A compatibility layer built on Wine by Valve, made for
					running games.
				</dd>
				<dt>DXVK</dt>
				<dd>A software which translates DirectX into Vulkan.</dd>
			</dl>
		</section>
	</main>
</BasicLayout>

<style>
	@reference "@/styles/global.css";

	h1 {
		@apply text-4xl font-bold mb-4;
	}

	p {
		@apply my-2;
	}
</style>
