Creating Custom Service Menus in Konqueror

If you are using Konqueror and have not used custom service menus, you are missing out. Just like the Nautilus Scripts in Nautilus, Konqueror also has the ability to customize the context menus. This post will show you how to do it.

We are going to create two different kind of service menus – one will create an item in the action part of the right click menu. The next type will create a submenu in the ‘actions’ menu with multiple menu items. Hopefully, you will get an idea about how to do it by yourself.

Single Item Service Menu

This service menu will create a menu item in the Action section of the context menu for all ISO files. For this to work as intended, the mimetype for ISO file must be application/x-iso .

  • Open ~/.kde/share/apps/konqueror/servicemenus folder
  • Create a file with the name ‘PlayISO.desktop’ – the name can be anything – but the extension must be ‘.desktop’
  • Enter the following content…
[Desktop Entry]
ServiceTypes=application/x-iso
Actions=PlayISOInXine

[Desktop Action PlayISOInXine]
Name=Play ISO File in Xine
Icon=player_play
Exec=xine -pq --no-splash dvd:/%f

Now lets see a line by line explanation of the code.

[Desktop Entry]
Start the file with this line.
ServiceTypes=application/x-iso
This decides which all file types must this service menu be shown to. You can find the mimetype for various files by taking Control Center > KDE Components > File Associations. Then search for the extension in the given text field.
Actions=PlayISOInXine
Name of the action – this will be defined in the next line
[Desktop Action PlayISOInXine]
The definition of the ‘PlayISOInXine’ action goes here.
Name=Play ISO File in Xine
The text to be shown in the menu item.
Icon=player_play
The icon to be used in the menu. The icon can be an absolute path or the file name of an image in your current theme(for example, if you are using Crystal SVG theme, then the images you can use is in the folder ‘/usr/share/icons/crystalsvg/16×16/actions’).
Exec=xine -pq –no-splash dvd:/%f
The command to be executed when the menu item is clicked. The %f stands for the full name of the file. The other options are listed in the documentation.

This is the end result…

Submenu Service Menu

This sample will give you the option to convert the selected html file to a plain text file or a compressed archive. The code looks like this…

[Desktop Entry]
ServiceTypes=text/html
Actions=convertToText;convertToZip
X-KDE-Submenu=Convert

[Desktop Action convertToText]
Name=Convert To Text
Icon=txt
Exec=lynx -dump "%f" > "`dirname "%f"`/`basename "%f" ".html"`.txt"

[Desktop Action convertToZip]
Name=Compress as Zip
Icon=tar
Exec=zip "`dirname "%f"`/`basename "%f" ".html"`.zip" "%f"

Again, a line by line explanation…

[Desktop Entry]
You know.
ServiceTypes=text/html
This is only for HTML files – so we specify the mimetype as text/html
Actions=convertToText;convertToZip
We have two different actions instead of just one as in the last case. So we provide the name of both actions separated by a ‘;’.
X-KDE-Submenu=Convert
This will make sure its shown in a submenu – and that the name of the submenu is Convert.
[Desktop Action convertToText]
Defining the first action – convertToText
Name=Convert To Text
The label of the menu item
Icon=txt
And its icon
Exec=lynx -dump “%f” > “`dirname “%f”`/`basename “%f” “.html”`.txt”
This command will convert a html file to a text file and put the resulting file in the same folder as the html file.
[Desktop Action convertToZip]
Defining the next action – convertToZip
Name=Compress as Zip
Label
Icon=tar
And Icon
Exec=zip “`dirname “%f”`/`basename “%f” “.html”`.zip” “%f”
The command to compress the html file as a zip file.

If done correctly, it should look something like this…

Related Links

2 comments

  1. I’m not using Konqueror, but through this pots I found that excellent script for opening a terminal in Nautilus (my favorite file manager). So, thanks a lot.

Leave a Reply to BinnyVA Cancel reply

Your email address will not be published. Required fields are marked *