Current Version: 10.4.0 (2021-6-18)
Available at: https://sourceforge.net/projects/tcl-awthemes/
Includes: awkdark, awlight themes, Scalable awdark, awlight, awwinxpblue, awblack, awbreeze, awbreezedark, awarc, awclearlooks themes when tksvg is present.
Features:
Debian package: https://packages.debian.org/sid/tcl-awthemes
HaO 2023-08-14: bll stopped the development. chw continuous bug-fixing in [L1 ]
bll 2021-6-18: Important for 8.7: (a) If you want (or need) to use the older non-svg themes, you will need to set the ::notksvg variable to true before loading the awthemes package. (b) There is currently a bug with horizontal progress bars introduced in 8.7 ( https://core.tcl-lang.org/tk/info/8bee4b2009d58a93 ). The awthemes package has no way to work around this.
bll 2020-4-12: 'awthemes' started out as a couple of new themes, awdark and awlight. When tksvg came out, I created scalable versions of awdark and awlight. Helper routines are included to set menu colors, text widget colors and listbox widget colors.
The scalability uses the base tk scaling (it doesn't scale the fonts, those should be set to points and scaled by the application), and an additional application level scaling factor can also be set. A new style with a different scaling factor can be created, including scaled widgets and graphics, used simultaneously with the main style.
As of 2020-4-12 version 7.9, the breeze theme by Maximilian Lika has been added as a scalable theme. A couple of new helper routines to change the graphics/focus color and to change the background color have been added.
LicenseTheme licenses:
Theme License Copyright
arc GPLv3 2015 Sergei Golovan
http://chiselapp.com/user/sgolovan/repository/ttk-themes/home
black Tcl 2007-2008 Mats Bengtsson
https://wiki.tcl-lang.org/page/black+ttk+theme
breeze GPLv3 2019 Maximilian Lika
https://github.com/MaxPerl/ttk-Breeze
breeze-dark GPLv3 2020 Bartek Jasicki
https://github.com/thindil/tkBreeze
clearlooks Tcl Regents of the UC, Scriptics, etc.
Based on a GTK theme.
http://chiselapp.com/user/sgolovan/repository/ttk-themes/home
winxpblue Tcl 2004 Pat ThoytsThe awthemes package does not use any code or files from the above packages. The look and feel of an included theme may not match the original precisely.
Copyright 2018-2021 Brad Lanam, Walnut Creek, CA, USA
Note: This license also applies to any .svg files packaged with awthemes that are included in the i/awthemes/ directory.
The program used to edit the .svg files may automatically add a license to the existing .svg files or new .svg files. This license overrides any license specified within the i/awthemes/*/*/*.svg files.
This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.
Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
bll 2021-3-22: Added the awbreezedark theme based on breeze-dark by Bartek Jasicki ( https://github.com/thindil/tkBreeze ).
bll 2021-2-11: Set the text widget cursor color.
bll 2021-1-2: Added the 'getScaleFactor' procedure.
bll 2020-12-2: Added the ttk::theme::<theme> package names to the 'pkgIndex.tcl' file so that '*TkTheme' can be used in the option database. This also allows the ::ttk::themes and ::ttk:setTheme procedures to work. Due to this change, the theme names have been changed to have an 'aw' prefix so that they do not conflict with the original themes. The option database menu/listbox/text settings are now configured by default. bll 2020-11-10: Added -optiondb specifier to setMenuColors, setListboxColors, setTextColors to use the option database.
bll 2020-10-29: Fixed ability to have multiple scaled styles.
bll 2020-10-23: Cleanup. Internal color names have changed. If you use the 'setThemeColors' or 'getColor' functions, contact me to see if the colors you are accessing have had a name change.
bll 2020-10-16: Added the 'clearlooks' theme.
bll 2020-4-27: Added the 'arc' theme.
bll 2020-4-18: The various widget themes have been repackaged as widget "styles".
bll 2020-4-12: Added a scalable breeze theme. Based on Maximilian Lika's breeze theme version 0.8 ( Breeze at github ). New helper routines to change the graphics/focus color and the background color have been added.
bll 2019-11-30: Version 7.0 splits out the theme specific data into separate files.
bll 2019-11-23: Version 6.0 adds the scalable winxpblue theme.
bll 2019-11-19: Version 5.0 features an additional scaling setting for use by the application, and the ability to create a scaled style, giving different graphics sizes for the same theme using the new style.
bll 2019-10-4: With version 4.0, support for other themes has been added. A scalable 'black' theme has been implemented.
bll 2019-10-7: With version 3.0, if tksvg is present, the graphics will scale according to the tk scaling setting.
bll 2018-9-1: Just thought I would try and create a new theme. Loosely based on adwaita dark. I have learned more about ttk themeing, found issues in my application code related to colors and themes. Uses graphics for the checkbuttons and radiobuttons. The notebook tab top color is created dynamically. Everything else is based on the clam theme.
10.4.0 2021-06-18
10.3.0 2021-03-22
10.2.1 (2021-02-11)
10.2.0 (2021-01-02)
10.1.2 (2020-12-20)
10.0.0 (2020-12-2)
9.5.1.1 (2020-11-16)
9.5.1 (2020-11-10)
9.5.0 (2020-10-29)
9.4.2 (2020-10-23)
9.4.1 (2020-10-16)
9.4.0 (2020-10-16)
can be set, but still uses the progressbar/ directory.
is in a normal state.
9.3.2 (2020-10-5)
9.3.1 (2020-9-17)
9.3 (2020-9-17)
9.2.4 (2020-8-14)
9.2.3 (2020-7-17)
9.2.2 (2020-6-6)
9.2.1 (2020-5-20)
9.2 (2020-4-30)
9.1.1 (2020-4-27)
9.1 (2020-4-27)
9.0 (2020-4-23)
8.1 (2020-4-20)
8.0 (2020-4-18)
7.9 (2020-4-12)
7.8 (2020-3-8)
7.7 (2020-1-17)
7.6 (2019-12-7)
7.5 (2019-12-4)
7.4 (2019-12-3)
7.3 (2019-12-2)
7.2 (2019-12-2)
7.1 (2019-12-1)
7.0 (2019-11-30)
6.0 (2019-11-23)
5.1
5.0
4.2.1
4.2
4.1
4.0
3.1
3.0
2.6
2.5
2.4
2.3
2.2:
2.1:
2.0:
1.4: change button anchor to default to center to follow majority of themes
1.3: clean up images a little
1.2: fix button press color
1.1: per request, remove the leading :: from the package name.
1.0: More fixes for Mac OS X.
0.9: Fixes for Mac OS X.
0.8: Set disabled field background color for entry, spinbox, combobox. Set disabled border color.
0.7: Fixed listbox helper routine. Added option for dark background for the text helper routine
0.6: Fixed hover highlight on notebook tabs.
In order to match the theme graphics size to the font size, the application can:
tk scaling 1.3888 ; # set the tk scaling appropriate to the user's computer
set sz1 [font metrics TkDefaultFont -ascent] ; # the default font size for Tk
set sz2 [font metrics appfont -ascent] ; # the application font default size
set scale [expr {double($sz2)/double($sz1)}] ; # calculate the scaling ratio
package require awthemes
::themeutils::setThemeColors awdark \
scale.factor $scale
package require awdark Same theme, different styles, different graphics sizes:
A new style with appropriately sized graphics can be created. For example, the application may have a base application font size used everywhere, and an alternate sized font for data listings.
The application can then:
package require awdark
if { [info commands ::ttk::theme::[ttk::style theme use]::scaledStyle] ne {} } {
::ttk::theme::[ttk::style theme use]::scaledStyle Listing mainfont listingfont
}Then the data listings are created using Listing.TCheckbutton, Listing.TCombobox, etc. which match the font size specified.
All of the Listing.* widgets have re-configured graphics sizes to match the specified font.
(See the demoscaled.tcl script)
package require awthemes package require colorutils ::themeutils::setBackgroundColor awdark #442233 package require awdark
package require awthemes ::themeutils::setHighlightColor awdark #007000 package require awdark
package require awthemes
::themeutils::setThemeColors $theme \
style.progressbar rounded-line \
style.scale circle-rev \
style.scrollbar-grip none \
scrollbar.has.arrows false
package require awdark::ttk::theme::awdark::setMenuColors {.menuwidget|-optiondb}
Sets the menu colors and also changes any checkbutton and radiobutton types to use thematic images. Run this after adding all the menu items to the menu.
Side effect: The menu will have -hidemargin set to true.
If you don't want the thematic images for checkbutton and radiobutton menu entries, run it before adding your menu items (and set -hidemargin back to false).
If -optiondb is specified instead of a widget, the *Menu.* color configurations are changed in the options database.
If -optiondb is specified, the thematic images for checkbutton and radiobutton menu entries will not be set.
::ttk::theme::awdark::setTextColors {.textwidget|-optiondb} ?{-entry|-background}?
Sets the text widget colors. Without an option, the background color is determined by the state (normal/disabled) of the text widget. If -entry is specified, the entry background color will be forced. If -background is specified the normal background color will be forced.
If -optiondb is specified instead of a widget, the *Text.* color configurations are changed in the options database.
::ttk::theme::awdark::setListboxColors {.listboxwidget|-optiondb}
Sets the listbox widget colors.
If -optiondb is specified instead of a widget, the *Listbox.* color configurations are changed in the options database.
Jeff Smith 2021-06-19 : Below is an online demo using CloudTk. This demo runs awthemes in an Alpine Linux Docker Container. It is a 27.8MB image which is made up of Alpine Linux + tclkit + awthems-10.4.0.kit + libx11 + libxft + fontconfig + ttf-linux-libertine. It is run under a user account in the Container. The Container is restrictive with permissions for "Other" removed for "execute" and "read" for certain directories.
By clicking on the "V" in the upper left corner you can access other demos.
See also: List of ttk Themes