mirror of
https://github.com/aristocratos/btop.git
synced 2024-06-15 00:44:49 +12:00
Fixed gpu boxes visibility state not saved and removed unnecessary comments
This commit is contained in:
parent
057f4594fb
commit
62964693b3
26
src/btop.cpp
26
src/btop.cpp
|
@ -96,9 +96,9 @@ namespace Global {
|
|||
string exit_error_msg;
|
||||
atomic<bool> thread_exception (false);
|
||||
|
||||
bool debuginit{}; // defaults to false
|
||||
bool debug{}; // defaults to false
|
||||
bool utf_force{}; // defaults to false
|
||||
bool debuginit{};
|
||||
bool debug{};
|
||||
bool utf_force{};
|
||||
|
||||
uint64_t start_time;
|
||||
|
||||
|
@ -107,9 +107,10 @@ namespace Global {
|
|||
atomic<bool> should_quit (false);
|
||||
atomic<bool> should_sleep (false);
|
||||
atomic<bool> _runner_started (false);
|
||||
atomic<bool> init_conf (false);
|
||||
|
||||
bool arg_tty{}; // defaults to false
|
||||
bool arg_low_color{}; // defaults to false
|
||||
bool arg_tty{};
|
||||
bool arg_low_color{};
|
||||
int arg_preset = -1;
|
||||
int arg_update = 0;
|
||||
}
|
||||
|
@ -418,7 +419,7 @@ namespace Runner {
|
|||
|
||||
string output;
|
||||
string empty_bg;
|
||||
bool pause_output{}; // defaults to false
|
||||
bool pause_output{};
|
||||
sigset_t mask;
|
||||
pthread_t runner_id;
|
||||
pthread_mutex_t mtx;
|
||||
|
@ -894,10 +895,10 @@ int main(int argc, char **argv) {
|
|||
}
|
||||
|
||||
//? Config init
|
||||
{ vector<string> load_warnings;
|
||||
{
|
||||
atomic_lock lck(Global::init_conf);
|
||||
vector<string> load_warnings;
|
||||
Config::load(Config::conf_file, load_warnings);
|
||||
|
||||
if (Config::current_boxes.empty()) Config::check_boxes(Config::getS("shown_boxes"));
|
||||
Config::set("lowcolor", (Global::arg_low_color ? true : not Config::getB("truecolor")));
|
||||
|
||||
if (Global::debug) {
|
||||
|
@ -918,7 +919,7 @@ int main(int argc, char **argv) {
|
|||
}
|
||||
else {
|
||||
string found;
|
||||
bool set_failure{}; // defaults to false
|
||||
bool set_failure{};
|
||||
for (const auto loc_env : array{"LANG", "LC_ALL"}) {
|
||||
if (std::getenv(loc_env) != nullptr and str_to_upper(s_replace((string)std::getenv(loc_env), "-", "")).ends_with("UTF8")) {
|
||||
found = std::getenv(loc_env);
|
||||
|
@ -1018,6 +1019,11 @@ int main(int argc, char **argv) {
|
|||
clean_quit(1);
|
||||
}
|
||||
|
||||
if (not Config::check_boxes(Config::getS("shown_boxes"))) {
|
||||
Config::check_boxes("cpu mem net proc");
|
||||
Config::set("shown_boxes", "cpu mem net proc"s);
|
||||
}
|
||||
|
||||
//? Update list of available themes and generate the selected theme
|
||||
Theme::updateThemes();
|
||||
Theme::setTheme();
|
||||
|
|
|
@ -507,7 +507,7 @@ namespace Config {
|
|||
else if (name.starts_with("graph_symbol_") and (value != "default" and not v_contains(valid_graph_symbols, value)))
|
||||
validError = fmt::format("Invalid graph symbol identifier for {}: {}", name, value);
|
||||
|
||||
else if (name == "shown_boxes" and not value.empty() and not check_boxes(value))
|
||||
else if (name == "shown_boxes" and not Global::init_conf and not value.empty() and not check_boxes(value))
|
||||
validError = "Invalid box name(s) in shown_boxes!";
|
||||
|
||||
#ifdef GPU_SUPPORT
|
||||
|
@ -619,8 +619,7 @@ namespace Config {
|
|||
if (not v_contains(valid_boxes, box)) return false;
|
||||
#ifdef GPU_SUPPORT
|
||||
if (box.starts_with("gpu")) {
|
||||
size_t gpu_num = stoi(box.substr(3));
|
||||
if (gpu_num == 0) gpu_num = 5;
|
||||
size_t gpu_num = stoi(box.substr(3)) + 1;
|
||||
if (std::cmp_greater(gpu_num, Gpu::gpu_names.size())) return false;
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -307,8 +307,8 @@ namespace Draw {
|
|||
{"/uptime", ""}
|
||||
};
|
||||
|
||||
static time_t c_time{}; // defaults to 0
|
||||
static size_t clock_len{}; // defaults to 0
|
||||
static time_t c_time{};
|
||||
static size_t clock_len{};
|
||||
static string clock_str;
|
||||
|
||||
if (auto n_time = time(nullptr); not force and n_time == c_time)
|
||||
|
|
|
@ -65,8 +65,8 @@ namespace Draw {
|
|||
|
||||
//* An editable text field
|
||||
class TextEdit {
|
||||
size_t pos{}; // defaults to 0
|
||||
size_t upos{}; // defaults to 0
|
||||
size_t pos{};
|
||||
size_t upos{};
|
||||
bool numeric;
|
||||
public:
|
||||
string text;
|
||||
|
|
|
@ -49,8 +49,8 @@ namespace Menu {
|
|||
bool redraw{true};
|
||||
int currentMenu = -1;
|
||||
msgBox messageBox;
|
||||
int signalToSend{}; // defaults to 0
|
||||
int signalKillRet{}; // defaults to 0
|
||||
int signalToSend{};
|
||||
int signalKillRet{};
|
||||
|
||||
const array<string, 32> P_Signals = {
|
||||
"0",
|
||||
|
@ -868,8 +868,8 @@ namespace Menu {
|
|||
|
||||
int signalChoose(const string& key) {
|
||||
auto s_pid = (Config::getB("show_detailed") and Config::getI("selected_pid") == 0 ? Config::getI("detailed_pid") : Config::getI("selected_pid"));
|
||||
static int x{}; // defaults to 0
|
||||
static int y{}; // defaults to 0
|
||||
static int x{};
|
||||
static int y{};
|
||||
static int selected_signal = -1;
|
||||
|
||||
if (bg.empty()) selected_signal = -1;
|
||||
|
@ -1070,8 +1070,8 @@ namespace Menu {
|
|||
|
||||
int mainMenu(const string& key) {
|
||||
enum MenuItems { Options, Help, Quit };
|
||||
static int y{}; // defaults to 0
|
||||
static int selected{}; // defaults to 0
|
||||
static int y{};
|
||||
static int selected{};
|
||||
static vector<string> colors_selected;
|
||||
static vector<string> colors_normal;
|
||||
auto tty_mode = Config::getB("tty_mode");
|
||||
|
@ -1149,18 +1149,18 @@ namespace Menu {
|
|||
|
||||
int optionsMenu(const string& key) {
|
||||
enum Predispositions { isBool, isInt, isString, is2D, isBrowseable, isEditable};
|
||||
static int y{}; // defaults to 0
|
||||
static int x{}; // defaults to 0
|
||||
static int height{}; // defaults to 0
|
||||
static int page{}; // defaults to 0
|
||||
static int pages{}; // defaults to 0
|
||||
static int selected{}; // defaults to 0
|
||||
static int select_max{}; // defaults to 0
|
||||
static int item_height{}; // defaults to 0
|
||||
static int selected_cat{}; // defaults to 0
|
||||
static int max_items{}; // defaults to 0
|
||||
static int last_sel{}; // defaults to 0
|
||||
static bool editing{}; // defaults to false
|
||||
static int y{};
|
||||
static int x{};
|
||||
static int height{};
|
||||
static int page{};
|
||||
static int pages{};
|
||||
static int selected{};
|
||||
static int select_max{};
|
||||
static int item_height{};
|
||||
static int selected_cat{};
|
||||
static int max_items{};
|
||||
static int last_sel{};
|
||||
static bool editing{};
|
||||
static Draw::TextEdit editor;
|
||||
static string warnings;
|
||||
static bitset<8> selPred;
|
||||
|
@ -1196,9 +1196,9 @@ namespace Menu {
|
|||
Theme::updateThemes();
|
||||
}
|
||||
int retval = Changed;
|
||||
bool recollect{}; // defaults to false
|
||||
bool screen_redraw{}; // defaults to false
|
||||
bool theme_refresh{}; // defaults to false
|
||||
bool recollect{};
|
||||
bool screen_redraw{};
|
||||
bool theme_refresh{};
|
||||
|
||||
//? Draw background if needed else process input
|
||||
if (redraw) {
|
||||
|
@ -1500,11 +1500,11 @@ namespace Menu {
|
|||
}
|
||||
|
||||
int helpMenu(const string& key) {
|
||||
static int y{}; // defaults to 0
|
||||
static int x{}; // defaults to 0
|
||||
static int height{}; // defaults to 0
|
||||
static int page{}; // defaults to 0
|
||||
static int pages{}; // defaults to 0
|
||||
static int y{};
|
||||
static int x{};
|
||||
static int height{};
|
||||
static int page{};
|
||||
static int pages{};
|
||||
|
||||
if (bg.empty()) page = 0;
|
||||
int retval = Changed;
|
||||
|
|
|
@ -46,12 +46,12 @@ namespace Menu {
|
|||
//? Strings in content vector is not checked for box width overflow
|
||||
class msgBox {
|
||||
string box_contents, button_left, button_right;
|
||||
int height{}; // defaults to 0
|
||||
int width{}; // defaults to 0
|
||||
int boxtype{}; // defaults to 0
|
||||
int selected{}; // defaults to 0
|
||||
int x{}; // defaults to 0
|
||||
int y{}; // defaults to 0
|
||||
int height{};
|
||||
int width{};
|
||||
int boxtype{};
|
||||
int selected{};
|
||||
int x{};
|
||||
int y{};
|
||||
public:
|
||||
enum BoxTypes { OK, YES_NO, NO_YES };
|
||||
enum msgReturn {
|
||||
|
|
|
@ -54,6 +54,7 @@ namespace Global {
|
|||
extern string overlay;
|
||||
extern string clock;
|
||||
extern uid_t real_uid, set_uid;
|
||||
extern atomic<bool> init_conf;
|
||||
}
|
||||
|
||||
namespace Runner {
|
||||
|
@ -228,11 +229,11 @@ namespace Mem {
|
|||
string name;
|
||||
string fstype{}; // defaults to ""
|
||||
std::filesystem::path stat{}; // defaults to ""
|
||||
int64_t total{}; // defaults to 0
|
||||
int64_t used{}; // defaults to 0
|
||||
int64_t free{}; // defaults to 0
|
||||
int used_percent{}; // defaults to 0
|
||||
int free_percent{}; // defaults to 0
|
||||
int64_t total{};
|
||||
int64_t used{};
|
||||
int64_t free{};
|
||||
int used_percent{};
|
||||
int free_percent{};
|
||||
|
||||
array<int64_t, 3> old_io = {0, 0, 0};
|
||||
deque<long long> io_read = {};
|
||||
|
@ -272,12 +273,12 @@ namespace Net {
|
|||
extern std::unordered_map<string, uint64_t> graph_max;
|
||||
|
||||
struct net_stat {
|
||||
uint64_t speed{}; // defaults to 0
|
||||
uint64_t top{}; // defaults to 0
|
||||
uint64_t total{}; // defaults to 0
|
||||
uint64_t last{}; // defaults to 0
|
||||
uint64_t offset{}; // defaults to 0
|
||||
uint64_t rollover{}; // defaults to 0
|
||||
uint64_t speed{};
|
||||
uint64_t top{};
|
||||
uint64_t total{};
|
||||
uint64_t last{};
|
||||
uint64_t offset{};
|
||||
uint64_t rollover{};
|
||||
};
|
||||
|
||||
struct net_info {
|
||||
|
@ -285,7 +286,7 @@ namespace Net {
|
|||
std::unordered_map<string, net_stat> stat = { {"download", {}}, {"upload", {}} };
|
||||
string ipv4{}; // defaults to ""
|
||||
string ipv6{}; // defaults to ""
|
||||
bool connected{}; // defaults to false
|
||||
bool connected{};
|
||||
};
|
||||
|
||||
extern std::unordered_map<string, net_info> current_net;
|
||||
|
@ -337,32 +338,32 @@ namespace Proc {
|
|||
|
||||
//* Container for process information
|
||||
struct proc_info {
|
||||
size_t pid{}; // defaults to 0
|
||||
size_t pid{};
|
||||
string name{}; // defaults to ""
|
||||
string cmd{}; // defaults to ""
|
||||
string short_cmd{}; // defaults to ""
|
||||
size_t threads{}; // defaults to 0
|
||||
int name_offset{}; // defaults to 0
|
||||
size_t threads{};
|
||||
int name_offset{};
|
||||
string user{}; // defaults to ""
|
||||
uint64_t mem{}; // defaults to 0
|
||||
uint64_t mem{};
|
||||
double cpu_p{}; // defaults to = 0.0
|
||||
double cpu_c{}; // defaults to = 0.0
|
||||
char state = '0';
|
||||
int64_t p_nice{}; // defaults to 0
|
||||
uint64_t ppid{}; // defaults to 0
|
||||
uint64_t cpu_s{}; // defaults to 0
|
||||
uint64_t cpu_t{}; // defaults to 0
|
||||
int64_t p_nice{};
|
||||
uint64_t ppid{};
|
||||
uint64_t cpu_s{};
|
||||
uint64_t cpu_t{};
|
||||
string prefix{}; // defaults to ""
|
||||
size_t depth{}; // defaults to 0
|
||||
size_t tree_index{}; // defaults to 0
|
||||
bool collapsed{}; // defaults to false
|
||||
bool filtered{}; // defaults to false
|
||||
size_t depth{};
|
||||
size_t tree_index{};
|
||||
bool collapsed{};
|
||||
bool filtered{};
|
||||
};
|
||||
|
||||
//* Container for process info box
|
||||
struct detail_container {
|
||||
size_t last_pid{}; // defaults to 0
|
||||
bool skip_smaps{}; // defaults to false
|
||||
size_t last_pid{};
|
||||
bool skip_smaps{};
|
||||
proc_info entry;
|
||||
string elapsed, parent, status, io_read, io_write, memory;
|
||||
long long first_mem = -1;
|
||||
|
|
|
@ -54,9 +54,9 @@ namespace rng = std::ranges;
|
|||
//* Collection of escape codes and functions for terminal manipulation
|
||||
namespace Term {
|
||||
|
||||
atomic<bool> initialized{}; // defaults to false
|
||||
atomic<int> width{}; // defaults to 0
|
||||
atomic<int> height{}; // defaults to 0
|
||||
atomic<bool> initialized{};
|
||||
atomic<int> width{};
|
||||
atomic<int> height{};
|
||||
string current_tty;
|
||||
|
||||
namespace {
|
||||
|
|
|
@ -406,7 +406,7 @@ namespace Tools {
|
|||
//* Sets atomic<bool> to true on construct, sets to false on destruct
|
||||
class atomic_lock {
|
||||
atomic<bool>& atom;
|
||||
bool not_true{}; // defaults to false
|
||||
bool not_true{};
|
||||
public:
|
||||
atomic_lock(atomic<bool>& atom, bool wait = false);
|
||||
~atomic_lock();
|
||||
|
|
|
@ -77,8 +77,8 @@ namespace Cpu {
|
|||
vector<string> available_sensors = {"Auto"};
|
||||
cpu_info current_cpu;
|
||||
fs::path freq_path = "/sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq";
|
||||
bool got_sensors{}; // defaults to false
|
||||
bool cpu_temp_only{}; // defaults to false
|
||||
bool got_sensors{};
|
||||
bool cpu_temp_only{};
|
||||
|
||||
//* Populate found_sensors map
|
||||
bool get_sensors();
|
||||
|
@ -92,9 +92,9 @@ namespace Cpu {
|
|||
struct Sensor {
|
||||
fs::path path;
|
||||
string label;
|
||||
int64_t temp{}; // defaults to 0
|
||||
int64_t high{}; // defaults to 0
|
||||
int64_t crit{}; // defaults to 0
|
||||
int64_t temp{};
|
||||
int64_t high{};
|
||||
int64_t crit{};
|
||||
};
|
||||
|
||||
std::unordered_map<string, Sensor> found_sensors;
|
||||
|
@ -542,14 +542,14 @@ namespace Cpu {
|
|||
}
|
||||
|
||||
string get_cpuHz() {
|
||||
static int failed{}; // defaults to 0
|
||||
static int failed{};
|
||||
|
||||
if (failed > 4)
|
||||
return ""s;
|
||||
|
||||
string cpuhz;
|
||||
try {
|
||||
double hz{}; // defaults to 0.0
|
||||
double hz{};
|
||||
//? Try to get freq from /sys/devices/system/cpu/cpufreq/policy first (faster)
|
||||
if (not freq_path.empty()) {
|
||||
hz = stod(readfile(freq_path, "0.0")) / 1000;
|
||||
|
@ -605,9 +605,9 @@ namespace Cpu {
|
|||
//? Try to get core mapping from /proc/cpuinfo
|
||||
ifstream cpuinfo(Shared::procPath / "cpuinfo");
|
||||
if (cpuinfo.good()) {
|
||||
int cpu{}; // defaults to 0
|
||||
int core{}; // defaults to 0
|
||||
int n{}; // defaults to 0
|
||||
int cpu{};
|
||||
int core{};
|
||||
int n{};
|
||||
for (string instr; cpuinfo >> instr;) {
|
||||
if (instr == "processor") {
|
||||
cpuinfo.ignore(SSmax, ':');
|
||||
|
@ -1508,10 +1508,10 @@ namespace Gpu {
|
|||
#endif
|
||||
|
||||
namespace Mem {
|
||||
bool has_swap{}; // defaults to false
|
||||
bool has_swap{};
|
||||
vector<string> fstab;
|
||||
fs::file_time_type fstab_time;
|
||||
int disk_ios{}; // defaults to 0
|
||||
int disk_ios{};
|
||||
vector<string> last_found;
|
||||
|
||||
//?* Find the filepath to the specified ZFS object's stat file
|
||||
|
@ -1999,10 +1999,10 @@ namespace Mem {
|
|||
int64_t bytes_read;
|
||||
int64_t bytes_write;
|
||||
int64_t io_ticks;
|
||||
int64_t bytes_read_total{}; // defaults to 0
|
||||
int64_t bytes_write_total{}; // defaults to 0
|
||||
int64_t io_ticks_total{}; // defaults to 0
|
||||
int64_t objects_read{}; // defaults to 0
|
||||
int64_t bytes_read_total{};
|
||||
int64_t bytes_write_total{};
|
||||
int64_t io_ticks_total{};
|
||||
int64_t objects_read{};
|
||||
|
||||
// looking through all files that start with 'objset'
|
||||
for (const auto& file: fs::directory_iterator(disk.stat)) {
|
||||
|
@ -2078,11 +2078,11 @@ namespace Net {
|
|||
net_info empty_net = {};
|
||||
vector<string> interfaces;
|
||||
string selected_iface;
|
||||
int errors{}; // defaults to 0
|
||||
int errors{};
|
||||
std::unordered_map<string, uint64_t> graph_max = { {"download", {}}, {"upload", {}} };
|
||||
std::unordered_map<string, array<int, 2>> max_count = { {"download", {}}, {"upload", {}} };
|
||||
bool rescale{true};
|
||||
uint64_t timestamp{}; // defaults to 0
|
||||
uint64_t timestamp{};
|
||||
|
||||
//* RAII wrapper for getifaddrs
|
||||
class getifaddr_wrapper {
|
||||
|
@ -2171,7 +2171,7 @@ namespace Net {
|
|||
auto& saved_stat = net.at(iface).stat.at(dir);
|
||||
auto& bandwidth = net.at(iface).bandwidth.at(dir);
|
||||
|
||||
uint64_t val{}; // defaults to 0
|
||||
uint64_t val{};
|
||||
try { val = (uint64_t)stoull(readfile(sys_file, "0")); }
|
||||
catch (const std::invalid_argument&) {}
|
||||
catch (const std::out_of_range&) {}
|
||||
|
@ -2291,15 +2291,15 @@ namespace Proc {
|
|||
std::unordered_map<string, string> uid_user;
|
||||
string current_sort;
|
||||
string current_filter;
|
||||
bool current_rev{}; // defaults to false
|
||||
bool current_rev{};
|
||||
|
||||
fs::file_time_type passwd_time;
|
||||
|
||||
uint64_t cputimes;
|
||||
int collapse = -1, expand = -1;
|
||||
uint64_t old_cputimes{}; // defaults to 0
|
||||
atomic<int> numpids{}; // defaults to 0
|
||||
int filter_found{}; // defaults to 0
|
||||
uint64_t old_cputimes{};
|
||||
atomic<int> numpids{};
|
||||
int filter_found{};
|
||||
|
||||
detail_container detailed;
|
||||
constexpr size_t KTHREADD = 2;
|
||||
|
@ -2431,7 +2431,7 @@ namespace Proc {
|
|||
const int cmult = (per_core) ? Shared::coreCount : 1;
|
||||
bool got_detailed = false;
|
||||
|
||||
static size_t proc_clear_count{}; // defaults to 0
|
||||
static size_t proc_clear_count{};
|
||||
|
||||
//* Use pids from last update if only changing filter, sorting or tree options
|
||||
if (no_update and not current_procs.empty()) {
|
||||
|
@ -2506,7 +2506,7 @@ namespace Proc {
|
|||
|
||||
//? Check if pid already exists in current_procs
|
||||
auto find_old = rng::find(current_procs, pid, &proc_info::pid);
|
||||
bool no_cache{}; // defaults to false
|
||||
bool no_cache{};
|
||||
if (find_old == current_procs.end()) {
|
||||
current_procs.push_back({pid});
|
||||
find_old = current_procs.end() - 1;
|
||||
|
|
Loading…
Reference in a new issue