1
0
mirror of https://github.com/gryf/wmtemp.git synced 2025-12-18 20:10:22 +01:00

Using NVCtrlLib library instead of nvidia-settings program. Refactoring and

code cleanup. Changed version to 0.4.0
This commit is contained in:
2012-05-30 11:21:27 +02:00
parent 4e92b6f5ca
commit ac503a1ee5
5 changed files with 32 additions and 45 deletions

View File

@@ -366,7 +366,7 @@ void setMaskXY(int x, int y) {
/*******************************************************************************\
|* openXwindow *|
\*******************************************************************************/
void openXwindow(int argc, char *argv[], char *pixmap_bytes[], char *pixmask_bits, int pixmask_width, int pixmask_height) {
void openXwindow(int argc, char *argv[], char *pixmap_bytes[], const char *pixmask_bits, int pixmask_width, int pixmask_height) {
unsigned int borderwidth = 1;
XClassHint classHint;

View File

@@ -45,7 +45,7 @@ Display *display;
void AddMouseRegion(int index, int left, int top, int right, int bottom);
int CheckMouseRegion(int x, int y);
void openXwindow(int argc, char *argv[], char **, char *, int, int);
void openXwindow(int argc, char *argv[], char **, const char *, int, int);
void RedrawWindow(void);
void RedrawWindowXY(int x, int y);

View File

@@ -9,14 +9,14 @@ OBJ = $(SRC:.c=.o)
CFLAGS = -Wall -O3
LIB = -L/usr/X11R6/lib -lXpm -lXext -lX11 -lsensors
LIB = -I/usr/include/NVCtrl/ -L/usr/X11R6/lib -lXpm -lXext -lX11 -lsensors -lXNVCtrl
INSTALL = /usr/bin/install
CC = gcc
all: $(OBJ)
$(CC) -o $(EXE) $(OBJ) $(LIB)
$(CC) $(CFLAGS) -o $(EXE) $(OBJ) $(LIB)
strip $(EXE)
$(OBJ): %.o : %.c

View File

@@ -2,11 +2,10 @@
* wmtempnv: a sensor monitor for WindowMaker. this little app is mainly based
* on wmsensormon and other simple dockapps.
*
* version = 0.1
* date: Fri Oct 31 20:41:14 CET 2008 @861 /Internet Time/
* author: Roman 'gryf' Dobosz
* requirements: configured lm_sensors and sensor program, nvidia-settings, cut,
* grep.
* version = 0.4
*
* requirements: configured lm_sensors, sensor program and
* nvidia-settings package
* licence: gpl
*/
@@ -23,6 +22,9 @@
#include "wmtempnv_master2.xpm"
#include "wmtempnv_mask.xbm"
#include <NVCtrl/NVCtrl.h>
#include <NVCtrl/NVCtrlLib.h>
#define MAXSTRLEN 8
#define TEMP 40
#define TEMP_OVER 47
@@ -31,35 +33,27 @@
#define MAXFNAME 50
void display_values(int, int, int);
int get_temp(int core_number, int skip);
int get_temp(int core_number, Display*);
int get_offset(int temp, int cpu);
Display *display;
int main(int argc, char **argv){
int temp1=0, temp2=0, temp3=0;
/* offset is one of 0 (normal), 7 (alert), 14 (warning) */
int offset1=0, offset2=0, offset3=0;
int counter = 0;
int skip = 3;
display = XOpenDisplay(NULL);
/* nvclock.dpy = NULL; */
/* if(!init_nvclock()) return 0; */
/* atexit(unload_nvclock); */
/* if(!set_card(0)) return 0; */
openXwindow(argc, argv, wmtempnv_master2_xpm, wmtempnv_mask_bits, wmtempnv_mask_width, wmtempnv_mask_height);
openXwindow(argc, argv, wmtempnv_master2_xpm, wmtempnv_mask_bits,
wmtempnv_mask_width, wmtempnv_mask_height);
while(TRUE){
if(counter==0){
skip--;
temp1 = get_temp(0, skip);
offset1 = get_offset(temp1, 1);
temp2 = get_temp(1, skip);
offset2 = get_offset(temp2, 1);
temp3 = get_temp(2, skip);
offset3 = get_offset(temp3, 0);
counter = 500;
if (skip == 0) skip = 3;
}
temp1 = get_temp(0, display);
offset1 = get_offset(temp1, 1);
temp2 = get_temp(1, display);
offset2 = get_offset(temp2, 1);
temp3 = get_temp(2, display);
offset3 = get_offset(temp3, 0);
// core 1
copyXPMArea(0, 87 + offset1, 23, 7, 4, 7); // LCD: "CPU"
@@ -79,7 +73,7 @@ int main(int argc, char **argv){
display_values(temp3, 28, offset3);
RedrawWindow();
counter--;
usleep(2000);
sleep(1);
}
}
@@ -118,27 +112,20 @@ void display_values(int temp, int offset, int offset2){
copyXPMArea(5 * num4, 65 + offset2, 5, 7, 51, 7 + offset);
}
int get_temp(int core_number, int skip){
int get_temp(int core_number, Display *disp){
// Core temperature. argument is core number. core no.2 is GPU
FILE *file;
char filename[MAXFNAME];
int core_temp = 0;
char gpu_cmd[] = "nvidia-settings -tq GPUCoreTemp";
Bool res;
/* if(core_number == 2 && skip > 0){ */
if(core_number == 2){
printf("%d\n", skip);
// GPU
file = popen(gpu_cmd, "r");
while (!feof(file)) {
char line[MAXSTRLEN + 1];
bzero(line, MAXSTRLEN + 1);
fgets(line, MAXSTRLEN, file);
if(line[0] != 0){
sscanf(line, "%d", &core_temp);
}
}
pclose(file);
res = XNVCTRLQueryTargetAttribute(disp,
NV_CTRL_TARGET_TYPE_GPU, 0, 0,
NV_CTRL_GPU_CORE_TEMPERATURE, &core_temp);
if (res == False) core_temp = 0;
}else{
snprintf(filename, MAXFNAME,
"/sys/bus/platform/devices/coretemp.0/temp%d_input",

View File

@@ -1,6 +1,6 @@
#define wmtempnv_mask_width 64
#define wmtempnv_mask_height 64
static unsigned char wmtempnv_mask_bits[] = {
static const char wmtempnv_mask_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,