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