History of IconStyles

Comparing versions
Version 3Current version
bitweaver has always had th eoption of using your own icons by overriding existing ones. This has just been overhauled in R2 - our icon styles are now compatible with Gnome and KDE icon themes!

Using the IconStyles

IconStyles can be viewed and chosen on the Admin --> Themes --> Themes Manager page. A selection of icons is shown that you can select your favourite theme easily.
As soon as you add a new icon style, it should appear on the Themes Manager ready for selection.


A screenshot of the administration area where you can pick an icon style

Where can i get more IconStyles?

We don't have a repository for this yet. Hopefully soon though.

Adding new IconStyles

It's quite easy to add new IconStyles thanks to the fact that we try to stick to the official Icon Naming Specification. Since the Tango Desktop Project is tightly associated with the icon naming specification we chose this theme as the bitweaver default.

Where are Icon Styles?

You can find icon styles in your themes directory. The structure of an icon style is outlined below.

IconStyles Directory


<?php
// base IconStyles directory
themes/icon_styles/<style>/

// substructure of the icon style
themes/icon_styles/<style>/small/
themes/icon_styles/<style>/large/
themes/icon_styles/<style>/style_info/
?>


1. Get new Icon Theme

You can get more icon themes from here - Please note that most of these themes don't adhere to the naming convention yet and will therefore probably not work with bitweaver. If you find new themes that adhere to naming specifications please let us know.

2. Make the icon style compatible with bitweaver

There are 3 types of icon themes:
  1. Themes that have a full set of various icon sizes
  2. Themes that come as SVG icons only
  3. Themes that come as a mixture where the PNG icon versions are used to give a nicer version of a given icon at it's size

1. Full icon set themes

These icon themes are the easiest to convert.

Typical icon theme directory structure


<?php
// List of directories within the theme
16x16
22x22
32x32
48x48
64x64
128x128
scalable

// every size has a similar set of subdirectories
16x16/actions
16x16
/apps
16x16
/categories
16x16
/devices
16x16
/emblems
16x16
/mimetypes
16x16
/places
16x16
/status
?>

We now need to move all the icons of a given size to a directory called small. Do the same for some other size and large. In bitweaver we are using 16x16 as small and 32x32 for large icons. Finally we copy the files into an appropriately named directory in bitweaver icon_themes.

In the example below we will create a style called foo.

Execute this to move all icons to the appropriate directories


#!/bin/bash
mkdir -p foo/small foo/large
cp 16x16/*/*.png foo/small/
cp 32x32/*/*.png foo/large/
mv foo /bitweaver/themes/icon_styles/


2. SVG icon set themes

These icon themes contain only SVG icon files. If you are on windows I have no idea how to convert these icons using a batch process (perhaps irfanview can deal with SVG files). On linux you will need rsvg installed (you need to install librsvg if you don't have it).
In your downloaded icon theme you can execute something like this:

Convert SVG icon theme to bitweaver compatible icon theme


#!/bin/bash
echo Will convert an SVG Gnome or KDE icon theme to a usable bitweaver icon theme
echo

# Validate Input
if [[ ( $1 == '--help' ) || ( $1 == '-h' ) || ( $1 == '?' ) ]]
then
    echo "Usage: sh icon_theme_converter.sh [options]
    This script requires that rsvg is available (i.e.: librsvg is installed)."
    exit
fi

if [ rsvg ]
then
    echo "'rsvg' was found in your \$PATH."
else
    echo "rsvg could not be found in your \$PATH. Please download and install librsvg."
    exit
fi

dir=scalable

if [ -d "$dir" ]
then
    for folder in `find ./$dir/ -maxdepth 1 -type d`; do
        folder=`basename $folder`
        if [ "$folder" != $dir ]; then
            echo "Converting $folder icons"
            for icon in ./$dir/$folder/*.svg; do
                basename=${icon%.*};
                basename=`basename $basename`;

                mkdir -p "./small/"
                rsvg -w16 -h16 $icon "./small/${basename}.png";

                mkdir -p "./large/"
                rsvg -w32 -h32 $icon "./large/${basename}.png";
            done;
        fi;
    done

    echo
    echo "Conversion is done. Now you need to create an icon style directory, move small/
    and large/ into it and place that in the bitweaver/themes/icon_styles/ directory."

else
    echo "Please copy this script to the theme you want to convert and run it from there.
    Make sure the svg directory is avalable and that it's called 'scalable'"
fi


3. SVG mixed with PNG icon set themes

You can use the SVG script above and then copy across all PNG icons overwriting the freshly converted icons with the PNG versions - basically combining both scripts:

Combining both scripts for mixed icon themes


#!/bin/bash
echo Will convert an SVG Gnome or KDE icon theme to a usable bitweaver icon theme
echo

# Validate Input
if [[ ( $1 == '--help' ) || ( $1 == '-h' ) || ( $1 == '?' ) ]]
then
    echo "Usage: sh icon_theme_converter.sh [options]
    This script requires that rsvg is available (i.e.: librsvg is installed)."
    exit
fi

if [ rsvg ]
then
    echo "'rsvg' was found in your \$PATH."
else
    echo "rsvg could not be found in your \$PATH. Please download and install librsvg."
    exit
fi

dir=scalable

if [ -d "$dir" ]
then
    for folder in `find ./$dir/ -maxdepth 1 -type d`; do
        folder=`basename $folder`
        if [ "$folder" != $dir ]; then
            echo "Converting $folder icons"
            for icon in ./$dir/$folder/*.svg; do
                basename=${icon%.*};
                basename=`basename $basename`;

                mkdir -p "./small/"
                rsvg -w16 -h16 $icon "./small/${basename}.png";

                mkdir -p "./large/"
                rsvg -w32 -h32 $icon "./large/${basename}.png";
            done;
        fi;
    done

    cp -f 16x16/*/*.png ./small/
    cp -f 32x32/*/*.png ./large/

    echo
    echo "Conversion is done. Now you need to create an icon style directory, move small/
    and large/ into it and place that in the bitweaver/themes/icon_styles/ directory."

else
    echo "Please copy this script to the theme you want to convert and run it from there.
    Make sure the svg directory is avalable and that it's called 'scalable'"
fi


Add style information

The style_info directory works exactly the same as it does in the theme styles directories. Please look at existing ones to see what is going on in there.

Override a couple of icons

The Tango icon theme is our default icon theme. This means that any icon that isn't found in your selected icon style will be searched for in the Tango theme. If you want to override a couple of icons, you can simply create your custom icon style in themes/icon_styles/ and then place your icons in the small and large subdirectories using the same names as in the Tango theme. Finally select your icon style in the Themes Manager page.
If you want to change the default icon style - we don't have an interface for this - you need to edit the define() in kernel/setup_inc.php

kernel/setup_inc.php


<?php
// Change this line to your preferred default style
define'DEFAULT_ICON_STYLE''tango' );
?>


Overriding icons that are not found in the icon style

Some packages still require their own icons as the icon themes only provide a certain set of icons which are not always sufficient. You can override these in using the icons directory.
e.g.: To override the busy icon in liberty/icons/ place the busy icon you want to use (must have either gif, png or jpg extension) in themes/styles/<style>/icons/liberty/
</style>
 
Bitweaver's Icon Styles are compatible with Gnome and KDE icon themes. Icon Styles can be viewed and chosen on the Admin > Themes > Themes Manager page. Icons Styles are presented for you to select from:



About Icon Styles

Icon Styles added by the admin appear on the Themes Manager page. See icon research as a starting point for a new Icon Style. It's quite easy to add new Icon Styles thanks to the fact that Bitweaver sticks to the official Icon Naming Specification. Since the Tango Desktop Project is tightly associated with the icon naming specification we chose their theme Tango as bitweaver's default. The available Icon Styles reside in the themes directory:

IconStyles Directory


<?php
// base IconStyles directory
themes/icon_styles/somestyle/

// substructure of the icon style
themes/icon_styles/somestyle/small/
themes/icon_styles/somestyle/large/
themes/icon_styles/somestyle/style_info/
?>


Overriding or adding specific icons

To use icons that are not part of an Icon Style, or to override icons that are, use the icons directory in your custom style. E.g., to override the "busy" icon in liberty/icons/ place the new "busy" icon in themes/styles/yourstyle/icons/liberty/ (must have either gif, png or jpg extension).

Getting new icon themes

Icon themes that don't adhere to the naming convention will probably not work with Bitweaver. Themes that do adhere to the naming specifications can be found on sites like:

Making the icon theme compatible with Bitweaver

There are 3 types of icon themes:
  1. themes that have a full set of various icon sizes
  2. themes that come as SVG icons only
  3. themes that come as a mixture where the PNG icon is a nicer version of a given icon

1. Full icon set themes

These icon themes are the easiest to convert.

Typical icon theme directory structure


<?php
// List of directories within the theme
16x16
22x22
32x32
48x48
64x64
128x128
scalable

// every size has a similar set of subdirectories
16x16/actions
16x16
/apps
16x16
/categories
16x16
/devices
16x16
/emblems
16x16
/mimetypes
16x16
/places
16x16
/status
?>

We now need to move all the icons of a given size to directories called small and large. Bitweaver uses 16x16 px for small and 32x32 px for large icons. Finally we copy the files into an appropriately named directory in bitweaver icon_themes.

In the example below we will create a style called foo.

Execute this to move all icons to the appropriate directories


#!/bin/bash
mkdir -p foo/small foo/large
cp -f 16x16/*/*.png foo/small/
cp -f 32x32/*/*.png foo/large/
mv foo /bitweaver/themes/icon_styles/


2. SVG icon set themes

These kinds of icon themes contain SVG icon files and also PNG files for small versions of the icons. On Linux you will need rsvg in your path to execute the following script (librsvg is required).


Addding style information

The style_info directory works exactly the same as it does in the theme styles directories.

Overriding a couple of icons

The Tango icon theme is BitweaveR's default Icon Style. Any icon not found in the currently selected Icon Style will be searched for in the Tango theme. If you want to override a couple of icons, you can simply create your custom Icon Style in /themes/icon_styles/ and then place your icons in the small and large subdirectories using the same names as in the Tango theme. Finally select your icon style in the Themes Manager page. To change the default Icon Style (Tango), edit kernel/setup_inc.php:

kernel/setup_inc.php


<?php
// Change this line to your preferred default style
define'DEFAULT_ICON_STYLE''tango' );
?>


Converting icons to GIF

If you want to avoid using Javascript to make PNG icons work in Microsoft's Internet Explorer, you can use GIF icons instead. On Linux with ImageMagic, you can use this little script to convert all the PNG images to GIFs. (The above script will also create GIF copies of all PNG icons, but if you want to do it manually, here is a code snippet that might help you.)

PNG to GIF conversion script


#!/bin/bash
echo Making gif copies of all png icons
echo The gif version is sent to Microsoft Internet Explorer to avoid transparency issues.
echo
echo Creating directory to hold the final version of the icon style
mkdir -v $mydir
for dir in $dirlist
do
    echo
    echo Making gif copies in $dir/

    filelist=`ls $dir`

    for file in $filelist
    do
        conv=`echo $file | perl -wpe 's/\.png//g'`
        convert $dir/$conv.png -channel A -threshold 50% $dir/$conv.gif 2>>biticonification_error.log;

        # experimentation...
        #convert $dir/$conv.png -channel A -threshold 65% -modulate 120,80,90 -fill "#99AAEE" -tint 50 -verbose $dir/$conv-tint.png 2>>biticonific┬╗
        #convert $dir/$conv.png -modulate 100,100,50 -fill "#AACCFF" -tint 50 -verbose $dir/$conv-tint.png 2>>biticonification_error.log;
        #convert $dir/$conv.png -modulate 100,100,50 -verbose $dir/$conv-tint.png 2>>biticonification_error.log;
    done

    mv $dir $mydir/;
done


Page History
Date/CommentUserIPVersion
07 Sep 2008 (17:19 UTC)
laetzer85.178.9.13415
Current • Source
laetzer85.178.11.15513
View • Compare • Difference • Source
Kozuch85.207.244.16012
View • Compare • Difference • Source
laetzer85.178.26.979
View • Compare • Difference • Source
Unknown194.63.141.2028
View • Compare • Difference • Source
xing194.152.164.457
View • Compare • Difference • Source
xing194.152.164.456
View • Compare • Difference • Source
spiderr69.134.144.35
View • Compare • Difference • Source
xing194.152.164.454
View • Compare • Difference • Source
xing194.152.164.453
View • Compare • Difference • Source
xing194.152.164.452
View • Compare • Difference • Source
xing194.152.164.451
View • Compare • Difference • Source