Been playing around some more.
Ended up with a batch file that you can set to start on a particular screen all the time, and subsequent executions will exit XBMC and toggle to the other screen. Create a shortcut and add a hotkey if you want access that way as well.
I tried to make it as foolproof as possible. Tested on my own system and it works fine. But as user interaction is required to set it up no guarantees it will work straight up
As always make backups before trying it out. Although all files are only renamed, so you shouldn't ever lose any data.
NOTE: Any changes made to the GUI (eg. layouts) won't carry over between screens as they are using different files.
You need two copies of the guisettings.xml file. Note the settings should be different depending on your resolution. Best way is to run XBMC on the screen you want, exit and copy the guisettings.xml file.
The following are data excerpts from my setup just FYI:
To display on monitor - saved as guisettings.xml.mon
Code:
<videoscreen>
<resolution>-1</resolution>
<screen>0</screen>
<screenmode>DESKTOP</screenmode>
</videoscreen>
To display on TV - saved as guisettings.xml.tv
Code:
<videoscreen>
<resolution>0</resolution>
<screen>1</screen>
<screenmode>10192001080050.00000</screenmode>
</videoscreen>
Copy/paste the following to a txt file and save.
You need to edit the paths in the top section, so the batch knows where XBMC and the XBMC settings files are.
You also need to edit the section tagged :NotRunning_Start depending on what screen you want to start on all the time. As it is now, it will start on whatever screen it is already on. Add REM to disable or remove the REM to enable.
Code:
@echo off
REM change the following folder to your XBMC folder
SET XBMC_path=C:\xbmc
REM change the following folder to the XBMC userdata folder
SET XBMC_settings=C:\Users\user\AppData\Roaming\XBMC
:CheckForXBMC
TASKLIST | find /i "XBMC.exe" >nul
IF ERRORLEVEL 1 (GOTO :NotRunning_Start) ELSE GOTO :IsRunning_TOGGLE
:IsRunning_TOGGLE
TASKKILL /IM XBMC.exe
IF EXIST "%XBMC_settings%\*.tv" GOTO :tv
IF EXIST "%XBMC_settings%\*.mon" GOTO :mon
:NotRunning_Start
REM >>>>> NOTE: REM whichever lines are not required.
REM >>>>> MORE THAN ONE CANNOT BE ENABLED AT THE SAME TIME! <<<<<<
REM Use last screen setting (add REM before GOTO, if not using)
GOTO :Start
REM To always Start on Monitor (add REM before IF, if not using)
REM IF EXIST "%XBMC_settings%\*.mon" (GOTO :mon) ELSE GOTO :Start
REM To always Start on TV (add REM before IF, if not using)
REM IF EXIST "%XBMC_settings%\*.tv" (GOTO :tv) ELSE GOTO :Start
:mon
RENAME "%XBMC_settings%\guisettings.xml" guisettings.xml.tv
RENAME "%XBMC_settings%\guisettings.xml.mon" guisettings.xml
GOTO :Start
:tv
RENAME "%XBMC_settings%\guisettings.xml" guisettings.xml.mon
RENAME "%XBMC_settings%\guisettings.xml.tv" guisettings.xml
GOTO :Start
:Start
"%XBMC_path%\XBMC.exe"
:END
So you should have:
1 batch file saved somewhere, set with a hotkey through a shortcut (if desired & required if you want to run it from a button set on the remote)
2 copies of guisettings.xml. (1 should be named guisettings.xml and the other named guisettings.xml.tv or guisettings.xml.mon depending on it's contents. Both files should be in the XBMC userdata folder.
Any problems, let me know.