LINUX.ORG.RU

Проблемы компиляции XMonad

 , ,


0

2

Доброго времени суток!

При попытки выполнить:

xmonad --recompile

Выпадает следующая ошибка:

Error detected while loading xmonad configuration file: /home/ivan/.xmonad/xmonad.hs


xmonad.hs:23:18:

    Could not find module 'XMonad.StackSet'

    There are files missing in the 'xmonad-0.11' package, try running 'ghc-pkg check'

    Use -v to see a list of the files searched for.

Please check the file for errors.

Система - свежеустановленный Arch. XMonad ставился с помощью pacman.

Стоят пакеты:

xmonad 0.11-6

xmonad-contrib 0.11-7

Переустановка не помогает.

Встречался ли кто-нибудь с данной проблемой, есть ли пути решения?

Спасибо за помощь.


Ответ на: комментарий от keyran

Еще, ghc переставлял?

Да, не помогло.

А если ставить cabal, то как удалить пакеты pacman'a (после pacman -Rsc сами пакеты остаются в скаченном виде)?

vanzef
() автор топика
Ответ на: комментарий от vanzef

Поставить их или переимеовать xmonad.hs в xmonad.txt и открыть в ff.
Потом скопировать и в pastebin, например, или сюда.
Cудя по вопросам, нужно немного подрасти для xmonad.

anonymous
()
Ответ на: комментарий от anonymous

Вот:

import XMonad
import Data.Monoid

import XMonad.Actions.CycleWS
import XMonad.Actions.FloatKeys
import XMonad.Actions.GridSelect

import XMonad.Hooks.DynamicHooks
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Hooks.ManageHelpers
import XMonad.Hooks.UrgencyHook
import XMonad.ManageHook

import XMonad.Prompt
import XMonad.Prompt.Shell
import XMonad.Util.Run

import Graphics.X11
import System.Exit
import System.IO

import qualified XMonad.StackSet as W
import qualified Data.Map        as M

main :: IO ()
main = do
    dzen        <- spawnPipe myStatusBar
    conkyTop    <- spawnPipe myTopBar
    conkyMPD    <- spawnPipe myMPDBar
--    conkyBot    <- spawnPipe myBottomBar
    xmonad $ myUrgencyHook $ defaults

myTerminal          = "urxvt"
myFocusFollowsMouse :: Bool
myFocusFollowsMouse = True
myClickJustFocuses :: Bool
myClickJustFocuses  = False
myBorderWidth       = 1
myModMask           = mod4Mask
myWorkspaces        = ["All","www","code","etc","media"]
myDzenFgColor       = "#555555"
myNormalBorderColor = "#dddddd"
myFocusedBorderColor = "#ff0000"
myNormalFgColor     = "#ffffff"
myNormalBgColor     = "#222222"

myStatusBar         = "dzen2 -x '0' -y '0'  -h '16' -w '1000' -ta 'l' -fg '" ++ myNormalFgColor ++ "' -bg '" ++ myNormalBgColor ++ "'"
myTopBar            = "conky -c .conkytop | dzen2 -x '1000' -y '0' -h '16' -w '366' -ta 'r' -fg '" ++ myDzenFgColor ++ "' -bg '" ++ myNormalBgColor ++ "'"
myBottomBar         = "conky -c .conkybot | dzen2 -x '0' -y '752' -h '16' -w '1366' -ta 'r' -fg '" ++ myDzenFgColor ++ "' -bg '" ++ myNormalBgColor ++ "'"
myMPDBar            = "conky -c .conkytop | dzen2 -x '0' -y '750' -h '16' -w '1366' -ta 'r' -fg '" ++ myDzenFgColor ++ "' -bg '" ++ myNormalBgColor ++ "'"

myUrgencyHook = withUrgencyHook dzenUrgencyHook
    { args = ["-x", "0", "-y", "1184", "-h", "16", "-w", "1920", "-ta", "r", "-expand", "l", "-fg", "" ++ myNormalFgColor ++ "", "-bg", "" ++ myNormalBgColor ++ ""] }
myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $

    -- launch a terminal
    [ ((modm .|. shiftMask, xK_Return), spawn $ XMonad.terminal conf)

    -- launch dmenu
    , ((modm,               xK_p     ), spawn "dmenu_run")

    -- launch gmrun
    , ((modm .|. shiftMask, xK_p     ), spawn "gmrun")

    -- close focused window
    , ((modm .|. shiftMask, xK_c     ), kill)

     -- Rotate through the available layout algorithms
    , ((modm,               xK_space ), sendMessage NextLayout)

    --  Reset the layouts on the current workspace to default
    , ((modm .|. shiftMask, xK_space ), setLayout $ XMonad.layoutHook conf)

    -- Resize viewed windows to the correct size
    , ((modm,               xK_n     ), refresh)

    -- Move focus to the next window
    , ((modm,               xK_Tab   ), windows W.focusDown)

    -- Move focus to the next window
    , ((modm,               xK_j     ), windows W.focusDown)

    -- Move focus to the previous window
    , ((modm,               xK_k     ), windows W.focusUp  )

    -- Move focus to the master window
    , ((modm,               xK_m     ), windows W.focusMaster  )

    -- Swap the focused window and the master window
    , ((modm,               xK_Return), windows W.swapMaster)

    -- Swap the focused window with the next window
    , ((modm .|. shiftMask, xK_j     ), windows W.swapDown  )

    -- Swap the focused window with the previous window
    , ((modm .|. shiftMask, xK_k     ), windows W.swapUp    )

    -- Shrink the master area
    , ((modm,               xK_h     ), sendMessage Shrink)

    -- Expand the master area
    , ((modm,               xK_l     ), sendMessage Expand)

    -- Push window back into tiling
    , ((modm,               xK_t     ), withFocused $ windows . W.sink)

    -- Increment the number of windows in the master area
    , ((modm              , xK_comma ), sendMessage (IncMasterN 1))

    -- Deincrement the number of windows in the master area
    , ((modm              , xK_period), sendMessage (IncMasterN (-1)))

    -- Toggle the status bar gap
    -- Use this binding with avoidStruts from Hooks.ManageDocks.
    -- See also the statusBar function from Hooks.DynamicLog.
    --
    -- , ((modm              , xK_b     ), sendMessage ToggleStruts)

    -- Quit xmonad
    , ((modm .|. shiftMask, xK_q     ), io (exitWith ExitSuccess))

    -- Restart xmonad
    , ((modm              , xK_q     ), spawn "xmonad --recompile; xmonad --restart")

    -- Run xmessage with a summary of the default keybindings (useful for beginners)
    --, ((modMask .|. shiftMask, xK_slash ), spawn ("echo \"" ++ help ++ "\" | xmessage -file -"))
    ]
    ++

    --
    -- mod-[1..9], Switch to workspace N
    -- mod-shift-[1..9], Move client to workspace N
    --
    [((m .|. modm, k), windows $ f i)
        | (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9]
        , (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]]
    ++

    --
    -- mod-{w,e,r}, Switch to physical/Xinerama screens 1, 2, or 3
    -- mod-shift-{w,e,r}, Move client to screen 1, 2, or 3
    --
    [((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)]]

myMouseBindings (XConfig {XMonad.modMask = modm}) = M.fromList $

    -- mod-button1, Set the window to floating mode and move by dragging
    [ ((modm, button1), (\w -> focus w >> mouseMoveWindow w
                                       >> windows W.shiftMaster))

    -- mod-button2, Raise the window to the top of the stack
    , ((modm, button2), (\w -> focus w >> windows W.shiftMaster))

    -- mod-button3, Set the window to floating mode and resize by dragging
    , ((modm, button3), (\w -> focus w >> mouseResizeWindow w
                                       >> windows W.shiftMaster))

    -- you may also bind events to the mouse scroll wheel (button4 and button5)
    ]

myLayout = avoidStruts (tiled ||| Mirror tiled ||| Full) ||| Full
  where
     -- default tiling algorithm partitions the screen into two panes
     tiled   = Tall nmaster delta ratio

     -- The default number of windows in the master pane
     nmaster = 1

     -- Default proportion of screen occupied by master pane
     ratio   = 1/2

     -- Percent of screen to increment by when resizing panes
     delta   = 3/100

myManageHook = composeAll
    [ className =? "MPlayer"        --> doFloat
    , className =? "Gimp"           --> doFloat
    , resource  =? "desktop_window" --> doIgnore
    , resource  =? "kdesktop"       --> doIgnore ]

myEventHook = mempty

myLogHook = dynamicLogWithPP dzenPP

myStartupHook = return ()

defaults = defaultConfig {
      -- simple stuff
        terminal           = myTerminal,
        focusFollowsMouse  = myFocusFollowsMouse,
        clickJustFocuses   = myClickJustFocuses,
        borderWidth        = myBorderWidth,
        modMask            = myModMask,
        workspaces         = myWorkspaces,
        normalBorderColor  = myNormalBorderColor,
        focusedBorderColor = myFocusedBorderColor,

      -- key bindings
        keys               = myKeys,
        mouseBindings      = myMouseBindings,

      -- hooks, layouts
        layoutHook         = myLayout,
        manageHook         = myManageHook,
        handleEventHook    = myEventHook,
        logHook            = myLogHook,
        startupHook        = myStartupHook
    }

Конфиг на стадии написания, но всё же.

Cудя по вопросам, нужно немного подрасти для xmonad.

Просто никогда не задавался подобным вопросом. Xmonad же интересен из-за Haskell'а.

vanzef
() автор топика
Ответ на: комментарий от vanzef

да причем тут конфиг. У тебя криво установлен xmonad, xmonad-contrib. Покажи ghc-pkg list и да, ставь с помощью cabal

riso
()
Ответ на: комментарий от vanzef

Seems legit.
Попробуй, действительно, запускать кабальную версию, гуглёж показал, что это скорее арче-проблемы
~/.cabal/bin/xmonad

anonymous
()
Ответ на: комментарий от anonymous

Странно, но он предложил _переустановить_ XMonad, удалении ~/.cabal ни к чему не привело.

При

 cabal install xmonad --reinstall 
выдаёт ошибку
 ld returned 1 exit status
и ещё на терминальный лист.

vanzef
() автор топика
Ответ на: комментарий от vanzef
Prelude> import qualified XMonad.StackSet as W
Prelude W> 

Ох, даже и не знаю, что сказать. Никогда с такими проблемами не сталкивался. Наверное, стоит решить, что чинить и в чём разбиратся arch пакеты или cabal. И от туда идти. В arch посмотреть из чего состоит пакет и всё ли положилось куда надо. В cabal тоже самое.

:~/Dev/ruby/noname/helloWrold$ ls ~/.cabal/lib/xmonad-0.11/ghc-7.6.3/XMonad
Config.hi  Core.hi  Layout.hi  Main.hi  ManageHook.hi  Operations.hi  StackSet.hi
Спокойной ночи.

anonymous
()
Ответ на: комментарий от anonymous

Спокойной ночи, попробую поискать директории связанные с ghc и cabal.

vanzef
() автор топика
Ответ на: комментарий от anonymous

Лол, только сейчас заметил ошибку helloWrold

anonymous
()
Ответ на: комментарий от anonymous

Памяти точно хватало 6GiB RAM.

Проблема решилась удалением ~/.cabal, ~/.ghc и установкой cabal-install на новую систему.

Всем спасибо за помощь!

vanzef
() автор топика
Ответ на: комментарий от keyran

ну для недодистрибутивов да, а для дистров типа gentoo или nix использовать cabal кроме как для песочниц смысла нет.

qnikst ★★★★★
()
Ответ на: комментарий от vanzef

вообще ghc-pkg check и переустановки поломанных должно было хватить.

qnikst ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.