123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418 |
- # Copyright (c) 2021 rdbende
- # Copyright (c) 2020 RedFantom
- # Derived from Ubuntu Yaru theme, Copyright (c) 2018-2020 The Yaru theme authors
- # See <https://github.com/ubuntu/yaru/blob/master/AUTHORS> for a list of authors for the Yaru theme
- package require Tk 8.6
- namespace eval ttk::theme::yaru {
- variable version 1.2
- package provide ttk::theme::yaru $version
- variable colors
- array set colors {
- -fg "#3d3d3d"
- -bg "#f7f7f7"
- -disabledfg "#8b8e8f"
- -disabledbg "#f7f7f7"
- -selectfg "#f7f7f7"
- -selectbg "#e95420"
- }
- proc LoadImages {imgdir} {
- variable I
- foreach file [glob -directory $imgdir *.png] {
- set img [file tail [file rootname $file]]
- set I($img) [image create photo -file $file -format png]
- }
- }
- LoadImages [file join [file dirname [info script]] yaru]
- # Settings
- ttk::style theme create yaru -parent default -settings {
- ttk::style configure . \
- -background $colors(-bg) \
- -foreground $colors(-fg) \
- -troughcolor $colors(-bg) \
- -focuscolor $colors(-selectbg) \
- -selectbackground $colors(-selectbg) \
- -selectforeground $colors(-selectfg) \
- -fieldbackground $colors(-selectbg) \
- -font TkDefaultFont \
- -borderwidth 1 \
- -relief flat
- ttk::style map . -foreground [list disabled $colors(-disabledfg)]
- tk_setPalette background [ttk::style lookup . -background] \
- foreground [ttk::style lookup . -foreground] \
- highlightColor [ttk::style lookup . -focuscolor] \
- selectBackground [ttk::style lookup . -selectbackground] \
- selectForeground [ttk::style lookup . -selectforeground] \
- activeBackground [ttk::style lookup . -selectbackground] \
- activeForeground [ttk::style lookup . -selectforeground]
- option add *font [ttk::style lookup . -font]
- # Layouts
- ttk::style layout TButton {
- Button.button -children {
- Button.padding -children {
- Button.label -side left -expand true
- }
- }
- }
- ttk::style layout Toolbutton {
- Toolbutton.button -children {
- Toolbutton.padding -children {
- Toolbutton.label -side left -expand true
- }
- }
- }
- ttk::style layout TMenubutton {
- Menubutton.button -children {
- Menubutton.padding -children {
- Menubutton.indicator -side right
- Menubutton.label -side right -expand true
- }
- }
- }
- ttk::style layout TOptionMenu {
- OptionMenu.button -children {
- OptionMenu.padding -children {
- OptionMenu.indicator -side right
- OptionMenu.label -side right -expand true
- }
- }
- }
- ttk::style layout TCheckbutton {
- Checkbutton.button -children {
- Checkbutton.padding -children {
- Checkbutton.indicator -side left
- Checkbutton.label -side right -expand true
- }
- }
- }
- ttk::style layout TRadiobutton {
- Radiobutton.button -children {
- Radiobutton.padding -children {
- Radiobutton.indicator -side left
- Radiobutton.label -side right -expand true
- }
- }
- }
- ttk::style layout Vertical.TScrollbar {
- Vertical.Scrollbar.trough -sticky ns -children {
- Vertical.Scrollbar.thumb -expand true
- }
- }
- ttk::style layout Horizontal.TScrollbar {
- Horizontal.Scrollbar.trough -sticky ew -children {
- Horizontal.Scrollbar.thumb -expand true
- }
- }
- ttk::style layout TCombobox {
- Combobox.field -children {
- Combobox.downarrow -side right -sticky {}
- Combobox.padding -expand 1 -children {
- Combobox.textarea
- }
- }
- }
- ttk::style layout TSpinbox {
- Spinbox.field -children {
- null -side right -children {
- Spinbox.uparrow -side top -sticky e
- Spinbox.downarrow -side bottom -sticky s
- }
- Spinbox.padding -expand 0 -children {
- Spinbox.textarea
- }
- }
- }
- ttk::style layout Horizontal.TSeparator {
- Horizontal.separator -sticky nswe
- }
- ttk::style layout Vertical.TSeparator {
- Vertical.separator -sticky nswe
- }
- ttk::style layout TLabelframe {
- Labelframe.border {
- Labelframe.padding -expand 1 -children {
- Labelframe.label -side right
- }
- }
- }
- ttk::style layout TNotebook.Tab {
- Notebook.tab -children {
- Notebook.padding -side top -children {
- Notebook.label -side top -sticky {}
- }
- }
- }
- ttk::style layout Treeview.Item {
- Treeitem.padding -sticky nswe -children {
- Treeitem.indicator -side left -sticky {}
- Treeitem.image -side left -sticky {}
- Treeitem.text -side left -sticky {}
- }
- }
- # Button
- ttk::style configure TButton -padding 4 -width 10 -anchor center
- ttk::style element create Button.button \
- image [list $I(button-basic) \
- disabled $I(button-disabled) \
- pressed $I(button-pressed) \
- active $I(button-basic) \
- ] -border 4 -sticky news
- # Toolbutton
- ttk::style configure Toolbutton -padding 4 -width 10 -anchor center
- ttk::style element create Toolbutton.button \
- image [list $I(empty) \
- disabled $I(empty) \
- pressed $I(button-pressed) \
- active $I(button-pressed) \
- ] -border 4 -sticky news
- # Menubutton
- ttk::style configure TMenubutton -padding 4
- ttk::style element create Menubutton.button \
- image [list $I(button-basic) \
- disabled $I(button-disabled) \
- pressed $I(button-pressed) \
- active $I(button-basic) \
- ] -border 4 -sticky news
- ttk::style element create Menubutton.indicator image $I(arrow-down-basic) -width 25 -sticky e
- # OptionMenu
- ttk::style configure TOptionMenu -padding 4
- ttk::style element create OptionMenu.button \
- image [list $I(button-basic) \
- disabled $I(button-disabled) \
- pressed $I(button-pressed) \
- active $I(button-basic) \
- ] -border 4 -sticky news
- ttk::style element create OptionMenu.indicator image $I(arrow-down-basic) -width 25 -sticky e
- # Checkbutton
- ttk::style configure TCheckbutton -padding 4
- ttk::style element create Checkbutton.indicator \
- image [list $I(checkbox-basic) \
- disabled $I(checkbox-basic) \
- {selected disabled} $I(checkbox-selected-dis) \
- {pressed selected} $I(checkbox-selected) \
- {active selected} $I(checkbox-selected) \
- selected $I(checkbox-selected) \
- {pressed !selected} $I(checkbox-basic) \
- active $I(checkbox-basic) \
- ] -width 20 -sticky w
- # Radiobutton
- ttk::style configure TRadiobutton -padding 4
- ttk::style element create Radiobutton.indicator \
- image [list $I(radio-basic) \
- disabled $I(radio-basic) \
- {selected disabled} $I(radio-selected-dis) \
- {pressed selected} $I(radio-selected) \
- {active selected} $I(radio-selected) \
- selected $I(radio-selected) \
- {pressed !selected} $I(radio-basic) \
- active $I(radio-basic) \
- ] -width 20 -sticky w
- # Scrollbar
- ttk::style element create Horizontal.Scrollbar.trough image $I(scrollbar-hor-trough) \
- -border 2 -sticky ew
- ttk::style element create Horizontal.Scrollbar.thumb \
- image [list $I(scrollbar-hor-gray) \
- disabled $I(scrollbar-hor-gray) \
- pressed $I(scrollbar-hor-orange) \
- active $I(scrollbar-hor-orange) \
- ] -border 1 -sticky ew
- ttk::style element create Vertical.Scrollbar.trough image $I(scrollbar-vert-trough) \
- -border 2 -sticky ns
- ttk::style element create Vertical.Scrollbar.thumb \
- image [list $I(scrollbar-vert-gray) \
- disabled $I(scrollbar-vert-gray) \
- pressed $I(scrollbar-vert-orange) \
- active $I(scrollbar-vert-orange) \
- ] -border 1 -sticky ns
- # Scale
- ttk::style element create Horizontal.Scale.trough \
- image [ list $I(scale-trough) \
- disabled $I(scale-trough-disabled)
- ] -border 9 -padding 0
- ttk::style element create Horizontal.Scale.slider \
- image [list $I(scale-slider) \
- disabled $I(scale-slider) \
- pressed $I(scale-slider-hover) \
- active $I(scale-slider-hover) \
- ] -sticky news
- ttk::style element create Vertical.Scale.trough \
- image [ list $I(scale-trough) \
- disabled $I(scale-trough-disabled)
- ] -border 9 -padding 0
- ttk::style element create Vertical.Scale.slider \
- image [list $I(scale-slider) \
- disabled $I(scale-slider) \
- pressed $I(scale-slider-hover) \
- active $I(scale-slider-hover) \
- ] -sticky news
- # Progressbar
- ttk::style element create Horizontal.Progressbar.trough image $I(progressbar-trough-hor) \
- -border 2 -sticky ew
- ttk::style element create Horizontal.Progressbar.pbar image $I(progressbar-hor) \
- -border 2 -sticky ew
- ttk::style element create Vertical.Progressbar.trough image $I(progressbar-trough-hor) \
- -border 2 -sticky ns
- ttk::style element create Vertical.Progressbar.pbar image $I(progressbar-hor) \
- -border 2 -sticky ns
- # Entry
- ttk::style element create Entry.field \
- image [list $I(entry-basic) \
- {focus hover} $I(entry-focus) \
- invalid $I(entry-focus) \
- disabled $I(entry-disabled) \
- focus $I(entry-focus) \
- hover $I(entry-basic) \
- ] -border 4 -padding 8 -sticky news
- # Combobox
- ttk::style map TCombobox -selectbackground [list \
- {!focus} $colors(-selectbg) \
- {readonly hover} $colors(-selectbg) \
- {readonly focus} $colors(-selectbg)]
-
- ttk::style map TCombobox -selectforeground [list \
- {!focus} $colors(-selectfg) \
- {readonly hover} $colors(-selectfg) \
- {readonly focus} $colors(-selectfg)]
- ttk::style element create Combobox.field \
- image [list $I(entry-basic) \
- {readonly disabled} $I(button-disabled) \
- {readonly pressed} $I(button-pressed) \
- {readonly focus hover} $I(button-basic) \
- {readonly focus} $I(button-basic) \
- {readonly hover} $I(button-basic) \
- {focus hover} $I(entry-focus) \
- readonly $I(button-basic) \
- disabled $I(entry-disabled) \
- focus $I(entry-focus) \
- hover $I(entry-basic) \
- ] -border 4 -padding 8
- ttk::style element create Combobox.downarrow image $I(arrow-down-basic) \
- -width 25 -sticky e
- # Spinbox
- ttk::style element create Spinbox.field \
- image [list $I(entry-basic) \
- disabled $I(entry-disabled) \
- focus $I(entry-focus) \
- hover $I(entry-basic) \
- ] -border 4 -padding 8 -sticky news
- ttk::style element create Spinbox.uparrow \
- image [list $I(arrow-up-basic) \
- disabled $I(arrow-up-hover) \
- pressed $I(arrow-up-hover) \
- active $I(arrow-up-hover) \
- ] -width 15 -sticky e
- ttk::style element create Spinbox.downarrow \
- image [list $I(arrow-down-basic) \
- disabled $I(arrow-down-hover) \
- pressed $I(arrow-down-hover) \
- active $I(arrow-down-hover) \
- ] -width 15 -sticky e
- # Sizegrip
- ttk::style element create Sizegrip.sizegrip image $I(sizegrip) \
- -sticky news
- # Separator
- ttk::style element create Horizontal.separator image $I(separator)
- ttk::style element create Vertical.separator image $I(separator)
- # Labelframe
- ttk::style element create Labelframe.border image $I(checkbox-basic) \
- -border 4 -padding 4 -sticky news
-
- # Notebook
- ttk::style element create Notebook.client \
- image $I(checkbox-basic) -border 4
- ttk::style element create Notebook.tab \
- image [list $I(tab-basic) \
- selected $I(tab-current) \
- active $I(tab-hover) \
- ] -border 6 -padding {14 10} -sticky news
- # Treeview
- ttk::style element create Treeview.field image $I(checkbox-basic) \
- -border 4
- ttk::style element create Treeheading.cell \
- image [list $I(tree-basic) \
- pressed $I(tree-pressed)
- ] -border 10 -padding 4 -sticky news
-
- ttk::style element create Treeitem.indicator \
- image [list $I(plus) \
- user2 $I(empty) \
- user1 $I(minus) \
- ] -width 15 -sticky w
- ttk::style configure Treeview -background $colors(-bg)
- ttk::style configure Treeview.Item
- ttk::style map Treeview \
- -background [list selected $colors(-selectbg)] \
- -foreground [list selected $colors(-selectfg)]
- # Sashes
- ttk::style configure TPanedwindow \
- -width 1 -padding 0
- ttk::style map TPanedwindow \
- -background [list hover $colors(-bg)]
- }
- }
|