add music shuffle and concept for main menu
This commit is contained in:
parent
ae874134dc
commit
fb1b589f8d
1
private_dot_config/menu_main/hr
Normal file
1
private_dot_config/menu_main/hr
Normal file
@ -0,0 +1 @@
|
|||||||
|
real time systems:exec:./hr/rts.sh
|
||||||
4
private_dot_config/menu_main/hr_rts.sh
Normal file
4
private_dot_config/menu_main/hr_rts.sh
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
codium $HOME/projects/hr/rts10_reports/
|
||||||
|
flatpak run md.obsidian.Obsidian $HOME/projects/hr/rts10_reports/
|
||||||
2
private_dot_config/menu_main/main
Normal file
2
private_dot_config/menu_main/main
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
Hoogeschool Rotterdam:menu:hr
|
||||||
|
projects:menu:proj
|
||||||
126
private_dot_config/menu_main/proj
Normal file
126
private_dot_config/menu_main/proj
Normal file
@ -0,0 +1,126 @@
|
|||||||
|
ems31_2024-2025_groep_2_ccs:exec:kgx --working-directory=$HOME/projects/ems31_2024-2025_groep_2_ccs
|
||||||
|
ems31_2024-2025_groep_2_wsl:exec:kgx --working-directory=$HOME/projects/ems31_2024-2025_groep_2_wsl
|
||||||
|
escaperoom/pages:exec:kgx --working-directory=$HOME/projects/escaperoom/pages
|
||||||
|
ffmpeg:exec:kgx --working-directory=$HOME/projects/ffmpeg
|
||||||
|
freenen/3dprinter_profiles:exec:kgx --working-directory=$HOME/projects/freenen/3dprinter_profiles
|
||||||
|
freenen/ansible-authelia:exec:kgx --working-directory=$HOME/projects/freenen/ansible-authelia
|
||||||
|
freenen/ansible-codimd:exec:kgx --working-directory=$HOME/projects/freenen/ansible-codimd
|
||||||
|
freenen/ansible-collabora:exec:kgx --working-directory=$HOME/projects/freenen/ansible-collabora
|
||||||
|
freenen/ansible-docker:exec:kgx --working-directory=$HOME/projects/freenen/ansible-docker
|
||||||
|
freenen/ansible-firefly-iii:exec:kgx --working-directory=$HOME/projects/freenen/ansible-firefly-iii
|
||||||
|
freenen/ansible-git:exec:kgx --working-directory=$HOME/projects/freenen/ansible-git
|
||||||
|
freenen/ansible-gitea:exec:kgx --working-directory=$HOME/projects/freenen/ansible-gitea
|
||||||
|
freenen/ansible-gitea-act-runner:exec:kgx --working-directory=$HOME/projects/freenen/ansible-gitea-act-runner
|
||||||
|
freenen/ansible-grafana:exec:kgx --working-directory=$HOME/projects/freenen/ansible-grafana
|
||||||
|
freenen/ansible-lamp:exec:kgx --working-directory=$HOME/projects/freenen/ansible-lamp
|
||||||
|
freenen/ansible-minecraft-server:exec:kgx --working-directory=$HOME/projects/freenen/ansible-minecraft-server
|
||||||
|
freenen/ansible-mqtt:exec:kgx --working-directory=$HOME/projects/freenen/ansible-mqtt
|
||||||
|
freenen/ansible-mysql:exec:kgx --working-directory=$HOME/projects/freenen/ansible-mysql
|
||||||
|
freenen/ansible-nextcloud:exec:kgx --working-directory=$HOME/projects/freenen/ansible-nextcloud
|
||||||
|
freenen/ansible-pi-hole:exec:kgx --working-directory=$HOME/projects/freenen/ansible-pi-hole
|
||||||
|
freenen/ansible-prometheus:exec:kgx --working-directory=$HOME/projects/freenen/ansible-prometheus
|
||||||
|
freenen/ansible-proxymanager:exec:kgx --working-directory=$HOME/projects/freenen/ansible-proxymanager
|
||||||
|
freenen/ansible-rustdesk:exec:kgx --working-directory=$HOME/projects/freenen/ansible-rustdesk
|
||||||
|
freenen/ansible-server-base:exec:kgx --working-directory=$HOME/projects/freenen/ansible-server-base
|
||||||
|
freenen/ansible-vscode-server:exec:kgx --working-directory=$HOME/projects/freenen/ansible-vscode-server
|
||||||
|
freenen/ansible-zigbee2mqtt:exec:kgx --working-directory=$HOME/projects/freenen/ansible-zigbee2mqtt
|
||||||
|
freenen/astrid:exec:kgx --working-directory=$HOME/projects/freenen/astrid
|
||||||
|
freenen/babaisyousolver:exec:kgx --working-directory=$HOME/projects/freenen/babaisyousolver
|
||||||
|
freenen/bakje:exec:kgx --working-directory=$HOME/projects/freenen/bakje
|
||||||
|
freenen/contacts:exec:kgx --working-directory=$HOME/projects/freenen/contacts
|
||||||
|
freenen/dasbob:exec:kgx --working-directory=$HOME/projects/freenen/dasbob
|
||||||
|
freenen/dasbob_qmk:exec:kgx --working-directory=$HOME/projects/freenen/dasbob_qmk
|
||||||
|
freenen/dometimer:exec:kgx --working-directory=$HOME/projects/freenen/dometimer
|
||||||
|
freenen/downloads:exec:kgx --working-directory=$HOME/projects/freenen/downloads
|
||||||
|
freenen/elfos:exec:kgx --working-directory=$HOME/projects/freenen/elfos
|
||||||
|
freenen/elven_cli:exec:kgx --working-directory=$HOME/projects/freenen/elven_cli
|
||||||
|
freenen/embassy:exec:kgx --working-directory=$HOME/projects/freenen/embassy
|
||||||
|
freenen/energyPulseCounter:exec:kgx --working-directory=$HOME/projects/freenen/energyPulseCounter
|
||||||
|
freenen/hasio-addons:exec:kgx --working-directory=$HOME/projects/freenen/hasio-addons
|
||||||
|
freenen/keycounter:exec:kgx --working-directory=$HOME/projects/freenen/keycounter
|
||||||
|
freenen/keys:exec:kgx --working-directory=$HOME/projects/freenen/keys
|
||||||
|
freenen/kicad-build:exec:kgx --working-directory=$HOME/projects/freenen/kicad-build
|
||||||
|
freenen/kladjes:exec:kgx --working-directory=$HOME/projects/freenen/kladjes
|
||||||
|
freenen/kladjes.html:exec:kgx --working-directory=$HOME/projects/freenen/kladjes.html
|
||||||
|
freenen/klippertoolboard:exec:kgx --working-directory=$HOME/projects/freenen/klippertoolboard
|
||||||
|
freenen/labvoeding-front:exec:kgx --working-directory=$HOME/projects/freenen/labvoeding-front
|
||||||
|
freenen/makitapowerbank:exec:kgx --working-directory=$HOME/projects/freenen/makitapowerbank
|
||||||
|
freenen/maps:exec:kgx --working-directory=$HOME/projects/freenen/maps
|
||||||
|
freenen/mbc_barritoolpcb:exec:kgx --working-directory=$HOME/projects/freenen/mbc_barritoolpcb
|
||||||
|
freenen/minecraft-clone:exec:kgx --working-directory=$HOME/projects/freenen/minecraft-clone
|
||||||
|
freenen/Monikers:exec:kgx --working-directory=$HOME/projects/freenen/Monikers
|
||||||
|
freenen/mp3_pcb:exec:kgx --working-directory=$HOME/projects/freenen/mp3_pcb
|
||||||
|
freenen/mqttAutomation:exec:kgx --working-directory=$HOME/projects/freenen/mqttAutomation
|
||||||
|
freenen/mqttclient:exec:kgx --working-directory=$HOME/projects/freenen/mqttclient
|
||||||
|
freenen/mqttClock:exec:kgx --working-directory=$HOME/projects/freenen/mqttClock
|
||||||
|
freenen/mr-iot:exec:kgx --working-directory=$HOME/projects/freenen/mr-iot
|
||||||
|
freenen/mute_experiment:exec:kgx --working-directory=$HOME/projects/freenen/mute_experiment
|
||||||
|
freenen/nixconfig:exec:kgx --working-directory=$HOME/projects/freenen/nixconfig
|
||||||
|
freenen/noteapp:exec:kgx --working-directory=$HOME/projects/freenen/noteapp
|
||||||
|
freenen/notes:exec:kgx --working-directory=$HOME/projects/freenen/notes
|
||||||
|
freenen/obsidian_fr-calendar:exec:kgx --working-directory=$HOME/projects/freenen/obsidian_fr-calendar
|
||||||
|
freenen/oscilloscoop:exec:kgx --working-directory=$HOME/projects/freenen/oscilloscoop
|
||||||
|
freenen/pages:exec:kgx --working-directory=$HOME/projects/freenen/pages
|
||||||
|
freenen/penningbot:exec:kgx --working-directory=$HOME/projects/freenen/penningbot
|
||||||
|
freenen/portfolioWebsite:exec:kgx --working-directory=$HOME/projects/freenen/portfolioWebsite
|
||||||
|
freenen/pringels_config:exec:kgx --working-directory=$HOME/projects/freenen/pringels_config
|
||||||
|
freenen/qmk_firmware:exec:kgx --working-directory=$HOME/projects/freenen/qmk_firmware
|
||||||
|
freenen/QR_knowledgebase:exec:kgx --working-directory=$HOME/projects/freenen/QR_knowledgebase
|
||||||
|
freenen/rcrf-wifi:exec:kgx --working-directory=$HOME/projects/freenen/rcrf-wifi
|
||||||
|
freenen/relayclient:exec:kgx --working-directory=$HOME/projects/freenen/relayclient
|
||||||
|
freenen/rotoryencoder:exec:kgx --working-directory=$HOME/projects/freenen/rotoryencoder
|
||||||
|
freenen/rp2040_c:exec:kgx --working-directory=$HOME/projects/freenen/rp2040_c
|
||||||
|
freenen/rp2040_projects:exec:kgx --working-directory=$HOME/projects/freenen/rp2040_projects
|
||||||
|
freenen/rp2040-project-template:exec:kgx --working-directory=$HOME/projects/freenen/rp2040-project-template
|
||||||
|
freenen/rustlings:exec:kgx --working-directory=$HOME/projects/freenen/rustlings
|
||||||
|
freenen/rzh-server:exec:kgx --working-directory=$HOME/projects/freenen/rzh-server
|
||||||
|
freenen/scrum-board:exec:kgx --working-directory=$HOME/projects/freenen/scrum-board
|
||||||
|
freenen/servermanager:exec:kgx --working-directory=$HOME/projects/freenen/servermanager
|
||||||
|
freenen/soldeerstation:exec:kgx --working-directory=$HOME/projects/freenen/soldeerstation
|
||||||
|
freenen/sshkeys:exec:kgx --working-directory=$HOME/projects/freenen/sshkeys
|
||||||
|
freenen/stofzuiger:exec:kgx --working-directory=$HOME/projects/freenen/stofzuiger
|
||||||
|
freenen/taklift:exec:kgx --working-directory=$HOME/projects/freenen/taklift
|
||||||
|
freenen/tasky:exec:kgx --working-directory=$HOME/projects/freenen/tasky
|
||||||
|
freenen/tempmeter:exec:kgx --working-directory=$HOME/projects/freenen/tempmeter
|
||||||
|
freenen/tmc_control:exec:kgx --working-directory=$HOME/projects/freenen/tmc_control
|
||||||
|
freenen/viool:exec:kgx --working-directory=$HOME/projects/freenen/viool
|
||||||
|
freenen/voltarush:exec:kgx --working-directory=$HOME/projects/freenen/voltarush
|
||||||
|
freenen/webtemplate:exec:kgx --working-directory=$HOME/projects/freenen/webtemplate
|
||||||
|
freenen/webtemplate_differant:exec:kgx --working-directory=$HOME/projects/freenen/webtemplate_differant
|
||||||
|
gridfinity-rebuilt-openscad:exec:kgx --working-directory=$HOME/projects/gridfinity-rebuilt-openscad
|
||||||
|
hedgedoc:exec:kgx --working-directory=$HOME/projects/hedgedoc
|
||||||
|
hr/ane10.2_pcb1:exec:kgx --working-directory=$HOME/projects/hr/ane10.2_pcb1
|
||||||
|
hr/ane10.3_pcb1:exec:kgx --working-directory=$HOME/projects/hr/ane10.3_pcb1
|
||||||
|
hr/ane10.3_pcb2:exec:kgx --working-directory=$HOME/projects/hr/ane10.3_pcb2
|
||||||
|
hr/ane10_pcb1:exec:kgx --working-directory=$HOME/projects/hr/ane10_pcb1
|
||||||
|
hr/ane21_cm4:exec:kgx --working-directory=$HOME/projects/hr/ane21_cm4
|
||||||
|
hr/csc10_labs:exec:kgx --working-directory=$HOME/projects/hr/csc10_labs
|
||||||
|
hr/dis10:exec:kgx --working-directory=$HOME/projects/hr/dis10
|
||||||
|
hr/eep71_code:exec:kgx --working-directory=$HOME/projects/hr/eep71_code
|
||||||
|
hr/ems20_handshake:exec:kgx --working-directory=$HOME/projects/hr/ems20_handshake
|
||||||
|
hr/ems31:exec:kgx --working-directory=$HOME/projects/hr/ems31
|
||||||
|
hr/ems31_ccs:exec:kgx --working-directory=$HOME/projects/hr/ems31_ccs
|
||||||
|
hr/ems31_eindopdracht2:exec:kgx --working-directory=$HOME/projects/hr/ems31_eindopdracht2
|
||||||
|
hr/ems31_submodules:exec:kgx --working-directory=$HOME/projects/hr/ems31_submodules
|
||||||
|
hr/ems31_wsl:exec:kgx --working-directory=$HOME/projects/hr/ems31_wsl
|
||||||
|
hr/eps10:exec:kgx --working-directory=$HOME/projects/hr/eps10
|
||||||
|
hr/hwp01_labs:exec:kgx --working-directory=$HOME/projects/hr/hwp01_labs
|
||||||
|
hr/pee20_motioncontroller:exec:kgx --working-directory=$HOME/projects/hr/pee20_motioncontroller
|
||||||
|
hr/pee30_belasting:exec:kgx --working-directory=$HOME/projects/hr/pee30_belasting
|
||||||
|
hr/PEE51_formula_documents:exec:kgx --working-directory=$HOME/projects/hr/PEE51_formula_documents
|
||||||
|
hr/pee51_gan_motor_driver:exec:kgx --working-directory=$HOME/projects/hr/pee51_gan_motor_driver
|
||||||
|
hr/pee51_pcb:exec:kgx --working-directory=$HOME/projects/hr/pee51_pcb
|
||||||
|
hr/pee71_documents:exec:kgx --working-directory=$HOME/projects/hr/pee71_documents
|
||||||
|
hr/pee71_eeprom_test:exec:kgx --working-directory=$HOME/projects/hr/pee71_eeprom_test
|
||||||
|
hr/rts10_assignment_project_files:exec:kgx --working-directory=$HOME/projects/hr/rts10_assignment_project_files
|
||||||
|
hr/rts10_labs:exec:kgx --working-directory=$HOME/projects/hr/rts10_labs
|
||||||
|
hr/rts10_rust:exec:kgx --working-directory=$HOME/projects/hr/rts10_rust
|
||||||
|
hr/rts10_verslagen:exec:kgx --working-directory=$HOME/projects/hr/rts10_verslagen
|
||||||
|
hr/spc_stabilisatie_firmware:exec:kgx --working-directory=$HOME/projects/hr/spc_stabilisatie_firmware
|
||||||
|
hr/stg30_notes:exec:kgx --working-directory=$HOME/projects/hr/stg30_notes
|
||||||
|
Kompas:exec:kgx --working-directory=$HOME/projects/Kompas
|
||||||
|
pico-examples:exec:kgx --working-directory=$HOME/projects/pico-examples
|
||||||
|
volta/wan-party-website:exec:kgx --working-directory=$HOME/projects/volta/wan-party-website
|
||||||
|
volta/webgenerator:exec:kgx --working-directory=$HOME/projects/volta/webgenerator
|
||||||
|
volta/website:exec:kgx --working-directory=$HOME/projects/volta/website
|
||||||
|
volta/website-wp-thema:exec:kgx --working-directory=$HOME/projects/volta/website-wp-thema
|
||||||
@ -1,4 +1,37 @@
|
|||||||
#!/usr/bin/foot fish
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
open "$(find $HOME/Music | fzf)" &
|
function run_menu() {
|
||||||
|
menu="$1"
|
||||||
|
if [[ -z "$menu" ]]
|
||||||
|
then
|
||||||
|
menu="main"
|
||||||
|
fi
|
||||||
|
|
||||||
|
items="$(cat "$XDG_CONFIG_HOME/menu_main/$menu")"
|
||||||
|
|
||||||
|
echo "$XDG_CONFIG_HOME/menu_main/$menu"
|
||||||
|
echo "$items"
|
||||||
|
|
||||||
|
item="$(echo "$items" | sed -e 's|:.*$||' | walker --dmenu)"
|
||||||
|
|
||||||
|
action="$(echo "$items" | grep "^$item" | sed 's|^[^:]*:||' )"
|
||||||
|
|
||||||
|
exec_item "$action"
|
||||||
|
}
|
||||||
|
|
||||||
|
function exec_item() {
|
||||||
|
if [[ "$(echo "$action" | sed -e 's|:.*$||')" == "menu" ]]
|
||||||
|
then
|
||||||
|
menu_main "$(echo "$action" | sed -e 's|^[^:]*:||')"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$(echo "$action" | sed -e 's|:.*$||')" == "exec" ]]
|
||||||
|
then
|
||||||
|
cd $XDG_CONFIG_HOME/menu_main
|
||||||
|
$(echo "$action" | sed -e 's|^[^:]*:||')
|
||||||
|
fi
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
run_menu "$1"
|
||||||
|
|||||||
81
private_dot_local/bin/executable_shuffle
Normal file
81
private_dot_local/bin/executable_shuffle
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
PLAYLIST="$1"
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
SONGS="$(find $HOME/Music -type f)"
|
||||||
|
SONG_COUNT="$(echo "$SONGS" | wc -l)"
|
||||||
|
|
||||||
|
function pick_song() {
|
||||||
|
num=$(( 1 + $RANDOM % $SONG_COUNT ))
|
||||||
|
echo "$SONGS" | sed "${num}q;d"
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_flags() {
|
||||||
|
path="$1"
|
||||||
|
meuadata="flac"
|
||||||
|
genre="$(ffmpeg -i "${path}" 2>&1 | grep GENRE | sed -e 's/^.*: //')"
|
||||||
|
if [[ "$(echo "${path}" | sed -e 's/^.*\.\([^\.]*\)$/\1/')" == "mp3" ]]
|
||||||
|
then
|
||||||
|
metadata="mp3"
|
||||||
|
genre="$(id3v2 -l "${path}" | grep '^TCON' | sed -e 's/^.*: //')"
|
||||||
|
fi
|
||||||
|
echo $genre
|
||||||
|
}
|
||||||
|
|
||||||
|
function in_playlist() {
|
||||||
|
flags="$1"
|
||||||
|
playlist="$2"
|
||||||
|
|
||||||
|
playlists="
|
||||||
|
ALL:(HE|ME|LE)
|
||||||
|
HE:HE
|
||||||
|
MHE:(ME|HE)
|
||||||
|
ME:ME
|
||||||
|
LME:(LE|ME)
|
||||||
|
LO:LO
|
||||||
|
LOFI:LOFI
|
||||||
|
LE_LOFI:(LE|LOFI)
|
||||||
|
"
|
||||||
|
query="$(echo "$playlists" | grep --ignore-case " ${playlist}:" | sed 's/^.*://')"
|
||||||
|
|
||||||
|
if [[ "$(echo "$flags" | grep -E --no-ignore-case "$query")" != "" ]]
|
||||||
|
then
|
||||||
|
echo true
|
||||||
|
else
|
||||||
|
echo false
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_like_level() {
|
||||||
|
flags="$1"
|
||||||
|
|
||||||
|
level="$(echo "$flags" | sed -e 's/^.*L\([0-3]\).*$/\1/')"
|
||||||
|
if [[ "$level" == "$(echo "$level" | tr -dc '0-3')" ]]
|
||||||
|
then
|
||||||
|
echo $level
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function shuffle() {
|
||||||
|
playlist="$1"
|
||||||
|
|
||||||
|
song="$(pick_song)"
|
||||||
|
flags="$(get_flags "$song")"
|
||||||
|
in_list=$(in_playlist "$flags" "$playlist")
|
||||||
|
like=$(get_like_level "$flags")
|
||||||
|
like_min=$(( 1 + $RANDOM % 3 ))
|
||||||
|
|
||||||
|
if [[ "$in_list" == "false" || "$like" -lt "$like_min" ]]
|
||||||
|
then
|
||||||
|
shuffle "$playlist"
|
||||||
|
else
|
||||||
|
mpd_song="$(echo "$song" | sed -e 's|.*/Music/||')"
|
||||||
|
echo "$mpd_song"
|
||||||
|
mpc add "$mpd_song"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "$(shuffle $PLAYLIST)"
|
||||||
|
|
||||||
Loading…
x
Reference in New Issue
Block a user