rcmdnk's blog
Last update

20240829_gnuscreen5truecolor_200_200

ターミナルマルチプレクサであるGNU Screenの20年ぶり?のメジャーリリースである5.0.0がリリースされました。

GNU Screen 5.0.0

GNU Screen - News [Savannah]

2024年8月28日リリース。

前回リリースがあったのが4.9.1で2023年8月20日。 なのでリリースとしては1年ぶりの新しいリリースです。

  • 4.9.1: 2023年8月20日
  • 4.9.0: 2022年1月30日
  • 4.8.0: 2020年2月5日
  • 4.7.0: 2019年10月2日
  • 4.6.0: 2017年6月28日
  • 4.5.0: 2016年12月10日
  • 4.4.0: 2016年6月19日
  • 4.3.0: 2015年6月13日
  • 4.2.0: 2014年4月17日
  • 4.0.3: 2008年8月7日
  • 4.0.2: 2004年1月27日
  • 3.9.15: 2003年3月13日 …
  • 3.5.1: 1993年7月31日

GNU Screen - News [Savannah]

ChangeLog\src - screen.git - screen

Index of /gnu/screen

4.0.2が出た頃にすでにまだ開発してたんだ、という感じもしましたが、 その後4年かけてパッチアップデートだけで、もはや消えゆく感じすらありました。

tmuxが2007年にリリースされ、2014年の頃にはGNU Screenがもうアップデートされないような雰囲気もあって 後発のtmuxの方にかなりのユーザーが移行していった感じがありました。

そこへ2014年に4.2.0への大幅アップデート。

そこから比較的頻繁にリリースが続き、現在まで至ります。

そんななかで、おそらく20年ぶりになるメジャーアップデート。

5.0.0の変更点

あまりたくさんのアップデートが入ったわけではないので リリースノートでもすぐに把握できますが、 以下主に気になる点。

true color

個人的に一番大きいのはtrue colorのサポートが追加されたことです。

ターミナルでtrue colorが使えるようになったのがいつなのかもはや知りませんが、 GNU Screenを使う限りtrue colorが使えず、 Vimでもcolorschemeをtrue colorなしとして考えて選択したり設定しなくてはいけないので ちょっと悲しいところでした。

これで何年遅れかわかりませんが、やっとtrue colorを意識した環境つくりができるようになります。。。

Vim用colorshemeもアップデートしたい。

文字化け問題

後は4.Xまでは日本語を扱う際に文字化け問題あり、パッチをあてて使う必要がありましたが、

  • Use wcwdith() instead of UTF-8 hard-coded tables

この辺の話でそのあたりも治っていそう。

今のところそのまま使っても以前あったような文字化けは起こっていません。 また、以前は横分割などした際、日本語が一旦表示されると表示がくずれたままになってしまうことがありましたが、 そういった事も今のところなくなったとように見えます。

追記: 2024/10/02

macOSでGoogle Driveでmountしたディレクトリ内でlsすると

20240829_garbled.png

こんな感じで文字化けしてました。

iTerm/Terminalなど共に。

screenなしなら文字化けしません。さらにはmacOSにもとからある/usr/bin/screenを使っても文字化けしません。

4.9.1をビルドしてパッチ無しでつかってみましたがそれでも文字化けしません。

なのでなにかまた別の問題な模様?

さらに見てみると、Google Driveのディレクトリ下で*.gsheet*gscriptなどGoogleサービスのファイルなどが日本語だと文字化けしてました。

一方でpdfとか他の通常ファイルは同じ日本語でも(拡張子以外を同じにしても)文字化けしません。

さらには上のマイドライブ, 共有ドライブといった名前のディレクトリを別のところに作っても文字化けしません。

また、WindowsのWSLだとGoogle Drive下でも文字化けしません。

Google Driveのマウントが影響をしているように見えますが、ちょっとよくわかってません。

追記ここまで

caption/hardstatusの色設定

それ以外だとリリースノートには書かれてませんが、 captionなどを表示する際の色の設定の仕方が変わり、 設定している場合は.screenrcを変更が必要になるのでアップグレードに少し注意が必要です。

その他のfix

  • Fixes:
    • Screen buffers ESC keypresses indefinitely
    • Crashes after passing through a zmodem transfer
    • Fix double -U issue

この辺の話もすぐに実感出来るわけでは無いわけですが 今まで、ん?と思ってたようなことが減るのではないかと。

インストール

現状まだHomebrewなどのアップデートは来てませんが、おそらく数日中には来ると思うので待ってもよいかもしれませんが、 すぐ使いたい場合は自分でビルドしてインストールする必要があります。

追記: 2024/09/02

Homebrewでもcoreのscreenが5.0.0にアップデートされています。

1
$ brew install screen

で5.0.0が入ります。

これまで文字化け対策用にpatchをあてるFormula(rcmdnk/rcmdnkpac/screenutf8)を別途用意して使っていましたが、 こちらはもう必要ないのでdeprecatedにしておきました。

追記ここまで

Index of /gnu/screen

からv5.0.0のソースをダウンロードしてビルド。

1
2
3
4
5
6
wget https://ftp.gnu.org/gnu/screen/screen-5.0.0.tar.gz
tar zxf screen-5.0.0.tar.gz
cd screen-5.0.0
./autogen.sh
./configure --prefix=$HOME/usr/
make && make install

macOSでHomebrewでscreenをインストールしている場合はおそらくライブラリとかは問題なく揃っているはず。

WndowsのWSL環境でUbuntu 24.04であれば以下のパッケージが必要。

1
$ sudo apt install -y autoconf gcc make libncurses-dev libpam0g-dev

18.04だとgccが7で色々面倒なので途中でやめました。。。

true color

true colorを有効にするには.screenrc

1
truecolor on

を設定します。

以前、256colorが使える様になった時、ビルド時に--enable-colors256を指定する必要があったのですが、 5.0.0ではビルド時の指定は不要で、.screenrcで設定するだけで使えるようになります。 (逆にデフォルトでは有効になってないのできちんと設定する必要があります。)

この値は4.9.1で書いてもエラーにはなりませんが何も起こりません。

これを設定したうえでテストしてみます。

このレポジトリのcolcheckコマンドを使ってみると

GNU Screen 4.9.1:

20240829_gnuscreen4truecolor.png

GNU Screen 5.0.0:

20240829_gnuscreen5truecolor.png

ということで、最後の部分を見て分かる通り、5.0.0だときちんとtrue colorが使えるようになっています。

上記はmacOSのiTerm2ですが、WindowsでHyperを使った環境などでも元のターミナルがtrue color対応しているものであれば GNU Screen 5.0.0でtrue colorが使えるようになります。

caption/hardstatusの色設定

GNU Screenでcaptionなどの表示で色を変える際、{}で囲った中に指定を行います。

4.9.1までは黒ならk、白ならwなど文字を使った指定で、大文字のKWは明るい色になります。 また、文字速と背景色はWkのように指定すると、背景が明るい白、文字が黒になります。

1
2
3
4
5
6
7
8
9
10
   k      black
   r      red
   g      green
   y      yellow
   b      blue
   m      magenta
   c      cyan
   w      white
   d      default color
   .      leave color unchanged

これが5.0.0からはこの文字指定がなくなり、数字で

1
2
3
4
5
6
7
8
   0      black
   1      red
   2      green
   3      yellow
   4      blue
   5      magenta
   6      cyan
   7      white

の対応。または256色colorに対応する3桁の数字、xから始まる16進数などで指定するようになりました。

この辺はmanに詳しくあります。

また、文字色、背景色は;で区切って指定します。 さらに注意が必要なことに、4.Xでは背景色, 文字色の順でしたが、5.0.0からは文字色;背景色の順です。

wkに対応するには0;7となります。

また、明るい色、という指定はiをつけると出来る、とのことで、 これは4.9.1でもmanに書いてあることなんですが 自分の環境だと4.9.1でも5.0.0でも0;i7とかしても違いはありませんでした。

i0としても明るい黒、的にはならず。

仕方が無いので256色指定で適当な色を指定するようにしています。

  • k 0
  • W 255
  • K 240
  • B 012

style: enable true color support in .screenrc configuration · rcmdnk/dotfiles@935ae41

GNU Screen 4.9.1:

20240829_gnuscreen4caption.png

GNU Screen 5.0.0:

20240829_gnuscreen5caption.png

こんな感じでだいたい同じような色に。

true colorが使えるようになったのでもっと繊細な色を使っても良いわけですが、まあ、一旦。

この変更は互換性がないので、4.9.1と5.0.0で同じ.screenrcを使うことができません。

エラーにはならないので、captionやhardstatusが見えづらくても良いならどちらかのままで共通のものを使うこともできますが、 共通のdotfilesなどでの設定を使う場合にはできるだけ早くバージョンを揃えた方が良いです。

まとめ

ついにGNU Screen 5.0.0がリリースされ、true colorが使えるようになりました。

多くの変更が入ったわけではないですが、大きな欠点が解消され、 20年ぶりのメジャーアップデートに適うアップデートだと思います。

これでまたGNU Screenを使い続けられますね。

(tmuxどころかターミナルを直接使ってる人すらいなくなってきている今日このごろですが。。。)

ちょっとまだscreen用のスクリプトとか設定とかでアップデートが必要な部分がありそうですが、随時アップデートしていきます。

Sponsored Links
Sponsored Links

« HHKBを漂白する シェルスクリプトで関数をそのままサブコマンドとして使う »

}