gpt4 book ai didi

haskell - 如何使用其他工作区上的应用程序启动 xmonad

转载 作者:行者123 更新时间:2023-12-04 13:41:41 29 4
gpt4 key购买 nike

我正在尝试编写一个 xmonad.hs,它在启动时会在某些工作区上启动一些应用程序。其中几个应用程序(例如, atop )将在终端内运行( urxvt 是我的偏好)。

这已经被问过几次了,例如,here , here ,并在 XMonad FAQ 上斜着触及.

但是,这些依赖于:

  • 使用 spawnOn来自 XMonad.Actions.SpawnOn ,哪个平面不起作用(用 urxvt 进行测试,还有 xclock 作为一个简单的例子);它被发送到当前工作区。
  • 使用 spawn prog >> windows $ greedyView <workspace> ,这有点工作,但有主要的时间问题 - 例如,如果你连续运行两个,使用不同的工作区,两个编最终都在后一个工作区。 FWIW,我尝试使用 threaddelay 来辅助;它没有任何明显的区别,即使在 spawn 之间有 10 秒的延迟(我记得 threadDelay 以微秒为单位,因此使用了 10000000)。
  • 依赖于对程序使用通用 Hook - 这意味着每当我启动它们时,它们都会被发送到给定的工作区。那不是我想要的;我只是希望它们在启动时放在那里。

  • 相关地,令我惊讶的是 API 不允许我启动一个应用程序,然后给我一个对该应用程序/窗口的引用(可能会超时);以便我可以自信地发送 该应用程序/窗口到工作区。

    任何帮助将不胜感激。

    最佳答案

    安装 wmctrl

    sudo apt install wmctrl

    并创建一个脚本(在本例中,第二个工作区( -t 1 )上的雷鸟):

    #!/bin/sh

    (thunderbird &) & sleep 5 &&
    sh -c "wmctrl -i -r `wmctrl -l | grep Thunderbird` -t 1"

    要在 wmctrl 上知道您的应用程序名称,您可以通过点击终端来查看它:
    wmctrl -l

    并将其替换为脚本中的正确名称。

    小心使用大写字母(“Thunderbird”而不是“thunderbird”)!!

    在 3d 工作区 ( -t 2 ) 上使用 Firefox 的其他示例:

    #!/bin/sh
    (firefox &) & sleep 5 &&
    sh -c "wmctrl -i -r `wmctrl -l | grep Firefox` -t 2"

    奖金 :

    这是在启动时执行的命令:

    sh -c "thunderbird  & sleep 5 && wmctrl -i -r `wmctrl -l | grep Thunderbird` -t 1"

    使用 Cinnamon 在 Debain 10 上工作。但应该适用于所有人

    关于haskell - 如何使用其他工作区上的应用程序启动 xmonad,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56197066/

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