アプリケーションが端末設定を操作しないようにしますか?

アプリケーションが端末設定を操作しないようにしますか?

最近、より多くのGUIアプリケーション(okular、inkscapeなど)がアクティブになると、ターミナルエコーが無効になり始めました。これはせいぜい不要なようです(プロセスを背景に設定しなければとにかく入力しません。設定しても誰が気にしますか?背景に設定しても効果はありません)。しかし、悪いことは、誤って何かが間違っていてctrl-Cを使用して本能的に終了する場合(誤って多くのファイルからokularを呼び出す場合のように)、echo滞在する障害がある。世界が終わるわけではないが、stty echoこのようなことが起こるたびに盲目的にタイピングをしなければならないという事実が私を不安にさせる。

端末にこれらの設定切り替えを無効にするように指示する方法はありますか?私はtermcapを修正することが可能だと思いますが、それが私が知っている程度です。もちろん、これを行うと、目に見えないパスワードが表示されることがありますが、どうすればよいかを知りたいです。改ざん防止端末を開くだけで十分でしょう。

ベストアンサー1

echo端末デバイス(ttyカーネルドライバのよく管理された部分)の設定であり、termcapはエスケープシーケンスを介した端末(実際の端末またはエミュレータ)の制御であり、2つの独立したものです。

ここでは、アプリケーションが特定のタスクを実行しないようにしますioctl。 1つの方法は、端末から分離することです。

socat - exec:okular,pty,raw

okular実行中の他の疑似端末装置に接続し、socat端末からその装置にデータを渡します。

任意のパラメータを渡すには、次を使用しますzsh

okular() {
  CODE="$0 ${(j[ ])${(qq)argv}}
       " socat - 'system:"eval \"$CODE\"",pty,raw'
}

おすすめ記事