summaryrefslogtreecommitdiff
path: root/scripts/xinitrc.in
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/xinitrc.in')
-rw-r--r--scripts/xinitrc.in106
1 files changed, 106 insertions, 0 deletions
diff --git a/scripts/xinitrc.in b/scripts/xinitrc.in
new file mode 100644
index 0000000..ff044ed
--- /dev/null
+++ b/scripts/xinitrc.in
@@ -0,0 +1,106 @@
+#!/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 so that Qt 5 applications can identify user set Xfce theme
+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 command -v xdg-user-dirs-update >/dev/null 2>&1; then
+ xdg-user-dirs-update
+fi
+
+# For now, start with an empty list
+XRESOURCES=""
+
+# Has to go prior to merging Xft.xrdb, as its the "Defaults" file
+test -r "@_sysconfdir_@/xdg/xfce4/Xft.xrdb" && XRESOURCES="$XRESOURCES @_sysconfdir_@/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 -merge -
+
+# load local modmap
+test -r $HOME/.Xmodmap && xmodmap $HOME/.Xmodmap
+
+# if XAUTHLOCALHOSTNAME is not set in systemd user session, starting of xfce4-notifyd, DISPLAY etc. will fail
+if command -v systemctl >/dev/null 2>&1 && systemctl --user list-jobs >/dev/null 2>&1; then # user session is running
+ dbus-update-activation-environment --systemd XAUTHLOCALHOSTNAME=$XAUTHLOCALHOSTNAME
+fi
+
+
+# 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 command -v ck-launch-session >/dev/null 2>&1; then
+ exec 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
+ exec xfce4-session
+fi
+
+# if we got here, then exec failed
+exit 1