Introduction
Some commands do not generate any output list, authough dealing with lists from other commands, the shuf command is one of these. If I want to get a random image name from my wallpapers dir I do:
ls -1A ~/img/backgrounds/* | shuf -n 1
The above command could be used to create a variable and be used as other command argument, in this particular case a command that, based on your wallpaper color, will set your terminal colorscheme:
sudo pip3 install pipx pipx install pywal
The pipx command installs your python modules in a sandbox, avoiding namespaces clashes. After installing pywal you will have a wal
command, using it I have created this shell script line:
/home/sergio/.local/bin/wal -i "$(ls -1A ~/img/backgrounds/* | shuf -n 1)"
Change the path and system variables accordingly, after that open up a new terminal and run the following command:
Update!
Watching more videos about pywal I have learned that you do not need to use the shuf
command, just give a directory to the wal
command and it will choose a random image from there, but the knowledge on using shuf will eventually
wal --preview
This way every time you run the command...
wal -i "path-of-your-wallpapers"
...you will see a preview of your terminal theme.
In the case of my "tiling window manager", the bspwm, I have a shortcut on my sxhkdrc
:
# change background super + b /home/sergio/.local/bin/wal -qi ~/img/backgrounds/
Also one line on my bspwmrc
/home/sergio/.local/bin/wal -qi ~/img/backgrounds/
Finally I have one line on my crontab that runs the same script every five minutes:
# crontab -e # vim:et:sw=4:ts=4:cms=#%s: # >/dev/null 2>&1 <- used to preven sending e-mail's # env | grep -i display to get your DISPLAY variable # otherwhise feh will not be abble to change your background # source: https://superuser.com/a/1122245/45032 DISPLAY=':0' SHELL=/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin:/home/sergio/.dotfiles/algorithm/shell/bash/ XDG_PICTURES_DIR=/home/sergio/img WALLPAPER_DIR=$XDG_PICTURES_DIR/backgrounds/ WAL=/home/sergio/.local/bin/wal MAILTO="" */5 * * * * $WAL -qi $WALLPAPER_DIR # */5 * * * * feh -z --bg-fill /home/sergio/img/backgrounds/* # */5 * * * * wal -i "${XDG_PICTURES_DIR}/backgrounds/$(ls ${XDG_PICTURES_DIR}/backgrounds | shuf -n 1)" #*/30 * * * * mpg123 /home/sergio/music/drink-water.mp3
Randomization in other apps:
Many utilities have their own flag for randomization, the mpg123
for example has a -Z
flag for that.
For those apps that do not have randomization we can also use a shell trick ...
echo $((RANDOM % 10))
... Where 10 is the maximum randomized number possible
Top comments (0)