dots


dots / config / .local / bin
xxwhirlpool  ·  2026-04-09

music4coding

 1#!/usr/bin/env bash
 2#
 3# mixtapes from musicForProgramming.net
 4# https://musicforprogramming.net
 5
 6# this is not all of the mixes cuz i'm lazy
 7
 8declare -A mixtapes=(
 9    ["1"]="https://datashat.net/music_for_programming_1-datassette.mp3"
10    ["2"]="https://datashat.net/music_for_programming_2-sunjammer.mp3"
11    ["3"]="https://datashat.net/music_for_programming_3-datassette.mp3"
12    ["4"]="https://datashat.net/music_for_programming_4-com_truise.mp3"
13    ["5"]="https://datashat.net/music_for_programming_5-abe_mangger.mp3"
14    ["6"]="https://datashat.net/music_for_programming_6-gods_of_the_new_age.mp3"
15    ["7"]="https://datashat.net/music_for_programming_7-tahlhoff_garten_and_untitled.mp3"
16    ["8"]="https://datashat.net/music_for_programming_8-connectedness_locus.mp3"
17    ["9"]="https://datashat.net/music_for_programming_9-datassette.mp3"
18    ["10"]="https://datashat.net/music_for_programming_10-unity_gain_temple.mp3"
19    ["11"]="https://datashat.net/music_for_programming_11-miles_tilmann.mp3"
20    ["12"]="https://datashat.net/music_for_programming_12-forgotten_light.mp3"
21    ["13"]="https://datashat.net/music_for_programming_13-matt_whitehead.mp3"
22    ["14"]="https://datashat.net/music_for_programming_14-tahlhoff_garten_and_untitled.mp3"
23    ["15"]="https://datashat.net/music_for_programming_15-dan_adeyemi.mp3"
24    ["16"]="https://datashat.net/music_for_programming_16-silent_stelios.mp3"
25    ["17"]="https://datashat.net/music_for_programming_17-graphplan.mp3"
26    ["18"]="https://datashat.net/music_for_programming_18-konx_om_pax.mp3"
27    ["19"]="https://datashat.net/music_for_programming_19-hivemind.mp3"
28    ["20"]="https://datashat.net/music_for_programming_20-uberdog.mp3"
29)
30
31# little header text graphic to show before playback
32
33gum_echo() {
34    top=$(gum style --bold --foreground "#a6d189" --border none --width 50 --margin "1 0" --align center "musicForProgramming();")
35    bottom=$(gum style --foreground "#f4b8e4" --border none --width 50 --margin "1 0" --align center "$@")
36
37    joingum=$(gum join --vertical --align center "$top" "$bottom")
38    all=$(gum style --border-foreground "#99d1db" --border double --width 50 --padding "0 0" --align center "$joingum")
39
40    gum join --vertical "$all"
41}
42
43random_mix() {
44	length="${#mixtapes[@]}"
45	random_index=$(( SRANDOM % length ))
46	mpv "${mixtapes[$random_index]}"
47}
48
49# run the script
50
51choice() {
52    choose=$(gum choose  --header "mixtapes" "random" {1..20} --height 20)
53    case "$choose" in
54		random) gum_echo "random!" && random_mix;;
55        1) gum_echo "datasette" && mpv "${mixtapes['1']}";;
56        2) gum_echo "sunjammer" && mpv "${mixtapes['2']}";;
57        3) gum_echo "datassette" && mpv "${mixtapes['3']}";;
58        4) gum_echo "com truise" && mpv "${mixtapes['4']}";;
59        5) gum_echo "abe mangger" && mpv "${mixtapes['5']}";;
60        6) gum_echo "gods of the new age" && mpv "${mixtapes['6']}";;
61        7) gum_echo "tahlhoff garten + untitled" && mpv "${mixtapes['7']}";;
62        8) gum_echo "connectedness locus" && mpv "${mixtapes['8']}";;
63        9) gum_echo "datassette" && mpv "${mixtapes['9']}";;
64        10) gum_echo "unity gain temple" && mpv "${mixtapes['10']}";;
65        11) gum_echo "miles tilmann" && mpv "${mixtapes['11']}";;
66        12) gum_echo "forgotten light" && mpv "${mixtapes['12']}";;
67        13) gum_echo "matt whitehead" && mpv "${mixtapes['13']}";;
68        14) gum_echo "tahlhoff garten + untitled" && mpv "${mixtapes['14']}";;
69        15) gum_echo "dan adeyemi" && mpv "${mixtapes['15']}";;
70        16) gum_echo "silent stelios" && mpv "${mixtapes['16']}";;
71        17) gum_echo "graphplan" && mpv "${mixtapes['17']}";;
72        18) gum_echo "konx om par" && mpv "${mixtapes['18']}";;
73        19) gum_echo "hivemind" && mpv "${mixtapes['19']}";;
74        20) gum_echo "uberdog" && mpv "${mixtapes['20']}";;
75    esac
76}
77
78choice