平衡点


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/04/28
    • 1. CF-SR3 での生活環境構築 (できてない)
  • 2024/03/29
    • 1. Debian GNU/Linux on CF-SR3
  • 2024/03/25
    • 1. org-mode → beamer でのリスト記号の一時変更
  • 2024/03/22
    • 1. 静的htmlによるGit Repository Browser
  • 2024/02/15
    • 1. org-mode → bemaer での番号付きリスト
一覧
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|
Back to Top ▲