
Hi! It looks like `myWorkspaces` in `myConfig` definition is referencing this defintion: myWorkspaces = map show[1..7] instead of the one you actually want. Maybe try adding workspaces as an argument to `myConfig`? Something like this: myConfig workspaces = def { --- blablabla workspaces = workspaces } main :: IO () main = do hostname <- io (getEnv "HOSTNAME") let workspaces = case hostname of Just "Phelsuma" -> myWorkspacesPhelsuma Just "Triturus" -> myWorkspacesTriturus _ -> myWorkspaces xmonad $ ewmh $ dynamicProjects myProjects $ withNavigation2DConfig def $ docks $ withEasySB (statusBarProp "xmobar ~/.xmonad/.xmobarrc" (pure myXmobarPP)) defToggleStrutsKey $ myConfig workspaces -- Best regards, Platon Pronko PGP 2A62D77A7A2CB94E On 2022-09-19 19:01, Ramon Diaz-Uriarte wrote:
Dear All,
I use XMonad on different machines. The configuration is identical, except for the default workspaces, so I'd like to have the config file set the default workspaces automagically. Haskell ignorant here, but googling around I think I am almost there. These are, I think, the relevant pieces
myWorkspaces = map show[1..7] myWorkspacesPhelsuma = map show[1..3] ++ ["top", "sync", "zot", "whats"] myWorkspacesTriturus = map show[1..2] ++ ["top", "sync"]
main :: IO () main = do hostname <- io (getEnv "HOSTNAME") let myWorkspaces = case hostname of "Phelsuma" -> myWorkspacesPhelsuma "Triturus" -> myWorkspacesTriturus _ -> myWorkspaces xmonad $ ewmh $ dynamicProjects myProjects $ withNavigation2DConfig def $ docks $ withEasySB (statusBarProp "xmobar ~/.xmonad/.xmobarrc" (pure myXmobarPP)) defToggleStrutsKey $ myConfig
myConfig = def { --- blablabla workspaces = myWorkspaces }
However, I keep getting an error:
• Couldn't match expected type ‘Maybe String’ with actual type ‘[Char]’ • In the pattern: "Phelsuma" In a case alternative: "Phelsuma" -> myWorkspacesPhelsuma In the expression: case hostname of "Phelsuma" -> myWorkspacesPhelsuma "Triturus" -> myWorkspacesTriturus _ -> myWorkspaces | 882 | "Phelsuma" -> myWorkspacesPhelsuma | ^^^^^^^^^^
(and the same error for the second entry, "Triturus")
This I think should be fairly easy to fix, but I can't find how. I tried writing the case section as
let myWorkspaces = case hostname of Just "Phelsuma" -> myWorkspacesPhelsuma Just "Triturus" -> myWorkspacesTriturus _ -> myWorkspaces
and that does not give me an error, but it seems to ignore the actual hostname and uses the "default" one (the one with workspaces 1 to 7). So I think I am using "Just" incorrectly and possibly also misunderstanding how "let" works in main.
Any suggestions?
Thanks,