XMonad 0.13

Мне кажется мы не правильно начали =) Сейчас вы все за меня напишите, а я ни в зуб ногой, где там что. Предлагаю сделать так: я остановлюсь на минимальном рабочем конфиге, а вы подскажите только, как xmobar сделать видимым как обычный бар на всех воркспейсах в постоянном режиме и без перекрывания клиентов. А остальное я сам по мере обучения добавлю.
Я не против )))
за отображение xmobar отвечает manageDocks, который должен быть порисан в manageHook

Кстати, я кое-что сейчас заметил
xmonad.hs:36:58: error:
* Couldn't match type `[t0]`
with `Query (Data.Monoid.Endo WindowSet)`
Expected type: ManageHook
Actual type: [t0]
{manageHook = manageHook def <+> myManageHook,
layoutHook = avoidStruts $ layoutHook defaultConfig,
logHook = dynamicLogWithPP
(xmobarPP
{ppOutput = hPutStrLn xmproc,
ppTitle = xmobarColor "green" "" . shorten 50})}`

                       logHook = dynamicLogWithPP
                                    (xmobarPP
                                               {ppOutput = hPutStrLn xmproc,
                                                ppTitle = xmobarColor "green" "" . shorten 50})}`

лучше так

            , logHook = dynamicLogWithPP def {
                                               ppOutput = System.IO.hPutStrLn xmproc
                                             , ppTitle = xmobarColor "green" "" . shorten 50
                                             }

Последняя попытка )))

UPD 3

-- Базовые модули
import XMonad hiding ( (|||) )  -- Главный модуль
import Data.List
import Data.Ratio ((%))
import Foreign.C (CChar)
import Graphics.X11.Xlib
import Graphics.X11.ExtraTypes.XF86
import System.Exit
import System.IO
import qualified Data.Map        as M
import qualified Data.ByteString as B
import qualified XMonad.StackSet as W -- Управление клиентами (окнами)
-- Хуки
import XMonad.Hooks.DynamicLog -- Хук для обновления информации в баре
import XMonad.Hooks.ManageDocks -- Автоматическое управление программами типа док (баром)
import XMonad.Hooks.ManageHelpers -- Доп.функции ManageHooks
import XMonad.Hooks.UrgencyHook hiding (Never)
import XMonad.Hooks.EwmhDesktops
-- Утили
import XMonad.Util.Run(spawnPipe) -- Для запуска внешний приложений/скриптов
import XMonad.Util.EZConfig(additionalKeys) -- Улучшение конфигурации, использование доп.хоткеев
-- Пользовательские настройки
myTerm = "urxvt"
myBorderColor = "#000000"
myBorderColorFocused = "#8E8E8E"
myModMask = mod1Mask

myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
    [
      ((modm .|. shiftMask, xK_q), kill)
    , ((modm, xK_Right), windows W.focusDown)
    , ((modm, xK_Left),  windows W.focusUp)
    , ((modm, xK_Down),  windows W.focusDown)
    , ((modm, xK_Up),    windows W.focusUp)
    , ((0 .|. controlMask, xK_Print), spawn "scrot -u -q 85 home/seggoy/Documents/screens/%m-%d-%Y-%H-%M-%S-focused.png")
    ]
    ++
    [((m .|. modm, k), windows $ f i)
        | (i, k) <- zip (XMonad.workspaces conf) [xK_1, xK_2, xK_3, xK_4, xK_5, xK_6, xK_7, xK_8, xK_9, xK_0, xK_minus, xK_equal]
        , (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]]

    ++
    [((m .|. modm, key), screenWorkspace sc >>= flip whenJust (windows . f))
        | (key, sc) <- zip [xK_w, xK_e, xK_r] [0..]
        , (f, m) <- [(W.view, 0), (W.shift, shiftMask)]]

-- Mouse bindings: default actions bound to mouse events
myMouseBindings (XConfig {XMonad.modMask = modm}) = M.fromList $
    [ ((modm, button1), (\w -> focus w >> mouseMoveWindow w
                                       >> windows W.shiftMaster))
    , ((modm, button2), (\w -> focus w >> windows W.shiftMaster))
    , ((modm, button3), (\w -> focus w >> mouseResizeWindow w
                                       >> windows W.shiftMaster))
    ]

myManageHook = composeAll . concat $
-- Тут должны быть правила для размещения окон
    [

      [isDialog       --> doCenterFloat]

    , [isFullscreen   --> doFullFloat]

    , [transience']

    , [manageDocks]
    ]

main = do -- главная функция
    xmproc <- spawnPipe "/usr/bin/xmobar ~/.xmobarrc" -- Подключение XMobar
    xmonad $ ewmh $ withUrgencyHookC NoUrgencyHook urgencyConfig def
        {
             terminal = myTerm
            , borderWidth = 1
            , modMask = myModMask
            , keys = myKeys
            , normalBorderColor = myBorderColor
            , focusedBorderColor = myBorderColorFocused
            , manageHook =  manageHook def <+> myManageHook
            , layoutHook = avoidStruts  $  layoutHook defaultConfig
            , logHook = dynamicLogWithPP def {
                                               ppOutput = System.IO.hPutStrLn xmproc
                                             , ppTitle = xmobarColor "green" "" . shorten 50
                                             }
        }
Gnome 2 >> Unity >> KDE 4 >> Openbox >> Awesome >> Xmonad
GitHub , BitBuket
По последнему конфигу, ошибок не появилось, но xmobar зараза все равно везде залезает...
P.S> у некотрых наблюдались подобные проблемы с отображением дока
Они использовали gaps - в этом топике есть конфиг [email protected] - у него используется именно гапс
Смотрите на предыдущих страницах. Примерно страниц 20 назад.
Если сходу найду, то дам ссылку на пост
Gnome 2 >> Unity >> KDE 4 >> Openbox >> Awesome >> Xmonad
GitHub , BitBuket
Seggoy
По последнему конфигу, ошибок не появилось, но xmobar зараза все равно везде залезает...
похоже, что имено такая ситуация, как я описал в предыдущем сообщении
/me ушёл искать нужный топик
Gnome 2 >> Unity >> KDE 4 >> Openbox >> Awesome >> Xmonad
GitHub , BitBuket
топик не нашёл, но нашёл его конфиг на гитхабе
import XMonad.Layout.Gaps
........
myLayoutHook =  avoidStruts
.......
                $ gaps [(U,23)]
......
main = do
    spawn "feh --bg-center /usr/share/backgrounds/003.jpg"
    xmproc <- spawnPipe "xmobar ~/.xmonad/xmobar.hs"
    xmonad $ withUrgencyHook NoUrgencyHook $ ewmh $ def {
              manageHook = myManageHook <+> manageDocks
            , modMask = mod4Mask
            , layoutHook = myLayoutHook
......

В общем, смотрите, как у него прописано/

Честно говоря, я вообще не понимаю, почему у некоторых не работает manageDocks......
У меня он с самого начала работал как надо. И продолжает работать до сих пор
Никаких гапсов не использую
Gnome 2 >> Unity >> KDE 4 >> Openbox >> Awesome >> Xmonad
GitHub , BitBuket
myLayoutHook нужно будет прописать примерно в таком виде
myLayoutHook =  avoidStruts
                $ gaps [(U,23)]
                $ tiled ||| Mirror tiled ||| Full
                  where
                    tiled = Tall nmaster delta ratio
                    nmaster = 1
                    delta = 3/100
                    ratio = 1/2
На сегодня всё.
Пойду кину посмотрю.
Удачи в освоении xmonad!!!

P.S> хотя... с avoidStruts должен и manageDocks нормально отрабатывать, без гапса
Пробовать надо.

layoutHook = avoidStruts (tall ||| mirror tall ||| ...)
                  where  tall = Tall 1 (3/100) (1/2)
https://hackage.haskell.org/package/xmonad-contrib-0.13/docs/XMonad-Hooks-ManageDocks.html
Gnome 2 >> Unity >> KDE 4 >> Openbox >> Awesome >> Xmonad
GitHub , BitBuket
Seggoy, рекомендую установить простой тайлинговый WM и работать с ним, а появиться время и желание, настраивай Xmonad, но не все сразу, а добавляй постепенно нужные функции и старайся понять смысл - получилось, двигайся дальше.
Иначе ничего хорошего тебе это не даст - будет обычный копипаст и что то добавить свое ты просто не сможешь. А держать в системе несколько WM никто не запрещает.
Ошибки не исчезают с опытом - они просто умнеют
Имхо, самое главное - RTFM
В манах для каждого модуля всё подробно прописано.
Но... всего в голове не удержишь. Вот и я забыл, что помимо указания модуля manageDocks нужно вдобавок прописывать layoutHook = avoidStruts etc
Старею.....
Gnome 2 >> Unity >> KDE 4 >> Openbox >> Awesome >> Xmonad
GitHub , BitBuket
vasek
Seggoy, рекомендую установить простой тайлинговый WM и работать с ним, а появиться время и желание, настраивай Xmonad, но не все сразу, а добавляй постепенно нужные функции и старайся понять смысл - получилось, двигайся дальше.
Иначе ничего хорошего тебе это не даст - будет обычный копипаст и что то добавить свое ты просто не сможешь. А держать в системе несколько WM никто не запрещает.
У меня i3 сейчас стоит, которым до этого пользовался, в качестве основного.
Haron_Prime
myLayoutHook нужно будет прописать примерно в таком виде
myLayoutHook =  avoidStruts
                $ gaps [(U,23)]
                $ tiled ||| Mirror tiled ||| Full
                  where
                    tiled = Tall nmaster delta ratio
                    nmaster = 1
                    delta = 3/100
                    ratio = 1/2
На сегодня всё.
Пойду кину посмотрю.
Удачи в освоении xmonad!!!

P.S> хотя... с avoidStruts должен и manageDocks нормально отрабатывать, без гапса
Пробовать надо.

layoutHook = avoidStruts (tall ||| mirror tall ||| ...)
                  where  tall = Tall 1 (3/100) (1/2)
https://hackage.haskell.org/package/xmonad-contrib-0.13/docs/XMonad-Hooks-ManageDocks.html
Спасибо за терпение и помощь! Буду разбираться, как этого гада без гапсов поставить на место.
 
Зарегистрироваться или войдите чтобы оставить сообщение.