2012-11-07 65 views
2

我想在xmonad啓動時在不同的工作區啓動一些應用程序(這很重要)。所以,我寫了下面startupHookXMonad在不同的工作區啓動

startupApps :: [String] 
startupApps = ["konsole", "emacs", "firefox", "gvim", "konsole"] 

startupSpawn :: X() 
startupSpawn = zipWithM_ id (map (spawnOn . show) [1..]) startupApps 

但是,它產生在第一工作區的所有應用程序。它似乎是更普遍問題的一部分 - 如果我啓動應用程序,它不會在實際啓動時得到工作區,而會在加載時得到工作區。 因此,如果我在WS1上啓動firefox,然後切換到WS2,firefox將在WS2上產生。

不過,我可以對我的意圖做些什麼?

+0

你看看這個答案嗎? http://superuser.com/questions/478498/start-applications-on-specific-workspaces-in-xmonad –

+0

得到了同樣的效果 – KAction

回答

3

您可以使用manageHook來告訴xmonad將某些應用程序移動到某些桌面。

myManageHook = composeAll . concat $ [ 
    [ className =? "Firefox" --> doF (shiftToWs 2) ] 
    , [ className =? "gvim" --> doF (shiftToWs 3) ] 
    -- and so on 
    ] 

雖然className s可能會有所不同。

+0

雖然這會運行嗎?它會在每一個動作上運行嗎?因爲不會故意轉移窗戶會很煩人...... –

+1

@NoonSilk:不,它只適用於打開新窗口*時。之後你可以任意移動一個窗口。 – bitmask

+0

然後很酷! (愚蠢的註釋限制) –