summaryrefslogtreecommitdiffstats
path: root/libkonq/SERVICEMENUS.md
blob: bcd7ae1f762a0fd008de942ba2c33b5da159e48a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
Service Menus
=============

This file explains how to add an item in the popupmenu (for both
konqueror and kdesktop), without using the file associations.

Why
---

One reason for doing this is being able to associate
some action with all files without this action becoming a default handler
(called on left click).

Another is that for text-based programs and tools (e.g. gzip) it's faster
than defining a desktop file for the application, making it hidden, and
associate it with the relevant file types.

How
---

Create a file `~/.trinity/share/apps/konqueror/servicemenus/something.desktop`
and write into it something like (without the comments):

    [Desktop Entry]
    ServiceTypes=text/html,text/plain # use all/all for all entries
                                      # all/allfiles for files only
                                      # and use inode/directory for dirs only
                                      # you can also do things like image/* for all
                                      # image mimetypes
    Actions=gzip;mail                 # those are ';' separated, per the standard !
    X-TDE-Submenu=Menuname            # this optional entry allows grouping the 
                                      # entries in this servicemenu file into a
                                      # common submenu, in this case "Menuname"
    TryExec=gzip                      # Find if executable exist, if it doesn't exist
                                      # menu entry is not displaying
    ExcludeServiceTypes=application/x-zip # This entry is used to avoid to display menu
                                      # when it's a specific servicetype
                                      # for exemple when we use all/allfiles and zip
                                      # them, we don't want to zip a zip file

    [Desktop Action gzip]             # One "Desktop Action <name>" group per Action
    Name=GZip this file
    Name[fr]=...
    Icon=tgz
    Exec=gzip %f

    [Desktop Action mail]
    Name=Mail this file
    Name[fr]=...
    Icon=kmail
    Exec=kmail --there-is-no-such-option-yet %f

See also the *desktop entry standard*, which defines more formally the same
concept of actions but for desktop files (e.g. eject on a device desktop file,
etc.).