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.83k stars 908 forks source link

numlock issue still presist #8288

Open littleblack111 opened 3 weeks ago

littleblack111 commented 3 weeks ago

Already reported ? *

Regression?

Yes

System Info and Version

System/Version info ```sh Hyprland 0.44.0 built from branch main at commit 4da3d7412dfc5525f8dd6f8ed5c85cc3ad0ae6a7 (input-capture: fix rebase issues). Date: Mon Oct 28 19:31:36 2024 Tag: v0.44.0-96-g4da3d741, commits: 5395 built against aquamarine 0.4.2 flags set: debug System Information: System name: Linux Node name: Arch-Linux Release: 6.11.5-zen1-1-zen Version: #1 ZEN SMP PREEMPT_DYNAMIC Tue, 22 Oct 2024 18:31:33 +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 AD103 [GeForce RTX 4080 SUPER] [10de:2702] (rev a1) (prog-if 00 [VGA controller]) NVRM version: NVIDIA UNIX x86_64 Kernel Module 560.35.03 Fri Aug 16 21:39:15 UTC 2024 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/system/.config/hypr/hyprland.conf: Read Succeeded ################ ### MONITORS ### ################ # See https://wiki.hyprland.org/Configuring/Monitors/ monitor=,highres@highrr,auto,auto,bitdepth,10 # monitor=,preferred,auto,auto,bitdepth,10 ################### ### MY PROGRAMS ### ################### # Program defaults $terminal = alacritty $termfloat = [float; size 40% 40%; workspace +0] alacritty $editor = lvim # $browser = thorium-browser $browser = zen-browser $fileManager = thunar $sessionManager = sddm $menu = rofi -i -dmenu -theme $HOME/.config/rofi/configs.rasi # Dirs $HYPRDIR = $HOME/.config/hypr $WAYBARDIR = $HOME/.config/waybar $SCRIPTSDIR = $HOME/scripts $rofiexec = $HOME/.config/rofi/scripts # global vars $outer_gaps = 12 source = $HYPRDIR/colors.conf # misc $waylandarg = --enable-features=WaylandWindowDecorations,UseOzonePlatform --ozone-platform-hint=auto ##################### ### LOOK AND FEEL ### ##################### # Refer to https://wiki.hyprland.org/Configuring/Variables/ # https://wiki.hyprland.org/Configuring/Variables/#general general { gaps_in = 5 gaps_out = 7 border_size = 3 # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors # col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg # DO THIS LATER # col.inactive_border = rgba(595959aa) # col.active_border = rgb(00a7f5) rgb(538620) rgb(538620) rgb(00a7f5) 90deg # col.inactive_border = rgb(00a7f5) rgb(538620) rgb(538620) rgb(00a7f5) 90deg # col.active_border = rgb(00a7f5) rgb(538620) # col.inactive_border = rgb(00a7f5) rgb(538620) col.inactive_border = $background col.active_border = $color15 $color13 $color10 $color8 $color6 $color4 $color2 $color0 # 45deg # 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 = true layout = dwindle snap { enabled = true } } xwayland { force_zero_scaling = true } # https://wiki.hyprland.org/Configuring/Variables/#decoration decoration { rounding = 7 # Change transparency of focused and unfocused windows active_opacity = 0.95 inactive_opacity = 0.85 fullscreen_opacity = 1.0 drop_shadow = true shadow_range = 15 shadow_render_power = 4 # col.shadow = rgba(1a1a1aee) col.shadow = $background screen_shader = /usr/share/hyprshade/shaders/vibrance.glsl # dim_inactive = true # dim_strength = 0.4 # https://wiki.hyprland.org/Configuring/Variables/#blur blur { enabled = true size = 6 passes = 3 # vibrancy = 1 popups = true ignore_opacity = true # KEEP THIS, THIS MAKE BLUR ACTUALLY BLUR COOL } } # https://wiki.hyprland.org/Configuring/Variables/#animations animations { enabled = true # Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more bezier = windowovershot, 1, 1, 0, 1.05 bezier = overshot, 0.5, 1, 0, 1.2 # bezier = outsideIn, 0.5, 1.1, 0, 0.9 bezier = slow-fast, 1, 0.33, 0.3, 1 bezier = fast-slow, 0.33, 0.8, 0, 1 bezier = linear, 0, 0, 1, 1 # bezier = linear, 0, 0, 1, 1 # bezier = md3_standard, 0.2, 0, 0, 1 bezier = md3_decel, 0.05, 0.7, 0.1, 1 # bezier = md3_accel, 0.3, 0, 0.8, 0.15 # bezier = overshot, 0.05, 0.9, 0.1, 1.1 # bezier = crazyshot, 0.1, 1.5, 0.76, 0.92 # bezier = hyprnostretch, 0.05, 0.9, 0.1, 1.0 # bezier = menu_decel, 0.1, 1, 0, 1 # bezier = menu_accel, 0.38, 0.04, 1, 0.07 # bezier = easeInOutCirc, 0.85, 0, 0.15, 1 # bezier = easeOutCirc, 0, 0.55, 0.45, 1 # bezier = easeOutExpo, 0.16, 1, 0.3, 1 # bezier = softAcDecel, 0.26, 0.26, 0.15, 1 # bezier = md2, 0.4, 0, 0.2, 1 # use with .2s duration animation = fade, 1, 4, md3_decel animation = windows, 1, 3, overshot # animation = windowsOut, 1, 2, slow-fast, popin 15% animation = windowsOut, 1, 2, slow-fast, popin 15% # animation = windowsMove, 1, 2, md3_accel # when new window appears, it will block it for a while since its slower then windowIn animation animation = workspaces, 1, 6, fast-slow, slide animation = workspacesIn, 1, 6, fast-slow, slidefade animation = borderangle, 1, 100, linear, loop } # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more dwindle { pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below preserve_split = true # You probably want this force_split = 3 } # https://wiki.hyprland.org/Configuring/Variables/#misc misc { force_default_wallpaper = 1 # Set to 0 or 1 to disable the anime mascot wallpapers focus_on_activate = true disable_hyprland_logo = true # If true disables the random hyprland logo / anime girl background. :( # vfr = false # vrr = 1 # 1 = always, 2 = only in full screen mouse_move_enables_dpms = true key_press_enables_dpms = true # animate_manual_resizes = true # animate_mouse_windowdragging = true middle_click_paste = false enable_swallow = false # true swallow_regex = ^(Alacritty)$ new_window_takes_over_fullscreen = 2 } group { groupbar { # enabled = false render_titles = false text_color = $foreground col.active = $color0 col.inactive = $background col.locked_active = $color0 col.locked_inactive = $background } col.border_active = $color0 $color15 $foreground $cursor col.border_inactive = $background col.border_locked_active = $color0 $background col.border_locked_inactive = $background } # binds { # workspace_back_and_forth = true # } render { explicit_sync = 1 explicit_sync_kms = 1 direct_scanout = true } opengl { # nvidia_anti_flicker = false # force_introspection = 0 } ############# ### INPUT ### ############# # https://wiki.hyprland.org/Configuring/Variables/#input input { kb_layout = us kb_variant = kb_model = kb_options = kb_rules = follow_mouse = 1 # scroll_factor = 1.0 # sensitivity = 0 # -1.0 - 1.0, 0 means no modification. numlock_by_default = true # touchpad { # natural_scroll = false # } } cursor { # allow_dumb_copy = true no_hardware_cursors = true no_break_fs_vrr = true # zoom_rigid = true persistent_warps = true } plugin { overview { enabled = true disableGestures = true panelHeight = 150 } # hyprfocus { # enabled = yes # focus_animation = shrink # animate_floating = yes # animate_worksapcechange = yes # } dynamic-cursors { mode = stretch shake { effects = true } shaperule = text, none # shaperule = clientside, none } # chromakey_background = $background # hy3 { # # disable gaps when only one window is onscreen # # 0 - always show gaps # # 1 - hide gaps with a single window onscreen # # 2 - 1 but also show the window border # # no_gaps_when_only = # default: 0 # # policy controlling what happens when a node is removed from a group, # # leaving only a group # # 0 = remove the nested group # # 1 = keep the nested group # # 2 = keep the nested group only if its parent is a tab group # # node_collapse_policy = # default: 2 # # offset from group split direction when only one window is in a group # # group_inset = # default: 10 # # if a tab group will automatically be created for the first window spawned in a workspace # # tab_first_window = # # tab group settings # tabs { # # height of the tab bar # # height = # default: 15 # # padding between the tab bar and its focused node # # padding = # default: 5 # # the tab bar should animate in/out from the top instead of below the window # # from_top = # default: false # # rounding of tab bar corners # # rounding = # default: 3 # # render the window title on the bar # # render_text = # default: true # # center the window title # # text_center = # default: false # # font to render the window title with # # text_font = # default: Sans # # height of the window title # # text_height = # default: 8 # # left padding of the window title # # text_padding = # default: 3 # # active tab bar segment color # # col.active = # default: 0xff32b4ff # # urgent tab bar segment color # # col.urgent = # default: 0xffff4f4f # # inactive tab bar segment color # # col.inactive = # default: 0x80808080 # # active tab bar text color # # col.text.active = # default: 0xff000000 # # urgent tab bar text color # # col.text.urgent = # default: 0xff000000 # # inactive tab bar text color # # col.text.inactive = # default: 0xff000000 # } # # autotiling settings # autotile { # # enable autotile # # enable = # default: false # # make autotile-created groups ephemeral # # ephemeral_groups = # default: true # # if a window would be squished smaller than this width, a vertical split will be created # # -1 = never automatically split vertically # # 0 = always automatically split vertically # # = pixel height to split at # # trigger_width = # default: 0 # # if a window would be squished smaller than this height, a horizontal split will be created # # -1 = never automatically split horizontally # # 0 = always automatically split horizontally # # = pixel height to split at # # trigger_height = # default: 0 # # a space or comma separated list of workspace ids where autotile should be enabled # # it's possible to create an exception rule by prefixing the definition with "not:" # # workspaces = 1,2 # autotiling will only be enabled on workspaces 1 and 2 # # workspaces = not:1,2 # autotiling will be enabled on all workspaces except 1 and 2 # # workspaces = # default: all # } # } # hyprwinwrap { # class = winwrap # } } source = ~/.config/hypr/env.conf source = ~/.config/hypr/rules.conf source = ~/.config/hypr/binds.conf source = ~/.config/hypr/autostart.conf # debug:disable_logs = false debug { # overlay = true # show fps suppress_errors = true error_position = 1 } Config File: /home/system/.config/hypr/colors.conf: Read Succeeded $wallpaper = /home/system/.cache/sunset-on-lake.3840x2160.mp4.png $background = rgb(150F16) $foreground = rgb(E7E0E8) $cursor = rgb(E7E0E8) $color0 = rgb(3D383E) $color1 = rgb(450E24) $color2 = rgb(43283D) $color3 = rgb(B85965) $color4 = rgb(A88FA4) $color5 = rgb(B9A6B5) $color6 = rgb(BBA6BC) $color7 = rgb(D4CAD5) $color8 = rgb(958D95) $color9 = rgb(450E24) $color10 = rgb(43283D) $color11 = rgb(B85965) $color12 = rgb(A88FA4) $color13 = rgb(B9A6B5) $color14 = rgb(BBA6BC) $color15 = rgb(D4CAD5) Config File: /home/system/.config/hypr/env.conf: Read Succeeded ############################# ### ENVIRONMENT VARIABLES ### ############################# # See https://wiki.hyprland.org/Configuring/Environment-variables/ env = XCURSOR_SIZE,24 env = HYPRCURSOR_SIZE,24 env = HYPRCURSOR_THEME,Bibata-Rainbow-Modern # Nvidia env = LIBVA_DRIVER_NAME,nvidia env = GBM_BACKEND,nvidia-drm env = __GLX_VENDOR_LIBRARY_NAME,nvidia # env = __GL_GSYNC_ALLOWED,1 env = VDPAU_DRIVER,nvidia env = NVD_BACKEND,direct # just in case if it tried to use igpu for hardware accel # env = AQ_DRM_DEVICES,/dev/dri/card1:/dev/dri/card0 # XDG env = XDG_CURRENT_DESKTOP,Hyprland env = XDG_SESSION_TYPE,wayland env = XDG_SESSION_DESKTOP,Hyprland # QT env = QT_AUTO_SCREEN_SCALE_FACTOR,1 # env = QT_QPA_PLATFORM=wayland;xcb # Not yet working for onlyoffice-editor env = QT_QPA_PLATFORM = xcb env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 env = QT_QPA_PLATFORMTHEME,qt6ct # env = SDL_VIDEODRIVER,wayland env = _JAVA_AWT_WM_NONREPARENTING,1 # Scale env = QT_AUTO_SCREEN_SCALE_FACTOR,1 # env = GDK_DPI_SCALE,1.5 # env = QT_SCALE_FACTOR,2 env = ELECTRON_OZONE_PLATFORM_HINT,auto # Input method # env = GTK_IM_MODULE,fcitx env = QT_IM_MODULE,fcitx env = QT_IM_MODULES,wayland;fcitx;ibus env = XMODIFIERS,@im=fcitx env = SDL_IM_MODULE,fcitx env = GLFW_IM_MODULE,fcitx env = INPUT_METHOD,fcitx env = XMODIFIERS,fcitx env = IMSETTINGS_MODULE,fcitx # wine env = WINEPREFIX, /opt/windows.wine # howdy avoid spam from gstreamer env = OPENCV_LOG_LEVEL, ERROR # temp fix for gtk apps seg fault env = GSK_RENDERER, ngl # Toolkit backend env = GDK_BACKEND,wayland,x11,* env = QT_QPA_PLATFORM,wayland;xcb env = SDL_VIDEODRIVER,wayland # Remove or set to x11 if games that provide older versions of SDL cause compatibility issues # QT env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 env = QT_QPA_PLATFORM,wayland;xcb # firefox env = MOZ_DISABLE_RDD_SANDBOX, 1 env = MOZ_ENABLE_WAYLAND,1 Config File: /home/system/.config/hypr/rules.conf: Read Succeeded ############################## ### WINDOWS AND WORKSPACES ### ############################## # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more # See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules # Tag # workspaces windowrulev2 = workspace 1, tag:terminal windowrulev2 = workspace 2, tag:web windowrulev2 = workspace 3, tag:file windowrulev2 = workspace 4, tag:code windowrulev2 = workspace 5, tag:office windowrulev2 = workspace 6, tag:communication windowrulev2 = workspace 7, tag:media windowrulev2 = workspace 8, tag:games windowrulev2 = workspace 9, tag:system windowrulev2 = workspace 10, tag:misc # GUI Utils windowrulev2 = opacity 0.85 0.75, tag:gui-utils windowrulev2 = pin, tag:gui-utils windowrulev2 = size 53% 60%, tag:gui-utils windowrulev2 = move 46.5% 5%, tag:gui-utils windowrulev2 = animation slide right top, tag:gui-utils # media contents windowrulev2 = float, tag:media-contents windowrulev2 = pin, tag:media-contents windowrulev2 = move 100%-w-$outer_gaps, tag:media-contents windowrulev2 = noinitialfocus, tag:media-contents windowrulev2 = noshadow, tag:media-contents # It grabs our focus when it change video windowrulev2 = suppressevent activatefocus, tag:media-contents # fake fullscreen windowrulev2 = fullscreenstate 0 2, tag:fakefullscreen # Games windowrulev2 = fullscreen, tag:games # Tearing (for better gaming performance) windowrulev2 = immediate, tag:games # time-sensitive app rules windowrulev2 = stayfocused, tag:time-sensitive windowrulev2 = pin, tag:time-sensitive windowrulev2 = dimaround, tag:time-sensitive windowrulev2 = center, tag:time-sensitive windowrulev2 = float, tag:time-sensitive # cli util apps windowrulev2 = float, tag:cli-utils windowrulev2 = pin, tag:cli-utils windowrulev2 = dimaround, tag:cli-utils # hidden windowrulev2 = movetoworkspacesilent, special:minimized, tag:hidden # Group # windowrule = group, ^virt-manager$ # Terminal applications windowrulev2 = tag terminal, class:^(Alacritty|Xfce4-terminal|Kitty)$ # Web browsers windowrulev2 = tag web, class:^($browser|Brave-browser|chromium|firefox|thorium|zen-alpha)$ # File managers windowrulev2 = tag file, class:^($fileManager|Pcmanfm|Thunar|qBittorrent|Caja)$ # Code editors windowrulev2 = tag code, class:^(Geany|code|code-url-handler|cursor-url-handler|code-oss|Code - OSS|install4j-burp-StartBurp|burp-StartBurp|Unity|jetbrains-pycharm-ce|Postman)$ # Office applications windowrulev2 = tag office, class:^(Gucharmap|Atril|Evince|LibreOffice.*|libreoffice.*|Soffice|Typora|obsidian|figma-linux|anytype|craft-nativefier-e0958b)$ # Communication apps windowrulev2 = tag communication, class:^(Thunderbird|TelegramDesktop|Hexchat|discord|vesktop|VencordDesktop|Chat-gpt|Whatsapp-for-linux|Chatbox)$ # Media applications windowrulev2 = tag media, class:^(Audacity|Music|MPlayer|Lxmusic|Inkscape|Gimp|Blender|obs|zoom|Zoom|Pitivi|kdenlive|openshot|vlc|cider|Cider|shotwell|Shotwell|fr.handbrake.ghb|Spotify)$ # Games windowrulev2 = tag games, class:^(Minecraft|Badlion|War|steam_proton|steam|csgo_linux64|minecraft-launcher|lutris|genshinimpact.exe|moe.launcher.an-anime-game-launcher|lunarclient|Lunar Client.*|zenlesszonezero.exe|moe.launcher.sleepy-launcher|sober)$ # System/Settings applications windowrulev2 = tag system, class:^(virt-manager|blueman-adapters|GParted|Xdm-app|timeshift-gtk|com.nextcloud.desktopclient.nextcloud|gearlever|Lxappearance|Lxtask|Lxrandr|Arandr|System-config-printer.py|Pavucontrol|Exo-helper-1|Protonvpn|Xfce4-power-manager-settings|Mysql-workbench-bin|Grub-customizer|Nitrogen|archlinux-tweak-tool.py|pamac-manager|helvum|Vmware|btrfs-assistant|Bitwarden|wootility-lekker|nwg-look|com.github.wwmm.easyeffects|kvantummanager)$ # Miscellaneous applications windowrulev2 = tag misc, class:^(maxautoclicker|os_server|Os_server)$ # floating applications windowrulev2 = float, class:^(Pcmanfm|Onboard|Yad|zoom|Xdm-app|wechat|WeChat|sxiv|Sxiv|Firefox:Places|Viewnior|feh|Nm-connection-editor|install4j-burp-StartBurp|thorium-app.shortwave.com__-Default|thorium-mdpkiolbdkhdjpekfbkbmhigcaggjagi-Profile_1|float|thorium-lnachpgegbbmnnlgpokibfjlmppeciah-Default|Beeper|electron|com.github.rafostar.Clapper)|Sign in – Google accounts$ windowrulev2 = float, title:^(Steam Settings)$ # pin apps windowrulev2 = pin, title:^(zoom_linux_float_video_window)$ # specificly sized # windowrulev2 = size 40% 40%, class:^(alacritty-float)$ # Sticky applicationsp # App that have menu on top for stayfocused, without this, menus will dissappear when you move ur mouse windowrulev2 = stayfocused, title:(menu) # GUI Utils applications windowrulev2 = tag gui-utils, class:^(thorium-app.shortwave.com__-Default|thorium-mdpkiolbdkhdjpekfbkbmhigcaggjagi-Profile_1|thorium-lnachpgegbbmnnlgpokibfjlmppeciah-Default|Beeper)$ windowrulev2 = animation slide right top, tag:gui-utils # bitwarden chrome extension popup windowrulev2 = pin, class:^(thorium-nngceckbapebfimnlniiiahkandclblb-Default)$ windowrulev2 = float, class:^(thorium-nngceckbapebfimnlniiiahkandclblb-Default)$ windowrulev2 = stayfocused, class:^(thorium-nngceckbapebfimnlniiiahkandclblb-Default)$ # firefox windowrulev2 = float, title:^Extension # for media contents windowrulev2 = tag media-contents, class:^(blobdrop|dragon)$ # PIP windowrulev2 = tag media-contents, title:^(Picture-in-Picture)$ windowrulev2 = size 25% 25%, title:^(Picture-in-Picture)$ # removes title/border windowrulev2 = tag fakefullscreen, class:^(thorium-mdpkiolbdkhdjpekfbkbmhigcaggjagi-Profile_1|thorium-lnachpgegbbmnnlgpokibfjlmppeciah-Default) # Full screen applications # time-sensitive app rules windowrulev2 = tag time-sensitive, class:^(org.freedesktop.impl.portal.desktop.kde|polkit-gnome-authentication-agent-1|pinentry-|xdg-desktop-portal.*|hyprland-share-picker.*|gcr-prompter)$ windowrulev2 = tag time-sensitive, title:^(Open File|Open|Select a File|Choose wallpaper|Open Folder|Save As|Save File|Library|File Upload|.*- Properties)$ windowrulev2 = dimaround, tag:time-sensitive # rofi # windowrulev2 = float, class:^(Rofi) # windowrulev2 = pin, class:^(Rofi) # windowrulev2 = dimaround, class:^(Rofi) # util apps windowrulev2 = tag cli-utils, title:^(nmd|cliphist|pulsemixer|ranger|btop)$ windowrulev2 = dimaround, tag:cli-utils windowrulev2 = stayfocused, title:^(btop)$ # windowrulev2 = stayfocused, title:^(rofi - Command|rofi - Confirmation|rofi - ArchLinux (hyprland)) # No shadow for tiled window windowrulev2 = noshadow,floating:0 # Opacity rules # windowrule = opacity 0.89 override 0.89 override, .* set in decoration # windowrulev2 = opacity 0.95 0.90, class:.+ windowrulev2 = opacity 0.85 0.75, class:^code-oss$ windowrulev2 = opacity 0.85 0.75, class:^code$ windowrulev2 = opacity 0.85 0.75, class:^code-url-handler$ windowrulev2 = opacity 0.85 0.75, class:^cursor-url-handler$ windowrulev2 = opacity 1.00 0.90, class:^TelegramDesktop$ windowrulev2 = opacity 0.90 0.80, class:^Spotify$ windowrulev2 = opacity 0.90 0.80, class:^Cider$ windowrulev2 = opacity 0.50 0.40, class:^fcitx$ windowrulev2 = opacity 0.90 0.80, class:^Brave-browser$ windowrulev2 = opacity 0.90 0.80, class:^thunar$ windowrulev2 = opacity 0.85 0.75, class:^discord$ windowrulev2 = opacity 0.90 0.80, class:^Caja$ windowrulev2 = opacity 0.80 0.70, class:^polkit-gnome-authentication-agent-1$ windowrulev2 = opacity 0.80 0.70, title:^Open$ windowrulev2 = opacity 0.8 0.5, title:^New Tab - Thorium$ # windowrulev2 = ignorezero, title:Annotation - Zoom # no blurs windowrulev2 = noblur, title:^(Annotation - Zoom)$ # Layer rules/blur layerrule = blurpopups layerrule = blur,rofi layerrule = ignorezero,rofi layerrule = dimaround,rofi layerrule = animation popin 65%,rofi layerrule = blur,notifications layerrule = ignorezero,notifications layerrule = blur,swaync-notification-window layerrule = ignorezero,swaync-notification-window layerrule = blur,swaync-control-center layerrule = animation slide right,swaync-notification-window layerrule = animation slide right,swaync-control-center layerrule = ignorezero,swaync-control-center layerrule = blur,logout_dialog layerrule = blur,waybar layerrule = ignorezero, waybar layerrule = blur,syshud layerrule = ignorezero, syshud # layerrule = blur,$browser # Misc # xwaylandvideobridge windowrulev2 = opacity 0.0 override, class:^(xwaylandvideobridge)$ windowrulev2 = noanim, class:^(xwaylandvideobridge)$ windowrulev2 = noinitialfocus, class:^(xwaylandvideobridge)$ windowrulev2 = maxsize 1 1, class:^(xwaylandvideobridge)$ windowrulev2 = noblur, class:^(xwaylandvideobridge)$ # Tearing (for better gaming performance) windowrule = tag games, .*\.exe # Roblox join private server windowrulev2 = float, title:^(Join Friends)$ class:^(org.vinegarhq.Sober)$ # No transparency for fullscreen windows windowrulev2 = plugin:chromakey,fullscreen:0 # Ignore maximize requests from apps. You'll probably like this. windowrulev2 = suppressevent maximize, class:.* # Fix some dragging issues with XWayland windowrulev2 = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0 Config File: /home/system/.config/hypr/binds.conf: Read Succeeded #################### ### KEYBINDINGSS ### #################### binds { # allow_workspace_cycles = yes # movefocus_cycles_fullscreen = true } # See https://wiki.hyprland.org/Configuring/Keywords/ $mainMod = SUPER # Sets "SUPER" key as main modifier # Launching... bind = $mainMod, return, execr, $terminal bind = $mainMod shift, return, exec, $termfloat # bind = $mainMod space, return, execr, $terminal start --class pseudo bind = $mainMod alt, Delete, execr, pkill rofi || $rofiexec/rofi_powermenu bind = alt, F1, execr, pkill rofi || $rofiexec/rofi_launcher bind = alt, F2, execr, pkill rofi || $rofiexec/rofi_runner bind = $mainMod, period, execr, pkill rofi || $rofiexec/rofi_emoji # utils bind = $mainMod, c, execr, pkill rofi || $rofiexec/rofi_configs bind = $mainMod, m, execr, pkill rofi || $rofiexec/rofi_music bind = $mainMod, n, execr, nmd bind = $mainMod, r, execr, pkill rofi || $rofiexec/rofi_asroot bind = $mainMod, s, execr, pkill rofi || $rofiexec/rofi_screenshot bind = $mainMod, v, execr, pkill rofi || $rofiexec/rofi_clipboard bind = $mainMod, w, execr, pkill rofi || $rofiexec/rofi_windows bind = $mainMod, x, execr, pkill rofi || $rofiexec/rofi_powermenu bind = $mainMod, b, execr, pkill rofi || $rofiexec/rofi_bluetooth # GUI bind = $mainMod shift, f, execr, $fileManager # bind = $mainMod shift, w, execr, $browser --restore-last-session bind = $mainMod shift, w, execr, $browser # -new-tab about:sessionrestore bind = $mainMod shift, e, execr, cursor bind = $mainMod shift, d, execr, discord $waylandarg bind = $mainMod shift, b, execr, beeper $waylandarg # CLI bind = ctrl alt, a, exec, $termfloat -T pulsemixer -e pulsemixer bind = ctrl alt, r, exec, $termfloat -T ranger -e ranger bind = ctrl alt, v, exec, $termfloat -e $editor # Emergency bindtp = ctrl alt, b, exec, $termfloat -T btop -e sudo nice -n -20 ionice -c 1 sudo btop bindtp = ctrl alt, delete, execr, pkill rofi || $rofiexec/rofi_shutdown_menu # Misc # bind = ctrl alt, m, execr, music bind = $mainMod, p, execr, hyprpicker --autocopy bindtp = ctrl alt, l, execr, loginctl lock-session # Misc bind = $mainMod shift, g, execr, gtk-launch shortwave.desktop # bind = $mainMod shift, c, execr, gtk-launch google-chat.desktop # XF86 keys & Misc bind = ,XF86Print, execr, pidof slurp || $HOME/scripts/sysutil.sh screenshot --now bind = alt, XF86AudioMute, execr, $HOME/scripts/sysutil.sh screenshot --in5sec bind = $mainMod shift, s, execr, $HOME/scripts/sysutil.sh screenshot --area # Volume bind = ,XF86AudioRaiseVolume, execr, $HOME/scripts/sysutil.sh volume --inc bind = ,XF86AudioLowerVolume, execr, $HOME/scripts/sysutil.sh volume --dec bind = ,XF86AudioMute, execr, $HOME/scripts/sysutil.sh volume --toggle bind = ,XF86AudioMicMute, execr, $HOME/scripts/sysutil.sh volume --toggle-mic bind = ,XF86AudioNext, execr, playerctl -p spotify next bind = ,XF86AudioPrev, execr, playerctl -p spotify previous bindl = ,XF86AudioPlay, exec, [workspace 7 silent; noinitialfocus] $HOME/scripts/play-pause.sh || LD_PRELOAD=/usr/lib/spotify-adblock.so spotify bind = ,XF86AudioStop, execr, playerctl -p spotify stop bind = ,XF86PowerOff, execr, pkill rofi || $rofiexec/rofi_shutdown # Pause bind = ,Pause, execr, hyprfreeze -s -a # Print bind = ,Print, execr, $HOME/scripts/hyprshot --now # Brightness bind = ,XF86MonBrightnessUp, execr, $HOME/scripts/sysutil.sh brightness --inc bind = ,XF86MonBrightnessDown, execr, $HOME/scripts/sysutil.sh brightness --dec # Window management # bind = $mainMod, d, execr, $HOME/scripts/hyprhide h # bind = $mainMod, i, execr, $HOME/scripts/hyprhide s bind = $mainMod, d, movetoworkspacesilent, special:minimized bind = $mainMod, i, togglespecialworkspace, minimized bind = $mainMod, i, movetoworkspace, +0 bind = $mainMod, q, killactive bind = $mainMod shift, q, execr, kill -9 $(hyprctl activewindow | grep pid | tail -1 | awk '{print$2}') bind = ctrl alt, escape, execr, hyprctl kill bind = ctrl $mainMod shift, r, execr, systemctl restart $sessionManager # restart bar bind = ctrl $mainMod, escape, execr, killall -SIGUSR2 waybar || waybar & # reload wall bind = $mainMod alt, b, execr, killall wallust; killall mpvpaper.sh; $SCRIPTSDIR/mpvpaper.sh # bind = ctrl, up, hyprexpo:expo, on # bind = ctrl, down, hyprexpo:expo, off bind = ctrl $mainMod alt, up, overview:open bind = ctrl $mainMod alt, down, overview:close # bind = alt, tab, execr, hyprswitch gui # bind = alt, grave, execr, hyprswitch gui --reverse # bindr = alt, tab, execr, hyprswitch close # bindr = alt, grave, execr, hyprswitch close bind = alt, tab, execr, /home/system/.cargo/bin/hyprswitch gui --mod-key alt_l --key tab --close mod-key-release --reverse-key=key=grave && hyprswitch dispatch bind = alt, grave, execr, /home/system/.cargo/bin/hyprswitch gui --mod-key alt_l --key tab --close mod-key-release --reverse-key=key=grave && hyprswitch dispatch -r binde = ctrl alt, left, workspace, -1 binde = ctrl alt, right, workspace, +1 binde = $mainMod shift, left, movewindow, l binde = $mainMod shift, right, movewindow, r binde = $mainMod shift, up, movewindow, u binde = $mainMod shift, down, movewindow, d binde = $mainMod shift, h, movewindow, l binde = $mainMod shift, l, movewindow, r binde = $mainMod shift, k, movewindow, u binde = $mainMod shift, j, movewindow, d # binde = ctrl shift, left, resizeactive, -20 0 # binde = ctrl shift, left, moveactive, 20 0 # binde = ctrl shift, right, resizeactive, -20 0 # binde = ctrl shift, up, resizeactive, 0 -20 # binde = ctrl shift, up, moveactive, 0 20 # binde = ctrl shift, down, resizeactive, 0 -20 binde = ctrl $mainMod, left, resizeactive, 20 0 binde = ctrl $mainMod, left, moveactive, -20 0 binde = ctrl $mainMod, right, resizeactive, 20 0 binde = ctrl $mainMod, up, resizeactive, 0 20 binde = ctrl $mainMod, up, moveactive, 0 -20 binde = ctrl $mainMod, down, resizeactive, 0 20 binde = ctrl $mainMod alt, f, setfloating, 1 binde = ctrl $mainMod alt, f, centerwindow, 1 binde = shift alt, left, moveactive, -20 0 binde = shift alt, right, moveactive, 20 0 binde = shift alt, up, moveactive, 0 -20 binde = shift alt, down, moveactive, 0 20 # window shortcuts bind = $mainMod, f, fullscreen, bind = $mainMod, space, togglefloating, bind = $mainMod shift, space, pseudo, # dwindle bind = $mainMod shift, m, togglesplit, # dwindle # Move focus with mainMod + arrow keys bind = $mainMod, left, movefocus, l bind = $mainMod, right, movefocus, r bind = $mainMod, up, movefocus, u bind = $mainMod, down, movefocus, d # vim binds bind = $mainMod, h, movefocus, l bind = $mainMod, l, movefocus, r bind = $mainMod, k, movefocus, u bind = $mainMod, j, movefocus, d # 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, movetoworkspace, 1 bind = $mainMod SHIFT, 2, movetoworkspace, 2 bind = $mainMod SHIFT, 3, movetoworkspace, 3 bind = $mainMod SHIFT, 4, movetoworkspace, 4 bind = $mainMod SHIFT, 5, movetoworkspace, 5 bind = $mainMod SHIFT, 6, movetoworkspace, 6 bind = $mainMod SHIFT, 7, movetoworkspace, 7 bind = $mainMod SHIFT, 8, movetoworkspace, 8 bind = $mainMod SHIFT, 9, movetoworkspace, 9 bind = $mainMod SHIFT, 0, movetoworkspacesilent, 10 # Scroll through existing workspaces with mainMod + scroll # use waybar # 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 # bind = $mainMod, mouse:272, pin # bindri = $mainMod, mouse:272, pin, disable bindi = ,mouse:275, execr, exec -a autoclicker-left zsh -c 'while true; do wlrctl pointer click; sleep $((0.$RANDOM/10)); done' bindi = ,mouse:276, execr, exec -a autoclicker-right zsh -c 'while true; do wlrctl pointer click right; sleep $((0.$RANDOM/10)); done' bindri = ,mouse:275, execr, kill $(pgrep -f autoclicker-left) bindri = ,mouse:276, execr, kill $(pgrep -f autoclicker-right) # Make group bind = $mainMod, g, togglegroup # bindie = ,mouse:276, execr, wlrctl pointer click # bindie = ,mouse:275, execr, wlrctl pointer click right # bindri = ,mouse:276, execr, kill $(pgrep -f autoclicker-left) # bindri = ,mouse:275, execr, kill $(pgrep -f autoclicker-right) # chroma bind = $mainMod, O, togglechromakey # input capture bind = $mainMod SHIFT, escape, releaseinputcapture Config File: /home/system/.config/hypr/autostart.conf: Read Succeeded ################# ### AUTOSTART ### ################# # Autostart necessary processes (like notifications daemons, status bars, etc.) # Or execute your favorite apps at launch like this: # seems to be builtin? # exec-once = dbus-update-activation-environment --all && dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP # exec-once = systemctl --user import-environment XDG_SESSION_TYPE XDG_CURRENT_DESKTOP WAYLAND_DISPLAY QT_QPA_PLATFORMTHEME # FIX CURSOR because keep reseting(see: https://www.reddit.com/r/hyprland/comments/1fgfmqb/gtk_apps_not_respecting_cursor_theme/) # exec-once = gsettings set org.gnome.desktop.interface cursor-theme Bibata-Rainbow-Modern exec-once = hyprctl setcursor Bibata-Rainbow-Modern 24 # Launch hyprland plugins exec-once = hyprpm reload || hyprpm update # Start pyprland daemon exec-once = pyprland # Waybar exec-once = waybar # Hypr-Eco # exec-once = hyprpaper # exec-once = $SCRIPTSDIR/hyprpaper.sh # exec-once = $SCRIPTSDIR/swww.sh exec-once = $SCRIPTSDIR/mpvpaper.sh exec-once = hypridle # XWayland exec-once = xrdb -merge ~/.Xresources # Auth agent # exec-once = systemctl --user start plasma-polkit-agent # doesnt respect themeing # exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 exec-once = systemctl --user start hyprpolkitagent # keyring agent exec-once = gnome-keyring-daemon --start --components=pkcs11,secrets,ssh # Location service exec-once = /usr/lib/geoclue-2.0/demos/agent & # input method exec-once = fcitx5 -d # app armor notifications # exec-once = aa-notify -p -s 1 -w 60 -f /var/log/audit/audit.log & # Clipboard history # exec-once = wl-paste --watch cliphist store exec-once = wl-paste --type text --watch cliphist store exec-once = wl-paste --type image --watch cliphist store # exec-once = wl-clip-persist --clipboard regular # Notification agent exec-once = swaync # window swicher daemon exec-once = hyprswitch init # audio auto adjust exec-once = $HOME/scripts/audio-autoAdjust.sh --daemon # effect for audio exec-once = while true; do easyeffects --gapplication-service; done # startup sound exec-once = $HOME/scripts/startupsound.sh # misc # sys hud exec-once = syshud -M audio_in,audio_out,brightness -b /sys/bus/ddcci/devices/ddcci13/backlight/ddcci13/ # night light # exec-once = gammastep -l geoclue2 exec-once = $HOME/scripts/hyprsunset.sh # user applications exec-once = udiskie exec-once = bitwarden-desktop # exec-once = kdeconnectd exec-once = input-leap # works with https://github.com/3l0w/Hyprland/tree/feat/input-capture-impl exec-once = nextcloud --background exec-once = [workspace 6 silent; noinitialfocus] discord --start-minimized exec-once = beeper --no-sandbox --hidden # exec-once = echo 'ddcci 0x37' | sudo tee /sys/bus/i2c/devices/i2c-13/new_device # Notify if stuff is already started exec-once = warp-cli status | grep Connect && notify-send 'warp-vpn' 'connected' exec-once = pactl get-source-mute @DEFAULT_SOURCE@ | grep 'Mute: yes' >/dev/null && notify-send 'microphone' 'muted' exec-once = modprobe uvcvideo || notify-send 'uvcvideo' 'disabled' exec-once = pgrep -f gpu-screen-recorder && notify-send 'recorder' 'recording' # restore session exec-once = hyprctl keyword misc:focus_on_activate false; hyprsession --mode load-and-exit; hyprctl keyword misc:focus_on_activate true exec-once = hyprsession --mode save-only # spam of notification at start(e.g. chromium) exec-once = swaync-client --dnd-on && sleep 3 && swaync-client --dnd-off ======Config-End======== ```

Description

same issue as prev num lock issues, num lock is on, but the input is not number. had to disable and renable to type number and will reset every ~5min(have to repeat above to get numlock working).

im pretty sure this is a reggression and is fixed but is broken again

How to reproduce

  1. enable numlock

Crash reports, logs, images, videos

No response

MahouShoujoMivutilde commented 3 weeks ago

I can reproduce the issue with numlock_by_default = true after config is reloaded.

This patch fixes it for me

Details

```patch diff --git a/src/devices/IKeyboard.cpp b/src/devices/IKeyboard.cpp index d1119772..b50c094f 100644 --- a/src/devices/IKeyboard.cpp +++ b/src/devices/IKeyboard.cpp @@ -115,12 +115,13 @@ void IKeyboard::setKeymap(const SStringRuleNames& rules) { if (NUMLOCKON == 1) { // lock numlock const auto IDX = xkb_map_mod_get_index(xkbKeymap, XKB_MOD_NAME_NUM); + auto locked = modifiersState.locked; if (IDX != XKB_MOD_INVALID) - modifiersState.locked |= (uint32_t)1 << IDX; + locked |= (uint32_t)1 << IDX; // 0 to avoid mods getting stuck if depressed during reload - updateModifiers(0, 0, modifiersState.locked, modifiersState.group); + updateModifiers(0, 0, locked, modifiersState.group); } for (size_t i = 0; i < LEDNAMES.size(); ++i) { ```

Does it work for you?

I'm on d679d200299ed4670f0d0f138c793d5f507b7cec aquamarine 8d732fa

littleblack111 commented 3 weeks ago

hmm... doesnt seem to work, but i wonder how would defining a new var that is the same value as the old one and using the new one work.

MahouShoujoMivutilde commented 3 weeks ago

Strange. Can you reproduce the issue without numlock on by default? Because I can't. Maybe we're talking about different issues, but it didn't reset for me after more than 20 minutes.

But for me without this patch, when numlock is on by default, after config reload it stays on (predictably), including LED, but no longer actually in effect.


About the patch

It could work because of this line inside `updateModifiers()` https://github.com/hyprwm/Hyprland/blob/d679d200299ed4670f0d0f138c793d5f507b7cec/src/devices/IKeyboard.cpp#L345-L346 that checks if `modifiersState` still matches real `xkbState` https://github.com/hyprwm/Hyprland/blob/d679d200299ed4670f0d0f138c793d5f507b7cec/src/devices/IKeyboard.cpp#L362-L368 and if it doesn't - then it sends the event that notifies things of these changes. But if `modifiersState` was modified outside the method (like without the patch), the event will not be emitted, as https://github.com/hyprwm/Hyprland/blob/d679d200299ed4670f0d0f138c793d5f507b7cec/src/devices/IKeyboard.cpp#L340 is always called first, so `modifiersState` variables will be equal to all of that here https://github.com/hyprwm/Hyprland/blob/d679d200299ed4670f0d0f138c793d5f507b7cec/src/devices/IKeyboard.cpp#L362-L365

So I assumed that depressed (mods pressed) and latched (stuff to type diacritics about to go) to were zero anyway (won't influence the check), locked was whatever it is for your keyboard when numlock is already on, and group was whatever it is for us (which what you have in your config and is also default group).

So no changes, meaning no event, meaning default state of numlock as off, while leds stay on.

littleblack111 commented 3 weeks ago

hmm i see. I will check tmr, it's pretty late here and im abt to sleep

MahouShoujoMivutilde commented 3 weeks ago

A proper repro for testing:

  1. Launch hyprland with numlock_by_default = true.
  2. (Layout should be selected us)
  3. Type something on numpad - numbers are entered (both with and without patch)
  4. run hyprctl reload
  5. Type something on numpad - numbers with the patch, but works like the arrow keys without the patch (so like if numlock is off)

Edit

Never mind lol.

I bisected (manually), and

GOOD d679d200 seat: avoid sending pointless 'keymap' and 'repeat_info' events (8276) BAD 7188ee4f hyprctl: move setprop into dispatchers (8275) c7315617 internal: few more marginal optimisations from profiling (8271) BAD d49a1334 swallow: check if swallow_regex doesn't exist (8265) 2c481202 layout: slight adjustments to snapping logic (8273) BAD 6cf193e1 layout: don't snap to self and allow same-pid snaps

(GOOD - numlock stays on for real after config reload)

Checking on 7188ee4f992966c5793efebd6dc70ab377820066 + patch - it doesn't seem to fix it anyway.

8276 is what actually fixed the issue.

No patch is needed, update to latest git.

littleblack111 commented 3 weeks ago

hang tight, im compiling(with input-capture), i skiped a rebase conflict thats not this commit cuz i dont have time for this.

also I cannot repro with hyprctl reload, I have to just wait a while

EDIT: nope it didnt not fix it for me, but seems to somewhat mitigate it

cafetestrest commented 3 weeks ago

I can reproduce it on my Bluetooth keyboard, maybe it does work with wired? Though I'm using NixOS 24.05 with quite old Hyprland rev: 66586c38f53f16bcf762f019359a3c9042546a72

Aleyo commented 3 weeks ago

I had an issue, where my wired numpad didnt work at all even with numlock_by_default = true. I managed to make it work by adding this to hyprland input config kb_options: numpad:mac. I am not sure if it can be related at all, but hopefully it helps someone.