Я пытаюсь написать xmonad.hs, который при запуске запускает некоторые приложения в некоторых рабочих пространствах. Некоторые из этих приложений (например, atop
) будут работать в терминале (urxvt
- мои предпочтения).
Об этом уже несколько раз спрашивали, например, здесь , здесь , и это косо затрагивается в XMonad FAQ .
Однако они зависят от:
с использованием spawnOn
из XMonad.Actions.SpawnOn
, который не работает (тестирование с urxvt
, а также xclock
в качестве простого примера); оно отправляется в текущую рабочую область.
с использованием spawn prog >> windows $ greedyView <workspace>
, который вроде работает, но имеет серьезные проблемы с синхронизацией - например, если вы запускаете два подряд с разными рабочими пространствами, оба прога оказываются в последнем рабочем пространстве. FWIW, я экспериментировал с использованием threaddelay для помощи; это не имело никакого заметного различия, даже с задержкой в 10 с между порождениями (я вспомнил, что threadDelay находится в микросекундах, и поэтому использовал 10000000).
полагаются на использование общих хуков для программ - это означает, что всякий раз, когда я запускаю их, они отправляются в заданное рабочее пространство. Это не то, что я хочу; Я просто хочу, чтобы они были помещены туда при запуске.
Соответственно, меня удивляет, что API не позволяет мне запускать приложение, а затем дает мне ссылку на это приложение / окно (потенциально с таймаутом); чтобы я мог с уверенностью отправить это приложение / окно в рабочую область.
Любая помощь будет принята с благодарностью.