Maybe a quick fix: mc -b
forces no-color mode ;)
You can write your own skins for mc
, which include a color scheme. They live in ~/.mc/skins
and are selected by mc -S skinname
. This article talks a bit about it and has an example available for download at the end.
But maybe the deeper trouble is that your term background is "not the expected color", so another way would be to change how your term displays the 16 "standard colors". (For example, this would make all formerly-green items purple, if that's better for you from a contrast standpoint.) How this is done depends on your terminal emulator, for example XFCE's Terminal has it in its preferences dialog, for xterm you probably need to edit a configuration file etc.
The Mutter docs specify the interface with dbus as @don_crissti has pointed out in comments:
https://gitlab.gnome.org/GNOME/mutter/blob/master/src/org.gnome.Mutter.DisplayConfig.xml
You need to find out your configuration serial and your connector:
configuration serial is the first number shown in
gdbus call \
--session \
--dest=org.gnome.Mutter.DisplayConfig \
--object-path /org/gnome/Mutter/DisplayConfig \
--method org.gnome.Mutter.DisplayConfig.GetResources
in my case that is uint32 3
, so I use 3
connector: it shows in ls /sys/class/drm
, in my case by trial and error I found that card0-DP-2
was the correct one so I use DP-2
. You can also try to make sense of the output of DisplayConfig.GetResources
and use that.
By setting the other options, the final command becomes like this:
gdbus call \
--session \
--dest=org.gnome.Mutter.DisplayConfig \
--object-path /org/gnome/Mutter/DisplayConfig \
--method org.gnome.Mutter.DisplayConfig.ApplyMonitorsConfig \
3 1 "[(0, 0, 1, 0, true, [('eDP-1', '1920x1080@60.0', [] )] )]" "[]"
Unfortunately, that does not work for me, even though I am passing the resolution (aka. "mode id") in the right format:
Error: GDBus.Error:org.freedesktop.DBus.Error.InvalidArgs: Invalid mode '1920x1080@60.0' specified
(According to introspection data, you need to pass 'uua(iiduba(ssa{sv}))a{sv}')
EDIT:
I found why, the refresh rate needs to be THE EXACT STRING that DisplayConfig.GetResources
is reporting. It does not let you set what you want as refresh rate sadly! So you have to use some arbitrary string like 59.810825347900391
like so:
gdbus call \
--session \
--dest=org.gnome.Mutter.DisplayConfig \
--object-path /org/gnome/Mutter/DisplayConfig \
--method org.gnome.Mutter.DisplayConfig.ApplyMonitorsConfig \
3 1 "[(0, 0, 1, 0, true, [('eDP-1', '1920x1080@59.810825347900391', [] )] )]" "[]"
In conclusion, this is of very limited use. There should be a way of adding display modes, by generating CVT or GTF timings, but it looks like DisplayConfig does not have an interface for that :(
Best Answer
You can modify gamma settings (colors and effectively contrast too) using
xrandr
tool. First determine the output name of your monitor:In the above example I have a monitor connected and seen as output DFP1. So now for the gamma modification example:
Where gamma values are in format
Red:Green:Blue
.Edit: Another option is
xcalib
(you may need to install it first). It can be used with-a
parameter to have effect directly on the connected monitor. See the output ofxcalib
for more details. Unfortunately, the color/brightness settings seem to work additively, so you might need to dorandr --output ... --gamma 1:1:1
to restore the default state.