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: XSDL_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
- fedora 43: SDL3-devel 3.4.18-1.fc43 · Zlib AND MIT AND Apache-2.0 AND (Apache-2.0 OR MIT)
- fedora 43: SDL3-devel 3.4.18-1.fc43 · Zlib AND MIT AND Apache-2.0 AND (Apache-2.0 OR MIT)
- fedora 44: SDL3-devel 3.4.18-1.fc44 · Zlib AND MIT AND Apache-2.0 AND (Apache-2.0 OR MIT)
- fedora 44: SDL3-devel 3.4.18-1.fc44 · Zlib AND MIT AND Apache-2.0 AND (Apache-2.0 OR MIT)
- 💖 girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms