Control KDE settings from CLI
Thanks to donations to Games on Whales I’ve been able to buy a new GPU: the Gigabyte Radeon RX 9070 Gaming OC.
My dev/gaming machine was a dual GPU desktop
so that I could easily switch between vendors when developing Wolf composed of:
- Nvidia 3070 FE
- Intel ARC A380
I wanted to switch the low-powered Intel ARC for the newest AMD champ so that I could get a dual AMD/Nvidia monstrosity in order to properly work on Wolf for both proprietary (Nvidia) and open source drivers (AMD).
Should be easy, right?
After a bit of Googling, luckily, I’ve stumbled upon this post, which redirects to this issue
TLDR: Under your display configuration in System Settings, Make sure colour accuracy is set to “Prefer efficiency” instead of “Prefer color accuracy”
Right, so how do I access the system settings without being able to use the desktop? ssh
to the rescue!
First off, I’ve found that kscreen-console
can output the full configuration currently in use:
WAYLAND_DISPLAY=wayland-0 kscreen-console config
💡 Tip
I had to add
WAYLAND_DISPLAY=wayland-0
[
{
"data": [
{
"allowSdrSoftwareBrightness": false,
"autoRotation": "InTabletMode",
"brightness": 1,
"colorProfileSource": "sRGB",
"connectorName": "DP-4",
"edidHash": "3cce69334fe08e9b940191c5e8e3e01c",
"edidIdentifier": "SAM 3524 810571851 42 2017 0",
"highDynamicRange": false,
"iccProfilePath": "",
"mode": {
"height": 1440,
"refreshRate": 99982,
"width": 3440
},
"overscan": 0,
"rgbRange": "Automatic",
"scale": 1.25,
"sdrBrightness": 200,
"sdrGamutWideness": 0,
"transform": "Normal",
"vrrPolicy": "Automatic",
"wideColorGamut": false
},
{
"allowSdrSoftwareBrightness": false,
"autoRotation": "InTabletMode",
"brightness": 1,
"colorPowerTradeoff": "PreferAccuracy",
"colorProfileSource": "EDID",
"connectorName": "DP-1",
"edidHash": "953a036f5c883ffd36adf6067f801fc5",
"edidIdentifier": "PHL 4101 59204 33 2024 0",
"highDynamicRange": true,
"iccProfilePath": "",
"mode": {
"height": 1440,
"refreshRate": 120000,
"width": 3440
},
"overscan": 0,
"rgbRange": "Automatic",
"scale": 1.25,
"sdrBrightness": 250,
"sdrGamutWideness": 1,
"transform": "Normal",
"vrrPolicy": "Automatic",
"wideColorGamut": true
},
{
"allowSdrSoftwareBrightness": true,
"autoRotation": "InTabletMode",
"brightness": 1,
"colorProfileSource": "sRGB",
"connectorName": "DP-4",
"edidHash": "a3cae9308e7f29b9beb9ded17c6582d3",
"edidIdentifier": "PHL 4101 1010101 31 2023 0",
"highDynamicRange": false,
"iccProfilePath": "",
"mode": {
"height": 1440,
"refreshRate": 120000,
"width": 3440
},
"overscan": 0,
"rgbRange": "Automatic",
"scale": 1.25,
"sdrBrightness": 200,
"sdrGamutWideness": 0,
"transform": "Normal",
"vrrPolicy": "Automatic",
"wideColorGamut": false
},
{
"allowSdrSoftwareBrightness": true,
"autoRotation": "InTabletMode",
"brightness": 1,
"colorProfileSource": "sRGB",
"connectorName": "Unknown-1",
"highDynamicRange": false,
"iccProfilePath": "",
"mode": {
"height": 768,
"refreshRate": 59999,
"width": 1024
},
"overscan": 0,
"rgbRange": "Automatic",
"scale": 1,
"sdrBrightness": 200,
"sdrGamutWideness": 0,
"transform": "Normal",
"vrrPolicy": "Automatic",
"wideColorGamut": false
}
],
"name": "outputs"
}
]
Found it! "colorPowerTradeoff": "PreferAccuracy"
seems to be exactly what we are looking for, so how do we change
that?
kscreen-doctor
seems to be the right tool for this job, let’s output the current config first:
WAYLAND_DISPLAY=wayland-0 kscreen-doctor -o
Output: 1 DP-1
enabled
connected
priority 1
DisplayPort
Modes: 1:3440x1440@60! 2:3440x1440@120* 3:3440x1440@100 4:3440x1440@30 5:2560x1440@120 6:2560x1080@60 7:2560x1080@60 8:2560x1080@50 9:1920x1200@60 10:1920x1080@120 11:1920x1080@120 12:1920x1080@60 13:1920x1080@60 14:1920x1080@60 15:1920x1080@60 16:1920x1080@60 17:1920x1080@50 18:1920x1080@50 19:1600x1200@60 20:1680x1050@60 21:1280x1024@75 22:1280x1024@60 23:1440x900@60 24:1280x800@60 25:1280x720@60 26:1280x720@60 27:1280x720@60 28:1280x720@50 29:1024x768@100 30:1024x768@75 31:1024x768@70 32:1024x768@60 33:832x624@75 34:800x600@100 35:800x600@75 36:800x600@72 37:800x600@60 38:800x600@56 39:720x576@50 40:720x576@50 41:720x480@60 42:720x480@60 43:720x480@60 44:720x480@60 45:640x480@100 46:640x480@75 47:640x480@73 48:640x480@67 49:640x480@60 50:640x480@60 51:640x480@60 52:720x400@70 53:1600x1200@60 54:1280x1024@60 55:1024x768@60 56:1920x1200@60 57:1280x800@60 58:2560x1440@60 59:1920x1080@60 60:1600x900@60 61:1368x768@60 62:1280x720@60
Geometry: 0,0 2752x1152
Scale: 1.25
Rotation: 1
Overscan: 0
Vrr: incapable
RgbRange: unknown
HDR: enabled
SDR brightness: 250 nits
SDR gamut wideness: 100%
Peak brightness: 436 nits
Max average brightness: 436 nits
Min brightness: 0 nits
Wide Color Gamut: enabled
ICC profile: none
Color profile source: EDID
Color power preference: prefer accuracy
Brightness control: supported, set to 100% and dimming to 100%
Note that Color power preference: prefer accuracy.
After a bit of trial and error, I’ve found the right incantation:
WAYLAND_DISPLAY=wayland-0 kscreen-doctor output.DP-1.colorPowerTradeoff.preferEfficiency
That made my monitor instantly come back alive with the right image!