osu!SkinMixer

repository·master·Indexed 41 days ago

https://github.com/rednir/osuskinmixer

A desktop utility for creating, modifying, and managing osu! skins. It provides a graphical interface to mix assets from different skins, apply visual modifications like cursor trails and invisible cursors, and organize the skins folder without manual file editing.

Tokens
861
Snippets
1
Records
7
Agent score
2%

What's inside osu!SkinMixer

  1. Modify existing skins

    master

    The tool allows for rapid modification of skin assets across one or multiple skins simultaneously. Common tasks include:

    • Cursor Modification: Quickly change the cursor of a skin or multiple skins at once.
    • Visual Effects: Convert skins to use specific styles such as:
      • Smooth cursor trails
      • Instant-fading hitcircles
      • Invisible cursors
  2. Manage your skins folder

    master

    The skin manager provides a centralized interface to organize your osu! skins:

    • Preview & Open: View a preview of a skin and open it directly in osu!.
    • Organization: Search for specific skins, duplicate them, or delete them.
    • Hide/Restore: Hide skins so they do not appear in osu!, and restore them at any time via the manager.
    WARNING

    Actions such as deleting skins are destructive. Use caution when managing your osu! folder.

  3. Download and Install osu!SkinMixer

    master

    osu!SkinMixer is a tool for creating skin mixes and modifying existing osu! skins without manual file editing.

    Windows

    You can download the Windows installer directly from the latest release: https://github.com/rednir/OsuSkinMixer/releases/latest/download/osu-skin-mixer-setup.exe

    Other Platforms (osu!lazer, etc.)

    For downloads compatible with osu!lazer or other platforms, visit the official releases page.

    https://github.com/rednir/OsuSkinMixer/releases/latest/download/osu-skin-mixer-setup.exe
  4. Create a skin mix

    master

    You can create a custom skin mix by selecting specific assets from your existing skins. This avoids manual navigation through your skins folder in File Explorer.

    • Select Assets: Choose specific hitcircles, sounds, and other elements.
    • Granular Control: Expand options using the arrow buttons to explore sub-options or select a specific .png file for an asset.
  5. Understand the Scene Stack navigation model

    master

    OsuSkinMixer uses a stack-based navigation system to manage different UI views (scenes). The Main class manages a SceneStack of StackScene objects.

    • Pushing a scene: When a new scene is pushed, the current scene is hidden via a push_out animation, and the new scene is added to the top of the stack with a push_in animation.
    • Popping a scene: When a scene is popped, the top scene is removed, and the previous scene in the stack becomes visible via a pop_out animation.
    • Returning to Menu: The PopAllScenes mechanism clears the stack until only the base menu remains.

    Scenes can communicate back to the main application via events: ScenePushed, ScenePopped, and ToastPushed.

  6. Handle application exit and blocking tasks

    master

    When a user requests to close the application (NotificationWMCloseRequest), the application attempts to perform cleanup tasks before quitting.

    If there are active ExitBlockingTasks (such as downloading updates or deleting temporary folders), the application will display an ExitBlockedPopup. The user can then choose to wait for these tasks to complete or cancel the exit.

    Key cleanup behaviors:

    • Settings: Settings.Save() is called automatically.
    • Trash: The directory specified in Settings.DeleteOnExitFolderPath is deleted.
    • Blocking Tasks: The application tracks tasks in ExitBlockingTasks and ensures they are awaited before the process terminates.
  7. Debug logging via input action

    master

    You can toggle debug logging on and off using the debug input action (e.g., via a keyboard shortcut configured in Godot).

    • Enable: Starts logging to a file and shows a toast notification.
    • Disable: Stops logging to a file, saves the logs, and opens the folder containing them.