blob: 5e6ad031e2c76360f2ad3b81240407e08f49f1b0 (
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
77
78
79
80
81
|
#!/usr/bin/env fish
# Usage:
# caelestia scheme <scheme> <flavour> [mode]
# caelestia scheme <scheme> [flavour]
# caelestia scheme [scheme]
function set-scheme -a path name mode
mkdir -p $C_STATE/scheme
# Update scheme colours
cp $path $C_STATE/scheme/current.txt
# Update scheme name
echo -n $name > $C_STATE/scheme/current-name.txt
# Update scheme mode
echo -n $mode > $C_STATE/scheme/current-mode.txt
log "Changed scheme to $name ($mode)"
end
set -l src (dirname (status filename))/..
set -l schemes $src/data/schemes
. $src/util.fish
set -l scheme $argv[1]
set -l flavour $argv[2]
set -l mode $argv[3]
set -l valid_schemes (basename -a $schemes/*)
test -z "$scheme" && set -l scheme (random choice $valid_schemes)
if contains -- "$scheme" $valid_schemes
set -l flavours (basename -a (find $schemes/$scheme/ -mindepth 1 -maxdepth 1 -type d) 2> /dev/null)
set -l modes (basename -s .txt (find $schemes/$scheme/ -mindepth 1 -maxdepth 1 -type f) 2> /dev/null)
if test -n "$modes"
# Scheme only has one flavour, so second arg is mode
set -l mode $flavour
if test -z "$mode"
# Try to use current mode if not provided and current mode exists for flavour, otherwise random mode
set mode (cat $C_STATE/scheme/current-mode.txt 2> /dev/null)
contains -- "$mode" $modes || set mode (random choice $modes)
end
if contains -- "$mode" $modes
# Provided valid mode
set-scheme $schemes/$scheme/$mode.txt $scheme $mode
else
error "Invalid mode for $scheme: $mode"
end
else
# Scheme has multiple flavours, so second arg is flavour
test -z "$flavour" && set -l flavour (random choice $flavours)
if contains -- "$flavour" $flavours
# Provided valid flavour
set -l modes (basename -s .txt $schemes/$scheme/$flavour/*.txt)
if test -z "$mode"
# Try to use current mode if not provided and current mode exists for flavour, otherwise random mode
set mode (cat $C_STATE/scheme/current-mode.txt 2> /dev/null)
contains -- "$mode" $modes || set mode (random choice $modes)
end
if contains -- "$mode" $modes
# Provided valid mode
set-scheme $schemes/$scheme/$flavour/$mode.txt $scheme-$flavour $mode
else
error "Invalid mode for $scheme $flavour: $mode"
end
else
# Invalid flavour
error "Invalid flavour for $scheme: $flavour"
end
end
else
error "Invalid scheme: $scheme"
end
|