summaryrefslogtreecommitdiff
path: root/config.h.old
diff options
context:
space:
mode:
Diffstat (limited to 'config.h.old')
-rw-r--r--config.h.old93
1 files changed, 93 insertions, 0 deletions
diff --git a/config.h.old b/config.h.old
new file mode 100644
index 0000000..31005e7
--- /dev/null
+++ b/config.h.old
@@ -0,0 +1,93 @@
+#pragma once
+
+#include "error.h"
+
+#include <toml++/toml.hpp>
+
+#include <X11/X.h>
+#include <X11/keysym.h>
+
+#include <string>
+
+enum MoveDir
+{
+ Up,
+ Right,
+ Down,
+ Left
+};
+
+typedef union
+{
+ char* str;
+ int num;
+ MoveDir dir;
+} KeyArg;
+
+struct KeyBind
+{
+ unsigned int modifiers;
+ KeySym keysym;
+ void(* func) (const KeyArg arg);
+ KeyArg args;
+};
+
+//Keybind commands
+#define KEYCOM(X) \
+ void X (const KeyArg arg)
+KEYCOM(exit);
+KEYCOM(spawn);
+KEYCOM(toggle);
+KEYCOM(kill);
+KEYCOM(changeWS);
+KEYCOM(wToWS);
+KEYCOM(focChange);
+KEYCOM(wMove);
+KEYCOM(bashSpawn);
+KEYCOM(reload);
+KEYCOM(wsDump);
+KEYCOM(nextMonitor);
+
+class Config
+{
+ public:
+ Config();
+ ~Config();
+ void free();
+
+ Err loadFromFile(std::string path);
+ Err reload();
+
+ // Startup
+ std::string* startupBash;
+ int startupBashc;
+
+ // Main
+ int gaps;
+ int outerGaps;
+ std::string logFile;
+
+ // Workspaces
+ int numWS;
+ std::string* workspaceNames;
+ int workspaceNamesc;
+ int maxMonitors;
+ int** screenPreferences;
+ int screenPreferencesc;
+
+ // Keybinds
+ KeyBind* binds;
+ int bindsc;
+ private:
+ template <typename T>
+ T getValue(std::string path, Err* err);
+
+ void loadWorkspaceArrays(toml::table tbl, toml::table defaults, Err* err);
+ void loadStartupBash(toml::table tbl, toml::table defaults, Err* err);
+
+ toml::table tbl;
+ toml::table defaults;
+
+ bool loaded = false;
+ std::string path;
+};