-- Make sure to put any where clause after your last list of key bindings* where notSP = (return $ ("SP" /=) . W.tag) :: X (WindowSpace -> Bool) -- | any workspace but scratchpad shiftAndView dir = findWorkspace getSortByIndex dir (WSIs notSP) 1 >>= \t -> (windows . W.shift $ t) >> (windows . W.greedyView $ t) -- | hidden, non-empty workspaces less scratchpad <====================================== extra stuff shiftAndView' dir = findWorkspace getSortByIndexNoSP dir HiddenNonEmptyWS 1 >>= \t -> (windows . W.shift $ t) >> (windows . W.greedyView $ t) getSortByIndexNoSP = fmap (.scratchpadFilterOutWorkspace) getSortByIndex and make the lines like: shiftAndView' dir = findWorkspace getSortByIndexNoSP dir HiddenNonEmptyWS 1 >>= \t -> (windows . W.shift $ t) >> (windows . W.greedyView $ t) getSortByIndexNoSP = fmap (.scratchpadFilterOutWorkspace) getSortByIndex But I just pasted the above with no changes, to test. Did not think I would matter. Yeah I don't know what I was thinking ;)