diff --git a/docs/Doxyfile b/docs/Doxyfile
index 281b84291d6..d15af4d19c4 100644
--- a/docs/Doxyfile
+++ b/docs/Doxyfile
@@ -27,6 +27,8 @@ DOXYFILE_ENCODING = UTF-8
 # https://breathe.readthedocs.io/en/latest/markups.html#aliases
 ALIASES = "rst=^^\verbatim embed:rst:leading-asterisk^^"
 ALIASES += "endrst=\endverbatim"
+ALIASES += "examples=**Examples**\n@code{.cpp}"
+ALIASES += "end_examples=@endcode"
 
 DISABLE_INDEX = NO
 DOCBOOK_OUTPUT = doxydocbook
diff --git a/docs/source/source_code/source_code.rst b/docs/source/source_code/source_code.rst
index 467f331c768..18021991122 100644
--- a/docs/source/source_code/source_code.rst
+++ b/docs/source/source_code/source_code.rst
@@ -1,56 +1,28 @@
 Source Code
 ===========
 We are in process of improving the source code documentation. Code should be documented using Doxygen syntax.
-Some examples exist in `main.h` and `main.cpp`. In order for documentation within the code to appear in the
-rendered docs, the definition of the object must be in a header file, although the documentation itself can (and
-should) be in the source file.
+Many examples exist throughout the codebase.
 
 Example Documentation Blocks
 ----------------------------
 
 **file.h**
 
-.. code-block:: c
-
-   // functions
-   int main(int argc, char *argv[]);
-
-**file.cpp** (with markdown)
-
 .. code-block:: cpp
 
-   /**
-    * @brief Main application entry point.
-    * @param argc The number of arguments.
-    * @param argv The arguments.
-    *
-    * EXAMPLES:
-    * ```cpp
-    * main(1, const char* args[] = {"hello", "markdown", nullptr});
-    * ```
-    */
-   int main(int argc, char *argv[]) {
-     // do stuff
-   }
-
-**file.cpp** (with ReStructuredText)
-
-.. code-block:: cpp
+    /**
+     * @brief Main application entry point.
+     * @param argc The number of arguments.
+     * @param argv The arguments.
+     *
+     * @examples
+     * main(1, const char* args[] = {"hello", "markdown", nullptr});
+     * @end_examples
+     */
+   int main(int argc, char *argv[]);
 
-   /**
-    * @brief Main application entry point.
-    * @param argc The number of arguments.
-    * @param argv The arguments.
-    * @rst
-    * EXAMPLES:
-    *
-    * .. code-block:: cpp
-    *    main(1, const char* args[] = {"hello", "rst", nullptr});
-    * @endrst
-    */
-   int main(int argc, char *argv[]) {
-     // do stuff
-   }
+.. attention:: The `@examples` and `@end_examples` tags are not standard Doxygen tags. They are custom aliases
+   we have specified to simplify documenting examples. Do not confuse this with the standard `@example` tag.
 
 Source
 ------
diff --git a/src/entry_handler.cpp b/src/entry_handler.cpp
index 8d17b7d270a..ada85265796 100644
--- a/src/entry_handler.cpp
+++ b/src/entry_handler.cpp
@@ -1,6 +1,6 @@
 /**
  * @file entry_handler.cpp
- * @brief Entry point related functions.
+ * @brief Definitions for entry handling functions.
  */
 
 // standard includes
@@ -27,28 +27,12 @@ extern "C" {
 
 using namespace std::literals;
 
-/**
- * @brief Launch the Web UI.
- *
- * EXAMPLES:
- * ```cpp
- * launch_ui();
- * ```
- */
 void
 launch_ui() {
   std::string url = "https://localhost:" + std::to_string(net::map_port(confighttp::PORT_HTTPS));
   platf::open_url(url);
 }
 
-/**
- * @brief Launch the Web UI at a specific endpoint.
- *
- * EXAMPLES:
- * ```cpp
- * launch_ui_with_path("/pin");
- * ```
- */
 void
 launch_ui_with_path(std::string path) {
   std::string url = "https://localhost:" + std::to_string(net::map_port(confighttp::PORT_HTTPS)) + path;
@@ -56,22 +40,10 @@ launch_ui_with_path(std::string path) {
 }
 
 namespace args {
-  /**
-   * @brief Reset the user credentials.
-   *
-   * @param name The name of the program.
-   * @param argc The number of arguments.
-   * @param argv The arguments.
-   *
-   * EXAMPLES:
-   * ```cpp
-   * creds("sunshine", 2, {"new_username", "new_password"});
-   * ```
-   */
   int
   creds(const char *name, int argc, char *argv[]) {
     if (argc < 2 || argv[0] == "help"sv || argv[1] == "help"sv) {
-      help(name, argc, argv);
+      help(name);
     }
 
     http::save_user_creds(config::sunshine.credentials_file, argv[0], argv[1]);
@@ -79,59 +51,21 @@ namespace args {
     return 0;
   }
 
-  /**
-   * @brief Print help to stdout, then exit.
-   * @param name The name of the program.
-   * @param argc The number of arguments. (Unused)
-   * @param argv The arguments. (Unused)
-   *
-   * EXAMPLES:
-   * ```cpp
-   * help("sunshine", 0, nullptr);
-   * ```
-   */
   int
-  help(const char *name, int argc, char *argv[]) {
+  help(const char *name) {
     logging::print_help(name);
     return 0;
   }
 
-  /**
-   * @brief Print the version to stdout, then exit.
-   * @param name The name of the program. (Unused)
-   * @param argc The number of arguments. (Unused)
-   * @param argv The arguments. (Unused)
-   *
-   * EXAMPLES:
-   * ```cpp
-   * version("sunshine", 0, nullptr);
-   * ```
-   */
   int
-  version(const char *name, int argc, char *argv[]) {
+  version() {
     // version was already logged at startup
     return 0;
   }
 
 #ifdef _WIN32
-  /**
-   * @brief Restore global NVIDIA control panel settings.
-   *
-   * If Sunshine was improperly terminated, this function restores
-   * the global NVIDIA control panel settings to the undo file left
-   * by Sunshine. This function is typically called by the uninstaller.
-   *
-   * @param name The name of the program. (Unused)
-   * @param argc The number of arguments. (Unused)
-   * @param argv The arguments. (Unused)
-   *
-   * EXAMPLES:
-   * ```cpp
-   * restore_nvprefs_undo("sunshine", 0, nullptr);
-   * ```
-   */
   int
-  restore_nvprefs_undo(const char *name, int argc, char *argv[]) {
+  restore_nvprefs_undo() {
     if (nvprefs_instance.load()) {
       nvprefs_instance.restore_from_and_delete_undo_file_if_exists();
       nvprefs_instance.unload();
@@ -145,11 +79,6 @@ namespace lifetime {
   char **argv;
   std::atomic_int desired_exit_code;
 
-  /**
-   * @brief Terminates Sunshine gracefully with the provided exit code.
-   * @param exit_code The exit code to return from main().
-   * @param async Specifies whether our termination will be non-blocking.
-   */
   void
   exit_sunshine(int exit_code, bool async) {
     // Store the exit code of the first exit_sunshine() call
@@ -166,9 +95,6 @@ namespace lifetime {
     }
   }
 
-  /**
-   * @brief Breaks into the debugger or terminates Sunshine if no debugger is attached.
-   */
   void
   debug_trap() {
 #ifdef _WIN32
@@ -178,9 +104,6 @@ namespace lifetime {
 #endif
   }
 
-  /**
-   * @brief Gets the argv array passed to main().
-   */
   char **
   get_argv() {
     return argv;
@@ -188,10 +111,6 @@ namespace lifetime {
 }  // namespace lifetime
 
 #ifdef _WIN32
-/**
- * @brief Check if NVIDIA's GameStream software is running.
- * @return `true` if GameStream is enabled, `false` otherwise.
- */
 bool
 is_gamestream_enabled() {
   DWORD enabled;
@@ -284,14 +203,6 @@ namespace service_ctrl {
     SC_HANDLE service_handle = NULL;
   };
 
-  /**
-   * @brief Check if the service is running.
-   *
-   * EXAMPLES:
-   * ```cpp
-   * is_service_running();
-   * ```
-   */
   bool
   is_service_running() {
     service_controller sc { SERVICE_QUERY_STATUS };
@@ -304,14 +215,6 @@ namespace service_ctrl {
     return status.dwCurrentState == SERVICE_RUNNING;
   }
 
-  /**
-   * @brief Start the service and wait for startup to complete.
-   *
-   * EXAMPLES:
-   * ```cpp
-   * start_service();
-   * ```
-   */
   bool
   start_service() {
     service_controller sc { SERVICE_QUERY_STATUS | SERVICE_START };
@@ -338,14 +241,6 @@ namespace service_ctrl {
     return true;
   }
 
-  /**
-   * @brief Wait for the UI to be ready after Sunshine startup.
-   *
-   * EXAMPLES:
-   * ```cpp
-   * wait_for_ui_ready();
-   * ```
-   */
   bool
   wait_for_ui_ready() {
     std::cout << "Waiting for Web UI to be ready...";
diff --git a/src/entry_handler.h b/src/entry_handler.h
index bdab361cf0c..1c23e27d4e9 100644
--- a/src/entry_handler.h
+++ b/src/entry_handler.h
@@ -1,6 +1,6 @@
 /**
  * @file entry_handler.h
- * @brief Header file for entry point functions.
+ * @brief Declarations for entry handling functions.
  */
 #pragma once
 
@@ -12,50 +12,149 @@
 #include "thread_pool.h"
 #include "thread_safe.h"
 
-// functions
+/**
+ * @brief Launch the Web UI.
+ *
+ * @examples
+ * launch_ui();
+ * @end_examples
+ */
 void
 launch_ui();
+
+/**
+ * @brief Launch the Web UI at a specific endpoint.
+ *
+ * @examples
+ * launch_ui_with_path("/pin");
+ * @end_examples
+ */
 void
 launch_ui_with_path(std::string path);
 
-#ifdef _WIN32
-// windows only functions
-bool
-is_gamestream_enabled();
-#endif
-
+/**
+ * @brief Functions for handling command line arguments.
+ */
 namespace args {
+  /**
+   * @brief Reset the user credentials.
+   *
+   * @param name The name of the program.
+   * @param argc The number of arguments.
+   * @param argv The arguments.
+   *
+   * @examples
+   * creds("sunshine", 2, {"new_username", "new_password"});
+   * @end_examples
+   */
   int
   creds(const char *name, int argc, char *argv[]);
+
+  /**
+   * @brief Print help to stdout, then exit.
+   * @param name The name of the program.
+   *
+   * @examples
+   * help("sunshine");
+   * @end_examples
+   */
   int
-  help(const char *name, int argc, char *argv[]);
+  help(const char *name);
+
+  /**
+   * @brief Print the version to stdout, then exit.
+   *
+   * @examples
+   * version();
+   * @end_examples
+   */
   int
-  version(const char *name, int argc, char *argv[]);
-#ifdef _WIN32
+  version();
+
+#if defined(_WIN32) || defined(DOXYGEN)
+  /**
+   * @brief Restore global NVIDIA control panel settings.
+   *
+   * If Sunshine was improperly terminated, this function restores
+   * the global NVIDIA control panel settings to the undo file left
+   * by Sunshine. This function is typically called by the uninstaller.
+   *
+   * @examples
+   * restore_nvprefs_undo();
+   * @end_examples
+   */
   int
-  restore_nvprefs_undo(const char *name, int argc, char *argv[]);
+  restore_nvprefs_undo();
 #endif
 }  // namespace args
 
+/**
+ * @brief Functions for handling the lifetime of Sunshine.
+ */
 namespace lifetime {
   extern char **argv;
   extern std::atomic_int desired_exit_code;
+
+  /**
+   * @brief Terminates Sunshine gracefully with the provided exit code.
+   * @param exit_code The exit code to return from main().
+   * @param async Specifies whether our termination will be non-blocking.
+   */
   void
   exit_sunshine(int exit_code, bool async);
+
+  /**
+   * @brief Breaks into the debugger or terminates Sunshine if no debugger is attached.
+   */
   void
   debug_trap();
+
+  /**
+   * @brief Get the argv array passed to main().
+   */
   char **
   get_argv();
 }  // namespace lifetime
 
-#ifdef _WIN32
+#if defined(_WIN32) || defined(DOXYGEN)
+/**
+ * @brief Check if NVIDIA's GameStream software is running.
+ * @return `true` if GameStream is enabled, `false` otherwise.
+ */
+bool
+is_gamestream_enabled();
+
+/**
+ * @brief Namespace for controlling the Sunshine service model on Windows.
+ */
 namespace service_ctrl {
+  /**
+   * @brief Check if the service is running.
+   *
+   * @examples
+   * is_service_running();
+   * @end_examples
+   */
   bool
   is_service_running();
 
+  /**
+   * @brief Start the service and wait for startup to complete.
+   *
+   * @examples
+   * start_service();
+   * @end_examples
+   */
   bool
   start_service();
 
+  /**
+   * @brief Wait for the UI to be ready after Sunshine startup.
+   *
+   * @examples
+   * wait_for_ui_ready();
+   * @end_examples
+   */
   bool
   wait_for_ui_ready();
 }  // namespace service_ctrl
diff --git a/src/file_handler.cpp b/src/file_handler.cpp
index 6f11bb709de..b5c9638a1b8 100644
--- a/src/file_handler.cpp
+++ b/src/file_handler.cpp
@@ -1,6 +1,6 @@
 /**
  * @file file_handler.cpp
- * @brief File handling functions.
+ * @brief Definitions for file handling functions.
  */
 
 // standard includes
@@ -12,11 +12,6 @@
 #include "logging.h"
 
 namespace file_handler {
-  /**
-   * @brief Get the parent directory of a file or directory.
-   * @param path The path of the file or directory.
-   * @return `std::string` : The parent directory.
-   */
   std::string
   get_parent_directory(const std::string &path) {
     // remove any trailing path separators
@@ -29,11 +24,6 @@ namespace file_handler {
     return p.parent_path().string();
   }
 
-  /**
-   * @brief Make a directory.
-   * @param path The path of the directory.
-   * @return `bool` : `true` on success, `false` on failure.
-   */
   bool
   make_directory(const std::string &path) {
     // first, check if the directory already exists
@@ -44,16 +34,6 @@ namespace file_handler {
     return std::filesystem::create_directories(path);
   }
 
-  /**
-   * @brief Read a file to string.
-   * @param path The path of the file.
-   * @return `std::string` : The contents of the file.
-   *
-   * EXAMPLES:
-   * ```cpp
-   * std::string contents = read_file("path/to/file");
-   * ```
-   */
   std::string
   read_file(const char *path) {
     if (!std::filesystem::exists(path)) {
@@ -65,17 +45,6 @@ namespace file_handler {
     return std::string { (std::istreambuf_iterator<char>(in)), std::istreambuf_iterator<char>() };
   }
 
-  /**
-   * @brief Writes a file.
-   * @param path The path of the file.
-   * @param contents The contents to write.
-   * @return `int` : `0` on success, `-1` on failure.
-   *
-   * EXAMPLES:
-   * ```cpp
-   * int write_status = write_file("path/to/file", "file contents");
-   * ```
-   */
   int
   write_file(const char *path, const std::string_view &contents) {
     std::ofstream out(path);
diff --git a/src/file_handler.h b/src/file_handler.h
index 5ff8015c635..8db55b09ab4 100644
--- a/src/file_handler.h
+++ b/src/file_handler.h
@@ -1,21 +1,61 @@
 /**
  * @file file_handler.h
- * @brief Header file for file handling functions.
+ * @brief Declarations for file handling functions.
  */
 #pragma once
 
 #include <string>
 
+/**
+ * @brief Responsible for file handling functions.
+ */
 namespace file_handler {
+  /**
+   * @brief Get the parent directory of a file or directory.
+   * @param path The path of the file or directory.
+   * @return `std::string` : The parent directory.
+   *
+   * @examples
+   * std::string parent_dir = get_parent_directory("path/to/file");
+   * @end_examples
+   */
   std::string
   get_parent_directory(const std::string &path);
 
+  /**
+   * @brief Make a directory.
+   * @param path The path of the directory.
+   * @return `bool` : `true` on success, `false` on failure.
+   *
+   * @examples
+   * bool dir_created = make_directory("path/to/directory");
+   * @end_examples
+   */
   bool
   make_directory(const std::string &path);
 
+  /**
+   * @brief Read a file to string.
+   * @param path The path of the file.
+   * @return `std::string` : The contents of the file.
+   *
+   * @examples
+   * std::string contents = read_file("path/to/file");
+   * @end_examples
+   */
   std::string
   read_file(const char *path);
 
+  /**
+   * @brief Writes a file.
+   * @param path The path of the file.
+   * @param contents The contents to write.
+   * @return `int` : `0` on success, `-1` on failure.
+   *
+   * @examples
+   * int write_status = write_file("path/to/file", "file contents");
+   * @end_examples
+   */
   int
   write_file(const char *path, const std::string_view &contents);
 }  // namespace file_handler
diff --git a/src/logging.cpp b/src/logging.cpp
index e03bcbf5134..e59711e77d3 100644
--- a/src/logging.cpp
+++ b/src/logging.cpp
@@ -48,10 +48,9 @@ namespace logging {
   /**
    * @brief Deinitialize the logging system.
    *
-   * EXAMPLES:
-   * ```cpp
+   * @examples
    * deinit();
-   * ```
+   * @end_examples
    */
   void
   deinit() {
@@ -66,10 +65,9 @@ namespace logging {
    * @param log_file The log file to write to.
    * @returns A deinit_t object that will deinitialize the logging system when it goes out of scope.
    *
-   * EXAMPLES:
-   * ```cpp
+   * @examples
    * log_init(2, "sunshine.log");
-   * ```
+   * @end_examples
    */
   [[nodiscard]] std::unique_ptr<deinit_t>
   init(int min_log_level, const std::string &log_file) {
@@ -172,10 +170,9 @@ namespace logging {
   /**
    * @brief Flush the log.
    *
-   * EXAMPLES:
-   * ```cpp
+   * @examples
    * log_flush();
-   * ```
+   * @end_examples
    */
   void
   log_flush() {
@@ -188,10 +185,9 @@ namespace logging {
    * @brief Print help to stdout.
    * @param name The name of the program.
    *
-   * EXAMPLES:
-   * ```cpp
+   * @examples
    * print_help("sunshine");
-   * ```
+   * @end_examples
    */
   void
   print_help(const char *name) {
diff --git a/src/main.cpp b/src/main.cpp
index ec3aa9b56a1..cf04097246d 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -44,11 +44,11 @@ on_signal(int sig, FN &&fn) {
 }
 
 std::map<std::string_view, std::function<int(const char *name, int argc, char **argv)>> cmd_to_func {
-  { "creds"sv, args::creds },
-  { "help"sv, args::help },
-  { "version"sv, args::version },
+  { "creds"sv, [](const char *name, int argc, char **argv) { return args::creds(name, argc, argv); } },
+  { "help"sv, [](const char *name, int argc, char **argv) { return args::help(name); } },
+  { "version"sv, [](const char *name, int argc, char **argv) { return args::version(); } },
 #ifdef _WIN32
-  { "restore-nvprefs-undo"sv, args::restore_nvprefs_undo },
+  { "restore-nvprefs-undo"sv, [](const char *name, int argc, char **argv) { return args::restore_nvprefs_undo(); } },
 #endif
 };
 
@@ -79,10 +79,9 @@ SessionMonitorWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
  * @param argc The number of arguments.
  * @param argv The arguments.
  *
- * EXAMPLES:
- * ```cpp
+ * @examples
  * main(1, const char* args[] = {"sunshine", nullptr});
- * ```
+ * @end_examples
  */
 int
 main(int argc, char *argv[]) {
diff --git a/src/network.cpp b/src/network.cpp
index 2784afebc39..5d6d2f2a365 100644
--- a/src/network.cpp
+++ b/src/network.cpp
@@ -232,10 +232,9 @@ namespace net {
    * @param port The port to map as a difference from the base port.
    * @return `std:uint16_t` : The mapped port number.
    *
-   * EXAMPLES:
-   * ```cpp
+   * @examples
    * std::uint16_t mapped_port = net::map_port(1);
-   * ```
+   * @end_examples
    */
   std::uint16_t
   map_port(int port) {
diff --git a/src/nvhttp.cpp b/src/nvhttp.cpp
index bd8434e5534..68532ba0748 100644
--- a/src/nvhttp.cpp
+++ b/src/nvhttp.cpp
@@ -616,10 +616,9 @@ namespace nvhttp {
    * @param name The user supplied name.
    * @return `true` if the pin is correct, `false` otherwise.
    *
-   * EXAMPLES:
-   * ```cpp
+   * @examples
    * bool pin_status = nvhttp::pin("1234", "laptop");
-   * ```
+   * @end_examples
    */
   bool
   pin(std::string pin, std::string name) {
@@ -1053,10 +1052,9 @@ namespace nvhttp {
   /**
    * @brief Start the nvhttp server.
    *
-   * EXAMPLES:
-   * ```cpp
+   * @examples
    * nvhttp::start();
-   * ```
+   * @end_examples
    */
   void
   start() {
@@ -1191,10 +1189,9 @@ namespace nvhttp {
   /**
    * @brief Remove all paired clients.
    *
-   * EXAMPLES:
-   * ```cpp
+   * @examples
    * nvhttp::erase_all_clients();
-   * ```
+   * @end_examples
    */
   void
   erase_all_clients() {
@@ -1207,10 +1204,9 @@ namespace nvhttp {
   /**
    * @brief Remove single client.
    *
-   * EXAMPLES:
-   * ```cpp
+   * @examples
    * nvhttp::unpair_client("4D7BB2DD-5704-A405-B41C-891A022932E1");
-   * ```
+   * @end_examples
    */
   int
   unpair_client(std::string uuid) {
diff --git a/src/platform/common.h b/src/platform/common.h
index e7e72334703..1bb79233078 100644
--- a/src/platform/common.h
+++ b/src/platform/common.h
@@ -682,10 +682,9 @@ namespace platf {
    * @param input The input_t instance to use.
    * @return util::point_t (x, y)
    *
-   * EXAMPLES:
-   * ```cpp
+   * @examples
    * auto [x, y] = get_mouse_loc(input);
-   * ```
+   * @end_examples
    */
   util::point_t
   get_mouse_loc(input_t &input);
diff --git a/src/platform/linux/input/legacy_input.cpp b/src/platform/linux/input/legacy_input.cpp
index 35534ec445a..d82d98d87f9 100644
--- a/src/platform/linux/input/legacy_input.cpp
+++ b/src/platform/linux/input/legacy_input.cpp
@@ -1075,10 +1075,9 @@ namespace platf {
    * @param x Absolute x position.
    * @param y Absolute y position.
    *
-   * EXAMPLES:
-   * ```cpp
+   * @examples
    * x_abs_mouse(input, 0, 0);
-   * ```
+   * @end_examples
    */
   static void
   x_abs_mouse(input_t &input, float x, float y) {
@@ -1129,10 +1128,9 @@ namespace platf {
    * @param x Absolute x position.
    * @param y Absolute y position.
    *
-   * EXAMPLES:
-   * ```cpp
+   * @examples
    * abs_mouse(input, touch_port, 0, 0);
-   * ```
+   * @end_examples
    */
   void
   abs_mouse(input_t &input, const touch_port_t &touch_port, float x, float y) {
@@ -1161,10 +1159,9 @@ namespace platf {
    * @param deltaX Relative x position.
    * @param deltaY Relative y position.
    *
-   * EXAMPLES:
-   * ```cpp
+   * @examples
    * x_move_mouse(input, 10, 10);  // Move mouse 10 pixels down and right
-   * ```
+   * @end_examples
    */
   static void
   x_move_mouse(input_t &input, int deltaX, int deltaY) {
@@ -1184,10 +1181,9 @@ namespace platf {
    * @param deltaX Relative x position.
    * @param deltaY Relative y position.
    *
-   * EXAMPLES:
-   * ```cpp
+   * @examples
    * move_mouse(input, 10, 10); // Move mouse 10 pixels down and right
-   * ```
+   * @end_examples
    */
   void
   move_mouse(input_t &input, int deltaX, int deltaY) {
@@ -1219,10 +1215,9 @@ namespace platf {
    * @param button Which mouse button to emulate.
    * @param release Whether the event was a press (false) or a release (true)
    *
-   * EXAMPLES:
-   * ```cpp
+   * @examples
    * x_button_mouse(input, 1, false); // Press left mouse button
-   * ```
+   * @end_examples
    */
   static void
   x_button_mouse(input_t &input, int button, bool release) {
@@ -1262,10 +1257,9 @@ namespace platf {
    * @param button Which mouse button to emulate.
    * @param release Whether the event was a press (false) or a release (true)
    *
-   * EXAMPLES:
-   * ```cpp
+   * @examples
    * button_mouse(input, 1, false);  // Press left mouse button
-   * ```
+   * @end_examples
    */
   void
   button_mouse(input_t &input, int button, bool release) {
@@ -1349,10 +1343,9 @@ namespace platf {
    * @param button_pos Which mouse button to emulate for positive scroll.
    * @param button_neg Which mouse button to emulate for negative scroll.
    *
-   * EXAMPLES:
-   * ```cpp
+   * @examples
    * x_scroll(input, 10, 4, 5);
-   * ```
+   * @end_examples
    */
   static void
   x_scroll(input_t &input, int distance, int button_pos, int button_neg) {
@@ -1376,10 +1369,9 @@ namespace platf {
    * @param input The input_t instance to use.
    * @param high_res_distance How far to scroll.
    *
-   * EXAMPLES:
-   * ```cpp
+   * @examples
    * scroll(input, 1200);
-   * ```
+   * @end_examples
    */
   void
   scroll(input_t &input, int high_res_distance) {
@@ -1410,10 +1402,9 @@ namespace platf {
    * @param input The input_t instance to use.
    * @param high_res_distance How far to scroll.
    *
-   * EXAMPLES:
-   * ```cpp
+   * @examples
    * hscroll(input, 1200);
-   * ```
+   * @end_examples
    */
   void
   hscroll(input_t &input, int high_res_distance) {
@@ -1455,10 +1446,9 @@ namespace platf {
    * @param release Whether the event was a press (false) or a release (true).
    * @param flags SS_KBE_FLAG_* values.
    *
-   * EXAMPLES:
-   * ```cpp
+   * @examples
    * x_keyboard(input, 0x5A, false, 0);  // Press Z
-   * ```
+   * @end_examples
    */
   static void
   x_keyboard(input_t &input, uint16_t modcode, bool release, uint8_t flags) {
@@ -1490,10 +1480,9 @@ namespace platf {
    * @param release Whether the event was a press (false) or a release (true).
    * @param flags SS_KBE_FLAG_* values.
    *
-   * EXAMPLES:
-   * ```cpp
+   * @examples
    * keyboard(input, 0x5A, false, 0);  // Press Z
-   * ```
+   * @end_examples
    */
   void
   keyboard_update(input_t &input, uint16_t modcode, bool release, uint8_t flags) {
@@ -2107,10 +2096,9 @@ namespace platf {
   /**
    * @brief Initialize a new keyboard and return it.
    *
-   * EXAMPLES:
-   * ```cpp
+   * @examples
    * auto my_keyboard = keyboard();
-   * ```
+   * @end_examples
    */
   evdev_t
   keyboard() {
@@ -2136,10 +2124,9 @@ namespace platf {
   /**
    * @brief Initialize a new `uinput` virtual relative mouse and return it.
    *
-   * EXAMPLES:
-   * ```cpp
+   * @examples
    * auto my_mouse = mouse_rel();
-   * ```
+   * @end_examples
    */
   evdev_t
   mouse_rel() {
@@ -2187,10 +2174,9 @@ namespace platf {
   /**
    * @brief Initialize a new `uinput` virtual absolute mouse and return it.
    *
-   * EXAMPLES:
-   * ```cpp
+   * @examples
    * auto my_mouse = mouse_abs();
-   * ```
+   * @end_examples
    */
   evdev_t
   mouse_abs() {
@@ -2242,10 +2228,9 @@ namespace platf {
   /**
    * @brief Initialize a new `uinput` virtual touchscreen and return it.
    *
-   * EXAMPLES:
-   * ```cpp
+   * @examples
    * auto my_touchscreen = touchscreen();
-   * ```
+   * @end_examples
    */
   evdev_t
   touchscreen() {
@@ -2349,10 +2334,9 @@ namespace platf {
   /**
    * @brief Initialize a new `uinput` virtual pen pad and return it.
    *
-   * EXAMPLES:
-   * ```cpp
+   * @examples
    * auto my_penpad = penpad();
-   * ```
+   * @end_examples
    */
   evdev_t
   penpad() {
@@ -2448,10 +2432,9 @@ namespace platf {
   /**
    * @brief Initialize a new `uinput` virtual X360 gamepad and return it.
    *
-   * EXAMPLES:
-   * ```cpp
+   * @examples
    * auto my_x360 = x360();
-   * ```
+   * @end_examples
    */
   evdev_t
   x360() {
@@ -2525,10 +2508,9 @@ namespace platf {
   /**
    * @brief Initialize the input system and return it.
    *
-   * EXAMPLES:
-   * ```cpp
+   * @examples
    * auto my_input = input();
-   * ```
+   * @end_examples
    */
   input_t
   input() {
diff --git a/src/rtsp.cpp b/src/rtsp.cpp
index 044b8fbbe8c..9dd732f9f7a 100644
--- a/src/rtsp.cpp
+++ b/src/rtsp.cpp
@@ -563,10 +563,9 @@ namespace rtsp_stream {
      * @brief Clear launch sessions.
      * @param all If true, clear all sessions. Otherwise, only clear timed out and stopped sessions.
      *
-     * EXAMPLES:
-     * ```cpp
+     * @examples
      * clear(false);
-     * ```
+     * @end_examples
      */
     void
     clear(bool all = true) {