I have a headless VM (running Ubuntu server 17.04) that I use SSH to access. I'm comfortable with the basics of X11 forwarding, and I can forward xterm and friends just fine. XFCE terminal also forwards OK.

I'd like to be able to use Gnome terminal, but it doesn't seem to launch. Instead, it just hangs for awhile and eventually errors out with:

Error constructing proxy for org.gnome.Terminal:/org/gnome/Terminal/Factory0: Error calling StartServiceByName for org.gnome.Terminal: Timeout was reached

Interestingly, gnome-terminal works remotely over X11 if I have a local desktop session running on my VM (launched via startx).

I'm guessing there's some kind of Gnome service that needs to be running, but I can't figure out what it is or how to start it outside of the context of a full desktop session. I don't usually launch those because the VM is headless by default.

Anybody got some insight on what I could do to get Gnome-terminal working remotely without having to start a GUI desktop session locally on my VM?

  • 1
    What exactly are you trying to accomplish by having a remote graphical terminal running?
    – tink
    Nov 29 '17 at 21:35
  • I do a lot of development work on the VM, mostly in terminal windows. I like using a graphical terminal so that I get tabs, window management, etc. It's not uncommon for me to have 3 or 4 terminal windows open with 4 or 5 tabs each. Rather than try to manage all that by starting tons of SSH sessions (or running a GUI in my VM), I like to start the a graphical terminal and use it that way (then I can switch between native apps and my VM seamlessly). Nov 29 '17 at 22:04
  • This is really the same as unix.stackexchange.com/questions/344617 .
    – JdeBP
    Nov 29 '17 at 22:06
  • @JdeBP woah dang, you nailed it!! That works perfectly. If you put that in an answer I'll accept it Nov 29 '17 at 22:09
  • See unix.stackexchange.com/a/407863/5132 .
    – JdeBP
    Nov 29 '17 at 23:01

That doesn't work because gnome-terminal (like any other gnome-thing) will try to connect to dbus and fail after not receiving a response for a long while.

The easiest work-around is just to start a dbus instance for your session:

export $(dbus-launch)

If you started a Wayland session on the remote machine since you have first run the export $(dbus-launch), you'll have to run it again, or if not gnome-terminal will start a Wayland instance of gnome-terminal on the remote display instead of an X11 one on your forwarded display.

Another workaround in this case is to explicitly run an X11 gnome-terminal-server which will terminate after the last window using it had closed. Example:

#! /bin/bash
GDK_BACKEND=x11 /usr/libexec/gnome-terminal-server --app-id "$ID" &
sleep .4        # yuck
gnome-terminal --app-id "$ID"

Launching an app over X can be really slow.
I have had a lot of success with tunneling VNC over SSH with customer systems around the world.

On the remote machine, install a VNC server such as tigervnc and start up the daemon. (yum install -y tigervnc-server ; vncserver :3 -or whatever port you want to use). It will prompt you to set a password.

On the local machine, install the VNC client (yum install -y tigervnc) You can add "exec /usr/bin/gnome-terminal" to your ~/.vnc/xstartup file. then run: ssh -L 5903:localhost:5903 -N -f -l user remote-server-IP-or-hostname The port number here will be 59 and the port number you chose

In another terminal do: vncviewer :3

You should get prompted for the password set on the server.

  • I'm actually using SSH forwarding to talk to a VM running locally on my employer-provided machine. Our IT department is zealous that nobody's machine can boot to a non-blessed OS. Xfce-terminal works OK for me, but I'd like some of the polish that gnome provides. Nov 29 '17 at 22:07
  • Exactly, I like it too. So you can tunnel VNC over SSH and run gnome-terminal remotely.
    – bootbeast
    Nov 29 '17 at 22:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.