gdbus - org.fcitx.Fcitx
說明
這個範例,說明如何利用「gdbus」這個指令,來跟「fcitx」溝通,切換輸入法。
範例
執行
$ gdbus introspect --session --dest org.fcitx.Fcitx --object-path /
顯示
node / {
node MenuBar {
};
node StatusNotifierItem {
};
node inputmethod {
};
node keyboard {
};
node kimpanel {
};
};
執行
$ gdbus introspect --session --dest org.fcitx.Fcitx --object-path / --xml
顯示
<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
<node>
<node name="MenuBar"/>
<node name="StatusNotifierItem"/>
<node name="inputmethod"/>
<node name="keyboard"/>
<node name="kimpanel"/>
</node>
執行
$ gdbus introspect --session --dest org.fcitx.Fcitx --object-path / --recurse
顯示
...略...
執行
$ gdbus introspect --session --dest org.fcitx.Fcitx --object-path /inputmethod
或是執行
$ gdbus introspect --session --dest org.fcitx.Fcitx --object-path /inputmethod | less
顯示
node /inputmethod {
interface org.freedesktop.DBus.Introspectable {
methods:
Introspect(out s data);
signals:
properties:
};
interface org.freedesktop.DBus.Properties {
methods:
Get(in s interface_name,
in s property_name,
out v value);
Set(in s interface_name,
in s property_name,
in v value);
GetAll(in s interface_name,
out a{sv} values);
signals:
PropertiesChanged(s interface_name,
a{sv} changed_properties,
as invalidated_properties);
properties:
};
interface org.fcitx.Fcitx.InputMethod {
methods:
CreateIC(out i icid,
out u keyval1,
out u state1,
out u keyval2,
out u state2);
CreateICv2(in s appname,
out i icid,
out b enable,
out u keyval1,
out u state1,
out u keyval2,
out u state2);
CreateICv3(in s appname,
in i pid,
out i icid,
out b enable,
out u keyval1,
out u state1,
out u keyval2,
out u state2);
Exit();
GetCurrentIM(out s im);
SetCurrentIM(in s im);
ReloadConfig();
ReloadAddonConfig(in s addon);
Restart();
Configure();
ConfigureAddon(in s addon);
ConfigureIM(in s im);
GetCurrentUI(out s addon);
GetIMAddon(in s im,
out s addon);
ActivateIM();
InactivateIM();
ToggleIM();
ResetIMList();
GetCurrentState(out i state);
signals:
properties:
@org.freedesktop.DBus.Property.EmitsChangedSignal("true")
...略...
執行
$ gdbus introspect --session --dest org.fcitx.Fcitx --object-path /inputmethod
顯示
...略...
執行
$ gdbus call --session --dest org.fcitx.Fcitx --object-path /inputmethod --method org.fcitx.Fcitx.InputMethod.GetCurrentIM
顯示
('fcitx-keyboard-us',)
執行
$ gdbus call --session --dest org.fcitx.Fcitx --object-path /inputmethod --method org.fcitx.Fcitx.InputMethod.SetCurrentIM chewing
顯示
()
就會把輸入法切換到「fcitx-chewing (新酷音)」。
執行
$ gdbus call --session --dest org.fcitx.Fcitx --object-path /inputmethod --method org.fcitx.Fcitx.InputMethod.GetCurrentIM
顯示
('chewing',)
執行
$ gdbus call --session --dest org.fcitx.Fcitx --object-path /inputmethod --method org.fcitx.Fcitx.InputMethod.SetCurrentIM fcitx-keyboard-us
顯示
()
就會把輸入法切回到「英文輸入」。