Good evening

It’s another Saturday night, outside is cold as hell and Shani is snuggled up in a donut I made out of my duvet. Unfortunately she’s the color of the abyss so taking a picture of her would require technology not yet invented by man.

I’ve been trying to motivate myself to do something today but I wasn’t able to get in gear. Purchased the Persona 3 remake recently and the new Yakuza Infinite Wealth, haven’t even started either of them because I’ve been so consumed by GTA RP. moonmoon and divajilly and their surrounding cast of misfits have such good chemistry I just find myself spending every waking hour desperately trying to catch up on what happened during the night.

Health stuff, keep scrolling

I saw the physiotherapist on Thursday, he confirmed that I probably don’t have any neurological damage or anything serious but that my back is sore from never being able to relax. Possibly related that I spend most of my waking hours in front of the desk hunched over like a monkey and then go to sleep in the style of Final Fantasy Cactuars.

He also took me on for another 12 week gym program which i desperately need to get back into things. Unfortunately he didn’t have time for me until March so I’ll have to keep my walking routine for 2 more weeks. The transplant evaluation is just about done, everything so far has checked out, I got a heart scintigraphy (fancy xray) booked for beginning of March, other then that all tests have been taken and checked off. I’m a little worried about the xray, I’ve been a fat piece of shit for a long ass time and I’m not ready to pay the piper.

Once the Xray is done the only thing standing in my way is my weight, it’s been an insane journey, chart below is from 2020-02-28 - 2022-04-14 and is in kilograms. At my peak (when I was committed to the hospital in Jan 2020) I weighed 198 kg and as of yesterday I was 133.7 kg. I need to get below 120-115 to have a reasonable chance at a transplant but my personal goal is 99.9. Dialysis is a bitch, man.

weight journey

Displays, VCP codes, DDC/CI protocol

I recently got tired of fiddling with the OSD on my secondary monitor to switch input between my PC, my NUC and my Switch and I thought surely in 2024 there are easier ways. And that’s when i learned about the DDC/CI protocol which both my monitors luckily supported. The protocol is similar to HDMI CEC I guess where you can connect your TV and your Amplifier together and control both with the same remote.

Displays use something called VCP Codes (Virtual Control Panel) and a connected device can send these VCP codes to the display to do things like Power on/off, switch input, adjust brightness etc. I got this far in my research and stumbled upon ControlMyMonitor by NirSoft.

Now this is where I should’ve stopped and read the documentation but I dove right in, to confirm that what I wanted to do was even possible. And very quickly i figured out that:

  1. My monitors support switching inputs over VCP
  2. My monitors support turning on and off over VCP
  3. I have absolutely no idea which monitor is which as Windows recognizes them as DISPLAY6, DISPLAY7, DISPLAY8 probably depending on which one was recognized first after the driver was loaded.

This led me on a 5 hour detour where i played with a python library called monitorcontrol which let me send VCP codes to my monitor through a python application, I had solved 1 and 2 but 3 had me more confused than ever.

That’s when someone linked me this article by cmjchrisjones, and I realized ControlMyMonitor had a CLI mode and i could easily bind it to my stream deck instead of running the system tray app I’d cobbled together in Python.

However looking at Chris’s solution it seemed he had the same problem as I did, his displays where assigned a (probably) random value, and because they had different capabilities and could be shuffled on reboot there was no guarantee that the button would consistently perform. (It’s possible this solution wasn’t available when Chris wrote his post as )

This is when I felt so close to the solution I could practically sniff it, so I went back to reading the documentation for ControlMyMonitor which is where I should’ve began 6 something hours ago.

Version 1.37 introduced a feature to “Copy Monitor Strings” by selecting the monitor in the dropdown and pressing CTRL+M which could then be pasted into text editor of your choice. I did this and found the following:

Monitor Device Name: "\\.\DISPLAY8\Monitor0"
Monitor Name: "PA278QV"
Serial Number: "M1LMQS068605"
Adapter Name: "NVIDIA GeForce RTX 3060"
Monitor ID: "MONITOR\AUS2700\{4d36e96e-e325-11ce-bfc1-08002be10318}\0001"
Short Monitor ID: "AUS2700"

Oh shit! Model ID’s!

And then the documentation (which at this point for me, was equal to finding both El Dorado and Atlantis at once) goes on to say:
“You can use any string from this list as long as the other monitors on your system have different values for the same property.”

A little dazed at how easy it was I created a bat with trembling hands containing the following line:

C:\path\to\controlmymonitor\ControlMyMonitor.exe /SetValue "PA278QV" D6 5
VCP Code D6 is “Power” and Value 5 is “Hard Power off”

I ran the file and: The monitor turned off. In absolute disbelief I changed the Value to 1 “Power on” and ran it again:
The monitor turned on! This shit was the closest thing I knew to a magic trick right now.

I also made batfiles for VCP Code 60 (input select) which in my secondary monitors case was value 15 (DP) and 17 (HDMI), all monitors have different capabilities and values. I recommend downloading the ControlMyMonitor GUI app and explore what VCP codes are exposed by your display if you want to do this. I then used my stream deck to execute these bat files on certain key presses and I’ve used it every day since!

That’s all I have for now, stay safe in the cold, I love you lots!

Took a trip down memory lane and found this song by Constant Flow, saw him opening for Immortal Technique in Gothenburg and this track really stuck with me