helix-switch-theme.sh (1545B)
1 #!/usr/bin/env bash
2
3 # exit on error
4 set -eo pipefail
5
6 # configuration
7 config_dir="$HOME/.config/helix"
8 config="$config_dir/config.toml"
9 config_theme="$config_dir/autothemes.toml"
10
11 # gather dark and light themes from config file
12 if [ -f "$config_theme" ]; then
13 dark_theme=$(
14 grep -e "^\s*theme_dark" "$config_theme" | \
15 sed -E -e 's/^\s*theme_dark\s*=\s*\"([^"]+)\".*$/\1/'
16 )
17 light_theme=$(
18 grep -e "^\s*theme_light" "$config_theme" | \
19 sed -E -e 's/^\s*theme_light\s*=\s*\"([^"]+)\".*$/\1/'
20 )
21 else
22 echo "
23 Config file $config_theme does not exist. Please create the file, e.g.:
24
25 theme_dark = \"adwaita-dark\"
26 theme_light = \"adwaita-light\"
27 "
28 exit 1
29 fi
30
31 # functions
32 function get_theme {
33 set +e
34 grep -c -e "^\s*theme\s*=\s*\"${1}\"" ${config}
35 set -e
36 }
37 function set_theme {
38 sed -E -e "s/^\s*(theme\s*=\s*)\"[^\"]+\"/\1\"${1}\"/" -i ${config}
39 }
40
41 # check whether helix currently uses the dark theme
42 is_dark=$(get_theme "${dark_theme}")
43 is_light=$(get_theme "${light_theme}")
44
45 # check whether input was given
46 if [ -z $1 ]; then
47 if [[ $is_dark != 0 ]]; then
48 target="light"
49 else
50 target="dark"
51 fi
52 else
53 target="$1"
54 fi
55
56
57 if [ "$target" == "dark" ]; then
58 if [[ $is_dark != 1 ]]; then
59 set_theme "${dark_theme}"
60 echo "[✓] Switched helix to dark!"
61 else
62 echo "[-] Did not switch helix theme."
63 fi
64 else
65 if [[ $is_light != 1 ]]; then
66 set_theme "${light_theme}"
67 echo "[✓] Switched helix to light!"
68 else
69 echo "[-] Did not switch helix theme."
70 fi
71 fi