Multiple fixes, OpenBSD related
- get_wm: Fixes non-EWMH WM detection on OpenBSD by introducing a ps_flags array the same way we do for disks. Tested successfully on Debian GNU/Linux (this change impacts all OSes). - get_wm: Adds fvwm support - get_model: Adds vmm(4) (OpenBSD's KVM counterpart) support - get_disk: On OpenBSD you can't use df against a /dev/... unless being root or in the 'operator' group. A separate disks array creation using awk has been introduced only for this OS.
This commit is contained in:
parent
71df4ffd3b
commit
e07f545c26
1 changed files with 23 additions and 6 deletions
25
neofetch
25
neofetch
|
@ -1136,6 +1136,7 @@ get_model() {
|
|||
|
||||
case "$model" in
|
||||
"Standard PC"*) model="KVM/QEMU (${model})" ;;
|
||||
"OpenBSD"*) model="vmm (${model})" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
|
@ -1473,8 +1474,13 @@ get_wm() {
|
|||
# If function was run, stop here.
|
||||
((wm_run == 1)) && return
|
||||
|
||||
case "$uname" in
|
||||
*"OpenBSD"*) ps_flags=(x -c) ;;
|
||||
*) ps_flags=(-e) ;;
|
||||
esac
|
||||
|
||||
if [[ "$WAYLAND_DISPLAY" ]]; then
|
||||
wm="$(ps -e | grep -m 1 -o -F \
|
||||
wm="$(ps "${ps_flags[@]}" | grep -m 1 -o -F \
|
||||
-e "arcan" \
|
||||
-e "asc" \
|
||||
-e "clayland" \
|
||||
|
@ -1513,11 +1519,11 @@ get_wm() {
|
|||
|
||||
# Window Maker does not set _NET_WM_NAME
|
||||
[[ "$wm" =~ "WINDOWMAKER" ]] && wm="wmaker"
|
||||
|
||||
# Fallback for non-EWMH WMs.
|
||||
[[ -z "$wm" ]] && \
|
||||
wm="$(ps -e | grep -m 1 -o -F \
|
||||
wm="$(ps "${ps_flags[@]}" | grep -m 1 -o -F \
|
||||
-e "catwm" \
|
||||
-e "fvwm" \
|
||||
-e "dwm" \
|
||||
-e "2bwm" \
|
||||
-e "monsterwm" \
|
||||
|
@ -3081,9 +3087,20 @@ get_disk() {
|
|||
|
||||
# Create an array called 'disks' where each element is a separate line from
|
||||
# df's output. We then unset the first element which removes the column titles.
|
||||
if [[ "$uname" == "OpenBSD" ]]; then
|
||||
# On OpenBSD you can't use df against a /dev/... unless being root or
|
||||
# in the 'operator' group. Making a separate disks array creation.
|
||||
df_flags=(-h)
|
||||
# building an AWK regexp
|
||||
disk_re="${disk_show[*]:-/}"
|
||||
disk_re="${disk_re// /\|}"
|
||||
disk_re="^(${disk_re//\//\\\/})\$"
|
||||
IFS=$'\n' read -d "" -ra disks <<< "$(df "${df_flags[@]}" | \
|
||||
awk -v disk_re="$disk_re" '(NR > 1) && ($1 ~ disk_re || $6 ~ disk_re)')"
|
||||
else
|
||||
IFS=$'\n' read -d "" -ra disks <<< "$(df "${df_flags[@]}" "${disk_show[@]:-/}")"
|
||||
unset "disks[0]"
|
||||
|
||||
fi
|
||||
# Stop here if 'df' fails to print disk info.
|
||||
[[ -z "${disks[*]}" ]] && {
|
||||
err "Disk: df failed to print the disks, make sure the disk_show array is set properly."
|
||||
|
|
Loading…
Reference in a new issue