[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[Pkg-xfce-devel] Bug#617470: Bug#617470: xfdesktop4: Unable to load menu: File "menus/applications.menu" not found




> 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.






Reply to: