mirror of
https://github.com/aclist/dztui.git
synced 2026-08-25 17:32:36 +02:00
feat: support sandboxed flatpak
This commit is contained in:
parent
5bce8709af
commit
75f8c841df
10
CHANGELOG.md
10
CHANGELOG.md
@ -1,5 +1,15 @@
|
||||
# Changelog
|
||||
|
||||
## [6.0.1-beta.3] 2025-11-13
|
||||
## Added
|
||||
- Support sandboxed flatpak
|
||||
|
||||
## Changed
|
||||
- Preferred client from radio toggle to combobox
|
||||
|
||||
## Fixed
|
||||
- Config file erroneously getting updated when populating settings menu
|
||||
|
||||
## [6.0.1-beta.2] 2025-11-10
|
||||
## Fixed
|
||||
- Python 3.14 error in finally block
|
||||
|
||||
22
dzgui.sh
22
dzgui.sh
@ -3,7 +3,7 @@ set -o pipefail
|
||||
|
||||
src_path=$(realpath "$0")
|
||||
|
||||
version=6.0.1.beta-2
|
||||
version=6.0.1.beta-3
|
||||
reference_branch="prerelease/6.0.1-beta.1"
|
||||
|
||||
#CONSTANTS
|
||||
@ -468,18 +468,7 @@ steam_deps(){
|
||||
local msg="Found neither Steam nor Flatpak Steam"
|
||||
raise_error_and_quit "$msg"
|
||||
exit 1
|
||||
elif [[ -n "$steam" ]] && [[ -n "$flatpak" ]]; then
|
||||
[[ -n $preferred_client ]] && return 0
|
||||
if [[ -z $preferred_client ]]; then
|
||||
preferred_client="steam"
|
||||
fi
|
||||
elif [[ -n "$steam" ]]; then
|
||||
preferred_client="steam"
|
||||
else
|
||||
preferred_client="flatpak"
|
||||
fi
|
||||
update_config
|
||||
logger INFO "Preferred client set to '$preferred_client'"
|
||||
}
|
||||
migrate_files(){
|
||||
if [[ ! -f $config_path/dztuirc.oldapi ]]; then
|
||||
@ -616,10 +605,10 @@ fetch_helpers_by_sum(){
|
||||
[[ -f "$config_file" ]] && source "$config_file"
|
||||
declare -A sums
|
||||
sums=(
|
||||
["funcs"]="5d7d92b7b8a9c788b133ce5271a76553"
|
||||
["funcs"]="c6e5d68e084be16aa58358fa51ec4586"
|
||||
["query_v2.py"]="55d339ba02512ac69de288eb3be41067"
|
||||
["servers.py"]="ed442c3aecf33f777d59dcf53650d263"
|
||||
["ui.py"]="2476397883a4272eaf940403ba5a6575"
|
||||
["ui.py"]="2276386252bd571b3505cbbc74359732"
|
||||
["vdf2json.py"]="2f49f6f5d3af919bebaab2e9c220f397"
|
||||
["pefile.py"]="21531f2c0d9dfa5f110cf6779f9d22c0"
|
||||
)
|
||||
@ -900,6 +889,7 @@ create_config(){
|
||||
unset default_steam_path
|
||||
unset steam_path
|
||||
|
||||
preferred_client="steam"
|
||||
while true; do
|
||||
local player_input="$($steamsafe_zenity \
|
||||
--forms \
|
||||
@ -1061,13 +1051,13 @@ initial_setup(){
|
||||
watcher_deps
|
||||
check_architecture
|
||||
test_connection
|
||||
fetch_helpers > >(pdialog "Checking helper files")
|
||||
# fetch_helpers > >(pdialog "Checking helper files")
|
||||
varcheck
|
||||
source "$config_file"
|
||||
lock
|
||||
legacy_vars
|
||||
legacy_cols
|
||||
check_version
|
||||
# check_version
|
||||
check_map_count
|
||||
steam_deps
|
||||
migrate_files
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
set -o pipefail
|
||||
version="6.0.1-beta.2"
|
||||
version="6.0.1-beta.3"
|
||||
|
||||
#CONSTANTS
|
||||
aid=221100
|
||||
@ -87,17 +87,14 @@ steam_api_url="https://steamcommunity.com/dev/apikey"
|
||||
battlemetrics_api_url="https://www.battlemetrics.com/developers"
|
||||
bm_api="https://api.battlemetrics.com/servers"
|
||||
|
||||
if [[ $preferred_client == "steam" ]]; then
|
||||
steam_cmd="steam"
|
||||
else
|
||||
steam_cmd="flatpak run com.valvesoftware.Steam"
|
||||
fi
|
||||
steam_cmd="$preferred_client"
|
||||
|
||||
declare -A funcs=(
|
||||
["Highlight stale"]="find_stale_mods"
|
||||
["Change player name"]="update_config_val"
|
||||
["Change Steam API key"]="update_config_val"
|
||||
["Change Battlemetrics API key"]="update_config_val"
|
||||
["Change client"]="update_config_val"
|
||||
["Change favorite server"]="add_record"
|
||||
["Add server by IP"]="add_record"
|
||||
["Add server by ID"]="add_record"
|
||||
@ -701,13 +698,6 @@ toggle(){
|
||||
debug=""
|
||||
fi
|
||||
;;
|
||||
Toggle[[:space:]]Steam/Flatpak)
|
||||
if [[ $preferred_client == "steam" ]]; then
|
||||
preferred_client="flatpak"
|
||||
else
|
||||
preferred_client="steam"
|
||||
fi
|
||||
;;
|
||||
Toggle[[:space:]]DZGUI[[:space:]]fullscreen[[:space:]]boot)
|
||||
if [[ $fullscreen == "true" ]]; then
|
||||
fullscreen="false"
|
||||
@ -806,6 +796,9 @@ update_config_val(){
|
||||
local context="$1"
|
||||
local value="$2"
|
||||
case $1 in
|
||||
"Change client")
|
||||
key="preferred_client"
|
||||
;;
|
||||
"Change player name")
|
||||
key="name"
|
||||
if [[ -z "${value// }" ]]; then
|
||||
@ -831,7 +824,6 @@ update_config_val(){
|
||||
declare -n nr=$key
|
||||
nr="$value"
|
||||
update_config
|
||||
echo "Updated the key '$key' to '$value'"
|
||||
return 80
|
||||
}
|
||||
show_log(){
|
||||
|
||||
@ -3801,12 +3801,22 @@ class Options(Gtk.Box):
|
||||
"Always fullscreen",
|
||||
Preferences.WINDOW,
|
||||
)
|
||||
self.steam_toggle = self.make_binary_radio(
|
||||
"Steam", "Flatpak (experimental)", Preferences.CLIENT
|
||||
)
|
||||
|
||||
# TODO: gray out options if not available on system
|
||||
client_store = Gtk.ListStore(str, str)
|
||||
client_store.append(["steam", "steam"])
|
||||
client_store.append(["flatpak", "flatpak run com.valvesoftware.Steam"])
|
||||
client_store.append(["flatpak (container)", "flatpak-spawn --host flatpak run com.valvesoftware.Steam"])
|
||||
|
||||
renderer_text = Gtk.CellRendererText(ellipsize=Pango.EllipsizeMode.END)
|
||||
self.client_combo = Gtk.ComboBox.new_with_model(client_store)
|
||||
self.client_combo.set_halign(Gtk.Align.START)
|
||||
self.client_combo.pack_start(renderer_text, True)
|
||||
self.client_combo.connect("changed", self._on_client_changed)
|
||||
self.client_combo.add_attribute(renderer_text, "text", 0)
|
||||
|
||||
pref_rows = [
|
||||
[LeftLabel("Steam client"), self.steam_toggle],
|
||||
[LeftLabel("Steam client"), self.client_combo],
|
||||
[LeftLabel("Window size at boot"), self.fullscreen_toggle],
|
||||
[LeftLabel("Player name"), self.player_box],
|
||||
]
|
||||
@ -3991,6 +4001,15 @@ class Options(Gtk.Box):
|
||||
show_wait_dialog = True
|
||||
call_on_thread(show_wait_dialog, cmd, wait_msg, "")
|
||||
|
||||
def _on_client_changed(self, combo: Gtk.ComboBox) -> None:
|
||||
# prevent triggering on initial init
|
||||
if App.treeview.subpage is not RowType.OPTIONS:
|
||||
return
|
||||
ind = combo.get_active()
|
||||
mod = combo.get_model()
|
||||
client = mod[ind][1]
|
||||
call_bash_func("Change client", client)
|
||||
|
||||
def _on_branch_changed(self, combo: Gtk.ComboBoxText) -> None:
|
||||
# prevent triggering on initial init
|
||||
if App.treeview.subpage is not RowType.OPTIONS:
|
||||
@ -4000,11 +4019,9 @@ class Options(Gtk.Box):
|
||||
def _on_radio_toggled(
|
||||
self, button: Gtk.RadioButton, context: Preferences
|
||||
) -> None:
|
||||
if App.treeview.subpage is None:
|
||||
if App.treeview.subpage is not RowType.OPTIONS:
|
||||
return
|
||||
match context:
|
||||
case Preferences.CLIENT:
|
||||
toggle = RowType.TGL_STEAM
|
||||
case Preferences.INSTALL:
|
||||
toggle = RowType.TGL_INSTALL
|
||||
state = button.get_group()[0].get_active()
|
||||
@ -4126,11 +4143,9 @@ class Options(Gtk.Box):
|
||||
radio = 0
|
||||
self.mod_install_toggle.get_children()[radio].set_active(True)
|
||||
|
||||
if client == "flatpak":
|
||||
radio = 1
|
||||
else:
|
||||
radio = 0
|
||||
self.steam_toggle.get_children()[radio].set_active(True)
|
||||
for ind, row in enumerate(self.client_combo.get_model()):
|
||||
if row[1] == client:
|
||||
self.client_combo.set_active(ind)
|
||||
|
||||
if fullscreen == "true":
|
||||
radio = 1
|
||||
|
||||
Loading…
Reference in New Issue
Block a user