module lunch.term; version (Windows) { import core.sys.windows.windows; } struct TermSize { int width, height; } TermSize termSize() { version (Windows) { CONSOLE_SCREEN_BUFFER_INFO csbi; int columns, rows; GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi); return TermSize( csbi.srWindow.Right - csbi.srWindow.Left + 1, csbi.srWindow.Bottom - csbi.srWindow.Top + 1, ); } return TermSize(80, 25); // Default for windows cmd } int termWidth() { return termSize().width; } int termHeight() { return termSize().height; }