aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md4
-rw-r--r--src/QuickMedia.cpp5
-rw-r--r--src/Storage.cpp27
3 files changed, 32 insertions, 4 deletions
diff --git a/README.md b/README.md
index f7147d5..a5af07f 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,8 @@
# QuickMedia
A dmenu-inspired native client for web services.
Currently supported web services: `youtube`, `soundcloud`, `nyaa.si`, `manganelo`, `manganelos`, `mangatown`, `mangakatana`, `mangadex`, `readm`, `onimanga`, `4chan`, `matrix`, `saucenao`, `hotexamples`, `mal` and _others_.\
-Config data, including manga progress is stored under `$HOME/.config/quickmedia`.\
-Cache is stored under `$HOME/.cache/quickmedia`.
+Config data, including manga progress is stored under `$XDG_CONFIG_HOME/quickmedia` or `$HOME/.config/quickmedia`.\
+Cache is stored under `$XDG_CACHE_HOME/quickmedia` or `$HOME/.cache/quickmedia`.
## Usage
```
usage: quickmedia [plugin] [--use-system-mpv-config] [--dir <directory>] [-e <window>] [youtube-url]
diff --git a/src/QuickMedia.cpp b/src/QuickMedia.cpp
index 9b982a1..e6c642d 100644
--- a/src/QuickMedia.cpp
+++ b/src/QuickMedia.cpp
@@ -734,6 +734,11 @@ namespace QuickMedia {
abort();
}
+ if(create_directory_recursive(get_storage_dir()) != 0) {
+ show_notification("QuickMedia", "Failed to create storage directory", Urgency::CRITICAL);
+ abort();
+ }
+
//if(create_directory_recursive(get_storage_dir().join("file-manager")) != 0) {
// show_notification("QuickMedia", "Failed to create file-manager directory", Urgency::CRITICAL);
// abort();
diff --git a/src/Storage.cpp b/src/Storage.cpp
index 375be57..4baca49 100644
--- a/src/Storage.cpp
+++ b/src/Storage.cpp
@@ -82,12 +82,35 @@ namespace QuickMedia {
return homeDir;
}
+ static Path xdg_config_home;
+ static Path xdg_cache_home;
+
Path get_storage_dir() {
- return get_home_dir().join(".config").join("quickmedia");
+ if(xdg_config_home.data.empty()) {
+ const char *xdg_config_home_p = getenv("XDG_CONFIG_HOME");
+ if(xdg_config_home_p)
+ xdg_config_home = xdg_config_home_p;
+ else
+ xdg_config_home = get_home_dir().join(".config");
+ }
+
+ Path storage_dir = xdg_config_home;
+ storage_dir.join("quickmedia");
+ return storage_dir;
}
Path get_cache_dir() {
- return get_home_dir().join(".cache").join("quickmedia");
+ if(xdg_cache_home.data.empty()) {
+ const char *xdg_cache_home_p = getenv("XDG_CACHE_HOME");
+ if(xdg_cache_home_p)
+ xdg_cache_home = xdg_cache_home_p;
+ else
+ xdg_cache_home = get_home_dir().join(".cache");
+ }
+
+ Path cache_dir = xdg_cache_home;
+ cache_dir.join("quickmedia");
+ return cache_dir;
}
int get_cookies_filepath(Path &path, const std::string &plugin_name) {