Manjaro: Fixing the screen resolution in VMware

Due to a bug in current versions of Manjaro, it is not possible to change the screen resolution if Manjaro is running as a VMware guest. Neither changing the resolution manually nor using the “Fit Guest Now” option is working correctly. Since the screen resolution is pinned to 800×600 pixels, it’s almost impossible to properly use the VM. I was able to reproduce the issue with my VM running Manjaro with the KDE desktop.

The underlying issue is that the systemd service providing the VMware Guest Tools is not starting properly. According to an entry in the Manjaro forums (dated May 2019) shows two possible solutions.

Temporarily, it’s possible to (re)start the necessary service with the

systemctl restart vmtoolsd.service

command. While the screen resolution can be modified instantly afterwards, you’ll have to redo this process after a reboot.

A more permanent solution is a modification of the systemd unit file /usr/lib/systemd/system/vmtoolsd.service.

As Matthew pointed out in his comment, you should avoiding editing the unit file manually and use the systemctl edit vmtoolsd.service command instead. Thanks, Matthew!

After the modification, it should look like this:

[Unit]
Description=Open Virtual Machine Tools (VMware Tools)
ConditionVirtualization=vmware
After=display-manager.service

[Service]
ExecStart=/usr/bin/vmtoolsd

[Install]
WantedBy=multi-user.target

Finally, you can change the screen resolution right after booting the system. Additionally, VMware’s “Autofit” options will work properly again.

5 Comments

  1. The proper way to do this is to: sudo systemctl edit vmtoolsd.service .. then between the comments add the [Unit] & After=display-manager.service line you provided. Do not edit unit files directly. This way then next time that vmtoolsd package is updated it can install the new version and still incorporate your changes.

  2. When attempting to restart vmtoolsd.service following the instructions provided and subsequently checking the service status via systemctl status vmtoolsd.service, I encountered the following status error:
    “vmtoolsd.service: Service has more than one ExecStart= setting, which is only allowed for Type=oneshot services.”
    Apparently the ExecStart statement is cumulative and must be cleared via a preceding “ExecStart=” statement to clear any previously set value.

  3. Actually my previous comment was prematurely optimistic, while restarting with the ExecStart= clearing statement allows the service to start following a reboot, status reveals CGroup 404 /usr/bin/vmtoolsd
    After manually restarting the service the CGroup is set to a proper process id in my case 1940 /usr/bin/vmtoolsd.
    I’m running latest manjaro gnome as of the date of this comment.

Leave a Reply

Your email address will not be published.