## 1. Project Overview & Quickstart (PrismLauncher/LICENSE)

# LICENSE

Open-source repository PrismLauncher/LICENSE

### Repository Details
- **Repository:** [PrismLauncher/LICENSE](https://github.com/PrismLauncher/LICENSE)
- **Primary Language:** Code

*Note: High-volume repository documentation is actively indexed and synchronized by YakaAI.*

## 2. Official Technical Reference & Guides (PrismLauncher/PrismLauncher.github.io)

## File: README.md

# prismlauncher.org

## Development Environment

### Nix devShell

A devShell is provided in `shell.nix`. It is also exposed in the flake in the
root of this repository. You may use [`nix-direnv`][nix-direnv] by copying
`.envrc.example` to `.envrc`.

### Manual

Install [pnpm][pnpm-install].

clone repository:

```sh
git clone https://github.com/PrismLauncher/prismlauncher.org.git
```

run local build:

```sh
pnpm install
pnpm run dev
```

[pnpm-install]: https://pnpm.io/installation
[nix-direnv]: https://github.com/nix-community/nix-direnv

---

## File: src/content/docs/wiki/development/build-instructions.mdx

---
title: "Build Instructions"
---

import { Tabs, TabItem } from "@astrojs/starlight/components";

## Compiling manually

### Prerequisites

- A recent-ish operating system release
  - Windows 10 (1809 or later. Older versions may be supported, but aren't tested)
  - macOS >= 12
  - Ubuntu >= 22.04 (or equivalent)
- A C++ compiler supporting at least C++17.
  - This includes GCC >= 8, Clang >= 5, and MSVC >= 19.15
- Java JDK \<= 17
- cmake >= 3.22
- ninja
- extra-cmake-modules
- Qt 6.0 or later, with the following addons/plugins:
  - Qt NetworkAuth
  - Qt Image Formats
  - Qt Svg
- cmark
- gamemode (required at build time, optional at runtime. Only on Linux)
- `glxinfo` (required at runtime, only on Linux)
- libarchive
- libGL headers (only on Linux)
- libqrencode
- pciutils (required at runtime, only on Linux)
- scdoc (optional at build time, used to generate manpages)
- tomlplusplus
- vulkan-headers
- zlib

<Tabs syncKey="buildInstructions">
<TabItem label="Windows (MSVC)">

:::note
`winget` is installed by default on newer versions of Windows 11
:::

You should first install [winget](https://learn.microsoft.com/en-us/windows/package-manager/winget/), a package manager for Windows.

Once `winget` is available, install the MSVC toolchain with:

```console
winget install --source winget --exact --id Microsoft.VisualStudio.2022.BuildTools --override '--add Microsoft.VisualStudio.Workload.VCTools;includeRecommended'
```

:::caution
The installation of `vcpkg` bundled with VS 2026 is currently broken, and is thus not recommended. You can read more about this [here](https://developercommunity.visualstudio.com/t/Bundled-vcpkg-is-unusable/10998815).

As a workaround, you can `git clone` the repository at `https://github.com/Microsoft/vcpkg` and set `VCPKG_ROOT` to its location.

**This does not affect VS 2022!**
:::

Install JDK 17 with:

```console
winget install --source winget --exact --id EclipseAdoptium.Temurin.17.JDK
```

We will also be using Git:

```console
winget install --source winget --exact --id Git.Git
```

Qt can then be installed with [`aqt`](https://aqtinstall.readthedocs.io/en/latest/):

```console
winget install --source winget --exact --id miurahr.aqtinstall
aqt install-qt windows desktop 6 win64_msvc2022_64 -m qtimageformats qtnetworkauth
```

</TabItem>
<TabItem label="Windows (MSYS2)">

[MSYS2](https://msys2.org) may be installed with [winget](https://learn.microsoft.com/en-us/windows/package-manager/winget/), or by following the setup guide [here](https://www.msys2.org/#installation):

```console
winget install --exact --id MSYS2.MSYS2 --source winget
```

Install JDK 17 with:

```console
winget install --source winget --exact --id EclipseAdoptium.Temurin.17.JDK
```

We **require** the CLANG(ARM)64 [environment](https://www.msys2.org/docs/environments/). After starting the environment, you may run the following to install all dependencies:

```console
pacman -Syu pactoys git
pacboy -S \
  toolchain:p \
	cmake:p ninja:p \
	extra-cmake-modules:p \
	qt6-base:p qt6-imageformats:p qt6-networkauth:p qt6-svg:p \
	cmark:p \
	libarchive:p \
	qrencode:p \
	tomlplusplus:p \
	vulkan-headers:p \
	zlib:p
```

</TabItem>
<TabItem label="macOS">

The XCode toolchain can be installed with:

```
xcode-select --install
```

Qt and other dependencies can then be installed with the following [Homebrew](https://brew.sh/) command:

```console
brew install cmake ninja extra-cmake-modules openjdk@17 vcpkg qt
git clone https://github.com/Microsoft/vcpkg ~/vcpkg
export VCPKG_ROOT="$HOME/vcpkg"
```

</TabItem>
<TabItem label="Linux (Debian)">

```console
sudo apt install \
  build-essential \
  cmake ninja-build extra-cmake-modules pkg-config scdoc \
  qt6-base-dev qt6-image-formats-plugins qt6-networkauth-dev qt6-svg-dev \
	cmark gamemode-dev libarchive-dev libcmark-dev libgl1-mesa-dev libqrencode-dev libtomlplusplus-dev libvulkan-dev zlib1g-dev \
```

To install JDK 17 on Debian:

```console
sudo apt install wget apt-transport-https gpg
wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/adoptium.gpg > /dev/null
echo "deb https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | sudo tee /etc/apt/sources.list.d/adoptium.list
sudo apt update && sudo apt install temurin-17-jdk
```

While on Ubuntu (or derivatives) you can just:

```console
sudo apt install openjdk-17-jdk
```

</TabItem>
<TabItem label="Linux (Arch)">

```console
sudo pacman -S \
  base-devel \
  cmake ninja extra-cmake-modules pkg-config scdoc \
  qt6-base qt6-imageformats qt6-networkauth qt6-svg \
  cmark gamemode libarchive mesa qrencode tomlplusplus vulkan-headers zlib \
  jdk17-openjdk
```

</TabItem>
</Tabs>

### Getting the source

We use [Git](https://git-scm.com/) for our version control. The command below will clone the repository, and fetch all submodules that come with it

```console
git clone --recursive https://github.com/PrismLauncher/PrismLauncher.git
cd PrismLauncher
```

**The rest of the documentation assumes you have already cloned the repository.**

### Building the source

#### Configuration

<Tabs syncKey="buildInstructions">
<TabItem label="Windows (MSVC)">

Open "x64 Native Tools PowerShell" in Windows Terminal

```powershell
cmake --preset windows_msvc -D CMAKE_PREFIX_PATH="C:\path\to\Qt"
```

</TabItem>
<TabItem label="Windows (MSYS2)">

```bash
cmake --preset windows_mingw
```

</TabItem>
<TabItem label="macOS">

```bash
cmake --preset macos \
  -D CMAKE_PREFIX_PATH="/opt/homebrew/opt/qt"
  -D CMAKE_OSX_DEPLOYMENT_TARGET=12 \
```

</TabItem>
<TabItem label="Linux">

```bash
cmake --preset linux
```

</TabItem>
</Tabs>

#### Compilation

<Tabs syncKey="buildInstructions">
<TabItem label="Windows (MSVC)">

```bash
cmake --build --preset windows_msvc --config Debug
```

</TabItem>
<TabItem label="Windows (MSYS2)">

```bash
cmake --build --preset windows_mingw --config Debug
```

</TabItem>
<TabItem label="macOS">

```bash
cmake --build --preset macos --config Debug
```

</TabItem>
<TabItem label="Linux">

```bash
cmake --build --preset linux --config Debug
```

</TabItem>
</Tabs>

#### Installation

<Tabs syncKey="buildInstructions">
<TabItem label="Windows (MSVC)">

```powershell
cmake --install build --config Debug
cmake --install build --config Debug --component portable # If you want to install a portable version
```

</TabItem>
<TabItem label="Windows (MSYS2)">

```bash
cmake --install build --config Debug
cmake --install build --config Debug --component portable # If you want to install a portable version
```

</TabItem>
<TabItem label="macOS">

```bash
cmake --install build --config Debug
```

</TabItem>
<TabItem label="Linux">

```bash
cmake --install build --config Debug
cmake --install build --config Debug --component portable # If you want to install a portable version
DESTDIR="$pkgdir" cmake --install build --config Debug # If you're installing for a package
```

</TabItem>
</Tabs>

## Building with Nix (Linux and macOS)

Nix is a tool for handling reproducible builds across multiple platforms.

After [installing Nix](https://nix.dev/install-nix) and checking out the repository, you can run the following command to build a debug package:

```bash
nix build --print-build-logs '.#prismlauncher-debug'
```

You can also enter a development shell with all of the tools required to build manually:

```bash
nix-shell
cmake --preset linux_debug
cmake --build build
cmake --install build
```

## Building a Flatpak (Linux)

Flatpaks allow for you to quickly build Prism and run it on any distribution

Make sure Flathub is [setup](https://flathub.org/setup).

```bash
# Install Flatpak build tools
flatpak install flathub org.flatpak.Builder

# Clone the source repository
git clone --recursive https://github.com/prismlauncher/PrismLauncher

# Enter the Flatpak directory
cd PrismLauncher/flatpak

# Run the build
flatpak run org.flatpak.Builder \
  --user \
  --install \ # Comment if you only want to build, not install
  --install-deps-from=flathub \
  --ccache \
  --repo=repo \
  builddir \
  org.prismlauncher.PrismLauncher.yml
```

---

## File: src/content/docs/wiki/development/development-builds.md

---
title: Development Builds
---

:::caution
Please understand that **these builds are not intended for most users**. There may be bugs, and other instabilities. You have been warned.
:::

There are per-commit development builds [available here](https://github.com/PrismLauncher/PrismLauncher/actions). Debug information is present within the binaries, making their file sizes larger than otherwise normal.
If you don't have a GitHub account, you can [download them using nightly.link](/nightly).

Non-portable binaries are currently available for Windows as a system install, macOS .app, Linux tarball, and AppImage.

Portable dev-builds are also provided; for both Windows and Linux.

For **Arch**, **Debian/Ubuntu**, **Fedora**, **OpenSUSE**, **Gentoo** and **Windows**, respectively, you can use these packages for the latest development versions:

[](https://aur.archlinux.org/packages/prismlauncher-git/) [](https://pacstall.dev/packages/prismlauncher-git) [](https://copr.fedorainfracloud.org/coprs/g3tchoo/prismlauncher/) [](https://build.opensuse.org/project/show/home:getchoo) [](https://packages.gentoo.org/packages/games-action/prismlauncher) [](https://github.com/ScoopInstaller/Versions/blob/master/bucket/prismlauncher-git.json)

---

## File: src/content/docs/wiki/development/ides-and-tooling.md

---
title: IDEs and Tooling
---

There are a few tools that you can set up to make your development workflow smoother. In addition, some IDEs also require a bit more setup to work with Qt and CMake.

## sccache

[`sccache`](https://github.com/mozilla/sccache) is a compiler cache. It speeds up recompilation by caching previous compilations and detecting when the same compilation is being done again.

You can [find out how to download it here](https://github.com/mozilla/sccache?tab=readme-ov-file#installation). After setting up, builds will be incremental, and the builds after the first one will be much faster.

## VS Code

To set up VS Code, you can download [the C/C++ extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools), since it provides IntelliSense auto complete, linting, formatting, and various other features.

Then, you need to set up the configuration. Go into the command palette and open up C/C++: Edit Configurations (UI). There, add a new configuration for PrismLauncher.

1. Add the path to your Qt `include` folder to `includePath`
2. Add `-L/{path to your Qt installation}/lib` to `compilerArgs`
3. Set `compileCommands` to `${workspaceFolder}/build/compile_commands.json`
4. Set `cppStandard` to `c++17` or higher.

For step 3 to work, you also have to reconfigure CMake to generate a `compile_commands.json` file. To do this, add `-DCMAKE_EXPORT_COMPILE_COMMANDS=ON` to the end of your CMake configuration command and run it again. You should see a file at `build/compile_commands.json`.

Now the VS Code setup should be fully working. To test, open up some files and see if any error squiggles appear. If there are none, it's working properly!

Here is an example of what `.vscode/c_cpp_properties.json` looks like on macOS with Qt installed via Homebrew:

```json
{
	"configurations": [
		{
			"name": "Mac (PrismLauncher)",
			"includePath": [
				"${workspaceFolder}/**",
				"/opt/homebrew/opt/qt@6/include/**"
			],
			"defines": [],
			"macFrameworkPath": [
				"/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks"
			],
			"compilerPath": "/usr/bin/clang",
			"compilerArgs": ["-L/opt/homebrew/opt/qt@6/lib"],
			"compileCommands": "${workspaceFolder}/build/compile_commands.json",
			"cStandard": "c17",
			"cppStandard": "c++17",
			"intelliSenseMode": "macos-clang-arm64"
		}
	],
	"version": 4
}
```

## CLion

1. Open CLion
2. Choose `File->Open`
3. Navigate to the source folder
4. Go to settings `Ctrl+Alt+S`
5. Navigate to `Toolchains` in `Build, Execution, Deployment`
   - Set the correct build tools ([see here](https://i.imgur.com/daFAdVe.png))
   - CMake: `cmake` (optional)
   - Make: `make` (optional)
   - C Compiler: `gcc`
   - C++ Compiler: `g++`
   - Debugger: `gdb` (optional)
6. Navigate to `CMake` in `Build, Execution, Deployment`
   - Set `Build directory` to `build`
7. Navigate to `Edit Configurations` ([see here](https://i.imgur.com/fu53nc3.png))
   - Create a new configuration
   - Name: `All`
   - Target: `All targets`
   - Choose the newly added configuration as default

Now you should be able to build and test Prism Launcher with the `Build` and `Run` buttons.

## Qt Creator

1. Open Qt Creator.
2. Choose `File->Open File or Project`.
3. Navigate to the Launcher source folder you cloned and choose CMakeLists.txt.
4. Read the instructions that just popped up about a build location and choose one.
5. You should see "Run CMake" in the window.
   - Make sure that Generator is set to "Unix Generator (Desktop Qt 6.x.x GCC 64bit)".
     - Alternatively this is probably "Unix Generator (Desktop Qt 5.12.x GCC 64bit)"
   - Hit the "Run CMake" button.
   - You'll see warnings, and it might not be clear that it succeeded until you scroll to the bottom of the window.
   - Hit "Finish" if CMake ran successfully.

6. Cross your fingers, and press the "Run" button (bottom left of Qt Creator).
   - If the project builds successfully it will run and the Launcher window will pop up.

---

## File: src/content/docs/wiki/getting-started/catpacks.md

---
title: CatPacks
---

## Installation

The CatPacks folder location is as follows:

- on **Windows:** `%appdata%\PrismLauncher\catpacks`
- on **Mac:** `~/Library/Application Support/PrismLauncher/catpacks`
- on **Linux:** `~/.local/share/PrismLauncher/catpacks`
- on **Flatpak:** `~/.var/app/org.prismlauncher.PrismLauncher/data/PrismLauncher/catpacks`

After you move the CatPack to the mentioned folder restart Prism Launcher, then open the global settings.
In the Launcher section, click the User Interface tab, and under Cat, choose the newly added CatPack.
Click the Close button, and enjoy your CatPack.

## CatPack Types

### 1. Simple CatPack

The most basic CatPack is a simple image(that's all).

### 2. Advanced CatPack

Is a folder that contains a `catpack.json` file and some images.

For example, the structure of a CatPack is as follows:

```text
└── test_catpack
    ├── catpack.json
    ├── christmas.png
    ├── oneDay.png
    ├── maxwell.png
    ├── newyear.png
    └── newyear2.png
```

The `catpack.json` looks as follows:

```json
{
	"name": "My Cute Cat",
	"default": "maxwell.png",
	"variants": [
		{
			"startTime": {
				"day": 12,
				"month": 4
			},
			"endTime": {
				"day": 12,
				"month": 4
			},
			"path": "oneDay.png"
		},
		{
			"startTime": {
				"day": 20,
				"month": 12
			},
			"endTime": {
				"day": 28,
				"month": 12
			},
			"path": "christmas.png"
		},
		{
			"startTime": {
				"day": 30,
				"month": 12
			},
			"endTime": {
				"day": 1,
				"month": 1
			},
			"path": "newyear2.png"
		},
		{
			"startTime": {
				"day": 28,
				"month": 12
			},
			"endTime": {
				"day": 3,
				"month": 1
			},
			"path": "newyear.png"
		}
	]
}
```

Fields description:

- `name` the name of the CatPack
- `default` the path to the default cat
- `variants` a list of the cats that are visible only on specific days/periods.
- `startTime` the day from which the variant is visible (inclusive)
- `endTime` the day until the variant is visible (inclusive)
- `path` the path to the variant

All paths are relative, so you only need to put the name of the image from the CatPack(with extension).

The default cat is the cat displayed in all periods we can't match any variants.

The variant matching is done by looking if today is between `startTime` and `endTime`, if is matched then that variant is displayed.

The order of variants matters as the first variant that matches the period is returned ignoring the rest.

So for the mentioned example, the variants are displayed as follows:

- `oneDay.png` will be visible only on 12 April each year
- `christmas.png` from 20 December until 28 December
- `newyear.png` on 29 December
- `newyear2.png` from 30 December until 1 January
- `newyear.png` from 2 January until 3 January
- `maxwell.png` for the periods that were not mentioned

So an example of order matter is if the `newyear.png` and `newyear2.png` orders would be reversed then `newyear2.png` will never be displayed.

---

## File: src/content/docs/wiki/getting-started/change-themes.md

---
title: Change Themes
sidebar:
  order: 9
---

Themes can help you spice up your launcher appearance.

## Themes Downloads

[](https://github.com/PrismLauncher/Themes)

### Themes

[](https://github.com/PrismLauncher/Themes/releases/latest/download/Amoled-theme.zip)
[](https://github.com/PrismLauncher/Themes/releases/latest/download/BD-Blue-theme.zip)
[](https://github.com/PrismLauncher/Themes/releases/latest/download/Borest-theme.zip)
[](https://github.com/PrismLauncher/Themes/releases/latest/download/Breeze-Dark-theme.zip)
[](https://github.com/PrismLauncher/Themes/releases/latest/download/Cat-theme.zip)
[](https://github.com/PrismLauncher/Themes/releases/latest/download/Catppuccin-Frappe-theme.zip)
[](https://github.com/PrismLauncher/Themes/releases/latest/download/Catppuccin-Latte-theme.zip)
[](https://github.com/PrismLauncher/Themes/releases/latest/download/Catppuccin-Macchiato-theme.zip)
[](https://github.com/PrismLauncher/Themes/releases/latest/download/Catppuccin-Mocha-theme.zip)
[](https://github.com/PrismLauncher/Themes/releases/latest/download/Deep-Dark-theme.zip)
[](https://github.com/PrismLauncher/Themes/releases/latest/download/Dracula-theme.zip)
[](https://github.com/PrismLauncher/Themes/releases/latest/download/Everforest-Dark-Hard-theme.zip)
[](https://github.com/PrismLauncher/Themes/releases/latest/download/Everforest-Medium-theme.zip)
[](https://github.com/PrismLauncher/Themes/releases/latest/download/Fluent-Dark-theme.zip)
[](https://github.com/PrismLauncher/Themes/releases/latest/download/Jvne-theme.zip)
[](https://github.com/PrismLauncher/Themes/releases/latest/download/Kanagawa-theme.zip)
[](https://github.com/PrismLauncher/Themes/releases/latest/download/Mellow-theme.zip)
[](https://github.com/PrismLauncher/Themes/releases/latest/download/Mod.Labyrinth.Dark-theme.zip)
[](https://github.com/PrismLauncher/Themes/releases/latest/download/Mod.Labyrinth.Mixed-theme.zip)
[](https://github.com/PrismLauncher/Themes/releases/latest/download/Mod.Labyrinth.Pale-theme.zip)
[](https://github.com/PrismLauncher/Themes/releases/latest/download/Nord-Polar-Night-theme.zip)
[](https://github.com/PrismLauncher/Themes/releases/latest/download/Nord-Snow-Storm-theme.zip)
[](https://github.com/PrismLauncher/Themes/releases/latest/download/Nord-theme.zip)
[](https://github.com/PrismLauncher/Themes/releases/latest/download/Rangoon-Lightning-theme.zip)
[](https://github.com/PrismLauncher/Themes/releases/latest/download/Scarlett-Pink-theme.zip)
[](https://github.com/PrismLauncher/Themes/releases/latest/download/Solarized-Dark-theme.zip)
[](https://github.com/PrismLauncher/Themes/releases/latest/download/Steam-Classic-theme.zip)
[](https://github.com/PrismLauncher/Themes/releases/latest/download/Tokyo-Night-theme.zip)

### Icon Packs

[](https://github.com/PrismLauncher/Themes/releases/latest/download/Fluent-Dark-icons.zip)
[](https://github.com/PrismLauncher/Themes/releases/latest/download/Twemoji-icons.zip)

## How to install Themes & Icons

Here are the instructions to get your themes & icons up and working.

Make sure you are using Prism Launcher 6.0 or later.

### Installing Themes

- Download a theme above and copy the zip file to your Themes Directory.
  - Open your local Prism Launcher Themes folder:
    - on **any OS:** in Prism, select **Folders** > **Widget Themes**

    - on **Windows:** `%appdata%\PrismLauncher\themes`

    - on **Mac:** `~/Library/Application Support/PrismLauncher/themes`

    - on **Linux:** `~/.local/share/PrismLauncher/themes`

    - on **Flatpak:** `~/.var/app/org.prismlauncher.PrismLauncher/data/PrismLauncher/themes`

- Unzip the newly downloaded theme in the `themes` folder. Make sure the folder structure looks like `.../PrismLauncher/themes/your_theme_name/theme.json`.

- Restart Prism Launcher, then open the global settings. In the Launcher section, click the User Interface tab, and under Widgets (make sure you're changing Widgets and not Icons), choose the newly added theme. Click the Close button, and enjoy your fresh new Prism Launcher.

### Installing Icon Packs

- Download a Icons pack above and copy the zip file to your Prism Launcher Directory
  - Open your local Prism Launcher Directory:
    - on **any OS:** in Prism, select **Folders** > **Icon Theme**

    - on **Windows:** `%appdata%\PrismLauncher`

    - on **Mac:** `~/Library/Application Support/PrismLauncher`

    - on **Linux:** `~/.local/share/PrismLauncher`

    - on **Flatpak:** `~/.var/app/org.prismlauncher.PrismLauncher/data/PrismLauncher`

- Extract the contents of the zip into the `iconthemes` folder (if the folder doesn't exist do this next step). Make sure the folder structure looks like `.../PrismLauncher/iconthemes/your_theme_name/index.theme`.
  - In the `PrismLauncher` folder, create a new folder named `iconthemes` (you should only have to do this once).

- Restart Prism Launcher, then open the global settings. In the Launcher section, click the User Interface tab, and under Icons (make sure you're changing Icons and not Widgets), choose the Custom icons. Click the Close button, and enjoy your new icons.

## Submitting Themes

- Fork the [PrismLauncher/Themes](https://github.com/PrismLauncher/Themes) repository.

- Create a folder in the [themes](https://github.com/PrismLauncher/Themes/tree/main/themes) folder named after your theme name (Example: `Rainbow-Cake`).
  - In this newly created folder add files named `README.md`, `theme.json`, `themeStyle.css` and `theme.json.license`.
    - In `theme.json.license` add the text below, and replace `"Year"` with the current year, replace `"Theme Owner"` with the theme creator nickname, `"License name"` with the license of your theme.

    ```text
    SPDX-FileCopyrightText: "Year" "Theme owner"

    SPDX-License-Identifier: "License SPDX Identifier"
    ```

    - (Note: `theme.json` and `themeStyle.css` are the files that contain your theme.)

    - Format your `README.md` just like this [Template Readme](https://github.com/PrismLauncher/Themes/blob/main/README-Template.md) and replace every text between a `"` like `"This"` with their respective use.

  - Add a screenshot of your theme and rename it to `preview.png`.
    - Then create a file named `preview.png.license` and add the text below, and replace `"Year"` and `Screenshot owner"` with their respective use.

    ```text
    SPDX-FileCopyrightText: "Year" "Screenshot owner"

    SPDX-License-Identifier: CC0-1.0
    ```

- Verify that you did everything correctly, if you did please proceed to the next and last step.

- Make sure to ensure REUSE compliance learn more at [reuse.software](https://reuse.software)

- Now you can open a Pull Request, and we will add your theme as fast as possible to the repository and website.

## Submitting Icon Packs

- Fork the [PrismLauncher/Themes](https://github.com/PrismLauncher/Themes) repository.

- Create a folder in the [icons](https://github.com/PrismLauncher/Themes/tree/main/icons) folder named after your theme name (Example: `Twemoji`).
  - In this newly created folder add files named `README.md`, `index.theme`, `index.theme.license` and a folder named `scalable` containing the .svgs of your icons.
    - In `index.theme.license` add the text below, and replace `"Year"` with the current year, replace `"Theme Owner"` with the theme creator nickname, `"License name"` with the license of your theme.

    ```text
    SPDX-FileCopyrightText: "Year" "Theme owner"
    SPDX-License-Identifier: "License SPDX Identifier"
    ```

    - (Note: `index.theme` is the file that contains your icon data.)

    - Format your `README.md` just like this [Template Readme](https://github.com/PrismLauncher/Themes/blob/main/README-Template.md) and replace every text between a `"` like `"This"` with their respective use.

  - Add a screenshot of your theme and rename it to `preview.png`.
    - Then create a file named `preview.png.license` and add the text below, and replace `"Year"` and `Screenshot owner"` with their respective use.

    ```text
    SPDX-FileCopyrightText: "Year" "Screenshot owner"
    SPDX-License-Identifier: CC0-1.0
    ```

- Verify that you did everything correctly, if you did please proceed to the next and last step.

- Make sure to ensure REUSE compliance learn more at [reuse.software](https://reuse.software)

- Now you can open a Pull Request, and we will add your theme as fast as possible to the repository and website.

---

## File: src/content/docs/wiki/getting-started/command-line-interface.md

---
title: Using Prism Launcher via the Command Line
sidebar:
  label: Command Line Interface
---

```text
Usage: prismlauncher [-h] [-v] [-d dir] [-l launch] [-s server] [-a profile] [-I import] [--show show] [--alive] [--help-all]

Options:
  -d, --dir directory    Use a custom path as application root (use '.' for current directory)
  -l, --launch instance  Launch the specified instance (by instance ID)
  -s, --server address   Join the specified server on launch (only valid in combination with --launch)
  -a, --profile profile  Use the account specified by its profile name (only valid in combination with --launch)
  --alive                Write a small 'live.check' file after the launcher starts
  -I, --import file      Import instance from specified zip (local path or URL)
  --show show            Opens the window for the specified instance (by instance ID)
  -h, --help             Displays help on commandline options.
  --help-all             Displays help, including generic Qt options.
  -v, --version          Displays version information.
```

## What is an instance ID, and where do I find it?

The instance ID is the name of the folder where your instance is contained.

To find it, **right-click** on the instance you want to know the ID of, and then click on _Instance Folder_ within the context menu.

Now, just copy the name of the folder that opened.

## Prism Launcher is still opening after I close Minecraft

Currently, the _Close Prism Launcher after game window opens_ option opens Prism Launcher after closing Minecraft, even when launched from the CLI.

To disable this, open _Settings_, then select _Minecraft_, and finally, un-check _Close Prism Launcher after game window opens_ or check _Quit the launcher after game window closes_.

---

## File: src/content/docs/wiki/getting-started/controller-support.md

---
title: Controller Support
sidebar:
  order: 9
---

:::note[Before proceeding]

- Please ensure that you are comfortable with the mod installation process within Prism Launcher.
- A full guide on this can be [found here](../download-mods/).
- Not all game versions are supported at the time of writing, including those before 1.12.2.
- Please ensure a compatible version of Java is selected. [You can learn how to do so here](../installing-java/).

Finally, if you don't have one already, you must create an **instance** with the game version and mod loader of your choice.
:::

# Making use of Controllers

This includes Steam Deck's Gamepad, PlayStation/Xbox controllers and so on.

##  Fabric/Quilt

Before you continue, ensure that the correct version of the **Fabric API** mod on **Fabric** or the **Quilted Fabric API** mod on **Quilt** for your instance is installed.

###  Controlify (for Minecraft Versions 1.19.4 or newer)

For Minecraft 1.19.4 or newer, we recommend [**Controlify**](https://modrinth.com/mod/controlify). It's a controller mod that has [a lot of features that aren't in MidnightControls](https://moddedmc.wiki/en/project/controlify/latest/docs/users/mod-comparison).

It can be installed using Prism Launcher's mod downloader function through either Modrinth (recommended) or CurseForge. Once installed, please launch your instance and navigate to the in-game controller menu (Options -> Controls -> Controller Settings) and do the calibration. Once that's done, you're ready to use your controller!

###  MidnightControls (for Minecraft Versions 1.18 or newer)

For Minecraft 1.18 or newer, we recommend [**MidnightControls**](https://modrinth.com/mod/midnightcontrols), an updated fork of LambdaControls.

It can be installed using Prism Launcher's mod downloader function through either Modrinth (recommended) or CurseForge. Once installed, please launch your instance and navigate to the in-game controls menu. Within the in-game controls menu, you may need to change the "Mode" setting to **Controller** in order for the game to respond to input from the gamepad. If it doesn't work, you can use [**the app linked in the mod**](https://generalarcade.com/gamepadtool/) to edit the controller mappings.

###  LambdaControls (for Minecraft Versions 1.16.2 to 1.18)

**NOTE:** This mod is currently unmaintained and hasn't been updated since June of 2021, so unless you really need to, use MidnightControls.

For Minecraft 1.16.2 to 1.18, we recommend [**LambdaControls**](https://modrinth.com/mod/lambdacontrols).

It can be installed using Prism Launcher's mod downloader function through either Modrinth (recommended) or CurseForge. Once installed, please launch your instance and navigate to the in-game controls menu. Within the in-game controls menu, you may need to change the "Mode" setting to **Controller** in order for the game to respond to input from the gamepad. If it doesn't work, you can use [**the app linked in the mod**](https://generalarcade.com/gamepadtool/) to edit the controller mappings.

##  NeoForge

###  Controlify (for Minecraft Versions 1.20.3 or newer)

For Minecraft 1.20.3 or newer, we recommend [**Controlify**](https://modrinth.com/mod/controlify). It's a controller mod that has [a lot of features that aren't in MidnightControls or Controllable](https://moddedmc.wiki/en/project/controlify/latest/docs/users/mod-comparison).

It can be installed using Prism Launcher's mod downloader function through either Modrinth (recommended) or CurseForge. Once installed, please launch your instance and navigate to the in-game controller menu (Options -> Controls -> Controller Settings) and do the calibration. Once that's done, you're ready to use your controller!

###  MidnightControls (for Minecraft Versions 1.21 or newer)

For Minecraft 1.21 or newer, we recommend [**MidnightControls**](https://modrinth.com/mod/midnightcontrols), an updated fork of LambdaControls.

It can be installed using Prism Launcher's mod downloader function through either Modrinth (recommended) or CurseForge. Once installed, please launch your instance and navigate to the in-game controls menu. Within the in-game controls menu, you may need to change the "Mode" setting to **Controller** in order for the game to respond to input from the gamepad. If it doesn't work, you can use [**the app linked in the mod**](https://generalarcade.com/gamepadtool/) to edit the controller mappings.

###  Controllable (for Minecraft Versions 1.20.4 or newer)

For Minecraft versions 1.20.4 or above, we also recommend [**Controllable**](https://www.curseforge.com/minecraft/mc-mods/controllable).

Controllable can be installed using Prism Launcher's mod downloader function through CurseForge. Once installed, you may now launch your instance, and find that the mod should begin working immediately.

##  Forge

###  Controllable (for Minecraft Versions 1.12.2 or newer)

For Minecraft versions 1.12.2 or above, we also recommend [**Controllable**](https://www.curseforge.com/minecraft/mc-mods/controllable).

Controllable can be installed using Prism Launcher's mod downloader function through CurseForge. Once installed, you may now launch your instance, and find that the mod should begin working immediately.

---

## File: src/content/docs/wiki/getting-started/create-instance.md

---
title: Creating an Instance
sidebar:
  order: 4
---

To create an instance, simply click on the **Add Instance** button on the top menu bar, or right-click an empty area in the middle of the launcher, and select **Create instance**. You can then either create a new instance by selecting your desired Minecraft version and modloader, or import an existing modpack by selecting a mod platform from the sidebar on the left.

## Editing an instance

Once an instance is created, you can right-click it to open a context menu with some basic settings. From this list, select **Edit** to access the edit menu.

---

## File: src/content/docs/wiki/getting-started/data-location.md

---
title: Data Locations
---

Prism Launcher stores your data in your OS's standard application data folder. For the portable version, data is stored within its own directory. To find it, select **Folders** > **Launcher Root** in Prism. Below is a table containing the default locations for each OS:

| OS                         | Folder                                                          |
| -------------------------- | --------------------------------------------------------------- |
| Portable (Windows / Linux) | In the PrismLauncher folder                                     |
| Windows                    | `%APPDATA%/PrismLauncher`                                       |
| Scoop                      | `%HOMEPATH%\scoop\persist\prismlauncher`                        |
| macOS                      | `~/Library/Application Support/PrismLauncher`                   |
| Linux                      | `~/.local/share/PrismLauncher`                                  |
| Flatpak                    | `~/.var/app/org.prismlauncher.PrismLauncher/data/PrismLauncher` |

## Internal folder structure

| Folder       | Purpose                                                      |
| ------------ | ------------------------------------------------------------ |
| assets       | Stores the game files.                                       |
| cache        | Stores cached downloads.                                     |
| catpacks     | Stores the [catpacks](../catpacks).                          |
| icons        | Stores instance icons. (default)                             |
| iconthemes   | Stores launcher [icons themes](../change-themes#icons-pack). |
| instances    | Stores user instances. (default)                             |
| java         | Stores the java instalations managed by the launcher.        |
| libraries    | Stores libraries used to run Minecraft and Mod Loaders.      |
| logs         | Stores the logs.                                             |
| meta         | Stores the cached metadata information.                      |
| skins        | Stores the player skins.                                     |
| themes       | Stores [themes](../change-themes).                           |
| translations | Stores GUI translations.                                     |