diff --git a/runtime/autoload/dist/vim9.vim b/runtime/autoload/dist/vim9.vim
index a2b1451..6d4079e 100644
--- a/runtime/autoload/dist/vim9.vim
+++ b/runtime/autoload/dist/vim9.vim
@@ -3,7 +3,7 @@
 # Vim runtime support library
 #
 # Maintainer:   The Vim Project <https://github.com/vim/vim>
-# Last Change:  2025 Jan 24
+# Last Change:  2025 Jan 29
 
 export def IsSafeExecutable(filetype: string, executable: string): bool
   if empty(exepath(executable))
@@ -34,7 +34,7 @@
     # Cygwin provides cygstart
     if executable('cygstart')
       export def Launch(args: string)
-        execute 'silent ! cygstart --hide' args Redir() | redraw!
+        execute $'silent ! cygstart --hide {args} {Redir()}' | redraw!
       enddef
     elseif !empty($MSYSTEM) && executable('start')
       # MSYS2/Git Bash comes by default without cygstart; see
@@ -43,31 +43,32 @@
       # Adding "" //b` sets void title, hides cmd window and blocks path conversion
       # of /b to \b\ " by MSYS2; see https://www.msys2.org/docs/filesystem-paths/
       export def Launch(args: string)
-        execute 'silent !start "" //b' args Redir() | redraw!
+        execute $'silent !start "" //b {args} {Redir()}' | redraw!
       enddef
     else
       # imitate /usr/bin/start script for other environments and hope for the best
       export def Launch(args: string)
-        execute 'silent !cmd //c start "" //b' args Redir() | redraw!
+        execute $'silent !cmd /c start "" /b {args} {Redir()}' | redraw!
       enddef
     endif
   elseif exists('$WSL_DISTRO_NAME') # use cmd.exe to start GUI apps in WSL
     export def Launch(args: string)
-      execute 'silent !' ..
-            ((args =~? '\v<\f+\.(exe|com|bat|cmd)>') ?
-            $'cmd.exe /c start /b {args} {Redir()}' :
-            $'nohup {args} {Redir()} &')
-            | redraw!
+      const command = (args =~? '\v<\f+\.(exe|com|bat|cmd)>')
+        ? $'cmd.exe /c start /b {args} {Redir()}'
+        : $'nohup {args} {Redir()} &'
+      execute $'silent ! {command}' | redraw!
     enddef
   else
     export def Launch(args: string)
-      execute ':silent ! nohup' args Redir() (has('gui_running') ? '' : '&') | redraw!
+      const fork = has('gui_running') ? '' : '&'
+      execute $':silent ! nohup {args} {Redir()} {fork}' | redraw!
     enddef
   endif
 elseif has('win32')
   export def Launch(args: string)
-    execute 'silent !' .. (&shell =~? '\<cmd\.exe\>' ? '' : 'cmd.exe /c')
-          'start "" /b' args Redir() | redraw!
+    const shell = (&shell =~? '\<cmd\.exe\>') ? '' : 'cmd.exe /c'
+    const quotes = empty(shell) ? '' : '""'
+    execute $'silent ! {shell} start {quotes} /b {args} {Redir()}' | redraw!
   enddef
 else
   export def Launch(dummy: string)
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 094b650..0851aa5 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 25
+*eval.txt*	For Vim version 9.1.  Last change: 2025 Jan 29
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -4908,13 +4908,25 @@
 	executable	string
 
 						      *dist#vim9#Open()* *:Open*
-						      *g:Openprg*
+						      *g:Openprg* *gx*
 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.
 
+This function is by default called using the gx mapping.  In visual mode
+tries to open the visually selected text.
+
+Associated setting variables:
+`g:gx_word`: control how gx picks up the text under the cursor. Uses
+	     `g:netrw_gx` as a fallback for backward compatibility.
+	     (default: `<cfile>`)
+
+`g:nogx`: disables the gx mapping. Uses `g:netrw_nogx` as a fallback for
+	  backward compatibility. (default: `unset`)
+
+
 NOTE: Escaping of the path is automatically applied.
 
 Usage: >vim
diff --git a/runtime/doc/tags b/runtime/doc/tags
index e667a33..f1d32d8 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -8053,6 +8053,7 @@
 gw	change.txt	/*gw*
 gwgw	change.txt	/*gwgw*
 gww	change.txt	/*gww*
+gx	eval.txt	/*gx*
 gzip	pi_gzip.txt	/*gzip*
 gzip-autocmd	pi_gzip.txt	/*gzip-autocmd*
 gzip-example	autocmd.txt	/*gzip-example*
diff --git a/runtime/plugin/openPlugin.vim b/runtime/plugin/openPlugin.vim
index 103b33c..c231dc4 100644
--- a/runtime/plugin/openPlugin.vim
+++ b/runtime/plugin/openPlugin.vim
@@ -12,9 +12,18 @@
 
 const no_gx = get(g:, "nogx", get(g:, "netrw_nogx", false))
 if !no_gx
+  def GetWordUnderCursor(): string
+    const url = matchstr(expand("<cWORD>"), '\%(\%(http\|ftp\|irc\)s\?\|file\)://\S\{-}\ze[^A-Za-z0-9/]*$')
+    if !empty(url)
+      return url
+    endif
+
+    const user_var = get(g:, 'gx_word', get(g:, 'netrw_gx', '<cfile>')
+    return expand(user_var)
+  enddef
+
   if maparg('gx', 'n') == ""
-    const file = get(g:, 'netrw_gx', '<cfile>')
-    nnoremap <unique> gx <scriptcmd>vim9.Open(expand(file))<CR>
+    nnoremap <unique> gx <scriptcmd>vim9.Open(GetWordUnderCursor())<CR>
   endif
   if maparg('gx', 'x') == ""
     xnoremap <unique> gx <scriptcmd>vim9.Open(getregion(getpos('v'), getpos('.'), { type: mode() })->join())<CR>
