Lewati ke konten utama
  1. Posts/

Monitor HDMI Blank Saat Fullscreen di Hyprland? Ini Penyebab dan Solusinya

Noor Khafidzin
Penulis
Noor Khafidzin
Seorang homelab enthusiast yang terobsesi pada efisiensi sistem dan seni pemecahan masalah (troubleshooting).
Daftar isi
Hyprland Tips - Artikel ini merupakan bagian dari sebuah seri.
Bagian : Artikel ini

Awal Mula Masalah Monitor Blank di Hyprland
#

Setup-nya seharusnya simpel: laptop yang menjalankan OS Linux (misalnya Fedora 43) dengan window manager Hyprland, lalu disambungkan ke monitor eksternal via kabel HDMI. Semua berjalan normal, sampai satu momen ketika membuka video player seperti mpv dan menekan tombol fullscreen.

Tiba-tiba, monitor HDMI langsung blank. Layar hitam. Beberapa detik kemudian nyala lagi, seolah kabel baru saja dicolok ulang. Sangat aneh dan mengganggu.

Ternyata hal ini juga terjadi setiap kali kursor berpindah (pindah fokus) dari layar laptop ke monitor eksternal. Sebentar hitam, lalu layarnya muncul lagi. Ini tentu bukan pengalaman menggunakan Wayland yang nyaman, apalagi kalau sedang asyik menonton atau presentasi.


Kenapa Ini Terjadi?
#

Ada dua fitur di Hyprland yang jadi biang keroknya, bergantung pada situasi:

1. Direct Scanout
#

Saat aplikasi masuk ke mode fullscreen, Hyprland secara default mencoba mengaktifkan direct scanout: sebuah optimasi di mana frame dari aplikasi dikirim langsung ke display, melewati compositor. Ini bagus untuk performa, tapi ada konsekuensinya.

Ketika direct scanout diaktifkan, monitor harus melakukan semacam “negosiasi ulang” sinyal dengan GPU. Proses inilah yang menyebabkan layar blank sejenak setiap kali fullscreen diaktifkan atau dinonaktifkan. Pada beberapa kombinasi GPU dan monitor, handshake ini justru gagal dan monitor terlihat disconnect.

2. VRR (Variable Refresh Rate)
#

Kalau direct scanout sudah dimatikan tapi masalah masih ada (terutama saat kursor berpindah antar monitor), kemungkinan besar VRR yang menjadi penyebabnya.

VRR memungkinkan refresh rate monitor berubah-ubah mengikuti frame rate aplikasi. Masalahnya, ketika Hyprland aktif di mode vrr = 1 (selalu aktif di semua monitor), perpindahan fokus antar monitor bisa memicu perubahan refresh rate yang tidak stabil, sehingga monitor blank sebentar.


Solusi: Dari yang Paling Sederhana
#

Solusi 1: Matikan Direct Scanout
#

Buka file konfigurasi Hyprland:

nano ~/.config/hypr/hyprland.conf

Tambahkan atau ubah bagian berikut:

render {
    direct_scanout = false
}

Reload config:

hyprctl reload

Dengan ini, Hyprland tidak akan mencoba bypass compositor saat fullscreen. Monitor tidak akan blank tiba-tiba, tapi mungkin masih ada sedikit “refresh” hitam sesaat pertama kali masuk fullscreen, dan saat kursor berpindah monitor.

Hasil: Lebih stabil, tapi belum sempurna.


Solusi 2: Ubah Mode VRR (Solusi yang Bekerja)
#

Masih di file hyprland.conf, tambahkan atau ubah bagian misc:

misc {
    vrr = 0
}

Atau jika ingin tetap menikmati VRR saat fullscreen saja:

misc {
    vrr = 2
}

Penjelasan nilai vrr:

  • 0 = VRR dimatikan sepenuhnya
  • 1 = VRR aktif di semua kondisi (default, sering bermasalah)
  • 2 = VRR hanya aktif saat aplikasi fullscreen

Reload config lagi:

hyprctl reload

Kombinasi direct_scanout = false dan vrr = 0 (atau vrr = 2) adalah solusi yang paling stabil. Fullscreen berjalan mulus, kursor bisa berpindah antar monitor tanpa blank sama sekali.


Solusi 3: Set Monitor Secara Eksplisit
#

Kadang Hyprland salah membaca mode atau refresh rate monitor via HDMI. Cek nama monitor terlebih dahulu:

hyprctl monitors

Contoh output:

Monitor HDMI-A-1 (ID 1):
    [email protected]

Lalu set monitor secara eksplisit di config:

monitor = HDMI-A-1, 1920x1080@60, auto, 1

Hindari menggunakan highrr atau preferred jika sering bermasalah, karena Hyprland akan mencoba refresh rate tertinggi yang didukung monitor, yang terkadang tidak stabil via HDMI.


Solusi 4: Paksa Backend Wayland Native di mpv
#

Masalah bisa juga berasal dari sisi mpv yang tidak menggunakan backend render yang optimal. Coba jalankan dengan flag ini:

mpv --vo=gpu-next --gpu-api=vulkan namafile.mp4

Atau simpan sebagai default di ~/.config/mpv/mpv.conf:

vo=gpu-next
gpu-api=vulkan

Ini membuat mpv menggunakan Vulkan langsung, yang lebih kompatibel dengan pipeline Wayland/Hyprland.


Solusi 5: Window Rule untuk mpv
#

Sebagai pelengkap, tambahkan window rule agar Hyprland tidak melakukan perubahan compositor state saat mpv fullscreen:

windowrulev2 = idleinhibit fullscreen, class:^(mpv)$

Konfigurasi Akhir yang Direkomendasikan
#

Berikut rangkuman bagian config yang perlu ditambahkan atau diubah:

render {
    direct_scanout = false
}

misc {
    vrr = 2
}

monitor = HDMI-A-1, 1920x1080@60, auto, 1

windowrulev2 = idleinhibit fullscreen, class:^(mpv)$

Setelah semua perubahan, reload sekali lagi:

hyprctl reload

Penutup
#

Masalah monitor blank di Hyprland ini cukup umum, terutama di setup dual monitor dengan koneksi HDMI. Akar masalahnya biasanya bukan di hardware, melainkan di fitur optimasi Hyprland yang belum tentu cocok dengan semua kombinasi GPU dan monitor.

Solusi yang paling efektif adalah kombinasi mematikan direct_scanout dan mengatur vrr ke mode yang lebih konservatif. Kalau setup kamu mirip (Fedora + Hyprland + monitor HDMI), besar kemungkinan dua langkah itu sudah cukup.

Kalau masih bermasalah setelah semua ini dicoba, cek log Hyprland untuk clue lebih lanjut:

cat /tmp/hypr/$(ls /tmp/hypr)/hyprland.log | grep -i "monitor\|drm\|scanout"

Semoga membantu!

Hyprland Tips - Artikel ini merupakan bagian dari sebuah seri.
Bagian : Artikel ini

Terkait


Muat Komentar