Refresh in place capability.

This commit is contained in:
Tahsincan Köse 2021-11-30 20:46:24 +03:00
parent 48bf54c46c
commit ef2c1793d9
No known key found for this signature in database
GPG key ID: 7DC51DEBD7AE089F
3 changed files with 27 additions and 6 deletions

View file

@ -55,7 +55,7 @@ Then:
```sh
sudo modprobe msr
sudo bash -c 'echo "msr" > /etc/modules-load.d/msr.conf'
sudo apt install build-essential libgtk-3-dev git
sudo apt install build-essential libgtk-3-dev libncurses5-dev git
cd ~
git clone https://github.com/Ta180m/zenmonitor3
cd zenmonitor3

View file

@ -22,7 +22,7 @@ build:
$(CC) -Isrc/include `pkg-config --cflags gtk+-3.0` $(BUILD_FILES_GUI) -o zenmonitor `pkg-config --libs gtk+-3.0` -lm -no-pie -Wall $(CFLAGS)
build-cli:
$(CC) -Isrc/include `pkg-config --cflags glib-2.0` $(BUILD_FILES_CLI) -o zenmonitor-cli `pkg-config --libs glib-2.0` -lm -no-pie -Wall $(CFLAGS)
$(CC) -Isrc/include `pkg-config --cflags glib-2.0` $(BUILD_FILES_CLI) -o zenmonitor-cli `pkg-config --libs glib-2.0` -lm -lncurses -no-pie -Wall $(CFLAGS)
install:
mkdir -p $(DESTDIR)$(PREFIX)/bin

View file

@ -4,6 +4,7 @@
#include <time.h>
#include <unistd.h>
#include <signal.h>
#include <ncurses.h>
#include "msr.h"
#include "os.h"
#include "zenpower.h"
@ -14,6 +15,7 @@ gdouble delay = 0.5;
gchar *file = "";
SensorDataStore *store;
int quit = 0;
int refresh_in_place = 0;
int output_once = 0;
static GOptionEntry options[] = {
@ -23,6 +25,8 @@ static GOptionEntry options[] = {
"Interval of refreshing informations", "SECONDS"},
{"coreid", 'c', 0, G_OPTION_ARG_NONE, &display_coreid,
"Display core_id instead of core index", NULL},
{"refresh-in-place", 'r', 0, G_OPTION_ARG_NONE, &refresh_in_place,
"Whether to flush stdout block in-place.", NULL},
{"output-once", 'o', 0, G_OPTION_ARG_NONE, &output_once,
"Output CPU information once and quit", NULL},
{NULL}};
@ -141,7 +145,7 @@ void update_data()
const SensorInit *sensorData;
sensor_data_store_keep_time(store);
int i = 1; //ncurses uses 1-based indexing.
for(source = sensor_sources; source->drv; source++)
{
if(source->enabled)
@ -151,11 +155,19 @@ void update_data()
{
node = source->sensors;
while(node)
while (node)
{
sensorData = (SensorInit*)node->data;
sensorData = (SensorInit *)node->data;
sensor_data_store_add_data(store, sensorData->label, *sensorData->value);
printf("%s\t%f\n", sensorData->label, *sensorData->value);
if (refresh_in_place)
{
mvprintw(i++, 0, "%s\t%f", sensorData->label, *sensorData->value);
refresh();
}
else
{
printf("%s\t%f\n", sensorData->label, *sensorData->value);
}
node = node->next;
}
}
@ -196,7 +208,16 @@ int main(int argc, char *argv[])
store = sensor_data_store_new();
init_sensors();
if (refresh_in_place)
{
initscr();
curs_set(0);
}
start_watching();
if (refresh_in_place)
{
endwin();
}
sensor_data_store_free(store);
return EXIT_SUCCESS;