Hyprland
Hyprland copied to clipboard
[bug] FPS not capped for external monitors
Regression?
No
System Info and Version
System/Version info
Hyprland, built from branch main at commit 01ff5fdf6a00a9231bd3b56400d8bcab378c4257 (cursor: make inactive_timeout setting a float (7268)).
Date: Sun Aug 11 06:42:45 2024
Tag: v0.42.0-7-g01ff5fdf, commits: 5076
flags: (if any)
System Information:
System name: Linux
Node name: Tam
Release: 6.9.9-arch1-1
Version: #1 SMP PREEMPT_DYNAMIC Fri, 12 Jul 2024 00:06:53 +0000
GPU information:
0000:00:02.0 VGA compatible controller [0300]: Intel Corporation Raptor Lake-S UHD Graphics [8086:a788] (rev 04) (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:
hyprsplit by shezdy ver 1.0
======Config-Start======
Config File: /home/nktnet/.config/hypr/hyprland.conf: Read Succeeded
# #######################################################################################
# AUTOGENERATED HYPR CONFIG.
# PLEASE USE THE CONFIG PROVIDED IN THE GIT REPO /examples/hypr.conf AND EDIT IT,
# OR EDIT THIS ONE ACCORDING TO THE WIKI INSTRUCTIONS.
# #######################################################################################
# This is an example Hyprland config file.
# Refer to the wiki for more information.
# https://wiki.hyprland.org/Configuring/Configuring-Hyprland/
# Please note not all available settings / options are set here.
# For a full list, see the wiki
# You can split this configuration into multiple files
# Create your files separately and then link them to this file like this:
# source = ~/.config/hypr/myColors.conf
################
### MONITORS ###
################
# See https://wiki.hyprland.org/Configuring/Monitors/
monitor = desc:BOE 0x0A2C,2560x1600@60, auto, 1.6, bitdepth, 10
monitor = desc:Hewlett Packard HP LA2206 CNC1320BJL, 1920x1080@60, auto-left, 1, bitdepth, 10
monitor = desc:LG Electronics LG FULL HD 0x01010101, 1920x1080@60, auto-right, 1, bitdepth, 10
###################
### MY PROGRAMS ###
###################
# See https://wiki.hyprland.org/Configuring/Keywords/
#################
### AUTOSTART ###
#################
# Autostart necessary processes (like notifications daemons, status bars, etc.)
# Or execute your favorite apps at launch like this:
exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
exec-once = hyprpm reload && hyprctl reload
exec-once = wl-paste --type text --watch cliphist store # Stores only text data
exec-once = wl-paste --type image --watch cliphist store # Stores only image data
exec-once = pidof hypridle || hypridle
exec-once = pidof waybar || waybar
exec-once = pidof solaar || solaar --window hide --battery-icons solaar
exec-once = pidof emote || emote
exec-once = pidof -x low_battery.sh || $HOME/.config/hypr/scripts/low_battery.sh
#exec-once = pidof -x temp-tracker.sh || $HOME/.config/hypr/scripts/temp-tracker.sh
#############################
### ENVIRONMENT VARIABLES ###
#############################
# See https://wiki.hyprland.org/Configuring/Environment-variables/
env = HYPRCURSOR_THEME,rose-pine-hyprcursor
env = XCURSOR_SIZE,28
env = HYPRCURSOR_SIZE,28
env = QT_CURSOR_SIZE,28
env = GTK_USE_PORTAL,0
env = GTK_THEME,Breeze:dark
env = HYPRLAND_TRACE,1
env = AQ_TRACE,1
env = ELECTRON_OZONE_PLATFORM_HINT,auto
# Nvidia Environment Variables
#env = LIBVA_DRIVER_NAME,nvidia
#env = XDG_SESSION_TYPE,wayland
#env = GBM_BACKEND,nvidia-drm
#env = __GLX_VENDOR_LIBRARY_NAME,nvidia
#env = NVD_BACKEND,direct
#env = AQ_DRM_DEVICES,$HOME/.config/hypr/cards/intelcard:$HOME/.config/hypr/cards/evdi.0-card:$HOME/.config/hypr/cards/evdi.1-card
#env = AQ_DRM_DEVICES,$HOME/.config/hypr/cards/nvidiacard:$HOME/.config/hypr/cards/intelcard
#env = WLR_DRM_DEVICES,$HOME/.config/hypr/cards/nvidiacard
#env = WLR_DRM_DEVICES,$HOME/.config/hypr/cards/nvidiacard:$HOME/.config/hypr/cards/intelcard
#env = WLR_DRM_DEVICES,$HOME/.config/hypr/cards/intelcard:$HOME/.config/hypr/cards/nvidiacard
#env = WLR_DRM_DEVICES,$HOME/.config/hypr/cards/intelcard:$HOME/.config/hypr/cards/platform-evdi.0-card:$HOME/.config/hypr/cards/platform-evdi.1-card
env = GDK_SCALE,2
#xwayland {
# force_zero_scaling = true
#}
cursor {
hide_on_key_press = false
inactive_timeout = 1
no_hardware_cursors = true
no_break_fs_vrr = false
#min_refresh_rate = 60
}
#####################
### LOOK AND FEEL ###
#####################
# Refer to https://wiki.hyprland.org/Configuring/Variables/
# https://wiki.hyprland.org/Configuring/Variables/#general
general {
gaps_in = 1
gaps_out = 1
border_size = 1
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
col.inactive_border = rgba(595959aa)
# Set to true enable resizing windows by clicking and dragging on borders and gaps
resize_on_border = false
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
allow_tearing = false
layout = master
}
# https://wiki.hyprland.org/Configuring/Variables/#decoration
decoration {
rounding = 0
# Change transparency of focused and unfocused windows
active_opacity = 1.0
inactive_opacity = 1.0
drop_shadow = false
#shadow_range = 4
#shadow_render_power = 3
#col.shadow = rgba(1a1a1aee)
# https://wiki.hyprland.org/Configuring/Variables/#blur
blur {
enabled = false
#size = 3
#passes = 1
#vibrancy = 0.1696
}
}
# https://wiki.hyprland.org/Configuring/Variables/#animations
animations {
enabled = false
first_launch_animation = false
# Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
#bezier = myBezier, 0.05, 0.9, 0.1, 1.05
#animation = windows, 1, 7, myBezier
#animation = windowsOut, 1, 7, default, popin 80%
#animation = border, 1, 10, default
#animation = borderangle, 1, 8, default
#animation = fade, 1, 7, default
#animation = workspaces, 1, 6, default
}
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
dwindle {
pseudotile = true # Master switch for pseudotiling. Enabling is bound to modkey + P in the keybinds section below
preserve_split = true # You probably want this
}
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
master {
new_status = slave
no_gaps_when_only = 1
inherit_fullscreen = true
}
# https://wiki.hyprland.org/Configuring/Variables/#misc
misc {
force_default_wallpaper = 0
disable_hyprland_logo = true
disable_splash_rendering = true
new_window_takes_over_fullscreen = 1
exit_window_retains_fullscreen = true
allow_session_lock_restore = true
vfr = false
vrr = 2
mouse_move_enables_dpms = false
}
# https://wiki.hyprland.org/Configuring/Variables/#render
render {
explicit_sync = 0
explicit_sync_kms = 0
direct_scanout = false
}
#############
### INPUT ###
#############
# https://wiki.hyprland.org/Configuring/Variables/#input
input {
kb_layout = us
kb_variant =
kb_model =
kb_options =
kb_rules =
follow_mouse = 1
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
kb_options = altwin:menu_win
touchpad {
natural_scroll = false
tap-to-click = true
}
}
# https://wiki.hyprland.org/Configuring/Variables/#gestures
gestures {
workspace_swipe = false
}
# Example per-device config
# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
device {
name = epic-mouse-v1
sensitivity = -0.5
}
debug {
overlay = true
disable_logs = false
error_position = 1
disable_time = false
suppress_errors = false
enable_stdout_logs = true
}
####################
### KEYBINDINGSS ###
####################
source = $HOME/.config/hypr/config/keybindings.conf
##############################
### WINDOWS AND WORKSPACES ###
##############################
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
windowrulev2 = float,title:(Floating Window - Show Me The Key)
windowrulev2 = pin,title:(Floating Window - Show Me The Key)
windowrulev2 = move 100%-w-20, 100%-h-20,title:(Floating Window - Show Me The Key)
windowrulev2 = move 100%-w-20, 100%-h-20,title:(swappy)
windowrulev2 = move 100%-w-20, 100%-h-20,title:(Calculator)
windowrulev2 = float,title:(Calculator)
windowrulev2 = suppressevent maximize, class:.* # You'll probably like this.
################
### PLUGINS ###
################
source = $HOME/.config/hypr/plugins/hyprsplit.conf
################
### APPS ###
################
source = $HOME/.config/hypr/apps/gromit-mpx.conf
Config File: /home/nktnet/.config/hypr/config/keybindings.conf: Read Succeeded
# See https://wiki.hyprland.org/Configuring/Keywords/
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
# Modifiers
$modkey = ALT
$winkey = SUPER
# Insert submap bindings
bind = $modkey, I, submap, insert
submap = insert
bind = $modkey, I, submap, reset
submap = reset
# Programs
$mfa = ente_auth
$terminal = kitty
$fileManager = thunar
$menu = wofi --show drun
$MS_TEAMS_PWA_ID = cifhbcnohmdccbgoicgdjpfamggdegmo
# Direct functionalities
#bind = , PRINT, exec, hyprshot --freeze --mode region
bind = , PRINT, exec, hyprshot --freeze --mode=region --raw --clipboard-only | swappy -f -
bind = , XF86PowerOff, exec, wlogout
# Application launchers
bind = $winkey SHIFT, D, togglespecialworkspace, gromit
bind = $winkey, 2, exec, $mfa
bind = $winkey, B, exec, pidof waybar || waybar
bind = $winkey, C, exec, gnome-calculator
bind = $winkey, D, exec, gromit-mpx --quit || hyprctl dispatch togglespecialworkspace gromit
bind = $winkey, E, exec, $fileManager
bind = $winkey, F, exec, firefox
bind = $winkey, G, exec, google-chrome-stable
bind = $winkey, L, exec, hyprlock
bind = $winkey, M, exec, $terminal -e btop
bind = $winkey, P, exec, hyprpicker --autocopy --no-fancy
bind = $winkey, Q, exec, $terminal
bind = $winkey, R, exec, rnote
bind = $winkey, Return, exec, $terminal
bind = $winkey, S, exec, killall showmethekey-gtk || showmethekey-gtk
bind = $winkey, T, exec, gtk-launch chrome-$MS_TEAMS_PWA_ID-Default.desktop
bind = $winkey SHIFT, T, exec, gtk-launch msedge-$MS_TEAMS_PWA_ID-Default.desktop
bind = $winkey, U, exec, emote
bind = $winkey, V, exec, pavucontrol
bind = $modkey SHIFT, Return, exec, $terminal
bind = $modkey, P, exec, $menu
bind = $modkey, B, exec, killall -SIGUSR1 waybar
bind = $modkey SHIFT, B, exec, killall -SIGUSR2 waybar
bind = $modkey SHIFT, C, killactive,
bind = $modkey SHIFT, Q, exec, killall -9 Hyprland
bind = $modkey, F, togglefloating,
bind = $modkey, R, fullscreen, 0
bind = $modkey, T, fullscreen, 1
bind = $modkey, M, fullscreen, 1
bind = $modkey, V, exec, cliphist list | wofi --dmenu | cliphist decode | wl-copy
bind = $modkey, SPACE, fullscreen, 1
# Move Focus
bind = $modkey, J, layoutmsg, cyclenext
bind = $modkey, K, layoutmsg, cycleprev
# Move active window
bind = $modkey SHIFT, J, layoutmsg, swapnext
bind = $modkey SHIFT, K, layoutmsg, swapprev
bind = $modkey SHIFT, H, resizeactive, -50 0
bind = $modkey SHIFT, L, resizeactive, 50 0
# Resize active window
binde = $modkey SHIFT, left, resizeactive, -50 0
binde = $modkey SHIFT, right, resizeactive, 50 0
binde = $modkey SHIFT, up, resizeactive, 0 -50
binde = $modkey SHIFT, down, resizeactive, 0 50
# Move active window
binde = $modkey, right, moveactive, 50 0
binde = $modkey, left, moveactive, -50 0
binde = $modkey, up, moveactive, 0 -50
binde = $modkey, down, moveactive, 0 50
# Example special workspace (scratchpad)
#bind = $modkey, S, togglespecialworkspace, magic
#bind = $modkey SHIFT, S, movetoworkspace, special:magic
# Scroll through existing workspaces with modkey + scroll
bind = $modkey, mouse_down, workspace, e+1
bind = $modkey, mouse_up, workspace, e-1
# Move/resize windows with modkey + LMB/RMB and dragging
bindm = $modkey, mouse:272, movewindow
bindm = $modkey, mouse:273, resizewindow
# Volume
binde = , XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.4 @DEFAULT_AUDIO_SINK@ 5%+
binde = , XF86AudioLowerVolume, exec, wpctl set-volume -l 1.4 @DEFAULT_AUDIO_SINK@ 5%-
bind = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bind = , XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
# Brightness
binde = , XF86MonBrightnessUp, exec, brightnessctl set +5%+
binde = , XF86MonBrightnessDown, exec, brightnessctl set 5%-
# Focus next/prev monitors
bind = $modkey, COMMA, focusmonitor, l
bind = $modkey, PERIOD, focusmonitor, r
# Move window to next/prev monitors
bind = $modkey SHIFT, COMMA, movewindow, mon:l
bind = $modkey SHIFT, PERIOD, movewindow, mon:r
bind = $winkey, COMMA, workspace, -1
bind = $winkey, PERIOD, workspace, +1
# ============================================================================ #
# NOTE: This will be overridden replaced by the hyprsplit plugin
# https://github.com/shezdy/hyprsplit
# See ~/.config/hypr/plugins/hyprsplit.conf
# Switch workspaces with modkey + [0-9]
#bind = $modkey, 1, workspace, 1
#bind = $modkey, 2, workspace, 2
#bind = $modkey, 3, workspace, 3
#bind = $modkey, 4, workspace, 4
#bind = $modkey, 5, workspace, 5
#bind = $modkey, 6, workspace, 6
#bind = $modkey, 7, workspace, 7
#bind = $modkey, 8, workspace, 8
#bind = $modkey, 9, workspace, 9
#bind = $modkey, 0, workspace, 10
#
## Move active window to a workspace with modkey + SHIFT + [0-9]
#bind = $modkey SHIFT, 1, movetoworkspace, 1
#bind = $modkey SHIFT, 2, movetoworkspace, 2
#bind = $modkey SHIFT, 3, movetoworkspace, 3
#bind = $modkey SHIFT, 4, movetoworkspace, 4
#bind = $modkey SHIFT, 5, movetoworkspace, 5
#bind = $modkey SHIFT, 6, movetoworkspace, 6
#bind = $modkey SHIFT, 7, movetoworkspace, 7
#bind = $modkey SHIFT, 8, movetoworkspace, 8
#bind = $modkey SHIFT, 9, movetoworkspace, 9
#bind = $modkey SHIFT, 0, movetoworkspace, 10
Config File: /home/nktnet/.config/hypr/plugins/hyprsplit.conf: Read Succeeded
plugin {
hyprsplit {
num_workspaces = 10
}
}
bind = $modkey, 1, split:workspace, 1
bind = $modkey, 2, split:workspace, 2
bind = $modkey, 3, split:workspace, 3
bind = $modkey, 4, split:workspace, 4
bind = $modkey, 5, split:workspace, 5
bind = $modkey, 6, split:workspace, 6
bind = $modkey, 7, split:workspace, 7
bind = $modkey, 8, split:workspace, 8
bind = $modkey, 9, split:workspace, 9
bind = $modkey, 0, split:workspace, 10
bind = $modkey SHIFT, 1, split:movetoworkspacesilent, 1
bind = $modkey SHIFT, 2, split:movetoworkspacesilent, 2
bind = $modkey SHIFT, 3, split:movetoworkspacesilent, 3
bind = $modkey SHIFT, 4, split:movetoworkspacesilent, 4
bind = $modkey SHIFT, 5, split:movetoworkspacesilent, 5
bind = $modkey SHIFT, 6, split:movetoworkspacesilent, 6
bind = $modkey SHIFT, 7, split:movetoworkspacesilent, 7
bind = $modkey SHIFT, 8, split:movetoworkspacesilent, 8
bind = $modkey SHIFT, 9, split:movetoworkspacesilent, 9
bind = $modkey SHIFT, 0, split:movetoworkspacesilent, 10
bind = $modkey, GRAVE, split:swapactiveworkspaces, current +1
bind = $modkey, G, split:grabroguewindows
Config File: /home/nktnet/.config/hypr/apps/gromit-mpx.conf: Read Succeeded
# GROMIT-MPX
workspace = special:gromit, gapsin:0, gapsout:0, on-created-empty: gromit-mpx --active
windowrulev2 = noblur, title:^(gromit-mpx)$
windowrulev2 = noshadow, title:^(gromit-mpx)$
windowrulev2 = maximize, title:^(gromit-mpx)$
windowrulev2 = opacity 1 override, 1 override,title:^(gromit-mpx)$
windowrulev2 = size 100% 100%, title:^(gromit-mpx)$
======Config-End========
Description
The refresh rate / frames per second (FPS) of my 2 external monitors (connected via Displaylink/Evdi) is not capped despite setting them at @60 in ~/.config/hypr/hyprland.conf. I've observed FPS ranging from 1-300.
My Laptop screen (eDP-1) is correctly capped below 60.
hyprctl monitors
~$ hyprctl monitors
Monitor eDP-1 (ID 0):
[email protected] at 0x0
description: BOE 0x0A2C
make: BOE
model: 0x0A2C
serial:
active workspace: 1 (1)
special workspace: 0 ()
reserved: 0 33 0 0
scale: 1.60
transform: 0
focused: yes
dpmsStatus: 1
vrr: 0
activelyTearing: false
disabled: false
currentFormat: XRGB8888
availableModes: [email protected] [email protected]
Monitor DVI-I-1 (ID 1):
[email protected] at 1600x0
description: LG Electronics LG FULL HD 0x01010101
make: LG Electronics
model: LG FULL HD
serial: 0x01010101
active workspace: 12 (12)
special workspace: 0 ()
reserved: 0 33 0 0
scale: 1.00
transform: 0
focused: no
dpmsStatus: 1
vrr: 0
activelyTearing: false
disabled: false
currentFormat: XRGB8888
availableModes: [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected]
Monitor DVI-I-2 (ID 2):
[email protected] at -1920x0
description: Hewlett Packard HP LA2206 CNC1320BJL
make: Hewlett Packard
model: HP LA2206
serial: CNC1320BJL
active workspace: 21 (21)
special workspace: 0 ()
reserved: 0 33 0 0
scale: 1.00
transform: 0
focused: no
dpmsStatus: 1
vrr: 0
activelyTearing: false
disabled: false
currentFormat: XRGB8888
availableModes: [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected]
Image with debug:overlay = true:
Moving the cursor on the external monitors also cause the FPS for that monitor to spike (in the 250-300 range).
Unsure if this is also the cause of #6935.
How to reproduce
- Start Hyprland with debug:overlay = true
- Observe the FPS of external monitors (not capped at 60 FPS)
- Move mouse in external monitor's screen (spike to 250-300 FPS)
Crash reports, logs, images, videos
Hyprland Logs:
Video for reference: