Posted at

D言語でターミナルの大きさを得る

More than 3 years have passed since last update.

横幅ぴったりに表示させたいとか、lsコマンドのように長いリストを折り返しせずに複数列表示したりするときには、端末(ターミナル)の幅と高さを知る必要があります。

D言語でこの2つを取得したいときは、 core.sys.posix を使うと可能です。より簡単な方法があったら教えてください。

import std.stdio;

import core.sys.posix.unistd;
import core.sys.posix.sys.ioctl;

void main(string[] args) {
winsize ws;
if(ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws) != -1) {
writeln("width = ", ws.ws_col);
writeln("height= ", ws.ws_row);
}
}

ターミナルを開いて、ウィンドウの大きさを変えながら何度か実行してみてください。

Windows の場合はまた別の方法が必要です。