diff options
| author | Josh Rahm <rahm@google.com> | 2022-08-03 15:27:34 -0600 |
|---|---|---|
| committer | Josh Rahm <joshuarahm@gmail.com> | 2022-10-09 12:19:46 -0600 |
| commit | 0b56ef1973acb421c2230819bea811453addba2e (patch) | |
| tree | 663a429539a3efa343190137f7c9a2c09cef91b8 /src/Rahm/Desktop | |
| parent | 258acd15d165c5fc4ccedeaa890b04bd421e887c (diff) | |
| download | rde-0b56ef1973acb421c2230819bea811453addba2e.tar.gz rde-0b56ef1973acb421c2230819bea811453addba2e.tar.bz2 rde-0b56ef1973acb421c2230819bea811453addba2e.zip | |
Actually, change the workspace conditional operator.
It was <l₀l₁w₀w₁ to condition on if l₀ is a subset of l₁, but this is
redundant, instead add "?" that conditions of if l₀ is empty.
So the new syntax is
?lw₀w₁ which is read, if the windowset l is not empty, then workspace w₀
else w₁.
This is the same use-case as before. Handy for defining macros to, say,
jump to Spotify if it's not on the current workspace, otherwise jump
to the prior window.
This is now accomplished with (assuming Spotify is marked 's'):
<H-g>?&s@.'@s
This reads as, if (?) the intersection between the Spotify window and the
windows on the current workspace (&s@.) is not empty (if spotify is on
the current window), go to the last workspace ('), otherwise go to the
workspace Spotify is on (@s).
Diffstat (limited to 'src/Rahm/Desktop')
| -rw-r--r-- | src/Rahm/Desktop/Keys/Wml.hs | 21 |
1 files changed, 6 insertions, 15 deletions
diff --git a/src/Rahm/Desktop/Keys/Wml.hs b/src/Rahm/Desktop/Keys/Wml.hs index 647234c..9074b66 100644 --- a/src/Rahm/Desktop/Keys/Wml.hs +++ b/src/Rahm/Desktop/Keys/Wml.hs @@ -291,27 +291,18 @@ readNextWorkspace = then ws3 else ws4 - (_, _, "<") -> do - lift . fromX $ - logs Trace "Doing thing" + -- ?&s@.'@s - l1 <- map locationWindow <$> readNextLocationSet - - lift . fromX $ - logs Trace "%s" (show l1) - - l2 <- map locationWindow <$> readNextLocationSet + (_, _, "?") -> do + l1 <- readNextLocationSet ws1 <- readNextWorkspace ws2 <- readNextWorkspace - (lift . fromX) $ (logs Trace "%s < %s? %s" (show l1) (show l2) (show $ all (`elem`l2) l1) :: X ()) - (lift . fromX) $ (logs Trace "%s %s" (show $ workspaceName ws1) (show $ workspaceName ws2)) - return $ - if all (`elem`l2) l1 - then ws1 - else ws2 + if null l1 + then ws2 + else ws1 (mask, keysym, _) -> do macro <- (MaybeT . fromX) (Map.lookup (mask, keysym) . workspaceMacros <$> XS.get) |