Viewer parameters

For versions of Second Life prior 1.20 see: Pre 1.20 Client parameters
== Using Viewer parameters ==
There are many ways of passing command line parameters to the Viewer. 
=== Command line ===
When running the Viewer from a command shell you may specify parameters directly on the command line. For example, on Windows:
 SecondLife.exe --channel "Test 123" --settings settings_workspace.xml --set InstallLanguage en
Add --args on Mac:
 open ./Second\ Life\ Viewer.app --args --channel "Test 123" --settings settings_workspace.xml --set InstallLanguage en
=== Settings Files ===
On all platforms, you can also construct a settings file and specify that with the --sessionsettings command line switch. Please see the table below to understand the settings variables engaged by each command-line switch.
If you edit the user_settings/settings.xml file, that affects future Second Life sessions initiated from your OS account.
Alternatively, you can edit the first_last/settings.xml file, which affects only Second Life sessions for that login user. For example, if your Second Life name is "FooBar Baz", you should find that file in foobar_baz/settings.xml. (Caution: this file uses a different XML format than the other settings files.)
=== Mac OS X AppleScripts ===
An alternative (and often easier) way to launch Second Life with command line parameters is to use an AppleScript.
Follow these steps:
 In /Applications/AppleScript open Script Editor.
 Open a new document and paste the following text into it:
do shell script "\"/Applications/Second Life.app/Contents/MacOS/Second Life\" -grid Aditi"
The script includes an example parameter that will cause the Viewer to log in to the beta grid; change the parameters as desired.
 Once you're happy with the parameters, click "Compile"
 Choose File > Save As
 Save the script as an Application, and select "Run Only" (may be "Execute" on OS X.4 Tiger). If you want to tweak the script then you can save it as not run-only, and/or save a copy as "Script".
Double-click the application you've compiled to launch the Viewer with the specified parameters.
NOTE: If the Viewer launches then immediately quits, open it normally since there is likely an update available:
download it and your script will work again. There is a JIRA issue for this.
=== Visual Studio ===
In Visual Studio, the command line paramaters are in the Debug Options pane of the newview project preferences. Ensure newview is your startup project, and launch the compiled viewer from within the debugger for these options to take effect.
=== XCode ===
In XCode, first select "newview" under the "Executables" group in XCode. Then open the "Get Info" dialog and click the "Arguments" tab. Add any of the following options to the "Arguments to be passed on launch" pane.
== Parameter reference ==
NOTE: A parameter refers to a directive provided on the command-line following a double-dash (--).
An argument is a value provided for a parameter. For example in --port 13001, "port" is the parameter
and "13001" is the argument.
Parameter 	Argument (if any) 	Description 	Overridden Setting 	Notes
--analyzeperformance 	None 	When used in conjunction with logperformance, analyzes result of log against baseline. 	AnalyzePerformance 	New help message as of SL Viewer 7.1.X on macOS
--autologin 	None 	Login in as last saved user. 	AutoLogin 	
--channel <name> 	Channel name 	Specify version channel name. (For Testing) 	CmdLineChannel 	7.1.X help says N/A on macOS
--console <show> 	TRUE or FALSE 	Show a debugging console (Windows only). 	ShowConsoleWindow 	7.1.X help says N/A on macOS
--cooperative <ms to yield> 	Milliseconds to yield per frame 	Yield specified time to host on each frame. 	YieldTime 	
--crashonstartup 	None 	Crashes on startup. For debugging and quality assurance. 	CrashOnStartup 	
--debugsession 	None 	Run as if is TRUE, but log errors until end of session. 	DebugSession 	
--debugviews 	None 	Enable UI view debugging information. 	DebugViews 	7.1.X help says N/A on macOS
--disablecrashlogger 	None 	Disables the crash logger and lets the OS handle crashes. 	DisableCrashLogger 	
--drop <percentage> 	Percentage to drop (0 - 100) 	Specify a percentage of packets to drop. 	PacketDropPercentage 	7.1.X help says N/A on macOS
--god 	None 	Log in god mode if you are authorized. 	ConnectAsGod 	
--graphicslevel 	integer level 	Set the detail level: 0 - low, 1 - medium, 2 - high, 3 - ultra. 	RenderQualityPerformance 	New help message as of SL Viewer 7.1.X on macOS
--grid <grid name> 	Grid name 	Specify the grid to connect to. Must specify either a hard-coded grid (Agni or Aditi), or one defined in . 	CmdLineGridChoice 	
-h [ --help ] 	None 	Show a message box with available options listed.At least on macOS, this means that the whole viewer will launch, show the display box, allow you to click Okay, and then shut down the viewer.	N/A 	
 	 	Obsolete- no longer supported. May only be set in the grid definition file (). 	 	
--ignorepixeldepth 	None 	Ignore pixel depth settings. 	IgnorePixelDepth 	
--inbw <bits> 	Bits per second 	Specify input bandwidth limit. 	InBandwidth 	7.1.X help says N/A on macOS
--leap <path> 	Path to executable 	Command line to run an LLSD Event API Plugin. 	N/A 	This is what allows Puppetry among other LEAP goodies.
--logfile <filename> 	File name 	Specify a file name for log output. 	UserLogFile 	7.1.X help says N/A on macOS
 	 	Obsolete- no longer supported. May only be set in the grid definition file (). 	 	
 	 	Obsolete- no longer supported. May only be set in the grid definition file (). 	 	
--login <firstname> <lastname> <password>	Account first name, last name, and password with which to log in. 	Specify login values. 	UserLoginInfo 	
--logmetrics <name> 	MetricName 	Log metrics data for benchmarking in . See Performance Testers for details. 	LogMetrics 	
--logperformance 	None 	Log performance data for benchmarking in . See Performance Testers for details. 	LogPerformance 	
--multiple 	None 	Allow multiple viewers running concurrently. 	AllowMultipleViewers 	
--no-verify-ssl-cert 	None 	Disable SSL certificate verification. 	NoVerifySSLCert 	7.1.X help says N/A on macOS
--noaudio 	None 	Disable sound from the client. 	NoAudio 	7.1.X help says N/A on macOS
--nofmod 	None 	Disables the FMOD library? 	 	7.1.X help says N/A on macOS
 	 	Obsolete- no longer supported. 	 	
--noninteractive 	None 	Run in semi-headless mode where only login and logout need to work. 	 	
--nonotifications 	None 	User will not get any notifications. NOTE: All notifications that occur will get added to ignore file for future runs. 	 	
--nopreload 	None 	Disable precaching of sound and bitmaps used by the client. 	NoPreload 	7.1.X help says N/A on macOS
--noprobe 	None 	Disable hardware checking at startup. 	NoHardwareProbe 	7.1.X help says N/A on macOS
--noquicktime 	None 	Disable use of QuickTime by the client. 	NoQuickTime 	7.1.X help says N/A on macOS
--nosound 	None 	Disable sound from the client. 	NoAudio 	7.1.X help says N/A on macOS
--novoice 	None 	Disable voice chat. 	CmdLineDisableVoice 	
--outbw <bits> 	Bits per second 	Specify output bandwidth limit. 	OutBandwidth 	7.1.X help says N/A on macOS
--port <n> 	Port number 	Set the TCP port for the client; useful to run multiple instances of SL on the same local home network. Values that may work: 13000 and 13001 (Valid numbers are 13000 to 13050) 	UserConnectionPort 	7.1.X help says N/A on macOS
--purge 	None 	Force the client to clear all cached downloads during startup. 	PurgeCacheOnNextStartup 	
--psn <n> 	? 	macOS process serial number. 	 	Unknown functionality. Note: when using , this line is not alphabetically sorted.
--qa 	None 	Enable UI features to be used for testing. 	QAMode 	
--quitafter <secs> 	Number of seconds to wait before quitting 	Have the client quit after the specified duration. 	QuitAfterSeconds 	7.1.X help says N/A on macOS
--replaysession 	None 	Use a saved autoplay file to perform viewer actions automatically. Must be used with . 	ReplaySession 	
--rotate 	None 	Force the avatar to rotate to the right. (For Testing) 	RotateRight 	7.1.X help says N/A on macOS
--safe 	None 	Reset preferences and run in safe mode. 	SafeMode 	
--sessionsettings <filename> 	name of a file in 	Specify the filename of a configuration file that contains temporary per-session configuration overrides. 	Use to force Basic mode on login, an invalid name like none to force Advanced mode. Note that under v2.6 the login screen mode menu will show "Basic" if this setting appears at all, but the command line setting will still override on actual login.	
--set <parameter> <value> 	First argument is the name of setting; second is the value to assign to it.	Specify the value of a particular configuration variable that overrides all other settings. (view a full list here). 	Maps to <setting> arg. 	
--setdefault <parameter> <value> 	First argument is the name of setting; second is the value to assign to it.	Specify the value of a particular configuration variable which can be overridden by . 	Maps to <setting> arg. 	
--settings <filename> 	Local file name 	Specify the filename of a configuration file. 	Note: this is the user settings file. 	
--skin <folder> 	Folder name 	Specify the ui/branding skin folder to use. (e.g. Korean, Spanish) 	SkinCurrent 	
--skipupdatecheck 	None 	Skips update check at startup. 	 	
--slurl <SLurl> 	SLurl 	Specify the SLurl with the starting region and position (for example, , ). 
This must be the last parameter on the command line. 	CmdLineLoginLocation 	Note: the example given here is not a valid SLurl...
--update-service <url> 	base URL for the viewer version manager update query 	Override the URL base for the update query by specifying the viewer version manager service to use (primarily for upgrade testing) 	CmdLineUpdateService 	
--url <SLurl> 	SLurl 	Specify the startup location (region and position, e.g. ). 
This must be the last parameter on the command line. 	CmdLineLoginLocation 	Is the format exactly the same as --slurl?
--usersessionsettings <filename> 	name of a file in 	Specify the filename of a configuration file that contains temporary per-session configuration user overrides. 	 	
== Specifying new command line parameters ==
To add a new command line parameter, use the configuration file app_settings/cmd_line.xml to map a command line paramter to a user setting. 
A parameter can have the following options:
* desc - A description of the paramter. 
* short - a single character to map to the paramter.
* count - the number of tokens to follow a option.
* compose - true if the option can be specified multiple times.
* positional - true if the option can be specified without --name.
* last_option - true if the option should be the last option.
* map-to - specify a user setting to map the option to.
The file uses LLSD syntax. Use the existing options as reference.
== Examples ==
=== Setting a Custom Cache Location ===
To set a custom cache location when launching Second Life, you should use the set parameter with a value of NewCacheLocation followed by the desired cache folder to use. This will tell Second Life to startup using this location as a new cache location.
Example: --set CacheLocation j:\SL_Cache --set NewCacheLocation j:\SL_Cache
NOTE: 
Per STORM-334 The double command above will should retain the previous cache and switch to the new cache.
Using just NewChacheLocation will clear any existing cache folder that it has been using. So, to prevent this you can also the CacheLocation setting to the same value and ahead of NewCacheLocation, which will preserve any cache folder saved in your viewer settings. 
This allows you to, use two different shortcuts in order to launch two different Second Life accounts, each with their own separate cache folder, allowing each to have a fully cached home location, for example. Or, a more complex case, a shortcut could create a temporary RAM disk for use as a cache folder, and set this value for Second Life to use, taking advantage of a RAM disk's speed, before saving the contents to disk afterwards.