From 70ab8af77f49296450adab82ad0d84ca06c3e19d Mon Sep 17 00:00:00 2001 From: Ahmet Hakan Karaaslan Date: Wed, 28 Apr 2021 17:15:17 +0000 Subject: [PATCH] Add doCopy and doCopyToAll --- .xmonad/xmonad.hs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/.xmonad/xmonad.hs b/.xmonad/xmonad.hs index 6980caa..e0e6290 100644 --- a/.xmonad/xmonad.hs +++ b/.xmonad/xmonad.hs @@ -6,7 +6,7 @@ import System.Exit (exitSuccess) import qualified XMonad.StackSet as W -- Actions -import XMonad.Actions.CopyWindow (kill1) +import XMonad.Actions.CopyWindow (kill1, killAllOtherCopies, copyWindow) import XMonad.Actions.CycleWS (Direction1D(..), moveTo, shiftTo, WSType(..), nextScreen, prevScreen) import XMonad.Actions.GridSelect import XMonad.Actions.MouseResize @@ -305,6 +305,23 @@ myWorkspaceIndices = M.fromList $ zipWith (,) myWorkspaces [1..] -- (,) == \x y clickable ws = ""++ws++"" where i = fromJust $ M.lookup ws myWorkspaceIndices +-- 'doCopy' copies the managed window into another workspace. +-- If you use this feature then you need to change your kill keybinding +-- from kill1 to killAllOtherCopies <+> kill1 +-- I personally have two different keybindings, one for killing only copies, one for killing all of them. +doCopy :: WorkspaceId -> ManageHook +doCopy m = ask >>= \w -> doF (copyWindow w m) + +-- 'doCopyToAll' simply copies managed window into the all workspaces. +-- Since scracthpads and dynamic workspaces are not presented in the 'myWorkspaces' +-- they will not be affected. I personally use this feature for my webcam. +-- , title =? "video - mpv" --> doFloat <+> doCopyToAll +-- If you use this feature then you need to change your kill keybinding +-- from kill1 to killAllOtherCopies <+> kill1 +-- I personally have two different keybindings, one for killing only copies, one for killing all of them. +doCopyToAll :: ManageHook +doCopyToAll = foldr (\w rest -> doCopy (w) <+> rest) (doCopy (myWorkspaces !! 1)) myWorkspaces + myManageHook :: XMonad.Query (Data.Monoid.Endo WindowSet) myManageHook = composeAll -- 'doFloat' forces a window to float. Useful for dialog boxes and such.