平衡点


2017/02/01

_ VimFx での IM の制御

前回(平衡点(2017-01-26))の続き.

基本,作業環境はターミナルなので普段は IM は OFF になっていて欲しいので,vimperator を使っていた時には...

はい.お世話になっていました.

で,同様の事を VimFx でもできないかなぁ,とじたばた. VimFx/api.md at master · akhodakivskiy/VimFxあたりを眺めつつ,locationChange event あたりをひっかけたら良いかな,ということで.

const ibus_toggle = '/usr/local/bin/ibus-toggle'
const ibus_toggle_args = 'off'
// force ibus off when location changed
vimfx.on('locationChange', ({vim}) => {
    let file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile)
    file.initWithPath(ibus_toggle)
    let process = Cc['@mozilla.org/process/util;1'].createInstance(Ci.nsIProcess)
    process.init(file)
    args = ibus_toggle_args.split(' ')
    process.run(false, args, args.length)
})

と,こんな感じだろうか.とりあえず,日本語打つときは location bar での検索ぐらい(ページ内検索は XUL/Migemo)なので,ページ遷移があれば ibus を強制的に off にできるようになった.

あ,ibus-toggle の実態は

#!/bin/sh
[ -x /usr/bin/xdotool ] || exit 0
[ -x /usr/bin/ibus ] || exit 0
CURRENT_STATE=$(ibus engine)
case $@ in
    on|ON|enable|Enable)
        if [ ! ${CURRENT_STATE} = 'skk' ] ; then
            xdotool key "Super+space"
        fi
        ;;
    off|OFF|disable|Disable)
        if [ ! ${CURRENT_STATE} = 'xkb:us::eng' ] ; then
            xdotool key "Super+space"
        fi
        ;;
    *)
        # logger "ibus-toggle: toggle"
        xdotool key "Super+space"
        ;;
esac
exit 0

と,こんな感じ.本当はibus engineで指定したい所なのだが,コマンドラインから切り替えると GNOME shell との表示が乖離してしまうので,xdotool でキー入力している.


連絡先など
最近の日記
  • 2024/10/09
    • 1. Mastodon でのメール通知, というか Exim4 と Apparmor
  • 2024/06/19
    • 1. WSL2 での gpg-agent, ssh-agent
  • 2024/06/18
    • 1. WSL で Windows 側のフォントを利用する
  • 2024/06/17
    • 1. WSLとWindowsの時刻同期
  • 2024/06/12
    • 1. wsl2 で systemd
    • 2. wslg の設定
一覧
2006|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|02|03|04|08|09|10|11|12|
2013|01|02|03|04|05|06|08|09|10|11|12|
2014|01|02|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|09|10|
2016|02|03|
2017|01|02|03|05|06|07|09|11|12|
2018|03|06|07|10|11|12|
2019|01|02|03|04|05|07|10|12|
2020|01|02|03|04|05|08|09|10|11|12|
2021|01|02|03|05|06|07|08|09|11|12|
2022|01|02|03|04|05|06|08|10|11|12|
2023|02|03|04|06|08|09|11|12|
2024|01|02|03|04|05|06|10|
Back to Top ▲