PrimLink's most powerful feature is in its use of your Second Life Inventory as a single data source; it reads all of its information from your inventory.
Once an item has a subfolder with the name #primlink, it's ready to be registered!
And if you choose to leave PrimLink, there's no data export to consider! You already have all of your data organized by item in Second Life.
Setting up RLV
In order to let the PrimLink Bridge HUD read your inventory, you'll need to use RLV.
tl;dr - RLV is a Second Life extension that allows software limited access and control over your avatar and inventory. It is mostly used to wear/remove items, play animations, or move the avatar.
RLV is available in third-party Second Life viewers, but it's not available in all of them.
See the documentation for your preferred viewer on how to enable it.
In Firestorm (as of v7.2.3), it can be found under:
Preferences > Firestorm > Extras > "Allow Remote Scripted Viewer Controls (RLVa)"
Sometimes, enabling RLV is gated as an "Advanced" option.
Marking an Inventory Item for Use
PrimLink only reads things it's supposed to! It cannot and will not ingest your entire inventory, unless everything you own is flagged for usage with PrimLink.
Flagging an inventory item for use with PrimLink requires, at the very least, a folder inside of it with the name #primlink.
📁 #RLV
📁 PrimLink Outfitters - My Fave Outfit
👉 📁 #primlink
📁 HUD
📁 boots
📁 sweater
📁 pants
This structure would successfully register with the minimal values shown below.
Nothing needs to be inside of the #primlink folder.
And it won't break if anything is placed inside of it.
It just needs to exist, so PrimLink can find it!
And there's no* limit to the number of inventory items you register with PrimLink!
*- The limit for any user is unreasonably high. If you hit it, reach out to discuss!
Organization
By virtue of the limitations imposed by LSL and RLV, the only things HUD scripts can read out of your inventory are folder names in the #RLV directory.
As such, there's a specific way you're expected to organize your inventory.
Anything you'd like to be addressed as a unit to "wear" should be collected into a folder.
PrimLink only sees folders that live at the same level as the #primlink folder.
📁 #RLV
📁 PrimLink Outfitters - My Fave Outfit
📁 #primlink
👉 📁 HUD
📦 My Fave Outfit HUD
👉 📁 boots
📦 My Fave Boots
👠 Boots Layer
👉 📁 sweater
📦 My Fave Sweater
👕 Alpha Layer
👉 📁 pants
📦 My Fave Jeans
Grouping your items this way will define the smallest units of "wearable" items you will be able to control through PrimLink.
Invalid Folder Names
Avoid using a slash / or a comma , in any folder name.
Second Life uses slashes / to describe folder hierarchies.
You may find broken records and integrations if you include these symbols in any folder names.
Avoid unintentionally prefixing folder names with periods . and hashtags #.
These symbols have intentional meaning when used as a prefix, and they will be ignored as subfolders under your inventory item. It's a good way to stash and hide things semi-related to your inventory item, when you don't want it to be shown outside of your inventory, though!
Special Folder Names
Suffixing a subfolder with (nostrip) keeps it from being removed.
RLV already has plenty of conventions and controls built in.
Adding the suffix (nostrip) will automatically stop any RLV command from taking it off; PrimLink will work the same way! You can still control it manually in the viewer, though.
Tagging
Adding tags to an inventory item, again, requires a folder with a special name.
It should live at the same level as the #primlink folder.
Prefixed with #tags, the name of this folder should be followed with space-delimited tags, where each element is another tag!
That means ANY use of spaces will be considered to mean "there is a new tag after this".
Second Life limits the length of a folder name to 63 characters, and you may have a lot of tags you'd like to include!
You can create several #tags folders in one inventory item
#RLV
📁 PrimLink Outfitters - My Fave Outfit
📁 #primlink
👉 📁 #tags clothing top bottoms shoes
👉 📁 #tags overflow-tags go_in another foldername
📁 HUD
📁 boots
📁 sweater
📁 pants
Configuration
The #primlink folder is truly the minimum requirement to register an item into PrimLink.
However, there's plenty of options which may be included in the #primlink folder as subfolders.
#RLV
📁 PrimLink Outfitters - My Fave Outfit
📁 #primlink
👉 📁 #creator.uuid=e03b8af7-191d-4ee2-84bf-644010445dfb
👉 📁 #image.gyazo=8e8da6b5834c0bc8e13b47a70396bc85
📁 #tags clothing top bottoms shoes
📁 HUD
📁 boots
📁 sweater
📁 pants
Adding this extra information allows PrimLink to enhance your inventory item with extra flair, like linkage to the creator's social links, or adding an image to the item. The inventory item described above would yield the following:
Some of the extra configuration adjusts functionality. You can hide some items from most viewers, or you opt to turn off subfolder support for that item.
Use these keys as subfolder names inside #primlink to add structured metadata to an item.
They are listed below in priority order, where identifying information which appears redundant to others may be ignored by PrimLink if there is a higher priority item provided.
Configuration Options
For any items with the same prefix, like creator, only one configuration setting is required.
| Key | Usage |
|---|---|
#creator.uuid | the Avatar UUID listed as the store owner on the SL Marketplace |
#creator.name | the name of the store as is listed on the SL Marketplace |
#creator.store | the ID of the store as is found on the SL Marketplace, which can be found in the URL of the store page (e.g. https://marketplace.secondlife.com/stores/1234567, where 1234567 is the store ID) |
#image.uuid | the SL UUID of the image to be used as the thumbnail |
#image.gyazo | the Gyazo ID of the image to be used as the thumbnail, which can be found in the URL of the image page (e.g. https://gyazo.com/abcdef1234567890, where abcdef1234567890 is the Gyazo ID) |
#subfolders.visible | whether ordinary item subfolders should be shown as wearable controls (true or false, default true) |
#hidden | the boolean value indicating whether the store should be hidden from default searches (true or false, default false) |