I broke your configs. (see example.conf animations part)

np guys love yall too
This commit is contained in:
vaxerski 2021-12-10 19:10:12 +01:00
parent d44c5a9f16
commit 2ac537a2fa
5 changed files with 42 additions and 16 deletions

View file

@ -46,9 +46,11 @@ col.inactive_border=0x77222222
# #
# animations # animations
anim.enabled=1 Animations {
anim.speed=5 enabled=1
anim.cheap=1 # highly recommended speed=5
cheap=1 # highly recommended
}
# keybinds # keybinds
bind=SUPER,R,exec,dmenu_run bind=SUPER,R,exec,dmenu_run

View file

@ -38,9 +38,9 @@ void ConfigManager::init() {
configValues["col.inactive_border"].intValue = 0x77222222; configValues["col.inactive_border"].intValue = 0x77222222;
// animations // animations
configValues["anim.speed"].floatValue = 1; configValues["anim:speed"].floatValue = 1;
configValues["anim.enabled"].intValue = 0; configValues["anim:enabled"].intValue = 0;
configValues["anim.cheap"].intValue = 1; configValues["anim:cheap"].intValue = 1;
if (!g_pWindowManager->statusBar) { if (!g_pWindowManager->statusBar) {
isFirstLaunch = true; isFirstLaunch = true;
@ -230,6 +230,20 @@ void parseBarLine(const std::string& line) {
} }
} }
void parseAnimLine(const std::string& line) {
// And parse
// check if command
const auto EQUALSPLACE = line.find_first_of('=');
if (EQUALSPLACE == std::string::npos)
return;
const auto COMMAND = line.substr(0, EQUALSPLACE);
const auto VALUE = line.substr(EQUALSPLACE + 1);
configSetValueSafe("anim:" + COMMAND, VALUE);
}
void parseLine(std::string& line) { void parseLine(std::string& line) {
// first check if its not a comment // first check if its not a comment
const auto COMMENTSTART = line.find_first_of('#'); const auto COMMENTSTART = line.find_first_of('#');
@ -246,20 +260,30 @@ void parseLine(std::string& line) {
} }
if (line.find("Bar {") != std::string::npos) { if (line.find("Bar {") != std::string::npos) {
ConfigManager::isBar = true; ConfigManager::currentCategory = "bar";
return; return;
} }
if (line.find("}") != std::string::npos && ConfigManager::isBar) { if (line.find("Animations {") != std::string::npos) {
ConfigManager::isBar = false; ConfigManager::currentCategory = "anim";
return; return;
} }
if (ConfigManager::isBar) { if (line.find("}") != std::string::npos && ConfigManager::currentCategory != "") {
ConfigManager::currentCategory = "";
return;
}
if (ConfigManager::currentCategory == "bar") {
parseBarLine(line); parseBarLine(line);
return; return;
} }
if (ConfigManager::currentCategory == "anim") {
parseAnimLine(line);
return;
}
// And parse // And parse
// check if command // check if command
const auto EQUALSPLACE = line.find_first_of('='); const auto EQUALSPLACE = line.find_first_of('=');
@ -290,7 +314,7 @@ void parseLine(std::string& line) {
void ConfigManager::loadConfigLoadVars() { void ConfigManager::loadConfigLoadVars() {
Debug::log(LOG, "Reloading the config!"); Debug::log(LOG, "Reloading the config!");
ConfigManager::parseError = ""; // reset the error ConfigManager::parseError = ""; // reset the error
ConfigManager::isBar = false; // reset the bar ConfigManager::currentCategory = ""; // reset the category
if (loadBar && g_pWindowManager->statusBar) { if (loadBar && g_pWindowManager->statusBar) {
// clear modules as we overwrite them // clear modules as we overwrite them

View file

@ -20,7 +20,7 @@ namespace ConfigManager {
inline bool loadBar = false; inline bool loadBar = false;
inline bool isBar = false; // If true we send the command to the bar parser inline std::string currentCategory = "";
inline bool isFirstLaunch = false; inline bool isFirstLaunch = false;

View file

@ -7,7 +7,7 @@ void AnimationUtil::move() {
const double DELTA = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::high_resolution_clock::now() - lastFrame).count(); const double DELTA = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::high_resolution_clock::now() - lastFrame).count();
lastFrame = std::chrono::high_resolution_clock::now(); lastFrame = std::chrono::high_resolution_clock::now();
const double ANIMATIONSPEED = ((double)1 / (double)ConfigManager::getFloat("anim.speed")) * DELTA; const double ANIMATIONSPEED = ((double)1 / (double)ConfigManager::getFloat("anim:speed")) * DELTA;
bool updateRequired = false; bool updateRequired = false;
@ -16,7 +16,7 @@ void AnimationUtil::move() {
// check if window needs an animation. // check if window needs an animation.
window.setIsAnimated(false); window.setIsAnimated(false);
if (ConfigManager::getInt("anim.enabled") == 0 || window.getIsFloating()) { if (ConfigManager::getInt("anim:enabled") == 0 || window.getIsFloating()) {
// Disabled animations. instant warps. // Disabled animations. instant warps.
if (VECTORDELTANONZERO(window.getRealPosition(), window.getEffectivePosition()) if (VECTORDELTANONZERO(window.getRealPosition(), window.getEffectivePosition())

View file

@ -404,14 +404,14 @@ void CWindowManager::refreshDirtyWindows() {
} }
// If it isn't animated or we have non-cheap animations, update the real size // If it isn't animated or we have non-cheap animations, update the real size
if (!window.getIsAnimated() || ConfigManager::getInt("anim.cheap") == 0) { if (!window.getIsAnimated() || ConfigManager::getInt("anim:cheap") == 0) {
Values[0] = (int)window.getRealSize().x; Values[0] = (int)window.getRealSize().x;
Values[1] = (int)window.getRealSize().y; Values[1] = (int)window.getRealSize().y;
xcb_configure_window(DisplayConnection, window.getDrawable(), XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT, Values); xcb_configure_window(DisplayConnection, window.getDrawable(), XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT, Values);
window.setFirstAnimFrame(true); window.setFirstAnimFrame(true);
} }
if (ConfigManager::getInt("anim.cheap") == 1 && window.getFirstAnimFrame() && window.getIsAnimated()) { if (ConfigManager::getInt("anim:cheap") == 1 && window.getFirstAnimFrame() && window.getIsAnimated()) {
// first frame, fix the size if smaller // first frame, fix the size if smaller
window.setFirstAnimFrame(false); window.setFirstAnimFrame(false);
if (window.getRealSize().x < window.getEffectiveSize().x || window.getRealSize().y < window.getEffectiveSize().y) { if (window.getRealSize().x < window.getEffectiveSize().x || window.getRealSize().y < window.getEffectiveSize().y) {