We are aware that a few of you are enjoying these spiffy HiDPI / UltraHD / 4K screens, whether you're using a Retina screen, a Surface, or an external high-end monitor. We have plans to fully accommodate these higher resolutions in our software, and in the meantime, we have helped multiple customers with a workaround (first demonstrated by Gianluca Sartori) that you can use to scale Windows elements using an alternate method: bitmap scaling.
For some applications, you can use the Windows shortcut setting "Disable display scaling on high DPI settings" to adjust appearances back to "normal" – but for some applications, like SQL Sentry and SSMS, this doesn't always work as well as you'd like (see Aaron Bertrand's post about SSMS).
There are two components to this workaround.
- First, you will need to add a DWORD (32-bit) Value to your registry:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide] "PreferExternalManifest"=dword:00000001
The registry entry tells Windows that it should assist apps by checking for a manifest file in their installation folder. The manifest file, in this case, tells Windows that the application is DPI-unaware, and so instructs Windows to disable DPI scaling and enable bitmap scaling instead. Which brings us to…
- You will need to place a manifest file in the installation directory, alongside the SQL Sentry Plan Explorer or SentryOne / SQL Sentry client executable. You can download the manifest files here:
Note that when using a manifest file, the name of the file has to match the name of the executable exactly (including ".exe") while appending ".manifest" to the filename. Please ensure you save the manifest file as
SentryOne Client.exe.manifest(for v11 and above),
SQL Sentry Client.exe.manifest(for v10 and earlier), or
SQL Sentry Plan Explorer.exe.manifest, otherwise it will not be recognized when launching the application.
After putting the manifest file and registry entry in place, both SQL Sentry Plan Explorer and the SQL Sentry Client should look a little bit cleaner on ultra-high resolution screens. Note that bitmap scaling makes certain aspects more usable, but you will lose those nice, crisp fonts you are used to, so you may choose to use the manifest file or not, depending on what you are doing. A few examples:
Here we can see that, due to the high resolution, areas with smaller fonts are not re-mapped properly, and icons (such as those in the navigator) don't resize:
With the manifest file in place, the fonts are a bit blurrier, but everything is visible and the icons look normal:
Similarly to the client, there are grids we are using that don't resize according to the higher resolution fonts, so in some places the entire column header (or the data in it) won't be readable:
Again, with the manifest file being obeyed, the appearance is strikingly different:
Finally, there are some areas that look much better without the manifest file:
Compare that to having the manifest file in place, where the icons look the same but the fonts are much blurrier:
If you want to compare different parts of the application with or without the manifest file in place, you don't need to modify the registry again, just rename the manifest file from
.NOTmanifest or vice versa (you'll need to re-launch the application for the change to take effect).
We do have plans to address these issues in a future release, however it will involve re-writing some of our underlying components and a healthy dose of regression testing, so we don't have an ETA just yet. If you have any issues using our software with HiDPI screens, please let us know at email@example.com.
Shout-out to Alec Pickup for helping out with this post.