Você tem uma boa pergunta. E confirmo que tenho o mesmo comportamento de Neg e OBS no Ubuntu 14.04.1 LTS.
Infelizmente, o desenvolvimento do Compiz para o Ubuntu pára após 10.04 LTS, portanto, nenhum relatório de bugs ou solicitações de recursos sobre o Compiz serão resolvidos mais. Pior ainda, o Ubuntu 12.04 LTS e o 14.04 LTS não possuem o Compiz Color Filter, que resolverá sua tarefa com facilidade (e muito mais).
Atualmente, não há uma solução direta para você. Mas há duas soluções mais ou menos úteis.
-
Use qualquer janela ou imagem preta como plano de fundo e, na OBS, use Opacidade em vez de Brilho na sua janela de segmentação. Eu uso e funciona bem, mas é estranho quando muitas janelas são abertas.
-
Existe uma maneira de modificar o filtro Neg para que ele possa escurecer a janela, mas apenas por um valor fixo ...
Um sistema sem CCF não é utilizável para mim. Então eu tomo algum desenvolvimento [1]. Finalmente eu encontrei uma boa maneira de emular CCF usando Neg. E também, erro duradouro com inversão de cores incorreta (inversão semelhante ao Windows (R) ou simples inversão de RGB) foi corrigido por mim. Como obtê-lo:
AVISO, não para máquinas de produção. Experimente primeiro na máquina de teste!
Verifique se você tem a versão correta, ambas as saídas devem corresponder:
$ compiz --version
Compiz 0.9.11.3
$ dd if=/usr/lib/compiz/libneg.so bs=1 skip=46052 count=505
void neg_fragment () {
vec3 color = vec3(1.0, 1.0, 1.0) - gl_FragColor.rgb;
gl_FragColor = vec4(color, gl_FragColor.a);
}
18PluginClassHandlerI9NegWindow10CompWindowLi0EE18PluginClassHandlerI9NegScreen10CompScreenLi0EEN10CompAction9ContainerE9NegScreen9NegWindowN10CompPlugin24VTableForScreenAndWindowI9NegScreen9NegWindowLi0EEE15NegPluginVTable
505+0 records in
505+0 records out
Crie o arquivo neg-patch . Note que "1.0" é o brilho de que você precisa:
void neg_fragment(){;
float l,d,i,a;
vec3 t;
i=gl_FragColor.r;
i=min(i,gl_FragColor.g);
i=min(i,gl_FragColor.b);
a=gl_FragColor.r;
a=max(a,gl_FragColor.g);
a=max(a,gl_FragColor.b);
l=i+a;
d=1.0-l;
t=vec3(gl_FragColor.r+d,gl_FragColor.g+d,gl_FragColor.b+d)*1.0;
gl_FragColor=vec4(t,gl_FragColor.a);
}
Backup:
sudo cp /usr/lib/compiz/libneg.so /usr/lib/compiz/libneg.so.bk
Patch:
printf '$ dd if=/usr/lib/compiz/libneg.so bs=1 skip=46052 count=505
$ compiz --version
Compiz 0.9.11.3
$ dd if=/usr/lib/compiz/libneg.so bs=1 skip=46052 count=505
void neg_fragment () {
vec3 color = vec3(1.0, 1.0, 1.0) - gl_FragColor.rgb;
gl_FragColor = vec4(color, gl_FragColor.a);
}
18PluginClassHandlerI9NegWindow10CompWindowLi0EE18PluginClassHandlerI9NegScreen10CompScreenLi0EEN10CompAction9ContainerE9NegScreen9NegWindowN10CompPlugin24VTableForScreenAndWindowI9NegScreen9NegWindowLi0EEE15NegPluginVTable
505+0 records in
505+0 records out
' >> neg-patch; cat neg-patch | sudo dd of=/usr/lib/compiz/libneg.so bs=1 seek=46052 conv=notrunc
E verifique:
void neg_fragment(){;
float l,d,i,a;
vec3 t;
i=gl_FragColor.r;
i=min(i,gl_FragColor.g);
i=min(i,gl_FragColor.b);
a=gl_FragColor.r;
a=max(a,gl_FragColor.g);
a=max(a,gl_FragColor.b);
l=i+a;
d=1.0-l;
t=vec3(gl_FragColor.r+d,gl_FragColor.g+d,gl_FragColor.b+d)*1.0;
gl_FragColor=vec4(t,gl_FragColor.a);
}
Reinicie e viola, isso deve funcionar. Às vezes até leva para trabalhar imediatamente. Nós construímos nosso próprio filtro CCF!
E tudo isso mostra que toda a funcionalidade necessária para implementar o CCF existe dentro do atual Compiz. Portanto, não há razão real para remover o CCF tão útil do Compiz de Ububtu, exceto a preguiça?
Esta solução também é compatível com os efeitos da melatonina / cor fria / quente, como descrito nos posts de lian1238 em [1]. Note que você nunca deve exceder 500 bytes de tamanho do seu arquivo neg-patch !
Espero que ajude.
-jpka
[1] link