Skip to content

Instantly share code, notes, and snippets.

@noborus
Last active March 25, 2021 10:06
Show Gist options
  • Save noborus/7516369 to your computer and use it in GitHub Desktop.
Save noborus/7516369 to your computer and use it in GitHub Desktop.
iBus(1.4)をD-Busで操作する方法

iBus(1.4)をD-Busで操作する方法

iBusはD-Busを通信プロトコルに使用しているため、外からもD-Busで制御することが出来る。 しかしながら、D-Busが一般に使用するSystem Bus と Session Busとは違うBusを使用するため、ちょっと注意が必要になる。

iBus1.5からはデスクトップ環境に統合されることを前提に変更されているため、ここではその変更前のバージョンを対象とする。

iBusのD-Busに接続するための接続情報

iBusのD-Busに接続するための接続するには IBUS_ADDRESSが必要になる。IBUS_ADDRESSは通常 iBusを起動しているユーザーの

$(HOME)/.config/ibus/bus/n*-unix-0

に書かれている。ファイルの中身は以下のようになっている。

# This file is created by ibus-daemon, please do not modify it IBUS_ADDRESS=unix:abstract=/tmp/dbus-EjHhStD5,guid=81dcc396da9536e5b153eff552859de0 IBUS_DAEMON_PID=2962

この「IBUS_ADDRESS=」の値を使用する。 abstract(抽象名前空間)のUnixドメインソケットで /tmp/dbus-*に接続すればよい(abstractなので、ファイルとしては見えない)。

libibusを使用する場合は ibus_get_address() により取得できる。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment