Compare commits

..

175 Commits

Author SHA1 Message Date
aclist
7e4197cdbc fix: uncomment code
Some checks failed
Mirror to Codeberg / mirror-to-codeberg (push) Has been cancelled
2026-01-18 15:04:26 +09:00
aclist
c0f9d8a508
Merge pull request #267 from aclist/fix/threaded-dialog
fix/threaded dialog
2026-01-18 15:02:43 +09:00
aclist
2da2b19001
Merge branch 'testing' into fix/threaded-dialog 2026-01-18 15:01:48 +09:00
aclist
62936fa7b7 fix: threaded dialog 2026-01-18 15:00:12 +09:00
aclist
2d58bb491e
Merge pull request #264 from aclist/fix/explicit-version
Some checks failed
Mirror to Codeberg / mirror-to-codeberg (push) Has been cancelled
fix: explicitly use python 3.13
2026-01-17 01:19:40 +09:00
aclist
2f123da63a fix: explicitly use python 3.13 2026-01-17 01:18:40 +09:00
aclist
7016edf7cd
Merge pull request #259 from aclist/prerelease/6.0.0
Some checks failed
Mirror to Codeberg / mirror-to-codeberg (push) Has been cancelled
Prerelease/6.0.0
2026-01-15 05:38:25 +09:00
aclist
b630cf4080 fix: write file after wiping cache
Some checks failed
Mirror to Codeberg / mirror-to-codeberg (push) Has been cancelled
2026-01-15 05:13:35 +09:00
aclist
1034a5ac04 fix: store source path 2026-01-15 05:04:10 +09:00
aclist
ebc62b0b1b fix: steam deck compatible source path expansion 2026-01-15 04:30:44 +09:00
aclist
4b47ff1fe0 fix: remove duplicate line 2026-01-15 03:41:38 +09:00
aclist
e3155ad7ee fix: patch changes from testing 2026-01-15 03:08:00 +09:00
aclist
c45d9fb234
Update funcs 2026-01-15 03:02:24 +09:00
aclist
22e92e67a7
Merge branch 'dzgui' into prerelease/6.0.0 2026-01-15 03:01:14 +09:00
aclist
cb45ce7b9a chore: prepare 6.0.0 release
Some checks are pending
Mirror to Codeberg / mirror-to-codeberg (push) Waiting to run
2026-01-15 02:48:05 +09:00
aclist
236a5dd0a3
Merge pull request #256 from aclist/fix/unlink-loop
Some checks failed
Mirror to Codeberg / mirror-to-codeberg (push) Has been cancelled
chore: normalize checksums
2026-01-04 21:34:41 +09:00
aclist
4c10958d10 chore: normalize checksums 2026-01-04 21:33:56 +09:00
aclist
23f7140c66
Merge pull request #255 from aclist/fix/unlink-loop
fix: regression introduced in 5.8.1
2026-01-04 21:25:38 +09:00
aclist
fbcfa1fb34 fix: regression introduced in 5.8.1. 2026-01-04 21:24:06 +09:00
aclist
52f36e0d0a
Merge pull request #252 from aclist/fix/setup-whitespaces
Some checks failed
Mirror to Codeberg / mirror-to-codeberg (push) Has been cancelled
fix: whitespaces during setup
2025-12-28 00:03:40 +09:00
aclist
d90c069a73 chore: correct version number in changelog 2025-12-28 00:01:30 +09:00
aclist
203ca0d388 chore: update changelog 2025-12-27 23:44:54 +09:00
aclist
34ee8c6645 fix: enclose whitespaces during setup 2025-12-27 23:42:49 +09:00
aclist
0cd561b62a fix: enclose game_dir in quotes 2025-12-27 23:06:11 +09:00
aclist
b9c30b4f52 fix: encapsulate paths 2025-12-27 21:06:44 +09:00
aclist
4bcf894704 chore: update installscript branch 2025-12-27 20:41:25 +09:00
aclist
c37800795b fix: malformed vdf path discovery 2025-12-27 20:39:09 +09:00
aclist
adf8a62e8a
Merge pull request #238 from aclist/doc/port-contributing
Some checks failed
Mirror to Codeberg / mirror-to-codeberg (push) Has been cancelled
Doc/port contributing
2025-10-30 11:50:23 +09:00
aclist
a1d14669c7
Merge pull request #237 from aclist/doc/port-contributing
Some checks failed
Mirror to Codeberg / mirror-to-codeberg (push) Has been cancelled
docs: add contributing file
2025-10-30 11:49:04 +09:00
aclist
46a54cef12 docs: add contributing file 2025-10-30 11:47:10 +09:00
aclist
321384dc7b
Merge pull request #222 from aclist/release/5.8.0
Some checks failed
Mirror to Codeberg / mirror-to-codeberg (push) Has been cancelled
chore: release 5.8.0
2025-07-07 10:28:57 +09:00
aclist
e02f02b775 chore: update changelog
Some checks failed
Mirror to Codeberg / mirror-to-codeberg (push) Has been cancelled
2025-07-07 10:18:25 +09:00
aclist
de524bd2a5 chore: backports from testing 2025-07-06 12:37:29 +09:00
aclist
edee9b6234
Merge pull request #219 from aclist/feat/coc2
Some checks failed
Mirror to Codeberg / mirror-to-codeberg (push) Has been cancelled
feat: add code of conduct
2025-06-05 17:49:08 +09:00
aclist
cefd041e08 feat: add code of conduct 2025-06-05 17:48:38 +09:00
aclist
881b0b3008
Merge pull request #218 from aclist/feat/coc
Some checks failed
Mirror to Codeberg / mirror-to-codeberg (push) Has been cancelled
feat: add code of conduct
2025-06-05 17:48:05 +09:00
aclist
2a59441dbc feat: add code of conduct 2025-06-05 17:47:07 +09:00
aclist
5ab18d0796
Merge pull request #214 from aclist/release/5.7.0
Release/5.7.0
2025-04-17 22:13:38 +09:00
aclist
23e3d34947 chore: update IP checksum 2025-04-17 21:52:36 +09:00
aclist
b86dd37b50 chore: bump minor version 2025-04-17 21:50:33 +09:00
aclist
59fdd30236 docs: update changelog 2025-04-17 21:49:35 +09:00
aclist
a35bfda5f1 fix: constrain window to viewport 2025-04-17 21:47:47 +09:00
aclist
5393bf1f5f fix: more robust ping method 2025-04-17 21:43:43 +09:00
aclist
90b3aa8663
Merge pull request #209 from aclist/aclist-patch-1
chore: update CHANGELOG.md
2025-04-05 09:15:56 +09:00
aclist
728e4daf7c
chore: update CHANGELOG.md 2025-04-05 09:15:23 +09:00
aclist
7a210c7f39
Merge pull request #208 from aclist/fix/test-connection
chore: drop pre-boot check
2025-04-05 09:08:35 +09:00
aclist
459dd69359 chore: bump version 2025-04-05 09:07:02 +09:00
aclist
fbd1a355d5 chore: drop pre-boot api check 2025-04-05 09:03:29 +09:00
aclist
82d2afb1f2
Merge pull request #207 from aclist/chore/2025-03-ipdb
chore: update ip records
2025-03-16 12:18:52 +09:00
aclist
8193980878 chore: update ip records 2025-03-16 12:17:41 +09:00
aclist
acdb34d36a
Merge pull request #206 from aclist/chore/index-url
chore: update to new index url
2025-03-15 17:01:19 +09:00
aclist
d6d0b241e0 chore: update to new index url 2025-03-15 17:00:08 +09:00
aclist
f75ef947c9
Merge pull request #204 from aclist/fix/batch-queries
fix: batch queries
2025-03-05 11:15:31 +09:00
aclist
6dc9a719ee fix: split up batch queries 2025-03-05 11:13:20 +09:00
aclist
785df28f66
Merge pull request #202 from aclist/chore/backports
chore: backports
2025-02-12 20:15:51 +09:00
aclist
66e114a400 chore: backports 2025-02-10 17:54:45 +09:00
aclist
2ba07bbba8
Merge pull request #197 from aclist/dzgui
chore: merge stable onto archival branch
2025-02-09 19:55:27 +09:00
aclist
65eda05d9f
Merge pull request #200 from aclist/chore/templates-stable
chore: back up templates from stable
2025-02-09 19:54:17 +09:00
aclist
f3b3f79bfb chore: back up templates from main 2025-02-09 19:53:25 +09:00
aclist
28c7d7f949
Merge pull request #198 from aclist/fix/drop-files
chore: drop extraneous file
2025-02-09 19:02:02 +09:00
aclist
d072c8107e chore: drop extraneous file 2025-02-09 19:01:30 +09:00
aclist
0629c8a6ba
Merge pull request #196 from aclist/release/5.6.3
chore: update IP db
2025-02-09 18:56:13 +09:00
aclist
8aea4af687 chore: update IP db 2025-02-09 18:55:33 +09:00
aclist
0562d8230d
Merge pull request #195 from aclist/release/5.6.2
chore: prepare release
2025-01-24 16:40:07 +09:00
aclist
759327e932 chore: prepare release 2025-01-23 12:02:27 +09:00
aclist
36753e02f1
Merge pull request #193 from aclist/release/5.6.1
Release/5.6.1
2025-01-10 22:48:54 +09:00
aclist
2ab2e23736 docs: update readme 2025-01-10 22:45:56 +09:00
aclist
34e7b2e480 fix: jq 1.6 support 2025-01-10 22:45:25 +09:00
aclist
540d0ad7e4
Update bug_report.yml 2025-01-09 23:32:28 +09:00
aclist
47bea45111
Update feature.yml 2025-01-09 23:32:27 +09:00
aclist
d03346b56a
Update trouble.yml 2025-01-09 23:32:26 +09:00
aclist
54e0762882
Update feature.yml 2025-01-09 23:31:21 +09:00
aclist
0834a86d33
Update trouble.yml 2025-01-09 23:30:54 +09:00
aclist
c6a8841614
Update trouble.yml 2025-01-09 23:30:37 +09:00
aclist
df92acb7dc
Update bug_report.yml 2025-01-09 23:30:24 +09:00
aclist
a333571f94
Update bug_report.yml 2025-01-09 23:28:46 +09:00
aclist
05f88b6019
Update trouble.yml 2025-01-09 23:27:08 +09:00
aclist
1f31c43fe4
Update trouble.yml 2025-01-09 20:39:35 +09:00
aclist
0763416903
Update feature.yml 2025-01-09 20:39:25 +09:00
aclist
3b384c5a4d
Update bug_report.yml 2025-01-09 20:39:17 +09:00
aclist
3ab666a807
Merge pull request #190 from aclist/release/5.6.0
Release/5.6.0
2025-01-07 21:46:53 +09:00
aclist
c8f7a32284 chore: update db checksum 2025-01-07 21:39:16 +09:00
aclist
a070e9fc65 chore: drop unused log file 2025-01-07 20:54:03 +09:00
aclist
5f55e3c664 Merge branch 'release/5.6.0' of github.com:aclist/dztui into release/5.6.0 2025-01-07 20:52:58 +09:00
aclist
07606d8852 docs: update changelog 2025-01-07 20:51:57 +09:00
aclist
afffc90abc
Update trouble.yml 2025-01-07 19:55:31 +09:00
aclist
70db7b45b3
Update trouble.yml 2025-01-07 19:54:19 +09:00
aclist
aac8558079
Update trouble.yml 2025-01-07 19:53:15 +09:00
aclist
ac8ff2febf
Update trouble.yml 2025-01-07 19:52:29 +09:00
aclist
6369d895fd
Update feature.yml 2025-01-07 19:51:58 +09:00
aclist
7413f7c029
Update bug_report.yml 2025-01-07 19:51:46 +09:00
aclist
3f1d8cb24f
Merge branch 'dzgui' into release/5.6.0 2025-01-07 00:59:57 +09:00
aclist
4df12605fc chore: update changelog 2025-01-07 00:55:58 +09:00
aclist
2c5da88e06
Update bug_report.yml 2025-01-06 20:28:34 +09:00
aclist
3cb6175436
Update feature.yml 2025-01-06 20:28:23 +09:00
aclist
3739f19ab2
Update trouble.yml 2025-01-06 20:28:12 +09:00
aclist
2da4d001d6
Update trouble.yml 2025-01-06 20:27:30 +09:00
aclist
5d61a1f513
Update trouble.yml 2025-01-06 20:26:29 +09:00
aclist
56c80d187b
Update trouble.yml 2025-01-06 20:26:20 +09:00
aclist
e08f66cdcb
Update trouble.yml 2025-01-06 20:25:22 +09:00
aclist
48fee301bb
Update trouble.yml 2025-01-06 20:24:47 +09:00
aclist
20511f5661
Update trouble.yml 2025-01-06 20:24:14 +09:00
aclist
d2e8333ba9
Update trouble.yml 2025-01-06 20:21:10 +09:00
aclist
5d37039064
Update trouble.yml 2025-01-06 20:20:57 +09:00
aclist
ce44cdbc54
Update trouble.yml 2025-01-06 20:20:36 +09:00
aclist
5b2738420e
Create trouble.yml 2025-01-06 20:19:41 +09:00
aclist
1e29288e2a
Update feature.yml 2025-01-06 20:10:08 +09:00
aclist
745cc06091
Update feature.yml 2025-01-06 20:09:08 +09:00
aclist
0311cc8a95
Create feature.yml 2025-01-06 20:08:29 +09:00
aclist
7c3521cf97
Delete .github/ISSUE_TEMPLATE/feature.md 2025-01-06 20:08:16 +09:00
aclist
bb0eefadd2
Delete .github/ISSUE_TEMPLATE/test.yml 2025-01-06 20:03:41 +09:00
aclist
7eb5a4fac5
Update bug_report.yml 2025-01-06 20:02:52 +09:00
aclist
ebce329c3d
Delete .github/ISSUE_TEMPLATE/bug_report.md 2025-01-06 20:02:38 +09:00
aclist
23464d3b51
Update bug_report.yml 2025-01-06 20:01:30 +09:00
aclist
602a7b8edc
Update bug_report.yml 2025-01-06 19:59:20 +09:00
aclist
59c58a1df5
Update bug_report.yml 2025-01-06 19:57:56 +09:00
aclist
830318d98e
Update bug_report.yml 2025-01-06 19:57:00 +09:00
aclist
271c3e6197
Update bug_report.yml 2025-01-06 19:56:39 +09:00
aclist
1ab9634069
Update bug_report.yml 2025-01-06 19:54:29 +09:00
aclist
8666b0055a
Update bug_report.yml 2025-01-06 19:53:52 +09:00
aclist
406554e011
Create bug_report.yml 2025-01-06 19:50:39 +09:00
aclist
5334d07f7f
Create test.yml 2025-01-06 19:41:34 +09:00
aclist
6cab96d1f8
Create config.yml 2025-01-06 19:39:18 +09:00
aclist
bc94d989d4
Delete .github/feature.md 2025-01-06 19:37:57 +09:00
aclist
e4fff5f242
Create feature.md 2025-01-06 19:37:38 +09:00
aclist
53f2fe922a
Create feature.md 2025-01-06 19:37:00 +09:00
aclist
800f68a1b7
Update bug_report.md 2025-01-06 19:32:55 +09:00
aclist
c6c377e8b9
Update bug_report.md 2025-01-06 19:30:16 +09:00
aclist
7a68d7e097
Update issue templates 2025-01-06 19:27:44 +09:00
aclist
f60a6edf2b
Merge pull request #182 from aclist/patch/yaml
Patch/yaml
2024-12-25 14:21:49 +09:00
aclist
8c33a1b371 chore: drop branch logic 2024-12-25 14:21:24 +09:00
aclist
e5f7391b89 chore: add YAML file 2024-12-25 14:20:36 +09:00
aclist
a8f51280e8
Update mirror.yml 2024-12-25 14:19:04 +09:00
aclist
c19346529b
Update mirror.yml 2024-12-25 14:12:08 +09:00
aclist
85451f765b
Update mirror.yml 2024-12-25 14:09:54 +09:00
aclist
5a144f7815
Merge pull request #179 from jiriks74/add_mirror_action
feat(ci): Add workflow for pushing to Codeberg
2024-12-25 12:42:58 +09:00
jiriks74
2370e81403
feat(ci): Add workflow for pushing to Codeberg 2024-12-17 17:24:32 +01:00
aclist
c11511abff Merge pull request 'chore: backports into stable' (#5) from release/testing-backports into dzgui
Reviewed-on: https://codeberg.org/aclist/dztui/pulls/5
2024-12-13 01:50:01 +00:00
aclist
bda7223ac8
Merge pull request #176 from aclist/release/testing-backports
Release/testing backports
2024-12-13 10:47:54 +09:00
aclist
6b48ee127d chore: backports into stable 2024-12-13 10:45:39 +09:00
aclist
aa8a52bfc0 Merge pull request 'release/readme' (#4) from release/readme into dzgui
Reviewed-on: https://codeberg.org/aclist/dztui/pulls/4
2024-12-12 09:33:32 +00:00
aclist
8ea62434ee docs: update docs link 2024-12-12 18:32:44 +09:00
aclist
baeaeb1b64 docs: update README 2024-12-12 17:57:27 +09:00
aclist
32b424da5c fix: update installscript 2024-12-12 12:25:26 +09:00
aclist
d71110d0a1 fix: url syntax 2024-12-12 12:10:04 +09:00
aclist
bc9178d2de fix: triage hotfix from testing 2024-12-12 11:56:10 +09:00
aclist
1533febf9a
Merge pull request #172 from aclist/release/5.5.1
fix: backport hotfix (#168)
2024-12-03 20:10:29 +09:00
aclist
c3c8872fad fix: backport hotfix (#168) 2024-12-03 20:09:19 +09:00
aclist
bae6a57e1e
Merge pull request #164 from aclist/dzgui
5.5.0 backports
2024-11-11 09:35:17 +09:00
aclist
3bdc0057a2
Merge pull request #163 from aclist/release/5.5.0-stable
Release/5.5.0 stable
2024-11-11 09:22:06 +09:00
aclist
5496f914f2
fix: correct typo 2024-11-11 09:17:47 +09:00
aclist
cb9db55bcb
Merge branch 'dzgui' into release/5.5.0-stable 2024-11-11 06:08:47 +09:00
aclist
c0ab8111fd chore: bump version 2024-11-11 06:05:56 +09:00
aclist
10c6a79b17 chore: normalize changelog 2024-11-11 06:05:49 +09:00
aclist
2b4b533a5b
Merge pull request #156 from aclist/release/5.4.2
Release/5.4.2
2024-10-06 03:31:10 +09:00
aclist
dcb8be9132 chore: update checksum 2024-10-06 03:27:49 +09:00
aclist
278aa8c28a chore: update checksum 2024-10-06 03:26:24 +09:00
aclist
32e5bafb33
Merge branch 'dzgui' into release/5.4.2 2024-10-06 03:25:16 +09:00
aclist
59e19510e3
Merge pull request #152 from aclist/release/5.4.1
Release/5.4.1
2024-09-28 20:51:19 +09:00
aclist
45ab112970
Merge branch 'dzgui' into release/5.4.1 2024-09-25 23:11:28 +09:00
aclist
ed07fd0343 chore: normalize changelog 2024-09-25 23:08:29 +09:00
aclist
c2c7b37b90
Merge pull request #151 from aclist/release/5.3.0-backports
Release/5.3.0 backports
2024-09-09 17:16:31 +09:00
aclist
23798c91d3
Merge pull request #149 from aclist/release/5.3.0
chore: normalize version
2024-09-01 13:19:35 +09:00
aclist
659cbb83a3 chore: normalize version 2024-09-01 13:19:16 +09:00
aclist
32c467fc6d
Merge pull request #147 from aclist/release/5.3.3
Release/5.3.3 (stable)
2024-09-01 13:13:54 +09:00
aclist
d01add3573 docs: update changelog 2024-08-29 22:11:49 +09:00
aclist
0de89a3ef1 add: set WM_CLASS name 2024-08-28 08:44:13 +09:00
aclist
5686ea76c2 fix: boolean operator 2024-08-28 08:09:32 +09:00
aclist
5fda598173 chore: update url 2024-08-28 07:31:14 +09:00
aclist
049fb47019 chore: normalize version 2024-08-28 07:30:38 +09:00
aclist
81f269b71b chore: normalize changelog 2024-08-28 07:29:02 +09:00
aclist
c97a7a260f
Merge pull request #133 from aclist/docs/kb
docs: update API info
2024-07-14 22:26:03 +09:00
aclist
b715eb5a3e
Merge pull request #132 from aclist/docs/kb
docs: fix url
2024-07-06 20:45:12 +09:00
aclist
8e6cf7e792
Merge pull request #126 from aclist/dzgui
backports
2024-06-23 12:51:24 +09:00
aclist
98868073a5
Merge pull request #124 from aclist/dzgui
backports
2024-06-23 12:00:35 +09:00
4 changed files with 204 additions and 161 deletions

View File

@ -1,5 +1,18 @@
# Changelog # Changelog
## [6.0.2-beta.2] 2026-01-18
## Fixed
- Helpers not being downloaded (uncommented boilerplate)
## [6.0.2-beta.1] 2026-01-18
## Fixed
- Do not spawn dialogs from inside of thread when fetching prereqs
## Changed
- Optimize time complexity of startup checks
- Optimize coordinate calculation by using local records first
- Rename some internal functions
- Wrap entire startup process in dialog
## [6.0.1-beta.1] 2026-01-16 ## [6.0.1-beta.1] 2026-01-16
## Fixed ## Fixed
- Explicitly use Python 3.13 when calling subprocesses - Explicitly use Python 3.13 when calling subprocesses

145
dzgui.sh
View File

@ -2,8 +2,7 @@
set -o pipefail set -o pipefail
src_path="$(readlink -e "$0")" src_path="$(readlink -e "$0")"
version=6.0.2-beta.2
version=6.0.1.beta-1
#CONSTANTS #CONSTANTS
aid=221100 aid=221100
@ -143,7 +142,7 @@ test_gobject(){
python3.13 -c "import gi" python3.13 -c "import gi"
if [[ ! $? -eq 0 ]]; then if [[ ! $? -eq 0 ]]; then
logger CRITICAL "Missing PyGObject" logger CRITICAL "Missing PyGObject"
quit_with_pdialog "Requires PyGObject (python-gobject)" quit_with_help_dialog "Requires PyGObject (python-gobject)"
exit 1 exit 1
fi fi
logger INFO "Found PyGObject in Python env" logger INFO "Found PyGObject in Python env"
@ -248,7 +247,7 @@ open_url(){
xdg-open "$url" xdg-open "$url"
fi fi
} }
quit_with_pdialog(){ quit_with_help_dialog(){
local sel local sel
msg="$1" msg="$1"
help_button="Open help page" help_button="Open help page"
@ -261,7 +260,7 @@ quit_with_pdialog(){
check_pyver(){ check_pyver(){
if [[ ! $(python3.13 --version) ]]; then if [[ ! $(python3.13 --version) ]]; then
local msg="Requires Python 3.13" local msg="Requires Python 3.13"
quit_with_pdialog "$msg" quit_with_help_dialog "$msg"
fi fi
} }
watcher_deps(){ watcher_deps(){
@ -336,6 +335,7 @@ check_unmerged(){
fi fi
} }
check_version(){ check_version(){
echo "# Checking version"
[[ -n $reference_branch ]] && return [[ -n $reference_branch ]] && return
local version_url=$(format_version_url) local version_url=$(format_version_url)
local upstream=$(curl -Ls "$version_url" | awk -F= '/^version=/ {print $2}') local upstream=$(curl -Ls "$version_url" | awk -F= '/^version=/ {print $2}')
@ -415,6 +415,7 @@ test_display_mode(){
fi fi
} }
check_architecture(){ check_architecture(){
echo "# Checking system architecture"
local cpu=$(< /proc/cpuinfo awk -F": " '/AMD Custom APU [0-9]{4}$/ {print $2; exit}') local cpu=$(< /proc/cpuinfo awk -F": " '/AMD Custom APU [0-9]{4}$/ {print $2; exit}')
read -a APU_MODEL <<< "$cpu" read -a APU_MODEL <<< "$cpu"
if [[ ${APU_MODEL[3]} != "0932" ]] && [[ ${APU_MODEL[3]} != "0405" ]]; then if [[ ${APU_MODEL[3]} != "0932" ]] && [[ ${APU_MODEL[3]} != "0405" ]]; then
@ -431,6 +432,7 @@ check_architecture(){
logger INFO "Setting architecture to 'Steam Deck'" logger INFO "Setting architecture to 'Steam Deck'"
} }
check_map_count(){ check_map_count(){
echo "# Checking map count"
[[ $is_steam_deck -gt 0 ]] && return 0 [[ $is_steam_deck -gt 0 ]] && return 0
local map_count_file="/proc/sys/vm/max_map_count" local map_count_file="/proc/sys/vm/max_map_count"
local min_count=1048576 local min_count=1048576
@ -480,6 +482,7 @@ tdialog(){
$steamsafe_zenity --info --text="$1" "${zenity_flags[@]}" $steamsafe_zenity --info --text="$1" "${zenity_flags[@]}"
} }
steam_deps(){ steam_deps(){
echo "# Checking Steam"
local flatpak local flatpak
local steam local steam
[[ $(command -v flatpak) ]] && flatpak=$(flatpak list | grep valvesoftware.Steam) [[ $(command -v flatpak) ]] && flatpak=$(flatpak list | grep valvesoftware.Steam)
@ -490,16 +493,8 @@ steam_deps(){
exit 1 exit 1
fi fi
} }
migrate_files(){
if [[ ! -f $config_path/dztuirc.oldapi ]]; then
cp $config_file $config_path/dztuirc.oldapi
logger INFO "Migrated old API file"
fi
[[ ! -f $hist_file ]] && return
rm $hist_file
logger INFO "Wiped old history file"
}
stale_symlinks(){ stale_symlinks(){
echo "# Cleaning stale symlinks"
local game_dir="$steam_path/steamapps/common/DayZ" local game_dir="$steam_path/steamapps/common/DayZ"
readarray -t links < <(find "$game_dir" -xtype l) readarray -t links < <(find "$game_dir" -xtype l)
for link in "${links[@]}"; do for link in "${links[@]}"; do
@ -513,7 +508,7 @@ check_availability() {
return 1 return 1
fi fi
local url=$1 local url=$1
local timeout_sec="3" local timeout_sec="1"
if [[ $2 ]]; then if [[ $2 ]]; then
timeout_sec=$2 timeout_sec=$2
fi fi
@ -524,6 +519,7 @@ check_availability() {
} }
local_latlon(){ local_latlon(){
echo "# Checking coordinates"
if [[ -z $(command -v dig) ]]; then if [[ -z $(command -v dig) ]]; then
local url_ipecho="https://ipecho.net/plain" local url_ipecho="https://ipecho.net/plain"
if ! check_availability "ipecho.net"; then if ! check_availability "ipecho.net"; then
@ -535,6 +531,9 @@ local_latlon(){
# TODO : implement checking remote # 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
if calc_local_coords "$local_ip"; then
return 0
fi
local url_ip_api="http://ip-api.com/json/$local_ip" local url_ip_api="http://ip-api.com/json/$local_ip"
if ! check_availability "ip-api.com"; then if ! check_availability "ip-api.com"; then
logger WARN "Failed to get local coordinates, ip-api.com service may be down." logger WARN "Failed to get local coordinates, ip-api.com service may be down."
@ -549,6 +548,7 @@ local_latlon(){
} }
lock(){ lock(){
echo "# Setting up lock file"
[[ ! -f $lock_file ]] && touch $lock_file [[ ! -f $lock_file ]] && touch $lock_file
local pid=$(cat $lock_file) local pid=$(cat $lock_file)
ps -p $pid -o pid= >/dev/null 2>&1 ps -p $pid -o pid= >/dev/null 2>&1
@ -626,10 +626,10 @@ 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"]="2a71d60974f5a869ff170366fd80676f" ["funcs"]="69e83db00cbc7674e241565c88aed83d"
["query_v2.py"]="55d339ba02512ac69de288eb3be41067" ["query_v2.py"]="55d339ba02512ac69de288eb3be41067"
["servers.py"]="ed442c3aecf33f777d59dcf53650d263" ["servers.py"]="ed442c3aecf33f777d59dcf53650d263"
["ui.py"]="3d67e5e8e85a23dde1fd0e85a9be62a9" ["ui.py"]="d09b9d8bed3854efd51377289786c5ac"
["vdf2json.py"]="2f49f6f5d3af919bebaab2e9c220f397" ["vdf2json.py"]="2f49f6f5d3af919bebaab2e9c220f397"
["pefile.py"]="21531f2c0d9dfa5f110cf6779f9d22c0" ["pefile.py"]="21531f2c0d9dfa5f110cf6779f9d22c0"
) )
@ -691,12 +691,12 @@ fetch_km_helper(){
} }
get_response_code(){ get_response_code(){
local url="$1" local url="$1"
curl -Ls -I -o /dev/null -w "%{http_code}" "$url" curl --connect-timeout 3 -Ls -I -o /dev/null -w "%{http_code}" "$url"
} }
fetch_ip_db(){ fetch_ip_db(){
parse_dl_url(){ parse_dl_url(){
curl -Ls "$url" \ curl --connect-timeout 3 -Ls "$url" \
| grep "csv.gz" \ | grep "csv.gz" \
| awk -F"['']" '{print $2}' | awk -F"['']" '{print $2}'
} }
@ -712,6 +712,9 @@ fetch_ip_db(){
fetch(){ fetch(){
logger INFO "Triggering fetch routine" logger INFO "Triggering fetch routine"
local url="$1" local url="$1"
local ip_file="${state_path}/ips.csv"
local base_file="${state_path}/${this_month}.csv.gz"
local extracted_file="${state_path}/${this_month}.csv"
curl -Ls "$url" > "$base_file" curl -Ls "$url" > "$base_file"
if [[ $? -ne 0 ]]; then if [[ $? -ne 0 ]]; then
@ -731,7 +734,7 @@ fetch_ip_db(){
logger WARN "Abnormal exit while parsing IPs" logger WARN "Abnormal exit while parsing IPs"
return return
fi fi
rm "${state_path}/${month}.csv" rm "${state_path}/${this_month}.csv"
readarray -t records < <(cat $ip_file | awk -F, 'NR==1 {print $1} END {print $1}') readarray -t records < <(cat $ip_file | awk -F, 'NR==1 {print $1} END {print $1}')
if [[ ${records[0]} != "0.0.0.0" ]] && [[ ${records[1]} != "224.0.0.0" ]]; then if [[ ${records[0]} != "0.0.0.0" ]] && [[ ${records[1]} != "224.0.0.0" ]]; then
@ -746,16 +749,13 @@ fetch_ip_db(){
rm "$ip_file" rm "$ip_file"
fi fi
echo "$month" > "$month_file" echo "$this_month" > "$month_file"
logger INFO "Wrote '$month' to stub '$month_file'" logger INFO "Wrote '$this_month' to stub '$month_file'"
logger INFO "Updated '$ip_file'" logger INFO "Updated '$ip_file'"
} }
local url="https://db-ip.com/db/download/ip-to-city-lite" check_remote(){
local month_file="${state_path}/.month" local url="$1"
local ip_file="${state_path}/ips.csv"
# test main url
local res=$(get_response_code "$url") local res=$(get_response_code "$url")
if [[ $res -ne 200 ]]; then if [[ $res -ne 200 ]]; then
logger WARN "Failed to retrieve remote resource: '$url' ($res)" logger WARN "Failed to retrieve remote resource: '$url' ($res)"
@ -771,30 +771,35 @@ fetch_ip_db(){
return return
fi fi
logger INFO "Resolved download URL: '$dl_url'" logger INFO "Resolved download URL: '$dl_url'"
fetch "$dl_url"
}
local month=$(parse_dl_url_date "$dl_url") local url="https://db-ip.com/db/download/ip-to-city-lite"
local base_file="${state_path}/${month}.csv.gz" month_file="${state_path}/.month"
local extracted_file="${state_path}/${month}.csv" this_month=$(date +%Y-%m)
# no stub file # no stub file
if [[ ! -f $month_file ]]; then if [[ ! -f $month_file ]]; then
logger WARN "No stub file '$month_file' present" logger WARN "No stub file '$month_file' present"
fetch "$dl_url" check_remote "$url"
return
fi
# local needs update
local last_month=$(< "$month_file")
if [[ $last_month != "$month" ]]; then
logger WARN "Local stub '$last_month' does not match remote stub '$month'"
fetch "$dl_url"
return return
fi fi
# if stub is same date, abort # if stub is same date, abort
local last_month=$(< "$month_file")
if [[ $last_month == "$this_month" ]]; then
logger INFO "Local stub '$last_month' is identical to remote, skipping" logger INFO "Local stub '$last_month' is identical to remote, skipping"
return
fi
# local needs update
logger WARN "Local stub '$last_month' does not match '$this_month'"
check_remote "$url"
return
} }
fetch_helpers(){ fetch_helpers(){
echo "# Checking helper files"
fetch_a2s fetch_a2s
fetch_dzq fetch_dzq
fetch_km_helper fetch_km_helper
@ -982,6 +987,7 @@ create_config(){
done done
} }
varcheck(){ varcheck(){
echo "# Checking config file"
local msg="Config file '$config_file' missing. Start first-time setup now?" local msg="Config file '$config_file' missing. Start first-time setup now?"
local msg2="The Steam paths set in your config file appear to be invalid (DayZ was moved or uninstalled). Restart first-time setup now?" local msg2="The Steam paths set in your config file appear to be invalid (DayZ was moved or uninstalled). Restart first-time setup now?"
if [[ ! -f $config_file ]]; then if [[ ! -f $config_file ]]; then
@ -1008,12 +1014,14 @@ varcheck(){
fi fi
} }
is_dzg_downloading(){ is_dzg_downloading(){
echo "# Checking DayZ"
if [[ -d $steam_path ]] && [[ -d $steam_path/downloading/$aid ]]; then if [[ -d $steam_path ]] && [[ -d $steam_path/downloading/$aid ]]; then
logger WARN "DayZ may be scheduling updates" logger WARN "DayZ may be scheduling updates"
return 0 return 0
fi fi
} }
is_steam_running(){ is_steam_running(){
echo "# Checking Steam"
local res=$(ps aux | grep "steamwebhelper" | grep -v grep) local res=$(ps aux | grep "steamwebhelper" | grep -v grep)
if [[ -z $res ]]; then if [[ -z $res ]]; then
logger WARN "Steam may not be running" logger WARN "Steam may not be running"
@ -1026,6 +1034,7 @@ get_response_code(){
curl -Ls -I -o /dev/null -w "%{http_code}" "$url" curl -Ls -I -o /dev/null -w "%{http_code}" "$url"
} }
test_connection(){ test_connection(){
echo "# Testing connection"
declare -A hr declare -A hr
local res1 local res1
local res2 local res2
@ -1059,6 +1068,7 @@ legacy_cols(){
mv $cols_file.new $cols_file mv $cols_file.new $cols_file
} }
stale_mod_signatures(){ stale_mod_signatures(){
echo "# Checking stale mods"
[[ ! -f "$versions_file" ]] && return [[ ! -f "$versions_file" ]] && return
local workshop_dir="$steam_path/steamapps/workshop/content/$aid" local workshop_dir="$steam_path/steamapps/workshop/content/$aid"
if [[ -d $workshop_dir ]]; then if [[ -d $workshop_dir ]]; then
@ -1072,18 +1082,48 @@ stale_mod_signatures(){
} }
create_new_links(){ create_new_links(){
echo "# Setting up symlinks"
"$func_helper" "update_symlinks" "$func_helper" "update_symlinks"
} }
calc_local_coords(){
local ip="$1"
[[ ! -f "$geo_helper" ]] && return 1
IFS="." read -ra split <<< "$ip"
[[ ${#split[@]} -ne 4 ]] && return 1
prefix="^${split[0]}.${split[1]}."
readarray -t res < <(grep "$prefix" "$geo_helper")
for address in "${res[@]}"; do
IFS="," read -ra fields <<< "$address"
upper="${fields[1]}"
IFS="." read -ra upper_digits <<< "$upper"
if [[ ${split[2]} -gt ${upper_digits[2]} ]]; then
continue
fi
if [[ ${split[2]} -eq ${upper_digits[2]} ]]; then
if [[ ${split[3]} -gt ${upper_digits[3]} ]]; then
continue
fi
if [[ ${split[3]} -eq ${upper_digits[3]} ]]; then
echo "${fields[-2]}" >> "$coords_file"
echo "${fields[-1]}" >> "$coords_file"
return 0
fi
fi
if [[ ${split[2]} -lt ${upper_digits[2]} ]]; then
echo "${fields[-2]}" >> "$coords_file"
echo "${fields[-1]}" >> "$coords_file"
return 0
fi
done
return 1
}
initial_setup(){ initial_setup(){
setup_dirs
setup_state_files
depcheck
check_pyver
test_gobject
watcher_deps
check_architecture check_architecture
test_connection test_connection
fetch_helpers > >(pdialog "Checking helper files") fetch_helpers
varcheck varcheck
source "$config_file" source "$config_file"
lock lock
@ -1092,14 +1132,12 @@ initial_setup(){
check_version check_version
check_map_count check_map_count
steam_deps steam_deps
migrate_files
stale_symlinks stale_symlinks
stale_mod_signatures stale_mod_signatures
create_new_links create_new_links
local_latlon local_latlon
is_steam_running is_steam_running
is_dzg_downloading is_dzg_downloading
print_config_vals
} }
uninstall(){ uninstall(){
_full(){ _full(){
@ -1201,8 +1239,15 @@ main(){
set_im_module set_im_module
printf "Initializing setup...\n" printf "Checking dependencies...\n"
initial_setup setup_dirs
setup_state_files
depcheck
check_pyver
test_gobject
watcher_deps
initial_setup > >(pdialog "Initializing setup")
printf "All OK. Kicking off UI...\n" printf "All OK. Kicking off UI...\n"
python3.13 "$ui_helper" "--init-ui" "$version" "$is_steam_deck" python3.13 "$ui_helper" "--init-ui" "$version" "$is_steam_deck"

View File

@ -1,6 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -o pipefail set -o pipefail
version="6.0.1-beta.1" version="6.0.2-beta.1"
#CONSTANTS #CONSTANTS
aid=221100 aid=221100

View File

@ -19,7 +19,7 @@ from collections.abc import Callable
from concurrent.futures import wait from concurrent.futures import wait
from concurrent.futures import ThreadPoolExecutor from concurrent.futures import ThreadPoolExecutor
from pathlib import Path from pathlib import Path
from typing import Literal, Self, Any from typing import Literal, Self, Any, TYPE_CHECKING
import servers as Servers # noqa E402 import servers as Servers # noqa E402
import pefile as PeFile # noqa E402 import pefile as PeFile # noqa E402
@ -32,10 +32,12 @@ from pefile import (
) )
from pefile import VersionMatch from pefile import VersionMatch
if TYPE_CHECKING:
from servers import Prereqs
locale.setlocale(locale.LC_ALL, "") locale.setlocale(locale.LC_ALL, "")
import gi # noqa E402 import gi # noqa E402
gi.require_version("Gtk", "3.0") gi.require_version("Gtk", "3.0")
from gi.repository import Gtk, GLib, Gdk, GObject, Pango # noqa E402 from gi.repository import Gtk, GLib, Gdk, GObject, Pango # noqa E402
@ -1027,13 +1029,7 @@ def process_tree_option(choice: RowType) -> None:
return return
record = str_to_record(record) record = str_to_record(record)
thread_new_with_dialog( prepare_connection(command, record)
App.treeview.prepare_connection,
parse_shell_output,
"Querying server",
command,
[record],
)
return return
match command.dict["type"]: match command.dict["type"]:
@ -1061,48 +1057,54 @@ def parse_shell_output(proc: subprocess.CompletedProcess, row: RowType):
process_shell_return_code(msg, proc.returncode, row) process_shell_return_code(msg, proc.returncode, row)
def thread_new_with_dialog( def prepare_connection(rowtype: RowType, record: Record) -> None:
func: Callable, def background(rowtype: RowType, record: Record) -> None:
callback: Callable | None, def cleanup() -> None:
msg: str, App.treeview.wait_dialog.destroy()
row: RowType | None, # NOTE: When using RowType.CONN_BY_IP, the gameport needs to be interpolated
args: list, record.gameport = prereqs.gameport
addr = record_to_str(record)
if proceed is False:
spawn_dialog(msg, Popup.NOTIFY)
return
if msg != "":
res = spawn_dialog(msg, Popup.CONFIRM)
if res is False:
try_connect(addr, str(prereqs.appid), str(pefile_path), rowtype)
else:
try_connect(addr, str(prereqs.appid), str(pefile_path), rowtype)
proceed, msg, pefile_path, prereqs = App.treeview.get_prereqs(record)
GLib.idle_add(cleanup)
msg = "Checking prerequisites"
App.treeview.dialog_show(msg)
thread = threading.Thread(target=background, args=(rowtype, record))
thread.start()
def try_connect(
addr: str,
appid: str,
path: str,
row: RowType
) -> None: ) -> None:
""" def background(addr, appid, path):
Pop a GenericDialog transient to App.treeview and
call a function on a thread, with optional callback.
Chiefly used for connection-related subprocesses.
After completion, the dialog is destroyed in the main event loop
and additional exception handling occurs.
This is intended as a bridge between legacy shell methods and the UI.
A more abstracted version of call_on_thread() for when extra threaded
processing occurs before calls to shell subprocesses.
"""
def background(*args):
def cleanup(): def cleanup():
App.treeview.dialog_hide() App.treeview.dialog_hide()
if exception is not None: parse_shell_output(proc, row)
spawn_dialog(str(exception), Popup.NOTIFY)
process_user_input(row)
return
if callback is not None and proc is not None:
callback(proc, row)
exception = None
proc = None
try: try:
proc = func(*args) proc = call_out("try_connect", addr, appid, path)
except Exception as e: except Exception as e:
exception = e logger.critical(e)
GLib.idle_add(cleanup) GLib.idle_add(cleanup)
return return
GLib.idle_add(cleanup) GLib.idle_add(cleanup)
msg = "Querying server"
App.treeview.dialog_show(msg) App.treeview.dialog_show(msg)
thread = threading.Thread(target=background, args=(args)) thread = threading.Thread(target=background, args=(addr, appid, path))
thread.start() thread.start()
@ -1142,27 +1144,31 @@ def record_to_str(record: Record) -> str:
def connect_by_ip(enum: RowType, response: str) -> None: def connect_by_ip(enum: RowType, response: str) -> None:
def _prep(response: str) -> None: try:
record = Servers.validate_ip(response) record = Servers.validate_ip(response)
proc = App.treeview.prepare_connection(record) except Exception as e:
return proc spawn_dialog(str(e), Popup.NOTIFY)
thread_new_with_dialog(
_prep, parse_shell_output, "Querying IP", enum, [response]
)
return return
prepare_connection(enum, record)
def connect_by_id(enum: RowType, response: str, key: str) -> None: def connect_by_id(enum: RowType, response: str, key: str) -> None:
def _prep(key: str, response: str) -> None: def _prep(key: str, response: str) -> None:
record = Servers.query_bm_api(key, response) def cleanup() -> None:
proc = App.treeview.prepare_connection(record) App.treeview.dialog_hide()
return proc prepare_connection(enum, record)
thread_new_with_dialog( try:
_prep, parse_shell_output, "Querying API", enum, [key, response] record = Servers.query_bm_api(key, response)
) except Exception as e:
spawn_dialog(str(e), Popup.NOTIFY)
App.treeview.dialog_hide()
return return
GLib.idle_add(cleanup)
msg = "Validating ID"
App.treeview.dialog_show(msg)
thread = threading.Thread(target=_prep, args=(key, response))
thread.start()
def process_user_input(enum: RowType) -> None: def process_user_input(enum: RowType) -> None:
@ -2493,6 +2499,8 @@ class TreeView(Gtk.TreeView):
def _dump_servers(self, ips: list) -> list | None: def _dump_servers(self, ips: list) -> list | None:
if len(ips) == 0: if len(ips) == 0:
return [] return []
# NOTE: block malformed records
ips = [ip for ip in ips if len(ip.split(":")) == 3 and ip.split(":")[2] != "" ]
with ThreadPoolExecutor() as executor: with ThreadPoolExecutor() as executor:
futures = [ futures = [
executor.submit( executor.submit(
@ -2943,9 +2951,9 @@ class TreeView(Gtk.TreeView):
def get_view(self): def get_view(self):
return self.view return self.view
def prepare_connection( def get_prereqs(
self, record: Record self, record: Record
) -> subprocess.CompletedProcess | None: ) -> tuple[bool, str, str|None, "Prereqs"]:
""" """
Always called on a thread with a dialog on the transient parent window Always called on a thread with a dialog on the transient parent window
""" """
@ -2953,8 +2961,7 @@ class TreeView(Gtk.TreeView):
if prereqs.appid is None: if prereqs.appid is None:
logger.warning(f"Query to '{record.ip}:{record.qport}' timed out") logger.warning(f"Query to '{record.ip}:{record.qport}' timed out")
msg = "Timed out when querying server, check IP or try again later" msg = "Timed out when querying server, check IP or try again later"
spawn_dialog(msg, Popup.NOTIFY) return (False, msg, None, prereqs)
return None
build = "DayZ" if prereqs.appid == APPID_DAYZ else "DayZ Experimental" build = "DayZ" if prereqs.appid == APPID_DAYZ else "DayZ Experimental"
steam_path = query_config("default_steam_path")[0] steam_path = query_config("default_steam_path")[0]
@ -2964,8 +2971,7 @@ class TreeView(Gtk.TreeView):
"Config file has no value set for 'default_steam_path'" "Config file has no value set for 'default_steam_path'"
) )
msg = "Local Steam installation is not set, possibly malformed config file." msg = "Local Steam installation is not set, possibly malformed config file."
spawn_dialog(msg, Popup.NOTIFY) return (False, msg, None, prereqs)
return None
try: try:
pefile_path = PeFile.get_pefile_path(steam_path, prereqs.appid) pefile_path = PeFile.get_pefile_path(steam_path, prereqs.appid)
@ -2979,8 +2985,7 @@ class TreeView(Gtk.TreeView):
f"If you recently installed {build} or moved it to a different drive, " f"If you recently installed {build} or moved it to a different drive, "
"restart Steam to allow these changes to synchronize, then try again." "restart Steam to allow these changes to synchronize, then try again."
) )
spawn_dialog(msg, Popup.NOTIFY) return (False, msg, None, prereqs)
return None
except AppMovedError: except AppMovedError:
logger.critical( logger.critical(
f"Library folder synch error for '{prereqs.appid}'" f"Library folder synch error for '{prereqs.appid}'"
@ -2990,13 +2995,11 @@ class TreeView(Gtk.TreeView):
f"If you recently installed {build} or moved it to a different drive, " f"If you recently installed {build} or moved it to a different drive, "
"restart Steam to allow these changes to synchronize, then try again." "restart Steam to allow these changes to synchronize, then try again."
) )
spawn_dialog(msg, Popup.NOTIFY) return (False, msg, None, prereqs)
return None
except (VDFLoadError, PeFileError, Exception) as e: except (VDFLoadError, PeFileError, Exception) as e:
logger.critical(e) logger.critical(e)
msg = "Steam settings or DayZ installation may be corrupted. Try restarting Steam." msg = "Steam settings or DayZ installation may be corrupted. Try restarting Steam."
spawn_dialog(msg, Popup.NOTIFY) return (False, msg, None, prereqs)
return None
try: try:
local_vers = PeFile.get_dayz_version(pefile_path) local_vers = PeFile.get_dayz_version(pefile_path)
@ -3008,7 +3011,7 @@ class TreeView(Gtk.TreeView):
local_vers = None local_vers = None
try: try:
remote_vers = PeFile.dayz_version_from_str(prereqs.version) remote_vers = PeFile.dayz_version_from_str(prereqs)
except Exception: except Exception:
remote_vers = None remote_vers = None
@ -3021,18 +3024,15 @@ class TreeView(Gtk.TreeView):
f"This server is running a newer build ({prereqs.version}) of {build} than " f"This server is running a newer build ({prereqs.version}) of {build} than "
f"your local version. You may be unable to connect. Proceed anyway?" f"your local version. You may be unable to connect. Proceed anyway?"
) )
res = spawn_dialog(msg, Popup.CONFIRM) return (True, msg, pefile_path, prereqs)
if res is True:
return None
case VersionMatch.LOCAL_NEWER: case VersionMatch.LOCAL_NEWER:
msg = ( msg = (
f"This server is running an out-of-date build ({prereqs.version}) of {build}. " f"This server is running an out-of-date build ({prereqs.version}) of {build}. "
"You may be unable to connect. Proceed anyway?" "You may be unable to connect. Proceed anyway?"
) )
res = spawn_dialog(msg, Popup.CONFIRM) return (True, msg, pefile_path, prereqs)
if res is True:
return None
case VersionMatch.SAME_VERSION: case VersionMatch.SAME_VERSION:
return (True, "", pefile_path, prereqs)
pass pass
if prereqs.password is True: if prereqs.password is True:
@ -3040,19 +3040,10 @@ class TreeView(Gtk.TreeView):
"This server is password-protected and you will be " "This server is password-protected and you will be "
"prompted when connecting. Do you want to proceed?" "prompted when connecting. Do you want to proceed?"
) )
res = spawn_dialog(msg, Popup.CONFIRM) return (True, msg, pefile_path, prereqs)
if res is True:
return None return (True, "", pefile_path, prereqs)
"""
When using RowType.CONN_BY_IP, the gameport needs to be interpolated
"""
record.gameport = prereqs.gameport
addr = record_to_str(record)
proc = call_out(
"try_connect", addr, str(prereqs.appid), str(pefile_path)
)
return proc
@signal_emission @signal_emission
@update_window_labels @update_window_labels
@ -3122,13 +3113,7 @@ class TreeView(Gtk.TreeView):
record = self.get_record() record = self.get_record()
if record is None: if record is None:
return return
thread_new_with_dialog( prepare_connection(None, record)
self.prepare_connection,
parse_shell_output,
"Querying server",
None,
[record],
)
case _: # any other non-server option from the main menu case _: # any other non-server option from the main menu
process_tree_option(output) process_tree_option(output)