Revision [20493]

This is an old revision of ApplicationEntry made by darkcity on 2012-02-06 11:37:56.

 

HomePage > ComponentHowTo Components and HowTos > HowToConfigure Configure

How to make File Associations


There are two ways to associate file-types in Puppy. The first is the by setting the 'default action' when clicking a certain file type. The second is creating an option in the File 'filename' menu when file is 'right-clicked'.

'Right-click' Association

MIME-Types are used to standardised file-types. The 'Right-click' options are stored in
/root/.config/rox.sourceforge.net/OpenWith

There is a directory for each mime-type in use, for example the MIME-Type directory for image/jpeg becomes .image_jpeg

A shortcut for getting to this directory is to right-click on a jpeg and select
File 'filename.jpg' > Customise Menu ...

Typically the MIME-type directories are filled with links to ROX AppDirs stored at /usr/local/apps
If the application/action you want is already in this directory simply create a link in the MIME-type directory.

If not then create an AppDir. They consist of a directory containing three files-

Appinfo.xml - information about app in xml
AppRun - script to run program
.DirIcon - image file icon for directory (many apps have an icon stored in /usr/share/pixmaps which you can link)

These typically contain the following - using AbiWord as an example-

Appinfo.xml -
<?xml version="1.0"?>
<AppInfo>
  <Summary>Abiword text editor</Summary>
</AppInfo>


AppRun -
#!/bin/sh
exec abiword  "$@"


The "S@" typically passes file clicked on to the app.

To pass a file to a WINE program see the follow example with Irfanview
#!/bin/sh
# Purpose: To convert Unix filename to DOS style to pass as an argument
# to wine when starting IrfanView from filer.
#
FileName="z:"${1//\//\\}
exec wine 'C:\\Program Files\\IrfanView\\i_view32.exe' $FileName


'Default Action' Association (and Icon)
To set the 'default action' of a file-type follow the following instructions (modified from this thread)

1. Check if your file-type has a MIME-type entry in Puppy Linux. They are stored in the text file /usr/share/mime/globs
If file-type is already associated to the correct MIME-type jump to step 2.

Add or edit your MIME-Type to file-type definition. For example, if you have a file whose extension is .tmd and your making a non-standard MIME-type application/x-tmd append the code application/x-tmd:*.tmd to the globs file. ENSURE you end the line with a 'return' otherwise it won't work.

(The x- in the MIME-type name above is used to indicate that this type hasn't already been
registered with the MIME-type authorities (www.iana.org/assignments/media-types/ media-types). i.e. It is a non-standard/private/local type, not an IANA officially registered one.)


4. You now need to create an executable shell script in /usr/local/bin, which for this example I will call defaultRunTextMaker (though you can call it anything you like), for starting up the TextMaker program.


It should contain the following lines:

Code:

#!/bin/sh
exec /path_to_where_the_program_is/TextMaker.exe "$@"


You don't need the /path_to_where_the_program_is/ part if that directory is already in your Linux PATH environment variable.

5. Finally, you need to tell ROX to open that default Run script should you click on a file of that mime type. To do that you create a short executable shell script in ~/Choices/MIME-types named, for this example, application_x-tmd, which should contain the lines:

Code:

#!/bin/sh
exec defaultRunTextMaker "$1"


!!! NOTE WELL that you DO NOT (and should not) need to set a default Run Action after doing the above; fixing the mime type information was enough. i.e DO NOT right click on the file icon in order to forcibly enter a shell command for the file type; instead leave everything up to the above mime type mechanism.

5b. EDIT: Having said the above, once you have modified the /usr/share/mime/globs file, you COULD alternatively not bother about the above step 5 code at all and just set a Run Action for the file type by right-clicking on the file icon and entering the appropriate shell command (e.g. path_to_TextMaker "$@"). That will automatically create an appropriate application_x-tmd shell script, but ROX stores that in ~/.config/rox.sourceforge.net/MIME-types rather than in ~/Choices/MIME-types. Either way should work I think. However, if you have, for example, an application_x-tmd shell script in both ~/.config/rox.sourceforge.net/MIME-types and in ~/Choices/MIME-types, then the one in ~/.config/rox.sourceforge.net/MIME-types takes precedence (i.e. ROX seems to look there first). The right-click Set Run Action mechanism thus provides a convenient means of quickly (permanently or temporarily) over-riding a previously set up default mime handler (in ~/Choices/MIME-types) for a given file type.

6. That is it!

Now any file with the extension .tmd should be recognised as having MIME type application/x-tmd. [Right clicking on the file icon and selecting Properties shows you the mime type the file is being recognised as].

The appropriate Linux TextMaker application should thus be automatically opened on clicking the .tmd file icon.

[Note, however, that you may need to close the ROX window and reopen it before clicking on the app icon after first doing all the above; I can't remember. I certainly did not need to reboot though].

For a more complicated example, involving two MS applications running over wine, see this post/thread here: http://www.murga-linux.com/puppy/viewtopic.php?p=363429#363429

As forum member davids45 comments in the above "wine-user" related thread:


""AppDirs"" on ROX desktop - in Puppy AppDirs are only used for file associations rather than containing the whole apps
There are no comments on this page.
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki