--- a/main.c +++ a/main.c @@ -681,7 +681,7 @@ static int window_to_desktop (Display *disp, Window win, int desktop) {/*{{{*/ unsigned long *cur_desktop = NULL; Window root = DefaultRootWindow(disp); - if (desktop == -1) { + if (desktop == -2) { if (! (cur_desktop = (unsigned long *)get_property(disp, root, XA_CARDINAL, "_NET_CURRENT_DESKTOP", NULL))) { if (! (cur_desktop = (unsigned long *)get_property(disp, root, @@ -897,7 +897,7 @@ static int action_window (Display *disp, Window win, char mode) {/*{{{*/ case 'R': /* move the window to the current desktop and activate it => -r */ - if (window_to_desktop(disp, win, -1) == EXIT_SUCCESS) { + if (window_to_desktop(disp, win, -2) == EXIT_SUCCESS) { usleep(100000); /* 100 ms - make sure the WM has enough time to move the window, before we activate it */ return activate_window(disp, win, FALSE); --- a/wmctrl.1 +++ a/wmctrl.1 @@ -258,7 +258,8 @@ Include WM_CLASS in the window list or interpret as the WM_CLASS name. .TP .I A Desktop is always specified by an integer which represents the -desktop numbers. Desktop numbers start at 0. +desktop numbers. Desktop numbers start at 0. Use -1 to pin to all +desktops. .TP .I