diff options
author | Dominique Leuenberger <dimstar@opensuse.org> | 2020-09-16 11:59:43 +0200 |
---|---|---|
committer | Ray Strode <rstrode@redhat.com> | 2021-02-24 15:34:21 -0500 |
commit | d98debd294060489c77d913d32674c4e08987b8f (patch) | |
tree | 37c56801dfe64203656c0a3a3b130813c4961f3b | |
parent | 349e6af855a1c1dbee9af3e5881e00b66482d155 (diff) | |
download | gdm-d98debd294060489c77d913d32674c4e08987b8f.tar.gz |
Xinit: Allow for distros to split system config to /usr/etc
openSUSE is preparing the system to have /etc as 'administrator config files'
with system/package config templates shipped in /usr/etc (similar to the
overlay system used by systemd)
Have gdm follow this and try to load files from /etc, if not existing, fallback
to /usr/etc
-rw-r--r-- | data/Init.in | 12 | ||||
-rwxr-xr-x | data/Xsession.in | 46 |
2 files changed, 49 insertions, 9 deletions
diff --git a/data/Init.in b/data/Init.in index 86cc2d86..0c50251c 100644 --- a/data/Init.in +++ b/data/Init.in @@ -22,14 +22,22 @@ gdmwhich () { echo "$OUTPUT" } -sysresources=/etc/X11/Xresources +if [ -f /etc/X11/Xresources ]; then + sysresources=/etc/X11/Xresources +else + sysresources=/usr/etc/X11/Xresources +fi # merge in defaults if [ -f "$sysresources" ]; then xrdb -nocpp -merge "$sysresources" fi -sysmodmap=/etc/X11/Xmodmap +if [ -f /etc/X11/Xmodmap ]; then + sysmodmap=/etc/X11/Xmodmap +else + sysmodmap=/usr/etc/X11/Xmodmap +fi XMODMAP=`gdmwhich xmodmap` if [ "x$XMODMAP" != "x" ] ; then diff --git a/data/Xsession.in b/data/Xsession.in index 9d79558c..2e4de4fe 100755 --- a/data/Xsession.in +++ b/data/Xsession.in @@ -29,11 +29,20 @@ command="$@" # good for debugging where things went wrong echo "$0: Beginning session setup..." -# First read /etc/profile and .profile -test -f /etc/profile && . /etc/profile +# First read /etc/profile (resp. /usr/etc/profile) and .profile +if [ -f /etc/profile ]; then + . /etc/profile +elif [ -f /usr/etc/profile ]; then + . /usr/etc/profile +fi test -f "$HOME/.profile" && . "$HOME/.profile" -# Second read /etc/xprofile and .xprofile for X specific setup -test -f /etc/xprofile && . /etc/xprofile +# Second read /etc/xprofile (resp. /usr/etc/xprofile) and .xprofile for X specific setup +if [ -f /etc/xprofile ]; then + . /etc/xprofile +elif [ -f /usr/etc/xprofile ]; then + . /usr/etc/xprofile + +fi test -f "$HOME/.xprofile" && . "$HOME/.xprofile" # Translation stuff @@ -85,9 +94,23 @@ userresources="$HOME/.Xresources" usermodmap="$HOME/.Xmodmap" userxkbmap="$HOME/.Xkbmap" -sysresources=/etc/X11/Xresources -sysmodmap=/etc/X11/Xmodmap -sysxkbmap=/etc/X11/Xkbmap +if [ -f /etc/X11/Xresources ]; then + sysresources=/etc/X11/Xresources +else + sysresources=/usr/etc/X11/Xresources +fi + +if [ -f /etc/X11/Xmodmap ]; then + sysmodmap=/etc/X11/Xmodmap +else + sysmodmap=/usr/etc/X11/Xmodmap +fi + +if [ -f /etc/X11/Xkbmap ]; then + sysxkbmap=/etc/X11/Xkbmap +else + sysxkbmap=/usr/etc/X11/Xkbmap +fi rh6sysresources=/etc/X11/xinit/Xresources rh6sysmodmap=/etc/X11/xinit/Xmodmap @@ -149,6 +172,15 @@ unset XKB_IN_USE xhost +si:localuser:`id -un` || : # run all system xinitrc shell scripts. +if [ -d /usr/etc/X11/xinit/xinitrc.d ]; then + for i in /usr/etc/X11/xinit/xinitrc.d/* ; do + sname=$(basename "$i") + test -x "/etc/X11/xinit/xinitrc.d/$sname" && continue + if [ -x "$i" -a ! -d "$i" ]; then + . "$i" + fi + done +fi if [ -d /etc/X11/xinit/xinitrc.d ]; then for i in /etc/X11/xinit/xinitrc.d/* ; do if [ -x "$i" -a ! -d "$i" ]; then |