strategies for customizing the "K" menu
Duncan
1i5t5.duncan at cox.net
Thu Mar 3 04:06:40 GMT 2016
Jerome Yuzyk posted on Wed, 02 Mar 2016 18:40:32 -0700 as excerpted:
> On Friday, February 26, 2016 11:09:46 PM Duncan wrote:
>> Jerome Yuzyk posted on Fri, 26 Feb 2016 11:51:27 -0700 as excerpted:
>>
>> > This is a 2-part question but both are about customizing the "main"
>> > or "K" menu. I Googled variations on "custom KDE menu" but didn't
>> > come up with much. So I ask some Knerds. :-)
>> >
>> >
>> https://www.freedesktop.org/wiki/Specifications/
>
> Thanks very much Duncan. Now I just have to digest all that!
>
> Now, do I use kbuildsycoca5 to regenerate the menu after my additions?
> The man page says it: "Rebuilds the KService desktop file system
> configuration cache."
>
> Is there another tool?
Very good question.
I believe the best answer would be to see what your distro uses when it
updates a menu item and trigger the same, manually or by your own
script. Packages aren't just a tarball of files; there's an install
script that runs too. I used to know more specific information about what
rpm did back in the day, but that has been over a decade ago now, and
while it's probably still similar, I imagine it's quite a bit fancier
now...
Anyway, use your package manager's commands to examine what the install
script of some package including menu items does after it installs those
menu items so they show up in the running menu, and do something similar
yourself.
Here on gentoo, every normal kde5 package runs a function called
kde5_pkg_postinst (from the kde5 eclass aka ebuild library, ebuilds being
the package recipes on gentoo) after installs, and kde5_pkg_postrm after
uninstalls, which in turn run gnome2_icon_cache_update (for the people
who run gnome2 as well, since it's pre-xdg-standard) and xdg_pkg_post
(inst|rm) as appropriate. I won't go into gnome2_icon_cache_update
further, but xdg_pkg_post* are worth looking into as they're standardized.
The xdg* functions are from xdg.eclass. As both installs and removes
require updating the menus, etc, xdg_pkg_post_(inst|rm) both do
effectively the same thing, calling two functions inherited from yet
another eclass, xdg-utils.eclass:
1) xdg_desktop_database_update
This function (effectively) calls
/usr/bin/update-desktop-database -q /usr/share/applications
See the update-desktop-database (1) manpage for more detail, but the -q
is as might be guessed, --quiet. You probably want to see what it spits
out and thus don't want -q, and may even want -v|--verbose.
2) xdg_mimeinfo_database_update
This function (effectively) calls
/usr/bin/update-mime-database /usr/share/mime
Again, see the update-mime-database (1) manpage. There's no -q|--quiet
parameter here, but there is a -V for verbose (no long form option tho).
Of course if you're doing it only for your own user, not the entire
system, as the package post_(un)?install routines are doing, I believe
you'd point it at your user's location. I suppose the spec-docs cover
that, too.
So you'd call those to update the standard stuff, and hopefully plasma
will see it at that point without even having to run the ksycoca (Kde
SYstem COnfig CAche) updater. If it doesn't, you can of course run that
as well, but at least in theory that should only be necessary if you've
updated kde specific stuff, not just common xdg-spec covered stuff.
(Back at the beginning of the kde4 era, the freedesktop.org specs weren't
yet mature, and at the beginning of the kde3 era, AFAIK/IIRC they didn't
exist at all yet, so you had to run the kde specific ksycoca updater.
Now days, things are much more cooperatively done, with both kde and
gnome, and a number of the other DEs as well, using the common xdg
specs. So the common xdg updater tools should be used and to the extent
that you're only changing the standard menu and mime stuff, that should
do it. You'd still need to run the ksycoca updater if you changed
unstandardized kde specific configuration, like I believe some of the kde
specific *.desktop service files, say those located under /usr/share/
plasma, for instance.)
--
Duncan - List replies preferred. No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master." Richard Stallman
___________________________________________________
This message is from the kde mailing list.
Account management: https://mail.kde.org/mailman/listinfo/kde.
Archives: http://lists.kde.org/.
More info: http://www.kde.org/faq.html.
More information about the kde
mailing list