diff -pruN 0.1.11-1/.clang-tidy 0.1.13-0.1/.clang-tidy
--- 0.1.11-1/.clang-tidy	1970-01-01 00:00:00.000000000 +0000
+++ 0.1.13-0.1/.clang-tidy	2025-07-31 12:14:09.000000000 +0000
@@ -0,0 +1,101 @@
+WarningsAsErrors: '*'
+HeaderFilterRegex: '.*\.hpp'
+FormatStyle: file
+Checks: >
+  -*,
+  bugprone-*,
+  -bugprone-easily-swappable-parameters,
+  -bugprone-forward-declararion-namespace,
+  -bugprone-forward-declararion-namespace,
+  -bugprone-macro-parentheses,
+  -bugprone-narrowing-conversions,
+  -bugprone-branch-clone,
+  -bugprone-assignment-in-if-condition,
+  concurrency-*,
+  -concurrency-mt-unsafe,
+  cppcoreguidelines-*,
+  -cppcoreguidelines-owning-memory,
+  -cppcoreguidelines-avoid-magic-numbers,
+  -cppcoreguidelines-pro-bounds-constant-array-index,
+  -cppcoreguidelines-avoid-const-or-ref-data-members,
+  -cppcoreguidelines-non-private-member-variables-in-classes,
+  -cppcoreguidelines-avoid-goto,
+  -cppcoreguidelines-pro-bounds-array-to-pointer-decay,
+  -cppcoreguidelines-avoid-do-while,
+  -cppcoreguidelines-avoid-non-const-global-variables,
+  -cppcoreguidelines-special-member-functions,
+  -cppcoreguidelines-explicit-virtual-functions,
+  -cppcoreguidelines-avoid-c-arrays,
+  -cppcoreguidelines-pro-bounds-pointer-arithmetic,
+  -cppcoreguidelines-narrowing-conversions,
+  -cppcoreguidelines-pro-type-union-access,
+  -cppcoreguidelines-pro-type-member-init,
+  -cppcoreguidelines-macro-usage,
+  -cppcoreguidelines-macro-to-enum,
+  -cppcoreguidelines-init-variables,
+  -cppcoreguidelines-pro-type-cstyle-cast,
+  -cppcoreguidelines-pro-type-vararg,
+  -cppcoreguidelines-pro-type-reinterpret-cast,
+  google-global-names-in-headers,
+  -google-readability-casting,
+  google-runtime-operator,
+  misc-*,
+  -misc-unused-parameters,
+  -misc-no-recursion,
+  -misc-non-private-member-variables-in-classes,
+  -misc-include-cleaner,
+  -misc-use-anonymous-namespace,
+  -misc-const-correctness,
+  modernize-*,
+  -modernize-return-braced-init-list,
+  -modernize-use-trailing-return-type,
+  -modernize-use-using,
+  -modernize-use-override,
+  -modernize-avoid-c-arrays,
+  -modernize-macro-to-enum,
+  -modernize-loop-convert,
+  -modernize-use-nodiscard,
+  -modernize-pass-by-value,
+  -modernize-use-auto,
+  performance-*,
+  -performance-avoid-endl,
+  -performance-unnecessary-value-param,
+  portability-std-allocator-const,
+  readability-*,
+  -readability-function-cognitive-complexity,
+  -readability-function-size,
+  -readability-identifier-length,
+  -readability-magic-numbers,
+  -readability-uppercase-literal-suffix,
+  -readability-braces-around-statements,
+  -readability-redundant-access-specifiers,
+  -readability-else-after-return,
+  -readability-container-data-pointer,
+  -readability-implicit-bool-conversion,
+  -readability-avoid-nested-conditional-operator,
+  -readability-redundant-member-init,
+  -readability-redundant-string-init,
+  -readability-avoid-const-params-in-decls,
+  -readability-named-parameter,
+  -readability-convert-member-functions-to-static,
+  -readability-qualified-auto,
+  -readability-make-member-function-const,
+  -readability-isolate-declaration,
+  -readability-inconsistent-declaration-parameter-name,
+  -clang-diagnostic-error,
+
+CheckOptions:
+  performance-for-range-copy.WarnOnAllAutoCopies: true
+  performance-inefficient-string-concatenation.StrictMode: true
+  readability-braces-around-statements.ShortStatementLines: 0
+  readability-identifier-naming.ClassCase: CamelCase
+  readability-identifier-naming.ClassIgnoredRegexp: I.*
+  readability-identifier-naming.ClassPrefix: C # We can't use regex here?!?!?!?
+  readability-identifier-naming.EnumCase: CamelCase
+  readability-identifier-naming.EnumPrefix: e
+  readability-identifier-naming.EnumConstantCase: UPPER_CASE
+  readability-identifier-naming.FunctionCase: camelBack
+  readability-identifier-naming.NamespaceCase: CamelCase
+  readability-identifier-naming.NamespacePrefix: N
+  readability-identifier-naming.StructPrefix: S
+  readability-identifier-naming.StructCase: CamelCase
diff -pruN 0.1.11-1/CMakeLists.txt 0.1.13-0.1/CMakeLists.txt
--- 0.1.11-1/CMakeLists.txt	2025-03-02 08:05:46.000000000 +0000
+++ 0.1.13-0.1/CMakeLists.txt	2025-07-31 12:14:09.000000000 +0000
@@ -20,6 +20,16 @@ set(LIBDIR ${CMAKE_INSTALL_FULL_LIBDIR})
 configure_file(hyprcursor.pc.in hyprcursor.pc @ONLY)
 
 set(CMAKE_CXX_STANDARD 23)
+add_compile_options(
+  -Wall
+  -Wextra
+  -Wpedantic
+  -Wno-unused-parameter
+  -Wno-unused-value
+  -Wno-missing-field-initializers
+  -Wno-narrowing
+  -Wno-pointer-arith)
+set(CMAKE_EXPORT_COMPILE_COMMANDS TRUE)
 
 find_package(PkgConfig REQUIRED)
 pkg_check_modules(
@@ -63,13 +73,6 @@ set_target_properties(
 
 target_link_libraries(hyprcursor PkgConfig::deps)
 
-if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
-  # for std::expected. probably evil. Arch's clang is very outdated tho...
-  target_compile_options(
-    hyprcursor PUBLIC $<$<COMPILE_LANGUAGE:CXX>:-std=gnu++2b
-                      -D__cpp_concepts=202002L> -Wno-builtin-macro-redefined)
-endif()
-
 # hyprcursor-util
 file(
   GLOB_RECURSE
diff -pruN 0.1.11-1/README.md 0.1.13-0.1/README.md
--- 0.1.11-1/README.md	2025-03-02 08:05:46.000000000 +0000
+++ 0.1.13-0.1/README.md	2025-07-31 12:14:09.000000000 +0000
@@ -37,16 +37,6 @@ It provides C and C++ bindings.
 
 For both C and C++, see `tests/`.
 
-## TODO
-
-Library:
- - [x] Support animated cursors
- - [x] Support SVG cursors
-
-Util:
- - [ ] Support compiling a theme with X
- - [x] Support decompiling animated cursors
-
 ## Building
 
 ### Deps:
diff -pruN 0.1.11-1/VERSION 0.1.13-0.1/VERSION
--- 0.1.11-1/VERSION	2025-03-02 08:05:46.000000000 +0000
+++ 0.1.13-0.1/VERSION	2025-07-31 12:14:09.000000000 +0000
@@ -1 +1 @@
-0.1.11
+0.1.13
diff -pruN 0.1.11-1/debian/changelog 0.1.13-0.1/debian/changelog
--- 0.1.11-1/debian/changelog	2025-03-02 08:05:54.000000000 +0000
+++ 0.1.13-0.1/debian/changelog	2025-10-06 09:59:22.000000000 +0000
@@ -1,3 +1,20 @@
+libhyprcursor (0.1.13-0.1) unstable; urgency=medium
+
+  * Non-maintainer upload
+  * New upstream release (Closes: #1106525, #1117188)
+  * Updated to watchfile version 5
+
+ -- Carl Keinath <carl.keinath@gmail.com>  Mon, 06 Oct 2025 11:59:22 +0200
+
+libhyprcursor (0.1.12-1) unstable; urgency=medium
+
+  [ alan (NyxTrail) ]
+  * New upstream version 0.1.12
+  * Update standards version to 4.7.2
+  * Add d/gbp.conf for recommended repo layout
+
+ -- Alan M Varghese (NyxTrail) <alan@digistorm.in>  Sun, 04 May 2025 12:05:37 +0000
+
 libhyprcursor (0.1.11-1) unstable; urgency=medium
 
   * New upstream version 0.1.11
diff -pruN 0.1.11-1/debian/control 0.1.13-0.1/debian/control
--- 0.1.11-1/debian/control	2025-03-02 08:05:54.000000000 +0000
+++ 0.1.13-0.1/debian/control	2025-10-06 09:59:22.000000000 +0000
@@ -2,7 +2,7 @@ Source: libhyprcursor
 Section: x11
 Priority: optional
 Maintainer: Alan M Varghese (NyxTrail) <alan@digistorm.in>
-Build-Depends: cmake, 
+Build-Depends: cmake,
   debhelper-compat (= 13),
   libcairo2-dev,
   libhyprlang-dev (>= 0.4.2),
@@ -10,7 +10,7 @@ Build-Depends: cmake,
   libtomlplusplus-dev,
   libzip-dev,
   pandoc,
-  pkgconf
+  pkgconf,
 Standards-Version: 4.7.2
 Homepage: https://github.com/hyprwm/hyprcursor
 Rules-Requires-Root: no
diff -pruN 0.1.11-1/debian/gbp.conf 0.1.13-0.1/debian/gbp.conf
--- 0.1.11-1/debian/gbp.conf	1970-01-01 00:00:00.000000000 +0000
+++ 0.1.13-0.1/debian/gbp.conf	2025-10-06 09:59:22.000000000 +0000
@@ -0,0 +1,4 @@
+[DEFAULT]
+debian-branch = debian/latest
+upstream-branch = upstream/latest
+pristine-tar = True
diff -pruN 0.1.11-1/debian/salsa-ci.yml 0.1.13-0.1/debian/salsa-ci.yml
--- 0.1.11-1/debian/salsa-ci.yml	2025-03-02 08:05:54.000000000 +0000
+++ 0.1.13-0.1/debian/salsa-ci.yml	2025-10-06 09:59:22.000000000 +0000
@@ -1,10 +1,3 @@
-# For more information on what jobs are run see:
-# https://salsa.debian.org/salsa-ci-team/pipeline
-#
-# To enable the jobs, go to your repository (at salsa.debian.org)
-# and click over Settings > CI/CD > Expand (in General pipelines).
-# In "CI/CD configuration file" write debian/salsa-ci.yml and click
-# in "Save Changes". The CI tests will run after the next commit.
 ---
 include:
   - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/recipes/debian.yml
diff -pruN 0.1.11-1/debian/watch 0.1.13-0.1/debian/watch
--- 0.1.11-1/debian/watch	2025-03-02 08:05:54.000000000 +0000
+++ 0.1.13-0.1/debian/watch	2025-10-06 09:59:22.000000000 +0000
@@ -1,4 +1,5 @@
-version=4
-opts="searchmode=html" \
-  https://github.com/hyprwm/hyprcursor/tags \
-  https://github.com/hyprwm/hyprcursor/archive/refs/tags/v(\d+.\d+.\d+)\.tar\.gz
+Version: 5
+
+Template: Github
+Owner: hyprwm
+Project: hyprcursor
diff -pruN 0.1.11-1/docs/MAKING_THEMES.md 0.1.13-0.1/docs/MAKING_THEMES.md
--- 0.1.11-1/docs/MAKING_THEMES.md	2025-03-02 08:05:46.000000000 +0000
+++ 0.1.13-0.1/docs/MAKING_THEMES.md	2025-07-31 12:14:09.000000000 +0000
@@ -58,6 +58,7 @@ hotspot_y = 0.0 # this goes 0 - 1
 # Define what cursor images this one should override.
 # What this means is that a request for a cursor name e.g. "arrow"
 # will instead use this one, even if this one is named something else.
+# There is no unified list for all the available cursor names but this wayland list could be used as a reference https://gitlab.freedesktop.org/wayland/wayland-protocols/-/blob/main/staging/cursor-shape/cursor-shape-v1.xml#L71 for wayland specific cursors.
 define_override = arrow
 define_override = default
 
diff -pruN 0.1.11-1/flake.lock 0.1.13-0.1/flake.lock
--- 0.1.11-1/flake.lock	2025-03-02 08:05:46.000000000 +0000
+++ 0.1.13-0.1/flake.lock	2025-07-31 12:14:09.000000000 +0000
@@ -11,11 +11,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1734364628,
-        "narHash": "sha256-ii8fzJfI953n/EmIxVvq64ZAwhvwuuPHWfGd61/mJG8=",
+        "lastModified": 1749145882,
+        "narHash": "sha256-qr0KXeczF8Sma3Ae7+dR2NHhvG7YeLBJv19W4oMu6ZE=",
         "owner": "hyprwm",
         "repo": "hyprlang",
-        "rev": "16e59c1eb13d9fb6de066f54e7555eb5e8a4aba5",
+        "rev": "1bfb84f54d50c7ae6558c794d3cfd5f6a7e6e676",
         "type": "github"
       },
       "original": {
@@ -36,11 +36,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1733502241,
-        "narHash": "sha256-KAUNC4Dgq8WQjYov5auBw/usaHixhacvb7cRDd0AG/k=",
+        "lastModified": 1749135356,
+        "narHash": "sha256-Q8mAKMDsFbCEuq7zoSlcTuxgbIBVhfIYpX0RjE32PS0=",
         "owner": "hyprwm",
         "repo": "hyprutils",
-        "rev": "104117aed6dd68561be38b50f218190aa47f2cd8",
+        "rev": "e36db00dfb3a3d3fdcc4069cb292ff60d2699ccb",
         "type": "github"
       },
       "original": {
@@ -51,11 +51,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1734119587,
-        "narHash": "sha256-AKU6qqskl0yf2+JdRdD0cfxX4b9x3KKV5RqA6wijmPM=",
+        "lastModified": 1748929857,
+        "narHash": "sha256-lcZQ8RhsmhsK8u7LIFsJhsLh/pzR9yZ8yqpTzyGdj+Q=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "3566ab7246670a43abd2ffa913cc62dad9cdf7d5",
+        "rev": "c2a03962b8e24e669fb37b7df10e7c79531ff1a4",
         "type": "github"
       },
       "original": {
diff -pruN 0.1.11-1/hyprcursor-util/src/main.cpp 0.1.13-0.1/hyprcursor-util/src/main.cpp
--- 0.1.11-1/hyprcursor-util/src/main.cpp	2025-03-02 08:05:46.000000000 +0000
+++ 0.1.13-0.1/hyprcursor-util/src/main.cpp	2025-07-31 12:14:09.000000000 +0000
@@ -16,12 +16,12 @@
 #define ZIP_LENGTH_TO_END -1
 #endif
 
-enum eOperation {
+enum eOperation : uint8_t {
     OPERATION_CREATE  = 0,
     OPERATION_EXTRACT = 1,
 };
 
-eHyprcursorResizeAlgo explicitResizeAlgo = HC_RESIZE_INVALID;
+static eHyprcursorResizeAlgo explicitResizeAlgo = HC_RESIZE_INVALID;
 
 struct XCursorConfigEntry {
     int         size = 0, hotspotX = 0, hotspotY = 0, delay = 0;
@@ -119,7 +119,7 @@ static std::optional<std::string> create
             return "couldn't parse meta: " + *PARSERESULT2;
 
         for (auto& i : meta.parsedData.definedSizes) {
-            SHAPE->images.push_back(SCursorImage{i.file, i.size, i.delayMs});
+            SHAPE->images.push_back(SCursorImage{.filename = i.file, .size = i.size, .delay = i.delayMs});
         }
 
         SHAPE->overrides = meta.parsedData.overrides;
@@ -388,7 +388,7 @@ int main(int argc, char** argv, char** e
     eOperation  op   = OPERATION_CREATE;
     std::string path = "", out = "";
 
-    for (size_t i = 1; i < argc; ++i) {
+    for (int i = 1; i < argc; ++i) {
         std::string arg = argv[i];
 
         if (arg == "-v" || arg == "--version") {
diff -pruN 0.1.11-1/include/hyprcursor/hyprcursor.hpp 0.1.13-0.1/include/hyprcursor/hyprcursor.hpp
--- 0.1.11-1/include/hyprcursor/hyprcursor.hpp	2025-03-02 08:05:46.000000000 +0000
+++ 0.1.13-0.1/include/hyprcursor/hyprcursor.hpp	2025-07-31 12:14:09.000000000 +0000
@@ -1,7 +1,7 @@
 #pragma once
 
 #include <vector>
-#include <stdlib.h>
+#include <cstdlib>
 #include <string>
 
 #include "shared.h"
@@ -114,7 +114,7 @@ namespace Hyprcursor {
 
             SCursorShapeData   data;
 
-            for (size_t i = 0; i < size; ++i) {
+            for (int i = 0; i < size; ++i) {
                 SCursorImageData image;
                 image.delay    = images[i]->delay;
                 image.size     = images[i]->size;
@@ -197,4 +197,4 @@ namespace Hyprcursor {
         friend class CHyprcursorImplementation;
     };
 
-}
\ No newline at end of file
+}
diff -pruN 0.1.11-1/libhyprcursor/VarList.cpp 0.1.13-0.1/libhyprcursor/VarList.cpp
--- 0.1.11-1/libhyprcursor/VarList.cpp	2025-03-02 08:05:46.000000000 +0000
+++ 0.1.13-0.1/libhyprcursor/VarList.cpp	2025-07-31 12:14:09.000000000 +0000
@@ -38,7 +38,7 @@ CVarList::CVarList(const std::string& in
             break;
         }
         pos += s.size() + 1;
-        m_vArgs.emplace_back(removeBeginEndSpacesTabs(std::string_view{s}.data()));
+        m_vArgs.emplace_back(removeBeginEndSpacesTabs(s.data()));
     }
 }
 
@@ -51,4 +51,4 @@ std::string CVarList::join(const std::st
     }
 
     return rolling;
-}
\ No newline at end of file
+}
diff -pruN 0.1.11-1/libhyprcursor/hyprcursor.cpp 0.1.13-0.1/libhyprcursor/hyprcursor.cpp
--- 0.1.11-1/libhyprcursor/hyprcursor.cpp	2025-03-02 08:05:46.000000000 +0000
+++ 0.1.13-0.1/libhyprcursor/hyprcursor.cpp	2025-07-31 12:14:09.000000000 +0000
@@ -2,6 +2,7 @@
 #include "internalSharedTypes.hpp"
 #include "internalDefines.hpp"
 #include <array>
+#include <cstddef>
 #include <sstream>
 #include <cstdio>
 #include <filesystem>
@@ -96,7 +97,7 @@ static std::string getFirstTheme(PHYPRCU
     }
 
     for (auto& dir : systemThemeDirs) {
-        const auto FULLPATH = dir;
+        const auto& FULLPATH = dir;
         if (!pathAccessible(FULLPATH)) {
             Debug::log(HC_LOG_TRACE, logfn, "Skipping path {} because it's inaccessible.", FULLPATH);
             continue;
@@ -175,7 +176,7 @@ static std::string getFullPathForThemeNa
     }
 
     for (auto& dir : systemThemeDirs) {
-        const auto FULLPATH = dir;
+        const auto& FULLPATH = dir;
         if (!pathAccessible(FULLPATH)) {
             Debug::log(HC_LOG_TRACE, logfn, "Skipping path {} because it's inaccessible.", FULLPATH);
             continue;
@@ -217,23 +218,19 @@ static std::string getFullPathForThemeNa
     return "";
 }
 
-SManagerOptions::SManagerOptions() {
-    logFn                = nullptr;
-    allowDefaultFallback = true;
+SManagerOptions::SManagerOptions() : logFn(nullptr), allowDefaultFallback(true) {
+    ;
 }
 
 CHyprcursorManager::CHyprcursorManager(const char* themeName_) {
     init(themeName_);
 }
 
-CHyprcursorManager::CHyprcursorManager(const char* themeName_, PHYPRCURSORLOGFUNC fn) {
-    logFn = fn;
+CHyprcursorManager::CHyprcursorManager(const char* themeName_, PHYPRCURSORLOGFUNC fn) : logFn(fn) {
     init(themeName_);
 }
 
-CHyprcursorManager::CHyprcursorManager(const char* themeName_, SManagerOptions options) {
-    logFn                = options.logFn;
-    allowDefaultFallback = options.allowDefaultFallback;
+CHyprcursorManager::CHyprcursorManager(const char* themeName_, SManagerOptions options) : allowDefaultFallback(options.allowDefaultFallback), logFn(options.logFn) {
     init(themeName_);
 }
 
@@ -284,8 +281,7 @@ void CHyprcursorManager::init(const char
 }
 
 CHyprcursorManager::~CHyprcursorManager() {
-    if (impl)
-        delete impl;
+    delete impl;
 }
 
 bool CHyprcursorManager::valid() {
@@ -500,7 +496,7 @@ bool CHyprcursorManager::loadThemeStyle(
 
             Debug::log(HC_LOG_TRACE, logFn, "loadThemeStyle: png shape {} has {} frames", shape->directory, FRAMES.size());
 
-            const int PIXELSIDE = std::round(leader->side / shape->nominalSize);
+            const int PIXELSIDE = std::round(info.size / shape->nominalSize);
 
             Debug::log(HC_LOG_TRACE, logFn, "loadThemeStyle: png shape has nominal {:.2f}, pixel size will be {}x", shape->nominalSize, PIXELSIDE);
 
@@ -508,7 +504,7 @@ bool CHyprcursorManager::loadThemeStyle(
                 auto& newImage           = impl->loadedShapes[shape.get()].images.emplace_back(std::make_unique<SLoadedCursorImage>());
                 newImage->artificial     = true;
                 newImage->side           = PIXELSIDE;
-                newImage->artificialData = new char[PIXELSIDE * PIXELSIDE * 4];
+                newImage->artificialData = new char[static_cast<unsigned long>(PIXELSIDE * PIXELSIDE * 4)];
                 newImage->cairoSurface   = cairo_image_surface_create_for_data((unsigned char*)newImage->artificialData, CAIRO_FORMAT_ARGB32, PIXELSIDE, PIXELSIDE, PIXELSIDE * 4);
                 newImage->delay          = f->delay;
 
@@ -549,7 +545,7 @@ bool CHyprcursorManager::loadThemeStyle(
                 auto& newImage           = impl->loadedShapes[shape.get()].images.emplace_back(std::make_unique<SLoadedCursorImage>());
                 newImage->artificial     = true;
                 newImage->side           = PIXELSIDE;
-                newImage->artificialData = new char[PIXELSIDE * PIXELSIDE * 4];
+                newImage->artificialData = new char[static_cast<unsigned long>(PIXELSIDE * PIXELSIDE * 4)];
                 newImage->cairoSurface   = cairo_image_surface_create_for_data((unsigned char*)newImage->artificialData, CAIRO_FORMAT_ARGB32, PIXELSIDE, PIXELSIDE, PIXELSIDE * 4);
                 newImage->delay          = f->delay;
 
@@ -572,12 +568,14 @@ bool CHyprcursorManager::loadThemeStyle(
 
                 if (!rsvg_handle_render_document(handle, PCAIRO, &rect, &error)) {
                     Debug::log(HC_LOG_ERR, logFn, "Failed rendering svg: {}", error->message);
+                    g_object_unref(handle);
                     return false;
                 }
 
                 // done
                 cairo_surface_flush(newImage->cairoSurface);
                 cairo_destroy(PCAIRO);
+                g_object_unref(handle);
             }
         } else {
             Debug::log(HC_LOG_ERR, logFn, "Invalid shapetype in loadThemeStyle");
@@ -687,9 +685,9 @@ std::optional<std::string> CHyprcursorIm
 
         zip_file_t* meta_file = zip_fopen_index(zip, index, ZIP_FL_UNCHANGED);
 
-        char*       buffer = new char[1024 * 1024]; /* 1MB should be more than enough */
+        char*       buffer = new char[static_cast<unsigned long>(1024 * 1024)]; /* 1MB should be more than enough */
 
-        int         readBytes = zip_fread(meta_file, buffer, 1024 * 1024 - 1);
+        int         readBytes = zip_fread(meta_file, buffer, (1024 * 1024) - 1);
 
         zip_fclose(meta_file);
 
@@ -709,7 +707,7 @@ std::optional<std::string> CHyprcursorIm
             return "cursor" + cursor.path().string() + "failed to parse meta: " + *METAPARSERESULT;
 
         for (auto& i : meta.parsedData.definedSizes) {
-            SHAPE->images.push_back(SCursorImage{i.file, i.size, i.delayMs});
+            SHAPE->images.push_back(SCursorImage{.filename = i.file, .size = i.size, .delay = i.delayMs});
         }
 
         SHAPE->overrides = meta.parsedData.overrides;
@@ -753,8 +751,8 @@ std::optional<std::string> CHyprcursorIm
                 IMAGE->data    = new char[sb.size + 1];
                 IMAGE->dataLen = sb.size + 1;
             } else {
-                IMAGE->data    = new char[1024 * 1024]; /* 1MB should be more than enough, again. This probably should be in the spec. */
-                IMAGE->dataLen = 1024 * 1024;
+                IMAGE->data    = new char[static_cast<unsigned long>(1024 * 1024)]; /* 1MB should be more than enough, again. This probably should be in the spec. */
+                IMAGE->dataLen = static_cast<size_t>(1024 * 1024);
             }
 
             IMAGE->dataLen = zip_fread(image_file, IMAGE->data, IMAGE->dataLen - 1);
diff -pruN 0.1.11-1/libhyprcursor/hyprcursor_c.cpp 0.1.13-0.1/libhyprcursor/hyprcursor_c.cpp
--- 0.1.11-1/libhyprcursor/hyprcursor_c.cpp	2025-03-02 08:05:46.000000000 +0000
+++ 0.1.13-0.1/libhyprcursor/hyprcursor_c.cpp	2025-07-31 12:14:09.000000000 +0000
@@ -38,7 +38,7 @@ struct SCursorImageData** hyprcursor_get
 }
 
 void hyprcursor_cursor_image_data_free(hyprcursor_cursor_image_data** data, int size) {
-    for (size_t i = 0; i < size; ++i) {
+    for (int i = 0; i < size; ++i) {
         free(data[i]);
     }
 
@@ -49,7 +49,7 @@ void hyprcursor_style_done(hyprcursor_ma
     const auto       MGR = (CHyprcursorManager*)manager;
     SCursorStyleInfo info;
     info.size = info_.size;
-    return MGR->cursorSurfaceStyleDone(info);
+    MGR->cursorSurfaceStyleDone(info);
 }
 
 void hyprcursor_register_logging_function(struct hyprcursor_manager_t* manager, PHYPRCURSORLOGFUNC fn) {
@@ -71,4 +71,4 @@ CAPI void hyprcursor_raw_shape_data_free
 
     delete[] data->images;
     delete data;
-}
\ No newline at end of file
+}
diff -pruN 0.1.11-1/libhyprcursor/meta.cpp 0.1.13-0.1/libhyprcursor/meta.cpp
--- 0.1.11-1/libhyprcursor/meta.cpp	2025-03-02 08:05:46.000000000 +0000
+++ 0.1.13-0.1/libhyprcursor/meta.cpp	2025-07-31 12:14:09.000000000 +0000
@@ -8,9 +8,9 @@
 
 #include "VarList.hpp"
 
-CMeta* currentMeta = nullptr;
+static CMeta* currentMeta = nullptr;
 
-CMeta::CMeta(const std::string& rawdata_, bool hyprlang_ /* false for toml */, bool dataIsPath) : rawdata(rawdata_), hyprlang(hyprlang_), dataPath(dataIsPath) {
+CMeta::CMeta(const std::string& rawdata_, bool hyprlang_ /* false for toml */, bool dataIsPath) : dataPath(dataIsPath), hyprlang(hyprlang_), rawdata(rawdata_) {
     if (!dataIsPath)
         return;
 
@@ -87,8 +87,8 @@ static Hyprlang::CParseResult parseDefin
         CMeta::SDefinedSize size;
 
         if (RHS.contains(",")) {
-            const auto LL = removeBeginEndSpacesTabs(RHS.substr(0, RHS.find(",")));
-            const auto RR = removeBeginEndSpacesTabs(RHS.substr(RHS.find(",") + 1));
+            const auto LL = removeBeginEndSpacesTabs(RHS.substr(0, RHS.find(',')));
+            const auto RR = removeBeginEndSpacesTabs(RHS.substr(RHS.find(',') + 1));
 
             try {
                 size.delayMs = std::stoull(RR);
@@ -130,7 +130,7 @@ static Hyprlang::CParseResult parseOverr
     CVarList               overrides(VALUE, 0, ';');
 
     for (const auto& o : overrides) {
-        currentMeta->parsedData.overrides.push_back(VALUE);
+        currentMeta->parsedData.overrides.push_back(o);
     }
 
     return result;
diff -pruN 0.1.11-1/nix/overlays.nix 0.1.13-0.1/nix/overlays.nix
--- 0.1.11-1/nix/overlays.nix	2025-03-02 08:05:46.000000000 +0000
+++ 0.1.13-0.1/nix/overlays.nix	2025-07-31 12:14:09.000000000 +0000
@@ -15,7 +15,7 @@ in {
     inputs.hyprlang.overlays.default
     (final: prev: {
       hyprcursor = prev.callPackage ./default.nix {
-        stdenv = prev.gcc14Stdenv;
+        stdenv = prev.gcc15Stdenv;
         version = version + "+date=" + (mkDate (inputs.self.lastModifiedDate or "19700101")) + "_" + (inputs.self.shortRev or "dirty");
         inherit (final) hyprlang;
       };
diff -pruN 0.1.11-1/tests/c_test.c 0.1.13-0.1/tests/c_test.c
--- 0.1.11-1/tests/c_test.c	2025-03-02 08:05:46.000000000 +0000
+++ 0.1.13-0.1/tests/c_test.c	2025-07-31 12:14:09.000000000 +0000
@@ -43,10 +43,10 @@ int main(int argc, char** argv) {
         return 1;
     }
 
-    printf("left_ptr images: %d\n", shapeData->len);
+    printf("left_ptr images: %ld\n", shapeData->len);
 
     for (size_t i = 0; i < shapeData->len; ++i) {
-        printf("left_ptr image size: %d\n", shapeData->images[i].len);
+        printf("left_ptr image size: %ld\n", shapeData->images[i].len);
     }
 
     hyprcursor_raw_shape_data_free(shapeData);
@@ -76,4 +76,4 @@ int main(int argc, char** argv) {
     }
 
     return 0;
-}
\ No newline at end of file
+}
