summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/CMakeLists.txt2
-rw-r--r--src/config.cpp15
-rw-r--r--src/config.hpp37
3 files changed, 53 insertions, 1 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index aac21d9..d335631 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -26,7 +26,7 @@ add_library(winman MODULE
app.hpp app.cpp
result.hpp
afb_binding_api.hpp
- afb_binding_glue.inl layers.cpp layers.hpp controller_hooks.hpp)
+ afb_binding_glue.inl layers.cpp layers.hpp controller_hooks.hpp config.cpp config.hpp)
target_include_directories(winman
PRIVATE
diff --git a/src/config.cpp b/src/config.cpp
new file mode 100644
index 0000000..1843639
--- /dev/null
+++ b/src/config.cpp
@@ -0,0 +1,15 @@
+//
+// Created by mfritzsc on 8/1/17.
+//
+
+#include "config.hpp"
+
+namespace wm {
+
+config::config() : cfg() {
+ // Supply default values for these...
+ this->cfg["layers.json"] = getenv("LAYERS_JSON") ?: "../layers.json";
+ this->cfg["layout.json"] = getenv("LAYOUT_JSON") ?: "../layout.json";
+}
+
+} // namespace wm \ No newline at end of file
diff --git a/src/config.hpp b/src/config.hpp
new file mode 100644
index 0000000..976371b
--- /dev/null
+++ b/src/config.hpp
@@ -0,0 +1,37 @@
+//
+// Created by mfritzsc on 8/1/17.
+//
+
+#ifndef TMCAGLWM_CONFIG_HPP
+#define TMCAGLWM_CONFIG_HPP
+
+#include <map>
+#include <experimental/optional>
+
+namespace wm {
+
+using std::experimental::optional;
+using std::experimental::nullopt;
+
+struct config {
+ typedef std::map<std::string, std::string> map;
+
+ map cfg;
+
+ config();
+
+ optional<std::string> get_string(char const *s) {
+ auto i = this->cfg.find(s);
+ return i != this->cfg.end() ? optional<std::string>(i->second) : nullopt;
+ }
+
+ optional<int> get_int(char const *s) {
+ auto i = this->cfg.find(s);
+ return i != this->cfg.end() ? optional<int>(std::stoi(i->second)) : nullopt;
+ }
+};
+
+} // namespace wm
+
+
+#endif //TMCAGLWM_CONFIG_HPP