My weather widget uses the Adobe AIR v2.6 runtime. When I right-click on its titlebar in Xfce v4.8.x and choose "Always on Visible Workspace", it's actually moved to the fourth and final workspace (WS4) by mistake.
I know this behaviour isn't caused by my application or by Adobe AIR itself, because KDE v4.7.4 can pin it on all workspaces without any problems. For your convenience, I'll attach a blank AIR application here soon.
Created attachment 4081
A blank Adobe AIR application
Note: http://get.adobe.com/air/ gives "Adobe AIR for Linux is no longer supported"
The archive package won't even install here, "An error has occured" then kthxbye.
Why do I have that feeling that I should close this as "wontfix"...
Would it be possible for you to provide a simpler reproducer (preferably in C, C++, Perl or Python in source form) which does not require to install a deprecated unsupported proprietary tool that won't install?
I have doubts that this problem would be reproducible using another language. I get the feeling that it's specific to Xfwm's mishandling of Adobe AIR (Flash) applications in this way.
I'll show you how to get Adobe AIR v2.6 going on your Linux distribution instead. You just need to download and copy the code that's contained within the tarballs on these AUR webpages:
Adobe AIR may not be 'supported' on Linux anymore, but plenty of applications out there still use it. Since KDE and Gnome (v3.2) can both pin my widget on all workspaces, Xfce should too!
(In reply to comment #5)
> I have doubts that this problem would be reproducible using another language.
> I get the feeling that it's specific to Xfwm's mishandling of Adobe AIR (Flash)
> applications in this way.
There's in a flaw in that logic, "it works with GNOME/KDE" does not necessarily imply it's a bug in Xfce, actually, it is is not. The bug is in Adobe AIR.
The freedesktop standard states for _NET_WM_DESKTOP property  that:
"Cardinal to determine the desktop the window is in (or wants to be) starting with 0 for the first desktop. A Client MAY choose not to set this property, in which case the Window Manager SHOULD place it as it wishes. 0xFFFFFFFF indicates that the window SHOULD appear on all desktops."
Xfwm4 being compliant with this standard, when you select "always on visible workspace" it does set the property _NET_WM_DESKTOP to 0xFFFFFFFF as per the specification, but the application (Adobe AIR in this case) replies with a client message with the value 0xFF in return, which basically means put this window on desktop 255, while actually there are only 4 desktops.
The behavior in this case is entirely dependent on the implementation, because the requested value of 255 is not within the number of existing desktops.
Metacity/mutter (GNOME window managers) and presumably kwin will simply ignore the request and leave the window on the workspace it's currently on.
In that case, you effectively see no effect, but if you try to move to another workspace, the window is not sticky as you would expect.
If you run metacity with log enabled, you clearly see it in the logs:
Window manager: Request to move 0xe00003 (Blank) to workspace 255
Xfwm4 behaves differently and will assume that the window meant to be on the last workspace, but that's not a bug in xfwm4, it's definitely a bug in Adobe AIR's broken implementation on Linux.
I could change the way xfwm4 reacts when a wrong desktop number is requested, but that's just hiding the problem in the application while the bug is not in xfce.
You should report that to Adobe, but oh wait, Adobe does not support Linux anymore and actually never supported Xfce. Oops too bad, sorry...
> I'll show you how to get Adobe AIR v2.6 going on your Linux distribution
> instead. You just need to download and copy the code that's contained within
> the tarballs on these AUR webpages:
> * http://aur.archlinux.org/packages.php?ID=16940
> * http://aur.archlinux.org/packages.php?ID=25633
Note that I do not use Arch Linux at all, so these instructions are of no help for me at all.
I cannot say I am thrilled to install on one of my systems an unsupported, unmaintained piece of proprietary code which is clearly badly implemented... But once done, it shows the problem is with that proprietary software.
> Adobe AIR may not be 'supported' on Linux anymore, but plenty of applications
> out there still use it. Since KDE and Gnome (v3.2) can both pin my widget on
> all workspaces, Xfce should too!
See my full explanation as to why this is not a bug in Xfce but in Adobe AIR.
Thanks very much for figuring out the problem and providing me with a detailed explanation. You're right that we'd have Buckley's chance of convincing Adobe to fix an AIR bug in Linux these days.
Alternatively, I think it'd be a good idea for Xfwm to copy Gnome's and KDE's handling of this incorrect (OxFF) case. If the reply is larger than the number of desktops, pin it to all of them.
I think Adobe was just trying to be efficient, realising that nobody in his right mind would ever need anywhere near 256 workspaces. I think Xfce should work-around legacy cases like this one.
(In reply to comment #7)
> Thanks very much for figuring out the problem and providing me with a detailed
> explanation. You're right that we'd have Buckley's chance of convincing Adobe
> to fix an AIR bug in Linux these days.
> Alternatively, I think it'd be a good idea for Xfwm to copy Gnome's and KDE's
> handling of this incorrect (OxFF) case. If the reply is larger than the number
> of desktops, pin it to all of them.
No, that would be breaking the "standard". But I do have a patch to make it work (but that will fail for users with more than 256 workspaces... Thanksfully, chances to have such a user using Adobe AIR are nil I think)
> I think Adobe was just trying to be efficient, realising that nobody in his
> right mind would ever need anywhere near 256 workspaces. I think Xfce should
> work-around legacy cases like this one.
Oh no, that's definitely not the coders trying to be smart, that's really a plain ugly bug in their code IMHO.
Anyway, I'll put a workaround in place.
Thanks for agreeing to work-around this Adobe AIR bug in the Xfwm code. Keep up the excellent work with Xfce. It's the only desktop environment I've needed to use on my laptops over the last few years.
For what it's worth, I didn't actually want to use Adobe Flash/AIR. The problem was that I didn't have a choice, as my weather widget was originally designed for the Flash-only chumby: http://www.chumby.com/
I decided later that I wanted it to run on my computers as well. Rather than reinventing the wheel - by converting the widget to Java or something similar - I simply wrapped the Flash movie in an AIR package.