You are not logged in.
Hi,
One of the features I miss from Mac OS is that when an inactive window is clicked, it's just focused/raised, but the click doesn't affect the underlying application at all. (buttons aren't pressed, the scrollbar won't scroll if clicking in its gutter, links in browsers aren't followed, etc) I find that without it, I have to treat inactive windows carefully to ensure I'm clicking on them to raise them, but not clicking on anything important.
Is this something that's possible to implement in XFCE? Or is it something that's controlled by X11/wayland? I briefly looked into xfmw4's code, and saw that button1Action calls clientSetFocus/clientRaise, but didn't see anything about passing the button event to the application.
I'd be interested in contributing this feature if it's feasible, or even just maintaining my own patches for my own use, but I don't have much of a clue on how to get started. Any pointers would be appreciated. It's a hard topic to google because I don't think there's good terminology for it. I also haven't seen this feature on Windows or any other Linux desktop environments, it's pretty exclusive to Mac OS as far as I can tell.
Thanks!
Last edited by colecf (2024-11-02 06:31:26)
Offline
Two solutions.
1. Just click on empty space in a window. Which is about 95% of most windows.
2. ALT-TAB to cycle through open windows. Stop on the one you want.
Siduction
Debian Sid
Xfce 4.18
Offline
I have learned that KDE plasma actually has this feature, so it should be possible to implement at the desktop environment level:
Added later 6 h 49 min 20 s:
I found a small patch to xfwm4 that appears to do what I want, I'll use it for a while and see if I can find any bugs:
diff --git a/src/events.c b/src/events.c
index 33d67ccf8..0ad711f98 100644
--- a/src/events.c
+++ b/src/events.c
@@ -1039,6 +1039,9 @@ handleButtonPress (DisplayInfo *display_info, XfwmEventButton *event)
{
if (!(c->type & WINDOW_TYPE_DONT_FOCUS))
{
+ if (clientGetFocus() != c) {
+ replay = FALSE;
+ }
clientSetFocus (screen_info, c, event->time, NO_FOCUS_FLAG);
}
if ((screen_info->params->raise_on_click) ||
Offline
[ Generated in 0.007 seconds, 7 queries executed - Memory usage: 523.6 KiB (Peak: 524.26 KiB) ]