Message: previous - next
Month: April 2012

Re: [trinity-devel] Is TDEDIRS broken? (No, OnlyShowIn is broken)

From: Darrell Anderson <humanreadable@...>
Date: Sun, 8 Apr 2012 11:25:46 -0700 (PDT)
> > I notice files installed in my additional TDEDIRS directory are being ignored. Would
> > somebody else confirm this behavior?
> >
> > My additional directory is placed first in the TDEDIRS
> > variable string:
> >
> > TDEDIR=/opt/trinity
> > TDEDIRS=/usr/local/tde-mods:/opt/trinity
> >
> > I noticed this behavior a while ago because various
> > mimetypes were not working as I reconfigured.
> Yesterday investigated further. I have Xfce installed on this
> system. I seldom use Xfce and even then only for comparative
> > purposes. Yet yesterday, having "Mousepad" in my
> Konqueror popup menu for text editors finally rankled me. I
> copied the desktop file from /usr/share/applications to
> > /usr/local/tde-mods/share/applications.
> >
> > In the mousepad.desktop file I added OnlyShowIn=XFCE;.
> I
> > restarted the session and Mousepad remained in the
> popup menu.
> >
> > Curious, I edited the desktop file in
> > /usr/share/applications, restarted the session, and
> Mousepad no longer populated the popup menu.
> >
> > Therefore TDE is recognizing the OnlyShowIn directive,
> but not those in my secondary TDEDIRS directory.
> >
> > Seems something is awry with using TDEDIRS. At this
> point I don't know whether the problem is me or the code.
> >
> > This same process works as expected in my KDE3 setup,
> > (albeit using KDEDIRS).
> >
> > I appreciate further insight and help.
> Additional evidence of incorrect behavior is items appearing
> in the system menu that are tagged with OnlyShowIn=XFCE;.
> After some more testing, in my TDEDIRS directory I have many
> mimelnk desktop files to override the defaults. They are
> being adhered to and being used. For example. with TDEDIRS
> not being set, archived files will open directly in
> Konqueror as embedded files. With TDEDIRS being set and my
> TDEDIRS ark.desktop file overriding that behavior, an
> archived file opens in Ark rather than as embedded.
> Therefore Trinity is using TDEDIRS. The problem then seems
> to be not always recognizing the OnlyShowIn key. Or not
> using that key correctly. Trinity recognized the change I
> made to the mousepad.desktop file in /usr/applications.
> Possibly then Trinity just does not recognize that key when
> I am deleting my ksycoca cache with these tests. So that is
> not the problem. :)

I discovered the cause of the problem. The solution requires revising starttde.

Some time ago we discovered that we should explicitly set $XDG_DATA_DIRS in starttde only when Trinity is not installed in /usr. Explicitly declaring $XDG_DATA_DIRS will override the default search path of /usr/share and we had to ensure that when explicitly declaring $XDG_DATA_DIRS that /usr/share was included in that search path. Otherwise /usr/share was ignored.

This explicit declaration of $XDG_DATA_DIRS affects $TDEDIRS as well.

For testing purposes, when I unset the $XDG_DATA_DIRS variable, my files in $TDEDIRS were used as intended. Similarly, only when I placed $TDEDIRS first in the $XDG_DATA_DIRS search string did my files in $TDEDIRS work as intended.

We need to revise the $XDG_DATA_DIRS snippet in starttde to correctly parse $TDEDIRS. When more than one directory is defined in $TDEDIRS to parse and place the additional directories first in the $XDG_DATA_DIRS variable.

As written we have the placement pattern backwards. When Trinity is installed in a location other than /usr, then we need to ensure the Trinity paths are placed first in the variable order and /usr/share placed last. When I did that my system then found my $TDEDIRS directory and my Konqueror context menus worked correctly --- Mousepad no longer appear in the menu.