Resolution cannot be set on VMware Player 16

When I install Manjaro KDE 21.1.5 as a VM under VMware Player 16, the resolution stays at 800x600 and cannot be changed. It changes temporarily (for a fraction of a second) then immediately snaps back to 800x600.

The only way I can change the resolution is manually (and temporarily, until next boot) with the following command:
sudo vmwgfxctrl --set-topology 1920x1080+0+0

When I start Manjaro from the .iso install disk, everything is fine. It fails only when I install it on a hard drive (from the same .iso).

vmtoolsd is enabled and started
open-vm-tools is installed

I am using 3D acceleration in VMware settings (and I’d prefer it to stay that way because otherwise the GUI is very sluggish on higher resolutions). [Edit: when I disable 3D acceleration support in VMware, the problem disappears.]

This is what inxi -G says:
inxi -G
Graphics: Device-1: VMware SVGA II Adapter driver: vmwgfx v: 2.18.1.0
Display: x11 server: X(dot)Org 1.20.13 driver: loaded: vmware unloaded: modesetting
resolution: 800x600~60Hz
OpenGL: renderer: SVGA3D; build: RELEASE; LLVM; v: 4.1 Mesa 21.2.3

This is a problem that seems to have persisted in various forms since 2018, and I found many “recommendations” to fix it, some of them are outdated (because the recommended configuration settings are already present in this version of Manjaro) others did not work. I have ran out of options to try.

The interesting thing is that running Manjaro from the .iso directly works fine, the problem is not present. What is the difference, and how could I check?

Thanks

search is your friend: Installing Manjaro in vmware (xf86-video-vmware)
does this solve the issue?

Thanks, but no. xf86-video-vmware is installed by default. Reinstalling it does not help.

In the thread you linked, OP later on admitted he was confused as he could neither reproduce the supposed error nor the solution. He probably did something else to fix the problem that is not mentioned.

I have found about 6 “solutions”, neither work. Some are obsolete, some are obviously wrong, some less obviously but still.

1 Like

After system has started, just execute:

sudo systemctl restart vmtoolsd

It seems that it’s started too soon, so you have to restart it, so it can detect correctly the graphic environment.

1 Like

Yes, thanks, that works. As manual solution though, as you have to type it in after each boot like vmwgfxctrl.

I have found this earlier, and it was suggested that you need to add:

“After=display-manager.service”

in the [unit] section of /usr/lib/systemd/system/vmtoolsd.service

However, that line is already there by default in this version of Manjaro / vmtoolsd. Because of that I thought this solution was outdated, but now that you pointed out that restarting vmtoolsd works, I’m thinking it’s either not the correct dependency or it is not being honored.

Provided it’s not the correct dependency, do you have any idea what service vmtoolsd should ideally be started after, so that it’s not started too soon?

I had to make some tests with Ubuntu in a VM and also used Manjaro. I noticed this in Manjaro (in Ubuntu works fine) and take a look on it, but as far as I can tell, the service is started the same way in both systems. I haven’t had time to look deeply in to it, so for now I just doing this when I need to use Manjaro in a VM.

Maybe @philm has noticed it too and can come with a solution :slight_smile:

It’s also not working with Manjaro XFCE, so it’s not DE dependent.

I configured the vmtoolsd service as Type=idle in the [service] section; according to systemd.service man page this type delays the execution of the service “until all jobs are dispatched” whatever that exactly means, and now it works, HOWEVER the resolution settings are not being honored at boot time and the screen defaults back to 800x600.

This means vmtoolsd starts too late for the display manager to set the resolution, but also too early to work correctly.

It seems there is no “good time” for vmtoolsd to run.