module Rahm.Desktop.ScreenRotate where import XMonad.StackSet as W screenRotateBackward :: W.StackSet i l a sid sd -> W.StackSet i l a sid sd screenRotateBackward (W.StackSet current visible others floating) = do let screens = current : visible workspaces = tail $ cycle $ map W.workspace screens (current':visible') = zipWith (\s w -> s {workspace = w} ) screens workspaces in W.StackSet current' visible' others floating screenRotateForward :: W.StackSet i l a sid sd -> W.StackSet i l a sid sd screenRotateForward (W.StackSet current visible others floating) = do let screens = current : visible workspaces = rcycle $ map W.workspace screens (current':visible') = zipWith (\s w -> s {workspace = w} ) screens workspaces in W.StackSet current' visible' others floating where rcycle l = last l : l