お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2016-11-06 09:49:58

kuma1416
新しいメンバ
登録日: 2016-11-05

xmonadでショートカットキーを受け付けなくなる(使えなくなる)

xmonadをしばらく利用しているとキー操作を受け付けなくなってしまい、デスクトップの切り替えや、xmonadの再起動などが行えなくなります。
推定される原因や、原因追求のための手段について教えていただけないでしょうか。

<xmonad.hs>
import XMonad
import DBus
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Util.Run(spawnPipe)
import XMonad.Util.EZConfig(additionalKeys, additionalKeysP)
import XMonad.Actions.SpawnOn
import System.IO
import Graphics.X11.ExtraTypes.XF86
import qualified XMonad.StackSet as W
import XMonad.Hooks.EwmhDesktops
import XMonad.Hooks.ManageHelpers (composeOne, isFullscreen, isDialog,  doFullFloat, doCenterFloat)

myManageHook = composeAll
             -- floatさせるアプリケーション
             [ className =? "Vlc" --> doFloat,
               -- 次はtildaでなくTildaにしないといけない
               className =? "Tilda" --> doFloat
             ]
myManageHook2 = composeAll. concat $
                [ [ className =? c --> doCenterFloat| c <- floats]
                , [ resource =? r --> doIgnore | r <- ignore]
                , [ resource =? "gecko" --> doF (W.shift "net") ]
                , [ isFullscreen --> doFullFloat]
                , [ isDialog --> doCenterFloat]]
where floats = ["sdlpal", "MPlayer", "Gimp", "qemu-system-x86_64", "Gnome-typing-monitor", "Vlc" ]
       ignore = []


main = do
    xmproc <- spawnPipe "/usr/bin/xmobar /home/kuma/.xmobarrc"  -- .xmoabrrcのパスを記述しておく
    xmonad $ defaultConfig
        { manageHook = manageDocks <+> myManageHook <+> myManageHook2 <+> manageHook defaultConfig
        , layoutHook = avoidStruts  $  layoutHook defaultConfig
        , startupHook = myStartupHook
        , logHook = dynamicLogWithPP $ xmobarPP
                        { ppOutput = hPutStrLn xmproc
                        , ppTitle = xmobarColor "green" "" . shorten 50
                        }
--        , modMask = mod4Mask     -- WindowsキーをModキーとしてバインドする
        , handleEventHook    = fullscreenEventHook
        }
        `additionalKeys`
        [ ((mod4Mask .|. shiftMask, xK_z), spawn "xscreensaver-command -lock")
        , ((controlMask, xK_Print), spawn "sleep 0.2; scrot -s")
        , ((0, xK_Print), spawn "scrot")
        ]
        `additionalKeysP`
        myKeys

myStartupHook = spawn "/home/kuma/script/shuffle_wallpaper.sh"

-- ここでデュアルディスプレイに関する設定をした
-- 具体的には、
-- M-S-rを押すことで
-- ディスプレイ0にワークスペース1を出力し
-- ディスプレイ1にワークスペース8を出力
-- するようにしました。
-- 作業していくなかで、どのディスプレイにどのワークスペース
-- が割り振られているか分からなくなるときがあるので、
-- そのときにこれを使うと便利です
myKeys =
        [("M-S-r", do
          screenWorkspace 0 >>= flip whenJust (windows.W.view)
          (windows . W.greedyView) "1"
          screenWorkspace 1 >>= flip whenJust (windows.W.view)
          (windows . W.greedyView) "8")]

<環境>
以下環境でxmonadを利用しています。

PC:Thinkpad X260
OS:Ubuntu16.04LTS

<dmesg>
dmesgの出力は以下の通りです。(抜粋)
[    0.000000] Linux version 4.4.0-45-generic (buildd@lgw01-34) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.2) ) #66-Ubuntu SMP Wed Oct 19 14:12:37 UTC 2016 (Ubuntu 4.4.0-45.66-generic 4.4.21)
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-45-generic.efi.signed root=UUID=49631f38-adbc-4079-b5d3-1dfb79751a3d ro quiet splash vt.handoff=7

オフライン

 

Board footer

Powered by FluxBB