Skip navigation.

How to make an Opera skin

To be able to create a skin, you need a few software tools. Here are some examples:

Archive
WinZip (Windows), FilZip (Windows), StuffIt (all platforms), more...

Info icon Note! Some systems have an archive tool included, like Windows XP which opens ZIP-files in Explorer by default. To edit the skin, the files still needs to be unzipped.

Image editor
The GIMP (all platforms), Paint Shop Pro (Windows)
Text editor
Included with the system.
Online resources
Opera 7 Skin specifications, Opera Skin editor

Let's get started

Folder view of the skin Start off by copying Opera's default skin. (It's recommended to upgrade to the newest version of Opera before copying the skin, to make sure you use the newest skin version.) Open the skin directory in the Opera program folder, typically:
c:\Program Files\Opera75\skin\
For Opera for MacOS X, the skin is saved within the package (Ctrl-click the Opera package, select "Show package contents", then go to Contents > Resources > Skin)

Open the file "standard_skin.zip" using an archive tool, and extract all the files to a new folder, say "My skin". The subfolders does contain images for the skin, while "skin.ini" contains settings and links to the images.

Editing the skin

Windows Notepad with skin.ini openedInfo iconIf you want to use the same sized images/same settings as in the default skin, there is no need to edit "skin.ini".

Open the file "skin.ini" in a text-editor, for example Notepad (Windows), Kate (Linux) or TextEdit (Mac). The file is formatted like this:

[Section]
Setting = Setting Value

; A commented line

Basic settings in "skin.ini"

The [Info] section is normally placed first and should contain the following:

Name=name of skin
Author=name of author
Version=2

Version should be 2, otherwise Opera 7 will reject the skin.



The [Options] section can contain the following:

Native Skin = 0 or 1

Native skin Only set this to 1 if you want Opera to draw controls to look nativly (to the system). Default is 0, so you would normally leave this option out. To be more specific, if you set this to 1, like the "native" skin included with Opera does, certain skin elements will be drawn by code that is built into Opera. This code uses the system's own functions for drawing controls and borders.

Pagebar max button width =
Pagebar min button width =

Use these to specify in pixels the min and max width of pagebar buttons. Normally, you would not specify this, so leave them out.

Fallback foreground = 0 or 1
Fallback background = 0 or 1

These options specify if Opera should fall back to the standard skin if a skin element of either foreground or background type was not found.

Typically Fallback foreground should be 1 and Fallback background should be 0. In other words that foreground elements like button images that the new skin does not have are fetched from standard, but that background images are not fetched (the look of the windows etc).

This is based on the assumption that most skins will not bother to replace all foreground images of a full skin, but will at least change all of the background.

Large Images = 0 or 1

Used to define whether large images are present in the skin or not. If set to 1, a checkbox "Large images" will appear in the Customize toolbars dialog.

Image/element settings in "skin.ini"

Let's start off with an example:

[Menu Button Skin]
Padding Left = 5
Padding Right = 5

[Menu Button Skin.hover]
Text Color = #ffffff
Color = #6B82A4

[Menu Button Skin.selected]
Clone = Menu Button Skin.hover

The Padding settings sets the padding length in pixels. Menu Button Skin.hover inherits settings from Menu Button Skin, but changes the buttons text-color and background-color when the skin element is hovered. Colors can be written in RGB colors (for example "#RRGGBB") or using the colors set by the user (for example "Window Disabled").

Padding can also be defined for each single button/element, instead of defining it for all the elements within a section:

Sort descending = icons/dropdown.png, 0, 2, 0, 2, 0

The formatting is like this:
Name of element = filename, colorize the element (yes=1, no=0), margin left, margin top, margin right, margin bottom

Example 2

[Edit Skin]
Type = BoxTile
Margin Left = 3
Margin Top = 3
Margin Bottom = 1
Margin Right = 3
Color = Window
Tile Left = edit/left.png
Tile Top = edit/top.png
Tile Right = edit/right.png
Tile Bottom = edit/bottom.png
Corner Topleft = edit/topleft.png
Corner Topright = edit/topright.png
Corner Bottomright = edit/bottomright.png
Corner Bottomleft = edit/bottomleft.png

[Edit Skin.disabled]
Clone = Edit Skin
Color = Window Disabled

The Type setting defines what type of element this is. Here, we are displaying a tile image for a box/square. Clone makes Edit Skin.disabled inherit the settings and images, but changes the Color.

Code overview

Type = Image | Box | BoxTile (Default is Image)
Margin * = Pixels (number)
Height = Pixels (number)
Width = Pixels (number)
Color = #RRGGBB | Window | Window Disabled
Text Color = #RRGGBB | Window | Window Disabled
Tile * = Path to image
Corner * = Path to image
Name of element = Path to image
Name of element = Path to image, 1 | 0 (colorize : yes/no), Pixels (number),
Pixels (number), Pixels (number), Pixels (number)
Blend = Percent (number 0-100)
Clone = Link to element
Child* = Link to element
Actions = .hover | .pressed | .selected | .attention | .disabled | .bottom | .open
Positions = .top | .bottom | .left | .right

For detailed descriptions, see the Skin specifications

For further examples, take a look in "skin.ini".

Getting started drawing images

The Gimp - drawing an image

Info iconWe are using the free image editor "The Gimp" in this example.

The easiest image to draw, is probably the background image. In the standard skin, it's saved as "/window/background.jpeg" inside the skin. What we are doing, is simply to replace this image.

Create a new image, apply a pattern or draw a background, and save over the old "background.jpeg" image. The image can also use another image format, such as GIF or PNG - but you will have to change the path to it in "skin.ini".

Next, let's start drawing the most common buttons. In the standard skin, these are saved in the "buttons" folder. Start with "back.png". Create a new image (if you are using the same "skin.ini", you should probably get the dimentions of the old "back.png" image first), preferably with a transparent background.

The Gimp - drawing an image

When working with this very small image, you will sometimes have to draw the image pixel for pixel. It's recommended to zoom the image to 1000-1600%.

Now, go through all the images in the folders and replace them. If you find images that you don't know what is used for, just leave them as they are.

Info iconTip: What format? While GIF-images has only one transparent color, PNG-images can have several grades of transparacy. This means that when using PNG, you can for example create "smooth shadows".

Making the skin ready for Opera

When the skin is ready for use, you need to create a zip archive containing all skin data. The "skin.ini" file needs to be in "top level" of the skin (path should be blank or "/"). Make sure to save the file paths for all files.

The Gimp - drawing an image

The skin can be published at
My Opera Community (requires login)
deviantART

Tip for Web developers! If you want to add the skin to your own homepage/Web server, and you want Opera to automatically install the skin - you can define zip-files in a catalog to have the mime-type application/x-opera-configuration-skin. If you are using an Apache Webserver, which is one of the worlds most common, you can simply add a file ".htaccess" in the directory where you put the skins, with the following line:

AddType application/x-opera-configuration-skin zip

blogs, photos, friends. join my opera

Browse skins by color

Skin categories

Downloading Skins

Skin tutorial

Upload a skin