aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Levedahl <mlevedahl@gmail.com>2025-09-22 10:36:41 -0400
committerMark Levedahl <mlevedahl@gmail.com>2025-09-29 20:53:21 -0400
commit8ccb2d4a762a0ea39c7f1df0712efbab3b7a4883 (patch)
tree281bc034ad78dc9801c19d849d5bb7cfe7ef524c
parentfe2005e7236a4e430ccf561376b7c14c33179064 (diff)
downloadgit-8ccb2d4a762a0ea39c7f1df0712efbab3b7a4883.tar.xz
gitk: use config variables to define and load a theme
gitk uses themed tk, but has no capability to alter the theme defined by Tk. While there are documented ways to install other themes, and to make one the default, these methods are obscure at best. Instead, let's offer two config variables: - theme this is the name of the theme to use, and must be available. - themeloader - this is the full pathname of a tcl script that will load one or more themes into the Tk namespace. By default, theme is set to the theme active when Tk is started, and themeloader = {}. These variables must be defined to something else to have any user visible effect. Signed-off-by: Mark Levedahl <mlevedahl@gmail.com>
-rwxr-xr-xgitk16
1 files changed, 15 insertions, 1 deletions
diff --git a/gitk b/gitk
index 796933670a..1f601153cb 100755
--- a/gitk
+++ b/gitk
@@ -2215,6 +2215,7 @@ proc setoptions {} {
}
proc setttkstyle {} {
+ global theme
eval font configure TkDefaultFont [fontflags mainfont]
eval font configure TkTextFont [fontflags textfont]
eval font configure TkHeadingFont [fontflags mainfont]
@@ -2224,6 +2225,10 @@ proc setttkstyle {} {
eval font configure TkIconFont [fontflags uifont]
eval font configure TkMenuFont [fontflags uifont]
eval font configure TkSmallCaptionFont [fontflags uifont]
+
+ if {[catch {ttk::style theme use $theme} err]} {
+ set theme [ttk::style theme use]
+ }
}
# Make a menu and submenus.
@@ -12618,6 +12623,9 @@ set circleoutlinecolor $fgcolor
set foundbgcolor yellow
set currentsearchhitbgcolor orange
+set theme [ttk::style theme use]
+set themeloader {}
+
# button for popping up context menus
if {[tk windowingsystem] eq "aqua" && [package vcompare $::tcl_version 8.7] < 0} {
set ctxbut <Button-2>
@@ -12701,6 +12709,8 @@ set config_variables {
tagfgcolor
tagoutlinecolor
textfont
+ theme
+ themeloader
uicolor
uifgcolor
uifgdisabledcolor
@@ -12800,7 +12810,10 @@ set nullid "0000000000000000000000000000000000000000"
set nullid2 "0000000000000000000000000000000000000001"
set nullfile "/dev/null"
-setttkstyle
+if {[file exists $themeloader]} {
+ source $themeloader
+}
+
set appname "gitk"
set runq {}
@@ -12916,6 +12929,7 @@ if {[tk windowingsystem] eq "win32"} {
focus -force .
}
+setttkstyle
set_gui_colors
getcommits {}