From ea827624d203c73af896669e161972fc8be022ed Mon Sep 17 00:00:00 2001 From: BossCode45 Date: Sat, 27 May 2023 16:33:46 +1200 Subject: feat: Made it compile woo Note: doesn't work yet though, as commands haven't all been registered yet --- config.h.old | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 config.h.old (limited to 'config.h.old') 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 + +#include +#include + +#include + +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 + 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; +}; -- cgit v1.2.3