Java не считывает разрешение монитора linux

Недавно у меня появился 4к монитор. По какой-то причине, программы, написанные на джаве, не поняли, что разрешение теперь 4к. Они всё ещё отображаются так, как будто разрешение 1920х1080 (или другое, но меньше, чем 4к). И выглядят очень пиксельно и некрасиво. sudo pacman -Syu не помогло. ОС Arch linux, оконный менеджер Hyprland. И это происходит на всех версиях джавы.


Ответы (2 шт):

Автор решения: AlekseiGaile

Спросим chatgpt?

В Java-приложениях под Linux «мыльное» или пиксельное изображение на 4K почти всегда связано не с самим разрешением экрана, а с тем, что Java-рантайм не знает про HiDPI/scale. Нужно указать JVM, что у вас есть масштабирование. Вот что можно проверить и настроить:

1️⃣ Проверить масштабирование в системе

Убедитесь, что в окружении Wayland/Hyprland действительно выставлен масштаб (например 200% для 4K).

echo $XDG_SESSION_TYPE # должно быть wayland

и что переменные вроде QT_SCALE_FACTOR, GDK_SCALE для других тулкитов работают.

2️⃣ Установить переменные среды для Java

Java по умолчанию не использует системный scale. Перед запуском Java-приложения добавьте (или в ~/.bashrc, ~/.zshrc, в .desktop файлы):

Для OpenJDK 9+

(имеет встроенную поддержку HiDPI через систему sun.java2d.uiScale):

export _JAVA_OPTIONS='-Dsun.java2d.uiScale=2'

Число 2 – это 200% масштаб, подберите под свой случай (1.5, 1.75 и т.д.).

Для OpenJDK 8 (старые Swing/JavaFX): export _JAVA_OPTIONS='-Dsun.java2d.dpiAware=true -Dsun.java2d.uiScale=2'

или хотя бы

export _JAVA_OPTIONS='-Dsun.java2d.uiScale=2'

3️⃣ Проверить что это применяется java -version echo $_JAVA_OPTIONS

и запустите проблемную программу из той же сессии.

4️⃣ Если это конкретное приложение (IntelliJ, Minecraft и т.п.)

У большинства IDE/лаунчеров есть собственные файлы .vmoptions — туда же можно добавить -Dsun.java2d.uiScale=2.

5️⃣ Дополнительно для Wayland

Некоторые Java-приложения работают через XWayland. Попробуйте запускать с:

GDK_SCALE=2 GDK_DPI_SCALE=0.5 java -jar app.jar

или добавить в ~/.config/environment.d/ нужные переменные.

6️⃣ Альтернативы

Попробовать JetBrains Runtime (JBR) — это форк OpenJDK с улучшенной HiDPI поддержкой.

Если используете JavaFX ≥11, добавьте -Dprism.allowhidpi=true.

Итог: Arch, pacman, обновления тут ни при чём — это не баг пакетов, а отсутствие авто-HiDPI в Java. Наиболее универсальное решение:

export _JAVA_OPTIONS='-Dsun.java2d.uiScale=2'

или добавить эту строку в ~/.profile / ~/.bashrc. После этого Java-GUI станет чётким на 4K.

→ Ссылка
Автор решения: 3DFyx

Я немного поразбирался вместе с дипсиком, всё оказалось немного проще.

Оказывается, проблема была не в Java, а в Xwayland. Если у вас подобная проблема, введите в консоль xrandr --current. Вывод должен содержать текущее разрешение монитора, которое использует Xwayland. Если оно отличается от вашего, то значит, что корень проблемы найден. После ввода в конфиг hyprland.conf:

xwayland {
  force_zero_scaling = true
}

# или
xwayland {
  scale = 1
}

У меня всё починилось.

→ Ссылка