SDL_Folder(3type)

💖 SDL_Folder 💖

okay so bestie, welcome to the SDL_Folder page — it's a <pink>3type</pink> situation from the SDL3 datatypes corner of the world, and it is genuinely so useful. Let's get into it. 🦋


✨ NAME ✨

SDL_Folder — it's the type that says which OS-provided default folder you're asking for, like, for a specific purpose. That's the whole vibe. 🎀


✨ SYNOPSIS ✨

#include <SDL3/SDL_filesystem.h>

typedef enum SDL_Folder
{
    SDL_FOLDER_HOME,        /**< The folder which contains all of the current user's data, preferences, and documents. It usually contains most of the other folders. If a requested folder does not exist, the home folder can be considered a safe fallback to store a user's documents. */
    SDL_FOLDER_DESKTOP,     /**< The folder of files that are displayed on the desktop. Note that the existence of a desktop folder does not guarantee that the system does show icons on its desktop; certain GNU/Linux distros with a graphical environment may not have desktop icons. */
    SDL_FOLDER_DOCUMENTS,   /**< User document files, possibly application-specific. This is a good place to save a user's projects. */
    SDL_FOLDER_DOWNLOADS,   /**< Standard folder for user files downloaded from the internet. */
    SDL_FOLDER_MUSIC,       /**< Music files that can be played using a standard music player (mp3, ogg...). */
    SDL_FOLDER_PICTURES,    /**< Image files that can be displayed using a standard viewer (png, jpg...). */
    SDL_FOLDER_PUBLICSHARE, /**< Files that are meant to be shared with other users on the same computer. */
    SDL_FOLDER_SAVEDGAMES,  /**< Save files for games. */
    SDL_FOLDER_SCREENSHOTS, /**< Application screenshots. */
    SDL_FOLDER_TEMPLATES,   /**< Template files to be used when the user requests the desktop environment to create a new file in a certain folder, such as "New Text File.txt".  Any file in the Templates folder can be used as a starting point for a new file. */
    SDL_FOLDER_VIDEOS,      /**< Video files that can be played using a standard video player (mp4, webm...). */
    SDL_FOLDER_COUNT        /**< Total number of types in this enum, not a folder type by itself. */
} SDL_Folder;

✨ DESCRIPTION ✨

okay so first thing, and this is important: the Trash folder is NOT in here. 😭 and it's not random — trashing a file usually needs extra OS-specific functionality to remember where the file originally came from. So it just doesn't fit the enum vibe. periodt. 🗑️

Here's the tea on which folders each platform actually supports 🫶 — I turned the grid into a list so it's readable on your terminal, but every single cell is here, no cap:

  • SDL_FOLDER_HOME — Windows: X · macOS/iOS: X · tvOS: (not supported) · Unix (XDG): X · Haiku: X · Emscripten: X
  • SDL_FOLDER_DESKTOP — Windows: X · macOS/iOS: X · tvOS: (not supported) · Unix (XDG): X · Haiku: X · Emscripten: (not supported)
  • SDL_FOLDER_DOCUMENTS — Windows: X · macOS/iOS: X · tvOS: (not supported) · Unix (XDG): X · Haiku: (not supported) · Emscripten: (not supported)
  • SDL_FOLDER_DOWNLOADS — Windows: Vista+ · macOS/iOS: X · tvOS: (not supported) · Unix (XDG): X · Haiku: (not supported) · Emscripten: (not supported)
  • SDL_FOLDER_MUSIC — Windows: X · macOS/iOS: X · tvOS: (not supported) · Unix (XDG): X · Haiku: (not supported) · Emscripten: (not supported)
  • SDL_FOLDER_PICTURES — Windows: X · macOS/iOS: X · tvOS: (not supported) · Unix (XDG): X · Haiku: (not supported) · Emscripten: (not supported)
  • SDL_FOLDER_PUBLICSHARE — Windows: (not supported) · macOS/iOS: X · tvOS: (not supported) · Unix (XDG): X · Haiku: (not supported) · Emscripten: (not supported)
  • SDL_FOLDER_SAVEDGAMES — Windows: Vista+ · macOS/iOS: (not supported) · tvOS: (not supported) · Unix (XDG): (not supported) · Haiku: (not supported) · Emscripten: (not supported)
  • SDL_FOLDER_SCREENSHOTS — Windows: Vista+ · macOS/iOS: (not supported) · tvOS: (not supported) · Unix (XDG): (not supported) · Haiku: (not supported) · Emscripten: (not supported)
  • SDL_FOLDER_TEMPLATES — Windows: X · macOS/iOS: X · tvOS: (not supported) · Unix (XDG): X · Haiku: (not supported) · Emscripten: (not supported)
  • SDL_FOLDER_VIDEOS — Windows: X · macOS/iOS: X* · tvOS: (not supported) · Unix (XDG): X · Haiku: (not supported) · Emscripten: (not supported)
💀 little footnote moment: on macOS/iOS, the Videos folder is literally just called "Movies". same folder, different name, it's giving rebrand. ✨

✨ AVAILABILITY ✨

this enum has been around since SDL 3.2.0 — so it's not new new, but it's new enough that you should clock it. 👑


✨ SEE ALSO ✨

  • SDL_GetUserFolder(3) — go read this one next bestie, it's the whole point of knowing about the enum 💅

and that's the page!! 💖✨🎀 this whole thing comes to you from Simple Directmedia Layer, and the manual is sitting at version SDL 3.4.18, with the title line reading SDL_Folder(3type). go forth and find your folders, you've got this. 🦋🌸🫶

📦 where this page comes from