Package: xmonad
Version: 0.11-6+b1
Severity: important

Dear Maintainer,

I use a specific layout for Firefox on my "0" workspace (that is a
simpleTabbed noBorders layout). Sometimes (but not always I failed to
find how to reproduce this behavior) xmonad goes in a loop when I
switch from one firefox window to another.

After I have ended this loop (by pressing again the keys that triggers
the switch) the focus stays on one of the firefox window (although not
the one currently displayed). The only way to break this state is to
open a new firefox window.

I have also this strange bug on other workspaces but less often.

I have attached my xmonad.hs


-- System Information:
Debian Release: jessie/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 3.13-1-amd64 (SMP w/4 CPU cores)
Locale: LANG=fr_BE.UTF-8, LC_CTYPE=fr_BE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages xmonad depends on:
ii  libc6         2.18-4
ii  libffi6       3.0.13-12
ii  libgmp10      2:5.1.3+dfsg-1
ii  libx11-6      2:1.6.2-1
ii  libxext6      2:1.3.2-1
ii  libxinerama1  2:1.1.3-1
ii  libxrandr2    2:1.4.2-1
ii  x11-utils     7.7+1

Versions of packages xmonad recommends:
ii  libghc-xmonad-dev  0.11-6+b1
pn  libghc-xmonad-doc  <none>
ii  xfonts-base        1:1.0.3

Versions of packages xmonad suggests:
ii  suckless-tools [dmenu]  40-1

-- no debconf information

--
(°> Nicolas Évrard
( ) Liège
 `¯
import XMonad
import Graphics.X11.ExtraTypes.XF86
import qualified XMonad.StackSet as W
import qualified Data.Map as M

import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Hooks.ManageHelpers
import XMonad.Hooks.UrgencyHook
import XMonad.Layout.NoBorders
import XMonad.Layout.Tabbed
import XMonad.Layout.Minimize
import XMonad.Layout.BoringWindows
import XMonad.Layout.PerWorkspace
import XMonad.Layout.WindowNavigation
import XMonad.Layout.Reflect
import XMonad.Actions.CycleWS
import XMonad.Actions.UpdatePointer
import XMonad.Actions.WindowBringer
import XMonad.Util.Run(spawnPipe)
import XMonad.Util.EZConfig
import System.IO

{-swapFirst :: X()-}
{-swapFirst = windows $ W.modify' swapFirst'-}

{-swapFirst' :: W.Stack a -> W.Stack a-}
{-swapFirst' (W.Stack t [] []) = W.Stack t [] []-}
{-swapFirst' (W.Stack t [] (r:rs)) = W.Stack r [] (t:rs)-}
{-swapFirst' (W.Stack t ls rs) = swapFirst' (W.Stack t [] (ls ++ rs))-}

belgian_azerty = [xK_ampersand, xK_eacute, xK_quotedbl, xK_apostrophe
        , xK_parenleft, xK_section, xK_egrave, xK_exclam, xK_ccedilla
        , xK_agrave]
azertyKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
    [((m .|. modm, k), windows $ f i)
        | (i, k) <- zip (workspaces conf) belgian_azerty,
          (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]]

myLayout = avoidStruts (smartBorders tiled ||| smartBorders simpleTabbed) ||| noBorders Full
  where
    tiled = reflectHoriz $ windowNavigation (boringWindows (minimize (Tall 1 (3 / 100) (1 / 2))))

myHook:: ManageHook
myHook = composeAll
            [ className =? "Vlc"  --> doFloat
            , className =? "Pqiv" --> doFloat
            ] <+> composeOne
            [ transience
            ]

main = do
    xmproc <- spawnPipe "/usr/bin/xmobar"
    xmonad $ withUrgencyHook NoUrgencyHook
           $ defaultConfig
                { modMask = mod4Mask
                , focusedBorderColor = "white"
                , normalBorderColor = "black"
                , keys = azertyKeys <+> keys defaultConfig
                , workspaces = workspaces defaultConfig ++ ["0"]
                , manageHook = manageDocks <+> myHook <+> manageHook defaultConfig
                , layoutHook = onWorkspace "0" ((avoidStruts . noBorders) simpleTabbed) $ myLayout
                , logHook = (dynamicLogWithPP $ xmobarPP
                    { ppOutput = hPutStrLn xmproc
                    , ppTitle = xmobarColor "green" "" . shorten 50
                    }) >> updatePointer (Relative 0.5 0.5)
                } `additionalKeys`
                [ ((mod4Mask,               xK_Return),         spawn "urxvtc")
                , ((mod4Mask,               xK_F1),             spawn "xtrlock")
                , ((0,                      xF86XK_AudioMute),  spawn "amixer sset Master toggle")
                , ((mod4Mask,               xK_r),              spawn "dmenu_run")
                , ((mod4Mask,               xK_u),              focusUrgent)
                , ((mod4Mask .|. shiftMask, xK_a),              kill)
                , ((mod4Mask,               xK_Tab),            toggleWS)
                {-, ((mod4Mask,               xK_Escape),         swapFirst)-}
                , ((mod4Mask,               xK_m),              withFocused minimizeWindow)
                , ((mod4Mask .|. shiftMask, xK_m),              sendMessage RestoreNextMinimizedWin)
                , ((mod4Mask,               xK_h),              sendMessage $ Go R) -- inverted direction
                , ((mod4Mask,               xK_l),              sendMessage $ Go L) -- because of reflectHoriz
                , ((mod4Mask,               xK_g),              gotoMenu)
                ] `removeKeys` [(mod4Mask, n) | n <- [xK_p]]

Reply via email to