Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Improved determination of the user configured theme. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | trunk |
| Files: | files | file ages | folders |
| SHA1: |
be706a0b95e3b85979c8104289201ac7 |
| User & Date: | schelte 2024-09-02 09:32:47.608 |
Context
|
2024-09-02
| ||
| 09:32 | Improved determination of the user configured theme. Leaf check-in: be706a0b95 user: schelte tags: trunk | |
|
2024-09-01
| ||
| 12:11 | Leave the themes list empty when no user configured theme can be determined. check-in: 18cb7f6ab8 user: schelte tags: trunk | |
Changes
Changes to xdgicons-1.0.tm.
| ︙ | ︙ | |||
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
proc xdgicon::GetDefaultTheme {} {
variable config
# The KDE and GTK configuration files
set configfiles {
kdeglobals
gtk-3.0/settings.ini
gtk-4.0/settings.ini
}
set ls [lmap file [glob -nocomplain -directory $config {*}$configfiles] {
list $file [file mtime $file]
}]
foreach n [lsort -integer -index 1 -decreasing $ls] {
set file [lindex $n 0]
if {[catch {ReadConfigFile $file} lines]} continue
switch [file tail $file] {
kdeglobals {
set data [ParseSection $lines Icons]
if {[dict exists $data Theme]} {
return [dict get $data Theme]
}
}
settings.ini {
set data [ParseSection $lines Settings]
if {[dict exists $data gtk-icon-theme-name]} {
return [dict get $data gtk-icon-theme-name]
}
}
| > > > > > > > > > | | > > > > > > > > > > > > > > > > > > > > > | 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 |
proc xdgicon::GetDefaultTheme {} {
variable config
# The KDE and GTK configuration files
set configfiles {
kdeglobals
gtk-3.0/settings.ini
gtk-4.0/settings.ini
xfce4/xfconf/xfce-perchannel-xml/xsettings.xml
}
set ls [lmap file [glob -nocomplain -directory $config {*}$configfiles] {
list $file [file mtime $file]
}]
foreach n [lsort -integer -index 1 -decreasing $ls] {
set file [lindex $n 0]
if {[catch {ReadConfigFile $file} lines]} continue
switch [file tail $file] {
kdeglobals {
# KDE
set data [ParseSection $lines Icons]
if {[dict exists $data Theme]} {
return [dict get $data Theme]
}
}
settings.ini {
# Gnome
set data [ParseSection $lines Settings]
if {[dict exists $data gtk-icon-theme-name]} {
return [dict get $data gtk-icon-theme-name]
}
}
xsettings.xml {
# XFCE4
set pat {name="IconThemeName"}
set line [lsearch -inline -regexp $lines (?q)$pat]
if {[regexp {value="(\w+)"} $line -> theme]} {
return $theme
}
}
}
}
# XFCE specific
if {[info exists env(XDG_CURRENT_DESKTOP)] \
&& $env(XDG_CURRENT_DESKTOP) eq "XFCE"} {
set xfconf [auto_execok xfconf-query]
if {$xfconf ne ""} {
set theme [exec xfconf-query -c xsettings -p /Net/IconThemeName]
if {$theme ne ""} {return $theme}
}
}
# Look for a theme called "default" in any of the basedirs
variable basedirs
foreach dir [dict keys $basedirs] {
if {[file exists [file join $dir default index.theme]]} {
return default
}
}
# The user configured theme could not be determined
return
}
proc xdgicon::BaseDirectories {} {
variable basedirs
# Make sure there is an entry for all base directories
|
| ︙ | ︙ | |||
416 417 418 419 420 421 422 |
set cache [file join $env(XDG_CACHE_HOME) tcltk xdgicons.db]
}
if {[info exists env(XDG_DATA_HOME)]} {
dict set basedirs [file join $env(XDG_DATA_HOME) icons] 0
} elseif {[info exists env(HOME)]} {
dict set basedirs [file join $env(HOME) .local share icons] 0
}
| | | > | | > > > > | > | 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 |
set cache [file join $env(XDG_CACHE_HOME) tcltk xdgicons.db]
}
if {[info exists env(XDG_DATA_HOME)]} {
dict set basedirs [file join $env(XDG_DATA_HOME) icons] 0
} elseif {[info exists env(HOME)]} {
dict set basedirs [file join $env(HOME) .local share icons] 0
}
if {[info exists env(XDG_DATA_DIRS)] && $env(XDG_DATA_DIRS) ne ""} {
set datadirs [split $env(XDG_DATA_DIRS) :]
} else {
set datadirs [list /usr/local/share /usr/share]
}
foreach path $datadirs {
dict set basedirs [file join $path icons] 0
}
dict set basedirs /usr/share/pixmaps 0
set default [GetDefaultTheme]
if {$default ne ""} {
lappend themes $default
}
return
} xdgicon]
|