From 575542369ae96a7e9a4200cbd26ed53b9317eb76 Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Tue, 7 Jan 2025 13:41:48 +0800 Subject: [PATCH] Load windows terminal sizes using `io.github.alexarchambault.windowsansi` (#4056) ~Currently appears to be blocked on my laptop by https://github.com/com-lihaoyi/mill/issues/4055~ Tested on my windows-arm surface book 7, seems to work great since https://github.com/com-lihaoyi/mill/pull/4196 landed --- .../src/mill/runner/client/MillProcessLauncher.java | 12 ++++++++++-- runner/package.mill | 1 + 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/runner/client/src/mill/runner/client/MillProcessLauncher.java b/runner/client/src/mill/runner/client/MillProcessLauncher.java index 544cce8b495..1aea9217e15 100644 --- a/runner/client/src/mill/runner/client/MillProcessLauncher.java +++ b/runner/client/src/mill/runner/client/MillProcessLauncher.java @@ -2,6 +2,7 @@ import static mill.main.client.OutFiles.*; +import io.github.alexarchambault.windowsansi.WindowsAnsi; import java.io.File; import java.io.IOException; import java.io.InputStream; @@ -218,9 +219,16 @@ static void writeTerminalDims(boolean tputExists, Path serverDir) throws Excepti String str; try { - if (!Util.hasConsole()) str = "0 0"; + if (java.lang.System.console() == null) str = "0 0"; else { - if (!tputExists) { + if (isWin()) { + + WindowsAnsi.Size size = WindowsAnsi.terminalSize(); + int width = size.getWidth(); + int height = size.getHeight(); + str = width + " " + height; + mill.main.client.DebugLog.println(str); + } else if (!tputExists) { // Hardcoded size of a quarter screen terminal on 13" windows laptop str = "78 24"; } else { diff --git a/runner/package.mill b/runner/package.mill index 9dc3f21f7c7..e91aad22e45 100644 --- a/runner/package.mill +++ b/runner/package.mill @@ -7,6 +7,7 @@ object `package` extends RootModule with build.MillPublishScalaModule { object client extends build.MillPublishJavaModule { def buildInfoPackageName = "mill.runner.client" def moduleDeps = Seq(build.main.client) + def ivyDeps = Agg(build.Deps.windowsAnsi) } def moduleDeps = Seq(