#!/usr/bin/env bash # This file is part of The RetroPie Project # # The RetroPie Project is the legal property of its developers, whose names are # too numerous to list here. Please refer to the COPYRIGHT.md file distributed with this source. # # See the LICENSE.md file at the top-level directory of this distribution and # at https://raw.githubusercontent.com/RetroPie/RetroPie-Setup/master/LICENSE.md # rp_module_id="retropiemenu" rp_module_desc="RetroPie configuration menu for EmulationStation" rp_module_section="core" rp_module_flags="nonet" function _update_hook_retropiemenu() { # to show as installed when upgrading to retropie-setup 4.x if ! rp_isInstalled "$md_id" && [[ -f "$home/.emulationstation/gamelists/retropie/gamelist.xml" ]]; then mkdir -p "$md_inst" # to stop older scripts removing when launching from retropie menu in ES due to not using exec or exiting after running retropie-setup from this module touch "$md_inst/.retropie" fi } function depends_retropiemenu() { getDepends mc p7zip } function install_bin_retropiemenu() { return } function configure_retropiemenu() { [[ "$md_mode" == "remove" ]] && return local rpdir="$home/RetroPie/retropiemenu" mkdir -p "$rpdir" cp -Rv "$md_data/icons" "$rpdir/" chown -R "$__user":"$__group" "$rpdir" isPlatform "rpi" && rm -f "$rpdir/dispmanx.rp" # add the gameslist / icons local files=( 'audiosettings' 'bluetooth' 'configedit' 'esthemes' 'filemanager' 'raspiconfig' 'retroarch' 'retronetplay' 'rpsetup' 'runcommand' 'showip' 'splashscreen' 'wifi' ) local names=( 'Audio' 'Bluetooth' 'Configuration Editor' 'ES Themes' 'File Manager' 'Raspi-Config' 'Retroarch' 'RetroArch Net Play' 'RetroPie Setup' 'Run Command Configuration' 'Show IP' 'Splash Screens' 'WiFi' ) local descs=( 'Configure audio settings. Choose default of auto, 3.5mm jack, or HDMI. Mixer controls, and apply default settings.' 'Register and connect to Bluetooth devices. Unregister and remove devices, and display registered and connected devices.' 'Change common RetroArch options, and manually edit RetroArch configs, global configs, and non-RetroArch configs.' 'Install, uninstall, or update EmulationStation themes. Most themes can be previewed at https://retropie.org.uk/docs/Themes/.' 'Basic ASCII file manager for Linux allowing you to browse, copy, delete, and move files.' 'Change user password, boot options, internationalization, camera, add your Pi to Rastrack, overclock, overscan, memory split, SSH and more.' 'Launches the RetroArch GUI so you can change RetroArch options. Note: Changes will not be saved unless you have enabled the "Save Configuration On Exit" option.' 'Set up RetroArch Netplay options, choose host or client, port, host IP, delay frames, and your nickname.' 'Install RetroPie from binary or source, install experimental packages, additional drivers, edit Samba shares, custom scraper, as well as other RetroPie-related configurations.' 'Change what appears on the runcommand screen. Enable or disable the menu, enable or disable box art, and change CPU configuration.' 'Displays your current IP address, as well as other information provided by the command "ip addr show."' 'Enable or disable the splashscreen on RetroPie boot. Choose a splashscreen, download new splashscreens, and return splashscreen to default.' 'Connect to or disconnect from a WiFi network and configure WiFi settings.' ) setESSystem "RetroPie" "retropie" "$rpdir" ".rp .sh" "sudo $scriptdir/retropie_packages.sh retropiemenu launch %ROM% /dev/tty" "" "retropie" local file local name local desc local image local i for i in "${!files[@]}"; do case "${files[i]}" in audiosettings|raspiconfig|splashscreen) ! isPlatform "rpi" && continue ;; wifi) [[ "$__os_id" != "Raspbian" ]] && continue esac file="${files[i]}" name="${names[i]}" desc="${descs[i]}" image="$home/RetroPie/retropiemenu/icons/${files[i]}.png" touch "$rpdir/$file.rp" local function for function in $(compgen -A function _add_rom_); do "$function" "retropie" "RetroPie" "$file.rp" "$name" "$desc" "$image" done done } function remove_retropiemenu() { rm -rf "$home/RetroPie/retropiemenu" rm -rf "$home/.emulationstation/gamelists/retropie" delSystem retropie } function launch_retropiemenu() { clear local command="$1" local basename="${command##*/}" local no_ext="${basename%.rp}" joy2keyStart case "$basename" in retroarch.rp) joy2keyStop cp "$configdir/all/retroarch.cfg" "$configdir/all/retroarch.cfg.bak" chown "$__user":"$__group" "$configdir/all/retroarch.cfg.bak" su "$__user" -c "XDG_RUNTIME_DIR=/run/user/$SUDO_UID \"$emudir/retroarch/bin/retroarch\" --menu --config \"$configdir/all/retroarch.cfg\"" iniConfig " = " '"' "$configdir/all/retroarch.cfg" iniSet "config_save_on_exit" "false" ;; rpsetup.rp) rp_callModule setup gui ;; raspiconfig.rp) raspi-config ;; filemanager.rp) mc ;; showip.rp) local ip="$(getIPAddress)" printMsgs "dialog" "Your IP is: ${ip:-(unknown)}\n\nOutput of 'ip addr show':\n\n$(ip addr show)" ;; *.rp) rp_callModule $no_ext depends if fnExists gui_$no_ext; then rp_callModule $no_ext gui else rp_callModule $no_ext configure fi ;; *.sh) cd "$home/RetroPie/retropiemenu" sudo -u "$__user" bash "$command" ;; esac joy2keyStop clear }