i3에서 ImageMagick을 사용하여 URxvt에서 가짜 투명도 구현

i3에서 ImageMagick을 사용하여 URxvt에서 가짜 투명도 구현

i3에서 배경을 설정하는 가장 인기 있는 방법은 다음을 feh통해 를 사용하는 것 같습니다.

exec_always feh --bg-fill /home/user/Pictures/wallpaper.jpg

귀하의 파일에 ~/.config/i3/config. 그런 다음 다음을 사용하여 투명하게 구성 ~/.Xresources할 수 있습니다 .URxvt

URxvt.transparent:     true
URxvt.shading:         50
URxvt.blurRadius:      0
URxvt.background:      #d3d3d3
URxvt.foreground:      #1d1f21

feh보시다시피 이 두 가지 기능은 내 집 컴퓨터에서 완벽하게 함께 작동합니다. 지금은 끔찍한 색 구성표를 무시하십시오.

여기에 이미지 설명을 입력하세요.

feh이제 여러 가지 이유로 직장에서 yum 저장소에 대한 액세스가 제한되었습니다. 또한 나 자신이나 그와 유사한 것을 다운로드하여 컴파일할 수도 없습니다. 대신 저는 ImageMagickdisplay기능을 사용하여 배경을 설정해 왔습니다.

exec_always display -window root /home/user/Pictures/wallpaper.jpg

배경 화면 자체를 설정하고 i3와 함께 작동할 수 있습니다.

문제는 이렇게 하면 ImageMagick실제로 루트 이미지를 설정하는 대신 오버레이만 설정하는 것처럼 보이고 URxvt결국 기본 회색 루트 이미지를 읽게 된다는 것입니다. 이 컴퓨터도 내 집 컴퓨터이고 잘 작동하므로 문제가 feh되지 않습니다 .URxvt

여기에 이미지 설명을 입력하세요.

  1. ImageMagick실제로 루트 배경화면을 설정하도록 배경을 설정하는 다른 방법이 있습니까 ? 이것이 내가 선호하는 솔루션입니다.
  2. 배경화면을 설정하는 데 사용할 수 있는 다른 소프트웨어나 미리 설치된 공통 도구가 있으면 더 좋나요? 다시 한 번 말씀드리지만, feh제가 직장에서 보고 봐야 할 것들 에 접근할 수 없다는 점을 명심하세요 . 나는 보았다이 게시물몇 가지 언급은 되었지만 작품에 등장했는지 확인할 시간이 없었습니다. 1. 또한 진정한 투명성을 위해 compton, xcompmgr 등에 액세스할 수 없습니다.

고쳐 쓰다:xsetrootImageMagick을 사용하여 이미지로 변환 해 보았지만 .jpg흑백만 지원하는 이미지에만 작동합니다. 표시된 이미지와 여전히 동일하기를 원하므로 작동하지 않습니다..bmpconvertxsetroot.xbm.jpg

답변1

ltrace이를 실행하면 feh픽스맵을 생성하고 XSetWindowBackgroundPixmap을 사용하여 루트 창에 연결하는 것으로 나타납니다(193은 루트 창 ID의 0xc1입니다).

XOpenDisplay(...) = 0x22a8a50
XCreatePixmap(0x22a8a50, 193, 1920, 1080)        = 0x3000001
XSetWindowBackgroundPixmap(0x22a8a50, 193, 0x3000001, ...) = 1

그러나 더 중요한 것은 루트 창에 두 가지 속성을 설정한다는 것입니다.

XChangeProperty(0x22a8a50, 193, 312, 20)         = 1
XChangeProperty(0x22a8a50, 193, 807, 20)         = 1

너는 볼 수있어

$ xprop -root
  ESETROOT_PMAP_ID(PIXMAP): pixmap id # 0x3000001
  _XROOTPMAP_ID(PIXMAP): pixmap id # 0x3000001

ImageMagick과 같은 프로그램은 display루트 배경을 변경할 때 이러한 속성을 업데이트하지 않는 것 같습니다.

사용 후 확인할 수 있습니다 feh. 위의 두 속성을 제거하면(을 사용하여 xprop -root -remove ...) 프로그램에 urxvt더 이상 투명한 배경이 표시되지 않습니다.

xprop옵션이 있지만 이를 -set사용하여 Pixmap ID를 설정하거나 변경하는 방법을 모르겠습니다.

관련 정보