summaryrefslogtreecommitdiffstats
path: root/script/rofi-convert-theme.sh
blob: 7ec801d0a35ea8dd04c3b797fb64951a8498493a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#!/usr/bin/env bash
#
# This code is released in public domain by Dave Davenport <qball@gmpclient.org> 
# This converts from old style theme (< 1.4) to new style theme (>= 1.4)
#
function update_color ()
{
    var=${1}
    var="${var#"${var%%[![:space:]]*}"}"   # remove leading whitespace characters
    var="${var%"${var##*[![:space:]]}"}"   # remove trailing whitespace characters
    if [[ ${var} =~ argb:[0-9a-fA-F]{6,8} ]]
    then
        echo "#${var:5}"
    else
        echo ${var}
    fi
}

function parse_window_color ()
{
    OLDIFS=${IFS}
    IFS=","
    entries=( ${1} )
    echo "@window {"
    echo "    background: $( update_color ${entries[0]});"
    echo "    foreground: $( update_color ${entries[1]});"
    echo "}"
    if [ -n "${entries[2]}" ]
    then
        echo "@separator {"
        echo "    foreground: $( update_color ${entries[2]});"
        echo "}"
        echo "@scrollbar {"
        echo "    foreground: $( update_color ${entries[2]});"
        echo "}"
    fi
    IFS=${OLDIFS}
}

function parse_color ()
{
    state=$1
    OLDIFS=${IFS}
    IFS=","
    entries=( ${2} )
    echo "@textbox normal.${state} { "
    echo "    background: $( update_color ${entries[0]});"
    echo "    foreground: $( update_color ${entries[1]});"
    echo "}"
    echo "@textbox selected.${state} { "
    echo "    background: $( update_color ${entries[3]});"
    echo "    foreground: $( update_color ${entries[4]});"
    echo "}"
    echo "@textbox alternate.${state} { "
    echo "    background: $( update_color ${entries[2]});"
    echo "    foreground: $( update_color ${entries[1]});"
    echo "}"
    IFS=${OLDIFS}
}

while read LINE
do
    if [[ ${LINE} =~ ^rofi\.color-normal: ]]
    then
        parse_color "normal" "${LINE:18}" 
    elif [[ ${LINE} =~ ^rofi\.color-urgent: ]]
    then
        parse_color "urgent" "${LINE:18}" 
    elif [[ ${LINE} =~ ^rofi\.color-active: ]]
    then
        parse_color "active" "${LINE:18}" 
    elif [[ ${LINE} =~ ^rofi\.color-window: ]]
    then
        parse_window_color "${LINE:18}"
    fi
done