xdotool
xmodmap
xbindkeys
wmctrl

Linux環境でのキーバインド設定

More than 3 years have passed since last update.


はじめに

Macの時はKarabinerWindow Tidyで好みのリマップをしていた。Linux(というよりXfceか?)へ移ってみたら色々不便だったので設定した。


環境


  • Arch Linux

  • Xfce4

  • モニター(1920x1080)が3枚


    • 無理やりなので3840x1080と1920x1080と認識されている




Linuxでも行いたいこと



  • Cmd+SpaceでFEP切り替え


  • CapsLockCtrl


  • Alt+h j k lでカーソル移動

  • カレントウィンドウのリサイズと移動(後述)


以下、行ったこと


Cmd+SpaceでFEP切り替え & CapsLockCtrl

どちらもxmodmapで設定。Macの使用感に近づけるためCmd_LCtrlに変更。


.xmodmap

remove mod4 = Super_L

remove Lock = Caps_Lock
keysym Super_L = Control_L
keysym Caps_Lock = Control_L
add Control = Control_L

uim+Mozcなので、uimの切り替えをCtrl+Spaceに変更。

2015-05-02_00-23-06


Alt+h j k lでカーソル移動

xbindkeysxdotoolで設定。

ref.: xbindkeysで捗るお話 - ぺんぎんさんのめもちょう


.xbindkeysrc

"~/bin/emu_Up.sh"

Alt+Mod2 + k
"~/bin/emu_Down.sh"
Alt+Mod2 + j
"~/bin/emu_Left.sh"
Alt+Mod2 + h
"~/bin/emu_Right.sh"
Alt+Mod2 + l


emu_keystroke.sh

#!/bin/bash

keystroke="$(echo "${0}" | sed -e "s;.*_\([^\.]*\).*;\1;g")"
windowID="$(xdotool getwindowfocus)"

xdotool key --window "${windowID}" "${keystroke}" >/dev/null 2>&1



カレントウィンドウのリサイズと移動

wmctrlを用いた。

ref1.: コマンドラインから X のウィンドウを操作する (wmctrl) - trial and error

ref2.: wmctrlで疑似タイル型WM - 12FF5B8

コードは長いのでリンク先参照(https://gist.github.com/844196/6977272d55df9a7d1644


やりたいこと

シングル表示(右Altに設定)

| | | |
| 1 | 2 | 3 |
| | | |

モニター幅の1/2にして左右に配置(右Shiftに設定)
| | | |
| 1 2 | 3 4 | 5 6 |
| | | |

タイル状に配置(右Cmdに設定)
| 1 2 | 5 6 | 9 10 |
| | | |
| 3 4 | 7 8 | 11 12 |


実行中の様子(モニター幅の1/2にして左右に配置)


おわりに

かなり満足です