summaryrefslogtreecommitdiff
path: root/config.h
diff options
context:
space:
mode:
Diffstat (limited to 'config.h')
-rw-r--r--config.h118
1 files changed, 39 insertions, 79 deletions
diff --git a/config.h b/config.h
index 31005e7..452db9c 100644
--- a/config.h
+++ b/config.h
@@ -1,93 +1,53 @@
#pragma once
-#include "error.h"
-
-#include <toml++/toml.hpp>
-
+#include "commands.h"
#include <X11/X.h>
#include <X11/keysym.h>
#include <string>
+#include <vector>
-enum MoveDir
-{
- Up,
- Right,
- Down,
- Left
-};
-
-typedef union
-{
- char* str;
- int num;
- MoveDir dir;
-} KeyArg;
-
-struct KeyBind
+struct Workspace
{
- unsigned int modifiers;
- KeySym keysym;
- void(* func) (const KeyArg arg);
- KeyArg args;
+ std::string name;
+ int* screenPreferences;
+ int screenPreferencesc;
};
-//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);
+#define COMMAND(X) \
+ const void X (const CommandArg* argv)
class Config
-{
- public:
- Config();
- ~Config();
- void free();
+{
+public:
+ Config(CommandsModule& commandsModule);
+ ~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;
+ std::vector<Err> loadFromFile(std::string path);
+ std::vector<Err> reloadFile();
+
+ // Main
+ int gaps;
+ int outerGaps;
+ std::string logFile;
+
+ // Workspaces
+ std::vector<Workspace> workspaces;
+ int numWS;
+ bool loaded = false;
+
+ // Binds
+ bool swapSuperAlt;
+
+ // Config Commands
+ COMMAND(gapsCmd);
+ COMMAND(outerGapsCmd);
+ COMMAND(logFileCmd);
+ COMMAND(addWorkspaceCmd);
+ COMMAND(swapSuperAltCmd);
+
+private:
+ CommandsModule& commandsModule;
+ std::string file;
};