{#if finished}
{#if !$reduceAnimations} {/if}
EZPPLauncher logo

You're all set!

Everything is configured. Time to farm some pp.

{#if osuInstallPath}
osu! installation

{osuInstallPath}

{/if} {#if saveError}
{saveError}
{/if}

See you on the leaderboards.

{:else}
EZPPLauncher logo

EZPPLauncher setup

Welcome aboard

Step {stepNumber} of {steps.length}
    {#each steps as step, index (step)}
  1. {#if index < stepIndex} {:else} {index + 1} {/if} {step}
  2. {/each}
{#key stepIndex}
{#if stepIndex === 0}

Welcome

Let's get you farming.

EZPPLauncher keeps osu! updated, patched and looking the way you want. This takes less than a minute.

One-click launch

Checks for updates, applies the patch and starts osu!.

Make it yours

Themes with images, videos and custom fonts.

Always up to date

Keeps launcher files in sync before every launch.

Make sure osu! is installed and signed in before continuing.

{:else if stepIndex === 1}

osu! installation

Where's osu!?

{#if $platform === 'macos'} Point us at your osu!.app wrapper, or the folder that contains osu!.exe. {:else} Point us at the folder that contains osu!.exe. {/if}

{#if status === 'detecting'} {:else if status === 'valid'} {:else if status === 'invalid'} {:else} {/if}

{statusTitle}

{statusDescription}

{#if osuInstallPath}
{osuInstallPath}
{/if}
{#if $platform === 'macos'}

Pick osu!.app directly — you don't need to open its package contents. The launcher finds osu! inside the Wineskin wrapper.

{/if}
{:else}

Personalize

Make it yours.

Choose how the launcher should look and behave.

Shows misses in Relax and Autopilot.{#if $platform === 'macos'}{' '}Stable patching needs no extra runtime; the experimental stream needs .NET 8 in your Wine prefix.{/if}

patch.set(checked)} />

Use a custom cursor in the launcher, like in osu!lazer.

{ if (!checked) cursorSmoothening.set(false); customCursor.set(checked); }} />

Makes the custom cursor movement smoother.

{ if (!$customCursor) return; cursorSmoothening.set(checked); }} disabled={!$customCursor} />

Disables some launcher animations on low-end devices.

reduceAnimations.set(checked)} />

Let other Discord users see what you are doing right now 👀

{#if $presenceLoading} {/if}
{/if}
{/key}
{#if stepIndex === 1 && osuInstallPath.length === 0 && !dev} {/if}

You can change all of this later in Settings.

{/if}