長ったらしいタイトルのとおり、konsole
上では曖昧な文字が半角文字幅となるのでmlterm
を導入することにした。
skk
+nvim
を使っていてると、一部文字が見切れたり、残像が残ったりする。勿論、set ambiwidth=double
の設定はしている。が
このとおり、曖昧な文字幅の文字が見辛い。
konsoleでの曖昧な文字幅の設定
konsole
上で ○♂ を打つと正しく表示されない。
- Arch LinuxでEast Asian Ambiguous charが幅1で表示されることについて - galaxy-sixth-sensey
- xfce4-terminal や gnome-terminal で East Asian Ambiguous Width な文字を全角として表示させる - とりあえず暇だったし何となくはじめたブログ
ありがたいことに、 East Asian Ambiguous Width問題と絵文字の横幅問題の修正ロケールに、East Asian Ambiguous Widthの対応がまとまっている。
しかし、結局、konsole
での曖昧な文字幅の設定の仕方が分からない。
Chromebookのターミナルで全角文字がズレて表示されるのを直す(東アジアの曖昧幅文字を2桁幅にする)のように、端末(ターミナル)の設定に、該当項目があったりするのだが…
mltermをインストール
konsole
には見切りをつけて、
mltermは文字化けやレイアウト崩れに強い端末エミュレータです | atominuxを参考にmlterm
をインストールした。
sudo apt install mlterm
sudo apt install mlterm-im-fcitx
mlterm設定
全体の設定は参考サイトを丸コピ。それにunicode_full_width_areas = U+2600-27FF,U+1F000-1FFFF
を足しただけ。
~/.mlterm/main
fontsize = 14
use_variable_column_width = false
use_anti_alias = true
not_use_unicode_font = true
use_scrollbar = false
bg_color = #242424
fg_color = #f6f3e8
letter_space = 1
line_space = 3
col_size_of_width_a = 2
unicode_full_width_areas = U+2600-27FF,U+1F000-1FFFF
col_size_of_width_a = 2
unicode_full_width_areas = U+2600-27FF,U+1F000-1FFFF
がmlterm
の曖昧な文字幅の設定部分。
フォントの設定
~/.mlterm/aafont
JISX0208_1983 = Cica 16
JISX0201_ROMAN = Cica 16
JISX0201_KATA = Cica 16
ISO8859_1 = Cica 16
DEFAULT = Cica 16
色の設定は、 mlterm Solarized color setting · GitHubから丸コピ。
~/.mlterm/color
black = #073642
red = #dc322f
green = #859900
yellow = #b58900
blue = #268bd2
magenta = #d33682
cyan = #2aa198
white = #eee8d5
hl_black = #002b36
hl_red = #cb4b16
hl_green = #586e75
hl_yellow = #657b83
hl_blue = #839496
hl_magenta = #6c71c4
hl_cyan = #93a1a1
hl_white = #fdf6e3
ふむ。自分もmltermの設定ファイルgithubにアップしておこうかな。
とりあえず、これでmlterm
経由でnvim
を起動した場合、問題が解決されたことを確認。
デフォルトのターミナルをmltermに変更する
この情報がありがたかった。こんな常識的なことでも分からん人(私)には分からないから。1
sudo update-alternatives --config x-terminal-emulator
alternative x-terminal-emulator (/usr/bin/x-terminal-emulator を提供) には 2 個の選択肢があります。
選択肢 パス 優先度 状態
------------------------------------------------------------
* 0 /usr/bin/konsole 40 自動モード
1 /usr/bin/konsole 40 手動モード
2 /usr/bin/mlterm 20 手動モード
現在の選択 [*] を保持するには <Enter>、さもなければ選択肢の番号のキーを押してください: 2
update-alternatives: /usr/bin/x-terminal-emulator (x-terminal-emulator) を提供するためにマニュアルモードで /usr/bin/mlterm を使います
そして、~/.local/share/applications/mlterm.desktop
を作成する。
[Desktop Entry]
Type=Application
TryExec=mlterm
Exec=mlterm
Icon=utilities-terminal
Terminal=false
Categories=System;TerminalEmulator;
Name=mlterm
GenericName=Terminal
Comment=Command line access
これは/usr/share/applications/org.kde.konsole.desktop
を真似た。
それとカスタムショートカットキーで、Ctrl+Alt+t
がkonsole
起動になっていたので、無効にする。そして、Ctrl+Alt+t
でmlterm
起動するショートカットを作成する。
追記 2021-01-16
このままだとデスクトップメニューからnvim
を起動してもkonsole
経由でのnvim
となってしまうので、 nvim.desktop を修正する。
command line - How do I change default terminal for executing .desktop files? - Ask Ubuntuを参考に。
cp /usr/share/applications/nvim.desktop ~/.local/share/applications/nvim.desktop
nvim.desktop
Exec=mlterm -e nvim %F
Terminal=false
変えたのは上記項目のみ。Terminal=true
だとnvim
と同時にkonsole
が残ってしまった。
追記ここまで
mltermのコピー&貼り付け
Ctrl+Shift+c
やCtrl+Shift+v
でコピペできない。どうやるのか、ググってもそれらしきものが出てこない。しょうがないから適当にやると
コピーはマウスで選択するだけで自動でしてくれる。
貼り付けはShift+Insert
だった。
man mlterm - Multi Lingual TERMinal emulator on X / Commandes / linuxのFeature Key Configuration Fileに機能キーファイル設定について書かれている。デフォルトのショートカットキーも書かれている。
~/.mlterm/key
Control+Shift+V=INSERT_SELECTION
小文字のvだと動かなかった。AeroBook Plusは Insert がFunctionキーとセットなので、面倒臭いのでCtrl+Shift+v
で貼り付けられるようにした。
追記 2021-01-17
X Window Systemのクリップボードの種類,xselコマンド,履歴ツール - kakurasanに詳しいが、mlterm
はそのままでは CLIPBOARD (クリップボード)ではなく PRIMARY (“選択領域”)しか扱わない。
設定ファイル main でuse_clipboard = false
(デフォルトは true )の場合、mlterm
で文字列を選択し PRIMARY にコピーされるので、 外部アプリで貼り付けても CLIPBOARD の内容が、貼り付けられることになる。
そして、use_clipboard = true
でも、外部アプリ(nvim
とか)で文字列を選択してクリップボードにコピー(するように設定)しても、 PRIMARY にはコピーされていないので、mlterm
で “INSERT_SELECTION"しても、それは PRIMARY の内容を貼り付けることになる。
“INSERT_SELECTION"でもクリップボードから貼り付けさせるには、上の参考サイトにもあるとおり、クリップボードマネジャー(ここではklipper
)で クリップボードと選択の内容を同期する にチェックする。
追記ここまで
これで快適にnvim
が使える。
mlterm
上で ♂○ を打つと正しく表示される。
OK。問題なし。
-
うーん、これやっても、デストップメニューから
nvim
起動させるとkonsole
を使っちゃうなぁ。更にsudo update-alternatives --install /usr/bin/x-terminal-emulator x-terminal-emulator /usr/bin/mlterm 60
で優先度変えて自動選択でmltermを使わせるようにしても駄目だ。 ↩︎