mirror of https://github.com/aristocratos/btop.git
Merge branch 'main' into battery-power-2
This commit is contained in:
commit
f1f37ad6af
|
@ -65,6 +65,8 @@ if(APPLE)
|
||||||
target_sources(btop PRIVATE src/osx/btop_collect.cpp src/osx/sensors.cpp src/osx/smc.cpp)
|
target_sources(btop PRIVATE src/osx/btop_collect.cpp src/osx/sensors.cpp src/osx/smc.cpp)
|
||||||
elseif(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
|
elseif(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
|
||||||
target_sources(btop PRIVATE src/freebsd/btop_collect.cpp)
|
target_sources(btop PRIVATE src/freebsd/btop_collect.cpp)
|
||||||
|
elseif(CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")
|
||||||
|
target_sources(btop PRIVATE src/openbsd/btop_collect.cpp src/openbsd/sysctlbyname.cpp)
|
||||||
elseif(LINUX)
|
elseif(LINUX)
|
||||||
target_sources(btop PRIVATE src/linux/btop_collect.cpp)
|
target_sources(btop PRIVATE src/linux/btop_collect.cpp)
|
||||||
else()
|
else()
|
||||||
|
@ -110,6 +112,7 @@ if(HAS_FCF_PROTECTION)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
target_compile_definitions(btop PRIVATE
|
target_compile_definitions(btop PRIVATE
|
||||||
|
FMT_HEADER_ONLY
|
||||||
_FILE_OFFSET_BITS=64
|
_FILE_OFFSET_BITS=64
|
||||||
$<$<CONFIG:Debug>:_GLIBCXX_ASSERTIONS _LIBCPP_ENABLE_ASSERTIONS=1>
|
$<$<CONFIG:Debug>:_GLIBCXX_ASSERTIONS _LIBCPP_ENABLE_ASSERTIONS=1>
|
||||||
# Only has an effect with optimizations enabled
|
# Only has an effect with optimizations enabled
|
||||||
|
@ -185,6 +188,12 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
|
||||||
find_package(kvm REQUIRED)
|
find_package(kvm REQUIRED)
|
||||||
target_link_libraries(btop elf::elf kvm::kvm)
|
target_link_libraries(btop elf::elf kvm::kvm)
|
||||||
endif()
|
endif()
|
||||||
|
elseif(CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")
|
||||||
|
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||||
|
target_compile_options(btop PRIVATE -static-libstdc++)
|
||||||
|
endif()
|
||||||
|
find_package(kvm REQUIRED)
|
||||||
|
target_link_libraries(btop kvm::kvm)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
install(TARGETS btop RUNTIME)
|
install(TARGETS btop RUNTIME)
|
||||||
|
|
4
Makefile
4
Makefile
|
@ -143,7 +143,7 @@ else ifeq ($(PLATFORM_LC),macos)
|
||||||
else ifeq ($(PLATFORM_LC),openbsd)
|
else ifeq ($(PLATFORM_LC),openbsd)
|
||||||
PLATFORM_DIR := openbsd
|
PLATFORM_DIR := openbsd
|
||||||
THREADS := $(shell sysctl -n hw.ncpu || echo 1)
|
THREADS := $(shell sysctl -n hw.ncpu || echo 1)
|
||||||
override ADDFLAGS += -lkvm
|
override ADDFLAGS += -lkvm -static-libstdc++
|
||||||
export MAKE = gmake
|
export MAKE = gmake
|
||||||
SU_GROUP := wheel
|
SU_GROUP := wheel
|
||||||
else
|
else
|
||||||
|
@ -179,7 +179,7 @@ override GOODFLAGS := $(foreach flag,$(TESTFLAGS),$(strip $(shell echo "int main
|
||||||
override REQFLAGS := -std=c++20
|
override REQFLAGS := -std=c++20
|
||||||
WARNFLAGS := -Wall -Wextra -pedantic
|
WARNFLAGS := -Wall -Wextra -pedantic
|
||||||
OPTFLAGS := -O2 -ftree-vectorize -flto=$(LTO)
|
OPTFLAGS := -O2 -ftree-vectorize -flto=$(LTO)
|
||||||
LDCXXFLAGS := -pthread -D_GLIBCXX_ASSERTIONS -D_FILE_OFFSET_BITS=64 $(GOODFLAGS) $(ADDFLAGS)
|
LDCXXFLAGS := -pthread -DFMT_HEADER_ONLY -D_GLIBCXX_ASSERTIONS -D_FILE_OFFSET_BITS=64 $(GOODFLAGS) $(ADDFLAGS)
|
||||||
override CXXFLAGS += $(REQFLAGS) $(LDCXXFLAGS) $(OPTFLAGS) $(WARNFLAGS)
|
override CXXFLAGS += $(REQFLAGS) $(LDCXXFLAGS) $(OPTFLAGS) $(WARNFLAGS)
|
||||||
override LDFLAGS += $(LDCXXFLAGS) $(OPTFLAGS) $(WARNFLAGS)
|
override LDFLAGS += $(LDCXXFLAGS) $(OPTFLAGS) $(WARNFLAGS)
|
||||||
INC := $(foreach incdir,$(INCDIRS),-isystem $(incdir)) -I$(SRCDIR)
|
INC := $(foreach incdir,$(INCDIRS),-isystem $(incdir)) -I$(SRCDIR)
|
||||||
|
|
68
README.md
68
README.md
|
@ -995,6 +995,74 @@ If you have an AMD GPU `rocm_smi_lib` is required, which may or may not be packa
|
||||||
gmake help
|
gmake help
|
||||||
```
|
```
|
||||||
|
|
||||||
|
</details>
|
||||||
|
<details>
|
||||||
|
<summary>
|
||||||
|
|
||||||
|
### With CMake (Community maintained)
|
||||||
|
</summary>
|
||||||
|
|
||||||
|
1. **Install build dependencies**
|
||||||
|
|
||||||
|
Requires GCC, CMake, Ninja and Git
|
||||||
|
|
||||||
|
_**Note:** LLVM's libc++ shipped with OpenBSD 7.4 is too old and cannot compile btop._
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pkg_add cmake g++%11 git ninja
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Clone the repository**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/aristocratos/btop.git && cd btop
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Compile**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Configure
|
||||||
|
CXX=eg++ cmake -B build -G Ninja
|
||||||
|
# Build
|
||||||
|
cmake --build build
|
||||||
|
```
|
||||||
|
|
||||||
|
This will automatically build a release version of btop.
|
||||||
|
|
||||||
|
Some useful options to pass to the configure step:
|
||||||
|
|
||||||
|
| Configure flag | Description |
|
||||||
|
|---------------------------------|-------------------------------------------------------------------------|
|
||||||
|
| `-DBTOP_LTO=<ON\|OFF>` | Enables link time optimization (ON by default) |
|
||||||
|
| `-DBTOP_USE_MOLD=<ON\|OFF>` | Use mold to link btop (OFF by default) |
|
||||||
|
| `-DBTOP_PEDANTIC=<ON\|OFF>` | Compile with additional warnings (OFF by default) |
|
||||||
|
| `-DBTOP_WERROR=<ON\|OFF>` | Compile with warnings as errors (OFF by default) |
|
||||||
|
| `-DBTOP_FORTIFY=<ON\|OFF>` | Detect buffer overflows with `_FORTIFY_SOURCE=3` (ON by default) |
|
||||||
|
| `-DCMAKE_INSTALL_PREFIX=<path>` | The installation prefix ('/usr/local' by default) |
|
||||||
|
|
||||||
|
To force any other compiler, run `CXX=<compiler> cmake -B build -G Ninja`
|
||||||
|
|
||||||
|
4. **Install**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cmake --install build
|
||||||
|
```
|
||||||
|
|
||||||
|
May require root privileges
|
||||||
|
|
||||||
|
5. **Uninstall**
|
||||||
|
|
||||||
|
CMake doesn't generate an uninstall target by default. To remove installed files, run
|
||||||
|
```
|
||||||
|
cat build/install_manifest.txt | xargs rm -irv
|
||||||
|
```
|
||||||
|
|
||||||
|
6. **Cleanup build directory**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cmake --build build -t clean
|
||||||
|
```
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## Installing the snap
|
## Installing the snap
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
# Find libkvm, the Kernel Data Access Library
|
# Find libkvm, the Kernel Data Access Library
|
||||||
#
|
#
|
||||||
|
|
||||||
if(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
|
if(BSD)
|
||||||
find_path(kvm_INCLUDE_DIR NAMES kvm.h)
|
find_path(kvm_INCLUDE_DIR NAMES kvm.h)
|
||||||
find_library(kvm_LIBRARY NAMES kvm)
|
find_library(kvm_LIBRARY NAMES kvm)
|
||||||
|
|
||||||
|
|
|
@ -53,6 +53,7 @@ tab-size = 4
|
||||||
#include "btop_draw.hpp"
|
#include "btop_draw.hpp"
|
||||||
#include "btop_menu.hpp"
|
#include "btop_menu.hpp"
|
||||||
#include "fmt/core.h"
|
#include "fmt/core.h"
|
||||||
|
#include "fmt/ostream.h"
|
||||||
|
|
||||||
using std::atomic;
|
using std::atomic;
|
||||||
using std::cout;
|
using std::cout;
|
||||||
|
|
|
@ -1364,6 +1364,7 @@ namespace Net {
|
||||||
int x = 1, y, width = 20, height;
|
int x = 1, y, width = 20, height;
|
||||||
int b_x, b_y, b_width, b_height, d_graph_height, u_graph_height;
|
int b_x, b_y, b_width, b_height, d_graph_height, u_graph_height;
|
||||||
bool shown = true, redraw = true;
|
bool shown = true, redraw = true;
|
||||||
|
const int MAX_IFNAMSIZ = 15;
|
||||||
string old_ip;
|
string old_ip;
|
||||||
std::unordered_map<string, Draw::Graph> graphs;
|
std::unordered_map<string, Draw::Graph> graphs;
|
||||||
string box;
|
string box;
|
||||||
|
@ -1384,7 +1385,7 @@ namespace Net {
|
||||||
out.reserve(width * height);
|
out.reserve(width * height);
|
||||||
const string title_left = Theme::c("net_box") + Fx::ub + Symbols::title_left;
|
const string title_left = Theme::c("net_box") + Fx::ub + Symbols::title_left;
|
||||||
const string title_right = Theme::c("net_box") + Fx::ub + Symbols::title_right;
|
const string title_right = Theme::c("net_box") + Fx::ub + Symbols::title_right;
|
||||||
const int i_size = min((int)selected_iface.size(), 10);
|
const int i_size = min((int)selected_iface.size(), MAX_IFNAMSIZ);
|
||||||
const long long down_max = (net_auto ? safeVal(graph_max, "download"s) : ((long long)(Config::getI("net_download")) << 20) / 8);
|
const long long down_max = (net_auto ? safeVal(graph_max, "download"s) : ((long long)(Config::getI("net_download")) << 20) / 8);
|
||||||
const long long up_max = (net_auto ? safeVal(graph_max, "upload"s) : ((long long)(Config::getI("net_upload")) << 20) / 8);
|
const long long up_max = (net_auto ? safeVal(graph_max, "upload"s) : ((long long)(Config::getI("net_upload")) << 20) / 8);
|
||||||
|
|
||||||
|
@ -1406,7 +1407,7 @@ namespace Net {
|
||||||
//? Interface selector and buttons
|
//? Interface selector and buttons
|
||||||
|
|
||||||
out += Mv::to(y, x+width - i_size - 9) + title_left + Fx::b + Theme::c("hi_fg") + "<b " + Theme::c("title")
|
out += Mv::to(y, x+width - i_size - 9) + title_left + Fx::b + Theme::c("hi_fg") + "<b " + Theme::c("title")
|
||||||
+ uresize(selected_iface, 10) + Theme::c("hi_fg") + " n>" + title_right
|
+ uresize(selected_iface, MAX_IFNAMSIZ) + Theme::c("hi_fg") + " n>" + title_right
|
||||||
+ Mv::to(y, x+width - i_size - 15) + title_left + Theme::c("hi_fg") + (safeVal(net.stat, "download"s).offset + safeVal(net.stat, "upload"s).offset > 0 ? Fx::b : "") + 'z'
|
+ Mv::to(y, x+width - i_size - 15) + title_left + Theme::c("hi_fg") + (safeVal(net.stat, "download"s).offset + safeVal(net.stat, "upload"s).offset > 0 ? Fx::b : "") + 'z'
|
||||||
+ Theme::c("title") + "ero" + title_right;
|
+ Theme::c("title") + "ero" + title_right;
|
||||||
Input::mouse_mappings["b"] = {y, x+width - i_size - 8, 1, 3};
|
Input::mouse_mappings["b"] = {y, x+width - i_size - 8, 1, 3};
|
||||||
|
|
|
@ -18,6 +18,10 @@ tab-size = 4
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#if !defined(NDEBUG)
|
||||||
|
# define BTOP_DEBUG
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <algorithm> // for std::ranges::count_if
|
#include <algorithm> // for std::ranges::count_if
|
||||||
#include <array>
|
#include <array>
|
||||||
#include <atomic>
|
#include <atomic>
|
||||||
|
@ -42,11 +46,9 @@ tab-size = 4
|
||||||
#define HOST_NAME_MAX 64
|
#define HOST_NAME_MAX 64
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#define FMT_HEADER_ONLY
|
|
||||||
#include "fmt/core.h"
|
#include "fmt/core.h"
|
||||||
#include "fmt/format.h"
|
#include "fmt/format.h"
|
||||||
#include "fmt/ostream.h"
|
|
||||||
#include "fmt/ranges.h"
|
|
||||||
|
|
||||||
using std::array;
|
using std::array;
|
||||||
using std::atomic;
|
using std::atomic;
|
||||||
|
|
|
@ -590,7 +590,7 @@ namespace Cpu {
|
||||||
cpuhz += " GHz";
|
cpuhz += " GHz";
|
||||||
}
|
}
|
||||||
else if (hz > 0)
|
else if (hz > 0)
|
||||||
cpuhz = to_string((int)round(hz)) + " MHz";
|
cpuhz = to_string((int)hz) + " MHz";
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (const std::exception& e) {
|
catch (const std::exception& e) {
|
||||||
|
|
Loading…
Reference in New Issue