2026-04-03 16:11:51 +08:00
|
|
|
# ======== Generic Settings ========
|
|
|
|
|
|
|
|
|
|
# Identifier is used as an unique token for your program.
|
|
|
|
|
# Please choose it carefully to avoid any name conflict.
|
|
|
|
|
#
|
|
|
|
|
# The value of identifier should only contain alphabet chars and digits,
|
|
|
|
|
# and digits should not be the first char (like C variable naming convention).
|
|
|
|
|
#
|
|
|
|
|
# For technical details, this identifier is used as the "vendor" part of ProgId.
|
2026-04-12 14:54:43 +08:00
|
|
|
identifier = "PineapplePicture"
|
2026-04-03 16:11:51 +08:00
|
|
|
|
|
|
|
|
# The fully qualified path to the application.
|
|
|
|
|
#
|
|
|
|
|
# A fully qualified path or absolute path always defines an exact path
|
|
|
|
|
# from a particular drive or device to a target file or directory,
|
|
|
|
|
# and does not depend on the current drive or current directory.
|
|
|
|
|
#
|
|
|
|
|
# Considering Windows use back-slash as path splittor,
|
|
|
|
|
# which is frequently used as escape char in string syntax,
|
|
|
|
|
# you can utilize "literal strings" syntax in this TOML file
|
|
|
|
|
# to quickly write this path as this example following does.
|
2026-04-12 14:54:43 +08:00
|
|
|
path = 'C:\path\to\ppic.exe'
|
2026-04-03 16:11:51 +08:00
|
|
|
|
|
|
|
|
# CLSID is an unique UUID or GUID of your program,
|
|
|
|
|
# which makes your program is different with others.
|
|
|
|
|
#
|
|
|
|
|
# Although this key is not used now,
|
|
|
|
|
# I still suggest that generate an unique one for it.
|
|
|
|
|
clsid = "{B5291320-FE7C-4069-BF87-A0AC327FCD20}"
|
|
|
|
|
|
|
|
|
|
# The friendly name of this program.
|
|
|
|
|
#
|
|
|
|
|
# The value of this key should be available in "strs" list as the key.
|
|
|
|
|
#
|
|
|
|
|
# This key is optional. If you don't fill this key,
|
|
|
|
|
# Windows will use your executable embedded Win32 resources for friendly name.
|
2026-06-25 15:27:41 +08:00
|
|
|
name = "self"
|
2026-04-03 16:11:51 +08:00
|
|
|
|
|
|
|
|
# The icon of this program.
|
|
|
|
|
#
|
|
|
|
|
# The value of this key should be available in "icons" list as the key.
|
|
|
|
|
#
|
|
|
|
|
# This key is optional. If you don't fill this key,
|
|
|
|
|
# Windows will use the first icon embedded in your executable as icon.
|
2026-06-25 15:27:41 +08:00
|
|
|
icon = "self"
|
2026-04-03 16:11:51 +08:00
|
|
|
|
|
|
|
|
# The default behavior of your program.
|
|
|
|
|
#
|
|
|
|
|
# The value of this key should be available in "behaviors" list as the key.
|
|
|
|
|
#
|
|
|
|
|
# This key is optional. If you don't fill this key,
|
|
|
|
|
# Windows will directly call your executable and passes the file name on the command line.
|
|
|
|
|
# If your executable need extra options, like `program.exe --file file.rs`,
|
|
|
|
|
# this key is essential for you.
|
|
|
|
|
behavior = "generic"
|
|
|
|
|
|
|
|
|
|
# ======== String Resources ========
|
|
|
|
|
|
|
|
|
|
# "strs" list include all possible used strings in this manifest file.
|
|
|
|
|
[strs]
|
|
|
|
|
|
|
|
|
|
# For each entry located in this list,
|
|
|
|
|
# its key is the token for referring them, and its value is the true resource.
|
|
|
|
|
#
|
|
|
|
|
# The value of this key is a valid "Program String Resource String" like following example does.
|
|
|
|
|
# When we talk about "Program String Resource String",
|
|
|
|
|
# it is a string pointing to a string resources located inside program Win32 resources.
|
|
|
|
|
# It has a specific pattern which show in following example and is familiar with Win32 programmer.
|
|
|
|
|
#
|
|
|
|
|
# Due to the same use of back-slash in path part,
|
|
|
|
|
# you can utilize TOML "literal strings" syntax to write this value easier.
|
2026-06-25 15:27:41 +08:00
|
|
|
# self = '@C:\path\to\ppic.exe,-1001'
|
2026-04-03 16:11:51 +08:00
|
|
|
|
|
|
|
|
# The value of this key also can be a plain string like this commente statement,
|
|
|
|
|
# if you don't want to touch Win32 resources and your program do not have any I18N requirements.
|
2026-06-25 15:27:41 +08:00
|
|
|
self = "Pineapple Pictures"
|
2026-04-03 16:11:51 +08:00
|
|
|
|
|
|
|
|
# And more string resources...
|
2026-06-25 15:27:41 +08:00
|
|
|
jpeg = 'JPEG Image'
|
|
|
|
|
gif = 'GIF Animation Image'
|
|
|
|
|
png = 'PNG Image'
|
|
|
|
|
svg = 'Scalable Vector Graphics'
|
|
|
|
|
webp = 'WebP Image'
|
|
|
|
|
avif = 'AV1 Image File'
|
|
|
|
|
ico = 'Windows Icon Image'
|
|
|
|
|
icns = 'Apple Icon Image'
|
|
|
|
|
psd = 'Photoshop Document'
|
|
|
|
|
kra = 'Krita Document'
|
|
|
|
|
xcf = 'GIMP Document'
|
|
|
|
|
tga = 'TARGA Image'
|
|
|
|
|
tif = 'Tagged Image File Format'
|
|
|
|
|
bmp = 'Bitmap'
|
|
|
|
|
wbmp = 'Wireless Bitmap'
|
|
|
|
|
dds = 'DirectDraw Surface'
|
|
|
|
|
hdr = 'High Dynamic Range Image'
|
|
|
|
|
iff = 'Interchange File Format'
|
|
|
|
|
pic = 'Softimage Picture'
|
|
|
|
|
pcx = 'PiCture eXchange PC Paintbrush Image'
|
|
|
|
|
qoi = 'Quite OK Image'
|
|
|
|
|
ras = 'Sun Raster Image'
|
|
|
|
|
ora = 'OpenRaster Image'
|
|
|
|
|
ani = 'Animated Cursor'
|
|
|
|
|
pfm = 'Portable Float Map'
|
|
|
|
|
rgb = 'Silicon Graphics Image'
|
|
|
|
|
pxr = 'Pixar Raster Image'
|
|
|
|
|
sct = 'Scitex Continuous Tone'
|
2026-04-03 16:11:51 +08:00
|
|
|
|
|
|
|
|
# ======== Icon Resources ========
|
|
|
|
|
|
|
|
|
|
# "icons" list include all possible used icons in this manifest file.
|
|
|
|
|
#
|
|
|
|
|
# Another small hint is that if you just want a single icon for all file associations,
|
|
|
|
|
# you can just create one entry and refer it in every entries located in extension list.
|
|
|
|
|
[icons]
|
|
|
|
|
|
|
|
|
|
# For each entry located in this list,
|
|
|
|
|
# its key is the token for referring them, and its value is the true resource.
|
|
|
|
|
#
|
|
|
|
|
# The value of this key is a valid "Program Icon Resource String" like following example does.
|
|
|
|
|
# When we talk about "Program Icon Resource String",
|
|
|
|
|
# it is a string pointing to a icon resources located inside program Win32 resources.
|
|
|
|
|
# It has a specific pattern which show in following example and is familiar with Win32 programmer.
|
|
|
|
|
#
|
|
|
|
|
# Due to the same use of back-slash in path part,
|
|
|
|
|
# you can utilize TOML "literal strings" syntax to write this value easier.
|
2026-06-25 15:27:41 +08:00
|
|
|
self = 'C:\path\to\ppic.exe,0'
|
2026-04-03 16:11:51 +08:00
|
|
|
|
|
|
|
|
# The value of this key also can be the absolute path to existing icon file like this commente statement.
|
2026-06-25 15:27:41 +08:00
|
|
|
generic = 'C:\path\to\ppic\icons\generic.ico'
|
2026-04-03 16:11:51 +08:00
|
|
|
|
|
|
|
|
# Add more icon resources...
|
2026-06-25 15:27:41 +08:00
|
|
|
gif = 'C:\path\to\ppic\icons\gif.ico'
|
|
|
|
|
jpeg = 'C:\path\to\ppic\icons\jpeg.ico'
|
|
|
|
|
png = 'C:\path\to\ppic\icons\png.ico'
|
|
|
|
|
psd = 'C:\path\to\ppic\icons\psd.ico'
|
|
|
|
|
svg = 'C:\path\to\ppic\icons\svg.ico'
|
2026-04-03 16:11:51 +08:00
|
|
|
|
|
|
|
|
# ======== Behaviors Collection ========
|
|
|
|
|
|
|
|
|
|
# "behaviors" list include all ways to open with your software in this manifest file.
|
|
|
|
|
#
|
|
|
|
|
# For the way to open with your program, let we have an example.
|
|
|
|
|
# If your program order you use `program.exe --solution solution.toml` to open solution file,
|
|
|
|
|
# and use `program.exe --file file.rs` to open code file respectively,
|
|
|
|
|
# you must define two seperated "behaviors" describe this difference ways to open file.
|
|
|
|
|
# That's the work this list done.
|
|
|
|
|
#
|
|
|
|
|
# In addition, if your program only have one way to open file,
|
|
|
|
|
# please leave one entry and use it everywhere without any doubt.
|
|
|
|
|
[behaviors]
|
|
|
|
|
|
|
|
|
|
# For each entry located in this list,
|
|
|
|
|
# its key is the token for referring them,
|
|
|
|
|
# and its value is the command line for running your program.
|
|
|
|
|
#
|
|
|
|
|
# Please note that currently wfassoc will not validate this property properly,
|
|
|
|
|
# because there is no criteria for it. Please write them carefully.
|
|
|
|
|
# For the maning of place holder like "%1", please check out Microsoft document.
|
|
|
|
|
#
|
|
|
|
|
# Due to the same use of back-slash in value,
|
|
|
|
|
# you can utilize TOML "literal strings" syntax to write this value easier.
|
2026-04-12 14:54:43 +08:00
|
|
|
generic = '"C:\path\to\ppic.exe" "%1"'
|
2026-04-03 16:11:51 +08:00
|
|
|
|
|
|
|
|
# ======== File Extensions ========
|
|
|
|
|
|
|
|
|
|
# "exts" list includeall potential file extensions related with this program,
|
|
|
|
|
# and the corresponding name, behavior and icon of them.
|
|
|
|
|
[exts]
|
|
|
|
|
|
|
|
|
|
# In this case, we start to define ".jpg" file extension.
|
|
|
|
|
[exts.jpg]
|
|
|
|
|
# First, we specify its name shown in Windows Explorer.
|
|
|
|
|
# The value of this field is the token declared above in "strs" list.
|
2026-06-25 15:27:41 +08:00
|
|
|
name = "jpeg"
|
2026-04-03 16:11:51 +08:00
|
|
|
# Then, speficy its associated icon.
|
|
|
|
|
# The value of this field is the token declared above in "icons" list.
|
2026-06-25 15:27:41 +08:00
|
|
|
icon = "jpeg"
|
2026-04-03 16:11:51 +08:00
|
|
|
# At last, specify the behavior of this extension define decide how we open this file.
|
|
|
|
|
# The value of this field is the token declared above in "behaviors" list.
|
|
|
|
|
behavior = "generic"
|
|
|
|
|
|
|
|
|
|
# And more file extensions...
|
2026-06-25 15:27:41 +08:00
|
|
|
[exts.jpeg]
|
|
|
|
|
name = "jpeg"
|
|
|
|
|
icon = "jpeg"
|
|
|
|
|
behavior = "generic"
|
2026-04-03 16:11:51 +08:00
|
|
|
[exts.jfif]
|
2026-06-25 15:27:41 +08:00
|
|
|
name = "jpeg"
|
|
|
|
|
icon = "jpeg"
|
2026-04-03 16:11:51 +08:00
|
|
|
behavior = "generic"
|
2026-06-25 15:27:41 +08:00
|
|
|
|
2026-04-03 16:11:51 +08:00
|
|
|
[exts.gif]
|
|
|
|
|
name = "gif"
|
|
|
|
|
icon = "gif"
|
|
|
|
|
behavior = "generic"
|
2026-06-25 15:27:41 +08:00
|
|
|
|
2026-04-03 16:11:51 +08:00
|
|
|
[exts.png]
|
|
|
|
|
name = "png"
|
|
|
|
|
icon = "png"
|
|
|
|
|
behavior = "generic"
|
2026-06-25 15:27:41 +08:00
|
|
|
|
|
|
|
|
[exts.svg]
|
|
|
|
|
name = "svg"
|
|
|
|
|
icon = "svg"
|
|
|
|
|
behavior = "generic"
|
|
|
|
|
|
|
|
|
|
[exts.webp]
|
|
|
|
|
name = "webp"
|
|
|
|
|
icon = "generic"
|
|
|
|
|
behavior = "generic"
|
|
|
|
|
|
|
|
|
|
[exts.avif]
|
|
|
|
|
name = "avif"
|
|
|
|
|
icon = "generic"
|
|
|
|
|
behavior = "generic"
|
|
|
|
|
|
2026-04-03 16:11:51 +08:00
|
|
|
[exts.ico]
|
|
|
|
|
name = "ico"
|
2026-06-25 15:27:41 +08:00
|
|
|
icon = "generic"
|
2026-04-03 16:11:51 +08:00
|
|
|
behavior = "generic"
|
2026-06-25 15:27:41 +08:00
|
|
|
|
|
|
|
|
[exts.icns]
|
|
|
|
|
name = "icns"
|
|
|
|
|
icon = "generic"
|
2026-04-03 16:11:51 +08:00
|
|
|
behavior = "generic"
|
2026-06-25 15:27:41 +08:00
|
|
|
|
|
|
|
|
[exts.psd]
|
|
|
|
|
name = "psd"
|
|
|
|
|
icon = "psd"
|
2026-04-03 16:11:51 +08:00
|
|
|
behavior = "generic"
|
2026-06-25 15:27:41 +08:00
|
|
|
[exts.psb]
|
|
|
|
|
name = "psd"
|
|
|
|
|
icon = "psd"
|
2026-04-03 16:11:51 +08:00
|
|
|
behavior = "generic"
|
2026-06-25 15:27:41 +08:00
|
|
|
[exts.pdd]
|
|
|
|
|
name = "psd"
|
|
|
|
|
icon = "psd"
|
2026-04-03 16:11:51 +08:00
|
|
|
behavior = "generic"
|
2026-06-25 15:27:41 +08:00
|
|
|
[exts.psdt]
|
|
|
|
|
name = "psd"
|
|
|
|
|
icon = "psd"
|
2026-04-03 16:11:51 +08:00
|
|
|
behavior = "generic"
|
2026-06-25 15:27:41 +08:00
|
|
|
|
2026-04-03 16:11:51 +08:00
|
|
|
[exts.kra]
|
|
|
|
|
name = "kra"
|
2026-06-25 15:27:41 +08:00
|
|
|
icon = "generic"
|
2026-04-03 16:11:51 +08:00
|
|
|
behavior = "generic"
|
2026-06-25 15:27:41 +08:00
|
|
|
|
2026-04-03 16:11:51 +08:00
|
|
|
[exts.xcf]
|
|
|
|
|
name = "xcf"
|
2026-06-25 15:27:41 +08:00
|
|
|
icon = "generic"
|
2026-04-03 16:11:51 +08:00
|
|
|
behavior = "generic"
|
2026-06-25 15:27:41 +08:00
|
|
|
|
|
|
|
|
[exts.tga]
|
|
|
|
|
name = "tga"
|
|
|
|
|
icon = "generic"
|
2026-04-03 16:11:51 +08:00
|
|
|
behavior = "generic"
|
2026-06-25 15:27:41 +08:00
|
|
|
|
|
|
|
|
[exts.tif]
|
|
|
|
|
name = "tif"
|
|
|
|
|
icon = "generic"
|
|
|
|
|
behavior = "generic"
|
|
|
|
|
[exts.tiff]
|
|
|
|
|
name = "tif"
|
|
|
|
|
icon = "generic"
|
|
|
|
|
behavior = "generic"
|
|
|
|
|
|
|
|
|
|
[exts.bmp]
|
|
|
|
|
name = "bmp"
|
|
|
|
|
icon = "generic"
|
|
|
|
|
behavior = "generic"
|
|
|
|
|
|
|
|
|
|
[exts.wbmp]
|
|
|
|
|
name = "wbmp"
|
|
|
|
|
icon = "generic"
|
|
|
|
|
behavior = "generic"
|
|
|
|
|
|
|
|
|
|
[exts.dds]
|
|
|
|
|
name = "dds"
|
|
|
|
|
icon = "generic"
|
|
|
|
|
behavior = "generic"
|
|
|
|
|
|
|
|
|
|
[exts.hdr]
|
|
|
|
|
name = "hdr"
|
|
|
|
|
icon = "generic"
|
|
|
|
|
behavior = "generic"
|
|
|
|
|
|
|
|
|
|
[exts.iff]
|
|
|
|
|
name = "iff"
|
|
|
|
|
icon = "generic"
|
|
|
|
|
behavior = "generic"
|
|
|
|
|
|
|
|
|
|
[exts.pic]
|
|
|
|
|
name = "pic"
|
|
|
|
|
icon = "generic"
|
|
|
|
|
behavior = "generic"
|
|
|
|
|
|
|
|
|
|
[exts.pcx]
|
|
|
|
|
name = "pcx"
|
|
|
|
|
icon = "generic"
|
|
|
|
|
behavior = "generic"
|
|
|
|
|
|
2026-04-03 16:11:51 +08:00
|
|
|
[exts.qoi]
|
|
|
|
|
name = "qoi"
|
2026-06-25 15:27:41 +08:00
|
|
|
icon = "generic"
|
2026-04-03 16:11:51 +08:00
|
|
|
behavior = "generic"
|
2026-06-25 15:27:41 +08:00
|
|
|
|
|
|
|
|
[exts.ras]
|
|
|
|
|
name = "ras"
|
|
|
|
|
icon = "generic"
|
|
|
|
|
behavior = "generic"
|
|
|
|
|
[exts.sun]
|
|
|
|
|
name = "ras"
|
|
|
|
|
icon = "generic"
|
|
|
|
|
behavior = "generic"
|
|
|
|
|
|
|
|
|
|
[exts.ora]
|
|
|
|
|
name = "ora"
|
|
|
|
|
icon = "generic"
|
|
|
|
|
behavior = "generic"
|
|
|
|
|
|
|
|
|
|
[exts.ani]
|
|
|
|
|
name = "ani"
|
|
|
|
|
icon = "generic"
|
|
|
|
|
behavior = "generic"
|
|
|
|
|
|
|
|
|
|
[exts.pfm]
|
|
|
|
|
name = "pfm"
|
|
|
|
|
icon = "generic"
|
|
|
|
|
behavior = "generic"
|
|
|
|
|
[exts.phm]
|
|
|
|
|
name = "pfm"
|
|
|
|
|
icon = "generic"
|
|
|
|
|
behavior = "generic"
|
|
|
|
|
|
|
|
|
|
[exts.rgb]
|
|
|
|
|
name = "rgb"
|
|
|
|
|
icon = "generic"
|
|
|
|
|
behavior = "generic"
|
|
|
|
|
[exts.rgba]
|
|
|
|
|
name = "rgb"
|
|
|
|
|
icon = "generic"
|
2026-04-03 16:11:51 +08:00
|
|
|
behavior = "generic"
|
2026-06-25 15:27:41 +08:00
|
|
|
[exts.bw]
|
|
|
|
|
name = "rgb"
|
|
|
|
|
icon = "generic"
|
|
|
|
|
behavior = "generic"
|
|
|
|
|
[exts.sgi]
|
|
|
|
|
name = "rgb"
|
|
|
|
|
icon = "generic"
|
|
|
|
|
behavior = "generic"
|
|
|
|
|
|
|
|
|
|
[exts.pxr]
|
|
|
|
|
name = "pxr"
|
|
|
|
|
icon = "generic"
|
|
|
|
|
behavior = "generic"
|
|
|
|
|
|
|
|
|
|
[exts.sct]
|
|
|
|
|
name = "sct"
|
|
|
|
|
icon = "generic"
|
2026-04-03 16:11:51 +08:00
|
|
|
behavior = "generic"
|