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
19.51k stars 818 forks source link

Capture shortcut keys in apps like VMWare #6821

Closed Prayag2 closed 1 month ago

Prayag2 commented 1 month ago

Regression?

No

System Info and Version

System/Version info ```sh Hyprland, built from branch main at commit b03f41efec14273cf25c42d4cef326acc36cb319 (xwayland: fix setting title prop (6809)). Date: Mon Jul 8 21:16:42 2024 Tag: v0.41.2-27-gb03f41ef, commits: 4913 flags: (if any) System Information: System name: Linux Node name: prayag-linux Release: 6.9.8-zen1-1-zen Version: #1 ZEN SMP PREEMPT_DYNAMIC Fri, 05 Jul 2024 22:11:01 +0000 GPU information: 01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA107M [GeForce RTX 3050 Mobile] [10de:25a2] (rev a1) (prog-if 00 [VGA controller]) 05:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Rembrandt [Radeon 680M] [1002:1681] (rev c9) (prog-if 00 [VGA controller]) NVRM version: NVIDIA UNIX x86_64 Kernel Module 555.58.02 Tue Jun 25 01: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/prayag/.config/hypr/hyprland.conf: Read Succeeded monitor=eDP-1,1920x1080@120.21,0x0,1.25 monitor=,preferred,auto,1,mirror,eDP-1 # See https://wiki.hyprland.org/Configuring/Keywords/ for more # Execute your favorite apps at launch exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP exec-once = waybar & exec-once = swayosd-server & exec-once = emacs --daemon & exec-once = otd-daemon & # open tablet driver exec-once = wal -R exec-once = cliphist wipe && wl-paste --type text --watch cliphist store & exec-once = wl-paste --type image --watch cliphist store & exec-once = sleep 0 && swww init & exec-once = dunst --daemon & exec-once = hypridle & exec-once = hyprpm reload -n & exec-once = hyprctl setcursor Bibata-Original-Classic 20 exec-once = xsetroot -cursor_name left_ptr & exec-once = "$HOME/.local/bin/update_keyboard_backlight.sh" & exec-once = sleep 2 && xrdb -merge ~/.Xresources exec-once = sleep 5 && ([[ $(cat /sys/class/power_supply/BAT*/status) = "Discharging" ]] && notify-send "Please connect a charger!" -i "battery-empty" -u critical) exec-once = lxsession & # Source a file (multi-file configs) source = ~/.cache/wal/colors-hyprland.conf # Some default env vars. env = XCURSOR_SIZE,20 env = XDG_SESSION_TYPE,wayland env = ELECTRON_OZONE_PLATFORM_HINT,wayland # nvidia #env = DRI_PRIME,pci-0000_01_00_0 #env = __VK_LAYER_NV_optimus,NVIDIA_only #env = __GLX_VENDOR_LIBRARY_NAME,nvidia #env = __NV_PRIME_RENDER_OFFLOAD,1 #env = LIBVA_DRIVER_NAME,nvidia #env = VDPAU_DRIVER,nvidia #env = WLR_NO_HARDWARE_CURSORS,1 # use integrated gpu: env = WLR_DRM_DEVICES,/home/prayag/.config/hypr/nvidia:/home/prayag/.config/hypr/amd # For all categories, see https://wiki.hyprland.org/Configuring/Variables/ input { kb_layout = us kb_variant = kb_model = kb_options = kb_rules = follow_mouse = 1 touchpad { natural_scroll = yes disable_while_typing = yes middle_button_emulation = yes tap-and-drag = yes } sensitivity = 0 # -1.0 - 1.0, 0 means no modification. numlock_by_default = true } plugin { hyprexpo { columns = 3 gap_size = 5 bg_col = rgb(111111) workspace_method = first 1 # [center/first] [workspace] e.g. first 1 or center m+1 enable_gesture = true # laptop touchpad, 4 fingers gesture_distance = 300 # how far is the "max" gesture_positive = false # positive = swipe down. Negative = swipe up. } } xwayland { force_zero_scaling = true } misc { disable_hyprland_logo = true disable_splash_rendering = true enable_swallow = false swallow_regex = ^(Alacritty)$ vfr = false } general { # See https://wiki.hyprland.org/Configuring/Variables/ for more gaps_in = 3 gaps_out = 6 border_size = 2 col.active_border = $color8 col.inactive_border = $color8 layout = dwindle } decoration { # See https://wiki.hyprland.org/Configuring/Variables/ for more rounding = 0 drop_shadow = yes shadow_range = 4 shadow_render_power = 1 col.shadow = rgba(1a1a1a80) active_opacity = 1 inactive_opacity = 0.85 fullscreen_opacity = 1 blur { enabled = yes size = 4 passes = 4 new_optimizations = on ignore_opacity = true noise = 0.1 blurls=waybar blurls=rofi blurls=notifications } } animations { enabled = yes # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more bezier = spring, 0.4, 0, 0.04, 1 bezier = easeOut, 0.17, 0.84, 0.44, 1 animation = windows, 1, 2, easeOut animation = windowsOut, 1, 2, easeOut animation = windowsMove, 1, 2, easeOut animation = border, 1, 10, default animation = borderangle, 1, 8, default animation = fade, 1, 7, default animation = workspaces, 1, 4, easeOut } dwindle { # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below preserve_split = yes # you probably want this } master { # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more #new_is_master = true } gestures { # See https://wiki.hyprland.org/Configuring/Variables/ for more workspace_swipe = on workspace_swipe_fingers = 3 workspace_swipe_cancel_ratio = 0.25 } # Example per-device config # See https://wiki.hyprland.org/Configuring/Keywords/#executing for more device { name = epic-mouse-v1 sensitivity = -0.5 } # Layer Rules layerrule = ignorezero, notifications layerrule = ignorezero, rofi # Wallpaper windowrulev2 = size 100% 100%, title:(^video-wallpaper-mpv-bg$) windowrulev2 = move 0 0, title:(^video-wallpaper-mpv-bg$) windowrulev2 = float, title:(^video-wallpaper-mpv-bg$) windowrulev2 = pin, title:(^video-wallpaper-mpv-bg$) windowrulev2 = noinitialfocus, title:(^video-wallpaper-mpv-bg$) windowrulev2 = nofocus, title:(^video-wallpaper-mpv-bg$) # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more windowrulev2 = suppressevent maximize, class:.* # You'll probably like this. windowrulev2 = noborder, title:(.*is sharing your screen\.$) windowrulev2 = noblur, title:(.*is sharing your screen\.$) windowrulev2 = noshadow, title:(.*is sharing your screen\.$) windowrulev2 = move 30% 100%-70, title:(.*is sharing your screen\.$) # Window Rules windowrule = float, ^(yad)$ windowrule = float, ^(MEGAsync)$ windowrule = float, ^(LibreWolf — Sharing Indicator)$ windowrule = noborder, ^(MEGAsync)$ windowrule = float, title:(Emulator) windowrule = float, title:(KDE Connect Daemon) windowrule = noblur, title:(KDE Connect Daemon) windowrule = noblur, ^(MEGAsync)$ windowrule = noshadow, ^(MEGAsync)$ # Transparency windowrule = opacity 0.85, ^(thunar)$ windowrulev2 = opacity 0.95, initialTitle:^(Visual Studio Code)$ # XWaylandVideoBridge windowrulev2 = opacity 0.0 override 0.0 override,class:^(xwaylandvideobridge)$ windowrulev2 = noanim,class:^(xwaylandvideobridge)$ windowrulev2 = nofocus,class:^(xwaylandvideobridge)$ windowrulev2 = noinitialfocus,class:^(xwaylandvideobridge)$ # See https://wiki.hyprland.org/Configuring/Keywords/ for more $mainMod = SUPER # Other bind = $mainMod CONTROL, F12, exec, $HOME/.local/bin/reload-hyprland.sh bind = $mainMod SHIFT, P, exec, hyprpicker | wl-copy bind = $mainMod, BackSpace, exec, hyprlock & # Applications bind = $mainMod, Return, exec, alacritty bind = $mainMod, W, killactive, bind = $mainMod, E, exec, thunar # Rofi bindings bind = $mainMod, R, exec, rofi -show drun bind = $mainMod, Equal, exec, rofi -modi calc -show calc bind = , XF86Calculator, exec, rofi -modi calc -show calc bind = $mainMod, Period, exec, rofimoji --action copy bind = $mainMod, B, exec, $HOME/.local/bin/bitwarden.sh bind = $mainMod, N, exec, dunstctl action bind = $mainMod, V, exec, cliphist list | rofi -dmenu -p  | cliphist decode | wl-copy bind = $mainMod ALT, V, exec, wtype "$(wl-paste)" # Screenshots bind = ALT SHIFT, S, exec, $HOME/.local/bin/ss-wayland.sh taoc bind = ALT, PRINT, exec, $HOME/.local/bin/ss-wayland.sh toc bind = CONTROL, PRINT, exec, $HOME/.local/bin/ss-wayland.sh bind = $mainMod SHIFT, S, exec, $HOME/.local/bin/ss-wayland.sh aoc bind = $mainMod, PRINT, exec, $HOME/.local/bin/ss-wayland.sh oc # Audio bind = $mainMod, P, exec, playerctl play-pause bind = $mainMod, M, exec, swayosd-client --input-volume mute-toggle bind = , XF86AudioPlay, exec, playerctl play-pause bind = , XF86AudioNext, exec, playerctl next bind = , XF86AudioPrev, exec, playerctl prev #binde = , XF86AudioRaiseVolume, exec, pamixer -i 5 && $HOME/.local/bin/volnotify.sh binde = , XF86AudioRaiseVolume, exec, swayosd-client --output-volume raise binde = , XF86AudioLowerVolume, exec, swayosd-client --output-volume lower binde = SHIFT, XF86AudioRaiseVolume, exec, swayosd-client --input-volume raise binde = SHIFT, XF86AudioLowerVolume, exec, swayosd-client --input-volume lower bind = , XF86AudioMute, exec, swayosd-client --output-volume mute-toggle bind = , XF86AudioMicMute, exec, swayosd-client --input-volume mute-toggle bind = , XF86MonBrightnessDown, exec, swayosd-client --brightness -10 bind = , XF86MonBrightnessUp, exec, swayosd-client --brightness +10 # Tiling bind = $mainMod, T, togglefloating, bind = $mainMod, F, fullscreen, # Move focus with mainMod + arrow keys 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 bind = $mainMod, bracketright, workspace, +1 bind = $mainMod, bracketleft, workspace, -1 # Resizing active window bind = $mainMod ALT, L, resizeactive, 20 0 bind = $mainMod ALT, H, resizeactive, -20 0 bind = $mainMod ALT, K, resizeactive, 0 -20 bind = $mainMod ALT, J, resizeactive, 0 20 # 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, movetoworkspace, 10 bind = $mainMod CONTROL, bracketright, movetoworkspace, +1 bind = $mainMod CONTROL, bracketleft, movetoworkspace, -1 # Scroll through existing workspaces with mainMod + scroll bind = $mainMod, mouse_down, workspace, e+1 bind = $mainMod, mouse_up, workspace, e-1 # Move/resize windows with mainMod + LMB/RMB and dragging bindm = $mainMod, mouse:272, movewindow bindm = $mainMod, mouse:273, resizewindow Config File: /home/prayag/.cache/wal/colors-hyprland.conf: Read Succeeded $background = rgb(2E3440) $color1 = rgb(88C0D0) $color2 = rgb(BF616A) $color3 = rgb(B48EAD) $color4 = rgb(EBCB8B) $color5 = rgb(A3BE8C) $color6 = rgb(D08770) $color7 = rgb(E5E9F0) $color8 = rgb(4C566A) $color9 = rgb(88C0D0) $color10 = rgb(BF616A) $color11 = rgb(B48EAD) $color12 = rgb(EBCB8B) $color13 = rgb(A3BE8C) $color14 = rgb(D08770) $color15 = rgb(8FBCBB) ======Config-End======== ```

Description

In remote desktop apps or virtual machine apps like VMWare Horizon Client, shortcut keys like Win + R are not passed down to the application if their binding exists in the Hyprland config. Is there a way to tell Hyprland to pass down these shortcuts to the application if it's in focus?

I could use this app in an X11 environment like BSPWM but there are several reasons I don't want to switch; for example, the excellent multi-monitor support Hyprland has, gesture support and animations.

How to reproduce

  1. Define a binding for Win + R in your Hyprland config:
    # Just an example binding which launches Rofi
    bind = $mainMod, R, exec, rofi -show drun
  2. Launch a virtual machine (Windows 10/11)
  3. Press Win + R in order to open the "Run" dialog in Windows.
  4. Rofi launches instead of "Run" (which is undesirable)

Crash reports, logs, images, videos

No response

MightyPlaza commented 1 month ago

empty submap

vaxerski commented 1 month ago

vmware should inhibit shortcuts by itself but if it doesnt yea just make an empty submap

submap=sex
bind = SUPER,Escape,submap,reset # to exit the "capture" mode
submap=reset
bind = SUPER SHIFT,P,submap,sex # to enter the "capture" mode