2012-06-11 4 views
10

Ich versuche, meine xmonad.hs so zu konfigurieren, dass wenn ich meine Sitzung starte ich ein Array von verschiedenen Programmen auf verschiedenen Arbeitsbereichen (wie Terminal in 1; Firefox in 2; Pidgin in 3).XMonad spawn Programme beim Start im angegebenen Arbeitsbereich

Ich sah bereits in die XMonad.Actions.SpawnOn, sondern als spawnOn kehrt mit einem X() und nicht mit einer gemeinsamen m() kann ich es nicht in main = do ... verwenden.

Gibt es eine Funktion, die eine X -Monade dauert und mit IO() zurückkehrt, oder gibt es eine andere Problemumgehung?

+0

X ist eine Instanz von Monad, also 'X()' arbeitet mit 'm()' - Sie können Do-Notation mit 'X()' Aktionen verwenden. – amindfv

Antwort

8

Der übliche Weg ist die Verwendung startupHook, die X() Aktion dauert und führt es bei jedem Start. Zum Beispiel

+1

Ich habe meine Arbeitsbereiche entsprechend ihrer Funktion "Terminal" "Web" "Chat" usw. aufgerufen, aber diese Namen als Argumente für die spawnOn-Funktion zu übergeben funktioniert nicht mit bestimmten Programmen (zB Eclipse). Ich arbeite derzeit daran, um für jede Anwendung Manage Hooks einzurichten, wie className =? "Firefox" -> doF (W.shift (customWorkspaces !! 1)) und spawnen sie mit einem regulären Spawn – salbeira

+4

Hinweis 'spawnOn' stammt aus dem xmonad-contrib Paket – amindfv

+1

Ich habe {startupHook = do spawnOn" workspace2 "" emacs " }, aber das Programm wird erst nach dem Anmelden am ersten Arbeitsbereich gestartet, oder am aktuellen Arbeitsbereich, wenn ich xmonad neu starte. –

Verwandte Themen