Dual-Monitor Setup: VNC and Physical Monitor

I setup Manjaro on my NUC with a monitor, installed SSH and then went headless. I then went on with installing TigerVNC following the directions in the Arch wiki.

So far, it works like a charm. Firing up VNC on my Macbook will open xfce, three finger swipe left or right on the touch pad allows me to switch from one system to the other. I love it!

Now I’d like to connect a physical monitor to the NUC and move into a dual-monitor setup combing VNC and the physical one. Imagine me sitting on the couch with the Macbook, starting VNC to connect to xfce, turning on my TV that will function as the second monitor to the same xfce session.

Problem is, the TV (or physical monitor), shows only the NUC boot screen and nothing else.

I’m not new to Linux, pretty new to Arch, but I don’t mind tinkering with settings to make things work. I just don’t know what to tinker with.

Please help! :slight_smile:

Edit: When going to Settings>Display it only shows the VNC display, not the external device.

Please check this thread.

Thanks! I’m however not sure if this helps, since it seems the VNC-driven xfce does not recognize any unused HDMI ports (there are 2 in the NUC).

Here’s the output of xrandr:
Screen 0: minimum 32 x 32, current 1440 x 900, maximum 32768 x 32768
VNC-0 connected 1440x900+0+0 0mm x 0mm
1440x900 60.00*+
1920x1200 60.00
1920x1080 60.00
1600x1200 60.00
1680x1050 60.00
1400x1050 60.00
1360x768 60.00
1280x1024 60.00
1280x960 60.00
1280x800 60.00
1280x720 60.00
1024x768 60.00
800x600 60.00
640x480 60.00

And that’s it. I would expect the unused HDMI ports to show up, but they seem to be not recognized. How can I make them available?

I think you need to do it kinda backwards. Connect the physical monitor, log in there, follow the solution in the linked thread, and then connect via VNC.

This is where the fun really starts: If I boot the machine with physical monitor attached, it shows the Intel NUC boot screen. VNC server runs however flawlessly. I think this has to do with the initial install being headless.

My guess is that Manjaro won’t recognize the HMDI ports until I declare them to the system. Have an idea how to do that?

That’s probably not it. The reason why you cannot see the HDMI connectors is because you’re in a VNC session (very probably). That’s why I said you need to do it backwards: start the session on the machine, and then connect with VNC. The installation being headless has probably more to do with it. Since you’ve already installed a desktop environment, try logging in to a TTY, and run startx.

I’m not saying there are no other ways, but I only know of the method I linked.

startx results in this:

X.Org X Server 1.20.8
X Protocol Version 11, Revision 0
Build Operating System: Linux Manjaro Linux
Current Operating System: Linux HTPC 5.7.19-2-MANJARO #1 SMP PREEMPT Fri Aug 28 20:22:12 UTC 2020 x86_64
Kernel command line: BOOT_IMAGE=/boot/vmlinuz-5.7-x86_64 root=UUID=71575986-42c4-4aac-bc29-38ab067b0ccf rw quiet apparmor=1 security=apparmor udev.log_priority=3
Build Date: 01 August 2020  07:25:56AM
 
Current version of pixman: 0.40.0
	Before reporting problems, check http://wiki.x.org
	to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
	(++) from command line, (!!) notice, (II) informational,
	(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/var/log/Xorg.4.log", Time: Sat Sep 12 11:00:41 2020
(==) Using config directory: "/etc/X11/xorg.conf.d"
(==) Using system config directory "/usr/share/X11/xorg.conf.d"
Failed to connect to bus: No such file or directory
gpg-agent[4341]: WARNING: "--write-env-file" is an obsolete option - it has no effect
gpg-agent: a gpg-agent is already running - not starting a new one

(xfce4-session:4283): xfce4-session-WARNING **: 11:00:42.996: gpg-agent returned no PID in the variables

(xfce4-session:4283): xfce4-session-WARNING **: 11:00:42.999: xfsm_manager_load_session: Something wrong with /root/.cache/sessions/xfce4-session-HTPC:4, Does it exist? Permissions issue?

(xfwm4:4343): xfwm4-WARNING **: 11:00:43.325: Unsupported GL renderer (llvmpipe (LLVM 10.0.1, 128 bits)).

(wrapper-2.0:4370): libnotify-WARNING **: 11:00:43.898: Failed to connect to proxy

(wrapper-2.0:4370): Gtk-WARNING **: 11:00:43.923: Negative content width -1 (allocation 1, extents 1x1) while allocating gadget (node button, owner PulseaudioButton)

(wrapper-2.0:4368): Gtk-WARNING **: 11:00:43.955: Negative content width -1 (allocation 1, extents 1x1) while allocating gadget (node button, owner GtkToggleButton)

(xfce4-session:4283): xfce4-session-WARNING **: 11:00:44.063: Unable to launch "pulseaudio-ctl-normal" (specified by autostart/pulseaudio-ctl.desktop): Failed to execute child process “pulseaudio-ctl-normal” (No such file or directory)

(xfce4-session:4283): xfce4-session-WARNING **: 11:00:44.081: Unable to launch "disable-dpms" (specified by autostart/disable-dpms.desktop): Failed to execute child process “disable-dpms” (No such file or directory)

(xfce4-session:4283): xfce4-session-WARNING **: 11:00:44.084: Unable to launch "/usr/bin/ma-launcher" (specified by autostart/ma-launcher.desktop): Failed to execute child process “/usr/bin/ma-launcher” (No such file or directory)

(xfce4-session:4283): xfce4-session-WARNING **: 11:00:44.096: Unable to launch "desktop-items" (specified by autostart/live-session.desktop): Failed to execute child process “desktop-items” (No such file or directory)
Connection failure: Connection refused
pa_context_connect() failed: Connection refused

** (xiccd:4398): WARNING **: 11:00:44.144: EDID is empty

** (xiccd:4398): CRITICAL **: 11:00:44.234: Gamma size is 0 at output xrandr-default

** (xiccd:4398): CRITICAL **: 11:00:44.239: Gamma size is 0 at output xrandr-default
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
MSM Notifier is already running, shutting down.
Shutting down MSM Notifier...

** (xfce4-clipman:4396): WARNING **: 11:00:44.412: Unable to register GApplication: An object is already exported for the interface org.gtk.Application at /org/xfce/clipman

(xfce4-clipman:4396): GLib-GIO-CRITICAL **: 11:00:44.412: g_application_get_is_remote: assertion 'application->priv->is_registered' failed

(xfce4-clipman:4396): GLib-WARNING **: 11:00:44.412: g_set_application_name() called multiple times

** (light-locker:4442): ERROR **: 11:00:44.644: Environment variable XDG_SESSION_PATH not set. Is LightDM running?
DEBUG:root:_DATA_DIR is /usr/share/application-utility
DEBUG:root:_PREF_FILE is /usr/share/application-utility/preferences.json
DEBUG:root:self.file is {'desktop': '', 'main': '/usr/share/application-utility/default.json'}
INFO:root:json to merge : /usr/share/application-utility/default.json
DEBUG:root:json : /tmp/manjaro-hello-preferences.json
blueman-applet version 2.1.3 starting
There is an instance already running

(process:4427): GLib-CRITICAL **: 11:00:45.372: g_strv_contains: assertion 'str != NULL' failed
WARNING:root:File not exist ? /usr/share/application-utility/?.json
DEBUG:root:
--- read data.json with FILTERS ---

DEBUG:root:my desktop: ?
DEBUG:root:filter    : 
DEBUG:root:groups    : *
DEBUG:root:	filter app: Epiphany ['advanced'] < 
DEBUG:root:	filter app: Falkon ['advanced'] < 
DEBUG:root:	filter app: Konqueror ['advanced'] < 
DEBUG:root:	filter app: Netsurf ['advanced'] < 
DEBUG:root:	filter app: Claws Mail ['advanced'] < 
DEBUG:root:	filter app: Geary ['advanced'] < 
DEBUG:root:	filter app: KMail ['advanced'] < 
DEBUG:root:	filter app: Atom ['advanced'] < 
DEBUG:root:	filter app: Geany ['advanced'] < 
DEBUG:root:	filter app: Visual Studio Code OSS ['advanced'] < 
DEBUG:root:	filter app: Blender ['advanced'] < 
DEBUG:root:	filter app: Transmission GTK ['advanced'] < 
DEBUG:root:	filter app: QTransmission ['advanced'] < 
DEBUG:root:	filter app: Grsync ['advanced'] < 
DEBUG:root:filter group : Security ['advanced'] < 
DEBUG:root:	filter app: Gnome Disks ['advanced'] < 
DEBUG:root:	filter app: Gparted ['advanced'] < 
DEBUG:root:	filter app: IsoUSB ['advanced'] < 
DEBUG:root:filter group : Virtual Computing ['advanced'] < 
DEBUG:root:
--- read data.json with FILTERS ---

DEBUG:root:my desktop: ?
DEBUG:root:filter    : 
DEBUG:root:groups    : *
DEBUG:root:	filter app: Epiphany ['advanced'] < 
DEBUG:root:	filter app: Falkon ['advanced'] < 
DEBUG:root:	filter app: Konqueror ['advanced'] < 
DEBUG:root:	filter app: Netsurf ['advanced'] < 
DEBUG:root:	filter app: Claws Mail ['advanced'] < 
DEBUG:root:	filter app: Geary ['advanced'] < 
DEBUG:root:	filter app: KMail ['advanced'] < 
DEBUG:root:	filter app: Atom ['advanced'] < 
DEBUG:root:	filter app: Geany ['advanced'] < 
DEBUG:root:	filter app: Visual Studio Code OSS ['advanced'] < 
DEBUG:root:	filter app: Blender ['advanced'] < 
DEBUG:root:	filter app: Transmission GTK ['advanced'] < 
DEBUG:root:	filter app: QTransmission ['advanced'] < 
DEBUG:root:	filter app: Grsync ['advanced'] < 
DEBUG:root:filter group : Security ['advanced'] < 
DEBUG:root:	filter app: Gnome Disks ['advanced'] < 
DEBUG:root:	filter app: Gparted ['advanced'] < 
DEBUG:root:	filter app: IsoUSB ['advanced'] < 
DEBUG:root:filter group : Virtual Computing ['advanced'] < 
DEBUG:root:
--- read data.json with FILTERS ---

DEBUG:root:my desktop: ?
DEBUG:root:filter    : 
DEBUG:root:groups    : *
DEBUG:root:	filter app: Epiphany ['advanced'] < 
DEBUG:root:	filter app: Falkon ['advanced'] < 
DEBUG:root:	filter app: Konqueror ['advanced'] < 
DEBUG:root:	filter app: Netsurf ['advanced'] < 
DEBUG:root:	filter app: Claws Mail ['advanced'] < 
DEBUG:root:	filter app: Geary ['advanced'] < 
DEBUG:root:	filter app: KMail ['advanced'] < 
DEBUG:root:	filter app: Atom ['advanced'] < 
DEBUG:root:	filter app: Geany ['advanced'] < 
DEBUG:root:	filter app: Visual Studio Code OSS ['advanced'] < 
DEBUG:root:	filter app: Blender ['advanced'] < 
DEBUG:root:	filter app: Transmission GTK ['advanced'] < 
DEBUG:root:	filter app: QTransmission ['advanced'] < 
DEBUG:root:	filter app: Grsync ['advanced'] < 
DEBUG:root:filter group : Security ['advanced'] < 
DEBUG:root:	filter app: Gnome Disks ['advanced'] < 
DEBUG:root:	filter app: Gparted ['advanced'] < 
DEBUG:root:	filter app: IsoUSB ['advanced'] < 
DEBUG:root:filter group : Virtual Computing ['advanced'] < 
Info: Gnome-layout-switcher not installed
xfsettingsd: Another instance took over. Leaving...
xfsettingsd: Another instance took over. Leaving...
** Message: 11:01:14.736: updates_checker.vala:65: check updates
** Message: 11:01:16.822: updates_checker.vala:94: 20 updates found
xfsettingsd: Another instance took over. Leaving...

I think you shouldn’t use the root account. Set up a new one for if that’s the case. Also run inxi -Fza to see what kind of drivers need to be installed.

Good point about the root account, thanks!

Here’s the output of inxi -G --display

Graphics:
Device-1: Intel UHD Graphics 605 driver: i915 v: kernel 
Display: x11 server: X.Org 1.20.8 driver: i915 note: display driver n/a 
resolution: 2048x1200~60Hz 
OpenGL: renderer: llvmpipe (LLVM 10.0.1 128 bits) v: 3.3 Mesa 20.1.7

If I read this correctly, there’s no driver installed for the i915?

You’ll need to install the driver for the X server that communicates with the kernel driver. Could you please also run pacman -Qqs xorg ?

Here’s the output:

xf86-input-evdev
xf86-input-libinput
xf86-input-void
xf86-video-amdgpu
xf86-video-ati
xf86-video-dummy
xf86-video-intel
xf86-video-nouveau
xorg-bdftopcf
xorg-font-util
xorg-font-utils
xorg-fonts-alias-misc
xorg-fonts-encodings
xorg-fonts-misc
xorg-iceauth
xorg-mkfontscale
xorg-server
xorg-server-common
xorg-setxkbmap
xorg-twm
xorg-xauth
xorg-xdpyinfo
xorg-xinit
xorg-xkbcomp
xorg-xkill
xorg-xmodmap
xorg-xprop
xorg-xrandr
xorg-xrdb
xorg-xset
xorg-xsetroot
xorg-xwininfo
xorgproto

Where did you run inxi? In the VNC session?

Hi,

Didn’t want to let you off without an update: I’ve decided to reinstall with x11vnc for starters to get the whole thing going. This appears to be a working solution, aside from LightDM logging out and x11vnc not rendering the greeter screen. I’m working on that.

The next project will be to retry the dual-monitor setup as outlined in this thread.

Thanks for your help and insights :slight_smile: