#!/bin/sh # This only works for collections with a common extension. You can rename all your roms to use the same extension and (in any decent emulator at least) they should work regardless of the actual header type gamedir=${XDG_DATA_HOME:-$HOME/.local/share}/games dmenuprompt="dmenu -l 25" resolution() { cat /sys/class/drm/*/modes | head -1 } case "$1" in 2600) dmenucolors="-nb #111 -nf #e4963c -sb #6c3b17 -sf #fff -nhb #121212 -nhf #fc5231 -shb #804f2d -shf #fc5231" emulator="stella" ext=bin ;; 3ds) dmenucolors="-nb #111 -nf #888 -sb #999 -sf #F00 -nhb #111 -nhf #fff -shb #999" emulator="citra" ext=3ds ;; nes) dmenucolors="-nb #6d6a6d -nf #fff -sb #dfdcdd -sf #c1121c -nhb #222 -nhf #dc444d -shb #a29fa3 -shf #dc444d" emulator="fceux" ext=nes ;; snes) dmenucolors="-nb #b2b4b2 -nf #000 -sb #514689 -sf #fff -nhb #707372 -nhf #fff -shb #a7a4e0 -shf #000" emulator="launch snes" ext=sfc ;; n64) dmenucolors="-nb #223 -nf #fff -sb #069330 -sf #fff -nhb #c20d02 -nhf #ffc001 -shb #011da9 -shf #ffc001" emulator="mupen64plus --fullscreen --gfx mupen64plus-video-glide64mk2 --resolution $(resolution)" ext=z64 ;; gcn) dmenucolors="-nb #4d3b7c -nf #ddd -sb #000 -sf #fff -nhb #4d3b7c -nhf #eba982 -shb #000 -shf #eba982" emulator="dolphin-emu -b" ext=iso ;; nds) dmenucolors="-nb #ccc -nf #000 -sb #52398d -sf #fff -nhb #888 -nhf #fff -shb #52398d" emulator="desmume --3d-engine 2" ext=nds ;; *) console=`ls $gamedir | dmenu -l 25` && ($0 $console || emu) # Allows going back to select a different console exit ;; esac gamedir="$gamedir/$1" && [ -e "$gamedir" ] \ && selgame="`ls "$gamedir" | sed -n "s/\.$ext$//p" | $dmenuprompt $dmenucolors`.$ext" \ && $emulator "$gamedir/$selgame"