Scrollbar sizes are different on different platforms. But it seems that there are ways to split the Linux users into different buckets based on that: On a Debian Stretch system with XFCE I get 15px thickness on an Ubuntu 14.04 system with GNOME I get 13px thickness.
What about UI elements that can be embedded in web pages (text fields, scroll bars, buttons, etc)? Is it possible to differentiate users based on os-dependent appearance of these elements?
it makes the clientWidth become 1000 as intended (you obviously could also make the scrollbars the same width/height as on Windows, but I think this is a better approach). If something like this is included into standard Tor browser it would minimize segregation and thus allow users to use Tor on Linux/Mac while still appearing as Windows users.
Trac: Cc: arthuredelstein, brade, mcs to arthuredelstein, brade, mcs, concerneduser
Georg, I have been using the solution outlined in https://bugzilla.mozilla.org/show_bug.cgi?id=1397996#c2 for over year, flawlessly. These are the original authors. I don't know about this new one (which looks like a modified version or copy), but the one I've used has a menu item to turn it on/off - so you'd probably need to remove that (I guess).
Georg, I have been using the solution outlined in https://bugzilla.mozilla.org/show_bug.cgi?id=1397996#c2 for over year, flawlessly. These are the original authors. I don't know about this new one (which looks like a modified version or copy), but the one I've used has a menu item to turn it on/off - so you'd probably need to remove that (I guess).
I think what we need to figure out in this ticket first is the approach we want to take to solve this issue. I am not a huge fan of shipping some userChrome.css etc. if we have the option to easily patch the browser ourselves (which we have) as patching seems less complex and error-prone to me and we want to upstream the fix to Firefox anyway. (That way everyone can benefit.) The easiest and sufficient solution might still be to just give a fixed value, say 17px, back for all platforms.
Though seeing how old the issue here and over at mozillas tracker is I would highly suggest to include the userChrome while this is "natively" implemented. I did not know that different GTK themes provide different widths this should be considered a severe fingerprinting issue. This should be resolved as fast as possible. We all want everyone to look the same right?
Another, very easy, way to resolve this is to simply set the env var GTK_THEME=Adwaita since Adwaita is the default GTK theme. Though keep in mind Tor should strive to have every OS display the same clientWidth (ie 1000), meaning this as well should only be a temporary solution.
Added it. I didn't bother to add the os logic yet, but have built detection of zoom (but not factored it to reverse the result - it's not very precise). Anyway, at least the test is there to return the width in tests. Zoom your page and refresh to see what I mean.
Probably tomorrow I will add, if zoom is at 100%, an OS value as well (which isn't really the point, the actual width itself is the entropy)
I think what we need to figure out in this ticket first is the approach we want to take to solve this issue. I am not a huge fan of shipping some userChrome.css etc.
Come ESR78, this solution won't even be available anymore as XBL/XUL is ripped out AFAIK
if we have the option to easily patch the browser ourselves (which we have) as patching seems less complex and error-prone to me and we want to upstream the fix to Firefox anyway. (That way everyone can benefit.) The easiest and sufficient solution might still be to just give a fixed value, say 17px, back for all platforms.
I'd still pump for an overlay (but only code it for desktop I guess) - this way all platforms are the same.
The css file binds the xml file, which in turn runs the js file: which is 90 lines long, including adding a menu option to turn it on and off (which is at least half of it). It isn't much - 30 lines of css (in the js file). I would add tying the color to the theme (light/dark/default), choose our own thickness and transparency. And it works on all scrollbars: in elements (iframes, textareas), horizontal, vertical: and it's never caused me any issues in two years or so.