Как запустить xmonad с приложениями в других рабочих пространствах - PullRequest
3 голосов
/ 18 мая 2019

Я пытаюсь написать xmonad.hs, который при запуске запускает некоторые приложения в некоторых рабочих пространствах. Некоторые из этих приложений (например, atop) будут работать в терминале (urxvt - мои предпочтения).

Об этом уже несколько раз спрашивали, например, здесь , здесь , и это косо затрагивается в XMonad FAQ .

Однако они зависят от:

  1. с использованием spawnOn из XMonad.Actions.SpawnOn, который не работает (тестирование с urxvt, а также xclock в качестве простого примера); оно отправляется в текущую рабочую область.

  2. с использованием spawn prog >> windows $ greedyView <workspace>, который вроде работает, но имеет серьезные проблемы с синхронизацией - например, если вы запускаете два подряд с разными рабочими пространствами, оба прога оказываются в последнем рабочем пространстве. FWIW, я экспериментировал с использованием threaddelay для помощи; это не имело никакого заметного различия, даже с задержкой в ​​10 с между порождениями (я вспомнил, что threadDelay находится в микросекундах, и поэтому использовал 10000000).

  3. полагаются на использование общих хуков для программ - это означает, что всякий раз, когда я запускаю их, они отправляются в заданное рабочее пространство. Это не то, что я хочу; Я просто хочу, чтобы они были помещены туда при запуске.

Соответственно, меня удивляет, что API не позволяет мне запускать приложение, а затем дает мне ссылку на это приложение / окно (потенциально с таймаутом); чтобы я мог с уверенностью отправить это приложение / окно в рабочую область.

Любая помощь будет принята с благодарностью.

...