Created
August 11, 2013 13:03
-
-
Save ncraike/6204799 to your computer and use it in GitHub Desktop.
The offending /etc/xdg/xfce4/xinitrc script in my Ubuntu install. The line:
cat /dev/null $XRESOURCES | xrdb -nocpp -merge -
...breaks ~/.Xresources which use #define - the -nocpp option disables preprocessor directives
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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 | |
# set XDG_CURRENT_DESKTOP for alacarte | |
if test "x$XDG_CURRENT_DESKTOP" = "x"; then | |
XDG_CURRENT_DESKTOP="XFCE" | |
export XDG_CURRENT_DESKTOP | |
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 | |
# Modify libglade and glade environment variables so that | |
# it will find the files installed by Xfce | |
GLADE_CATALOG_PATH="$GLADE_CATALOG_PATH:/usr/share/glade3/catalogs" | |
GLADE_PIXMAP_PATH="$GLADE_PIXMAP_PATH:/usr/lib/glade3/modules" | |
GLADE_MODULE_PATH="$GLADE_MODULE_PATH:/usr/share/glade3/pixmaps" | |
export GLADE_CATALOG_PATH | |
export GLADE_PIXMAP_PATH | |
export GLADE_MODULE_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 | |
# run xfce4-session if installed | |
if which xfce4-session >/dev/null 2>&1; then | |
# check if we start xfce4-session with ck-launch-session. this is only | |
# required for starting from a console, not a login manager | |
if test "x$XFCE4_SESSION_WITH_CK" = "x1"; then | |
if which ck-launch-session >/dev/null 2>&1; then | |
ck-launch-session xfce4-session | |
else | |
echo | |
echo "You have tried to start Xfce with consolekit support, but" | |
echo "ck-launch-session is not installed." | |
echo "Aborted startup..." | |
echo | |
exit 1 | |
fi | |
else | |
# start xfce4-session normally | |
xfce4-session | |
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. | |
################## | |
# 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 | |
# 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/ | |
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 | |
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 | |
xsetroot -bg white -fg red -solid black -cursor_name watch |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment