diff --git a/helpers/DATA/mate-session-manager/mate-wm b/helpers/DATA/mate-session-manager/mate-wm index ec876550c267817ffbfd23c987288224149ef128..3acb6e8a586af953522b10f716256deabd36da9e 100755 --- a/helpers/DATA/mate-session-manager/mate-wm +++ b/helpers/DATA/mate-session-manager/mate-wm @@ -1,165 +1,13 @@ #!/bin/sh -# The user can specify his prefered WM by setting the WINDOW_MANAGER -# environment variable. -# -# If this is not set, we search a list of known windowmanagers and use -# the first one that is found in the users's PATH -# -# NOTE: DON'T USE THIS. Please have your window manager install -# a desktop file and change the mateconf key -# /desktop/mate/session/required_components/windowmanager +WINDOW_MANAGER=xterm +[ -f /usr/bin/marco ] && WINDOW_MANAGER=marco +[ -f /usr/bin/marco-no-composite ] && WINDOW_MANAGER=marco-no-composite -# sm-client-id value -SMID= -# default-wm value -DEFWM= - -#read in the arguments -GET= -for n in "$@" ; do - case "$GET" in - smid) - SMID=$n - GET= - ;; - defwm) - DEFWM=$n - GET= - ;; - *) - case "$n" in - --sm-client-id) - GET=smid - ;; - --default-wm) - GET=defwm - ;; - esac - ;; - esac -done - -# WINDOW_MANAGER overrides all -if [ -z "$WINDOW_MANAGER" ] ; then - WINDOW_MANAGER=`gsettings get org.mate.session.required-components windowmanager 2> /dev/null | sed -r -e "s/^'([^']*)'$/\\1/"` -fi - -# Migrate compiz to compiz-manager if possible and needed -if [ "x$WINDOW_MANAGER" = "xcompiz" -o "x$DEFWM" = "xcompiz" ]; then - which compiz-manager > /dev/null 2>&1 - if [ $? -eq 0 ]; then - if [ "x$WINDOW_MANAGER" = "xcompiz" ]; then - WINDOW_MANAGER="compiz-manager" - fi - if [ "x$DEFWM" = "xcompiz" ]; then - DEFWM="compiz-manager" - fi - fi -fi - -# Avoid looping if the session configuration tells us to use mate-wm or if -# the user forces mate-wm via WINDOW_MANAGER -if [ "x$WINDOW_MANAGER" = "xmate-wm" ]; then - WINDOW_MANAGER="" -fi - -if [ -z "$WINDOW_MANAGER" ] ; then - # Create a list of window manager we can handle, trying to only use the - # compositing ones when it makes sense - - xdpyinfo 2> /dev/null | grep -q "^ *Composite$" 2> /dev/null - IS_X_COMPOSITED=$? - - KNOWN_WM="sawfish sawmill enlightenment icewm wmaker fvwm2 qvwm fvwm twm kwm" - if [ $IS_X_COMPOSITED -eq 0 ] ; then - KNOWN_WM="mutter compiz-manager compiz beryl $KNOWN_WM" - fi - # marco is still the default wm in MATE - KNOWN_WM="marco $KNOWN_WM" - - OLDIFS=$IFS - if [ -z "$DEFWM" -o "x$DEFWM" = "xmate-wm" ]; then - - for wm in $KNOWN_WM ; do - IFS=":" - for dir in $PATH ; do - if [ -x "$dir/$wm" ] ; then - WINDOW_MANAGER="$dir/$wm" - break 2 - fi - done - IFS=$OLDIFS - done - - else - WINDOW_MANAGER=$DEFWM - fi - IFS=$OLDIFS -fi - -# If no window manager can be found, we default to xterm - -if [ -z "$WINDOW_MANAGER" ] ; then - echo "WARNING: No window manager can be found." - WINDOW_MANAGER=xterm -fi - -# Now create options OPT1, OPT2 and OPT3 based on the windowmanager used -OPT1= -OPT2= -OPT3= -OPT4= -if [ ! -z "$SMID" ] ; then - case `basename $WINDOW_MANAGER` in - sawfish|sawmill|marco|mutter) - OPT1=--sm-client-id=$SMID - ;; - openbox|enlightenment|e16) - OPT1=--sm-client-id - OPT2=$SMID - ;; - twm) - OPT1=-clientId - OPT2=$SMID - ;; - lwm) - OPT1=-s - OPT2=$SMID - ;; - fvwm) - OPT1=-i - OPT2=$SMID - ;; - compiz|compiz-manager) - OPT1=--sm-client-id - OPT2=$SMID - ;; - beryl) - OPT1=--sm-client-id - OPT2=$SMID - ;; - #FIXME: add all other windowmanagers here with their proper options - esac -fi - -case `basename $WINDOW_MANAGER` in - compiz) - #commented lines cause high cpu usage - #export LIBGL_ALWAYS_INDIRECT=1 - gtk-window-decorator & - #OPT3=glib - #OPT4=mateconf - ;; - beryl) - emerald & - ;; -esac - -if [ $IS_X_COMPOSITED -eq 0 ] && [ $WINDOW_MANAGER = marco ] && [ -x /usr/bin/marco-picom ] ; then - WINDOW_MANAGER=marco-picom +if glxinfo | grep -q Accelerated.*yes && [ -f /usr/bin/picom ] && [ -f /usr/bin/marco-xrender ] ; then + WINDOW_MANAGER=marco-xrender fi -exec $WINDOW_MANAGER $OPT1 $OPT2 $OPT3 $OPT4 +gsettings set org.mate.session.required-components windowmanager $WINDOW_MANAGER -echo "ERROR: No window manager could run!" +exec $WINDOW_MANAGER diff --git a/helpers/make-mate-session-manager b/helpers/make-mate-session-manager index 150d5a6793ae34297bc46f34a6f9d95dc61559d4..84f0229b85bd2a715b72c5f465e3aaa625a03bf0 100644 --- a/helpers/make-mate-session-manager +++ b/helpers/make-mate-session-manager @@ -17,7 +17,7 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # -VERSION=5 +VERSION=6 . ./config