use std::process::Command;
pub fn show_character_palette() {
if try_ibus_emoji() {
return;
}
if try_fcitx5_emoji() {
return;
}
try_gnome_characters();
}
fn try_ibus_emoji() -> bool {
let status = Command::new("dbus-send")
.args([
"--session",
"--dest=org.freedesktop.IBus",
"--type=method_call",
"--print-reply",
"/org/freedesktop/IBus",
"org.freedesktop.IBus.Panel.Extension.Emoji",
])
.output();
matches!(status, Ok(output) if output.status.success())
}
fn try_fcitx5_emoji() -> bool {
let status = Command::new("dbus-send")
.args([
"--session",
"--dest=org.fcitx.Fcitx5",
"--type=method_call",
"--print-reply",
"/controller",
"org.fcitx.Fcitx.Controller1.Activate",
"string:emoji",
])
.output();
matches!(status, Ok(output) if output.status.success())
}
fn try_gnome_characters() {
#[allow(clippy::disallowed_methods)]
let _ = Command::new("gnome-characters").spawn();
}