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, 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.).
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.)