Merge getting thermal zone temperature from atsutane, thanks!
This commit is contained in:
parent
ec0f8ddfda
commit
15977d8a17
6
debian/changelog
vendored
6
debian/changelog
vendored
@ -1,3 +1,9 @@
|
|||||||
|
i3status (1.1-1) unstable; urgency=low
|
||||||
|
|
||||||
|
* Implement getting temperature from thermal zones (Thanks atsutane)
|
||||||
|
|
||||||
|
-- Michael Stapelberg <michael@stapelberg.de> Fri, 22 May 2009 21:23:44 +0200
|
||||||
|
|
||||||
i3status (1.0-1) unstable; urgency=low
|
i3status (1.0-1) unstable; urgency=low
|
||||||
|
|
||||||
* Initial release
|
* Initial release
|
||||||
|
10
i3status.1
10
i3status.1
@ -90,6 +90,11 @@ red/green.
|
|||||||
Get current speed of the ethernet interface using the same mechanism as
|
Get current speed of the ethernet interface using the same mechanism as
|
||||||
ethtool. You need to start i3status with root privileges to use this.
|
ethtool. You need to start i3status with root privileges to use this.
|
||||||
|
|
||||||
|
.TP
|
||||||
|
.B get_cpu_temperature
|
||||||
|
Gets the temperature of the first thermal zone or the specified thermal zone
|
||||||
|
(if any). Use it to display your CPU temperature.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B normcolors
|
.B normcolors
|
||||||
Specifies the colors for background/border in the same format (html colorcodes)
|
Specifies the colors for background/border in the same format (html colorcodes)
|
||||||
@ -122,6 +127,7 @@ System-wide configuration file.
|
|||||||
\&order run,wlan,eth,battery,load,time
|
\&order run,wlan,eth,battery,load,time
|
||||||
\&normcolors #000000 #333333
|
\&normcolors #000000 #333333
|
||||||
\&color
|
\&color
|
||||||
|
\&get_cpu_temperature
|
||||||
.Ve
|
.Ve
|
||||||
|
|
||||||
.SH MOUNTING WMII'S PSEUDO FILESYSTEM
|
.SH MOUNTING WMII'S PSEUDO FILESYSTEM
|
||||||
@ -143,8 +149,10 @@ this, please fix it and send me a patch.
|
|||||||
.BR date (1),
|
.BR date (1),
|
||||||
.BR glob (3)
|
.BR glob (3)
|
||||||
|
|
||||||
.SH AUTHOR
|
.SH AUTHORS
|
||||||
Michael Stapelberg <michael+i3status at stapelberg dot de>
|
Michael Stapelberg <michael+i3status at stapelberg dot de>
|
||||||
|
|
||||||
|
Thorsten Toepper <atsutane at freethoughts dot de>
|
||||||
|
|
||||||
.SH WEBSITE
|
.SH WEBSITE
|
||||||
See http://i3.zekjur.net/i3status for the newest release.
|
See http://i3.zekjur.net/i3status for the newest release.
|
||||||
|
46
i3status.c
46
i3status.c
@ -5,6 +5,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* Copyright © 2008-2009 Michael Stapelberg and contributors
|
* Copyright © 2008-2009 Michael Stapelberg and contributors
|
||||||
|
* Copyright © 2009 Thorsten Toepper <atsutane at freethoughts dot de>
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without modification,
|
* Redistribution and use in source and binary forms, with or without modification,
|
||||||
@ -88,6 +89,8 @@ static char *wmii_path;
|
|||||||
static const char *time_format;
|
static const char *time_format;
|
||||||
static bool use_colors;
|
static bool use_colors;
|
||||||
static bool get_ethspeed;
|
static bool get_ethspeed;
|
||||||
|
static bool get_cpu_temperature;
|
||||||
|
static char *thermal_zone;
|
||||||
static const char *wmii_normcolors = "#222222 #333333";
|
static const char *wmii_normcolors = "#222222 #333333";
|
||||||
static char order[MAX_ORDER][2];
|
static char order[MAX_ORDER][2];
|
||||||
static const char **run_watches;
|
static const char **run_watches;
|
||||||
@ -200,6 +203,8 @@ static void setup(void) {
|
|||||||
create_file(concat(order[ORDER_WLAN],"wlan"));
|
create_file(concat(order[ORDER_WLAN],"wlan"));
|
||||||
if (eth_interface)
|
if (eth_interface)
|
||||||
create_file(concat(order[ORDER_ETH],"eth"));
|
create_file(concat(order[ORDER_ETH],"eth"));
|
||||||
|
if (get_cpu_temperature)
|
||||||
|
create_file(concat(order[ORDER_CPU_TEMPERATURE], "cpu_temperature"));
|
||||||
create_file(concat(order[ORDER_LOAD],"load"));
|
create_file(concat(order[ORDER_LOAD],"load"));
|
||||||
if (time_format)
|
if (time_format)
|
||||||
create_file(concat(order[ORDER_TIME],"time"));
|
create_file(concat(order[ORDER_TIME],"time"));
|
||||||
@ -479,6 +484,33 @@ static char *get_eth_info() {
|
|||||||
return part;
|
return part;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Reads the CPU temperature from /sys/class/thermal/thermal_zone0/temp and
|
||||||
|
* returns the temperature in degree celcius.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
static char *get_cpu_temperature_info() {
|
||||||
|
static char part[16];
|
||||||
|
char buf[16];
|
||||||
|
int temp;
|
||||||
|
int fd;
|
||||||
|
|
||||||
|
memset(buf, 0, sizeof(buf));
|
||||||
|
memset(part, 0, sizeof(part));
|
||||||
|
|
||||||
|
if ((fd = open(thermal_zone, O_RDONLY)) == -1)
|
||||||
|
die("Could not open %s\n", thermal_zone);
|
||||||
|
(void)read(fd, buf, sizeof(buf));
|
||||||
|
(void)close(fd);
|
||||||
|
|
||||||
|
if (sscanf(buf, "%d", &temp) != 1)
|
||||||
|
(void)snprintf(part, sizeof(part), "T: ? C");
|
||||||
|
else
|
||||||
|
(void)snprintf(part, sizeof(part), "T: %d C", (temp/1000));
|
||||||
|
|
||||||
|
return part;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Checks if the PID in path is still valid by checking:
|
* Checks if the PID in path is still valid by checking:
|
||||||
* (Linux) if /proc/<pid> exists
|
* (Linux) if /proc/<pid> exists
|
||||||
@ -572,7 +604,16 @@ static int load_configuration(const char *configfile) {
|
|||||||
use_colors = true;
|
use_colors = true;
|
||||||
OPT("get_ethspeed")
|
OPT("get_ethspeed")
|
||||||
get_ethspeed = true;
|
get_ethspeed = true;
|
||||||
OPT("normcolors")
|
OPT("get_cpu_temperature") {
|
||||||
|
get_cpu_temperature = true;
|
||||||
|
if (strlen(dest_value) > 0) {
|
||||||
|
if (asprintf(&thermal_zone, "/sys/class/thermal/thermal_zone%d/temp", atoi(dest_value)) == -1)
|
||||||
|
die("Could not build thermal_zone path\n");
|
||||||
|
} else {
|
||||||
|
if (asprintf(&thermal_zone, "/sys/class/thermal/thermal_zone0/temp") == -1)
|
||||||
|
die("Could not build thermal_zone path\n");
|
||||||
|
}
|
||||||
|
} OPT("normcolors")
|
||||||
wmii_normcolors = strdup(dest_value);
|
wmii_normcolors = strdup(dest_value);
|
||||||
OPT("interval")
|
OPT("interval")
|
||||||
interval = atoi(dest_value);
|
interval = atoi(dest_value);
|
||||||
@ -621,6 +662,7 @@ static int load_configuration(const char *configfile) {
|
|||||||
SET_ORDER("wlan", ORDER_WLAN);
|
SET_ORDER("wlan", ORDER_WLAN);
|
||||||
SET_ORDER("eth", ORDER_ETH);
|
SET_ORDER("eth", ORDER_ETH);
|
||||||
SET_ORDER("battery", ORDER_BATTERY);
|
SET_ORDER("battery", ORDER_BATTERY);
|
||||||
|
SET_ORDER("cpu_temperature", ORDER_CPU_TEMPERATURE);
|
||||||
SET_ORDER("load", ORDER_LOAD);
|
SET_ORDER("load", ORDER_LOAD);
|
||||||
SET_ORDER("time", ORDER_TIME);
|
SET_ORDER("time", ORDER_TIME);
|
||||||
token = walk;
|
token = walk;
|
||||||
@ -697,6 +739,8 @@ int main(int argc, char *argv[]) {
|
|||||||
SIMPLEQ_FOREACH(current_battery, &batteries, batteries) {
|
SIMPLEQ_FOREACH(current_battery, &batteries, batteries) {
|
||||||
write_to_statusbar(concat(order[ORDER_BATTERY], "battery"), get_battery_info(current_battery), false);
|
write_to_statusbar(concat(order[ORDER_BATTERY], "battery"), get_battery_info(current_battery), false);
|
||||||
}
|
}
|
||||||
|
if (get_cpu_temperature)
|
||||||
|
write_to_statusbar(concat(order[ORDER_CPU_TEMPERATURE], "cpu_temperature"), get_cpu_temperature_info(), false);
|
||||||
|
|
||||||
/* Get load */
|
/* Get load */
|
||||||
#ifdef LINUX
|
#ifdef LINUX
|
||||||
|
@ -25,3 +25,6 @@ color
|
|||||||
|
|
||||||
# Checks ethernet interface speed (this needs root privileges)
|
# Checks ethernet interface speed (this needs root privileges)
|
||||||
get_ethspeed
|
get_ethspeed
|
||||||
|
|
||||||
|
# Checks core temperature
|
||||||
|
get_cpu_temperature
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#define BEGINS_WITH(haystack, needle) (strncmp(haystack, needle, strlen(needle)) == 0)
|
#define BEGINS_WITH(haystack, needle) (strncmp(haystack, needle, strlen(needle)) == 0)
|
||||||
|
|
||||||
typedef enum { CS_DISCHARGING, CS_CHARGING, CS_FULL } charging_status_t;
|
typedef enum { CS_DISCHARGING, CS_CHARGING, CS_FULL } charging_status_t;
|
||||||
enum { ORDER_RUN, ORDER_WLAN, ORDER_ETH, ORDER_BATTERY, ORDER_LOAD, ORDER_TIME, MAX_ORDER };
|
enum { ORDER_RUN, ORDER_WLAN, ORDER_ETH, ORDER_BATTERY, ORDER_CPU_TEMPERATURE, ORDER_LOAD, ORDER_TIME, MAX_ORDER };
|
||||||
|
Loading…
Reference in New Issue
Block a user