- 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 |
mod ~ Shift までは、定義内の左に、「 .|. 」で連結して記述します。特殊キーを押さない場合は、「0」を記述します。
Space 以降のキーは、定義内の右に記述します。
5. カスタマイズ
主なキー定義のデフォルトの状態と、わたしがカスタマイズした状態を記述します。
プラットフォーム | キー定義 | 備考 |
---|
mod | 端末を開く | ウィンドウを 閉じる | xmonad 再起動 | ログアウト |
---|
ArcoLinux | Win | mod+Enter | mod+q | mod+Shift+r | mod+Shift+x | | FreeBSD | Alt | mod+Shift+Enter | mod+Shift+c | mod+q | mod+Shift+q | | カスタマイズ | Win | mod+Enter | mod+q | mod+Shift+r | mod+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」では、シャットダウン・再起動を別途キー定義します。これは、以降のページでどうぞ。
|