Thanks in advance for the help.
Here’s the situation:
-
I have built an app in GTK, and I want to serve it for testing purposes over the web. I am using:
-
Gtk Broadway: https://docs.gtk.org/gtk4/broadway.html
-
GAS (Gtk Application Server) to allow multiple users to access: https://codeberg.org/grindhold/gas
-
-
I am running this on an Ubuntu server, SSHing in, and loading the IP and port of the service in my browser (on my local machine). Expected behavior is that the app window should show within my browser window.
-
I have gotten as far as setting up GAS, which can reliably serve apps, e.g. gedit. I have also used vanilla Broadway (without GAS) to serve my app reliably.
-
However, GAS cannot serve my app:
(coeus:3683): Gtk-WARNING **: 19:48:17.874: Failed to open display -
I have tested another gtk4 app, file-roller, which fails. Given that gedit is gtk3 and my app, file-roller gtk4 I wonder if GAS struggles with gtk4 apps. I also built the very first and simplest gtk4 app from this tutorial, which fails also: Gtk – 4.0: Getting Started with GTK
-
I wonder whether someone might be willing to help with the following:
- Pointers on if you’ve seen something like this before and have thoughts on how to fix.
- Info on where/how the “Failed to open display” error is generated, and therefore whether I might be able to get my app/Gtk to give me more information on why it’s struggling.
See the output of systemctl status gas.service for successful (gedit) and then unsuccessful (coeus) runs (the multiple instances of each app are from refreshing the browser window for testing, which spawns a new instance of the app):
root@hsm:/home/hsm/hsm-repo# systemctl status gas.service
● gas.service - Gtk Application Server
Loaded: loaded (/usr/lib/systemd/system/gas.service; disabled; preset: enabled)
Active: active (running) since Sat 2026-01-24 19:41:46 UTC; 8min ago
Process: 3603 ExecStartPre=/usr/bin/install -d -o gas -g gas -m 0755 /var/run/gas (code=exited, status=0/SUCCESS)
Main PID: 3605 (gas)
Tasks: 35 (limit: 2255)
Memory: 102.5M (peak: 103.0M)
CPU: 3.026s
CGroup: /system.slice/gas.service
├─3605 /usr/local/bin/gas
├─3608 broadwayd :0 --unixsocket=/var/run/gas/9f4e3760-ac5b-4219-ac30-1e387531653a.sock
├─3610 /bin/gedit
├─3631 broadwayd :1 --unixsocket=/var/run/gas/989c4eca-fd66-4b2b-b88d-2b3d8205facc.sock
├─3633 /bin/gedit
├─3700 broadwayd :2 --unixsocket=/var/run/gas/702f9bdc-bed0-4ce6-ab94-86b2cc32a5f6.sock
├─3702 /bin/gedit
├─3711 broadwayd :3 --unixsocket=/var/run/gas/b40d789d-42d2-4ece-9fb6-7c5fdbf92e22.sock
└─3713 /bin/gedit
Jan 24 19:41:56 hsm gas[3605]: Connected
Jan 24 19:43:33 hsm gas[3605]: auth.vala:29: Mock Authenticator: This is fine…
Jan 24 19:43:33 hsm gas[3631]: Listening on /home/gas/.cache/broadway2.socket
Jan 24 19:43:33 hsm gas[3605]: Connected
Jan 24 19:49:39 hsm gas[3605]: auth.vala:29: Mock Authenticator: This is fine…
Jan 24 19:49:39 hsm gas[3700]: Listening on /home/gas/.cache/broadway3.socket
Jan 24 19:49:39 hsm gas[3605]: Connected
Jan 24 19:49:43 hsm gas[3605]: auth.vala:29: Mock Authenticator: This is fine…
Jan 24 19:49:43 hsm gas[3711]: Listening on /home/gas/.cache/broadway4.socket
Jan 24 19:49:43 hsm gas[3605]: Connected
root@hsm:/home/hsm/hsm-repo# systemctl status gas.service
● gas.service - Gtk Application Server
Loaded: loaded (/usr/lib/systemd/system/gas.service; disabled; preset: enabled)
Active: active (running) since Sat 2026-01-24 19:50:18 UTC; 13s ago
Process: 3734 ExecStartPre=/usr/bin/install -d -o gas -g gas -m 0755 /var/run/gas (code=exited, status=0/SUCCESS)
Main PID: 3736 (gas)
Tasks: 7 (limit: 2255)
Memory: 4.2M (peak: 8.1M)
CPU: 159ms
CGroup: /system.slice/gas.service
├─3736 /usr/local/bin/gas
├─3739 broadwayd :0 --unixsocket=/var/run/gas/3785c0e8-9a2a-4842-bbd5-85c78a7ae4d5.sock
└─3748 broadwayd :1 --unixsocket=/var/run/gas/1c0ed92d-ec49-4cd1-aa83-86955a6413b3.sock
Jan 24 19:50:18 hsm gas[3736]: main.vala:62: Spawning socket on 209.95.52.144:8085
Jan 24 19:50:18 hsm gas[3736]: main.vala:62: Spawning socket on ::1:8085
Jan 24 19:50:24 hsm gas[3736]: auth.vala:29: Mock Authenticator: This is fine…
Jan 24 19:50:24 hsm gas[3739]: Listening on /home/gas/.cache/broadway1.socket
Jan 24 19:50:24 hsm coeus[3741]: Failed to open display
Jan 24 19:50:24 hsm gas[3736]: Connected
Jan 24 19:50:27 hsm gas[3736]: auth.vala:29: Mock Authenticator: This is fine…
Jan 24 19:50:27 hsm gas[3748]: Listening on /home/gas/.cache/broadway2.socket
Jan 24 19:50:27 hsm coeus[3750]: Failed to open display
Jan 24 19:50:27 hsm gas[3736]: Connected
System info: Linux hsm 6.8.0-90-generic #91-Ubuntu SMP PREEMPT_DYNAMIC Tue Nov 18 14:14:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux