diff --git a/src/os_unix.h b/src/os_unix.h
index 67dad2e..6efd8ce 100644
--- a/src/os_unix.h
+++ b/src/os_unix.h
@@ -279,6 +279,12 @@
 # ifndef USR_GVIMRC_FILE3
 #  define USR_GVIMRC_FILE3  "sys$login:_gvimrc"
 # endif
+#else
+# ifndef USR_GVIMRC_FILE3
+#  define USR_GVIMRC_FILE3 (mch_getenv("XDG_CONFIG_HOME") \
+	? "$XDG_CONFIG_HOME/vim/gvimrc" \
+	: "~/.config/vim/gvimrc")
+# endif
 #endif
 
 #ifndef VIM_DEFAULTS_FILE
diff --git a/src/testdir/test_xdg.vim b/src/testdir/test_xdg.vim
index 557864e..7c0c8ef 100644
--- a/src/testdir/test_xdg.vim
+++ b/src/testdir/test_xdg.vim
@@ -3,7 +3,6 @@
 source check.vim
 
 source shared.vim
-source mouse.vim
 
 func s:get_rcs()
   let rcs = {
@@ -44,7 +43,7 @@
   call mkdir(expand('~/.vim/'), 'pD')
   call mkdir(expand('~/.config/vim/'), 'pD')
   call mkdir(expand('~/xdg/vim/'), 'pD')
- 
+
   let rc1=expand('~/.vimrc')
   let rc2=expand('~/.vim/vimrc')
   let rc3=expand('~/.config/vim/vimrc')
@@ -147,15 +146,153 @@
   unlet $XDG_CONFIG_HOME
   let a = execute(':version')->split('\n')
   let a = filter(a, { _, val -> val =~ '\.config\|XDG_CONFIG_HOME' })
-  call assert_equal(1, len(a))
-  call assert_match('\~/.config/vim/vimrc', a[0])
+  " There should be 1 entry for gvimrc and 1 entry for vimrc,
+  " but only if Vim was compiled with gui support
+  call assert_equal(1 + has("gui"), len(a))
+  call assert_match('\~/\.config/vim/vimrc', a[0])
+  if has("gui")
+    call assert_match('\~/\.config/vim/gvimrc', a[1])
+  endif
 
   let $XDG_CONFIG_HOME = expand('~/.xdg')
   let a = execute(':version')->split('\n')
   let a = filter(a, { _, val -> val =~ '\.config\|XDG_CONFIG_HOME' })
-  call assert_equal(1, len(a))
+  call assert_equal(1 + has("gui"), len(a))
   call assert_match('XDG_CONFIG_HOME/vim/vimrc', a[0])
+  if has("gui")
+    call assert_match('XDG_CONFIG_HOME/vim/gvimrc', a[1])
+  endif
   unlet $XDG_CONFIG_HOME
 endfunc
 
+" Test for gvimrc, must be last, since it starts the GUI
+" and sources a few extra test files
+func Test_zzz_xdg_runtime_files()
+  CheckCanRunGui
+  CheckUnix
+
+  " Is setup in Github Runner
+  unlet $XDG_CONFIG_HOME
+  source setup_gui.vim
+  call GUISetUpCommon()
+
+  " This tests, that the initialization file from
+  " ~/.vimrc, ~/.vim/vimrc and ~/.config/vim/vimrc (or
+  " $XDG_HOMECONFIG/vim/vimrc) are sourced in that order
+  call mkdir(expand('~/.vim/'), 'pD')
+  call mkdir(expand('~/.config/vim/'), 'pD')
+  call mkdir(expand('~/xdg/vim/'), 'pD')
+
+  let rc1=expand('~/.gvimrc')
+  let rc2=expand('~/.vim/gvimrc')
+  let rc3=expand('~/.config/vim/gvimrc')
+  let rc4=expand('~/xdg/vim/gvimrc')
+
+  " g:rc_one|two|three|four is to verify, that the other
+  " init files are not sourced
+  " g:rc is to verify which rc file has been loaded.
+  let file1 =<< trim CODE
+    let g:rc_one = 'one'
+    let g:rc = '.gvimrc'
+  CODE
+  let file2 =<< trim CODE
+    let g:rc_two = 'two'
+    let g:rc = '.vim/gvimrc'
+  CODE
+  let file3 =<< trim CODE
+    let g:rc_three = 'three'
+    let g:rc = '.config/vim/gvimrc'
+  CODE
+  let file4 =<< trim CODE
+    let g:rc_four = 'four'
+    let g:rc = 'xdg/vim/gvimrc'
+  CODE
+  call writefile(file1, rc1)
+  call writefile(file2, rc2)
+  call writefile(file3, rc3)
+  call writefile(file4, rc4)
+
+  " Get the Vim command to run without the '-u NONE' argument
+  let vimcmd = substitute(GetVimCommand(), '-u NONE', '', '')
+
+  " Test for ~/.gvimrc
+  let lines =<< trim END
+    " Ignore the "failed to create input context" error.
+    call test_ignore_error('E285')
+    gui -f
+    call assert_match('Xhome/\.gvimrc', $MYGVIMRC)
+    call filter(g:, {idx, _ -> idx =~ '^rc'})
+    call assert_equal(#{rc_one: 'one', rc: '.gvimrc'}, g:)
+    call writefile(v:errors, 'Xresult')
+    quit
+  END
+  call writefile(lines, 'Xscript', 'D')
+  call system($'{vimcmd} -S Xscript')
+  call assert_equal([], readfile('Xresult'))
+
+  call delete(rc1)
+
+  " Test for ~/.vim/gvimrc
+  let lines =<< trim END
+    " Ignore the "failed to create input context" error.
+    call test_ignore_error('E285')
+    gui -f
+    call assert_match('Xhome/\.vim/gvimrc', $MYGVIMRC)
+    call filter(g:, {idx, _ -> idx =~ '^rc'})
+    call assert_equal(#{rc_two: 'two', rc: '.vim/gvimrc'}, g:)
+    call writefile(v:errors, 'Xresult')
+    quit
+  END
+  call writefile(lines, 'Xscript', 'D')
+  call system($'{vimcmd} -S Xscript')
+  call assert_equal([], readfile('Xresult'))
+
+  call delete(rc2)
+
+  " XDG_CONFIG_HOME is set in Github CI runners
+  unlet $XDG_CONFIG_HOME
+
+  " Test for ~/.config/vim/gvimrc
+  let lines =<< trim END
+    " Ignore the "failed to create input context" error.
+    call test_ignore_error('E285')
+    gui -f
+    let msg = $'HOME="{$HOME}", ~="{expand("~")}"'
+    call assert_match('Xhome/\.config/vim/gvimrc', $MYGVIMRC, msg)
+    call filter(g:, {idx, _ -> idx =~ '^rc'})
+    call assert_equal(#{rc_three: 'three', rc: '.config/vim/gvimrc'}, g:)
+    call writefile(v:errors, 'Xresult')
+    quit
+  END
+  call writefile(lines, 'Xscript', 'D')
+  call system($'{vimcmd} -S Xscript')
+  call assert_equal([], readfile('Xresult'))
+
+  call delete(rc3)
+
+  " Test for ~/xdg/vim/gvimrc
+  let $XDG_CONFIG_HOME=expand('~/xdg/')
+  let lines =<< trim END
+    " Ignore the "failed to create input context" error.
+    call test_ignore_error('E285')
+    gui -f
+    let msg = $'HOME="{$HOME}", XDG_CONFIG_HOME="{$XDG_CONFIG_HOME}"'
+    call assert_match('Xhome/xdg/vim/gvimrc', $MYGVIMRC, msg)
+    call filter(g:, {idx, _ -> idx =~ '^rc'})
+    call assert_equal(#{rc_four: 'four', rc: 'xdg/vim/gvimrc'}, g:)
+    call writefile(v:errors, 'Xresult')
+    quit
+  END
+  call writefile(lines, 'Xscript', 'D')
+  call system($'{vimcmd} -S Xscript')
+  call assert_equal([], readfile('Xresult'))
+
+  call delete(rc4)
+
+  " Clean up
+  unlet $XDG_CONFIG_HOME
+  call GUITearDownCommon()
+  call delete('Xhome', 'rf')
+endfunc
+
 " vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index d4f82ba..e79bea4 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    345,
+/**/
     344,
 /**/
     343,
