Tilda は起動時に画面サイズがおかしいと文句を言いますか?

Tilda は起動時に画面サイズがおかしいと文句を言いますか?

Ubuntu 14.04、MATE デスクトップ。Tilda ターミナルをインストールしたばかりなので、スタートアップ アプリケーションに追加しました/usr/bin/tilda。再起動して、Tilda が起動するのを確認した後、次のことに気付きました。

ティルダ

「131072x1 の画面サイズは不正です。問題が発生する可能性があります。」

その後、試してkillall tilda、もう一度 tilda を起動しましたが、同じメッセージが表示されました。

この不正な画面サイズの問題を修正する方法を知っている人はいますか?

答え1

このメッセージを生成しているものは何ですか

これは Bourne Again シェルでは生成されません。これは Tilda では生成されません。

psこれは、以下のコマンドによって生成されます。procps ツールセット実行するこのチェックはset_screen_size()機能する. このpsコマンドでは、端末デバイスが適切に表示できるように、少なくとも 9 列 × 2 行である必要があります。どこかで、おそらく知らないうちに、 を呼び出していますps

このpsコマンドは、標準 I/O ファイル記述子に接続された端末デバイス (の回線制御規則) から端末サイズを直接取得し、値が適切な数値である場合は環境変数によってそれを上書きできるようにしますCOLUMNS。次のコマンドを実行すると、コマンドがLINES何を見ているかがわかります。ps

stty サイズ ; printenv 列 行
ps次のような操作を実行して、 の足 を引っ張る動作を試すことができます。

列数=65535 行数=1 ps

COLUMNSおよび環境変数を 131072×1 という馬鹿げた値に設定している場合 (LINESの出力でわかるように) printenv、単にそうしないでください。☺ ただし、 の出力からわかるように、端末デバイス自体がこのサイズを報告している可能性の方が高いですstty。(Bourne Again シェルが行うことは、checkwinsizeこれらのシェル変数の値を設定することだけであり、エクスポートされていない場合は、psその環境でコマンドに渡されることさえありません。端末デバイスが報告するサイズに。checkwinsize環境変数が意味をなさない場合、端末デバイスはそれ自体が報告しているナンセンスであり、後者は対処すべき根本的な問題である。

そのため、メッセージは表示されませんが、Tildaに問題がある可能性があります。ターミナルデバイスのサイズは共有リソースであり、ターミナルデバイスへのオープンファイルディスクリプタを持つものはシステムコールで任意に変更することができますioctl()。しかし、慣例的にソフトウェアを使用しているシナリオでは、端末エミュレータプログラムTilda のように、エミュレーションが表示されている GUI ウィンドウのサイズが変更されると、ターミナル エミュレーター プログラムによって が呼び出されます。ターミナル エミュレーター プログラムは、GUI のサイズ変更イベントを取得し、それを列と行に変換し、 でデバイス サイズを設定しますioctl()

これは、他の何かがサイズをこのナンセンスに設定していないと言っているわけではありません。結局のところ、あなたはそれを設定することができますあなた自身たとえば、次のコマンドを実行するだけで、任意の無意味なサイズに変更することができます。

stty 列 1 行 65535

さて、それでは…

端末デバイスのサイズをリセットする方法

端末デバイスが意味のないサイズを報告している状況に陥った場合は、次の手順を実行します。

  • GUI ターミナル エミュレータを使用している場合は、GUI を 1 列/行程度サイズ変更します。これにより、がトリガーされ、ioctl()ターミナル サイズが適切なサイズに設定されます。
  • 次のように、サイズをより適切な値に設定します (例)。

    stty 列 80 行 25
  • コマンドを使用しますresetreset端末デバイスのサイズだけでなく、他の多くのものも設定することに注意してください。
  • 端末エミュレータがDEC VT340/VT420互換の場合は、適切なDECSCPPおよびDECSLPP/DECSNLS制御シーケンスを直接発行するか、ノッシュツールセットconsole-resize(別名resizecons) コマンドを使用してそれらを発行します。

    サイズ変更コン 80x25

関連情報