XMonad如何按名称/类名称关注特定窗口?

时间:2018-05-19 12:07:32

标签: xmonad

我如何专注于像Firefox这样的特定应用程序类型?

我想将它绑定到一个键绑定 - 所以这不会以交互方式完成。

2 个答案:

答案 0 :(得分:1)

您绝对应该看一下XMonad-Actions-WindowGo,尤其是raiseNextMaybe / raiseNext / runOrRaise

类似

((modMask x .|. mod1Mask, xK_BackSpace), raiseNextMaybe (spawn "google-chrome --profile-directory='Default' --app='https://www.evernote.com/Home.action'") (appName =? "www.evernote.com__Home.action"))

另外,请看一下xprop应用程序(它可以获取窗口类和其他属性)

答案 1 :(得分:0)

module WindowFinder where

import XMonad
import qualified XMonad.StackSet as W
import Control.Monad
import Data.Bool  (bool)

findWindows :: String -> X [Window]
findWindows name = do
  withWindowSet $ (\ws -> do
    forM (W.allWindows ws)
      (\w -> do
            s <- withDisplay $ \d -> fmap resClass . liftIO $ getClassHint d w
            return $ bool [] [w] (s == name) :: X [Window]
      ) >>= return . join
    )

X ()背景下:

        win' <- findWindows "Chromium"
        when (length win' > 0)
          (windows $ W.focusWindow $ head win')

当有多个窗口时,上面似乎表现得非常有用。行为似乎是,返回的第一个窗口是当前在工作区上打开的窗口,或者是该应用程序类型的最后一个交互窗口。