diff -up st-0.8.4-ori/x.c st-0.8.4/x.c --- st-0.8.4-ori/x.c 2020-06-19 14:59:45.000000000 +0530 +++ st-0.8.4/x.c 2020-07-20 03:39:56.260922736 +0530 @@ -254,6 +254,9 @@ static char *opt_title = NULL; static int oldbutton = 3; /* button event on startup: 3 = release */ +static Cursor cursor; +static XColor xmousefg, xmousebg; + void clipcopy(const Arg *dummy) { @@ -1099,10 +1102,8 @@ void xinit(int cols, int rows) { XGCValues gcvalues; - Cursor cursor; Window parent; pid_t thispid = getpid(); - XColor xmousefg, xmousebg; if (!(xw.dpy = XOpenDisplay(NULL))) die("can't open display\n"); @@ -1683,6 +1684,12 @@ xsetmode(int set, unsigned int flags) { int mode = win.mode; MODBIT(win.mode, set, flags); + if (flags & MODE_MOUSE) { + if (win.mode & MODE_MOUSE) + XUndefineCursor(xw.dpy, xw.win); + else + XDefineCursor(xw.dpy, xw.win, cursor); + } if ((win.mode & MODE_REVERSE) != (mode & MODE_REVERSE)) redraw(); }