runtime: decouple Open and Launch commands and gx mapping from netrw

closes: #16494
fixes: ##16486

Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 2348cdd..094b650 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*	For Vim version 9.1.  Last change: 2025 Jan 02
+*eval.txt*	For Vim version 9.1.  Last change: 2025 Jan 25
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -4907,5 +4907,40 @@
 	filetype	string
 	executable	string
 
+						      *dist#vim9#Open()* *:Open*
+						      *g:Openprg*
+dist#vim9#Open(file: string) ~
+
+Opens `path` with the system default handler (macOS `open`, Windows
+`explorer.exe`, Linux `xdg-open`, …). If the variable |g:Openprg| exists the
+string specified in the variable is used instead.
+
+NOTE: Escaping of the path is automatically applied.
+
+Usage: >vim
+	:call dist#vim9#Open(<path>)
+	:Open <path>
+<
+
+						  *dist#vim9#Launch()* *:Launch*
+dist#vim9#Launch(file: string) ~
+
+Launches <args> with the appropriate system programs. Intended for launching
+GUI programs within Vim.
+
+NOTE: escaping of <args> is left to the user
+
+Examples: >vim
+	vim9script
+
+	import autoload 'dist/vim9.vim'
+	# Execute 'makeprg' into another xterm window
+	vim9.Launch('xterm ' .. expandcmd(&makeprg))
+<
+
+Usage: >vim
+	:call dist#vim9#Launch(<args>)
+	:Launch <app> <args>.
+<
 
  vim:tw=78:ts=8:noet:ft=help:norl:
diff --git a/runtime/doc/index.txt b/runtime/doc/index.txt
index 079f9ea..06a24e0 100644
--- a/runtime/doc/index.txt
+++ b/runtime/doc/index.txt
@@ -803,8 +803,6 @@
 |gu|		gu{motion}	2  make Nmove text lowercase
 |gv|		gv		   reselect the previous Visual area
 |gw|		gw{motion}	2  format Nmove text and keep cursor
-|netrw-gx|	gx		   execute application for file name under the
-				   cursor (only with |netrw| plugin)
 |g@|		g@{motion}	   call 'operatorfunc'
 |g~|		g~{motion}	2  swap case for Nmove text
 |g<Down>|	g<Down>		1  same as "gj"
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 0b92532..e667a33 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -2133,7 +2133,7 @@
 :LP	pi_logipat.txt	/*:LP*
 :LPE	pi_logipat.txt	/*:LPE*
 :LPF	pi_logipat.txt	/*:LPF*
-:Launch	pi_netrw.txt	/*:Launch*
+:Launch	eval.txt	/*:Launch*
 :Lexplore	pi_netrw.txt	/*:Lexplore*
 :Lfilter	quickfix.txt	/*:Lfilter*
 :LogiPat	pi_logipat.txt	/*:LogiPat*
@@ -2151,7 +2151,7 @@
 :Ntree	pi_netrw.txt	/*:Ntree*
 :Nw	pi_netrw.txt	/*:Nw*
 :Nwrite	pi_netrw.txt	/*:Nwrite*
-:Open	pi_netrw.txt	/*:Open*
+:Open	eval.txt	/*:Open*
 :Over	terminal.txt	/*:Over*
 :P	various.txt	/*:P*
 :Pexplore	pi_netrw.txt	/*:Pexplore*
@@ -6879,6 +6879,8 @@
 discard	editing.txt	/*discard*
 dist#vim	eval.txt	/*dist#vim*
 dist#vim9	eval.txt	/*dist#vim9*
+dist#vim9#Launch()	eval.txt	/*dist#vim9#Launch()*
+dist#vim9#Open()	eval.txt	/*dist#vim9#Open()*
 distribute-script	usr_51.txt	/*distribute-script*
 distributed-plugins	usr_05.txt	/*distributed-plugins*
 distribution	intro.txt	/*distribution*
@@ -7527,6 +7529,7 @@
 g:Netrw_UserMaps	pi_netrw.txt	/*g:Netrw_UserMaps*
 g:Netrw_corehandler	pi_netrw.txt	/*g:Netrw_corehandler*
 g:Netrw_funcref	pi_netrw.txt	/*g:Netrw_funcref*
+g:Openprg	eval.txt	/*g:Openprg*
 g:actual_curbuf	options.txt	/*g:actual_curbuf*
 g:actual_curwin	options.txt	/*g:actual_curwin*
 g:ada#Comment	ft_ada.txt	/*g:ada#Comment*
@@ -7630,8 +7633,6 @@
 g:netrw_banner	pi_netrw.txt	/*g:netrw_banner*
 g:netrw_bannerbackslash	pi_netrw.txt	/*g:netrw_bannerbackslash*
 g:netrw_browse_split	pi_netrw.txt	/*g:netrw_browse_split*
-g:netrw_browsex_support_remote	pi_netrw.txt	/*g:netrw_browsex_support_remote*
-g:netrw_browsex_viewer	pi_netrw.txt	/*g:netrw_browsex_viewer*
 g:netrw_bufsettings	pi_netrw.txt	/*g:netrw_bufsettings*
 g:netrw_chgperm	pi_netrw.txt	/*g:netrw_chgperm*
 g:netrw_chgwin	pi_netrw.txt	/*g:netrw_chgwin*
@@ -7660,7 +7661,6 @@
 g:netrw_ftpextracmd	pi_netrw.txt	/*g:netrw_ftpextracmd*
 g:netrw_ftpmode	pi_netrw.txt	/*g:netrw_ftpmode*
 g:netrw_glob_escape	pi_netrw.txt	/*g:netrw_glob_escape*
-g:netrw_gx	pi_netrw.txt	/*g:netrw_gx*
 g:netrw_hide	pi_netrw.txt	/*g:netrw_hide*
 g:netrw_home	pi_netrw.txt	/*g:netrw_home*
 g:netrw_http_cmd	pi_netrw.txt	/*g:netrw_http_cmd*
@@ -7686,7 +7686,6 @@
 g:netrw_mkdir_cmd	pi_netrw.txt	/*g:netrw_mkdir_cmd*
 g:netrw_mousemaps	pi_netrw.txt	/*g:netrw_mousemaps*
 g:netrw_nobeval	pi_netrw.txt	/*g:netrw_nobeval*
-g:netrw_nogx	pi_netrw.txt	/*g:netrw_nogx*
 g:netrw_preview	pi_netrw.txt	/*g:netrw_preview*
 g:netrw_rcp_cmd	pi_netrw.txt	/*g:netrw_rcp_cmd*
 g:netrw_remote_mkdir	pi_netrw.txt	/*g:netrw_remote_mkdir*
@@ -9031,8 +9030,6 @@
 netrw-gn	pi_netrw.txt	/*netrw-gn*
 netrw-gp	pi_netrw.txt	/*netrw-gp*
 netrw-grep	pi_netrw.txt	/*netrw-grep*
-netrw-gx	pi_netrw.txt	/*netrw-gx*
-netrw-handler	pi_netrw.txt	/*netrw-handler*
 netrw-help	pi_netrw.txt	/*netrw-help*
 netrw-hexplore	pi_netrw.txt	/*netrw-hexplore*
 netrw-hide	pi_netrw.txt	/*netrw-hide*
@@ -9161,7 +9158,6 @@
 netrw-windows-netrc	pi_netrw.txt	/*netrw-windows-netrc*
 netrw-windows-s	pi_netrw.txt	/*netrw-windows-s*
 netrw-write	pi_netrw.txt	/*netrw-write*
-netrw-x	pi_netrw.txt	/*netrw-x*
 netrw-xfer	pi_netrw.txt	/*netrw-xfer*
 netrw.txt	pi_netrw.txt	/*netrw.txt*
 netrw.vim	pi_netrw.txt	/*netrw.vim*
diff --git a/runtime/doc/version9.txt b/runtime/doc/version9.txt
index 2f2ab5a..f77499a 100644
--- a/runtime/doc/version9.txt
+++ b/runtime/doc/version9.txt
@@ -1,4 +1,4 @@
-*version9.txt*  For Vim version 9.1.  Last change: 2025 Jan 23
+*version9.txt*  For Vim version 9.1.  Last change: 2025 Jan 25
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -41626,6 +41626,8 @@
 - |v:stacktrace| The stack trace of the exception most recently caught and
   not finished
 - New option value "nosort" for 'completeopt'
+- add |dist#vim9#Launch()| and |dist#vim9#Open()| to the |vim-script-library|
+  and decouple it from |netrw|
 
 							*added-9.2*
 Added ~