summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authornobounce <steffen.winter@proton.me>2023-10-03 13:54:28 +0200
committerSteffen Winter <steffen.winter@proton.me>2024-01-03 17:35:54 +0100
commit1e6bf18c65a9083b30b7da339d2636eda4939c4a (patch)
tree21342bf63e4092fed91922e7c59319efffd98e0f /src
parentb124db78c071af5cae047549559f801d05438d71 (diff)
Add flag to set the refresh rate from command line
Diffstat (limited to 'src')
-rw-r--r--src/btop.cpp22
-rw-r--r--src/btop_config.cpp4
-rw-r--r--src/btop_config.hpp2
3 files changed, 25 insertions, 3 deletions
diff --git a/src/btop.cpp b/src/btop.cpp
index 6c7eb99..9ad5012 100644
--- a/src/btop.cpp
+++ b/src/btop.cpp
@@ -16,6 +16,7 @@ indent = tab
tab-size = 4
*/
+#include <algorithm>
#include <csignal>
#include <clocale>
#include <pthread.h>
@@ -51,6 +52,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;
@@ -109,6 +111,7 @@ namespace Global {
bool arg_tty{}; // defaults to false
bool arg_low_color{}; // defaults to false
int arg_preset = -1;
+ int arg_update = 0;
}
//* A simple argument parser
@@ -117,7 +120,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 <id>] [--utf-force] [--debug]\n\n"
+ "usage: btop [-h] [-v] [-/+t] [-p <id>] [-u <ms>] [--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"
@@ -125,6 +128,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 <id> start with preset, integer value between 0-9\n"
+ " -u, --update <ms> set the program update 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"
@@ -159,6 +163,19 @@ void argumentParser(const int argc, char **argv) {
exit(1);
}
}
+ else if (is_in(argument, "-u", "--update")) {
+ if (++i >= argc) {
+ fmt::println("ERROR: Update option needs an argument");
+ exit(1);
+ }
+ const std::string value = argv[i];
+ if (isint(value)) {
+ Global::arg_update = std::clamp(std::stoi(value), 100, Config::ONE_DAY_MILLIS);
+ } else {
+ fmt::println("ERROR: Invalid update rate");
+ exit(1);
+ }
+ }
else if (argument == "--utf-force")
Global::utf_force = true;
else if (argument == "--debug")
@@ -1054,6 +1071,9 @@ int main(int argc, char **argv) {
//? ------------------------------------------------ MAIN LOOP ----------------------------------------------------
+ if (Global::arg_update != 0) {
+ Config::set("update_ms", Global::arg_update);
+ }
uint64_t update_ms = Config::getI("update_ms");
auto future_time = time_ms();
diff --git a/src/btop_config.cpp b/src/btop_config.cpp
index 535d8c8..b8a5f67 100644
--- a/src/btop_config.cpp
+++ b/src/btop_config.cpp
@@ -488,8 +488,8 @@ namespace Config {
if (name == "update_ms" and i_value < 100)
validError = "Config value update_ms set too low (<100).";
- else if (name == "update_ms" and i_value > 86400000)
- validError = "Config value update_ms set too high (>86400000).";
+ else if (name == "update_ms" and i_value > ONE_DAY_MILLIS)
+ validError = fmt::format("Config value update_ms set too high (>{}).", ONE_DAY_MILLIS);
else
return true;
diff --git a/src/btop_config.hpp b/src/btop_config.hpp
index 8d1d579..3651566 100644
--- a/src/btop_config.hpp
+++ b/src/btop_config.hpp
@@ -58,6 +58,8 @@ namespace Config {
extern vector<string> available_batteries;
extern int current_preset;
+ constexpr int ONE_DAY_MILLIS = 1000 * 60 * 60 * 24;
+
[[nodiscard]] std::optional<std::filesystem::path> get_config_dir() noexcept;
//* Check if string only contains space separated valid names for boxes