Niri v26.04 출시: 블러(Blur) 효과, 스크린캐스팅(Screencasting) 개선!
블러(Blur) 효과 지원: ext-background-effect 프로토콜을 통해 윈도우 및 레이어 셸에 블러 효과 적용 가능
스크린캐스팅(Screencasting) 기능 개선: 커서 메타데이터(Cursor Metadata) 지원 및 IPC(Inter-Process Communication)를 통한 제어 기능 추가
렌더링 최적화: 렌더링 아키텍처를 push-based 방식으로 변경하여 성능 향상 및 메모리 사용량 감소
다양한 버그 수정 및 성능 개선: 입력 장치, 애니메이션, IME(Input Method Editor) 관련 문제 해결
블러(Blur) 효과 구현 및 최적화
Niri v26.04는 ext-background-effect Wayland 프로토콜을 통해 윈도우에 블러(Blur) 효과를 적용한다. 특히, Xray blur는 배경을 한 번 계산하여 재사용함으로써 성능을 최적화한다. 개발자는 블러 알고리즘 자체보다 윈도우 배경 효과 구현에 많은 노력을 기울였다고 밝힘. 또한, 팝업 메뉴에 블러 효과를 적용하는 기능도 추가되었다. 하지만, 웹 앱이나 Electron 앱과 같이 Wayland 팝업을 사용하지 않는 경우, 블러 효과가 제대로 적용되지 않을 수 있다.
스크린캐스팅(Screencasting) 기능 개선
이번 릴리스에서는 커서 메타데이터(Cursor Metadata)를 지원하여 스크린캐스팅 시 커서 표시를 개선했다. 이를 통해 OBS(Open Broadcaster Software)와 같은 애플리케이션에서 커서 가시성을 제어할 수 있다. 또한, IPC(Inter-Process Communication)를 통해 스크린캐스트 상태를 확인할 수 있는 기능을 추가하여 데스크톱 컴포넌트에서 스크린 레코딩 표시를 구현할 수 있도록 했다. 개발자는 PipeWire와 wlr-screencopy 간의 차이점을 언급하며, wlr-screencopy의 한계점을 지적했다.
렌더링 아키텍처의 혁신
Niri는 기존의 pull-based 렌더링 방식을 push-based 방식으로 리팩터링하여 렌더링 성능을 향상시켰다. 이로 인해 조건문 처리 및 복잡한 iterator 체인을 단순화하고, 불필요한 메모리 할당을 줄였다. 개발자는 이 변경을 통해 렌더 리스트 구성 속도를 2~3배, 심지어 구형 Eee PC에서는 8배까지 향상시켰다고 밝혔다. Tracy를 사용하여 성능 및 메모리 사용량을 측정하고, 최적화 결과를 검증했다.
다양한 버그 수정 및 성능 개선
Niri v26.04는 입력 장치, 애니메이션, IME(Input Method Editor) 관련 문제들을 해결했다. 특히, 고주사율 마우스 사용 시 발생하는 속도 저하 문제를 해결하고, Wayland 버퍼 크기를 늘려 비응답 윈도우에서 발생하는 크래시를 방지했다. 또한, 드래그 앤 드롭(Drag-and-Drop) 시 Escape 키를 눌러 취소하는 기능을 추가하고, IME 사용 시 GTK 4 팝업이 제대로 작동하도록 개선했다. 이러한 개선 사항들은 전반적인 사용자 경험을 향상시키는 데 기여한다.