Change tree symbols to use secondary text color
Update all tree symbols (└─, ├─) in system and backup widgets to use Typography::secondary() style instead of raw text for consistent text coloring throughout the interface.
This commit is contained in:
parent
b391448d33
commit
ecee256f91
36
TODO.md
36
TODO.md
@ -10,18 +10,19 @@
|
|||||||
|
|
||||||
## System panel (agent/dashboard)
|
## System panel (agent/dashboard)
|
||||||
|
|
||||||
use following layput:
|
use following layout:
|
||||||
'''
|
'''
|
||||||
NixOS:
|
NixOS:
|
||||||
Build: xxxxxx dd/mm/yy H:M:S
|
Build: xxxxxx
|
||||||
Active users: cm, simon
|
Agen: xxxxxx
|
||||||
CPU:
|
CPU:
|
||||||
● Load: 0.02 0.31 0.86 • 3000MHz
|
● Load: 0.02 0.31 0.86
|
||||||
|
└─ Freq: 3000MHz
|
||||||
RAM:
|
RAM:
|
||||||
● Usage: 33% 2.6GB/7.6GB
|
● Usage: 33% 2.6GB/7.6GB
|
||||||
● /tmp: 0% 0B/2.0GB
|
└─ ● /tmp: 0% 0B/2.0GB
|
||||||
Storage:
|
Storage:
|
||||||
● root (Single):
|
● /:
|
||||||
├─ ● nvme0n1 T: 40C • W: 4%
|
├─ ● nvme0n1 T: 40C • W: 4%
|
||||||
└─ ● 8% 75.0GB/906.2GB
|
└─ ● 8% 75.0GB/906.2GB
|
||||||
'''
|
'''
|
||||||
@ -29,14 +30,35 @@ Storage:
|
|||||||
- Add support to show login/active users
|
- Add support to show login/active users
|
||||||
- Add support to show timestamp/version for latest nixos rebuild
|
- Add support to show timestamp/version for latest nixos rebuild
|
||||||
|
|
||||||
|
## Backup panel (dashboard)
|
||||||
|
|
||||||
|
use following layout:
|
||||||
|
'''
|
||||||
|
Latest backup:
|
||||||
|
● <timestamp>
|
||||||
|
└─ Duration: 1.3m
|
||||||
|
Disk:
|
||||||
|
● Samsung SSD 870 QVO 1TB
|
||||||
|
├─ S/N: S5RRNF0W800639Y
|
||||||
|
└─ Usage: 50.5GB/915.8GB
|
||||||
|
Repos:
|
||||||
|
● gitea (4) 5.1GB
|
||||||
|
● immich (4) 45.0GB
|
||||||
|
● kryddorten (4) 67.8MB
|
||||||
|
● mariehall2 (4) 322.7MB
|
||||||
|
● nixosbox (4) 5.5MB
|
||||||
|
● unifi (4) 5.7MB
|
||||||
|
● vaultwarden (4) 508kB
|
||||||
|
'''
|
||||||
|
|
||||||
## Keyboard navigation and scrolling (dashboard)
|
## Keyboard navigation and scrolling (dashboard)
|
||||||
|
|
||||||
- Add keyboard navigation between panels "Shift-Tab"
|
- Add keyboard navigation between panels "Shift-Tab"
|
||||||
|
- Add lower statusbar with dynamic updated shortcuts when switchng between panels
|
||||||
- Add scrolling support when text do not fit
|
- Add scrolling support when text do not fit
|
||||||
|
|
||||||
## Remote execution (agent/dashboard)
|
## Remote execution (agent/dashboard)
|
||||||
|
|
||||||
- Add lower statusbar with dynamic updated shortcuts when switchng between panels
|
|
||||||
- Add support for send command via dashboard to agent to do nixos rebuid
|
- Add support for send command via dashboard to agent to do nixos rebuid
|
||||||
- Add support for navigating services in dashboard and trigger start/stop/restart
|
- Add support for navigating services in dashboard and trigger start/stop/restart
|
||||||
- Add support for trigger backup
|
- Add support for trigger backup
|
||||||
|
|||||||
@ -80,21 +80,6 @@ impl BackupWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// Format duration for display
|
|
||||||
fn format_duration(&self) -> String {
|
|
||||||
match self.duration_seconds {
|
|
||||||
Some(seconds) => {
|
|
||||||
if seconds >= 3600 {
|
|
||||||
format!("{:.1}h", seconds as f32 / 3600.0)
|
|
||||||
} else if seconds >= 60 {
|
|
||||||
format!("{:.1}m", seconds as f32 / 60.0)
|
|
||||||
} else {
|
|
||||||
format!("{}s", seconds)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
None => "—".to_string(),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Format timestamp for display
|
/// Format timestamp for display
|
||||||
fn format_last_run(&self) -> String {
|
fn format_last_run(&self) -> String {
|
||||||
@ -363,7 +348,7 @@ impl Widget for BackupWidget {
|
|||||||
if let Some(duration) = self.duration_seconds {
|
if let Some(duration) = self.duration_seconds {
|
||||||
let duration_text = self.format_duration(duration);
|
let duration_text = self.format_duration(duration);
|
||||||
lines.push(ratatui::text::Line::from(vec![
|
lines.push(ratatui::text::Line::from(vec![
|
||||||
ratatui::text::Span::raw(" └─ "),
|
ratatui::text::Span::styled(" └─ ", Typography::secondary()),
|
||||||
ratatui::text::Span::styled(format!("Duration: {}", duration_text), Typography::secondary())
|
ratatui::text::Span::styled(format!("Duration: {}", duration_text), Typography::secondary())
|
||||||
]));
|
]));
|
||||||
}
|
}
|
||||||
@ -384,7 +369,7 @@ impl Widget for BackupWidget {
|
|||||||
// Serial number as sub-item
|
// Serial number as sub-item
|
||||||
if let Some(serial) = &self.backup_disk_serial_number {
|
if let Some(serial) = &self.backup_disk_serial_number {
|
||||||
lines.push(ratatui::text::Line::from(vec![
|
lines.push(ratatui::text::Line::from(vec![
|
||||||
ratatui::text::Span::raw(" ├─ "),
|
ratatui::text::Span::styled(" ├─ ", Typography::secondary()),
|
||||||
ratatui::text::Span::styled(format!("S/N: {}", serial), Typography::secondary())
|
ratatui::text::Span::styled(format!("S/N: {}", serial), Typography::secondary())
|
||||||
]));
|
]));
|
||||||
}
|
}
|
||||||
@ -394,7 +379,7 @@ impl Widget for BackupWidget {
|
|||||||
let used_str = Self::format_size_with_proper_units(used);
|
let used_str = Self::format_size_with_proper_units(used);
|
||||||
let total_str = Self::format_size_with_proper_units(total);
|
let total_str = Self::format_size_with_proper_units(total);
|
||||||
lines.push(ratatui::text::Line::from(vec![
|
lines.push(ratatui::text::Line::from(vec![
|
||||||
ratatui::text::Span::raw(" └─ "),
|
ratatui::text::Span::styled(" └─ ", Typography::secondary()),
|
||||||
ratatui::text::Span::styled(format!("Usage: {}/{}", used_str, total_str), Typography::secondary())
|
ratatui::text::Span::styled(format!("Usage: {}/{}", used_str, total_str), Typography::secondary())
|
||||||
]));
|
]));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -286,7 +286,7 @@ impl SystemWidget {
|
|||||||
|
|
||||||
let mut drive_spans = vec![
|
let mut drive_spans = vec![
|
||||||
Span::raw(" "),
|
Span::raw(" "),
|
||||||
Span::raw(tree_symbol),
|
Span::styled(tree_symbol, Typography::secondary()),
|
||||||
Span::raw(" "),
|
Span::raw(" "),
|
||||||
];
|
];
|
||||||
drive_spans.extend(StatusIcons::create_status_spans(drive.status.clone(), &drive_text));
|
drive_spans.extend(StatusIcons::create_status_spans(drive.status.clone(), &drive_text));
|
||||||
@ -298,7 +298,7 @@ impl SystemWidget {
|
|||||||
let tree_symbol = "└─";
|
let tree_symbol = "└─";
|
||||||
let mut usage_spans = vec![
|
let mut usage_spans = vec![
|
||||||
Span::raw(" "),
|
Span::raw(" "),
|
||||||
Span::raw(tree_symbol),
|
Span::styled(tree_symbol, Typography::secondary()),
|
||||||
Span::raw(" "),
|
Span::raw(" "),
|
||||||
];
|
];
|
||||||
usage_spans.extend(StatusIcons::create_status_spans(pool.status.clone(), &usage_text));
|
usage_spans.extend(StatusIcons::create_status_spans(pool.status.clone(), &usage_text));
|
||||||
@ -435,7 +435,7 @@ impl Widget for SystemWidget {
|
|||||||
|
|
||||||
let freq_text = self.format_cpu_frequency();
|
let freq_text = self.format_cpu_frequency();
|
||||||
lines.push(Line::from(vec![
|
lines.push(Line::from(vec![
|
||||||
Span::raw(" └─ "),
|
Span::styled(" └─ ", Typography::secondary()),
|
||||||
Span::styled(format!("Freq: {}", freq_text), Typography::secondary())
|
Span::styled(format!("Freq: {}", freq_text), Typography::secondary())
|
||||||
]));
|
]));
|
||||||
|
|
||||||
@ -453,7 +453,7 @@ impl Widget for SystemWidget {
|
|||||||
|
|
||||||
let tmp_text = self.format_tmp_usage();
|
let tmp_text = self.format_tmp_usage();
|
||||||
let mut tmp_spans = vec![
|
let mut tmp_spans = vec![
|
||||||
Span::raw(" └─ "),
|
Span::styled(" └─ ", Typography::secondary()),
|
||||||
];
|
];
|
||||||
tmp_spans.extend(StatusIcons::create_status_spans(
|
tmp_spans.extend(StatusIcons::create_status_spans(
|
||||||
self.memory_status.clone(),
|
self.memory_status.clone(),
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user