A tiny, portable C library for invoking native file open, save, and folder select dialogs across Windows, macOS, and Linux.
Native File Dialog is a lightweight, portable C library that provides a unified API for invoking native file open, save, and folder select dialogs across Windows, macOS, and Linux. It solves the problem of platform-specific file dialog code by offering a single, consistent interface that leverages each OS's native components, avoiding dependencies on large frameworks like wxWidgets or Qt.
C and C++ developers, particularly those in game development using SDL2, who need cross-platform file dialog functionality without heavy dependencies. It's also suitable for embedded systems or applications where minimal footprint is critical.
Developers choose Native File Dialog for its simplicity, portability, and lack of external dependencies. Its lean C API and use of native OS dialogs ensure a familiar user experience while keeping the codebase small and easy to integrate.
A tiny, neat C library that portably invokes native file open and save dialogs.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses a pure C static library with no Objective-C, C++, or STL dependencies, keeping the footprint small and integration straightforward, as highlighted in the README.
Leverages native APIs like Vista's IFileDialog on Windows, Cocoa on macOS, and GTK3 or Zenity on Linux, ensuring familiar dialogs on each OS without extra styling work.
Provides consistent UTF-8 support across all platforms, avoiding encoding issues in file paths, which is explicitly noted as a feature.
Tested and works seamlessly with SDL2 on all platforms, making it a go-to for game developers needing native dialogs without heavy frameworks.
Does not support Windows XP's legacy dialogs such as GetOpenFileName, as admitted in the known limitations, restricting compatibility with older systems.
Lacks support for descriptive file filter names (e.g., 'Image Files'), only offering nameless filters, which can reduce usability for complex file types.
The Zenity implementation on Linux has poor error handling, choosing to abort rather than clean up gracefully, which can lead to crashes in error cases, per the README.