mirror of
https://github.com/aclist/dztui.git
synced 2026-08-31 12:16:55 +02:00
Compare commits
1 Commits
abd2e0e369
...
592a83fce1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
592a83fce1 |
@ -3,18 +3,12 @@
|
|||||||
## [6.0.0-beta.8] XXXX-XX-XX
|
## [6.0.0-beta.8] XXXX-XX-XX
|
||||||
## Added
|
## Added
|
||||||
- Flag to disable branch toggle for distro-packaged releases
|
- Flag to disable branch toggle for distro-packaged releases
|
||||||
- Test whether script was sourced inline
|
|
||||||
- Commandline usage help text
|
|
||||||
|
|
||||||
## Fixed
|
## Fixed
|
||||||
- ESC key destroying wait dialogs while thread is pending
|
- ESC key destroying wait dialogs while thread is pending
|
||||||
- Tooltip signals being processed on main menu
|
- Tooltip signals being processed on main menu
|
||||||
- Leaky variable name in dialog title
|
- Leaky variable name in dialog title
|
||||||
- Prevent extraneous signals from propagating when column width is adjusted
|
- Prevent extraneous signals from propagating when column width is adjusted
|
||||||
- Script failing to start when remote endpoints are unavailable
|
|
||||||
|
|
||||||
## Changed
|
|
||||||
- Optimize time cost of setup checks
|
|
||||||
|
|
||||||
## [6.0.0-beta.7] 2025-09-20
|
## [6.0.0-beta.7] 2025-09-20
|
||||||
## Added
|
## Added
|
||||||
|
|||||||
137
dzgui.sh
137
dzgui.sh
@ -63,14 +63,17 @@ testing_url="$url_prefix/testing"
|
|||||||
releases_url="https://github.com/$author/$repo/releases/download/browser"
|
releases_url="https://github.com/$author/$repo/releases/download/browser"
|
||||||
km_helper_url="$releases_url/latlon"
|
km_helper_url="$releases_url/latlon"
|
||||||
|
|
||||||
|
|
||||||
set_im_module(){
|
set_im_module(){
|
||||||
#TODO: drop pending SteamOS changes
|
#TODO: drop pending SteamOS changes
|
||||||
if pgrep -a gamescope | grep -q "generate-drm-mode"; then
|
pgrep -a gamescope | grep -q "generate-drm-mode"
|
||||||
unset GTK_IM_MODULE
|
if [[ $? -eq 0 ]]; then
|
||||||
|
GTK_IM_MODULE=""
|
||||||
logger INFO "Detected Steam Deck (Game Mode), unsetting GTK_IM_MODULE"
|
logger INFO "Detected Steam Deck (Game Mode), unsetting GTK_IM_MODULE"
|
||||||
|
else
|
||||||
|
return
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
redact(){
|
redact(){
|
||||||
sed 's@\(/home/\)[^/]*@\1REDACTED@g'
|
sed 's@\(/home/\)[^/]*@\1REDACTED@g'
|
||||||
}
|
}
|
||||||
@ -84,21 +87,13 @@ logger(){
|
|||||||
printf "%s␞%s␞%s::%s()::%s␞%s\n" "$date" "$tag" "$self" "$caller" "$line" "$string" \
|
printf "%s␞%s␞%s::%s()::%s␞%s\n" "$date" "$tag" "$self" "$caller" "$line" "$string" \
|
||||||
| redact >> "$debug_log"
|
| redact >> "$debug_log"
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_dirs(){
|
setup_dirs(){
|
||||||
directories=()
|
for dir in "$state_path" "$cache_path" "$share_path" "$helpers_path" "$freedesktop_path" "$config_path" "$log_path"; do
|
||||||
directories+=("$state_path")
|
if [[ ! -d $dir ]]; then
|
||||||
directories+=("$cache_path")
|
mkdir -p "$dir"
|
||||||
directories+=("$share_path")
|
fi
|
||||||
directories+=("$helpers_path")
|
|
||||||
directories+=("$freedesktop_path")
|
|
||||||
directories+=("$config_path")
|
|
||||||
directories+=("$log_path")
|
|
||||||
for dir in "${directories[@]}"; do
|
|
||||||
mkdir -p "$dir"
|
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_state_files(){
|
setup_state_files(){
|
||||||
if [[ -f "$debug_log" ]]; then
|
if [[ -f "$debug_log" ]]; then
|
||||||
rm "$debug_log" && touch $debug_log
|
rm "$debug_log" && touch $debug_log
|
||||||
@ -109,8 +104,9 @@ setup_state_files(){
|
|||||||
logger INFO "Migrating legacy version file"
|
logger INFO "Migrating legacy version file"
|
||||||
fi
|
fi
|
||||||
# wipe cache files
|
# wipe cache files
|
||||||
if [[ $(ls -A "$cache_path") ]]; then
|
local path="$cache_path"
|
||||||
for file in "$cache_path"/*; do
|
if find "$path" -mindepth 1 -maxdepth 1 | read; then
|
||||||
|
for file in $path/*; do
|
||||||
rm "$file"
|
rm "$file"
|
||||||
done
|
done
|
||||||
logger INFO "Wiped cache files"
|
logger INFO "Wiped cache files"
|
||||||
@ -225,7 +221,8 @@ END
|
|||||||
}
|
}
|
||||||
depcheck(){
|
depcheck(){
|
||||||
for dep in "${!deps[@]}"; do
|
for dep in "${!deps[@]}"; do
|
||||||
if ! command -v "$dep" &> /dev/null; then
|
command -v "$dep" 2>&1>/dev/null
|
||||||
|
if [[ $? -eq 1 ]]; then
|
||||||
local msg="Requires $dep >= ${deps[$dep]}"
|
local msg="Requires $dep >= ${deps[$dep]}"
|
||||||
raise_error_and_quit "$msg"
|
raise_error_and_quit "$msg"
|
||||||
fi
|
fi
|
||||||
@ -496,47 +493,20 @@ stale_symlinks(){
|
|||||||
unlink "$l"
|
unlink "$l"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
check_availability() {
|
|
||||||
if [[ -z $1 ]]; then
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
local url=$1
|
|
||||||
local timeout_sec="3"
|
|
||||||
if [[ $2 ]]; then
|
|
||||||
timeout_sec=$2
|
|
||||||
fi
|
|
||||||
if ! ping -w "$timeout_sec" "$url" > /dev/null 2>&1; then
|
|
||||||
logger WARN "Failed to reach $url, service may be down."
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
local_latlon(){
|
local_latlon(){
|
||||||
if [[ -z $(command -v dig) ]]; then
|
if [[ -z $(command -v dig) ]]; then
|
||||||
local url_ipecho="https://ipecho.net/plain"
|
local local_ip=$(curl -Ls "https://ipecho.net/plain")
|
||||||
if ! check_availability "ipecho.net"; then
|
|
||||||
logger WARN "Failed to get external ip address, ipecho.net service may be down."
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
local local_ip=$(curl -Ls "$url_ipecho")
|
|
||||||
else
|
else
|
||||||
# TODO : implement checking remote
|
|
||||||
local local_ip=$(dig -4 +short myip.opendns.com @resolver1.opendns.com)
|
local local_ip=$(dig -4 +short myip.opendns.com @resolver1.opendns.com)
|
||||||
fi
|
fi
|
||||||
local url_ip_api="http://ip-api.com/json/$local_ip"
|
local url="http://ip-api.com/json/$local_ip"
|
||||||
if ! check_availability "ip-api.com"; then
|
local res=$(curl -Ls "$url" | jq -r '"\(.lat)\n\(.lon)"')
|
||||||
logger WARN "Failed to get local coordinates, ip-api.com service may be down."
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
local res=$(curl -Ls "$url_ip_api" | jq -r '"\(.lat)\n\(.lon)"')
|
|
||||||
if [[ -z "$res" ]]; then
|
if [[ -z "$res" ]]; then
|
||||||
logger WARN "Failed to get local coordinates"
|
logger WARN "Failed to get local coordinates"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
echo "$res" > "$coords_file"
|
echo "$res" > "$coords_file"
|
||||||
}
|
}
|
||||||
|
|
||||||
lock(){
|
lock(){
|
||||||
[[ ! -f $lock_file ]] && touch $lock_file
|
[[ ! -f $lock_file ]] && touch $lock_file
|
||||||
local pid=$(cat $lock_file)
|
local pid=$(cat $lock_file)
|
||||||
@ -615,7 +585,7 @@ fetch_helpers_by_sum(){
|
|||||||
[[ -f "$config_file" ]] && source "$config_file"
|
[[ -f "$config_file" ]] && source "$config_file"
|
||||||
declare -A sums
|
declare -A sums
|
||||||
sums=(
|
sums=(
|
||||||
["funcs"]="6ae3ead7034dc8e7543472bddee75c63"
|
["funcs"]="65134f86b7c9e14173e05d8e3ebea101"
|
||||||
["query_v2.py"]="55d339ba02512ac69de288eb3be41067"
|
["query_v2.py"]="55d339ba02512ac69de288eb3be41067"
|
||||||
["servers.py"]="ed442c3aecf33f777d59dcf53650d263"
|
["servers.py"]="ed442c3aecf33f777d59dcf53650d263"
|
||||||
["ui.py"]="f03879f088ad074f2ce3c92607c30202"
|
["ui.py"]="f03879f088ad074f2ce3c92607c30202"
|
||||||
@ -1120,61 +1090,13 @@ uninstall(){
|
|||||||
rm "$self"
|
rm "$self"
|
||||||
echo "Uninstall routine complete"
|
echo "Uninstall routine complete"
|
||||||
}
|
}
|
||||||
|
|
||||||
usage(){
|
|
||||||
cat <<- EOM
|
|
||||||
DZGUI - Free and Open Source DayZ launcher
|
|
||||||
|
|
||||||
Usage:
|
|
||||||
|
|
||||||
dzgui.sh [options]
|
|
||||||
|
|
||||||
Description:
|
|
||||||
|
|
||||||
When no option is provided, the script launches DZGUI.
|
|
||||||
|
|
||||||
Options:
|
|
||||||
|
|
||||||
-u, --uninstall:
|
|
||||||
Uninstalls the software
|
|
||||||
|
|
||||||
-v, --version:
|
|
||||||
Prints the version
|
|
||||||
|
|
||||||
-h, --help:
|
|
||||||
Prints this message
|
|
||||||
EOM
|
|
||||||
}
|
|
||||||
|
|
||||||
main(){
|
main(){
|
||||||
# setup zenity environment
|
local zenv=$(zenity --version 2>/dev/null)
|
||||||
local zenv=""
|
|
||||||
zenv=$(zenity --version 2>/dev/null)
|
|
||||||
[[ -z $zenv ]] && { echo "Requires zenity >= ${deps[$steamsafe_zenity]}"; exit 1; }
|
[[ -z $zenv ]] && { echo "Requires zenity >= ${deps[$steamsafe_zenity]}"; exit 1; }
|
||||||
|
if [[ $1 == "--uninstall" ]] || [[ $1 == "-u" ]]; then
|
||||||
# parse arguments
|
uninstall &&
|
||||||
while [[ $# -gt 0 ]]; do
|
exit 0
|
||||||
case $1 in
|
fi
|
||||||
"--uninstall" | "-u")
|
|
||||||
uninstall
|
|
||||||
exit 0
|
|
||||||
# shift
|
|
||||||
;;
|
|
||||||
"--version" | "-v")
|
|
||||||
echo $version
|
|
||||||
exit 0
|
|
||||||
# shift
|
|
||||||
;;
|
|
||||||
"--help" | "-h")
|
|
||||||
usage
|
|
||||||
exit 0
|
|
||||||
# shift
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "Unrecognized command!"
|
|
||||||
return 1
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
set_im_module
|
set_im_module
|
||||||
|
|
||||||
@ -1183,12 +1105,7 @@ main(){
|
|||||||
|
|
||||||
printf "All OK. Kicking off UI...\n"
|
printf "All OK. Kicking off UI...\n"
|
||||||
python3 "$ui_helper" "--init-ui" "$version" "$is_steam_deck"
|
python3 "$ui_helper" "--init-ui" "$version" "$is_steam_deck"
|
||||||
|
|
||||||
}
|
}
|
||||||
|
main "$@"
|
||||||
if [[ $(basename "$0") == "dzgui.sh" ]]; then
|
#TODO: tech debt: cruddy handling for steam forking
|
||||||
main "$@"
|
[[ $? -eq 1 ]] && pkill -f dzgui.sh
|
||||||
|
|
||||||
#TODO: tech debt: cruddy handling for steam forking
|
|
||||||
[[ $? -eq 1 ]] && pkill -f dzgui.sh
|
|
||||||
fi
|
|
||||||
|
|||||||
@ -369,10 +369,6 @@ local_latlon(){
|
|||||||
get_dist(){
|
get_dist(){
|
||||||
shift
|
shift
|
||||||
local given_ip="$1"
|
local given_ip="$1"
|
||||||
if [[ ! -f $_cache_coords ]]; then
|
|
||||||
printf "Unknown"
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
readarray -t coords < "$_cache_coords"
|
readarray -t coords < "$_cache_coords"
|
||||||
readarray -t n < <(<<< "$given_ip" awk 'BEGIN{RS="."}{$1=$1}1')
|
readarray -t n < <(<<< "$given_ip" awk 'BEGIN{RS="."}{$1=$1}1')
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user