i3용 "읽기 모드"

6433 단어 grayscalei3linux
benefits of using your phone in grayscale mode에 대해 읽은 후 내 컴퓨터에서도 사용해 보고 싶었습니다.

브라우저의 그레이스케일 모드



다음 콘텐츠로 사용자 스타일을 만드는 것으로 시작했습니다.

html {
    filter: grayscale() !important;
}

이것은 실제로 훌륭하게 작동했습니다! 대부분의 웹사이트에서 엄청나게 빠르며 비디오와 같은 것에도 적용됩니다!

YouTube와 같이 이미 리소스를 많이 사용하는 웹사이트를 사용할 때 웹사이트에서 내 노트북이 평소보다 더 시끄러워진다는 것을 깨달았을 때 문제가 발생하기 시작했습니다. 게다가 비디오에서 눈에 띄게 프레임률이 떨어졌습니다!

이를 구현하기 위해 이미 존재하는 여러 브라우저 플러그인을 시도했지만 동일한 성능 문제가 있었습니다.

이 기능에 대해 지불하고 싶었던 가격이 아닙니다.

Compton GLX 셰이더



i3용 컴포지터로 compton를 설정할 때 사용하지 않는 이상한 플래그가 있음을 확인했습니다.

--glx-fshader-win SHADER
  GLX backend: Use specified GLSL fragment shader for rendering window contents. See compton-default-fshader-win.glsl
  and compton-fake-transparency-fshader-win.glsl in the source tree for examples.

셰이더가 어떻게 작동하는지 전혀 모르지만 compton-fake-transparency-fshader-win에서 사용할 수 있다면 컬러 필터에도 유용할 것이라고 생각했습니다.

몇 가지 예를 인터넷 검색한 후 다음과 같은 것이 셰이더에 대해 작동해야 한다고 생각했습니다.

uniform sampler2D tex;

void main() {
   vec4 c = texture2D(tex, gl_TexCoord[0].xy);
   float y = dot(c.rgb, vec3(0.299, 0.587, 0.114));
   vec4 gray = vec4(y, y, y, 1.0);
   gl_FragColor = mix(c, gray, 0.95);

}

나는 완전히 회색조로 바꾸는 대신 이미지의 채도를 크게 낮추기로 선택했습니다. 이렇게 하면 색상이 매우 미묘한 방식으로 표시됩니다.

해당 셰이더를 compton --glx-fshader-win 에 전달했는데 작동합니다!



이런 식으로 성능 저하를 경험하지 않았을 뿐만 아니라 추가 이점으로 이제 브라우저뿐만 아니라 전체 OS에서 읽기 모드를 사용할 수 있습니다. 그레이 스케일 모드에서도 게임을 할 수 있습니다!

키 바인딩을 통해 쉽게 켜고 끌 수 있도록 이 쉘 스크립트를 만들었습니다.

#!/usr/bin/env bash

 #Define shader
GRAYSCALE=$(cat <<-END
uniform sampler2D tex;
void main() {
   vec4 c = texture2D(tex, gl_TexCoord[0].xy);
   float y = dot(c.rgb, vec3(0.299, 0.587, 0.114));
   vec4 gray = vec4(y, y, y, 1.0);
   gl_FragColor = mix(c, gray, 0.95);
}
END
)

# Restart compton with the selected mode
killall -q compton
if [[ $MODE == "grayscale" ]]; then
   compton "$@" --glx-fshader-win "$GRAYSCALE" --backend glx
else
   compton "$@"
fi

GitHub에서 해당 스크립트를 가져올 수 있습니다.


칸토르 / compton-grayscale-reading-mode






compton-grayscale-reading-mode


이 스크립트는 i3 창 관리자 및 compton을 사용하는 다른 창 관리자에서 읽기 모드/회색조 모드를 구현합니다.
채도 감소 수준은 95%이므로 여전히 약간의 색상이 존재하지만 매우 많이 채도가 감소합니다.
이것은 배경화면에 영향을 미치지 않습니다. hsetroot를 사용하여 검은색 배경화면을 설정하는 것이 좋습니다.
회색조 모드에서 백엔드는 항상 glx 입니다.

용법


compton-grayscale-reading-mode는 compton을 감싸는 래퍼입니다. 모든 명령줄 인수는 compton에 전달됩니다.
실행 중인 모든 compton 인스턴스가 종료되므로 이 스크립트를 사용하여 그레이스케일 모드를 켜고 끌 수 있습니다.
그레이스케일 모드 사용
MODE=grayscale compton.sh
그레이스케일 모드 비활성화
MODE=normal compton.sh


View on GitHub

좋은 웹페이지 즐겨찾기