From 1612216afd94f7799f0dfe1f608e3ba51e002c6d Mon Sep 17 00:00:00 2001 From: nobounce Date: Tue, 3 Oct 2023 13:54:28 +0200 Subject: [PATCH] Add flag to set refresh rate from command line --- src/btop.cpp | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/btop.cpp b/src/btop.cpp index 382b72fe8..ae80b9dce 100644 --- a/src/btop.cpp +++ b/src/btop.cpp @@ -16,6 +16,7 @@ indent = tab tab-size = 4 */ +#include #include #include #include @@ -50,6 +51,7 @@ tab-size = 4 #include "btop_theme.hpp" #include "btop_draw.hpp" #include "btop_menu.hpp" +#include "fmt/core.h" using std::atomic; using std::cout; @@ -108,6 +110,7 @@ namespace Global { bool arg_tty{}; // defaults to false bool arg_low_color{}; // defaults to false int arg_preset = -1; + int arg_refresh = 0; } //* A simple argument parser @@ -116,7 +119,7 @@ void argumentParser(const int argc, char **argv) { const string argument = argv[i]; if (is_in(argument, "-h", "--help")) { fmt::println( - "usage: btop [-h] [-v] [-/+t] [-p ] [--utf-force] [--debug]\n\n" + "usage: btop [-h] [-v] [-/+t] [-p ] [-r ] [--utf-force] [--debug]\n\n" "optional arguments:\n" " -h, --help show this help message and exit\n" " -v, --version show version info and exit\n" @@ -124,6 +127,7 @@ void argumentParser(const int argc, char **argv) { " -t, --tty_on force (ON) tty mode, max 16 colors and tty friendly graph symbols\n" " +t, --tty_off force (OFF) tty mode\n" " -p, --preset start with preset, integer value between 0-9\n" + " -r, --refresh set the refresh rate in milliseconds\n" " --utf-force force start even if no UTF-8 locale was detected\n" " --debug start in DEBUG mode: shows microsecond timer for information collect\n" " and screen draw functions and sets loglevel to DEBUG" @@ -158,6 +162,19 @@ void argumentParser(const int argc, char **argv) { exit(1); } } + else if (is_in(argument, "-r", "--refresh")) { + if (++i >= argc) { + fmt::println("ERROR: Refresh option needs an argument"); + exit(1); + } + const std::string value = argv[i]; + if (isint(value)) { + Global::arg_refresh = std::clamp(std::stoi(value), 100, 99999); + } else { + fmt::println("ERROR: Invalid refresh rate"); + exit(1); + } + } else if (argument == "--utf-force") Global::utf_force = true; else if (argument == "--debug") @@ -973,6 +990,9 @@ int main(int argc, char **argv) { //? ------------------------------------------------ MAIN LOOP ---------------------------------------------------- + if (Global::arg_refresh != 0) { + Config::set("update_ms", Global::arg_refresh); + } uint64_t update_ms = Config::getI("update_ms"); auto future_time = time_ms();