No hover please

Ever watch videos online? Ha ha, of course you do. Now here's what bothers me. I set the video — for example — in full-screen, on a desktop, but I don't really watch continuously, I let it play and come back to it every now and then. Whenever I switch back to that desktop, a gross overlay with the video controls shadows the media for like 5 seconds. Even the slightest mouse movement brings on that despicable thing.

If this is pissing you off too, and if you are using Linux + Xorg/X11, then I have a solution. It's called nohoverplease but feel free to name it whatever you like, like fuckyouroverlay or something. It's an empty and fully transparent window that does nothing at all, it just sits there, maximized, on top of the browser, and won't let it know it's visible or catch mouse movements, so the damn overlay won't show up. I do have bigger problems in life, but it feels good to solve at least the little ones.

I'm not starting a Github project for something so small. The code is below (thanks Google and Stack Overflow), paste it into a file and compile it with the commented line, to link it against X11. Then configure nohoverplease to run on a key binding, if you'd like to. Pass -m if you'd like it to send the mouse cursor to the bottom-right corner whenever it gets focused.

// gcc nohoverplease.c -o nohoverplease -lX11

#include <X11/Xlib.h>
#include <X11/Xatom.h>
#include <X11/Xutil.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char **argv) {
  Display *d;
  Window w;
  XEvent e;
  int s;
  double alpha = 0;
  Window root_window;
  Screen *screen;
  Bool hide_mouse = argc >= 2 && strcmp(argv[1], "-m") == 0;
  XClassHint cls = { .res_name = "nohoverplease",
		     .res_class = "nohoverplease" };

  d = XOpenDisplay(NULL);
  if (d == NULL) {
    fprintf(stderr, "Cannot open display\n");

  s = DefaultScreen(d);
  screen = DefaultScreenOfDisplay(d);
  root_window = RootWindow(d, s);
  w = XCreateSimpleWindow(d, root_window, 0, 0,
			  WhitePixel(d, s), BlackPixel(d, s));
  XSelectInput(d, w, ExposureMask | KeyPressMask | FocusChangeMask);
  XStoreName(d, w, "No Hover Please");
  XSetClassHint(d, w, &cls);

  unsigned long opacity = (unsigned long)(0xFFFFFFFFul * alpha);
  XChangeProperty(d, w, XA_NET_WM_WINDOW_OPACITY, XA_CARDINAL, 32,
		  PropModeReplace, (unsigned char *)&opacity, 1L);

  XMapWindow(d, w);

  while (1) {
    XNextEvent(d, &e);
    if (hide_mouse && e.type == FocusIn) {
      // send mouse to the bottom-right corner.
      XWindowAttributes info;
      XGetWindowAttributes(d, w, &info);
      XWarpPointer(d, None, w, 0, 0, 0, 0, info.width - 2, info.height - 2);

  return 0;
Two comments, oh gees! Speak to me!

Add your comment

# Alex J Mueller
2021-07-06 14:18
Nice, sort of the inverse of :)
# Steve Dance
2021-09-13 11:45
I'm using a Javascript date picker that I think you developed (the library was installed on my site by a developer I was working with at the time). It still works perfectly on IE but is unresponsive on both Edge & Chrome. do you, by any chance have a version that will run on these browsers or is there a modification to the version I have that will achieve this? Any help/advise would be greatly appreciated. This is the information I have in the preamble from the script file (the links all result in a "404" - looks like you moved your original website) /* Copyright Mihai Bazon, 2002, 2003 | * ------------------------------------------------------------------ * * The DHTML Calendar, version 0.9.6 "Keep cool but don't freeze" * * Details and latest version at: * * * This script is distributed under the GNU Lesser General Public License. * Read the entire license text here: */ // $Id: calendar.js,v 1.34 2004/02/06 18:53:11 mishoo Exp $

No hover please

  • Published: 2021-06-30
  • Modified: 2021-06-30 20:09
  • By: Mishoo
  • Tags: linux, video, x11, xorg
  • Comments: 2 (add)