Skip to content
This repository has been archived by the owner on Jun 4, 2018. It is now read-only.

Windows compatibility #6

Open
D0ve opened this issue Feb 14, 2014 · 23 comments
Open

Windows compatibility #6

D0ve opened this issue Feb 14, 2014 · 23 comments

Comments

@D0ve
Copy link

D0ve commented Feb 14, 2014

Thank you for so wonderful SM theme!
Would be great to see it working on win systems either!
Could you remove linux dependency in the theme?
...or include windows compatibility, please!

@alice-mkh
Copy link
Owner

Umm, the whole point of the theme is to use (overuse :)) Linux-specific feature: native icons.
moz-icon://stock/gtk-directory?size=dialog
What does it show for you?

@D0ve
Copy link
Author

D0ve commented Feb 16, 2014

it shows nothing unfortunately( - (and the applyed theme shows holes on icons places( )....seems it's because of out of icons...
could you include icons pack to the theme and make it optional in config. extension?
-so could be possible use it in any OSes!

@alice-mkh
Copy link
Owner

Yes, it shows nothing. And that's why the theme is Linux-only. :)
If I include an icon pack, the theme will become useless, as it will be just default with different icons.
Also, which icon pack? This theme will look differently on each computer, because it takes icons from the system.

Additionally, "just" creating an optional icon theme is really difficult. You may have noticed that I have splitted Freedesktop option to a separate theme for 0.3.
If it was possible to define several URLs so that the engine uses the first working one, if would be awesome. But it doesn't, as I know.

@D0ve
Copy link
Author

D0ve commented Feb 16, 2014

I didn't get about splitting a little - what's the difference between the both your themes?

@alice-mkh
Copy link
Owner

One uses stock GTK icons, and another one uses Freedesktop ones.
For example, stock:
moz-icon://stock/gtk-file?size=dialog
and Freedesktop:
moz-icon://stock/text-x-generic?size=dialog
Once again these things are Linux-specific...

@D0ve
Copy link
Author

D0ve commented Feb 16, 2014

and the both icons don't included in the exact themes packs, right?

@alice-mkh
Copy link
Owner

Of course.

@alice-mkh
Copy link
Owner

If you have some Linux computer or virtual machine, do this:
Open Composer on SM with default theme.
Insert this:

    <img alt="fd" title="FD" src="moz-icon://stock/text-x-generic?size=dialog" height="48" width="48">
    <img alt="gtk" title="GTK" src="moz-icon://stock/gtk-file?size=dialog" height="48" width="48">

See yourself.
Edit: Oh, it has got messed up. Wait a bit.
Edit: Fixed.

@D0ve
Copy link
Author

D0ve commented Feb 16, 2014

oh, I see.... since I've started as dos and win user - I didn't know that dependences;)

I always have keeping a wish about an ideal SM theme... since the best of it was dropt and forgotten...
the idea is - one theme with config extension - like yours, and in that config with changing some styles and other settings could it be possible to change\switch to another icons sets. (contained in the current theme pack)
I know at least 3-5 great icons packs in Linux style from droped good SM themes!

@alice-mkh
Copy link
Owner

I would like to make it switch icon sets in the config extensions, but it's pretty hard: places where icons are used are scattered through the theme, and there are lots of them. It's pretty much impossible to implement such an option in a nice way. :(
Once again, if there was a way to detect which icons are available, it would be possible to combine the themes (use FD icon, if it's not available, use stock icon, if it's not available, use built-in icon) and to make a set of fallback icons so that the theme is usable on other OSes.

@alice-mkh
Copy link
Owner

Also, "Linux style" — is it Tango style? Screenshots on AMO show default GNOME (MATE really :D) icon theme, old default Ubuntu theme, new default Ubuntu theme. Every other DE and distro will have its own default icon set, and there are much more custom sets.

@D0ve
Copy link
Author

D0ve commented Feb 16, 2014

Yes, Tango , and there're at least 3 (qite specific D but great) -
Nuvola (http://img73.imageshack.us/img73/2267/20070106cto3.png) original from http://www.icon-king.com/projects/nuvola/ ,
Sirena (http://vectorlinux.osuosl.org/incognu/) ...looking for a pic.... just the theme pack http://distro.ibiblio.org/vectorlinux/incognu/gnu/sirena.jar
and Pinball (http://mozilla-themes.schellen.net/img/pinball-preview-small.png)

It's a pity..... so, it won't possible to theme to contain more then one icon pack inside and switch between them at all? .... may be via using substitution and restart?

@alice-mkh
Copy link
Owner

It is possible, but the code that would properly handle it would be half of the theme size. :)
I don't have enough will to do that, as it's basically another project.
For that I need to split 52 CSS files (every one that uses system icons) to the main file and an icon-only file that the first one would import, and somehow replace those 52 imported files using JS. And after that every change in the theme would require a change in the options addon. It's not worth it, I think. After all, it's MUCH simpler to just modify the theme and rebuild it than to implement any kind of runtime switch.

@alice-mkh
Copy link
Owner

If you want to repackage it, it's not very hard.
I don't directly use moz-icon:// there. Instead, I use %NATIVE-ICON and %CUSTOM-ICON constructions, which get replaced when I package the theme. It's like this to allow me only have one source for two themes.
So, when you run build script, it creates 2 themes, and replaces the constructions like this:
Src:

%STOCK-ICON gtk-find edit-find 16 disabled
%CUSTOM-ICON web-browser 24

GTK:

moz-icon://stock/gtk-find?size=menu&state=disabled
chrome://global/skin/icons/24x24/web-browser.png

FD:

moz-icon://stock/edit-find?size=menu&state=disabled
moz-icon://stock/web-browser?size=toolbar

You can modify the build script so that it will always use chrome://global/skin/icons/. Then, if you get the needed icons, it will work.

However, disabled states would be messed up, because you can't use "state=disabled" with images. I handle it like this:

#namedAnchorButton[disabled="true"],
#hlineButton[disabled="true"],
#tableButton[disabled="true"] {
  opacity: %DISABLED-OPACITY !important;
}

%DISABLED-OPACITY gets replaced with 0.5F on GTK theme, and 1.0F on FD one. However, the icons that are always native (%NATIVE-ICON ones) don't have it, so they will look wrong with images. You will have to add those statements for them.

@alice-mkh
Copy link
Owner

No activity, closing.

@alice-mkh
Copy link
Owner

I have an idea that would totally allow this (along with merging stock GTK and FD flavors back into one, and switching themes on the fly), but it will limit compatibility to 2.28+.
AMO statistics say that old SM versions are used by literally one or two people, so I think I can drop them. After all, they'll just be stuck with an old theme version, so they'll not lose any features.

The idea is replacing all usages of native icons with variables and making several css files containing only those variables, which will then be loaded with JS.
Like that, I can make several layers:

  1. Few base files that contain all used icons. Those would work usable even in non-Unix environments.
  2. Stock GTK "layer". It is meant to be used in combination with one of the above.
  3. Freedesktop "layer". Same as above, excluding GTK one.
    So, it will be like:
    Icon theme: ...
    Native icons: None/GTK/Freedesktop/(Possibly)KDE.
    Like that all the icon usage will be in a single file and easily controlled.

Like this:
Base file:
--icon-go-previous-16: url("chrome://icon-themes/gnome/16x16/go-previous.png");
--icon-go-previous-16-dis: var(--icon-go-previous-16);
--icon-go-previous-24: url("chrome://icon-themes/gnome/24x24/go-previous.png");
--icon-go-previous-24-dis: var(--icon-go-previous-24);
--icon-go-previous-48: url("chrome://icon-themes/gnome/48x48/go-previous.png");
--icon-go-previous-48-dis: var(--icon-go-previous-48);
--icon-go-previous-dis-opacity: .5;

GTK layer:
--icon-go-previous-16: url("moz-icon://stock/gtk-go-back?size=menu");
--icon-go-previous-16-dis: url("moz-icon://stock/gtk-go-back?size=menu&state=disabled");
--icon-go-previous-24: url("moz-icon://stock/gtk-go-back?size=toolbar");
--icon-go-previous-24-dis: url("moz-icon://stock/gtk-go-back?size=toolbar&state=disabled");
--icon-go-previous-48: url("moz-icon://stock/gtk-go-back?size=dialog");
--icon-go-previous-48-dis: url("moz-icon://stock/gtk-go-back?size=dialog&state=disabled");
--icon-go-previous-dis-opacity: 1;

Freedesktop layer:
--icon-go-previous-16: url("moz-icon://stock/go-previous?size=menu");
--icon-go-previous-16-dis: url("moz-icon://stock/go-previous?size=menu&state=disabled");
--icon-go-previous-24: url("moz-icon://stock/go-previous?size=toolbar");
--icon-go-previous-24-dis: url("moz-icon://stock/go-previous?size=toolbar&state=disabled");
--icon-go-previous-48: url("moz-icon://stock/go-previous?size=dialog");
--icon-go-previous-48-dis: url("moz-icon://stock/go-previous?size=dialog&state=disabled");
--icon-go-previous-dis-opacity: 1;

This approach works well, as far as I tested.

@dumol
Copy link

dumol commented Jun 23, 2015

I would add that this theme shouldn't be Linux only. IIRC I had to install it in Linux and then move the profile to the BSD installation I was using at the time to get it working there too. I think all the BSDs could benefit from installing this… And I can confirm it works beatifully in FreeBSD and OpenBSD. Thanks!

@alice-mkh
Copy link
Owner

The platform restriction is entirely addons.mozilla.org thing. There aren't any ways to disable it just for non-GTK SeaMonkey builds, you are only offered by this:
default

@alice-mkh
Copy link
Owner

Of course, if I implement this, I will be able to remove the restriction altogether.

@alice-mkh
Copy link
Owner

Also, you could just download the theme even though it says to be incompatible and then force install it. The theme itself isn't restricted, and that's not even possible, as far as I know.

@dumol
Copy link

dumol commented Jun 23, 2015

Thanks for the tips, I'll keep that in mind.

@alice-mkh
Copy link
Owner

Hmm. Icons are the least problem, is seems. With XP Luna theme it mostly looks acceptable, but in Windows Classic theme it's completely broken.
SeaMonkey Unix skin and GNOMErunner rely mostly on -moz-appearance for widgets. However, Classic does not support it, so toolbars are borderless, toolbar buttons are borderless, menu popups are transparent etc.

@alice-mkh
Copy link
Owner

I've finally merged the slowly developed config-rewrite branch. The icon themes are there, and they'll work on Windows as well. I won't allow Windows platform by default on AMO for now, but the theme itself should work on non-classic themes. On windows classic, it will be a mess because moz-appearance is not supported there, see my previous comment.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

3 participants