Photoshop Scripts

Note Most Photoshop Scripts will require the PS7 scripting update:

openAllinPS.js a very simple script to open all in Folder in PS. put this in C:\Program Files\Adobe\Photoshop 7.0\Presets\Scripts. in script change myfolder line to yours. in PS file>automate>scripts, select this file openAllinPS.js
gdcMyAction.exe runs a PS action called "myAction" on all files in selected directory and saves them in new folder, same directory gdcMyAction.exe

Houdini Tutorials

Beginner CopyOp stamping

here's a nice Review of it by David Rindner:"To put it mildly, I don't get it. I don't understand this tutorial at all. Makes no sense to me whatsoever. I tried to match his settings, but its not working at all. Completely muddy. "

Mikes private and temp Houdini tutorial to convert audio waveform to dxf

XSI Scripts Shaders and Tutorials

View just this page so its fits in netview better

Note Most Photoshop Scripts for XSI will require the PS7 scripting update:

XSI custom layouts at bottom of page

General XSI Links In resources section here in left frame, under 3D>software>XSI, there are links to lots of others XSI tutorials, scripts etc for XSI
OOs Mixer Ascii Data Script modified This is OOs Mixer Ascii Data Script modified just a little so that it works in newer versions and fixes issues with track weights etc not being included. internal link only.
XSI wishlist part 1 XSI wishlist part 1
XSI wishlist part 2 XSI wishlist part 2
XSI wishlist part 3 XSI wishlist part 3
addNullParent animators most FAQ so they can start with zeroed transforms. addnullparent
Simulation > RBDtools Some very basic RBD tools. Does not include adjustments to ODE, or physics scripts such as inertia, others etc. not ready or available for public consumption.
  • deleteAllRBDandForceProperties
  • RemoveAllRBsFromCurrentEnvironment
  • RemoveAllCNSFromCurrentEnvironment
  • RemoveAllForcesFromCurrentEnvironment
  • deleteAllEnvironments
  • 40 others etc...
simulation.vbs to fix "save cache to mixer" not working with objects under models.
Note in this verison all objects of the environment saving a cache to mixer for, must be under the same model.
Note to save clip in mixer, flag on both "AddaAction2SlectedModlesMixer" and "AddClip2SelectedModelsMixer"
' Installation: Backup your old simulation.vbs file and copy this one to x:\Softimage\XSI_4.0\Application\DSScripts
' I assume no responsibility for lost work, minds or children due to the use of this modified version.
' Use at your own risk. simulationvbs
XSIGUI netviewpage < open this link in xsi netview (rebuilt for version4, addon not updated from version 3 yet)


Note: addons and plugins etc. from here up created with XSI 4. so they will likely not work with previous versions. Many tools below are useless now and included in alternative ways in XSI4 (such as multitple script views, and genrator ops with options for deletion of source etc.)
models2nulls was included in Instances2DupesNullsOrClones and ripped out for use on its own. models2nulls
Instances2DupesNullsOrClones with options for keeping hierarchy, animation, hiding or deleting the instances, clones or duplicates, models or nulls etc. Select the parent of hierarchy contatining instances, run script select options. Instances2DupesNullsOrClones
switchMaster switches instances master. select instance model, then master, run script switchMaster
fcrv2geo various scripts and scops to move data between fcurves and geometry position array. not as yet powerful as Houdinis geometry CHOP in my current understanding of XSIs OM as evalution of fcurves/channels at another frame if they are actively used or mixed is not yet possible, just afaik eval at another frame using static sources.
additonal instructions for null (similar steps for action) eg:
-select a polymesh cube, run geo2nullfcrv
-then select the same polymesh cube, add to selection the null, then under fcrv2geo SCCOP> click on the 2nd preset icon button, titled null2geo.
-under the polygonsh node of the cube, click on nullFcrv2geo scOP node and int he PPG that opens make the op active, and set its key if desired.
-select the null, and open or recycle an animation editor view. move some keys around and your polymesh cube will update.
Advantage, you can use various fcurve tools on it (current disadvantage you cannot mix this in the mixer as eval is scop illegal and only works on static fcurves anyway)
Note It negates previous modifiers in history stack as it uses positionarray. Keying active parameter of scop off will return geometry to previous state.
XSIFAQ: How to get distance between two objects
UV2UV ObjectBs selected projections UVs = ObjectAs selected projections UVs
in explorer under polymesh object A, under cluster, select a texture projection,
under polymesh object B, under cluster, select a texture projection
run script as in hit pretty icon button. UV2UV
UVanimate, via deformation, shape animation etc on stamped mesh

select projection, run script, open "UV" camera view, move points etc. UVanimate

ImportObjSequence importobjesequence
timetest test the time it takes for your code or function to evaluate. examples in vbs and js timetest
get Nearest Component selects nearest component of a poly object to another selected target object get Nearest Component
display Distance displays in viewports, the distance between two nulls/points on a curve. can be displayed as viewport "DisplayInfo" or Text object. snap or constrain nulls to objects/components or interactivley move nulls around to check distance. multiple display Distance controls can be made without conflict display Distance
GenOps DelSources Or Not create merge, subd, blend or multi object boolean with sources deleted.
  • MeshBlend -Source Deleted
  • MeshMerge -Source Deleted
  • Multi Boolean Difference -Source Deleted
  • Multi Boolean Intersection -Source Deleted
  • Multi Boolean Union -Source Deleted
these 3 do not delete their sources and remain persistent usign a hidden intermediate merge object:
select object A first then all other objects selected will be object B in Boolean.
  • Multi Non-Destructive Boolean Difference
  • Multi Non-Destructive Boolean Intersection
  • Multi Non-Destructive Boolean Union
to fix: error overlapping conributing meshes to objectB in Boolean cause Boolean engine to fail.
  • ExtractPolygons - Source Polys Deleted
  • ExtractPolygons -Source Polys Objects Deleted
  • ExtractPolygons -Source Polys Objects Deleted no center
  • Subdivision -Source Deleted
'//DANGER this script is destructive. it deletes the source objects,
'//I claim no responsibility for user lack of understanding in the use of this tool.
GenOps DelSources Or Not
getHard selects hard or creased component of each selected.
Get Hard will work even after a freeze or deletion!!!
I was pretty skeptical about it at first, after all, it just seemed too good to be true, but apparently the new IsHard and IsHardarray(hmmm?) and Crease Properties have real staying power. Thanks to SI for these new properties in 3.5.1 and the real, straight-forward information available in the docs. Please keep in mind that the results stated here are based purely on my personal experience. I've experienced their amazing results first-hand. Your results might vary. gethard
expression Compensation applies an expression on marked transforms of selected objects with compensation and applies a custom parameter set of parameter offset values to adjust or key, ie if on translate they retain their current position and equal translation of master object - offset of their respective positions expression Compensation


NOTE: addons from here up created with XSI 3.5.1. so they will likely not work with previous versions. A toolbar error was introduced with this version that may be related and resolved with XSI 4s release.
runScriptMenu displays a list of all scripts in folder defined in script to select and run. You need to modify the folder path if you prefer another. You may want to organize your scripts into folders of script types then modify this script for each folder and drag onto a toolbar. updated, now an addon with folder selection runScriptMenu
scriptview browse for files and open webpages to view in netview, or open scripts as text in netview to copy paste from to script editor or view them as reference with syntax highlighting and colour. *requires gvim to syntax colour highlight convert to html then it auto pops up in netview. goto d'n'd between netview text area and script editor or write notes into it and save. scriptview
instances2DuplicatesOrClones makes duplicates or clones of each instance of selected models and/or makes duplicates or clones of each selelected instances master with same transform animation and parent for that instance.

Version that maintains Hierarchy is now not available online. instances2DuplicatesOrClones.xsiaddon

samples2Components selects component (point, edge, or poly) of each selected sample.

select samples in 3d view or texture editor(with autosync on), then run one of the scripts in addon

-Note: after using one of the button commands to select a component, one can click on another one to switch to another component type, without having to go back to sample selection.

-NOTE*: If selecting samples/UVs in texture editor rather than 3d view, then one must sync, turn on autosync using buttons in toolbar, or in Texture Editor, Select>Auto Sync Selction or CTRL + Shift + F6

Feature or good bug: Choosing the Vertex polygon or Edge Selection Filter Button in Texture Editor will produce a different selection.

ie. in texture editor with edge selection filter on then selecting samples, running samp2edges will only select shared edges and thus edges outside, that is edges attached to one shared point/vertex, will not be selected, just inner and boundary edges. samples2Components

ClsEachComp Cluster each selected component individally. points, edges, polys clseachcomp
ClsEachSelPnt Cluster each selected point and name it after point & #ClsEachSelPnt
script language switch and pop up toggling. more user prefs constants can be found in manual. script language switch and pop up toggling
gMatchTransforms addtional netpage based tools for match transforms translation gMatchTransforms

netpage of gMatchTransforms, note only first command works in netview, if addon not installed

gdcMatchTransforms addon of various scripts for some missing or replacment commands for match transform. ie match transformation in center mode used a 2nd time does not work as expected in XSI. gdcMatchTransforms
XSIGUI netview example of automating XSI with javascript from a webpage within XSIs netview XSIGUI netview
XSIGUI netviewpage < open this link in xsi netview
component2Samples selects samples of selected poly, points or edges. Basic examples in js and vbs of case and switch component2Samples
handyMan is just another way to animate IK, using shapes, allowing yet another layer of animation to blend between. (use the blend constraint buttons in toolbar to access them to blend this weight) handyman
handyMan Tutorial
XSIotron Tut. color array of objects based on projected texture tut
paramProject BETA
-parameters change based on image value at corresponding location in camera view
Usage: Directions must be explicitly followed
-run paramProject
-at prompt selct model, a camera, a clip
to change parmeters effected
-mark 4 parameters
-mark the 4 parameters again
-run param pick
-at prompt pick a paramProjRGBcpset to change
Then set the multipliers inthe custom pset under the model or it will do nothing!!!
notes: you may not notice any effect until you change frame and raise the min parameter in the paramProjRGBcpset
if you delete the clip then undo if using an fxtree tomodify it thne the clip in will not return attached
unhide camera to work on effect from another angle paramProject
AutoSynoptic automatically creates a synoptic view with hotspots for each selected object, with options to select, open attachements, or open named custompsets AutoSynoptic
autosynotiptic demo a late night wee bit tired explaination of it for a collegue
scriptAids alpha of an addon of scripts to aid in geting information for scripting like list properties, or list parameters etc. If you have any to share please email them or post them here:;action=display;threadid=7463 scriptAids
colorSelectedVertices . Select Object, Get>Property>Color at Vertices Map, rest of directions in Dir button of addon.
paintCAVselPnts will not paint over values set by setValCAVselPnts
user CAN paint over the colour values set by paintCAVselPnts
setValCAVselPnts can set color values over values set by paintCAVselPnts
those values CANNOT be painted over by user until they freeze the CAV property,
The advantage being precise points can be coloured and are safe while you paint until you freeze the CAV property

Also helpful From XSI Docs: "From the Material property page, select a CAV property from the Vertex Color Display Property list" ( to display the CAV property in view you want to work on if you have multiple ones)

Added: ver 1.2, setValCAVselPnts now works on weight maps colorSelectedVertices

crappy example:

sceneInfoDisplay.vbs creates a displayInfo custom parameter set based on selected object name and current scene_name_with_spaces, and current frame.
So displayInfo_Custompset param 1 = slected object name, param 2 = "scene", param 3 = "Shot", param 4 = "Title", param 5 = "Worktype", param 6 = "Version", param 7 = "Pass", param 8 to (last-1) ="otherInfo(n)", param last ="Creator"
Use:Name XSI scene file according to Scene_Shot_Title_Worktype_Version_Pass_otherinfo_Creator
or rename or change number of params below in script in the Array section to match your file naming scheme
'Then select object(probably a camera), runscript.
You can add as many "otherInfos" as you like in scene file name ie: Scene_Shot_Title_Worktype_Version_Pass_otherinfo_someotherinfo_moreotherinfo_etc_Creator
ie. DogHump_01_closeUp_anim_01_shadow_tweakedLegs_GDC
within reason as filenames should not be too long
Note: if scene name has no spaces "_", script will fail, must have a least one space _. sceneInfoDisplay.vbs
stretchyBones bones resize and scale based on length between two objects or bones.
Run script select first object or bone, then select second.
If running strchyBnsSldrs then lock open the custom slider PPg that opens to adjust scale etc. stretchyBones
stretchy bones demo a late night wee bit tired explaination of it for a collegue
param2textSCOP version renders.

select an obj, select text, mark param of obj, run fcrvparam 2 text script if param driven by fcurve otherwise run param2text script

(but with param2text the values will be one frame off. scops cannot evaluate another frame and expression offsets work only on fcurves)

the script sets up a scop that retrieves values from a custompset =expressioned to the param value.

a user could pipe something else into this custom parameter instead.

***Oops shit sorry, a limitation is that the custom parameter min max values were left at 400, -400.
I will get to it, to fix it.
But for now the quick and easy fix is:
under the text object right click on the “parameter” under the “parameters2text” custompset node,
and in the PPG that opens set the range to whatever you want, and enable the UI range too.***
Review by brit2slim: Great addon for XSI --- I love it!
It's seems to stop at 400 when connected to the rotation parameter of an object (animated with an expression) - although the object's rotation goes well beyond that.
Any idea why - could I fix it? See above param2textSCOP
method 2 for muscle sliding under skin project scene file example
-polysphere mesh cylinder arm thing
-enveloped to 2 chain bone
-an implicit spere for muscle area parented to upper arm bone
-tag some points around muscle region
-run Oliviers nulls to points script(the newer one) which makes a clustered weight null for each tagged point
Add Null To Point v2.0
-I find noting the numbered names of the new nulls and adding them to groups named according to anatomy region helps keep things organized and easier to select.
-turn constraint compensation on
-pose cns the nulls to the nearby bone
-bounding volume constrain them to implicit muscle
-link scale and local trans of implicit to euler ori of forearm bone
This method scales resonably well for other areas on the body such as problem areas like shoulders. method 2 for muscle sliding under skin project scene file example
muscle slide method 2 demo a late night wee bit tired explaination of it for a collegue
copyObj2Bone instantiates model and scales and constrains them to bones

select root of bones, then shift add select model containing objects and run script copyObj2Bone

Wheel script, applies expression for wheel rolling in one axis.
Directions: select wheel, then shift select car, run script
note: look at axis in view when picking which axis to rotate around and which axis will be the direction of the car
Then perhaps constrain by path the parent to a path and set path tangency on to same travel axis direction you chose
Make sure to have constraint compensation off first Wheel script
FAQ how to roll a circle or wheel as it travels circleroll.vbs run script in new scene
Tank Tread script makes a basic example scene of a setup of tank and bone treads, and a copy obj(treads) to bones script to copy treads to each bone

run this script, then turn off constraint compensation, then in the explorer under tank*>track*>Body, branch select the TreadRootOne*, then shift space add select the model containing the tread you wan to copy/instantiate to it, and then run the copy obj to bone script.Then turn constraint compensation back on to view. Try a basic cube flattened in Y.Note the tread must be in a model.

ParamCopy Example script copies all values of same params from one OP to others ParamCopy
gdcOpenInPS opens selected source in XSI, in Photoshop gdcOpenInPS
gdcPSFlatten Opens Selected XSI Image Sources in PShop and Flattens them to a new file and updates the source filename gdcPSFlatten
gdcPSFiltersEg An example script that opens selected source in XSI, in Photoshop and applies selected filter from drop down menu, saves under name & filter.ext and points source to this new file. gdcPSFiltersEg
Changing Color and textures along raylength of spotlight email me if you need the project file.
FXOPShapeShaderMask use FXOP shapes and masks static or animated to mask different shaders textures etc in rendertree. FXOPShapeShaderMask

FXEditThree for XSI ver 3 FXEditThree
FX Edit Edit in XSI version 2 FX tree and mixer like Adobe Premiere.
Note: this does not work in 3.x up, use FXEditThree instead.
Make clips of FX OP parameters such as over and mix for dissolve between clips and use the script to maintain alignment of the input sources to those clips like an editor.
DragnDrop this link onto XSI 3D view to install addon.
Directions in Toolbar.
Requires edit of one line in an XSI spdl file:
In notepad edit file x:\Softimage\XSI_2.x\Application\spdl\
make a back up of C3DFxFileInputOp.spdl and in original
Midway down under Parameter SourceOffset, change the line:
Caps = Persistable; to Caps = Persistable, Animatable;
Warning this parameter was not enabled by soft originally
Use at your own risk FX Edit
FXTree Editing using the Animation Mixer Tutorial

Drag this link into XSI Netview

gdcPShopAction. selected PShop actions in XSI are applied to selected clips. gdcPShopAction
gdcPSMyXSIAction Visual Basic Script to Automate images from XSI through an Action named "MyXSIAction" in Photoshop. Now Makes a new source file name appended with Action 'name' gdcPSMyXSIAction
HandyMansScript.vbs Handy Mans Script to automate setup for shape animating hand gestures HandyMansScript.vbs
InstanceLatticeSymmetry instances objects over x axis and allows symmetry modeling scl/pos/rot over x axis. Like symmetry constraint but uses a -x scaled lattice. Advantage over InstanceApplySymAll script is that mirroring can take place locally by making the "mirrorlattice" object a child of a parent null of all the objects.


Instance Symmetry All Selected objects instanced and instances symmetry constrained to their originals. Advantage over Model In symmetry script is that nulls can be included Instance Symmetry All
Incidence Target use an object as a target for the incidence shader. Import the model, render region, move the null around. Thanks for the math Martin. Incidence Target
Incidence Target explained
Alpha stage, Old or some no longer working in new versions
renderTrackSelected.emdl track and render selections BBox 2 raster space only DnD into scene. Render current defualt pass. Warning this SCOP is just at early testing stage and only works reliably with defualt_pass. I only post it for other scriptors to hack away at. renderTrackSelected.emdl
paramText Description: text changes on frame change to chosen parameter value.

I leave this here as an example of using on frame change to update and run a script. Use param2textSCOP instead.

You can use "Animate>Parameter>New DisplayInfo from Marked Parameters" to show parameters over viewer or if you'd like the values in the scene, perhaps to convert the text and render, use this script. Those dispay Info Params can be marked and used too.



select object or custom property set


mark a parameter of it


run script paramText

To stop On-Frame-Change Script. Run stopFScript

To start On-Frame-Change Script. Run startFScript

To clear On-Frame-Change Script playbackS.vbs. Run clearFScript or if playbackS.vbs does not exist in usr/addon/data/scripts

folder then clearFScript will make it too.

playbackS.vbs is required for paramtext to work

You may also get errors if running paramtext on the same param again and have not deleted the previous text object for it so you will have to run clearFScript and start from scratch or edit the playbackS.vbs file

an error is usually that marked param was not set, or playabckS.vbs is not setup right, run clearFscript to start over.

If you want to try to render the text use: create>poly.mesh>curves to mesh
and point a post or pre render script in render options to:
but vbs instead of batch in prerender often does not work :( paramText
note the curve to fxtree OPs no longer work in newer versions of XSI, I prefer life, not dealing with limited docs on scops/OM etc. and the wonderful but evolving fxtree OM so these will not be updated.
curve2FXOPshapeP relates the 2D raster space of a shape paste FXOP shape to the 3D space of a curve object

draw a curve, in explorer, select a curve, shape paste, fileinput, and camera, run script curve2FXOPshapeP

curve2FXOPshapeP tutorial

these are early studies for final crv2FXOPshape if interested The tricky thing about using them is just building and selecting things in the right order.

obj2FXshape.vbs will output all point positions relative to camera view of a 3D object to a new 2D shape garbage mask on any FXOP (but not update in view or render). how to use obj2FXshape

DIRECTIONS select a camera, fileinputOp(for image size) and geometry(curve or grid would be best) and when prompted pick another FXOP to apply a mask shape to.

Make sure camera has same format as fileinput clip into FXtree.

***And best to make anew FXOP to apply shape to as add2dshape command is "wacky" and produces an error on old OPs***

curve2FXOPshaper addon will output all point positions relative to camera view of a 3D object to a new 2D shapeon a shape paste FXOP and update in view (but not render)

curve2FXOPshape addon will output all point positions relative to camera view of a 3D object to a new 2D shape mask on a shape paste FXOP and update in view and render.

The directions are in the addon, but briefly, draw a curve, put an fxtree with a fileinoput under a model, add an FXOP and make a shape mask with same # of points as curve, (note use only a newly created FXOP and mask), select the crv node then the FXOP node with the shape mask on it, then the fileinput FXOP, then run crv2FXshpE. then click black icon and select in order the crvlist node, the newly created FXOP model node with cusotmpset inside, camera node , and the fileinput FXOP node inside the model where you put the fxtree earlier.

Now when you shape animate points on that curve or transform its deformer it will update in the fxview and render. (for transforms use a deformer on the curve, ie envelope to single bone chain or other defomer type)

Thanks again to Martin for the math obj2FXshape.vbs

XSI custom layouts

now an addon, old layouts no longer available here for pre ver2
gNoLayouts No Layouts for many various rez. The toolbars float so you can move them where you want or collapse them ou tof the way and have a full 3D view screen. gNoLayouts
g1024x768 v1.0 billions of layouts for 1024x768, dual, dual other rez left and right, collapsable floating menus, etc... eg for laptop monitor + TV etc

no OGL at work :( so I made billions of layouts for 1024x768, dual, dual other rez left and right, no menus, etc

The right or left blank layouts are to customize your self or leave blank and drag views onto.
Some resoltuions are not offered on the right monitor and instead there is one that will work for a range eg. gL1024x768+R1024up3DBG which will put 1024x768 blank on the left and anyhting 1024 vertical and up on the Right will put the 3D view manger in background and float the menus in foreground to collapse or close and just use top menu. g1024x768 v1.0
g1024x768forEXP v1.0 billions of layouts for 1024x768 EXP without requiring reinstall at each startup, dual, dual other rez left and right, collapsable floating menus, etc. eg for laptop monitor + TV etc

same resolutions as above

since EXP only allows temporary installation of addons, instead, unzip this file and dragndrop the folder into:
C: \Softimage\ XSI-EXP_3.0\ Data \Preferences\DefaultLayouts
then start XSI, ignore the warnings, and in XSI under layout menu at top they will be listed to use at each start, pick one like gL1024x7683DBG+RAnyRez

Review by SomberJoe: My old monitor won't let me put up the res. Oh well.
The site site had jsut what I needed, I can now run the program. Thanks very much !
Review by GrootheWandereR: thanks alot :) i was having the same problem, and the save layout function is locked so i cant save my own layout P
you want my happy juice dont you?.... :) well here you go =P hehehe im so happy i think im going to burst!!!
Reveiw bySfinktinator: "Thanks man, you may have just saved my eyeballs! and for that I am eternally grateful. " g1024x768forEXP v1.0
XSI .dslayouts files install to not have to reload addons at each startup of EXP, or to correct loss of default layouts in EXP, and to allow other rez. 1024x768,1152x864, 1280x960, 1440x900, 1600x1024, 1600x1200, 1680x1050, 1920x1080, 1920x1200, 2048x1280

USE: unzip into x:\users\you\exp\Softimage\XSI-EXP_3.0\Data\Preferences\Layouts. Do not unzip this into layouts of a full version of XSI just EXP or you may overwrite yoru layout folders. XSI .dslayouts files

XSI default 1280x1024 layouts for EXP users that have lost them XSI default 1280x1024 layouts
SmallWideDualorToolbarLayouts for various rez, single dual or no layout using toolbars.

right click, save as, all files, NOT xml which windows defaults to.

Layouts for various rez inlcuding single and dual. Duals have left or right screen blank for user to modify or leave and drag views onto instead of splitting.

Toolbar layouts allow user to put the Toolbar panel, Viewmanger, Command panel, and Lower Interface Panel anywhere they damnwell feel like so they are really Anti-Layouts. One type of Toolbar or NoLayout puts the view manager in the background across entire screen in single or dual screen, or constrains it to the left or right monitor and floats the Command Panel etc over it; and the other type of NoLayout floats the View Manger as well. The other advantage of the Non Dual NoLayouts, AllRezNoLayoutSingleorDual and AllRezNoLayout3DViewBGSorDul is they work with any rez.

1024x768 layout has lower interface panel split to fit without double stack on side and fit all toolbar buttons except wieght on right.

  • AllRezNoLayoutSingleorDual
  • 1024x768BottomBarFixed
  • 1152x864
  • 1280x960
  • 1280x1024Dual
  • 1440x900Wide
  • 1600x1200Dual
  • 1600x1024+1280x1024
  • 1920x1080
  • 1920x1200
  • 2048x1280

DragNDrop onto XSI or File>Addon>Install. Install the layout you need. Toolbars except palettes need to be installed for NoLayouts to work.

An issue with AllRezNoLayoutSingleorDual is that, since the View Manger is also floating, property editors etc can get hidden behind it, but the advantage is that you can put it anywhere and resize it to your needs. SmallWideDualorToolbarLayouts


right click, save as, all files, NOT xml which windows defaults to:

Same as above addon minus the NoLayouts. SmallWideandDualSetups.xsiaddon