xmonad - 共通事項 - キー定義

クラウディア 
1. 概要
2. 定義
3. キー定義
4. キーの記述
5. カスタマイズ

1. 概要

 まずは、大元になる定義の話から。

2. 定義

 定義ファイルは、下記にあります。
プラットフォーム    システムファイル     ユーザファイル  備考
ArccoLinux /etc/skel/.xmonad/xmonad.hs ~/.xmonad/xmonad.hs
FreeBSD/usr/local/share/examples/cabal/ghc-8.6.5/xmonad-0.15/xmonad.hs~/.xmonad/xmonad.hs ※1
/usr/local/share/examples/xmonad/xmonad.hs ~/.xmonad/config.hs ※2

 ※1 バージョンが変われば当然、ディレクトリ名は変わるでしょう。
また、自動的にユーザファイルは展開してくれないようなので、既設ユーザ用や「/usr/share/skel/」配下のファイルはコピーして作成する必要があります。

 ※2 ※1は「hs-xmonad-0.15_3」。「hs-xmonad-0.15_4」では、案の定、変わっておりま(ユーザファイルのファイル名まで変わっているのでびっくり)。

3. キー定義

 タイル型ウィンドウマネージャでは、重要となる、mod キー定義に関して  「FreeBSD」

-- modMask lets you specify which modkey you want to use. The default
-- is mod1Mask ("left alt").  You may also consider using mod3Mask
-- ("right alt"), which does not conflict with emacs keybindings. The
-- "windows key" is usually mod4Mask.

myModMask       = mod1Mask
 「ArccoLinux 19.12.15 xmonad」

--mod4Mask= super key
--mod1Mask= alt key
--controlMask= ctrl key
--shiftMask= shift key

myModMask = mod4Mask
 まず、特殊キーの記述については
 キー   記述   備考 
Win mod4Mask
Alt mod1Mask
Ctrl controlMask
Shift shiftMask

 と記述するようです。
 わたしは、mod キーを Win キーにしたいので(Alt は他のものとかぶりがち)、「FreeBSD」の 39行目は、早々に変更します。
 タイル型ウィンドウマネージャで、キーとなるキー(しゃれじゃないよ)である、「mod」は、「myModMask」と定義するようで、「Manjaro 20.0 awesome」では、Win キーを割り当てています。

 キー定義は、それぞれ。
 「ArcoLinux」では。


-- keys config

myKeys conf@(XConfig {XMonad.modMask = modMask}) = M.fromList $
  ----------------------------------------------------------------------
  -- SUPER + FUNCTION KEYS

  [ ((modMask, xK_e), spawn $ "atom" )
  , ((modMask, xK_c), spawn $ "conky-toggle" )
  , ((modMask, xK_f), sendMessage $ Toggle NBFULL)
  , ((modMask, xK_h), spawn $ "urxvt 'htop task manager' -e htop" )
 から

      , (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)
      , (\i -> W.greedyView i . W.shift i, shiftMask)]]

  ++
  -- ctrl-{w,e,r}, Switch to physical/Xinerama screens 1, 2, or 3
  -- ctrl-shift-{w,e,r}, Move client to screen 1, 2, or 3
  [((m .|. controlMask, key), screenWorkspace sc >>= flip whenJust (windows . f))
      | (key, sc) <- zip [xK_w, xK_e] [0..]
      , (f, m) <- [(W.view, 0), (W.shift, shiftMask)]]
 の範囲で、記述しています。  「FreeBSD」では、

------------------------------------------------------------------------
-- Key bindings. Add, modify or remove key bindings here.
--
myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $

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

    -- Run xmessage with a summary of the default keybindings (useful for beginners)
    , ((modm .|. shiftMask, xK_slash ), spawn ("echo \"" ++ help ++ "\" | xmessage -file -"))
    ]
    ++
 の範囲で、記述しています。  以降のページでは、この範囲を一括して、「キー定義」と記述していきます。

4. キーの記述

 基本的な記述は

  , ((特殊キー, 一般キー), spawn $ "実行ファイル" )
 と記述するようです。  キーの組み合わせを記述する際は、例えば、「Manjaro 20.0 awesome」のデフォルトでは、Ctrl+Alt+a で「xfce4-appfinder」を起動しますが、以下のように記述しています。

  , ((controlMask .|. mod1Mask , xK_a ), spawn $ "xfce4-appfinder")
 「 .|. 」で連結します。  上の方で、特殊キーの記述について書きましたが。  それをまた派生させて、記述しており、「ArcoLinux」「FreeBSD」でそれぞれ記述方法が違うようなのでメモしておきます。
 キー   記述   備考 
 ArcoLinux   FreeBSD 
mod modMask modm
Ctrl controlMask
Alt mod1Mask
Shift shiftMask
Space xK_space
Enter xK_Return
TAB xK_Tab
Print xK_Print
. xK_period
, xK_comma
a xK_a いわゆるアルファベットキー
F1 xK_F1 いわゆるファンクションキー
xK_Up いわゆる矢印キー
xK_Down
xK_Left
xK_Right

 modShift までは、定義内の左に、「 .|. 」で連結して記述します。特殊キーを押さない場合は、「0」を記述します。
 Space 以降のキーは、定義内の右に記述します。

5. カスタマイズ

 主なキー定義のデフォルトの状態と、わたしがカスタマイズした状態を記述します。
 プラットフォーム     キー定義     備考 
mod 端末を開く ウィンドウを
 閉じる 
xmonad 再起動 ログアウト 
ArcoLinuxWinmod+Entermod+qmod+Shift+rmod+Shift+x
FreeBSDAltmod+Shift+Entermod+Shift+cmod+qmod+Shift+q
カスタマイズWinmod+Entermod+qmod+Shift+rmod+Shift+q

 ※1 端末は、「ArcoLinux」は「urxvt」、「FreeBSD」は「xterm」が割り当てられています。「urxvt」は見た目がよくないので、「ArcoLinux」は「xfce4-terminal」へ変更しました。
 ※2 「kill」と書かれています。
 ※3 「io (exitWith ExitSuccess)」と書かれています。
 ※4 「xmonad --recompile && xmonad --restart」が定義してあります。

 また、「ArcoLinux」では特に、mod+x で終了メニューが表示されます。
 「FreeBSD」では、シャットダウン・再起動を別途キー定義します。これは、以降のページでどうぞ。

ハイスピードプラン損保との違い高速大容量レンタルサーバ10G