From 8937f0320035b0c5a4c556eee93eb73a603e427a Mon Sep 17 00:00:00 2001 From: aibrash Date: Fri, 30 Oct 2026 15:40:15 +0500 Subject: [PATCH] Keep the DMS bar visible for fullscreen programs Programs that go fullscreen on their own (F11, RDP, video) are shown maximized below the bar while still believing they are fullscreen (window.fullscreen handler + fullscreen_state). Mod+F now maximizes with the bar visible, Mod+Shift+F is real fullscreen without the bar. Co-Authored-By: Claude Sonnet 5.5 --- hypr/cheatsheet.txt | 5 +++-- hypr/hyprland.lua | 19 +++++++++++++++++-- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/hypr/cheatsheet.txt b/hypr/cheatsheet.txt index e7288a0..317dc62 100644 --- a/hypr/cheatsheet.txt +++ b/hypr/cheatsheet.txt @@ -14,9 +14,10 @@ Mod+Shift+V История буфера обмена Mod+H/J/K/L Фокус влево/вниз/вверх/вправо (также стрелки) Mod+Shift+H/J/K/L Переместить окно (также стрелки) Mod+Shift+Q Закрыть окно -Mod+F На весь экран +Mod+F Развернуть окно на весь экран, панель остаётся (повтор — вернуть) Mod+Shift+Space Плавающее / тайловое -Mod+Shift+F Плавающее / тайловое +Mod+Shift+F Настоящий полный экран без панели (повтор — выйти) + Программы, которые сами уходят в полный экран (F11, RDP, видео), остаются с панелью Mod+C Центрировать плавающее окно Mod+Shift+T Закрепить плавающее окно поверх всех Mod+E Сменить направление разбиения diff --git a/hypr/hyprland.lua b/hypr/hyprland.lua index 2d9799a..14faea4 100644 --- a/hypr/hyprland.lua +++ b/hypr/hyprland.lua @@ -169,9 +169,15 @@ for key, d in pairs(dirs) do end -- layout -b(mod .. " + F", hl.dsp.window.fullscreen()) +-- Mod+F maximizes (the DMS bar stays visible); Mod+Shift+F is real fullscreen without the bar. +b(mod .. " + F", hl.dsp.window.fullscreen({ mode = "maximized" })) +b(mod .. " + SHIFT + F", function() + local w = hl.get_active_window() + if not w then return end + if w.fullscreen ~= 2 then HL_FS_REAL = true end -- let the handler below leave this one alone + hl.dispatch(hl.dsp.window.fullscreen({ mode = "fullscreen" })) +end) b(mod .. " + SHIFT + SPACE", hl.dsp.window.float({ action = "toggle" })) -b(mod .. " + SHIFT + F", hl.dsp.window.float({ action = "toggle" })) b(mod .. " + C", hl.dsp.window.center()) b(mod .. " + E", hl.dsp.layout("togglesplit")) b(mod .. " + P", hl.dsp.window.pseudo()) @@ -241,6 +247,15 @@ b("XF86AudioPlay", dms("mpris playPause"), { locked = true }) b("XF86AudioNext", dms("mpris next"), { locked = true }) b("XF86AudioPrev", dms("mpris previous"), { locked = true }) +-- Programs that go fullscreen on their own (F11, RDP, video) keep the DMS bar visible: Hyprland shows them +-- maximized (1) while the program still believes it is fullscreen (2). +HL_FS_REAL = false +hl.on("window.fullscreen", function(w) + if not w or w.fullscreen ~= 2 then return end + if HL_FS_REAL then HL_FS_REAL = false; return end -- requested with Mod+Shift+F: keep it real + hl.dispatch(hl.dsp.window.fullscreen_state({ internal = 1, client = w.fullscreen_client, window = "address:" .. w.address })) +end) + ----------------- ---- RULES ------ -----------------