diff --git a/src/btop_config.cpp b/src/btop_config.cpp index 25b68dd..1f8c9c9 100644 --- a/src/btop_config.cpp +++ b/src/btop_config.cpp @@ -519,6 +519,12 @@ namespace Config { return true; } + void maximize_box(const string& box) { + current_boxes.clear(); + current_boxes.push_back(box); + Config::set("shown_boxes", box); + } + void toggle_box(const string& box) { auto old_boxes = current_boxes; auto box_pos = rng::find(current_boxes, box); diff --git a/src/btop_config.hpp b/src/btop_config.hpp index 95c6b68..2dd5a7c 100644 --- a/src/btop_config.hpp +++ b/src/btop_config.hpp @@ -56,6 +56,9 @@ namespace Config { //* Toggle box and update config string shown_boxes void toggle_box(const string& box); + //* Maximize box and update config string shown_boxes + void maximize_box(const string& box); + //* Parse and setup config value presets bool presetsValid(const string& presets); diff --git a/src/btop_input.cpp b/src/btop_input.cpp index ebdee3b..b6c516c 100644 --- a/src/btop_input.cpp +++ b/src/btop_input.cpp @@ -22,6 +22,7 @@ tab-size = 4 #include #include #include +#include #include "btop_input.hpp" #include "btop_tools.hpp" @@ -260,11 +261,21 @@ namespace Input { Menu::show(Menu::Menus::Options); return; } - else if (is_in(key, "1", "2", "3", "4")) { + else if (is_in(key, "1", "2", "3", "4", "!", "@", "#", "$")) { atomic_wait(Runner::active); Config::current_preset = -1; static const array boxes = {"cpu", "mem", "net", "proc"}; - Config::toggle_box(boxes.at(std::stoi(key) - 1)); + if (std::isdigit(key[0])) + Config::toggle_box(boxes.at(std::stoi(key) - 1)); + else { + static const unordered_flat_map binding = { + {"!", boxes.at(0)}, + {"@", boxes.at(1)}, + {"#", boxes.at(2)}, + {"$", boxes.at(3)}, + }; + Config::maximize_box(binding.at(key)); + } Draw::calcSizes(); Runner::run("all", false, true); return;