Display Hot Keys - Instantly apply display settings with hot keys!

Talk to software developers and aspiring geeks. Programming tips. Improve motion fluidity. Reduce input lag. Come Present() yourself!
jon-mil-92
Posts: 7
Joined: 14 May 2024, 07:28
Contact:

Display Hot Keys - Instantly apply display settings with hot keys!

Post by jon-mil-92 » 14 May 2024, 07:50

Hello Blur Busters!

I recently developed a software that might be useful for the members of this community. This is my first open-source project, so please don't be too critical about it. I'm still learning! I'm trying to find an audience for it, and I believe this community may benefit from it.

The software is called Display Hot Keys, and it enables Windows users to instantly apply display resolution, bit depth, refresh rate, scaling mode, and DPI scale percentage with user-defined hot keys.

Common Use Cases:
  • Switch refresh rates to quickly enable the Black Frame Insertion or Backlight Strobing capabilities of the display.
  • Quickly switch between resolutions with different aspect ratios.
  • Immediately apply a resolution without entering the in-game menus for video game benchmarking purposes.
  • Enlarge or shrink the elements on screen by instantly changing the DPI scale percentage.
  • Instantly set a display mode while in a video game. (This is useful if a video game does not support changing the resolution or refresh rate while in-game.)
Let me know if you have any issues on the GitHub page, and I'll do my best to fix them! Also, if you find this software useful in any way, please consider giving the project a "Star" on the GitHub page. Thank you!

Website: https://jon-mil-92.github.io/DisplayHotKeys/

Example Screen:
product_screenshot.png
product_screenshot.png (135.83 KiB) Viewed 638 times
Last edited by jon-mil-92 on 19 May 2024, 18:20, edited 2 times in total.
Creator / developer of Display Hot Keys: https://jon-mil-92.github.io/DisplayHotKeys/
Instantly apply display settings with user-defined hot keys!

jon-mil-92
Posts: 7
Joined: 14 May 2024, 07:28
Contact:

Re: Display Hot Keys - Instantly apply display settings with hot keys!

Post by jon-mil-92 » 19 May 2024, 07:54

Version 1.3.2 has been released!

Changelog
  • The Clear Hot Key button is now next to the hot key.
  • Shortened the slot indicator label.
  • Fixed a bug where the Run On Startup button would revert to the incorrect state after refreshing the app.
  • Added a confirmation popup when clearing all hot key slots
Release Notes

This release focuses on compacting the UI. The Clear Hot Key button was changed to a small button next to the hot key, and it dynamically disables and enables itself depending on whether the hot key is set. The slot indicator label was also shortened.

If you have Display Hot Keys version 1.2.0 or earlier installed beforehand, you must uninstall it before using the installer for version 1.3.2. Also, if the primary display is changed, and then you change the display configuration in some way, the app may hang and refuse to start back up. For now, if this happens, restarting Windows will stop the app from hanging and refusing to start.

Notice: I re-uploaded this release with a very minor bug fix (one line of code) to prevent the Clear All Slots button from flashing red after interacting with the confirmation popup. It's just a minor aesthetical bug fix. No need to re-download if this type of bug doesn't bother you.
Last edited by jon-mil-92 on 20 May 2024, 09:11, edited 4 times in total.
Creator / developer of Display Hot Keys: https://jon-mil-92.github.io/DisplayHotKeys/
Instantly apply display settings with user-defined hot keys!

User avatar
Chief Blur Buster
Site Admin
Posts: 11725
Joined: 05 Dec 2013, 15:44
Location: Toronto / Hamilton, Ontario, Canada
Contact:

Re: Display Hot Keys - Instantly apply display settings with hot keys!

Post by Chief Blur Buster » 19 May 2024, 16:16

jon-mil-92 wrote:
19 May 2024, 07:54
Version 1.3.2 has been released!
Thank you for releasing this utility!

This is a great addition to a high-refresh-rate utility suite such as TestUFO, ToastX, SmoothFrog, MouseRate, etc.

For more than 5 years, I had aspirations to release a Blur Busters Refresh Rate Tool similar to this, though I never had time.

A change I'd make is due to convergence of HDR + HFR, I would like to have a HDR on/off setting and VRR on/off setting attached to each mode. Or perhaps the ability to switch between multiple near-same-Hz refresh rates (e.g. 55.5Hz and 55.6Hz) which Windows has extremely poor support for. And maybe a multimonitor thumbnails matrix that shows up before the menu, so I can change on a per-monitor basis, and/or global change (or a saved profile change similar to DisplayFusion where one display can be 120Hz and another display can be 240Hz). Basically a more GUI frontend to clicking a system tray utility.

Additional settings per row could pop up via a gear icon, to prevent cluttering of lesser-used settings.

However, since this is a free open source utility with a donationware approach -- I realize this may be much! Most users don't need the above.

Although admittedly with 240Hz OLEDs, HFR and HDR is converging...

Kudos for choosing the MIT license, which makes it friendly to hobbyists and small businesses (like mine that's a hobbyist-turned-business). I like GPL for certain more-popular software that has predatory-company risks -- but permissive licenses such as Apache/MIT is the appropriate license for ultra-niche software that has difficulty becoming popular, and Blur Busters is a niche! (albiet a growing one). I'm planning to opensource more BlurBusters software under the MIT/Apache license in the coming years. I already opensourced TestUFO's crossplatform refresh rate detector at: https://github.com/blurbusters/RefreshRateCalculator and anybody is welcome to use it (even for commercialization)

P.S. Forum readers, there's a PayPal donation button, if you want to support the author of the Display Hot Keys utility
Tip: This can allow you to turn on/off strobing if certain refresh rates does not support strobing (e.g. 238Hz) and supports strobing (e.g. 240Hz), such as NVIDIA ULMB on certain displays.
Head of Blur Busters - BlurBusters.com | TestUFO.com | Follow @BlurBusters on Twitter

Image
Forum Rules wrote:  1. Rule #1: Be Nice. This is published forum rule #1. Even To Newbies & People You Disagree With!
  2. Please report rule violations If you see a post that violates forum rules, then report the post.
  3. ALWAYS respect indie testers here. See how indies are bootstrapping Blur Busters research!

jon-mil-92
Posts: 7
Joined: 14 May 2024, 07:28
Contact:

Re: Display Hot Keys - Instantly apply display settings with hot keys!

Post by jon-mil-92 » 19 May 2024, 17:16

Chief Blur Buster wrote:
19 May 2024, 16:16
jon-mil-92 wrote:
19 May 2024, 07:54
Version 1.3.2 has been released!
Thank you for releasing this utility!

This is a great addition to a high-refresh-rate utility suite such as TestUFO, ToastX, SmoothFrog, MouseRate, etc.

For more than 5 years, I had aspirations to release a Blur Busters Refresh Rate Tool similar to this, though I never had time.

A change I'd make is due to convergence of HDR + HFR, I would like to have a HDR on/off setting and VRR on/off setting attached to each mode. Or perhaps the ability to switch between multiple near-same-Hz refresh rates (e.g. 55.5Hz and 55.6Hz) which Windows has extremely poor support for. And maybe a multimonitor thumbnails matrix that shows up before the menu, so I can change on a per-monitor basis, and/or global change (or a saved profile change similar to DisplayFusion where one display can be 120Hz and another display can be 240Hz). Basically a more GUI frontend to clicking a system tray utility.

Additional settings per row could pop up via a gear icon, to prevent cluttering of lesser-used settings.

However, since this is a free open source utility with a donationware approach -- I realize this may be much! Most users don't need the above.

Although admittedly with 240Hz OLEDs, HFR and HDR is converging...

Kudos for choosing the MIT license, which makes it friendly to hobbyists and small businesses (like mine that's a hobbyist-turned-business). I like GPL for certain more-popular software that has predatory-company risks -- but permissive licenses such as Apache/MIT is the appropriate license for ultra-niche software that has difficulty becoming popular, and Blur Busters is a niche! (albiet a growing one). I'm planning to opensource more BlurBusters software under the MIT/Apache license in the coming years. I already opensourced TestUFO's crossplatform refresh rate detector at: [omitted link so I could reply] and anybody is welcome to use it (even for commercialization)

P.S. Forum readers, there's a PayPal donation button, if you want to support the author of the Display Hot Keys utility
Tip: This can allow you to turn on/off strobing if certain refresh rates does not support strobing (e.g. 238Hz) and supports strobing (e.g. 240Hz), such as NVIDIA ULMB on certain displays.
Thank you so much for your reply! It means a lot to me! You have given me a lot to think about in terms of the direction that I want to head in for future iterations of Display Hot Keys.

This is my first "big" software project. I just graduated college with a B.S. in Computer Science a month ago. I've been working on this off and on over the past year while I was going to school and working full-time as an automotive technician. I'm about to finish up my resume and start applying for software developer positions very soon. I'm ready to stop being a poor automotive technician and to start making a living doing something I'm passionate about! Sorry for getting a bit personal, but you've made my day! :D

As a result of being pretty new to this field, I'm not sure how many of your suggestions that I can implement, but I will certainly try my best to implement some of them! I was going to initially add HDR / SDR selection to hot key slots, but I decided not to because Windows already has a native hot key for this (Win+Alt+B). However, if there is enough demand, I may try to add this feature. The Windows API is a little tricky to work with in terms of the APIs for controlling displays, but hopefully I can figure something out for the features you want.

Thanks again! For anyone else visiting this post, please suggest any features that you'd like to have here.
Creator / developer of Display Hot Keys: https://jon-mil-92.github.io/DisplayHotKeys/
Instantly apply display settings with user-defined hot keys!

User avatar
Chief Blur Buster
Site Admin
Posts: 11725
Joined: 05 Dec 2013, 15:44
Location: Toronto / Hamilton, Ontario, Canada
Contact:

Re: Display Hot Keys - Instantly apply display settings with hot keys!

Post by Chief Blur Buster » 19 May 2024, 17:28

jon-mil-92 wrote:
19 May 2024, 17:16
As a result of being pretty new to this field, I'm not sure how many of your suggestions that I can implement, but I will certainly try my best to implement some of them! I was going to initially add HDR / SDR selection to hot key slots, but I decided not to because Windows already has a native hot key for this (Win+Alt+B). However, if there is enough demand, I may try to add this feature. The Windows API is a little tricky to work with in terms of the APIs for controlling displays, but hopefully I can figure something out for the features you want.

Thanks again! For anyone else visiting this post, please suggest any features that you'd like to have here.
You can wait to see how much you earn from paypal donations, before deciding how much to make this your business model.

You now should have unlimited linking/embedding priveleges now, even in your signature (feel free to add it to your signature now), if you decide to continue posting in these forums. Authors are permitted to advertise their open source projects in their signature, within reason (Subject to Blur Busters' discretion of course -- has to be really Blur Busters related, which this "Hz" utility indeed is!)

Nontheless, if you end up unable to make it worth your time (its a very niche market, alas, requiring a brand such as Blur Busters to really publicize). Even one of the more popular utilities, ToastyX CRU, the ToastyX Patreon isn't earning as much as the author hoped.

That being said, if I utilize any of your code in any future Blur Busters Refresh Rate Tool (which if I ever release, it will cover different purposes I need than a simple hotkey utility but could double as such), I'll make a donation!
Head of Blur Busters - BlurBusters.com | TestUFO.com | Follow @BlurBusters on Twitter

Image
Forum Rules wrote:  1. Rule #1: Be Nice. This is published forum rule #1. Even To Newbies & People You Disagree With!
  2. Please report rule violations If you see a post that violates forum rules, then report the post.
  3. ALWAYS respect indie testers here. See how indies are bootstrapping Blur Busters research!

jon-mil-92
Posts: 7
Joined: 14 May 2024, 07:28
Contact:

Re: Display Hot Keys - Instantly apply display settings with hot keys!

Post by jon-mil-92 » 19 May 2024, 17:52

Chief Blur Buster wrote:
19 May 2024, 17:28
You now should have unlimited linking/embedding priveleges now, even in your signature (feel free to add it to your signature now), if you decide to continue posting in these forums. Authors are permitted to advertise their open source projects in their signature, within reason (Subject to Blur Busters' discretion of course -- has to be really Blur Busters related, which this "Hz" utility indeed is!)

Nontheless, if you end up unable to make it worth your time (its a very niche market, alas, requiring a brand such as Blur Busters to really publicize). Even one of the more popular utilities, ToastyX CRU, the ToastyX Patreon isn't earning as much as the author hoped.

That being said, if I utilize any of your code in any future Blur Busters Refresh Rate Tool (which if I ever release, it will cover different purposes I need than a simple hotkey utility but could double as such), I'll make a donation!
Thank you!

I haven't received any donations, but I never expected to. I really just made this software because I needed the functionality, and I wanted a fun software project to work on. If I make a little money off of it, then that's just an unexpected plus to making this publically available. I never considered a Patreon for it, but maybe if it gains enough traction I'll start one. I'm definitely going to keep working on it though because it's just too much fun to work on lol.
Creator / developer of Display Hot Keys: https://jon-mil-92.github.io/DisplayHotKeys/
Instantly apply display settings with user-defined hot keys!

User avatar
Chief Blur Buster
Site Admin
Posts: 11725
Joined: 05 Dec 2013, 15:44
Location: Toronto / Hamilton, Ontario, Canada
Contact:

Re: Display Hot Keys - Instantly apply display settings with hot keys!

Post by Chief Blur Buster » 19 May 2024, 18:15

jon-mil-92 wrote:
19 May 2024, 17:52
I haven't received any donations, but I never expected to. I really just made this software because I needed the functionality, and I wanted a fun software project to work on. If I make a little money off of it, then that's just an unexpected plus to making this publically available. I never considered a Patreon for it, but maybe if it gains enough traction I'll start one. I'm definitely going to keep working on it though because it's just too much fun to work on lol.
Make sure you don't turn it into something you hate -- many aspiring open source authors start to hate what they do because they've toiled on user requests for a long time and find it no longer fun.

Stick to the fun and easy changes for now.

That being said, if you want the easiest change that allows unlimited settings per mode, the gear icon is my #1 suggestion:

I suspect the gear icon is the easiest way to add extra settings to each row. (One gear icon per row, alongside the one trash icon per row)

To start with to reduce clutter of adding more columns, you might want to add a gear icon (on every row like the trash icon). A probably very simple change that helps you add additional settings in the future per row... in a catchall manner.

Clicking the gear icon would pop up whatever you dream up for additional settings you want to add in the future. If you don't like/want to add HDR, you might still find it fun to add other random settings into the sub-window that pops up via a gear icon. Heck, maybe you'll move some stuff to the sub-window triggered via gear icon like Scaling Mode.

Or who knows, maybe you want it like sort of a configurable spreadsheet that has hide/show columns. The gear icon contains all settings including the settings that the user hidden. Maybe even rendered by a HTML renderer, maybe using the existing WinForms approach, or whatever. Or if it's a pain (your framework doesn't easily let you do this), skip the painful coding and just do the gear icon only and put your less-often-used stuff there. Different users can lay it columns whatever they prefer by right-clicking (or something) to show/hide columns that gets moved to the gear icon. A more dynamic user interface. Heck, the gear icon could show ALL the settings in a simple vertical manner, as a sort of "Expand Settings For This Mode" thing in a popup window. Or just do only the fun "hide-those-damn-easter-eggs" gear icon, forget about the boring "dynamic-render-userinterface" stuff if that part is something you hate.

Random stuff that you dream up in the future -- can be added to the window that pops up from the gear icon.

....like a path to an optional executable to run upon a specific mode selected. Some utilities (ddcutil) can change the brightness/contrast/hdr settings of a monitor, and also some overclocking techniques on some models requires running a command everytime you activate an overclocked mode (Out-Of-Range firmware-watchdog dismissing utilities such as "OORbuster" on github). Though make sure you throttle repeated executions in a fraction of a second, in case user accidentally hit hotkey multiple times...

Who knows, you should follow your heart; in the most fun change that meets your needs without making this "laborious".
Head of Blur Busters - BlurBusters.com | TestUFO.com | Follow @BlurBusters on Twitter

Image
Forum Rules wrote:  1. Rule #1: Be Nice. This is published forum rule #1. Even To Newbies & People You Disagree With!
  2. Please report rule violations If you see a post that violates forum rules, then report the post.
  3. ALWAYS respect indie testers here. See how indies are bootstrapping Blur Busters research!

jon-mil-92
Posts: 7
Joined: 14 May 2024, 07:28
Contact:

Re: Display Hot Keys - Instantly apply display settings with hot keys!

Post by jon-mil-92 » 19 May 2024, 18:34

Chief Blur Buster wrote:
19 May 2024, 18:15
jon-mil-92 wrote:
19 May 2024, 17:52
I haven't received any donations, but I never expected to. I really just made this software because I needed the functionality, and I wanted a fun software project to work on. If I make a little money off of it, then that's just an unexpected plus to making this publically available. I never considered a Patreon for it, but maybe if it gains enough traction I'll start one. I'm definitely going to keep working on it though because it's just too much fun to work on lol.
Make sure you don't turn it into something you hate -- many aspiring open source authors start to hate what they do because they've toiled on user requests for a long time and find it no longer fun.

Stick to the fun and easy changes for now.

That being said, if you want the easiest change that allows unlimited settings per mode, the gear icon is my #1 suggestion:

I suspect the gear icon is the easiest way to add extra settings to each row. To start with to reduce clutter of adding more columns, you might want to add a gear icon (on every row like the trash icon). A probably very simple change that helps you add additional settings in the future per row... in a catchall manner.

Clicking the gear icon would pop up whatever you dream up for additional settings you want to add in the future. If you don't like/want to add HDR, you might still find it fun to add other random settings into the sub-window that pops up via a gear icon. Heck, maybe you'll move some stuff to the sub-window triggered via gear icon like Scaling Mode.

Or who knows, maybe you want it like sort of a configurable spreadsheet that has hide/show columns. The gear icon contains all settings including the settings that the user hidden. Maybe even rendered by a HTML renderer, maybe using the existing WinForms approach, or whatever. Or if it's a pain (your framework doesn't easily let you do this), skip the painful coding and just do the gear icon only and put your less-often-used stuff there. Different users can lay it columns whatever they prefer by right-clicking (or something) to show/hide columns that gets moved to the gear icon. A more dynamic user interface. Heck, the gear icon could show ALL the settings in a simple vertical manner, as a sort of "Expand Settings For This Mode" thing in a popup window. Or just do only the fun "hide-those-damn-easter-eggs" gear icon, forget about the boring "dynamic-render-userinterface" stuff if that part is something you hate.

Who knows, you should follow your heart; in the most fun change that meets your needs without making this "laborious".
Lots of great ideas here! I'm admittedly using the rather outdated Java Swing framework for the UI, but I'm using the modern FlatLaf look and feel that brings it more up-to-date. I was mostly a Java programmer when I started this project, so I went with a Java framework that has a ton of documentation across the internet. However, I wish that I had chosen a more modern framework because it has been a pain to develop the UI lol. I also thought about making it cross-platform, and Java Swing would make this easier, but I don't know if I have the time or the skills to accomplish that at the moment. Linux support would be way down the road (I have already looked into it, and it will require months of work).
Creator / developer of Display Hot Keys: https://jon-mil-92.github.io/DisplayHotKeys/
Instantly apply display settings with user-defined hot keys!

User avatar
Chief Blur Buster
Site Admin
Posts: 11725
Joined: 05 Dec 2013, 15:44
Location: Toronto / Hamilton, Ontario, Canada
Contact:

Re: Display Hot Keys - Instantly apply display settings with hot keys!

Post by Chief Blur Buster » 19 May 2024, 18:42

jon-mil-92 wrote:
19 May 2024, 18:34
Linux support would be way down the road (I have already looked into it, and it will require months of work).
The reason I mentioned javascript was UI framework flexibility, rather than crossplatform.

That being said, some user interfaces are easier to program and others are harder. A project like this theoretically takes only a week for some highly experienced software developer that's very current on this, so taking months would be an inefficient use of your time -- unless your goal was to learn the programming platform (to help your job prospects etc). For now, run with what you find the most fun.

Transitioning your Java skills to Javascript is probably easier. (Or even C#)
Impressed you found a way to call Windows resolution and refresh rate APIs from Java, that's a challenge.
Fortunately you have options in all languages, like "interop" interfaces from C#, Java, JavaScript, to call Windows APIs. There's lots of Windows-specific APIs made accessible in offline desktop Javascript too, though it's all a learning curve to interface it to platform-specific stuff.

If you are abig fan of Linux and have been meaning to do Linux anyway -- then if you move your platform-specific code to separate modules, you can have a Linux version much more easily. It's the art of "refactoring", to make something easier in the future. Then it wouldn't take months, and also keeps your Windows-specific stuff cleaner and isolated into specific modules, as good coding practice applicable to career skills!

Since you're fresh off student status -- I'd say keep this project fun while also being aligned to your long-term career projects. Past hobby programming projects (mainly on Commodore 64) helped me learn skills applicable to jobs, so you'll want to path this out in a way that remains fun while aligned to career prospects too!
Head of Blur Busters - BlurBusters.com | TestUFO.com | Follow @BlurBusters on Twitter

Image
Forum Rules wrote:  1. Rule #1: Be Nice. This is published forum rule #1. Even To Newbies & People You Disagree With!
  2. Please report rule violations If you see a post that violates forum rules, then report the post.
  3. ALWAYS respect indie testers here. See how indies are bootstrapping Blur Busters research!

jon-mil-92
Posts: 7
Joined: 14 May 2024, 07:28
Contact:

Re: Display Hot Keys - Instantly apply display settings with hot keys!

Post by jon-mil-92 » 19 May 2024, 19:03

Chief Blur Buster wrote:
19 May 2024, 18:42
jon-mil-92 wrote:
19 May 2024, 18:34
Linux support would be way down the road (I have already looked into it, and it will require months of work).
The reason I mentioned javascript was UI framework flexibility, rather than crossplatform.

That being said, some user interfaces are easier to program and others are harder. A project like this theoretically takes only a week for some highly experienced software developer that's very current on this, so taking months would be an inefficient use of your time -- unless your goal was to learn the programming platform (to help your job prospects etc). For now, run with what you find the most fun.

Transitioning your Java skills to Javascript is probably easier. (Or even C#)
Impressed you found a way to call Windows resolution and refresh rate APIs from Java, that's a challenge.
Fortunately you have options in all languages, like "interop" interfaces from C#, Java, JavaScript, to call Windows APIs. There's lots of Windows-specific APIs made accessible in offline desktop Javascript too, though it's all a learning curve to interface it to platform-specific stuff.

If you are abig fan of Linux and have been meaning to do Linux anyway -- then if you move your platform-specific code to separate modules, you can have a Linux version much more easily. It's the art of "refactoring", to make something easier in the future. Then it wouldn't take months, and also keeps your Windows-specific stuff cleaner and isolated into specific modules, as good coding practice applicable to career skills!

Since you're fresh off student status -- I'd say keep this project fun while also being aligned to your long-term career projects. Past hobby programming projects (mainly on Commodore 64) helped me learn skills applicable to jobs, so you'll want to path this out in a way that remains fun while aligned to career prospects too!
If I was working on this for more than a few hours a week, I could have had it done WAY sooner lol. But with going to school full-time and working full-time, I had very little time to work on it. Since school is finally over with, I've found a lot more time to work on it.

The hardest part was definitely integrating my C++ code into the project with the Java Native Interface so I could more efficiently interface with those Windows APIs. At first, I was developing two separate programs (one for changing the display settings via the CLI, and one for the GUI). Then, the Java program would communicate with the SetDisplay.exe program via the CLI to apply the display settings. Now, I'm using JNI libraries to interface with the Windows APIs. This makes maintaining the project much easier. I still have my SetDisplay program up on my GitHub (MIT licensed) if you're interested in seeing the separate program that was utilized before version 1.3.0 of Display Hot Keys.

I believe I have the code base pretty well modularized to make a Linux version easier. I'd have to expand the Java (low-level) System Hook dependency to support native Linux key events though, since it currently only supports Windows. This is what would take most of the time. Creating the libraries to apply the display settings in Linux wouldn't be too hard.
Creator / developer of Display Hot Keys: https://jon-mil-92.github.io/DisplayHotKeys/
Instantly apply display settings with user-defined hot keys!

Post Reply