Add font, font size, color, background color selection to all blocks

This commit is contained in:
eleksir
2024-01-13 04:41:57 +03:00
parent 8d278a9c4a
commit 185b2698df
7 changed files with 867 additions and 199 deletions

View File

@@ -23,7 +23,14 @@ func UpdateBatteryInfo() {
batteries, err := battery.GetAll()
if err != nil {
Batts = "<big>⚡</big> no batt"
Batts = fmt.Sprintf(
"<span font='%s' size='%s'>%s</span><span font='%s' size='%s'> no batt</span>",
Conf.Battery.SymbolFont,
Conf.Battery.SymbolFontSize,
Conf.Battery.Symbol,
Conf.Battery.Font,
Conf.Battery.FontSize,
)
} else {
var (
battsInfo string
@@ -42,57 +49,97 @@ func UpdateBatteryInfo() {
status = `•`
}
// N.B. there can be case when battery is overcharged and shows >100%. It alse can indicate that
// N.B. there can be case when battery is overcharged and shows >100%. It also can indicate that
// calibration data is out of date and battery should be re-calibrated.
ch = int(math.Round((b.Full - b.Current) * (100 / b.Full)))
switch {
case ch > 85:
if Conf.Battery.Color.Full == "" {
chStr = fmt.Sprintf("% 3d%%", ch)
if Conf.Battery.ChargeColor.Full == "" {
chStr = fmt.Sprintf(
"<span font='%s' size='%s'>% 3d%%</span>",
Conf.Battery.FontSize,
Conf.Battery.ChargeColor.Full,
ch,
)
} else {
chStr = fmt.Sprintf(
`<span foreground="%s">% 3d%%</span>`,
Conf.Battery.Color.Full,
`<span font='%s' size='%s' foreground='%s'>% 3d%%</span>`,
Conf.Battery.Font,
Conf.Battery.FontSize,
Conf.Battery.ChargeColor.Full,
ch,
)
}
case ch < 85 && ch > 40:
if Conf.Battery.Color.AlmostFull == "" {
chStr = fmt.Sprintf("% 3d%%", ch)
if Conf.Battery.ChargeColor.AlmostFull == "" {
chStr = fmt.Sprintf(
"<span font='%s' size='%s'>% 3d%%</span>",
Conf.Battery.FontSize,
Conf.Battery.ChargeColor.Full,
ch,
)
} else {
chStr = fmt.Sprintf(
`<span foreground="%s">% 3d%%</span>`,
Conf.Battery.Color.AlmostFull,
`<span font='%s' size='%s' foreground='%s'>% 3d%%</span>`,
Conf.Battery.Font,
Conf.Battery.FontSize,
Conf.Battery.ChargeColor.AlmostFull,
ch,
)
}
case ch <= 40 && ch >= 10:
if Conf.Battery.Color.AlmostEmpty == "" {
chStr = fmt.Sprintf("% 3d%%", ch)
if Conf.Battery.ChargeColor.AlmostEmpty == "" {
chStr = fmt.Sprintf(
"<span font='%s' size='%s'>% 3d%%</span>",
Conf.Battery.FontSize,
Conf.Battery.ChargeColor.Full,
ch,
)
} else {
chStr = fmt.Sprintf(
`<span foreground="%s">% 3d%%</span>`,
Conf.Battery.Color.AlmostEmpty,
`<span font='%s' size='%s' foreground='%s'>% 3d%%</span>`,
Conf.Battery.Font,
Conf.Battery.FontSize,
Conf.Battery.ChargeColor.AlmostEmpty,
ch,
)
}
case ch < 10:
if Conf.Battery.Color.Empty == "" {
chStr = fmt.Sprintf("% 3d%%", ch)
if Conf.Battery.ChargeColor.Empty == "" {
chStr = fmt.Sprintf(
"<span font='%s' size='%s'>% 3d%%</span>",
Conf.Battery.FontSize,
Conf.Battery.ChargeColor.Full,
ch,
)
} else {
chStr = fmt.Sprintf(
`<span foreground="%s">% 3d%%</span>`,
Conf.Battery.Color.Empty,
`<span font='%s' size='%s' foreground='%s'>% 3d%%</span>`,
Conf.Battery.Font,
Conf.Battery.FontSize,
Conf.Battery.ChargeColor.Empty,
ch,
)
}
}
battsInfo += fmt.Sprintf("<big>⚡</big>B%d %s %s", i, chStr, status)
battsInfo += fmt.Sprintf(
"<span font='%s' size='%s'>%s</span><span font='%s' size='%s'>B%d </span>%s<span font='%s' size='%s'> %s</span>",
Conf.Battery.SymbolFont,
Conf.Battery.SymbolFontSize,
Conf.Battery.Symbol,
Conf.Battery.Font,
Conf.Battery.FontSize,
i,
chStr,
Conf.Battery.Font,
Conf.Battery.FontSize,
status,
)
}
if battsInfo != "" {

View File

@@ -18,7 +18,7 @@ func UpdateClock() {
rmonth := [12]string{"Янв", "Фев", "Мар", "Апр", "Май", "Июн", "Июл", "Авг", "Сен", "Окт", "Ноя", "Дек"}
rdow := [7]string{"Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"}
myclock := fmt.Sprintf("<big> %s, %d %s %d % 2d:%02d </big>", rdow[dow], day, rmonth[month-1], year, hours, minutes)
myclock := fmt.Sprintf(" %s, %d %s %d % 2d:%02d ", rdow[dow], day, rmonth[month-1], year, hours, minutes)
if myclock != Clock {
Clock = myclock

451
config.go
View File

@@ -21,6 +21,12 @@ type MyConfig struct {
// Default background color
Background string `json:"background,omitempty"`
// Default text font
Font string `json:"font,omitempty"`
// Default text font size
FontSize string `json:"font_size,omitempty"`
Separator struct {
Left struct {
Enabled bool `json:"enabled,omitempty"`
@@ -30,6 +36,7 @@ type MyConfig struct {
Font string `json:"font,omitempty"`
FontSize string `json:"font_size,omitempty"`
} `json:"left,omitempty"`
Right struct {
Enabled bool `json:"enabled,omitempty"`
Color string `json:"color,omitempty"`
@@ -42,7 +49,11 @@ type MyConfig struct {
// LA Plugin
LA struct {
Enabled bool `json:"enabled,omitempty"`
Enabled bool `json:"enabled,omitempty"`
Color string `json:"color,omitempty"`
Background string `json:"background,omitempty"`
Font string `json:"font,omitempty"`
FontSize string `json:"font_size,omitempty"`
Separator struct {
Left struct {
@@ -53,6 +64,7 @@ type MyConfig struct {
Font string `json:"font,omitempty"`
FontSize string `json:"font_size,omitempty"`
} `json:"left,omitempty"`
Right struct {
Enabled bool `json:"enabled,omitempty"`
Color string `json:"color,omitempty"`
@@ -64,9 +76,14 @@ type MyConfig struct {
} `json:"separator,omitempty"`
} `json:"la,omitempty"`
// Mem plugin
Mem struct {
Enabled bool `json:"enabled,omitempty"`
ShowSwap bool `json:"show_swap,omitempty"`
Enabled bool `json:"enabled,omitempty"`
Color string `json:"color,omitempty"`
Background string `json:"background,omitempty"`
Font string `json:"font,omitempty"`
FontSize string `json:"font_size,omitempty"`
ShowSwap bool `json:"show_swap,omitempty"`
Separator struct {
Left struct {
@@ -89,8 +106,11 @@ type MyConfig struct {
} `json:"mem,omitempty"`
Clock struct {
Enabled bool `json:"enabled,omitempty"`
Color string `json:"color,omitempty"`
Enabled bool `json:"enabled,omitempty"`
Color string `json:"color,omitempty"`
Background string `json:"background,omitempty"`
Font string `json:"font,omitempty"`
FontSize string `json:"font_size,omitempty"`
Separator struct {
Left struct {
@@ -123,13 +143,21 @@ type MyConfig struct {
} `json:"clock,omitempty"`
Battery struct {
Enabled bool `json:"enabled,omitempty"`
Color struct {
Enabled bool `json:"enabled,omitempty"`
Color string `json:"color,omitempty"`
Background string `json:"background,omitempty"`
Font string `json:"font,omitempty"`
FontSize string `json:"font_size,omitempty"`
Symbol string `json:"symbol,omitempty"`
SymbolFont string `json:"symbol_font,omitempty"`
SymbolFontSize string `json:"symbol_font_size,omitempty"`
ChargeColor struct {
Full string `json:"full,omitempty"`
Empty string `json:"empty,omitempty"`
AlmostFull string `json:"almost_full,omitempty"`
AlmostEmpty string `json:"almost_empty,omitempty"`
} `json:"color,omitempty"`
} `json:"charge_color,omitempty"`
Separator struct {
Left struct {
@@ -152,7 +180,12 @@ type MyConfig struct {
} `json:"battery,omitempty"`
CPUTemp struct {
Enabled bool `json:"enabled,omitempty"`
Enabled bool `json:"enabled,omitempty"`
Color string `json:"color,omitempty"`
Background string `json:"background,omitempty"`
Font string `json:"font,omitempty"`
FontSize string `json:"font_size,omitempty"`
Separator struct {
Left struct {
Enabled bool `json:"enabled,omitempty"`
@@ -162,6 +195,7 @@ type MyConfig struct {
Font string `json:"font,omitempty"`
FontSize string `json:"font_size,omitempty"`
} `json:"left,omitempty"`
Right struct {
Enabled bool `json:"enabled,omitempty"`
Color string `json:"color,omitempty"`
@@ -171,11 +205,16 @@ type MyConfig struct {
FontSize string `json:"font_size,omitempty"`
} `json:"right,omitempty"`
} `json:"separator,omitempty"`
File []string `json:"file,omitempty"`
} `json:"cpu_temp,omitempty"`
Vpn struct {
Enabled bool `json:"enabled,omitempty"`
Color string `json:"color,omitempty"`
Background string `json:"background,omitempty"`
Font string `json:"font,omitempty"`
FontSize string `json:"font_size,omitempty"`
StatusFile string `json:"statusFile,omitempty"`
MtimeThreshold int `json:"mtime_threshold,omitempty"`
DownColor string `json:"down_color,omitempty"`
@@ -209,9 +248,15 @@ type MyConfig struct {
} `json:"vpn,omitempty"`
SimpleVolumePa struct {
Enabled bool `json:"enabled,omitempty"`
Symbol string `json:"symbol,omitempty"`
FontSize string `json:"font_size,omitempty"`
Enabled bool `json:"enabled,omitempty"`
Color string `json:"color,omitempty"`
Background string `json:"background,omitempty"`
Font string `json:"font,omitempty"`
FontSize string `json:"font_size,omitempty"`
Symbol string `json:"symbol,omitempty"`
SymbolFont string `json:"symbol_font,omitempty"`
SymbolFontSize string `json:"symbol_font_size,omitempty"`
Separator struct {
Left struct {
Enabled bool `json:"enabled,omitempty"`
@@ -239,9 +284,13 @@ type MyConfig struct {
} `json:"simple-volume-pa,omitempty"`
NetIf struct {
Enabled bool `json:"enabled,omitempty"`
DownColor string `json:"down_color,omitempty"`
UpColor string `json:"up_color,omitempty"`
Enabled bool `json:"enabled,omitempty"`
DownColor string `json:"down_color,omitempty"`
UpColor string `json:"up_color,omitempty"`
Color string `json:"color,omitempty"`
Background string `json:"background,omitempty"`
Font string `json:"font,omitempty"`
FontSize string `json:"font_size,omitempty"`
Separator struct {
Left struct {
@@ -320,7 +369,7 @@ type MyConfig struct {
// Conf global variable with application config.
var Conf MyConfig
// readConf reads and validates confg if config does not exist, it puts default config to the same dir where i3 config
// readConf reads and validates config if config does not exist, it puts default config to the same dir where i3 config
// is located.
func readConf() (MyConfig, error) {
var (
@@ -338,7 +387,8 @@ func readConf() (MyConfig, error) {
fileInfo, err := os.Stat(path)
// Предполагаем, что файла либо нет, либо мы не можем его прочитать, второе надо бы логгировать, но пока забьём.
// Assume that either we unable to read file or file does not exit. We should mention second in logs but forget
// about it for now.
if err != nil {
if errors.Is(err, os.ErrNotExist) {
buf = DefaultConfig
@@ -350,7 +400,7 @@ func readConf() (MyConfig, error) {
return config, err
}
} else {
// Конфиг-файл длинноват для конфига.
// Config file looks too long for config...
if fileInfo.Size() > 65535 {
err := fmt.Errorf("config file %s is too long for config", path) //nolint: goerr113
@@ -359,7 +409,6 @@ func readConf() (MyConfig, error) {
buf, err = os.ReadFile(path)
// Не удалось прочитать
if err != nil {
err = fmt.Errorf("unable to read config file %s: %w", path, err)
@@ -406,6 +455,14 @@ func readConf() (MyConfig, error) {
sampleConfig.Background = "#edeceb"
}
if sampleConfig.Font == "" {
sampleConfig.Font = "Liberation Mono"
}
if sampleConfig.FontSize == "" {
sampleConfig.FontSize = "medium"
}
if sampleConfig.Separator.Left.Enabled {
if sampleConfig.Separator.Left.Color == "" {
sampleConfig.Separator.Left.Color = "#edeceb"
@@ -429,15 +486,23 @@ func readConf() (MyConfig, error) {
)
if err != nil {
log.Printf("Unable to set sampleConfig.Separator.Left.FontSize: %s, fallback to medium", err)
log.Printf(
"Unable to set sampleConfig.Separator.Left.FontSize: %s, fallback to %s",
err,
sampleConfig.FontSize,
)
sampleConfig.Separator.Left.FontSize = "medium"
sampleConfig.Separator.Left.FontSize = sampleConfig.FontSize
}
if !matched {
log.Printf("Unable to set sampleConfig.Separator.Left.FontSize: %s, fallback to medium", err)
log.Printf(
"Unable to set sampleConfig.Separator.Left.FontSize: %s, fallback to %s",
err,
sampleConfig.FontSize,
)
sampleConfig.Separator.Left.FontSize = "medium"
sampleConfig.Separator.Left.FontSize = sampleConfig.FontSize
}
}
@@ -464,15 +529,22 @@ func readConf() (MyConfig, error) {
)
if err != nil {
log.Printf("Unable to set sampleConfig.Separator.Right.FontSize: %s, fallback to medium", err)
log.Printf(
"Unable to set sampleConfig.Separator.Right.FontSize: %s, fallback to %s",
err,
sampleConfig.FontSize,
)
sampleConfig.Separator.Right.FontSize = "medium"
sampleConfig.Separator.Right.FontSize = sampleConfig.FontSize
}
if !matched {
log.Printf("Unable to set sampleConfig.Separator.Right.FontSize: %s, fallback to medium", err)
log.Printf("Unable to set sampleConfig.Separator.Right.FontSize: %s, fallback to %s",
err,
sampleConfig.FontSize,
)
sampleConfig.Separator.Right.FontSize = "medium"
sampleConfig.Separator.Right.FontSize = sampleConfig.FontSize
}
}
@@ -525,6 +597,22 @@ func readConf() (MyConfig, error) {
}
if sampleConfig.LA.Separator.Right.Enabled {
if sampleConfig.LA.Color == "" {
sampleConfig.LA.Color = sampleConfig.Color
}
if sampleConfig.LA.Background == "" {
sampleConfig.LA.Background = sampleConfig.Background
}
if sampleConfig.LA.Font == "" {
sampleConfig.LA.Font = sampleConfig.Font
}
if sampleConfig.LA.FontSize == "" {
sampleConfig.LA.FontSize = sampleConfig.FontSize
}
if sampleConfig.LA.Separator.Right.Color == "" {
sampleConfig.LA.Separator.Right.Color = sampleConfig.Separator.Right.Color
}
@@ -573,6 +661,22 @@ func readConf() (MyConfig, error) {
// sampleConfig.Mem will be false if not set in config
if sampleConfig.Mem.Enabled {
if sampleConfig.Mem.Color == "" {
sampleConfig.Mem.Color = sampleConfig.Color
}
if sampleConfig.Mem.Background == "" {
sampleConfig.Mem.Background = sampleConfig.Background
}
if sampleConfig.Mem.Font == "" {
sampleConfig.Mem.Font = sampleConfig.Font
}
if sampleConfig.Mem.FontSize == "" {
sampleConfig.Mem.FontSize = sampleConfig.FontSize
}
if sampleConfig.Mem.Separator.Left.Color == "" {
sampleConfig.Mem.Separator.Left.Color = sampleConfig.Separator.Left.Color
}
@@ -667,7 +771,19 @@ func readConf() (MyConfig, error) {
// sampleConfig.Clock.Enabled will be false if not set in config
if sampleConfig.Clock.Enabled {
if sampleConfig.Clock.Color == "" {
sampleConfig.Clock.Color = "#666666"
sampleConfig.Clock.Color = sampleConfig.Color
}
if sampleConfig.Clock.Background == "" {
sampleConfig.Clock.Background = sampleConfig.Background
}
if sampleConfig.Clock.Font == "" {
sampleConfig.Clock.Font = sampleConfig.Font
}
if sampleConfig.Clock.FontSize == "" {
sampleConfig.Clock.FontSize = sampleConfig.FontSize
}
if sampleConfig.Clock.Separator.Left.Enabled {
@@ -761,117 +877,146 @@ func readConf() (MyConfig, error) {
}
}
}
}
// sampleConfig.Clock.LeftClick.Enabled will be false if not set in config
// sampleConfig.Clock.LeftClick.Enabled will be false if not set in config
if len(sampleConfig.Clock.LeftClick.Cmd) == 0 {
sampleConfig.Clock.LeftClick.Cmd = append(sampleConfig.Clock.LeftClick.Cmd, "true")
}
if len(sampleConfig.Clock.LeftClick.Cmd) == 0 {
sampleConfig.Clock.LeftClick.Cmd = append(sampleConfig.Clock.LeftClick.Cmd, "true")
}
// sampleConfig.Clock.RightClick.Enabled will be false if not set in config
// sampleConfig.Clock.RightClick.Enabled will be false if not set in config
if len(sampleConfig.Clock.RightClick.Cmd) == 0 {
sampleConfig.Clock.RightClick.Cmd = append(sampleConfig.Clock.RightClick.Cmd, "true")
if len(sampleConfig.Clock.RightClick.Cmd) == 0 {
sampleConfig.Clock.RightClick.Cmd = append(sampleConfig.Clock.RightClick.Cmd, "true")
}
}
// sampleConfig.Battery.Enabled will be false if not set in config
// sampleConfig.Battery.Color.Full will be empty string if not set
// sampleConfig.Battery.Color.Empty will be empty string if not set
// sampleConfig.Battery.Color.AlmostFull will be empty string if not set
// sampleConfig.Battery.Color.AlmostEmpty will be empty string if not set
if sampleConfig.Battery.Separator.Left.Enabled {
if sampleConfig.Battery.Separator.Left.Color == "" {
sampleConfig.Battery.Separator.Left.Color = sampleConfig.Separator.Left.Color
if sampleConfig.Battery.Enabled {
if sampleConfig.Battery.Color == "" {
sampleConfig.Battery.Color = sampleConfig.Color
}
if sampleConfig.Battery.Separator.Left.Background == "" {
sampleConfig.Battery.Separator.Left.Background = sampleConfig.Separator.Left.Background
if sampleConfig.Battery.Background == "" {
sampleConfig.Battery.Background = sampleConfig.Background
}
if sampleConfig.Battery.Separator.Left.Symbol == "" {
sampleConfig.Battery.Separator.Left.Symbol = sampleConfig.Separator.Left.Symbol
if sampleConfig.Battery.Font == "" {
sampleConfig.Battery.Font = sampleConfig.Font
}
if sampleConfig.Battery.Separator.Left.Font == "" {
sampleConfig.Battery.Separator.Left.Font = sampleConfig.Separator.Left.Font
if sampleConfig.Battery.FontSize == "" {
sampleConfig.Battery.FontSize = sampleConfig.FontSize
}
if sampleConfig.Battery.Separator.Left.FontSize == "" {
sampleConfig.Battery.Separator.Left.FontSize = sampleConfig.Separator.Left.FontSize
} else {
matched, err := regexp.MatchString(
`^(xx-small|x-small|small|medium|large|x-large|xx-large|smaller|larger)$`,
sampleConfig.Battery.Separator.Left.FontSize,
)
if sampleConfig.Battery.Symbol == "" {
sampleConfig.Battery.Symbol = "⚡"
}
if err != nil {
log.Printf(
"Unable to set sampleConfig.Battery.Separator.Left.FontSize: %s, fallback to %s",
err,
sampleConfig.Separator.Left.FontSize,
)
if sampleConfig.Battery.SymbolFont == "" {
sampleConfig.Battery.SymbolFont = sampleConfig.Battery.Font
}
sampleConfig.Battery.Separator.Left.FontSize = sampleConfig.Separator.Left.FontSize
if sampleConfig.Battery.SymbolFontSize == "" {
sampleConfig.Battery.SymbolFontSize = sampleConfig.Battery.FontSize
}
// sampleConfig.Battery.ChargeColor.Full will be empty string if not set
// sampleConfig.Battery.ChargeColor.Empty will be empty string if not set
// sampleConfig.Battery.ChargeColor.AlmostFull will be empty string if not set
// sampleConfig.Battery.ChargeColor.AlmostEmpty will be empty string if not set
if sampleConfig.Battery.Separator.Left.Enabled {
if sampleConfig.Battery.Separator.Left.Color == "" {
sampleConfig.Battery.Separator.Left.Color = sampleConfig.Separator.Left.Color
}
if !matched {
log.Printf(
"Unable to set sampleConfig.Battery.Separator.Left.FontSize, fallback to %s",
sampleConfig.Separator.Left.FontSize,
if sampleConfig.Battery.Separator.Left.Background == "" {
sampleConfig.Battery.Separator.Left.Background = sampleConfig.Separator.Left.Background
}
if sampleConfig.Battery.Separator.Left.Symbol == "" {
sampleConfig.Battery.Separator.Left.Symbol = sampleConfig.Separator.Left.Symbol
}
if sampleConfig.Battery.Separator.Left.Font == "" {
sampleConfig.Battery.Separator.Left.Font = sampleConfig.Separator.Left.Font
}
if sampleConfig.Battery.Separator.Left.FontSize == "" {
sampleConfig.Battery.Separator.Left.FontSize = sampleConfig.Separator.Left.FontSize
} else {
matched, err := regexp.MatchString(
`^(xx-small|x-small|small|medium|large|x-large|xx-large|smaller|larger)$`,
sampleConfig.Battery.Separator.Left.FontSize,
)
sampleConfig.Battery.Separator.Left.FontSize = sampleConfig.Separator.Left.FontSize
if err != nil {
log.Printf(
"Unable to set sampleConfig.Battery.Separator.Left.FontSize: %s, fallback to %s",
err,
sampleConfig.Separator.Left.FontSize,
)
sampleConfig.Battery.Separator.Left.FontSize = sampleConfig.Separator.Left.FontSize
}
if !matched {
log.Printf(
"Unable to set sampleConfig.Battery.Separator.Left.FontSize, fallback to %s",
sampleConfig.Separator.Left.FontSize,
)
sampleConfig.Battery.Separator.Left.FontSize = sampleConfig.Separator.Left.FontSize
}
}
}
if sampleConfig.Battery.Separator.Right.Enabled {
if sampleConfig.Battery.Separator.Right.Color == "" {
sampleConfig.Battery.Separator.Right.Color = sampleConfig.Separator.Right.Color
}
if sampleConfig.Battery.Separator.Right.Background == "" {
sampleConfig.Battery.Separator.Right.Background = sampleConfig.Separator.Right.Background
}
if sampleConfig.Battery.Separator.Right.Symbol == "" {
sampleConfig.Battery.Separator.Right.Symbol = sampleConfig.Separator.Right.Symbol
}
if sampleConfig.Battery.Separator.Right.Font == "" {
sampleConfig.Battery.Separator.Right.Font = sampleConfig.Separator.Right.Font
}
if sampleConfig.Battery.Separator.Right.FontSize == "" {
sampleConfig.Battery.Separator.Right.FontSize = sampleConfig.Separator.Right.FontSize
} else {
matched, err := regexp.MatchString(
`^(xx-small|x-small|small|medium|large|x-large|xx-large|smaller|larger)$`,
sampleConfig.Battery.Separator.Right.FontSize,
)
if err != nil {
log.Printf(
"Unable to set sampleConfig.Battery.Separator.Right.FontSize: %s, fallback to %s",
err,
sampleConfig.Separator.Right.FontSize,
)
sampleConfig.Battery.Separator.Right.FontSize = sampleConfig.Separator.Right.FontSize
}
if !matched {
log.Printf(
"Unable to set sampleConfig.Battery.Separator.Right.FontSize, fallback to %s",
sampleConfig.Separator.Right.FontSize,
)
sampleConfig.Battery.Separator.Right.FontSize = sampleConfig.Separator.Right.FontSize
}
}
}
}
if sampleConfig.Battery.Separator.Right.Enabled {
if sampleConfig.Battery.Separator.Right.Color == "" {
sampleConfig.Battery.Separator.Right.Color = sampleConfig.Separator.Right.Color
}
if sampleConfig.Battery.Separator.Right.Background == "" {
sampleConfig.Battery.Separator.Right.Background = sampleConfig.Separator.Right.Background
}
if sampleConfig.Battery.Separator.Right.Symbol == "" {
sampleConfig.Battery.Separator.Right.Symbol = sampleConfig.Separator.Right.Symbol
}
if sampleConfig.Battery.Separator.Right.Font == "" {
sampleConfig.Battery.Separator.Right.Font = sampleConfig.Separator.Right.Font
}
if sampleConfig.Battery.Separator.Right.FontSize == "" {
sampleConfig.Battery.Separator.Right.FontSize = sampleConfig.Separator.Right.FontSize
} else {
matched, err := regexp.MatchString(
`^(xx-small|x-small|small|medium|large|x-large|xx-large|smaller|larger)$`,
sampleConfig.Battery.Separator.Right.FontSize,
)
if err != nil {
log.Printf(
"Unable to set sampleConfig.Battery.Separator.Right.FontSize: %s, fallback to %s",
err,
sampleConfig.Separator.Right.FontSize,
)
sampleConfig.Battery.Separator.Right.FontSize = sampleConfig.Separator.Right.FontSize
}
if !matched {
log.Printf(
"Unable to set sampleConfig.Battery.Separator.Right.FontSize, fallback to %s",
sampleConfig.Separator.Right.FontSize,
)
sampleConfig.Battery.Separator.Right.FontSize = sampleConfig.Separator.Right.FontSize
}
}
}
// sampleConfig.CpuTemp.Enabled will be false if not set in config
// No files configured - disable plugin
@@ -880,6 +1025,22 @@ func readConf() (MyConfig, error) {
}
if sampleConfig.CPUTemp.Enabled {
if sampleConfig.CPUTemp.Color == "" {
sampleConfig.CPUTemp.Color = sampleConfig.Color
}
if sampleConfig.CPUTemp.Background == "" {
sampleConfig.CPUTemp.Background = sampleConfig.Background
}
if sampleConfig.CPUTemp.Font == "" {
sampleConfig.CPUTemp.Font = sampleConfig.Font
}
if sampleConfig.CPUTemp.FontSize == "" {
sampleConfig.CPUTemp.FontSize = sampleConfig.FontSize
}
if sampleConfig.CPUTemp.Separator.Left.Enabled {
if sampleConfig.CPUTemp.Separator.Left.Color == "" {
sampleConfig.CPUTemp.Separator.Left.Color = sampleConfig.Separator.Left.Color
@@ -979,11 +1140,27 @@ func readConf() (MyConfig, error) {
}
if sampleConfig.Vpn.Enabled {
if sampleConfig.Vpn.Color == "" {
sampleConfig.Vpn.Color = sampleConfig.Color
}
if sampleConfig.Vpn.Background == "" {
sampleConfig.Vpn.Background = sampleConfig.Background
}
if sampleConfig.Vpn.Font == "" {
sampleConfig.Vpn.FontSize = sampleConfig.Font
}
if sampleConfig.Vpn.FontSize == "" {
sampleConfig.Vpn.FontSize = sampleConfig.FontSize
}
// Check status file at least once per 3 seconds
if sampleConfig.Vpn.MtimeThreshold < 3 {
log.Printf("vpn.mtime_threshold not set, using 3")
sampleConfig.Vpn.MtimeThreshold = 3 //nocritic: wsl
sampleConfig.Vpn.MtimeThreshold = 3
}
// sampleConfig.Vpn.DownColor will be empty string if no value set in config
@@ -1109,16 +1286,34 @@ func readConf() (MyConfig, error) {
}
}
// TODO: appbuttons, etc..
// sampleConfig.SimpleVolumePa.Enabled will false if not set in config
if sampleConfig.SimpleVolumePa.Enabled {
if sampleConfig.SimpleVolumePa.Color == "" {
sampleConfig.SimpleVolumePa.Color = sampleConfig.Color
}
if sampleConfig.SimpleVolumePa.Background == "" {
sampleConfig.SimpleVolumePa.Background = sampleConfig.Background
}
if sampleConfig.SimpleVolumePa.Font == "" {
sampleConfig.SimpleVolumePa.Font = sampleConfig.Font
}
if sampleConfig.SimpleVolumePa.FontSize == "" {
sampleConfig.SimpleVolumePa.FontSize = sampleConfig.FontSize
}
if sampleConfig.SimpleVolumePa.Symbol == "" {
sampleConfig.SimpleVolumePa.Symbol = `🔊`
}
if sampleConfig.SimpleVolumePa.FontSize == "" {
sampleConfig.SimpleVolumePa.FontSize = "medium"
if sampleConfig.SimpleVolumePa.SymbolFont == "" {
sampleConfig.SimpleVolumePa.SymbolFont = sampleConfig.SimpleVolumePa.Font
}
if sampleConfig.SimpleVolumePa.SymbolFontSize == "" {
sampleConfig.SimpleVolumePa.SymbolFontSize = sampleConfig.SimpleVolumePa.FontSize
}
if sampleConfig.SimpleVolumePa.Step == 0 {
@@ -1264,6 +1459,22 @@ func readConf() (MyConfig, error) {
sampleConfig.NetIf.UpColor = "green"
}
if sampleConfig.NetIf.Color == "" {
sampleConfig.NetIf.Color = sampleConfig.Color
}
if sampleConfig.NetIf.Background == "" {
sampleConfig.NetIf.Background = sampleConfig.Background
}
if sampleConfig.NetIf.Font == "" {
sampleConfig.NetIf.Font = sampleConfig.Font
}
if sampleConfig.NetIf.FontSize == "" {
sampleConfig.NetIf.FontSize = sampleConfig.FontSize
}
if sampleConfig.NetIf.Separator.Left.Enabled {
if sampleConfig.NetIf.Separator.Left.Color == "" {
sampleConfig.NetIf.Separator.Left.Color = sampleConfig.Separator.Left.Color

View File

@@ -5,30 +5,53 @@
// Default backbround color. If not set value of #edeceb is used.
"background" : "#000000",
// Can be omitted, then Liberation Mono will be used.
"font": "Liberation Mono",
// ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes
// ‘smaller’ or ‘larger’
"font_size": "medium",
"separator" : {
"left": {
// Set to false if omitted.
"enabled": true,
// If omitted set to #edeceb color defined for separator up here.
"color": "#3e78fd",
// If omitted set to #3e78fd background color defined for separator up here.
"background": "#000000",
// If omitted set to "|" (no quotes) symbol defined for separator up here.
"symbol": "▶",
// If omitted set to "Noto Sans" font defined for separator up here.
"font": "Noto Sans",
// ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes
// ‘smaller’ or ‘larger’
// ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here.
"font_size": "medium"
},
"right": {
// False if value omitted
// Set to false if omitted.
"enabled": true,
// Used #edeceb as default if value omitted
// If omitted set to #edeceb color defined for separator up here.
"color": "#3e78fd",
// If not set #3e78fd is used.
// If omitted set to #3e78fd background color defined for separator up here.
"background": "#000000",
// If omitted, used "|" (no quotes) as default
// If omitted set to "|" (no quotes) symbol defined for separator up here.
"symbol": "◀",
// If omitted set to "Noto Sans" font defined for separator up here.
"font": "Noto Sans",
// ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes
// ‘smaller’ or ‘larger’
// ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here.
"font_size": "medium"
}
},
@@ -36,28 +59,64 @@
// Memory stats
"mem" : {
"enabled": true,
// If omitted set to default color defined up here.
"color": "#3e78fd",
// If omitted set to default background color defined up here.
"background": "#000000",
// If omitted set to default font defined up here.
"font": "Noto Sans",
// ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes
// ‘smaller’ or ‘larger’. If omitted set to default font size defined up here.
"font_size": "medium",
// Do we show used swap megs?
"show_swap": false,
// Re-define separator parameters for net-if block here.
"separator" : {
"left": {
// Set to false if omitted.
"enabled": true,
// If omitted set to default color defined for separator up here.
"color": "#3e78fd",
// If omitted set to default background color defined for separator up here.
"background": "#000000",
// If omitted set to default symbol defined for separator up here.
"symbol": "▶",
// If omitted set to default font defined for separator up here.
"font": "Noto Sans",
// ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes
// ‘smaller’ or ‘larger’
// ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here.
"font_size": "medium"
},
"right": {
// Set to false if omitted.
"enabled": true,
// If omitted set to default color defined for separator up here.
"color": "#3e78fd",
// If omitted set to default background color defined for separator up here.
"background": "#000000",
// If omitted set to default symbol defined for separator up here.
"symbol": "◀",
// If omitted set to default font defined for separator up here.
"font": "Noto Sans",
// ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes
// ‘smaller’ or ‘larger’
// ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here.
"font_size": "medium"
}
}
@@ -67,26 +126,60 @@
"la" : {
"enabled": true,
// If omitted set to default color defined up here.
"color": "#3e78fd",
// If omitted set to default background color defined up here.
"background": "#000000",
// If omitted set to default font defined up here.
"font": "Noto Sans",
// ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes
// ‘smaller’ or ‘larger’. If omitted set to default font size defined up here.
"font_size": "medium",
// Re-define separator parameters for net-if block here.
"separator" : {
"left": {
// Set to false if omitted.
"enabled": true,
// If omitted set to default color defined for separator up here.
"color": "#3e78fd",
// If omitted set to default background color defined for separator up here.
"background": "#000000",
// If omitted set to default symbol defined for separator up here.
"symbol": "▶",
// If omitted set to default font defined for separator up here.
"font": "Noto Sans",
// ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes
// ‘smaller’ or ‘larger’
// ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here.
"font_size": "medium"
},
"right": {
// Set to false if omitted.
"enabled": true,
// If omitted set to default color defined for separator up here.
"color": "#3e78fd",
// If omitted set to default background color defined for separator up here.
"background": "#000000",
// If omitted set to default symbol defined for separator up here.
"symbol": "◀",
// If omitted set to default font defined for separator up here.
"font": "Noto Sans",
// ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes
// ‘smaller’ or ‘larger’
// ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here.
"font_size": "medium"
}
}
@@ -94,29 +187,67 @@
"net-if" : {
"enabled" : false,
// In html notation
// If omitted set to default color defined up here.
"color": "#3e78fd",
// If omitted set to default background color defined up here.
"background": "#000000",
// If omitted set to default font defined up here.
"font": "Noto Sans",
// ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes
// ‘smaller’ or ‘larger’. If omitted set to default font size defined up here.
"font_size": "medium",
// Net interface down symbol color, in html notation.
"down_color" : "red",
// Net interface up symbol color, in html notation.
"up_color" : "green",
"separator" : {
// Re-define separator parameters for net-if block here.
"separator": {
"left": {
// Set to false if omitted.
"enabled": true,
// If omitted set to default color defined for separator up here.
"color": "#3e78fd",
// If omitted set to default background color defined for separator up here.
"background": "#000000",
// If omitted set to default symbol defined for separator up here.
"symbol": "▶",
// If omitted set to default font defined for separator up here.
"font": "Noto Sans",
// ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes
// ‘smaller’ or ‘larger’
// ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here.
"font_size": "medium"
},
"right": {
// Set to false if omitted.
"enabled": true,
// If omitted set to default color defined for separator up here.
"color": "#3e78fd",
// If omitted set to default background color defined for separator up here.
"background": "#000000",
// If omitted set to default symbol defined for separator up here.
"symbol": "◀",
// If omitted set to default font defined for separator up here.
"font": "Noto Sans",
// ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes
// ‘smaller’ or ‘larger’
// ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here.
"font_size": "medium"
}
},
@@ -125,47 +256,89 @@
{
// Name as it displayed on i3bar
"name" : "eth0",
// Directory containing net if status files
"dir" : "/sys/class/net/eth0"
}
]
},
// OpenVPN status. Note that directive status in openvpn.conf should point to
// state file and *update* its timestamp at least as frequent as mtime_threshold in seconds
// OpenVPN status. Note that directive status in openvpn.conf should point to state file and *update* its timestamp at
// least as frequent as mtime_threshold in seconds.
"vpn": {
"enabled": false,
// If omitted set to default color defined up here.
"color": "#3e78fd",
// If omitted set to default background color defined up here.
"background": "#000000",
// If omitted set to default font defined up here.
"font": "Noto Sans",
// ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes
// ‘smaller’ or ‘larger’. If omitted set to default font size defined up here.
"font_size": "medium",
// Status file location. Plugin will be disabled if this value omitted.
"statusfile" : "/tmp/openvpn-status.stat",
// mtime check period.
"mtime_threshold": 10,
// Color in html notation
// Vpn down symbol color, in html notation.
"down_color" : "red",
// Vpn up symbol color, in html notation.
"up_color" : "green",
"separator" : {
// Re-define separator parameters for net-if block here.
"separator": {
"left": {
// Set to false if omitted.
"enabled": true,
// If omitted set to default color defined for separator up here.
"color": "#3e78fd",
// If omitted set to default background color defined for separator up here.
"background": "#000000",
// If omitted set to default symbol defined for separator up here.
"symbol": "▶",
// If omitted set to default font defined for separator up here.
"font": "Noto Sans",
// ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes
// ‘smaller’ or ‘larger’
// ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here.
"font_size": "medium"
},
"right": {
// Set to false if omitted.
"enabled": true,
// If omitted set to default color defined for separator up here.
"color": "#3e78fd",
// If omitted set to default background color defined for separator up here.
"background": "#000000",
// If omitted set to default symbol defined for separator up here.
"symbol": "◀",
// If omitted set to default font defined for separator up here.
"font": "Noto Sans",
// ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes
// ‘smaller’ or ‘larger’
// ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here.
"font_size": "medium"
}
},
// Also we can tcp-ping some service inside vpn network to ensure that connection is not stoned
// Also we can tcp-ping some service inside vpn network to ensure that connection is not stoned.
"tcp_check" : {
"enabled": false,
"host": "somehost.tld",
@@ -177,11 +350,25 @@
// Simple sound volume indicator
"simple-volume-pa": {
"enabled": false,
// If omitted set to default color defined up here.
"color": "#3e78fd",
// If omitted set to default background color defined up here.
"background": "#000000",
// If omitted set to default font defined up here.
"font": "Noto Sans",
// ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes
// ‘smaller’ or ‘larger’. If omitted set to default font size defined up here.
"font_size": "medium",
"symbol": "🔊",
// ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of the relative sizes
// ‘smaller’ or ‘larger’. If omitted set to medium by default.
"font_size": "medium",
// ‘smaller’ or ‘larger’. If omitted set to value of simple-volume-pa.font_size by default.
"symbol_font_size": "medium",
// If not defined - will be "true"
"right_click_cmd": ["pavucontrol"],
@@ -199,26 +386,47 @@
// Maximum sound volume, can be over 100%, but sould not be :) Default value 100 if not set.
"max_volume_limit": 120,
"separator" : {
// Re-define separator parameters for net-if block here.
"separator": {
"left": {
// Set to false if omitted.
"enabled": true,
// If omitted set to default color defined for separator up here.
"color": "#3e78fd",
// If omitted set to default background color defined for separator up here.
"background": "#000000",
// If omitted set to default symbol defined for separator up here.
"symbol": "▶",
// If omitted set to default font defined for separator up here.
"font": "Noto Sans",
// ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’,, or one of the relative sizes
// ‘smaller’ or ‘larger’
// ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes
// ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here.
"font_size": "medium"
},
"right": {
// Set to false if omitted.
"enabled": true,
// If omitted set to default color defined for separator up here.
"color": "#3e78fd",
// If omitted set to default background color defined for separator up here.
"background": "#000000",
// If omitted set to default symbol defined for separator up here.
"symbol": "◀",
// If omitted set to default font defined for separator up here.
"font": "Noto Sans",
// ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of the relative sizes
// ‘smaller’ or ‘larger’
// ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes
// ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here.
"font_size": "medium"
}
}
@@ -227,29 +435,61 @@
// Just clock
"clock": {
"enabled" : true,
// Text color in html (actually, pango) notation
"color" : "#666666",
"separator" : {
// If omitted set to default color defined up here.
"color": "#3e78fd",
// If omitted set to default background color defined up here.
"background": "#000000",
// If omitted set to default font defined up here.
"font": "Noto Sans",
// ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes
// ‘smaller’ or ‘larger’. If omitted set to default font size defined up here.
"font_size": "medium",
// Re-define separator parameters for net-if block here.
"separator": {
"left": {
// Set to false if omitted.
"enabled": true,
// If omitted set to default color defined for separator up here.
"color": "#3e78fd",
// If omitted set to default background color defined for separator up here.
"background": "#000000",
// If omitted set to default symbol defined for separator up here.
"symbol": "▶",
// If omitted set to default font defined for separator up here.
"font": "Noto Sans",
// ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes
// ‘smaller’ or ‘larger’
// ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here.
"font_size": "medium"
},
"right": {
// Set to false if omitted.
"enabled": true,
// If omitted set to default color defined for separator up here.
"color": "#3e78fd",
// If omitted set to default background color defined for separator up here.
"background": "#000000",
// If omitted set to default symbol defined for separator up here.
"symbol": "◀",
// If omitted set to default font defined for separator up here.
"font": "Noto Sans",
// ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes
// ‘smaller’ or ‘larger’
// ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here.
"font_size": "medium"
}
},
@@ -270,7 +510,30 @@
"battery": {
"enabled": false,
"color": {
// If omitted set to default color defined up here.
"color": "#3e78fd",
// If omitted set to default background color defined up here.
"background": "#000000",
// If omitted set to default font defined up here.
"font": "Noto Sans",
// ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes
// ‘smaller’ or ‘larger’. If omitted set to default font size defined up here.
"font_size": "medium",
// If omitted "⚡" (no quotes) is used.
"symbol": "⚡",
// If omitted battery.font is used.
"symbol_font" : "Noto Sans",
// ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of the relative sizes
// ‘smaller’ or ‘larger’. If omitted set to value of simple-volume-pa.font_size by default.
"symbol_font_size": "large",
"charge_color": {
// colors in html notation
"full": "green",
"empty": "red",
@@ -278,26 +541,47 @@
"almost_empty": "orange"
},
"separator" : {
// Re-define separator parameters for net-if block here.
"separator": {
"left": {
// Set to false if omitted.
"enabled": true,
// If omitted set to default color defined for separator up here.
"color": "#3e78fd",
// If omitted set to default background color defined for separator up here.
"background": "#000000",
// If omitted set to default symbol defined for separator up here.
"symbol": "▶",
// If omitted set to default font defined for separator up here.
"font": "Noto Sans",
// ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes
// ‘smaller’ or ‘larger’
// ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here.
"font_size": "medium"
},
"right": {
// Set to false if omitted.
"enabled": true,
// If omitted set to default color defined for separator up here.
"color": "#3e78fd",
// If omitted set to default background color defined for separator up here.
"background": "#000000",
// If omitted set to default symbol defined for separator up here.
"symbol": "◀",
// If omitted set to default font defined for separator up here.
"font": "Noto Sans",
// ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes
// ‘smaller’ or ‘larger’
// ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here.
"font_size": "medium"
}
}
@@ -307,26 +591,60 @@
"cpu_temp": {
"enabled": false,
"separator" : {
// If omitted set to default color defined up here.
"color": "#3e78fd",
// If omitted set to default background color defined up here.
"background": "#000000",
// If omitted set to default font defined up here.
"font": "Noto Sans",
// ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes
// ‘smaller’ or ‘larger’. If omitted set to default font size defined up here.
"font_size": "medium",
// Re-define separator parameters for net-if block here.
"separator": {
"left": {
// Set to false if omitted.
"enabled": true,
// If omitted set to default color defined for separator up here.
"color": "#3e78fd",
// If omitted set to default background color defined for separator up here.
"background": "#000000",
// If omitted set to default symbol defined for separator up here.
"symbol": "▶",
// If omitted set to default font defined for separator up here.
"font": "Noto Sans",
// ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes
// ‘smaller’ or ‘larger’
// ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here.
"font_size": "medium"
},
"right": {
// Set to false if omitted.
"enabled": true,
// If omitted set to default color defined for separator up here.
"color": "#3e78fd",
// If omitted set to default background color defined for separator up here.
"background": "#000000",
// If omitted set to default symbol defined for separator up here.
"symbol": "◀",
// If omitted set to default font defined for separator up here.
"font": "Noto Sans",
// ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes
// ‘smaller’ or ‘larger’
// ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here.
"font_size": "medium"
}
},
@@ -367,31 +685,54 @@
]
},
// Weather to display Application Buttons
// Whether to display Application Buttons.
"app_buttons": {
"enabled": true,
"separator" : {
// Re-define separator parameters for net-if block here.
"separator": {
"left": {
// Set to false if omitted.
"enabled": true,
// If omitted set to default color defined for separator up here.
"color": "#3e78fd",
// If omitted set to default background color defined for separator up here.
"background": "#000000",
// If omitted set to default symbol defined for separator up here.
"symbol": "▶",
// If omitted set to default font defined for separator up here.
"font": "Noto Sans",
// ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes
// ‘smaller’ or ‘larger’
// ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here.
"font_size": "medium"
},
"right": {
// Set to false if omitted.
"enabled": true,
// If omitted set to default color defined for separator up here.
"color": "#3e78fd",
// If omitted set to default background color defined for separator up here.
"background": "#000000",
// If omitted set to default symbol defined for separator up here.
"symbol": "◀",
// If omitted set to default font defined for separator up here.
"font": "Noto Sans",
// ‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’, or one of relative sizes
// ‘smaller’ or ‘larger’
// ‘smaller’ or ‘larger’. If omitted set to default font size defined for separator up here.
"font_size": "medium"
}
}
},
},
// Buttons - application launch "buttons"

78
main.go
View File

@@ -179,6 +179,9 @@ func main() {
if Conf.CPUTemp.Enabled {
var b I3BarOutBlock
b.Color = Conf.CPUTemp.Color
b.Background = Conf.CPUTemp.Background
if Conf.CPUTemp.Separator.Left.Enabled {
b.FullText = fmt.Sprintf(
"<span color='%s' background='%s' size='%s'>%s</span>",
@@ -189,7 +192,12 @@ func main() {
)
}
b.FullText += fmt.Sprintf("CPU: %d°", CPUTemperature)
b.FullText += fmt.Sprintf(
"<span font='%s' size='%s'>CPU: %d°</span>",
Conf.CPUTemp.Font,
Conf.CPUTemp.FontSize,
CPUTemperature,
)
if Conf.CPUTemp.Separator.Right.Enabled {
b.FullText += fmt.Sprintf(
@@ -210,6 +218,9 @@ func main() {
if Conf.Mem.Enabled {
var b I3BarOutBlock
b.Color = Conf.Mem.Color
b.Background = Conf.Mem.Background
if Conf.Mem.Separator.Left.Enabled {
b.FullText = fmt.Sprintf(
"<span color='%s' background='%s' size='%s'>%s</span>",
@@ -221,9 +232,22 @@ func main() {
}
if Conf.Mem.ShowSwap {
b.FullText += fmt.Sprintf("M:%d%% SHM:%dM SW:%dM", Memory.Usedpct, Memory.Shared, Memory.Swap)
b.FullText += fmt.Sprintf(
"<span font='%s' size='%s'>M:%d%% SHM:%dM SW:%dM</span>",
Conf.Mem.Font,
Conf.Mem.FontSize,
Memory.Usedpct,
Memory.Shared,
Memory.Swap,
)
} else {
b.FullText += fmt.Sprintf("M:%d%% SHM:%dM", Memory.Usedpct, Memory.Shared)
b.FullText += fmt.Sprintf(
"<span font='%s' size='%s'>M:%d%% SHM:%dM</span>",
Conf.Mem.Font,
Conf.Mem.FontSize,
Memory.Usedpct,
Memory.Shared,
)
}
if Conf.Mem.Separator.Right.Enabled {
@@ -245,6 +269,9 @@ func main() {
if Conf.LA.Enabled {
var b I3BarOutBlock
b.Color = Conf.LA.Color
b.Background = Conf.LA.Background
if Conf.LA.Separator.Left.Enabled {
b.FullText = fmt.Sprintf(
"<span color='%s' background='%s' size='%s'>%s</span>",
@@ -255,7 +282,12 @@ func main() {
)
}
b.FullText += fmt.Sprintf("LA: %s", La)
b.FullText += fmt.Sprintf(
"<span font='%s' size='%s'>LA:%s</span>",
Conf.LA.Font,
Conf.LA.FontSize,
La,
)
if Conf.LA.Separator.Right.Enabled {
b.FullText += fmt.Sprintf(
@@ -276,6 +308,9 @@ func main() {
if Conf.NetIf.Enabled {
var b I3BarOutBlock
b.Color = Conf.NetIf.Color
b.Background = Conf.NetIf.Background
if Conf.NetIf.Separator.Left.Enabled {
b.FullText = fmt.Sprintf(
"<span color='%s' background='%s' size='%s'>%s</span>",
@@ -286,7 +321,12 @@ func main() {
)
}
b.FullText += IfStatus
b.FullText += fmt.Sprintf(
"<span font='%s' size= '%s'>%s</span>",
Conf.NetIf.Font,
Conf.NetIf.FontSize,
IfStatus,
)
if Conf.NetIf.Separator.Right.Enabled {
b.FullText += fmt.Sprintf(
@@ -307,6 +347,9 @@ func main() {
if Conf.Vpn.Enabled {
var b I3BarOutBlock
b.Color = Conf.Vpn.Color
b.Background = Conf.Vpn.Background
if Conf.Vpn.Separator.Left.Enabled {
b.FullText = fmt.Sprintf(
"<span color='%s' background='%s' size='%s'>%s</span>",
@@ -317,7 +360,12 @@ func main() {
)
}
b.FullText += VPNStatus
b.FullText += fmt.Sprintf(
"<span font='%s' size='%s'>%s</span>",
Conf.Vpn.Font,
Conf.Vpn.FontSize,
VPNStatus,
)
if Conf.Vpn.Separator.Right.Enabled {
b.FullText += fmt.Sprintf(
@@ -338,6 +386,9 @@ func main() {
if Conf.Battery.Enabled {
var b I3BarOutBlock
b.Color = Conf.Battery.Color
b.Background = Conf.Battery.Background
if Conf.Battery.Separator.Left.Enabled {
b.FullText = fmt.Sprintf(
"<span color='%s' background='%s' size='%s'>%s</span>",
@@ -368,7 +419,10 @@ func main() {
if Conf.SimpleVolumePa.Enabled {
var b I3BarOutBlock
b.Name = "simple-volume-pa"
b.Color = Conf.SimpleVolumePa.Color
b.Background = Conf.SimpleVolumePa.Background
if Conf.SimpleVolumePa.Separator.Left.Enabled {
b.FullText = fmt.Sprintf(
@@ -380,6 +434,7 @@ func main() {
)
}
// Pango format is already applied in plugin src.
b.FullText += SoundVolume
if Conf.SimpleVolumePa.Separator.Right.Enabled {
@@ -400,7 +455,10 @@ func main() {
if Conf.Clock.Enabled {
var b I3BarOutBlock
b.Name = `wallclock`
b.Color = Conf.Clock.Color
b.Background = Conf.Clock.Background
if Conf.Clock.Separator.Left.Enabled {
b.FullText = fmt.Sprintf(
@@ -412,7 +470,12 @@ func main() {
)
}
b.FullText += Clock
b.FullText += fmt.Sprintf(
"<span font='%s' size='%s'>%s</span>",
Conf.Clock.Font,
Conf.Clock.FontSize,
Clock,
)
if Conf.Clock.Separator.Right.Enabled {
b.FullText += fmt.Sprintf(
@@ -425,7 +488,6 @@ func main() {
}
b.Markup = "pango"
b.Color = Conf.Clock.Color
b.Separator = false
j = append(j, b)

View File

@@ -36,16 +36,19 @@ func UpdateVolumeInfo() {
}
SoundVolume = fmt.Sprintf(
"<span size='%s'>%s</span>:%d%%",
Conf.SimpleVolumePa.FontSize,
"<span font='%s' size='%s'>%s</span><span font='%s' size='%s'>:%d%%</span>",
Conf.SimpleVolumePa.SymbolFont,
Conf.SimpleVolumePa.SymbolFontSize,
Conf.SimpleVolumePa.Symbol,
Conf.SimpleVolumePa.Font,
Conf.SimpleVolumePa.FontSize,
int64(vol*100),
)
UpdateReady <- true
for {
// Subscribe to update notification channel, to get info that volume changed
// Subscribe to update notification channel, to get info that volume changed.
pulseUpdate, err := pa.Updates()
if err != nil {
@@ -65,9 +68,12 @@ func UpdateVolumeInfo() {
}
SoundVolume = fmt.Sprintf(
"<span size='%s'>%s</span>:%d%%",
Conf.SimpleVolumePa.FontSize,
"<span font='%s' size='%s'>%s</span><span font='%s' size='%s'>:%d%%</span>",
Conf.SimpleVolumePa.SymbolFont,
Conf.SimpleVolumePa.SymbolFontSize,
Conf.SimpleVolumePa.Symbol,
Conf.SimpleVolumePa.Font,
Conf.SimpleVolumePa.FontSize,
int64(vol*100),
)
@@ -89,7 +95,7 @@ func UpdateVolumeInfo() {
func PaReinit() error {
var err error
// If we out of updates, it seems that someone killed pulseaudio server. Restart it.
// If we out of updates, seems someone killed pulseaudio server. Restart it.
cmd := exec.Command("pulseaudio", "--check")
if err := cmd.Run(); err == nil {

View File

@@ -53,6 +53,7 @@ func CleanZombies() {
for {
_, _ = syscall.Wait4(-1, nil, 0, &r)
time.Sleep(1 * time.Minute)
}
}