diff --git a/.gitignore b/.gitignore
index 7e4ade9c2bb72376b215480b81a89f15eb777954..75c2785989bdbb2cbaad7b42af0f8cf1f59a2657 100644
--- a/.gitignore
+++ b/.gitignore
@@ -36,3 +36,9 @@ subprojects/icu
 subprojects/ffmpeg
 subprojects/ffms2*
 subprojects/boost*
+
+# Build and tag files
+cscope.files
+git_version.h
+git_version.xml
+tags
diff --git a/libaegisub/unix/path.cpp b/libaegisub/unix/path.cpp
index 0541e0dbe416f30d7b4cb07677001856165f0ba2..934371a64df605fc6ab1876ea624cb674bea2d80 100644
--- a/libaegisub/unix/path.cpp
+++ b/libaegisub/unix/path.cpp
@@ -44,7 +44,17 @@ void Path::FillPlatformSpecificPaths() {
 	agi::fs::path home = home_dir();
 	SetToken("?user", home/".aegisub");
 	SetToken("?local", home/".aegisub");
+#ifdef __linux__
+    /* AppImage case */
+    if (const char *ptr_root = getenv("APPDIR"); ptr_root != nullptr) {
+        agi::fs::path root = ptr_root;
+        SetToken("?data", root/P_DATA);
+    } else {
+        SetToken("?data", P_DATA);
+    }
+#else
 	SetToken("?data", P_DATA);
+#endif
 	SetToken("?dictionary", "/usr/share/hunspell");
 #else
 	agi::fs::path app_support = agi::util::GetApplicationSupportDirectory();
diff --git a/meson.build b/meson.build
index fd558be4d96908f11fee9f2130fa97b3ae73a2b1..353110f474d2003db359b968b89c05a880d9028a 100644
--- a/meson.build
+++ b/meson.build
@@ -1,7 +1,7 @@
 project('Aegisub', ['c', 'cpp'],
         license: 'BSD-3-Clause',
         meson_version: '>=0.56.0',
-        default_options: ['cpp_std=c++11', 'buildtype=debugoptimized'],
+        default_options: ['cpp_std=c++17', 'buildtype=debugoptimized'],
         version: '3.3.3')
 
 cmake = import('cmake')