You've already forked neo64fetch
mirror of
https://github.com/neoarz/neo64fetch.git
synced 2026-02-09 06:43:26 +01:00
39 lines
1.1 KiB
Rust
39 lines
1.1 KiB
Rust
|
|
use std::env;
|
||
|
|
use sysinfo::System;
|
||
|
|
|
||
|
|
pub fn get_terminal_info() -> String {
|
||
|
|
let term_env = env::var("TERM_PROGRAM")
|
||
|
|
.or_else(|_| env::var("TERM"))
|
||
|
|
.unwrap_or_default();
|
||
|
|
|
||
|
|
let term_ver = env::var("TERM_PROGRAM_VERSION").unwrap_or_default();
|
||
|
|
|
||
|
|
if !term_env.is_empty() && term_env != "xterm-256color" && term_env != "xterm" {
|
||
|
|
let clean_name = term_env
|
||
|
|
.replace("com.apple.", "") // Apple Terminal
|
||
|
|
.replace("com.mitchellh.", "") // Ghostty
|
||
|
|
.replace(".app", "");
|
||
|
|
|
||
|
|
return if term_ver.is_empty() {
|
||
|
|
clean_name
|
||
|
|
} else {
|
||
|
|
format!("{} {}", clean_name, term_ver)
|
||
|
|
};
|
||
|
|
}
|
||
|
|
|
||
|
|
let mut sys = System::new();
|
||
|
|
sys.refresh_processes(sysinfo::ProcessesToUpdate::All, true);
|
||
|
|
|
||
|
|
let my_pid = sysinfo::get_current_pid().unwrap_or(sysinfo::Pid::from(0));
|
||
|
|
|
||
|
|
if let Some(process) = sys.process(my_pid) {
|
||
|
|
if let Some(parent_pid) = process.parent() {
|
||
|
|
if let Some(parent_proc) = sys.process(parent_pid) {
|
||
|
|
return parent_proc.name().to_string_lossy().replace(".app", "");
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
"unknown".to_string()
|
||
|
|
}
|