タグ

ブックマーク / vaaaaaanquish.hatenablog.com (1)

  • Rustでterminalのwindow sizeを取得する - Stimulator

    はじめに RustでCLIツールを作る際にターミナル等のwindow size変更に応じて表示を変更したい場合がある。 その際に画面サイズの取得について調査したログ。 はじめに 画面サイズの取得 調査ログ 画面サイズの取得 画面サイズの取得には、libcのioctlを利用し、TIOCGWINSZをシステムコールする。 Cargo.tomlにはlibcを追記する。 [dependencies] libc = "0.2" ioctlにはファイルディスクリプタを渡す必要があり、libc::STDOUT_FILENOが使えるが、アプリケーション側にSIGWINCHが上手く送られない場合(CLIツール等を作成している場合)に、Terminalを制御するウィンドウのサイズ変更に動的に対応できない。そのため"/dev/tty"を読む方法も用意する。 use libc::{ioctl, winsize,

    Rustでterminalのwindow sizeを取得する - Stimulator
  • 1