LoginSignup
5
3

More than 1 year has passed since last update.

【何を】screenコマンドで表示が崩れる問題【今更】

Posted at

現象

screenコマンドで開始したセッション上で alsamixer を実行すると表示が崩れることに最近気が付いた。

取り合えず矢印キーでの音量設定はできるので構わず使っていたが、流石に気持ち悪いので調べてみた。

対応方法

~/.screenrc に(無ければ作成)以下追記

cjkwidth off

参考URL:
bug #46273: screen 4.3.1 broken nmon's display and alsamixer

try adding "cjkwidth off" to your ~/.screenrc and it will probably work again.

cjk の意味は以下参照。
CJK統合漢字 - Wikipedia

CJK統合漢字の名称は、中国語(Chinese)、日本語(Japanese)、朝鮮語(Korean) で使われている漢字をひとまとめにしたことからきている。

所謂全角文字って認識でいいのかな。どうもその文字幅設定機能に問題があるので off にしろってことらしい。

御託

そもそも、alsamixerncurses を利用している。
alsamixer(1) - Linux man page

alsamixer - soundcard mixer for ALSA soundcard driver, with ncurses interface

ncurses は以下参照。
ncurses - Wikipedia

ncurses は、端末に依存しない形式でテキストユーザインタフェース (TUI) を作成するためのAPIを提供するライブラリ。画面切り替えを最適化し、リモートシェルで使ってもレイテンシを最小に抑えるようになっている。

根源的には、screenコマンド + ncurses の問題。(alsamixer 云々ではなく)
経緯としては、GNU Screen 4.x 辺りのパッチに問題があり、表示に不具合が発生するようになったらしい。

UTF8環境のGNU Screen 4.1_4.2でNCursesの表示がおかしくなる - Narrow Escape
GNU Screen 4.2.0にしたら罫線表示がぶっ壊れた
GNU screenの日本語環境でncursesを使うと表示が乱れる - ksaitoの日記
Unicode の曖昧な文字幅問題 その2 - diary of a madman
GNU screen

っていうかバグだよね、これ。cjkwidth 機能を off にすることによる問題回避は小手先の対応に過ぎない。根本的な修正を望みたいところ。
英語圏にも日本人以上に日本語、文字コードレベルで詳しい方もいて驚かされる。

海外の技術者が日本語の「文字化け」を本気で解説、日本人顔負けの日本通っぷりが披露される - GIGAZINE

しかし、Linux の世界では非英語圏は蚊帳の外というか、あまり熱心に対応してくれないよな。ぶっちゃけ、物凄くどうでもいいです、ぐらいな感じだろうし。
とはいえ今回色々と調べていて良い勉強になった。
個人的に screenコマンドは常用しているが、セッションの作成に限定した単純な使い方だけだった。(無線LAN がよく切れるのでその対策)
奥が深いツールなのでもう少し勉強して使い込んでいきたいと思ったなり。

Man page of SCREEN
Screen User’s Manual

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3