【问题标题】:XMonad spawn programs on startup in specified workspaceXMonad 在指定工作区启动时生成程序
【发布时间】:2017-11-01 18:17:19
【问题描述】:

我正在尝试配置我的xmonad.hs,以便当我开始会话时,我会在不同的工作区启动一系列不同的程序(例如 1 中的终端;2 中的 Firefox;3 中的 Pidgin)。

我已经查看了XMonad.Actions.SpawnOn,但由于spawnOn 返回一个X () 而不是一个普通的m (),我不能在main = do ... 中使用它。

是否有一个函数接受 X-monad 并返回 IO () 或者是否有其他解决方法?

【问题讨论】:

  • X 是 Monad 的一个实例,因此 X ()m () 一起使用 - 您可以将 do-notation 与 X () 操作一起使用。

标签: haskell xmonad


【解决方案1】:

常见的方法是使用startupHook,它采用X () 动作并在每次启动时执行它。 例如

main = xmonad $ defaultConfig
  { startupHook = do
      spawnOn "workspace1" "program1"
      …
      spawnOn "workspaceN" "programN"
  }

【讨论】:

  • 我根据它们的功能“终端”“Web”“聊天”等调用了我的工作区,但是将这些名称作为 spawnOn 函数的参数传递不适用于某些程序(例如 eclipse)。我目前正在为每个应用程序设置 Manage Hooks,例如 className =? "Firefox" --> doF(W.shift (customWorkspaces !! 1)) 并通过常规生成来生成它们
  • 注意 spawnOn 来自 xmonad-contrib 包
  • 1) 默认工作区名称是什么? 2)这将在重新加载时启动新应用程序,而不仅仅是重新启动。这如何防止重启?
猜你喜欢
  • 1970-01-01
  • 2019-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-11
  • 1970-01-01
  • 1970-01-01
  • 2019-12-09
相关资源
最近更新 更多