Our ProjX application sets additional/default connection properties for the MasterConnection and every screen connection (means SubConnection used for workscreens). The additional properties are:

con.setProperty(IConnectionConstants.PREFIX_CLIENT + ILauncher.PARAM_CODEBASE, 
                launcher.getParameter(ILauncher.PARAM_CODEBASE));
 
con.setProperty(IConnectionConstants.PREFIX_CLIENT + ILauncher.PARAM_SERVERBASE, 
                launcher.getParameter(ILauncher.PARAM_SERVERBASE));     
 
con.setProperty(IConnectionConstants.PREFIX_SERVER + IConnectionConstants.PREFIX_SESSION + 
                "language", getLanguage());
 
con.setProperty(IConnectionConstants.PREFIX_CLIENT + "launcher", 
                launcher.getUIResource().getClass().getName());
 
con.setProperty(IConnectionConstants.PREFIX_CLIENT + ILauncher.PARAM_UIFACTORY, 
                launcher.getFactory().getClass().getName());
 
con.setProperty(IConnectionConstants.PREFIX_CLIENT + ILauncher.PARAM_ENVIRONMENT, 
                launcher.getEnvironmentName());

All properties are available on the server side in your session:

SessionContext.getCurrentSession().getProperty(IConnectionConstants.PREFIX_CLIENT + 
                                               ILauncher.PARAM_ENVIRONMENT);

It's easy to handle different environments or different launcher implementations with the above properties.