[mythtv-users] OS X icon question...

Chuck Rice chuck at wildrice.com
Sat Dec 4 00:36:38 UTC 2004


At 3:25 PM -0600 12/3/04, Calvin Gorriaran wrote:
>I have a stupid OS X question. I have compiled mythfrontend on my 
>powerbook. Works perfect, though I
>am still trying to get mythvideo compiled. One issue I have is I 
>can't seem to make an icon for it. I
>have tried making a symbolic link to it in the Applications folder. 
>I tried setting "Keep in Dock"
>after launching from the command line. I have tried copying the 
>mythfrontend.app folder to the
>applications folder. Nothing seems to work. I have am long time BSD 
>user but just in the last year
>switched to OS X for my personal desktop. Can anyone clue me in?

The Mac stores applications in bundles. An application bundle is a 
special folder that the operating system knows about. The operating 
system presents the bundled application as a single file, but really 
it is a folder that has some specific structure, but that can contain 
additional items. Normal use treats this special application bundle 
as a single file so finder copies look like you are copying (or could 
be another action) a single file when in fact you are processing the 
entire application folder structure.

To look at the application folder, you have to open it a special way 
that tells the operating system to "Really open it". This is done by 
clicking on the application with the control key held down (or right 
clicking if you use a two button mouse) and selecting "show package 
contents". When you do this, a new finder window window will open and 
you will see the contents of the application.

So, how does this relate to the question? The icon for the 
application is stored in a subfolder of the application bundle. so, 
if you look in:

    myprog.app->Contents->Resources

You will see that the resources folder contains the resource files 
for the application. Normally the icon for the application will be in 
there. To know for sure, you need to back up on folder. The Contents 
folder, in addition to containing the Resource folder and other stuff 
will contain a file called info.plist. This is an XML file. The 
contents are stored in Key/Value pairs.  For example, the 
AddressBook.app info.plist file is shown below. If you look, you will 
see:

	<key>CFBundleIconFile</key>
	<string>AddressBook.icns</string>

This defines the icon name that will be shown.

Things are a bit more complicated, and I am running up to the limit 
of my understanding, but that should get you started.

Normally, if you are using XCODE, Apple's development environment, 
the GUI IDE takes care of setting things up so you do not have to 
worry about the XML or the format of the application bundle.

Poke around a bit and do some searches on the apple developer site 
and you will get the nitty-gritty.

Note that as a cool related item, when you open a DVD VIDEO_TS 
folder, you see all the ugly files contained within. What I did was 
set up a new extension ".vts" and then I renamed the video_ts folder 
to the "name-of-the-movie.vts". Because I defined ".vts" as a bundled 
folder and gave it an icon, the ".vts" gets hidden, the folder turns 
in to what looks like a single file, it has an icon that looks like a 
movie camera, and you can double click on it to run it and view it. 
In addition I pulled the XML for the movie down from Amazon and 
stored it in the bundle so the related movie info for the movie is 
always contained in the same bundle.  To fiew the show, all you need 
to do is double click on the movie name and it will open and play the 
show! Bundles are a good thing to know about. Wish Linux had them. 
-Chuck-




<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" 
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>CFBundleDevelopmentRegion</key>
	<string>English</string>
	<key>CFBundleDocumentTypes</key>
	<array>
		<dict>
			<key>CFBundleTypeExtensions</key>
			<array>
				<string>abcdg</string>
			</array>
			<key>CFBundleTypeIconFile</key>
			<string>vCard.icns</string>
			<key>CFBundleTypeName</key>
			<string>Address Book Group Data</string>
			<key>CFBundleTypeRole</key>
			<string>Viewer</string>
			<key>LSIsAppleDefaultForType</key>
			<true/>
		</dict>
		<dict>
			<key>CFBundleTypeExtensions</key>
			<array>
				<string>abcdp</string>
			</array>
			<key>CFBundleTypeIconFile</key>
			<string>vCard.icns</string>
			<key>CFBundleTypeName</key>
			<string>Address Book Person Data</string>
			<key>CFBundleTypeRole</key>
			<string>Viewer</string>
			<key>LSIsAppleDefaultForType</key>
			<true/>
		</dict>
		<dict>
			<key>CFBundleTypeExtensions</key>
			<array>
				<string>vcf</string>
				<string>vcard</string>
			</array>
			<key>CFBundleTypeIconFile</key>
			<string>vCard.icns</string>
			<key>CFBundleTypeMIMETypes</key>
			<array>
				<string>text/vcard</string>
				<string>text/directory</string>
				<string>text/x-vcard</string>
			</array>
			<key>CFBundleTypeName</key>
			<string>VCard</string>
			<key>CFBundleTypeRole</key>
			<string>Viewer</string>
			<key>LSIsAppleDefaultForType</key>
			<true/>
		</dict>
		<dict>
			<key>CFBundleTypeExtensions</key>
			<array>
				<string>ldif</string>
				<string>ldi</string>
			</array>
			<key>CFBundleTypeIconFile</key>
			<string>LDIF.icns</string>
			<key>CFBundleTypeName</key>
			<string>LDIF</string>
			<key>CFBundleTypeRole</key>
			<string>Viewer</string>
		</dict>
		<dict>
			<key>CFBundleTypeName</key>
			<string>Folder</string>
			<key>CFBundleTypeOSTypes</key>
			<array>
				<string>fold</string>
			</array>
			<key>CFBundleTypeRole</key>
			<string>Viewer</string>
		</dict>
		<dict>
			<key>CFBundleTypeExtensions</key>
			<array>
				<string>abbu</string>
			</array>
			<key>CFBundleTypeIconFile</key>
			<string>backup.icns</string>
			<key>CFBundleTypeName</key>
			<string>BackupFile</string>
			<key>CFBundleTypeRole</key>
			<string>Editor</string>
			<key>LSTypeIsPackage</key>
			<true/>
		</dict>
		<dict>
			<key>CFBundleTypeExtensions</key>
			<array>
				<string>abcdg</string>
				<string>abcdp</string>
			</array>
			<key>CFBundleTypeIconFile</key>
			<string>vCard.tiff</string>
			<key>CFBundleTypeName</key>
			<string>Address Book Card Data</string>
			<key>CFBundleTypeRole</key>
			<string>Viewer</string>
			<key>LSIsAppleDefaultForType</key>
			<true/>
			<key>LSTypeIsPackage</key>
			<false/>
		</dict>
	</array>
	<key>CFBundleExecutable</key>
	<string>Address Book</string>
	<key>CFBundleGetInfoString</key>
	<string>4.0, Copyright Apple Computer Inc. 2002-2005</string>
	<key>CFBundleHelpBookFolder</key>
	<string>AddressBookHelp</string>
	<key>CFBundleIconFile</key>
	<string>AddressBook.icns</string>
	<key>CFBundleIdentifier</key>
	<string>com.apple.AddressBook</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>Address Book</string>
	<key>CFBundlePackageType</key>
	<string>APPL</string>
	<key>CFBundleShortVersionString</key>
	<string>4.0</string>
	<key>CFBundleSignature</key>
	<string>adrb</string>
	<key>CFBundleURLTypes</key>
	<array>
		<dict>
			<key>CFBundleURLName</key>
			<string>Address Book URL</string>
			<key>CFBundleURLSchemes</key>
			<array>
				<string>addressbook</string>
			</array>
		</dict>
	</array>
	<key>CFBundleVersion</key>
	<string>426</string>
	<key>LSHasLocalizedDisplayName</key>
	<true/>
	<key>NSAppleScriptEnabled</key>
	<string>YES</string>
	<key>NSMainNibFile</key>
	<string>MainMenu</string>
	<key>NSPrincipalClass</key>
	<string>ABApplication</string>
	<key>UTExportedTypeDeclarations</key>
	<array>
		<dict>
			<key>UTTypeConformsTo</key>
			<array>
				<string>public.data</string>
				<string>public.contact</string>
			</array>
			<key>UTTypeDescription</key>
			<string>Address Book Person Data</string>
			<key>UTTypeIdentifier</key>
			<string>com.apple.addressbook.person</string>
			<key>UTTypeTagSpecification</key>
			<dict>
				<key>com.apple.ostype</key>
				<string>ABPR</string>
				<key>public.filename-extension</key>
				<string>abcdp</string>
			</dict>
		</dict>
		<dict>
			<key>UTTypeConformsTo</key>
			<array>
				<string>public.data</string>
			</array>
			<key>UTTypeDescription</key>
			<string>Address Book Group Data</string>
			<key>UTTypeIdentifier</key>
			<string>com.apple.addressbook.group</string>
			<key>UTTypeTagSpecification</key>
			<dict>
				<key>com.apple.ostype</key>
				<string>ABGR</string>
				<key>public.filename-extension</key>
				<string>abcdg</string>
			</dict>
		</dict>
	</array>
</dict>
</plist>



More information about the mythtv-users mailing list