Haron_Prime
так там изменения постоянно вносятся )))
Я вообще пользуюсь тем что на гитхабе, ну а скачанное - хай будэ)))
Да, еще спросить хотел про gaps [(U,18)]
Я вижу что многие этого не применяют, но у меня без него окна на панель налазят... почему - нипайму
Haron_Prime
как-то вообще непонятно для меня организовано...
почему не прописать $ avoidStruts и $ smartBorders отдельно?
типа
$ avoidStruts
$ smartBorders
$ tiled ||| reflectTiled ||| Mirror tiled ||| Circle ||| Grid ||| Full ||| tabbed shrinkText myTabConfig
Разобрался, заработало в таком виде:
со специфичностью для кликабельности, где ws обзываются как (myWorkspaces !! 0)
-- layout
myLayoutHook = gaps [(U,18)]
                $ avoidStruts
                $ smartBorders
                $ onWorkspace (myWorkspaces !! 0) webL
                $ onWorkspace (myWorkspaces !! 1) textL
                ....
                $ standardLayouts
    where
        standardLayouts = (tiled ||| reflectTiled ||| Mirror tiled ||| Circle ||| Grid ||| Full ||| tabbed shrinkText myTabConfig)
                ....
        webL = (tabbed shrinkText myTabConfig ||| layoutHintsWithPlacement (0.5, 0.5) (Tall 1 (3/100) (1/2)) ||| Circle)

        textL = (tabbed shrinkText myTabConfig ||| layoutHintsWithPlacement (0.5, 0.5) (Tall 1 (3/100) (1/2)))
                ....
Я его уже давно себе скачал))) Спасибо! Много от туда узнал и применял.
Да, тут огород нагорожен, но есть и интересные моменты, взял готовый конфиг, допиливаю под себя
Вот тут еще зацепился - хочу чтобы на каждом ws был свой layout.
Есть такой код:
Но почему-то не работает, везде по полной, т.е. все layout работают.

-- layout
myLayoutHook = gaps [(U,18)] $ onWorkspace "1" webL
                $ onWorkspace "4" imL
                $ onWorkspace "5" fullL
                $ onWorkspace "6" webL
                $ onWorkspace "9" gimpL
                $ standardLayouts
    where
        standardLayouts = avoidStruts $ smartBorders $ (tiled ||| reflectTiled ||| Mirror tiled ||| Circle ||| Grid ||| Full ||| tabbed shrinkText myTabConfig)

        --Layouts
        tiled = layoutHintsWithPlacement (0.5, 0.5) (Tall 1 (3/100) (1/2))
        reflectTiled = (reflectHoriz tiled)
        full = noBorders Full
        fullL = avoidStruts $ smartBorders $ full
        tabs = tabbed shrinkText myTabConfig

        --Im Layout
        imL = avoidStruts $
              smartBorders $
              withIM ratio pidginRoster $
              withIM ratio emeseneRoster $
              withIM ratio gajimRoster $
              reflectHoriz $ withIM skypeRatio skypeRoster (reflectTiled ||| Grid) where
                ratio = (1%9)
                -- pidgin
                pidginRoster = And (ClassName "Pidgin") (Role "buddy_list")
                -- skype
                skypeRatio = (1%8)
                skypeRoster = (And (ClassName "Skype") (Not (Role "ConversationsWindow")))
                -- emesene
                emeseneRoster = (Resource "emesene" `And` Title "emesene" `And` ClassName "Emesene")
                -- gajim
                gajimRoster = And (ClassName "Gajim.py") (Role "roster")
        webL = avoidStruts $ smartBorders $ (tabs ||| tiled ||| Circle)

        gimpL = avoidStruts $ withIM (0.11) (Role "gimp-toolbox") $ reflectHoriz $ withIM (0.15) (Role "gimp-dock") (fullL ||| tabs)
Haron_Prime
Правда у меня синтаксис чуть отличается
Главное что заработало) А у меня синтаксис такой потому что сделал кликабельные ws на xmobar по вот этому ману, ну захотелось... ведь в других wm они кликабельны, а мы что - хуже? но... после этого doF перестает работать, хотя с doFloat все норм., и вот нашлось решение с таким синтаксисом.
Haron_Prime
Сам искал подобное - не нашёл
У мну заработало!!! запускает на заданном ws и перекидывает на него
В импорты пишем
import Control.Monad (liftM2)
и далее код такой:

myManageHook :: ManageHook
myManageHook = scratchpadManageHook ( W.RationalRect 0.25 0.25 0.5 0.5 ) <+> ( composeAll . concat $
      [
      [ isDialog --> doCenterFloat ]
    , [ isFullscreen --> doFullFloat ]
    , [(className =? c <||> title =? c <||> resource =? c) --> doIgnore                       | c <- bars   ]
    , [(className =? c <||> title =? c <||> resource =? c) --> doFloat                        | c <- float  ]
    , [(className =? c <||> title =? c <||> resource =? c) --> doCenterFloat                  | c <- cfloat ]
    , [(className =? c <||> title =? c <||> resource =? c) --> doShift (myWorkspaces !! 0) <+> viewShift (myWorkspaces !! 0)   | c <- web    ]    -- i
    , [(className =? c <||> title =? c <||> resource =? c) --> doShift (myWorkspaces !! 1) <+> viewShift (myWorkspaces !! 1)   | c <- text   ]    -- ii
    , [(className =? c <||> title =? c <||> resource =? c) --> doShift (myWorkspaces !! 2) <+> viewShift (myWorkspaces !! 2)   | c <- term   ]    -- iii
    , [(className =? c <||> title =? c <||> resource =? c) --> doShift (myWorkspaces !! 3) <+> viewShift (myWorkspaces !! 3)   | c <- mail   ]    -- iv
    , [(className =? c <||> title =? c <||> resource =? c) --> doShift (myWorkspaces !! 4) <+> viewShift (myWorkspaces !! 4)   | c <- movi   ]    -- v
    , [(className =? c <||> title =? c <||> resource =? c) --> doShift (myWorkspaces !! 5) <+> viewShift (myWorkspaces !! 5)   | c <- docs   ]    -- vi
    , [(className =? c <||> title =? c <||> resource =? c) --> doShift (myWorkspaces !! 6) <+> viewShift (myWorkspaces !! 6)   | c <- graph  ]    -- vii
    , [(className =? c <||> title =? c <||> resource =? c) --> doShift (myWorkspaces !! 7) <+> viewShift (myWorkspaces !! 7)   | c <- media  ]    -- vii
    , [(className =? c <||> title =? c <||> resource =? c) --> doShift (myWorkspaces !! 8) <+> viewShift (myWorkspaces !! 8)   | c <- chat   ]    -- ix
    , [role =? c --> doFloat | c <- im ]     -- place roles on im
      ] )
    where
        bars      = ["xmobar","dzen2","desktop_window"]
        float     = ["feh"]
        cfloat    = ["Xmessage","Gxmessage","Eog","Xscreensaver-demo","Brasero","xclock","Xscreensaver-demo","xfreerdp"]
            ++ ["SimpleScreenRecorder","Evolution-alarm-notify","Evolution","Gns3","Mtpaint","Leafpad","Запустить файл"]
        web       = ["Chromium"]
        text      = ["Geany","Atom"]
        term      = ["lxterminal"]
        mail      = ["Thunderbird"]
        movi      = ["Pithos","Ario","Vlc","Ncmpcpp"]
        docs      = ["libreoffice-calc","libreoffice-writer","VirtualBox","libreoffice"]
        graph     = ["Gimp"]
        media     = ["Wine"]
        chat      = ["Pidgin","Skype"]
        im        = ["nothing"]
        role      = stringProperty "WM_WINDOW_ROLE"
        viewShift = doF . liftM2 (.) W.greedyView W.shift
Там же кажется нашел ответ на предыдущий вопрос, пытаюсь прикрутить...

1.1.2 Shift an app to a workspace and view it
The following will put new FocusMeNow windows on the "doc" workspace and also greedyView that workspace.
import Control.Monad (liftM2)

myManageHook = composeAll
    [ className = "FocusMeNow" --> viewShift "doc"
    -- more hooks
    ]
  where viewShift = doF . liftM2 (.) W.greedyView W.shift
Haron_Prime
после этого он стал стартовать с третьего тега
а раньше всегда с первого
Вот, наткнулся как задать фокус на любом мониторе/ws при старте

-- For example, to focus a specific workspace on the second screen
-- use something like this in startupHook or a key binding:
-- If the requested screen doesn't exist, the action is done on the
-- current screen instead.

import qualified XMonad.StackSet as W
     -- skipped
     , startupHook = onScr 1 W.greedyView "web"
     -- skipped

onScr :: ScreenId -> (WorkspaceId -> WindowSet -> WindowSet) -> WorkspaceId -> X ()
onScr n f i = screenWorkspace n >>= \sn -> windows (f i . maybe id W.view sn)