diff --git a/helpers/DATA/mate-session-manager/mate-wm b/helpers/DATA/mate-session-manager/mate-wm new file mode 100755 index 0000000000000000000000000000000000000000..d819672afdfbfd5477098482d056bbe44b23e68c --- /dev/null +++ b/helpers/DATA/mate-session-manager/mate-wm @@ -0,0 +1,161 @@ +#!/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 + +# 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` +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 + + KNOWN_WM="sawfish sawmill enlightenment icewm wmaker fvwm2 qvwm fvwm twm kwm" + # marco is still the default wm in MATE + KNOWN_WM="marco $KNOWN_WM" + + xdpyinfo 2> /dev/null | grep -q "^ *Composite$" 2> /dev/null + IS_X_COMPOSITED=$? + if [ $IS_X_COMPOSITED -eq 0 ] ; then + KNOWN_WM="marco-compton mutter compiz-manager compiz beryl $KNOWN_WM" + fi + + 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 + +exec $WINDOW_MANAGER $OPT1 $OPT2 $OPT3 $OPT4 + +echo "ERROR: No window manager could run!" diff --git a/helpers/make-mate-session-manager b/helpers/make-mate-session-manager new file mode 100644 index 0000000000000000000000000000000000000000..cfce16b6e71f8e5087a5512c1e957065c9fa3db7 --- /dev/null +++ b/helpers/make-mate-session-manager @@ -0,0 +1,29 @@ +#!/bin/sh +# +# Copyright (C) 2017 Ruben Rodriguez <ruben@trisquel.info> +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +VERSION=1 + +. ./config + +cp $DATA/mate-wm data/mate-wm + +changelog "Improved composition handling" + +compile +