愚かなことはわかりますが、あまり使用する予定はありませんが、xrandr
モニターはグレースケールと同じように表示されますが、グレーの代わりにカラーを使用する方法や類似のものはありますか?一部のアプリケーションでは、これは本当に素晴らしい効果になると思います。
答え1
(これはWaylandや他のディスプレイ管理システムではなく、X11に固有のものです。これらの技術のいくつかは他のツールを使用して適用できます。例えばアクセシビリティ機能ドワーフの殻.)
琥珀色のディスプレイを得る2つの方法を考えることができます。すべての色を変更する合成プラグインを挿入し、すべての色を対応する琥珀色に変更するカラープロファイルを作成します。どちらもおそらく価値のあるものよりも多くの努力を必要とします(学習の側面に加えて)。
で説明されているように、各チャンネルのガンマ値を操作して、基本カラーディスプレイの優れた近似値を得ることができます。Sigveyの答え;xcalib
また、アクセスでき、ガンマ値を指定するだけでなく、明るさとコントラストを直接制御することもできます。
xcalib -blue 1.0 0 1.0 -red 1.0 0 1.0 -alter
結果は緑色で表示されます。明るさとコントラストがガンマランプに適用されるため、xrandr
同じ結果が得られます。
ガンマランプをより細かく制御することは可能ですが、いかなる方法でもすべてを琥珀色に再マップすることはできません。チャンネルを特定の範囲に「クランプ」することができます。例えば、明るい赤は少し緑を導入し、より琥珀色に見えますが、暗い赤は緑として表示されます。
次のコードは、エラー処理なしでこれを行う方法を示しています。
#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);
}
-lX11 -lXxf86vm
(リンクが必要です。)
答え2
xrandr --output $OUTPUT --gamma 1:0.01:0.01
ほぼモノクロのレッドとブラックベースをプレゼントします。
3つの数値セットはガンマ補正されたrgb値で、次に区切り、範囲は0から1です。緑に交換、1:0.01:0.01
青に交換。これら3つの基本色に加えて、異なる色を作成することは困難です。 1つ以上の色を表示し始めると非常に明確になります。0.01:1:0.01
0.01:0.01:1
明るい白のガンマ補正は白なので、この方法は暗い/黒の背景でのみ機能します。
xrandr -q
使用する出力IDを見つけるために使用されます$OUTPUT
。たとえば、私のノートパソコンの画面はLVDS-1です。
答え3
プラグインをサポートする合成ウィンドウマネージャを使用している場合は、必要に応じて画面ピクセルを変更するプラグインを作成できます。つまり、入力ピクセルの明るさを計算し、結果を黄色に変調します(必要に応じてガンマ補正を前後に適用します)。 )。
ハッカー攻撃の例です。上下反転KDEウィンドウマネージャKWinの効果はこれを行います。この核は、単にKWinソースツリーの下にある反転効果シェーダを置き換えます。effects/invert/data/1.40/invert.frag
(GPUがGLSL 1.40をサポートしていると仮定)カスタムコードを使用してください。
#version 140
uniform sampler2D sampler;
uniform vec4 modulation;
uniform float saturation;
in vec2 texcoord0;
out vec4 fragColor;
void main()
{
vec4 tex = texture(sampler, texcoord0);
float luminance = dot(vec3(0.2126729,0.7151522,0.0721750), pow(tex.rgb,vec3(2.2)));
float desaturated = pow(luminance, 1./2.2);
const vec3 amber=vec3(1.,0.5,0.);
tex.rgb = desaturated*amber;
tex *= modulation;
tex.rgb *= tex.a;
fragColor = tex;
}
/usr/share/apps/kwin/shaders/1.40/invert.frag
KDE4 KWinでは、上記のコードからインストールされているシェーダファイルを簡単に置き換えることができます。残念ながら、KDE5以降、シェーダはプラグインバイナリにQtリソースとして組み込まれているため、新しいシェーダを適用するには、ソースツリーで編集したファイルにKWinを再コンパイルする必要があります。texcoord0
varyingTexCoords
効果がショートカットキーの組み合わせで有効になったときの結果は次のとおりです(専用ドライバを使用してKDE4 KWin、Geforce GTX 750Tiでテストnvidia
)。マウスカーソルは通常、ウィンドウマネージャによってレンダリングされないため、変更されていないままであるため、他の方法で変更するか、次のようにエミュレートする必要があります。急騰それがまさに起こったことです。
答え4
うわー!端末の色を変更することはできますが。私は、デスクトップの経験をグレースケールに変換する意図がないと確信しています。
つまり、さまざまな可動部分が関連しています。最も関連性が高いのは、端末エミュレータを選択することです。たとえばxterm
(FreeBSD)(Linux) プレゼンテーションのさまざまな側面を変更できます。黒の背景(黄色のモノクロ)で黄色のテキストを探している場合。このように達成できます。
私のログインシェルを使用して、デスクトップの左上に黒い背景、黄色のテキスト、および黄色に点滅するブロックカーソルを含む87行×57列のXtermウィンドウを作成します。
xterm -geometry 84x57+0+0 -C -ls -bg black -fg gold -cr gold
あなたはできますでも色を変える針 -ms color
私が覚えているオレンジ色の白黒モニターの実際の色に最も近いので、金色を選択しました。利用可能なすべての色は以下で確認できます。X11カラーテーブル
ログインシェルについて言えば、もう一つの影響を与える要素は選択するシェルです。私のもの(t)csh、そして私はそれに精通しているので、これについての別の例を提供します。
ここに私の関連抜粋があります。.cshrc
...
setenv PAGER less
setenv BLOCKSIZE K
setenv CLICOLOR
# Colors!
set red="%{\033[1;31m%}"
set green="%{\033[0;32m%}"
set yellow="%{\033[1;33m%}"
set blue="%{\033[1;34m%}"
set magenta="%{\033[1;35m%}"
set cyan="%{\033[1;36m%}"
set white="%{\033[0;37m%}"
set end="%{\033[0m%}" # This is needed at the end
...
# Prompt style
set prompt = "${yellow}`/bin/hostname -s` %#${end} "
set promptchars = "%#"
これにより、黒い背景に黄色のヒントが効果的に表示されます。エスケープシーケンスを調整して、ANSI
希望の正確な黄色(琥珀色)色合いを得ることができます。また、これらのエスケープシーケンスを他のシェルプロンプトに適用することもできます。