When moving workspace to another monitor `workspace, previous_per_monitor` does not work
Regression?
No
System Info and Version
System/Version info
Hyprland, built from branch at commit eddef4afded63a6ae5dfd7f1c3652e8cdc331002 ().
Date: 2024-06-26
Tag: , commits: eddef4afded63a6ae5dfd7f1c3652e8cdc331002
flags: (if any)
System Information:
System name: Linux
Node name: inspiron-laptop
Release: 6.9.6
Version: #1-NixOS SMP PREEMPT_DYNAMIC Fri Jun 21 12:40:40 UTC 2024
GPU information:
0000:00:02.0 VGA compatible controller [0300]: Intel Corporation TigerLake-LP GT2 [Iris Xe Graphics] [8086:9a49] (rev 01) (prog-if 00 [VGA controller])
os-release: ANSI_COLOR="1;34"
BUG_REPORT_URL="https://github.com/NixOS/nixpkgs/issues"
BUILD_ID="24.11.20240624.2893f56"
DOCUMENTATION_URL="https://nixos.org/learn.html"
HOME_URL="https://nixos.org/"
ID=nixos
IMAGE_ID=""
IMAGE_VERSION=""
LOGO="nix-snowflake"
NAME=NixOS
PRETTY_NAME="NixOS 24.11 (Vicuna)"
SUPPORT_URL="https://nixos.org/community.html"
VERSION="24.11 (Vicuna)"
VERSION_CODENAME=vicuna
VERSION_ID="24.11"
plugins:
hyprexpo by Vaxry ver 1.0
======Config-Start======
Config File: /home/leon/.config/hypr/hyprland.conf: Read Succeeded
exec-once = /nix/store/y29cbwfiwb9nyi4db4apk9dgylzdjm1v-dbus-1.14.10/bin/dbus-update-activation-environment --systemd --all && systemctl --user stop hyprland-session.target && systemctl --user start hyprland-session.target
plugin=/nix/store/qig51v1023yqiicmpdagg1qqr43d9rdx-hyprexpo-0.1/lib/libhyprexpo.so
$mainMod=SUPER
bezier=linear, 0, 0, 1, 1
source=./monitors.conf
source=./workspaces.conf
source=./monitors.conf
source=./workspaces.conf
binds {
allow_workspace_cycles=true
}
decoration {
blur {
ignore_opacity=true
passes=4
popups=true
size=4
special=true
}
rounding=5
}
device {
name=cust0000:00-04f3:2a4a-stylus
output=eDP-1
}
dwindle {
force_split=2
preserve_split=true
pseudotile=true
}
general {
border_size=2
col.active_border=rgba(33ccffff) rgba(00ff99ff) 45deg
col.inactive_border=rgba(444444aa)
gaps_in=3
gaps_out=3
layout=master
resize_on_border=true
}
gestures {
workspace_swipe=true
workspace_swipe_forever=true
}
group {
groupbar {
col.active=rgba(6600ccee)
col.inactive=rgba(6600cc99)
}
col.border_active=rgba(8800ffff) rgba(aa0055ff) 45deg
col.border_inactive=rgba(444444aa)
}
input {
touchpad {
drag_lock=true
natural_scroll=true
}
kb_layout=de
numlock_by_default=true
}
misc {
animate_manual_resizes=true
animate_mouse_windowdragging=true
focus_on_activate=true
force_default_wallpaper=0
initial_workspace_tracking=false
new_window_takes_over_fullscreen=2
}
plugin {
hyprexpo {
bg_col=rgb(111111)
columns=3
enable_gesture=true
gap_size=5
gesture_distance=300
gesture_positive=false
workspace_method=first 1
}
}
animation=specialWorkspace, 1, 5, default, slidefadevert
animation=borderangle, 1, 40, linear, loop
animation=layers, 1, 5, default, popin
bind=$mainMod, B, togglespecialworkspace, btop
bind=$mainMod, H, togglespecialworkspace, htop
bind=$mainMod, S, togglespecialworkspace, spotify
bind=$mainMod, T, togglespecialworkspace, terminal
bind=ALT, F4 , killactive,
bind=$mainMod, F, togglefloating,
bind=$mainMod, G, togglegroup
bind=$mainMod, M, fullscreen,
bind=$mainMod, E, exec, dolphin
bind=, XF86Calculator , exec, qalculate-qt
bind=$mainMod + SHIFT, left, movewindoworgroup, l
bind=$mainMod + SHIFT, right, movewindoworgroup, r
bind=$mainMod + SHIFT, up, movewindoworgroup, u
bind=$mainMod + SHIFT, down, movewindoworgroup, d
bind=$mainMod + CTRL, left, movecurrentworkspacetomonitor, l
bind=$mainMod + CTRL, right, movecurrentworkspacetomonitor, r
bind=$mainMod + CTRL, up, movecurrentworkspacetomonitor, u
bind=$mainMod + CTRL, down, movecurrentworkspacetomonitor, d
bind=$mainMod, RETURN, layoutmsg, swapwithmaster
bind=$mainMod + SHIFT, RETURN, layoutmsg, addmaster
bind=$mainMod + SHIFT + CTRL, RETURN, layoutmsg, removemaster
bind=ALT, Tab, cyclenext,
bind=ALT + CTRL, Tab, changegroupactive
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, Tab, workspace, previous_per_monitor
bind=$mainMod SHIFT, 1, movetoworkspacesilent, 1
bind=$mainMod SHIFT, 2, movetoworkspacesilent, 2
bind=$mainMod SHIFT, 3, movetoworkspacesilent, 3
bind=$mainMod SHIFT, 4, movetoworkspacesilent, 4
bind=$mainMod SHIFT, 5, movetoworkspacesilent, 5
bind=$mainMod SHIFT, 6, movetoworkspacesilent, 6
bind=$mainMod SHIFT, 7, movetoworkspacesilent, 7
bind=$mainMod SHIFT, 8, movetoworkspacesilent, 8
bind=$mainMod SHIFT, 9, movetoworkspacesilent, 9
bind=$mainMod SHIFT, 0, movetoworkspacesilent, 10
bind=$mainMod, mouse_down, workspace, e+1
bind=$mainMod, mouse_up, workspace, e-1
bind=CTRL + ALT, B, exec, ~/scripts/launch_waybar.sh
bind=CTRL + ALT, W, exec, ~/scripts/wallpaper/update_wallpaper.sh
bind=$mainMod, N, exec, swaync-client -t -sw
bind=CTRL + ALT, S, exec, wl-paste | swappy -f -
bind=, Print, exec, grimblast --notify --freeze copy area
bind=$mainMod, P, exec, nwg-displays
bind=$mainMod, W, hyprexpo:expo, toggle
bind=$mainMod, V, exec, cliphist list | rofi -dmenu -theme /nix/store/r5gfsxb7srsncmxd996bh39ag8h64qcl-spotlight-dark.rasi | cliphist decode | wl-copy && wtype -M ctrl v -m ctrl
bind=CTRL + ALT, T, exec, alacritty
binde=$mainMod, left, resizeactive, -30 0
binde=$mainMod, right, resizeactive, 30 0
binde=$mainMod, up, resizeactive, 0 -30
binde=$mainMod, down, resizeactive, 0 30
bindl=, XF86AudioMute, exec, swayosd-client --output-volume mute-toggle
bindl=, XF86AudioPlay, exec, playerctl play-pause
bindl=, XF86AudioStop, exec, playerctl stop
bindl=, XF86AudioPrev, exec, playerctl previous
bindl=, XF86AudioNext, exec, playerctl next
bindl=CTRL, left, exec, playerctl previous
bindl=CTRL, right, exec, playerctl next
bindle=, XF86AudioRaiseVolume, exec, pamixer --unmute; swayosd-client --output-volume raise
bindle=, XF86MonBrightnessUp, exec, swayosd-client --brightness raise
bindle=, XF86MonBrightnessDown, exec, swayosd-client --brightness lower
bindle=, XF86AudioLowerVolume, exec, pamixer --unmute; swayosd-client --output-volume lower
bindm=$mainMod, mouse:272, movewindow
bindm=$mainMod, mouse:273, resizewindow
bindr=$mainMod, $mainMod_L, exec, pkill --exact tofi-drun || tofi-drun --drun-launch=true
bindr=$mainMod, L, exec, /nix/store/h53bah665mn9zvn5wfqznbvpfzawr1j1-hyprlock.sh
env=XCURSOR_SIZE, 12
env=QT_QPA_PLATFORMTHEME, qt5ct
env=XCURSOR_THEME, breeze_cursors
env=XCURSOR_SIZE, 24
exec-once=sleep 5 && nextcloud --background
exec-once=sleep 5 && ~/scripts/hibernate_on_low_battery.sh
exec-once=sleep 5 && ~/scripts/restart_failed_systemd_user_services.sh
exec-once=~/scripts/launch_waybar.sh
exec-once=sleep 1 && swww init
exec-once=sleep 2 && swww img --transition-type grow ~/scripts/wallpaper/wallpaper.jpg
exec-once=swaync
exec-once=rm ~/.cache/tofi-drun
exec-once=/nix/store/qjfzpww5g3zahmb8gx3d5nm13irc81hd-polkit-kde-agent-1-5.27.11/libexec/polkit-kde-authentication-agent-1
exec-once=wl-paste --type text --watch cliphist store
exec-once=wl-paste --type image --watch cliphist store
layerrule=blur, waybar
layerrule=blurpopups, waybar
layerrule=ignorealpha 0.1, waybar
layerrule=blur, swaync-control-center
layerrule=blur, swaync-notification-window
layerrule=ignorezero, swaync-control-center
layerrule=ignorezero, swaync-notification-window
layerrule=animation popin 90%, swaync-control-center
layerrule=animation popin, swaync-notification-window
layerrule=noanim, hyprpicker
layerrule=noanim, selection
layerrule=blur, launcher
layerrule=animation slide, launcher
layerrule=blur, swayosd
layerrule=ignorezero, swayosd
layerrule=animation slide, rofi
layerrule=blur, rofi
monitor=, preferred, auto, 1
windowrulev2=float, class:^(org.kde.polkit-kde-authentication-agent-1)$
windowrulev2=tile, class:^(DesktopEditors)$
windowrulev2=tag +vscode, class:^(code-url-handler)$
windowrulev2=tag +vscode, class:^(codium-url-handler)$
windowrulev2=opacity 0.85, tag:vscode
windowrulev2=opacity 1.00, tag:vscode, title:.pdf
windowrulev2=workspace 1, tag:vscode
windowrulev2=workspace 5, class:^(firefox)$
windowrulev2=tag +social, class:^(org.telegram.desktop)$
windowrulev2=tag +social, class:^(signal)$
windowrulev2=tag +social, class:^(Slack)$
windowrulev2=tag +social, class:^(thunderbird)$
windowrulev2=tag +social, class:^(WebCord)$
windowrulev2=tag +social, class:^(whatsapp-for-linux)$
windowrulev2=workspace 9, tag:social
windowrulev2=noblur, class:^(org.kde.kdeconnect.daemon)$
windowrulev2=noborder, class:^(org.kde.kdeconnect.daemon)$
windowrulev2=noshadow, class:^(org.kde.kdeconnect.daemon)$
windowrulev2=noanim, class:^(org.kde.kdeconnect.daemon)$
windowrulev2=nofocus, class:^(org.kde.kdeconnect.daemon)$
windowrulev2=suppressevent fullscreen, class:^(org.kde.kdeconnect.daemon)$
windowrulev2=float, class:^(org.kde.kdeconnect.daemon)$
windowrulev2=move 0 0, class:^(org.kde.kdeconnect.daemon)$
windowrulev2=size 100% 100%, class:^(org.kde.kdeconnect.daemon)$
windowrulev2=noblur, onworkspace:special:hyprlock
workspace=2, on-created-empty:dolphin
workspace=5, on-created-empty:firefox
workspace=special:btop, on-created-empty:[fullscreen] alacritty -e btop
workspace=special:htop, border:false, on-created-empty:[float; size 100% 35%; move 0% 65%] alacritty -e htop
workspace=special:spotify, on-created-empty:[fullscreen] spotify
workspace=special:terminal, on-created-empty:[fullscreen] alacritty
workspace=name:hyprlock, monitor:eDP-1
workspace=name:hyprlock, decorate:false
workspace=name:hyprlock, border:false
workspace=name:hyprlock, shadow:false
workspace=special:hyprlock, monitor:eDP-1
workspace=special:hyprlock, decorate:false
workspace=special:hyprlock, border:false
workspace=special:hyprlock, shadow:false
Config File: /home/leon/.config/hypr/monitors.conf: Read Succeeded
# Generated by myKanshiPlus (2024-06-27 10:02:51.287034). Do not edit manually.
monitor = desc:Dell Inc. DELL P2412H TTMDG2AQ15EU, preferred, 0x0, 1
monitor = desc:LG Display 0x0637, preferred, 3600x0, 1
monitor = desc:LG Electronics E2210 205NDMT1D051, preferred, 1920x0, 1
Config File: /home/leon/.config/hypr/workspaces.conf: Read Succeeded
# Generated by myKanshiPlus (2024-06-27 10:02:51.287133). Do not edit manually.
workspace = 1, monitor:desc:Dell Inc. DELL P2412H TTMDG2AQ15EU, default:true
workspace = 10, monitor:desc:LG Display 0x0637, default:true
workspace = 2, monitor:desc:LG Electronics E2210 205NDMT1D051, default:true
Config File: /home/leon/.config/hypr/monitors.conf: Read Succeeded
# Generated by myKanshiPlus (2024-06-27 10:02:51.287034). Do not edit manually.
monitor = desc:Dell Inc. DELL P2412H TTMDG2AQ15EU, preferred, 0x0, 1
monitor = desc:LG Display 0x0637, preferred, 3600x0, 1
monitor = desc:LG Electronics E2210 205NDMT1D051, preferred, 1920x0, 1
Config File: /home/leon/.config/hypr/workspaces.conf: Read Succeeded
# Generated by myKanshiPlus (2024-06-27 10:02:51.287133). Do not edit manually.
workspace = 1, monitor:desc:Dell Inc. DELL P2412H TTMDG2AQ15EU, default:true
workspace = 10, monitor:desc:LG Display 0x0637, default:true
workspace = 2, monitor:desc:LG Electronics E2210 205NDMT1D051, default:true
======Config-End========
Description
In a specific use case the dispatcher workspace, previous_per_monitor does not switch to the previous monitor (see how to reproduce).
First mentioned in https://github.com/hyprwm/Hyprland/issues/6641
How to reproduce
- go to monitor 1 and open a workspace with an app on it (lets say ws number 1)
- go to monitor 2 and open a workspace with an app on it (lets say ws number 2)
- use dispatcher
movecurrentworkspacetomonitorto move ws 2 to monitor 1 - on ws 2 the dispatcher
workspace, previous_per_monitorwill not change to ws 1 even though that's the previous ws on that monitor
Crash reports, logs, images, videos
@Truenya
@leon-erd can u check please? https://github.com/hyprwm/Hyprland/pull/6688
Will check tmr :)
Does not fix the issue unfortunately :( I just saw that it got merged in the meantime. Maybe its a good idea to mark the MR as draft initially
maybe, but it can fix situation, when
-
go to monitor 2 and open a workspace with an app on it (lets say ws number 2) -
go to monitor 1 and open a workspace with an app on it (lets say ws number 1) -
go back to monitor 2 -
use dispatcher movecurrentworkspacetomonitor to move ws 2 to monitor 1 -
on ws 2 the dispatcher workspace, previous_per_monitor will change to ws 1
first problem was more about all workspace:previous logic, not just about previous_per_monitor
at the moment I have no plans to fix or optimize the existing logic, I'm just enjoying implementing some new features (and, ofc, taking responsibility for them)
maybe, but it can fix situation, when
1. ``` go to monitor 2 and open a workspace with an app on it (lets say ws number 2) ``` 2. ``` go to monitor 1 and open a workspace with an app on it (lets say ws number 1) ``` 3. ``` go back to monitor 2 ``` 4. ``` use dispatcher movecurrentworkspacetomonitor to move ws 2 to monitor 1 ``` 5. ``` on ws 2 the dispatcher workspace, previous_per_monitor will change to ws 1 ```first problem was more about all
workspace:previouslogic, not just aboutprevious_per_monitor
I just tried it and it does not work. Step 5 will not change to ws 1 but stay on ws 2
finally done
https://github.com/hyprwm/Hyprland/pull/9010