diff --git a/fetch b/fetch index 89c910a6..2738e5ba 100755 --- a/fetch +++ b/fetch @@ -660,10 +660,47 @@ getcpu () { getgpu () { case "$os" in - "Linux") - gpu=$(lspci | grep "VGA" | grep -o '\[.*\]') - gpu=${gpu//[} - gpu=${gpu//]} + "Linux" | "OpenBSD") + if type -p nvidia-smi >/dev/null 2>&1; then + gpu="$(nvidia-smi | awk -F':' '/Product Name/ {printf $2}')" + else + gpu="$(lspci | grep "VGA")" + gpu=${gpu/* VGA compatible controller: } + gpu=${gpu/(rev*)} + + shopt -s nocasematch + case "$gpu" in + intel*) + gpu=${gpu/'Intel Corporation' } + gpu=${gpu/'Haswell-'??? } + + brand="Intel" + ;; + + advanced*) + gpu=${gpu/'Advanced Micro Devices, Inc.' } + gpu=${gpu/'[AMD/ATI]' } + gpu=${gpu/'Tahiti PRO'} + gpu=${gpu/'Mars'} + gpu=${gpu/' ['} + gpu=${gpu/']'} + + brand="AMD" + ;; + + nvidia*) + gpu=${gpu/'NVIDIA Corporation' } + gpu=${gpu/'nVidia Corporation' } + gpu=${gpu/G???? } + gpu=${gpu/'['} + gpu=${gpu/']'} + + brand="Nvidia" + ;; + esac + + gpu="$brand $gpu" + fi ;; "Mac OS X")