How to make a bindsym on sway only work if a window is xwayland

Communist@lemmy.ml to Linux@lemmy.ml – 33 points –

I'm trying to improve the clipboard sync situation, i've realized that if I can make it so that a bindsym only applies when an xwayland window is in focus, I can basically do

bindsym --release Control+c exec "xclip -o | wl-copy"

And it'll automatically sync the clipboard... however, I can't find a way to make the bindsym only run on xwayland windows, as, if this runs on a wayland window, it'll just overwrite the wayland clipboard with the last xwayland clipboard.

I've discovered you can match all xwayland windows with "swaymsg [shell='xwayland']" but I can't figure out how to make a bindsym only work if that is in focus

edit: I figured out the following:

bindsym --release Control+c exec swaymsg -t get_tree | jq '.. | select(.type?) | select(.focused==true) | .shell' | grep -Eq 'xwayland' && xclip -o | wl-copy

^^ that SHOULD WORK in theory, but it doesn't, because xclip outputs what it remembers as soon as the command starts, and as a result, the string gets messed up... I cannot figure out for the life of me why running "xclip -o | wl-copy" fixes it but not that. please help.

bindsym --release Control+c exec swaymsg -t get_tree | jq '.. | select(.type?) | select(.focused==true) | .shell' | grep -Eq 'xwayland' && [xclip -o | wl-copy]

^^does not fix it, unfortunately

here's an issue tracker: https://github.com/swaywm/sway/issues/7958

6

You are viewing a single comment

I'm just guessing, but you can try brackets around xclip -o | wl-copy in the long command.

HOLY SHIT IT WORKS

WHY DOES THAT WORK?

I googled what the brackets do but I still don't understand why that fixes it, but it does. Thank you so much. You cannot imagine how much annoyance this issue has caused me over the years.

edit: SCRATCH THAT

I've found a situation where xclip -o outputs the correct thing, but wl-paste is outputting something different and incorrect, even if I run my bindsym

xclip -o | wl-copy would fix this, if i ran it from alacritty, however, sway isn't doing it right.

Sigh.

1 more...