-
webmin.css is deprecated in this theme and will be going away completely. theme.css will be the bits of css we need in addition to what bootstrap provides. We’re trying to not set colors/fonts and other stylistic elements in our css, since the Bootstrap theme overlays wouldn’t look right anymore if we were doing significant styling in our theme.css. So, try to use bootstrap classes for anything stylistic. If that’s not possible, we’ll need to probably come up with some way to add sass to the toolchain to autogenerate all of the overlays, as well (which I’d rather not do).
-
Yes, all of the Webmin JavaScript needs to be killed off. Can’t be killed in Webmin core, until themes all support not having it there. Which means, Webmin 2.0, and for now, we have to modify it in the theme.pl.
-
Yes, a new menu style is the way to go…just adding the top menu items into one big menu, maybe.
-
right.cgi is the system status page (the first page you see in the right css pane when loading up Webmin/Virtualmin), left.cgi is the left-hand menu (which includes code for Webmin, Virtualmin, Cloudmin, and Usermin menus…though the latter two are probably completely broken right now, as I haven’t been testing them; my focus is on getting everything for Virtualmin working, then Cloudmin, then the rest of Webmin, and finally Usermin), and theme.pl is the ui overlay functions.
theme.pl is the most interesting of them, probably. When a UI element is on the screen anywhere in Webmin/Virtualmin, there is a ui_ function called to create the HTML for it. So, a bunch of tabular data in MySQL module would call one of the ui_table functions. If there is a theme_ui_table overlay function available, it’ll be called instead of the standard Webmin ui-lib.pl function.
It’s worth mentioning that there’s 15+ years of old code in there, from several different layers of UI customizability in there (from before CSS existed, even), and from a lot of odd little detours Jamie (and me, later, when I started helping with the look and feel of Webmin) has taken over the years to achieve a variety of things (like highlighted rows, sortable tables, various colors of type for various purposes, etc.).
In many cases, when we talk about things that need to be changed “in Webmin” it is often actually possible to change it in theme.pl, which is almost always easy and quick (and, if you’re not familiar with Perl, I can always help with that part…I’m much better with Perl than JavaScript). But, then again, there are a number of things in Webmin that aren’t using ui_ functions…and those things have to be updated to use ui_ functions, or they simply won’t be something we can do much with, and can’t cover effectively with the new theme. This is the hard/long work that Jamie has been working on, and it sounds like pcfreak30 is now also working on (but I haven’t looked at his branch yet to see how that’s coming along). There will be other areas that need similar large efforts to convert…I just don’t know exactly what they are yet. Tables probably are gonna be a real bear, in the same sort of way as links.
I mentioned Webmin 2.0 above, so I’ll explain what that is (aside from “the next major revision of Webmin”). Jamie has never broken backward compatibility with modules or themes in Webmin in any significant way in its entire history. That means there’s a lot of weird stuff in there. It’s extremely modular, but there’s still some technical debt when having so much complexity in the repo. Webmin 2.0 will allow compatibility to break. It won’t be an intentional breakage, but the reality is there’s a lot of stuff that needs to go away and be re-factored to move forward at a good clip on a better user interface. So, that’s where we’re going. Webmin 2.0 will only promise compatibility with core modules, core themes, Virtualmin, and Cloudmin…all the other modules and themes out there will need to be updated (in small ways, probably). Security patches will be maintained in Webmin 1.x for a time after 2.0 is released. (And there will be a few months of 2.0 devel releases before a production version is released.)