Version 0.2
This commit is contained in:
parent
64898a23a2
commit
ef2b4716e5
21
ChangeLog
21
ChangeLog
|
@ -1,6 +1,19 @@
|
|||
snapman (0.1) unstable; urgency=medium
|
||||
rgbtemp
|
||||
=======
|
||||
|
||||
* Release 0.1.
|
||||
+ First release.
|
||||
Release 0.2
|
||||
-----------
|
||||
|
||||
By Manuel <mdomlop@gmail.com> Wed, 03 Apr 2020 14:34:17 +0200
|
||||
|
||||
- No hardcoded values for hwmon file.
|
||||
- Supply such file by RGBTEMP environment variable or by command line.
|
||||
|
||||
|
||||
Release 0.1
|
||||
-----------
|
||||
|
||||
By Manuel <mdomlop@gmail.com > Wed, 03 Apr 2020 14:34:17 +0200
|
||||
|
||||
- First release.
|
||||
|
||||
-- Manuel Domínguez López <mdomlop@gmail.com > Wed, 03 Apr 2020 14:34:17 +0200
|
||||
|
|
2
INFO
2
INFO
|
@ -1,7 +1,7 @@
|
|||
PROGRAM_NAME=RGB Temperature Monitor
|
||||
EXECUTABLE_NAME=rgbtemp
|
||||
DESCRIPTION=Change RGB colors according to temperature.
|
||||
VERSION=0.1
|
||||
VERSION=0.2
|
||||
AUTHOR=Manuel Domínguez López
|
||||
SOURCE=https://github.com/mdomlop/rgbtemp
|
||||
LICENSE=GPL-3
|
||||
|
|
2
Makefile
2
Makefile
|
@ -31,7 +31,7 @@ arch_install_services:
|
|||
|
||||
arch_pkg: $(ARCHPKG)
|
||||
$(ARCHPKG): PKGBUILD ChangeLog
|
||||
makepkg -d
|
||||
makepkg -fd
|
||||
@echo
|
||||
@echo Package done!
|
||||
@echo You can install it as root with:
|
||||
|
|
160
src/rgbtemp.c
160
src/rgbtemp.c
|
@ -2,14 +2,17 @@
|
|||
#include <stdlib.h> /* For exit() function */
|
||||
#include <unistd.h> /* For sleep() function */
|
||||
#include <signal.h>
|
||||
#include <string.h>
|
||||
|
||||
unsigned int sleep(unsigned int seconds);
|
||||
|
||||
#define FALSE 0
|
||||
#define TRUE 1
|
||||
|
||||
#define SLEEP 2 /* Sleeping time in seconds */
|
||||
|
||||
#define BLACK "00000000 00000000 00000000" /* off */
|
||||
#define WHITE "FFFFFFFF FFFFFFFF FFFFFFFF" /* >2Fº */
|
||||
#define WHITE "FFFFFFFF FFFFFFFF FFFFFFFF" /* >20º */
|
||||
#define CYAN "00000000 FFFFFFFF FFFFFFFF" /* >30º */
|
||||
#define BLUE "00000000 00000000 FFFFFFFF" /* >40º */
|
||||
#define GREEN "00000000 FFFFFFFF 00000000" /* >50º */
|
||||
|
@ -18,87 +21,112 @@ unsigned int sleep(unsigned int seconds);
|
|||
#define RED "FFFFFFFF 00000000 00000000" /* >80º */
|
||||
#define PINK "FFFFFFFF 00000000 FFFFFFFF" /* >90º */
|
||||
|
||||
char fileaddr[] = "/sys/class/hwmon/hwmon0/temp1_input";
|
||||
/* #define DEF_PATH "/sys/class/hwmon/hwmon1/temp3_input" */
|
||||
|
||||
int running = TRUE;
|
||||
|
||||
void set_color(int celsius) {
|
||||
/* printf("Los grados son: %i\n", celsius); */
|
||||
int exitstatus = 0;
|
||||
if (celsius > 90000) { exitstatus = system("msi-rgb --base-port 4e --pulse " PINK); }
|
||||
else if (celsius > 80000) { exitstatus = system("msi-rgb --base-port 4e --pulse " RED); }
|
||||
else if (celsius > 70000) { exitstatus = system("msi-rgb --base-port 4e --pulse " ORANGE); }
|
||||
else if (celsius > 60000) { exitstatus = system("msi-rgb --base-port 4e --pulse " YELLOW); }
|
||||
else if (celsius > 50000) { exitstatus = system("msi-rgb --base-port 4e --pulse " GREEN); }
|
||||
else if (celsius > 40000) { exitstatus = system("msi-rgb --base-port 4e --pulse " BLUE); }
|
||||
else if (celsius > 30000) { exitstatus = system("msi-rgb --base-port 4e --pulse " CYAN); }
|
||||
else if (celsius > 20000) { exitstatus = system("msi-rgb --base-port 4e --pulse " WHITE); }
|
||||
else { exitstatus = system("msi-rgb --base-port 4e --pulse " BLACK); }
|
||||
/* printf("Los grados son: %i\n", celsius); */
|
||||
int exitstatus = 0;
|
||||
if (celsius > 90000) { exitstatus = system("msi-rgb --base-port 4e --pulse " PINK); }
|
||||
else if (celsius > 80000) { exitstatus = system("msi-rgb --base-port 4e --pulse " RED); }
|
||||
else if (celsius > 70000) { exitstatus = system("msi-rgb --base-port 4e --pulse " ORANGE); }
|
||||
else if (celsius > 60000) { exitstatus = system("msi-rgb --base-port 4e --pulse " YELLOW); }
|
||||
else if (celsius > 50000) { exitstatus = system("msi-rgb --base-port 4e --pulse " GREEN); }
|
||||
else if (celsius > 40000) { exitstatus = system("msi-rgb --base-port 4e --pulse " BLUE); }
|
||||
else if (celsius > 30000) { exitstatus = system("msi-rgb --base-port 4e --pulse " CYAN); }
|
||||
else if (celsius > 20000) { exitstatus = system("msi-rgb --base-port 4e --pulse " WHITE); }
|
||||
else { exitstatus = system("msi-rgb --base-port 4e --pulse " BLACK); }
|
||||
|
||||
if (exitstatus) running = FALSE;
|
||||
if (exitstatus) running = FALSE;
|
||||
}
|
||||
|
||||
void sig_handler(int signo)
|
||||
{
|
||||
if (signo == SIGUSR1) {
|
||||
fprintf(stderr, "\nINFO: Received SIGUSR1\n");
|
||||
running = FALSE;
|
||||
}
|
||||
else if (signo == SIGTERM) {
|
||||
fprintf(stderr, "\nINFO: Received SIGTERM\n");
|
||||
running = FALSE;
|
||||
}
|
||||
else if (signo == SIGINT) {
|
||||
fprintf(stderr, "\nINFO: Received SIGINT\n");
|
||||
running = FALSE;
|
||||
}
|
||||
else if (signo == SIGKILL)
|
||||
fprintf(stderr, "\nINFO: Received SIGKILL\n");
|
||||
else if (signo == SIGSTOP)
|
||||
fprintf(stderr, "\nINFO: Received SIGSTOP\n");
|
||||
else
|
||||
fprintf(stderr, "\nINFO: Received: %d", signo);
|
||||
if (signo == SIGUSR1) {
|
||||
fprintf(stderr, "\nINFO: Received SIGUSR1\n");
|
||||
running = FALSE;
|
||||
}
|
||||
else if (signo == SIGTERM) {
|
||||
fprintf(stderr, "\nINFO: Received SIGTERM\n");
|
||||
running = FALSE;
|
||||
}
|
||||
else if (signo == SIGINT) {
|
||||
fprintf(stderr, "\nINFO: Received SIGINT\n");
|
||||
running = FALSE;
|
||||
}
|
||||
else if (signo == SIGKILL)
|
||||
fprintf(stderr, "\nINFO: Received SIGKILL\n");
|
||||
else if (signo == SIGSTOP)
|
||||
fprintf(stderr, "\nINFO: Received SIGSTOP\n");
|
||||
else
|
||||
fprintf(stderr, "\nINFO: Received: %d", signo);
|
||||
}
|
||||
|
||||
int main() {
|
||||
int i;
|
||||
int cleanexit;
|
||||
int fscanf_ok;
|
||||
char c[8];
|
||||
FILE *fptr;
|
||||
int main(int argc, char *argv[]) {
|
||||
int i;
|
||||
int cleanexit;
|
||||
int fscanf_ok;
|
||||
char c[8];
|
||||
char fileaddr[255];
|
||||
|
||||
if (signal(SIGUSR1, sig_handler) == SIG_ERR)
|
||||
fprintf(stderr, "WARNING: Can't catch SIGUSR1\n");
|
||||
if (signal(SIGTERM, sig_handler) == SIG_ERR)
|
||||
fprintf(stderr, "WARNING: Can't catch SIGTERM\n");
|
||||
if (signal(SIGINT, sig_handler) == SIG_ERR)
|
||||
fprintf(stderr, "WARNING: Can't catch SIGINT\n");
|
||||
/*if (signal(SIGKILL, sig_handler) == SIG_ERR)
|
||||
fprintf(stderr, "%s", "WARNING: Can't catch SIGKILL\n");
|
||||
if (signal(SIGSTOP, sig_handler) == SIG_ERR)
|
||||
fprintf(stderr, "%s", "WARNING: Can't catch SIGSTOP\n"); */
|
||||
const char* env = getenv("RGBTEMP");
|
||||
|
||||
while (running) {
|
||||
if ((fptr = fopen(fileaddr, "r")) == NULL) {
|
||||
fprintf(stderr, "ERROR: Opening file");
|
||||
/* Program exits if file pointer returns NULL. */
|
||||
exit(1);
|
||||
}
|
||||
FILE *fptr;
|
||||
|
||||
/* Reads text until newline is encountered */
|
||||
fscanf_ok = fscanf(fptr, "%[^\n]", c);
|
||||
fclose(fptr);
|
||||
switch (argc)
|
||||
{
|
||||
case 1:
|
||||
if (env != NULL) strcpy(fileaddr, env);
|
||||
else
|
||||
{
|
||||
fprintf(stderr, "RGBTEMP environment variable is empty.\n"
|
||||
"Please, supply a file in such variable or by command line.\n"
|
||||
"Exiting.\n");
|
||||
exit(2);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
strcpy(fileaddr, argv[1]);
|
||||
break;
|
||||
default:
|
||||
fprintf(stderr, "\nWarning: incorrect number of args: %d.", argc);
|
||||
break;
|
||||
}
|
||||
|
||||
if (!fscanf_ok) { return 0; }
|
||||
if (signal(SIGUSR1, sig_handler) == SIG_ERR)
|
||||
fprintf(stderr, "WARNING: Can't catch SIGUSR1\n");
|
||||
if (signal(SIGTERM, sig_handler) == SIG_ERR)
|
||||
fprintf(stderr, "WARNING: Can't catch SIGTERM\n");
|
||||
if (signal(SIGINT, sig_handler) == SIG_ERR)
|
||||
fprintf(stderr, "WARNING: Can't catch SIGINT\n");
|
||||
/*if (signal(SIGKILL, sig_handler) == SIG_ERR)
|
||||
fprintf(stderr, "%s", "WARNING: Can't catch SIGKILL\n");
|
||||
if (signal(SIGSTOP, sig_handler) == SIG_ERR)
|
||||
fprintf(stderr, "%s", "WARNING: Can't catch SIGSTOP\n"); */
|
||||
|
||||
i = atoi(c);
|
||||
set_color(i);
|
||||
sleep(2);
|
||||
}
|
||||
while (running) {
|
||||
if ((fptr = fopen(fileaddr, "r")) == NULL) {
|
||||
fprintf(stderr, "ERROR: Opening file %s", fileaddr);
|
||||
/* Program exits if file pointer returns NULL. */
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/* system("msi-rgb --disable --base-port 4e " WHITE); */
|
||||
cleanexit = system("msi-rgb --base-port 4e " BLACK); /* No pulsing */
|
||||
/* Reads text until newline is encountered */
|
||||
fscanf_ok = fscanf(fptr, "%[^\n]", c);
|
||||
fclose(fptr);
|
||||
|
||||
if (cleanexit) { return 1; }
|
||||
if (!fscanf_ok) { return 0; }
|
||||
|
||||
return 0;
|
||||
i = atoi(c);
|
||||
set_color(i);
|
||||
sleep(SLEEP);
|
||||
}
|
||||
|
||||
/* system("msi-rgb --disable --base-port 4e " WHITE); */
|
||||
cleanexit = system("msi-rgb --base-port 4e " BLACK); /* No pulsing */
|
||||
|
||||
if (cleanexit) { return 1; }
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
Description=Change RGB colors according to temperature
|
||||
|
||||
[Service]
|
||||
Environment=RGBTEMP=/path/to/sys/hwmon/temp_input_file
|
||||
Type=simple
|
||||
ExecStart=rgbtemp
|
||||
KillMode=process
|
||||
|
|
Loading…
Reference in a new issue