.
675 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 | [bmac]: https://www.buymeacoffee.com/adi1090x
3 | [ko-fi]: https://ko-fi.com/adi1090x
4 | [paypal]: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=U3VK2SSVQWAPN
5 | [patreon]: https://www.patreon.com/adi1090x
6 |
7 | # Canvas
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 | A `bash` script to generate and apply different types of **gradient** & **blured** wallpapers.
18 |
19 | 
20 |
21 | ### Features
22 |
23 | + Generate a `solid color` wallpaper
24 | + Generate a `random blured` wallpaper
25 | + Generate linear, radial, bilinear(4 colored) & twisted `gradient` wallpapers
26 | + Generate random, twisted or colored `plasma` wallpapers
27 | + Allows you to pick colors or fetch colors from `.Xresources` file for wallpaper generation
28 |
29 | ### Dependencies
30 |
31 | + `imagemagick`
32 | + `feh`
33 | + `xcolor`
34 | + `xrandr` (only if you use it on xfce)
35 |
36 | ### Installation
37 |
38 | + Clone this repository...
39 | ```bash
40 | cd $HOME
41 | git clone https://github.com/adi1090x/canvas.git
42 | cd canvas
43 | chmod +x canvas
44 |
45 | # you can copy this script in bin dir for easy use
46 | sudo cp canvas /usr/local/bin
47 | ```
48 |
49 | + Run the program and choose an option
50 | ```
51 | $ ./canvas -h
52 |
53 | ┏━╸┏━┓┏┓╻╻ ╻┏━┓┏━┓
54 | ┃ ┣━┫┃┗┫┃┏┛┣━┫┗━┓
55 | ┗━╸╹ ╹╹ ╹┗┛ ╹ ╹┗━┛
56 | Canvas V3.0 : The Wallpaper Generator.
57 | Developed By : Aditya Shakya (@adi1090x)
58 |
59 | Usage : canvas [-h] [-S wxh] [-B] [-s] [-l] [-r] [-t] [-b] [-p] [-n] [-a] [-R]
60 |
61 | Options:
62 | -h --help Show this help message & exit
63 | -S --size Size of the wallpaper (default is 1366x768)
64 | -B --blurred Generate a random blurred wallpaper
65 | -s --solid Generate a solid color wallpaper
66 | -l --linear Generate a linear gradient wallpaper
67 | -r --radial Generate a radial gradient wallpaper
68 | -t --twisted Generate a twisted gradient wallpaper
69 | -b --bilinear Generate a bilinear(4point) gradient wallpaper
70 | -p --plasma Generate a plasma wallpaper
71 | -n --no-preview Do not show preview when image is generated
72 | -a --autobg Automatically set as wallpaper (implies -n)
73 | -R --randomize Generate a random wallpaper
74 | ```
75 |
76 | ### Usage
77 |
78 | Though you can pick colors, Here's a [list](https://imagemagick.org/www/script/color.php) of all supported color names.
79 |
80 | **1**. Generate random blured wallpaper...
81 |
82 | ```
83 | $ canvas -B
84 |
85 | Enter the blur strength (maximum 30): 12
86 |
87 | Set as desktop background? (y/n): y
88 | ```
89 |
90 | |Blured 1|Blured 2|
91 | |-|-|
92 | |||
93 |
94 | **2**. Generate a solid color wallpaper...
95 |
96 | ```
97 | $ canvas -s
98 |
99 | Pick Colors or Enter Colors or fetch from .Xresources file? (p/e/x): p
100 |
101 | Pick a color...
102 | Generating wallpaper with color: #BA68C8
103 |
104 | Set as desktop background? (y/n): y
105 |
106 | $ canvas -s
107 |
108 | Pick Colors or Enter Colors or fetch from .Xresources file? (p/e/x): e
109 |
110 | Enter the color name or hex (eg: teal, #EBCB8B): #A3BE8C
111 |
112 | Set as desktop background? (y/n): y
113 |
114 | $ canvas -s
115 |
116 | Pick Colors or Enter Colors or fetch from .Xresources file? (p/e/x): x
117 |
118 | ██████ ██████ ██████ ██████ ██████ ██████
119 | ██01██ ██02██ ██03██ ██04██ ██05██ ██06██
120 | ██████ ██████ ██████ ██████ ██████ ██████
121 |
122 | ██████ ██████ ██████ ██████ ██████ ██████
123 | ██07██ ██08██ ██09██ ██10██ ██11██ ██12██
124 | ██████ ██████ ██████ ██████ ██████ ██████
125 |
126 | Enter the color number (without zero): 1
127 |
128 | Generating wallpaper with color: #BF616A
129 |
130 | Set as desktop background? (y/n): y
131 | ```
132 | |Solid - #BA68C8|Solid - #A3BE8C|
133 | |-|-|
134 | |||
135 |
136 | **3**. Generate a linear gradient wallpaper...
137 |
138 | ```
139 | $ canvas -l
140 |
141 | Pick Colors or Enter Colors or fetch from .Xresources file? (p/e/x): p
142 |
143 | Pick first color...
144 | Pick second color...
145 |
146 | Generating wallpaper with colors: #FB8784, #70D675
147 |
148 | Enter the rotation angle (default is 0): 60
149 |
150 | Set as desktop background? (y/n): y
151 |
152 | $ canvas -l
153 |
154 | Pick Colors or Enter Colors or fetch from .Xresources file? (p/e/x): e
155 |
156 | Enter the colors name or hex (format: color1-color2): orange-purple
157 |
158 | Enter the rotation angle (default is 0): 90
159 |
160 | Set as desktop background? (y/n): y
161 | ```
162 |
163 | |Linear Gradient 1|Linear Gradient 2|
164 | |-|-|
165 | |||
166 |
167 | **4**. Generate a radial gradient wallpaper...
168 |
169 | ```
170 | $ canvas -r
171 |
172 | Pick Colors or Enter Colors or fetch from .Xresources file? (p/e/x): p
173 |
174 | Pick first color...
175 | Pick second color...
176 |
177 | Generating wallpaper with colors: #DA0B86, #200D74
178 |
179 | Shape? [ 1.diagonal | 2.ellipse | 3.maximum | 4.minimum ] (1/2/3/4): 3
180 |
181 | Enter the rotation angle (default is 0): 0
182 |
183 | Set as desktop background? (y/n): y
184 |
185 | $ canvas -r
186 |
187 | Pick Colors or Enter Colors or fetch from .Xresources file? (p/e/x): e
188 |
189 | Enter the colors name or hex (format: color1-color2): red-black
190 |
191 | Shape? [ 1.diagonal | 2.ellipse | 3.maximum | 4.minimum ] (1/2/3/4): 2
192 |
193 | Enter the rotation angle (default is 0): 20
194 |
195 | Set as desktop background? (y/n): y
196 | ```
197 |
198 | |Radial Gradient Max|Radial Gradient Ellipse|
199 | |-|-|
200 | |||
201 |
202 | **5**. Generate a twisted gradient wallpaper...
203 |
204 | ```
205 | $ canvas -t
206 |
207 | Pick Colors or Enter Colors or fetch from .Xresources file? (p/e/x): p
208 |
209 | Pick first color...
210 | Pick second color...
211 |
212 | Generating wallpaper with colors: #EC7875, #61C766
213 |
214 | Enter the twisting amount (maximum 500): 200
215 |
216 | Set as desktop background? (y/n): y
217 |
218 | $ canvas -t
219 |
220 | Pick Colors or Enter Colors or fetch from .Xresources file? (p/e/x): e
221 |
222 | Enter the colors name or hex (format: color1-color2): blue-pink
223 |
224 | Enter the twisting amount (maximum 500): 180
225 |
226 | Set as desktop background? (y/n): y
227 | ```
228 |
229 | |Twisted Gradient 1|Twisted Gradient 2|
230 | |-|-|
231 | |||
232 |
233 | **6**. Generate a bilinear gradient wallpaper...
234 |
235 | ```
236 | $ canvas -b
237 |
238 | Pick Colors or Enter Colors or fetch from .Xresources file? (p/e/x): p
239 |
240 | Pick first color...
241 | Pick second color...
242 | Pick third color...
243 | Pick fourth color...
244 |
245 | Generating wallpaper with colors: #FB8784, #70D675, #FFE744 & #51B4FF
246 |
247 | Smooth or Regular? (s/r): r
248 |
249 | Set as desktop background? (y/n): y
250 |
251 | $ canvas -b
252 |
253 | Pick Colors or Enter Colors or fetch from .Xresources file? (p/e/x): e
254 |
255 | Enter first color (eg: red, #EC7875): teal
256 | Enter second color (eg: green, #61C766): pink
257 | Enter third color (eg: yellow, #FDD835): purple
258 | Enter fourth color (eg: blue, #42A5F5): khaki
259 |
260 | Smooth or Regular? (s/r): s
261 |
262 | Please wait...
263 | Set as desktop background? (y/n): y
264 | ```
265 |
266 | |Bilinear 1|Bilinear 2|
267 | |-|-|
268 | |||
269 |
270 | **7**. Generate a plasma wallpaper...
271 |
272 | ```
273 | $ canvas -p
274 |
275 | Random, Twisted or Custom colors? (r/t/c): r
276 |
277 | Set as desktop background? (y/n): n
278 |
279 | $ canvas -p
280 |
281 | Random, Twisted or Custom colors? (r/t/c): t
282 |
283 | Set as desktop background? (y/n): n
284 | ```
285 |
286 | |Plasma Normal|Plasma Twisted|
287 | |-|-|
288 | |||
289 |
290 | ### Common Issues
291 |
292 | 1. **Wallpaper not changing** : If your wallpaper is not changing, then open an issue and show me the output of `echo $DESKTOP_SESSION`.
293 |
294 | 2. **Not working on XFCE** : If this script is not working on xfce, then open the terminal and run `xfconf-query -c xfce4-desktop -m` and change the wallpaper (any) via *xfce4-settings-manager*.
295 | In terminal, *xfconf-query* will print lines starting with `set:`, which show which properties have been changed, check `screen` & `monitor` values and modify the script accordingly.
296 | ```bash
297 | 105 ## For XFCE
298 | 106 if [[ "$OSTYPE" == "linux"* ]]; then
299 | 107 SCREEN="0"
300 | 108 MONITOR="1"
301 | 109 fi
302 |
303 | ```
304 |
305 | ### FYI
306 |
307 | + In KDE, it changes the wallpaper in all the Activities.
308 | + If you can improve it, you're welcome.
309 | + Have Fun!
310 |
--------------------------------------------------------------------------------
/canvas:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | ## Author : Aditya Shakya (adi1090x)
4 | ## Mail : adi1090x@gmail.com
5 | ## Github : @adi1090x
6 | ## Twitter : @adi1090x
7 |
8 | ## Canvas - An Imagemagick Script To Generate Wallpapers.
9 |
10 | ## ANSI Colors (FG & BG)
11 | RED="$(printf '\033[31m')" GREEN="$(printf '\033[32m')"
12 | ORANGE="$(printf '\033[33m')" BLUE="$(printf '\033[34m')"
13 | MAGENTA="$(printf '\033[35m')" CYAN="$(printf '\033[36m')"
14 | WHITE="$(printf '\033[37m')" BLACK="$(printf '\033[30m')"
15 | REDBG="$(printf '\033[41m')" GREENBG="$(printf '\033[42m')"
16 | ORANGEBG="$(printf '\033[43m')" BLUEBG="$(printf '\033[44m')"
17 | MAGENTABG="$(printf '\033[45m')" CYANBG="$(printf '\033[46m')"
18 | WHITEBG="$(printf '\033[47m')" BLACKBG="$(printf '\033[40m')"
19 |
20 | ## Dir, Size, Name, Etc
21 | DIR="`xdg-user-dir PICTURES`/Canvas"
22 | size="1366x768"
23 | psize="500x281"
24 | name="Canvas_$(date +%Y-%m-%d_%I-%M-%S).png"
25 |
26 | ## Wordsplit in ZSH
27 | set -o shwordsplit 2>/dev/null
28 |
29 | ## Script Termination
30 | exit_on_signal_SIGINT() {
31 | { printf "${RED}\n\n%s\n" "[!] Program Interrupted." 2>&1; echo; reset_color; }
32 | exit 0
33 | }
34 |
35 | exit_on_signal_SIGTERM() {
36 | { printf "${RED}\n\n%s\n" "[!] Program Terminated." 2>&1; echo; reset_color; }
37 | exit 0
38 | }
39 |
40 | trap exit_on_signal_SIGINT SIGINT
41 | trap exit_on_signal_SIGTERM SIGTERM
42 |
43 | ## Reset terminal colors
44 | reset_color() {
45 | tput sgr0 # reset attributes
46 | tput op # reset color
47 | return
48 | }
49 |
50 | ## Prerequisite
51 | Prerequisite() {
52 | dependencies=(convert feh xcolor)
53 | for dependency in "${dependencies[@]}"; do
54 | type -p "$dependency" &>/dev/null || {
55 | echo -e ${RED}"ERROR: Could not find ${GREEN}'${dependency}'${RED}, is it installed?" >&2
56 | { reset_color; exit 1; }
57 | }
58 | done
59 |
60 | if [[ ! -d "$DIR" ]]; then
61 | mkdir -p "$DIR"
62 | fi
63 | }
64 |
65 | ## Usage
66 | usage() {
67 | clear
68 | cat <<- EOF
69 | ${RED}┏━╸${GREEN}┏━┓${ORANGE}┏┓╻${BLUE}╻ ╻${MAGENTA}┏━┓${CYAN}┏━┓${WHITE}
70 | ${RED}┃ ${GREEN}┣━┫${ORANGE}┃┗┫${BLUE}┃┏┛${MAGENTA}┣━┫${CYAN}┗━┓${WHITE}
71 | ${RED}┗━╸${GREEN}╹ ╹${ORANGE}╹ ╹${BLUE}┗┛ ${MAGENTA}╹ ╹${CYAN}┗━┛${WHITE}
72 | Canvas V3.0 : The Wallpaper Generator.
73 | Developed By : Aditya Shakya (@adi1090x)
74 |
75 | Usage : canvas [-h] [-S wxh] [-B] [-s] [-l] [-r] [-t] [-b] [-p] [-n] [-a] [-R]
76 |
77 | Options:
78 | -h --help Show this help message & exit
79 | -S --size Size of the wallpaper (default is 1366x768)
80 | -B --blurred Generate a random blurred wallpaper
81 | -s --solid Generate a solid color wallpaper
82 | -l --linear Generate a linear gradient wallpaper
83 | -r --radial Generate a radial gradient wallpaper
84 | -t --twisted Generate a twisted gradient wallpaper
85 | -b --bilinear Generate a bilinear(4point) gradient wallpaper
86 | -p --plasma Generate a plasma wallpaper
87 | -n --no-preview Do not show preview when image is generated
88 | -a --autobg Automatically set as wallpaper (implies -n)
89 | -R --randomize Generate a random wallpaper
90 |
91 | EOF
92 | }
93 |
94 | ## Set wallpaper in kde
95 | set_kde() {
96 | qdbus org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.evaluateScript "
97 | var allDesktops = desktops();
98 | print (allDesktops);
99 | for (i=0;i/dev/null &
178 | fi
179 | }
180 |
181 | ## Pick the colors
182 | color_picker() {
183 | picker_app="xcolor --format hex --preview-size 255 --scale 10"
184 | if [[ "$SOLID" == "true" ]]; then
185 | { echo; echo -n ${ORANGE}"Pick a color... "; }
186 | color=$($picker_app)
187 | { echo; echo ${ORANGE}"Generating wallpaper with color:${GREEN} $color"; }
188 | elif [[ "$GRADIENT" == "true" ]] || [[ "$RGRADIENT" == "true" ]] || [[ "$TGRADIENT" == "true" ]]; then
189 | { echo; echo -n ${ORANGE}"Pick first color... "; }
190 | color1=$($picker_app)
191 | { echo; echo -n ${ORANGE}"Pick second color... "; }
192 | color2=$($picker_app)
193 | color="$color1-$color2"
194 | { echo; echo ${ORANGE}"Generating wallpaper with colors:${GREEN} $color1, $color2"; }
195 | elif [[ "$BGRADIENT" == "true" ]]; then
196 | { echo; echo -n ${ORANGE}"Pick first color... "; }
197 | color1=$($picker_app)
198 | { echo; echo -n ${ORANGE}"Pick second color... "; }
199 | color2=$($picker_app)
200 | { echo; echo -n ${ORANGE}"Pick third color... "; }
201 | color3=$($picker_app)
202 | { echo; echo -n ${ORANGE}"Pick fourth color... "; }
203 | color4=$($picker_app)
204 | { echo; echo ${ORANGE}"Generating wallpaper with colors:${GREEN} $color1, $color2, $color3 & $color4"; }
205 | fi
206 | }
207 |
208 | ## Show terminal colors
209 | color_prompt() {
210 | f=3 b=4
211 | for j in f b; do
212 | for i in {0..7}; do
213 | printf -v $j$i %b "\e[${!j}${i}m"
214 | done
215 | done
216 | d=$'\e[1m'
217 | t=$'\e[0m'
218 | v=$'\e[7m'
219 |
220 | cat <<- EOF
221 |
222 | $f1██████ $d██████$t $f2██████ $d██████$t $f3██████ $d██████$t
223 | $f1██01██ $d██02██$t $f2██03██ $d██04██$t $f3██05██ $d██06██$t
224 | $f1██████ $d██████$t $f2██████ $d██████$t $f3██████ $d██████$t
225 |
226 | $f4██████ $d██████$t $f5██████ $d██████$t $f6██████ $d██████$t
227 | $f4██07██ $d██08██$t $f5██09██ $d██10██$t $f6██11██ $d██12██$t
228 | $f4██████ $d██████$t $f5██████ $d██████$t $f6██████ $d██████$t
229 | EOF
230 | }
231 |
232 | ## Fetch colors from .Xresources file
233 | get_xcolors() {
234 | if [[ ! -f "$HOME/.Xresources" ]]; then
235 | { echo -e ${RED}"\n[!] There's no '.Xresources' file in '$HOME' directory, Exiting...\n"; exit 1; }
236 | fi
237 |
238 | x1="$(xrdb -query | grep 'color1:'| awk '{print $NF}')"
239 | x2="$(xrdb -query | grep 'color9:'| awk '{print $NF}')"
240 | x3="$(xrdb -query | grep 'color2:'| awk '{print $NF}')"
241 | x4="$(xrdb -query | grep 'color10:'| awk '{print $NF}')"
242 | x5="$(xrdb -query | grep 'color3:'| awk '{print $NF}')"
243 | x6="$(xrdb -query | grep 'color11:'| awk '{print $NF}')"
244 | x7="$(xrdb -query | grep 'color4:'| awk '{print $NF}')"
245 | x8="$(xrdb -query | grep 'color12:'| awk '{print $NF}')"
246 | x9="$(xrdb -query | grep 'color5:'| awk '{print $NF}')"
247 | x10="$(xrdb -query | grep 'color13:'| awk '{print $NF}')"
248 | x11="$(xrdb -query | grep 'color6:'| awk '{print $NF}')"
249 | x12="$(xrdb -query | grep 'color14:'| awk '{print $NF}')"
250 | xcolors=("$x1" "$x2" "$x3" "$x4" "$x5" "$x6" "$x7" "$x8" "$x9" "$x10" "$x11" "$x12")
251 |
252 | color_prompt
253 |
254 | if [[ "$SOLID" == "true" ]]; then
255 | { echo; read -p ${ORANGE}"Enter the color number (without zero): "${BLUE} cnum; }
256 | color="${xcolors[(( cnum -1 ))]}"
257 | { echo; echo ${ORANGE}"Generating wallpaper with color:${GREEN} $color"; }
258 | elif [[ "$GRADIENT" == "true" ]] || [[ "$RGRADIENT" == "true" ]] || [[ "$TGRADIENT" == "true" ]]; then
259 | { echo; read -p ${ORANGE}"Enter first color number (without zero): "${BLUE} cnum; }
260 | color1="${xcolors[(( cnum -1 ))]}"
261 | { echo; read -p ${ORANGE}"Enter second color number (without zero): "${BLUE} cnum; }
262 | color2="${xcolors[(( cnum -1 ))]}"
263 | color="$color1-$color2"
264 | { echo; echo ${ORANGE}"Generating wallpaper with colors:${GREEN} $color1, $color2"; }
265 | elif [[ "$BGRADIENT" == "true" ]]; then
266 | { echo; read -p ${ORANGE}"Enter first color number (without zero): "${BLUE} cnum; }
267 | color1="${xcolors[(( cnum -1 ))]}"
268 | { echo; read -p ${ORANGE}"Enter second color number (without zero): "${BLUE} cnum; }
269 | color2="${xcolors[(( cnum -1 ))]}"
270 | { echo; read -p ${ORANGE}"Enter third color number (without zero): "${BLUE} cnum; }
271 | color3="${xcolors[(( cnum -1 ))]}"
272 | { echo; read -p ${ORANGE}"Enter fourth color number (without zero): "${BLUE} cnum; }
273 | color4="${xcolors[(( cnum -1 ))]}"
274 | { echo; echo ${ORANGE}"Generating wallpaper with colors:${GREEN} $color1, $color2, $color3 & $color4"; }
275 | fi
276 | }
277 |
278 | ## Get colors
279 | get_color() {
280 | while true; do
281 | { echo; read -p ${ORANGE}"Pick Colors or Enter Colors or fetch from .Xresources file? (p/e/x): "${BLUE}; }
282 | if [[ $REPLY =~ ^[p/P/e/E/x/X]$ ]]; then
283 | if [[ $REPLY == "p" ]] || [[ $REPLY == "P" ]]; then
284 | color_picker
285 | break
286 | elif [[ $REPLY == "x" ]] || [[ $REPLY == "X" ]]; then
287 | get_xcolors
288 | break
289 | else
290 | if [[ "$SOLID" == "true" ]]; then
291 | { echo; read -p ${ORANGE}"Enter the color name or hex (eg: teal, #EBCB8B):${GREEN} " color; }
292 | break
293 | elif [[ "$GRADIENT" == "true" ]] || [[ "$RGRADIENT" == "true" ]] || [[ "$TGRADIENT" == "true" ]]; then
294 | { echo; read -p ${ORANGE}"Enter the colors name or hex (format: color1-color2):${GREEN} " color; }
295 | break
296 | elif [[ "$BGRADIENT" == "true" ]]; then
297 | echo
298 | read -p ${ORANGE}"Enter first color (eg: red, #EC7875):${GREEN} " color1
299 | read -p ${ORANGE}"Enter second color (eg: green, #61C766):${GREEN} " color2
300 | read -p ${ORANGE}"Enter third color (eg: yellow, #FDD835):${GREEN} " color3
301 | read -p ${ORANGE}"Enter fourth color (eg: blue, #42A5F5):${GREEN} " color4
302 | break
303 | fi
304 | fi
305 | else
306 | { echo ${RED}"[!] Invalid Option, Try Again."; continue; }
307 | fi
308 | done
309 | }
310 |
311 | ## Generate a solid color wallpaper
312 | solid() {
313 | if [[ "$RANDOMIZE" == "true" ]]; then
314 | get_random_color
315 | color="$RCOLOR"
316 | else
317 | get_color
318 | fi
319 | convert -size "$size" canvas:"$color" "$DIR/$name"
320 | show_feh
321 | set_bg
322 | }
323 |
324 | ## Generate a linear gradient wallpaper
325 | linear_gradient() {
326 | if [[ "$RANDOMIZE" == "true" ]]; then
327 | get_random_color
328 | color="$RCOLOR"
329 |
330 | get_random_number "360"
331 | angle="$RNUM"
332 | else
333 | get_color
334 | { echo; read -p ${ORANGE}"Enter the rotation angle (default is 0): "${BLUE} angle; }
335 | fi
336 | convert -size "$size" -define gradient:angle="${angle:-0}" gradient:"$color" "$DIR/$name"
337 | show_feh
338 | set_bg
339 | }
340 |
341 | ## Generate a radial gradient wallpaper
342 | radial_gradient() {
343 | if [[ "$RANDOMIZE" == "true" ]]; then
344 | get_random_color
345 | color1="$RCOLOR"
346 | get_random_color
347 | color="$color1-$RCOLOR"
348 |
349 | get_random_number "360"
350 | angle="$RNUM"
351 |
352 | getRandomShape
353 | shape="$RSHAPE"
354 | else
355 | get_color
356 | { echo; read -p ${ORANGE}"Shape? [ 1.diagonal | 2.ellipse | 3.maximum | 4.minimum ] (1/2/3/4): "${BLUE}; }
357 | if [[ $REPLY == "1" ]]; then
358 | shape='diagonal'
359 | elif [[ $REPLY == "2" ]]; then
360 | shape='ellipse'
361 | elif [[ $REPLY == "3" ]]; then
362 | shape='maximum'
363 | elif [[ $REPLY == "4" ]]; then
364 | shape='minimum'
365 | fi
366 | { echo; read -p ${ORANGE}"Enter the rotation angle (default is 0): "${BLUE} angle; }
367 | fi
368 | convert -size "$size" -define gradient:extent="${shape:-maximum}" -define gradient:angle="${angle:-0}" radial-gradient:"$color" "$DIR/$name"
369 | show_feh
370 | set_bg
371 | }
372 |
373 | ## Generate a twisted gradient wallpaper
374 | twisted_gradient() {
375 | if [[ "$RANDOMIZE" == "true" ]]; then
376 | get_random_color
377 | color1="$RCOLOR"
378 | get_random_color
379 | color="$color1-$RCOLOR"
380 |
381 | get_random_number "500"
382 | twist="$RNUM"
383 | else
384 | get_color
385 | { echo; read -p ${ORANGE}"Enter the twisting amount (maximum 500): "${BLUE} twist; }
386 | fi
387 | convert -size "$size" gradient:"$color" -swirl "${twist:-150}" "$DIR/$name"
388 | show_feh
389 | set_bg
390 | }
391 |
392 | ## Generate a 4 point gradient wallpaper
393 | bilinear_gradient() {
394 | if [[ "$RANDOMIZE" == "true" ]]; then
395 | get_random_color
396 | color1="$RCOLOR"
397 | get_random_color
398 | color2="$RCOLOR"
399 | get_random_color
400 | color3="$RCOLOR"
401 | get_random_color
402 | color4="$RCOLOR"
403 |
404 | get_random_number "2"
405 | if [[ "$RNUM" == "1" ]]; then
406 | answer="s"
407 | else
408 | answer="r"
409 | fi
410 | else
411 | get_color
412 | { echo; read -p ${ORANGE}"Smooth or Regular? (s/r): "${BLUE} answer; }
413 | fi
414 | if [[ $answer == "s" ]] || [[ $answer == "S" ]]; then
415 | { echo; echo -n ${CYAN}"Please wait... "; }
416 | convert \( xc:"$color1" xc:"$color2" +append \) \( xc:"$color3" xc:"$color4" +append \) -append -size "$size" xc: +swap -fx 'v.p{i/(w-1),j/(h-1)}' "$DIR/$name"
417 | else
418 | convert \( xc:"$color1" xc:"$color2" +append \) \( xc:"$color3" xc:"$color4" +append \) -append -filter triangle -resize "$size"\! "$DIR/$name"
419 | fi
420 | show_feh
421 | set_bg
422 | }
423 |
424 | ## Generate a plasma wallpaper
425 | plasma() {
426 | if [[ "$RANDOMIZE" == "true" ]]; then
427 | get_random_number "3"
428 |
429 | if [[ "$RNUM" == "1" ]]; then
430 | answer="r"
431 | elif [[ "$RNUM" == "2" ]]; then
432 | answer="t"
433 | get_random_number "500"
434 | twist="$RNUM"
435 | else
436 | answer="c"
437 | get_random_color
438 | color="$RCOLOR"
439 | fi
440 | else
441 | { echo; read -p ${ORANGE}"Random, Twisted or Custom colors? (r/t/c): "${BLUE} answer; }
442 | fi
443 | if [[ $answer == "r" ]] || [[ $answer == "R" ]]; then
444 | convert -size "$size" plasma: "$DIR/$name"
445 | elif [[ $answer == "t" ]] || [[ $answer == "T" ]]; then
446 | if [[ "$RANDOMIZE" != "true" ]]; then
447 | { echo; read -p ${ORANGE}"Enter the twisting amount (maximum 500): "${BLUE} twist; }
448 | fi
449 | convert -size "$size" plasma:fractal -swirl "${twist:-150}" "$DIR/$name"
450 | else
451 | if [[ "$RANDOMIZE" != "true" ]]; then
452 | { echo; read -p ${ORANGE}"Enter the colors name or hex (format: color1-color2): "${GREEN} color; }
453 | fi
454 | convert -size "$size" plasma:"$color" "$DIR/$name"
455 | fi
456 | show_feh
457 | set_bg
458 | }
459 |
460 | ## Generate a random, multi-colored blurred/gradient wallpaper
461 | blurred_noise() {
462 | if [[ "$RANDOMIZE" == "true" ]]; then
463 | get_random_number "30"
464 | blur="$RNUM"
465 | else
466 | { echo; read -p ${ORANGE}"Enter the blur strength (maximum 30): "${BLUE} blur; }
467 | fi
468 | convert -size "100x56" xc: +noise Random "/tmp/noise.png"
469 | convert "/tmp/noise.png" -virtual-pixel tile -blur 0x"${blur:-14}" -auto-level -resize "$size" "$DIR/$name"
470 | show_feh
471 | set_bg
472 | }
473 |
474 | ## Generate random number lower than giver parameter
475 | get_random_number() {
476 | RNUM=$(( ($RANDOM % $1) + 1 ))
477 | }
478 |
479 | ## Generate random color
480 | get_random_color() {
481 | RCOLOR="#"
482 | for i in 1 2 3 4 5 6
483 | do
484 | get_random_number "16"
485 | case $RNUM in
486 | "1") NEXTDIGIT="1";;
487 | "2") NEXTDIGIT="2";;
488 | "3") NEXTDIGIT="3";;
489 | "4") NEXTDIGIT="4";;
490 | "5") NEXTDIGIT="5";;
491 | "6") NEXTDIGIT="6";;
492 | "7") NEXTDIGIT="7";;
493 | "8") NEXTDIGIT="8";;
494 | "9") NEXTDIGIT="9";;
495 | "10") NEXTDIGIT="A";;
496 | "11") NEXTDIGIT="B";;
497 | "12") NEXTDIGIT="C";;
498 | "13") NEXTDIGIT="D";;
499 | "14") NEXTDIGIT="E";;
500 | "15") NEXTDIGIT="F";;
501 | "16") NEXTDIGIT="0";;
502 | esac
503 | RCOLOR="$RCOLOR$NEXTDIGIT"
504 | done
505 | }
506 |
507 | ## Generate random shape option
508 | getRandomShape() {
509 | get_random_number "4"
510 | case $RNUM in
511 | "1") RSHAPE="diagonal";;
512 | "2") RSHAPE="ellipse";;
513 | "3") RSHAPE="maximum";;
514 | "4") RSHAPE="minimum";;
515 | esac
516 | }
517 |
518 | ## Generate random wallpaper
519 | randomize() {
520 | get_random_number "7"
521 | case $RNUM in
522 | "1") solid;;
523 | "2") linear_gradient;;
524 | "3") radial_gradient;;
525 | "4") twisted_gradient;;
526 | "5") bilinear_gradient;;
527 | "6") plasma;;
528 | "7") blurred_noise;;
529 | esac
530 | }
531 |
532 |
533 | ## Parse the arguments
534 | options=$(getopt -o S:,s,l,r,t,b,p,B,h,a,R,n --long size:,solid,linear,radial,twisted,bilinear,plasma,blurred,help,autobg,randomize,no-preview -- "$@")
535 | eval set -- "$options"
536 |
537 | while true; do
538 | case "$1" in
539 | -S|--size)
540 | shift;
541 | size=$1
542 | ;;
543 | -s|--solid)
544 | SOLID="true"
545 | COLOR=$1
546 | ;;
547 | -l|--linear)
548 | GRADIENT="true"
549 | ;;
550 | -r|--radial)
551 | RGRADIENT="true"
552 | ;;
553 | -t|--twisted)
554 | TGRADIENT="true"
555 | ;;
556 | -b|--bilinear)
557 | BGRADIENT="true"
558 | ;;
559 | -p|--plasma)
560 | PLASMA="true"
561 | ;;
562 | -B|--blurred)
563 | NOISE="true"
564 | ;;
565 | -a|--autobg)
566 | AUTOBG="true"
567 | ;;
568 | -R|--randomize)
569 | RANDOMIZE="true"
570 | ;;
571 | -n|--no-preview)
572 | NOFEH="true"
573 | ;;
574 | -h|--help)
575 | usage
576 | exit
577 | ;;
578 | --)
579 | shift
580 | break
581 | ;;
582 | esac
583 | shift
584 | done
585 |
586 | ## Main Execution
587 |
588 | Prerequisite
589 |
590 | if [[ "$SOLID" == "true" ]]; then
591 | solid
592 | elif [[ "$GRADIENT" == "true" ]]; then
593 | linear_gradient
594 | elif [[ "$RGRADIENT" == "true" ]]; then
595 | radial_gradient
596 | elif [[ "$TGRADIENT" == "true" ]]; then
597 | twisted_gradient
598 | elif [[ "$BGRADIENT" == "true" ]]; then
599 | bilinear_gradient
600 | elif [[ "$PLASMA" == "true" ]]; then
601 | plasma
602 | elif [[ "$NOISE" == "true" ]]; then
603 | blurred_noise
604 | elif [[ "$RANDOMIZE" == "true" ]]; then
605 | randomize
606 | else
607 | usage
608 | fi
609 |
--------------------------------------------------------------------------------
/wallpapers/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adi1090x/canvas/b4b1e3456d86db98052bd7735ae3c0a8799b1061/wallpapers/1.png
--------------------------------------------------------------------------------
/wallpapers/10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adi1090x/canvas/b4b1e3456d86db98052bd7735ae3c0a8799b1061/wallpapers/10.png
--------------------------------------------------------------------------------
/wallpapers/11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adi1090x/canvas/b4b1e3456d86db98052bd7735ae3c0a8799b1061/wallpapers/11.png
--------------------------------------------------------------------------------
/wallpapers/12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adi1090x/canvas/b4b1e3456d86db98052bd7735ae3c0a8799b1061/wallpapers/12.png
--------------------------------------------------------------------------------
/wallpapers/13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adi1090x/canvas/b4b1e3456d86db98052bd7735ae3c0a8799b1061/wallpapers/13.png
--------------------------------------------------------------------------------
/wallpapers/14.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adi1090x/canvas/b4b1e3456d86db98052bd7735ae3c0a8799b1061/wallpapers/14.png
--------------------------------------------------------------------------------
/wallpapers/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adi1090x/canvas/b4b1e3456d86db98052bd7735ae3c0a8799b1061/wallpapers/2.png
--------------------------------------------------------------------------------
/wallpapers/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adi1090x/canvas/b4b1e3456d86db98052bd7735ae3c0a8799b1061/wallpapers/3.png
--------------------------------------------------------------------------------
/wallpapers/4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adi1090x/canvas/b4b1e3456d86db98052bd7735ae3c0a8799b1061/wallpapers/4.png
--------------------------------------------------------------------------------
/wallpapers/5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adi1090x/canvas/b4b1e3456d86db98052bd7735ae3c0a8799b1061/wallpapers/5.png
--------------------------------------------------------------------------------
/wallpapers/6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adi1090x/canvas/b4b1e3456d86db98052bd7735ae3c0a8799b1061/wallpapers/6.png
--------------------------------------------------------------------------------
/wallpapers/7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adi1090x/canvas/b4b1e3456d86db98052bd7735ae3c0a8799b1061/wallpapers/7.png
--------------------------------------------------------------------------------
/wallpapers/8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adi1090x/canvas/b4b1e3456d86db98052bd7735ae3c0a8799b1061/wallpapers/8.png
--------------------------------------------------------------------------------
/wallpapers/9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adi1090x/canvas/b4b1e3456d86db98052bd7735ae3c0a8799b1061/wallpapers/9.png
--------------------------------------------------------------------------------
/wallpapers/main.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adi1090x/canvas/b4b1e3456d86db98052bd7735ae3c0a8799b1061/wallpapers/main.png
--------------------------------------------------------------------------------