GTK 3 の emoji picker を無効化する
Linux Mint 21.3 (Cinnamon) では, GTK アプリケーションの入力欄で Ctrl+. または Ctrl+; を押すと emoji picker が表示されます. この機能が使えるアプリケーションにはファイルブラウザの nemo やテキストエディタの xed, ブラウザの Firefox などが含まれます.
自分は emoji picker を使用しないので, この機能によって意図せず入力のフォーカスを奪われてしまうことがかなりのストレスでした. Linux Mint と emoji picker を組み合わせて検索すると, IBus の emoji 入力機能やそのショートカットを変更する方法がいくつか見つかります. IBus にも emoji picker があり, 既定では Ctrl+Shift+E が割り当てられています. IBus の設定変更を試みましたが, emoji picker の挙動は変わりませんでした. そもそも, 自分の環境では入力メソッドとして Fcitx を使用しているため, 今回の挙動は IBus の設定とは関係のないものでした.
最終的に emoji picker を起動していたのは GTK 3 のテキスト入力ウィジェットに定義されたキーバインドでした. 一行入力欄の GtkEntry と複数行入力欄の GtkTextView には, emoji picker を表示する insert-emoji シグナルがあり, どちらにも Ctrl+. と Ctrl+; が割り当てられています. これを解除することで問題が解決できそうです.
Setup
GTK 3 では CSS ファイルを使用して既定のキーバインドを上書きできます. ここではユーザー設定としてこれらのキーバインドを解除します. GTK 3 のユーザー設定は ~/.config/gtk-3.0/gtk.css に記述します. ディレクトリやファイルが存在しない場合は作成します.
mkdir -p ~/.config/gtk-3.0
${EDITOR:-nano} ~/.config/gtk-3.0/gtk.css
gtk.css に以下の設定を追加します.
@binding-set DisableEmojiChooser
{
unbind "<Control>period";
unbind "<Control>semicolon";
}
entry,
textview
{
-gtk-key-bindings: DisableEmojiChooser;
}
@binding-set で DisableEmojiChooser というキーバインドの集合を定義しています. unbind は指定したキーについて GTK の既定のキーバインドを探索しないようにする命令です. これを entry と textview に適用することで, 一行入力欄と複数行入力欄の両方から emoji picker のショートカットを取り除きます.
設定を保存したら, 対象のアプリケーションを完全に終了してから起動し直します. 反映されない場合は一度ログアウトして再ログインします.
この方法については以下の文書を参照しました.
Confirmation
アプリケーション固有の設定に影響されずに確認するには, GTK 3 のデモプログラムである gtk3-demo を使用します.
sudo apt install gtk-3-examples
gtk3-demo
入力欄を含むデモを開き, 入力欄にフォーカスを合わせて Ctrl+. または Ctrl+; を押します. 設定前には emoji picker が表示されますが, 設定後には表示されなくなり emoji picker が起動しなくなりました.
実際に xed や Firefox でも試してみたところ, めでたく emoji picker の起動を抑制することができました. この問題に直面してから長らく格闘していましたが, ようやく解決に至りました.