fear(bar): add storage_display_name option

This commit is contained in:
1337cookie
2025-08-01 13:53:11 +12:00
committed by Jeezy
parent d3bd65ca6a
commit b9ad6ece83
2 changed files with 66 additions and 1 deletions

View File

@@ -33,6 +33,8 @@ pub struct StorageConfig {
/// Show removable disks
#[cfg_attr(feature = "schemars", schemars(extend("default" = true)))]
pub show_removable_disks: Option<bool>,
/// Storage display name
pub storage_display_name: Option<StorageDisplayName>,
/// Select when the current percentage is over this value [[1-100]]
pub auto_select_over: Option<u8>,
/// Hide when the current percentage is under this value [[1-100]]
@@ -48,6 +50,9 @@ impl From<StorageConfig> for Storage {
label_prefix: value.label_prefix.unwrap_or(LabelPrefix::IconAndText),
show_read_only_disks: value.show_read_only_disks.unwrap_or(false),
show_removable_disks: value.show_removable_disks.unwrap_or(true),
storage_display_name: value
.storage_display_name
.unwrap_or(StorageDisplayName::Mount),
auto_select_over: value.auto_select_over.map(|o| o.clamp(1, 100)),
auto_hide_under: value.auto_hide_under.map(|o| o.clamp(1, 100)),
last_updated: Instant::now(),
@@ -55,6 +60,19 @@ impl From<StorageConfig> for Storage {
}
}
#[derive(Copy, Clone, Debug, Serialize, Deserialize)]
#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
pub enum StorageDisplayName {
/// Display label as mount point eg. C:\
Mount,
/// Display label as name eg. Local Disk
Name,
/// Display label as mount then name eg. C:\ Local Disk
MountAndName,
/// Display label as name then mount eg. Local Disk C:\
NameAndMount,
}
struct StorageDisk {
label: String,
selected: bool,
@@ -67,6 +85,7 @@ pub struct Storage {
label_prefix: LabelPrefix,
show_read_only_disks: bool,
show_removable_disks: bool,
storage_display_name: StorageDisplayName,
auto_select_over: Option<u8>,
auto_hide_under: Option<u8>,
last_updated: Instant,
@@ -90,6 +109,17 @@ impl Storage {
continue;
}
let mount = disk.mount_point();
let name = disk.name();
let display_name = match self.storage_display_name {
StorageDisplayName::Mount => mount.to_string_lossy(),
StorageDisplayName::Name => name.to_string_lossy(),
StorageDisplayName::MountAndName => {
mount.to_string_lossy() + name.to_string_lossy()
}
StorageDisplayName::NameAndMount => {
name.to_string_lossy() + mount.to_string_lossy()
}
};
let total = disk.total_space();
let available = disk.available_space();
let used = total - available;
@@ -103,7 +133,7 @@ impl Storage {
disks.push(StorageDisk {
label: match self.label_prefix {
LabelPrefix::Text | LabelPrefix::IconAndText => {
format!("{} {}%", mount.to_string_lossy(), percentage)
format!("{} {}%", display_name, percentage)
}
LabelPrefix::None | LabelPrefix::Icon => format!("{percentage}%"),
},

View File

@@ -8289,12 +8289,47 @@
"null"
],
"default": true
},
"storage_display_name": {
"description": "Storage display name",
"anyOf": [
{
"$ref": "#/$defs/StorageDisplayName"
},
{
"type": "null"
}
]
}
},
"required": [
"enable"
]
},
"StorageDisplayName": {
"oneOf": [
{
"description": "Display label as mount point eg. C:\\",
"type": "string",
"const": "Mount"
},
{
"description": "Display label as name eg. Local Disk",
"type": "string",
"const": "Name"
},
{
"description": "Display label as mount then name eg. C:\\ Local Disk",
"type": "string",
"const": "MountAndName"
},
{
"description": "Display label as name then mount eg. Local Disk C:\\",
"type": "string",
"const": "NameAndMount"
}
]
},
"SubscribeOptions": {
"type": "object",
"properties": {