aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnthony Wang2021-11-30 18:55:07 +0000
committerGitHub2021-11-30 18:55:07 +0000
commit8ebd28113c6b7a8e2a70cf41fba2735ce0c4f29a (patch)
treee6628375eceed2f9929c1ace1d604dddd532df40
parented627fec85dc3f04d1d9e0bdfad3bc894ccfa878 (diff)
parentef2c1793d943c43fa1ebe2aa632270aa308012a2 (diff)
Merge pull request #8 from tahsinkose/conky-support
Provide two new modalities for CLI
-rw-r--r--README.md2
-rwxr-xr-xmakefile5
-rw-r--r--src/zenmonitor-cli.c39
3 files changed, 38 insertions, 8 deletions
diff --git a/README.md b/README.md
index 7e7d82a..9c33365 100644
--- a/README.md
+++ b/README.md
@@ -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
diff --git a/makefile b/makefile
index 93b7bf5..282d7ef 100755
--- a/makefile
+++ b/makefile
@@ -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
@@ -52,6 +52,9 @@ uninstall:
rm -f $(DESTDIR)$(PREFIX)/share/applications/zenmonitor-root.desktop
rm -f $(DESTDIR)/usr/share/polkit-1/actions/org.pkexec.zenmonitor.policy
+uninstall-cli:
+ rm -f $(DESTDIR)$(PREFIX)/bin/zenmonitor-cli
+
all: build build-cli
clean:
diff --git a/src/zenmonitor-cli.c b/src/zenmonitor-cli.c
index 7cf79f1..a89c14b 100644
--- a/src/zenmonitor-cli.c
+++ b/src/zenmonitor-cli.c
@@ -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,8 @@ gdouble delay = 0.5;
gchar *file = "";
SensorDataStore *store;
int quit = 0;
+int refresh_in_place = 0;
+int output_once = 0;
static GOptionEntry options[] = {
{"file", 'f', G_OPTION_FLAG_NONE, G_OPTION_ARG_STRING, &file,
@@ -22,6 +25,10 @@ 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}};
static SensorSource sensor_sources[] = {
@@ -138,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)
@@ -148,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;
}
}
@@ -164,8 +179,12 @@ void update_data()
void start_watching()
{
while(!quit)
- {
+ {
update_data();
+ if (output_once)
+ {
+ break;
+ }
usleep(delay * 1000 * 1000);
}
}
@@ -189,8 +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;