Skip to main content

Fixing toolbar resolution on 4k windows10

The IT department at work recently upgraded me from a 2K display Windows 7 laptop to a 4K display Windows 10 laptop.
The recommended (and I suspect default) resolution on this system is 3840x2160 and recommended size of apps/text is 250%. The issue with these settings is that not all apps scale properly. 
As a result, some of my frequented apps were rendered weird - either the toolbar was too small or the navigation pane had huge icons. If you are facing similar issues, the steps listed here should work.


Before the WAR:



After the WAR:


Step 1

Create a file called <app name>.exe.manifest.

Step2

Edit the file to include the dxi settings
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">False</dpiAware>
</windowsSettings>
</application>
</assembly>

Step3

Copy the file to the location of the binary

Step4

Create a registry key
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide\PreferExternalManifest (DWORD) to 1


What we did:

Manifest contains metadata for the application besides some runtime bindings. It is a part of the executable package. The exe can be unzipped using 7zip. The Manifest usually resides in a folder called .res/1033/MANIFEST/.
With windows 10, the manifest has a field dpiaware which informs Windows whether the application will be responsible for it's own dots per pixel computation. (Please see the manifest link for details and comparison of dpiaware vs dpiawareness)
In the steps above, we overrode the application's manifest to use our own. Not all applications have  a manifest packaged in their executable, but when they do, it may contain other critical information which you'll need to replicate. So it is a good idea to copy the contents of packaged manifest into your own manifest and modify the dpi value.
If manifest contains
<dpiaware>true</dpiaware>,
modify it to
<dpiaware>false</dpiaware>
Else, the text from step 2 is sufficient.

Comments

Popular posts from this blog

Setting up eclipse for Processing

Prerequisite: 1.Basic knowledge of Android 1.Basic knowledge of eclipse I have found that the easiest way to build heavily UI based apps (read:games) is to use Processing . Processing is an open source programming language and environment for people who want to create images, animations, and interactions. Processing-2.0a4 supports the android SDK as well, and you can use the processing tool to port games to Windows, Mac, Android as well as flash. My project used 5 'processing classes'(pde files), open in 5 tabs. There were two problems I disliked about processing: It was not possible to implement levels using only the Processing tool. Even though each of the tabs open in the window above were compiled to separate classes, they were inner classes of the class Invaders2 The former problem could be solved by implementing each level as a separate processing project and later integrating all the main classes using eclipse. Now the question is, if I have to use

Dlna and Android Tv

An efficient way of sharing content from your PC to your TV. In the past, before the creation and popularity of Chromecast, televisions used to support this protocol called DLNA. The flow of DLNA was simply a client server communication. The television would be a client to DLNA, listening for DLNA servers. The server would advertise it's catalogue and allow the client to stream content. With the advent of DIAL, the focus shifted on remotely launching apps on the television. This provides benefit of streaming from the internet in addition to local content (DLNA servers could only stream local content). Google further added the option of casting your screen remotely (wis-a-wis AirPlay). The Chrome browser allowed you to cast whole desktop without extra software. This changed the television manufacturers' focus and DLNA became a thing of the past. Here's where my problem starts. Chromecast works great on windows but is lacking on Linux. Also, casting lags in comparison to s