Java не считывает разрешение монитора linux
Недавно у меня появился 4к монитор. По какой-то причине, программы, написанные на джаве, не поняли, что разрешение теперь 4к. Они всё ещё отображаются так, как будто разрешение 1920х1080 (или другое, но меньше, чем 4к). И выглядят очень пиксельно и некрасиво. sudo pacman -Syu не помогло. ОС Arch linux, оконный менеджер Hyprland. И это происходит на всех версиях джавы.
Ответы (2 шт):
Спросим 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.
Я немного поразбирался вместе с дипсиком, всё оказалось немного проще.
Оказывается, проблема была не в Java, а в Xwayland. Если у вас подобная проблема, введите в консоль xrandr --current. Вывод должен содержать текущее разрешение монитора, которое использует Xwayland. Если оно отличается от вашего, то значит, что корень проблемы найден. После ввода в конфиг hyprland.conf:
xwayland {
force_zero_scaling = true
}
# или
xwayland {
scale = 1
}
У меня всё починилось.