new feature, shows which desktop user is running, should work for gnome, kde 3.5, 4, 5, xfce 4, 5, fluxbox, lxde, openbox,

blackbox, awesome, fvwm, fvwm-crystal, and we'll add more with user data
This commit is contained in:
inxi-svn 2011-05-18 23:00:03 +00:00
parent 06bae0e38e
commit 92b73233c9

72
inxi
View file

@ -1,8 +1,8 @@
#!/bin/bash #!/bin/bash
######################################################################## ########################################################################
#### Script Name: inxi #### Script Name: inxi
#### version: 1.4.98 #### version: 1.4.99
#### Date: May 6 2011 #### Date: May 18 2011
######################################################################## ########################################################################
#### SPECIAL THANKS #### SPECIAL THANKS
######################################################################## ########################################################################
@ -2536,6 +2536,62 @@ get_cpu_ht_multicore_smp_data()
eval $LOGFE eval $LOGFE
} }
# Detect desktop environment in use, logic from: compiz-check
# http://forlong.blogage.de/entries/pages/Compiz-Check
detect_desktop_environment()
{
eval $LOGFS
# set the default, this function only runs in X, if null, don't print data out
local desktop_environment='N/A' xprop_root='' ps_aux=''
# note, GNOME_DESKTOP_SESSION_ID is deprecated so we'll see how that works out
# https://bugzilla.gnome.org/show_bug.cgi?id=542880
if [[ ! -z $GNOME_DESKTOP_SESSION_ID ]]; then
desktop_environment='GNOME'
# assume 5 will id the same, why not, no need to update in future
elif [[ $KDE_SESSION_VERSION == '5' ]]; then
desktop_environment='KDE 5'
elif [[ $KDE_SESSION_VERSION == '4' ]]; then
desktop_environment='KDE 4'
# KDE_FULL_SESSION property is only available since KDE 3.5.5.
# src: http://humanreadable.nfshost.com/files/startkde
elif [[ $KDE_FULL_SESSION == 'true' ]]; then
desktop_environment='KDE 3.5'
# note: fluxbox has a positive PID for blackbox, so I think most desktops can be detected
# with some work.
elif [[ -n $( type -p xprop ) ]];then
xprop_root="$( xprop -root 2>/dev/null )"
ps_aux="$( ps aux )"
if [[ -n $( grep -is '\"xfce4\"' <<< "$xprop_root" ) ]];then
desktop_environment='Xfce4'
elif [[ -n $( grep -is '\"xfce5\"' <<< "$xprop_root" ) ]];then
desktop_environment='Xfce5'
elif [[ -n $( grep -is 'BLACKBOX_PID' <<< "$xprop_root" ) ]];then
if [[ -n $( grep -is 'fluxbox' <<< "$ps_aux" | grep -v 'grep' ) ]];then
desktop_environment='Fluxbox'
else
desktop_environment='Blackbox'
fi
elif [[ -n $( grep -is 'OPENBOX_PID' <<< "$xprop_root" ) ]];then
if [[ -n $( grep -is 'lxde' <<< "$ps_aux" | grep -v 'grep' ) ]];then
desktop_environment='LXDE'
else
desktop_environment='Openbox'
fi
# a few manual hacks for things that don't id with xprop, these are just good guesses
elif [[ -n $( grep -is 'fvwm-crystal' <<< "$ps_aux" | grep -v 'grep' ) ]];then
desktop_environment='FVWM-Crystal'
elif [[ -n $( grep -is 'fvwm' <<< "$ps_aux" | grep -v 'grep' ) ]];then
desktop_environment='FVWM'
elif [[ -n $( grep -is 'awesome' <<< "$ps_aux" | grep -v 'grep' ) ]];then
desktop_environment='Awesome'
fi
fi
echo $desktop_environment
eval $LOGFE
}
# for more on distro id, please reference this python thread: http://bugs.python.org/issue1322 # for more on distro id, please reference this python thread: http://bugs.python.org/issue1322
## return distro name/id if found ## return distro name/id if found
get_distro_data() get_distro_data()
@ -5961,11 +6017,17 @@ print_sensors_data()
print_system_data() print_system_data()
{ {
eval $LOGFS eval $LOGFS
local system_data='' bits='' local system_data='' bits='' desktop_environment=''
local host_name=$( hostname ) local host_name=$( hostname )
local current_kernel=$( uname -rm ) # | gawk '{print $1,$3,$(NF-1)}' ) local current_kernel=$( uname -rm ) # | gawk '{print $1,$3,$(NF-1)}' )
local distro="$( get_distro_data )" local distro="$( get_distro_data )"
# check for 64 bit first
# I think these will work, maybe, if logged in as root and in X
if [[ $B_RUNNING_IN_X == 'true' ]];then
desktop_environment="${C1}Desktop${C2} $( detect_desktop_environment ) "
fi
# check for 64 bit first
if [[ -n $( uname -m | grep -o 'x86_64' ) ]];then if [[ -n $( uname -m | grep -o 'x86_64' ) ]];then
bits="(64 bit)" bits="(64 bit)"
else else
@ -5977,7 +6039,7 @@ print_system_data()
else else
system_data=$( create_print_line "System:" "${C1}Kernel${C2}" ) system_data=$( create_print_line "System:" "${C1}Kernel${C2}" )
fi fi
system_data="$system_data $current_kernel $bits ${C1}Distro${C2} $distro" system_data="$system_data $current_kernel $bits $desktop_environment${C1}Distro${C2} $distro"
print_screen_output "$system_data" print_screen_output "$system_data"
eval $LOGFE eval $LOGFE
} }