(Dies betrifft nur X11, nicht Wayland oder andere Display-Management-Systeme. Einige dieser Techniken können mit anderen Tools angewendet werden, z. B. den Eingabehilfen von GNOME Shell .)
Ich kann mir zwei Möglichkeiten vorstellen, um eine gelbe Anzeige zu erhalten: Einfügen eines Compositing-Plugins, das alle Farben korrigiert, und Erstellen eines Farbprofils, das alle Farben auf ein gelbes Äquivalent korrigiert. Beide sind wahrscheinlich mit mehr Aufwand verbunden als sie wert sind (abgesehen von der Lernseite der Dinge).
Sie können eine gute Annäherung für Primärfarbanzeigen erhalten, indem Sie das Gamma pro Kanal manipulieren, wie in der Antwort von sigvei erläutert . xcalib
kann auch Zugriff darauf gewähren und ermöglicht die direkte Steuerung von Helligkeit und Kontrast sowie die Angabe des Gammawertes:
xcalib -blue 1.0 0 1.0 -red 1.0 0 1.0 -alter
führt zu einer grünen Anzeige. Helligkeit und Kontrast werden auf die Gammarampen angewendet, sodass xrandr
Sie dieselben Ergebnisse erzielen können.
Es ist möglich, die Gammarampen noch feiner zu steuern, aber das erlaubt Ihnen sowieso nicht, alles auf Bernsteinfarben abzubilden. Sie können Kanäle auf bestimmte Bereiche „klemmen“, sodass beispielsweise bei einem hellen Rot etwas Grün eingeführt wird und somit bernsteinfarbener erscheint, dann jedoch dunkle Rottöne grün erscheinen ...
Der folgende Code zeigt, wie Sie vorgehen müssen (ohne Fehlerbehandlung):
#include <X11/Xos.h>
#include <X11/Xlib.h>
#include <X11/extensions/xf86vmode.h>
#include <stdlib.h>
int main(int argc, char **argv) {
Display * dpy = NULL;
int screen = -1;
u_int16_t * r_ramp = NULL, * g_ramp = NULL, * b_ramp = NULL;
unsigned int ramp_size = 256;
int r_tgt = 255, g_tgt = 191, b_tgt = 0;
int i;
dpy = XOpenDisplay(NULL);
screen = DefaultScreen(dpy);
/* Set up ramps */
XF86VidModeGetGammaRampSize(dpy, screen, &ramp_size);
r_ramp = (unsigned short *) calloc(ramp_size, sizeof(u_int16_t));
g_ramp = (unsigned short *) calloc(ramp_size, sizeof(u_int16_t));
b_ramp = (unsigned short *) calloc(ramp_size, sizeof(u_int16_t));
for (i = 0; i < ramp_size; i++) {
r_ramp[i] = r_tgt * 256 * i / ramp_size;
g_ramp[i] = g_tgt * 256 * i / ramp_size;
b_ramp[i] = b_tgt * 256 * i / ramp_size;
}
XF86VidModeSetGammaRamp(dpy, screen, ramp_size, r_ramp, g_ramp, b_ramp);
XCloseDisplay(dpy);
}
(Sie müssen -lX11 -lXxf86vm
verlinken.)
xrandr --output $OUTPUT --gamma 1:0.01:0.01
gibt Ihnen ein fast monochromes Rot-auf-Schwarz.Das Triplett von Zahlen sind RGB-Werte für die Gammakorrektur, getrennt durch: im Bereich von 0-1. Ersetzen Sie
1:0.01:0.01
durch0.01:1:0.01
für grün und0.01:0.01:1
für blau. Es ist schwer, eine andere Farbe als diese drei Grundfarben herzustellen. Es wird sehr gut sichtbar, wenn Sie mehr als eine Farbe durchlassen.Diese Methode funktioniert nur mit dunklen / schwarzen Hintergründen, da die Gammakorrektur von hellem Weiß nur weiß ist.
Verwenden Sie
xrandr -q
diese Option , um die Ausgabe-ID zu finden, für die verwendet werden soll$OUTPUT
. Mein Laptop-Bildschirm ist zum Beispiel LVDS-1.quelle
Wenn Sie einen Compositing-Fenstermanager verwenden, der Plugins unterstützt, können Sie wahrscheinlich ein Plugin erstellen, das die Bildschirmpixel nach Ihren Wünschen ändert, dh die Luminanz des Eingangspixels berechnet und das Ergebnis mit gelber Farbe moduliert (Gammakorrektur nach Bedarf hin und her anwenden) ).
Hier ist ein Beispiel für einen Hack auf den Invert- Effekt im KDE-Fenstermanager KWin, um dies zu erreichen. Dieser Hack besteht darin, einfach den Shader des Invert-Effekts im KWin-Quellbaum unter
effects/invert/data/1.40/invert.frag
(vorausgesetzt, Ihre GPU kann GLSL 1.40 ausführen) durch benutzerdefinierten Code zu ersetzen :In KDE4 KWin können Sie einfach die installierte Shader-Datei ersetzen
/usr/share/apps/kwin/shaders/1.40/invert.frag
(nachdem Sietexcoord0
den oben angegebenen Code durch ersetzt habenvaryingTexCoords
). Da KDE5 leider als Qt-Ressource in die Plugin-Binärdatei integriert ist, müssen Sie KWin mit der im Quellbaum bearbeiteten Datei neu kompilieren, damit der neue Shader angewendet werden kann.Das Ergebnis sieht so aus, als ob der folgende Screenshot zeigt, wann der Effekt durch die Tastenkombination aktiviert wird (getestet auf KDE4 KWin, auf Geforce GTX 750Ti mit proprietärem
nvidia
Treiber). Beachten Sie, dass der Mauszeiger unverändert bleibt, da er normalerweise nicht vom Fenstermanager gerendert wird. Daher sollte er auf andere Weise geändert oder wie der Zoomeffekt simuliert werden .quelle
Wütend! Während es möglich ist, die Farbe Ihres Terminals zu ändern. Ich bin mir ziemlich sicher, dass Sie nicht beabsichtigen, Ihre Desktop-Erfahrung in Graustufen umzuwandeln.
Das heißt, hier sind ein paar bewegliche Teile beteiligt. Am relevantesten ist der von Ihnen gewählte Terminalemutator. Zum Beispiel
xterm
( FreeBSD ) ( Linux ) ermöglicht die Änderung vieler Aspekte der Präsentation. Wenn Sie nach Bernsteintext auf schwarzem Hintergrund (Bernsteinmonochrom) suchen. Sie könnten es auf diese Weise erreichen,Erstellen Sie ein Xterm-Fenster mit 87 Zeilen mal 57 Spalten in der oberen linken Ecke meines Desktops mit einem schwarzen Hintergrund, gelbem Text, meiner Anmeldeshell und einem gelb blinkenden Blockcursor
Sie können sogar die Farbe des Zeigers ändern
-ms color
HINWEIS Ich habe die Farbe Gold gewählt, da sie der tatsächlichen Farbe am nächsten kommt, an die sich mein monochromer Amber-Monitor erinnert. Alle verfügbaren Farben finden Sie in der X11-Farbtabelle
Apropos Login-Shells; Ein weiterer Einflussfaktor ist die von Ihnen gewählte Shell. Meins ist (t) csh , und wenn ich damit vertraut bin, werde ich ein weiteres Beispiel dafür liefern;
Hier ist der relevante Auszug aus meinem
.cshrc
Dadurch wird effektiv eine gelbe Eingabeaufforderung auf schwarzem Hintergrund angezeigt. Sie können die
ANSI
Escape-Sequenz anpassen , um genau den gewünschten Gelbton (Bernstein) zu erhalten. Sie können diese Escape-Sequenzen auch auf jede andere Shell-Eingabeaufforderung anwenden.quelle