From 4162eabe9347b7debf9f31a02f2bb837f65021ee Mon Sep 17 00:00:00 2001
From: PenitentMonke <>
Date: Sun, 7 Jul 2024 02:40:33 -0300
Subject: [PATCH] Adhere to XDG base dir spec on Linux

Change how NHENTAI_HOME is set to follow the XDG Base Directory
Specification where possible, when running on Linux.

ISSUE: 299
---
 nhentai/constant.py | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/nhentai/constant.py b/nhentai/constant.py
index 3d677ad..9307887 100644
--- a/nhentai/constant.py
+++ b/nhentai/constant.py
@@ -3,7 +3,22 @@ import os
 import tempfile
 
 from urllib.parse import urlparse
+from platform import system
 
+def get_nhentai_home() -> str:
+    home = os.getenv('HOME', tempfile.gettempdir())
+
+    if system() == 'Linux':
+        xdgdat = os.getenv('XDG_DATA_HOME')
+        if xdgdat and os.path.exists(os.path.join(xdgdat, 'nhentai')):
+            return os.path.join(xdgdat, 'nhentai')
+        if home and os.path.exists(os.path.join(home, '.nhentai')):
+            return os.path.join(home, '.nhentai')
+        if xdgdat:
+            return os.path.join(xdgdat, 'nhentai')
+
+    # Use old default path in other systems
+    return os.path.join(home, '.nhentai')
 
 DEBUG = os.getenv('DEBUG', False)
 BASE_URL = os.getenv('NHENTAI', 'https://nhentai.net')
@@ -21,7 +36,7 @@ FAV_URL = f'{BASE_URL}/favorites/'
 
 IMAGE_URL = f'{urlparse(BASE_URL).scheme}://i.{urlparse(BASE_URL).hostname}/galleries'
 
-NHENTAI_HOME = os.path.join(os.getenv('HOME', tempfile.gettempdir()), '.nhentai')
+NHENTAI_HOME = get_nhentai_home()
 NHENTAI_HISTORY = os.path.join(NHENTAI_HOME, 'history.sqlite3')
 NHENTAI_CONFIG_FILE = os.path.join(NHENTAI_HOME, 'config.json')