DayZ has never officially supported Linux. Bohemia Interactive ships the game as a Windows title and provides no native Linux client. As of 2026, the game is actively receiving updates -- the Badlands DLC, adding the Nasdara Province, a 267 km² desert map that will be the largest in the game's history, is in development alongside the game's first-ever two-wheeled vehicles (a moped and a dirt bike) -- but none of that roadmap includes a Linux port. For years, the absence of a native client was the end of the conversation for players running Linux desktops or the Steam Deck. But the Linux gaming ecosystem rarely accepts "not supported" as a final answer -- and DZGUI is proof of that.
DZGUI (project repository name dztui) is a free, open-source server browser and mod manager built specifically for playing DayZ on Linux. It handles the parts of the experience that Proton alone cannot: querying server lists, staging mods, constructing launch parameters, and handing everything off to Steam in a way the game can use. As of version 6.x.x, documentation was last updated in January 2026, and the project remains actively maintained on GitHub under the GPL-3.0 license. The official documentation lives at aclist.github.io/dzgui.
The Problem DZGUI Solves
To understand why DZGUI exists, you need to understand what Protonwhat is Proton?Valve's compatibility layer for running Windows games on Linux. Built on Wine, DXVK, and VKD3D-Proton. Translates DirectX calls to Vulkan. Does not replace game launchers -- only translates the game binary itself. does and does not do. Proton -- Valve's compatibility layer built on Wine, DXVK, and VKD3D-Proton -- lets Linux users run Windows games through Steam. It handles the translation of DirectX calls to Vulkan, manages Windows-specific system libraries, and wraps the game process in a compatibility environment. What it does not do is replace a game's launcher.
DayZ ships with its own launcher for Windows, which handles tasks like checking a server's required mods, downloading those mods via the Steam Workshop, and constructing the launch command with the correct mod-load order. On Linux under Proton, that launcher either does not function or is bypassed entirely. The result: you can get into unmodified official servers (Bohemia-hosted vanilla servers running no Workshop content), but joining any modded community server -- which is where the overwhelming majority of active player population lives, with custom maps, economies, and survival rulesets -- requires significant manual effort.
The mod problem is particularly thorny. A single modded DayZ server can require dozens of Workshop mods, each of which must be present locally, in the correct directory, and referenced in the correct order on the command line. Doing this manually for every server session is not a reasonable workflow. DZGUI automates the entire process.
Proton 6.3-8 shipped in late November 2021 with initial BattlEye support. DayZ was one of the first titles to opt in, going live in early December 2021 after Bohemia Interactive contacted BattlEye to enable the Proton bridge. Before that milestone, Linux players were limited to the small number of servers that ran without anti-cheat. DZGUI's development accelerated significantly after that point, since modded multiplayer on real servers became viable. Critically, BattlEye Proton support is opt-in per game: the developer must contact BattlEye to enable it. Valve has confirmed that no additional development work is required beyond that communication, making Bohemia Interactive's decision to opt in the entire reason DayZ became playable on Linux multiplayer at all. The game carries a Gold rating on ProtonDB, indicating it runs reliably with minor tweaks. Before the BattlEye opt-in, DayZ was ranked #30 on ProtonDB's list of most-played titles with a "Borked" compatibility rating -- meaning it was technically installed by a large number of Linux Steam users but functionally unplayable in multiplayer.
How BattlEye behaves differently under Proton. On Windows, BattlEye operates as a kernel-level driver at ring 0 -- the highest privilege level available to software -- registering kernel callbacks and scanning memory structures inaccessible to userland processes. Under Proton on Linux, BattlEye runs within the Wine/Proton compatibility environment rather than as a native Linux kernel driver. It can detect cheats operating inside the same Proton prefix, but it does not gain kernel-wide visibility across the Linux system. This narrower detection surface is precisely why the feature is opt-in per developer: each game developer must decide whether that level of protection is sufficient. Bohemia Interactive decided it was, and DayZ has operated under this model since December 2021 without the connection-rejection issues that affected Linux players in other BattlEye-protected titles whose developers did not opt into the Proton bridge -- titles like Destiny 2, Rainbow Six Siege, and GTA Online, where BattlEye's absence of Proton opt-in simply blocked or ejected Linux players at the connection stage rather than extending them any protection at all. Critically, the opt-in model also means BattlEye's kernel driver is never resident on your Linux system at all -- it is not a ring-0 process loading at boot the way it does on Windows, which is a meaningful security and privacy distinction from the Windows implementation.
What DZGUI Does
DZGUI's official documentation describes the tool's purpose concisely:
"A DayZ server browser/mod manager for Linux... staging mods and concatenating launch options automatically."
-- DZGUI 6.x.x official documentation, aclist.github.io/dzgui (last updated January 2026)
That description is technically accurate but undersells the coordination happening under the hood.
At a high level, DZGUI performs five main functions.
Server discovery and metadata display. DZGUI uses a two-layer query architecture to populate the server table. First, it calls the Steam Web API's IGameServersService/GetServerList/v1/ endpoint (filtering by \appid\221100) to get a list of server addresses. Then, for live per-server details -- specifically the in-game time of day, queue length, and current player count -- it queries each individual server directly over UDP using the Valve A2S protocolwhat is A2S?Valve's Source server query protocol. A2S_INFO returns basic server data. A2S_RULES returns server-specific rules. DayZ encodes in-game time and queue depth as binary data inside A2S_RULES, requiring the dayzquery module (by Yepoleb, part of python-a2s) to decode it. DZGUI downloads dayzquery automatically on first launch and verifies it by SHA-1 hash. Runs over UDP, typically on port 2303 for DayZ.. In-game time is not available from the Steam Web API at all; it is encoded in the server's A2S_RULES response, which for DayZ encodes it as DayZ-specific binary data requiring the dayzquery module to parse. dayzquery is a small standalone Python module by Yepoleb (part of the python-a2s library) that decodes DayZ's binary rules response format; DZGUI downloads it automatically on first launch and verifies it by SHA-1 hash before use. The resulting table shows server name, player count, current queue size, ping, in-game time of day, distance from the user, and IP address. It renders at a minimum of 1920x1080 on desktop to accommodate the density of this information, or at fullscreen on a Steam Deck. The distance column is calculated using geolocation data bundled directly into DZGUI from the DB-IP Lite database under a Creative Commons Attribution 4.0 International License -- meaning server distances are resolved offline against a local dataset, not via a live geolocation API call.
Favorites and quick-connect management. Users can add servers to a favorites list either by IP address or by BattleMetricswhat is BattleMetrics?A game server analytics and player tracking service. For DayZ, it provides persistent server IDs that remain stable even if a server's IP changes. DZGUI uses an optional personal access token (read-only) to query servers by their BattleMetrics numeric ID. server ID. The BattleMetrics integration is optional but useful -- it lets you reference a server by the numeric ID visible at the end of any BattleMetrics URL. For example, in battlemetrics.com/servers/dayz/8039514, the ID is 8039514. Quick-connect bypasses the full browser and drops you directly into a saved server.
Mod staging and installation. This is DZGUI's most consequential feature. When you select a server, DZGUI checks the server's required modset against the mods you have installed locally. For any missing mods, it opens Steam Workshop subscription links in your browser. Once you subscribe and Steam downloads them, DZGUI stages the mods -- placing files in the correct directories and constructing the -mod= launch parameter string in the right order. DZGUI also supports connecting to mod-enabled LAN servers, which are not discoverable through the Steam Web API at all and must be added manually by IP.
Launch parameter construction. DayZ under Proton requires specific command-line flags to function correctly, including the -profiles path and the concatenated mod list. DZGUI assembles this string automatically and passes it to Steam.
Automatic self-updates. When DZGUI detects a newer upstream version, it prompts you to download it, backs up your existing installation and config, fetches the new version, and migrates your settings automatically. The documentation notes that updates frequently include bug fixes affecting server connectivity, so upgrading is advised.
Architecture: Shell, Python, and GTK
DZGUI's codebase is a hybrid of Bash and Python, visible in the repository's language distribution: approximately 54% Python and 46% Shell. The primary entry point is dzgui.sh, a Bash script that handles configuration management, Steam path detection, API communication, and process orchestration. The GUI layer is built in Python using PyGObjectwhat is PyGObject?The Python binding for GObject-based libraries including GTK. Lets Python code create native GTK windows and widgets. Required for DZGUI's GUI layer. Replaces the older Zenity dependency dropped in v6.0.0. -- the Python binding for GObject-based libraries including GTK. Among the basic runtime dependencies alongside curl, jq, and steam, DZGUI also requires either wmctrl or xdotool -- these window management utilities are used to raise and focus the Steam Workshop browser windows that open during the manual mod subscription workflow. If neither is present when DZGUI starts, the application will warn you.
Version 6.0.0 marked a significant architectural transition. The project added Python 3.13 with PyGObject as its GUI layer, bringing a native GTK window to replace the prior interface approach. Zenity remains a listed runtime dependency alongside curl, jq, steam, and the window management utilities -- it was not removed in v6.0.0 but now coexists with the PyGObject layer. The PyGObject addition introduced a new setup requirement: a working Python 3.13 environment with a matching PyGObject installation. On the Steam Deck, this is handled automatically -- all dependencies are present out of the box. On desktop distributions, the setup varies by distro.
One prerequisite that surprises new users: Steam must be running in the background when DZGUI is launched. DZGUI is explicitly designed to run "on top of" Steam, not as a replacement for it. Without Steam active, the mod download polling and the final game handoff both fail silently. This is documented in the official usage guide but easy to miss during first-time setup.
Understanding DayZ's port layout also helps when diagnosing connection issues. A DayZ server exposes three distinct ports: the game portDayZ server ports2302 (UDP): game port, player connections. 2303 (UDP): Steam query port, A2S direct queries -- DZGUI targets this for live metadata. 2305 (UDP): Steam network port, required for the server to appear in the Steam browser. All three must be open and correctly set in serverDZ.cfg. (default 2302, UDP, for player connections), the Steam query port (default 2303, UDP, for A2S direct queries -- this is the port DZGUI targets for live metadata), and the Steam network port (default 2305, required for the server to appear in the Steam server browser at all). When a server does not show up in DZGUI's browser despite being online, a misconfigured or missing steamQueryPort in the server's serverDZ.cfg is the most common cause on the server side.
If you are on a distribution where Python 3.13 is not the system default, use uv as your Python version manager to isolate the environment without affecting system packages. The recommended approach is to create a dedicated virtual environment at $HOME/.virtualenvs/dzgui and install PyGObject inside it, then write a wrapper script that activates the venv before invoking dzgui.sh. Fedora 43 ships with Python 3.14, so the venv isolation is mandatory there to prevent conflicts.
The Steam Web API integration deserves attention for its security design. DZGUI uses each user's own Steam Web API key rather than a shared developer credential or scraping approach. The key is stored locally in the user's config file at $HOME/.config/dztui/dztuirc and is used only on the user's machine to make GET requests to Valve's server list endpoint. KB article DZG-007 is explicit: everything between DZGUI and the Steam Web API endpoint occurs solely on the user's machine via a GET request, and no information is sent back to the developer.
There is a common misconception that a Steam Web API key can be used to access or control a user's account. It cannot. The KB article DZG-007 is explicit: a Steam Web API key is read-only against public game server data, cannot authenticate as a user account, and is protected by Steam Guard on the account that generated it. DZGUI's model is what the documentation calls zero-trust -- the strictest way of getting authentic, reliable server information without routing anything through a third-party intermediary.
Installation and Setup
Setup involves three components: a Steam Web API key (required), a BattleMetrics API token (optional but recommended), and the DZGUI script itself. The install script provided in the repository handles placing files in the correct locations, creating a .desktop launcher entry, and detecting your Steam and DayZ installation paths.
The DZGUI install command follows the pattern curl -s URL | bash, which downloads a shell script over HTTPS and executes it immediately. This pattern is common for open-source installers but carries an inherent risk: if the source URL were compromised or the content tampered with in transit, the result would execute arbitrary code on your system with your user's privileges.
For DZGUI specifically, the risk is substantially reduced by several factors. The script is hosted on Codeberg over HTTPS -- transport integrity is enforced by TLS and certificate pinning in your system's CA trust store, meaning a passive network attacker cannot silently substitute the content. The full source of install.sh is publicly visible in the same Codeberg repository before you run it, so you can audit it line by line. The project is GPLv3-licensed and actively reviewed by the community. If you prefer not to pipe directly to bash, download the script first with curl -o install.sh URL, inspect it, then run bash install.sh. Either approach is acceptable.
Steam Web API key domain field: When registering at steamcommunity.com/dev/apikey, Steam asks for a "domain name." Since this key is for a personal local application and does not call back to any URL, the official DZGUI docs explicitly instruct users to enter 127.0.0.1 or any arbitrary string meaningful to them. The domain field is a Steam registration requirement -- it has no functional effect on how DZGUI uses the key.
BattleMetrics token permissions: When creating a Personal Access Token at BattleMetrics, leave all permission options unchecked before clicking "Create Token." A token created with any permissions enabled is incorrect for DZGUI's use case. The token only needs to exist -- DZGUI uses it solely to query public server metadata, which requires no elevated permissions at all.
Steam path detection works by scanning the filesystem for files matching Steam/config/libraryfolders.vdf -- the unified file Steam uses to record all installed game locations across all drives -- while excluding system paths like /sys, /etc, /var, and /lost+found. The scan strips the /config/libraryfolders.vdf suffix from each match to isolate the Steam root. If multiple valid Steam installations are found, DZGUI presents a list for you to choose from. DZGUI also offers a choice between auto-discovery (described as "accurate, slower") and manual path selection ("less accurate, faster") -- the auto-discover path does the full filesystem scan, while manual mode lets you navigate directly to the path yourself. If automatic detection fails -- for example, if you recently moved DayZ to a different drive but have not restarted Steam -- you can specify the path manually, or edit the config file at $HOME/.config/dztui/dztuirc directly. The key requirement: point DZGUI at the Steam installation root, not the DayZ game directory itself.
DZGUI has a debug mode, accessible from the settings menu, that performs dry-runs: instead of connecting to a server, it prints the exact launch parameters that would have been passed to Steam. This is the correct first step when troubleshooting a connection failure, and the output can be pasted directly into a bug report. Enabling debug mode also exposes an additional Debug options submenu with further advanced controls.
The config file at $HOME/.config/dztui/dztuirc contains several fields worth knowing. Most are populated automatically in-app, but one non-obvious one is news_hash -- DZGUI stores a hash of the last news item the client has seen and uses it to suppress repeat news notifications until a new one is posted. If DZGUI is re-showing a news message you have already dismissed, this key is why, and deleting or clearing it resets the suppression state.
Harden the config file permissions. The dztuirc file stores your Steam Web API key and optionally your BattleMetrics token in plaintext. On a single-user system the default permissions are generally fine, but if you share a machine or run a multi-user environment, verify that only your account can read it: chmod 600 $HOME/.config/dztui/dztuirc. This is standard practice for any config file that stores credentials, and it brings the file in line with how SSH keys and other credential stores are protected on Linux.
# Using uv (recommended for version management) $ uv venv --python 3.13 $HOME/.virtualenvs/dzgui $ source $HOME/.virtualenvs/dzgui/bin/activate $ uv pip install PyGObject # Or using the system python3.13 package directly $ python3.13 -m venv $HOME/.virtualenvs/dzgui $ source $HOME/.virtualenvs/dzgui/bin/activate $ pip install PyGObject
#!/usr/bin/env bash # Activates the venv then runs DZGUI # dzgui.sh is placed in whatever directory you ran the install script from # If you ran from $HOME, the path below is correct. Adjust otherwise. source $HOME/.virtualenvs/dzgui/bin/activate $HOME/dzgui.sh # Make it executable $ chmod +x mywrapper.sh
This wrapper approach ensures the correct Python environment is always active without modifying system-level Python configurations. After making the wrapper executable, it becomes your permanent launch point -- you invoke the wrapper, not dzgui.sh directly.
For the Steam Deck, the process is simpler. All dependencies are present in SteamOS out of the box, and the primary task is integrating DZGUI as a non-Steam game so it appears in Gaming Mode. This involves adding dzgui.desktop (installed to $HOME/.local/share/applications/) as a Non-Steam Game in the Large view of the Steam client. An official controller layout is available in the Steam community layouts section by searching "DZGUI Official Config."
DZGUI on Steam Deck
The Steam Deck is arguably DZGUI's primary target platform. The project originated as an experiment for a single Steam Deck user before evolving into a full desktop-capable tool. Developer aclist noted in a GitHub issue thread that the majority of users who submit bug reports are on Steam Deck, and that the tool works well on the device when launched from Desktop Mode. Gaming Mode presents some text-entry limitations due to the on-screen keyboard overlay, making the official D-pad controller layout especially useful for navigation.
The Steam Deck adds some specific considerations. DayZ is known to open a large number of simultaneous network connections when querying servers and during active gameplay. On a wireless connection -- the typical untethered Deck configuration -- this can cause packet loss, timeouts, or disconnections. The DZGUI Knowledge Base explicitly documents this as a known issue tied to Bohemia Interactive's network architecture, noting that the problem predates Linux support and has been acknowledged by the developer for over a decade. A wired connection via a USB-C dock resolves the issue reliably.
After extended play sessions of an hour or more, the Steam Deck can experience gradual FPS degradation and sluggishness. This is KB DZG-003, which the DZGUI documentation links to the same high simultaneous connection behavior documented in DZG-001 -- not to DayZ or DZGUI themselves. The community workaround is to install Cryo Utilities, a third-party performance management application for the Steam Deck, which many users report resolves the degradation.
The Mod Workflow in Practice
The mod management workflow is what separates DZGUI from simply setting Proton flags manually. When you select a server from your favorites list, DZGUI retrieves that server's current modset from Steam and compares it against your local mod directory. Any mod present on the server but absent locally is surfaced as a missing dependency. DZGUI gives you two ways to resolve those missing mods: manual and automatic.
Manual mode (the stable default) opens a Steam Workshop subscription URL for each missing mod in your default browser. You click Subscribe on each, Steam downloads them in the background, and DZGUI polls for completion. Once all mods are accounted for locally, the application confirms it is ready to connect and passes the full launch parameter string to Steam, then exits. Steam launches DayZ with the assembled mod list, the Proton version, and the server connection target baked in.
Automatic mode (experimental) attempts to queue the missing mods for download without requiring you to open a browser tab for each one. The DZGUI developer and community contributors note this feature is particularly significant for heavily modded servers where manual mode can require dozens of individual browser interactions. Because it is in active development, the stable branch is still the recommended path for first-time users, but the testing branch is available for those who want to try it. Check the official docs and the issue tracker for current status before opting in.
The default for all stable-branch users. For each mod the server requires that is missing locally, DZGUI opens a Steam Workshop subscription URL in your default browser. You click Subscribe, Steam downloads the mod, and DZGUI polls for completion before proceeding.
The limitation is throughput: a server with 30 required mods demands 30 individual browser interactions. This is a constraint in Steam's Workshop API design, not a DZGUI choice.
Queues all missing mods for download without requiring per-mod browser interaction. Particularly significant for heavily modded servers where manual mode can mean dozens of interactions per session. Noted by the DZGUI developer and community contributors as one of the most-requested improvements.
Still in active development. Check the testing branch commit log at github.com/aclist/dztui/commits/testing before opting in. The stable branch is still the recommended path for first-time users.
Either way, DZGUI is not running in the background while you play. It is a pre-launch coordinator, not a persistent process. The tool also supports bulk mod management outside of the connection workflow: you can view all locally installed mods, delete ones you no longer need, and check for updates across your entire installed mod list.
Workshop downloads are not instantaneous. When you subscribe to mods via DZGUI's manual mode, Steam schedules the downloads in the background and processes them as you subscribe. This is not instantaneous -- large mods can take minutes. The Downloads pane in the Steam client shows live progress, and the Steam error log at <steam_path>/error.log will surface any failures. DZGUI polls for completion and will not proceed to launch until all mods are staged.
"Mod missing / check PBO file" error after launch. In rare cases, a server may be using malformed, outdated, or misconfigured mods. When this happens, DayZ reports a PBO file error on connection. This is a server-side integrity issue outside DZGUI's scope. If you believe your local mods are correct, report it to the server operator -- DZGUI cannot fix malformed server mod configurations.
On Steam Deck, some mods in the Workshop can show a black screen when DZGUI attempts to open them during the subscription workflow -- a rendering issue in the Steam client tracked at Valve's Steam for Linux issue tracker, not in DZGUI. The documented fix is to navigate away to another Steam section (Library or Store), wait for it to load, then navigate back to the Workshop context. This clears the rendering blockage and restores the view.
Proton Version Requirements
DZGUI requires Proton 6.8 or newer per the official documentation, or Proton Experimental. The version 6.3-8 milestone from late 2021 was when Proton first incorporated BattlEye support, and is the historical origin of the minimum floor. Without a compatible Proton version and the Proton BattlEye Runtime, you can connect to servers but will be kicked by the anti-cheat system immediately -- which effectively means every populated public server is inaccessible. In practice, any Proton release from the past few years satisfies this requirement, and using a recent stable release is always recommended.
The Proton BattlEye Runtime must also be installed separately as a Steam library item. In your Steam library search, filter for "proton" and install the "Proton BattlEye Runtime" entry if it is not already present. This runtime provides the BattlEye Linux bridge that allows the anti-cheat to function under Proton.
# DayZ requires a higher virtual memory map count than the kernel default # Apply temporarily (resets on reboot) $ sudo sysctl -w vm.max_map_count=1048576 # Apply permanently (survives reboot) $ echo 'vm.max_map_count=1048576' | sudo tee /etc/sysctl.d/vm.max_map_count.conf # Apply the new conf file immediately without rebooting $ sudo sysctl --system # Verify $ sysctl vm.max_map_count
The vm.max_map_count adjustment is a system-level prerequisite for DayZ on Linux, separate from DZGUI but commonly needed. DayZ opens many memory-mapped regions during operation, and the Linux kernel's default limit of 65,536 is insufficient. DZGUI documentation surfaces this requirement, though the sysctl change must be applied at the OS level manually.
Security Design and Privacy Model
DZGUI uses two external APIs: the Steam Web API (for server list retrieval) and optionally BattleMetrics (for querying servers by shorthand ID). Both require API keys the user generates independently under their own accounts -- the Steam key from steamcommunity.com/dev/apikey and the BattleMetrics personal access token from that service's developer portal. Neither key is shared with the DZGUI developer. The project has no backend infrastructure and no telemetry.
The architecture is zero-trust from the developer's perspective: the user's machine makes GET requests directly to Steam and BattleMetrics, the responses are processed locally, and nothing passes through any intermediate server. This design means that even if the project were abandoned or the developer's accounts were compromised, no user data or credentials would be at risk. The BattleMetrics token scope is limited to querying server metadata -- it cannot modify account data or perform write operations.
Zero-trust architecture in this context means DZGUI has no developer-controlled server in the data path. Every network request originates from, and terminates at, your own machine.
The Steam API Key Threat Worth Understanding
There is a well-documented scam vector involving Steam Web API keys that is worth understanding precisely because DZGUI asks you to generate one. The attack works like this: an account compromise (via phishing or credential theft) allows an attacker to generate or access a user's Steam Web API key. With that key, an attacker can intercept and redirect outgoing trade offers in real time -- creating a face-identical impersonator account and substituting it as the trade target before you confirm. This is a meaningful threat for Steam users who trade items of value.
DZGUI's use of a Steam Web API key is categorically different. The key is used exclusively to call IGameServersService/GetServerList/v1/ with a filter for DayZ's App ID -- a public, read-only endpoint that returns a list of game server addresses. It cannot be used to intercept trades, modify your account, or access your inventory. The DZGUI Knowledge Base article DZG-007 addresses this directly: "A Steam Web API key is the most strict way of getting authentic, reliable, and consistent server information in a zero-trust model." The key never leaves your machine, is stored in a plain-text config at $HOME/.config/dztui/dztuirc readable only by your user account, and is protected by Steam Guard on the Steam side. Revoke it at any time at steamcommunity.com/dev/apikey.
The takeaway for security-conscious users: keep your Steam credentials (password and Steam Guard) secure, and never share the contents of your dztuirc config file or paste your API key anywhere. The key itself is not sensitive in the way that a password is -- it cannot be used to log in as you -- but it is still a credential that should be treated as private.
Enable Steam Guard (Mobile Authenticator). The API key trade-redirect attack described above requires your Steam account credentials to be compromised first. Steam Guard with a mobile authenticator is the single most effective control against that initial compromise: even if a phishing site captures your password, an attacker cannot authenticate as you or generate an API key without the TOTP code from your device. If you are running DayZ on Linux with DZGUI and your Steam account does not have the Mobile Authenticator active, enabling it is the highest-value security action you can take. Set it up under Steam > Settings > Security on the Steam desktop client or the Steam mobile app.
Periodically check your Steam API key page. Visit steamcommunity.com/dev/apikey and confirm that the key listed is one you generated yourself for DZGUI. If you find a key you did not create, treat it as a confirmed indicator that your account has been compromised at some point: revoke the key immediately, change your Steam password, deauthorize all devices under Steam > Settings > Security > Deauthorize All Other Devices, and review your recent trade history. An unexpected API key on your account is the clearest possible signal of a prior credential compromise -- it is not a false positive.
Third-Party Launcher Trust: Why DZGUI's Model Is Different
DayZ players on any platform encounter a persistent ecosystem of unofficial launchers. The most prominent historically was DZSA Launcher, which by 2019 was generating antivirus alerts from multiple scanners -- Hybrid Analysis flagged its installer with a malicious threat score, and users on the Steam community forums reported Malwarebytes actively blocking network requests to trojan-associated domains during mod loading. The launcher's author disputed these findings, but the pattern -- a closed-source tool requesting network access during game setup -- is exactly the threat model that security tooling is designed to flag.
DZGUI is the opposite of that model on every axis that matters. The entire source is published under GPL-3.0 at github.com/aclist/dztui and auditable line by line. The dzgui.sh Bash entry point is a plain-text shell script -- there is no compiled binary, no installer executable, and no obfuscated code anywhere in the distribution. Every network call the tool makes is visible in the source: GET requests to api.steampowered.com and optionally api.battlemetrics.com, plus direct UDP queries to individual DayZ server addresses. Nothing else reaches the network. Contributors are expected to follow a published CONTRIBUTING.md guide and Code of Conduct, both in the repository, giving the project governance structure that most unofficial tools entirely lack.
Workshop Mod Security and the PBO Trust Boundary
When DZGUI stages mods for a community server, it is downloading DayZ Workshop content -- PBO (Packed Bank Object) files -- and placing them in the correct directory for the game to load. The security boundary here is worth understanding clearly, because it is frequently misrepresented in forum discussions.
DayZ mods are PBO archives containing scripts, assets, and configuration. Unlike mods for some other games, DayZ PBOs do not contain arbitrary executable code that runs with operating system privileges. They execute within DayZ's scripting runtime, scoped to the game process. What a DayZ mod can do, in principle, is log keystrokes while the game is open with that mod loaded, or make outbound HTTP calls from within the game scripting environment to an attacker-controlled server -- for example, to transmit gameplay data or facilitate a web-based item shop that harvests credentials entered in a browser opened while the game is running. These are real documented behaviors, not hypothetical ones.
In January 2026, Bohemia Interactive's feedback tracker published a significant enforcement notice against a DayZ Workshop mod author. The official notice warned the community against using content from the author's GitHub repositories described as "open source," specifically calling out packed or obfuscated PBOs. The enforcement action was limited to Steam Workshop moderation -- Bohemia did not take action against the author's GitHub repositories, which remained up. The community discussion surfaced a broader concern: a significant number of Workshop mods use PBO obfuscation, which makes it impossible to audit what code is executing inside the game. Bohemia's position, per the enforcement notice, is that mods containing obfuscated packed content that cannot be verified are subject to removal. This is a policy position, not a technical enforcement -- obfuscated mods continue to exist on the Workshop in large numbers.
The practical guidance for DZGUI users: subscribe only to mods required by specific servers you already trust. Avoid manually adding Workshop mods from unknown sources outside of DZGUI's server-driven workflow. If a server you are joining requires a mod with very few subscribers, no visible update history, and obfuscated PBOs (visible if anyone has extracted and inspected the archive), treat it as a trust signal. DZGUI itself has no ability to audit mod content -- it stages whatever the server's required modset specifies. That trust decision rests with the server operator and, ultimately, with you.
Honest Limitations
DZGUI is not a seamless experience. The gap between what it enables and a fully integrated native launcher is real, and users should go in with accurate expectations.
Initial setup requires collecting two to three API credentials from external services, navigating Steam's path detection, and -- on many desktop distributions -- manually configuring a Python virtual environment. For users comfortable with the Linux command line this is routine, but it is not the one-click experience a Windows player would expect from the same game.
The mod subscription workflow has a manual path and an experimental automatic path. Manual mode opens browser links for each missing Workshop mod, requiring one click per mod before DZGUI can proceed. Servers with twenty or thirty required mods mean twenty or thirty manual browser interactions. This is a constraint imposed by Steam's Workshop API design, not a choice by DZGUI. The experimental automatic mode addresses this directly, but it is still in active development -- stable-branch users get manual mode by default. Keep an eye on the project's issue tracker and testing branch changelog as this feature matures.
The tool also does not address DayZ's underlying network behavior. DZGUI KB DZG-001 documents a longstanding issue in which DayZ opens a large number of simultaneous connections when querying servers and during gameplay. Per the KB article, the problem predates Linux support and is rooted in how DayZ's networking was architected, not in how DZGUI or Proton interact with it. DZGUI documents this clearly rather than leaving users to diagnose it independently.
Two additional KB entries that affect real sessions and are easy to misattribute:
DZG-002 -- servers appearing locked or unreachable. Some servers show as locked in the browser even when they are not full or password-protected. This is a variant of DZG-001, not a separate bug: the same high connection count that causes dropped sessions also causes DZGUI to fail to reach certain servers during the query phase, making them appear locked. The fix is the same -- a wired connection and sufficient network headroom.
DZG-005 -- rendering problems in the Winter Chernarus v2 mod. This widely-used map mod has LOD (level of detail) bugs that cause nearby objects such as leaves to render incorrectly, and distant trees to pop in abruptly. The KB is explicit: this is an issue solely within the mod itself, not in DayZ or DZGUI, and there is no user-side fix. Players hitting this on a Linux install tend to assume it is a Proton rendering artifact -- it is not.
Why This Project Matters
DZGUI exists because a community need went unaddressed by the game's developer. Bohemia Interactive produces no Linux tooling for DayZ, and the in-game launcher that Windows players use does not function under Proton. The Steam Deck's arrival in 2022 created a large new population of potential DayZ players running Linux who had no official path to modded servers. That population grew further in October 2024 when the Frostline expansion drove DayZ to an all-time peak of 501,522 daily active users across all platforms, with 235,618 on Steam alone and a Steam-concurrent-player record of 78,937 -- numbers confirmed in Bohemia Interactive's official press release at the time. Linux reached a 5.33% share of Steam users in March 2026 according to Valve's hardware survey -- a new all-time high, though analysts note the month-over-month spike is partly attributable to a correction of Simplified Chinese data from February rather than a clean one-month shift -- and more than double the platform's pre-Steam-Deck baseline, and every one of those players trying to join a modded community server needs exactly what DZGUI provides.
The Frostline expansion also sold over 300,000 copies in its first week, according to Bohemia Interactive. In the official announcement, DayZ brand manager Scott Bowen said:
"We're thrilled to celebrate the first week of DayZ Frostline's success, and we owe it all to our incredible community."
-- Scott Bowen, DayZ Brand Manager, Bohemia Interactive Frostline press release
Bowen added that the community's unwavering dedication and feedback had been the driving force behind DayZ's evolution, and that the surge in player numbers was a testament to its enduring vitality.
For the Linux community, that surge translated directly into new DZGUI users hitting first-time setup flows and the kind of real-world bug reports that help a community project mature.
It is also a case study in what solid open-source community tooling looks like: a clean GPL-3.0GPL-3.0 means...GNU General Public License v3. Requires that any derivative works also be released under GPL-3.0 and with source code. Ensures DZGUI cannot be forked into a closed-source commercial product without violating the license. license, public documentation hosted on GitHub Pages (updated as recently as January 2026), an active issue tracker, a transparent security model with no phone-home behavior, and a contributor history that shows the project responding to real bug reports. Contributors are expected to follow a CONTRIBUTING.md guide and a Code of Conduct, both hosted in the repository alongside the source. The repository is referenced in ProtonDB reports, Steam community discussions, and Linux gaming forums as the standard recommended solution for DayZ modded play on Linux. For players who want to play DayZ on community servers without running a Windows partition, DZGUI is not one option among many -- it is effectively the only functional solution.
$HOME/.config/dztui/dztuirc and is used only to make GET requests from your machine directly to Valve's server list endpoint. It is read-only against public game server data and cannot authenticate as your account. Nothing passes through any developer-controlled infrastructure. See KB article DZG-007 for the full technical model.192.168.1.100:2302). If you have a BattleMetrics API token configured, you can also use the connect or query by ID option with the numeric ID from the server's BattleMetrics page. Once DZGUI has queried a server, you can save it to your favorites list for one-click access in future sessions. Saved servers are stored in the config file at $HOME/.config/dztui/dztuirc and persist across DZGUI updates.echo 'vm.max_map_count=1048576' | sudo tee /etc/sysctl.d/vm.max_map_count.conf, then run sudo sysctl --system to apply it immediately without rebooting. Verify with sysctl vm.max_map_count -- it should return 1048576. This is a DayZ system requirement independent of DZGUI.uv to create a Python 3.13 virtual environment independently of your system Python. Since DZGUI requires exactly Python 3.13, you should not downgrade your system Python -- instead, run uv venv --python 3.13 $HOME/.virtualenvs/dzgui to create an isolated environment and install PyGObject into it. This is the same workflow documented for Fedora 43 (which ships 3.14) in the official DZGUI installation page. On distros where Python 3.13 is not in the package repositories, uv can fetch and manage it directly without any system-level package changes.LC_ALL=de_DE.UTF-8 ./dzgui.sh. This affects thousands and decimal separators in the server browser display. Wrap it in a shell alias or script for persistent use.curl -s URL | bash pattern downloads a script and executes it immediately. The inherent risk is that you are trusting the remote host and the integrity of the transport. For DZGUI, the risk is meaningfully reduced: the install script is hosted on Codeberg over HTTPS (TLS-enforced transport integrity), the full source is publicly auditable in the same repository before you run it, and the project is GPL-licensed with active community review. If you prefer to inspect before executing, download the script separately first -- curl -o install.sh 'https://codeberg.org/aclist/dztui/raw/branch/dzgui/install.sh' -- read through it, then run bash install.sh. Both approaches produce identical results; the separate-download path just gives you an explicit review step.steamcommunity.com/dev/apikey and confirm that the listed key is one you generated yourself. A key you did not create is an unambiguous indicator of a prior account compromise -- revoke it immediately, change your password, and deauthorize all devices.-mod= launch flag -- the ones players are required to have installed locally to join a server. The -servermod= flag is for mods that load only on the server side and are not distributed to clients; players joining such a server do not need those mods installed locally and DZGUI does not need to manage them. If you are running or administering your own DayZ server and need to pass -servermod= parameters, that is a server configuration concern handled outside of DZGUI. As a client-side launcher, DZGUI's scope ends at the -mod= list that your machine needs to connect.dry_run field in $HOME/.config/dztui/dztuirc defaults to 0. Setting it to 1 puts DZGUI into a diagnostic mode: instead of actually launching DayZ, it prints the complete launch options -- the assembled -profiles=, -mod=, -connect=, and any other flags -- to your terminal without executing them. This is exactly the output needed when submitting a bug report to the DZGUI issue tracker, since it tells the developer precisely what parameters DZGUI would have passed to Steam. Use it any time a launch attempt silently fails or produces unexpected behavior and you need to verify what DZGUI is actually constructing. Reset to 0 before your next real play session.$HOME/.local/share/dzgui/dzgui.sh, the desktop entry at $HOME/.local/share/applications/dzgui.desktop, the configuration directory at $HOME/.config/dztui/ (which contains your API keys, saved server list, and preferences), and the artwork assets at $HOME/.local/share/dzgui/. Removing those four locations leaves no residual files. Your Steam Workshop mod subscriptions are independent of DZGUI -- they are managed by Steam and are not affected by uninstalling the launcher. If you added DZGUI as a Non-Steam Game in Steam, remove that library entry manually from the Steam interface.Steam/config/libraryfolders.vdf. If Steam was recently updated or DayZ was moved to a different drive using Steam's internal move dialogs, Steam may not yet have written the new path to that file. The fix is a full Steam client restart before running DZGUI setup again -- documented as KB DZG-006. Do not manually edit the path in libraryfolders.vdf; let Steam write it. If the path is genuinely wrong after a restart, you can manually correct it in DZGUI's own config file at $HOME/.config/dztui/dztuirc.Getting Started
The canonical starting point is the official documentation at aclist.github.io/dzgui/index.html. Source code is at github.com/aclist/dztui with a Codeberg mirror at codeberg.org/aclist/dztui.
Before starting setup, confirm the following prerequisites are in place: DayZ installed via Steam; Proton enabled for the game under its Compatibility settings (the DZGUI docs state ≥6.8 as the minimum, but community reports from 2025 indicate Proton 9.04+ may be required in practice following Enfusion engine updates -- use the most recent available stable release); the Proton BattlEye Runtime installed from the Steam library; and vm.max_map_count set to at least 1048576 in your sysctl configuration. Those four items are outside DZGUI's scope but are required for DayZ to function on Linux at all. Once they are in place, the DZGUI install script walks you through API key entry and path configuration on first launch.
Steam Deck users can skip the Python virtual environment steps entirely and go straight to the install script -- all dependencies are present out of the box on SteamOS. Desktop users should consult the official installation page for their specific distribution. The docs cover Arch Linux (vanilla variants), CachyOS, Manjaro 26, Debian 13, Fedora 43, and Ubuntu 24 -- each with variant-specific dependency notes, particularly around Python 3.13 availability and PyGObject packaging differences. Notably, Debian 13 requires no additional steps at all -- Python 3.13 and PyGObject are available out of the box, which sets it apart from Ubuntu 24 (which ships 3.12 and requires the deadsnakes PPA) and Fedora 43 (which ships 3.14 and requires an isolated venv). NixOS users can use independently maintained packages at github.com/lelgenio/dzgui-nix or github.com/jiriks74/dzgui.flake.
Locale support: DZGUI inherits the system locale for all number formatting -- thousands separators in server player counts and decimal separators in distances. If you want a specific regional number format while keeping a different base language (for example, English interface with German-style number formatting), pass the locale as an environment variable before launch: LC_ALL=de_DE.UTF-8 ./dzgui.sh. This can be wrapped in an alias or shell script for persistent use.
After moving DayZ to a new drive (DZG-006): If DZGUI fails to locate DayZ after you moved it using Steam's internal dialogs, the cause is almost always that Steam has not yet written the new path to libraryfolders.vdf. The fix is a full Steam client restart before running DZGUI setup again -- not manually editing paths.
DZGUI can be launched in three ways: from a terminal (./dzgui.sh), from the dzgui.desktop shortcut installed in your applications menu under the Games category, or from Steam as a Non-Steam Game. The terminal method produces the most verbose output if a crash or setup failure occurs, making it the recommended path when troubleshooting problems that are silent from the desktop shortcut or Gaming Mode.