diff --git a/src/evalfunc.c b/src/evalfunc.c
index b4009f0..a0f2994 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -86,7 +86,6 @@
 static void f_get(typval_T *argvars, typval_T *rettv);
 static void f_getchangelist(typval_T *argvars, typval_T *rettv);
 static void f_getcharsearch(typval_T *argvars, typval_T *rettv);
-static void f_getcmdwintype(typval_T *argvars, typval_T *rettv);
 static void f_getenv(typval_T *argvars, typval_T *rettv);
 static void f_getfontname(typval_T *argvars, typval_T *rettv);
 static void f_getjumplist(typval_T *argvars, typval_T *rettv);
@@ -845,6 +844,7 @@
     {"win_execute",	2, 3, FEARG_2,	  &t_string,	f_win_execute},
     {"win_findbuf",	1, 1, FEARG_1,	  &t_list_number, f_win_findbuf},
     {"win_getid",	0, 2, FEARG_1,	  &t_number,	f_win_getid},
+    {"win_gettype",	0, 1, FEARG_1,    &t_string,	f_win_gettype},
     {"win_gotoid",	1, 1, FEARG_1,	  &t_number,	f_win_gotoid},
     {"win_id2tabwin",	1, 1, FEARG_1,	  &t_list_number, f_win_id2tabwin},
     {"win_id2win",	1, 1, FEARG_1,	  &t_number,	f_win_id2win},
@@ -2920,24 +2920,6 @@
 }
 
 /*
- * "getcmdwintype()" function
- */
-    static void
-f_getcmdwintype(typval_T *argvars UNUSED, typval_T *rettv)
-{
-    rettv->v_type = VAR_STRING;
-    rettv->vval.v_string = NULL;
-#ifdef FEAT_CMDWIN
-    rettv->vval.v_string = alloc(2);
-    if (rettv->vval.v_string != NULL)
-    {
-	rettv->vval.v_string[0] = cmdwin_type;
-	rettv->vval.v_string[1] = NUL;
-    }
-#endif
-}
-
-/*
  * "getenv()" function
  */
     static void
diff --git a/src/evalwindow.c b/src/evalwindow.c
index be6762a..c7a9f79 100644
--- a/src/evalwindow.c
+++ b/src/evalwindow.c
@@ -840,6 +840,54 @@
 }
 
 /*
+ * "win_gettype(nr)" function
+ */
+    void
+f_win_gettype(typval_T *argvars, typval_T *rettv)
+{
+    win_T	*wp = curwin;
+
+    rettv->v_type = VAR_STRING;
+    rettv->vval.v_string = NULL;
+    if (argvars[0].v_type != VAR_UNKNOWN)
+    {
+	wp = find_win_by_nr_or_id(&argvars[0]);
+	if (wp == NULL)
+	{
+	    rettv->vval.v_string = vim_strsave((char_u *)"unknown");
+	    return;
+	}
+    }
+#ifdef FEAT_PROP_POPUP
+    if (WIN_IS_POPUP(wp))
+	rettv->vval.v_string = vim_strsave((char_u *)"popup");
+    else
+#endif
+#ifdef FEAT_CMDWIN
+    if (wp == curwin && cmdwin_type != 0)
+	rettv->vval.v_string = vim_strsave((char_u *)"command");
+#endif
+}
+
+/*
+ * "getcmdwintype()" function
+ */
+    void
+f_getcmdwintype(typval_T *argvars UNUSED, typval_T *rettv)
+{
+    rettv->v_type = VAR_STRING;
+    rettv->vval.v_string = NULL;
+#ifdef FEAT_CMDWIN
+    rettv->vval.v_string = alloc(2);
+    if (rettv->vval.v_string != NULL)
+    {
+	rettv->vval.v_string[0] = cmdwin_type;
+	rettv->vval.v_string[1] = NUL;
+    }
+#endif
+}
+
+/*
  * "winbufnr(nr)" function
  */
     void
diff --git a/src/proto/evalwindow.pro b/src/proto/evalwindow.pro
index e3faa96..4eb1ced 100644
--- a/src/proto/evalwindow.pro
+++ b/src/proto/evalwindow.pro
@@ -20,6 +20,8 @@
 void f_win_id2win(typval_T *argvars, typval_T *rettv);
 void f_win_screenpos(typval_T *argvars, typval_T *rettv);
 void f_win_splitmove(typval_T *argvars, typval_T *rettv);
+void f_win_gettype(typval_T *argvars, typval_T *rettv);
+void f_getcmdwintype(typval_T *argvars, typval_T *rettv);
 void f_winbufnr(typval_T *argvars, typval_T *rettv);
 void f_wincol(typval_T *argvars, typval_T *rettv);
 void f_winheight(typval_T *argvars, typval_T *rettv);
diff --git a/src/testdir/dumps/Test_terminal_popup_1.dump b/src/testdir/dumps/Test_terminal_popup_1.dump
index 0628eb0..8c2a54d 100644
--- a/src/testdir/dumps/Test_terminal_popup_1.dump
+++ b/src/testdir/dumps/Test_terminal_popup_1.dump
@@ -8,8 +8,8 @@
 |7| @12|║+0#0000001#ffd7ff255|~+0#4040ff13#ffffff0| @43|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@13
 |8| @12|║+0#0000001#ffd7ff255|~+0#4040ff13#ffffff0| @43|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@13
 |9| @12|║+0#0000001#ffd7ff255|~+0#4040ff13#ffffff0| @43|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@13
-|1|0| @11|║+0#0000001#ffd7ff255|"+0#0000000#ffffff0|X|t|e|x|t|"| |3|L|,| |3|6|C| @11|1|,|1| @10|A|l@1| |║+0#0000001#ffd7ff255| +0#0000000#ffffff0@13
+|1|0| @11|║+0#0000001#ffd7ff255| +0#0000000#ffffff0@26|1|,|1| @10|A|l@1| |║+0#0000001#ffd7ff255| +0#0000000#ffffff0@13
 |1@1| @11|╚+0#0000001#ffd7ff255|═@44|⇲| +0#0000000#ffffff0@13
 |1|2| @72
 |1|3| @72
-@57|0|,|0|-|1| @8|A|l@1| 
+|t|e|r|m|i|n|a|l| |p|o|p|u|p| @42|0|,|0|-|1| @8|A|l@1| 
diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim
index a3d2d5a..27ebfbc 100644
--- a/src/testdir/test_cmdline.vim
+++ b/src/testdir/test_cmdline.vim
@@ -894,12 +894,14 @@
   let g:cmd_wintype = ''
   func CmdWinType()
       let g:cmd_wintype = getcmdwintype()
+      let g:wintype = win_gettype()
       return ''
   endfunc
 
   call feedkeys("\<C-c>a\<C-R>=CmdWinType()\<CR>\<CR>")
   echo input('')
   call assert_equal('@', g:cmd_wintype)
+  call assert_equal('command', g:wintype)
 
   set cedit&vim
   delfunc CmdWinType
diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim
index 8c1d357..993498c 100644
--- a/src/testdir/test_terminal.vim
+++ b/src/testdir/test_terminal.vim
@@ -2333,6 +2333,7 @@
   call writefile(text, 'Xtext')
   let cmd = GetVimCommandCleanTerm()
   let lines = [
+	\ 'set t_u7=',
 	\ 'call setline(1, range(20))',
 	\ 'hi PopTerm ctermbg=grey',
 	\ 'func OpenTerm(setColor)',
@@ -2346,6 +2347,9 @@
 	\ 'func HidePopup()',
 	\ '  call popup_hide(s:winid)',
 	\ 'endfunc',
+	\ 'sleep 10m',
+	\ 'redraw',
+	\ 'echo getwinvar(s:winid, "&buftype") win_gettype(s:winid)',
 	\ ]
   call writefile(lines, 'XtermPopup')
   let buf = RunVimInTerminal('-S XtermPopup', #{rows: 15})
diff --git a/src/version.c b/src/version.c
index 73ea736..70ea449 100644
--- a/src/version.c
+++ b/src/version.c
@@ -743,6 +743,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    257,
+/**/
     256,
 /**/
     255,
