Manjaro: Fixing the screen resolution in VMware
Note: This article is probably outdated. I received reports that simply restarting the vmtoolsd service doesn’t work anymore.
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.
Modification of the service file helps me. Thanks!
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.
Thanks a lot for your comment – I’ll update this article accordingly.
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.
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.
Your modification is the content of the original vmware-tools Unit-File, but it doesn’t works on my system.
I couldn’t see a display-manager.service on my Manjaro system.
Either a gdm.service or a display-manager.target are available.
In the gdm.service unitfile there is an alias “display-manager.service” defined, but it seems not be recognized correctly for the dependency.
So I changed it to
[Unit]
Description=Open Virtual Machine Tools (VMware Tools)
ConditionVirtualization=vmware
After=display-manager.target
[Service]
ExecStart=
ExecStart=/usr/bin/vmtoolsd
[Install]
WantedBy=multi-user.target
That works fine for my installation.
I could see this also in the dependency tree: sudo systemctl list-dependencies
Hi Gunnar, thanks for your reply! I really think I need to rewrite this article – it looks like the changes I proposed simply don’t work in current versions anymore. Thanks a lot for your suggestion!
Hi!
December 2021 and it is still broken. Any hope for a permanent fix?
Thanks!
I’m currently not following Manjaro development anymore, so unfortunately, I really can’t tell if there’s a permanent way to fix this, sorry.
that did not fix my resolution issue
I guess we hit a point where this workaround simply doesn’t work anymore. Time to add a note to the blog post…
What worked for me was in this thread;
https://archived.forum.manjaro.org/t/vmware-cant-change-screen-resolution/89090/30
What worked for me was to start my guest, edit /etc/mkinitcpio.conf and comment out the old MODULES, replacing it:
# MODULES=””
MODULES=(vsock vmw_vsock_vmci_transport vmw_balloon vmw_vmci vmwgfx)
Regenerate the initramfs simply by doing an upgrade (if possible), or rebuild initramfs and grub config:
sudo mkinitcpio -P
sudo grub-mkconfig -o /boot/grub/grub.cfg
And reboot
@anonymous… that did it. thanks so much for posting.
This worked for me as well. Thank you!