AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 526537
Accepted
Display name
Display name
Asked: 2019-06-24 17:31:40 +0800 CST2019-06-24 17:31:40 +0800 CST 2019-06-24 17:31:40 +0800 CST

É possível alterar minha exibição para monocromático âmbar?

  • 772

Eu sei que isso parece muito idiota e não pretendo usar tanto, mas existe uma maneira xrandrou algo semelhante para fazer minha tela mostrar o equivalente a escala de cinza, mas usando uma cor em vez de cinza? Acho que seria um efeito muito legal para algumas aplicações.

x11 xrandr
  • 4 4 respostas
  • 2601 Views

4 respostas

  • Voted
  1. Best Answer
    Stephen Kitt
    2019-06-25T03:41:45+08:002019-06-25T03:41:45+08:00

    (Isto aborda apenas o X11, não Wayland ou outros sistemas de gerenciamento de exibição. Algumas dessas técnicas podem ser aplicadas usando outras ferramentas, por exemplo , os recursos de acessibilidade do GNOME Shell .)

    Posso pensar em duas maneiras de obter uma tela âmbar: inserir um plug-in de composição que corrija todas as cores e criar um perfil de cores que corrija todas as cores para um equivalente âmbar. Ambos provavelmente envolvem mais esforço do que valem (além do lado do aprendizado das coisas).

    Você pode obter uma boa aproximação para exibições de cores primárias manipulando a gama por canal, conforme explicado na resposta de sigvei ; xcalibtambém pode dar acesso a isso e permite controlar o brilho e o contraste diretamente, além de especificar o valor de gama:

    xcalib -blue 1.0 0 1.0 -red 1.0 0 1.0 -alter
    

    resulta em uma tela verde. O brilho e o contraste são aplicados às rampas de gama xrandr, permitindo que você obtenha os mesmos resultados.

    É possível controlar as rampas de gama com mais precisão ainda, mas isso não permitirá que você remapear tudo para cores âmbar de qualquer maneira. Você pode “grampear” os canais em certos intervalos, então, por exemplo, um vermelho brilhante terá um pouco de verde introduzido e, portanto, parecerá mais âmbar, mas os vermelhos escuros parecerão verdes ...

    O código a seguir mostra como fazer isso (sem tratamento de erros):

    #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);
    }
    

    (Você precisará -lX11 -lXxf86vmvincular.)

    • 6
  2. pusillanimous
    2019-06-25T02:34:38+08:002019-06-25T02:34:38+08:00

    xrandr --output $OUTPUT --gamma 1:0.01:0.01dá-lhe um vermelho-sobre-preto quase monocromático.

    O trio de números são valores rgb para a correção de gama, separados por :, no intervalo de 0-1. Substitua 1:0.01:0.01por 0.01:1:0.01verde e 0.01:0.01:1por azul. É difícil fazer qualquer outra cor além dessas três básicas. Torna-se muito visível quando você começa a deixar passar mais de uma cor.

    Este método só funciona com fundos escuros/pretos, porque a correção de gama do branco brilhante é apenas branco.

    Use xrandr -qpara localizar o ID de saída a ser usado $OUTPUT; a tela do meu laptop é LVDS-1, por exemplo.

    • 3
  3. Ruslan
    2020-02-15T15:00:07+08:002020-02-15T15:00:07+08:00

    Se você usar um gerenciador de janelas de composição que suporte plugins, você provavelmente poderá criar um plugin que irá alterar os pixels da tela como desejar, ou seja, calcular a luminância do pixel de entrada e modular o resultado com a cor âmbar (aplicando a correção gama para frente e para trás conforme necessário ).

    Aqui está um exemplo de hack no efeito Inverter no gerenciador de janelas do KDE, KWin, para conseguir isso. Este hack consiste em simplesmente substituir o shader do efeito Invert localizado na árvore de origem do KWin effects/invert/data/1.40/invert.frag(supondo que sua GPU seja capaz de GLSL 1.40) por código personalizado:

    #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;
    }
    

    No KDE4 KWin você pode simplesmente substituir o arquivo shader instalado /usr/share/apps/kwin/shaders/1.40/invert.frag(tendo substituído texcoord0o código acima por varyingTexCoords). Desde o KDE5, infelizmente, o shader é embutido no plugin binário como recurso Qt, então você terá que recompilar o KWin com o arquivo editado na árvore de origem para que o novo shader seja aplicado.

    O resultado se parece com a imagem abaixo mostra quando o efeito é ativado por sua combinação de teclas de atalho (testado no KDE4 KWin, na Geforce GTX 750Ti com nvidiadriver proprietário). Observe que o cursor do mouse permanece inalterado, porque normalmente não é renderizado pelo gerenciador de janelas, portanto, deve ser alterado de outra maneira ou simulado como o efeito Zoom .

    captura de tela do efeito em ação

    • 2
  4. somebody
    2019-06-24T21:57:00+08:002019-06-24T21:57:00+08:00

    Uau! Embora seja possível alterar a cor do seu terminal. Tenho certeza de que você não pretende converter sua experiência na área de trabalho em escala de cinza.

    Dito isto, há algumas partes móveis envolvidas aqui. O mais relevante é o emulador de terminal escolhido. Por exemplo xterm( FreeBSD ) ( Linux ) permite a modificação de muitos aspectos da apresentação. Se você estava procurando por texto âmbar em um fundo preto (monocromático âmbar). Você poderia realizá-lo desta forma,

    Crie uma janela Xterm de 87 linhas por 57 colunas no canto superior esquerdo da minha área de trabalho com um fundo preto, com texto âmbar, usando meu shell de login e um cursor de bloco âmbar piscando

    xterm -geometry 84x57+0+0 -C -ls -bg black -fg gold -cr gold
    

    Você pode até mudar a cor do ponteiro -ms color

    NOTA Escolhi a cor Dourada, pois parecia a mais próxima da cor real que me lembro do meu monitor monocromático Âmbar. Você pode encontrar todas as cores disponíveis na tabela de cores X11

    Falando de shells de login; outro fator de influência é a sua concha escolhida. O meu é (t)csh , e já que estou familiarizado com isso, fornecerei outro exemplo para isso;

    Aqui está o trecho relevante do meu.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 = "%#"
    

    Isso fornecerá efetivamente um prompt âmbar em um fundo preto. Você pode ajustar a ANSIsequência de escape para adquirir o tom exato de amarelo (âmbar) que está procurando. Você também pode aplicar essas sequências de escape a qualquer outro prompt do shell.

    • -1

relate perguntas

  • Arch Linux: executando o VirtualBox (VM) sem um gerenciador de janelas

  • erro de falta de dois pontos xrdb

  • Tornar as coisas maiores sem alterar a resolução? [AMIGO]

  • Gire a webcam e a tela (modo retrato)

  • O encaminhamento SSH X11 funciona apenas ao usar

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve