diff --git a/dzgui.sh b/dzgui.sh index bdbfd49..b4ffcf6 100755 --- a/dzgui.sh +++ b/dzgui.sh @@ -1,7 +1,7 @@ #!/bin/bash set -o pipefail -version=2.8.0-rc.17 +version=2.8.0-rc.18 aid=221100 game="dayz" @@ -344,21 +344,21 @@ open_mod_links(){ browser "$link_file" 2>/dev/null & } -steam_deck_mods(){ - until [[ -z $diff ]]; do - next=$(echo -e "$diff" | head -n1) - zenity --question --ok-label="Open" --cancel-label="Cancel" --title="DZGUI" --text="Missing mods. Click [Open] to open mod $next in Steam Workshop and subscribe to it by clicking the green Subscribe button. After the mod is downloaded, return to this menu to continue validation." --width=500 2>/dev/null - rc=$? - if [[ $rc -eq 0 ]]; then - echo "[DZGUI] Opening ${workshop}$next" - steam steam://url/CommunityFilePage/$next 2>/dev/null & - zenity --info --title="DZGUI" --ok-label="Next" --text="Click [Next] to continue mod check." --width=500 2>/dev/null - else - return 1 - fi - compare - done -} +#steam_deck_mods(){ +# until [[ -z $diff ]]; do +# next=$(echo -e "$diff" | head -n1) +# zenity --question --ok-label="Open" --cancel-label="Cancel" --title="DZGUI" --text="Missing mods. Click [Open] to open mod $next in Steam Workshop and subscribe to it by clicking the green Subscribe button. After the mod is downloaded, return to this menu to continue validation." --width=500 2>/dev/null +# rc=$? +# if [[ $rc -eq 0 ]]; then +# echo "[DZGUI] Opening ${workshop}$next" +# steam steam://url/CommunityFilePage/$next 2>/dev/null & +# zenity --info --title="DZGUI" --ok-label="Next" --text="Click [Next] to continue mod check." --width=500 2>/dev/null +# else +# return 1 +# fi +# compare +# done +#} set_term(){ local term="$1" local tterm="term=\"$term\"" @@ -405,8 +405,6 @@ auto_mod_install(){ echo "[DZGUI] Kicking off auto mod script" calc_mod_sizes term_params "$cmd" - #$term -e bash -c "/$helpers_path/scmd.sh $totalmodsize $cmd" -# $term -e "bash $helpers_path/scmd.sh $totalmodsize $cmd" compare if [[ -z $diff ]]; then passed_mod_check > >(zenity --pulsate --progress --auto-close --width=500 2>/dev/null) @@ -417,36 +415,63 @@ auto_mod_install(){ fi } manual_mod_install(){ - l=0 -# for i in "$diff"; do -# workshop_dir="$steam_path/steamapps/workshop/content/$aid" -# steam "steam://url/CommunityFilePage/$i" -# until [[ -d $workshop_dir/$i ]]; do -# sleep 0.1s -# done -# done -# compare -# [[ -z $diff ]] && passed_mod_check > >(zenity --pulsate --progress --auto-close --width=500 2>/dev/null) - - if [[ $is_steam_deck -eq 0 ]]; then - open_mod_links - until [[ -z $diff ]]; do - zenity --question --title="DZGUI" --ok-label="Next" --cancel-label="Cancel" --text="Opened mod links in browser.\nClick [Next] when all mods have been subscribed to.\nThis dialog may reappear if clicking [Next] too soon\nbefore mods are synchronized in the background." --width=500 2>/dev/null - rc=$? - if [[ $rc -eq 0 ]]; then - compare - open_mod_links - else - return + local ex="/tmp/dzc.tmp" + [[ -f $ex ]] && rm $ex + watcher(){ + readarray -t stage_mods <<< "$diff" + for((i=0;i<${#stage_mods[@]};i++)); do + [[ -f $ex ]] && return 1 + local downloads_dir="$steam_path/steamapps/workshop/downloads/$aid" + local workshop_dir="$steam_path/steamapps/workshop/content/$aid" + steam "steam://url/CommunityFilePage/${stage_mods[$i]}" + echo "# Opening workshop page for ${stage_mods[$i]}. If you see no progress after subscribing, try unsubscribing and resubscribing again until the download commences." + sleep 1s + wmctrl -a "DZG Watcher" + until [[ -d $downloads_dir/${stage_mods[$i]} ]]; do + [[ -f $ex ]] && return 1 + sleep 0.1s + if [[ -d $workshop_dir/${stage_mods[$i]} ]]; then + break fi done + wmctrl -a "DZG Watcher" + echo "# Steam is downloading ${stage_mods[$i]} (mod $((i+1)) of ${#stage_mods[@]})" + until [[ -d $workshop_dir/${stage_mods[$i]} ]]; do + [[ -f $ex ]] && return 1 + sleep 0.1s + done + wmctrl -a "DZG Watcher" + echo "# ${stage_mods[$i]} moved to mods dir" + done + echo "100" + } + watcher > >(zenity --pulsate --progress --auto-close --title="DZG Watcher" --width=500 2>/dev/null; rc=$?; [[ $rc -eq 1 ]] && touch $ex) + compare + if [[ -z $diff ]]; then + passed_mod_check > >(zenity --pulsate --progress --auto-close --width=500 2>/dev/null) + launch else - steam_deck_mods - rc=$? - [[ $rc -eq 1 ]] && return 1 + return 1 fi - passed_mod_check > >(zenity --pulsate --progress --auto-close --width=500 2>/dev/null) } +# if [[ $is_steam_deck -eq 0 ]]; then +# open_mod_links +# until [[ -z $diff ]]; do +# zenity --question --title="DZGUI" --ok-label="Next" --cancel-label="Cancel" --text="Opened mod links in browser.\nClick [Next] when all mods have been subscribed to.\nThis dialog may reappear if clicking [Next] too soon\nbefore mods are synchronized in the background." --width=500 2>/dev/null +# rc=$? +# if [[ $rc -eq 0 ]]; then +# compare +# open_mod_links +# else +# return +# fi +# done +# else +# steam_deck_mods +# rc=$? +# [[ $rc -eq 1 ]] && return 1 +# fi +# passed_mod_check > >(zenity --pulsate --progress --auto-close --width=500 2>/dev/null) encode(){ echo "$1" | md5sum | cut -c -8 }