VMware Communities
GoDeveloper
Contributor
Contributor
Jump to solution

Mavericks Screen Resolution

So I upgraded a guest vm to Mavericks and I'm having issues with getting the screen set to a fixed standard size resolution in "single window mode".


I updated the vmware tools and I can scale the vm window and get various screen sizes, however, when I open settings and go to display and select "Scaled" the only option I see is the current screen size.  I'm wanting to set my screen size to one of the many standard resolutions like I was able to do before updating to Mavericks.  How can accomplish that?



Tags (3)
1 Solution

Accepted Solutions
WoodyZ
Immortal
Immortal
Jump to solution

Okay here's a sample script you can save as "Set VM Display Resolution" from the AppleScript Editor in /Users/${USER}/Library/Scripts and then in Apple Script Editor > Preferences... > General check the "Show Script menu in menu bar" checkbox and close the AppleScript Editor.  Then with the target Virtual Machine's window brought to the front then select "Set VM Display Resolution" from the Script menu in menu bar.  Choose the resolution you want and select OK or just double click the resolution you want.

Note:  Using this script requires that the "Enable access for assistive devices" checkbox be checked in Accessibility in System Preferences.

Additionally, just to be clear, this script is not actually changing the resolution in the Virtual Machine, it's resizing the Virtual Machine's window so that VMware Tools allows for the resolution to automatically change to accommodate the selected resolution based on the window's size without having to manually resize the window of the OS X 10.9 Mavericks Virtual Machine to achieve explicit resolutions.  It is after all just meant as a workaround, not a fix, to what's wrong with OS X 10.9 Mavericks run in a Virtual Machine!  The primary intended use is when using a large display like when a MacBook is attached to a Thunderbolt Display or using an iMac.  If one is using just a MacBook with Retina Display and using a high scaled resolution then this script could also be useful.                                          

Set_VM_Display_Resolution_Select_Resolution.png

        Set_VM_Display_Resolution_VMware_Fusion_is_not_open.png

on is_running(appName)

     tell application "System Events" to (name of processes) contains appName

end is_running

set isRunning to is_running("VMware Fusion")

if isRunning then

     set selectedRez to choose from list {"1024 x 768", "1280 x 800", "1440 x 900", "1680 x 1050", "1920 x 1200"} ¬

          with title "Set VM Display Resolution" with prompt "Select Resolution:" default items {"1440 x 900"}

     tell application "VMware Fusion"

          activate

          tell application "System Events"

               set toolbarState to name of menu item 12 of menu 1 of menu bar item "View" of menu bar 1 of process "VMware Fusion"

               tell application "VMware Fusion"

                    try

                         considering case

                              if toolbarState contains {"Hide Toolbar"} then

                                   if selectedRez contains {"1024 x 768"} then set bounds of window 1 to {0, 22, 1024, 845}

                                   if selectedRez contains {"1280 x 800"} then set bounds of window 1 to {0, 22, 1280, 877}

                                   if selectedRez contains {"1440 x 900"} then set bounds of window 1 to {0, 22, 1440, 977}

                                   if selectedRez contains {"1680 x 1050"} then set bounds of window 1 to {0, 22, 1680, 1127}

                                   if selectedRez contains {"1920 x 1200"} then set bounds of window 1 to {0, 22, 1920, 1277}

                              end if

                              if toolbarState contains {"Show Toolbar"} then

                                   if selectedRez contains {"1024 x 768"} then set bounds of window 1 to {0, 22, 1024, 812}

                                   if selectedRez contains {"1280 x 800"} then set bounds of window 1 to {0, 22, 1280, 844}

                                   if selectedRez contains {"1440 x 900"} then set bounds of window 1 to {0, 22, 1440, 944}

                                   if selectedRez contains {"1680 x 1050"} then set bounds of window 1 to {0, 22, 1680, 1094}

                                   if selectedRez contains {"1920 x 1200"} then set bounds of window 1 to {0, 22, 1920, 1244}

                              end if

                         end considering

                    end try

               end tell

          end tell

  end tell

else

  display dialog "VMware Fusion is not open." with title "Set VM Display Resolution" with icon 2 buttons {"OK"} giving up after 5

end if

Message was edited by: WoodyZ - Modified Script to account for whether the View menu shows "Hide Toolbar" or "Show Toolbar" as the bounds list item 4 (h) would be a +77 with the default "Hide Toolbar" showing and a +44 with "Show Toolbar" showing.

Message was edited by: WoodyZ - Added note for "Enable access for assistive devices" and additional information on intended use as a workaround, not a fix.

Message was edited by: WoodyZ - Added images of List Box and VMware Fusion message.

View solution in original post

11 Replies
WoodyZ
Immortal
Immortal
Jump to solution

Unfortunately OS X 10.9 Mavericks is really not a fully supported Guest OS and in particular VMware Tools for OS X does not provide all the normal functionality as for other mainstream OSes.  So until VMware makes some further improvements you'll have to find another way to accomplish the task at hand. Smiley Sad

Reply
0 Kudos
GoDeveloper
Contributor
Contributor
Jump to solution

What a bummer.  I thought one of the selling points of Fusion 6 was Mavericks?  Hmmm..

Reply
0 Kudos
WoodyZ
Immortal
Immortal
Jump to solution

They'd like you to believe that however if you read the fine print while the OS X Guest is technically supported it's just not fully supported.  Have a look at:  Creating an OS X Server Virtual Machine in VMware Fusion

Also as far as changing the resolution in OS X 10.9 Mavericks Virtual Machine I tested just about every command line utility and GUI App available and none of them worked! Smiley Sad  So my workaround was to change the OS X 10.9 Mavericks Virtual Machine resolution from the Host using an AppleScrip from the AppleScript menu on the Host's menu bar.  When my MacBook Pro is not attached to my Thunderbolt Display I just run the OS X 10.9 Mavericks Virtual Machine in Full Screen however when attached to the Thunderbolt Display and I do not want to run it in Full Screen view I run it a 1440 x 900 in Single Windows view using the following.

tell application "VMware Fusion"

  set bounds of window 1 to {0, 22, 1440, 977}

end tell

Because VMware Tools are installed it resizes the OS X Display.  Obviously you can change "window 1" to "window $Name_of_Window" however I just use "1" then bring whichever VM I want to change to the front and click the command on the AppleScript menu.  The Script could be coded to display a list of resolutions to pick from and then change based on selection.  One could even add a list of VM windows to choose as well. Smiley Wink

Reply
0 Kudos
WoodyZ
Immortal
Immortal
Jump to solution

Okay here's a sample script you can save as "Set VM Display Resolution" from the AppleScript Editor in /Users/${USER}/Library/Scripts and then in Apple Script Editor > Preferences... > General check the "Show Script menu in menu bar" checkbox and close the AppleScript Editor.  Then with the target Virtual Machine's window brought to the front then select "Set VM Display Resolution" from the Script menu in menu bar.  Choose the resolution you want and select OK or just double click the resolution you want.

Note:  Using this script requires that the "Enable access for assistive devices" checkbox be checked in Accessibility in System Preferences.

Additionally, just to be clear, this script is not actually changing the resolution in the Virtual Machine, it's resizing the Virtual Machine's window so that VMware Tools allows for the resolution to automatically change to accommodate the selected resolution based on the window's size without having to manually resize the window of the OS X 10.9 Mavericks Virtual Machine to achieve explicit resolutions.  It is after all just meant as a workaround, not a fix, to what's wrong with OS X 10.9 Mavericks run in a Virtual Machine!  The primary intended use is when using a large display like when a MacBook is attached to a Thunderbolt Display or using an iMac.  If one is using just a MacBook with Retina Display and using a high scaled resolution then this script could also be useful.                                          

Set_VM_Display_Resolution_Select_Resolution.png

        Set_VM_Display_Resolution_VMware_Fusion_is_not_open.png

on is_running(appName)

     tell application "System Events" to (name of processes) contains appName

end is_running

set isRunning to is_running("VMware Fusion")

if isRunning then

     set selectedRez to choose from list {"1024 x 768", "1280 x 800", "1440 x 900", "1680 x 1050", "1920 x 1200"} ¬

          with title "Set VM Display Resolution" with prompt "Select Resolution:" default items {"1440 x 900"}

     tell application "VMware Fusion"

          activate

          tell application "System Events"

               set toolbarState to name of menu item 12 of menu 1 of menu bar item "View" of menu bar 1 of process "VMware Fusion"

               tell application "VMware Fusion"

                    try

                         considering case

                              if toolbarState contains {"Hide Toolbar"} then

                                   if selectedRez contains {"1024 x 768"} then set bounds of window 1 to {0, 22, 1024, 845}

                                   if selectedRez contains {"1280 x 800"} then set bounds of window 1 to {0, 22, 1280, 877}

                                   if selectedRez contains {"1440 x 900"} then set bounds of window 1 to {0, 22, 1440, 977}

                                   if selectedRez contains {"1680 x 1050"} then set bounds of window 1 to {0, 22, 1680, 1127}

                                   if selectedRez contains {"1920 x 1200"} then set bounds of window 1 to {0, 22, 1920, 1277}

                              end if

                              if toolbarState contains {"Show Toolbar"} then

                                   if selectedRez contains {"1024 x 768"} then set bounds of window 1 to {0, 22, 1024, 812}

                                   if selectedRez contains {"1280 x 800"} then set bounds of window 1 to {0, 22, 1280, 844}

                                   if selectedRez contains {"1440 x 900"} then set bounds of window 1 to {0, 22, 1440, 944}

                                   if selectedRez contains {"1680 x 1050"} then set bounds of window 1 to {0, 22, 1680, 1094}

                                   if selectedRez contains {"1920 x 1200"} then set bounds of window 1 to {0, 22, 1920, 1244}

                              end if

                         end considering

                    end try

               end tell

          end tell

  end tell

else

  display dialog "VMware Fusion is not open." with title "Set VM Display Resolution" with icon 2 buttons {"OK"} giving up after 5

end if

Message was edited by: WoodyZ - Modified Script to account for whether the View menu shows "Hide Toolbar" or "Show Toolbar" as the bounds list item 4 (h) would be a +77 with the default "Hide Toolbar" showing and a +44 with "Show Toolbar" showing.

Message was edited by: WoodyZ - Added note for "Enable access for assistive devices" and additional information on intended use as a workaround, not a fix.

Message was edited by: WoodyZ - Added images of List Box and VMware Fusion message.

GoDeveloper
Contributor
Contributor
Jump to solution

Thanks for the detailed info Woody.  Looks like this would work nicely.

Reply
0 Kudos
WoodyZ
Immortal
Immortal
Jump to solution

Yeah it's a good workaround until VMware can get VMware Tools working properly in the OS X 10.9 Mavericks VM.  Obviously you can remove or add additional resolutions and set a different default or remove the default.  I see a convenient use for this even on regular VM's. Smiley Happy  If you have any questions about how it's coded or need any help with it just let me know.

Reply
0 Kudos
wila
Immortal
Immortal
Jump to solution

Hi,

Actually I'm not 100% sure it is Fusion that is the limiting factor as I just had a similar issue with a host.

Just this weekend I took the opportunity to upgrade my host to Mavericks and the biggest problem I had was related to Mavericks not displaying much screen resolution options. Instead of the normal 10 choices or so, there was now only 3 options per screen. The "one size fits all" approach I guess, but it didn't fit me.

See also my thread here:

Display resolution problem on all guests

So while my problem was at guest level, it was caused by Mavericks limiting my choices.

Turns out that Darius had to point out to me that holding down the option key while selecting "scaled" displays all the other choices. Selecting then, without the option key hold down, does change the display to what you selected.

But it doesn't show your selected choice as it doesn't add your selected choice to the list.

Hope this helps,

--

Wil

| Author of Vimalin. The virtual machine Backup app for VMware Fusion, VMware Workstation and Player |
| More info at vimalin.com | Twitter @wilva
Reply
0 Kudos
WoodyZ
Immortal
Immortal
Jump to solution

Wil, I'm not sure if your issue is totally related because using alt/option in a OS X 10.9 Mavericks Virtual Machine does not reveal any additional resolution options, either while selecting Scaled or once Scaled had been selected.  The only thing is does is present the Detect Displays button and selecting it does nothing in a OS X 10.9 Mavericks Virtual Machine.  While it's reasonable to assume some of the blame is on Apple it is also reasonable to assume some of the blame is on VMware as well since it isn't providing the expected behavior of a Physical Machine.

Regardless of who's to blame I certainly do not what to have to drag the Virtual Machine's windows to try and get the standard resolution values besides the default 1024 x 768 and thus the AppleScript workaround is what I came up with. Smiley Wink

I guess I should mention that I'm using OS X 10.8 Mountain Lion as the Host OS so not sure how my workaround will work on an OS X 10.9 Mavericks Host with an OS X 10.9 Mavericks Virtual Machine.

Reply
0 Kudos
wila
Immortal
Immortal
Jump to solution

Hi Woody,

Too bad, had hoped holding down the option/alt key would offer the more standard options like it did in my case at the host OS.

I do not yet have a mavericks guest down here, so cannot verify yet for myself to see what happens.

Agreed that having a workaround is always better as nothing.

--

Wil

| Author of Vimalin. The virtual machine Backup app for VMware Fusion, VMware Workstation and Player |
| More info at vimalin.com | Twitter @wilva
Reply
0 Kudos
WoodyZ
Immortal
Immortal
Jump to solution

VMware released VMware Fusion 6.0.2 today and the issue of not being able to select any resolution other the 1024 x 768 even with VMware Tools installed has not been resolved! Smiley Sad  So if one wants standardized resolutions without having to try getting them by manually dragging the window to fit then this script remains a viable workaround.

Reply
0 Kudos
vukodlak
Contributor
Contributor
Jump to solution

Thanks for the script, nice work around.

Reply
0 Kudos