Skip to content

Another case of mouse changing focus #7489

Description

@ArtemSmaznov

Regression?

No

System Info and Version

System/Version info
Hyprland, built from branch  at commit 9a09eac79b85c846e3a865a9078a3f8ff65a9259  (props: bump version to 0.42.0).
Date: Wed Aug 7 19:17:10 2024
Tag: v0.42.0, commits: 5069

flags: (if any)


System Information:
System name: Linux
Node name: izumi
Release: 6.10.5-zen1-1-zen
Version: #1 ZEN SMP PREEMPT_DYNAMIC Thu, 15 Aug 2024 00:25:05 +0000


GPU information: 
03:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Navi 32 [Radeon RX 7700 XT / 7800 XT] [1002:747e] (rev c8) (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/artem/.config/hypr/hyprland.conf: Read Succeeded
$myScript        = $HOME/.local/bin
$myDMScript      = $HOME/.local/bin/dm-scripts
$myHyprScript    = $HOME/.config/hypr/scripts
$myEwwScript     = $HOME/.config/eww/scripts

# cli tools
$myTerm          = alacritty
$myCliFiles      = alacritty -e vifmrun
$myCliMusic      = alacritty --class ncmpcpp -e ncmpcpp
$myCliText       = vim
$myCliSysAudio   = alsamixer
$myCliSysMonitor = btop
$myCliSysTasks   = htop

# core tools
$myWebBrowser    = qutebrowser
$myIncBrowser    = qutebrowser --target private-window
$myTorBrowser    = torbrowser-launcher
$myIde           = emacs
# $myIde           = emacsclient -ca ''
$myFiles         = pcmanfm
$myEmail         = thunderbird
$myEmailClass    = thunderbird
$mySteam         = /usr/bin/steam-runtime %U

# extra tools
$myLauncher      = wofi --show drun
$myVirtManager   = virt-manager
$myTorrent       = transmission-gtk
$myCalculator    = gnome-calculator
$myAnki          = anki
$myColorPicker   = hyprpicker -anr

# graphics tools
$myPhotoLibrary  = digikam
$myImgEditor     = gimp
$myVctEditor     = inkscape
$myVidEditor     = kdenlive

# chat apps
$myWhatsApp      = whatsapp-for-linux
# $myDiscord       = discord
# $myDiscordClass  = discord
$myDiscord       = webcord
$myDiscordClass  = WebCord

# system tools
$mySysPower      = xfce4-power-manager-settings
$mySysNetwork    = nm-connection-editor
$mySysBluetooth  = blueman-manager

# eww
$panel-monitor   = monitor
$panel-power     = powermenu-panel
$quick-settings  = quick-settings
$which-key       = which-key

source=./themes/base16.conf

$gaps_inner = 20
$gaps_outer = 40
$borders = 15
$borders_special = 10
$corners = 15

#       name , resolution    , position  , scale , extras
monitor=DP-1 , highrr        , 0x0       , auto
monitor=DP-2 , 1920x1080@144 , 760x-1080 , auto
# monitor=DP-2 , disable
monitor=     , preferred     , auto      , auto

exec-once = eww open-many main-bar second-bar $quick-settings
exec-once = $myScript/auto-start.sh
exec-once = hypridle
# exec-once = swayidle

env = GDK_BACKEND,wayland,x11     # GTK: Use wayland if available, fall back to x11 if not.
# env = MANGOHUD,1

env = QT_QPA_PLATFORM,wayland;xcb # QT: Use wayland if available, fall back to x11 if not.
env = QT_QPA_PLATFORMTHEME,qt5ct  # Tells QT based applications to pick your theme from qt5ct, use with Kvantum.

env = XDG_CURRENT_DESKTOP,Hyprland
env = XDG_SESSION_TYPE,wayland
env = XDG_SESSION_DESKTOP,Hyprland

# env = WAYLAND_DISPLAY,wayland-0

# env = GTK_THEME,                  # Set a GTK theme manually, for those who want to avoid appearance tools such as lxappearance or nwg-look
env = XCURSOR_THEME,breeze_cursors  # Set your cursor theme. The theme needs to be installed and readable by your user.
env = XCURSOR_SIZE,32               # Set cursor size. See here for why you might want this variable set.

# Set your cursor theme. The theme needs to be installed and readable by your user.
# env = HYPRCURSOR_THEME,capitaine-cursors
env = HYPRCURSOR_THEME,HyprBibataModernClassicSVG
env = HYPRCURSOR_SIZE,32                 # Set cursor size. See here for why you might want this variable set.

general {
    gaps_in = $gaps_inner       # gaps between windows
    gaps_out = $gaps_outer      # gaps between windows and monitor edges
    gaps_workspaces = 20        # for animation transitions

    border_size = $borders
    col.active_border = rgba($base0Eaa) rgba($base0Dee) 45deg
    col.inactive_border = rgba($base03aa)

    # focus
    no_focus_fallback = true    # will not fall back to the next available window when moving focus in a direction where no window was found

    resize_on_border = true     # enables resizing windows by clicking and dragging on borders and gaps

    layout = dwindle
}

windowrulev2 = bordercolor rgba($base0Faa) rgb($base00),xwayland:1

windowrulev2 = noborder,pinned:1
windowrulev2 = nodim,pinned:1
windowrulev2 = opacity override 0.7,pinned:1

windowrulev2 = rounding 0,fullscreen:1

windowrulev2 = idleinhibit focus,class:^steam_app
windowrulev2 = idleinhibit focus,class:x86_64$

$app_filter = ^(mpv)$

# floating
windowrulev2 = dimaround,class:$app_filter,floating:1
windowrulev2 = keepaspectratio,class:$app_filter,floating:1
windowrulev2 = stayfocused,class:$app_filter,floating:1
windowrulev2 = center,class:$app_filter,floating:1

# tiled
windowrulev2 = pseudo,class:$app_filter,floating:0

# initial state
windowrule = float,$app_filter

windowrule   = workspace 2 silent,^([Ss]team)$

# steam updater floating window
windowrulev2 = workspace 2 silent,title:^(Steam)$,floating:1
windowrulev2 = nofocus,title:^(Steam)$,floating:1

windowrule = tile,^([Ss]crcpy)$

# windowrule = workspace 1 silent,^(firefox)$
# windowrule = workspace 1 silent,^(Tor Browser)$
# windowrule = workspace 1 silent,^(Chromium)$
# windowrule = workspace 1 silent,^(Google-chrome)$
# windowrule = workspace 1 silent,^(Brave-browser)$
# windowrule = workspace 1 silent,^(vivaldi-stable)$
# windowrule = workspace 1 silent,^(org.qutebrowser.qutebrowser)$
# windowrule = workspace 1 silent,^(nyxt)$

windowrule   = workspace 2 silent,^([Bb]attle.net)$
windowrule   = workspace 2 silent,^([Ww]ine)$
windowrule   = workspace 2 silent,^(dolphin-emu)$
windowrule   = workspace 2 silent,^([Ll]utris)$
windowrule   = workspace 2 silent,^(Citra)$
windowrule   = workspace 2 silent,^(SuperTuxKart)$

windowrule = workspace 3 silent,^([Ee]macs)$
windowrule = workspace 3 silent,^(Geany)$
windowrule = workspace 3 silent,^(Atom)$
windowrule = workspace 3 silent,^(Subl3)$
windowrule = workspace 3 silent,^(code-oss)$
windowrule = workspace 3 silent,^(Oomox)$
windowrule = workspace 3 silent,^(Unity)$
windowrule = workspace 3 silent,^(UnityHub)$
windowrule = workspace 3 silent,^(jetbrains-studio)$

windowrule = workspace 4 silent,^(dolphin)$
windowrule = workspace 4 silent,^(ark)$
windowrule = workspace 4 silent,^(Pcmanfm)$
windowrule = workspace 4 silent,^(File-roller)$
windowrule = workspace 4 silent,^(googledocs)$
windowrule = workspace 4 silent,^(keep)$
windowrule = workspace 4 silent,^(calendar)$

# windowrule = workspace 5 silent,^(ncmpcpp)$
windowrule = workspace 5 silent,^(Spotify)$

windowrule = workspace 6 silent,^([Gg]imp)$
windowrule = workspace 6 silent,^(Inkscape)$
windowrule = workspace 6 silent,^(Flowblade)$
windowrule = workspace 6 silent,^(org.kde.digikam)$
windowrule = workspace 6 silent,^(obs)$
windowrule = workspace 6 silent,^(kdenlive)$

# windowrule   = workspace 7 silent,^(whatsapp-for-linux)$
# windowrule   = workspace 7 silent,^(Slack)$
# windowrule   = workspace 7 silent,^(discord)$
# windowrule   = workspace 7 silent,^(signal)$
# windowrulev2 = workspace 7 silent,class:^([Ss]team)$,title:^(Friends List)$

windowrule = workspace 8 silent,^(Virt-manager)$
windowrule = workspace 8 silent,^VirtualBox
windowrule = workspace 8 silent,^(Cypress)$

windowrule = workspace 9 silent,^(btop)$

# $app_filter = ^(sp-term)$
# $workspace = sp-term
# #---------------------------------------------------
# windowrule = unset,$app_filter
# windowrule = workspace special:$workspace silent,$app_filter
# windowrule = float,$app_filter
# windowrule = size 50% 80%,$app_filter
# windowrule = center,$app_filter

# $scratchpad = ^(sp-files)$
# #---------------------------------------------------
# windowrule = unset,$scratchpad
# # windowrule = workspace special silent,$scratchpad
# windowrule = float,$scratchpad
# windowrule = size 50% 70%,$scratchpad
# windowrule = center,$scratchpad

$scratchpad = ^(com.transmissionbt.transmission*)
#---------------------------------------------------
windowrule = unset,$scratchpad
# windowrule = workspace special silent,$scratchpad
windowrule = size 30% 80%,$scratchpad
windowrule = float,$scratchpad
windowrule = center,$scratchpad

$scratchpad = ^(anki)$
#---------------------------------------------------
windowrule = unset,$scratchpad
windowrule = float,$scratchpad
windowrule = size 20% 70%,$scratchpad
windowrule = center,$scratchpad
windowrule = dimaround,$scratchpad

$scratchpad = ^(virt-manager)$
#---------------------------------------------------
windowrule = unset,$scratchpad
windowrule = workspace special:vm silent,$scratchpad
windowrule = float,$scratchpad
windowrule = size 20% 50%,$scratchpad
windowrule = move 10% 10%,$scratchpad

$scratchpad = ^(sp-htop)$
#---------------------------------------------------
# windowrule = float,$scratchpad
# windowrule = size 80% 80%,$scratchpad
# windowrule = center,$scratchpad
windowrule = stayfocused,$scratchpad
windowrule = dimaround,$scratchpad

$scratchpad = ^(org.gnome.Calculator)$
#---------------------------------------------------
windowrule = unset,$scratchpad
# windowrule = workspace special silent,$scratchpad
windowrule = float,$scratchpad
windowrule = size 15% 50%,$scratchpad
windowrule = move 82% 5%,$scratchpad

workspace = 1, persistent:true, monitor:DP-1, default:true
workspace = 2, persistent:true, monitor:DP-1
workspace = 3, persistent:true, monitor:DP-1
workspace = 4, persistent:true, monitor:DP-1
workspace = 5, persistent:true, monitor:DP-2
workspace = 6, persistent:true, monitor:DP-1
workspace = 7, persistent:true, monitor:DP-1
workspace = 8, persistent:true, monitor:DP-1
workspace = 9, persistent:true, monitor:DP-1
# workspace = name:star, persistent:true, monitor:DP-1

workspace = special:term       , bordersize:$borders_special , gapsin:50 , gapsout:125
workspace = special:files      , bordersize:$borders_special , gapsin:50 , gapsout:125
workspace = special:music      , bordersize:$borders_special , gapsin:50 , gapsout:125
workspace = special:email      , bordersize:$borders_special , gapsin:50 , gapsout:125
workspace = special:chats      , bordersize:$borders_special , gapsin:50 , gapsout:125
workspace = special:audio      , bordersize:$borders_special , gapsin:50 , gapsout:125
workspace = special:torrent    , bordersize:$borders_special , gapsin:50 , gapsout:125
workspace = special:anki       , bordersize:$borders_special , gapsin:50 , gapsout:125
workspace = special:vm         , bordersize:$borders_special , gapsin:50 , gapsout:125
workspace = special:calculator , bordersize:$borders_special , gapsin:50 , gapsout:125
workspace = special:htop       , bordersize:$borders_special , gapsin:50 , gapsout:125
workspace = special:btop       , bordersize:$borders_special , gapsin:50 , gapsout:125

# workspace = special:foo, on-created-empty:alacritty -e ncmpcpp
# bind = SUPER CTRL , d , togglespecialworkspace , foo

layerrule = blur, waybar

# default windows
$namespace = gtk-layer-shell
layerrule = blur, $namespace
layerrule = ignorealpha 0, $namespace
layerrule = animation slide, $namespace

# monitor
layerrule = blur, $panel-monitor
layerrule = ignorealpha 0, $panel-monitor
layerrule = animation slide, $panel-monitor

# quick-settings
layerrule = blur, $quick-settings
layerrule = ignorealpha 0, $quick-settings
layerrule = animation slide, $quick-settings

# which-key
layerrule = blur, $which-key
layerrule = ignorealpha 0, $which-key
layerrule = animation slide, $which-key

layerrule = blur, wofi
layerrule = ignorealpha 0, wofi

decoration {
    rounding = $corners

    drop_shadow = yes                     # enable drop shadows on windows
    shadow_range = 40                     # Shadow range (“size”) in layout px
    shadow_render_power = 3               # in what power to render the falloff (more power, the faster the falloff) [1 - 4]
    shadow_ignore_window = true           # if true, the shadow will not be rendered behind the window itself, only around it.

    col.shadow = rgba($base0E70)          # shadow’s color. Alpha dictates shadow’s opacity.
    col.shadow_inactive = rgba($base00cc) # inactive shadow color. (if not set, will fall back to col.shadow) color unset

    # shadow_offset = [0, 0]                # shadow’s rendering offset. vec2 [0, 0]
    shadow_scale = 1.0                    # shadow’s scale. [0.0 - 1.0]

    blur {
        enabled = true
        size = 10
        passes = 3
        ignore_opacity = true
        new_optimizations = true
        xray = false
        noise = 0.03
        special = false
    }

    dim_inactive = false
}

input {
    kb_layout = us,ru,jp
    kb_variant =
    kb_model =
    # kb_options = grp:lalt_lshift_toggle
    kb_options =
    kb_rules =

    # focus
    # Specify if and how cursor movement should affect window focus
    # 0 - Cursor movement will not change focus.
    # 1 - Cursor movement will always change focus to the window under the cursor.
    # 2 - Cursor focus will be detached from keyboard focus. Clicking on a window will move keyboard focus to that window.
    # 3 - Cursor focus will be completely separate from keyboard focus. Clicking on a window will not change keyboard focus.
    #
    follow_mouse = 2

    # If disabled, mouse focus won’t switch to the hovered window unless the mouse crosses a window boundary when follow_mouse=1.
    mouse_refocus = false

    # 0 - Cursor movement will not change focus.
    # 1 - focus will change to the window under the cursor when changing from tiled-to-floating and vice versa.
    # 2 - focus will also follow mouse on float-to-float switches.
    float_switch_override_focus = 0

    repeat_rate = 25   # The repeat rate for held-down keys, in repeats per second.
    repeat_delay = 300 # Delay before a held-down key is repeated, in milliseconds.

    scroll_factor = 1
    natural_scroll = false

    touchpad {
        natural_scroll = false
    }

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

misc {
    disable_hyprland_logo = false
    disable_autoreload = false

    # focus
    mouse_move_focuses_monitor = false
    focus_on_activate = false           # Whether Hyprland should focus an app that requests to be focused
    layers_hog_keyboard_focus = true

    animate_manual_resizes = true       # will animate manual window resizes/moves	bool	false
    animate_mouse_windowdragging = true # will animate windows being dragged by mouse, note that this can cause weird behavior on some curves

    enable_swallow = false              # Enable window swallowing

    # allow_session_lock_restore = true   # will allow you to restart a lockscreen app in case it crashes

    vrr = 2                             # controls the VRR (Adaptive Sync) of your monitors. 0 - off, 1 - on, 2 - fullscreen only

    mouse_move_enables_dpms = true     # If DPMS is set to off, wake up the monitors if the mouse moves.
    key_press_enables_dpms = true      # If DPMS is set to off, wake up the monitors if a key is pressed.
}

cursor {
    inactive_timeout = 15 # after how many seconds of cursor’s inactivity to hide it. Set to 0 for never.
    no_warps = true      # will not warp the cursor in many cases (focusing, keybinds, etc)
    enable_hyprcursor = true
}

binds {
    workspace_back_and_forth = true     # an attempt to switch to the currently focused workspace will instead switch to the previous workspace
    allow_workspace_cycles = true       # If enabled, workspaces don’t forget their previous workspace, so cycles can be created by switching to the first workspace in a sequence, then endlessly going to the previous workspace.

    # sets the preferred focus finding method when using focuswindow/movewindow/etc with a direction.
    # 0 - history (recent have priority)
    # 1 - length (longer shared edges have priority)
    focus_preferred_method = 0

    movefocus_cycles_fullscreen = false # If enabled, when on a fullscreen window, movefocus will cycle fullscreen, if not, it will move the focus in a direction.
}

animations {
    enabled = yes
    bezier = myBezier, 0.05, 0.9, 0.1, 1.05

    animation = windows, 1, 7, myBezier
    animation = windowsOut, 1, 7, myBezier, popin 80%

    animation = layers, 1, 7, myBezier, popin 80%

    animation = workspaces, 1, 7, myBezier, fade
    animation = specialWorkspace, 1, 7, myBezier, slidefadevert -10%

    animation = border, 1, 10, myBezier
    animation = borderangle, 1, 80, myBezier

    animation = fade, 1, 7, myBezier
}

dwindle {
    pseudotile = true         # master switch for pseudotiling. Pseudotiled windows retain their floating size when tiled.
    force_split = 2           # 0 - mouse; 1 - left; 2 - right
    preserve_split = true     # if enabled, the split (side/top) will not change regardless of what happens to the container.
    no_gaps_when_only = false # whether to apply gaps when there is only one window on a workspace, aka. smart gaps.
}

master {
    new_status = slave
    no_gaps_when_only = false # whether to apply gaps when there is only one window on a workspace, aka. smart gaps.
}

gestures {
    # See https://wiki.hyprland.org/Configuring/Variables/ for more
    workspace_swipe = false
}

# device:logitech-mx-master-3-1 {
#     sensitivity = 0
# }

bind = SUPER CTRL , q     , exit                ,                          # quit hyprland
bind = SUPER CTRL , r     , forcerendererreload ,                          # restart hyprland
bind = SHIFT      , ALT_L , exec                , $myScript/toggle-lang.sh # switch language

bind = SUPER       , q   , killactive      ,      # close focused window
bind = SUPER SHIFT , F11 , fullscreenState , -1 2 # toggle fake fullscreen
bind = SUPER       , F11 , fullscreen      , 0    # toggle fullscreen
bind = SUPER SHIFT , f   , fullscreen      , 0    # toggle fullscreen
bind = SUPER       , m   , fullscreen      , 1    # toggle maximize
bind = SUPER       , f   , togglefloating  ,      # toggle floating
bind = SUPER CTRL  , f   , pin             ,      # toggle pinnned
bind = SUPER SHIFT , p   , pseudo          ,      # toggle pseudo
bind = SUPER SHIFT , m   , togglesplit     ,      # mirror layout

bind = ALT       , tab , cyclenext ,      # focus next window
bind = ALT SHIFT , tab , cyclenext , prev # focus prev window
bind = SUPER     , h   , movefocus , l    # focus left window
bind = SUPER     , j   , movefocus , d    # focus below window
bind = SUPER     , k   , movefocus , u    # focus above window
bind = SUPER     , l   , movefocus , r    # focus right window

bind = SUPER , equal , splitratio , exact 1    # reset fucused window size

binde = SUPER CTRL , h , resizeactive , -20 0  # grow focused window left
binde = SUPER CTRL , j , resizeactive ,  0 20  # grow focused window down
binde = SUPER CTRL , k , resizeactive ,  0 -20 # grow focused window up
binde = SUPER CTRL , l , resizeactive , 20 0   # grow focused window right

bind = SUPER SHIFT , h , swapwindow , l # swap focused window with left window
bind = SUPER SHIFT , j , swapwindow , d # swap focused window with below window
bind = SUPER SHIFT , k , swapwindow , u # swap focused window with above window
bind = SUPER SHIFT , l , swapwindow , r # swap focused window with right window

binde = SUPER CTRL  , c     , centerwindow
binde = SUPER       , equal , centerwindow ,        # center floating window
binde = SUPER SHIFT , h     , moveactive   , -20 0  # move floating window left
binde = SUPER SHIFT , j     , moveactive   ,  0 20  # move floating window down
binde = SUPER SHIFT , k     , moveactive   ,  0 -20 # move floating window up
binde = SUPER SHIFT , l     , moveactive   , 20 0   # move floating window right

bind = SUPER ALT , h , movewindow , l # move focused window left
bind = SUPER ALT , j , movewindow , d # move focused window below
bind = SUPER ALT , k , movewindow , u # move focused window above
bind = SUPER ALT , l , movewindow , r # move focused window right



bind = SUPER , F1     , focusmonitor , 0 # move focus to monitor 1
bind = SUPER , F2     , focusmonitor , 1 # move focus to monitor 2
bind = SUPER , F3     , focusmonitor , 2 # move focus to monitor 3

bind = SUPER , comma  , focusmonitor , d # move focus to below monitor
bind = SUPER , period , focusmonitor , u # move focus to above monitor

bind = SUPER SHIFT , comma  , movewindow , mon:d # move window to below monitor
bind = SUPER SHIFT , period , movewindow , mon:u # move window to above monitor

bind = SUPER SHIFT , F1 , movewindow , mon:0 # move window to monitor 1
bind = SUPER SHIFT , F2 , movewindow , mon:1 # move window to monitor 2
bind = SUPER SHIFT , F3 , movewindow , mon:2 # move window to monitor 3

bind = SUPER , space , exec , $myHyprScript/toggle-layout.sh # switch layouts

bind = SUPER , tab , focusworkspaceoncurrentmonitor , previous # toggle last workspace
bind = SUPER , 1   , focusworkspaceoncurrentmonitor , 1 # switch to workspace 1
bind = SUPER , 2   , focusworkspaceoncurrentmonitor , 2 # switch to workspace 2
bind = SUPER , 3   , focusworkspaceoncurrentmonitor , 3 # switch to workspace 3
bind = SUPER , 4   , focusworkspaceoncurrentmonitor , 4 # switch to workspace 4
bind = SUPER , 5   , focusworkspaceoncurrentmonitor , 5 # switch to workspace 5
bind = SUPER , 6   , focusworkspaceoncurrentmonitor , 6 # switch to workspace 6
bind = SUPER , 7   , focusworkspaceoncurrentmonitor , 7 # switch to workspace 7
bind = SUPER , 8   , focusworkspaceoncurrentmonitor , 8 # switch to workspace 8
bind = SUPER , 9   , focusworkspaceoncurrentmonitor , 9 # switch to workspace 9
bind = SUPER , 0   , focusworkspaceoncurrentmonitor , name:star # switch to workspace star

bind = SUPER SHIFT , 1 , movetoworkspacesilent , 1 # move window to workspace 1
bind = SUPER SHIFT , 2 , movetoworkspacesilent , 2 # move window to workspace 2
bind = SUPER SHIFT , 3 , movetoworkspacesilent , 3 # move window to workspace 3
bind = SUPER SHIFT , 4 , movetoworkspacesilent , 4 # move window to workspace 4
bind = SUPER SHIFT , 5 , movetoworkspacesilent , 5 # move window to workspace 5
bind = SUPER SHIFT , 6 , movetoworkspacesilent , 6 # move window to workspace 6
bind = SUPER SHIFT , 7 , movetoworkspacesilent , 7 # move window to workspace 7
bind = SUPER SHIFT , 8 , movetoworkspacesilent , 8 # move window to workspace 8
bind = SUPER SHIFT , 9 , movetoworkspacesilent , 9 # move window to workspace 9
bind = SUPER SHIFT , 0 , movetoworkspacesilent , name:star # move window to workspace star

bind = SUPER SHIFT CTRL , 1 , moveworkspacetomonitor , 1 current # move window to workspace 1 with switch
bind = SUPER SHIFT CTRL , 2 , moveworkspacetomonitor , 2 current # move window to workspace 2 with switch
bind = SUPER SHIFT CTRL , 3 , moveworkspacetomonitor , 3 current # move window to workspace 3 with switch
bind = SUPER SHIFT CTRL , 4 , moveworkspacetomonitor , 4 current # move window to workspace 4 with switch
bind = SUPER SHIFT CTRL , 5 , moveworkspacetomonitor , 5 current # move window to workspace 5 with switch
bind = SUPER SHIFT CTRL , 6 , moveworkspacetomonitor , 6 current # move window to workspace 6 with switch
bind = SUPER SHIFT CTRL , 7 , moveworkspacetomonitor , 7 current # move window to workspace 7 with switch
bind = SUPER SHIFT CTRL , 8 , moveworkspacetomonitor , 8 current # move window to workspace 8 with switch
bind = SUPER SHIFT CTRL , 9 , moveworkspacetomonitor , 9 current # move window to workspace 9 with switch

bind = SUPER SHIFT CTRL , 1 , movetoworkspace , 1
bind = SUPER SHIFT CTRL , 2 , movetoworkspace , 2
bind = SUPER SHIFT CTRL , 3 , movetoworkspace , 3
bind = SUPER SHIFT CTRL , 4 , movetoworkspace , 4
bind = SUPER SHIFT CTRL , 5 , movetoworkspace , 5
bind = SUPER SHIFT CTRL , 6 , movetoworkspace , 6
bind = SUPER SHIFT CTRL , 7 , movetoworkspace , 7
bind = SUPER SHIFT CTRL , 8 , movetoworkspace , 8
bind = SUPER SHIFT CTRL , 9 , movetoworkspace , 9

bind = SUPER ALT , grave , togglespecialworkspace , term  # toggle special workspace term
bind = SUPER ALT , 1     , togglespecialworkspace , 1     # toggle special workspace 1
bind = SUPER ALT , 2     , togglespecialworkspace , 2     # toggle special workspace 2
bind = SUPER ALT , 3     , togglespecialworkspace , 3     # toggle special workspace 3
bind = SUPER ALT , 4     , togglespecialworkspace , 4     # toggle special workspace 4
bind = SUPER ALT , 5     , togglespecialworkspace , 5     # toggle special workspace 5
bind = SUPER ALT , m     , togglespecialworkspace , music # toggle special workspace music
bind = SUPER ALT , a     , togglespecialworkspace , audio # toggle special workspace audio
bind = SUPER ALT , c     , togglespecialworkspace , chats # toggle special workspace chats
bind = SUPER ALT , v     , togglespecialworkspace , vm    # toggle special workspace vm

bind = SUPER ALT SHIFT , grave , movetoworkspacesilent , term          # move window to special workspace term
bind = SUPER ALT SHIFT , 1     , movetoworkspacesilent , special:1     # move window to special workspace 1
bind = SUPER ALT SHIFT , 2     , movetoworkspacesilent , special:2     # move window to special workspace 2
bind = SUPER ALT SHIFT , 3     , movetoworkspacesilent , special:3     # move window to special workspace 3
bind = SUPER ALT SHIFT , 4     , movetoworkspacesilent , special:4     # move window to special workspace 4
bind = SUPER ALT SHIFT , 5     , movetoworkspacesilent , special:5     # move window to special workspace 5
bind = SUPER ALT SHIFT , m     , movetoworkspacesilent , special:music # move window to special workspace music
bind = SUPER ALT SHIFT , a     , movetoworkspacesilent , special:audio # move window to special workspace audio
bind = SUPER ALT SHIFT , c     , movetoworkspacesilent , special:chats # move window to special workspace chats
bind = SUPER ALT SHIFT , v     , movetoworkspacesilent , special:vm    # move window to special workspace vm

bind = SUPER , grave , exec , $myHyprScript/toggle-special-workspace.sh "term"  "sp-term"  "alacritty --class sp-term"          # toggle terminal
bind = SUPER , e     , exec , $myHyprScript/toggle-special-workspace.sh "files" "sp-files" "alacritty --class sp-files -e vifm" # toggle file manager

bind = SUPER       , r      , exec , $myLauncher   # launch launcher
bind = SUPER       , return , exec , $myTerm       # launch terminal
bind = SUPER       , c      , exec , $myIde        # launch ide
bind = SUPER SHIFT , e      , exec , $myCliFiles   # launch file manager
bind = SUPER       , b      , exec , $myWebBrowser # launch web browser
bind = SUPER       , i      , exec , $myIncBrowser # launch web browser in incognito mode

bind = CTRL ALT , delete , exec                   , $myHyprScript/toggle-special-workspace.sh "htop"  "sp-htop"  "alacritty --class sp-htop -e htop"
bind = CTRL ALT , end    , exec                   , $myHyprScript/toggle-special-workspace.sh "btop"  "sp-btop"  "alacritty --class sp-btop -e btop"
bind = CTRL ALT , t      , exec                   , $myTerm

bind = CTRL ALT , a      , togglespecialworkspace , audio
bind = CTRL ALT , a      , exec                   , [workspace special:audio] pavucontrol
bind = CTRL ALT , a      , exec                   , [workspace special:audio] qpwgraph
# bind = CTRL ALT , v      , exec                   , $myHyprScript/toggle-special-workspace.sh "volume" "pavucontrol" "pavucontrol"
# bind = CTRL ALT , v      , exec                   , $myHyprScript/toggle-special-workspace.sh "volume" "pavucontrol" "pavucontrol & qpwgraph"

bindl = , XF86AudioRaiseVolume , exec , $myScript/set-volume.sh + 2 # increase system volume
bindl = , XF86AudioLowerVolume , exec , $myScript/set-volume.sh - 2 # decrease system volume
bindl = , XF86AudioMute        , exec , $myScript/toggle-mute.sh    # toggle mute

bindl =      , XF86AudioPrev        , exec , $myScript/playerctl.sh prev     # player prev
bindl =      , XF86AudioNext        , exec , $myScript/playerctl.sh next     # player next
bindl =      , XF86AudioPlay        , exec , $myScript/playerctl.sh toggle   # player play/pause
bindl =      , XF86AudioStop        , exec , $myScript/playerctl.sh stop     # player stop
bindl = CTRL , XF86AudioPlay        , exec , $myScript/musictl.sh single     # music [s] single mode
bindl = CTRL , XF86AudioStop        , exec , $myScript/musictl.sh random     # music [z] shuffle mode

bind =             , print , exec , $myScript/screenshot.sh monitor # Fullscreen Screenshot
bind = SUPER SHIFT , print , exec , $myScript/screenshot.sh area    # Selection Area Screenshot
bind = ALT         , print , exec , $myScript/screenshot.sh window  # Active Window Screenshot
bind = SUPER       , print , exec , $myScript/screenshot.sh desktop # Full Desktop Screenshot

bind = SUPER , backslash , exec   , $myEwwScript/which-key.sh dm-notify
bind = SUPER , backslash , submap , dm-notify

submap = dm-notify
bind =       , backspace , exec , $myDMScript/dm-notify close   # clear last notification
bind = SUPER , backslash , exec , $myDMScript/dm-notify recent  # show last notification
bind =       , backslash , exec , $myDMScript/dm-notify recent  # show last notification
bind = SHIFT , BACKSLASH , exec , $myDMScript/dm-notify recents # show recent notifications
bind =       , a         , exec , $myDMScript/dm-notify context # open last notification
bind =       , c         , exec , $myDMScript/dm-notify close   # clear last notification
bind = SHIFT , C         , exec , $myDMScript/dm-notify clear   # clear all notifications
bind =       , r         , exec , $myDMScript/dm-notify recents # show recent notifications

bindr =       , catchall  , exec , $myHyprScript/reset-submap.sh
bind  =       , backspace , exec , $myHyprScript/reset-submap.sh
bind  =       , a         , exec , $myHyprScript/reset-submap.sh
bind  = SHIFT , c         , exec , $myHyprScript/reset-submap.sh

submap = reset

bind = SUPER , d , exec   , $myEwwScript/which-key.sh dm-global
bind = SUPER , d , submap , dm-global

submap = dm-global
bind =       , backslash , exec , $myDMScript/dm-notify     # dm-notify
bind =       , b         , exec , $myDMScript/dm-bookman    # dm-bookman
bind = SUPER , d         , exec , $myDMScript/dm-master     # dm-master
bind =       , k         , exec , $myDMScript/dm-keys       # dm-keys
bind =       , n         , exec , $myDMScript/dm-notify     # dm-notify
bind =       , p         , exec , $myDMScript/dm-player     # dm-player
bind =       , r         , exec , $myDMScript/dm-record     # dm-record
bind =       , s         , exec , $myDMScript/dm-screenshot # dm-screenshot
bind =       , t         , exec , $myDMScript/dm-theme      # dm-theme
bind =       , w         , exec , $myDMScript/dm-wallpaper  # dm-wallpaper
bind =       , z         , exec , $myDMScript/dm-power      # dm-power

bindr =       , catchall  , exec , $myHyprScript/reset-submap.sh
bind  =       , backslash , exec , $myHyprScript/reset-submap.sh
bind  =       , b         , exec , $myHyprScript/reset-submap.sh
bind  = SUPER , d         , exec , $myHyprScript/reset-submap.sh
bind  =       , k         , exec , $myHyprScript/reset-submap.sh
bind  =       , n         , exec , $myHyprScript/reset-submap.sh
bind  =       , p         , exec , $myHyprScript/reset-submap.sh
bind  =       , r         , exec , $myHyprScript/reset-submap.sh
bind  =       , s         , exec , $myHyprScript/reset-submap.sh
bind  =       , t         , exec , $myHyprScript/reset-submap.sh
bind  =       , w         , exec , $myHyprScript/reset-submap.sh
bind  =       , z         , exec , $myHyprScript/reset-submap.sh

submap = reset

bind = SUPER , o , exec   , $myEwwScript/which-key.sh open
bind = SUPER , o , submap , open

submap = open
bind =       , c , exec   , $myColorPicker                                                                              # color picker
bind =       , d , exec   , $myHyprScript/toggle-special-workspace.sh "chats" $myDiscordClass $myDiscord                # toggle chats
bind =       , e , exec   , $myEmail                                                                                    # email client
bind =       , g , exec   , $myEwwScript/which-key.sh games open
bind =       , g , submap , games                                                                                       # +games
bind =       , i , exec   , vimiv $XDG_PICTURES_DIR                                                                     # image viewer
bind =       , m , exec   , $myCliMusic                                                                                 # music player
bind = SHIFT , M , exec   , [workspace 5 silent] $myCliMusic                                                            # music player on default workspace
bind =       , t , exec   , $myTorBrowser                                                                               # tor browser
bind =       , w , exec   , $myHyprScript/toggle-special-workspace.sh "chats" "whatsapp-for-linux" "whatsapp-for-linux" # toggle whatsapp

bindr =       , catchall , exec , $myHyprScript/reset-submap.sh
bind  =       , c        , exec , $myHyprScript/reset-submap.sh
bind  =       , d        , exec , $myHyprScript/reset-submap.sh
bind  =       , e        , exec , $myHyprScript/reset-submap.sh
bind  =       , i        , exec , $myHyprScript/reset-submap.sh
bind  =       , m        , exec , $myHyprScript/reset-submap.sh
bind  = SHIFT , M        , exec , $myHyprScript/reset-submap.sh
bind  =       , t        , exec , $myHyprScript/reset-submap.sh
bind  =       , v        , exec , $myHyprScript/reset-submap.sh
bind  =       , w        , exec , $myHyprScript/reset-submap.sh

submap = reset

submap = games
bind = , d , exec , gzdoom       # gzdoom
bind = , f , exec , fheroes2     # fheroes homm
bind = , g , exec , gamehub      # gamehub
bind = , h , exec , heroic       # heroic
bind = , l , exec , lutris       # lutris
bind = , s , exec , $mySteam     # steam
bind = , v , exec , vcmilauncher # vcmi homm launcher

bindr = , catchall  , exec   , $myHyprScript/reset-submap.sh
bind  = , backspace , exec   , $myEwwScript/which-key.sh open
bind  = , backspace , submap , open
bind  = , d         , exec   , $myHyprScript/reset-submap.sh
bind  = , f         , exec   , $myHyprScript/reset-submap.sh
bind  = , g         , exec   , $myHyprScript/reset-submap.sh
bind  = , h         , exec   , $myHyprScript/reset-submap.sh
bind  = , l         , exec   , $myHyprScript/reset-submap.sh
bind  = , s         , exec   , $myHyprScript/reset-submap.sh
bind  = , v         , exec   , $myHyprScript/reset-submap.sh

submap = reset

bind = SUPER , p , exec   , $myEwwScript/which-key.sh pass
bind = SUPER , p , submap , pass

submap = pass
bind = , c , exec , wofi-pass --squash # copy field
bind = , p , exec , wofi-pass --squash --type # fill field
bind = , a , exec , wofi-pass --squash --type --autotype # autofill password

bindr = , catchall , exec , $myHyprScript/reset-submap.sh
bind  = , c        , exec , $myHyprScript/reset-submap.sh
bind  = , p        , exec , $myHyprScript/reset-submap.sh
bind  = , a        , exec , $myHyprScript/reset-submap.sh

submap = reset

bind = SUPER , s , exec   , $myEwwScript/which-key.sh scratchpad
bind = SUPER , s , submap , scratchpad
#                                                            | workspace  | class                            | command
submap = scratchpad
bind = , a , exec , $myHyprScript/toggle-special-workspace.sh "anki"        "anki"                             "anki"                                  # anki
bind = , c , exec , $myHyprScript/toggle-special-workspace.sh "calculator"  "org.gnome.Calculator"             "gnome-calculator"                      # calculator
bind = , d , exec , $myHyprScript/toggle-special-workspace.sh "chats"       $myDiscordClass                    $myDiscord                              # discord
bind = , e , exec , $myHyprScript/toggle-special-workspace.sh "email"       $myEmailClass                      $myEmail                                # email client
bind = , m , exec , $myHyprScript/toggle-special-workspace.sh "music"       "sp-music"                         "alacritty --class sp-music -e ncmpcpp" # music player
bind = , t , exec , $myHyprScript/toggle-special-workspace.sh "torrent"     "com.transmissionbt.transmission"  "transmission-gtk"                      # torrent
bind = , v , exec , $myHyprScript/toggle-special-workspace.sh "vm"          "virt-manager"                     "virt-manager"                          # vm
bind = , w , exec , $myHyprScript/toggle-special-workspace.sh "chats"       "whatsapp-for-linux"               "whatsapp-for-linux"                    # whatsapp

bindr = , catchall , exec , $myHyprScript/reset-submap.sh
bind  = , a        , exec , $myHyprScript/reset-submap.sh
bind  = , c        , exec , $myHyprScript/reset-submap.sh
bind  = , d        , exec , $myHyprScript/reset-submap.sh
bind  = , e        , exec , $myHyprScript/reset-submap.sh
bind  = , m        , exec , $myHyprScript/reset-submap.sh
bind  = , t        , exec , $myHyprScript/reset-submap.sh
bind  = , v        , exec , $myHyprScript/reset-submap.sh
bind  = , w        , exec , $myHyprScript/reset-submap.sh

submap = reset

bind = SUPER , t , exec   , $myEwwScript/which-key.sh toggle
bind = SUPER , t , submap , toggle

submap = toggle
bind = , b , exec   , $myHyprScript/toggle-borders.sh $borders                                                # window borders
bind = , c , exec   , $myHyprScript/toggle-corners.sh $corners                                                # corners
bind = , g , exec   , $myHyprScript/toggle-gaps.sh $gaps_inner                                                # gaps
bind = , p , exec   , $myEwwScript/which-key.sh panels toggle
bind = , p , submap , panels                                                                                  # +panels
bind = , q , exec   , $myEwwScript/which-key.sh quick-settings toggle
bind = , q , submap , quick-settings                                                                          # +quick-settings
bind = , s , exec   , $myHyprScript/toggle-status-bar.sh                                                      # status bar
bind = , z , exec   , $myHyprScript/toggle-zen.sh $borders $corners $gaps_inner                               # zen mode

bindr = , catchall , exec , $myHyprScript/reset-submap.sh
bind  = , b        , exec , $myHyprScript/reset-submap.sh
bind  = , c        , exec , $myHyprScript/reset-submap.sh
bind  = , g        , exec , $myHyprScript/reset-submap.sh
bind  = , s        , exec , $myHyprScript/reset-submap.sh
bind  = , z        , exec , $myHyprScript/reset-submap.sh

submap = reset

submap = panels
bind =       , m , exec , $myEwwScript/toggle-window.sh -m $($myScript/get-current-monitor.sh id) $panel-monitor  # monitor panel
bind = SHIFT , M , exec , $myEwwScript/toggle-window.sh -m 1 $panel-monitor                                       # monitor panel on secondary monitor
bind =       , q , exec , $myEwwScript/toggle-window.sh -m $($myScript/get-current-monitor.sh id) $quick-settings # quick-settings panel
bind = SHIFT , Q , exec , $myEwwScript/toggle-window.sh -m 1 $quick-settings                                      # quick-settings panel on secondary monitor

bindr =       , catchall  , exec   , $myHyprScript/reset-submap.sh
bind  =       , backspace , exec   , $myEwwScript/which-key.sh toggle
bind  =       , backspace , submap , toggle
bind  =       , m         , exec   , $myHyprScript/reset-submap.sh
bind  = SHIFT , M         , exec   , $myHyprScript/reset-submap.sh
bind  =       , q         , exec   , $myHyprScript/reset-submap.sh
bind  = SHIFT , Q         , exec   , $myHyprScript/reset-submap.sh

submap = reset

submap = quick-settings
bind = , b , exec , $myScript/btctl.sh toggle           # bluetooth
bind = , e , exec , $myScript/netctl.sh toggle ethernet # ethernet
bind = , h , exec , $myScript/toggle-headphones.sh      # bluetooth headphones
bind = , s , exec , $myScript/toggle-speakers.sh        # bluetooth speakers
bind = , v , exec , $myScript/vpnctl.sh toggle          # vpn
bind = , w , exec , $myScript/netctl.sh toggle wifi     # wi-fi

bindr = , catchall  , exec   , $myHyprScript/reset-submap.sh
bind  = , backspace , exec   , $myEwwScript/which-key.sh toggle
bind  = , backspace , submap , toggle
bind  = , b         , exec   , $myHyprScript/reset-submap.sh
bind  = , e         , exec   , $myHyprScript/reset-submap.sh
bind  = , h         , exec   , $myHyprScript/reset-submap.sh
bind  = , s         , exec   , $myHyprScript/reset-submap.sh
bind  = , v         , exec   , $myHyprScript/reset-submap.sh
bind  = , w         , exec   , $myHyprScript/reset-submap.sh

submap = reset

bind = SUPER , z , exec   , $myEwwScript/which-key.sh dm-power
bind = SUPER , z , submap , dm-power

submap = dm-power
bind =       , c , exec , $myDMScript/dm-power controller # disconnect all controllers
bind =       , l , exec , $myDMScript/dm-power lock       # lock screen
bind =       , p , exec , $myDMScript/dm-power poweroff   # shutdown system
bind =       , r , exec , $myDMScript/dm-power reboot     # reboot system
bind =       , s , exec , $myDMScript/dm-power suspend    # suspend system
bind =       , z , exec , $myDMScript/dm-power suspend    # suspend system
bind = SUPER , z , exec , $myDMScript/dm-power suspend    # suspend system

bindr =       , catchall , exec , $myHyprScript/reset-submap.sh
bind  =       , c        , exec , $myHyprScript/reset-submap.sh
bind  =       , l        , exec , $myHyprScript/reset-submap.sh
bind  =       , p        , exec , $myHyprScript/reset-submap.sh
bind  =       , r        , exec , $myHyprScript/reset-submap.sh
bind  =       , s        , exec , $myHyprScript/reset-submap.sh
bind  =       , z        , exec , $myHyprScript/reset-submap.sh
bind  = SUPER , z        , exec , $myHyprScript/reset-submap.sh

submap = reset

bind = CTRL ALT , o , exec   , $myEwwScript/which-key.sh app-secondary
bind = CTRL ALT , o , submap , app-secondary

submap = app-secondary
bind = , e , exec , $myFiles        # gui file manager
bind = , g , exec , $myImgEditor    # image editor
bind = , p , exec , $myPhotoLibrary # photo library
bind = , r , exec , $myVctEditor    # vector image editor
bind = , v , exec , $myVidEditor    # video editor

bindr = , catchall , exec , $myHyprScript/reset-submap.sh
bind  = , e        , exec , $myHyprScript/reset-submap.sh
bind  = , g        , exec , $myHyprScript/reset-submap.sh
bind  = , p        , exec , $myHyprScript/reset-submap.sh
bind  = , r        , exec , $myHyprScript/reset-submap.sh
bind  = , v        , exec , $myHyprScript/reset-submap.sh

submap = reset

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

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

debug {
    overlay = false                # print the debug performance overlay. Disable VFR for accurate results.	bool	false
    # damage_blink = false         # (epilepsy warning!) flash areas updated with damage tracking	bool	false
    disable_logs = true            # disable logging to a file	bool	true
    # disable_time = true          # disables time logging	bool	true
    # damage_tracking = 2          # redraw only the needed bits of the display. Do not change. (default: full - 2) monitor - 1, none - 0	int	2
    # enable_stdout_logs = false   # enables logging to stdout	bool	false
    manual_crash = 0               # set to 1 and then back to 0 to crash Hyprland.	int	0
    # suppress_errors = false      # if true, do not display config file parsing errors.	bool	false
    # watchdog_timeout = 5         # sets the timeout in seconds for watchdog to abort processing of a signal of the main thread. Set to 0 to disable.	int	5
    # disable_scale_checks = false # disables verifying of the scale factors. Will result in pixel alignment and rounding errors.	bool	false
    # error_limit = 5              # limits the number of displayed config file parsing errors.	int	5
}


Config File: /home/artem/.config/hypr/themes/base16.conf: Read Succeeded
# base16
# Scheme name: Gruvbox dark, medium
# Scheme author: Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox)
# Template author: Artem Smaznov

$base00 = 282828
$base01 = 3c3836
$base02 = 504945
$base03 = 665c54
$base04 = bdae93
$base05 = d5c4a1
$base06 = ebdbb2
$base07 = fbf1c7
$base08 = fb4934
$base09 = fe8019
$base0A = fabd2f
$base0B = b8bb26
$base0C = 8ec07c
$base0D = 83a598
$base0E = d3869b
$base0F = d65d0e
======Config-End========

Description

Even with all mouse-cursor-focus related variables disabled, hyprland still uses the mouse to switch focus in some situations.
One of these is when switching from Hyprlock overlay back to Hyprland. I don't have any ideas why it decides to switch focus.
I am sure I've seen similar behavior in other situation but cannot name any atm.

How to reproduce

  1. have all mouse focus variables disabled in the config
  2. open 2 windows side by side
  3. have the left window focused
  4. move the mouse cursor over the right window (left window stays focused as mouse focus is disabled)
  5. trigger hyprlock from a key binding
  6. authenticate on hyprlock or have it close on keypress during the grace period

Focus should stay on the left window.

But instead window under cursor gets focused every time (when hyprlock closes you can still see focus on the correct window for a moment until it switches in front of your eyes). The behavior is the same if you swap focus and mouse cursor confirming that it is indeed the window under cursor that gets focused rather than the first window on workspace or any other rule.

Crash reports, logs, images, videos

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingstaleNot much going on

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions