Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/sh
- # fix broken $UID on some system...
- if test "x$UID" = "x"; then
- if test -x /usr/xpg4/bin/id; then
- UID=`/usr/xpg4/bin/id -u`;
- else
- UID=`id -u`;
- fi
- fi
- # set $XDG_MENU_PREFIX to "xfce-" so that "xfce-applications.menu" is picked
- # over "applications.menu" in all Xfce applications.
- if test "x$XDG_MENU_PREFIX" = "x"; then
- XDG_MENU_PREFIX="xfce-"
- export XDG_MENU_PREFIX
- fi
- # set DESKTOP_SESSION so that one can detect easily if an Xfce session is running
- if test "x$DESKTOP_SESSION" = "x"; then
- DESKTOP_SESSION="xfce"
- export DESKTOP_SESSION
- fi
- # $XDG_CONFIG_HOME defines the base directory relative to which user specific
- # configuration files should be stored. If $XDG_CONFIG_HOME is either not set
- # or empty, a default equal to $HOME/.config should be used.
- if test "x$XDG_CONFIG_HOME" = "x" ; then
- XDG_CONFIG_HOME=$HOME/.config
- fi
- [ -d "$XDG_CONFIG_HOME" ] || mkdir "$XDG_CONFIG_HOME"
- # $XDG_CACHE_HOME defines the base directory relative to which user specific
- # non-essential data files should be stored. If $XDG_CACHE_HOME is either not
- # set or empty, a default equal to $HOME/.cache should be used.
- if test "x$XDG_CACHE_HOME" = "x" ; then
- XDG_CACHE_HOME=$HOME/.cache
- fi
- [ -d "$XDG_CACHE_HOME" ] || mkdir "$XDG_CACHE_HOME"
- # set up XDG user directores. see
- # http://freedesktop.org/wiki/Software/xdg-user-dirs
- if which xdg-user-dirs-update >/dev/null 2>&1; then
- xdg-user-dirs-update
- fi
- if test -f "$XDG_CONFIG_HOME/user-dirs.dirs"; then
- . "$XDG_CONFIG_HOME/user-dirs.dirs"
- # i'm deliberately not 'export'-ing the XDG_ vars, because you shouldn't
- # rely on the env vars inside apps, since the file could be changed at
- # any time by the user. this is solely here for migration purposes.
- # a bit of user dir migration...
- if test -d "$HOME/Desktop" -a ! -L "$HOME/Desktop" \
- -a "$XDG_DESKTOP_DIR" \
- -a "$HOME/Desktop" != "$XDG_DESKTOP_DIR"
- then
- echo "Migrating $HOME/Desktop to $XDG_DESKTOP_DIR..."
- test -d "$XDG_DESKTOP_DIR" && rmdir "$XDG_DESKTOP_DIR"
- mv "$HOME/Desktop" "$XDG_DESKTOP_DIR" || echo "Desktop migration failed" >&2
- fi
- if test -d "$HOME/Templates" -a ! -L "$HOME/Templates" \
- -a "$XDG_TEMPLATES_DIR" \
- -a "$HOME/Templates" != "$XDG_TEMPLATES_DIR"
- then
- echo "Migrating $HOME/Templates to $XDG_TEMPLATES_DIR..."
- test -d "$XDG_TEMPLATES_DIR" && rmdir "$XDG_TEMPLATES_DIR"
- mv "$HOME/Templates" "$XDG_TEMPLATES_DIR" || echo "Templates migration failed" >&2
- fi
- fi
- # Modify libglade and glade environment variables so that
- # it will find the files installed by Xfce
- LIBGLADE_MODULE_PATH="$LIBGLADE_MODULE_PATH:"
- GLADE_CATALOG_PATH="$GLADE_CATALOG_PATH:"
- GLADE_PIXMAP_PATH="$GLADE_PIXMAP_PATH:"
- GLADE_MODULE_PATH="$GLADE_MODULE_PATH:"
- export LIBGLADE_MODULE_PATH
- export GLADE_CATALOG_PATH
- export GLADE_PIXMAP_PATH
- export GLADE_MODULE_PATH
- # Export GTK_PATH so that GTK+ can find the Xfce theme engine
- # https://bugzilla.xfce.org/show_bug.cgi?id=7483
- #GTK_PATH="$GTK_PATH:/usr/lib/x86_64-linux-gnu/gtk-2.0"
- #export GTK_PATH
- # For now, start with an empty list
- XRESOURCES=""
- # Has to go prior to merging Xft.xrdb, as its the "Defaults" file
- test -r "/etc/xdg/xfce4/Xft.xrdb" && XRESOURCES="$XRESOURCES /etc/xdg/xfce4/Xft.xrdb"
- test -r $HOME/.Xdefaults && XRESOURCES="$XRESOURCES $HOME/.Xdefaults"
- BASEDIR=$XDG_CONFIG_HOME/xfce4
- if test -r "$BASEDIR/Xft.xrdb"; then
- XRESOURCES="$XRESOURCES $BASEDIR/Xft.xrdb"
- elif test -r "$XFCE4HOME/Xft.xrdb"; then
- mkdir -p "$BASEDIR"
- cp "$XFCE4HOME/Xft.xrdb" "$BASEDIR"/
- XRESOURCES="$XRESOURCES $BASEDIR/Xft.xrdb"
- fi
- # merge in X cursor settings
- test -r "$BASEDIR/Xcursor.xrdb" && XRESOURCES="$XRESOURCES $BASEDIR/Xcursor.xrdb"
- # ~/.Xresources contains overrides to the above
- test -r "$HOME/.Xresources" && XRESOURCES="$XRESOURCES $HOME/.Xresources"
- # load all X resources (adds /dev/null to avoid an empty list that would hang the process)
- cat /dev/null $XRESOURCES | xrdb -nocpp -merge -
- # load local modmap
- test -r $HOME/.Xmodmap && xmodmap $HOME/.Xmodmap
- # Use dbus-launch if installed.
- if test x"$DBUS_SESSION_BUS_ADDRESS" = x""; then
- if which dbus-launch >/dev/null 2>&1; then
- eval `dbus-launch --sh-syntax --exit-with-session`
- # some older versions of dbus don't export the var properly
- export DBUS_SESSION_BUS_ADDRESS
- else
- echo "Could not find dbus-launch; Xfce will not work properly" >&2
- fi
- fi
- # launch gpg-agent or ssh-agent if enabled.
- ssh_agent_enabled=`xfconf-query -c xfce4-session -p /startup/ssh-agent/enabled 2> /dev/null`
- if test "$ssh_agent_enabled" != "false"; then
- # if the user has pam_ssh installed, it will start ssh-agent for us, but
- # of course won't start gpg-agent. so, if ssh-agent is already running,
- # but we want gpg-agent (and that's not running yet) start gpg-agent
- # without ssh support
- ssh_agent_type=`xfconf-query -c xfce4-session -p /startup/ssh-agent/type 2> /dev/null`
- if test -z "$ssh_agent_type"; then
- if which gpg-agent >/dev/null 2>&1; then
- ssh_agent_type=gpg-agent
- else
- ssh_agent_type=ssh-agent
- fi
- fi
- # ignore stale ssh-agents
- if test "$SSH_AGENT_PID"; then
- if ! kill -0 $SSH_AGENT_PID; then
- unset SSH_AGENT_PID
- unset SSH_AUTH_SOCK
- fi
- fi
- case "$ssh_agent_type" in
- gpg-agent)
- if test -z "$SSH_AGENT_PID"; then
- eval `gpg-agent --daemon --enable-ssh-support --write-env-file $XDG_CACHE_HOME/gpg-agent-info`
- ssh_agent_kill_cmd="kill -INT $SSH_AGENT_PID; rm -f $XDG_CACHE_HOME/gpg-agent-info"
- elif test -z "$GPG_AGENT_INFO"; then
- echo "ssh-agent is already running; starting gpg-agent without ssh support"
- eval `gpg-agent --daemon --write-env-file $XDG_CACHE_HOME/gpg-agent-info`
- ssh_agent_kill_cmd="pkill -INT ^gpg-agent\$; rm -f $XDG_CACHE_HOME/gpg-agent-info"
- else
- echo "gpg-agent is already running"
- fi
- ;;
- ssh-agent)
- if test -z "$SSH_AGENT_PID"; then
- eval `ssh-agent -s`
- ssh_agent_kill_cmd="ssh-agent -s -k"
- else
- echo "ssh-agent is already running"
- fi
- ;;
- *)
- echo "Unrecognized agent type '$ssh_agent_type'" >&2
- ;;
- esac
- fi
- # launch a screensaver if enabled. do not launch if we're root or if
- # we're in a VNC session.
- screensaver_enabled=`xfconf-query -c xfce4-session -p /startup/screensaver/enabled 2> /dev/null`
- if test $UID -gt 0 -a -z "$VNCSESSION" -a "$screensaver_enabled" != "false"; then
- screensaver_type=`xfconf-query -c xfce4-session -p /startup/screensaver/type 2> /dev/null`
- case "$screensaver_type" in
- xscreensaver)
- xscreensaver -no-splash &
- ;;
- gnome-screensaver)
- gnome-screensaver &
- ;;
- *)
- if test x"`which xscreensaver 2>/dev/null`" != x""; then
- xscreensaver -no-splash &
- elif test x"`which gnome-screensaver 2>/dev/null`" != x""; then
- gnome-screensaver &
- fi
- ;;
- esac
- fi
- # Run xfce4-session if installed
- if which xfce4-session >/dev/null 2>&1; then
- xfce4-session
- if test "$ssh_agent_kill_cmd"; then
- echo "running '$ssh_agent_kill_cmd'"
- eval "$ssh_agent_kill_cmd"
- fi
- exit 0
- fi
- ##################
- # IMPORTANT NOTE #
- ##################
- # Everything below here ONLY gets executed if you are NOT using xfce4-session
- # (Xfce's session manager). If you are using the session manager, everything
- # below is handled by it, and the code below is not executed at all. If you're
- # not sure if you're using the session manager, type 'ps -e|grep xfce4-session'
- # in a terminal while Xfce is running.
- ##################
- # this is only necessary when running w/o xfce4-session
- xsetroot -solid black -cursor_name watch
- # or use old-fashioned startup script otherwise
- xfsettingsd &
- xfwm4 --daemon
- # start up stuff in $XDG_CONFIG_HOME/autostart/, as that looks to be
- # the new standard. if that directory doesn't exist, try the old
- # ~/Desktop/Autostart method. we're not going to do any migration here.
- if test -d "$XDG_CONFIG_HOME/autostart"; then
- for i in ${XDG_CONFIG_HOME}/autostart/*.desktop; do
- grep -q -E "^Hidden=true" "$i" && continue
- if grep -q -E "^OnlyShowIn=" "$i"; then
- # need to test twice, as lack of the line entirely means we still run it
- grep -E "^OnlyShowIn=" "$i" | grep -q 'XFCE;' || continue
- fi
- grep -E "^NotShowIn=" "$i" | grep -q 'XFCE;' && continue
- # check for TryExec
- trycmd=`grep -E "^TryExec=" "$i" | cut -d'=' -f2`
- if test "$trycmd"; then
- which "$trycmd" >/dev/null 2>&1 || continue
- fi
- cmd=`grep -E "^Exec=" "$i" | cut -d'=' -f2`
- if test "$cmd" && which "$cmd" >/dev/null 2>&1; then
- $cmd &
- fi
- done
- elif test -d "$HOME/Desktop/Autostart"; then
- for i in `ls -1 -L ${HOME}/Desktop/Autostart/ 2>/dev/null`; do
- if test -x $HOME/Desktop/Autostart/$i; then
- $HOME/Desktop/Autostart/$i &
- fi
- done
- fi
- xfdesktop&
- orage &
- panel=`which xfce4-panel`
- case "x$panel" in
- x|xno*)
- ;;
- *)
- $panel
- ret=$?
- while test $ret -ne 0; do
- xmessage -center -file - -timeout 20 -title Error <<EOF
- A crash occured in the panel
- Please report this to the [email protected] list
- or on http://bugs.xfce.org
- Meanwhile the panel will be restarted
- EOF
- cat >&2 <<EOF
- A crash occured in the panel
- Please report this to the [email protected] list
- or on http://bugs.xfce.org
- Meanwhile the panel will be restarted
- EOF
- $panel
- ret=$?
- done
- ;;
- esac
- if test "$ssh_agent_kill_cmd"; then
- eval "$ssh_agent_kill_cmd"
- fi
- xsetroot -bg white -fg red -solid black -cursor_name watch
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement