- 
      
 - 
        
Save avinoamsn/495db3729d6b24ec065a710250657c16 to your computer and use it in GitHub Desktop.  
| ' NOTE: additional discussion & implementations can be found here: https://gist.github.com/ropnop/10800fb5066bd5144d9aaad55a8a4d18 | |
| ' https://medium.com/@bhupathy/install-terminator-on-windows-with-wsl-2826591d2156 | |
| set shell = WScript.CreateObject("Shell.Application") | |
| if not IsProcessRunning("vcxsrv.exe") then | |
| shell.shellExecute "vcxsrv.exe", ":0 -ac -terminate -lesspointer -multiwindow -clipboard -wgl -dpi auto", "C:\Program Files\VcXsrv\", "", 0 | |
| end if | |
| shell.ShellExecute "bash", "-c -l ""DISPLAY=:0 terminator""", "", "open", 0 | |
| ' https://stackoverflow.com/questions/19794726/vb-script-how-to-tell-if-a-program-is-already-running | |
| Function IsProcessRunning( strProcess ) | |
| Dim Process, strObject | |
| IsProcessRunning = False | |
| strObject = "winmgmts://." | |
| For Each Process in GetObject( strObject ).InstancesOf( "win32_process" ) | |
| If UCase( Process.name ) = UCase( strProcess ) Then | |
| IsProcessRunning = True | |
| Exit Function | |
| End If | |
| Next | |
| End Function | 
definitely, glad it's useful!
Good work, fella!
That was exactly what I needed.
If you want to run for example zsh instead of bash, you can change line 7 to that:
shell.ShellExecute "wsl.exe", "zsh -c -l ""DISPLAY=:0 terminator""", "", "open", 0
For WSL2 - Uses nameserver IP address for DISPLAY
I have edited your script, so if the WSL2 nameserver IP changes, It will acquire the new IP in order to execute and open terminator
' https://medium.com/@bhupathy/install-terminator-on-windows-with-wsl-2826591d2156
set shell = WScript.CreateObject("Shell.Application")
if not IsProcessRunning("vcxsrv.exe") then
	shell.shellExecute "vcxsrv.exe", ":0 -ac -terminate -lesspointer -multiwindow -clipboard -wgl -dpi auto", "C:\Program Files\VcXsrv\", "", 0
end if
' terminator.vbs
myCd = "~"
If WScript.Arguments.Length > 0 Then
    myCd = "'$(wslpath -u '" & WScript.Arguments(0) & "')'"
End If
args = "bash" & " -c ""cd " & myCd & "; DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0 terminator"""
WScript.CreateObject("Shell.Application").ShellExecute "C:\Windows\System32\wsl.exe", args, "", "open", 0
' https://stackoverflow.com/questions/19794726/vb-script-how-to-tell-if-a-program-is-already-running
Function IsProcessRunning( strProcess )
	Dim Process, strObject
	IsProcessRunning = False
	strObject = "winmgmts://."
	For Each Process in GetObject( strObject ).InstancesOf( "win32_process" )
	If UCase( Process.name ) = UCase( strProcess ) Then
		IsProcessRunning = True
		Exit Function
	End If
	Next
End Function@zoloholic thanks for the contribution, you should also share your version on this topic's main thread over here.
Edit: nevermind, I see you already did this 😅. You may want to try reformatting with the three-tilde, however, like I did on your above post (I don't have control over the main thread, so you'd have to edit it there).
Thanks dude, it's awesome