aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYaroslav de la Peña Smirnov <yps@yaroslavps.com>2022-09-20 21:26:44 +0300
committerYaroslav de la Peña Smirnov <yps@yaroslavps.com>2022-09-20 21:26:44 +0300
commit24ac3cd2e11c114ef4c8ae1284953c8928f4a820 (patch)
treec43823a23d02dca5f57568b9167d7a37e1ad2fbf
parent2b1eac8bc54dbc514e24c64143dc34ef5f1caca5 (diff)
downloadswayrice-24ac3cd2e11c114ef4c8ae1284953c8928f4a820.tar.gz
swayrice-24ac3cd2e11c114ef4c8ae1284953c8928f4a820.zip
A way to change colors dynamically with foot
Also some cleanup
-rw-r--r--dotfiles/.config/zsh/.zshrc6
-rwxr-xr-xdotfiles/.local/bin/chcolors5
-rwxr-xr-xdotfiles/.local/bin/shtheme669
-rw-r--r--dotfiles/.profile2
-rw-r--r--telegram/comodo.tdesktop-palette452
5 files changed, 676 insertions, 458 deletions
diff --git a/dotfiles/.config/zsh/.zshrc b/dotfiles/.config/zsh/.zshrc
index a7f3000..aa1bc69 100644
--- a/dotfiles/.config/zsh/.zshrc
+++ b/dotfiles/.config/zsh/.zshrc
@@ -69,7 +69,11 @@ zle -N zle-keymap-select
[ -f "$HOME/.config/zsh/shortcuts" ] && . "$HOME/.config/zsh/shortcuts"
-[ -f "$HOME/.cache/colorscheme" ] && trap "source $HOME/.cache/colorscheme" DEBUG
+if [ -f "$HOME/.cache/colorscheme" ]; then
+ trap "source $HOME/.cache/colorscheme && shtheme ultramar-\$COLORSCHEME" SIGUSR1
+ source $HOME/.cache/colorscheme
+ shtheme ultramar-$COLORSCHEME
+fi
if [ -f /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh ]
then
diff --git a/dotfiles/.local/bin/chcolors b/dotfiles/.local/bin/chcolors
index e62b047..9cd4270 100755
--- a/dotfiles/.local/bin/chcolors
+++ b/dotfiles/.local/bin/chcolors
@@ -13,8 +13,5 @@ case $COLORSCHEME in
COLORSCHEME="dark" ;;
esac
-sed -i --follow-symlinks \
- "s/^colors:.*/colors: \*$COLORSCHEME/g" \
- $HOME/.config/alacritty/alacritty.yml
-
echo "export COLORSCHEME=$COLORSCHEME" > $HOME/.cache/colorscheme
+pkill -SIGUSR1 zsh
diff --git a/dotfiles/.local/bin/shtheme b/dotfiles/.local/bin/shtheme
new file mode 100755
index 0000000..2071019
--- /dev/null
+++ b/dotfiles/.local/bin/shtheme
@@ -0,0 +1,669 @@
+#!/bin/sh
+
+# Written by Aetnaeus.
+# Source: https://github.com/lemnos/theme.sh.
+# Licensed under the WTFPL provided this notice is preserved.
+
+# Find a broken theme? Want to add a missing one? PRs are welcome.
+
+VERSION=v1.1.5
+
+# Use truecolor sequences to simulate the end result.
+
+preview() {
+ awk -F": " -v target="$1" '
+ BEGIN {
+ "tput cols" | getline nc
+ "tput lines" | getline nr
+ nc = int(nc)
+ nr = int(nr)
+ }
+
+ /^# Themes/ { start++;next }
+ !start { next }
+
+ function hextorgb(s) {
+ hexchars = "0123456789abcdef"
+ s = tolower(s)
+
+ r = (index(hexchars, substr(s, 2, 1))-1)*16+(index(hexchars, substr(s, 3, 1))-1)
+ g = (index(hexchars, substr(s, 4, 1))-1)*16+(index(hexchars, substr(s, 5, 1))-1)
+ b = (index(hexchars, substr(s, 6, 1))-1)*16+(index(hexchars, substr(s, 7, 1))-1)
+ }
+
+ function fgesc(col) {
+ hextorgb(col)
+ return sprintf("\x1b[38;2;%d;%d;%dm", r, g, b)
+ }
+
+ function bgesc(col) {
+ hextorgb(col)
+ return sprintf("\x1b[48;2;%d;%d;%dm", r, g, b)
+ }
+
+ $0 == target {s++}
+
+ s && /^foreground:/ { fg = $2 }
+ s && /^background:/ { bg = $2 }
+ s && /^[0-9]+:/ { a[$1] = $2 }
+
+ /^ *$/ {s=0}
+
+ function puts(s, len, i, normesc, filling) {
+ normesc = sprintf("\x1b[0m%s%s", fgesc(fg), bgesc(bg))
+
+ len=s
+ gsub(/\033\[[^m]*m/, "", len)
+ len=length(len)
+
+ filling=""
+ for(i=0;i<(nc-len);i++) filling=filling" "
+
+ printf "%s%s%s%s\n", normesc, s, normesc, filling, ""
+ nr--
+ }
+
+ END {
+ puts("")
+ for (i = 0;i<16;i++)
+ puts(sprintf(" %s Color %d\x1b[0m", fgesc(a[i]), i))
+
+ # Note: Some terminals use different colors for bolded text and may produce slightly different ls output.
+
+ puts("")
+ puts(" # ls --color -F")
+ puts(sprintf(" file"))
+ puts(sprintf(" \x1b[1m%sdir/", fgesc(a[4])))
+ puts(sprintf(" \x1b[1m%sexecutable", fgesc(a[10])))
+ puts(sprintf(" \x1b[1m%ssymlink\x1b[0m%s%s", fgesc(a[6]), fgesc(fg), bgesc(bg)))
+
+
+ while(nr > 0) puts("")
+
+ printf "\x1b[0m"
+ }
+ ' < "$0"
+}
+
+# Alphabetize and dedupe theme list.
+
+normalize_themes() {
+ awk '
+ # We could eliminate the sorting logic by using gnu extensions but that would reduce portability.
+
+ function cmp(a,b,ordTbl, i,c1,c2,n) {
+ n = length(a) > length(b) ? length(b) : length(a)
+ for(i = 1;i <= n;i++) {
+ c1 = substr(a, i, 1)
+ c2 = substr(b, i, 1)
+
+ if(c1 != c2)
+ return ordTbl[c1] < ordTbl[c2]
+ }
+
+ return length(a) < length(b)
+ }
+
+ function sort(a,n, i,j,tmp,ordTbl) {
+ for(i = 0;i < 256;i++) ordTbl[sprintf("%c", i)] = i
+
+ for(i = 0;i < n;i++) {
+ tmp = a[i]
+ j = i-1
+ while(j >= 0 && cmp(tmp, a[j], ordTbl)) {
+ a[j+1] = a[j]
+ j--
+ }
+
+ a[j+1] = tmp
+ }
+ }
+
+ function sortKeys(a,keys, n,k) {
+ for(k in a)
+ keys[n++] = k
+ sort(keys, n)
+ return n
+ }
+
+ /^ *$/ { inTheme = 0;next }
+ !inTheme { name = $0;inTheme=1;themes[name] = "";next }
+ inTheme { themes[name] = themes[name]$0"\n" }
+
+ END {
+ n = sortKeys(themes, names)
+
+ print ""
+ for(i = 0;i < n;i++) {
+ print names[i]
+ print tolower(themes[names[i]])
+ }
+ }
+ ' "$@"
+}
+
+# Generate themes from one or more supplied kitty config files.
+
+generate_themes() {
+ awk -v argc=$# '
+ function chkProp(prop) {
+ if(!props[prop]) {
+ printf "ABORTING: %s is missing required property '\''%s'\''\n", currentFile, prop > "/dev/stderr"
+ aborted++
+ exit -1
+ }
+ }
+
+ function printTheme( name,i,prop) {
+ name = currentFile
+ gsub(/.*\//, "", name)
+ gsub(/\.conf$/, "", name)
+
+ print name
+
+ for (i = 0;i < 16;i++) {
+ prop = sprintf("color%d", i)
+
+ chkProp(prop)
+ printf "%d: %s\n", i, props[prop]
+ }
+
+ chkProp("foreground")
+ chkProp("background")
+ chkProp("cursor")
+
+ print "foreground: "props["foreground"]
+ print "background: "props["background"]
+ print "cursor: "props["cursor"]
+ print ""
+ }
+
+ FILENAME != currentFile {
+ if(currentFile)
+ printTheme()
+
+ currentFile = FILENAME
+ delete props
+ }
+
+ { props[$1] = $2 }
+
+ END { if(!aborted) printTheme() }
+ ' "$@"
+}
+
+# Add themes to the script from one or more supplied kitty config files.
+
+add() {
+ tmp1="$(mktemp)"
+ tmp2="$(mktemp)"
+
+ awk 'i { print } /^# Themes/ { i++ }' "$0" > "$tmp1"
+ echo "" >> "$tmp1"
+ generate_themes "$@" >> "$tmp1" || exit $?
+
+ awk '{print} /^# Themes/ { exit }' "$0" > "$tmp2"
+ normalize_themes "$tmp1" >> "$tmp2"
+
+
+ rm "$tmp1"
+ cat "$tmp2" > "$0" || exit $?
+
+ printf 'Successfully annexed %d themes. More! Feed me more!\n' $#
+}
+
+preview2() {
+ INHIBIT_THEME_HIST=1 "$0" "$1"
+
+ printf '\033[30mColor 0\n'
+ printf '\033[31mColor 1\n'
+ printf '\033[32mColor 2\n'
+ printf '\033[33mColor 3\n'
+ printf '\033[34mColor 4\n'
+ printf '\033[35mColor 5\n'
+ printf '\033[36mColor 6\n'
+ printf '\033[37mColor 7\n'
+
+ printf '\033[90mColor 8\n'
+ printf '\033[91mColor 9\n'
+ printf '\033[92mColor 10\n'
+ printf '\033[93mColor 11\n'
+ printf '\033[94mColor 12\n'
+ printf '\033[95mColor 13\n'
+ printf '\033[96mColor 14\n'
+ printf '\033[97mColor 15\n'
+
+ printf '\n\033[0m'
+ printf '# ls --color -F\n'
+ printf ' file\n'
+ printf ' \033[01;34mdir/\033[0m\n'
+ printf ' \033[01;32mexecutable\033[0m*\n'
+ printf ' \033[01;36msymlink\033[0m\n'
+
+ printf '\033[0m'
+}
+
+# Consumes a theme.sh definition from STDIN and applies it.
+
+apply_theme() {
+awk '
+ function tmuxesc(s) { return sprintf("\033Ptmux;\033%s\033\\", s) }
+ function normalize_term() {
+ # Term detection voodoo
+
+ if(ENVIRON["TERM_PROGRAM"] == "iTerm.app")
+ term="iterm"
+ else if(ENVIRON["TMUX"]) {
+ "tmux display-message -p \"#{client_termname}\"" | getline term
+ "tmux display-message -p \"#{client_termtype}\"" | getline termname
+
+ if(substr(termname, 1, 5) == "iTerm")
+ term="iterm"
+ is_tmux++
+ } else
+ term=ENVIRON["TERM"]
+ }
+
+ BEGIN {
+ normalize_term()
+
+ if(term == "iterm") {
+ bgesc="\033]Ph%s\033\\"
+ fgesc="\033]Pg%s\033\\"
+ colesc="\033]P%x%s\033\\"
+ curesc="\033]Pl%s\033\\"
+ } else {
+ #Terms that play nice :)
+
+ fgesc="\033]10;#%s\007"
+ bgesc="\033]11;#%s\007"
+ curesc="\033]12;#%s\007"
+ colesc="\033]4;%d;#%s\007"
+ }
+
+ if(is_tmux) {
+ fgesc=tmuxesc(fgesc)
+ bgesc=tmuxesc(bgesc)
+ curesc=tmuxesc(curesc)
+ colesc=tmuxesc(colesc)
+ }
+ }
+
+ /^foreground:/ { printf fgesc, substr($2, 2) > "/dev/tty" }
+ /^background:/ { printf bgesc, substr($2, 2) > "/dev/tty" }
+ /^cursor:/ { printf curesc, substr($2, 2) > "/dev/tty" }
+ /^[0-9]+:/ { printf colesc, $1, substr($2, 2) > "/dev/tty" }
+'
+}
+
+# Sets the current theme given a name and does the requisite bookkeeping.
+
+set_current_theme() {
+ awk -F": " -v target="$1" -v script="$0" '
+ /^# Themes/ { start++;next; }
+ !start { next }
+
+ $0 == target { found++;next; }
+
+ found { theme = theme $0 "\n" }
+ found && /^ *$/ { exit }
+
+ END {
+ if(found) {
+ printf "%s", theme | script
+
+ config_dir = (ENVIRON["XDG_CONFIG_HOME"] ? ENVIRON["XDG_CONFIG_HOME"] : ENVIRON["HOME"])
+
+ histfile = config_dir"/.theme_history"
+ inhibit_hist=ENVIRON["INHIBIT_THEME_HIST"]
+
+ if(!inhibit_hist) {
+ while((getline < histfile) > 0)
+ if($0 != target)
+ out = out $0 "\n"
+ close(histfile)
+
+ out = out target
+ print out > histfile
+ }
+ } else {
+ printf "Theme not found: %s\n", target > "/dev/stderr"
+ exit(-1)
+ }
+ }
+ ' < "$0"
+}
+
+# Dump the current theme in a format consumable by theme.sh
+# by attempting to read it from the terminal.
+#
+# NOTE: Many terms don't support this properly (e.g alacritty)
+
+# Refs
+
+# https://github.com/microsoft/terminal/issues/3718
+# https://github.com/alacritty/alacritty/blob/master/alacritty_terminal/src/ansi.rs#L972
+
+print_current_theme() {
+ awk '
+ function print_response(s) {
+ names["10;"] = "foreground"
+ names["11;"] = "background"
+ names["12;"] = "cursor"
+ for (i = 0; i < 16; i++)
+ names[sprintf("4;%d;", i)] = i
+
+ split(s, a, "]")
+ for (i in a) {
+ if (match(a[i], /rgb:/)) {
+ key = substr(a[i], 1, RSTART-1)
+
+ r=substr(a[i], RSTART+4, 2)
+ g=substr(a[i], RSTART+9, 2)
+ b=substr(a[i], RSTART+14, 2)
+
+ printf "%s: %s\n", names[key], "#"r g b
+ }
+ }
+ }
+
+ # We cant just use RS/getline for this since
+ # mawk does input buffering :(.
+
+ function read_response() {
+ buf = ""
+
+ # Accrue data until we encounter the terminating CSI response
+ while ((end=index(buf,"[")) == 0) {
+ # poor POSIX mans read :/
+ cmd="dd if=/dev/tty bs=1024 count=1 2> /dev/null"
+
+ while (cmd|getline data)
+ buf = buf data
+
+ close(cmd)
+ }
+
+ buf = substr(buf, 1, end-1)
+ return buf
+ }
+
+ BEGIN {
+ system("stty cbreak -echo")
+
+ tty = "/dev/tty"
+
+ # Yo dawg, I heard you like multiplexers...
+ if (ENVIRON["TMUX"]) {
+ # If we are running inside tmux we sent the request sequences
+ # to the currently attached terminal. Note that we still
+ # read the result from the virtual terminal.
+
+ # Flow:
+ # theme.sh (request) -> tty (response) -> pts (response) -> theme.sh
+ # where pts is the tmux pseudoterminal.
+
+ "tmux display-message -p \"#{client_tty}\""|getline tty
+ }
+
+ # Terminals may ignore these.
+
+ for(i=0;i<16;i++)
+ printf "\033]4;%d;?\007", i > tty
+
+ printf "\033]10;?\007" > tty
+ printf "\033]11;?\007" > tty
+ printf "\033]12;?\007" > tty
+
+ # Use a CSI DA1 sequence (supported by all terms)
+ # as a sentinel value to indicate end-of-response.
+ # (assumes request-response order is fifo)
+
+ printf "\033[c" > tty
+
+ print_response(read_response())
+
+ system("stty -cbreak echo")
+ }
+ '
+}
+
+isColorTerm() {
+ if [ -z "$TMUX" ]; then
+ [ -n "$COLORTERM" ]
+ else
+ tmux display-message -p '#{client_termfeatures}'|grep -q RGB
+ fi
+}
+
+list() {
+ case "$filterFlag" in
+ --light) filter=2 ;;
+ --dark) filter=1 ;;
+ *) filter=0 ;;
+ esac
+
+ awk -v filter="$filter" -F": " '
+ BEGIN {
+ config_dir = ENVIRON["XDG_CONFIG_HOME"] ? ENVIRON["XDG_CONFIG_HOME"] : ENVIRON["HOME"]
+
+ histfile = config_dir"/.theme_history"
+ while((getline < histfile) > 0) {
+ mru[nmru++] = $0
+ mruIndex[$0] = 1
+ }
+ }
+
+ function luma(s, r,g,b,hexchars) {
+ hexchars = "0123456789abcdef"
+ s = tolower(s)
+
+ r = (index(hexchars, substr(s, 2, 1))-1)*16+(index(hexchars, substr(s, 3, 1))-1)
+ g = (index(hexchars, substr(s, 4, 1))-1)*16+(index(hexchars, substr(s, 5, 1))-1)
+ b = (index(hexchars, substr(s, 6, 1))-1)*16+(index(hexchars, substr(s, 7, 1))-1)
+
+ return 0.2126 * r + 0.7152 * g + 0.0722 * b
+ }
+
+ /^# Theme/ { st++;next }
+ !st { next }
+
+ /^ *$/ { inner = 0;next }
+ !inner { name = $0;inner++;next }
+
+ /^background/ {
+ if((filter == 1 && luma($2) > 130) ||
+ (filter == 2 && luma($2) <= 130))
+ next
+
+ candidates[name] = 1
+ }
+
+ END {
+ for(c in candidates) {
+ if(!mruIndex[c])
+ print(c)
+ }
+
+ for(i = 0;i < nmru;i++)
+ if(candidates[mru[i]])
+ print(mru[i])
+ }
+ ' < "$0"
+}
+
+
+if [ -z "$1" ]; then
+ if [ -t 0 ]; then
+ echo "usage: $(basename "$0") [-v] [-h] <option>|<theme>"
+ exit 255
+ else
+ apply_theme
+ exit 0
+ fi
+fi
+
+case "$1" in
+ --dark|--light)
+ filterFlag=$1
+ shift
+ ;;
+esac
+
+case "$1" in
+-h|--help)
+ cat << "!"
+usage: theme.sh [--light] | [--dark] <option> | <theme>
+
+ If <theme> is provided it will immediately be set. Otherwise --dark or
+ --light optionally act as filters on the supplied option. Theme history is
+ stored in ~/.theme_history or ($XDG_CONFIG_HOME/.theme_history if set) by
+ default and will be used for ordering the otherwise alphabetical theme list
+ in the relevant options (-l/-i/-i2).
+
+ E.G:
+ 'theme.sh --dark -i'
+
+ will start an interactive selection of dark themes with the user's
+ most recently selected themes at the bottom of the list.
+
+ Theme definitions consistent with the internal format can also be piped
+ directly into the script.
+
+ E.G:
+
+ # theme.sh < input
+
+ Where input has the form:
+
+ 0: #4d4d4d
+ 1: #4d4d4d
+ ...
+ foreground: #dcdccc
+ background: #3f3f3f
+ cursor: #dcdccc
+
+OPTIONS
+ -l,--list Print all available themes.
+ -i,--interactive Start the interactive selection mode (requires fzf).
+ -i2,--interactive2 Interactive mode #2. This shows the theme immediately
+ instead of showing it in the preview window. Useful
+ if your terminal does have TRUECOLOR support.
+ -r,--random Set a random theme and print its name to stdout.
+ -a,--add <kitty config> Annexes the given kitty config file.
+ -p,--print-theme Attempt to read the current theme from the terminal
+ and print it to stdout in a format consumable by theme.sh.
+ NOTE: not all terminals support this option,
+ do not rely on it in scripts.
+ -v,--version Print the version and exit.
+
+SCRIPTING
+ If used from within a script, you will probably want to set
+ INHIBIT_THEME_HIST=1 to avoid mangling the user's theme history.
+!
+ ;;
+-p|--print-theme)
+ print_current_theme
+ ;;
+-i2|--interactive2)
+ command -v fzf > /dev/null 2>&1 || { echo "ERROR: -i requires fzf" >&2; exit 1; }
+ "$0" $filterFlag -l|fzf\
+ --tac\
+ --bind "enter:execute-silent($0 {})+accept"\
+ --bind "ctrl-c:execute($0 -l|tail -n1|xargs $0)+abort"\
+ --bind "esc:execute($0 {};echo {})+abort"\
+ --exact\
+ --no-sort\
+ --preview "$0 --preview2 {}"
+ ;;
+-r|--random)
+ # Sort -R is not portable :/
+
+ theme=$($0 $filterFlag -l|awk '{a[n++]=$0};END{srand();print(a[int(rand()*n)])}')
+ $0 "$theme"
+ echo "Theme: $theme"
+ ;;
+-i|--interactive)
+ command -v fzf > /dev/null 2>&1 || { echo "ERROR: -i requires fzf" >&2; exit 1; }
+ if ! isColorTerm; then
+ printf "WARNING: This does not appear to be a truecolor terminal, falling back to -i2
+ (use -i2 explicitly to get rid of this message or set COLORTERM)\n\n" >&2
+ "$0" $filterFlag -i2
+ else
+ "$0" $filterFlag -l|fzf\
+ --tac\
+ --exact\
+ --bind "ctrl-c:abort"\
+ --bind "esc:execute(echo {})+abort"\
+ --bind "enter:execute-silent($0 {})+accept"\
+ --no-sort\
+ --preview "$0 --preview {}"
+ fi
+ ;;
+-l|--list)
+ list
+ ;;
+-a|--add)
+ shift
+ add "$@"
+ ;;
+--preview2)
+ preview2 "$2"
+ ;;
+--preview)
+ preview "$2"
+ ;;
+-v|--version)
+ echo "$VERSION (original source https://github.com/lemnos/theme.sh)"
+ ;;
+*)
+ set_current_theme "$1"
+ ;;
+esac
+
+exit $?
+
+# Themes start here (avoid editing by hand)
+
+ultramar-dark
+0: #33333a
+1: #b73030
+2: #6d974b
+3: #b2872f
+4: #3f6e90
+5: #9c6992
+6: #5b8277
+7: #b0afa8
+8: #676775
+9: #c45c5c
+10: #92b078
+11: #e2b55a
+12: #81acc1
+13: #b48ead
+14: #7fac96
+15: #faf6e5
+foreground: #fcf8e2
+background: #151517
+cursor: #ffffff
+
+ultramar-light
+0: #151517
+1: #b73030
+2: #6d974b
+3: #b2872f
+4: #3f6e90
+5: #9c6992
+6: #5b8277
+7: #91908d
+8: #33333a
+9: #c45c5c
+10: #92b078
+11: #e2b55a
+12: #75a2b8
+13: #b48ead
+14: #7fac96
+15: #b0afa8
+foreground: #1b1e25
+background: #faf6e5
+cursor: #000000
+
diff --git a/dotfiles/.profile b/dotfiles/.profile
index 0627bdd..320c1ae 100644
--- a/dotfiles/.profile
+++ b/dotfiles/.profile
@@ -44,7 +44,7 @@ export $(dbus-launch)
# Start sway automatically upon login on tty1 or tty2
if [ -z $DISPLAY ] && [ $(tty) = /dev/tty1 ] || [ $(tty) = /dev/tty2 ]; then
# DBUS variables (for Artix)
- sway -d 2> ~/.cache/sway.log 1> /dev/null && clear && exit
+ exec sway -d 2> ~/.cache/sway.log 1> /dev/null && clear && exit
mv ~/.cache/sway.log ~/.cache/sway-crash-$(date +"%Y-%m-%dT%H:%M").log
fi
diff --git a/telegram/comodo.tdesktop-palette b/telegram/comodo.tdesktop-palette
deleted file mode 100644
index 796834e..0000000
--- a/telegram/comodo.tdesktop-palette
+++ /dev/null
@@ -1,452 +0,0 @@
-// THEME EDITOR SERVICE INFO START
-// ID: 0
-// ACCESS: 0
-// THEME EDITOR SERVICE INFO END
-
-windowBg: #1b1e25; // white: fallback for background
-windowFg: #e5e9f0; // black: fallback for text
-windowBgOver: #2d333f; // light gray: fallback for background with mouse over
-windowBgRipple: #2d333f; // darker gray: fallback for ripple effect
-windowFgOver: #e5e9f0; // black: fallback for text with mouse over
-windowSubTextFg: #697792; // gray: fallback for additional text
-windowSubTextFgOver: #697792; // darker gray: fallback for additional text with mouse over
-windowBoldFg: #e9e8e8; // dark gray: fallback for bold text
-windowBoldFgOver: #e9e9e9; // dark gray: fallback for bold text with mouse over
-windowBgActive: #5b8277; // bright blue: fallback for blue filled active areas
-windowFgActive: #ffffff; // white: fallback for text on active areas
-windowActiveTextFg: #7fac96; // online blue: fallback for active text like online status
-windowShadowFg: #000000; // black: fallback for shadow
-windowShadowFgFallback: windowBg; // gray: fallback for shadow without opacity
-shadowFg: #00000018; // most shadows (including opacity)
-slideFadeOutBg: #0000003c; // slide animation (chat to profile) fade out filling
-slideFadeOutShadowFg: windowShadowFg; // slide animation (chat to profile) fade out right section shadow
-imageBg: #000000; // image background fallback (when photo size is less than minimum allowed)
-imageBgTransparent: #ffffff; // image background when displaying an image with opacity where no opacity is needed
-activeButtonBg: #5b8277; // default active button background
-activeButtonBgOver: #7fac96; // default active button background with mouse over
-activeButtonBgRipple: #32a898; // default active button ripple effect
-activeButtonFg: #ffffff; // default active button text
-activeButtonFgOver: #ffffff; // default active button text with mouse over
-activeButtonSecondaryFg: #81acc1; // default active button additional text (selected messages counter in forward / delete buttons)
-activeButtonSecondaryFgOver: activeButtonSecondaryFg; // default active button additional text with mouse over
-activeLineFg: #7fac96; // default active line (like code input field bottom border when you log in and field is focused)
-activeLineFgError: #c45c5c; // default active line for error state (like code input field bottom border when you log in and you've entered incorrect code)
-lightButtonBg: #1b1e25; // default light button background (like buttons in boxes)
-lightButtonBgOver: #3a3a3a; // default light button background with mouse over
-lightButtonBgRipple: #313b43; // default light button ripple effect
-lightButtonFg: #7fac96; // default light button text
-lightButtonFgOver: lightButtonFg; // default light button text with mouse over
-attentionButtonFg: #f57474; // default attention button text (like confirm button on log out)
-attentionButtonFgOver: #e76060; // default attention button text with mouse over
-attentionButtonBgOver: #613a3a64; // default attention button background with mouse over
-attentionButtonBgRipple: #f4c3c2; // default attention button ripple effect
-outlineButtonBg: windowBg; // default left outlined button background (like shared media links in profiles)
-outlineButtonBgOver: #3a3a3a; // default left outlined button background with mouse over
-outlineButtonOutlineFg: #5b8277; // default left outlined button left outline border
-outlineButtonBgRipple: #3a3a3a; // default left outlined button ripple effect
-menuBg: #1b1e25; // default popup menu background
-menuBgOver: #ffffff; // default popup menu item background with mouse over
-menuBgRipple: #26292d; // default popup menu item ripple effect
-menuIconFg: #808080; // default popup menu item icon (like main menu)
-menuIconFgOver: #dcdcdc; // default popup menu item icon with mouse over
-menuSubmenuArrowFg: #757575; // default popup menu submenu arrow icon (like in message field context menu in case of RTL system language)
-menuFgDisabled: #737373; // default popup menu item disabled text (like unavailable items in message field context menu)
-menuSeparatorFg: #42484d; // default popup menu separator (like in message field context menu)
-scrollBarBg: #ffffff53; // default scroll bar current rectangle, the bar itself (like in chats list)
-scrollBarBgOver: #ffffff7a; // default scroll bar current rectangle with mouse over it
-scrollBg: #ffffff1a; // default scroll bar background
-scrollBgOver: #ffffff2c; // default scroll bar background with mouse over the scroll bar
-smallCloseIconFg: #6d6d6d; // small X icon (like in Show all sessions box to the right for sessions termination)
-smallCloseIconFgOver: #a3a3a3; // small X icon with mouse over
-radialFg: windowFgActive; // default radial loader line (like in Media Viewer when loading a photo)
-radialBg: #00000056; // default radial loader background (like in Media Viewer when loading a photo)
-placeholderFg: #818991; // default input field placeholder when field is not focused (like in phone input field when you log in)
-placeholderFgActive: #5d6165; // default input field placeholder when field is focused
-inputBorderFg: #6f6f6f; // default input field bottom border (like in code input field when you log in and field is not focused)
-filterInputBorderFg: #3d444b; // default rounded input field border (like in chats list search field when field is focused)
-filterInputInactiveBg: #3d444b; // default rounded input field background (like in chats list search field when field is inactive)
-checkboxFg: #6c6c6c; // default unchecked checkbox rounded rectangle (and also emoji category icons)
-sliderBgInactive: #545454; // default slider not active bar (like in Settings when you choose interface scale or custom notifications count)
-sliderBgActive: windowBgActive; // default slider active bar (like in Settings when you choose interface scale or custom notifications count)
-tooltipBg: #d4dadd; // tooltip background (like when you put mouse over the message timestamp and wait)
-tooltipFg: #9a9e9c; // tooltip text
-tooltipBorderFg: #c9d1db; // tooltip border
-titleShadow: #00000003; // one pixel line shadow at the bottom of custom window title
-titleBg: #3a4047; // custom window title background when window is inactive
-titleBgActive: titleBg; // custom window title background when window is active
-titleButtonBg: titleBg; // custom window title minimize/maximize/restore button background when window is inactive (Windows only)
-titleButtonFg: #8b9096; // custom window title minimize/maximize/restore button icon when window is inactive (Windows only)
-titleButtonBgOver: #4c535b; // custom window title minimize/maximize/restore button background with mouse over when window is inactive (Windows only)
-titleButtonFgOver: #e0e0e0; // custom window title minimize/maximize/restore button icon with mouse over when window is inactive (Windows only)
-titleButtonBgActive: titleButtonBg; // custom window title minimize/maximize/restore button background when window is active (Windows only)
-titleButtonFgActive: titleButtonFg; // custom window title minimize/maximize/restore button icon when window is active (Windows only)
-titleButtonBgActiveOver: titleButtonBgOver; // custom window title minimize/maximize/restore button background with mouse over when window is active (Windows only)
-titleButtonFgActiveOver: titleButtonFgOver; // custom window title minimize/maximize/restore button icon with mouse over when window is active (Windows only)
-titleButtonCloseBg: titleButtonBg; // custom window title close button background when window is inactive (Windows only)
-titleButtonCloseFg: titleButtonFg; // custom window title close button icon when window is inactive (Windows only)
-titleButtonCloseBgOver: #e81123; // custom window title close button background with mouse over when window is inactive (Windows only)
-titleButtonCloseFgOver: windowFgActive; // custom window title close button icon with mouse over when window is inactive (Windows only)
-titleButtonCloseBgActive: titleButtonCloseBg; // custom window title close button background when window is active (Windows only)
-titleButtonCloseFgActive: titleButtonCloseFg; // custom window title close button icon when window is active (Windows only)
-titleButtonCloseBgActiveOver: titleButtonCloseBgOver; // custom window title close button background with mouse over when window is active (Windows only)
-titleButtonCloseFgActiveOver: titleButtonCloseFgOver; // custom window title close button icon with mouse over when window is active (Windows only)
-titleFg: #666666; // custom window title text when window is inactive (macOS only)
-titleFgActive: #808080; // custom window title text when window is active (macOS only)
-trayCounterBg: #f23c34; // tray icon counter background
-trayCounterBgMute: #888888; // tray icon counter background if all unread messages are muted
-trayCounterFg: #ffffff; // tray icon counter text
-trayCounterBgMacInvert: #ffffff; // tray icon counter background when tray icon is pressed or when dark theme of macOS is used (macOS only)
-trayCounterFgMacInvert: #ffffff01; // tray icon counter text when tray icon is pressed or when dark theme of macOS is used (macOS only)
-layerBg: #0000007f; // box and main menu background layer fade
-cancelIconFg: #666666; // default for settings close icon and box search cancel icon
-cancelIconFgOver: #dcdcdc; // default for settings close icon and box search cancel icon with mouse over
-boxBg: windowBg; // box background
-boxTextFg: windowFg; // box text
-boxTextFgGood: #56dbce; // accepted box text (like when choosing username that is not occupied)
-boxTextFgError: #d84d4d; // rejecting box text (like when choosing username that is occupied)
-boxTitleFg: #ebebeb; // box title text
-boxSearchBg: #282e33; // box search field background (like in contacts box)
-boxTitleAdditionalFg: #808080; // box title additional text (like in create group box when you see chosen members count)
-boxTitleCloseFg: cancelIconFg; // settings close icon and box search cancel icon (like in contacts box)
-boxTitleCloseFgOver: cancelIconFgOver; // settings close icon and box search cancel icon (like in contacts box) with mouse over
-membersAboutLimitFg: #5e6065; // text in channel members box about the limit (max 200 last members are shown)
-contactsBg: #222528; // contacts (and some other) box row background
-contactsBgOver: #282e33; // contacts (and some other) box row background with mouse over
-contactsNameFg: boxTextFg; // contacts (and some other) box row name text
-contactsStatusFg: #808080; // contacts (and some other) box row additional text (like last seen stamp)
-contactsStatusFgOver: #808080; // contacts (and some other) box row additional text (like last seen stamp) with mouse over
-contactsStatusFgOnline: #55e1d3; // contacts (and some other) box row active additional text (like online status)
-photoCropFadeBg: layerBg; // avatar crop box fade background (when choosing a new photo in Settings or for a group)
-photoCropPointFg: #ffffff7f; // avatar crop box corner rectangles (when choosing a new photo in Settings or for a group)
-callArrowFg: #2bc7b8; // received phone call arrow (in calls list box)
-callArrowMissedFg: #dd5b4a; // missed phone call arrow (in calls list box)
-introBg: windowBg; // login background
-introTitleFg: #eeeeee; // login title text
-introDescriptionFg: #999999; // login description text
-introErrorFg: #999999; // login error text (like when providing a wrong log in code)
-introCoverTopBg: #188173; // intro gradient top (from)
-introCoverBottomBg: #188173; // intro gradient bottom (to)
-introCoverIconsFg: #34a495; // intro cloud graphics
-introCoverPlaneTrace: #329d8f; // intro plane traces
-introCoverPlaneInner: #ced9e2; // intro plane part
-introCoverPlaneOuter: #97a9b5; // intro plane part
-introCoverPlaneTop: #ffffff; // intro plane part
-dialogsMenuIconFg: menuIconFg; // main menu and lock telegram icon
-dialogsMenuIconFgOver: menuIconFgOver; // main menu and lock telegram icon with mouse over
-dialogsBg: windowBg; // chat list background
-dialogsNameFg: #f5f5f5; // chat list name text
-dialogsChatIconFg: dialogsNameFg; // chat list group or channel icon
-dialogsDateFg: #6d727c; // chat list date text
-dialogsTextFg: #8d939e; // chat list message text
-dialogsTextFgService: #ebebeb; // chat list group sender name text (or media message type text)
-dialogsDraftFg: #ec6657; // chat list draft label
-dialogsVerifiedIconBg: #53edde; // chat list verified icon background
-dialogsVerifiedIconFg: #282e33; // chat list verified icon check
-dialogsSendingIconFg: #727272; // chat list sending message icon (clock)
-dialogsSentIconFg: #5b8277; // chat list sent message tick / double tick icon
-dialogsUnreadBg: #05a091; // chat list unread badge background for not muted chat
-dialogsUnreadBgMuted: #495159; // chat list unread badge background for muted chat
-dialogsUnreadFg: #ffffff; // chat list unread badge text
-dialogsOnlineBadgeFg: #0ae7d2; // chat list online status
-dialogsBgOver: #353c43; // chat list background with mouse over
-dialogsNameFgOver: windowBoldFgOver; // chat list name text with mouse over
-dialogsChatIconFgOver: dialogsNameFgOver; // chat list group or channel icon with mouse over
-dialogsDateFgOver: #6d727c; // chat list date text with mouse over
-dialogsTextFgOver: #a3a7ae; // chat list message text with mouse over
-dialogsTextFgServiceOver: #f0f0f0; // chat list group sender name text with mouse over
-dialogsDraftFgOver: dialogsDraftFg; // chat list draft label with mouse over
-dialogsVerifiedIconBgOver: #53edde; // chat list verified icon background with mouse over
-dialogsVerifiedIconFgOver: dialogsVerifiedIconFg; // chat list verified icon check with mouse over
-dialogsSendingIconFgOver: dialogsSendingIconFg; // chat list sending message icon (clock) with mouse over
-dialogsSentIconFgOver: #41f0df; // chat list sent message tick / double tick icon with mouse over
-dialogsUnreadBgOver: #009687; // chat list unread badge background for not muted chat with mouse over
-dialogsUnreadBgMutedOver: #555e67; // chat list unread badge background for muted chat with mouse over
-dialogsUnreadFgOver: dialogsUnreadFg; // chat list unread badge text with mouse over
-dialogsBgActive: #5b8277; // chat list background for current (active) chat
-dialogsNameFgActive: windowFgActive; // chat list name text for current (active) chat
-dialogsChatIconFgActive: dialogsNameFgActive; // chat list group or channel icon for current (active) chat
-dialogsDateFgActive: windowFgActive; // chat list date text for current (active) chat
-dialogsTextFgActive: windowFgActive; // chat list message text for current (active) chat
-dialogsTextFgServiceActive: dialogsTextFgActive; // chat list group sender name text for current (active) chat
-dialogsDraftFgActive: #c6f7f3; // chat list draft label for current (active) chat
-dialogsVerifiedIconBgActive: dialogsTextFgActive; // chat list verified icon background for current (active) chat
-dialogsVerifiedIconFgActive: dialogsBgActive; // chat list verified icon check for current (active) chat
-dialogsSendingIconFgActive: #ffffff99; // chat list sending message icon (clock) for current (active) chat
-dialogsSentIconFgActive: dialogsTextFgActive; // chat list sent message tick / double tick icon for current (active) chat
-dialogsUnreadBgActive: dialogsTextFgActive; // chat list unread badge background for not muted chat for current (active) chat
-dialogsUnreadBgMutedActive: #cbf7e9; // chat list unread badge background for muted chat for current (active) chat
-dialogsUnreadFgActive: #039d8e; // chat list unread badge text for current (active) chat
-dialogsOnlineBadgeFgActive: #ffffff; // chat list online status for current (active) chat
-dialogsRippleBg: #43474d; //
-dialogsRippleBgActive: #12a798; //
-dialogsForwardBg: dialogsBgActive; // forwarding panel background (when forwarding messages in the smallest window size)
-dialogsForwardFg: dialogsNameFgActive; // forwarding panel text (when forwarding messages in the smallest window size)
-searchedBarBg: #3a3a3a; // search results bar background (in chats list, contacts box..)
-searchedBarFg: #a8a8a8; // search results bar text (in chats list, contacts box..)
-topBarBg: #2d333f; // top bar background (in chat view, media overview..)
-emojiPanBg: windowBg; // emoji panel background
-emojiPanCategories: topBarBg; // emoji panel categories background
-emojiPanHeaderFg: #90949a; // emoji panel section header text
-emojiPanHeaderBg: #fffffff2; // emoji panel section header background
-stickerPanDeleteBg: #000000cc; // delete X button background for custom sent stickers in stickers panel (legacy)
-stickerPanDeleteFg: windowFgActive; // delete X button icon for custom sent stickers in stickers panel (legacy)
-stickerPreviewBg: #000000b0; // sticker and GIF preview background (when you press and hold on a sticker)
-historyTextInFg: windowFg; // inbox message text
-historyTextInFgSelected: #ffffff; // inbox message selected text or text in a selected message
-historyTextOutFg: #e4ecf2; // outbox message text
-historyTextOutFgSelected: #ffffff; // outbox message selected text or text in a selected message
-historyLinkInFg: #37e1cb; // inbox message link
-historyLinkInFgSelected: #a7fff4; // inbox message link in a selected text or message
-historyLinkOutFg: #37e1cb; // outbox message link
-historyLinkOutFgSelected: #a7fff4; // outbox message link in a selected text or message
-historyFileNameInFg: historyTextInFg; // inbox media filename text
-historyFileNameInFgSelected: #ffffff; // inbox media filename text in a selected message
-historyFileNameOutFg: historyTextOutFg; // outbox media filename text
-historyFileNameOutFgSelected: #ffffff; // outbox media filename text in a selected message
-historyOutIconFg: #40e6c5; // outbox message tick / double tick icon
-historyOutIconFgSelected: #ffffff; // outbox message tick / double tick icon in a selected message
-historyIconFgInverted: #40e6c5; // media message tick / double tick icon (like in sent photo)
-historySendingOutIconFg: #9eface; // outbox sending message icon (clock)
-historySendingInIconFg: #76838b; // inbox sending message icon (clock) (like in sent messages to yourself or in sent messages to a channel)
-historySendingInvertedIconFg: #ffffffc8; // media sending message icon (clock) (like in sent photo)
-historyCallArrowInFg: #26c2ad; // received phone call arrow
-historyCallArrowInFgSelected: #ffffff; // received phone call arrow in a selected message
-historyCallArrowMissedInFg: callArrowMissedFg; // missed phone call arrow
-historyCallArrowMissedInFgSelected: #ffffff; // missed phone call arrow in a selected message
-historyCallArrowOutFg: #ffffff; // outgoing phone call arrow
-historyCallArrowOutFgSelected: #ffffff; // outgoing phone call arrow
-historyUnreadBarBg: #33393f; // new unread messages bar background
-historyUnreadBarBorder: shadowFg; // new unread messages bar shadow
-historyUnreadBarFg: #3cd3bf; // new unread messages bar text
-historyForwardChooseBg: #0000004c; // forwarding messages in a large window size "choose recipient" background
-historyForwardChooseFg: windowFgActive; // forwarding messages in a large window size "choose recipient" text
-historyPeer1NameFg: #ec7577; // red group member name
-historyPeer1NameFgSelected: #ffffff; // red group member name in a selected message
-historyPeer1UserpicBg: #e17076; // red userpic background
-historyPeer2NameFg: #86d67f; // green group member name
-historyPeer2NameFgSelected: #ffffff; // green group member name in a selected message
-historyPeer2UserpicBg: #7bc862; // green userpic background
-historyPeer3NameFg: #e4c054; // yellow group member name
-historyPeer3NameFgSelected: #ffffff; // yellow group member name in a selected message
-historyPeer3UserpicBg: #ccad4f; // yellow userpic background
-historyPeer4NameFg: #68c7f3; // blue group member name
-historyPeer4NameFgSelected: #ffffff; // blue group member name in a selected message
-historyPeer4UserpicBg: #65aadd; // blue userpic background
-historyPeer5NameFg: #b383f3; // purple group member name
-historyPeer5NameFgSelected: #ffffff; // purple group member name in a selected message
-historyPeer5UserpicBg: #a695e7; // purple userpic background
-historyPeer6NameFg: #e16794; // pink group member name
-historyPeer6NameFgSelected: #ffffff; // pink group member name in a selected message
-historyPeer6UserpicBg: #ee7aae; // pink userpic background
-historyPeer7NameFg: #57c9e0; // sea group member name
-historyPeer7NameFgSelected: #ffffff; // sea group member name in a selected message
-historyPeer7UserpicBg: #6ec9cb; // sea userpic background
-historyPeer8NameFg: #efb05d; // orange group member name
-historyPeer8NameFgSelected: #ffffff; // orange group member name in a selected message
-historyPeer8UserpicBg: #eda86c; // orange userpic background
-historyPeerUserpicFg: windowFgActive; // default userpic initials
-historyScrollBarBg: #8989897a; // scroll bar current rectangle, the bar itself in the chat view (adjusted)
-historyScrollBarBgOver: #6b6b6bbc; // scroll bar current rectangle with mouse over it in the chat view (adjusted)
-historyScrollBg: #5f5f5f4c; // scroll bar background (adjusted)
-historyScrollBgOver: #6262626b; // scroll bar background with mouse over the scroll bar (adjusted)
-msgInBg: #33393f; // inbox message background
-msgInBgSelected: #009687; // inbox selected message background (and background of selected text in those messages)
-msgOutBg: #2a2f33; // outbox message background
-msgOutBgSelected: #009687; // outbox selected message background (and background of selected text in those messages)
-msgSelectOverlay: #35d4bf4c; // overlay which is filling the media parts of selected messages (like in selected photo message)
-msgStickerOverlay: #35d4bf7f; // overlay which is filling the selected sticker message
-msgInServiceFg: windowActiveTextFg; // inbox message information text (like information about a forwarded message original sender)
-msgInServiceFgSelected: #ffffff; // inbox selected message information text (like information about a forwarded message original sender)
-msgOutServiceFg: #60e5cb; // outbox message information text (like information about a forwarded message original sender)
-msgOutServiceFgSelected: #ffffff; // outbox message information text (like information about a forwarded message original sender)
-msgInShadow: #748ea200; // inbox message shadow (below the bubble)
-msgInShadowSelected: #538ebb00; // inbox selected message shadow (below the bubble)
-msgOutShadow: #00000000; // outbox message shadow (below the bubble)
-msgOutShadowSelected: #37a78d00; // outbox selected message shadow (below the bubble)
-msgInDateFg: #828d94; // inbox message time text
-msgInDateFgSelected: #ffffff; // inbox selected message time text
-msgOutDateFg: #737f87; // outbox message time text
-msgOutDateFgSelected: #ffffff; // outbox selected message time text
-msgServiceFg: windowFgActive; // service message text (like date dividers or service message about the group title being changed)
-msgServiceBg: #363c43c8; // service message background (like in a service message about group title being changed) (adjusted)
-msgServiceBgSelected: #009687; // service message selected text background (like in a service message about group title being changed) (adjusted)
-msgInReplyBarColor: #32ceb9; // inbox message reply outline
-msgInReplyBarSelColor: #ffffff; // inbox selected message reply outline
-msgOutReplyBarColor: #32ceb9; // outbox message reply outline
-msgOutReplyBarSelColor: #ffffff; // outbox selected message reply outline
-msgImgReplyBarColor: msgServiceFg; // sticker message reply outline
-msgInMonoFg: #5aaba0; // inbox message monospace text (like a message sent with `test` text)
-msgOutMonoFg: #c2f2ec; // outbox message monospace text
-msgInMonoFgSelected: #a7fff4; // inbox message monospace text in a selected text or message
-msgOutMonoFgSelected: #c9fff8; // outbox message monospace text in a selected text or message
-msgDateImgFg: msgServiceFg; // media message time text (like time text in a sent photo)
-msgDateImgBg: #00000054; // media message time bubble background (like time bubble in a sent photo) or file with thumbnail download icon circle background
-msgDateImgBgOver: #00000074; // media message download icon circle background with mouse over (like file with thumbnail download icon)
-msgDateImgBgSelected: #1c706587; // selected media message time bubble background
-msgFileThumbLinkInFg: lightButtonFg; // inbox media file message with thumbnail download / open with button text
-msgFileThumbLinkInFgSelected: lightButtonFgOver; // inbox selected media file message with thumbnail download / open with button text
-msgFileThumbLinkOutFg: #60e5cb; // outbox media file message with thumbnail download / open with button text
-msgFileThumbLinkOutFgSelected: #ffffff; // outbox selected media file message with thumbnail download / open with button text
-msgFileInBg: #50d4c3; // inbox audio file download circle background
-msgFileInBgOver: #48cfbd; // inbox audio file download circle background with mouse over
-msgFileInBgSelected: #ffffff; // inbox selected audio file download circle background
-msgFileOutBg: #11bfab; // outbox audio file download circle background
-msgFileOutBgOver: #ffffff; // outbox audio file download circle background with mouse over
-msgFileOutBgSelected: #ffffff; // outbox selected audio file download circle background
-msgFile1Bg: #3fbbab; // blue shared links / files without image square thumbnail
-msgFile1BgDark: #269f8f; // blue shared files without image download circle background
-msgFile1BgOver: #52c4b5; // blue shared files without image download circle background with mouse over
-msgFile1BgSelected: #ffffff; // blue shared files without image download circle background if file is selected
-msgFile2Bg: #8ef5e8; // green shared links / shared files without image square thumbnail
-msgFile2BgDark: #7ef7e7; // green shared files without image download circle background
-msgFile2BgOver: #8df7e9; // green shared files without image download circle background with mouse over
-msgFile2BgSelected: #ffffff; // green shared files without image download circle background if file is selected
-msgFile3Bg: #e47272; // red shared links / shared files without image square thumbnail
-msgFile3BgDark: #cd5b5e; // red shared files without image download circle background
-msgFile3BgOver: #c35154; // red shared files without image download circle background with mouse over
-msgFile3BgSelected: #9f6a82; // red shared files without image download circle background if file is selected
-msgFile4Bg: #efc274; // yellow shared links / shared files without image square thumbnail
-msgFile4BgDark: #e6a561; // yellow shared files without image download circle background
-msgFile4BgOver: #dc9c5a; // yellow shared files without image download circle background with mouse over
-msgFile4BgSelected: #b19d84; // yellow shared files without image download circle background if file is selected
-historyFileInIconFg: #33393f; // inbox file without thumbnail (like audio file) download arrow icon
-historyFileInIconFgSelected: #009687; // inbox selected file without thumbnail (like audio file) download arrow icon
-historyFileInRadialFg: #33393f; // inbox file without thumbnail (like audio file) radial download animation line
-historyFileInRadialFgSelected: historyFileInIconFgSelected; // inbox selected file without thumbnail (like audio file) radial download animation line
-historyFileOutIconFg: #33393f; // outbox file without thumbnail (like audio file) download arrow icon
-historyFileOutIconFgSelected: #009687; // outbox selected file without thumbnail (like audio file) download arrow icon
-historyFileOutRadialFg: historyFileOutIconFg; // outbox file without thumbnail (like audio file) radial download animation line
-historyFileOutRadialFgSelected: #009687; // outbox selected file without thumbnail (like audio file) radial download animation line
-historyFileThumbIconFg: #efefef; // file with thumbnail (or photo / video) download arrow icon
-historyFileThumbIconFgSelected: #ffffff; // selected file with thumbnail (or photo / video) download arrow icon
-historyFileThumbRadialFg: historyFileThumbIconFg; // file with thumbnail (or photo / video) radial download animation line
-historyFileThumbRadialFgSelected: #ffffff; // selected file with thumbnail (or photo / video) radial download animation line
-historyVideoMessageProgressFg: historyFileThumbIconFg; // radial playback progress in round video messages
-msgWaveformInActive: windowBgActive; // inbox voice message active waveform lines (like played part of currently playing voice message)
-msgWaveformInActiveSelected: #ffffff; // inbox selected voice message active waveform lines (like played part of currently playing voice message)
-msgWaveformInInactive: #5d6b76; // inbox voice message inactive waveform lines (like upcoming part of currently playing voice message)
-msgWaveformInInactiveSelected: #41d1c0; // inbox selected voice message inactive waveform lines (like upcoming part of currently playing voice message)
-msgWaveformOutActive: #11bfab; // outbox voice message active waveform lines (like played part of currently playing voice message)
-msgWaveformOutActiveSelected: #ffffff; // outbox selected voice message active waveform lines (like played part of currently playing voice message)
-msgWaveformOutInactive: #596874; // outbox voice message inactive waveform lines (like upcoming part of currently playing voice message)
-msgWaveformOutInactiveSelected: #41d1c0; // outbox selected voice message inactive waveform lines (like upcoming part of currently playing voice message)
-msgBotKbOverBgAdd: #ffffff14; // this is painted over a bot inline keyboard button (which has msgServiceBg background) when mouse is over that button
-msgBotKbIconFg: msgServiceFg; // bot inline keyboard button icon in the top-right corner (like in @vote bot when a poll is ready to be shared)
-msgBotKbRippleBg: #9e9d9d10; // bot inline keyboard button ripple effect
-mediaInFg: msgInDateFg; // inbox media message status text (like in file that is being downloaded)
-mediaInFgSelected: msgInDateFgSelected; // inbox selected media message status text (like in file that is being downloaded)
-mediaOutFg: msgOutDateFg; // outbox media message status text (like in file that is being downloaded)
-mediaOutFgSelected: msgOutDateFgSelected; // outbox selected media message status text (like in file that is being downloaded)
-youtubePlayIconBg: #e83131c8; // youtube play icon background (when a link to a youtube video with a webpage preview is sent)
-youtubePlayIconFg: windowFgActive; // youtube play icon arrow (when a link to a youtube video with a webpage preview is sent)
-videoPlayIconBg: #0000007f; // other video play icon background (like when a link to a vimeo video with a webpage preview is sent)
-videoPlayIconFg: #ffffff; // other video play icon arrow (like when a link to a vimeo video with a webpage preview is sent)
-toastBg: #000000b2; // toast notification background (like when you click on your t.me link when editing your username)
-toastFg: windowFgActive; // toast notification text (like when you click on your t.me link when editing your username)
-reportSpamBg: #363c42; // report spam panel background (like a non contact user writes your for the first time)
-reportSpamFg: windowFg; // report spam panel text (when you send a report from that panel)
-historyToDownBg: #434d57; // arrow button background (to scroll to the end of the viewed chat)
-historyToDownBgOver: #515b65; // arrow button background with mouse over
-historyToDownBgRipple: #636d77; // arrow button ripple effect
-historyToDownFg: #adb4ba; // arrow button icon
-historyToDownFgOver: menuIconFgOver; // arrow button icon with mouse over
-historyToDownShadow: #00000040; // arrow button shadow
-historyComposeAreaBg: #2d333f; // history compose area background (message write area / reply information / forwarding information)
-historyComposeAreaFg: historyTextInFg; // history compose area text
-historyComposeAreaFgService: msgInDateFg; // history compose area text when replying to a media message
-historyComposeIconFg: menuIconFg; // history compose area icon (like emoji, attach, bot command..)
-historyComposeIconFgOver: menuIconFgOver; // history compose area icon with mouse over
-historySendIconFg: windowBgActive; // send message icon
-historySendIconFgOver: windowBgActive; // send message icon with mouse over
-historyPinnedBg: historyComposeAreaBg; // pinned message area background
-historyReplyBg: historyComposeAreaBg; // reply / forward / edit message area background
-historyReplyIconFg: windowBgActive; // reply / forward / edit message left icon
-historyReplyCancelFg: cancelIconFg; // reply / forward / edit message cancel button
-historyReplyCancelFgOver: cancelIconFgOver; // reply / forward / edit message cancel button with mouse over
-historyComposeButtonBg: historyComposeAreaBg; // unblock / join channel / mute channel button background
-historyComposeButtonBgOver: #31363c; // unblock / join channel / mute channel button background with mouse over
-historyComposeButtonBgRipple: #272b2f; // unblock / join channel / mute channel button ripple effect
-overviewCheckBg: #00000040; // shared files / links checkbox background for not selected rows when some rows are selected
-overviewCheckFg: #ffffff; // shared files / links checkbox icon for not selected rows when some rows are selected
-overviewCheckFgActive: #ffffff; // shared files / links checkbox icon for selected rows
-overviewPhotoSelectOverlay: #40ace333; // shared photos / videos / links fill for selected rows
-profileStatusFgOver: #9c9c9c; // group members list in group profile user last seen text with mouse over
-profileVerifiedCheckBg: windowBgActive; // profile verified check icon background
-profileVerifiedCheckFg: #ffffff; // profile verified check icon tick
-profileAdminStartFg: windowBgActive; // group members list admin star icon
-notificationsBoxMonitorFg: windowFg; // custom notifications settings box monitor color
-notificationsBoxScreenBg: dialogsBgActive; // #6389a8; // custom notifications settings box monitor screen background
-notificationSampleUserpicFg: windowBgActive; // custom notifications settings box small sample userpic placeholder
-notificationSampleCloseFg: #d7d7d7; // custom notifications settings box small sample close button placeholder
-notificationSampleTextFg: #d7d7d7; // custom notifications settings box small sample text placeholder
-notificationSampleNameFg: #939393; // custom notifications settings box small sample name placeholder
-changePhoneSimcardFrom: notificationSampleTextFg; // change phone number box left simcard icon
-changePhoneSimcardTo: notificationSampleNameFg; // change phone number box right simcard and plane icons
-mainMenuBg: windowBg; // main menu background
-mainMenuCoverBg: #009687; // main menu top cover background
-mainMenuCoverFg: windowFgActive; // main menu top cover text
-mainMenuCloudFg: activeButtonFg; //
-mainMenuCloudBg: #0e837f; //
-mediaPlayerBg: windowBg; // audio file player background
-mediaPlayerActiveFg: windowBgActive; // audio file player playback progress already played part
-mediaPlayerInactiveFg: sliderBgInactive; // audio file player playback progress upcoming (not played yet) part with mouse over
-mediaPlayerDisabledFg: #9dd1ef; // audio file player loading progress (when you're playing an audio file and switch to the previous one which is not loaded yet)
-mediaviewFileBg: windowBg; // file rectangle background (when you view a png file in Media Viewer and go to a previous, not loaded yet, file)
-mediaviewFileNameFg: windowFg; // file name in file rectangle
-mediaviewFileSizeFg: windowSubTextFg; // file size text in file rectangle
-mediaviewFileRedCornerFg: #d55959; // red file thumbnail placeholder corner in file rectangle (for a file without thumbnail, like .pdf)
-mediaviewFileYellowCornerFg: #e8a659; // yellow file thumbnail placeholder corner in file rectangle (for a file without thumbnail, like .zip)
-mediaviewFileGreenCornerFg: #49a957; // green file thumbnail placeholder corner in file rectangle (for a file without thumbnail, like .exe)
-mediaviewFileBlueCornerFg: #599dcf; // blue file thumbnail placeholder corner in file rectangle (for a file without thumbnail, like .dmg)
-mediaviewFileExtFg: activeButtonFg; // file extension text in file thumbnail placeholder in file rectangle
-mediaviewMenuBg: #383838; // context menu in Media Viewer background
-mediaviewMenuBgOver: #505050; // context menu item background with mouse over
-mediaviewMenuBgRipple: #676767; // context menu item ripple effect
-mediaviewMenuFg: windowFgActive; // context menu item text
-mediaviewBg: #1b1e25eb; // Media Viewer background
-mediaviewVideoBg: imageBg; // Media Viewer background when viewing a video in full screen
-mediaviewControlBg: #0000003c; // controls background (like next photo / previous photo)
-mediaviewControlFg: windowFgActive; // controls icon (like next photo / previous photo)
-mediaviewCaptionBg: #11111180; // caption text background (when viewing photo with caption)
-mediaviewCaptionFg: mediaviewControlFg; // caption text
-mediaviewTextLinkFg: #66f7e4; // caption text link
-mediaviewSaveMsgBg: toastBg; // save to file toast message background in Media Viewer
-mediaviewSaveMsgFg: toastFg; // save to file toast message text
-mediaviewPlaybackActive: #c7c7c7; // video playback progress already played part
-mediaviewPlaybackInactive: #252525; // video playback progress upcoming (not played yet) part
-mediaviewPlaybackActiveOver: #ffffff; // video playback progress already played part with mouse over
-mediaviewPlaybackInactiveOver: #474747; // video playback progress upcoming (not played yet) part with mouse over
-mediaviewPlaybackProgressFg: #ffffffc7; // video playback progress text
-mediaviewPlaybackIconFg: mediaviewPlaybackActive; // video playback controls icon
-mediaviewPlaybackIconFgOver: mediaviewPlaybackActiveOver; // video playback controls icon with mouse over
-mediaviewTransparentBg: #ffffff; // transparent filling part (when viewing a transparent .png file in Media Viewer)
-mediaviewTransparentFg: #cccccc; // another transparent filling part
-notificationBg: windowBg; // custom notification window background
-callBg: #26282cf2; // phone call popup background
-callNameFg: #ffffff; // phone call popup name text
-callFingerprintBg: #00000066; // phone call popup emoji fingerprint background
-callStatusFg: #aaabac; // phone call popup status text
-callIconFg: #ffffff; // phone call popup answer, hangup and mute mic icon
-callAnswerBg: #5ad1c1; // phone call popup answer button background
-callAnswerRipple: #42c2b1; // phone call popup answer button ripple effect
-callAnswerBgOuter: #3febc926; // phone call popup answer button outer ripple effect
-callHangupBg: #d75a5a; // phone call popup hangup button background
-callHangupRipple: #c04646; // phone call popup hangup button ripple effect
-callCancelBg: #ffffff; // phone call popup line busy cancel button background
-callCancelFg: #777777; // phone call popup line busy cancel button icon
-callCancelRipple: #f1f1f1; // phone call popup line busy cancel button ripple effect
-callMuteRipple: #ffffff12; // phone call popup mute mic ripple effect
-callBarBg: dialogsBgActive; // active phone call bar background
-callBarMuteRipple: dialogsRippleBgActive; // active phone call bar mute and hangup button ripple effect
-callBarBgMuted: #8f8f8f; // phone call bar with muted mic background
-callBarUnmuteRipple: #7f7f7f; // phone call bar with muted mic mute and hangup button ripple effect
-callBarFg: dialogsNameFgActive; // phone call bar text and icons
-importantTooltipBg: toastBg; //
-importantTooltipFg: toastFg; //
-importantTooltipFgLink: #65fce8; //
-filterInputActiveBg: #3d444b;
-botKbBg: #3d444b;
-botKbDownBg: #494f55;
-emojiIconFg: #6c7278;
-emojiIconFgActive: #36cdb9;
-overviewCheckBorder: #e4eaef;