gardesk/gartop / dfa3936

Browse files

Display max temperature in header bar

Authored by espadonne
SHA
dfa39369bef63c80eddd75861368023e79bb6760
Parents
6418383
Tree
cd05458

1 changed file

StatusFile+-
M gartop/src/gui/header.rs 30 1
gartop/src/gui/header.rsmodified
@@ -12,6 +12,7 @@ pub struct HeaderBar {
12
     memory_usage: f32,
12
     memory_usage: f32,
13
     net_rate: f64,   // Combined rx+tx bytes/sec
13
     net_rate: f64,   // Combined rx+tx bytes/sec
14
     disk_rate: f64,  // Combined read+write bytes/sec
14
     disk_rate: f64,  // Combined read+write bytes/sec
15
+    max_temp: Option<f64>,  // Maximum temperature reading
15
 }
16
 }
16
 
17
 
17
 impl HeaderBar {
18
 impl HeaderBar {
@@ -24,6 +25,7 @@ impl HeaderBar {
24
             memory_usage: 0.0,
25
             memory_usage: 0.0,
25
             net_rate: 0.0,
26
             net_rate: 0.0,
26
             disk_rate: 0.0,
27
             disk_rate: 0.0,
28
+            max_temp: None,
27
         }
29
         }
28
     }
30
     }
29
 
31
 
@@ -36,6 +38,11 @@ impl HeaderBar {
36
         self.disk_rate = disk_rate;
38
         self.disk_rate = disk_rate;
37
     }
39
     }
38
 
40
 
41
+    /// Update temperature reading.
42
+    pub fn update_temp(&mut self, max_temp: Option<f64>) {
43
+        self.max_temp = max_temp;
44
+    }
45
+
39
     /// Render the header bar.
46
     /// Render the header bar.
40
     pub fn render(&self, renderer: &Renderer, theme: &Theme) -> anyhow::Result<()> {
47
     pub fn render(&self, renderer: &Renderer, theme: &Theme) -> anyhow::Result<()> {
41
         // Background - use panel_bg for seamless transition to tab bar
48
         // Background - use panel_bg for seamless transition to tab bar
@@ -88,6 +95,15 @@ impl HeaderBar {
88
             ..stats_style.clone()
95
             ..stats_style.clone()
89
         };
96
         };
90
 
97
 
98
+        // Temperature indicator (if available)
99
+        let temp_text = self.max_temp
100
+            .map(|t| format!("TEMP: {:.0}°C", t))
101
+            .unwrap_or_default();
102
+        let temp_style = TextStyle {
103
+            color: theme.temp_color,
104
+            ..stats_style.clone()
105
+        };
106
+
91
         // Uptime
107
         // Uptime
92
         let uptime_text = format!("up {}", self.uptime);
108
         let uptime_text = format!("up {}", self.uptime);
93
 
109
 
@@ -97,6 +113,11 @@ impl HeaderBar {
97
         let y = self.bounds.y as f64 + (self.bounds.height as f64 * 0.4) + 6.0;
113
         let y = self.bounds.y as f64 + (self.bounds.height as f64 * 0.4) + 6.0;
98
 
114
 
99
         let uptime_width = renderer.measure_text(&uptime_text, &stats_style)?.width as f64;
115
         let uptime_width = renderer.measure_text(&uptime_text, &stats_style)?.width as f64;
116
+        let temp_width = if self.max_temp.is_some() {
117
+            renderer.measure_text(&temp_text, &temp_style)?.width as f64
118
+        } else {
119
+            0.0
120
+        };
100
         let disk_width = renderer.measure_text(&disk_text, &disk_style)?.width as f64;
121
         let disk_width = renderer.measure_text(&disk_text, &disk_style)?.width as f64;
101
         let net_width = renderer.measure_text(&net_text, &net_style)?.width as f64;
122
         let net_width = renderer.measure_text(&net_text, &net_style)?.width as f64;
102
         let mem_width = renderer.measure_text(&mem_text, &mem_style)?.width as f64;
123
         let mem_width = renderer.measure_text(&mem_text, &mem_style)?.width as f64;
@@ -105,7 +126,12 @@ impl HeaderBar {
105
         let right_edge = (self.bounds.x + self.bounds.width as i32) as f64;
126
         let right_edge = (self.bounds.x + self.bounds.width as i32) as f64;
106
 
127
 
107
         let uptime_x = right_edge - right_margin - uptime_width;
128
         let uptime_x = right_edge - right_margin - uptime_width;
108
-        let disk_x = uptime_x - spacing - disk_width;
129
+        let temp_x = if self.max_temp.is_some() {
130
+            uptime_x - spacing - temp_width
131
+        } else {
132
+            uptime_x
133
+        };
134
+        let disk_x = temp_x - spacing - disk_width;
109
         let net_x = disk_x - spacing - net_width;
135
         let net_x = disk_x - spacing - net_width;
110
         let mem_x = net_x - spacing - mem_width;
136
         let mem_x = net_x - spacing - mem_width;
111
         let cpu_x = mem_x - spacing - cpu_width;
137
         let cpu_x = mem_x - spacing - cpu_width;
@@ -114,6 +140,9 @@ impl HeaderBar {
114
         renderer.text(&mem_text, mem_x, y, &mem_style)?;
140
         renderer.text(&mem_text, mem_x, y, &mem_style)?;
115
         renderer.text(&net_text, net_x, y, &net_style)?;
141
         renderer.text(&net_text, net_x, y, &net_style)?;
116
         renderer.text(&disk_text, disk_x, y, &disk_style)?;
142
         renderer.text(&disk_text, disk_x, y, &disk_style)?;
143
+        if self.max_temp.is_some() {
144
+            renderer.text(&temp_text, temp_x, y, &temp_style)?;
145
+        }
117
         renderer.text(&uptime_text, uptime_x, y, &stats_style)?;
146
         renderer.text(&uptime_text, uptime_x, y, &stats_style)?;
118
 
147
 
119
         Ok(())
148
         Ok(())