Adrian Luca ( metal696heart )'s picture

Looking for a clean webmin theme and finding those available as looking new for the year 1999, i took the default stressfree theme and tuned it up a bit.

Here are some screenshots.


'To install the theme, unpack it to /usr/share/webmin or /usr/share/webmin-*current_version . then go to $hostname/webmin/edit_themes.cgi to select it.

I will update this theme from time to time (at least the icons), so if you have any sugestions feel free to express them. Should work on any 'decent new' browser but if you find someting let me know or fix it.

The icons are taken from the Gnome colors project and theyr (Carbonite) addon.

Link 1

Link 2 (simple)

*05.09.2012 - Small update. Adapted some links to use $ENV{'SERVER_NAME'}; instead of $hostname, for external DNS use (FreeDNS for example)

For those who could not install the template you can try now again, even with webmin theme installer form.

The problem seemed to be the config file which got corrupted by no apparent reason.

*01.10.2012 - Also, here is a variant without the top shortcuts (shell, db, home, virtual servers)

*17.12.2012 - Changed / updated alternative download links.
*20.01.2013 - Virtual Servers links should be enabled only if virtualmin is enabled and available. Check.

*23.08.2013 - Added a mirror of this page and updated alternative download links.

Adrian Luca ( metal696heart )'s picture

What is the distribution that you use?

Adrian Luca ( metal696heart )'s picture

Try installing again.

Adrian Luca ( metal696heart )'s picture

Fixed the link also.

Adrian Luca ( metal696heart )'s picture

Those links can be found in at around line 307.

As for the sidebar ? can  you make a list ?

Adrian Luca ( metal696heart )'s picture

Updated the links for downloads, thanks for reminding.

Adrian Luca ( metal696heart )'s picture

I use it with a minimal Webmin configuration, custom menus and reassigned menus.. Default webmin comes with a lot of stuff many of us dont ever use. For me for example this is a feature, not a bug.

But i will take your comment seriously, and you will be able to set your max-height of menus in the config file of the theme.

Adrian Luca ( metal696heart )'s picture

'' can you __?__ the theme again or send it via e-mail? ''
You mean upload it ? It is attached to the post, but here you go.
It can be customised also,

Jeremy Davis's picture

I have been watching this thread for sometime and I really like what I see, both the theme itself, but also Adrian's dedication to it (via updates and support here in this thread).

So I have just lodged a feature request to have this set as the default Webmin theme...

What do others think?

Adrian Luca ( metal696heart )'s picture

Hello Jeremy, Alon already came with this sugestion in january. He asked about licence (wich is GPL or whatever is needed) and maintenance. I sent him this:

As for the maintenance, we (me, you or anybody else) can deal with it. I will bring some improvements and bugfixes as i use it on my own servers. anyway. But you should understand that i am not an advanced perl developer so i cannot guarantee security or new features.

I think my reply made him think twice before taking this decision (to make this theme the default).

He also asked for a git project wich i will bring in soon.

Jeremy Davis's picture

That's great that this has already been discussed... The ball is already rolling! :)

Personally I don't think the fact that you cannot guarantee security or new features is a big deal. It's open source all over - or more to the point it's programming all over, but less of an issue with open source because the code is out in the open. As Eric Raymond says (Linus' Law): "given enough eyeballs, all bugs are shallow". I think if your code were to be published somewhere that makes it easiliy accessable (such as GitHub) then you will get plenty of others looking over it.

And both Alon and Liraz are well versed in Perl (although I don't think either of them like it very much...) so they themselves would potentially be able to assist in that regard anyway...

I'll speak with Alon about it further...

Adrian Luca ( metal696heart )'s picture

At least what i use (60% of webmin including virtualmin).

Adrian Luca ( metal696heart )'s picture

//edit .... sorry, i wanted to give you a hint but, that is core webmin, is not part of the theme. You change it and it will be available until next update.

Line 47 in index.cgi of webmin core.

// edit You can find some dynamic code in my theme in at line 324 .

Adrian Luca ( metal696heart )'s picture

There is a default favicon.ico in the theme directory *images*. Try replacing that.

You can buld an ico here

Adrian Luca ( metal696heart )'s picture

Webmin 1.660 on my servers and it is ok. How did you install webmin ? Manually or deb ?

Adrian Luca ( metal696heart )'s picture line 846, css property:

background: url($logo) center 12px no-repeat;

where $logo is defined at line 775 .

Change the filenames / paths to fit your needs.

Adrian Luca ( metal696heart )'s picture

But on your cloned modules side.

For example by cloning your module you also cloned the info of the module.

desc=Disk Quotas

Go to your webmin path (usr/share/webmin) and search for your cloned modules, then edit the info file of each module by changing the name / desc / category parameters. (REMEMBER TO BACKUP FIRST)

Then refresh your modules list at server.url/webmin/index.cgi (on the bottom of the page).

Access your modules and check if changes have taken into effect.

Adrian Luca ( metal696heart )'s picture

"you don't get additional files. You just get a symlink"

Make a copy of the module and edit it.

snickers2k's picture

and an amazing thing would be to display the CPU and memory graph from "Historic System Statis"-Module (RRDTool) inside the sidebar.. or is this even possible?

Jeremy Davis's picture

I can't speak to a lot of your post. But "The DB Admin (port 12322) and Shell (port 12320) doesn't seem to go anywhere. Am I supposed to install some other modules?" is something I could have a stab at! :)

This theme is designed to run on Turnkey Linux and TKL servers all have Webshell (aka Shell-in-a-Box) preinstalled and configured to be available on port 12320. Most of the TKL appliances also include a DB which (where available - depends on the DB in question) have a DB web admin UI (e.g. phpMyAdmin for MySQL, phpPgAdmin for PostgreSql, etc) which is preconfigured to be available on port 12322.

So if you want to make use of these links then you will need to install the relevant software and configure it to listen on the relevant port. Alternatively you could just install TKL and have a go with that. Out of interest, it is built on Debian (Wheezy in the current build) and has quite a bit of useful software preinstalled (e.g. Webmin plus what is mentioned above). The only thing that might trip you up if you do have a go with TKL is that Webmin is configured to listen on port 12321 (rather than the default 10000).

Jeremy Davis's picture

TBH I've never used Bitnami but from my understanding yes they are somewhat similar. I think the approaches are a bit different but ultimately trying to address similar issues.

Adrian Luca ( metal696heart )'s picture

It spits out a table with 25% width.

A fast hack would be to float the elements and overwrite all with css.

table.icons_table td, table#mods td



Jeremy Davis's picture

I'm not sure if Adrian is still about. It's been quite some time since he posted, so I'm not even sure if he's maintaining this theme.

If he is, hopefully he'll post back soon.

Even if he isn't, as it's open source, you could always see if you could find a perl expert to fix it. If that happens, please let us know as then we can provide a link to the updated code for others who may be interested. Often good freelancers will give discounts for open source projects which will be publicly and freely distributed.

Adrian Luca ( metal696heart )'s picture

It seems there is a bug in webmin .

I saw a bug report addressing this some days ago but i cannot find it again.

The problem is some mixed code no being escaped js in perl. However, a quickfix:

in at line 1702, replace this block:

return <<EOF;
<style type='text/css'>
.opener_shown {display:inline}
.opener_hidden {display:none}
<script type='text/javascript'>
// Open or close a hidden section
function hidden_opener(divid, openerid)
var divobj = document.getElementById(divid);
var openerobj = document.getElementById(openerid);
if (divobj.className == 'opener_shown') {
  divobj.className = 'opener_hidden';
  openerobj.innerHTML = '<img border=0 src=$imgdir/closed.gif>';
else {
  divobj.className = 'opener_shown';
  openerobj.innerHTML = '<img border=0 src=$imgdir/open.gif>';

// Show a tab
function select_tab(name, tabname, form)
var tabnames = document[name+'_tabnames'];
var tabtitles = document[name+'_tabtitles'];
for(var i=0; i<tabnames.length; i++) {
  var tabobj = document.getElementById('tab_'+tabnames[i]);
  var divobj = document.getElementById('div_'+tabnames[i]);
  var title = tabtitles[i];
  if (tabnames[i] == tabname) {
    // Selected table
    tabobj.innerHTML = '<table cellpadding="0" cellspacing="0"><tr>'+
           '<td valign=top $jscb>'+
           '<img src="$imgdir/lc2.gif" alt=""></td>'+
           '<td $jscb nowrap>'+
                 '<td valign=top $jscb>'+
           '<img src="$imgdir/rc2.gif" alt=""></td>'+
    divobj.className = 'opener_shown';
  else {
    // Non-selected tab
    tabobj.innerHTML = '<table cellpadding="0" cellspacing="0"><tr>'+
           '<td valign="top" $jstb>'+
           '<img src="$imgdir/lc1.gif" alt=""></td>'+
           '<td $jstb nowrap>'+
                       '&nbsp;<a href=\\'\\' onClick=\\'return select_tab("'+
           name+'", "'+tabnames[i]+'")\\'>'+title+'</a>&nbsp;</td>'+
           '<td valign="top" $jstb>'+
               '<img src="$imgdir/rc1.gif" alt=""></td>'+
    divobj.className = 'opener_hidden';
if (document.forms[0] && document.forms[0][name]) {
  document.forms[0][name].value = tabname;
return false;

Add new comment