gpt4 book ai didi

x11 - 如何在 XMonad 中按应用程序/类名聚焦窗口

转载 作者:行者123 更新时间:2023-12-04 21:38:51 26 4
gpt4 key购买 nike

我正在尝试做相当于

xdotool search "Chromium" windowactivate --sync key --clearmodifiers ctrl+r

即我想切换到 Chromium 并重新加载当前页面。
但是,使用 XMonad 我收到以下错误:
Your windowmanager claims not to support _NET_ACTIVE_WINDOW, so the attempt to activate the window was aborted.

XMonad 中有没有办法以编程方式切换到某个应用程序?

最佳答案

这是我使用的,受 XMonad.Util.WindowBringer 启发。您需要安装 Text.PCRE 包。如果我忘记了任何导入语句,我们深表歉意。

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)

原则上,您应该能够将 key 绑定(bind)到 warpTo "Chromium" >> spawn "xdotool key --clearmodifiers ctrl+r"。 .但是,这对我不起作用,显然是由于我不理解的一些比赛条件。幸运的是,我发现以下工作:
warpTo "Chromium" >> spawn "sleep 0.2; xdotool key --clearmodifiers ctrl+r"

您可能能够以更短的延迟逃脱。

关于x11 - 如何在 XMonad 中按应用程序/类名聚焦窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31864478/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com