Hyprland icon indicating copy to clipboard operation
Hyprland copied to clipboard

Some games launch in floating mode instead of fullscreen

Open TAforever opened this issue 1 year ago • 21 comments

Bug or Regression?

Regression

System Info and Version

System/Version info
<Hyprland, built from branch  at commit 9e781040d9067c2711ec2e9f5b47b76ef70762b3  (props: bump version to 0.41.1).
Date: Thu Jun 13 09:54:06 2024
Tag: v0.41.1, commits: 4818

flags: (if any)


System Information:
System name: Linux
Node name: arch
Release: 6.9.5-arch1-1
Version: #1 SMP PREEMPT_DYNAMIC Sun, 16 Jun 2024 19:06:37 +0000


GPU information: 
2b:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Navi 23 [Radeon RX 6600/6600 XT/6600M] [1002:73ff] (rev c7) (prog-if 00 [VGA controller])


os-release: NAME="Arch Linux"
PRETTY_NAME="Arch Linux"
ID=arch
BUILD_ID=rolling
ANSI_COLOR="38;2;23;147;209"
HOME_URL="https://archlinux.org/"
DOCUMENTATION_URL="https://wiki.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://gitlab.archlinux.org/groups/archlinux/-/issues"
PRIVACY_POLICY_URL="https://terms.archlinux.org/docs/privacy-policy/"
LOGO=archlinux-logo


plugins:

======Config-Start======


Config File: /home/theodor/.config/hypr/hyprland.conf: Read Succeeded
# Some default env vars.
env = XCURSOR_SIZE,24
env = XDG_CURRENT_DESKTOP,hyprland
env = QT_QPA_PLATFORM,WAYLAND
env = QT_QPA_PLATFORMTHEME,qt6ct
env = XDG_SESSION_TYPE,wayland
#env = SDL_VIDEODRIVER,wayland

# autostart
exec-once=dbus-update-activation-environment --systemd WAYLAND_DISPLAY 
exec-once=firefox
exec=telegram-desktop
exec-once=thunderbird
exec=$HOME/.config/waybar/launch.sh
exec-once=sed -i 's/offset = 10x30/offset = 10x10/g' ~/.config/dunst/dunstrc && dunst
exec-once=swaybg.sh
exec=easyeffects --gapplication-service
exec-once=/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
exec-once=automount.sh
exec-once=wl-paste --watch cliphist store

# window rules
windowrulev2 = workspace 1,class:(firefox) 
windowrulev2 = workspace 2,silent,class:(org.telegram.desktop)
windowrulev2 = workspace 3,class:(pcsx2-qt) 
windowrulev2 = workspace 3,silent,class:(steam)
windowrulev2 = workspace 3,class:(org.libretro.RetroArch) 
windowrulev2 = workspace 4 silent,class:(thunderbird) 
windowrulev2 = workspace 5,class:(com.transmissionbt.transmission_2066_12218468)
windowrulev2 = workspace 5,class:(transmission-gtk)
windowrulev2 = workspace 6,class:(Gimp-2.10)
windowrulev2 = float,class:(flameshot)
windowrulev2 = float,class:(galculator)
windowrulev2 = fullscreen,class:(Rusted Warfare)

# appearance
exec=gsettings set org.gnome.desktop.interface gtk-theme 'Gruvbox-Material-Dark'
exec=gsettings set org.gnome.desktop.interface icon-theme 'Papirus-Dark'
exec=gsettings set org.gnome.desktop.interface cursor-theme 'Adwaita'
exec=gsettings set org.gnome.desktop.interface font-name 'Noto Sans Regular 10'


# main settings
monitor=,preferred,auto,auto

general {
    gaps_in = 3
    gaps_out = 3
    border_size = 1
    col.active_border = rgba(c2af8dee) 45deg
    col.inactive_border = rgba(665c54aa)

    layout = master 
}

input {
    kb_layout = us,ru
    kb_variant =
    kb_model = pc104
    kb_options = grp:caps_toggle
    kb_rules =

    follow_mouse = 1
    repeat_rate = 20
    repeat_delay = 300

    touchpad {
        natural_scroll = no
    }

    sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
}



misc {
    disable_hyprland_logo = true
    focus_on_activate = true
    force_default_wallpaper = 0
    disable_splash_rendering = true
    enable_swallow = true
    swallow_regex = kitty
    swallow_exception_regex = wev
    
}


decoration {
    rounding = 0
    blur {
    enabled = false
    size = 20
    passes = 1
    new_optimizations = true
    }
    drop_shadow = yes
    shadow_range = 4
    shadow_render_power = 3
    col.shadow = rgba(1a1a1aee)
}

animations {
    enabled = 0


    bezier = myBezier, 0.05, 0.1, 0.1, 1.05

    animation = windows, 1, 2, myBezier
    animation = windowsOut, 1, 2, default, popin 80%
    animation = border, 1, 2, default
    animation = borderangle, 1, 2, default
    animation = fade, 1, 3, default
    animation = workspaces, 1, 2, default
}

master {
    #new_status = master
    new_is_master = true
    mfact = 0.55
    new_on_top = true
    no_gaps_when_only = 0
    orientation = left
    always_center_master = true
}

gestures {
    workspace_swipe = off
}

# binds
$mainMod = SUPER

bind = $mainMod, return, exec, kitty
bind = $mainMod SHIFT, return, layoutmsg, swapwithmaster 
bind = $mainMod, Q, killactive 
bind = $mainMod SHIFT, Q, exec, killactive.sh
bind = $mainMod, E, exec,rofi -show emoji -modi emoji 
bind = $mainMod, D, exec, rofi -show drun
bind = $mainMod, X, exec, rofi -modi clipboard:$HOME/.local/bin/cliphist-rofi -show clipboard
bind = Control, delete, exec, dunstctl close-all
bind = Control, insert, exec, dunstctl history-pop
bind = Control, backslash, exec, dunstify -u low $(curl 'wttr.in?format=1')
bind = Control_ALT, r, exec, systemctl reboot
bind = Control_ALT, s, exec, suspend.sh
bind = Control_ALT, p, exec, systemctl poweroff
bind = $mainMod, S, togglefloating,
bind = $mainMod, P, pseudo, # dwindle
bind = $mainMod, J, togglesplit, # dwindle
bind = Control ALT, Down, exec, playerctl play-pause
bind = Control ALT, Right, exec, playerctl next
bind = Control ALT, Left, exec, playerctl previous
bind = $mainMod SHIFT,E,exit                                                                                        
bind = $mainMod SHIFT,R,exec,hyprctl reload
bind = $mainMod,F,fullscreen
bind = $mainMod SHIFT, F, fakefullscreen                                                                                     
bind = $mainMod,F1,exec,firefox                                                                                  
bind = $mainMod,F2,exec,telegram-desktop                                                                         
bind = $mainMod,F3,exec,steam                                                                                    
bind = $mainMod,F4,exec,crow                                                                                     
bind = $mainMod,F5,exec,thunderbird                                                                              
bind = $mainMod,F6,exec,galculator                                                                             
bind = $mainMod,F7,exec,kitty -e btop
bind = ,Print,exec,flameshot screen                                                                                 
bind = SHIFT,Print,exec,flameshot gui                                                                                
#bind = ,Print,exec,grim ~/Pictures/screenshots/screen-"$(date +%s)".png
#bind = SHIFT,Print,exec,grim -g "$(slurp)" ~/Pictures/screenshots/screen-"$(date +%s)".png                                                                                                            
#bind = $mainMod,Print,exec,grim -g "$(slurp -p)" -t ppm - | convert - -format '%[pixel:p{0,0}]' txt:- | tail -n 1 | cut -d ' ' -f 4 | wl-copy
bind = $mainMod,A,layoutmsg,addmaster                                                                            
bind = $mainMod,R,layoutmsg,removemaster

binde = CTRL,right,exec,changevolume.sh 5%+
binde = CTRL,left,exec,changevolume.sh 5%-
bind = CTRL,m,exec,changevolume.sh mute
bind = CTRL,u,exec,changevolume.sh unmute

# Move focus through list of windows
bind = $mainMod, up, layoutmsg, cyclenext
bind = $mainMod, down, layoutmsg, cycleprev
bind = $mainMod SHIFT, up, layoutmsg, swapnext
bind = $mainMod SHIFT, down, layoutmsg, swapprev

# chandge layout orientation
bind = $mainMod, grave, layoutmsg, orientationcycle left right bottom top

# Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10

# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, movetoworkspacesilent, 1
bind = $mainMod SHIFT, 2, movetoworkspacesilent, 2
bind = $mainMod SHIFT, 3, movetoworkspacesilent, 3
bind = $mainMod SHIFT, 4, movetoworkspacesilent, 4
bind = $mainMod SHIFT, 5, movetoworkspacesilent, 5
bind = $mainMod SHIFT, 6, movetoworkspacesilent, 6
bind = $mainMod SHIFT, 7, movetoworkspacesilent, 7
bind = $mainMod SHIFT, 8, movetoworkspacesilent, 8
bind = $mainMod SHIFT, 9, movetoworkspacesilent, 9
bind = $mainMod SHIFT, 0, movetoworkspacesilent, 10

# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1

# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow

# sets repeatable binds for resizing the active window
binde = $mainMod,right,resizeactive,50 0
binde = $mainMod,left,resizeactive,-50 0





======Config-End========>

Description

After updating to version 0.41, Hyprland began to ignore fullscreen requests from some games

https://github.com/hyprwm/Hyprland/assets/52626363/8385b632-791b-4876-8c0e-6086fae2dc18

How to reproduce

Just launch War Thunder (for example) on Steam

Crash reports, logs, images, videos

No response

TAforever avatar Jun 17 '24 16:06 TAforever

For me it only seems to do this on initial launch. If the game has an in-game option to switch between fullscreen/windowed, it seems to work when toggled.

zakk4223 avatar Jun 17 '24 19:06 zakk4223

Of course it works if I press the shortcut to go to fullscreen but this should happen automatically, as it was in previous versions of Hyprland

TAforever avatar Jun 17 '24 19:06 TAforever

For me it only seems to do this on initial launch. If the game has an in-game option to switch between fullscreen/windowed, it seems to work when toggled.

Same here

nonetrix avatar Jun 22 '24 03:06 nonetrix

Also noticing this behaviour, perhaps its because the laucher is initially floating

different-name avatar Jul 20 '24 07:07 different-name

can't you just set a window rule

MightyPlaza avatar Jul 24 '24 15:07 MightyPlaza

can't you just set a window rule

No, it has no effect from what I've tried, possibly due to this:

Also noticing this behaviour, perhaps its because the laucher is initially floating

I've noticed it's impossible to tile the launchers for some games, and that they share the same class and title as the game window itself

different-name avatar Jul 24 '24 15:07 different-name

can't you just set a window rule

No, it has no effect from what I've tried, possibly due to this:

Also noticing this behaviour, perhaps its because the laucher is initially floating

I've noticed it's impossible to tile the launchers for some games, and that they share the same class and title as the game window itself

that's impossible window doesn't have any say in fullscreen window rules, specially if the fullscreen and maximize events have been supressed what's the output of hyprctl clients and what window rule did you make?

MightyPlaza avatar Jul 24 '24 15:07 MightyPlaza

What do you mean by fullscreen and maximise events being supressed?

different-name avatar Jul 24 '24 15:07 different-name

windowrulev2=suppressevent maximize, class:^(firefox)$ for example to make sure the client isn't removing maximized state

MightyPlaza avatar Jul 24 '24 15:07 MightyPlaza

Adding the suppressevent for maximize and fullscreen worked perfectly, thank you - I didn't realise those existed

@TAforever looks like the issue can be closed now

different-name avatar Jul 24 '24 15:07 different-name

There is such a thing as a fullscreen request that some programs request to automatically launch in fullscreen, and until version 0.41 Hyprland correctly processed these requests. I have one game that does not send fullscreen requests even to Windows and for it I made a fullscreen rule, but here the error is on Hyprland’s side. Specifically for the game War Thunder, hyprctl clients does not even give out the class name so that I can make a fullscreen rule

TAforever avatar Jul 24 '24 16:07 TAforever

There is such a thing as a fullscreen request that some programs request to automatically launch in fullscreen, and until version 0.41 Hyprland correctly processed these requests.

true and probably should be fixed, however since it's on xwayland I'd expect it to have a lower priority

Specifically for the game War Thunder, hyprctl clients does not even give out the class name so that I can make a fullscreen rule

i think this is reported somewhere, but can't find it atm

MightyPlaza avatar Jul 24 '24 16:07 MightyPlaza

You should perform a bisect https://wiki.hyprland.org/Crashes-and-Bugs/#bisecting-an-issue

different-name avatar Jul 24 '24 16:07 different-name

You should perform a bisect https://wiki.hyprland.org/Crashes-and-Bugs/#bisecting-an-issue

it was likely the xwayland rewrite

MightyPlaza avatar Jul 24 '24 16:07 MightyPlaza

There is such a thing as a fullscreen request that some programs request to automatically launch in fullscreen, and until version 0.41 Hyprland correctly processed these requests.

true and probably should be fixed, however since it's on xwayland I'd expect it to have a lower priority

Specifically for the game War Thunder, hyprctl clients does not even give out the class name so that I can make a fullscreen rule

i think this is reported somewhere, but can't find it atm

Yes, I understand that a lot of work is being done now and my problem has a low priority

TAforever avatar Jul 24 '24 16:07 TAforever

The problem is still relevant and I will add that when switching to a workspace with another XWayland client and returning back to the game, the previously launched game that did not switch to fullscreen mode on startup goes into full screen mode.

bubba-champion avatar Aug 18 '24 12:08 bubba-champion

The problem is still relevant and I will add that when switching to a workspace with another XWayland client and returning back to the game, the previously launched game that did not switch to fullscreen mode on startup goes into full screen mode.

supressevent window rule if you want to

MightyPlaza avatar Aug 18 '24 13:08 MightyPlaza

Guys, I think I've found a solution. It seems to me that the games still run in fullscreen, but the waybar remains visible. To avoid this, specify the bottom layer for the waybar in ~/.config/waybar/config.jsonc "layer": "bottom"

TAforever avatar Sep 02 '24 16:09 TAforever

Uh, that isn't the issue I was having? I had Waybar appear above windows in some cases way before having this

nonetrix avatar Sep 02 '24 17:09 nonetrix

Guys, I think I've found a solution. It seems to me that the games still run in fullscreen, but the waybar remains visible. To avoid this, specify the bottom layer for the waybar in ~/.config/waybar/config.jsonc "layer": "bottom"

That is not a fix for this issue. It's just a workaround. You're changing the behavior of waybar to mask an actual bug. Also means if you actually want waybar above non-fullscreen windows you can no longer do that.

This weird fullscreen but not really issue started happening after the xwayland rewrite, so it is an actual bug that needs fixing.

zakk4223 avatar Sep 02 '24 23:09 zakk4223

That is not a fix for this issue. It's just a workaround. You're changing the behavior of waybar to mask an actual bug. Also means if you actually want waybar above non-fullscreen windows you can no longer do that.

This weird fullscreen but not really issue started happening after the xwayland rewrite, so it is an actual bug that needs fixing.

Yes, you're right, I didn't need to close the issue, hyprctl activewindow shows that the game is not in fullscreen

TAforever avatar Sep 03 '24 16:09 TAforever

Hello there!

This issue has been closed, as we are moving from issues to discussions. More about this can be found here and in #9854.

Firstly, please make sure this issue is still relevant in latest Hyprland. If so, we ask you to open a discussion (please read the discussion guidelines first, in the pinned post)

Thank you for your understanding!

vaxerski avatar Apr 05 '25 19:04 vaxerski