[Pkg-xfce-devel] Bug#617470: Bug#617470: xfdesktop4: Unable to load menu: File "menus/applications.menu" not found
David Witbrodt
dawitbro at sbcglobal.net
Wed Mar 9 08:47:16 UTC 2011
> From: Lionel Le Folgoc <mrpouit at gmail.com>
> Sent: Wed, March 9, 2011 1:47:00 AM
> How do you start your Xfce session?
I login via xdm. Never had a problem with previous versions
of Xfce.
> You should have the following env var set:
> XDG_MENU_PREFIX=xfce-
Hmmm...
$ echo $XDG_MENU_PREFIX
$
> And garcon looks for $d/menus/${XDG_MENU_PREFIX}applications.menu
> (with $d in $XDG_CONFIG_DIRS, or /etc if empty).
$ echo $XDG_CONFIG_DIRS
$
> This is usually set by /etc/xdg/xfce4/xinitrc, spawned by
> /usr/bin/startxfce4 (both from xfce4-utils >= 4.8.0).
Since those environment variables do not get set, I'm going to
have to say that 'xdm' bypasses the setup you folks are
expecting to have happen.
Looking at /etc/X11/xdm, I see the following in 'xdm-config':
DisplayManager*startup: /etc/X11/xdm/Xstartup
DisplayManager*session: /etc/X11/xdm/Xsession
DisplayManager*setup: /etc/X11/xdm/Xsetup
DisplayManager*reset: /etc/X11/xdm/Xreset
The 'Xsession' script is a one-liner:
. /etc/X11/Xsession
So, 'xdm' hands off to 'x11-common', which does this
...
SYSSESSIONDIR=/etc/X11/Xsession.d
...
SESSIONFILES=$(run-parts --list $SYSSESSIONDIR)
if [ -n "$SESSIONFILES" ]; then
set +e
for SESSIONFILE in $SESSIONFILES; do
. $SESSIONFILE
done
set -e
fi
Now looking in Xsession.d/, there is '40x11-common_xsessionrc'
which would run ~/.xsession if I had one. I do not.
The fallback seems to be in '50x11-common_determine-startup':
# If there is still nothing to use for a startup program, try the system
# default session manager, window manager, and terminal emulator.
if [ -z "$STARTUP" ]; then
if [ -x /usr/bin/x-session-manager ]; then
STARTUP=x-session-manager
elif [ -x /usr/bin/x-window-manager ]; then
STARTUP=x-window-manager
elif [ -x /usr/bin/x-terminal-emulator ]; then
STARTUP=x-terminal-emulator
fi
fi
Those are not programs but symlinks to the Debian alternatives system:
# la -d /usr/bin/x-*
[...] /usr/bin/x-session-manager -> /etc/alternatives/x-session-manager
[...] /usr/bin/x-terminal-emulator -> /etc/alternatives/x-terminal-emulator
[...] /usr/bin/x-window-manager -> /etc/alternatives/x-window-manager
[...]
The alternatives seem to be set appropriately:
# la -d /etc/alternatives/x-*
[...] /etc/alternatives/x-session-manager -> /usr/bin/xfce4-session
[...] /etc/alternatives/x-session-manager.1.gz ->
/usr/share/man/man1/xfce4-session.1.gz
[...] /etc/alternatives/x-terminal-emulator ->
/usr/bin/xfce4-terminal.wrapper
[...] /etc/alternatives/x-terminal-emulator.1.gz ->
/usr/share/man/man1/xfce4-terminal.wrapper.1.gz
[...] /etc/alternatives/x-window-manager -> /usr/bin/xfwm4
[...] /etc/alternatives/x-window-manager.1.gz ->
/usr/share/man/man1/xfwm4.1.gz
[...]
Believe it or not, this was working for me in the past -- just having
x11-common run xfce4-session! (I never knew how any of this worked
until looking at it just now.)
It looks like Xfce needs much more environment setup than what
x11-common knows about. I wonder if you should declare a
dependency conflict with 'xdm'? Or is there some way to allow
'startxfce4' to be called by x11-common through the alternatives
system?
Maybe this bug report should be retitled to reflect that xdm
currently cannot run Xfce 4.8 with the proper environment set
up, and the severity should certainly be lowered below important.
(I was assuming actual breakage between the Xfce packages, which
turns out not to be the case.)
Thanks, and please advise...
Dave W.
More information about the Pkg-xfce-devel
mailing list