Hier ist was ich verwende, inspiriert von XMonad.Util.WindowBringer. Sie müssen das Text.PCRE-Paket installieren. Entschuldigung, wenn ich irgendwelche Importanweisungen vergessen habe.
import XMonad
import qualified XMonad.StackSet as W
import XMonad.Util.NamedWindows (getName)
import Control.Applicative ((<$>))
import Data.List (find)
import Text.Regex.PCRE ((=~))
findWindow :: String -> X (Maybe Window)
findWindow regex = do
wmap <- concat <$> (mapM mappings =<< (W.workspaces <$> gets windowset))
:: X [(String, Window)]
return (snd <$> find ((=~ regex) . fst) wmap)
where mappings :: WindowSpace -> X [(String, Window)]
mappings ws = mapM mapping $ W.integrate' (W.stack ws)
mapping w = flip (,) w <$> show <$> getName w
warpTo :: String -> X()
warpTo regex =
findWindow regex >>= (flip whenJust $ windows . W.focusWindow)
Grundsätzlich sollten Sie dann in der Lage sein, einen Schlüssel zu warpTo "Chromium" >> spawn "xdotool key --clearmodifiers ctrl+r"
zu binden. Allerdings funktioniert das bei mir nicht, anscheinend aufgrund einer Race Condition, die ich nicht verstehe. Zum Glück finde ich, dass Folgendes funktioniert:
warpTo "Chromium" >> spawn "sleep 0.2; xdotool key --clearmodifiers ctrl+r"
Sie könnten mit einer kürzeren Verzögerung davonkommen.