KDE-menuen

Hvordan virker det

I KDE 3.2 introduceredes et fælles menuformat på http://freedesktop.org/Standards/menu-spec/.

Før KDE 3.2

  • Katalogstruktur under share/applnk

  • Katalogstrukturen repræsenterer menustrukturen

  • Hver .desktop-fil repræsenterer et enkelt program

Det var svært at omarrangere strukturen i KDE 3.2 til det nye menuformat:

  • Definerer strukturen i en enkelt .menu-fil

  • Er baseret på kategorier

  • Deles mellem GNOME og KDE

  • Støtter også menuer i applnk-stil

Eksempel fra applications.menu


        <Menu>
            <Name>Office</Name>
            <Directory>suse-office.directory</Directory>
            <Include>
                <Filename>Acrobat Reader.desktop</Filename>
                <Filename>kde-kpresenter.desktop</Filename>
                <Filename>kde-kword.desktop</Filename>
            </Include>
        <Menu>

Menuindgang med tre programmer:

  • /usr/share/applications/Acrobat Reader.desktop

  • /opt/kde3/share/applications/kde/kpresenter.desktop

  • /opt/kde3/share/applications/kde/kword.desktop

Opbevares hvor?

.menu-filer som beskriver menustrukturen. Filerne opbevares i $KDEDIR/etc/xdg/menus og /etc/xdg/menus. De opbevarer systemets menustruktur og styres af $XDG_CONFIG_DIRS. $HOME/.config/menus opbevarer brugerspecifikke ændringer i menustrukturen og styres af $XDG_CONFIG_HOME. For mere information, se http://www.freedesktop.org/Standards/basedir-spec.

.desktop-filer beskriver programmer og opbevares i: $KDEDIR/share/applications, /usr/share/applications, /usr/local/share/applications. De er systemets .desktop-filer for programmer som styres af $XDG_DATA_DIRS.

$HOME/.local/applications indeholder brugerspecifikke .desktop-filer og brugerspecifikke ændringer. Den styres af$XDG_DATA_HOME. For mere information, se http://www.freedesktop.org/Standards/basedir-spec

.directory-filer som beskriver undermenuer opbevares i $KDEDIR/share/desktop-directories, /usr/share/desktop-directories, /usr/local/share/desktop-directories. De er systemets .directory-filer for menuer styret af $XDG_DATA_DIRS. Brugerspecifikke ændringer opbevares i $HOME/.local/desktop-directories. De styres af $XDG_DATA_HOME. For mere information, se http://www.freedesktop.org/Standards/basedir-spec

Eksempel fra applications.menu


             <Menu>
                        <Name>Art</Name>
                        <Directory>suse-edutainment-art.directory</Directory>
                        <Include>
                                <Category>X-SuSE-Art</Category>
                        </Include>
                </Menu>

Art er det interne navn på menuen. suse-edutainment-art.directory definerer navn og ikon for menuen, og menuen indeholder alle programmer som har X-SuSE-Art angivne som kategori, f.eks.:

Categories=Qt;KDE;Education;X-SuSE-Art

suse-edutainment-art.directory definerer navn og ikon for menuen:

[Desktop Entry]
Name=Art and Culture
Icon=kcmsystem

Almindelige besværligheder

Programmer som ikke er i menuen eksisterer ikke med hensyn til andre programmer eller filbindinger. Hvis du fjerner et program fra menuen, antager KDE at du ikke vil bruge det.

Når programmer ikke er ønskede i menuen, kan de enten placeres i menuen .hidden eller en særlig menu med

NoDisplay=true
i filen .directory.

Væsentlige menuer

$KDEDIR/etc/xdg/menus/applications-merged/ indeholder kde-essential.menu som indeholder nogle væsentlige menuer som normalt ikke vises i selve KDE-menuen.

  • Kontrolcentret har en skjult indstillingsmenu hvis indhold defineres af kde-settings.menu og hvis ikon og navn defineres af kde-settings.directory.

  • Kontrolcentret har en skjult informationsmenu hvis indhold defineres af kde-information.menu og hvis ikon og navn defineres af kde-information.directory.

  • Pauseskærme indeholder en skjult menu System/Screensavers, hvis indhold defineres af kde-screensavers.menu og hvis ikon og navn defineres af kde-system-screensavers.directory. $KDEDIR/share/desktop-directories/kde-system-screensavers.directory indeholder:

    NoDisplay=true
    

Menuer i gammel stil

KDE fortsætter med at støde på menuer i gammel stil som defineres af mappestrukturen i $KDEDIR/share/applnk (for systemet) og $HOME/.kde/share/applnk (brugerspecifikke). Det gøres hvis .desktop-filen ikke har linjen Categories=. I dette tilfælde afgør kategorierne stedet i menuen.

KSycoca

KSycoca opbevarer menustrukturen og information om alle tilgængelige programmer i en cache. Du kan genbygge databasen med kbuildsycoca. Databasen som bygges findes i /var/tmp/kdecache-${USER}/ksycoca. Den opdateres automatisk af KDED, kontrolleres ved indlogning i KDE, og KDED overvåger ændringer mens du er logget på.

For at deaktivere overvågning af ændringer (eftersom det kan være skadeligt over NFS) tilføj følgende i kdedrc:

[General]
CheckSycoca=false

For at tvinge til regenerering, køres touch $KDEDIR/share/services/update_ksycoca.

kmenuedit

kmenuedit er beregnet til en enkeltbruger-desktop. Ændringer i menustrukturen gemmes i ~/.config/menus/applications-kmenuedit.menu, ændringer af programmer gemmes i ~/.local/share/applications/ og ændringer i undermenuer (ikon, navn) gemmes i ~/.local/share/desktop-directories/. Administrationsværktøjet for kiosktilstand bruger kmenuedit og kopierer ovenstående ændringer til et profilsted eller systemsted.