[java] Jansi를 이용하여 자바 애플리케이션에서 터미널 창 크기 읽기

Jansi는 자바 콘솔 애플리케이션에서 ANSI 이스케이프 시퀀스를 지원하기 위한 라이브러리입니다. 이 라이브러리를 사용하면 터미널의 크기를 읽을 수 있습니다. 이번 글에서는 Jansi를 이용하여 자바 애플리케이션에서 터미널 창의 크기를 읽는 방법에 대해 알아보겠습니다.

Jansi 설치

먼저 Jansi를 사용하기 위해서는 해당 라이브러리를 설치해야 합니다. Maven을 사용한다면 pom.xml에 다음 의존성을 추가해주세요:

<dependency>
    <groupId>org.fusesource.jansi</groupId>
    <artifactId>jansi</artifactId>
    <version>1.18</version>
</dependency>

Gradle을 사용한다면 build.gradle에 다음 의존성을 추가해주세요:

dependencies {
    implementation 'org.fusesource.jansi:jansi:1.18'
}

터미널 창 크기 읽기

Jansi를 사용하여 터미널 창 크기를 읽으려면 org.fusesource.jansi.AnsiConsole을 사용합니다. 다음은 터미널의 너비와 높이를 읽는 예제 코드입니다:

import org.fusesource.jansi.AnsiConsole;

public class TerminalSizeExample {
    public static void main(String[] args) {
        // Jansi 초기화
        AnsiConsole.systemInstall();

        // 터미널 크기 읽기
        int width = AnsiConsole.out().ansi().eraseScreen().renderer().getWidth();
        int height = AnsiConsole.out().ansi().eraseScreen().renderer().getHeight();

        // 터미널 크기 출력
        System.out.println("터미널 너비: " + width + " columns");
        System.out.println("터미널 높이: " + height + " rows");

        // Jansi 정리
        AnsiConsole.systemUninstall();
    }
}

위 코드를 실행하면 터미널 창의 너비와 높이가 출력됩니다.

결론

Jansi를 사용하면 자바 애플리케이션에서 터미널 창의 크기를 쉽게 읽어올 수 있습니다. 이를 활용하여 터미널 크기에 맞게 UI를 조정하거나, 출력 내용을 최적화하는 등의 작업에 활용할 수 있습니다.

참고 자료