mirror of
https://github.com/hykilpikonna/hyfetch.git
synced 2026-04-26 10:07:46 -05:00
[F] fix: custom *fetch configurations breaking hyfetch (#420)
Some checks failed
Shellcheck / check (push) Has been cancelled
Some checks failed
Shellcheck / check (push) Has been cancelled
if the backend is fastfetch, hyfetch calls `/bin/fastfetch --logo none -s OS --disable-linewrap` which for me returns: ` Artix Linux x86_64` ... and that breaks hyfetch instead, get the information from the source (/etc/os-release), which im pretty sure most fetch backends read from anyway this won't work on *BSD though, because those lack /etc/os-release, so unless calling `uname -s` is alright, BSDs would still have the problem related pull: https://github.com/hykilpikonna/hyfetch/issues/418
This commit is contained in:
parent
d4560e3edb
commit
003c295084
|
|
@ -483,9 +483,34 @@ where
|
||||||
|
|
||||||
#[tracing::instrument(level = "debug")]
|
#[tracing::instrument(level = "debug")]
|
||||||
pub fn get_distro_name(backend: Backend) -> Result<String> {
|
pub fn get_distro_name(backend: Backend) -> Result<String> {
|
||||||
|
use std::collections::HashMap;
|
||||||
|
use std::fs;
|
||||||
|
|
||||||
|
fn parse_os_release() -> Option<HashMap<String, String>> {
|
||||||
|
let contents = fs::read_to_string("/etc/os-release").ok()?;
|
||||||
|
let mut map = HashMap::new();
|
||||||
|
|
||||||
|
for line in contents.lines() {
|
||||||
|
if line.trim().is_empty() || line.starts_with('#') {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if let Some((key, value)) = line.split_once('=') {
|
||||||
|
let mut val = value.trim().to_string();
|
||||||
|
if val.starts_with('"') && val.ends_with('"') && val.len() > 1 {
|
||||||
|
val = val[1..val.len().saturating_sub(1)].to_string();
|
||||||
|
}
|
||||||
|
map.insert(key.to_string(), val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Some(map)
|
||||||
|
}
|
||||||
|
|
||||||
match backend {
|
match backend {
|
||||||
|
#[cfg(not(target_os = "linux"))]
|
||||||
Backend::Neofetch => run_neofetch_command_piped(&["ascii_distro_name"])
|
Backend::Neofetch => run_neofetch_command_piped(&["ascii_distro_name"])
|
||||||
.context("failed to get distro name from neofetch"),
|
.context("failed to get distro name from neofetch"),
|
||||||
|
#[cfg(not(target_os = "linux"))]
|
||||||
Backend::Fastfetch => Ok(run_fastfetch_command_piped(&[
|
Backend::Fastfetch => Ok(run_fastfetch_command_piped(&[
|
||||||
"--logo",
|
"--logo",
|
||||||
"none",
|
"none",
|
||||||
|
|
@ -493,6 +518,11 @@ pub fn get_distro_name(backend: Backend) -> Result<String> {
|
||||||
"OS",
|
"OS",
|
||||||
"--disable-linewrap",
|
"--disable-linewrap",
|
||||||
]).context("failed to get distro name from fastfetch")?.replace("OS: ", "")),
|
]).context("failed to get distro name from fastfetch")?.replace("OS: ", "")),
|
||||||
|
#[cfg(target_os = "linux")]
|
||||||
|
Backend::Neofetch | Backend::Fastfetch => parse_os_release()
|
||||||
|
.context("failed to read /etc/os-release")?
|
||||||
|
.get("NAME").context("no NAME in /etc/os-release")
|
||||||
|
.cloned(),
|
||||||
#[cfg(feature = "macchina")]
|
#[cfg(feature = "macchina")]
|
||||||
Backend::Macchina => {
|
Backend::Macchina => {
|
||||||
// Write ascii art to temp file
|
// Write ascii art to temp file
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user