Compare commits

..

1 Commits

Author SHA1 Message Date
Koloszár Gergely
73eae30395
Merge dccdffe761 into 23fb10f48e 2025-10-24 14:15:24 +00:00
4 changed files with 59 additions and 155 deletions

View File

@ -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

View File

@ -1,15 +1,16 @@
# Introduction # Introduction
Thank you for your interest in DZGUI! Thank you for considering contributing to DZGUI!
This guide goes over development conventions and best practices for contributors. This is a guide for contributors containing conventions best practices and rules
If you are a developer, you can skip to the end. of development and aims to ease the beginning of a contribution.
# Requesting help # How can I request help?
If you encounter a problem with DZGUI, you can submit tickets on the GitHub There is an issue tracker on github
(issue tracker)[https://github.com/aclist/dzgui-devel/issues] under the (link)[https://github.com/aclist/dzgui-devel/issues] where you can submit
`troubleshooting` tag. tickets. If you need help troubleshooting a problem, submit a ticket. There is a
category called `troubleshooting` which is exactly what you need.
# How can I help the project? # How can I help the project?
@ -22,48 +23,44 @@ There are several ways to help this project.
Before making any contribution, please read the `CODE_OF_CONDUCT.md` and act Before making any contribution, please read the `CODE_OF_CONDUCT.md` and act
accordingly. accordingly.
## Submitting a ticket ## How to report
Navigate to the GitHub (issue tracker)[https://github.com/aclist/dzgui-devel/issues].
From there, follow the onscreen prompts. You will be asked questions such as:
Reproduce the bug that you found. Navigate to the issue tracker on github:
(link)[https://github.com/aclist/dzgui-devel/issues]
Create a ticket where you give us the following:
- What version are you using? - What version are you using?
- What distribution are you using? - What distribution are you using?
- What is the issue that you found? - What is the issue that you found?
- How can we reproduce the issue? - How can we reproduce the issue?
- Possible screenshots, logs, other data that can help us
You can also attach screenshots, logs, or other data that can help us. ## How to request a feature
## Requesting a feature Navigate to the projects issue tracker
(link)[https://github.com/aclist/dzgui-devel/issues]. Search for your idea to
see if anyone had posted a simmilar idea. If not, open a ticket where you
describe your feature and its possible benefits. Please note, that this is a
community project, it takes time for us to develop features, having a feature
request doesn't mean that it will be implemented, but we do our best to support
as many cool ideas as possible.
You can also request features via the same issue tracker. It is good practice to ## How to contribute code or documentation
first search for your idea to see if a similar one has already been posted.
If not, open a ticket where you describe your feature and its possible benefits.
Please note that this is a community project, so it takes time for us to develop If you have an issue of interest in the issue tracker or any other change that
features. Putting in a feature request does not mean that it will be implemented, you would like to have implemented you can contribute code to this project. For
but we will do our best to support as many cool ideas as possible. this, you may fork this repository and checkout to
`prerelease/<latest-version>`. All new features and fixes will be merged to this
## Contributing code or documentation branch, so open your branch from here. Name it according to our convention:
- fix/<your-fix> - fix branches
If you would like to take ownership or assist with an issue on the issue tracker, or
contribute a new change, please follow the guidelines below.
Fork this repository and check out the code up to `prerelease/<latest-version>`.
All new features and fixes will be merged to this branch, so open your branch
from here.
The following naming conventions apply for PRs:
- fix/<your-fix> - patch/hotfix branches
- feat/<your-feature> - feature branches - feat/<your-feature> - feature branches
- doc/<your-doc-branch> - documentation branches - doc/<your-doc-branch> - documentation branches
- infra/<your-infra-branch> - infrastructure branches - infra/<your-infra-branch> - infrastructure branches
Implement your changes and test them locally. If they work you may Now you can implement your changes and test it locally. If they work you may
open a merge request, and then we review your changes. If everything is OK, it open a merge request, and then we review your changes. If everything is OK, it
will be merged to `prerelease/<latest-version>`, then `testing` and after a live will be merged to `prerelease/<latest-version>`, then `testing` and after a live
testing phase, to `stable` as well. testing phase, to `stable` as well.
It is recommended to follow During development, it is recommended to follow (conventional
(Conventional Commits)[https://www.conventionalcommits.org/en/v1.0.0/], as this commits)[https://www.conventionalcommits.org/en/v1.0.0/], it helps the project
integrates well with tooling and helps the project review your code. maintainers when they review your code.

133
dzgui.sh
View File

@ -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")
directories+=("$share_path")
directories+=("$helpers_path")
directories+=("$freedesktop_path")
directories+=("$config_path")
directories+=("$log_path")
for dir in "${directories[@]}"; do
mkdir -p "$dir" mkdir -p "$dir"
fi
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
case $1 in
"--uninstall" | "-u")
uninstall
exit 0 exit 0
# shift fi
;;
"--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

View File

@ -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')