hyprwm / Hyprland

Hyprland is an independent, highly customizable, dynamic tiling Wayland compositor that doesn't sacrifice on its looks.
https://hyprland.org
BSD 3-Clause "New" or "Revised" License
21.66k stars 901 forks source link

High (NVidia) GPU usage from just having a cursor on the (NVidia) GPU connected monitor #6617

Open shinobiultra opened 4 months ago

shinobiultra commented 4 months ago

Regression?

No

System Info and Version

System/Version info ```sh Hyprland, built from branch main at commit fabc30df52ab5d2c369fc8acd4ff909a6ba3b8ac (format: include macros for unreachable). Date: Thu Jun 20 00:15:24 2024 Tag: v0.41.1-52-gfabc30df, commits: 4870 flags: (if any) System Information: System name: Linux Node name: Archee Release: 6.9.5-arch1-1 Version: #1 SMP PREEMPT_DYNAMIC Sun, 16 Jun 2024 19:06:37 +0000 GPU information: 00:02.0 VGA compatible controller [0300]: Intel Corporation Raptor Lake-S GT1 [UHD Graphics 770] [8086:a780] (rev 04) (prog-if 00 [VGA controller]) 01:00.0 VGA compatible controller [0300]: NVIDIA Corporation TU106 [GeForce RTX 2060 SUPER] [10de:1f06] (rev a1) (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/bitwise/.config/hypr/hyprland.conf: Read Succeeded exec-once=~/.config/hypr/autostart.sh source = ~/.config/hypr/source/* # plugins # source = ~/.config/hypr/source/plugins/hyprload.conf # source = ~/.config/hypr/source/plugins/hyprfocus.conf Config File: /home/bitwise/.config/hypr/source/00_env.conf: Read Succeeded # # (https://wiki.hyprland.org/Configuring/Environment-variables/) # (https://github.com/swaywm/wlroots/blob/master/docs/env_vars.md) # (https://www.reddit.com/r/hyprland/comments/17j12jz/finally_got_xwayland_on_nvidia_working_perfectly/) # # ################################### # F*** nvidia specific # # ################################### # Hardware acceleration on NVIDIA GPUs # (https://wiki.archlinux.org/title/Hardware_video_acceleration) # env = LIBVA_DRIVER_NAME,nvidia # (https://wiki.archlinux.org/title/Wayland#Requirements) # WARN: crashes me hyprland # env = GBM_BACKEND,nvidia-drm # To force GBM as a backend # env = __GLX_VENDOR_LIBRARY_NAME,nvidia # set to 1 to use software cursors instead of hardware cursors # (https://wiki.hyprland.org/hyprland-wiki/pages/Nvidia/) # env = WLR_NO_HARDWARE_CURSORS,1 # TIP: Advantage is all the apps will be running on nvidia # WARN: crashes whatever window's opened after "hibranate" # env = __NV_PRIME_RENDER_OFFLOAD,1 # Controls if G-Sync capable monitors should use Variable Refresh Rate (VRR) # See Nvidia Documentation for details. # (https://download.nvidia.com/XFree86/Linux-32bit-ARM/375.26/README/openglenvvariables.html) env = __GL_GSYNC_ALLOWED,1 # Controls if Adaptive Sync should be used. Recommended to set as “0” to avoid # having problems on some games. env = __GL_VRR_ALLOWED,1 # use legacy DRM interface instead of atomic mode setting. Might fix flickering # issues # env = WLR_DRM_NO_ATOMIC=1 # env = __VK_LAYER_NV_optimus,NVIDIA_only # env = NVD_BACKEND,direct # ################################### # XDG specific # # ################################### # NOTE: this is also an nvidia specific env = XDG_SESSION_TYPE,wayland # XDG specific environment variables are often detected through portals and applications that may set those for you, # however it is not a bad idea to set them explicitly. env = XDG_SESSION_DESKTOP,Hyprland # WARN: enabling this will cause some apps like ( Dolphin | image viewer ) to crash # & lag the screen env = XDG_CURRENT_DESKTOP,Hyprland # ################################### # Theming specific # # ################################### # (https://wiki.hyprland.org/FAQ/) # cursor env = HYPRCURSOR_THEME,theme_phinger-cursors-dark env = XCURSOR_SIZE,24 # set a GTK theme manually, for those who want to avoid appearance tools such as lxappearance or nwg-look #env = GTK_THEME, # set your cursor theme. The theme needs to be installed and readable by your user. # env = XCURSOR_THEME,Bibata-Modern-Ice # the line below may help with multiple monitors env = WLR_EGL_NO_MODIFIERS,0 # ################################### # Toolkit Backend vars # # ################################### # QT: Use wayland if available, fall back to x11 if not. env = QT_QPA_PLATFORM,wayland # "wayland;xcb" # GTK: Use wayland if available, fall back to x11 if not. env = GDK_BACKEND,wayland,x11 # Run SDL2 applications on Wayland. Remove or set to x11 if games that # provide older versions of SDL cause compatibility issues env = SDL_VIDEODRIVER,wayland # Clutter package already has wayland enabled, this variable #will force Clutter applications to try and use the Wayland backend env = CLUTTER_BACKEND,wayland # software rendering backend env = WLR_RENDERER_ALLOW_SOFTWARE,1 # env = QT_STYLE_OVERRIDE,kvantum # ################################### # QT specific # # ################################### # (From the QT documentation) enables automatic scaling, based on the monitor’s pixel density # https://doc.qt.io/qt-5/highdpi.html env = QT_AUTO_SCREEN_SCALE_FACTOR,1 # Disables window decorations on QT applications env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 #Tells QT based applications to pick your theme from qt5ct, use with Kvantum. env = QT_QPA_PLATFORMTHEME,qt5ct # ################################### # Apps specific # # ################################### # Enables Wayland for Mozilla products # (https://discourse.ubuntu.com/t/environment-variables-for-wayland-hackers/12750) # set to 1 firefox uses GTK # set to wayland will force firefox to run on wayland env = MOZ_ENABLE_WAYLAND,1 env = MOZ_DISABLE_RDD_SANDBOX,1 env = MOZ_DBUS_REMOTE,1 # ################################### # Java specific # # ################################### # Many Java apps (such as Intellij) don’t support Wayland natively and break on # most XWayland implementations # ################################### # Gaming specific # # ################################### # fix frame timings and input lag env = __GL_MaxFramesAllowed,1 # with this you'll need to use gamescope for gaming # env = XWAYLAND_NO_GLAMOR,1 # ################################### # idk those guyes # # ################################### env = PROTON_ENABLE_NGX_UPDATER,1 # env = MANGOHUD,1 # env = MANGOHUD_DLSYM,1 env = WLR_USE_LIBINPUT,1 # env = LIBSEAT_BACKEND,logind # env = QT_SELECTION=/usr/bin/qmake # env = ELECTRON_ARGS="--enable-features=UseOzonePlatform --ozone-platform=wayland" # env = GDK_SCALE,1 # env = GDK_DPI_SCALE,1 env = ELECTRON_OZONE_PLATFORM_HINT,auto xwayland { force_zero_scaling = true } env = LIBVA_DRIVER_NAME,nvidia env = XDG_SESSION_TYPE,wayland # env = GBM_BACKEND,nvidia-drm env = __GLX_VENDOR_LIBRARY_NAME,nvidia # env = WLR_NO_HARDWARE_CURSORS,1 Config File: /home/bitwise/.config/hypr/source/01_monitors.conf: Read Succeeded # I don't understand the way of configuring monitors positions etc.. # so use (https://github.com/nwg-piotr/nwg-displays) as a cheat seet :) # NOTE: requires "wlr-randr" pkg # list available Monitors with "hyprctl monitors" # monitor=name,resolution,position,scale # Work laptop triple monitor setup monitor=eDP-1,1920x1080,0x0,1.0 monitor=HDMI-A-1,1920x1200,0x-1200,1.0 monitor=HDMI-A-2,1680x1050,-1050x-1050,1.0,transform,3 monitor=DP-1, 3440x1440@144, 1920x0, 1 monitor=DP-2, 3440x1440@144, 1920x0, 1 monitor=DP-3, 3440x1440@144, 1920x0, 1 monitor=desc:Samsung Electric Company SyncMaster H9FQ912421, 1680x1050, 5360x0, 1 monitor=desc:BNQ BenQ XL2411Z C9F01325SL0, 1920x1080, 0x0, 1 Config File: /home/bitwise/.config/hypr/source/02_input.conf: Read Succeeded # see (https://wiki.hyprland.org/Configuring/Variables/) for more input { kb_layout = us, cz kb_variant = kb_model = kb_options = grp:alt_shift_toggle kb_rules = # kb_options = shift:both_capslock # kb_options = caps:escape numlock_by_default = true # respawn window where the mouse is located # follow_mouse = 1 touchpad { natural_scroll = no scroll_factor = 0.5 drag_lock = no tap-and-drag = no clickfinger_behavior = true disable_while_typing = true tap-to-click = true } sensitivity = 0 # -1.0 - 1.0, 0 means no modification. # force_no_accel = 1 } # example per-device config # See https://wiki.hyprland.org/Configuring/Keywords/#executing for more # device:epic mouse V1 { # sensitivity = -0.5 # } # see https://wiki.hyprland.org/Configuring/Variables/ for more gestures { workspace_swipe = true workspace_swipe_fingers = 3 } Config File: /home/bitwise/.config/hypr/source/03_layout.conf: Read Succeeded # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more dwindle { pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below preserve_split = yes # you probably want this } # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more master { new_status = master } Config File: /home/bitwise/.config/hypr/source/04_misc.conf: Read Succeeded # See https://wiki.hyprland.org/Configuring/Variables/ for more misc { # Heavily recommended to leave on true to conserve resources, # Default: true vfr = true # "variable refresh rate", eliminate screen tearing when playing games. tearing is a kind of visual glitch vrr = 1 disable_hyprland_logo = true # :( disable_autoreload = false focus_on_activate = true layers_hog_keyboard_focus = true animate_manual_resizes = false no_direct_scanout = false mouse_move_enables_dpms = true # hide_cursor_on_touch = true disable_splash_rendering = true mouse_move_enables_dpms = true enable_swallow = false } Config File: /home/bitwise/.config/hypr/source/05_general.conf: Read Succeeded # see (https://wiki.hyprland.org/Configuring/Variables/) for more # general { # gaps_in = 10 # gaps_out = 10 # border_size = 2 # resize_on_border = true # extend_border_grab_area = true # col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg # col.inactive_border = rgba(595959aa) # layout = dwindle # } general { # max_fps = 60 gaps_in = 8 gaps_out = 4 border_size = 2 # col.active_border = rgba(BfA9ffee) rgba(7857ffee) 45deg col.active_border = rgba(ff0000aa) rgba(ffff00aa) rgba(00ff00aa) rgba(00ffffaa) rgba(0000ffaa) rgba(ff00ffaa) # col.active_border = rgb(ff0000) rgb(00ff00) rgb(0000ff) # col.inactive_border = rgba(22222288) col.inactive_border = rgba(92e7cb88) layout = dwindle resize_on_border = true extend_border_grab_area = 20 } Config File: /home/bitwise/.config/hypr/source/06_decoration.conf: Read Succeeded decoration { # see (https://wiki.hyprland.org/Configuring/Variables/) for more rounding = 20 # multisample_edges = true blur { enabled = true xray = true # minimum size = 1 # size = 2 # size = 5 size = 6 # size = 16 # minimum = 1 passes = 2 # passes = 3 # passes = 4 new_optimizations = on noise = 0.05 contrast = 1.0 # brightness = 1.0 brightness = 0.9 special = false ignore_opacity = true } blurls = lockscreen # blurls = waybar drop_shadow=true shadow_range=40 # col.shadow=0xffa7caff #86AAEC col.shadow_inactive=0x50000000 dim_inactive = true dim_strength = 0.05 } Config File: /home/bitwise/.config/hypr/source/07_animations.conf: Read Succeeded # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more animations { enabled = true # # # MODE 1 # # bezier = myBezier, 0.05, 0.9, 0.1, 1.05 bezier = flatline, 1.0, 1.0, 0, 0 bezier = flatlinetwo, 0, 0, 1, 1 bezier = shuff, 0, 0.33, 0.66, 1.0 bezier = BorderRotation, 0.45, 0, 0.55, 1 animation = windows, 1, 3, myBezier animation = windowsIn, 1, 3, myBezier animation = windowsOut, 1, 2, default, popin 80% animation = border, 1, 10, default animation = borderangle, 1, 60, flatlinetwo, loop animation = fade, 1, 4, default animation = workspaces, 1, 3, myBezier animation = specialWorkspace, 1, 2, myBezier, slidevert # # # MODE 2 # # # bezier = wind, 0.05, 0.9, 0.1, 1.05 # bezier = winIn, 0.1, 1.1, 0.1, 1.1 # bezier = winOut, 0.3, -0.3, 0, 1 # bezier = liner, 1, 1, 1, 1 # animation = windows, 1, 6, wind, slide # animation = windowsIn, 1, 6, winIn, slide # animation = windowsOut, 1, 5, winOut, slide # animation = windowsMove, 1, 5, wind, slide # animation = border, 1, 1, liner # animation = borderangle, 1, 30, liner, loop # animation = fade, 1, 10, default # animation = workspaces, 1, 5, wind } Config File: /home/bitwise/.config/hypr/source/08_windowrules.conf: Read Succeeded # ################################### # Browser # # ################################### windowrulev2 = opacity 1 1,class:^(firefox-nightly)$ windowrulev2 = workspace 1, monitor 1,class:^(firefox-nightly)$ windowrule = idleinhibit fullscreen,class:^(firefox-nightly)$ windowrulev2 = opacity 1 1,class:^(firefox)$ windowrulev2 = workspace 1, monitor 1,class:^(firefox)$ windowrule = idleinhibit fullscreen,class:^(firefox)$ exec-once = LIBVA_DRIVER_NAME=iHD firefox-nightly windowrulev2 = opacity 0.90 0.90,class:^(Brave-browser)$ windowrulev2 = workspace 2, monitor 1,class:^(Brave-browser)$ windowrule = idleinhibit fullscreen,class:^(Brave-browser)$ # ################################### # Music Player # # ################################### windowrulev2 = opacity 0.90 0.90,class:^(rhythmbox)$ windowrulev2 = workspace 5, monitor 1,class:^(rhythmbox)$ # ################################### # Email client # # ################################### # windowrulev2 = opacity 0.80 0.80,class:^(BlueMail)$, title:^(BlueMail)$ # windowrulev2 = workspace 3 silent, class:^(BlueMail)$, title:^(BlueMail)$ # exec-once = bluemail -in-process-gpu windowrulev2 = opacity 0.80 0.80,class:^(thunderbird)$, title:^(Mozilla Thunderbird)$ windowrulev2 = workspace 3 silent, class:^(thunderbird)$, title:^(Mozilla Thunderbird)$ # exec-once = thunderbird # ################################### # DOCs # # ################################### windowrulev2 = opacity 0.80 0.80,class:^(libreoffice-startcenter)$, title:^(LibreOffice 7.6)$ windowrulev2 = workspace 4 silent, class:^(libreoffice-startcenter)$, title:^(LibreOffice 7.6)$ # ################################### # Note Tacking # # ################################### # exec-once = notion-app # NOTE: note sure about the class/title, not using notion-app anymore # windowrulev2 = workspace 3 silent, class:^(notion-app)$, title:^(notion-app)$ # ################################### # Steam # # ################################### windowrulev2 = opacity 0.80 0.80,class:^(Steam)$ windowrulev2 = opacity 0.80 0.80,class:^(steam)$ windowrulev2 = opacity 0.80 0.80,class:^(steamwebhelper)$ # ################################### # Spotify # # ################################### windowrulev2 = opacity 0.80 0.80,class:^(Spotify)$ # ################################### # vs code # # ################################### windowrulev2 = opacity 1 1,class:^(Code)$ windowrulev2 = opacity 1 1,class:^(code-url-handler)$ # ################################### # Terminal # # ################################### windowrulev2 = opacity 0.80 0.80,class:^(kitty)$ windowrulev2 = float,class:^(cool-retro-term.cool-retro-term)$ windowrulev2 = opacity 0.80 0.80,class:^(cool-retro-term.cool-retro-term)$ # ################################### # Theming apps # # ################################### windowrulev2 = opacity 0.80 0.80,class:^(nwg-look)$ windowrulev2 = float,class:^(nwg-look)$ windowrulev2 = opacity 0.80 0.80,class:^(Lxappearance)$ windowrulev2 = float,class:^(Lxappearance) windowrulev2 = opacity 0.80 0.80,class:^(kvantummanager)$ windowrulev2 = float,class:^(kvantummanager) # ################################### # GTKs # # ################################### windowrulev2 = opacity 0.90 0.90,class:^(com.github.rafostar.Clapper)$ #Clapper-Gtk windowrulev2 = opacity 0.80 0.80,class:^(com.github.tchx84.Flatseal)$ #Flatseal-Gtk windowrulev2 = opacity 0.80 0.80,class:^(hu.kramo.Cartridges)$ #Cartridges-Gtk windowrulev2 = opacity 0.80 0.80,class:^(gnome-boxes)$ #Boxes-Gtk windowrulev2 = opacity 0.80 0.80,class:^(app.drey.Warp)$ #Warp-Gtk windowrulev2 = opacity 0.80 0.80,class:^(yad)$ #Protontricks-Gtk windowrulev2 = opacity 0.80 0.80,class:^(Signal)$ #Signal-Gtk windowrulev2 = opacity 0.80 0.80,class:^(io.gitlab.theevilskeleton.Upscaler)$ #Upscaler-Gtk windowrulev2 = float,class:^(Signal)$ #Signal-Gtk windowrulev2 = float,class:^(app.drey.Warp)$ #Warp-Gtk windowrulev2 = float,class:^(io.gitlab.theevilskeleton.Upscaler)$ #Upscaler-Gtk windowrulev2 = float,class:^(yad)$ #Protontricks-Gtk windowrulev2 = float,class:^(com.github.rafostar.Clapper)$ #Clapper-Gtk windowrulev2 = float,class:^(eog)$ #Imageviewer-Gtk windowrulev2 = float,class:^(gwenview)$ #Imageviewer # ################################### # QTs # # ################################### windowrulev2 = opacity 0.80 0.80,class:^(com.obsproject.Studio)$ #Obs-Qt windowrulev2 = opacity 0.80 0.80,class:^(net.davidotek.pupgui2)$ #ProtonUp-Qt windowrulev2 = float,class:^(net.davidotek.pupgui2)$ #ProtonUp-Qt windowrulev2 = opacity 0.80 0.80,class:^(qt5ct)$ windowrulev2 = float,class:^(qt5ct)$ # ################################### # ELECTRONs # # ################################### windowrulev2 = opacity 0.80 0.80,class:^(discord)$ #Discord-Electron windowrulev2 = opacity 0.80 0.80,class:^(WebCord)$ #WebCord-Electron # ################################### # File explorer # # ################################### windowrulev2 = opacity 0.80 0.80,class:^(org.kde.dolphin)$ windowrulev2 = float,class:^(org.kde.dolphin) windowrulev2 = opacity 0.80 0.80,class:^(nemo)$ windowrulev2 = float,class:^(nemo) # ################################### # KDEs # # ################################### windowrulev2 = opacity 0.80 0.80,class:^(org.kde.ark)$ windowrulev2 = float,class:^(org.kde.ark)$ windowrulev2 = float,class:^(org.kde.polkit-kde-authentication-agent-1)$ windowrulev2 = opacity 0.80 0.70,class:^(org.kde.polkit-kde-authentication-agent-1)$ # ################################### # pavucontrol # # ################################### windowrulev2 = opacity 0.80 0.70,class:^(pavucontrol)$ windowrulev2 = float,class:^(pavucontrol)$ # ################################### # wlogout # # ################################### windowrulev2 = opacity 0.80 0.70,class:^(wlogout)$ windowrulev2 = float,class:^(wlogout)$ # windowrule = fullscreen, wlogout # windowrule = float, title:wlogout # windowrule = fullscreen, title:wlogout # ################################### # blueman # # ################################### windowrulev2 = opacity 0.80 0.70,class:^(blueman-manager)$ windowrulev2 = float,class:^(blueman-manager)$ # ################################### # Network Manager # # ################################### windowrulev2 = opacity 0.80 0.70,class:^(nm-applet)$ windowrulev2 = float,class:^(nm-applet)$ windowrulev2 = opacity 0.80 0.70,class:^(nm-connection-editor)$ windowrulev2 = float,class:^(nm-connection-editor)$ # ################################### # Launcher # # ################################### windowrulev2 = opacity 0.80 0.70,class:^(wofi)$ windowrulev2 = float,class:^(wofi)$ windowrulev2 = opacity 0.80 0.70,class:^(tofi)$ windowrulev2 = float,class:^(tofi)$ windowrulev2 = opacity 0.80 0.70,class:^(rofi)$ windowrulev2 = float,class:^(rofi)$ windowrulev2 = opacity 0.80 0.70,class:^(viewnior)$ windowrulev2 = float,class:^(viewnior)$ windowrulev2 = opacity 0.80 0.70,class:^(feh)$ windowrulev2 = float,class:^(feh)$ # ################################### # Others # # ################################### windowrulev2 = opacity 0.80 0.70,class:^(file_progress)$ windowrulev2 = float,class:^(file_progress)$ windowrulev2 = opacity 0.80 0.70,class:^(confirm)$ windowrulev2 = float,class:^(confirm)$ windowrulev2 = opacity 0.80 0.70,class:^(dialog)$ windowrulev2 = float,class:^(dialog)$ windowrulev2 = opacity 0.80 0.70,class:^(download)$ windowrulev2 = float,class:^(download)$ windowrulev2 = opacity 0.80 0.70,class:^(notification)$ windowrulev2 = float,class:^(notification)$ windowrulev2 = opacity 0.80 0.70,class:^(error)$ windowrulev2 = float,class:^(error)$ windowrulev2 = opacity 0.80 0.70,class:^(splash)$ windowrulev2 = float,class:^(splash)$ windowrulev2 = opacity 0.80 0.70,class:^(confirmreset)$ windowrulev2 = float,class:^(confirmreset)$ windowrulev2 = opacity 0.80 0.70,class:^(Open File)$ windowrulev2 = float,class:^(Open File)$ windowrulev2 = opacity 0.80 0.70,class:^(branchdialog)$ windowrulev2 = float,class:^(branchdialog)$ windowrulev2 = opacity 0.80 0.70,class:^(file-roller)$ windowrulev2 = float,class:^(file-roller)$ windowrulev2 = opacity 0.80 0.70,class:^(Media viewer)$ windowrulev2 = float,class:^(Media viewer)$ windowrulev2 = opacity 0.80 0.70,class:^(Volume Control)$ windowrulev2 = float,class:^(Volume Control)$ windowrulev2 = opacity 0.80 0.70,class:^(Picture-in-Picture)$ windowrulev2 = float,class:^(Picture-in-Picture)$ Config File: /home/bitwise/.config/hypr/source/09_virtual_desktops.conf: Read Succeeded # NOTE: seme as KDE workspace # alternative workaround for: # (https://github.com/levnikmyskin/hyprland-virtual-desktops#choosing-how-to-remember-or-choosing-to-forget) # # by the following config, each monitor will have its assinged workspace see # "keys_monitors.conf" Line 24 for keymaps # Desktop setup (1-5 main monitors changes adapter due to NVidia...) # First workspace=1,monitor:DP-2 workspace=2,monitor:DP-2 workspace=3,monitor:DP-2 workspace=4,monitor:DP-2 workspace=5,monitor:DP-2 # Second workspace=6,monitor:HDMI-A-2 workspace=7,monitor:HDMI-A-2 # Third workspace=8,monitor:DP-1 # Laptop setup # workspace=1,monitor:HDMI-A-1 # workspace=2,monitor:eDP-1 # workspace=3,monitor:HDMI-A-1 # workspace=4,monitor:HDMI-A-1 # workspace=5,monitor:eDP-1 # workspace=6,monitor:eDP-1 # workspace=7,monitor:eDP-1 # workspace=8,monitor:HDMI-A-2 # workspace=6,monitor:eDP-1 # workspace=7,monitor:eDP-1 # workspace=8,monitor:eDP-1 # workspace=9,monitor:eDP-1 # workspace=10,monitor:eDP-1 # Config File: /home/bitwise/.config/hypr/source/10_keys_monitors.conf: Read Succeeded bind = SUPER + CTRL, Space, togglefloating, bind = ALT, return, fullscreen,1 # toggle fullscreen, without hiding the bar bind = SUPER + CTRL, F, fullscreen # toggle fullscreen, hiding the bar bind = SUPER + CTRL, C, centerwindow bind = SUPER + CTRL, G, togglegroup, bind = SUPER + CTRL, P, pseudo, # dwindle bind = SUPER + CTRL, S, togglesplit, # dwindle bind = ALT, Tab, cyclenext # change focus to another window # ################################### # window/workspaces # # ################################### # Move window left|right|up|down bind = CTRL + ALT, n, movewindow, l bind = CTRL + ALT, m, movewindow, r bind = CTRL + ALT, u, movewindow, u bind = CTRL + ALT, d, movewindow, d # Move focus with vim-like motions bind = CTRL + ALT, H, movefocus, l bind = CTRL + ALT, L, movefocus, r bind = CTRL + ALT, K, movefocus, u bind = CTRL + ALT, J, movefocus, d # NOTE: seme as KDE workspace # Switch workspaces # bind = ALT, 1, workspace, 6 bind = ALT, 1, workspace, 1 # bind = ALT, 2, workspace, 7 bind = ALT, 2, workspace, 2 # bind = ALT, 3, workspace, 8 bind = ALT, 3, workspace, 3 # bind = ALT, 4, workspace, 9 bind = ALT, 4, workspace, 4 # bind = ALT, 5, workspace, 10 bind = ALT, 5, workspace, 5 bind = ALT, 6, workspace, 6 bind = ALT, 7, workspace, 7 bind = ALT, 8, workspace, 8 bind = ALT, 9, workspace, 9 bind = ALT, 0, workspace, 10 # some nice mouse binds bind = SUPER, mouse_down, workspace, e+1 bind = SUPER, mouse_up, workspace, e-1 # Move active window to a workspace bind = CTRL + ALT, 1, movetoworkspace, 1 bind = CTRL + ALT, 2, movetoworkspace, 2 bind = CTRL + ALT, 3, movetoworkspace, 3 bind = CTRL + ALT, 4, movetoworkspace, 4 bind = CTRL + ALT, 5, movetoworkspace, 5 bind = CTRL + ALT, 6, movetoworkspace, 6 bind = CTRL + ALT, 7, movetoworkspace, 7 bind = CTRL + ALT, 8, movetoworkspace, 8 bind = CTRL + ALT, 9, movetoworkspace, 9 bindm = SUPER, mouse:272, movewindow bindm = SUPER, mouse:273, resizewindow Config File: /home/bitwise/.config/hypr/source/11_keys_apps.conf: Read Succeeded bind = ALT, Q, killactive bind = SUPER, Escape, exit, # kill hyperland session # ################################### # Apps # # ################################### bind = SUPER, return, exec, kitty bind = CTRL + ALT, F, exec, LIBVA_DRIVER_NAME=iHD firefox-nightly || LIBVA_DRIVER_NAME=iHD firefox # bind = SUPER, D, exec, dolphin # using paypr bind = SUPER, N, exec, nemo # using paypr # lockscreen bind = SUPER, L, exec, wlogout # waybar bind = SUPER, W, exec, killall waybar || waybar # toggle waybar bind = SUPER, G, exec, killall gBar || gBar bar 1 # toggle waybar # Open btop bind = CTRL ALT, Delete, exec, kitty --start-as=fullscreen --title all_is_kitty sh -c 'btop' # bind = SUPER, I, exec, XDG_CURRENT_DESKTOP="gnome" gnome-control-center # rofi/wofi # launch desktop applications bind = ALT, Space, exec, pkill -x rofi || ~/.config/hypr/scripts/rofilaunch.sh d # switch between desktop applications bind = SUPER, Tab, exec, pkill -x rofi || ~/.config/hypr/scripts/rofilaunch.sh w # theme select menu bind = SUPER SHIFT, T, exec, pkill -x rofi || ~/.config/hypr/scripts/themeselect.sh # rofi style select menu bind = SUPER SHIFT, M, exec, pkill -x rofi || ~/.config/hypr/scripts/rofiselect.sh # rofi wall select menu bind = SUPER SHIFT, W, exec, pkill -x rofi || ~/.config/hypr/scripts/swwwallselect.sh # open Pasteboard in screen center bind = SUPER SHIFT, V, exec, pkill -x rofi || ~/.config/hypr/scripts/cliphist.sh c # browse system files bind = SUPER SHIFT, F, exec, pkill -x rofi || ~/.config/hypr/scripts/rofilaunch.sh f # bind = ALT, Space, exec, pkill rofi || rofi -show drun # bind = ALT, Space, exec, pkill wofi || wofi --show drun -n # ################################### # screenshot # # ################################### # without 'swaapy' the editor # bind = CTRL + ALT, Print, exec, grimblast save screen # all screens # bind = , Print, exec, grimblast save output # current screen # bind = SHIFT, Print, exec, grimblast save area # select a region # with 'swaapy' the editor bind = CTRL + ALT, Print, exec, ~/.config/hypr/scripts/screenshot.sh p # all monitors bind = , Print, exec, ~/.config/hypr/scripts/screenshot.sh m # current monitor bind = SHIFT, Print, exec, ~/.config/hypr/scripts/screenshot.sh s # select region # ################################### # wallpaper # # ################################### # # bind = SUPER SHIFT, right, exec, ~/.config/hypr/scripts/swwwallpaper.sh -n # next wallpaper # bind = SUPER SHIFT, left, exec, ~/.config/hypr/scripts/swwwallpaper.sh -p # previous wallpaper # ################################### # eww # # ################################### # NOTE: eww's configs from (https://github.com/end-4/dots-hyprland/tree/hybrid) exec-once = ~/.config/eww/scripts/get_open_icons & # exec-once = eww daemon && eww open winbar & bindr = CTRL SUPER, E, exec, pkill eww && eww daemon bind = CTRL SUPER, O, exec, ~/.config/eww/scripts/toggle-osettings.sh --keypress & bind = CTRL SUPER, D, exec, ~/.config/eww/scripts/toggle-dashfs.sh --keypress & # bind = SUPER, Tab, exec, ~/.config/eww/scripts/toggle-overview.sh & # bind = SUPER, B, exec, ~/.config/eww/scripts/toggle-bottombar.sh & # bind = SUPER, N, exec, ~/.config/eww/scripts/toggle-onotify.sh --keypress & # bind = SUPER, Comma, exec, ~/.config/eww/scripts/toggle-themer.sh & # bind = SUPER, D, exec, ~/.config/eww/scripts/toggle-dash.sh --keypress & # bind = SUPER, G, exec, ~/.config/eww/scripts/toggle-wingamebar.sh & # bind = CONTROLSUPER, Tab, exec, ~/.config/eww/scripts/toggle-compactmode.sh # bind = SUPERALT, W, exec, ~/.config/eww/scripts/toggle-winmode.sh # ########################## Keybinds for Hyprland ############################ # Show workspaces module # bind = CONTROLSUPER, BracketLeft, exec, eww update rev_center_ws=true # bind = CONTROLSUPER, BracketRight, exec, eww update rev_center_ws=true # bind = SUPER, Page_Down, exec, eww update rev_center_ws=true # bind = SUPER, Page_Up, exec, eww update rev_center_ws=true # bind = CONTROLSUPER, Page_Down, exec, eww update rev_center_ws=true # bind = CONTROLSUPER, Page_Up, exec, eww update rev_center_ws=true # bind = SUPERSHIFT, Page_Down, exec, eww update rev_center_ws=true # bind = SUPERSHIFT, Page_Up, exec, eww update rev_center_ws=true # ################################### # others # # ################################### # bind = SUPER ALT, G, exec, ~/.config/hypr/scripts/gamemode.sh # disable hypr effects for gamemode # Trigger when the switch is turning off # bindl= , switch:on:Lid Switch, exec, swaylock && systemctl hibernate Config File: /home/bitwise/.config/hypr/source/12_keys_special.conf: Read Succeeded # # # NOTE: # Those are specific keybinds for my laptop & the external keyboard keys note that those keybinds # may not work in your case. So in order to configure your spcial keys you need to have "xor-xev" installed # on your system to read the code generated by that key with the command "xev -event keyboard". # EX: My volume-up key's code = 123, # See: (https://github.com/xkbcommon/libxkbcommon/blob/master/include/xkbcommon/xkbcommon-keysyms.h) # # # ################################### # Media control # # ################################### bind = SUPER SHIFT, N, exec, playerctl next || playerctl position `bc <<< "100 * $(playerctl metadata mpris:length) / 1000000 / 100"` bind = SUPER SHIFT, B, exec, playerctl previous bind = SUPER SHIFT, P, exec, playerctl play-pause bind = , XF86AudioPlay, exec, playerctl play-pause bind = , XF86AudioPause, exec, playerctl play-pause bind = , XF86AudioNext, exec, playerctl next bind = , XF86AudioPrev, exec, playerctl previous # Sink volume raise optionally with --device bind =, XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ & swayosd-client --output-volume raise # Sink volume lower optionally with --device bind =, XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- & swayosd-client --output-volume lower # Sink volume toggle mute bind =, XF86AudioMute, exec, swayosd-client --output-volume mute-toggle # Source volume toggle mute bind =, XF86AudioMicMute, exec, swayosd-client --input-volume mute-toggle # bind =, XF86AudioLowerVolume, exec, pamixer -d 5 # volume controller-down "external keyboard" # bind =, XF86AudioRaiseVolume, exec , pamixer -i 5 # volume controller-up "external keyboard" # Laptop keyboard keys # bind =, XF86AudioMute, exec, pamixer -t # mute # ################################### # Brightness control # # ################################### bind =, XF86MonBrightnessUp, exec, swayosd-client --brightness raise bind =, XF86MonBrightnessDown, exec, swayosd-client --brightness lower # ################################### # Special keys # # ################################### # Capslock (If you don't want to use the backend) bind =, --release Caps_Lock, exec, swayosd-client --caps-lock # Capslock but specific LED name (/sys/class/leds/) # bind =, --release Caps_Lock, exec, swayosd-client --caps-lock-led input19::capslock # Numlock (If you don't want to use the backend) bind =, --release Caps_Lock, exec, swayosd-client --num-lock # Scrolllock (If you don't want to use the backend) bind =, --release Caps_Lock, exec, swayosd-client --scroll-lock # Replicate the `auto_back_and_forth` feature from i3 (i.e, switch to the last workspace when hitting the current workspace keybind) binds { workspace_back_and_forth = true } Config File: /home/bitwise/.config/hypr/source/13_pyprland.conf: Read Succeeded # (https://github.com/hyprland-community/pyprland) exec-once = pypr # ################################### # dropterm # # ################################### bind = SUPER, T, exec, pypr toggle term $dropterm = ^(kitty-dropterm)$ windowrule = float,$dropterm windowrule = workspace special silent,$dropterm windowrule = size 75% 60%,$dropterm # ################################### # file explorer # # ################################### bind = SUPER, F, exec, pypr toggle files # windowrule = float, ^(dolphin)$ # windowrule = workspace special silent,^(dolphin)$ # windowrule = size 75% 60%,^(dolphin)$ # ################################### # cava # # ################################### bind = SUPER, C, exec, pypr toggle cava windowrule = float, ^(kitty-cava)$ windowrule = workspace special silent, ^(kitty-cava)$ windowrule = size 40% 45%, ^(kitty-cava)$ # ################################### # music # # ################################### bind = SUPER, M, exec, pypr toggle music windowrule = float,^(rhythmbox)$ windowrule = workspace special,^(rhythmbox)$ windowrule = size 50% 50%,^(rhythmbox)$ # ################################### # volume # # ################################### bind = SUPER, V, exec, pypr toggle volume windowrule = float,^(pavucontrol)$ windowrule = workspace special silent,^(pavucontrol)$ windowrule = size 25% 25%,^(pavucontrol)$ # ################################### # network manager # # ################################### bind = SUPER, N, exec, pypr toggle network windowrule = float, ^(XDG_CURRENT_DESKTOP='gnome' gnome-control-center)$ windowrulev2 = workspace special silent, class:^(XDG_CURRENT_DESKTOP='gnome' gnome-control-center)$, title:^(Network Connections)$ windowrule = size 18% 40%,^(XDG_CURRENT_DESKTOP='gnome' gnome-control-center)$ # ################################### # bluetooth # # ################################### bind = SUPER, B, exec, pypr toggle bluetooth windowrule = float, ^(blueman-manager) windowrule = workspace special silent, ^(blueman-manager)$ windowrule = size 18% 40%,^(blueman-manager)$ bind = SUPER, E, exec, pypr toggle_minimized bind = SUPER, Z, exec, pypr zoom Config File: /home/bitwise/.config/hypr/source/14_debug.conf: Read Succeeded # Fixes NVidia horrible input lag (https://github.com/hyprwm/Hyprland/discussions/4575) # debug { # damage_tracking = 0 # } # debug { # disable_logs = false # overlay = false # enable_stdout_logs = true # } Config File: /home/bitwise/.config/hypr/source/15_opengl.conf: Read Succeeded # NVIDIA-specific options # opengl { # nvidia_anti_flicker = false # } # ======Config-End======== ```

Description

When I do anything on my NVidia (RTX 2060S, nvidia-dkms drivers) connected monitor (3440x1440@144Hz), my GPU usage of the NVidia card stays stable at 21-25%. Whatever I do, it stays.

Even when I do nothing and even have no window open there. Only when I close everything and move cursor to my iGPU connected monitors, the GPU usage drops to 0-1%.

See the screenshots below (with & without cursor on the screen) and pay attention to my Waybar visualization of GPU usage in the upper left corner: swappy-20240621-163157 swappy-20240621-163235

How to reproduce

Connect NVidia GPU to a monitor and iGPU to the other, configure hardware cursors, use nvidia-dkms and observe GPU usage with & without cursor or the NVidia powered screen (and nothing else on it).

Crash reports, logs, images, videos

No response

DADA30000 commented 4 months ago

Are you sure it's showing nvidia card usage? I thought there is no way to show gpu usage of nvidia card on waybar without using some hacks

ErrorNoInternet commented 4 months ago

Are you sure the card is not lowering ita clock speeds as well?

Fxzzi commented 4 months ago

I thought there is no way to show gpu usage of nvidia card on waybar without using some hacks

custom modules exist.

shinobiultra commented 4 months ago

Yes, I'm sure it's NVidia, I verified it in nvtop.

As for the clock, I'll see in a day or two once I get to the PC again.

MrCustomizer commented 4 months ago

I've just upgraded to v0.41.2 and I am experiencing sluggish mouse movement. Not all the time, but most of the time. Seems to be getting worse when hovering firefox windows or electron apps. Could this be related?

Nvtop states Hyprland as the top consumer with 11% memory consumption (910MiB).

When not moving the mouse, total GPU usage is between 0 and 10 % most of the time. When moving the mouse it seems to go up, but not significantly. Still staying under 20%.

DADA30000 commented 4 months ago

I thought there is no way to show gpu usage of nvidia card on waybar without using some hacks

custom modules exist.

yeah I meant that, I'm using custom modules to show my gpu usage using nvidia-smi

vaxerski commented 4 months ago

Nvidia's hardware cursors are a complete mess. Does disabling hardware cursors in the hyprland config help?

MrCustomizer commented 4 months ago

I'm guessing, you're suggesting to set force_no_accel to true in the input section? It's hard to tell if that option makes a difference. It seems slightly better. No comparison though to a few days ago. I've been using Hyprland since November and the problems just started this week. Thanks for the suggestion, though.

vaxerski commented 4 months ago

cursor:no_hardware_cursors

MrCustomizer commented 4 months ago

@vaxerski: Thank you so much! :)

Setting

cursor {
    no_hardware_cursors = true
}

in the Hyprland config seems to have fixed the issue. Let's hope that with the ongoing Open Source work in Nvidia land this can be fixed in the future. Sorry for hijacking this issue, it seems to be unrelated.

shinobiultra commented 4 months ago

Are you sure the card is not lowering ita clock speeds as well?

It is not, the speeds are stable.

Nvidia's hardware cursors are a complete mess. Does disabling hardware cursors in the hyprland config help?

Tried disabling hw cursors without any luck, the issue persists. Whenever hyprland renders anything (including solely the cursor) the GPU usage is 25% stable.

DeNice-r commented 4 months ago

For me, setting

cursor {
    no_hardware_cursors = true
}

actually created issues (low fps cursor in fullscreen apps).

chrispro-21 commented 3 months ago
cursor {
    no_hardware_cursors = true
}

Worked for me as well. This only really occurred when changing cursor types or changing my active window.