/etc/xdg/xfce4/xinitrc is in xfce4-utils 4.8.3-1ubuntu2.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 | #!/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
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 xfce4-dev@xfce.org 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 xfce4-dev@xfce.org 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
|